ICMgQVBQTEUgTE9DQUwgYmVnaW4gZm9yLWZzZi00XzQgMzI3NDEzMCA1Mjk1NTQ5CjIwMDctMDgtMDMgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCVJhZGFyIDUyOTU1NDkKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9pdGVyYXRpb25fc3RhdGVtZW50KTogSGFuZGxlIGF0dHJpYnV0ZXMuCgkqIHNlbWFudGljcy5jIChiZWdpbl9mb3Jfc3RtdCk6IFB1dCBhdHRyaWJ1dGVzIGluIGJ1aWx0IHRyZWUuCgkoYmVnaW5fd2hpbGVfc3RtdCk6IFB1dCBhdHRyaWJ1dGVzIGluIGJ1aWx0IHRyZWUuCgkoYmVnaW5fZG9fc3RtdCk6IFB1dCBhdHRyaWJ1dGVzIGluIGJ1aWx0IHRyZWUuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogSGFuZGxlIGF0dHJpYnV0ZXMgZm9yIEZPUl9TVE1ULCBXSElMRV9TVE1ULAoJRE9fU1RNVC4KCSogY3AtZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfY3BfbG9vcCk6IEhhbmRsZSBhdHRyaWJ1dGVzLgoJKGdpbXBsaWZ5X2Zvcl9zdG10KTogUGFzcyBhdHRyaWJ1dGVzIHRvIGdpbXBsaWZ5X2NwX2xvb3AuCgkoZ2ltcGxpZnlfd2hpbGVfc3RtdCk6IFBhc3MgYXR0cmlidXRlcyB0byBnaW1wbGlmeV9jcF9sb29wLgoJKGdpbXBsaWZ5X2RvX3N0bXQpOiBQYXNzIGF0dHJpYnV0ZXMgdG8gZ2ltcGxpZnlfY3BfbG9vcC4KCSogZHVtcC5jIChjcF9kdW1wX3RyZWUpOiBEdW1wIGF0dHJpYnV0ZXMgZm9yIEZPUl9TVE1ULCBXSElMRV9TVE1ULAoJRE9fU1RNVC4KCSogY3AtdHJlZS5oIChiZWdpbl93aGlsZV9zdG10KTogVXBkYXRlIHByb3RvdHlwZS4KCShiZWdpbl9kb19zdG10KTogTGlrZXdpc2UuCgkoYmVnaW5fZm9yX3N0bXQpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5kZWYgKEZPUl9TVE1UKTogQWRkIGV4dHJhIHBhcmFtZXRlci4KCShXSElMRV9TVE1UKTogTGlrZXdpc2UuCgkoRE9fU1RNVCk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX3ZlY19pbml0KTogVXBkYXRlIGZvciBjaGFuZ2UgdG8gYmVnaW5fZm9yX3N0bXQuCgogIyBBUFBMRSBMT0NBTCBlbmQgZm9yLWZzZi00XzQgMzI3NDEzMCA1Mjk1NTQ5CjIwMDctMDYtMjggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZGVjbDIuYyAoc3RhcnRfb2JqZWN0cyk6IE1hcmsgY29uc3RydWN0b3ItcnVubm5pbmcgZnVuY3Rpb24KCWFzIGFydGlmaWNpYWwuCgoyMDA3LTA2LTE0ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGRlY2wyLmMgKGRldGVybWluZV92aXNpYmlsaXR5KTogRW5zdXJlIHRoYXQgZnVuY3Rpb25zIHdpdGgKCWhpZGRlbiB0eXBlcyBhcyBwYXJhbWV0ZXJzIGFyZSBoaWRkZW4uCgoJUFIgMzEwOTMKCSogZGVjbDIuYyAoZGV0ZXJtaW5lX3Zpc2liaWxpdHkpOiBSZW1vdmUgZHVwbGljYXRlIGNvZGUgZm9yCgloYW5kbGluZyB0eXBlIGluZm8uCgoyMDA3LTA1LTA3ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIHBhcnNlci5jIChjaGVja19lbXB0eV9ib2R5KTogQWRkLgoJKGNwX3BhcnNlcl9pdGVyYXRpb25fc3RhdGVtZW50KTogQWRkIGNhbGwgdG8gY2hlY2tfZW1wdHlfYm9keS4KCiAjIEFQUExFIExPQ0FMIGJlZ2luIG1haW5saW5lIDIwMDctMDUtMDkgNTE3MzE0OQoyMDA3LTA1LTA1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCglQUiAzMTc3NQoJKiBtYW5nbGUuYyAod3JpdGVfbWFuZ2xlZF9uYW1lKTogTWFuZ2xlIHN0YXRpYyB2YXJpYWJsZSBuYW1lcy4KCSh3cml0ZV91bnF1YWxpZmllZF9uYW1lKTogVXNlIGxvY2FsLXNvdXJjZS1uYW1lIGZvcgoJbmFtZXNwYWNlLXNjb3BlIHN0YXRpYyB2YXJpYWJsZXMuCgogIyBBUFBMRSBMT0NBTCBlbmQgbWFpbmxpbmUgMjAwNy0wNS0wOSA1MTczMTQ5CjIwMDYtMTItMDEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZGVjbC5jIChwb3BsZXZlbCk6IENoZWNrIERFQ0xfSU5JVElBTCBpbnZhcmlhbnQuCgkoZHVwbGljYXRlX2RlY2xzKTogUHJlc2VydmUgREVDTF9JTklUSUFMIHdoZW4gZWxpbWluYXRpbmcKCWEgbmV3IGRlZmluaXRpb24gaW4gZmF2b3VyIG9mIGFuIG9sZCBkZWNsYXJhdGlvbi4KCShzdGFydF9wcmVwYXJzZWRfZnVuY3Rpb24pOiBEZWZpbmUgYW5kIGRvY3VtZW50IHZhbHVlIG9mCglERUNMX0lOSVRJQUwgYmVmb3JlIGFuZCBhZnRlciByb3V0aW5lLgoJKGZpbmlzaF9mdW5jdGlvbik6IENoZWNrIERFQ0xfSU5JVElBTCBpbnZhcmlhbnQuCgkqIHBhcnNlci5jIAoJKGNwX3BhcnNlcl9mdW5jdGlvbl9kZWZpbml0aW9uX2Zyb21fc3BlY2lmaWVyc19hbmRfZGVjbGFyYXRvcik6IAoJU2tpcCBkdXBsaWNhdGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMuCgoyMDA2LTEwLTMxICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIG5hbWUtbG9va3VwLmMgKGdldF9hbm9ueW1vdXNfbmFtZXNwYWNlX25hbWUpOiBOZXcuCgkocHVzaF9uYW1lc3BhY2Vfd2l0aF9hdHRyaWJzKTogVXNlIGdldF9hbm9ueW1vdXNfbmFtZXNwYWNlX25hbWUuCgkqIGRlY2wyLmMgKHN0YXJ0X29iamVjdHMpOiBVcGRhdGUgZm9yIHJlbmFtZSBvZgoJZ2V0X2ZpbGVfZnVuY3Rpb25fbmFtZV9sb25nLgoKMjAwNy0wMy0wMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBnKytzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogQWRkIC1sc3RkYysrIHdoZW4gY29tcGlsaW5nCglPYmplY3RpdmUtQysrLiAgRG9uJ3QgZXhpdCBlYXJseSBpZiAtc2hhcmVkLWxpYmdjYyBuZWVkcyB0byBiZQoJYWRkZWQuCgovKiBBUFBMRSBMT0NBTCBtZXJnZSBtYXJnZXIgKi8KLyogU3R1ZmYgYWJvdmUgaXMgb25seSBpbiBtYWlubGluZSwgbm90IHRoZSA0LjIgYnJhbmNoICovCjIwMDctMDctMTkgIFJlbGVhc2UgTWFuYWdlcgoKCSogR0NDIDQuMi4xIHJlbGVhc2VkLgoKMjAwNy0wNy0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzIyMzIKCSogcHQuYyAocmVzb2x2ZV9vdmVybG9hZGVkX3VuaWZpY2F0aW9uKTogUm9idXN0aWZ5LiAgUmV0dXJuIGEKCWJvb2wsIG5vdCBhbiBpbnQuCgkodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogQWRqdXN0IGFjY29yZGluZ2x5LgoKMjAwNy0wNy0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzIyNDUKCSogaW5pdC5jIChidWlsZF96ZXJvX2luaXQpOiBBbHdheXMgYnVpbGQgYW4gaW5pdGlhbGl6ZXIgZm9yCglub24tc3RhdGljIHN0b3JhZ2UuCgkqIHR5cGVjazIuYyAoYnVpbGRfZnVuY3Rpb25hbF9jYXN0KTogVXNlIGJ1aWxkX3plcm9faW5pdC4KCglQUiBjKysvMzIyNTEKCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IEFsd2F5cyBwYXNzIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9uIHRvCglidWlsZF9vcF9kZWxldGVfY2FsbC4KCSogY2FsbC5jIChidWlsZF9vcF9kZWxldGVfY2FsbCk6IEhhbmRsZSBvcGVyYXRvciBkZWxldGUgd2l0aCBhCgl2YXJpYWJsZS1hcmd1bWVudCBsaXN0LiAgRG8gbm90IGlzc3VlIGFuIGVycm9yIHdoZW4gbm8gbWF0Y2hpbmcKCWRlYWxsb2NhdGlvbiBmdW5jdGlvbiBpcyBhdmFpbGFibGUgZm9yIGEgbmV3IG9wZXJhdG9yLgoKCVBSIGMrKy8zMTk5MgoJKiBjcC10cmVlLmggKGFueV92YWx1ZV9kZXBlbmRlbnRfZWxlbWVudHNfcCk6IERlY2xhcmUgaXQuCgkqIGRlY2wuYyAodmFsdWVfZGVwZW5kZW50X2luaXRfcCk6IE5ldyBmdW5jdGlvbi4KCShjcF9maW5pc2hfZGVjbCk6IFVzZSBpdC4KCSogcHQuYyAodmFsdWVfZGVwZW5kZW50X2V4cHJlc3Npb25fcCk6IFVzZQoJYW55X3ZhbHVlX2RlcGVuZGVudF9lbGVtZW50c19wLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3ByaW1hcnlfZXhwcmVzc2lvbik6IEFkZCBjb21tZW50IGFib3V0Cgl0cmVhdGluZyBkZXBlbmRlbnQgcXVhbGlmaWVkIG5hbWVzIGFzIGludGVncmFsCgljb25zdGFudC1leHByZXNzaW9ucy4KCjIwMDctMDctMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzMxMzM4CgkqIGNwLXRyZWUuaCAoQVJJVEhNRVRJQ19UWVBFKTogSW5jbHVkZSBDT01QTEVYX1RZUEUuCgkqIHR5cGVjay5jICh0eXBlX2FmdGVyX3VzdWFsX2FyaXRobWV0aWNfY29udmVyc2lvbnMpOiBBZGp1c3QsIGFzCglDT01QTEVYX1RZUEUgaXMgbm93IGFuIEFSSVRITUVUSUNfVFlQRS4KCSogaW5pdC5jIChidWlsZF96ZXJvX2luaXQpOiBBZGp1c3QsIGFzCglDT01QTEVYX1RZUEUgaXMgbm93IGEgU0NBTEFSX1RZUEUuCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBBbGxvdyBicmFjZS1lbmNsb3NlZCBpbml0aWFsaXplcnMgZm9yCglDT01QTEVYX1RZUEUsIGV2ZW4gdGhvdWdoIHRoYXQgaXMgbm93IGEgU0NBTEFSX1RZUEUuCgoyMDA3LTA3LTAzICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgYysrLzMyNjA5CgkqIGNsYXNzLmMgKGZpeGVkX3R5cGVfb3JfbnVsbCk6IFJlLWxvb2t1cCB0aGUgaGFzaHRhYmxlIHNsb3QKCWFmdGVyIHJlY3Vyc2luZy4KCjIwMDctMDctMDIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8zMTc0OAoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF9jbGF1c2VzKTogVXNlICVxRCBpbnN0ZWFkIG9mICVxRSBmb3IKCURFQ0xfUCBpbiBub3QgYSB2YXJpYWJsZSBhbmQgYXBwZWFycyBtb3JlIHRoYW4gb25jZSBlcnJvciBtZXNzYWdlcy4KCjIwMDctMDYtMjcgIFNpbW9uIE1hcnRpbiAgPHNpbWFydGluQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBjKysvMjc0OTIKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCByZXNldCBERUNMX0lOVkFMSURfT1ZFUlJJREVSX1AgZm9yCglmdW5jdGlvbiBkZWNscy4KCjIwMDctMDYtMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKERFQ0xfVkFSX01BUktFRF9QKTogUmVtb3ZlLgoJKERFQ0xfQU5PTl9VTklPTl9WQVJfUCk6IE5ldyBtYWNyby4KCSogY2xhc3MuYyAoZml4ZWRfdHlwZV9vcl9udWxsKTogVGlkeS4gIFVzZSBhIGhhc2ggdGFibGUsIHJhdGhlcgoJdGhhbiBERUNMX1ZBUl9NQVJLRURfUCwgdG8ga2VlcCB0cmFjayBvZiB3aGljaCB2YXJpYWJsZXMgd2UgaGF2ZQoJc2Vlbi4KCSogZGVjbC5jIChyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBDb21wbGFpbiBhYm91dCByZWRlY2xhcmluZwoJYW5vbnltb3VzIHVuaW9uIG1lbWJlcnMgYXQgbmFtZXNwYWNlIHNjb3BlLgoJKiBkZWNsMi5jIChidWlsZF9hbm9uX3VuaW9uX3ZhcnMpOiBTZXQgREVDTF9BTk9OX1VOSU9OX1ZBUl9QLgoKMjAwNy0wNi0wOCAgRGlyayBNdWVsbGVyICA8ZG11ZWxsZXJAc3VzZS5kZT4KCglQUiBjKysvMzE4MDkKCVBSIGMrKy8zMTgwNgoJQmFja3BvcnQgZnJvbSBtYWlubGluZToKCTIwMDctMDUtMzEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IEFsc28gY2xlYXIgd2FzX3JlYWRvbmx5IGlmIGEgc3RhdGljIHZhcgoJbmVlZHMgcnVudGltZSBpbml0aWFsaXphdGlvbi4KCgkyMDA3LTA1LTMwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBDbGVhciBUUkVFX1JFQURPTkxZIGZsYWcgb24gVFJFRV9TVEFUSUMKCXZhcmlhYmxlcyB0aGF0IG5lZWQgcnVudGltZSBpbml0aWFsaXphdGlvbi4KCjIwMDctMDUtMTMgIFJlbGVhc2UgTWFuYWdlcgoKCSogR0NDIDQuMi4wIHJlbGVhc2VkLgoKMjAwNy0wNC0yOCAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgQysrLzMwMjIxCgkqIGRlY2wuYyAocmVzaGFwZV9pbml0X3IpOiBEb24ndCByZXNoYXBlIHRoZSBmaXJzdCBlbGVtZW50IGlmIGl0CglpcyBhIHBvaW50ZXIgdG8gbWVtYmVyIGZ1bmN0aW9uLgoKMjAwNy0wNC0yNiAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgQysrLzMwMDE2CgkqIHR5cGVjay5jIChidWlsZF9yZWludGVycHJldF9jYXN0XzEpOiBPbmx5IGFsbG93IGNvbnZlcnNpb24gdG8KCWludGVnZXJhbCB0eXBlcyBmcm9tIHZlY3RvcnMgdHlwZXMuCgoyMDA3LTA0LTI2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMzE1OTgKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfY2xhdXNlcyk6IERvbid0IGNyZWF0ZSBDUF9PTVBfQ0xBVVNFX0lORk8KCWZvciB0eXBlIGRlcGVuZGVudCBPTVBfQ0xBVVNFX0RFQ0xzLgoKMjAwNy0wNC0yNCAgUGFvbG8gQ2FybGluaSAgPHBjYXJsaW5pQHN1c2UuZGU+CgoJUFIgYysrLzMwNTAwCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBTZXQgaW5fc3lzdGVtX2hlYWRlci4KCjIwMDctMDQtMTcgIFNpbW9uIE1hcnRpbiAgPHNpbWFydGluQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBjKysvMzE1MTcKCSogcHQuYyAodmFsdWVfZGVwZW5kZW50X2V4cHJlc3Npb25fcCk6IEhhbmRsZSBNT0RPUF9FWFBScy4KCjIwMDctMDQtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzMxNTEzCgkqIGNhbGwuYyAoY29udmVydF9mb3JfYXJnX3Bhc3NpbmcpOiBDb252ZXJ0IGJpdGZpZWxkcyB0byB0aGVpcgoJZGVjbGFyZWQgdHlwZXMuCgoyMDA3LTA0LTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMzEwNzQKCSogY2FsbC5jIChyZWZlcmVuY2VfYmluZGluZyk6IEFkZCBjX2Nhc3RfcCBwYXJtLiAgSWYgdHJ1ZSwKCWFkZCBxdWFscyB0byBUTyBhcyBuZWVkZWQgdG8gbWFrZSBpdCByZWZlcmVuY2UtY29tcGF0aWJsZS4KCjIwMDctMDQtMTAgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogY2xhc3MuYyAoZGZzX2FjY3VtdWxhdGVfdnRibF9pbml0cyk6IFNsYW0gdGhlIHZ0YmwgdHlwZSBiYWNrIHRvCgl2dGJsX3B0cl90eXBlX25vZGUgdG8gZW5zdXJlIHRoZSBtb2RlIGlzIGNvcnJlY3QuCgoyMDA3LTA0LTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8zMTQ0OQoJKiBjbGFzcy5jIChidWlsZF9iYXNlX3BhdGgpOiBFbnN1cmUgdGhhdCB0aGUgY29udmVydGVkIHBvaW50ZXIgaGFzCgl0aGUgc2FtZSBjdi1xdWFsaWZpY2F0aW9uIGFzIHRoZSBpbnB1dC4KCjIwMDctMDQtMDMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8zMDg0NwoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIpOiBGb3IgQ09ORF9FWFBSIG9uIExIUywgaWYgUkhTIGhhcyB2b2lkCgl0eXBlIGlzc3VlIGVycm9yIGFuZCByZXR1cm4gZWFybHkuCgoyMDA3LTAzLTMwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMzExODcKCSogdHlwZWNrLmMgKGNwX3R5cGVfcmVhZG9ubHkpOiBOZXcgZm4uCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCSogZGVjbC5jIChzdGFydF9kZWNsKTogU2V0IGltcGxpY2l0IERFQ0xfVEhJU19TVEFUSUMgaGVyZS4KCShjcF9maW5pc2hfZGVjbCk6IE5vdCBoZXJlLgoKMjAwNy0wMy0zMSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgkgICAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiAyOTU4NQoJKiBjbGFzcy5jIChkZnNfYWNjdW11bGF0ZV92dGJsX2luaXRzKTogVXNlIGJ1aWxkX2FkZHJlc3MKCXRvIGJ1aWxkIHRoZSB2dGJsIGVudHJ5LgoKMjAwNy0wMy0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzA4NjMKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wYXJzZV9hbmRfZGlhZ25vc2VfaW52YWxpZF90eXBlX25hbWUpOiBEbwoJbm90IGNvbnN1bWUgdG9rZW5zIHdoZW4gZmFpbGluZy4KCjIwMDctMDMtMjIgIEppbSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXguY29tPgoJICAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzMxMjczCgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IFVzZSB0eXBlX2RlY2F5c190by4gIEtlZXAgRkNPREUKCWNvbnNpc3RlbnQgd2l0aCBGUk9NLgoKMjAwNy0wMy0xNCAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJUFIgYysrLzMxMTY1CgkqIGNhbGwuYyAgKGNvbnZlcnRfZGVmYXVsdF9hcmcpOiBJbnN0ZWFkIG9mIGNvcHlpbmcgdGhlIG5vZGUsCgl1bnNoYXJlIGl0LgoKMjAwNy0wMy0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBib290c3RyYXAvMzA4OTkKCSogTWFrZS1sYW5nLmluIChkb2MvZysrLjEpOiBVc2UgJDwgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gZnJvbQoJd2hpY2ggdG8gY29weS4KCjIwMDctMDMtMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzMxMDM4CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uKTogRGlzYWxsb3cgY29tcG91bmQKCWxpdGVyYWxzIGluIGNvbnN0YW50IGV4cHJlc3Npb25zLgoKMjAwNy0wMy0xMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCglCYWNrcG9ydGVkIC1mc3RyaWN0LW92ZXJmbG93Ly1Xc3RyaWN0LW92ZXJmbG93IGZyb20gbWFpbmxpbmU6CgkyMDA3LTAxLTE3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IENhbGwgVkVDX3Jlc2VydmVfZXhhY3QgcmF0aGVyIHRoYW4gcGFzc2luZwoJYSBuZWdhdGl2ZSBzaXplIHRvIFZFQ19yZXNlcnZlLgoKMjAwNy0wMy0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzEwMzgKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24pOiBEaXNhbGxvdyBjb21wb3VuZAoJbGl0ZXJhbHMgaW4gY29uc3RhbnQgZXhwcmVzc2lvbnMuCgoJUFIgYysrLzMwMzI4CgkqIHNlbWFudGljcy5jIChmaW5pc2hfdHlwZW9mKTogVXNlIHVubG93ZXJlZF9leHByX3R5cGUuCgkKMjAwNy0wMy0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzAyNzQKCSogY3AtdHJlZS5oICh1bmxvd2VyZWRfZXhwcl90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKiB0eXBlY2suYyAoaXNfYml0ZmllbGRfZXhwcl93aXRoX2xvd2VyZWRfdHlwZSk6IEhhbmRsZQoJQ09NUE9VTkRfRVhQUiwgTU9ESUZZX0VYUFIsIGFuZCBTQVZFX0VYUFIuCgkodW5sb3dlcmVkX2V4cHJfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF91bmFyeV9vcCk6IERpc2FsbG93IHByZWRlY3JlbWVudHMgb2YgYm9vbCBiaXRmaWVsZHMuCgkqIGNhbGwuYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IFVzZSB1bmxvd2VyZWRfZXhwcl90eXBlLgoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBMaWtld2lzZS4KCjIwMDctMDMtMDggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdtYWlsLmNvbT4gCgoJUFIgQysrLzMwMTY4CgkqIG9wdGltaXplLmMgKHVwZGF0ZV9jbG9uZWRfcGFybSk6IENvcHkgREVDTF9DT01QTEVYX0dJTVBMRV9SRUdfUCBhbHNvLgoKMjAwNy0wMy0wOCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAbmV0Y29sb2duZS5kZT4KCglQUiBjKysvMzA4NTIKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vZmZzZXRvZik6IEhhbmRsZSBDT01QT1VORF9FWFBSLgoKMjAwNy0wMy0wNyAgTWFudWVsIExvcGV6LUliYW5leiAgPG1hbnVAZ2NjLmdudS5vcmc+CgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogUmVwbGFjZSAtV3N0cmluZy1saXRlcmFsLWNvbXBhcmlzb24KCWFuZCAtV2Fsd2F5cy10cnVlIHdpdGggLVdhZGRyZXNzLgoJKiBjdnQuYyAoY29udmVydF90b192b2lkKTogUmVwbGFjZSB1bmNvbmRpdGlvbmFsIHdhcm5pbmcgd2l0aAoJLVdhZGRyZXNzLgoJCjIwMDctMDMtMDUgIFNpbW9uIE1hcnRpbiAgPHNpbWFydGluQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBjKysvMzA4OTUKCSogdHJlZS5jIChjcF90cmVlX2VxdWFsKTogUHJvcGVybHkgaGFuZGxlIENPTVBMRVhfQ1NUIHRyZWVzLgoKMjAwNy0wMi0yMiAgU2ltb24gTWFydGluICA8c2ltYXJ0aW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGMrKy8yOTQ3NQoJKiBjcC10cmVlLmggKHN0cnVjdCBkZWZlcnJlZF9hY2Nlc3NfY2hlY2spOiBOZXcgc3RydWN0dXJlIHRvIHJlcHJlc2VudCBhCglkZWZlcnJlZCBhY2Nlc3MgY2hlY2suIEl0IHJlcGxhY2VzIHRoZSBwcmV2aW91cyByZXByZXNlbnRhdGlvbiBhcyBhIHRyZWUuCgkoZ2V0X2RlZmVycmVkX2FjY2Vzc19jaGVja3MpOiBSZXR1cm4gYSB2ZWN0b3Igb2Ygc3RydWN0CglkZWZlcnJlZF9hY2Nlc3NfY2hlY2sgaW5zdGVhZCBvZiBhIHRyZWUgbGlzdC4KCShwZXJmb3JtX2FjY2Vzc19jaGVja3MpOiBUYWtlIGEgdmVjdG9yIG9mIHN0cnVjdCBkZWZlcnJlZF9hY2Nlc3NfY2hlY2sKCWluc3RlYWQgb2YgYSB0cmVlIGxpc3QuCgkoZW5mb3JjZV9hY2Nlc3MsIHBlcmZvcm1fb3JfZGVmZXJfYWNjZXNzX2NoZWNrKTogQWRkZWQgYW4KCWV4dHJhIGFyZ3VtZW50IHRoYXQgcmVwcmVzZW50cyB0aGUgZGVjbGFyYXRpb24gdG8gdXNlIHRvIHByaW50Cglwb3RlbnRpYWwgZXJyb3IgbWVzc2FnZXMuCgkqIHNlbWFudGljcy5jIChzdHJ1Y3QgZGVmZXJyZWRfYWNjZXNzKTogU3RvcmUgdGhlIGRlZmVycmVkIGFjY2VzcyBjaGVja3MKCWFzIGEgdmVjdG9yIG9mIHN0cnVjdCBkZWZlcnJlZF9hY2Nlc3NfY2hlY2sgaW5zdGVhZCBvZiBhIHRyZWUgbGlzdC4KCShwdXNoX2RlZmVycmluZ19hY2Nlc3NfY2hlY2tzKTogSGFuZGxlIHRoZSBjaGFuZ2UgaW4gc3RydWN0CglkZWZlcnJlZF9hY2Nlc3MuCgkoZ2V0X2RlZmVycmVkX2FjY2Vzc19jaGVja3MpOiBMaWtld2lzZS4KCShwb3BfdG9fcGFyZW50X2RlZmVycmluZ19hY2Nlc3NfY2hlY2tzKTogTGlrZXdpc2UuCgkocGVyZm9ybV9vcl9kZWZlcl9hY2Nlc3NfY2hlY2spOiBMaWtld2lzZS4KCShwZXJmb3JtX2FjY2Vzc19jaGVja3MpOiBUYWtlIGEgdmVjdG9yIG9mIHN0cnVjdCBkZWZlcnJlZF9hY2Nlc3NfY2hlY2sKCWluc3RlYWQgb2YgYSB0cmVlIGxpc3QuCgkoZmluaXNoX25vbl9zdGF0aWNfZGF0YV9tZW1iZXIsIGNoZWNrX2FjY2Vzc2liaWxpdHlfb2ZfcXVhbGlmaWVkX2lkLAoJZmluaXNoX2lkX2V4cHJlc3Npb24pOiBBZGp1c3RlZCB0aGUgY2FsbCB0byBwZXJmb3JtX29yX2RlZmVyX2FjY2Vzc19jaGVjay4KCShwb3BfdG9fcGFyZW50X2RlZmVycmluZ19hY2Nlc3NfY2hlY2tzLCBwZXJmb3JtX2FjY2Vzc19jaGVja3MsCglwZXJmb3JtX29yX2RlZmVyX2FjY2Vzc19jaGVjayk6IEFkanVzdGVkIHRoZSBjYWxsIHRvIGVuZm9yY2VfYWNjZXNzLgoJKiBwYXJzZXIuYyAoc3RydWN0IHRyZWVfY2hlY2spOiBOZXcgc3RydWN0dXJlIHRvIHN0b3JlIHZhcmlvdXMgZGF0YQoJYXNzb2NpYXRlZCB3aXRoIGEgQ1BQX05FU1RFRF9OQU1FX1NQRUNJRklFUiBvciBDUFBfVEVNUExBVEVfSUQgdG9rZW4uCgkoc3RydWN0IGNwX3Rva2VuKTogQ2hhbmdlZCB0aGUgdmFsdWUgZmllbGQgdG8gYmUgYSB1bmlvbiB3aXRoIGEgcG9pbnRlciB0bwoJYSBzdHJ1Y3QgdHJlZV9jaGVjayBmb3IgQ1BQX05FU1RFRF9OQU1FX1NQRUNJRklFUiBvciBDUFBfVEVNUExBVEVfSUQKCXRva2VucyBhbmQgYSB0cmVlIGZpZWxkIGZvciBhbGwgb3RoZXIgdG9rZW5zLgoJKGVvZl90b2tlbik6IEFkanVzdGVkIGR1ZSB0byB0aGUgY2hhbmdlIGluIHN0cnVjdCBjcF90b2tlbi4KCShjcF9sZXhlcl9nZXRfcHJlcHJvY2Vzc29yX3Rva2VuKTogTGlrZXdpc2UuCgkoY3BfbGV4ZXJfcHVyZ2VfdG9rZW4pOiBMaWtld2lzZS4KCShjcF9sZXhlcl9wdXJnZV90b2tlbnNfYWZ0ZXIpOiBMaWtld2lzZS4KCShjcF9sZXhlcl9wcmludF90b2tlbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9lcnJvcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3N0cmluZ19saXRlcmFsKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3ByaW1hcnlfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl91bnF1YWxpZmllZF9pZCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb25fbGlzdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9zdG9yYWdlX2NsYXNzX3NwZWNpZmllcl9vcHQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfZnVuY3Rpb25fc3BlY2lmaWVyX29wdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl90eXBlX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9zaW1wbGVfdHlwZV9zcGVjaWZpZXIpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfaW5pdGlhbGl6ZXJfbGlzdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9tZW1iZXJfc3BlY2lmaWNhdGlvbl9vcHQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfYXR0cmlidXRlX2xpc3QpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfcHJvdG9jb2xfcXVhbGlmaWVycyk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX3NlbGVjdG9yKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb21wX2NsYXVzZV9uYW1lKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29tcF9jbGF1c2VfZGVmYXVsdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vbXBfY2xhdXNlX3NjaGVkdWxlKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29tcF9wYXJhbGxlbCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9pbml0aWFsX3ByYWdtYSk6IExpa2V3aXNlLgoJKHByYWdtYV9sZXgpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfcHJlX3BhcnNlZF9uZXN0ZWRfbmFtZV9zcGVjaWZpZXIpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfbmVzdGVkX25hbWVfc3BlY2lmaWVyX29wdCk6IExpa2V3aXNlLgoJVXNlIGNwX3Rva2VuOjp1Ojp0cmVlX2NoZWNrX3ZhbHVlIHRvIHNhdmUgdGhlIHRva2VuJ3MgdmFsdWUsIHRoZQoJYXNzb2NpYXRlZCBkZWZlcnJlZCBjaGVja3MgYW5kIGl0cyBxdWFsaWZ5aW5nIHNjb3BlLgoJKGNwX3BhcnNlcl90ZW1wbGF0ZV9pZCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl90ZW1wbGF0ZV9kZWNsYXJhdGlvbl9hZnRlcl9leHBvcnQpOiBBZGp1c3RlZCB0aGUgY2FsbCB0bwoJZ2V0X2RlZmVycmVkX2FjY2Vzc19jaGVja3MuCgkoY3BfcGFyc2VyX2luaXRfZGVjbGFyYXRvcik6IFRha2UgdGhlIGFjY2VzcyBjaGVja3MgYXMgYSB2ZWN0b3Igb2Ygc3RydWN0CglkZWZlcnJlZF9hY2Nlc3NfY2hlY2sgaW5zdGVhZCBvZiBhIHRyZWUgbGlzdC4KCShjcF9wYXJzZXJfc2luZ2xlX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3BlcmZvcm1fdGVtcGxhdGVfcGFyYW1ldGVyX2FjY2Vzc19jaGVja3MpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfc2ltcGxlX2RlY2xhcmF0aW9uKTogQWRqdXN0ZWQgdGhlIGNhbGwgdG8KCWNwX3BhcnNlcl9pbml0X2RlY2xhcmF0b3IuCgkoY3BfcGFyc2VyX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogQWRqdXN0ZWQgdGhlIGNhbGwgdG8KCWNwX3BhcnNlcl9zaW5nbGVfZGVjbGFyYXRpb24uCgkoY3BfcGFyc2VyX3RlbXBsYXRlX2lkLCBjcF9wYXJzZXJfcHJlX3BhcnNlZF9uZXN0ZWRfbmFtZV9zcGVjaWZpZXIpOgoJQWRqdXN0ZWQgdGhlIGNhbGwgdG8gcGVyZm9ybV9vcl9kZWZlcl9hY2Nlc3NfY2hlY2suCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IEFkanVzdGVkIHRoZSBjYWxsIHRvCglwZXJmb3JtX29yX2RlZmVyX2FjY2Vzc19jaGVjay4KCSogY2xhc3MuYyAoYWx0ZXJfYWNjZXNzLCByZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbik6CglMaWtld2lzZS4KCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUsIG1ha2VfdW5ib3VuZF9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobG9va3VwX21lbWJlcik6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAoYWRkX2ZyaWVuZCk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGVuZm9yY2VfYWNjZXNzKTogVXNlIHRoZSBuZXcgZXh0cmEgYXJndW1lbnQgdG8gYnVpbGQgdGhlCgllcnJvciBtZXNzYWdlLgoJKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogQWRqdXN0ZWQgdGhlIGNhbGwgdG8KCXBlcmZvcm1fb3JfZGVmZXJfYWNjZXNzX2NoZWNrLgoJKGJ1aWxkX292ZXJfY2FsbCk6IExpa2V3aXNlLgoKMjAwNy0wMi0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogRW5zdXJlIHRoYXQgZXhwbGljaXQgY2FsbHMgb2YKCWRlc3RydWN0b3JzIGhhdmUgdHlwZSAidm9pZCIuCgoyMDA3LTAyLTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNjk4OAoJKiBwdC5jIChkZXRlcm1pbmVfc3BlY2lhbGl6YXRpb24pOiBVc2Ugc2tpcF9hcnRpZmljaWFsX3Bhcm1zX2Zvci4KCShmbl90eXBlX3VuaWZpY2lhdGlvbik6IExpa2V3aXNlLgoJKGdldF9iaW5kaW5ncyk6IExpa2V3aXNlLgoKMjAwNy0wMi0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMjk0ODcKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBVc2UgREVDTF9SRVBMQUNFQUJMRS4KCSogdHJlZS5jIChjcF9jYW5ub3RfaW5saW5lX3RyZWVfZm4pOiBMaWtld2lzZS4KCjIwMDctMDItMDcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8zMDcwMwoJKiBjcC1naW1wbGlmeS5jIChjcF9nZW5lcmljaXplX3IpOiBEb24ndCBkZXJlZmVyZW5jZSBpbnZpc2lyZWYKCXBhcmFtZXRlcnMgYW5kIHJlc3VsdCBkZWNscyBpbiBvbXAgY2xhdXNlcy4KCShjeHhfb21wX3ByaXZhdGl6ZV9ieV9yZWZlcmVuY2UpOiBQYXNzIGFsc28gaW52aXNpcmVmIFBBUk1fREVDTHMKCWJ5IHJlZmVyZW5jZS4KCjIwMDctMDItMDIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8zMDUzNgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogSWYgX190aHJlYWQgaXMgdXNlZCB0b2dldGhlciB3aXRoCglhIHN0b3JhZ2UgY2xhc3Mgb3RoZXIgdGhhbiBleHRlcm4gYW5kIHN0YXRpYywgY2xlYXIgdGhyZWFkX3AKCWFmdGVyIGlzc3VpbmcgZGlhZ25vc3RpY3MgYW5kIGZhbGwgdGhyb3VnaCB0byBjaGVja2luZyB0aGUKCXN0b3JhZ2UgY2xhc3MuCgoyMDA3LTAxLTI4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnbWFpbC5jb20+CgoJUFIgQysrLzI4OTg4CgkqIHNlbWFudGljcy5jIChmaW5pc2hfcHNldWRvX2Rlc3RydWN0b3JfZXhwcik6IENoZWNrIHRoZQoJZGVzdHJ1dG9yIG5hbWUgYnkgY2FsbGluZyBjaGVja19kdG9yX25hbWUuCgoyMDA3LTAxLTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODk5OQoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IElmIHRoZSBxdWFsaWZpZWQgbmFtZSBpcyBub3QgYQoJdHlwZSwgaXNzdWUgYW4gZXJyb3IuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZWxhYm9yYXRlZF90eXBlX3NwZWNpZmllcik6IEZpeCBjb21tZW50Cglmb3JtYXR0aW5nLgoKMjAwNi0xMi0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjk3MzIKCSogY3AtdHJlZS5oIChERUNMX1VTRV9URU1QTEFURSk6IE1lbnRpb24gcGFydGlhbCBzcGVjaWFsaXphdGlvbnMuCgkoZXhwbGljaXRfY2xhc3Nfc3BlY2lhbGl6YXRpb25fcCk6IERlY2xhcmUuCgkqIHB0LmMgKGV4cGxpY2l0X2NsYXNzX3NwZWNpYWxpemF0aW9uX3ApOiBOZXcgZnVuY3Rpb24uCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfaW5pdF9kZWNsYXJhdG9yKTogQ2hlY2sgY29ycmVjdCBudW1iZXIgb2YKCXRlbXBsYXRlIHBhcmFtZXRlcnMgZm9yIGluLWNsYXNzIGZ1bmN0aW9uIGRlZmluaXRpb25zLgoJKGNwX3BhcnNlcl9jaGVja19kZWNsYXJhdG9yX3RlbXBsYXRlX3BhcmFtZXRlcnMpOiBTdG9wIGxvb2tpbmcgZm9yCgl0ZW1wbGF0ZSBjbGFzc2VzIHdoZW4gd2UgZmluZCBhbiBleHBsaWNpdCBzcGVjaWFsaXphdGlvbi4KCjIwMDYtMTItMDcgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKICAgICAgICBQUiBjKysvMjk5ODAKICAgICAgICAqIGNwX3BhcnNlcl9lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyOiBDaGVjawogICAgICAgIHRoZSByZXR1cm4gdmFsdWUgb2YgY2hlY2tfZWxhYm9yYXRlZF90eXBlX3NwZWNpZmllci4KCQoyMDA2LTEyLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yOTczMAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2luaXRfZGVjbGFyYXRvcik6IFJlamVjdCBpbml0aWFsaXphdGlvbiBvZgoJZnVuY3Rpb25zLgoKMjAwNi0xMi0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjk3MjkKCSogZGVjbDIuYyAoY2hlY2tfbWVtYmVyX3RlbXBsYXRlKTogTW92ZSBjaGVjayBmb3IgbWVtYmVyCgl0ZW1wbGF0ZXMgaW4gbG9jYWwgY2xhc3NlcyB0byAuLi4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90ZW1wbGF0ZV9kZWNsYXJhdGlvbl9hZnRlcl9leHBvcnQpOgoJLi4uIGhlcmUuCgoyMDA2LTEyLTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yOTcyOAoJKiBkZWNsLmMgKGNoZWNrX2FycmF5X2Rlc2lnbmF0ZWRfaW5pdGlhbGl6ZXIpOiBOZXcgZnVuY3Rpb24uCgkobWF5YmVfZGVkdWNlX3NpemVfZnJvbV9hcnJheV9pbml0KTogVXNlIGl0LgoJKHJlc2hhcGVfaW5pdF9hcnJheSk6IExpa2V3aXNlLgoKMjAwNi0xMi0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjk3MzMKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBEaXNhbGxvdyB2YXJpYWJsZXMgb2YgZnVuY3Rpb24gdHlwZS4KCjIwMDYtMTItMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI5NjMyCgkqIGNhbGwuYyAoYWRkX2J1aWx0aW5fY2FuZGlkYXRlKTogRG8gbm90IHBlcm1pdCBOVUxMIHBvaW50ZXIKCWNvbnN0YW50cyB0byBiZSBjb21wYXJlZCB3aXRoIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgoyMDA2LTEyLTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgogICAgICAgICAgICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnbWFpbC5jb20+CgoJUFIgQysrLzE0MzI5CgkqIGVycm9yLmMgKGNwX3ByaW50ZXIpIDwnRCc+OiBIYW5kbGUgREVDTF9ERUJVR19FWFBSLgoKMjAwNi0xMi0wMSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMzAwMjIKCSogdHlwZWNrLmMgKHR5cGVfYWZ0ZXJfdXN1YWxfYXJpdGhtZXRpY19jb252ZXJzaW9ucyk6CglGaXggYXNzZXJ0aW9uIGZvciB2ZWN0b3IgdHlwZXMuCgkoYnVpbGRfYmluYXJ5X29wKTogVXNlIHRlbXBvcmFyeSBmb3IgaW5uZXIgdHlwZSBvZiB2ZWN0b3IgdHlwZXMuCgoyMDA2LTExLTI5ICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAY29kZXNvdXJjZXJ5LmNvbT4gCgoJUFIgYysrLzI5MDIyCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfY2xhc3NfaGVhZCk6IE1vdmUgcHJvY2Vzc2luZwoJb2YgYW55IGJhc2UgY2xhc3NlcyB0by4uLgoJKGNwX3BhcnNlcl9jbGFzc19zcGVjaWZpZXIpIC4uLmhlcmUuIFRha2UgYW4gZXh0cmEKCXRyZWUqIHBhcmFtZXRlciBmb3IgYW55IGJhc2UgY2xhc3Nlcy4gT25seSBwcm9jZXNzCgl0aGVtIGlmIHRoZSBvcGVuaW5nIGJyYWNlIHdhcyBmb3VuZC4KCQoyMDA2LTExLTI4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMjk3MzUKCSogZGVjbC5jIChncm9rZm5kZWNsKTogQ2hlY2sgbWFpbidzIHR5cGUgYWZ0ZXIgYXBwbHlpbmcKCWF0dHJpYnV0ZXMsIG5vdCBiZWZvcmUuCgoyMDA2LTExLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yOTg4NgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyKTogQWRkIGluX2Z1bmN0aW9uX2JvZHkuCgkoY3BfcGFyc2VyX25ldyk6IEluaXRpYWxpemUgaXQuCgkoY3BfcGFyc2VyX3ByaW1hcnlfZXhwcmVzc2lvbik6IFVzZSBwYXJzZXItPmluX2Z1bmN0aW9uX2JvZHkKCWluc3RlYWQgb2YgYXRfZnVuY3Rpb25fc2NvcGVfcC4KCShjcF9wYXJzZXJfYXNtX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfZGlyZWN0X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfY2xhc3Nfc3BlY2lmaWVyKTogQ2xlYXIgcGFyc2VyLT5pbl9mdW5jdGlvbl9ib2R5LgoJKGNwX3BhcnNlcl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdG9yX3ApOiBVc2UgcGFyc2VyLT5pbl9mdW5jdGlvbl9ib2R5CglpbnN0ZWFkIG9mIGF0X2Z1bmN0aW9uX3Njb3BlX3AuCgkoY3BfcGFyc2VyX2Z1bmN0aW9uX2JvZHlfYWZ0ZXJfZGVjbGFyYXRvcik6IFNldAoJcGFyc2VyLT5pbl9mdW5jdGlvbl9ib2R5LgoKMjAwNi0xMS0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzI5NTcwCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBDaGVjayBmb3IgdmFsdWUgZGVwZW5kZW50IGJyYWNlIGVuY2xvc2VkCglzY2FsYXIgaW5pdGlhbGl6ZXIuCgoJUFIgYysrLzI5NzM0CgkqIGNwLXRyZWUuaCAoV0FOVF9WRUNUT1IpOiBEZWZpbmUuCgkoV0FOVF9BUklUSCk6IEFkZCBXQU5UX1ZFQ1RPUi4KCSogY3Z0LmMgKGJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uKTogSGFuZGxlIHZlY3RvciB0eXBlcy4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogQWRkIFdBTlRfVkVDVE9SIHRvCglidWlsZF9leHByX3R5cGVfY29udmVyc2lvbiBmbGFncy4KCjIwMDYtMTEtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI5NTE4CgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IERvIG5vdCBza2lwX2V2YWx1YXRpb24gd2hpbGUKCXN1YnN0aXR1dGluZyB0ZW1wbGF0ZSBhcmd1bWVudHMuCgoyMDA2LTEwLTIyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDY0NwoJKiBydHRpLmMgKHRpbmZvX2Jhc2VfaW5pdCk6IFRoZSB0eXBlIGluZm8gc3RyaW5nIGlzIGFsd2F5cyBnbG9iYWwuCgoyMDA2LTEwLTIwICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAY29kZXNvdXJjZXJ5LmNvbT4KICAgICAgICAgICAgTWFyayBNaXRjaGVsbCA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKICAgICAgICBQUiBjKysvMjgwNTMKICAgICAgICAqIGRlY2wyLmMgKGdyb2tiaXRmaWVsZCk6IERldGVjdCBpbnZhbGlkIG5vbi1pbnRlZ3JhbCAKICAgICAgICB0eXBlcyBlYXJsaWVyIHdoZW4gcG9zc2libGUuCgkKMjAwNi0xMC0xOCAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI2ODg0CgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBSYWlzZSBlcnJvciB1cG9uIGF0dGVtcHRzIHRvCglpbml0aWFsaXplIGFycmF5cyB3aXRoIHZhcmlhYmxlcy4KCjIwMDYtMTAtMTcgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPiAKCiAgICAgICAgUFIgYysrLzI3OTUyCiAgICAgICAgKiBjcC10cmVlLmggKHhyZWZfYmFzZXR5cGVzKTogUmV0dXJuIGJvb2wgaW5zdGVhZCBvZiB2b2lkLgogICAgICAgICogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IEFkanVzdCBkZWZpbml0aW9uLiBSZXR1cm4gZmFsc2UKICAgICAgICBpZiB0aGUgY2xhc3MgYmFzZXMgYXJlIGludmFsaWQuCiAgICAgICAgKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2NsYXNzX2hlYWQpOiBDaGVjayB0aGUgcmV0dXJuIHZhbHVlCiAgICAgICAgZnJvbSB4cmVmX2Jhc2V0eXBlcy4KCQoyMDA2LTEwLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODI2MQoJKiBwYXJzZXIuYyAoY3BfbGV4ZXJfbmV4dF90b2tlbl9pc19kZWNsX3NwZWNpZmllcl9rZXl3b3JkKTogQWRkCgljb21tZW50LgoKCVBSIGMrKy8yODI2MQoJKiBwYXJzZXIuYyAoY3BfbGV4ZXJfbmV4dF90b2tlbl9pc19kZWNsX3NwZWNpZmllcl9rZXl3b3JkKTogTmV3CglmdW5jdGlvbi4KCShjcF9wYXJzZXJfY29uc3RydWN0b3JfZGVjbGFyYXRvcl9wKTogVXNlIGl0LgoJKGNwX3BhcnNlcl9jaGVja190eXBlX2RlZmluaXRpb24pOiBSZXR1cm4gYSB2YWx1ZSBpbmRpY2F0aW5nCgl3aGV0aGVyIG9yIG5vdCB0aGUgZGVmaW5pdGlvbiBpcyB2YWxpZC4KCShjcF9wYXJzZXJfZW51bV9zcGVjaWZpZXIpOiBTa2lwIGludmFsaWQgZW51bSBkZWZpbml0aW9ucy4KCjIwMDYtMTAtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI5MDM5CgkqIHR5cGVjazIuYyAoYnVpbGRfZnVuY3Rpb25hbF9jYXN0KTogRG9uJ3QgemVyby1pbml0aWFsaXplCglub24tUE9EczsgaW5zdGVhZCwgY2FsbCB0aGVpciBjb25zdHJ1Y3RvcnMuCgkqIG1ldGhvZC5jIChzeW50aGVzaXplX21ldGhvZCk6IEFsd2F5cyBidWlsZCBtZW0taW5pdGlhbGl6ZXJzLCBpZgoJd2UncmUgc3ludGhlc2l6aW5nIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yLgoKMjAwNi0xMC0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjcyNzAKCSogZGVjbC5jIChyZXNoYXBlX2luaXRfY2xhc3MpOiBNb3ZlIGNoZWNrIGZvciBkZXNpZ25hdGVkCgl0byAuLi4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9pbml0aWFsaXplcl9saXN0KTogLi4uIGhlcmUuCgkqIHB0LmMgKHRzdWJzdF9jb3B5X2FuZF9idWlsZCk6IFVzZSBmaW5pc2hfY29tcG91bmRfbGl0ZXJhbC4KCjIwMDYtMTAtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI3MjcwCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yX2FycmF5KTogUmV3b3JkIGNvbW1lbnQuCgkqIHB0LmMgKHRzdWJzdF9jb3B5X2FuZF9idWlsdCk6IENhbGwgcmVzaGFwZV9pbml0IGJlZm9yZSBjYWxsaW5nCglkaWdlc3RfaW5pdC4KCglQUiBjKysvMjk0MDgKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl91c2luZ19kZWNsYXJhdGlvbik6IFN0b3AgcGFyc2luZyB3aGVuCglzb21ldGhpbmcgZ29lcyB3cm9uZyB3aXRoIGFuIGFjY2VzcyBkZWNsYXJhdGlvbi4KCglQUiBjKysvMjk0MzUKCSogdHlwZWNrLmMgKGN4eF9zaXplb2Zfb3JfYWxpZ25vZl90eXBlKTogQ29tcGxldGUgbm9uLWRlcGVuZGVudAoJdHlwZXMgd2hlbiB0aGVpciBzaXplcyBhcmUgcmVxdWlyZWQuICBSZWZpbmUgdGVzdCBmb3IgVkxBcy4KCglQUiBjKysvMjgyMTEKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90ZW1wbGF0ZV9hcmd1bWVudCk6IERvbid0IGNvbnNpZGVyICImdmFyIiBhCglwb3NzaWJsZSBjb25zdGFudC1leHByZXNzaW9uLgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBSZWZpbmUgaGFuZGxpbmcgb2YgYXJndW1lbnRzIG9mCglwb2ludGVyIHR5cGUuCgoyMDA2LTEwLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODUwNgoJKiBwYXJzZXIuYyAoZnVuY3Rpb25fZGVjbGFyYXRvcl9wKTogTmV3IGZ1bmN0aW9uLgoJKGNwX3BhcnNlcl9pbml0X2RlY2xhcmF0b3IpOiBVc2UgaXQuCgkoY3BfcGFyc2VyX21lbWJlcl9kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoKMjAwNi0xMC0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjkzMTgKCSogcnR0aS5jIChnZXRfdGluZm9fZGVjbCk6IFJlZnVzZSB0byBjcmVhdGUgdHlwZSBpbmZvIG9iamVjdHMgZm9yCgl2YXJpYWJseSBtb2RpZmllZCB0eXBlcy4KCjIwMDYtMTAtMTIgTGVlIE1pbGx3YXJkIDxsZWUubWlsbHdhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCiAgICAgICBQUiBjKysvMjc5NjEKICAgICAgICogZGVjbC5jIChzdGFydF9kZWNsKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBpZiBhCiAgICAgICBmdW5jdGlvbiBpcyBpbml0aWFsaXplZCBsaWtlIGEgdmFyaWFibGUuCiAgICAgICAoY2hlY2tfdmFyX3R5cGUpOiBJZiBhIHZhcmlhYmxlIG9mIGZpZWxkIGlzIGRlY2xhcmVkIHZvaWQsCiAgICAgICBzZXQgdGhlIHR5cGUgdG8gZXJyb3JfbWFya19ub2RlLgogICAgICAgKGdyb2tkZWNsYXJhdG9yKTogQ2hlY2sgdGhlIHJldHVybiB0eXBlIG9mIGNoZWNrX3Zhcl90eXBlLgogICAgICAgKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBSb2J1c3RpZnkuCgkKMjAwNi0xMC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjkxNzUKCSogZGVjbC5jIChjaGVja19pbml0aWFsaXplcik6IElzc3VlIGVycm9ycyBhYm91dCB0cnlpbmcgdG8KCWluaXRpYWxpemUgYXJyYXlzIHdob3NlIGVsZW1lbnRzIGhhdmUgdmFyaWFibGUgc2l6ZS4KCjIwMDYtMTAtMTEgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yOTAyNAogICAgICAgICogY3AtdHJlZSAoc3RydWN0IGNwX2RlY2xfc3BlY2lmaWVyX3NlcSk6IFJlbmFtZSB0byAKICAgICAgICBjb25mbGljdGluZ19zcGVjaWZpZXJzX3AKICAgICAgICAqIHBhcnNlci5jIChjcF9wYXJzZXJfc2V0X3N0b3JhZ2VfY2xhc3MpOiBTZXQKICAgICAgICBjb25mbGljdGluZ19zcGVjaWZpZXJzX3AgZm9yIHRoZSBpbnB1dCBkZWNsIHNwZWNpZmllciAKICAgICAgICBpZiBhIHR5cGVkZWYgc3BlY2lmaWVyIGlzIHByZXNlbnQuIFJlbmFtZSB1c2VzIG9mCiAgICAgICAgbXVsdGlwbGVfc3BlY2lmaWVyc19wIHRvIGNvbmZsaWN0aW5nX3NwZWNpZmllcnNfcC4KICAgICAgICAoY3BfcGFyc2VyX2RlY2xfc3BlY2lmaWVyX3NlcSkgPFJJRF9UWVBFREVGPjogSWYgYSBzdG9yYWdlIAogICAgICAgIGNsYXNzIHNwZWNpZmllciBoYXMgYWxyZWFkeSBiZWVuIHNldCBmb3IgdGhpcyBkZWNsYXJhdGlvbiwgCiAgICAgICAgc2V0IGNvbmZsaWN0aW5nX3NwZWNpZmllcnNfcCB0byB0cnVlIG9uIHRoZSBkZWNsX3NwZWNzLgogICAgICAgICogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJlbmFtZSB1c2VzIG9mCiAgICAgICAgbXVsdGlwbGVfc3BlY2lmaWVyc19wIHRvIGNvbmZsaWN0aW5nX3NwZWNpZmllcnNfcC4KCjIwMDYtMTAtMTAgIEJyb29rcyBNb3NlcyAgPGJtb3Nlc0BzdGFuZm9yZC5lZHU+CgoJKiBNYWtlLWxhbmcuaW46IEFkZGVkICJjKysucGRmIiB0YXJnZXQgc3VwcG9ydC4KCjIwMDYtMTAtMTAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI5MzIzCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogU2V0IFRSRUVfTk9USFJPVyBvbmx5IGZvcgoJZnVuY3Rpb25zIHRoYXQgYmluZCBsb2NhbC4KCjIwMDYtMTAtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUmV2ZXJ0IGVtdXRscyBwYXRjaC4KCjIwMDYtMTAtMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgkgICAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGdyb2t2YXJkZWNsKTogRG9uJ3QgZXJyb3IgaWYgIWhhdmVfdGxzLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfb21wX3RocmVhZHByaXZhdGUpOiBMaWtld2lzZS4KCjIwMDYtMTAtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI5MDIwCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBJbXByb3ZlIGNvbW1lbnRzOyBhZGQgYXNzZXJ0aW9uLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX25lc3RlZF9uYW1lX3NwZWNpZmllcl9vcHQpOiBSZXNvbHZlCgl0eXBlbmFtZXMgZm9yIHF1YWxpZmllZCBuYW1lcyB1c2VkIGluIGRlY2xhcmF0aW9ucywgZXZlbiB3aGVuCgljYWNoaW5nIHF1YWxpZmllZCBuYW1lIGxvb2t1cC4KCglQUiBjKysvMjkxMzgKCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogRG9uJ3QgaGFuZGxlIGFjY2VzcyBkZWNsYXJhdGlvbnMgaGVyZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl91c2luZ19kZWNsYXJhdGlvbik6IEhhbmRsZSBhY2Nlc3MKCWRlY2xhcmF0aW9ucyB0b28uCgkoY3BfcGFyc2VyX2Jsb2NrX2RlY2xhcmF0aW9uKTogQWRqdXN0IGNhbGxzIHRvCgljcF9wYXJzZXJfdXNpbmdfZGVjbGFyYXRpb24uCgkoY3BfcGFyc2VyX21lbWJlcl9kZWNsYXJhdGlvbik6IExpa2V3aXNlLiAgVXNlCgljcF9wYXJzZXJfdXNpbmdfZGVjbGFyYXRpb24gdG8gbG9vayBmb3IgYWNjZXNzX2RlY2xhcmF0aW9ucy4KCjIwMDYtMTAtMDMgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI5MjkxCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogQ2hlY2sgZm9yIGludmFsaWQgaW5pdC4KCjIwMDYtMTAtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI5MjI2CgkqIHR5cGVjay5jIChjeHhfc2l6ZW9mX29yX2FsaWdub2ZfdHlwZSk6IFRpZHkuICBJbiB0ZW1wbGF0ZXMsIGRvCglub3QgdHJ5IHRvIGFjdHVhbGx5IGV2YWx1YXRlIHNpemVvZiBmb3IgYSBWTEEgdHlwZS4KCjIwMDYtMTAtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI5MTA1CgkqIHB0LmMgKHRzdWJzdF9iYXNlbGluayk6IFN1YnN0aXR1dGVpbnRvIHRoZSBxdWFsaWZ5aW5nIHNjb3BlLgoJKiBzZW1hbnRpY3MuYyAoYmFzZWxpbmtfZm9yX2Zucyk6IEJ1aWxkIGEgYmFzZWxpbmssIGV2ZW4gd2hlbgoJcHJvY2Vzc2luZyBhIHRlbXBsYXRlLgoKCVBSIGMrKy8yOTA4MAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3Bvc3RmaXhfZG90X2RlcmVmX2V4cHJlc3Npb24pOiBVc2UKCUJBU0VMSU5LX0FDQ0VTU19CSU5GTyBhcyB0aGUgcXVhbGlmeWluZyBzY29wZSB3aGVuIGNhbGxpbmcKCWFkanVzdF9yZXN1bHRfb2ZfcXVhbGlmaWVkX25hbWVfbG9va3VwLiAKCjIwMDYtMDktMjUgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKICAgICAgICBQUiBjKysvMjczMjkKICAgICAgICBQUiBjKysvMjY5MzgKICAgICAgICAqIGNwLXRyZWUuaCAocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogQWRqdXN0IGRlY2xhcmF0aW9uCiAgICAgICAgdG8gcmV0dXJuIGJvb2wgaW5zdGVhZCBvZiB2b2lkLgogICAgICAgICogcHQuYyAocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogVXBkYXRlIGRlZmluaXRpb24uCglSZXR1cm4gZmFsc2Ugb24gZXJyb3IuCiAgICAgICAgKiBkZWNsLmMgKHhyZWZfdGFnKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBpZgoJcmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlIHJldHVybmVkIGZhbHNlLgoKCVBSIGMrKy8yNzY2NwogICAgICAgICogY3AtdHJlZS5oIChiZWdpbl9zcGVjaWFsaXphdGlvbik6IFJldHVybiBib29sIAoJaW5zdGVhZCBvZiB2b2lkLgogICAgICAgICogcHQuYyAoY2hlY2tfc3BlY2lhbGl6YXRpb25fc2NvcGUpOiBMaWt3aXNlLiAKCUFkanVzdCBjb21tZW50LiBSZXR1cm4gZmFsc2UgaWYgYSBzcGVjaWFsaXphdGlvbiAKCWlzbid0IHBlcm1pdHRlZCBpbiB0aGUgY3VycmVudCBzY29wZS4KICAgICAgICAoYmVnaW5fc3BlY2lhbGl6YXRpb24pOiBVc2UgdGhlIHJldHVybiB2YWx1ZSBvZiAgCiAgICAgICAgY2hlY2tfc3BlY2lhbGl6YXRpb25fc2NvcGUuCiAgICAgICAgKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogSWYKICAgICAgICBiZWdpbl9zcGVjaWFsaXphdGlvbiByZXR1cm5lZCBmYWxzZSwgc2tpcCB0aGUgcmVzdCAKCW9mIHRoZSBzcGVjaWFsaXphdGlvbi4KCQoyMDA2LTA5LTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yOTAxNgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBEb24ndCBmb3JtIGFuIEFERFJfRVhQUiBhcm91bmQgYQoJQkFTRUxJTksuCgoyMDA2LTA5LTIxICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjg4NjEKCSogZGVjbC5jIChzaGFkb3dfdGFnKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZQogICAgICAgIGlmIG1heWJlX3Byb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbiBmYWlsZWQuCgoJUFIgYysrLzI4MzAzCiAgICAgICAgKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBvbgogICAgICAgIGRlY2xhcmF0aW9uIHdpdGggdHdvIG9yIG1vcmUgZGF0YSB0eXBlcy4KCQoyMDA2LTA5LTIwICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIHRhcmdldC8yNzY1MAoJKiBjbGFzcy5jIChjaGVja19mb3Jfb3ZlcnJpZGUpOiBSZW1vdmUgZGxsaW1wb3J0IGZyb20gdmlydHVhbAoJbWV0aG9kcy4KCjIwMDYtMDktMTggIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCglQUiBjKysvMjkwODcKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9sYWJlbGVkX3N0YXRlbWVudCk6IFJldHVybiBub3RoaW5nLiAgRG8KCW5vdCB0YWtlIGluX3N0YXRlbWVudF9leHByIGFuZCBpbl9jb21wb3VuZCBhcyBhcmd1bWVudHMuICBSZW5hbWUKCXRvIGNwX3BhcnNlcl9sYWJlbF9mb3JfbGFiZWxlZF9zdGF0ZW1lbnQuICBQYXJzZSBvbmx5IHRoZSBsYWJlbCwKCW5vdCB0aGUgc3RhdGVtZW50LgoJKGNwX3BhcnNlcl9zdGF0ZW1lbnQpOiBQYXJzZSB0aGUgc3RhdGVtZW50IG9mIGEgbGFiZWxlZC1zdGF0ZW1lbnQKCWZyb20gaGVyZSwgdXNpbmcgdGFpbCByZWN1cnNpb24uCgoyMDA2LTA5LTE0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBDKysvMjkwMDIKCSogaW5pdC5jIChidWlsZF96ZXJvX2luaXQpOiBJZiB3ZSBoYXZlIGFuIGVycm9yIG1hcmsgbm9kZSBmb3IKCXRoZSBhcnJheSBzaXplLCByZXR1cm4uCgoyMDA2LTA5LTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODk5MQoJKiBjcC1vYmpjcC1jb21tb24uYyAoY3h4X3N0YXRpY3ApOiBOZXcgZnVuY3Rpb24uCgkqIGNwLW9iamNwLWNvbW1vbi5oIChMQU5HX0hPT09LU19TVEFUSUNQKTogVXNlIGl0LgoJKiBjcC10cmVlLmggKGN4eF9zdGF0aWNwKTogTmV3IGZ1bmN0aW9uLgoKMjAwNi0wOS0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI4OTk2CgkqIGN2dC5jIChjb252ZXJ0X3RvX3ZvaWQpOiBTdHJpcCBDT01QT05FTlRfUkVGIHRvIGZ1bmN0aW9ucy4KCjIwMDYtMDktMDggIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI4ODU4CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfc2tpcF91bnRpbF9mb3VuZCk6IFJlbmFtZSB0bwoJY3BfcGFyc2VyX3NraXBfdG9fZW5kX29mX3RlbXBsYXRlX3BhcmFtZXRlcl9saXN0LiAgUmVtb3ZlIGxhc3QgdHdvCglwYXJhbWV0ZXJzLiAgVHJhY2sgbGV2ZWxzIG9mICc8IC4uLiA+Jy4gIFN0b3AgYXQgJ3snLCAnfScsIG9yICc7Jy4KCVJlb3JnYW5pemUuICBBZGp1c3QgY29tbWVudC4KCShjcF9wYXJzZXJfdGVtcGxhdGVfZGVjbGFyYXRpb25fYWZ0ZXJfZXhwb3J0KTogQWRqdXN0IGNhbGwuCgkoY3BfcGFyc2VyX2VuY2xvc2VkX3RlbXBsYXRlX2FyZ3VtZW50X2xpc3QpOiBMaWtld2lzZS4KCjIwMDYtMDktMDcgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIEMrKy8yODkwNgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogQnVpbGQgYSBkaXN0aW5jdCB0eXBlIGNvcHkKCWZvciB0aGUgYXJyYXkgdHlwZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tCglidWlsZF9jcGx1c19hcnJheV90eXBlLgoKMjAwNi0wOS0wNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI3MzcxCgkqIGN2dC5jIChjb252ZXJ0X3RvX3ZvaWQpOiBFbmFibGUgcHJldmlvdXMgY2hhbmdlLgoKCVBSIGMrKy8yNjk1NwoJKiBtZXRob2QuYyAodXNlX3RodW5rKTogQ2xlYXIgREVDTF9IQVNfVkFMVUVfRVhQUl9QIG9uIGNvcGllZAoJcGFybXMuCgoyMDA2LTA5LTA3ICBTaW1vbiBNYXJ0aW4gIDxzaW1hcnRpbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYysrLzI4Mjg0CgkqIHB0LmMgKGZvbGRfbm9uX2RlcGVuZGVudF9leHByKTogTWFrZSBzdXJlIGV4cHIgaXMgbm90CglkZXJlZmVyZW5jZWQgaWYgaXQgaXMgTlVMTC4KCjIwMDYtMDktMDYgIFphayBLaXBsaW5nICA8emFrQHRyYW5zdmVyc2FsLmNvbT4KCglQUiBjKysvMjYxOTUKCSogZGVjbC5jIChtYWtlX3J0bF9mb3Jfbm9ubG9jYWxfZGVjbCksCgkoc3RhcnRfcHJlcGFyc2VkX2Z1bmN0aW9uKTogRG9uJ3QgdXNlIGxiYXNlbmFtZSBvbgoJaW5wdXRfZmlsZW5hbWUgd2hlbiBjYWxsaW5nIGdldF9maWxlaW5mby4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCSogbGV4LmMgKGN4eF9tYWtlX3R5cGUpOiBMaWtld2lzZS4KCShoYW5kbGVfcHJhZ21hX2ludGVyZmFjZSk6IENhbGwgZ2V0X2ZpbGVpbmZvIG9uIGlucHV0X2ZpbGVuYW1lLAoJbm90IG9uIHRoZSBwYXJhbWV0ZXIgdG8gdGhlIGRpcmVjdGl2ZS4KCjIwMDYtMDktMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4OTAzCgkqIHB0LmMgKHRzdWJzdCk6IFVzZSBmb2xkX25vbl9kZXBlbmRlbnRfZXhwciB0byBmb2xkIGFycmF5CglkaW1lbnNpb25zLgoKCVBSIGMrKy8yODg4NgoJKiBwdC5jICh1bmlmeSk6IEF2b2lkIHVubmVjZXNzYXJ5IGNhbGxzIHRvIGZvbGRfYnVpbGQyIGZvciBhcnJheQoJZGltZW5zaW9ucy4KCjIwMDYtMDktMDYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNzM3MQoJKiBjdnQuYyAoY29udmVydF90b192b2lkKTogU3RyaXAgdXNlbGVzcyBUQVJHRVRfRVhQUi4KCSogY3AtdHJlZS5oIChUQVJHRVRfRVhQUl9JTVBMSUNJVF9QKTogTmV3IG1hY3JvLgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX25ldyk6IFNldCBpdC4KCglQUiBjKysvMjY2OTYKCSogY3Z0LmMgKGNvbnZlcnRfdG9fdm9pZCk6IFJlcGxhY2UgYSBzdWJleHByZXNzaW9uIHdpdGggbm8gc2lkZSAKCWVmZmVjdHMgd2l0aCB2b2lkX3plcm9fbm9kZS4KCSogdHJlZS5jIChpc19vdmVybG9hZGVkX2ZuKTogTG9vayB0aHJvdWdoIENPTVBPTkVOVF9SRUYuCgkoZ2V0X2ZpcnN0X2ZuKTogRGl0dG8uCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBObyBuZWVkIHRvIGxvb2sgdGhyb3VnaCBDT01QT05FTlRfUkVGLgoKMjAwNi0wOS0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI2NTcxCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZGlhZ25vc2VfaW52YWxpZF90eXBlX25hbWUpOiBIYW5kbGUgdGhlIGNhc2UKCXdoZXJlIHRoZSBuYW1lIGlzIGEgdHlwZSB1c2VkIGluY29ycmVjdGx5LgoKCVBSIGMrKy8yNjY3MQoJKiB0eXBlY2suYyAobWF5YmVfd2Fybl9hYm91dF9yZXR1cm5pbmdfYWRkcmVzc19vZl9sb2NhbCk6IExvb2sgCgl0aHJvdWdoIENPTVBPTkVOVF9SRUYgYW5kIEFSUkFZX1JFRi4JCgoJUFIgYysrLzI2MTAyCgkqIG5hbWUtbG9va3VwLmMgKGRvX2NsYXNzX3VzaW5nX2RlY2wpOiBUcnkgdG8gZmluZCB0aGUgYmFzZSBldmVuCglpZiBiYXNlc19kZXBlbmRlbnRfcC4KCSogcHQuYyAodHlwZV9kZXBlbmRlbnRfZXhwcmVzc2lvbl9wKTogQSBVU0lOR19ERUNMIGlzIGRlcGVuZGVudC4JCgoJUFIgYysrLzE5ODA5CgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24pOiBTZXQgREVDTF9JTklUSUFMIGJlZm9yZSBwdXNoZGVjbC4KCjIwMDYtMDktMDQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgMjMyODcgUmV2ZXJ0IG15IDIwMDYtMDktMDEgcGF0Y2guCgkqIHBhcnNlci5jOiBSZXZlcnRlZC4KCSogcHQuYzogUmV2ZXJ0ZWQuCgoyMDA2LTA5LTAyICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjc2NzAKCVBSIGMrKy8yNzQ5MwoJUFIgYysrLzI3NDk0CglQUiBjKysvMjczOTcKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90ZW1wbGF0ZV9wYXJhbWV0ZXJfbGlzdCk6IEFkZAoJaW52YWxpZCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIHRvIHRoZSBwYXJhbWV0ZXIgbGlzdCBhcwoJZXJyb3JfbWFya19ub2RlLgoKMjAwNi0wOS0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzI4ODc4CgkqIGV4Y2VwdC5jIChidWlsZF90aHJvdyk6IE9ubHkgc2V0IGN1cnJlbnRfZnVuY3Rpb25fcmV0dXJuc19hYm5vcm1hbGx5CglpZiBjZnVuIGlzIG5vdCBOVUxMLgoKCVBSIGMrKy8yNjkxNwoJKiByZXBvLmMgKHJlcG9fZmlsZSk6IFJlbW92ZS4KCShvcGVuX3JlcG9fZmlsZSwgcmVvcGVuX3JlcG9fZmlsZV9mb3Jfd3JpdGUpOiBSZXR1cm4gZm9wZW5lZAoJRklMRSAqIGluc3RlYWQgb2Ygc2V0dGluZyBnbG9iYWwgcmVwb19maWxlIHZhcmlhYmxlLgoJKGluaXRfcmVwbyk6IEFkanVzdCBjYWxsZXIuCgkoZmluaXNoX3JlcG8pOiBMaWtld2lzZS4gIFJldHVybiBpbnN0ZWFkIG9mIGdvdG8gb3V0IGJlZm9yZQoJcmVvcGVuX3JlcG9fZmlsZV9mb3Jfd3JpdGUgaGFzIGJlZW4gY2FsbGVkLgoKMjAwNi0wOS0wMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjg3MDUKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jYWxsX2V4cHIpOiBBZGQgYXNzZXJ0LgoJKiBuYW1lLWxvb2t1cC5jIChsb29rdXBfYXJnX2RlcGVuZGVudCk6IENoZWNrIHdlIGZvdW5kIGFuIG92ZXJsb2FkCglvciBhbiBvYmplY3QuCgoJUFIgYysrLzIzMjg3CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfaWRfZXhwcmVzc2lvbik6IEFkZCBtZW1iZXJfcAoJYXJndW1lbnQuIFVwZGF0ZSBhbGwgY2FsbGVycy4KCShjcF9wYXJzZXJfdW5xdWFsaWZpZWRfaWQpOiBMaWtld2lzZS4gIExvb2t1cCBhIGRlc3RydWN0b3IgbmFtZSBpbgoJdGhlIG9iamVjdCdzIHNjb3BlLCBpZiB2YWxpZC4KCShjcF9wYXJzZXJfZ2xvYmFsX3Njb3BlX29wdCk6IEFkZCBvYmplY3Rfc2NvcGVfdmFsaWRfcC4gIFVwZGF0ZQoJY2FsbGVycy4KCShjcF9wYXJzZXJfcG9zdGZpeF9kb3RfZGVyZWZfZXhwcmVzc2lvbik6IFNldCBvYmplY3Rfc2NvcGUuCgkqIHB0LmMgKHRzdWJzdF9jb3B5X2FuZF9idWlsZCk6IExvb2t1cCBkZXBlbmRlbnQgZHRvciBuYW1lIGhlcmUuCgoyMDA2LTA4LTMwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjY2NzAKCSogY2xhc3MuYyAoY2hlY2tfZmllbGRfZGVjbHMpOiBEb24ndCB1bnNldCBUWVBFX1BBQ0tFRCB1bnRpbCBhbGwKCXRoZSBmaWVsZHMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4KCjIwMDYtMDgtMjkgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIEMrKy8yODM0OQoJKiBjYWxsLmMgKGJ1aWxkX3hfdmFfYXJnKTogUmVtb3ZlIHRoZSByZWZlcmVuY2UgdHlwZQoJZnJvbSB0aGUgdHlwZSBiZWZvcmUgY3JlYXRpbmcgdGhlIHBvaW50ZXIgdHlwZS4KCjIwMDYtMDgtMjkgIEoib3JuIFJlbm5lY2tlICA8am9lcm4ucmVubmVja2VAc3QuY29tPgoKCVBSIGMrKy8yODEzOQoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogVXNlIGNvcnJlY3QgdHlwZXMgZm9yIGJpdHdpc2UKCWNvcHkuCgoyMDA2LTA4LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjY2NzAKCSogY2xhc3MuYyAoY2hlY2tfZmllbGRfZGVjbHMpOiBVbnNldCBUWVBFX1BBQ0tFRCAodCkgaWYgb25lIG9mIHRoZQoJZmllbGRzIGNhbid0IGJlIHBhY2tlZC4KCglQUiBjKysvMjY1NzcKCSogY3Z0LmMgKGNvbnZlcnRfdG9fdm9pZCk6IERvbid0IGF1dG9tYXRpY2FsbHkgbG9hZCBmcm9tIHZvbGF0aWxlcyAKCW9mIFRSRUVfQUREUkVTU0FCTEUgdHlwZS4KCjIwMDYtMDgtMjggIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI4ODYwCgkqIGNwLXRyZWUuaCAobWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uKTogUmV0dXJuCgl0cmVlIGluc3RlYWQgb2Ygdm9pZC4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9jbGFzc19oZWFkKTogVXNlIHJldHVybiB2YWx1ZSBvZgoJbWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uLgoJKiBwdC5jIChtYXliZV9wcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24pOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlCglmb3IgYnJva2VuIHNwZWNpYWxpemF0aW9ucywgVFlQRSBvdGhlcndpc2UuICBDaGVjayBmb3IgdGVtcGxhdGUKCXRlbXBsYXRlIHBhcmFtZXRlcnMuCgoyMDA2LTA4LTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODA1OAoJKiBwdC5jIChyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgZm9yCglzcGVjaWFsaXphdGlvbi1hZnRlci1pbnN0YW50aWF0aW9uLgoJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBNYXJrIHRoZSBtYWluIGZ1bmN0aW9uIHVzZWQgd2hlbiBvbmUgb2YgaXRzCgljbG9uZXMgaXMgdXNlZC4KCQoyMDA2LTA4LTI3ICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjY1NzMKCSogY2xhc3MuYyAoY2hlY2tfZmllbGRfZGVjbHMpOiBEb24ndCBpc3N1ZSBlcnJvciBhYm91dAoJbG9jYWwgY2xhc3NlcyBjb250YWluaW5nIHN0YXRpYyBkYXRhIG1lbWJlcnMuCgkKMjAwNi0wOC0yNiAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0MDA5CgkqIHBhcnNlci5jIChzdHJ1Y3QgY3BfdG9rZW4pOiBBZGQgaW5wdXRfZmlsZV9zdGFja19pbmRleC4KCShlb2ZfdG9rZW4pOiBVcGRhdGUuCgkoY3BfbGV4ZXJfZ2V0X3ByZXByb2Nlc3Nvcl90b2tlbik6IFNhdmUgaW5wdXRfZmlsZV9zdGFja190aWNrLgoJKGNwX2xleGVyX3NldF9zb3VyY2VfcG9zaXRpb25fZnJvbV90b2tlbik6IFJlc3RvcmUgaW5wdXQgZmlsZQoJc3RhY2suCgoyMDA2LTA4LTI2ICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjg3MzYKCVBSIGMrKy8yODczNwoJUFIgYysrLzI4NzM4CgkqIHB0LmMgKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IFN0b3JlIGludmFsaWQgdGVtcGxhdGUKCXBhcmFtZXRlcnMgYXMgYSBUUkVFX0xJU1Qgd2l0aCBhIFRSRUVfVkFMVUUgb2YgZXJyb3JfbWFya19ub2RlLgoJKHB1c2hfaW5saW5lX3RlbXBsYXRlX3Bhcm1zX3JlY3Vyc2l2ZSk6IENoZWNrIGZvciB0ZW1wbGF0ZQoJcGFyYW1ldGVycyBoYXZpbmcgYSBUUkVFX1ZBTFVFIG9mIGVycm9yX21hcmtfbm9kZSByYXRoZXIgdGhhbgoJY2hlY2sgdGhlIHBhcmFtZXRlciBpdHNlbGYuCgkobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoY29tcF90ZW1wbGF0ZV9wYXJtcyk6IFdoZW4gY29tcGFyaW5nIHRoZSBpbmRpdmlkdWFsIHRlbXBsYXRlCglwYXJhbWV0ZXJzLCByZXR1cm4gMSBpZiBlaXRoZXIgaXMgZXJyb3JfbWFya19ub2RlLgoJKGN1cnJlbnRfdGVtcGxhdGVfYXJncyk6IFJvYnVzdGlmeS4KCShyZWRlY2xhcmVfY2xhc3NfdGVtcGxhdGUpOiBMaWtld2lzZS4KCQoyMDA2LTA4LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODU4OAoJKiBjbGFzcy5jIChyZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbik6IEFkZAoJYWNjZXNzX3BhdGggcGFyYW1ldGVyLiAgUGVyZm9ybSBhY2Nlc3MgY2hlY2tzLgoJKGluc3RhbnRpYXRlX3R5cGUpOiBBZGp1c3QgY2FsbCB0bwoJcmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24uICBSZW1vdmUgdW5uZWNlc3NhcnkgY29kZS4KCSogdHJlZS5jIChpc19vdmVybG9hZGVkX2ZuKTogRG9jdW1lbnQuICBSZXR1cm4gMiB3aGVuIHRoZXJlIGFyZQoJYWN1dGFsbHkgbXVsdGlwbGUgZnVuY3Rpb25zLgoJKHJlYWxseV9vdmVybG9hZGVkX2ZuKTogVXNlIGlzX292ZXJsb2FkZWRfZm4uCgkqIG1hbmdsZS5jICh3cml0ZV9leHByZXNzaW9uKTogSGFuZGxlIEJBU0VMSU5Lcy4KCSogY3AtdHJlZS5oIChyZWFsbHlfb3ZlcmxvYWRlZF9mbik6IFJldHVybiBib29sLgoJKGJhc2VsaW5rX2Zvcl9mbnMpOiBEZWNsYXJlLgoJKiBzZWFyY2guYyAobG9va3VwX21lbWJlcik6IENoZWNrIGFjY2VzcyBmb3Igc2luZ2xlIHN0YXRpYwoJZnVuY3Rpb25zIGhlcmUuCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudF9mdW5jdGlvbik6IEhhbmRsZSBCQVNFTElOS3MuCgkodHN1YnN0X2NvcHlfYW5kX2J1aWxkKTogR2VuZXJhdGUgQkFTRUxJTktzIGZvciB0ZW1wbGF0ZS1pZHMuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfY2FsbF9leHByKTogVXNlIGJhc2VsaW5rX2Zvcl9mbnMuCgkoYmFzZWxpbmtfZm9yX2Zucyk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfaWRfZXhwcmVzc2lvbik6IFVzZSBpdC4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90ZW1wbGF0ZV9hcmd1bWVudCk6IERvbid0IHN0cmlwIEJBU0VMSU5Lcy4KCglQUiBjKysvMjg1OTUKCSogcHQuYyAodHN1YnN0KTogSXNzdWUgZXJyb3JzIGFib3V0IGF0dGVtcHRzIHRvIGNyZWF0ZSBWTEFzIGF0Cgl0ZW1wbGF0ZS1pbnN0YW50aWF0aW9uIHRpbWUuCgoyMDA2LTA4LTI1ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yODg1MwoJKiB0eXBlY2syLmMgKGN4eF9pbmNvbXBsZXRlX3R5cGVfZGlhZ25vc3RpYyk6IEhhbmRsZSB0ZW1wbGF0ZQoJdGVtcGxhdGUgcGFyYW1ldGVycy4gIEltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IgdGVtcGxhdGUgdHlwZQoJcGFyYW1ldGVycy4KCglQUiBjKysvMjg4NTIKCSogY3AtdHJlZS5oIChncm9rX29wX3Byb3BlcnRpZXMpOiBSZXR1cm4gYm9vbCBpbnN0ZWFkIG9mIHZvaWQuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IERpc2NhcmQgaW52YWxpZCBvcGVyYXRvciBkZWNsYXJhdGlvbnMuCgkoY29weV9mbl9wKTogUmV2ZXJ0IGNoYW5nZSBmb3IgUFIgMjc1NDcuCgkoZ3Jva19vcF9wcm9wZXJ0aWVzKTogUmV0dXJuIGVycm9yIHN0YXR1cyAodHJ1ZSBvbiBzdWNjZXNzKS4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBEaXNjYXJkIGludmFsaWQgb3BlcmF0b3IgZGVjbGFyYXRpb25zLgoKMjAwNi0wOC0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjgwNTYKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IERpc2FsbG93IGRlY2xhcmF0aW9ucyB3aXRoIHF1YWxpZmllZAoJbmFtZXMgaW4gbG9jYWwgc2NvcGVzLgoKMjAwNi0wOC0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjc3ODcKCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBPbmx5IHRyeSBhbmQgcmVzb2x2ZSBpdCB3aGVuCgljb250ZXh0IGlzIG5vdCBkZXBlbmRlbnQuICBSZWZhY3Rvci4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3Nmbik6IFB1c2ggdG8gY2xhc3Mgc2NvcGUgYmVmb3JlIGxvb2tpbmcgZm9yCgl0aGUgZnVuY3Rpb24uCgoyMDA2LTA4LTI0ICBEYW5ueSBTbWl0aCAgIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBkcml2ZXIvMjg1MjgKCSogZysrc3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IEFsd2F5cyBjaGVjayBpZiB3ZSBuZWVkIHRvCglzd2FsbG93IGEgc3BhY2Utc2VwYXJhdGVkICBhcmcgdG8gJy14Jy4KCSogbGFuZy1zcGVjcy5oOiBEb24ndCBjcmVhdGUgb3VwdXQgZmlsZXMgZm9yICcteGMrKy1oZWFkZXInCglpZiAtZnN5bnRheC1vbmx5LgoKMjAwNi0wOC0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI3NzE0CgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogQSBmcmllbmQgdGVtcGxhdGUgd2l0aCBjbGFzcyAKCXNjb3BlIGlzbid0IHByaW1hcnkuCgoyMDA2LTA4LTIzICBCZW5qYW1pbiBTbWVkYmVyZyA8YmVuamFtaW5Ac21lZGJlcmdzLnVzPgoKCVBSIGMrKy8yODY4NwoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdCwgYnVpbGRfZHluYW1pY19jYXN0XzEpOgoJTW92ZSAtZm5vLXJ0dGkgY2hlY2sgdG8gYmUgbW9yZSBzcGVjaWZpYy4KCjIwMDYtMDgtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yMzM3MgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IERvbid0IG1ha2UgYSBjb3B5IGhlcmUgaWYgYnVpbGRfY2FsbCAKCXdpbGwgbWFrZSBvbmUgdG9vLgoKMjAwNi0wOC0yMiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgQysrLzI4NDUwCgkqIGNwL2luaXQuYyAoYnVpbGRfemVyb19pbml0KTogSGFuZGxlIFZFQ1RPUl9UWVBFIGFuZAoJQ09NUExFWF9UWVBFcy4KCjIwMDYtMDgtMjIgIFNpbW9uIE1hcnRpbiAgPHNpbWFydGluQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBjKysvMjg0MjAKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24pOiBNYWtlIHN1cmUgdGhhdCB0aGUKCXNhdmVkIHZhbHVlIGZvciBwYXJzZXItPnR5cGVfZGVmaW5pdGlvbl9mb3JiaWRkZW5fbWVzc2FnZSBpcwoJcmVzdG9yZWQgYmVmb3JlIHJldHVybmluZyB0byBhdm9pZCBhbiBpbnZhbGlkIGZyZWUoKS4KCjIwMDYtMDgtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yODY1OQoJKiB0eXBlY2suYyAobWVyZ2VfdHlwZXMpOiBJZiBlaXRoZXIgb2YgdGhlIHR5cGVzIGhhdmUgdGhlIHJpZ2h0IAoJYXR0cmlidXRlcywgcmV0dXJuIHRoYXQgb25lLgoKCSogdHJlZS5jIChjcF9idWlsZF90eXBlX2F0dHJpYnV0ZV92YXJpYW50KTogTWFrZSBzdXJlIHdlIGFyZW4ndAoJZG9pbmcgdGhpcyB0byBjbGFzcyB0eXBlcy4KCSogdHlwZWNrLmMgKG9yaWdpbmFsX3R5cGUpOiBEZWFsIHdpdGggdHlwZSBxdWFscyBwcm9wZXJseS4KCjIwMDYtMDgtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNzExNQoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3N0bXRfZXhwcl9leHByKTogRG9uJ3QgdHJ5IHRvIHZvaWRpZnkgaGVyZSwKCWp1c3QgbGVhdmUgdGhlIGV4cHJlc3Npb24gYXMgaXQgaXMuCgkoZmluaXNoX3N0bXRfZXhwcik6IElmIHRoZSBzdGF0ZW1lbnQtZXhwcmVzc2lvbiBoYXMgY2xhc3MgdHlwZSwKCXdyYXAgaXQgaW4gYSBUQVJHRVRfRVhQUi4KCSogY3AtZ2ltcGxpZnkuYyAoY3BfZ2ltcGxpZnlfaW5pdF9leHByKTogRG9uJ3QgYm90aGVyIHdpdGgKCUNMRUFOVVBfUE9JTlRfRVhQUi4KCSogZXhjZXB0LmMgKGJ1aWxkX3Rocm93KTogR2l2ZSB0aGUgQ0xFQU5VUF9QT0lOVF9FWFBSIHZvaWQgdHlwZS4KCjIwMDYtMDgtMjEgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNjI2OQoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFJldHVybiBlYXJseSBpZiBlaXRoZXIKCW5ld2RlY2wgb3Igb2xkZGVjbCBpcyBlcnJvcl9tYXJrX25vZGUuCgoJIFBSIGMrKy8yODUwNQoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmV0dXJuIGVhcmx5IGFmdGVyCglpc3N1aW5nIGRpYWdub3N0aWMgYWJvdXQgYW4gaW5jb21wbGV0ZSB0eXBlLgoKCVBSIGMrKy8yODc0MQoJKiB0cmVlLmMgKGRlY2xfYW5vbl9uc19tZW1fcCk6IFJvYnVzdGlmeS4KCSogZGVjbDIuYyAoZGV0ZXJtaW5lX3Zpc2liaWxpdHkpOiBMaWtld2lzZS4KCQoyMDA2LTA4LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODM0MQoJKiB0cmVlLmMgKGNhc3RfdmFsaWRfaW5faW50ZWdyYWxfY29uc3RhbnRfZXhwcmVzc2lvbl9wKTogTmV3CglmdW5jdGlvbi4KCSogY3AtdHJlZS5oICh0c3Vic3RfY29weV9hbmRfYnVpbGQpOiBBZGp1c3QgcHJvdG90eXBlLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IEFkZCBpbnRlZ3JhbF9jb25zdGFudF9leHByZXNzaW9uX3AKCXBhcmFtZXRlci4KCShmb2xkX25vbl9kZXBlbmRlbnRfZXhwcik6IEFkanVzdCBjYWxsZXJzIG9mCgl0c3Vic3Rfe2V4cHIsY29weV9hbmRfYnVpbGR9LgoJKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSh0c3Vic3RfdGVtcGxhdGVfYXJnKTogTGlrZXdpc2UuCgkodHN1YnN0X2RlZmF1bHRfYXJndW1lbnQpOiBMaWtld2lzZS4KCSh0c3Vic3RfZGVjbCk6IExpa2V3aXNlLgoJKHRzdWJzdCk6IExpa2V3aXNlLgoJKHRzdWJzdF9vbXBfY2xhc3VzZXMpOiBMaWtld2lzZS4KCShyZWdlbmVyYXRlX2RlY2xfZnJvbXBfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgkodHN1YnN0X2luaXRpYWxpemVyX2xpc3QpOiBMaWtld2lzZS4KCSh0c3Vic3RfZW51bSk6IExpa2V3aXNlLgoJKHRzdWJzdF9leHByKTogVXNlIFJFQ1VSIHRocm91Z2hvdXQuCgkodHN1YnN0X2NvcHlfYW5kX2J1aWxkKTogQ2hhbmdlIGRlZmluaXRpb24gb2YgUkVDVVIuICBEbyBub3QgYWxsb3cKCWludmFsaWQgY2FzdHMgaW4gaW50ZWdyYWwgY29uc3RhbnQgZXhwcmVzc2lvbnMuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uKTogVXNlCgljYXN0X3ZhbGlkX2luX2ludGVncmFsX2NvbnN0YW50X2V4cHJlc3Npb25fcC4KCShjcF9wYXJzZXJfY2FzdF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2Z1bmN0aW9uYWxfY2FzdCk6IExpa2V3aXNlLgoKCVBSIGMrKy8yODM0NgoJKiBwdC5jICh0c3Vic3RfcXVhbGlmaWVkX2lkKTogRG8gbm90IHN0cmlwIHJlZmVyZW5jZXMgZnJvbQoJT0ZGU0VUX1JFRnMuIAoKMjAwNi0wOC0xNyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjg2MDYKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kaWFnbm9zZV9pbnZhbGlkX3R5cGVfbmFtZSk6IEhhbmRsZSBCSVRfTk9UX0VYUFIuCglGaXggZm9ybWF0dGluZy4KCShjcF9wYXJzZXJfcGFyc2VfYW5kX2RpYWdub3NlX2ludmFsaWRfdHlwZV9uYW1lKTogVGlnaHRlbiBjb25kaXRpb24KCWZvciB2YWxpZCB0eXBlLW5hbWVzLgoJKGNwX3BhcnNlcl91bnF1YWxpZmllZF9pZCk6IEZpeCBlcnJvciBoYW5kbGluZyBmb3IgZGVzdHJ1Y3RvcnMuCgoJUFIgYysrLzI4NzEwCgkqIGRlY2wuYyAoeHJlZl90YWcpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UuICBSZXR1cm4gZWFybHkgb24gZXJyb3IuCgoJUFIgYysrLzI4NzExCgkqIHB0LmMgKHRzdWJzdF9jb3B5X2FuZF9idWlsZCkgPGNhc2UgQ09OU1RSVUNUT1I+OiBSb2J1c3RpZnkuCgoyMDA2LTA4LTE3ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIGMrKy8yODU3MwoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29mZnNldG9mKTogQWRkIG5ldyBhcmd1bWVudCB0byBmb2xkX29mZnNldG9mLgoKMjAwNi0wOC0xNiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgYysrLzI4MzAyCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCA8Y2FzZSBCSVRfTk9UX0VYUFI6Pik6IERvbid0IGNhbGwKCXBlcmZvcm1faW50ZWdyYWxfcHJvbW90aW9ucyBmb3Igbm9uIGludGVncmFsIHR5cGUuCgoyMDA2LTA4LTE2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjgzODUKCSogcHQuYyAodHN1YnN0KSBbVEVNUExBVEVfVFlQRV9QQVJNXTogSWdub3JlIHF1YWxzIGZyb20gdGVtcGxhdGUKCWlmIGFyZyBpcyBhIGZ1bmN0aW9uLgoKMjAwNi0wOC0xNiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjg1OTMKCSogaW5pdC5jIChidWlsZF9uZXcpOiBSZXR1cm4gZWFybHkgb24gaW52YWxpZCBwbGFjZW1lbnQuCgoyMDA2LTA4LTE1ICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjg1OTQKCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogUm9idXN0aWZ5LgoJCjIwMDYtMDgtMTQgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCVBSIGMrKy8yODI4OAoJUFIgYysrLzE0NTU2CgkqIG9wZXJhdG9ycy5kZWY6IFJlbW92ZSA8PywgPz4sIDw/PSwgYW5kID4/PSBvcGVyYXRvcnMuCgkqIHBhcnNlci5jOiBSZW1vdmUgQ1BQX01JTiwgQ1BQX01BWCwgQ1BQX01JTl9FUSwgYW5kIENQUF9NQVhfRVEuCgkoY3BfcGFyc2VyX3dhcm5fbWluX21heCk6IFJlbW92ZS4KCjIwMDYtMDgtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yODU1OQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2VsYWJvcmF0ZWRfdHlwZV9zcGVjaWZpZXIpOiBBbHNvIGlnbm9yZQoJYXR0cmlidXRlcyBhcHBsaWVkIHRvIGEgVFlQRU5BTUVfVFlQRS4KCjIwMDYtMDgtMDkgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODYzNwoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBDb3B5IGFjcm9zcyB0aGUKCWludmFsaWQgdGVtcGxhdGUgYXJndW1lbnRzIHRvIHRoZSBuZXcgdGVtcGxhdGUgaW5uZXIgYXJndW1lbnRzLgoJKHJldHJpZXZlX3NwZWNpYWxpemF0aW9uKTogUm9idXN0aWZ5LgoKCVBSIGMrKy8yODYzOAoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfdGVtcGxhdGVfcGFybXMpOiBSb2J1c3RpZnkuCgoJUFIgYysrLzI4NjM5CgkqIGVycm9yLmMgKGR1bXBfdGVtcGxhdGVfcGFybXMpOiBSb2J1c3RpZnkuCgoJUFIgYysrLzI4NjQwCgkqIHB0LmMgKHJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZSk6IFJvYnVzdGlmeS4KCglQUiBjKysvMjg2NDEKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogUm9idXN0aWZ5LgoJCjIwMDYtMDgtMDMgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODM0NwoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIGlmIGEKCWRpYWdub3N0aWMgd2FzIGlzc2VkIGZvciBhbiBpbnZhbGlkIHR5cGVkZWYgaW5pdGlhbGl6YXRpb24uCgkKMjAwNi0wOC0wMyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjc1MDgKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl91bnF1YWxpZmllZF9pZCk6IENoZWNrIGZvciBpbnZhbGlkIHNjb3BlcwoJd2hlbiBwYXJzaW5nIGRlc3RydWN0b3IgbmFtZXMuCgoJUFIgYysrLzI4Mjc0CgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQ2FsbCBjaGVja19kZWZhdWx0X2FyZ3MgaGVyZS4KCShzdGFydF9wcmVwYXJzZWRfZnVuY3Rpb24pOiBEbyBub3QgY2FsbCBjaGVja19kZWZhdWx0X2FyZ3MuCgkqIG5hbWUtbG9va3VwLmMgKHB1c2hkZWNsX21heWJlX2ZyaWVuZCk6IE9ubHkgY2FsbAoJY2hlY2tfZGVmYXVsdF9hcmdzIGlmIGR1cGxpY2F0ZV9kZWNscyBnb3QgYnlwYXNzZWQuCgoyMDA2LTA4LTAyICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgYysrLzI4NDc5CglSZXZlcnQKCTIwMDYtMDctMDUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCUFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdjYy5nbnUub3JnPgoKCVBSIGMrKy8yNzA4NAoJKiBjcC1vYmpjcC1jb21tb24uYyAoY3h4X3R5cGVzX2NvbXBhdGlibGVfcCk6IElnbm9yZQoJdG9wIGxldmVsIHF1YWxpZmllcnMgZm9yIHBvaW50ZXIgdHlwZSBjb21wYXJpc29ucy4KCjIwMDYtMDgtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4NTU3CgkqIHB0LmMgKHRzdWJzdF9iYXNlbGluayk6IFN1YnN0aXR1dGUgaW50byBCQVNFTElOS19PUFRZUEUuCgoyMDA2LTA3LTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODUyMwoJKiB0cmVlLmMgKHN0YWJpbGl6ZV9leHByKTogVHdlYWsgZG9jdW1lbnRhdGlvbi4gIEFkZCBhc3NlcnRpb24uCgkoc3RhYmlsaXplX2NhbGwpOiBUd2VhayBkb2N1bWVudGF0aW9uLgoJKHN0YWJpbGl6ZV9pbml0KTogT25seSBjYWxsIHN0YWJpbGl6ZV9jYWxsIGZvciBjYWxscy4KCjIwMDYtMDgtMDEgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCVBSIGMrKy8yODQzMgoJKiBkZWNsMi5jIChjaGVja19jbGFzc2ZuKTogUmVtb3ZlIGVhcmx5IHJldHVybi4KCSogc2VhcmNoLmMgKGxvb2t1cF9tZW1iZXIpOiBSZXR1cm4gTlVMTCB3aXRoIGJhZCB0eXBlLgoKMjAwNi0wOC0wMSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgYysrLzI4MjU2CgkqIGRlY2wuYyAoY2hlY2tfaW5pdGlhbGl6ZXIpOiBDaGVjayBmb3IgMSBpbml0aWFsaXplciBvbiBzY2FsYXIgdHlwZXMuCgoyMDA2LTA4LTAxICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGRlYnVnLzIzMzM2CgkqIHB0LmMgKHRzdWJzdF9jb3B5X2FuZF9idWlsZCk6IE1hcmsgdXNlZCBlbnVtIHR5cGVzLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2lkX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCjIwMDYtMDctMzEgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzY2MzQKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENoZWNrIHdoZXRoZXIgImxvbmciIG9yICJzaG9ydCIgd2FzCglzcGVjaWZpZWQgZm9yIG5vbi1pbnRlZ3JhbCB0eXBlcy4KCjIwMDYtMDctMjggIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBNYWtlLWxhbmcuaW46IFVzZSAkKEhFQURFUl9IKSBpbnN0ZWFkIG9mIGhlYWRlci5oIGluIGRlcGVuZGVuY2llcy4KCjIwMDYtMDctMjggIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzY2OAoJUFIgYysrLzI3OTYyCgkqIHB0LmMgKHByb2Nlc3NfdGVtcGxhdGVfcGFybSkgU3RvcmUgaW52YWxpZCB0ZW1wbGF0ZQoJcGFyYW1ldGVycyBhcyBlcnJvcl9tYXJrX25vZGUgaW4gdGhlIHBhcmFtYXRlciBsaXN0LgoJKHB1c2hfaW5saW5lX3RlbXBsYXRlX3Bhcm1zX3JlY3Vyc2l2ZSk6IEhhbmRsZSBpbnZhbGlkCgl0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKGNvbXBfdGVtcGxhdGVfcGFybXMpOiBMaWtld2lzZS4KCShjaGVja19kZWZhdWx0X3RtcGxfYXJnKTogTGlrZXdpc2UuCgkoY29lcmNlX3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm1zKTogTGlrZXdpc2UuCgkobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkodHN1YnN0X3RlbXBsYXRlX3Bhcm1zKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfdGVtcGxhdGVfYXJndW1lbnRfbGlzdCk6IExpa2V3aXNlLgoJCjIwMDYtMDctMjggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA2LTA3LTI0ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNzU3MgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBhZnRlciBpbnZhbGlkCgl0eXBlZGVmLgoKMjAwNi0wNy0yMyAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjg0NjAKCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IFVzZSBGUk9CX0NPTlRFWFQuCgkqIHB0LmMgKHJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgoyMDA2LTA3LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODAyNQoJKiBjcC10cmVlLmggKExPT0tVUF9ISURERU4pOiBOZXcgbWFjcm8uICBSZWZvcm1hdCBjb21tZW50cy4KCSogbmFtZS1sb29rdXAuYyAodW5xdWFsaWZpZWRfbmFtZXNwYWNlX2xvb2t1cCk6IFRoZXJlIGlzIG5vIHdheSB0bwoJaGF2ZSBhIGhpZGRlbiBuYW1lIGluIG5vbi1uYW1lc3BhY2Ugc2NvcGVzLgoJKiBwdC5jICh0c3Vic3RfZnJpZW5kX2NsYXNzKTogTG9vayBmb3IgaGlkZGVuIG5hbWVzLgoJKiBkZWNsLmMgKGxvb2t1cF9hbmRfY2hlY2tfdGFnKTogRml4IHR5cG8gaW4gY29tbWVudC4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfY29tcG91bmRfbGl0ZXJhbCk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoyMDA2LTA3LTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGRlY2wyLmMgKGRldGVybWluZV92aXNpYmlsaXR5KTogRG9uJ3QgcHJvcGFnYXRlIHZpc2liaWxpdHkgZnJvbQoJdHlwZSB0byBkZWNsLgoJKGNvbnN0cmFpbl9jbGFzc192aXNpYmlsaXR5KTogRG9uJ3Qgd2FybiBpbiBzeXN0ZW0gaGVhZGVycy4KCURvbid0IHdhcm4gYWJvdXQgcG9pbnRlciBmaWVsZHMuCgoyMDA2LTA3LTIwICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGRlY2wyLmMgKGRldGVybWluZV92aXNpYmlsaXR5X2Zyb21fY2xhc3MpOiBEb24ndCB1c2UgaGlkZGVuCgl2aXNpYmlsaXR5IGZvciBleHBsaWNpdCBpbnN0YW50aWF0aW9ucy4KCjIwMDYtMDctMjEgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI4MjUwCgkqIHB0LmMgKHRzdWJzdF9leHByKTogT25seSBhcHBseSBERUNMX1RFTVBMQVRFX0lOU1RBTlRJQVRFRCB0bwoJdmFsaWQgZGVjbHMuICBDbGVhbnVwLgoKCVBSIGMrKy8yODM2MwoJKiBzZW1hbnRpY3MuYyAoY2hlY2tfdGVtcGxhdGVfdGVtcGxhdGVfZGVmYXVsdF9hcmcpOiBTaW1wbGlmeQoJZXJyb3IgaGFuZGxpbmcuCgoyMDA2LTA3LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjg0MDcKCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IFNldCBERUNMX1RISVNfU1RBVElDIG9uIGZpbGUtc2NvcGUKCWNvbnN0IHZhcmlhYmxlcyB3aXRoIGltcGxpY2l0IGludGVybmFsIGxpbmthZ2UuCgkqIHRyZWUuYyAoZGVjbF9saW5rYWdlKTogT25seSByZXR1cm4gbGtfZXh0ZXJuYWwgaWYgaXQncyBzZXQuCgoJUFIgYysrLzI4NDA5CgkqIGRlY2wyLmMgKGNvbnN0cmFpbl92aXNpYmlsaXR5KTogSWdub3JlIHRoZSBhbm9ueW1vdXMgbmFtZXNwYWNlIAoJZm9yIGV4dGVybiAiQyIgZGVjbHMuCgkoVklTSUJJTElUWV9TVEFUSUMpOiBSZW5hbWUgdG8gVklTSUJJTElUWV9BTk9OLgoKCSogZGVjbDIuYyAoY29uc3RyYWluX3Zpc2liaWxpdHkpOiBSZW1vdmUgc3BlY2lmaWVkIGFuZCByZWFzb24gCglwYXJhbWV0ZXJzLiAgRG9uJ3QgdG91Y2ggZGVjbHMgdGhhdCBhbHJlYWR5IGhhdmUgZXhwbGljaXQgdmlzaWJpbGl0eS4KCShkZXRlcm1pbmVfdmlzaWJpbGl0eSk6IERvIGNvcHkgREVDTF9WSVNJQklMSVRZX1NQRUNJRklFRCBmcm9tIAoJdGVtcGxhdGUuCgkoZGV0ZXJtaW5lX3Zpc2liaWxpdHlfZnJvbV9jbGFzcyk6IFJldmVyc2Ugc2Vuc2Ugb2YgCglERUNMX1ZJU0lCSUxJVFlfU1BFQ0lGSUVEIHRlc3QgZm9yIHRhcmdldC1zcGVjaWZpYyB2aXNpYmlsaXR5IHJ1bGVzLgoJKGNvbnN0cmFpbl9jbGFzc192aXNpYmlsaXR5KTogT25seSBjb21wbGFpbiBhYm91dCBtZW1iZXIgdmlzaWJpbGl0eQoJaWYgdGhlIG1lbWJlciB0eXBlIGlzIGFub3RoZXIgY2xhc3MuICBEb24ndCBjaGFuZ2UgdmlzaWJpbGl0eSBvZiB0aGUKCWN1cnJlbnQgY2xhc3MuCgoyMDA2LTA3LTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODMzOAoJKiBkZWNsLmMgKGxheW91dF92YXJfZGVjbCk6IERvbid0IGNhbGwgcHVzaF9sb2NhbF9uYW1lIGhlcmUuCgkoaW5pdGlhbGl6ZV9hcnRpZmljaWFsX3Zhcik6IEFzc2VydCBhcnRpZmljaWFsaXR5LgoJKGNwX2ZpbmlzaF9kZWNsKTogQ2FsbCBwdXNoX2xvY2FsX25hbWUgaGVyZS4KCjIwMDYtMDctMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4MzM3CgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBTaG9ydC1jaXJjdWl0IHBvaW50ZXIgYXJpdGhtZXRpYyBpbgoJdGVtcGxhdGVzLgoKMjAwNi0wNy0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjgwNDgKCSogc2VtYW50aWNzLmMgKGNoZWNrX2FjY2Vzc2liaWxpdHlfb2ZfcXVhbGlmaWVkX2lkKTogUm9idXN0aWZ5LgoKCVBSIGMrKy8yODIzNQoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IEhhbmRsaW5nIHN1YnN0aXR1dGlvbnMgaW50byBhIHN0YXRpYyBkYXRhCgltZW1iZXIgZnJvbSB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSB0ZW1wYWx0ZSBpdHNlbGYuCgoyMDA2LTA3LTE4ICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAZ21haWwuY29tPgoKCVBSIGMrKy8yODI1OAoJKiBtZXRob2QuYyAobG9jYXRlX2NvcHkpOiBDaGVjayBmb3Igbm9uX3JlZmVyZW5jZQoJcmV0dXJuaW5nIGVycm9yX21hcmtfbm9kZS4KCglQUiBjKysvMjgyNjAKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlCglvbiBhbWJpZ3VvdXMgZGVjbGFyYXRpb24uCgkKMjAwNi0wNy0xOCAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgYysrLzI3NDk1CgkqIHNlYXJjaC5jIChhZGp1c3RfcmVzdWx0X29mX3F1YWxpZmllZF9uYW1lX2xvb2t1cCk6IENoYW5nZQoJYXNzZXJ0IHRvIHBhcnQgb2YgaWYgc3RhdGVtZW50LgoKMjAwNi0wNy0xNyAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgYysrLzI4MjkxCgkqIGRlY2wuYyAocmVzaGFwZV9pbml0X2NsYXNzKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBvbiBlcnJvci4KCjIwMDYtMDctMTcgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCVBSIGMrKy8yODMwNAoJKiBkZWNsMi5jIChjaGVja19jbGFzc2ZuKTogUmV0dXJuIE5VTExfVFJFRSBvbiBlcnJvci4KCjIwMDYtMDctMTcgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI4MjUwCgkqIG5hbWUtbG9va3VwLmMgKHB1c2hkZWNsX21heWJlX2ZyaWVuZCk6IFJldHVybiBlYXJseSBvbgoJZXJyb3JfbWFya19ub2RlLgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogVXNlIGVycm9yX21hcmtfbm9kZSBpbnN0ZWFkCglvZiBOVUxMX1RSRUUgZm9yIGludmFsaWQgZGVjbHMuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZXhjZXB0aW9uX2RlY2xhcmF0aW9uKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZQoJb24gaW52YWxpZCBjYXRjaCBwYXJhbWV0ZXIuIFNpbXBsaWZ5LgoKMjAwNi0wNy0xNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzI4MzcwCgkqIGRlY2wyLmMgKG5vdGVfdmFndWVfbGlua2FnZV92YXIpOiBSZW1vdmVkLgoJKGZpbmlzaF9zdGF0aWNfZGF0YV9tZW1iZXJfZGVjbCk6IEFkZCBkZWNsIHRvIHBlbmRpbmdfc3RhdGljcyB2ZWN0b3IKCWRpcmVjdGx5LiAgRG8gaXQgZXZlbiBmb3Igbm9uLXB1YmxpYyBkZWNscy4KCjIwMDYtMDctMTUgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBnbWFpbC5jb20+CgoJUFIgYysrLzI4MjkyCgkqIGRlY2wyLmMgKGFjY2VwdGFibGVfamF2YV90eXBlKTogUm9idXN0aWZ5LiBVc2UKCXByb3BlciBCb29sZWFuIHJldHVybiB0eXBlIGluc3RlYWQgb2YgcmV0dXJuIDEuCgkoY2hlY2tfamF2YV9tZXRob2QpOiBEb24ndCBpc3N1ZSBlcnJvciBhYm91dAoJdHlwZSBub3QgYmVpbmcgYW4gYWNjZXB0YWJsZSBKYXZhIHBhcmFtZXRlciBpZiAKCWl0J3MgZXJyb3JfbWFya19ub2RlLgoJCglQUiBjKysvMjgyNjkKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyKToKCVJldHVybiBlYXJseSBpZiBhbiBpbnZhbGlkIHR5cGUgd2FzIGRldGVjdGVkLgoJCjIwMDYtMDctMTUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI4MjQ5CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfY2hlY2tfZGVjbF9zcGVjKTogTmV3IGZ1bmN0aW9uLgoJKGNwX3BhcnNlcl9kZWNsX3NwZWNpZmllcl9zZXEpOiBGYWN0b3Igb3V0IGNoZWNrIGZvciByZXBlYXRlZAoJZGVjbC1zcGVjaWZpZXJzIGludG8gY3BfcGFyc2VyX2NoZWNrX2RlY2xfc3BlYy4gVXNlIGl0LgoJKGNwX3BhcnNlcl90eXBlX3NwZWNpZmllcl9zZXEpOiBVc2UgaXQuCgoJUFIgYysrLzI4Mjk0CgkqIHNlbWFudGljcy5jIChmaW5pc2hfb2Zmc2V0b2YpOiBVc2UgVFJFRV9PUEVSQU5EIGZvciBDT01QT05FTlRfUkVGcwoJb25seS4KCglQUiBjKysvMjgzODcKCSogZGVjbDIuYyAoY3BsdXNfZGVjbF9hdHRyaWJ1dGVzKTogQ2hlY2sgZm9yIGludmFsaWQgZGVjbHMuCgoyMDA2LTA3LTE0ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yODM0MwoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogQ2hlY2sgYXNtc3BlY190cmVlIGZvciBlcnJvcl9tYXJrX25vZGUuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoKMjAwNi0wNy0xMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkZWNsMi5jIChkZXRlcm1pbmVfdmlzaWJpbGl0eSk6IERvbid0IGNoYW5nZSB2aXNpYmlsaXR5IG9mCglmdW5jdGlvbiBsb2NhbHMgYmVjYXVzZSBvZiAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4uCgoyMDA2LTA3LTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjgyMTcKCSogc2VtYW50aWNzLmMgKG5vdGVfZGVjbF9mb3JfcGNoKTogRG9uJ3QgcHJlbWFuZ2xlIHRlbXBsYXRlcy4KCjIwMDYtMDctMTIgIE1hcnRpbiBNaWNobG1heXIgIDx0Ym1AY3lyaXVzLmNvbT4KCgkqIHR5cGVjay5jIChzdHJpbmdfY29udl9wKTogUmVtb3ZlIHNwdXJpb3VzIHF1b3RhdGlvbiBtYXJrIGluCgl3YXJuaW5nLgoKMjAwNi0wNy0wNyAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGdtYWlsLmNvbT4KCSAgICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnbWFpbC5jb20+CgoJUFIgYysrLzI3ODIwCgkqIGRlY2wuYyAoZGVmaW5lX2xhYmVsKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBvbiBlcnJvci4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9sYWJlbF9zdG10KTogRG9uJ3QgY2FsbAoJYWRkX3N0bXQgZm9yIGludmFsaWQgbGFiZWxzLgoJCjIwMDYtMDctMDYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yODI3OQoJKiBkZWNsMi5jIChmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wpOiBEb24ndCBhc3NlcnQKCVRSRUVfUFVCTElDLgoKMjAwNi0wNy0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzEzOTgzCglQUiBjKysvMTc1MTkKCSogY2xhc3MuYyAoY2hlY2tfZmllbGRfZGVjbHMpOiBDaGVjayBUWVBFX1BBQ0tFRCBhZnRlcgoJc3RyaXBwaW5nIGFycmF5IHR5cGVzLgoJKGZpbmlzaF9zdHJ1Y3RfYml0cyk6IERvbid0IGNvcHkgVFlQRV9TSVpFIGhlcmUuCgoJUFIgYysrLzE4NjgxCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBGaXggRFIgNDUgaW1wbGVtZW50YXRpb24uCgoyMDA2LTA3LTA1ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CglBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnY2MuZ251Lm9yZz4KCglQUiBjKysvMjcwODQKCSogY3Atb2JqY3AtY29tbW9uLmMgKGN4eF90eXBlc19jb21wYXRpYmxlX3ApOiBJZ25vcmUKCXRvcCBsZXZlbCBxdWFsaWZpZXJzIGZvciBwb2ludGVyIHR5cGUgY29tcGFyaXNvbnMuCgoyMDA2LTA3LTAxICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjgyMTUKCSogbWV0aG9kLmMgKG1ha2VfdGh1bmspOiBVbnNldCBERUNMX1VTRV9URU1QTEFURSBhbmQgCglERUNMX1RFTVBMQVRFX0lORk8uCgoyMDA2LTA2LTMwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjY1NzcKCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBGb3JjZSBldmFsdWF0aW9uIG9mIHRoZSAKCWluc3RhbmNlIHBvaW50ZXIsIG5vdCB0aGUgb2JqZWN0LgoKMjAwNi0wNi0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA2LTA2LTMwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMTg2OTgKCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogT25seSB0cnkgdG8gdHJlYXQgdGhlIGRlY2wgYXMgYW4gYWNjZXNzIAoJZGVjbGFyYXRpb24gaWYgdGhlIHNjb3BlIGlzIGEgY2xhc3MuCgoyMDA2LTA2LTI5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjY5MDUKCVBSIGMrKy8yNjYxMgoJUFIgYysrLzI3MDAwCglQUiBjKysvMjY5ODQKCVBSIGMrKy8xOTEzNAoJKiBkZWNsMi5jIChkZXRlcm1pbmVfdmlzaWJpbGl0eSk6IE92ZXJoYXVsLgoJKGRldGVybWluZV92aXNpYmlsaXR5X2Zyb21fY2xhc3MpOiBMaWtld2lzZS4KCShtaW5fdmlzX3IsIHR5cGVfdmlzaWJpbGl0eSwgY29uc3RyYWluX3Zpc2liaWxpdHkpOiBOZXcgZm5zLgoJKGNvbnN0cmFpbl92aXNpYmlsaXR5X2Zvcl90ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKGNvbnN0cmFpbl9jbGFzc192aXNpYmlsaXR5KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBDYWxsIGRldGVybWluZV92aXNpYmlsaXR5IGZvciBmdW5jdGlvbgoJZGVjbHMsIHRvby4KCSogbmFtZS1sb29rdXAuYyAocHVzaHRhZyk6IENhbGwgZGV0ZXJtaW5lX3Zpc2liaWxpdHkuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3QgY29weSB2aXNpYmlsaXR5IGZyb20gdGVtcGxhdGUgdG8KCXNwZWNpYWxpemF0aW9uLgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcywgdHN1YnN0X2RlY2wpOiBDYWxsIGRldGVybWluZV92aXNpYmlsaXR5LgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBDYWxsIGNvbnN0cmFpbl9jbGFzc192aXNpYmlsaXR5LgoKCVBSIGMrKy8yNjkwNQoJUFIgYysrLzIxNjc1CglQUiBjKysvMTc0NzAKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9leHBsaWNpdF9pbnN0YW50aWF0aW9uKTogUGFzcyB0aGUgYXR0cmlidXRlcwoJdG8gZ3Jva2RlY2xhcmF0b3IuCgkoY3BfcGFyc2VyX3R5cGVfc3BlY2lmaWVyKTogQWxsb3cgJ2VudW0gX19hdHRyaWJ1dGUgKCguLi4pKSBFJy4KCShjcF9wYXJzZXJfZW51bV9zcGVjaWZpZXIpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfZWxhYm9yYXRlZF90eXBlX3NwZWNpZmllcik6IEFwcGx5IGF0dHJpYnV0ZXMgaWYgdGhpcwoJZGVjbGFyZXMgb25seSB0aGUgY2xhc3MuCgkoY3BfcGFyc2VyX2NsYXNzX3NwZWNpZmllcik6IEFwcGx5IGxlYWRpbmcgYXR0cmlidXRlcyBpbW1lZGlhdGVseS4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBBZGQgYXR0cmlidXRlcyBwYXJhbWV0ZXIsCglhcHBseSB0aGVtIHRvIHRoZSB0eXBlLgoKCVBSIGMrKy8yMTU4MQoJUFIgYysrLzI1OTE1CgkqIHRyZWUuYyAoZGVjbF9hbm9uX25zX21lbV9wKTogTmV3IGZ1bmN0aW9uLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgaXQuCgkqIGRlY2wyLmMgKGRldGVybWluZV92aXNpYmlsaXR5KTogTWFrZSBhbm9ueW1vdXMgbmFtZXNwYWNlCgltZW1iZXJzIHN0YXRpYy4KCShtaW5fdmlzX3IsIGNvbnN0cmFpbl92aXNpYmlsaXR5KTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoY3JlYXRlX3BzZXVkb190eXBlX2luZm8pOiBTZXQgVFJFRV9QVUJMSUMgb24KCXBzZXVkby10eXBlcy4KCSogZGVjbC5jIChjeHhfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTZXQgVFJFRV9QVUJMSUMgb24KCWdsb2JhbF9uYW1lc3BhY2UuCgkqIG5hbWUtbG9va3VwLmMgKHB1c2hfbmFtZXNwYWNlX3dpdGhfYXR0cmlicyk6IERvbid0IHNldCBUUkVFX1BVQkxJQwoJb24gYW5vbnltb3VzIG5hbWVzcGFjZXMuCgoyMDA2LTA2LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjc0MjQKCSogcHQuYyAoY29udmVydF90ZW1wbGF0ZV9hcmd1bWVudCk6IFBhc3MgYWxsIHRlbXBsYXRlIGFyZ3VtZW50cyAKCW9uIHRvIGNvZXJjZV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtcy4KCjIwMDYtMDYtMjUgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBnbWFpbC5jb20+CgkgICAgTWFyayBNaXRjaGVsbCA8bWFya0Bjb2Rlc3VvcmNlcnkuY29tPgoKCVBSIGMrKy8yODA1NAoJKiBkZWNsMi5jIChncm9rYml0ZmllZCk6IFJlbW92ZSBjaGVjayBmb3IgZ3Jva2RlY2xhcmF0b3IKCXJldHVybmluZyBOVUxMX1RSRUUsIGluc3RlYWQgY2hlY2sgZm9yIGVycm9yX21hcmtfbm9kZQoJdG8gaW5kaWNhdGUgZmFpbHVyZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFkanVzdCBibG9jayBjb21tZW50LgoKMjAwNi0wNi0yNSAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGdtYWlsLmNvbT4KCglQUiBjKysvMjgwNTEKCSogbWFuZ2xlLmMgKG1hbmdsZV9jb252X29wX25hbWVfZm9yX3R5cGUpOiBDaGVjayBmb3IKCWludmFsaWQgdHlwZXMuCgkqIG5hbWUtbG9va3VwLmMgKHB1c2hfY2xhc3NfbGV2ZWxfYmluZGluZyk6IFJvYnVzdGlmeS4KCShkb19jbGFzc191c2luZ19kZWNsKTogUmV0dXJuIGVhcmx5IGlmIG5hbWUgaXMgZXJyb3JfbWFya19ub2RlLgoKMjAwNi0wNi0yMyAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgYysrLzI4MTE0CgkqIG5hbWUtbG9va3VwLmMgKHB1c2h0YWcpOiBSZXR1cm4gaWYgd2UgaGF2ZSBlcnJvcl9tYXJrX25vZGUuCgoyMDA2LTA2LTIzICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCglQUiBjKysvMjcwMTkKCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3JfYXJyYXkpOiBTZXQgY2UtPnZhbHVlIG9uIGVycm9ycy4KCjIwMDYtMDYtMjMgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI4MTEyCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfYXR0cmlidXRlX2xpc3QpOiBTa2lwIGF0dHJpYnV0ZXMgd2l0aCBpbnZhbGlkCglhcmd1bWVudHMuICBGaXggY29tbWVudC4KCglQUiBjKysvMTE0NjgKCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IEhhbmRsZSBlcnJvcl9tYXJrX25vZGVzIHJldHVybmVkIGJ5CglidWlsZF9qYXZhX2NsYXNzX3JlZi4KCShidWlsZF9qYXZhX2NsYXNzX3JlZik6IERvIG5vdCBhYm9ydCBjb21waWxhdGlvbiwgYnV0IHJldHVybgoJZXJyb3JfbWFya19ub2RlLiAgSW1wcm92ZSBlcnJvciBtZXNzYWdlLiAgRml4IGluZGVudGF0aW9uLgoKMjAwNi0wNi0yMyAgRGFubnkgU21pdGggICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgdGFyZ2V0LzI3Nzg5CgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IENoZWNrIHRoYXQgZGxsaW1wb3J0cyBhcmUgbm90IGluaXRpYWxpemVkLgoKMjAwNi0wNi0yMiAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGdtYWlsLmNvbT4KCglQUiBjKysvMjc4MDUKCSogdHlwZWNrMi5jIChidWlsZF9tX2NvbXBvbmVudF9yZWYpOiBVc2UgZXJyb3Jfb3BlcmFuZF9wLgoKCVBSIGMrKy8yNzgyMQoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBvbgoJaW52YWxpZCB1c2VzIG9mIHRoZSBzY29wZSByZXNvbHV0aW9uIG9wZXJhdG9yLgoKMjAwNi0wNi0yMiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjgxMTEKCSogcHQuYyAoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogQ2hlY2sgZm9yIGludmFsaWQgZGVjbHMuCgoJUFIgYysrLzI4MTEwCgkqIHB0LmMgKHVuaWZ5KSA8Y2FzZSBURU1QTEFURV9QQVJNX0lOREVYPjogQ2hlY2sgZm9yIGludmFsaWQKCXBhcmFtZXRlcnMuCgoJUFIgYysrLzI4MTA5CgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2RlY2xfZHluYW1pYyk6IFJvYnVzdGlmeS4KCjIwMDYtMDYtMjAgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI4MDUyCgkqIGluaXQuYyAocHVzaF9iYXNlX2NsZWFudXBzKTogU2tpcCBtZW1iZXJzIHdpdGggaW52YWxpZCB0eXBlcy4KCSogdHlwZWNrLmMgKGJ1aWxkX2NsYXNzX21lbWJlcl9hY2Nlc3NfZXhwcik6IFJvYnVzdGlmeS4KCjIwMDYtMDYtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoyMDA2LTA2LTE5ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBwYXJzZXIuYyAoQ1BfTEVYRVJfQlVGRkVSX1NJWkUpOiBBZGp1c3QgdG8gYXNzdXJlIG5lYXIKCXBvd2VyLW9mLXR3byB0b2tlbiB2ZWN0b3Igc2l6ZS4KCjIwMDYtMDYtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4MDE2CgkqIGRlY2wuYyAoY3BfZmluc2hfZGVjbCk6IERvIG5vdCBlbWl0IHVuaW5zdGFudGlhdGVkIHN0YXRpYyBkYXRhCgltZW1iZXJzLgoKCVBSIGMrKy8yNzk3OQoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBTdHJpcCBjdi1xdWFsaWZpZXJzIGZyb20gYml0ZmllbGQKCXR5cGVzLgoKCVBSIGMrKy8yNzg4NAoJKiBkZWNsLmMgKGhhdmVfZXh0ZXJuX3NwZWMpOiBSZW1vdmUuCgkoc3RhcnRfZGVjbCk6IERvIG5vdCBjaGVjayBoYXZlX2V4dGVybl9zcGVjLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoaGF2ZV9leHRlcm5fc3BlYyk6IFJlbW92ZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9saW5rYWdlX3NwZWNpZmljYXRpb24pOiBEb24ndCBzZXQKCWhhdmVfZXh0ZXJuX3NwZWMuCgkoY3BfcGFyc2VyX2luaXRfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9wYXJhbWV0ZXJfZGVjbGFyYXRpb24pOiBEbyBub3QgdHJlYXQgcGFyYW1ldGVycyBhcwoJd2l0aGluIHRoZSBzY29wZSBvZiBhbiB1bmJyYWNlZCBsaW5rYWdlIHNwZWNpZmljYXRpb24uCgoyMDA2LTA2LTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzY4OQoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9TUEVDSUFMSVpBVElPTl9PRl9QUklNQVJZX1RFTVBMQVRFX1ApOiBOZXcKCW1hY3JvLgoJKiBwdC5jICh1bmlmeSk6IFVzZSBpdC4KCglQUiBjKysvMjc2NjYKCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogUm9idXN0aWZ5LgoKCVBSIGMrKy8yNzY0MAoJKiBwdC5jIChpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IFNldCBwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wgdG8KCXplcm8gd2hpbGUgcGVyZm9ybWluZyBzdWJzdGl0dXRpb25zLgoKMjAwNi0wNi0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjc2NjUKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl91bnF1YWxpZmllZF9pZCk6IFVzZSBjb25zdHJ1Y3Rvcl9uYW1lX3AgdG8KCWlkZW50aWZ5IGRlc3RydWN0b3JzLgoJKGNwX3BhcnNlcl9uZXN0ZWRfbmFtZV9zcGVjaWZpZXJfb3B0KTogUmVtb3ZlIGludmFsaWQKCW9wdGltaXphdGlvbi4KCShjcF9wYXJzZXJfdGVtcGxhdGVfaWQpOiBSZWZpbmUgaGV1cmlzdGljIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyCgl3ZSBhcmUgZW50ZXJpbmcgYSBzY29wZS4KCglQUiBjKysvMjc2NDgKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kZWNsYXJhdG9yKTogUm9idXN0aWZ5LgoKCVBSIGMrKy8yNjU1OQoJKiBwdC5jICh0c3Vic3RfZXhwcik6IFVzZSBmaW5pc2hfb21wX2F0b21pYy4KCSh2YWx1ZV9kZXBlbmRlbnRfZXhwcmVzc2lvbl9wKTogQWxsIENBTExfRVhQUnMgYXJlIGRlcGVuZGVudC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfYXRvbWljKTogUmV3b3JrIHRvIHVzZSBzdGFuZGFyZAoJcGFyYWRpZ21zIGZvciBoYW5kbGluZyBub24tZGVwZW5kZW50IGV4cHJlc3Npb25zLgoKMjAwNi0wNi0xNCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIpOiBUaWR5IGRpYWdub3N0aWMgbWVzc2FnZS4KCjIwMDYtMDYtMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4MDE4CgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IERpc2FsbG93IGFycmF5IGFzc2lnbm1lbnQuCgoyMDA2LTA2LTE0ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGNwLXRyZWUuZGVmOiBGaXggdHlwby4KCjIwMDYtMDYtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI3MjI3CgkqIGRlY2wuYyAoZGVjbHNfbWF0Y2gpOiBBbGxvdyBhbiBleHRlcm4gIkMiIHZhcmlhYmxlIGRlY2xhcmF0aW9ucwoJZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyB0byBtYXRjaC4KCShkdXBsaWNhdGVfZGVjbHMpOiBEaXNhbGxvdyByZWRlY2xhcmluZyBhIHZhcmlhYmxlIHdpdGggYQoJZGlmZmVyZW50IGxpbmthZ2Ugc3BlY2lmaWNhdGlvbi4KCjIwMDYtMDYtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjc3OTMKCSogY3AtdHJlZS5oIChjeHhfaW50X3RyZWVfbWFwKTogTmV3IHN0cnVjdC4KCShzdHJ1Y3QgbGFuZ3VhZ2VfZnVuY3Rpb24pOiBBZGQgZXh0ZXJuX2RlY2xfbWFwIGZpZWxkLgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoZGVjbF9tYXliZV9mcmllbmQpOiBBZGQgeCAtPiB0IG1hcHBpbmcKCXRvIGNwX2Z1bmN0aW9uX2NoYWluLT5leHRlcm5fZGVjbF9tYXAgaGFzaCB0YWJsZSBpbnN0ZWFkIG9mCgljb3B5aW5nIG92ZXIgREVDTF9VSUQuCgkqIGNwLWdpbXBsaWZ5LmMgKGN4eF9pbnRfdHJlZV9tYXBfZXEsIGN4eF9pbnRfdHJlZV9tYXBfaGFzaCk6IE5ldwoJZnVuY3Rpb25zLgoJKGNwX2dlbmVyaWNpemVfcik6IFJlbWFwIERFQ0xfRVhURVJOIGxvY2FsIGRlY2xzIHVzaW5nCgljcF9mdW5jdGlvbl9jaGFpbi0+ZXh0ZXJuX2RlY2xfbWFwIGhhc2ggdGFibGUuCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogQ2xlYXIgZXh0ZXJuX2RlY2xfbWFwLgoKMjAwNi0wNi0xMiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjc2MDEKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vZmZzZXRvZik6IEhhbmRsZSBwc2V1ZG8tZGVzdHJ1Y3RvcnMuCgoJUFIgYysrLzI3OTMzCgkqIG5hbWUtbG9va3VwLmMgKGxvb2t1cF9xdWFsaWZpZWRfbmFtZSk6IEFsd2F5cyByZXR1cm4gZXJyb3JfbWFya19ub2RlCglpZiBsb29rdXAgZmFpbHMuCgoJUFIgYysrLzI3OTUxCgkqIGRlY2wyLmMgKGZpbmlzaF9hbm9uX3VuaW9uKTogUmV0dXJuIGVhcmx5IGlmIGJ1aWxkX2Fub25fdW5pb25fdmFycwoJZmFpbHMuCgoyMDA2LTA2LTEyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBjKysvMjEyMTAKCSogdHlwZWNrMi5jIChidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBVc2UgY3BfY29udmVydCB0byBjb25zdHJ1Y3QKCW5vbi1hZ2dyZWdhdGUgaW5pdGlhbGl6ZXJzIGluc3RlYWQgb2YgdGhlIHVzZXItbGV2ZWwgYnVpbGRfY19jYXN0LgoKMjAwNi0wNi0wNyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjc2MDEKCSogY3AtdHJlZS5oIChmaW5pc2hfb2Zmc2V0b2YpOiBBZGQgcHJvdG90eXBlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29mZnNldG9mKTogTmV3IGZ1bmN0aW9uLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2J1aWx0aW5fb2Zmc2V0b2YpOiBDYWxsIGl0IGluc3RlYWQgb2YKCWZvbGRfb2Zmc2V0b2YuCgkqIHB0LmMgKHRzdWJzdF9jb3B5X2FuZF9idWlsZCk6IExpa2V3aXNlLgoKMjAwNi0wNi0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjcxNzcKCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogUmVxdWlyZSB0aGF0IHRoZSBkZXJpdmVkIHR5cGUgYmUKCWNvbXBsZXRlIHdoZW4gcGVyZm9ybWluZyBhIGRlcml2ZWQtdG8tYmFzZSBjb252ZXJzaW9uLgoKMjAwNi0wNi0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjc4MTkKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IFByb2Nlc3MgaW5pdGlhbGl6ZXJzIGZvciBzdGF0aWMgZGF0YQoJbWVtYmVycyB3aXRoIG5vbi1kZXBlbmRlbnQgaW5pdGlhbGl6ZXJzLCBldmVuIGluIHRlbXBsYXRlcy4KCglQUiBjKysvMjc3MjIKCSogZGVjbC5jIChtYXliZV9kZWR1Y2Vfc2l6ZV9mcm9tX2FycmF5X2luaXQpOiBJZiB0aGUgZGVjbGFyYXRpb24KCWlzIGVycm9uZW91cywgZ2l2ZSBpdCBhbiBlcnJvbmVvdXMgdHlwZS4KCShsYXlvdXRfdmFyX2RlY2wpOiBJZiB0aGUgdHlwZSBpcyBlcnJvbmVvdXMsIGdpdmUgdXAuCgkoY2hlY2tfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCglQUiBjKysvMjc4MDcKCSogY3AtdHJlZS5oIChUWVBFX09CSl9QKTogTmV3IG1hY3JvLgoJKFRZUEVfUFRST0JfUCk6IFVzZSBpdC4KCShUWVBFX1JFRl9PQkpfUCk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NvbXBvdW5kX2xpdGVyYWwpOiBEbyBub3QgcGVybWl0IGNvbXBvdW5kCglsaXRlcmFscyBvZiBub24tb2JqZWN0IHR5cGVzLgoKCVBSIGMrKy8yNzgwNgoJKiB0eXBlY2suYyAob3JpZ2luYWxfdHlwZSk6IFJvYnVzdGlmeS4KCjIwMDYtMDYtMDUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI3ODA0CgkqIGluaXQuYyAoY29uc3RhbnRfdmFsdWVfMSk6IFJldHVybiBkZWNsIGluc3RlYWQgb2YgZXJyb3JfbWFya19ub2RlCglmb3IgaW52YWxpZCBpbml0aWFsaXplcnMuCgoyMDA2LTA2LTAxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBjKysvMjc1OTIKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3RfMSk6IENhbGwgY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uCglvbiBvcGVyYW5kIG9mIHRoZSBDT05EX0VYUFIgZm9yIHRoZSBudWxsIHBvaW50ZXIgY2hlY2suCgoyMDA2LTA2LTAxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBjKysvMjY3NDAKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogTWFyayB0aGUgZnVuY3Rpb24gYXMgYmVpbmcgdXNlZC4KCjIwMDYtMDYtMDEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIGMrKy8yNjY2MAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2luaXRpYWxfcHJhZ21hKTogUmVhZCBvbmUgbW9yZSB0b2tlbiBmb3IKCWNhbGxlciBhZnRlciByZWFkaW5nIFBDSCBmaWxlIGluLgoKMjAwNi0wNS0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjc4MDEKCSogY2FsbC5jIChwZXJmb3JtX2ltcGxpY2l0X2NvbnZlcnNpb24pOiBEbyBub3QgYWN0dWFsbHkgcGVyZm9ybQoJY29udmVyc2lvbnMgaW4gdGVtcGxhdGVzLgoKCVBSIGMrKy8yNjQ5NgoJKiBjYWxsLmMgKHJlc29sdmVfYXJncyk6IENoZWNrIGZvciBpbnZhbGlkIHVzZXMgb2YgYm91bmQKCW5vbi1zdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucy4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBmb3IgZXJyb3JzLgoKCVBSIGMrKy8yNzM4NQoJKiBkZWNsLmMgKHJlc2hhcGVfaW5pdCk6IFJvYnVzdGlmeS4KCShyZXNoYXBlX2luaXRfYXJyYXlfMSk6IExpa2V3aXNlLgoKMjAwNi0wNS0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjc4MDgKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kZWNsX3NwZWNpZmllcl9zZXEpOiBJc3N1ZSBlcnJvcnMgYWJvdXQKCSJmcmllbmQiIHNwZWNpZmllcnMgdGhhdCBkbyBub3QgYXBwZWFyIGluIGNsYXNzIHNjb3Blcy4KCglQUiBjKysvMjc4MDMKCSogY2xhc3MuYyAoY2hlY2tfYml0ZmllbGRfZGVjbCk6IEVuc3VyZSB0aGF0IGFsbCBiaXRmaWVsZHMgaGF2ZQoJaW50ZWdyYWwgdHlwZS4KCjIwMDYtMDUtMjkgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogRml4IGEgdHlwbyBpbiBhbiBlcnJvcgoJbWVzc2FnZS4KCjIwMDYtMDUtMjggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jLCBkZWNsMi5jLCBwYXJzZXIuYzogRml4IGNvbW1lbnQgdHlwb3MuICBGb2xsb3cKCXNwZWxsaW5nIGNvbnZlbnRpb25zLgoKMjAwNi0wNS0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjAxMDMKCSogZGVjbC5jIChjcF9tYWtlX2ZuYW1lX2RlY2wpOiBEb24ndCBzZXQgREVDTF9JTklUSUFMIHRvCgllcnJvcl9tYXJrX25vZGUgdG8gaW5kaWNhdGUgYW4gaW5pdGlhbGl6YXRpb24gaXMgT0suCgkoc3RhcnRfZGVjbCk6IExpa2V3aXNlLiAgQWRqdXN0IGNhbGwgdG8gc3RhcnRfZGVjbF8xLgoJKHN0YXJ0X2RlY2xfMSk6IEFkZCBpbml0aWFsaXplZCBwYXJhbWV0ZXIuICBTaW1wbGlmeS4KCSogZXhjZXB0LmMgKGluaXRpYWxpemVfaGFuZGxlcl9wYXJtKTogQWRqdXN0IGNhbGwgdG8KCXNldGFydF9kZWNsXzEuCgkoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogTGV0IGNwX2ZpbmlzaF9kZWNsIGluaXRpYWxpemUgY2F0Y2gKCXBhcmFtZXRlcnMuCgkqIGNwLXRyZWUuaCAoc3RhcnRfZGVjbF8xKTogQWRqdXN0IHByb3RvdHlwZS4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBEb24ndCBzZXQgREVDTF9JTklUSUFMIHRvIGVycm9yX21hcmtfbm9kZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogTGV0IGNwX2ZpbmlzaF9kZWNsIGhhbmRsZSBpbml0aWFsaXphdGlvbi4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jb21wb3VuZF9saXRlcmFsKTogQ3JlYXRlIGEgdGVtcG9yYXJ5Cgl2YXJpYWJsZSBmb3IgdGhlIGxpdGVyYWwuCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IFJlbW92ZSBDT01QT1VORF9MSVRFUkFMX1Agc3BlY2lhbAoJY2FzZXMuCgkqIGRlY2wyLmMgKGZpbmlzaF9zdGF0aWNfZGF0YV9tZW1iZXJfZGVjbCk6IERvbid0IHNldAoJREVDTF9JTklUSUFMLgoJKGdyb2tmaWVsZCk6IERvIG5vdCB0cnkgdG8gaW5pdGlhbGl6ZSBmdW5jdGlvbnMuCgoyMDA2LTA1LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDE3MwoJKiBwdC5jIChkZXRlcm1pbmVfc3BlY2lhbGl6YXRpb24pOiBEaXNhbGxvdyBwYXJ0aWFsCglzcGVjaWFsaXphdGlvbnMgb2YgdGVtcGxhdGVzLgoKMjAwNi0wNS0yMiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjc3MTYKCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogVGVzdCBhcmd1bWVudHMgZm9yIGVycm9yX29wZXJhbmRfcC4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIGluc3RlYWQgb2YgTlVMTF9UUkVFLgoKMjAwNi0wNS0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjcyMTAKCSogY3AtdHJlZS5oIChjcF9zYXZlX2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogQ29ycmVjdCBsb2dpYyBmb3IgemVyby1lbGVtZW50IGFycmF5Cgl3YXJuaW5nLiAgVXNlIGNwX3NhdmVfZXhwci4KCSogdHJlZS5jIChjcF9zYXZlX2V4cHIpOiBOZXcgZnVuY3Rpb24uCgoyMDA2LTA1LTIxICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNzM5OAoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBpbnN0ZWFkIG9mIE5VTExfVFJFRQoJb3Igdm9pZF90eXBlX25vZGUuCgoyMDA2LTA1LTE5ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIHR5cGVjay5jIChkZWZhdWx0X2NvbnZlcnNpb24pOiBSZW1vdmUgc3RhdGljLgoKMjAwNi0wNS0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjY0MzMKCSogY3AtdHJlZS5oIChiZWdpbl9mdW5jdGlvbl90cnlfYmxvY2spOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGZpbmlzaF9mdW5jdGlvbl9oYW5kbGVyX3NlcXVlbmNlKTogTGlrZXdpc2UuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZnVuY3Rpb25fdHJ5X2Jsb2NrKTogQWRqdXN0IGNhbGxzLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IEFkanVzdCBjYWxscy4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2Z1bmN0aW9uX3RyeV9ibG9jayk6IENyZWF0ZSBhbiBhcnRpZmljaWFsCglvdXRlciBzY29wZS4KCShmaW5pc2hfZnVuY3Rpb25faGFuZGxlcl9zZXF1ZW5jZSk6IENsb3NlIGl0LgoKMjAwNi0wNS0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjc0NzEKCVBSIGMrKy8yNzUwNgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IENvbnZlcnQgYml0ZmllbGRzIHRvIHRoZWlyIGRlY2xhcmVkCgl0eXBlcyBoZXJlLiAgSW1wcm92ZSBkb2N1bWVudGF0aW9uLiAgQXZvaWQgdXNlIG9mIGNwX2NvbnZlcnQuCgkoZGVmYXVsdF9jb252ZXJzaW9uKTogTWFrZSBpdCBzdGF0aWMuICBQZXJmb3JtIGludGVncmFsIHByb21vdGlvbnMKCWJlZm9yZSBsdmFsdWUtdG8tcnZhbHVlLCBmdW5jdGlvbi10by1wb2ludGVyLCBhbmQgYXJyYXktdG8tcG9pbnRlcgoJY29udmVyc2lvbnMuCgkqIGluaXQuYyAoYnVpbGRfaW5pdCk6IFJlbW92ZS4KCShleHBhbmRfZGVmYXVsdF9pbml0KTogRG8gbm90IGNhbGwgcnZhbHVlLgoJKiBjYWxsLmMgKG51bGxfcHRyX2NzdF9wKTogUm9idXN0aWZ5LgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBUaWR5LgoJKiBleGNlcHQuYyAoYnVpbGRfdGhyb3cpOiBEbyBub3QgcGVyZm9ybSBsdmFsdWUtdG8tcnZhbHVlCgljb252ZXJzaW9uIG9uIG9wZXJhbmQgYmVmb3JlIGluaXRpYWxpemluZyB0ZW1wb3JhcnkuCgkqIHRyZWUuYyAoY29udmVydC5oKTogSW5jbHVkZSBpdC4KCShjb252ZXJ0X2JpdGZpZWxkX3RvX2RlY2xhcmVkX3R5cGUpOiBVc2UgY29udmVydF90b19pbnRlZ2VyLCBub3QKCWNwX2NvbnZlcnQuCgkocnZhbHVlKTogRG9uJ3QgY29udmVydCBiaXRmaWVsZHMgdG8gdGhlaXIgZGVjbGFyZWQgdHlwZSBoZXJlLgoJKiBjcC10cmVlLmggKGJ1aWxkX2luaXQpOiBSZW1vdmUuCgkoZGVmYXVsdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAoYnVpbGRfbV9jb21wb25lbnRfcmVmKTogRG8gbm90IHBlcmZvcm0KCWx2YWx1ZS10by1ydmFsdWUsIGZ1bmN0aW9uLXRvLXBvaW50ZXIsIG9yIGFycmF5LXRvLXBvaW50ZXIKCWNvbnZlcnNpb25zIGhlcmUuICBDb3JyZWN0IGVycm9yIG1lc3NhZ2UuCgoyMDA2LTA1LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNjEyMgoJKiBkZWNsMi5jIChjaGVja19tZW1iZXJfdGVtcGxhdGUpOiBSZW1vdmUgY2hlY2tzIGZvciB2aXJ0dWFsCglmdW5jdGlvbnMuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZnVuY3Rpb25fc3BlY2lmaWVyX29wdCk6IENvbXBsYWluIGFib3V0Cgl2aXJ0dWFsIHRlbXBsYXRlcy4KCShjcF9wYXJzZXJfcHVyZV9zcGVjaWZpZXIpOiBMaWtld2lzZS4KCglQUiBjKysvMjYwNjgKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9zZXRfc3RvcmFnZV9jbGFzcyk6IENoZWNrIGZvcgoJaW52YWxpZCB1c2VzIG9mIHN0b3JhZ2UgY2xhc3NlcyBvbiB1bmJyYWNlZCBsaW5rYWdlCglzcGVjaWZpY2F0aW9ucy4KCShjcF9wYXJzZXJfZGVjbF9zcGVjaWZpZXJfc2VxKTogUGFzcyBrZXl3b3Jkcywgbm90IHN0b3JhZ2UgY2xhc3NlcywKCXRvIGNwX3BhcnNlcl9zZXRfc3RvcmFnZV9jbGFzcy4KCjIwMDYtMDUtMTcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNzQ5MQoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NvbXBvdW5kX2xpdGVyYWwpOiBPbmx5IHNldCBUUkVFX0hBU19DT05TVFJVQ1RPUgoJb24gQ09OU1RSVUNUT1JzLgoKCVBSIG1pZGRsZS1lbmQvMjc0MTUKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfcGFyYWxsZWwpOiBTZXQgT01QX1BBUkFMTEVMX0NPTUJJTkVECglvbiBjb21iaW5lZCBwYXJhbGxlbCB3b3Jrc2hhcmUgY29uc3RydWN0cy4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBDb3B5IE9NUF9QQVJBTExFTF9DT01CSU5FRCBmbGFnLgoKMjAwNi0wNS0xNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIGRyaXZlci8yNjg4NQoJKiBNYWtlLWxhbmcuaW4gKEdYWF9PQkpTKTogUmVwbGFjZSBnY2MubyB3aXRoICQoR0NDX09CSlMpLgoKMjAwNi0wNS0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjczMzkKCSogY3AtdHJlZS5oIChwZXJmb3JtX2FjY2Vzc19jaGVja3MpOiBOZXcgZnVuY3Rpb24uCgkqIHNlbWFudGljcy5jIChwZXJmb3JtX2FjY2Vzc19jaGVja3MpOiBOZXcgZnVuY3Rpb24uCgkocGVyZm9ybV9kZWZlcnJlZF9hY2Nlc3NfY2hlY2tzKTogVXNlIGl0LgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3NpbXBsZV9kZWNsYXJhdGlvbik6IEFkanVzdCBjYWxsIHRvCgljcF9wYXJzZXJfaW5pdF9kZWNsYXJhdG9yLgoJKGNwX3BhcnNlcl90eXBlX3BhcmFtZXRlcik6IERvIG5vdCBkZWZlciBjaGVja3MgaW4gZGVmYXVsdAoJYXJndW1lbnRzLgoJKGNwX3BhcnNlcl9leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEFkanVzdCBjYWxsIHRvCgljcF9wYXJzZXJfc2luZ2xlX2RlY2xhcmF0aW9uLgoJKGNwX3BhcnNlcl9pbml0X2RlY2xhcmF0b3IpOiBQZXJmb3JtIHRlbXBsYXRlLXBhcmFtZXRlciBhY2Nlc3MKCWNoZWNrcy4KCShjcF9wYXJzZXJfcGFyYW1ldGVyX2RlY2xhcmF0aW9uKTogRG8gbm90IGRlZmVyIGNoZWNrcyBmb3IKCXRlbXBsYXRlIHBhcmFtZXRlciBkZWZhdWx0IGFyZ3VtZW50cy4KCShjcF9wYXJzZXJfdGVtcGxhdGVfZGVjbGFyYXRpb25fYWZ0ZXJfZXhwb3J0KTogR2F0aGVyIGFjY2VzcwoJY2hlY2tzIGZvciB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLCBhbmQgcGFzcyB0aGVtIHRvCgljcF9wYXJzZXJfc2luZ2xlX2RlY2xhcmF0aW9uLgoJKGNwX3BhcnNlcl90ZW1wbGF0ZV9wYXJhbWV0ZXJfYWNjZXNzX2NoZWNrcyk6IE5ldyBmdW5jdGlvbi4KCShjcF9wYXJzZXJfc2luZ2xlX2RlY2xhcmF0aW9uKTogQWRkIGNoZWNrcyBwYXJhbWV0ZXIuCgoJUFIgYysrLzI3NTA1CgkqIGNhbGwuYyAoY29udmVydF9saWtlX3JlYWwpOiBDb252ZXJ0IGJpdGZpZWxkcyB0byB0aGVpciBkZWNsYXJlZAoJdHlwZXMgd2hlbiBmb3JtaW5nIGFuIHJ2YWx1ZS4KCSogdHJlZS5jIChjb252ZXJ0X2JpdGZpZWxkX3RvX2RlY2xhcmVkX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkocnZhbHVlKTogVXNlIGl0LgoJKiBjcC10cmVlLmggKGNvbnZlcnRfYml0ZmllbGRfdG9fZGVjbGFyZV90eXBlKTogRGVjbGFyZSBpdC4KCjIwMDYtMDUtMTUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI3NTgyCgkqIHB0LmMgKGFueV9kZXBlbmRlbnRfdGVtcGxhdGVfYXJndW1lbnRzX3ApOiBSZXR1cm4gZWFybHkgb24gaW52YWxpZAoJYXJndW1lbnQgbGlzdC4KCglQUiBjKysvMjc1ODEKCSogc2VhcmNoLmMgKGFkanVzdF9yZXN1bHRfb2ZfcXVhbGlmaWVkX25hbWVfbG9va3VwKTogU2tpcCBvbgoJaW52YWxpZCBjb250ZXh0X2NsYXNzLgoKCVBSIGMrKy8yNzMxNQoJKiBwdC5jIChkb19kZWNsX2luc3RhbnRpYXRpb24pOiBSZXR1cm4gZWFybHkgb24gaW52YWxpZCBkZWNsLgoKCVBSIGMrKy8yNzU1OQoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgaW5zdGVhZAoJb2YgYnJva2VuIGRlY2wuCgoJUFIgYysrLzI3NDk2CgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfY2xhc3MpOiBSZXR1cm4gZWFybHkgb24gaW52YWxpZCBmcmllbmQKCWRlY2xhcmF0aW9ucy4KCjIwMDYtMDUtMTQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY3AvZGVjbC5vKTogQWRkIGRlcGVuZGVuY3kgb24gJChUQVJHRVRfSCkuCgkoY3AvZGVjbDIubyk6IExpa2V3aXNlLgoJKGNwL3R5cGVjay5vKTogTGlrZXdpc2UuCgkoY3AvY3Z0Lm8pOiBMaWtld2lzZS4KCShjcC9wYXJzZXIubyk6IExpa2V3aXNlLgoJKGNwL2NhbGwubyk6IFJlcGxhY2UgdGFyZ2V0Lmggd2l0aCAkKFRBUkdFVF9IKS4KCjIwMDYtMDUtMTQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogcHQuYyAoYnVpbGRfbm9uX2RlcGVuZGVudF9leHByKTogTGVhdmUgQUREUl9FWFBSIG9mCglDT01QT05FTlRfUkVGIGFsb25lLgoKMjAwNi0wNS0xMSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjc1NDcKCSogZGVjbC5jIChjb3B5X2ZuX3ApOiBSZXR1cm4gZWFybHkgb24gbm9uLW1lbWJlciBmdW5jdGlvbnMuCgoyMDA2LTA1LTA4ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNzQ0NwoJKiBkZWNsMi5jIChidWlsZF9tZW1mbl90eXBlKTogU2tpcCBpbnZhbGlkIGZ1bmN0aW9ucyBhbmQgY2xhc3MgdHlwZXMuCgoyMDA2LTA1LTA2ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNzQyNwoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBSZXR1cm4gZWFybHkgb24gaW52YWxpZCBhcmd1bWVudHMuCgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBSZW1vdmUgc3VwZXJmbHVvdXMgdGVtcG9yYXJ5LgoKCVBSIGMrKy8yNzQzMAoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBIYW5kbGUgZXJyb25lb3VzIG5vbi10eXBlIHBhcmFtZXRlcnMuCgoJUFIgYysrLzI3NDIzCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IFNraXAgZXJyb25lb3VzIHR5cGVzLgoKCVBSIGMrKy8yNzQyMgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBSZXR1cm4gZWFybHkgb24gYXJncyB3aXRoCglpbnZhbGlkIHR5cGVzLgoKMjAwNi0wNS0wMyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCVBSLzIxMzkxCgkqIHR5cGVjay5jIChidWlsZF9zdGF0aWNfY2FzdF8xKTogU2F2ZSBjYXN0ZWQgdHlwZXMgaW4gdXNlZCB0eXBlcwoJaGFzaCB0YWJsZS4KCShidWlsZF9yZWludGVycHJldF9jYXN0XzEpOiBTYW1lLgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogU2FtZS4KCjIwMDYtMDUtMDQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNzM1OQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX29tcF9mb3JfbG9vcCk6IE9ubHkgY2FsbAoJY3BfcGFyc2VyX2Fib3J0X3RlbnRhdGl2ZV9wYXJzZSBpZiBjcF9wYXJzZXJfcGFyc2VfZGVmaW5pdGVseSB3YXMgbm90CgljYWxsZWQuCgoyMDA2LTA1LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzEwMgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUm9idXN0aWZ5IGNoZWNrcyBmb3IgZGVmaW5pbmcgbWVtYmVycwoJb2YgaW5jb21wbGV0ZSB0eXBlcy4KCglQUiBjKysvMjczMDkKCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IENhbGwgZ3Jva19zcGVjaWFsX21lbWJlcl9wcm9wZXJ0aWVzLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgY2FsbCBpdCBoZXJlLgoJKGNvcHlfZm5fcCk6IEEgVEVNUExBVEVfREVDTCBpcyBuZXZlciBhIGNvcHkgY29uc3RydWN0b3Igb3IKCWFzc2lnbm1lbnQgb3BlcmF0b3IuICBTZXQgVFlQRV9IQVNfQ09OU1RVUkNUT1IgaWYgREVDTCBpcyBhCgljb25zdHJ1Y3Rvci4KCShzdGFydF9tZXRob2QpOiBEb24ndCBjYWxsIGdyb2tfc3BlY2lhbF9tZW1iZXJfcHJvcGVydGllcy4KCSogbWV0aG9kLmMgKGltcGxpY2l0bHlfZGVjbGFyZV9mbik6IExpa2V3aXNlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBMaWtld2lzZS4KCjIwMDYtMDUtMDIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjczMzcKCSogY3AtZ2ltcGxpZnkuYyAoY3h4X29tcF9wcml2YXRpemVfYnlfcmVmZXJlbmNlKTogTmV3IGZ1bmN0aW9uLgoJKiBjcC10cmVlLmggKGN4eF9vbXBfcHJpdmF0aXplX2J5X3JlZmVyZW5jZSk6IE5ldyBwcm90b3R5cGUuCgkqIGNwLW9iamNwLWNvbW1vbi5oIChMQU5HX0hPT0tTX09NUF9QUklWQVRJWkVfQllfUkVGRVJFTkNFKTogRGVmaW5lLgoKMjAwNi0wNC0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjcwOTQKCSogcHQuYyAodHN1YnN0X2RlZmF1bHRfYXJndW1lbnQpOiBJbmNyZW1lbnQgZnVuY3Rpb25fZGVwdGggYXJvdW5kCgljYWxsIHRvIHRzdWJzdF9leHByLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3BhcmFtZXRlcl9kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBUaWR5LgoKMjAwNi0wNC0zMCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjcyNzgKCSogZGVjbC5jIChncm9rX29wX3Byb3BlcnRpZXMpOiBTa2lwIG9wZXJhdG9ycyB3aXRoIGludmFsaWQgYXJncwoJd2hlbiBjaGVja2luZyBmb3IgY2xhc3MtdHlwZSBvciBlbnVtLXR5cGUgYXJncy4KCjIwMDYtMDQtMjkgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI3Mjc5CgkqIGRlY2wuYyAoY29weV9mbl9wKTogU2tpcCBmdW5jdGlvbnMgd2l0aCBpbnZhbGlkIGZpcnN0IGFyZy4KCjIwMDYtMDQtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI3MjkyCgkqIHRyZWUuYyAocnZhbHVlKTogQ29udmVydCBiaXRmaWVsZHMgdG8gdGhlaXIgZGVjbGFyZWQgdHlwZXMuCgoJUFIgYysrLzI3MTAyCgkqIHR5cGVjazIuYyAoY3h4X2luY29tcGxldGVfdHlwZV9kaWFnbm9zdGljKTogSGFuZGxlCglUWVBFTkFNRV9UWVBFLgoKMjAwNi0wNC0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjcyOTIKCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24pOiBEb24ndCBhZGp1c3QgYml0ZmllbGQgdHlwZXMuCgkocGVyZm9ybV9pbnRlZ3JhbF9wcm9tb3Rpb25zKTogVHJlYXQgYml0ZmllbGQgZW51bXMgYXMgZW51bXMsIG5vdAoJYXMgc2hvcnQgaW50ZWdlciB0eXBlcy4KCSogdHJlZS5jIChydmFsdWUpOiBDb252ZXJ0IGJpdGZpZWxkcyB0byB0aGVpciBjb3JyZWN0IHR5cGVzLgoKMjAwNi0wNC0yNCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMTk5NjMKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX3R5cGUpOiBTa2lwIGZpZWxkcyB3aXRoIGludmFsaWQgdHlwZXMuCgoyMDA2LTA0LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNjkxMgoJKiBjcC10cmVlLmggKGJ1aWxkX3RoaXNfcGFybSk6IERlY2xhcmUuCgkoZ3Jva19tZXRob2RfcXVhbHMpOiBSZW1vdmUuCgkoYnVpbGRfbWVtZm5fdHlwZSk6IERlY2xhcmUuCgkoYnVpbGRfYXJ0aWZpY2lhbF9wYXJtKTogRGVjbGFyZS4KCShkb19mcmllbmQpOiBSZW1vdmUgcXVhbHMgcGFyYW1ldGVyLgoJKiBkZWNsLmMgKGJ1aWxkX3RoaXNfcGFybSk6IE5ldyBmdW5jdGlvbi4KCShncm9rZm5kZWNsKTogVXNlIGl0LiAgRG8gbm90IHBhc3MgcXVhbHMgdG8gZ3Jva2NsYXNzZm4uCgkoZ3Jva2RlY2xhcmF0b3IpOiBSZW5hbWUgcXVhbHMgdG8gbWVtZm5fcXVhbHMuICBBdm9pZCBhbGxvY2F0aW5nCgl1bm5lY2Vzc2FyeSBUWVBFX0RFQ0xzLiAgQ29ycmVjdCBxdWFsaWZpY2F0aW9uIG9mIG1lbWJlciBmdW5jdGlvbgoJdHlwZXMuICBUaWR5LgoJKiBtZXRob2QuYyAoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTogVXNlIGJ1aWxkX3RoaXNfcGFybS4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IFJlbW92ZSBxdWFscyBwYXJhbWV0ZXIuCgkqIGRlY2wyLmMgKGdyb2tfbWV0aG9kX3F1YWxzKTogUmVtb3ZlLgoJKGJ1aWxkX21lbWZuX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfYXJ0aWZpY2lhbF9wYXJtKTogR2l2ZSBpdCBleHRlcm5hbCBsaW5rYWdlLgoJKGdyb2tjbGFzc2ZuKTogUmVtb3ZlIHF1YWxzIHBhcmFtZXRlci4gIERvIG5vdCBidWlsZCAidGhpcyIKCVBBUk1fREVDTCBoZXJlLgoKCVBSIGMrKy8yNjUzNAoJKiBjcC10cmVlLmggKGlzX2JpdGZpZWxkX2V4cHJfd2l0aF9sb3dlcmVkX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkqIHR5cGVjay5jIChpc19iaXRmaWVsZF9leHByX3dpdGhfbG93ZXJlZF90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKGRlY2F5X2NvbnZlcnNpb24pOiBDb252ZXJ0IGJpdGZpZWxkIGV4cHJlc3Npb25zIHRvIHRoZSBjb3JyZWN0Cgl0eXBlLgoJKGJ1aWxkX21vZGlmeV9leHByKTogUmVtb3ZlIHNwdXJpb3VzIGNvbnZlcnNpb25zLgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfdHlwZSk6IE1vZGlmeSB0aGUgdHlwZSBvZiBiaXRmaWVsZHMgdG8KCWluZGljYXRlIGEgbGltaXRlZCByYW5nZS4KCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogQWRqdXN0IHRoZSB0eXBlIG9mIGJpdGZpZWxkCglleHByZXNzaW9ucyB1c2VkIGluIGFuIHJ2YWx1ZSBjb250ZXh0LgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBMaWtld2lzZS4KCjIwMDYtMDQtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDYtMDQtMjEgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBkZWNsLmM6IEZpeCB0eXBvIGluIGZ1bmN0aW9uIG5hbWUuCgoyMDA2LTA0LTE5ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNjU1OAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2NsYXNzX25hbWUpOiBDaGVjayBmb3IgaW52YWxpZCB0eXBlbmFtZXMuCglSZWFycmFuZ2UgY29kZS4KCglQUiBjKysvMjY3MzkKCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IFJldHVybiBlYXJseSBpZgoJcHVzaGRlY2xfbmFtZXNwYWNlX2xldmVsIGZhaWxzLgoKCVBSIGMrKy8yNjAzNgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIGluc3RlYWQgb2YKCWVycm9yX21hcmtfbGlzdC4KCSogY3AtdHJlZS5oIChlcnJvcl9tYXJrX2xpc3QpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIGRlY2wuYyAoZXJyb3JfbWFya19saXN0KTogUmVtb3ZlIGRlZmluaXRpb24uCgkoY3h4X2luaXRfZGVjbF9wcm9jZXNzaW5nKTogRG8gbm90IGluaXRpYWxpemUgZXJyb3JfbWFya19saXN0LgoKCVBSIGMrKy8xMDM4NQoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogQ2hlY2sgZm9yIGludmFsaWQgY29udmVyc2lvbnMKCWJlZm9yZSBjYWxsaW5nIGNvbnZlcnRfdG9fcmVmZXJlbmNlLgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBBc3NlcnQgdGhhdCByZWZ0eXBlIGlzIGEKCVJFRkVSRU5DRV9UWVBFLgoKMjAwNi0wNC0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjcxMDIKCSogY2xhc3MuYyAoY3VycmVudGx5X29wZW5fY2xhc3MpOiBUaWR5LgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogSWYgd2UgZW5jb3VudGVyIGFuIGVycm9uZW91cwoJZGVjbGFyYXRvciwgYXNzdW1lIHRoYXQgd2UgaGF2ZSBhbHJlYWR5IGlzc3VlZCBhbiBlcnJvciBtZXNzYWdlCglhbmQgcmV0dXJuLiAgUmV0dXJuIGVycm9yX21hcmtfbm9kZSBpbnN0ZWFkIG9mIE5VTExfVFJFRSBpbiBtb3JlCglwbGFjZXMuICBJc3N1ZSBlcnJvcnMgYWJvdXQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgdGhhdCBkbyBub3QgaGF2ZQoJYSBmdW5jdGlvbiBkZWNsYXJhdG9yLiAgQ2hlY2sgZm9yIGNvbXBsZXRlIHR5cGVzIGZvciBhbGwgZnVuY3Rpb24KCWRlZmluaXRpb25zLgoJKiBjcC10cmVlLmggKGNwX2Vycm9yX2RlY2xhcmF0b3IpOiBSZW1vdmUuCgkoY3VycmVudGx5X29wZW5fY2xhc3MpOiBDaGFuZ2UgcmV0dXJuIHR5cGUuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfaWRfZXhwcmVzc2lvbik6IEFkZCBvcHRpb25hbF9wIHBhcmFtZXRlci4KCShjcF9wYXJzZXJfcGFyc2VfZGlhZ25vc2VfaW52YWxpZF90eXBlX25hbWUpOiBBZGp1c3QgY2FsbHMuCgkoY3BfcGFyc2VyX2lkX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfdW5xdWFsaWZpZWRfaWQpOiBJZiB0aGUgbmFtZSBpcyBvcHRpb25hbCwgcmV0dXJuCglOVUxMX1RSRUUuCgkoY3BfcGFyc2VyX3Bvc3RmaXhfZG90X2RlcmVmX2V4cHJlc3Npb24pOiBBZGp1c3QgY2FsbHMuCgkoY3BfcGFyc2VyX3R5cGVfcGFyYW1ldGVyKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3VucXVhbGlmaWVkX2lkKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2RpcmVjdF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2RlY2xhcmF0b3JfaWQpOiBBZGQgb3B0aW9uYWxfcCBwYXJhbWV0ZXIuCgkoY3BfcGFyc2VyX2Z1bmN0aW9uX2RlZmluaXRpb25fZnJvbV9zcGVjaWZpZXJzX2FuZF9kZWNsYXJhdG9yKToKCUFzc3VtZSB0aGF0IHN0YXJ0X2Z1bmN0aW9uIGluZGljYXRlcyBmYWlsdXJlIG9ubHkgaWYgaXQgaGFzIGlzc3VlZAoJYW4gZXJyb3IuCgkoY3BfcGFyc2VyX29tcF92YXJfbGlzdF9ub19vcGVuKTogQWRqdXN0IGNhbGxzLgoKMjAwNi0wNC0xNyAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJUFIgYysrLzI2MTE0LCBjKysvMjYxMTUKCSogdHlwZWNrLmMgKGN4eF9tYXJrX2FkZHJlc3NhYmxlKTogUmVzdG9yZSBjaGVjayBmb3IgZXh0cmFfd2FybmluZ3MuCgkqIGNsYXNzLmMgKGNoZWNrX2ZpZWxkX2RlY2xzKTogRGl0dG8uCgoyMDA2LTA0LTE3ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogUmVtb3ZlIHN1cGVyZmx1b3VzIHRlbXBvcmFyeS4KCjIwMDYtMDQtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI2MzY1CgkqIHR5cGVjay5jIChmaW5pc2hfY2xhc3NfbWVtYmVyX2FjY2Vzc19leHByKTogUm9idXN0aWZ5CgoyMDA2LTA0LTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY3AvcHQubyk6IERlcGVuZCBvbiB2ZWNwcmltLmguCgkqIHB0LmM6IEluY2x1ZGUgdmVjcHJpbS5oLgoJKGlubGluZV9wYXJtX2xldmVscyk6IENoYW5nZSB0aGUgdHlwZSB0byBWRUMoaW50LGhlYXApICouCgkoaW5saW5lX3Bhcm1fbGV2ZWxzX3VzZWQpOiBSZW1vdmUuCgkobWF5YmVfYmVnaW5fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcsCgltYXliZV9lbmRfbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpOiBVc2UgVkVDIGluc3RlYWQgb2YKCVZBUlJBWS4KCgkqIGNwL2NhbGwuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA2LTA0LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9pbml0X2RlY2xhcmF0b3IpOiBJbml0aWFsaXplIGxvY2FsIHZhcmlhYmxlcwoJYWdncmVzc2l2ZWx5LgoKMjAwNi0wNC0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2luaXRfZGVjbGFyYXRvcik6IEluaXRpYWxpc2UKCWlzX3BhcmVudGhlc2l6ZWRfaW5pdCB0byBmYWxzZSB0byBhdm9pZCBjb21waWxlciB3YXJuaW5nLgoKMjAwNi0wNC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfb3BlcmF0b3JfbmV3X2NhbGwpOiBBZGp1c3QgcHJvdG90eXBlLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoYnVpbGRfcmF3X25ld19leHByKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX25ld18xKTogUGFzcyBpbmZvcm1hdGlvbiBhcyBwYXJhbWV0ZXJzLCByYXRoZXIgdGhhbgoJYnVuZGxpbmcgaXQgaW50byBhIE5FV19FWFBSLgoJKGJ1aWxkX25ldyk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShidWlsZF92ZWNfZGVsZXRlXzEpOiBBZGp1c3QgZm9yIGNoYW5nZXMgdG8gYnVpbGRfb3BfZGVsZXRlX2NhbGwuCgkoYnVpbGRfZGVsZXRlKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZmluaXNoX2Rlc3RydWN0b3JfYm9keSk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX29wZXJhdG9yX25ld19jYWxsKTogUmV0dXJuIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9uCgl1c2VkLgoJKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogVGFrZSBhbGxvY2F0aW9uIGZ1bmN0aW9uIGFzIHBhcmFtZXRlci4KCShidWlsZF9zcGVjaWFsX21lbWJlcl9jYWxsKTogQWRqdXN0IGNhbGwgdG8gYnVpbGRfbmV3X21ldGhvZF9jYWxsLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IFJldHVybiBmdW5jdGlvbiBjYWxsZWQuCgkqIHB0LmMgKHRzdWJzdF9jb3B5X2FuZF9idWlsZCk6IEFkanVzdCBjYWxsIHRvCglidWlsZF9uZXdfbWV0aG9kX2NhbGwuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfY2FsbF9leHByKTogTGlrZXdpc2UuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAoY3h4X2luY29tcGxldGVfdHlwZV9kaWFnbm9zdGljKTogUmVmZXIgdG8KCSJpbmNvbXBsZXRlIiwgbm90ICJ1bmRlZmluZWQiLCB0eXBlcy4KCglQUiBjKysvMjYyOTUKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJlbW92ZSBuYW1lc3BhY2UtaGFuZGxpbmcgY29kZSBmb3IKCXBvaW50ZXJzLXRvLW1lbWJlcnMuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfcHRyX29wZXJhdG9yKTogQ2hlY2sgZm9yIHF1YWxpZmllZCBuYW1lcwoJdXNpbmcgbmFtZXNwYWNlcy4KCglQUiBjKysvMjYxMjIKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9pbml0X2RlY2xhcmF0b3IpOiBBZGp1c3QgbG9naWMgZm9yIGRlY2lkaW5nCgl3aGV0aGVyIG9yIG5vdCB0byBsb29rIGZvciBhIHB1cmUtc3BlY2lmaWVyLgoJKGNwX3BhcnNlcl9tZW1iZXJfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCjIwMDYtMDQtMDggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYywgcHQuYywgc2VtYW50aWNzLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNi0wNC0wNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjYWxsLmMgKG51bGxfcHRyX2NzdF9wKTogQWRkIGV4cGxpY2l0IFRSRUVfQ09OU1RBTlRfT1ZFUkZMT1cgY2hlY2suCgoyMDA2LTA0LTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIG5hbWUtbG9va3VwLmMgKHB1c2hfbmFtZXNwYWNlX3dpdGhfYXR0cmlicyk6IFRlbXBvcmFyaWx5IGRpc2FibGUKCWRlZmF1bHQgaGlkZGVuIHZpc2liaWxpdHkgZm9yIGFub255bW91cyBuYW1lc3BhY2UuCgoyMDA2LTAzLTI5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBjKysvMjI0OTQKCSogaW5pdC5jIChidWlsZF92ZWNfZGVsZXRlXzEpOiBDb252ZXJ0IEJBU0UgcG9pbnRlcidzIHR5cGUgdG8KCXRoZSBiYXNlIHBvaW50ZXIgdHlwZSB0byBhdm9pZCBhIHR5cGUgbWlzbWF0Y2ggaW4gdGhlIEVRX0VYUFIuCgoyMDA2LTAzLTI0ICBDYXJsb3MgTydEb25lbGwgIDxjYXJsb3NAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlYXJjaC5jIChtYXliZV9zdXBwcmVzc19kZWJ1Z19pbmZvKTogSWYKCWZsYWdfZW1pdF9jbGFzc19kZWJ1Z19hbHdheXMgdGhlbiBkb24ndCBzdXBwcmVzcy4KCjIwMDYtMDMtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogbmFtZS1sb29rdXAuYyAocHVzaF9uYW1lc3BhY2Vfd2l0aF9hdHRyaWJzKTogT25seSBhcHBseSBoaWRkZW4KCXZpc2liaWxpdHkgdG8gYW5vbnltb3VzIG5hbWVzcGFjZXMgaWYgSEFWRV9HQVNfSElEREVOLgoKMjAwNi0wMy0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzI2NjkxCgkqIGNwLWdpbXBsaWZ5LmMgKGN4eF9vbXBfY2xhdXNlX2FwcGx5X2ZuKTogSGFuZGxlIGRlZmF1bHQgYXJndW1lbnRzLgoKMjAwNi0wMy0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzIxNTgxCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZGVjbGFyYXRpb24pOiBTdXBwb3J0IGF0dHJpYnV0ZXMgb24KCWFub255bW91cyBuYW1lc3BhY2VzLgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoX25hbWVzcGFjZV93aXRoX2F0dHJpYnMpOiBBbm9ueW1vdXMKCW5hbWVzcGFjZXMgZGVmYXVsdCB0byBoaWRkZW4gdmlzaWJpbGl0eS4KCjIwMDYtMDMtMjAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yMTc2NCwgYysrLzE5MjM4CgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBDYWxsIGRldGVybWluZV92aXNpYmlsaXR5IGxhdGVyLgoJKHN0YXJ0X3ByZXBhcnNlZF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKENQX1RZUEVfQ09OVEVYVCwgVFlQRV9OQU1FU1BBQ0VfU0NPUEVfUCk6IE5ldyBtYWNyb3MuCgkoVFlQRV9DTEFTU19TQ09QRV9QLCBUWVBFX0ZVTkNUSU9OX1NDT1BFX1ApOiBOZXcgbWFjcm9zLgoJKiBuYW1lLWxvb2t1cC5oIChzdHJ1Y3QgY3BfYmluZGluZ19sZXZlbCk6IEFkZCBoYXNfdmlzaWJpbGl0eQoJYml0ZmllbGQuCgkqIG5hbWUtbG9va3VwLmM6IEluY2x1ZGUgYy1wcmFnbWEuaC4KCShwdXNoX25hbWVzcGFjZV93aXRoX2F0dHJpYnMpOiBTcGxpdCBvdXQgZnJvbSBwdXNoX25hbWVzcGFjZS4KCVB1c2ggdmlzaWJpbGl0eSBpZiBhcHByb3ByaWF0ZS4gIFNldCBUUkVFX1BVQkxJQyBvbiBuYW1lc3BhY2VzLgoJKGxlYXZlX3Njb3BlKTogUG9wIHZpc2liaWxpdHkgaWYgYXBwcm9wcmlhdGUuCgkqIGRlY2wyLmMgKGRldGVybWluZV92aXNpYmlsaXR5X2Zyb21fY2xhc3MpOiBTcGxpdCBvdXQgZnJvbS4uLgoJKGRldGVybWluZV92aXNpYmlsaXR5KTogLi4uaGVyZS4gIEhhbmRsZSBmdW5jdGlvbiBzY29wZSBhbmQKCW5lc3RlZCBjbGFzc2VzLgoJKGltcG9ydF9leHBvcnRfZGVjbCk6IE1vdmUgdmlzaWJpbGl0eSBoYW5kbGluZyB0bwoJZGV0ZXJtaW5lX3Zpc2liaWxpdHlfZnJvbV9jbGFzcy4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kZWNsYXJhdGlvbiwgY3BfcGFyc2VyX25hbWVzcGFjZV9uYW1lKTogQWxsb3cKCWF0dHJpYnV0ZXMgb24gbmFtZXNwYWNlIGRlY2xhcmF0aW9ucy4KCjIwMDYtMDMtMTUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzY2MzQKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IERvIG5vdCBhY2NlcHQgbG9uZyBsb25nIGRvdWJsZS4KCVJlb3JnYW5pemUgY2hlY2tzIGZvciBpbnZhbGlkIChjb21iaW5hdGlvbnMgb2YpIHR5cGUgbW9kaWZpZXJzLgoJUXVvdGUgbW9kaWZpZXJzIGluIG1lc3NhZ2VzLgoKMjAwNi0wMy0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzE2Mzg3LCBjKysvMTYzODkKCSogdHlwZWNrLmMgKGN4eF9hbGlnbm9mX2V4cHIsIGN4eF9zaXplb2ZfZXhwcik6IE5ldyBmdW5jdGlvbnMuCgkoY3h4X3NpemVvZl9vcl9hbGlnbm9mX2V4cHIpOiBTcGxpdCBvdXQgZnJvbSBoZXJlLgoKMjAwNi0wMy0wOSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJTWVyZ2UgZnJvbSBnb21wLTIwMDUwNjA4LWJyYW5jaAoKCTIwMDYtMDItMDIgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCQkqIGRlY2wuYyAocG9wX2xhYmVsc18xKTogVXNlIGFwcHJvcHJpYXRlIHBvaW50ZXIgY2FzdGluZy4KCQkocG9wbGV2ZWxfbmFtZWRfbGFiZWxfMSk6IExpa2V3aXNlLgoJCShuYW1lZF9sYWJlbF9lbnRyeV9oYXNoKTogTGlrZXdpc2UuCgkJKG5hbWVkX2xhYmVsX2VudHJ5X2VxKTogTGlrZXdpc2UuCgkJKGNoZWNrX2dvdG8pOiBMaWtld2lzZS4KCQkoZGVmaW5lX2xhYmVsKTogTGlrZXdpc2UuCgoJMjAwNi0wMS0yNiAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJCSogY3AtdHJlZS5oIChDUF9PTVBfQ0xBVVNFX0lORk8pOiBVc2UgVFJFRV9UWVBFIGluc3RlYWQKCQlvZiBUUkVFX0JMT0NLLgoJCSogcHQuYzogVXNlIE9NUF9DTEFVU0VfQ09ERSBhbmQgT01QX0NMQVVTRV9PUEVSQU5ECgkJaW5zdGVhZCBvZiBUUkVFX0NPREUvVFJFRV9PUEVSQU5ELgoJCSogc2VtYW50aWNzLmM6IExpa2V3aXNlLgoJCSogcGFyc2VyLmM6IExpa2V3aXNlLgoKCTIwMDUtMTEtMTAgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCQkqIHBhcnNlci5jIChjcF9wYXJzZXJfb21wX3RocmVhZHByaXZhdGUpOiBFbWl0IGRpYWdub3N0aWMgaWYKCQl0YXJnZXQgZG9lcyBub3Qgc3VwcG9ydCBUTFMuCgoJMjAwNS0xMS0wOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJCSogZGVjbC5jIChyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBEb24ndCBlcnJvciBhYm91dAoJCURFQ0xfVEhSRUFEX0xPQ0FMX1AgbWlzbWF0Y2hlcyBpZiBDUF9ERUNMX1RIUkVBRFBSSVZBVEVfUAoJCShvbGRkZWNsKS4KCgkyMDA1LTExLTA4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkJUFIgYysrLzI0NzM1CgkJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF9iYXJyaWVyLCBmaW5pc2hfb21wX2ZsdXNoKTogTmV3CgkJICBmdW5jdGlvbnMuCgkJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX29tcF9iYXJyaWVyKTogQ2FsbCBmaW5pc2hfb21wX2JhcnJpZXIuCgkJKGNwX3BhcnNlcl9vbXBfZmx1c2gpOiBDYWxsIGZpbmlzaF9vbXBfZmx1c2guCgkJKiBjcC10cmVlLmggKGZpbmlzaF9vbXBfYmFycmllciwgZmluaXNoX29tcF9mbHVzaCk6IE5ldwoJCSAgcHJvdG90eXBlcy4KCgkJUFIgYysrLzI0NzM0CgkJKiBwdC5jICh0c3Vic3RfZXhwcik6IEhhbmRsZSBPTVBfTUFTVEVSIGFuZCBPTVBfT1JERVJFRC4KCgkyMDA1LTExLTAzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF90aHJlYWRwcml2YXRlKTogRXJyb3Igb24gY2xhc3Mtc2NvcGUKCQl2YXJpYWJsZXMuCgoJMjAwNS0xMS0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfYWxsX2NsYXVzZXMpOiBJZiBzb21lIGNsYXVzZQoJCXR5cGUgaXMgbm90IGFsbG93ZWQsIGRvbid0IHJlbW92ZSBqdXN0IG9uZSBvZiB0aGUKCQljbGF1c2VzLCBidXQgYWxsIGNsYXVzZXMgYWRkZWQgaW4gdGhhdCBsb29wIHJvdW5kLgoKCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX2NsYXVzZXMpOiBGaXggZnVuY3Rpb24KCQljb21tZW50LiBEb24ndCBoYW5kbGUgbm9uLWNvbnN0IG9yIG11dGFibGUgc3BlY2lhbGx5LAoJCWFzIGNvbnN0IGFuZCBub3QgbXV0YWJsZSBpcyBwcmVkZXRlcm1pbmVkIHNoYXJlZCBhbmQKCQl0aGF0IGxlYWRzIHRvIGRvdWJsZSBlcnJvci4gRG9uJ3QgSUNFIGlmIGNvcHlpbiB2YXIgaXMKCQlQQVJNX0RFQ0wuCgoJCVBSIGMrKy8yNDYxMwoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wcmFnbWEpOiBEaWFnbm9zZQoJCVBSQUdNQV9PTVBfU0VDVElPTiBvdXRzaWRlIG9mIFBSQUdNQV9PTVBfU0VDVElPTlMKCQljb25zdHJ1Y3QuCgoJCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfdGhyZWFkcHJpdmF0ZSk6IEVycm9yIGlmIFYKCQkgIGlzIGF1dG9tYXRpYyB2YXJpYWJsZSBvciBoYXMgaW5jb21wbGV0ZSB0eXBlLgoKCTIwMDUtMTEtMDEgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCQkqIHBhcnNlci5jIChjcF9wYXJzZXJfb21wX2FsbF9jbGF1c2VzKTogVXNlCgkJT01QX0NMQVVTRV9DSEFJTiBpbnN0ZWFkIG9mIFRSRUVfQ0hBSU4uCgoJMjAwNS0xMS0wMSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfYWxsX2NsYXVzZXMpOiBXaGVuIGVtaXR0aW5nIGFuCgkJZXJyb3IgbWVzc2FnZSwgcmVtb3ZlIHRoZSBpbnZhbGlkIGNsYXVzZSBmcm9tIHRoZSBsaXN0LgoKCTIwMDUtMTAtMzEgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCQkqIHBhcnNlci5jIChjcF9wYXJzZXJfb21wX3BhcmFsbGVsKTogRG8gbm90IGFsbG93ICdub3dhaXQnIGluCgkJY29tYmluZWQgcGFyYWxsZWwrd29ya3NoYXJlIGRpcmVjdGl2ZXMuCgoJMjAwNS0xMC0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkJKiBjcC1vYmpjcC1jb21tb24uaCAoTEFOR19IT09LU19PTVBfQ0xBVVNFX0RUT1IpOgoJCVVzZSBjeHhfb21wX2NsYXVzZV9kdG9yLgoJCSogY3AtdHJlZS5oIChDUF9PTVBfQ0xBVVNFX0lORk8pOiBOZXcuCgkJKGN4eF9vbXBfY2xhdXNlX2R0b3IpOiBOZXcuCgkJKiBjcC1naW1wbGlmeS5jIChjeHhfb21wX2NsYXVzZV9hcHBseV9mbik6IE5ldy4KCQkoY3h4X29tcF9jbGF1c2VfZGVmYXVsdF9jdG9yKTogVXNlIGl0LgoJCShjeHhfb21wX2NsYXVzZV9jb3B5X2N0b3IsIGN4eF9vbXBfY2xhdXNlX2Fzc2lnbl9vcCk6CgkJTGlrZXdpc2UuCgkJKGN4eF9vbXBfY2xhdXNlX2R0b3IpOiBOZXcuCgkJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF9jbGF1c2VzKTogUmV3cml0ZSBjZHRvcgoJCWNoZWNraW5nIHRvIGZpbGwgaW4gQ1BfT01QX0NMQVVTRV9JTkZPLiAgRG9uJ3QKCQlzcGVjaWFsY2FzZSBMQVNUUFJJVkFURSBmb3IgcmVtb3ZhbC4KCQkoY3h4X29tcF9jbGF1c2VfZGVmYXVsdF9jdG9yLCBjeHhfb21wX2NsYXVzZV9jb3B5X2N0b3IsCgkJY3h4X29tcF9jbGF1c2VfYXNzaWduX29wKTogTW92ZSB0byBjcC1naW1wbGlmeS5jLgoKCTIwMDUtMTAtMjggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX3RocmVhZHByaXZhdGUpOiBJZgoJCSAgREVDTF9SVExfU0VUX1AsIGNhbGwgbWFrZV9kZWNsX3J0bCBhZ2FpbiBzbyB0aGF0CgkJICBlbmNvZGVfc2VjdGlvbl9pbmZvIGNhbiB1cGRhdGUgU1lNQk9MX1JFRidzIGZsYWdzLgoKCTIwMDUtMTAtMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX2Zvcik6IERvbid0IHNlZ2ZhdWx0IGlmIENPTkQKCQlvciBJTkNSIGlzIE5VTEwuICBJZiBub3QgY2FsbGluZyBjX2ZpbmlzaF9vbXBfZm9yCgkJcmlnaHQgYXdheSBhbmQgb25lIG9mIENPTkQgYW5kIElOQ1IgaXMgTlVMTCwgaXNzdWUKCQllcnJvciBhbmQgZG9uJ3QgZXhwYW5kIGFueXRoaW5nLgoKCQlQUiBjKysvMjQ1MTIKCQkqIGNwLXRyZWUuaCAoZmluaXNoX29tcF9mb3IpOiBBZGQgUFJFX0JPRFkgYXJndW1lbnQuCgkJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF9mb3IpOiBMaWtld2lzZS4gIFNldAoJCU9NUF9GT1JfUFJFX0JPRFkgdG8gUFJFX0JPRFkgaWYgZGVmZXJyaW5nLCBhZGQgaXQKCQlpbnRvIHRoZSBjdXJyZW50IHN0YXRlbWVudCBsaXN0IGlmIG5vdCBwcm9jZXNzaW5nCgkJdGVtcGxhdGUgZGVjbCBvciBwYXNzIGl0IHRvIGNfZmluaXNoX29tcF9mb3IuCgoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfZm9yX2xvb3ApOiBFeHBhbmQgb3B0aW9uYWwgREVDTF9FWFBScwoJCWludG8gUFJFX0JPRFkgc3RhdGVtZW50IGxpc3QuICBQYXNzIGl0IHRvIGZpbmlzaF9vbXBfZm9yLgoJCSogcHQuYyAodHN1YnN0X2V4cHIpIDxjYXNlIE9NUF9GT1I+OiB0c3Vic3RfZXhwciBhbHNvCgkJT01QX0ZPUl9QUkVfQk9EWSBpbnRvIFBSRV9CT0RZIHN0bXQgbGlzdCwgcGFzcyBpdCB0bwoJCWZpbmlzaF9vbXBfZm9yLiAgUHV0IGFsbCB0aGUgc3RhdGVtZW50cyBpbnRvIHNrX29tcAoJCXNjb3BlLgoKCTIwMDUtMTAtMjUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCQlQUiBjKysvMjQ1MTYKCQkqIHBhcnNlci5jIChzdHJ1Y3QgY3BfcGFyc2VyKTogUmVuYW1lIGluX2l0ZXJhdGlvbl9zdGF0ZW1lbnQKCQlmaWVsZCB0byBpbl9zdGF0ZW1lbnQuCgkJKElOX1NXSVRDSF9TVE1ULCBJTl9JVEVSQVRJT05fU1RNVCk6IERlZmluZS4KCQkoSU5fT01QX0JMT0NLLCBJTl9PTVBfRk9SKTogQ2hhbmdlIHZhbHVlcy4KCQkoY3BfcGFyc2VyX25ldywgY3BfcGFyc2VyX2JlZ2luX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrLAoJCWNwX3BhcnNlcl9lbmRfb21wX3N0cnVjdHVyZWRfYmxvY2ssCgkJY3BfcGFyc2VyX29tcF9mb3JfbG9vcCk6IEFkanVzdCBmb3IKCQlpbl9pdGVyYXRpb25fc3RhdGVtZW50IHJlbmFtaW5nLgoJCShjcF9wYXJzZXJfc2VsZWN0aW9uX3N0YXRlbWVudCk6IFNhdmUKCQlwYXJzZXItPmluX2l0ZXJhdGlvbiwgb3IgaXQgdGVtcG9yYXJpbHkgd2l0aAoJCUlOX1NXSVRDSF9TVE1UIGZvciB0aGUKCQljcF9wYXJzZXJfaW1wbGljaXRseV9zY29wZWRfc3RhdGVtZW50IGNhbGwuCgkJKGNwX3BhcnNlcl9pdGVyYXRpb25fc3RhdGVtZW50KTogQWRqdXN0IGZvcgoJCWluX2l0ZXJhdGlvbl9zdGF0ZW1lbnQgcmVuYW1pbmcuICBVc2UKCQlJTl9JVEVSQVRJT05fU1RNVCByYXRoZXIgdGhhbiB0cnVlLgoJCShjcF9wYXJzZXJfanVtcF9zdGF0ZW1lbnQpOiBBZGp1c3QgZm9yCgkJaW5faXRlcmF0aW9uX3N0YXRlbWVudCByZW5hbWluZyBhbmQgbmV3IHZhbHVlcy4gIERvbid0CgkJZXJyb3Igb24gYnJlYWsgaW4gYSBzd2l0Y2ggc3RhdGVtZW50IHdpdGhpbiBPTVBfRk9SIG9yCgkJT3Blbk1QIHN0cnVjdHVyZWQgYmxvY2suCgoJCVBSIGMrKy8yNDUxMwoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9jYWNoZV9ncm91cCk6IERvbid0IHN0b3AgaWYgbmV4dAoJCXRva2VuIGlzIENQUF9QUkFHTUFfRU9MIGFuZCBlbmQgaXMgQ1BQX1BSQUdNQV9FT0wgYXMKCQl3ZWxsLiAgSWYgY3VycmVudCB0b2tlbiBpcyBDUFBfUFJBR01BLCBjb25zdW1lCgkJZXZlcnl0aGluZyB1bnRpbCBDUFBfUFJBR01BX0VPTCBpbmNsdXNpdmUuCgoJMjAwNS0xMC0yNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJCVBSIGMrKy8yNDUwMgoJCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfZm9yKTogSGFuZGxlIE1PRE9QX0VYUFIgaW4KCQlhZGRpdGlvbiB0byBNT0RJRllfRVhQUi4KCgkyMDA1LTEwLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIGNwLWdpbXBsaWZ5LmMgKHN0cnVjdCBjcF9naW1wbGlmeV9jdHgpOiBSZW1vdmUuCgkJKGJjX2xhYmVsKTogTmV3LgoJCShiZWdpbl9iY19ibG9jaywgZmluaXNoX2JjX2Jsb2NrKTogVXNlIGl0LgoJCShwdXNoX2NvbnRleHQsIHBvcF9jb250ZXh0KTogUmVtb3ZlLgoJCShjcF9nZW5lcmljaXplKTogRG9uJ3QgdXNlIHRoZW0uICBBc3NlcnQgYmNfbGFiZWwgaXMgbnVsbC4KCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX2NsYXVzZXMpOiBDcmVhdGUgYSBmYWtlIGRhdGEKCQllbGVtZW50IG9mIFRZUEUgZm9yIHByb2JpbmcgY3RvcnMuCgoJMjAwNS0xMC0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkJKiBjcC1vYmpjcC1jb21tb24uaCAoTEFOR19IT09LU19PTVBfQ0xBVVNFX0RFRkFVTFRfQ1RPUik6IE5ldy4KCQkoTEFOR19IT09LU19PTVBfQ0xBVVNFX0NPUFlfQ1RPUik6IE5ldy4KCQkoTEFOR19IT09LU19PTVBfQ0xBVVNFX0FTU0lHTl9PUCk6IE5ldy4KCQkoTEFOR19IT09LU19PTVBfQ0xBVVNFX0RUT1IpOiBOZXcuCgkJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF9jbGF1c2VzKTogTG9vayB0aHJvdWdoCgkJYXJyYXlzIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1lbWJlciBjYWxscy4gIEFsc28KCQlyZW1vdmUgRklSU1RQUklWQVRFIHdoZW4gTEFTVFBSSVZBVEUgZmFpbHMuCgkJKGN4eF9vbXBfY2xhdXNlX2RlZmF1bHRfY3RvciwgY3h4X29tcF9jbGF1c2VfY29weV9jdG9yKTogTmV3LgoJCShjeHhfb21wX2NsYXVzZV9hc3NpZ25fb3ApOiBOZXcuCgkJKiBjcC10cmVlLmg6IERlY2xhcmUgdGhlbS4KCgkyMDA1LTEwLTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIGRlY2wuYyAoY2hlY2tfcHJldmlvdXNfZ290b18xKTogUmV0dXJuIGZhbHNlIGlmIGVycm9yLgoJCShjaGVja19zd2l0Y2hfZ290byk6IExpa2V3aXNlLgoJCShmaW5pc2hfY2FzZV9sYWJlbCk6IERvbid0IGVtaXQgdGhlIGNhc2UgbGFiZWwgb24gZXJyb3IuCgkJKiBwYXJzZXIuYyAoc3RydWN0IGNwX3BhcnNlcik6IFJldmVydAoJCWluX3N3aXRjaF9zdGF0ZW1lbnRfcCBjaGFuZ2VzLgoJCShjcF9wYXJzZXJfbGFiZWxlZF9zdGF0ZW1lbnQsCgkJY3BfcGFyc2VyX3NlbGVjdGlvbl9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCQkoY3BfcGFyc2VyX2JlZ2luX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrKTogRG9uJ3Qgc2F2ZS4uLgoJCShjcF9wYXJzZXJfZW5kX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrKTogb3IgcmVzdG9yZQoJCWluX3N3aXRjaF9zdGF0ZW1lbnRfcC4KCgkyMDA1LTEwLTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX3RocmVhZHByaXZhdGUpOiBTZXQKCQlkZWNsX2ZsYWdzLnUyc2VsIHdoZW4gbmVjZXNzYXJ5LgoKCTIwMDUtMTAtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogZGVjbC5jIChwb3BsZXZlbF9uYW1lZF9sYWJlbF8xKTogUmVzdG9yZSBjcmVhdGlvbiBvZiB0aGUKCQliYWRfZGVjbHMgbGlzdC4KCQkoZGVjbF9qdW1wX3Vuc2FmZSk6IENoZWNrIGZvciBlcnJvcl9tYXJrX25vZGUgdHlwZXMuCgkJKGNoZWNrX2dvdG8pOiBEb24ndCBjaGVjayBjZHRvcl9sYWJlbC4gIERvbid0IHVzZSBpZGVudGlmeV9nb3RvLgoJCSogc2VtYW50aWNzLmMgKGZpbmlzaF9yZXR1cm5fc3RtdCk6IERvIGNoZWNrX29tcF9yZXR1cm4gYmVmb3JlCgkJY29udmVydGluZyB0byBjZHRvcl9sYWJlbCBnb3RvLgoKCTIwMDUtMTAtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCVBSIGMrKy8yNDQ1MQoJCSogZGVjbC5jIChjaGVja19vbXBfcmV0dXJuKTogUmV0dXJuIGZhbHNlIG9uIGVycm9yLgoJCSogY3AtdHJlZS5oIChjaGVja19vbXBfcmV0dXJuKTogVXBkYXRlIGRlY2wuCgkJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3JldHVybl9zdG10KTogQXZvaWQgYWRkaW5nCgkJcmV0dXJuIG9uIGVycm9yLgoKCTIwMDUtMTAtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ3VhZ2VfZnVuY3Rpb24pOiBSZW1vdmUKCQl4X25hbWVkX2xhYmVsX3VzZXMuCgkJQ2hhbmdlIHhfbmFtZWRfbGFiZWxzIHRvIGEgaGFzaHRhYmxlLgoJCShjaGVja19vbXBfcmV0dXJuKTogRGVjbGFyZS4KCQkqIGRlY2wuYyAoc3RydWN0IG5hbWVkX2xhYmVsX3VzZV9lbnRyeSk6IFJlbmFtZSBmcm9tCgkJbmFtZWRfbGFiZWxfdXNlX2xpc3QuICBSZW1vdmUgbGFiZWxfZGVjbC4KCQkoc3RydWN0IG5hbWVkX2xhYmVsX2VudHJ5KTogUmVuYW1lIGZyb20KCQluYW1lZF9sYWJlbF9saXN0LiAgUmVtb3ZlIG9sZF92YWx1ZSBhbmQgbmV4dC4gIENoYW5nZQoJCWluX3RyeV9zY29wZSBhbmQgaW5fY2F0Y2hfc2NvcGUgdG8gYm9vbC4gQWRkCgkJaW5fb21wX3Njb3BlLgoJCShwb3BfbGFiZWxzXzEpOiBOZXcuCgkJKHBvcF9sYWJlbHMpOiBVc2UgaXQuCgkJKHBvcF9sb2NhbF9sYWJlbCwgcG9wbGV2ZWxfbmFtZWRfbGFiZWxfMSk6IE5ldy4KCQkocG9wbGV2ZWwpOiBVc2UgdGhlbS4KCQkobmFtZWRfbGFiZWxfZW50cnlfaGFzaCwgbmFtZWRfbGFiZWxfZW50cnlfZXEpOiBOZXcuCgkJKG1ha2VfbGFiZWxfZGVjbCk6IENyZWF0ZSBuYW1lZF9sYWJlbHMuICBNb3ZlIGxhYmVsCgkJY3JlYXRpb24gYml0cyBmcm9tIGxvb2t1cF9sYWJlbC4KCQkoZGVjbGFyZV9sb2NhbF9sYWJlbCk6IFRpZHkuCgkJKGlkZW50aWZ5X2dvdG8pOiBTcGxpdCBvdXQgZnJvbSAuLi4KCQkoY2hlY2tfcHJldmlvdXNfZ290b18xKTogQWRkIGV4aXRlZF9vbXAgYXJndW1lbnQuCgkJSGFuZGxlIG9tcCBzY29wZXMuCgoJCSh1c2VfbGFiZWwpOiBNZXJnZSBpbnRvLi4uCgkJKGNoZWNrX2dvdG8pOiAuLi4gaGVyZS4gIEhhbmRsZSBvbXAgc2NvcGVzLgoJCShjaGVja19vbXBfcmV0dXJuKTogTmV3LgoJCShjaGVja19wcmV2aW91c19nb3Rvcyk6IE1lcmdlIGludG8uLi4KCQkoZGVmaW5lX2xhYmVsKTogLi4uIGhlcmUuCgkJKHNhdmVfZnVuY3Rpb25fZGF0YSk6IFJlbW92ZSB4X25hbWVkX2xhYmVsX3VzZXMgcmVmZXJlbmNlLgoJCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCQkqIG5hbWUtbG9va3VwLmggKHNrX29tcCk6IE5ldy4KCQkqIG5hbWUtbG9va3VwLmMgKGJlZ2luX3Njb3BlKTogSGFuZGxlIGl0LgoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfZm9yKTogRG9uJ3QgY3JlYXRlIGV4dHJhCgkJY29tcG91bmQgc3RtdC4KCgkJKGNwX3BhcnNlcl9vbXBfc2VjdGlvbnMpOiBMaWtld2lzZS4KCQkqIHNlbWFudGljcy5jIChmaW5pc2hfcmV0dXJuX3N0bXQpOiBDYWxsIGNoZWNrX29tcF9yZXR1cm4uCgkJKGJlZ2luX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrKTogVXNlIHNrX29tcC4KCQkoZmluaXNoX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrKTogVXNlIGRvX3BvcGxldmVsLiAgRG9uJ3QgYnVpbGQgYQoJCU1VU1RfTk9UX1RIUk9XIGV4cHJlc3Npb24gaGVyZS4KCQkoYmVnaW5fb21wX3BhcmFsbGVsLCBmaW5pc2hfb21wX3BhcmFsbGVsKTogRG9uJ3QgY3JlYXRlIGV4dHJhCgkJY29tcG91bmQgc3RhdGVtZW50cy4KCgkyMDA1LTEwLTIxICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkJUFIgMjQ0NTUKCQkqIGNwL2NwLXRyZWUuaCAoc3RydWN0IGxhbmdfZGVjbF9mbGFncyk6IEFkZCBmaWVsZAoJCXRocmVhZHByaXZhdGVfcC4KCQkoQ1BfREVDTF9JU19USFJFQURQUklWQVRFKTogRGVmaW5lLgoJCSogY3Avc2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfdGhyZWFkcHJpdmF0ZSk6IFNldC4gIERvCgkJbm90IGVycm9yIG91dCBpZiBDUF9ERUNMX0lTX1RIUkVBRFBSSVZBVEUgaXMgc2V0CgkJYWxyZWFkeS4KCQkqIGNwL2RlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogTWVyZ2UKCQlDUF9ERUNMX1RIUkVBRFBSSVZBVEVfUC4KCgkyMDA1LTEwLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIGNwLWdpbXBsaWZ5LmMgKGNwX2dpbXBsaWZ5X29tcF9mb3IpOiBOZXcuCgkJKGNwX2dpbXBsaWZ5X2V4cHIpOiBDYWxsIGl0LgoJCSogY3AtdHJlZS5oIChPTVBfRk9SX0dJTVBMSUZZSU5HX1ApOiBOZXcuCgkJKiBwYXJzZXIuYyAoc3RydWN0IGNwX3BhcnNlcik6IFJlbmFtZQoJCWluX2l0ZXJhdGlvbl9zdGF0ZW1lbnRfcCB0byBpbl9pdGVyYXRpb25fc3RhdGVtZW50IGFuZAoJCWNoYW5nZSB0byB1bnNpZ25lZCBjaGFyLiAgU2ltaWxhcmx5IHdpdGgKCQlpbl9zd2l0Y2hfc3RhdGVtZW50LiAgVXBkYXRlIGFsbCB1c2Vycy4KCQkoSU5fT01QX0JMT0NLLCBJTl9PTVBfRk9SKTogTmV3LgoJCShjcF9wYXJzZXJfbGFiZWxlZF9zdGF0ZW1lbnQpOiBEaWFnbm9zZSBjYXNlIGxhYmVscwoJCWJpbmRpbmcgY2xvc2VyIHRvIGFuIG9wZW5tcCBibG9jayBuZXN0ZWQgdGhhbiB0aGUKCQlzd2l0Y2guCgkJKGNwX3BhcnNlcl9qdW1wX3N0YXRlbWVudCk6IERpYWdub3NlIGJyZWFrIGFuZAoJCWNvbnRpbnVlIGxhYmVscyBiaW5kaW5nIGNsb3NlciB0byBhbiBvcGVubXAgYmxvY2sgdGhhbgoJCWFuIGl0ZXJhdGlvbiBvciBzd2l0Y2guCgkJKGNwX3BhcnNlcl9vbXBfZm9yX2xvb3ApOiBNYXJrIGluX2l0ZXJhdGlvbl9zdGF0ZW1lbnQKCQlmb3IgYW4gb21wIGZvci4KCQkoY3BfcGFyc2VyX2JlZ2luX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrKTogTmV3LgoJCShjcF9wYXJzZXJfZW5kX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrKTogTmV3LgoJCShjcF9wYXJzZXJfb21wX3N0cnVjdHVyZWRfYmxvY2spOiBVc2UgdGhlbS4KCQkoY3BfcGFyc2VyX29tcF9mb3IsIGNwX3BhcnNlcl9vbXBfc2VjdGlvbnNfc2NvcGUpOiBMaWtld2lzZS4KCQkoY3BfcGFyc2VyX29tcF9wYXJhbGxlbCk6IExpa2V3aXNlLgoKCTIwMDUtMTAtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogc2VtYW50aWNzLmMgKGJlZ2luX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrKTogTmV3LgoJCShmaW5pc2hfb21wX3N0cnVjdHVyZWRfYmxvY2spOiBOZXcuCgkJKGJlZ2luX29tcF9wYXJhbGxlbCwgZmluaXNoX29tcF9wYXJhbGxlbCk6IFVzZSB0aGVtLgoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfc3RydWN0dXJlZF9ibG9jayk6IExpa2V3aXNlLgoJCShjcF9wYXJzZXJfb21wX2Zvcik6IExpa2V3aXNlLgoJCShjcF9wYXJzZXJfb21wX3NlY3Rpb25zX3Njb3BlKTogTGlrZXdpc2UuCgkJKiBjcC10cmVlLmg6IERlY2xhcmUgdGhlbS4KCgkyMDA1LTEwLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIHBhcnNlci5jIChjcF9wYXJzZXJfb21wX21hc3Rlcik6IFJldHVybiB0aGUgc3RhdGVtZW50LgoJCShjcF9wYXJzZXJfb21wX29yZGVyZWQpOiBMaWtld2lzZS4KCQkoY3BfcGFyc2VyX29tcF9jb25zdHJ1Y3QpOiBTZXQgdGhlIGxvY3VzIGZvciB0aGVtLgoKCTIwMDUtMTAtMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfYXRvbWljKTogUmV2ZXJ0IHRvCgkJdXNlc190ZW1wbGF0ZV9wYXJtcy4KCgkyMDA1LTEwLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX2NsYXVzZXMpOiBBdm9pZAoJCURFQ0xfVEhSRUFEX0xPQ0FMX1Agb24gYSBQQVJNX0RFQ0wuICBSZW1vdmUgc29tZQoJCXN0dWIgYXNzZXJ0cyBndWFyYW50ZWVkIHRvIGZhaWwuCgoJMjAwNS0xMC0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkJKiBjcC10cmVlLmggKE9NUF9BVE9NSUNfREVQRU5ERU5UX1AsIE9NUF9BVE9NSUNfQ09ERSk6IE5ldy4KCQkoZmluaXNoX29tcF9jbGF1c2VzLCBmaW5pc2hfb21wX2ZvciwgZmluaXNoX29tcF9hdG9taWMpOiBOZXcuCgkJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX29tcF9jbGF1c2VfY29weWluKTogUmVtb3ZlLgoJCShjcF9wYXJzZXJfb21wX2FsbF9jbGF1c2VzKTogVXNlIGNwX3BhcnNlcl9vbXBfdmFyX2xpc3QgaW5zdGVhZC4KCQlDYWxsIGZpbmlzaF9vbXBfY2xhdXNlcy4KCQkoY3BfcGFyc2VyX29tcF9jbGF1c2VfaWYpOiBEb24ndCBkbyBlcnJvciBjaGVja2luZyBoZXJlLgoJCShjcF9wYXJzZXJfb21wX2NsYXVzZV9udW1fdGhyZWFkcyk6IExpa2V3aXNlLgoJCShjcF9wYXJzZXJfb21wX2NsYXVzZV9zY2hlZHVsZSk6IExpa2V3aXNlLgoJCShjcF9wYXJzZXJfb21wX2F0b21pYyk6IFVzZSBmaW5pc2hfb21wX2F0b21pYy4KCQkoY3BfcGFyc2VyX29tcF9mb3JfbG9vcCk6IERvbid0IGRpc2NhcmQgREVDTF9FWFBSLgoJCURvbid0IGRlY29tcG9zZSBhc3NpZ25tZW50IHN0YXRtZW50IGhlcmUuICBVc2UKCQlmaW5pc2hfb21wX2Zvci4KCgkJKiBwdC5jICh0c3Vic3Rfb21wX2NsYXVzZXMpOiBOZXcuCgkJKHRzdWJzdF9leHByKTogSGFuZGxlIE9NUF9QQVJBTExFTCwgT01QX0ZPUiwgT01QX1NFQ1RJT05TLAoJCU9NUF9TSU5HTEUsIE9NUF9TRUNUSU9OLCBPTVBfQ1JJVElDQUwsIE9NUF9BVE9NSUMuCgkJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF9jbGF1c2VzKTogTmV3LgoJCShiZWdpbl9vbXBfcGFyYWxsZWwsIGZpbmlzaF9vbXBfcGFyYWxsZWwpOiBLbm93IExlc3MgYWJvdXQgdGhlCgkJaW50ZXJuYWxzIG9mIHRoZSBzdG10X2xpc3Qgc3RhY2suCgkJKGZpbmlzaF9vbXBfZm9yLCBmaW5pc2hfb21wX2F0b21pYyk6IE5ldy4KCgkyMDA1LTEwLTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkJKiBzZW1hbnRpY3MuYyAoY3h4X29tcF9wcmVkZXRlcm1pbmVkX3NoYXJpbmcpOiBOZXcgZnVuY3Rpb24uCgkJKiBjcC10cmVlLmggKGN4eF9vbXBfcHJlZGV0ZXJtaW5lZF9zaGFyaW5nKTogTmV3IHByb3RvdHlwZS4KCQkqIGNwLW9iamNwLWNvbW1vbi5oCgkJKExBTkdfSE9PS1NfT01QX1BSRURFVEVSTUlORURfU0hBUklORyk6IFJlZGVmaW5lLgoKCTIwMDUtMTAtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfc2luZ2xlKTogVXNlIG1ha2Vfbm9kZSBhbmQgYWNjZXNzb3JzCgkJaW5zdGVhZCBvZiBidWlsZC4KCgkyMDA1LTEwLTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIHBhcnNlci5jIChjcF9wYXJzZXJfb21wX2Zvcl9sb29wKTogSGFuZGxlIGRlY2xhcmF0aW9ucy4KCgkyMDA1LTEwLTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIE1ha2UtbGFuZy5pbiAoQ1hYX0NfT0JKUyk6IEFkZCBjLW9tcC5vLgoJCSogY3AtdHJlZS5oIChiZWdpbl9vbXBfcGFyYWxsZWwsIGZpbmlzaF9vbXBfcGFyYWxsZWwpOiBEZWNsYXJlLgoJCShmaW5pc2hfb21wX3RocmVhZHByaXZhdGUpOiBEZWNsYXJlLgoJCSogcGFyc2VyLmMgKHN0cnVjdCBjcF9sZXhlcik6IEFkZCBpbl9wcmFnbWEuCgkJKGNwX2xleGVyX2NvbnN1bWVfdG9rZW4pOiBEb24ndCBjb25zdW1lIGEgUFJBR01BX0VPTAoJCXdoZW4gaW5fcHJhZ21hLgoJCShjcF9wYXJzZXJfc2tpcF90b19jbG9zaW5nX3BhcmVudGhlc2lzKTogU3RvcCBhdCBQUkFHTUFfRU9MLgoJCShjcF9wYXJzZXJfc2tpcF90b19lbmRfb2Zfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkJKGNwX3BhcnNlcl9za2lwX3RvX2VuZF9vZl9ibG9ja19vcl9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCQkoY3BfcGFyc2VyX3NraXBfdG9fY2xvc2luZ19icmFjZSk6IExpa2V3aXNlLgoJCShjcF9wYXJzZXJfc2tpcF90b19wcmFnbWFfZW9sKTogUmVzZXQgaW5fcHJhZ21hLgoJCShjcF9wYXJzZXJfcmVxdWlyZV9wcmFnbWFfZW9sKTogTmV3LgoJCShjcF9wYXJzZXJfc3RhdGVtZW50KTogQWRkIGluX2NvbXBvdW5kIGFyZ3VtZW50OwoJCXVwZGF0ZSBhbGwgY2FsbGVycy4KCQlSZXN0YXJ0IGlmIGEgbm9uLXN0YXRlbWVudCBwcmFnbWEgc2VlbiBvdXRzaWRlIGEKCQljb21wb3VuZC4KCQkoY3BfcGFyc2VyX3N0YXRlbWVudF9zZXFfb3B0KTogU3RvcCBhdCBQUkFHTUFfRU9MLgoJCShjcF9wYXJzZXJfZGVjbGFyYXRpb25fc2VxX29wdCk6IExpa2V3aXNlLgoJCShjcF9wYXJzZXJfbWVtYmVyX3NwZWNpZmljYXRpb25fb3B0KTogTGlrZXdpc2UuCgkJKGNwX3BhcnNlcl9mdW5jdGlvbl9kZWZpbml0aW9uX2FmdGVyX2RlY2wpOiBMaWtld2lzZS4KCQkoY3BfcGFyc2VyX3NraXBfdW50aWxfZm91bmQpOiBMaWtld2lzZS4KCQkoY3BfcGFyc2VyX2NhY2hlX2dyb3VwKTogTGlrZXdpc2UuCgkJKGVudW0gcHJhZ21hX29tcF9jbGF1c2UsIGNwX3BhcnNlcl9vbXBfY2xhdXNlX25hbWUsCgkJY2hlY2tfbm9fZHVwbGljYXRlX2NsYXVzZSwKCQljcF9wYXJzZXJfb21wX3Zhcl9saXN0X25vX29wZW4sCgkJY3BfcGFyc2VyX29tcF92YXJfbGlzdCwgY3BfcGFyc2VyX29tcF9jbGF1c2VfY29weWluLAoJCWNwX3BhcnNlcl9vbXBfY2xhdXNlX2RlZmF1bHQsIGNwX3BhcnNlcl9vbXBfY2xhdXNlX2lmLAoJCWNwX3BhcnNlcl9vbXBfY2xhdXNlX25vd2FpdCwKCQljcF9wYXJzZXJfb21wX2NsYXVzZV9udW1fdGhyZWFkcywKCQljcF9wYXJzZXJfb21wX2NsYXVzZV9vcmRlcmVkLAoJCWNwX3BhcnNlcl9vbXBfY2xhdXNlX3JlZHVjdGlvbiwKCQljcF9wYXJzZXJfb21wX2NsYXVzZV9zY2hlZHVsZSwKCQljcF9wYXJzZXJfb21wX2FsbF9jbGF1c2VzLAoJCWNwX3BhcnNlcl9vbXBfc3RydWN0dXJlZF9ibG9jaywgY3BfcGFyc2VyX29tcF9hdG9taWMsCgkJY3BfcGFyc2VyX29tcF9iYXJyaWVyLCBjcF9wYXJzZXJfb21wX2NyaXRpY2FsLAoJCWNwX3BhcnNlcl9vbXBfZmx1c2gsIGNwX3BhcnNlcl9vbXBfZm9yX2xvb3AsCgkJY3BfcGFyc2VyX29tcF9mb3IsIGNwX3BhcnNlcl9vbXBfbWFzdGVyLAoJCWNwX3BhcnNlcl9vbXBfb3JkZXJlZCwgY3BfcGFyc2VyX29tcF9zZWN0aW9uc19zY29wZSwKCQljcF9wYXJzZXJfb21wX3NlY3Rpb25zLCBjcF9wYXJzZXJfb21wX3BhcmFsbGVsLAoJCWNwX3BhcnNlcl9vbXBfc2luZ2xlLCBjcF9wYXJzZXJfb21wX3RocmVhZHByaXZhdGUsCgkJY3BfcGFyc2VyX29tcF9jb25zdHJ1Y3QpOiBOZXcuCgkJKGNwX3BhcnNlcl9wcmFnbWEpOiBIYW5kbGUgT3Blbk1QIHByYWdtYXMuCgkJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF90aHJlYWRwcml2YXRlKTogTmV3LgoJCShiZWdpbl9vbXBfcGFyYWxsZWwsIGZpbmlzaF9vbXBfcGFyYWxsZWwpOiBOZXcuCgoJMjAwNS0xMC0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkJKiBwYXJzZXIuYyAoc3RydWN0IGNwX3Rva2VuKTogQWRkIHByYWdtYV9raW5kLgoJCShlb2ZfdG9rZW4pOiBJbml0aWFsaXplIGl0LgoJCShjcF9sZXhlcl9oYW5kbGVfcHJhZ21hKTogUmVtb3ZlLgoJCShjcF9wYXJzZXJfaW5pdGlhbF9wcmFnbWEpOiBOZXcuCgkJKGNwX2xleGVyX25ld19tYWluKTogVXNlIGl0LgoJCShjcF9sZXhlcl9nZXRfcHJlcHJvY2Vzc29yX3Rva2VuKTogSW5pdGlhbGl6ZSBwcmFnbWFfa2luZC4KCQkoY3BfbGV4ZXJfcHJpbnRfdG9rZW4pOiBEb24ndCBoYW5kbGUgQ1BQX1BSQUdNQS4KCQkoY3BfcGFyc2VyX3NraXBfdG9fcHJhZ21hX2VvbCk6IE5ldy4KCQkoY3BfcGFyc2VyX2Vycm9yKTogVXNlIGl0LgoJCShwcmFnbWFfbGV4KTogTmV3LgoKCTIwMDUtMTAtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogbGV4LmMgKHBhcnNlX3N0cmNvbnN0X3ByYWdtYSk6IFVwZGF0ZSBmb3IgY19sZXggbmFtZSBjaGFuZ2UuCgkJKGhhbmRsZV9wcmFnbWFfamF2YV9leGNlcHRpb25zKTogTGlrZXdpc2UuCgkJKiBwYXJzZXIuYyAoY3BfbGV4ZXJfbmV3X21haW4pOiBMaWtld2lzZS4KCgkyMDA1LTEwLTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIHBhcnNlci5jIChjcF9sZXhlcl9uZXdfbWFpbik6IENvbW1lbnQgb3V0IGRlZmVyX3ByYWdtYXMuCgkJKGNwX2xleGVyX2hhbmRsZV9wcmFnbWEpOiBDb21tZW50IG91dAoJCWNwcF9oYW5kbGVfZGVmZXJyZWRfcHJhZ21hLgoKCTIwMDUtMTAtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogbmFtZS1sb29rdXAuYyAobG9va3VwX25hbWUpOiBSZW1vdmUgcHJlZmVyX3R5cGUgYXJndW1lbnQuCgkJKGxvb2t1cF9uYW1lX3ByZWZlcl90eXBlKTogTmV3IGZ1bmN0aW9uLgoJCSogbmFtZS1sb29rdXAuaCAobG9va3VwX25hbWVfcHJlZmVyX3R5cGUpOiBEZWNsYXJlIGl0LgoJCSogZGVjbC5jIChsb29rdXBfYW5kX2NoZWNrX3RhZyk6IFVzZSBpdC4KCQkqIHB0LmMgKHRzdWJzdF9mcmllbmRfY2xhc3MpOiBMaWtld2lzZS4gVXBkYXRlIGZvcgoJCWxvb2t1cF9uYW1lIGNoYW5nZS4KCQkobG9va3VwX3RlbXBsYXRlX2NsYXNzLCB0c3Vic3RfY29weV9hbmRfYnVpbGQpOiBMaWtld2lzZS4KCjIwMDYtMDMtMDYgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzE1NzU5CgkqIHRyZWUuYyAoYm90X21hbmlwKTogRG9uJ3QgY2FsbCBtYXJrX3VzZWQuCgoyMDA2LTAzLTAyICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IFJlbW92ZSByZWR1bmRhbnQgY2FsbCB0bwoJdGFyZ2V0bS5jeHgua2V5X21ldGhvZF9tYXlfYmVfaW5saW5lICgpLgoKMjAwNi0wMy0wMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBVc2UgaGF2ZV9nbG9iYWxfYnNzX3Agd2hlbiBkZWNpZGluZwoJd2hldGhlciB0byBtYWtlIHRoZSBkZWNsIGNvbW1vbi4KCjIwMDYtMDMtMDEgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCVBSIGRhcndpbi8yNTkwOAoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBGaXggQUJJIGJyZWFrYWdlIG9uIGRhcndpbi4KCjIwMDYtMDItMjQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IEhhbmRsZQoJZmxhZ191c2VfY3hhX2dldF9leGNlcHRpb25fcHRyLgoKMjAwNi0wMi0yMiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjYyOTEKCSogZGVjbC5jIChncm9rX29wX3Byb3BlcnRpZXMpOiBDaGVjayBmb3IgZWxsaXBzaXMgaW4gYXJndW1lbnRzIG9mCglvcGVyYXRvcnMuCgoyMDA2LTAyLTIwICBSYWZhZWwgwXZpbGEgZGUgRXNw7W5kb2xhICA8cmFmYWVsLmVzcGluZG9sYUBnbWFpbC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKEMrKyk6IFJlbW92ZS4KCSguUEhPTlkpOiBSZW1vdmUgQysrLgoKMjAwNi0wMi0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjYyNjYKCSogY3AtdHJlZS5oIChjcF9maW5pc2hfZGVjbCk6IEFkanVzdCBkZWNsYXJhdGlvbi4KCShncm9rYml0ZmllbGQpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wpOiBMaWtld2lzZS4KCSogaW5pdC5jIChjb25zdGFudF92YWx1ZV8xKTogRW5zdXJlIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCB3aGVuCglmb2xkaW5nIG5vbi1kZXBlbmRlbnQgaW5pdGlhbGl6ZXJzIGZvciBzdGF0aWMgZGF0YSBtZW1iZXJzIG9mCglkZXBlbmRlbnQgdHlwZXMuICBSZXR1cm4gZXJyb3JfbWFya19ub2RlIGZvciBlcnJvbmVvdXMKCWluaXRhaWxpemVycy4KCSogY2xhc3MuYyAoZ2V0X3Z0YWJsZV9kZWNsKTogVXNlIGZpbmlzaF9kZWNsLCBub3QgY3BfZmluaXNoX2RlY2wuCgkqIGRlY2wuYyAoY3BfbWFrZV9mbmFtZV9kZWNsKTogQWRqdXN0IGNhbGwgdG8gY3BfZmluaXNoX2RlY2wuCgkoY3BfZmluaXNoX2RlY2wpOiBBZGQgaW5pdF9jb25zdF9leHByX3AgcGFyYW1ldGVyLiAgU2V0CglERUNMX0lOSVRJQUxJWkVEX0JZX0NPTlNUQU5UX0VYUFJFU1NJT05fUCBoZXJlLgoJKGZpbmlzaF9kZWNsKTogQWRqdXN0IGNhbGwgdG8gY3BfZmluaXNoX2RlY2wuCgkoY29tcHV0ZV9hcnJheV9pbmRleF90eXBlKTogUm9idXN0aWZ5LgoJKHN0YXJ0X21ldGhvZCk6IFVzZSBmaW5pc2hfZGVjbCwgbm90IGNwX2ZpbmlzaF9kZWNsLgoJKiBydHRpLmMgKGVtaXRfdGluZm9fZGVjbCk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoaW5pdGlhbGl6ZV9oYW5kbGVyX3Bhcm0pOiBBZGp1c3QgY2FsbCB0bwoJY3BfZmluaXNoX2RlY2wuCgkoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogTGlrZXdpc2UuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBBZGp1c3QgY2FsbCB0byBjcF9maW5pc2hfZGVjbC4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBBZGp1c3QgY2FsbCB0bwoJZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcl9kZWNsLgoJKHRzdWJzdF9leHByKTogVXNlIGZpbmlzaF9kZWNsLCBub3QgY3BfZmluaXNoX2RlY2wuCgkoaW5zdGFudGlhdGVfZGVjbCk6IEFkanVzdCBjYWxsIHRvIGNwX2ZpbmlzaF9kZWNsLgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoZGVjbF90b3BfbGV2ZWxfMSk6IFVzZSBmaW5pc2hfZGVjbCwgbm90CgljcF9maW5pc2hfZGVjbC4KCSogZGVjbDIuYyAoZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcl9kZWNsKTogQWRkIGluaXRfY29uc3RfZXhwcl9wCglwYXJhbWV0ZXIuCgkoZ3Jva2ZpZWxkKTogTGlrZXdpc2UuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfY29uZGl0aW9uKTogQ2hlY2sgZm9yIGNvbnN0YW50IGluaXRpYWxpemVycy4KCShjcF9wYXJzZXJfaW5pdF9kZWNsYXJhdG9yKTogQWRqdXN0IGNhbGxzIHRvIGdyb2tmaWVsZCBhbmQKCWNwX2ZpbmlzaF9kZWNsLiAgRG9uJ3Qgc2V0CglERUNMX0lOSVRJQUxJWkVEX0JZX0NPTlNUQU5UX0VYUFJFU1NJT05fUCBoZXJlLgoJKGNwX3BhcnNlcl9tZW1iZXJfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19jbGFzc19pdmFycyk6IExpa2V3aXNlLgoKMjAwNi0wMi0xNCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IFJldHVybiBOVUxMIGluc3RlYWQgb2YgMC4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogTGlrZXdpc2UuCgkodG91cm5leSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHJlZGVjbGFyYXRpb25fZXJyb3JfbWVzc2FnZSk6IExpa2V3aXNlLgoJKiBlcnJvci5jIChsYW5ndWFnZV90b19zdHJpbmcpOiBMaWtld2lzZS4KCjIwMDYtMDItMTMgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBjcC10cmVlLmggKHdhcm5faGlkZGVuKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogY2xhc3MuYyAod2Fybl9oaWRkZW4pOiBNYWtlIHN0YXRpYy4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfdHlwZV9jb252ZXJzaW9uKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogY3Z0LmMgKGJ1aWxkX3R5cGVfY29udmVyc2lvbik6IEFkZCBwcm90b3R5cGUsIG1ha2Ugc3RhdGljLgoKCSogY3AtdHJlZS5oIChwdXNoX3RpbnN0X2xldmVsKTogUmVtb3ZlIHByb3RvdHlwZS4KCShwb3BfdGluc3RfbGV2ZWwpOiBMaWtld2lzZS4KCSogcHQuYyAocHVzaF90aW5zdF9sZXZlbCk6IEFkZCBwcm90b3R5cGUsIG1ha2Ugc3RhdGljLgoJKHBvcF90aW5zdF9sZXZlbCk6IExpa2V3aXNlLgoKMjAwNi0wMi0xMyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZXR1cm4gTlVMTF9UUkVFIGluc3RlYWQgb2YgMC4KCSogdHlwZWNrLmMgKHVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogTGlrZXdpc2UuCgoyMDA2LTAyLTEzICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogbGV4LmMgKHBhcnNlX3N0cmNvbnN0X3ByYWdtYSk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgaW5zdGVhZCBvZgoJIih0cmVlKS0xIiB0byBpbmRpY2F0ZSBmYWlsdXJlLiAgU2ltcGxpZnkuCgkoaGFuZGxlX3ByYWdtYV9pbnRlcmZhY2UpOiBUZXN0IGZvciBlcnJvcl9tYXJrX25vZGUgaW5zdGVhZCBvZgoJIih0cmVlKS0xIi4KCShoYW5kbGVfcHJhZ21hX2ltcGxlbWVudGF0aW9uKTogTGlrZXdpc2UuCgoyMDA2LTAyLTEzICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNjE1MQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2RlY2xfc3BlY2lmaWVyX3NlcSk6IENoZWNrIGZvciBkdXBsaWNhdGUKCWRlY2wtc3BlY2lmaWVycy4gIFJlbW92ZSBleHRyYSBjaGVjayBmb3IgZHVwbGljYXRlICdmcmllbmQnLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmVtb3ZlIGNoZWNrIGZvciBkdXBsaWNhdGUKCWRlY2wtc3BlY2lmaWVycy4gIFNldCBsb25nbG9uZyB0b2dldGhlciB3aXRoIGxvbmdfcC4KCjIwMDYtMDItMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNDk5NgoJKiBleGNlcHQuYyAoYnVpbGRfdGhyb3cpOiBBZGQgYSBDTEVBTlVQX1BPSU5UX0VYUFIgaW5zaWRlIHRoZQoJVFJZX0NBVENIX0VYUFIgb3IgTVVTVF9OT1RfVEhST1dfRVhQUi4KCjIwMDYtMDItMTAgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBjbGFzcy5jIChkZWJ1Z19jbGFzcyk6IFJlbW92ZSBleHRlcm4uCgkoZGVidWdfdGh1bmtzKTogTGlrZXdpc2UuCgoyMDA2LTAyLTA5ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIHR5cGVjay5jIChzdHJpbmdfY29udl9wKTogRG9uJ3QgdGVzdCBmb3IgZmxhZ19jb25zdF9zdHJpbmdzLgoKMjAwNi0wMi0wOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI1OTc5CgkqIGNwLWdpbXBsaWZ5LmMgKGNwX2dpbXBsaWZ5X2V4cHIpOiBEb24ndCBjYWxsCgljcF9naW1wbGlmeV9pbml0X2V4cHIgZm9yIE1PRElGWV9FWFBScy4KCSogdHlwZWNrMi5jIChzcGxpdF9ub25jb25zdGFudF9pbml0XzEpOiBVc2UgSU5JVF9FWFBSLgoKMjAwNi0wMi0wOCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjYwNzEKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFNldCBkbmFtZSBhbHNvIGZvciBkZXN0cnVjdG9yLgoKCVBSIGMrKy8yNjA3MAoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ2xlYXIgc3RvcmFnZV9jbGFzcyB0b2dldGhlciB3aXRoIHN0YXRpY3AuCgoyMDA2LTAyLTA3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGNwLXRyZWUuaCAodGZfd2FybmluZ19vcl9lcnJvcik6IFJlbmFtZWQgZnJvbSB0Zl93YXJuX29yX2Vycm9yLgoJKGNwX2J1aWxkX3F1YWxpZmllZF90eXBlKTogUHJvcG9nYXRlIHJlbmFtaW5nLgoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZV9yZWFsKTogTGlrZXdpc2UuCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIsIGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlLCBncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uLCBpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSwKCXRzdWJzdF9kZWZhdWx0X2FyZ3VtZW50LCBpbnN0YW50aWF0ZV9kZWNsLAoJdHN1YnN0X2luaXRpYWxpemVyX2xpc3QsIHRzdWJzdF9lbnVtKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdGVtcGxhdGVfdHlwZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfcHRybWVtZnVuYywgY29udmVydF9mb3JfYXNzaWdubWVudCk6IExpa2V3aXNlLgoKMjAwNi0wMi0wNyAgRGlyayBNdWVsbGVyICA8ZG11ZWxsZXJAc3VzZS5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogQW5ub3RhdGUgZGl2LWJ5LXplcm8KCXdhcm5pbmdzIHRvIG1ha2UgLVduby1kaXYtYnktemVybyBoYXZlIGFuIGVmZmVjdC4KCjIwMDYtMDItMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzk3MzcKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm1zKTogRG8gbm90IHRlbXBsYXRlcyB3aXRoCglleGNlc3MgZGVmYXVsdCBhcmd1bWVudHMgdG8gbWF0Y2ggdGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1ldGVycwoJd2l0aCBmZXdlciBwYXJhbWV0ZXJzLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEFkZCB1c2VfZGVmYXVsdF9hcmdzIHBhcmFtZXRlcjsgdXNlCglkZWZhdWx0IGFyZ3VtZW50cyBvbmx5IHdoZW4gdHJ1ZS4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBBZGp1c3QgY2FsbCB0byBjb2VyY2VfdGVtcGxhdGVfcGFybXMuCgkoZm5fdHlwZV91bmlmaWNhdGlvbik6IExpa2V3aXNlLgoJKHVuaWZ5KTogTGlrZXdpc2UuCgkoZ2V0X2JpbmRpbmdzKTogTGlrZXdpc2UuCgkoZGVwZW5kZW50X3R5cGVfcCk6IEFkZCBhc3NlcnRpb25zLgoKMjAwNi0wMi0wNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgYm90aGVyIGNoZWNraW5nIGZvciBDSEFSX1RZUEUuCgkqIHJ0dGkuYyAodHlwZWluZm9faW5fbGliX3ApOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChJTlRFR1JBTF9DT0RFX1AsIENQX0lOVEVHUkFMX1RZUEVfUCk6IExpa2V3aXNlLgoJKiBuYW1lLWxvb2t1cC5jIChhcmdfYXNzb2NfdHlwZSk6IExpa2V3aXNlLgoKMjAwNi0wMi0wNCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBjcC10cmVlLmggKHRmX3dhcm5fb3JfZXJyb3IpOiBOZXcgc3Vic3RpdHVpb24gZmxhZy4KCShjcF9idWlsZF9xdWFsaWZpZWRfdHlwZSk6IFVzZSBpdC4KCSogY2FsbC5jIChjb252ZXJ0X2xpa2VfcmVhbCk6IExpa2V3aXNlLgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogTGlrZXdpc2UuCgkoY29udmVydF90b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkodHN1YnN0X2RlZmF1bHRfYXJndW1lbnQpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgkodHN1YnN0X2luaXRpYWxpemVyX2xpc3QpOiBMaWtld2lzZS4KCSh0c3Vic3RfZW51bSk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3RlbXBsYXRlX3R5cGUpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX3B0cm1lbWZ1bmMpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgoyMDA2LTAyLTAzICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAZ21haWwuY29tPgoKCSogdHlwZWNrLmMgKHN0cmluZ19jb252X3ApOiBQYXNzIGFwcHJvcGlhdGUKCU9QVF9XeHh4eCB2YWx1ZXMgd2hlbiBjYWxsaW5nIHdhcm5pbmcoKS4KCShidWlsZF9hcnJheV9yZWYsIGN4eF9tYXJrX2FkZHJlc3NhYmxlKTogTGlrZXdpc2UuCgkoY2hlY2tfcmV0dXJuX2V4cHIpOiBMaWtld2lzZS4KCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IExpa2V3aXNlLgoJKHNvcnRfbWVtX2luaXRpYWxpemVycywgZW1pdF9tZW1faW5pdGlhbGl6ZXJzKTogTGlrZXdpc2UuCgoJKiBjbGFzcy5jIChjaGVja19maWVsZF9kZWNscyk6IExpa2V3aXNlLgoJKHdhcm5fYWJvdXRfYW1iaWd1b3VzX2Jhc2VzKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKHBvcF9sYWJlbCwgcG9wbGV2ZWwpOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfZGVjbHMsIGdyb2tfb3BfcHJvcGVydGllcyk6IExpa2V3aXNlLgoJKHN0YXJ0X3ByZXBhcnNlZF9mdW5jdGlvbiwgZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoZGVjbF9tYXliZV9mcmllbmQpOiBMaWtld2lzZS4KCShwdXNoZGVjbF9tYXliZV9mcmllbmQpOiBMaWtld2lzZS4KCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfd2Fybl9taW5fbWF4KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2Nhc3RfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoKCSogbWV0aG9kLmMgKGxhemlseV9kZWNsYXJlX2ZuKTogTGlrZXdpc2UuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3ZvaWQpOiBMaWtld2lzZS4KCSogbWFuZ2xlLmMgKGZpbmlzaF9tYW5nbGluZyk6IExpa2V3aXNlLgoJKiBjcC1naW1wbGlmeS5jIChnaW1wbGlmeV9leHByX3N0bXQpOiBMaWtld2lzZS4KCjIwMDYtMDItMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBuYW1lLWxvb2t1cC5jIChkb19jbGFzc191c2luZ19kZWNsKTogVXNlIElERU5USUZJRVJfVFlQRU5BTUVfUCwKCW5vdCBJREVOVElGSUVSX09QTkFNRV9QLgoKMjAwNi0wMS0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjUzNDIKCSogY3AtdHJlZS5oIChERUNMX1RFTVBMQVRFX1NQRUNJQUxJWkFUSU9OUyk6IFJldmlzZQoJZG9jdW1lbnRhdGlvbi4KCSogcHQuYyAoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogVXNlIElOTkVSTU9TVF9URU1QTEFURV9QQVJNUywKCW5vdCBUUkVFX1ZBTFVFLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogU2ltcGxpZnkuCgkodmVyaWZ5X2NsYXNzX3VuaWZpY2F0aW9uKTogUmVtb3ZlLgoJKHVuaWZ5KTogRG9jdW1lbnQgcGFyYW1ldGVycy4gIFVzZSBJTk5FUk1PU1RfVEVNUExBVEVfQVJHUyB0bwoJcGVybWl0IG11bHRpcGxlIGxldmVscyBvZiB0ZW1wbGF0ZSBhcmd1bWVudHMuCgkobW9yZV9zcGVjaWFsaXplZF9jbGFzcyk6IFNpbXBsaWZ5LgoJKGdldF9jbGFzc19iaW5kaW5ncyk6IFBhc3MgZnVsbCBhcmd1bWVudHMgdG8gdW5pZnkuICBGb2xkCgl2ZXJpZnlfY2xhc3NfdW5pZmljYXRpb24gaW50byB0aGlzIGZ1bmN0aW9uLiAgUmV0dXJuIGZ1bGwKCWFyZ3VtZW50cy4KCShtb3N0X3NwZWNpYWxpemVkX2NsYXNzKTogQWRqdXN0IGZvciBjaGFuZ2VzIHRvCglnZXRfY2xhc3NfYmluZGluZ3MuICBJc3N1ZSBlcnJvcnMgaGVyZSBmb3IgYW1iaWd1aXR5LiAgUmV0dXJuIHRoZQoJZnVsbHkgZGVkdWNlZCBhcmd1bWVudHMgZm9yIHRoZSBtb3N0IHNwZWNpYWxpemVkIGNsYXNzLCBpbgoJYWRkaXRpb24gdG8gdGhlIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24uCgoyMDA2LTAxLTMxICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIG1hbmdsZS5jOiBDb21tZW50IGZpeC4KCjIwMDYtMDEtMjkgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogTWFrZS1sYW5nLmluIChjcC13YXJuKTogSW5jbHVkZSBDWFhfQ09NUEFUX1dBUk4uCgkqIHJlcG8uYyAoZXh0cmFjdF9zdHJpbmcsIGFmZ2V0cyk6IFVzZSBjYXN0IHdoZW4gY29udmVydGluZyBmcm9tCgl2b2lkICouCgoyMDA2LTAxLTI5ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGNhbGwuYyAoYWxsb2NfY29udmVyc2lvbik6IFVzZSBjYXN0IHdoZW4gY29udmVydGluZyBmcm9tIHZvaWQgKi4KCShhbGxvY19jb252ZXJzaW9ucyk6IExpa2V3aXNlLgoJKGFkZF9jYW5kaWRhdGUpOiBMaWtld2lzZS4KCShwcmludF96X2NhbmRpZGF0ZXMpOiBMaWtld2lzZS4KCShhZGRfd2FybmluZyk6IExpa2V3aXNlLgoJKiBwdC5jIChyZXRyaWV2ZV9sb2NhbF9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKHByb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKG1hbmdsZV9jbGFzc19uYW1lX2Zvcl90ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKHRzdWJzdF90ZW1wbGF0ZV9hcmdzKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAocGF0X2NhbGNfaGFzaCk6IExpa2V3aXNlLgoJKHBhdF9jb21wYXJlKTogTGlrZXdpc2UuCgkoYWJzdHJhY3RfdmlydHVhbHNfZXJyb3IpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAobWV0aG9kX25hbWVfY21wKTogTGlrZXdpc2UuCgkocmVzb3J0X21ldGhvZF9uYW1lX2NtcCk6IExpa2V3aXNlLgoJKGdldF92ZmllbGRfbmFtZSk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChnZW5lcmF0ZV9jdG9yX2FuZF9kdG9yX2Z1bmN0aW9uc19mb3JfcHJpb3JpdHkpOiBMaWtld2lzZS4KCSogbGV4LmMgKGluaXRfcmVzd29yZHMpOiBMaWtld2lzZS4KCSogcnR0aS5jIChjcmVhdGVfcHNldWRvX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoZGZzX2xvb2t1cF9iYXNlKTogTGlrZXdpc2UuCgkoZGZzX2RjYXN0X2hpbnRfcHJlKTogTGlrZXdpc2UuCgkoZGZzX2RjYXN0X2hpbnRfcG9zdCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGhhc2hfdHJlZV9jb25zKTogTGlrZXdpc2UuCgkqIHJlcG8uYyAoZXh0cmFjdF9zdHJpbmcpOiBMaWtld2lzZS4KCShhZmdldHMpOiBMaWtld2lzZS4KCSogY3Atb2JqY3AtY29tbW9uLmMgKGRlY2xfc2hhZG93ZWRfZm9yX3Zhcl9sb29rdXApOiBMaWtld2lzZS4KCSogZysrc3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IExpa2V3aXNlLgoKMjAwNi0wMS0yOCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBjYWxsLmMgKGpvdXN0KTogUGFzcyBvcHRpb24gY29kZSB0byB3YXJuaW5nLiAgVXNlIGluZm9ybSBmb3IKCWV4cGxhbmF0aW9uLgoJKiBjbGFzcy5jIChjaGVja19iYXNlcyk6IExpa2V3aXNlLgoJKG1heWJlX3dhcm5fYWJvdXRfb3Zlcmx5X3ByaXZhdGVfY2xhc3MpOiBMaWtld2lzZS4KCShjaGVja19maWVsZF9kZWNscyk6IExpa2V3aXNlLgoJKGxheW91dF9lbXB0eV9iYXNlKTogTGlrZXdpc2UuCgkobGF5b3V0X3ZpcnR1YWxfYmFzZXMpOiBMaWtld2lzZS4KCShsYXlvdXRfY2xhc3NfdHlwZSk6IExpa2V3aXNlLgoKMjAwNi0wMS0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjU5OTkKCSogZGVjbC5jIChzdGFydF9wcmVwYXJzZWRfZnVuY3Rpb24pOiBDYWxsIG1heWJlX2FwcGx5X3ByYWdtYV93ZWFrCgloZXJlLCBub3QgLi4uCgkoc3RhcnRfZnVuY3Rpb24pOiAuLi4gaGVyZS4KCjIwMDYtMDEtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI1ODU1CgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogQWRqdXN0IHVzZSBvZgoJcmV0dXJuIHZhbHVlIGZyb20gbW9zdF9zcGVjaWFsaXplZF9pbnN0YW50aWF0aW9uLgoJKiBwdC5jIChkZXRlcm1pbmVfc3BlY2lhbGl6YXRpb24pOiBBdm9pZCBtdWx0aXBsZSBjYWxscyB0bwoJZ2V0X2JpbmRpbmdzLgoJKG1vc3Rfc3BlY2lhbGl6ZWRfaW5zdGFudGlhdGlvbik6IFdoZW4gYSB0aWUgb2NjdXJzLCBzZXQgdGhlCgljdXJyZW50IHByZXN1bWVkIGNoYW1waW9uIHRvIHRoZSBuZXh0IHRlbXBsYXRlLiAgUmV0dXJuIHRoZQoJVFJFRV9MSVNUIG5vZGUgY29udGFpbmluZyB0aGUgdGVtcGxhdGUsIHJhdGhlciB0aGFuIHRoZSB0ZW1wbGF0ZQoJaXRzZWxmLgoJKG1vc3Rfc3BlY2lhbGl6ZWQpOiBSZW1vdmUuCgkqIG5hbWUtbG9va3VwLmMgKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogV2hlbiBkdXBsaWNhdGVfZGVjbHMKCWluZGljYXRlcyBhIGZhaWxlZCByZWRlY2xhcmF0aW9uLCByZXBvcnQgdGhhdCB0byBjYWxsZXJzLgoKMjAwNi0wMS0yNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzE2MDIxCgkqIG5hbWUtbG9va3VwLmMgKHBhcnNlX3VzaW5nX2RpcmVjdGl2ZSk6IFJlcXVpcmUgc3Ryb25nIHVzaW5nIHRvCgluYW1lIGEgbmVzdGVkIG5hbWVzcGFjZS4KCjIwMDYtMDEtMjUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUmV2ZXJ0OgoJKiBjcC10cmVlLmggKGRvX3BvcGxldmVsKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogc2VtYW50aWNzLmMgKGRvX3BvcGxldmVsKTogQWRkIHByb3RvdHlwZS4gIE1ha2Ugc3RhdGljLgoKCVJldmVydDoKCSogY3AtdHJlZS5oIChkZWZhdWx0X2NvbnZlcnNpb24pOiBSZW1vdmUgcHJvdG90eXBlLgoJKiB0eXBlY2suYyAoZGVmYXVsdF9jb252ZXJzaW9uKTogTWFrZSBzdGF0aWMuCgoyMDA2LTAxLTI1ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogY3AtdHJlZS5oIChnZXRfcHJpbWFyeV9iaW5mbyk6IFJlbW92ZSBwcm90b3R5cGUuCgkocHVzaF91c2luZ19kZWNsKTogTGlrZXdpc2UuCgkoY3VycmVudF90ZW1wbGF0ZV9hcmdzKTogTGlrZXdpc2UuCgkobW9yZV9zcGVjaWFsaXplZF9jbGFzcyk6IExpa2V3aXNlLgoJKG1hcmtfY2xhc3NfaW5zdGFudGlhdGVkKTogTGlrZXdpc2UuCgkoZGVmYXVsdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkocGZuX2Zyb21fcHRybWVtZnVuYyk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChnZXRfcHJpbWFyeV9iaW5mbyk6IEFkZCBwcm90b3R5cGUsIG1ha2Ugc3RhdGljLCBzaW1wbGlmeS4KCSogbmFtZS1sb29rdXAuYyAocHVzaF91c2luZ19kZWNsKTogTWFrZSBzdGF0aWMuCgkqIHB0LmMgKGN1cnJlbnRfdGVtcGxhdGVfYXJncyk6IExpa2V3aXNlLgoJKG1vcmVfc3BlY2lhbGl6ZWRfY2xhc3MpOiBMaWtld2lzZS4KCShtYXJrX2NsYXNzX2luc3RhbnRpYXRlZCk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoZGVmYXVsdF9jb252ZXJzaW9uKTogTWFrZSBzdGF0aWMuCgkocGZuX2Zyb21fcHRybWVtZnVuYyk6IEFkZCBwcm90b3R5cGUsIG1ha2Ugc3RhdGljLgoKMjAwNi0wMS0yNCAgRGlyayBNdWVsbGVyICA8ZG11ZWxsZXJAc3VzZS5kZT4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBVc2UgT1BUX1dmbG9hdF9lcXVhbCBpbiB3YXJuaW5nKCkuCgoyMDA2LTAxLTI0ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNTU1MgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3VucXVhbGlmaWVkX2lkKTogQ2hlY2sgdGhhdCBkZXN0cnVjdG9yIG5hbWUKCWFuZCBzY29wZSBtYXRjaC4KCSogY2FsbC5jIChjaGVja19kdG9yX25hbWUpOiBEbyBub3QgZXhwZWN0IGEgQklUX05PVF9FWFBSLgoJQWRqdXN0IGNvbW1lbnQuICBSZXR1cm4gZWFybHkgaWYgcG9zc2libGUuCglVc2Ugc2FtZV90eXBlX3AgdG8gY29tcGFyZSB0eXBlcy4KCSogdHlwZWNrLmMgKGxvb2t1cF9kZXN0cnVjdG9yKTogQWRqdXN0IGNhbGwgdG8gY2hlY2tfZHRvcl9uYW1lLgoKMjAwNi0wMS0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlbWFudGljcy5jOiBSZW1vdmUgb3V0ZGF0ZWQgY29tbWVudC4KCjIwMDYtMDEtMjMgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBjcC10cmVlLmggKGRvX3BvcGxldmVsKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogc2VtYW50aWNzLmMgKGRvX3BvcGxldmVsKTogQWRkIHByb3RvdHlwZS4gIE1ha2Ugc3RhdGljLgoKCSogY3AtdHJlZS5oIChvcmlnaW5hbF90eXBlKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogdHlwZWNrLmMgKG9yaWdpbmFsX3R5cGUpOiBNYWtlIHN0YXRpYy4KCgkqIGNwLXRyZWUuaCAoZGVjbGFyZV9nbG9iYWxfdmFyKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogZGVjbC5jIChkZWNsYXJlX2dsb2JhbF92YXIpOiBNYWtlIHN0YXRpYy4KCgkqIGNwLXRyZWUuaCAoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogbWV0aG9kLmMgKGltcGxpY2l0bHlfZGVjbGFyZV9mbik6IE1ha2Ugc3RhdGljLgoKCSogY3AtdHJlZS5oIChmb2xkX2RlY2xfY29uc3RhbnRfdmFsdWUpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBwdC5jIChmb2xkX2RlY2xfY29uc3RhbnRfdmFsdWUpOiBNYWtlIHN0YXRpYy4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfeF9kZWxldGUpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBpbml0LmMgKGJ1aWxkX3ZlY19kZWxldGVfMSk6IENhbGwgYnVpbGRfb3BfZGVsZXRlX2NhbGwgZGlyZWN0bHkKCWFuZCBub3QgdmlhIGJ1aWxkX3hfZGVsZXRlLgoJKGJ1aWxkX3hfZGVsZXRlKTogUmVtb3ZlLgoKCSogY3AtdHJlZS5oIChnZXRfdnR0X25hbWUpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBjbGFzcy5jIChnZXRfdnR0X25hbWUpOiBSZW1vdmUuCgkoYnVpbGRfdnR0KTogQ2FsbCBtYW5nbGVfdnR0X2Zvcl90eXBlIGluc3RlYWQgb2YgZ2V0X3Z0dF9uYW1lLgoKMjAwNi0wMS0yMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IEZpeCBjb21tZW50LgoKMjAwNi0wMS0yMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJUFIgYysrLzEwODkxCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0KTogUmVqZWN0IGR5bmFtaWNfY2FzdCB1c2UgaWYKCS1mbm8tcnR0aS4KCjIwMDYtMDEtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI1ODk1CgkqIGNsYXNzLmMgKGJ1aWxkX2Jhc2VfcGF0aCk6IEdlbmVyYXRlIGEgTk9QX0VYUFIgaW5zdGVhZCBvZiBhCglDT01QT05FTlRfUkVGIGlmIHRoZSBiYXNlIGFuZCBkZXJpdmVkIGNsYXNzZXMgYXJlIGF0IHRoZSBzYW1lCglhZGRyZXNzLgoKCVBSIGMrKy8yNTg1NgoJKiBkZWNsLmMgKGJlZ2luX2Rlc3RydWN0b3JfYm9keSk6IFJvYnVzdGlmeS4KCglQUiBjKysvMjU4NTgKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kaXJlY3RfZGVjbGFyYXRvcik6IFJvYnVzdGlmeS4KCjIwMDYtMDEtMjAgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBwYXJzZXIuYyAoY3BfbGV4ZXJfbmV4dF90b2tlbl9pc19rZXl3b3JkKTogU2ltcGxpZnkuCgoJKiBwYXJzZXIuYyAoY2xlYXJfZGVjbF9zcGVjcyk6IFJlbW92ZSBwcm90b3R5cGUuCgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2V4cHJlc3Npb25fZm4pOiBSZW1vdmUuCgoJKiBjYWxsLmMgKGFkZF9idWlsdGluX2NhbmRpZGF0ZXMpOiBSZW1vdmUgc3VwZXJmbHVvdXMgcmV0dXJuLgoJKiBuYW1lLWxvb2t1cC5jIChkb190b3BsZXZlbF91c2luZ19kZWNsKTogTGlrZXdpc2UuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdHlwZV9zcGVjaWZpZXJfc2VxKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3NhdmVfZGVmYXVsdF9hcmdzKTogTGlrZXdpc2UuCgoyMDA2LTAxLTIwICBEaXJrIE11ZWxsZXIgIDxkbXVlbGxlckBzdXNlLmNvbT4KCglQUiBjKysvNTUyMAoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2lmX3N0bXQpOiBDYWxsIGVtcHR5X2JvZHlfd2FybmluZy4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9pbXBsaWNpdGx5X3Njb3BlZF9zdGF0ZW1lbnQpOgoJTWFyayBlbXB0eSBzdGF0ZW1lbnQgd2l0aCBhbiBlbXB0eSBzdG10LgoKMjAwNi0wMS0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjIxMzYKCSogbmFtZS1sb29rdXAuYyAoZG9fY2xhc3NfdXNpbmdfZGVjbCk6IERvbid0IHRyeSB0byBsb29rIHVwIGJhc2UKCWNsYXNzZXMgaW4gdGVtcGxhdGVzIHdpdGggZGVwZW5kZW50IGJhc2UgdHlwZXMuCgoyMDA2LTAxLTE5ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNTg1NAoJKiBwdC5jIChtYXliZV9wcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24pOiBSZXR1cm4gZWFybHkgb24KCWVycm9yX21hcmtfbm9kZS4KCjIwMDYtMDEtMTkgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzE2ODI5CgkqIGRlY2wuYyAoc3RhcnRfcHJlcGFyc2VkX2Z1bmN0aW9uKTogQ2hlY2sgZGVmYXVsdCBhcmd1bWVudHMKCXVuY29uZGl0aW9uYWxseS4KCSogbmFtZS1sb29rdXAuYyAocHVzaGRlY2xfbWF5YmVfZnJpZW5kKTogQ2hlY2sgZGVmYXVsdCBhcmd1bWVudHMKCW9mIGFsbCBmdW5jdGlvbnMgYW5kIGZ1bmN0aW9uIHRlbXBsYXRlcy4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9sYXRlX3BhcnNpbmdfZGVmYXVsdF9hcmdzKTogQ2hlY2sgZGVmYXVsdAoJYXJndW1lbnRzLgoJKiBkZWNsMi5jIChjaGVja19kZWZhdWx0X2FyZ3MpOiBTZXQgbWlzc2luZyBkZWZhdWx0IGFyZ3VtZW50cyB0bwoJZXJyb3JfbWFya19ub2RlLgoKMjAwNi0wMS0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjU4MzYKCSogY3AtdHJlZS5oIChwdXNoX2NsYXNzX3N0YWNrKTogTmV3IGZ1bmN0aW9uLgoJKHBvcF9jbGFzc19zdGFjayk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChjbGFzc19zdGFja19ub2RlKTogQWRkIGhpZGRlbiBmaWVsZC4KCShwdXNoY2xhc3MpOiBDbGVhciBpdC4KCShwdXNoX2NsYXNzX3N0YWNrKTogTmV3IGZ1bmN0aW9uLgoJKHBvcF9jbGFzc19zdGFjayk6IExpa2V3aXNlLgoJKGN1cnJlbnRseV9vcGVuX2NsYXNzKTogSWdub3JlIGhpZGRlbiBjbGFzc2VzLgoJKGN1cnJlbnRseV9vcGVuX2Rlcml2ZWRfY2xhc3MpOiBMaWtld2lzZS4KCSogbmFtZS1sb29rdXAuYyAocHVzaF90b190b3BfbGV2ZWwpOiBDYWxsIHB1c2hfY2xhc3Nfc3RhY2suCgkocG9wX2Zyb21fdG9wX2xldmVsKTogQ2FsbCBwb3BfY2xhc3Nfc3RhY2suCgoyMDA2LTAxLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAoZmluZF90cmVlX3QsIGZpbmRfdHJlZSk6IFJlbW92ZS4KCSogY3AtdHJlZS5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgZmluZF90cmVlLgoKMjAwNi0wMS0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBzZWFyY2guYyAobG9va3VwX2NvbnZlcnNpb25zX3IpOiBGaXggYSBwYXN0by4KCjIwMDYtMDEtMTcgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZV9yZWFsKTogV2hlbiBpc3N1aW5nIGNvbnZlcnNpb24KCXdhcm5pbmdzLCBkZXBlbmQgb24gT1BUX1djb252ZXJzaW9uLgoJKiBjdnQuYyAoYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24pOiBEaXR0by4KCjIwMDYtMDEtMTcgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogbmFtZS1sb29rdXAuYyAobG9va3VwX25hbWVzcGFjZV9uYW1lKTogUmVtb3ZlLgoJKiBuYW1lLWxvb2t1cC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCWxvb2t1cF9uYW1lc3BhY2VfbmFtZS4KCjIwMDYtMDEtMTcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMvMjU2ODIKCSogZGVjbC5jIChjb21wdXRlX2FycmF5X2luZGV4X3R5cGUpOiBBZnRlciBpc3N1aW5nIG5vdCBhbiBpbnRlZ3JhbAoJY29uc3RhbnQtZXhwcmVzc2lvbiBlcnJvciwgc2V0IHNpemUgdG8gMSB0byBhdm9pZCBJQ0VzIGxhdGVyIG9uLgoKMjAwNi0wMS0xNiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBhaXJzLmNvbT4KCgkqIHBhcnNlci5jOiBJbmNsdWRlICJjZ3JhcGguaCIuCgkoY3BfcGFyc2VyX2FzbV9kZWZpbml0aW9uKTogQ2FsbCBjZ3JhcGhfYWRkX2FzbV9ub2RlIHJhdGhlciB0aGFuCglhc3NlbWJsZV9hc20uCgoyMDA2LTAxLTE2ICBSYWZhZWwg77+9aWxhIGRlIEVzcO+/vWRvbGEgIDxyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbT4KCgkqIGcrK3NwZWMuYyAobGFuZ19zcGVjaWZpY19zcGVjX2Z1bmN0aW9ucyk6IFJlbW92ZS4KCjIwMDYtMDEtMTUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogZGVjbC5jIChjaGVja19pbml0aWFsaXplcik6IEZpeCB0aGlua28uCgoyMDA2LTAxLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNTY2MwoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2RpcmVjdF9kZWNsYXJhdG9yKTogVXNlIGNwX3BhcnNlcl9lcnJvcgoJaW5zdGVhZCBvZiBlcnJvci4KCjIwMDYtMDEtMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBVc2UgQ1BfREVDTF9DT05URVhUIGV2ZW4gbW9yZS4KCgkqIG5hbWUtbG9va3VwLmMgKHNldF9kZWNsX25hbWVzcGFjZSk6IFVzZSBDUF9ERUNMX0NPTlRFWFQuCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgoyMDA2LTAxLTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBsaWJzdGRjKysvMjQ2NjAKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBIYW5kbGUgbmFtZXNwYWNlCglhc3NvY2lhdGlvbi4KCSogbmFtZS1sb29rdXAuYyAoc2V0X2RlY2xfbmFtZXNwYWNlKTogTGlrZXdpc2UuCgoyMDA2LTAxLTEyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNDgyNAoJKiBjbGFzcy5jIChoYW5kbGVfdXNpbmdfZGVjbCk6IFBhc3MgY29ycmVjdCBzY29wZSB0bwoJY3BfZW1pdF9kZWJ1Z19pbmZvX2Zvcl91c2luZy4KCjIwMDYtMDEtMTEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI1Mzg2CgkqIHRyZWUuYyAobHZhbHVlX3BfMSk6IEFueSBwYXJ0IG9mIGEgQ09NUE9ORU5UX1JFRiBhZmZlY3RzCglwYWNrZWRuZXNzLgoKMjAwNi0wMS0wNiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlc29sdXRpb25zLm5ldD4KCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfcHJpbWFyeV9leHByZXNzaW9uKTogRG9jdW1lbnQgdGhlIGdyYW1tYXIKCWZvciB0aGUgYnVpbHQtaW4gb2Zmc2V0b2YsIGEgR05VIGV4dGVuc2lvbi4KCjIwMDYtMDEtMDQgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCglQUiBjKysvMjU2MzIKCSogaW5pdC5jIChjb25zdGFudF92YWx1ZV8xKTogVW5zaGFyZSB1c2Ugb2YgREVDTF9JTklUSUFMLiAgRml4IGEgdHlwbwoJaW4gY29uZGl0aW9uLgoKMjAwNi0wMS0wNCAgQ2hyaXMgTGF0dG5lciAgPHNhYnJlQGdudS5vcmc+CgoJKiB0eXBlY2syLmM6IHVwZGF0ZSBjb3B5cmlnaHQgdG8gMjAwNgoJKHNwbGl0X25vbmNvbnN0YW50X2luaXRfMSk6ICBTZXQgVFJFRV9DT05TVEFOVCB0byB0cnVlLgoKMjAwNi0wMS0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjQ3ODIKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9uZXN0ZWRfbmFtZV9zcGVjaWZpZXJfb3B0KTogUHJlc2VydmUgYWNjZXNzCgljaGVja3MsIGV2ZW4gd2hlbiBwYXJzaW5nIHRlbnRhdGl2ZWx5LgoKMjAwNi0wMS0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglNZXJnZSBmcm9tIGdvbXAgYnJhbmNoLgoJKiBsZXguYyAoaGFuZGxlX3ByYWdtYV9qYXZhX2V4Y2VwdGlvbnMpOiBGaXggd2hpdGVzcGFjZS4KCSogcGFyc2VyLmMgKHN0cnVjdCBjcF90b2tlbik6IEFkZCBwcmFnbWFfa2luZC4KCShlb2ZfdG9rZW4pOiBVcGRhdGUgdG8gbWF0Y2guCgkoc3RydWN0IGNwX2xleGVyKTogQWRkIGluX3ByYWdtYTsgcmVhcnJhbmdlIG5leHQgZm9yIGJldHRlciBwYWNraW5nLgoJKGNwX3BhcnNlcl9pbml0aWFsX3ByYWdtYSk6IE5ldy4KCShjcF9sZXhlcl9uZXdfbWFpbik6IFVzZSBpdC4gIERvbid0IGJvdGhlciBjbGVhcmluZwoJY19sZXhfcmV0dXJuX3Jhd19zdHJpbmdzLgoJKGNwX2xleGVyX2dldF9wcmVwcm9jZXNzb3JfdG9rZW4pOiBBbHdheXMgaW5pdGlhbGl6ZSBrZXl3b3JkCglhbmQgcHJhZ21hX2tpbmQgZmllbGRzLiAgSGFuZGxlIENQUF9QUkFHTUEuCgkoY3BfbGV4ZXJfY29uc3VtZV90b2tlbik6IERvbid0IGFsbG93IENQUF9QUkFHTUFfRU9MIHdoZW4KCWluX3ByYWdtYSBpcyBzZXQuCgkoY3BfbGV4ZXJfaGFuZGxlX3ByYWdtYSk6IFJlbW92ZS4gIFVwZGF0ZSBjYWxsZXJzIHRvIGNwX3BhcnNlcl9wcmFnbWEuCgkoY3BfbGV4ZXJfcHJpbnRfdG9rZW4pIDxDUFBfUFJBR01BPjogRG9uJ3QgcHJpbnQgYXMgYSBzdHJpbmcuCgkoY3BfcGFyc2VyX3NraXBfdG9fcHJhZ21hX2VvbCk6IE5ldy4KCShjcF9wYXJzZXJfZXJyb3IpOiBVc2UgaXQuCgkoY3BfcGFyc2VyX3NraXBfdG9fY2xvc2luZ19wYXJlbnRoZXNpcyk6IFN0b3AgYXQgQ1BQX1BSQUdNQV9FT0w7CglyZWFycmFuZ2Ugd2l0aCBzd2l0Y2ggc3RhdGVtZW50LgoJKGNwX3BhcnNlcl9za2lwX3RvX2VuZF9vZl9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfc2tpcF90b19lbmRfb2ZfYmxvY2tfb3Jfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3NraXBfdG9fY2xvc2luZ19icmFjZSk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9za2lwX3VudGlsX2ZvdW5kKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3N0YXRlbWVudCk6IEFkZCBpbl9jb21wb3VuZCBhcmd1bWVudDsgdXBkYXRlIGNhbGxlcnMuCglVc2UgaXQgdG8gZGVjaWRlIGhvdyB0byBoYW5kbGUgcHJhZ21hIHBhcnNpbmcuCgkoY3BfcGFyc2VyX2xhYmVsZWRfc3RhdGVtZW50KTogQWRkIGluX2NvbXBvdW5kIGFyZ3VtZW50OyBwYXNzCglpdCBvbiB0byBjcF9wYXJzZXJfc3RhdGVtZW50LgoJKGNwX3BhcnNlcl9zdGF0ZW1lbnRfc2VxX29wdCk6IFN0b3AgYXQgQ1BQX1BSQUdNQV9FT0wuCgkoY3BfcGFyc2VyX2RlY2xhcmF0aW9uX3NlcV9vcHQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfcGFyYW1ldGVyX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX21lbWJlcl9zcGVjaWZpY2F0aW9uX29wdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9mdW5jdGlvbl9kZWZpbml0aW9uX2FmdGVyX2RlY2wpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfY2FjaGVfZ3JvdXApOiBIYW5kbGUgQ1BQX1BSQUdNQS9DUFBfUFJBR01BX0VPTCBwYWlycy4KCShjcF9wYXJzZXJfcHJhZ21hKTogTmV3LgoJKHByYWdtYV9sZXgpOiBOZXcuCgoyMDA2LTAxLTA0ICBEaXJrIE11ZWxsZXIgPGRtdWVsbGVyQHN1c2UuY29tPgoKCSogZGVjbC5jIChmaW5pc2hfY29uc3RydWN0b3JfYm9keSk6IGNyZWF0ZSBzaW1wbGUKCWNvbXBvdW5kIHN0bXQgaW5zdGVhZCBvZiBhIGlmKDEpIHsgfSBjb25zdHJ1Y3QuCgoyMDA2LTAxLTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNTQ5MgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoX2NsYXNzX2xldmVsX2JpbmRpbmcpOiBXaGVuIGEgZGVyaXZlZCBjbGFzcwoJcHJvdmlkZXMgYSB0eXBlIGJpbmRpbmcsIGVsaW1pbmF0ZSBhbnkgdHlwZSBiaW5kaW5nIGZyb20gYSBiYXNlCgljbGFzcy4KCglQUiBjKysvMjU2MjUKCSogcmVwby5jIChyZXBvX2VtaXRfcCk6IEFsd2F5cyBpbnN0YW50aWF0ZSBzdGF0aWMgZGF0YSBtZW1iZXJzCglpbml0aWFsaXplZCBieSBjb25zdGFudCBleHByZXNzaW9ucywgc28gdGhhdCB0aGVyZSB2YWx1ZXMgYXJlCglhdmFpbGFibGUuCgoyMDA2LTAxLTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNTYzNQoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogU2V0IFRZUEVfSEFTX0NPTlZFUlNJT04gZm9yIGNsYXNzZXMgd2l0aCBhCgljb252ZXJzaW9uIG9wZXJhdG9yLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG8gbm90IHNldCBUWVBFX0hBU19DT05WRVJTSU9OIGhlcmUuCgoJUFIgYysrLzI1NjM4CgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBOZXZlciBhc3NvY2lhdGUgbW9yZSB0aGFuIG9uZSBkZXN0cnVjdG9yCgl3aXRoIGEgc2luZ2xlIGNsYXNzLgoKCVBSIGMrKy8yNTYzNwoJKiBjcC10cmVlLmggKGRvX2ZyaWVuZCk6IEFkanVzdCBwcm90b3R5cGUuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IE1ha2UgZnVuY2RlZl9mbGFnIGEgYm9vbCwgbm90IGFuIGludC4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLiAgUmVmaW5lIGNoZWNrIGZvciBpbnZhbGlkCglkZWNsYXJhdGlvbnMvZGVmaW5pdGlvbnMgb2YgbWVtYmVyIGZ1bmN0aW9ucyBvdXRzaWRlIG9mIHRoZWlyIG93bgoJY2xhc3MuCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBNYWtlIGZ1bmNkZWZfZmxhZyBhIGJvb2wsIG5vdCBhbiBpbnQuCgoJUFIgYysrLzI1NjMzCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbWVtX2luaXRpYWxpemVyX2xpc3QpOiBDaGVjayByZXN1bHQgb2YKCWNwX3BhcnNlcl9tZW1faW5pdGlhbGl6ZXIgYWdhaW5zdCBlcnJvcl9tYXJrX25vZGUsIG5vdCBOVUxMX1RSRUUuCgkoY3BfcGFyc2VyX21lbV9pbml0aWFsaXplcik6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgZm9yIGZhaWx1cmUuCgoJUFIgYysrLzI1NjM0CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdGVtcGxhdGVfcGFyYW1ldGVyX2xpc3QpOiBDYWxsCgliZWdpbl90ZW1wbGF0ZV9wYXJtX2xpc3QgYW5kIGVuZF90ZW1wbGF0ZV9wYXJtX2xpc3QgaGVyZS4KCShjcF9wYXJzZXJfdHlwZV9wYXJhbWV0ZXIpOiBOb3QgaGVyZS4KCShjcF9wYXJzZXJfdGVtcGxhdGVfZGVjbGFyYXRpb25fYWZ0ZXJfZXhwb3J0KTogT3IgaGVyZS4KCShjcF9wYXJzZXJfZWxhYm9yYXRlZF90eXBlX3NwZWNpZmllcik6IENhbGwKCWNwX3BhcnNlcl9jaGVja190ZW1wbGF0ZV9wYXJhbWV0ZXJzLgoKCSogdHJlZS5jIChidWlsZF90YXJnZXRfZXhwcl93aXRoX3R5cGUpOiBVc2UgZm9yY2VfdGFyZ2V0X2V4cHIuCgoJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBGaXggdHlwbyBpbiBjb21tZW50LgoKMjAwNi0wMS0wMiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdXNpbmdfZGVjbGFyYXRpb24pOiBTa2lwIG5hbWUtbG9va3VwIG9uCglpbnZhbGlkIHNjb3BlLgoKMjAwNS0xMi0zMCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBjeHgtcHJldHR5LXByaW50LmMgKHBwX2N4eF9jb25zdGFudCk6IE5ldy4gIFByaW50CglzdHJpbmctbGl0ZXJhbCBpbiBwYXJlbnMgaWYgaW5wdXQgcHJvZ3JhbSBzYXlzIHNvLgoJKHBwX2N4eF9wcmltYXJ5X2V4cHJlc3Npb24pOiBIYW5kIG9mZiBjb25zdGFudCBwcmludGluZyB0bwoJcHBfY3h4X2NvbnN0YW50LgoJKHBwX2N4eF9wcmV0dHlfcHJpbnRlcl9pbml0KTogU2V0IHBwLT5jX2Jhc2UuY29uc3RhbnQuCgkocHBfY3h4X2V4cHJlc3Npb24pOiBVc2UgcHBfY3h4X2NvbnN0YW50IGZvciBsaXRlcmFscy4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogVXNlIHBwX2NvbnN0YW50IGZvciBsaXRlcmFscy4KCjIwMDUtMTItMjkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtZXRob2QuYyAobWFrZV90aHVuayk6IERvbid0IHNldCBjb21kYXRfbGlua2FnZSBoZXJlLgoJKHVzZV90aHVuayk6IE1ha2UgdGh1bmsgb25lIG9ubHkgaGVyZSwgaWYgdGh1bmsgdGFyZ2V0IGlzCglERUNMX09ORV9PTkxZLgoKMjAwNS0xMi0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjU0MzkKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJlbW92ZSBkZWFkIGNvZGUuCgkqIHB0cmVlLmMgKGN4eF9wcmludF94bm9kZSk6IEhhbmRsZSBCQVNFTElOSy4KCSogcGFyc2VyLmMgKG1ha2VfaWRfZGVjbGFyYXRvcik6IEFkZCBzZmsgcGFyYW1ldGVyLgoJKGNwX3BhcnNlcl9kaXJlY3RfZGVjbGFyYXRvcik6IERvIG5vdCBwYXNzIFRZUEVfREVDTHMgdG8KCW1ha2VfaWRfZGVjbGFyYXRvci4KCShjcF9wYXJzZXJfZGVjbGFyYXRvcl9pZCk6IFNpbXBsaWZ5IEJBU0VMSU5LcyBoZXJlLgoJKGNwX3BhcnNlcl9tZW1iZXJfZGVjbGFyYXRpb24pOiBBZGp1c3QgY2FsbHMgdG8KCW1ha2VfaWRfZGVjbGFyYXRvci4KCjIwMDUtMTItMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIzMTcxLCBjKysvMjMxNzIsIGMrKy8yNTQxNy4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogQ3JlYXRlIHRlbXBvcmFyeSB2YXJpYWJsZXMgZm9yCgljb21wb3VuZCBsaXRlcmFscyB3aG9zZSBhZGRyZXNzZXMgYXJlIHRha2VuLgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXRfMSk6IFVzZSBDT01QT1VORF9MSVRFUkFMX1AuCgkqIGRlY2wuYyAocmVzaGFwZV9pbml0X3ZlY3Rvcik6IExpa2V3aXNlLgoJKHJlc2hhcGVfaW5pdCk6IEdpdmUgaXQgZXh0ZXJuYWwgbGlua2FnZS4KCShjaGVja19pbml0aWFsaXplcik6IFVzZSBDT01QT1VORF9MSVRFUkFMX1AuCgkoaW5pdGlhbGl6ZV9hcnRpZmljaWFsX3Zhcik6IEFsbG93IHRoZSBpbml0aWFsaXplciB0byBiZSBhCglDT05TVFJVQ1RPUi4KCSogY2FsbC5jIChtYWtlX3RlbXBvcmFyeV92YXJfZm9yX3JlZl90b190ZW1wKTogVXNlCgljcmVhdGVfdGVtcG9yYXJ5X3Zhci4KCSogY3AtdHJlZS5oIChDT01QT1VORF9MSVRFUkFMX1ApOiBOZXcgbWFjcm8uCgkocmVoYXBlX2luaXQpOiBEZWNsYXJlLgoJKiB0eXBlY2syLmMgKGRpZ2VzdF9pbml0KTogVXNlIENPTVBPVU5EX0xJVEVSQUxfUC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jb21wb3VuZF9saXRlcmFsKTogVXNlIHJlc2hhcGVfaW5pdC4KCjIwMDUtMTItMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0NjcxCgkqIHB0LmMgKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogSGFuZGxlIFNGSU5BRS4KCjIwMDUtMTItMjMgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogSW1wcm92ZSBkaWFnbm9zdGljIGZvciBmcmllbmQKCWRlY2xhcmF0aW9ucyBvZiBjbGFzcyBtZW1iZXJzLgoKMjAwNS0xMi0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjUzNjkKCSogdHJlZS5jIChyZWFsbHlfb3ZlcmxvYWRlZF9mbik6IFR3ZWFrIGNvbW1lbnQuCgkqIHB0LmMgKHRzdWJzdF9jYWxsX2RlY2xhcmF0b3JfcGFybXMpOiBSZW1vdmUuCgkodHN1YnN0X2NvcHkpOiBDYWxsIG1hcmtfdXNlZCBvbiB0aGUgbWVtYmVyIHJlZmVyZW5jZWQgYnkgYW4KCU9GRlNFVF9SRUYuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfcXVhbGlmaWVkX2lkX2V4cHIpOiBTaW1wbGlmeS4KCSogZGVjbDIuYyAobWFya191c2VkKTogQWNjZXB0IEJBU0VMSU5Lcy4KCglQUiBjKysvMjUzNjQKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogUGFzcyBERUNMcyBub3QgbmFtZXMgdG8KCWJ1aWxkX29mZnNldF9yZWZzLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBEbyBub3QgZG8gbmFtZSBsb29rdXAuICBEbyBub3QgY2FsbAoJbWFya191c2VkLgoJKiBjYWxsLmMgKGJ1aWxkX2NhbGwpOiBTaW1wbGlmeSBhbmQgdGlkeS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9xdWFsaWZpZWRfaWRfZXhwcik6IENhbGwgbWFya191c2VkLgoKMjAwNS0xMi0yMiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjMzMzMKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wdXJlX3NwZWNpZmllcik6IENoZWNrIGZvciBQVVJFX1pFUk8gdG8KCWlkZW50aWZ5IGEgc2luZ2xlICcwJy4KCjIwMDUtMTItMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxMjI4CgkqIGRlY2wuYyAodXNlX2VoX3NwZWNfYmxvY2spOiBOZXcgZnVuY3Rpb24uCgkoc3RvcmVfcGFybV9kZWNscyk6IFVzZSBpdC4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCjIwMDUtMTItMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0Mjc4CgkqIGluaXQuYyAoZXhwYW5kX21lbWJlcl9pbml0KTogUHJpbnQgbWVzc2FnZXMgYWJvdXQgYmFzZWNsYXNzZXMKCXVzaW5nICVUIHJhdGhlciB0aGFuICVELgoKCVBSIGMrKy8yNDkxNQoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogRG8gbm90IHRyZWF0IHRlbXBsYXRlcyBhcyBpZGVudGljYWwgdW5sZXNzCgl0aGVpciByZXR1cm4gdHlwZXMgYXJlIHRoZSBzYW1lLgoKMjAwNS0xMi0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjUzMDAKCSogdHJlZS5jIChidWlsZF9xdWFsaWZpZWRfbmFtZSk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgZm9yCgllcnJvbmVvdXMgaW5wdXQuCgoyMDA1LTEyLTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNTMzNwoJKiBwdC5jICh0c3Vic3RfY29weV9hbmRfYnVpbGQpOiBQZXJtaXQgZGVwZW5kZW50IHR5cGVzIGZvciB0aGUKCW9iamVjdCBpbiBhIGNsYXNzIG1lbWJlciBhY2Nlc3MgZXhwcmVzc2lvbi4KCjIwMDUtMTItMTAgIFRlcnJ5IExhdXJlbnpvICA8dGxhdXJlbnpvQGdtYWlsLmNvbT4KCglQUiBqYXZhLzk4NjEKCSogbWFuZ2xlLmMgKHdyaXRlX2JhcmVfZnVuY3Rpb25fdHlwZSk6IE1hbmdsZSByZXR1cm4gdHlwZSBmb3IKCW1ldGhvZHMgb2YgSmF2YSBjbGFzc2VzCgoyMDA1LTEyLTA4ICBUaO+/vWRvcmUgUGFwYWRvcG91bG8gPFRoZW9kb3JlLlBhcGFkb3BvdWxvQHNvcGhpYS5pbnJpYS5mcj4KCgkqIGNhbGwuYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IFByaW50IHR5cGVzIGluIGVycm9yIG1lc3NhZ2VzLgoKMjAwNS0xMi0wNyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGV4cHIuYyAoY3h4X2V4cGFuZF9leHByKTogQ2FsbCBnY2NfdW5yZWFjaGFibGUgaW5zdGVhZCBvZiBhYm9ydC4KCjIwMDUtMTItMDcgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBjcC1naW1wbGlmeS5jIChnaW1wbGlmeV9jcF9sb29wKTogVXNlIGZvbGRfYnVpbGQzLgoKMjAwNS0xMi0wNyAgUmFmYWVsIO+/vWlsYSBkZSBFc3Dvv71kb2xhICA8cmFmYWVsLmVzcGluZG9sYUBnbWFpbC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGMrKy5hbGwuYnVpbGQsIGMrKy5pbnN0YWxsLW5vcm1hbCk6IFJlbW92ZS4KCjIwMDUtMTItMDcgIFJhZmFlbCDvv71pbGEgZGUgRXNw77+9ZG9sYSAgPHJhZmFlbC5lc3BpbmRvbGFAZ21haWwuY29tPgoKCSogTWFrZS1sYW5nLmluOiBSZW1vdmUgYWxsIGRlcGVuZGVuY2llcyBvbiBzLWd0eXBlLgoKMjAwNS0xMi0wNiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCVBSIEMrKy8yNDEzOAoJKiBkZWNsLmMgKHJlc2hhcGVfaW5pdF9hcnJheV8xKTogSGFuZGxlIG1heF9pbmRleCBvZiAtMS4KCjIwMDUtMTItMDYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IElzc3VlIHdhcm5pbmcgaWYgZWl0aGVyIG9wZXJhbmQgb2YgYQoJY29tcGFyaXNvbiBvcGVyYXRvciBpcyBhIHN0cmluZyBsaXRlcmFsLCBleGNlcHQgZm9yIHRlc3RpbmcgZXF1YWxpdHkKCW9yIGluZXF1YWxpdHkgYWdhaW5zdCBOVUxMLgoKMjAwNS0xMi0wNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgYysrLzI1MjYzCgkqIGRlY2wuYyAoY29tcHV0ZV9hcnJheV9pbmRleF90eXBlKTogQ2hlY2sgdGhhdCBpdHlwZSBpcyBhbgoJSU5URUdFUl9DU1Qgbm9kZSBiZWZvcmUgdGVzdGluZy9jbGVhcmluZyBUUkVFX09WRVJGTE9XLgoKMjAwNS0xMi0wNSAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBwdHJlZS5jIChjeHhfcHJpbnRfZGVjbCk6IFVwZGF0ZSB0byBjaGVjayBmb3IgZGVjbF9jb21tb24KCXN0cnVjdHVyZS4KCjIwMDUtMTItMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0MTczCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3QgcmVseSBvbiBERUNMX1RFTVBMQVRFX0lORk8gYWZ0ZXIKCWNsb2JiZXJpbmcgbmV3ZGVjbC4KCjIwMDUtMTItMDIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHNlbWFudGljcy5jIChzaW1wbGlmeV9hZ2dyX2luaXRfZXhwcik6IFVzZSBidWlsZE4gaW5zdGVhZAoJb2YgYnVpbGQuCgoyMDA1LTEyLTAyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIHBhcnNlci5jIChjcF9sZXhlcl9uZXdfbWFpbik6IFVzciBHR0NfUkVTSVpFVkVDIGluc3RlYWQgb2YKCWdnY19yZWFsbG9jLgoJKGNwX3BhcnNlcl90ZW1wbGF0ZV9hcmd1bWVudF9saXN0KTogVXNlIFhSRVNJWkVWRUMgaW5zdGVhZCBvZgoJeHJlYWxsb2MuCgkqIGNsYXNzLmMgKHB1c2hjbGFzcyk6IExpa2V3aXNlLgoKMjAwNS0xMi0wMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBkZWNsMi5jIChnZXRfcHJpb3JpdHlfaW5mbyk6IFVzZSBYTkVXLCBub3QgeG1hbGxvYy4KCSogZGVjbC5jIChwdXNoX3N3aXRjaCk6IExpa2V3aXNlLgoJKiBsZXguYyAoaGFuZGxlX3ByYWdtYV9pbXBsZW1lbnRhdGlvbik6IExpa2V3aXNlLgoJKiBjcC1vYmpjcC1jb21tb24uYyAoZGVjbF9zaGFkb3dlZF9mb3JfdmFyX2luc2VydCk6IFVzZSBHR0NfTkVXLAoJbm90IGdnY19hbGxvYy4KCShjeHhfaW5pdGlhbGl6ZV9kaWFnbm9zdGljcyk6IFVzZSBYTkVXLCBub3QgeG1hbGxvYy4KCSogY2xhc3MuYyAoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogVXNlIFhORVdWRUMsIG5vdCB4bWFsbG9jLgoJKiBnKytzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogTGlrZXdpc2UuCgkqIG1hbmdsZS5jIChzYXZlX3BhcnRpYWxseV9tYW5nbGVkX25hbWUpOiBMaWtld2lzZS4KCSogcGFyc2VyLmMgKGNwX2xleGVyX25ld19tYWluKTogVXNlIEdHQ19ORVdWRUMsIG5vdCBnZ2NfYWxsb2MuCgkoY3BfcGFyc2VyX3RlbXBsYXRlX2FyZ3VtZW50X2xpc3QpOiBVc2UgWE5FV1ZFQywgbnRvIHhtYWxsb2MuCgkoY3BfcGFyc2VyX3NpemVvZl9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIHJlcG8uYyAob3Blbl9yZXBvX2ZpbGUsIG9wZW5fcmVwb19maWxlKTogTGlrZXdpc2UuCgoyMDA1LTEyLTAxICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbWFrZV90eXBlbmFtZV90eXBlKTogQ2FsbCBtYWtlX3R5cGVuYW1lX3R5cGUKCXdpdGggdGZfbm9uZSBpbnN0ZWFkIG9mIG1hZ2ljIHZhbHVlIDAuCgkoY3BfcGFyc2VyX2V4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBDYWxsIGRvX3R5cGVfaW5zdGFudGlhdGlvbgoJd2l0aCB0Zl9lcnJvciBpbnN0ZWFkIG9mIG1hZ2ljIHZhbHVlIDEuCgkoY3BfcGFyc2VyX2VsYWJvcmF0ZWRfdHlwZV9zcGVjaWZpZXIpOiBDYWxsIG1ha2VfdHlwZW5hbWVfdHlwZQoJd2l0aCB0Zl9lcnJvciBpbnN0ZWFkIG9mIG1hZ2ljIHZhbHVlIDEuCgkoY3BfcGFyc2VyX2NsYXNzX25hbWUpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfbG9va3VwX25hbWUpOiBMaWtld2lzZS4KCjIwMDUtMTItMDEgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kZWNsYXJhdGlvbik6IFNldCB0b2tlbjIudHlwZSB0byBDUFBfRU9GLAoJbm90IFJJRF9NQVguCgoyMDA1LTExLTMwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjExMjMKCSogY3AtZ2ltcGxpZnkuYyAoY3BfZ2VuZXJpY2l6ZV9yKTogRG9uJ3QgZGVyZWZlcmVuY2UgaW52aXNpYmxlIHJlZmVyZW5jZQoJcGFybXMgaW4gYSB0aHVuay4KCjIwMDUtMTEtMzAgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfdW5hcnlfb3ApOiBDb3JyZWN0IHNwZWxsaW5nIGluIGVycm9yIG1lc3NhZ2UuCgoyMDA1LTExLTI4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTE2NgoJKiBjbGFzcy5jIChjaGVja19maWVsZF9kZWNscyk6IE9ubHkgc2V0IERFQ0xfUEFDS0VEIG9uIGEgZmllbGQKCXdoZW4gaXRzIG5hdHVyYWwgYWxpZ25tZW50IGlzID4gQklUU19QRVJfVU5JVC4KCjIwMDUtMTEtMjcgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI0OTc5CgkqIGNwLXRyZWUuaCAoREVDTF9NQUlOX1ApOiBSZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb24uCgoyMDA1LTExLTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogbGV4LmM6IFVwZGF0ZSBmb3IgcHJhZ21hX2xleCByZW5hbWUuCgkqIHBhcnNlci5jOiBMaWtld2lzZS4KCjIwMDUtMTEtMjUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzkyNzgKCSogZGVjbC5jIChncm9rcGFybXMpOiBEbyBub3QgYWxsb3cgdHlwZWRlZi1uYW1lcyBpbiBhICcodm9pZCknCglwYXJtbGlzdC4KCjIwMDUtMTEtMjUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcl91bmlvbik6IFJlbW92ZSBjaGVjayBmb3IKCXVubmFtZWQgdW5pb24gbWVtYmVycy4KCjIwMDUtMTEtMjUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBuYW1lLWxvb2t1cC5jIChsb29rdXBfbmFtZV9yZWFsKTogTWVyZ2UgdHdvIGlmJ3MuCgoyMDA1LTExLTI1ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBDbGVhbi11cC4KCjIwMDUtMTEtMjUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBwdC5jICh0ZW1wbGF0ZV9jbGFzc19kZXB0aF9yZWFsKTogUmVtb3ZlLiBNb3ZlIGZ1bmN0aW9uYWxpdHkgdG8gLi4uCgkodGVtcGxhdGVfY2xhc3NfZGVwdGgpOiAuLi4gaGVyZSwgcmVwbGFjaW5nIGNvdW50X3NwZWNpYWxpemF0aW9ucwoJd2l0aCAwLiAgQWRqdXN0IGNvbW1lbnQuCgoyMDA1LTExLTI0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CglEaXJrIE11ZWxsZXIgPGRtdWVsbGVyQHN1c2UuZGU+CgoJUFIgYysrLzE0MDI0CgkqIHR5cGVjay5jIChidWlsZF9yZWludGVycHJldF9jYXN0XzEpOiBVc2UKCXN0cmljdF9hbGlhc2luZ193YXJuaW5nLgoKMjAwNS0xMS0yMyAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJUFIgYysrLzI0MjM1CgkqIHB0LmMgKGNoZWNrX2luc3RhbnRpYXRlZF9hcmdzKTogUmV3b3JkIGRpYWdub3N0aWMgbWVzc2FnZSBhYm91dAoJdGVtcGxhdGUgYXJndW1lbnQgaW52b2x2aW5nIGxvY2FsIHR5cGVzLgoKMjAwNS0xMS0yMyAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJUFIgYysrLzIxNjY3CgkqIHR5cGVjay5jIChidWlsZF9hcnJheV9yZWYpOiBBdm9pZCBjb2RlIGR1cGxpY2F0ZS4gIFVzZSBjb21tb24KCUMvQysrIGRpYWdub3N0aWMgZnVuY3Rpb24gd2Fybl9hcnJheV9zdWJzY3JpcHRfd2l0aF90eXBlX2NoYXIuCgoyMDA1LTExLTIxICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCglQUiBjKysvMjIyMzgKCSogZXJyb3IuYyAocmVzb2x2ZV92aXJ0dWFsX2Z1bl9mcm9tX29ial90eXBlX3JlZik6IE5ldy4KCShkdW1wX2V4cHIpOiBVc2UgaXQgaW4gPGNhc2UgQ0FMTF9FWFBSPi4KCjIwMDUtMTEtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjcC1vYmpjcC1jb21tb24uaCwgbmFtZS1sb29rdXAuYywgbmFtZS1sb29rdXAuaDogUmV2ZXJ0IDExLTE4IHBhdGNoLgoKCSogbmFtZS1sb29rdXAuYyAobG9va3VwX25hbWUpOiBSZW1vdmUgcHJlZmVyX3R5cGUgYXJndW1lbnQuCgkobG9va3VwX25hbWVfcHJlZmVyX3R5cGUpOiBOZXcuCgkqIGRlY2wuYyAobG9va3VwX2FuZF9jaGVja190YWcpOiBVc2UgdGhlbS4KCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IExpa2V3aXNlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKHRzdWJzdF9jb3B5X2FuZF9idWlsZCk6IExpa2V3aXNlLgoJKiBuYW1lLWxvb2t1cC5oIChsb29rdXBfbmFtZV9wcmVmZXJfdHlwZSk6IE5ldy4KCShsb29rdXBfbmFtZSk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCjIwMDUtMTEtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzgzNTUKCSogZGVjbC5jIChncm9rZm5kZWNsKTogU2V0IHVwIERFQ0xfVEVNUExBVEVfSU5GTyBiZWZvcmUgY2FsbGluZwoJc2V0X2RlY2xfbmFtZXNwYWNlLgoJKiBuYW1lLWxvb2t1cC5jIChzZXRfZGVjbF9uYW1lc3BhY2UpOgoKMjAwNS0xMS0xOCAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjcC1vYmpjcC1jb21tb24uaCAoTEFOR19IT09LU19MT09LVVBfTkFNRSk6IEFkZC4KCSogbmFtZS1sb29rdXAuYyAobG9va3VwX25hbWVfdHdvKTogUmVtb3ZlLgoJKGxvb2t1cF9uYW1lX29uZSk6IEFkZC4KCSogbmFtZS1sb29rdXAuaCAobG9va3VwX25hbWVfdHdvKTogUmVtb3ZlLgoJKGxvb2t1cF9uYW1lX29uZSk6IEFkZC4KCjIwMDUtMTEtMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNDU4MAoJKiBtZXRob2QuYyAobG9jYXRlX2NvcHkpOiBBbHNvIHVzZSBza2lwX2FydGlmaWNpYWxfcGFybXMgaGVyZS4KCShzeW50aGVzaXplX2V4Y2VwdGlvbl9zcGVjKTogVXNlIENMQVNTX1RZUEVfUCByYXRoZXIgdGhhbiBjaGVja2luZwoJZm9yIFJFQ09SRF9UWVBFLgoJKGxvY2F0ZV9jdG9yKTogQWJvcnQgaWYgd2UgZmFpbCB0byBmaW5kIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KCjIwMDUtMTEtMTUgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogbmFtZS1sb29rdXAuYyAobG9va3VwX25hbWVfdHdvKTogQWRkLgoJKiBuYW1lLWxvb2t1cC5oOiBMaWtld2lzZS4KCjIwMDUtMTEtMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0NjY3CgkqIHR5cGVjay5jIChjaGVja19mb3JfY2FzdGluZ19hd2F5X2NvbnN0bmVzcyk6IFVzZSB0aGUgZGlhZ19mbi4KCShidWlsZF9jb25zdF9jYXN0XzEpOiBDYWxsIGl0LCBmb3IgQy1zdHlsZSBjYXN0cy4KCjIwMDUtMTEtMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0Njg3CgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRG9uJ3QgY2hlY2sgZm9yIEMgbGlua2FnZS4KCShwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IExpa2V3aXNlLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogQ2hlY2sgaGVyZS4KCShjcF9wYXJzZXJfdGVtcGxhdGVfZGVjbGFyYXRpb25fYWZ0ZXJfZXhwb3J0KTogQW5kIGhlcmUuCgoJKiBwYXJzZXIuYyAoY3BfbGV4ZXJfZ2V0X3ByZXByb2Nlc3Nvcl90b2tlbik6IEluaXRpYWxpemUga2V5d29yZAoJZmllbGQuCgoyMDA1LTExLTE0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjQ1ODAKCSogbWV0aG9kLmMgKGxvY2F0ZV9jdG9yKTogU2tpcCBhbGwgYXJ0aWZpY2lhbCBwYXJtcywgbm90IGp1c3QKCSd0aGlzJy4KCjIwMDUtMTEtMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZXIuYyAoZW9mX3Rva2VuKTogQWRkIGluaXRpYWxpemVyIGZvciBhbWJpZ3VvdXNfcC4KCjIwMDUtMTEtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0ODE3CgkqIGRlY2wuYyAoY2hlY2tfcmVkZWNsYXJhdGlvbl9leGNlcHRpb25fc3BlY2lmaWNhdGlvbik6IE5ldwoJZnVuY3Rpb24uCgkoZHVwbGljYXRlX2RlY2xzKTogVXNlIGl0LgoJKiBlcnJvci5jIChmbmRlY2xfdG9fc3RyaW5nKTogUHJpbnQgdGhlIHRlbXBsYXRlIHBhcmFtZXRlciBsaXN0LgoKCVBSIGMrKy8yMDI5MwoJKiBjeHgtcHJldHR5LXByaW50LmMgKHBwX2N4eF9zdGF0ZW1lbnQpOiBQcmludCBxdWFsaWZ5aW5nIHNjb3BlcwoJZm9yIG5hbWVzcGFjZXMuCgkocHBfY3h4X29yaWdpbmFsX25hbWVzcGFjZV9kZWZpbml0aW9uKTogTGlrZXdpc2UuCgkqIG5hbWUtbG9va3VwLmMgKGFtYmlndW91c19kZWNsKTogRG9uJ3QgaXNzdWUgZXJyb3IgbWVzc2FnZXM7CglpbnN0ZWFkIHJldHVybiBsaXN0cyBvZiBhbWJpZ3VvdXMgY2FuZGlkYXRlcy4KCShzZWxlY3RfZGVjbCk6IEhhbmRsZSBhbWJpZ3VvdXMgbmFtZXNwYWNlIGxvb2t1cHMuCgkqIHBhcnNlci5jIChjcF90b2tlbik6IEFkZCBhbWJpZ3VvdXNfcC4KCShjcF9sZXhlcl9nZXRfcHJlcHJvY2Vzc29yX3Rva2VuKTogU2V0IGl0LgoJKGNwX3BhcnNlcl9kaWFnbm9zZV9pbnZhbGlkX3R5cGVfbmFtZSk6IEF2b2lkIGR1cGxpY2F0ZSBtZXNzYWdlcwoJd2hlbiBhIHF1YWxpZmllZCBuYW1lIHVzZXMgYW4gaW52YWxpZCBzY29wZS4KCShjcF9wYXJzZXJfcHJpbWFyeV9leHByZXNzaW9uKTogUHJpbnQgYW1iaWd1b3VzIGNhbmRpZGF0ZXMuCgkoY3BfcGFyc2VyX3R5cGVfcGFyYW1ldGVyKTogQWRqdXN0IGNvbW1lbnQgdG8gcmVmbGVjdCBuZXcKCXBhcmFtZXRlciBuYW1lIGZvciBjcF9wYXJzZXJfbG9va3VwX25hbWUuCgkoY3BfcGFyc2VyX3RlbXBsYXRlX2FyZ3VtZW50KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2VsYWJvcmF0ZWRfdHlwZV9zcGVjaWZpZXIpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfbmFtZXNwYWNlX25hbWUpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfY2xhc3NfbmFtZSk6IFByaW50IGFtYmlndW91cyBjYW5kaWRhdGVzLgoJKGNwX3BhcnNlcl9sb29rdXBfbmFtZSk6IFJlbmFtZSBhbWJpZ3VvdXNfcCBwYXJhbWV0ZXIgdG8KCWFtYmlndW91c19kZWNscy4gIFVzZSBpdCB0byByZXR1cm4gYSBsaXN0IG9mIGFtYmlndW91cyBjYW5kaWF0ZXMKCXdoZW4gYSBsb29rdXAgaXMgYW1iaWd1b3VzLgoJKGNwX3BhcnNlcl9sb29rdXBfbmFtZV9zaW1wbGUpOiBBZGp1c3QgY29tbWVudCB0byByZWZsZWN0IG5ldwoJcGFyYW1ldGVyIG5hbWUgZm9yIGNwX3BhcnNlcl9sb29rdXBfbmFtZS4KCjIwMDUtMTEtMTIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNDc4MAoJKiB0eXBlY2suYyAoY29tcGxldGVfdHlwZSk6IFNldCBUWVBFX05FRURTX0NPTlNUUlVDVElORwoJYW5kIFRZUEVfSEFTX05PTlRSSVZJQUxfREVTVFJVQ1RPUiBmbGFncyBmb3IgYWxsIHZhcmlhbnRzCglvZiBhcnJheSB0eXBlLgoKCVBSIGMrKy8yNDc2MQoJKiBwdC5jICh0c3Vic3RfY29weV9hc21fb3BlcmFuZHMpOiBOZXcgZnVuY3Rpb24uCgkodHN1YnN0X2V4cHIpIDxjYXNlIEFTTV9FWFBSPjogVXNlIGl0LgoKMjAwNS0xMS0wOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzE5NDUwCgkqIGRlY2wuYyAocmVkZWNsYXJhdGlvbl9lcnJvcl9tZXNzYWdlKTogSXNzdWUgZGlhZ25vc3RpY3MgYWJvdXQKCW9sZGRlY2wgYW5kIG5ld2RlY2wgZGlzYWdyZWVtZW50IG9uIF9fdGhyZWFkIHByb3BlcnR5LgoJKGdyb2tkZWNsYXJhdG9yKTogU2V0IERFQ0xfVExTX01PREVMIG9uIGNsYXNzIHN0YXRpYyB2YXJpYWJsZXMuCgoyMDA1LTExLTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjExMjMKCSogbWV0aG9kLmMgKHVzZV90aHVuayk6IFVzZSBidWlsZF9jcGx1c19uZXcgaW5zdGVhZCBvZgoJZm9yY2VfdGFyZ2V0X2V4cHIuCgoyMDA1LTExLTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCSAgICBKYW1lcyBBLiBNb3JyaXNvbiA8cGh5dGhvbkBnY2MuZ251Lm9yZz4KCglQUiBjKysvMTcyNTYKCSogZGVjbDIuYyAoY3BfZmluaXNoX2ZpbGUpOiBGaXggY29uZGl0aW9ucyBmb3IgdW5kZWZpbmVkIHdhcm5pbmcuCglTZXQgVFJFRV9OT19XQVJOSU5HIGluc3RlYWQgb2YgVFJFRV9QVUJMSUMuCgkqIHB0LmMgKGluc3RhbnRpYXRlX3BlbmRpbmdfdGVtcGxhdGVzKTogU2V0IERFQ0xfSU5JVElBTCB0byBhdm9pZAoJYSB3YXJuaW5nIG9uIGEgZnVuY3Rpb24gd2UgZGlkbid0IGluc3RhbnRpYXRlIGJlY2F1c2Ugb2YgZXhjZXNzaXZlCglyZWN1cnNpb24uCgoyMDA1LTExLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAocmVjb3JkX3N1Ym9iamVjdF9vZmZzZXRzKTogRG9uJ3QgcmVjb3JkIG9mZnNldHMgcGFzdAoJYmlnZ2VzdCBlbXB0eSBjbGFzcyBmb3Igbm9uLWVtcHR5IGJhc2UgY2xhc3Nlcy4KCShsYXlvdXRfY2xhc3NfdHlwZSk6IFVzZSBUWVBFX1NJWkVfVU5JVCwgbm90IFRZUEVfU0laRSwgd2hlbgoJa2VlcGluZyB0cmFjayBvZiB0aGUgc2l6ZSBvZiBlbXB0eWNsYXNzZXMuCgoJUFIgYysrLzIxMzA4CgkqIGNsYXNzLmMgKHNpemVvZl9iaWdnZXN0X2VtcHR5X2NsYXNzKTogTmV3IHZhcmlhYmxlLgoJKHJlY29yZF9zdWJvYmplY3Rfb2Zmc2V0cyk6IERvbid0IHJlY29yZCBvZmZzZXRzIHBhc3QgYmlnZ2VzdAoJZW1wdHkgY2xhc3MgZm9yIGRhdGEgbWVtYmVycy4gIFJlcGxhY2UgdmJhc2VzX3AgcGFyYW1ldGVyIHdpdGgKCWlzX2RhdGFfbWVtYmVyIHBhcmFtZXRlci4KCShidWlsZF9iYXNlX2ZpZWxkKTogQWRqdXN0IGNhbGwuCgkobGF5b3V0X2NsYXNzX3R5cGUpOiBMaWtld2lzZS4gIE1haW50YWluCglzaXplb2ZfYmlnZ2VzdF9lbXB0eV9jbGFzcy4KCjIwMDUtMTEtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYywgaW5pdC5jLCB0eXBlY2suYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA1LTExLTA0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgYysrLzIyNDg3CgkqIGluaXQuYyAoYnVpbGRfdmVjX2luaXQpOiBCdWlsZCBjb21wYXJpc29uIG9mIG1hdGNoaW5nCgl0eXBlcy4KCjIwMDUtMTEtMDMgIEpvc2ggQ29ubmVyICA8amNvbm5lckBhcHBsZS5jb20+CgoJUFIgYysrLzE5OTg5CglwdC5jICh0c3Vic3QpOiBBY2NlcHQgemVyby1sZW5ndGggYXJyYXkgaWYgdGZfZXJyb3IgaXMgc2V0CglpbiBjb21wbGFpbiBmbGFncy4gIENoYW5nZSBlcnJvciBtZXNzYWdlIGZvciBuZWdhdGl2ZS0KCWxlbmd0aCBhcnJheS4KCjIwMDUtMTEtMDQgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChjcF9jcHBfZXJyb3IpLCBlcnJvci5jIChjcF9jcHBfZXJyb3IpOiBUYWtlIHZhX2xpc3QqCglwYXJhbWV0ZXIuCgoyMDA1LTExLTAzICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTc5NjQKCSogZXJyb3IuYyAoY3BfY3BwX2Vycm9yKTogTmV3IGZ1bmN0aW9uLgoJKiBjcC10cmVlLmggKGNwX2NwcF9lcnJvcik6IERlY2xhcmUuCgkqIHBhcnNlci5jIChjcF9sZXhlcl9uZXdfbWFpbik6IFNldCBDUFAgb3B0aW9uIGNsaWVudF9kaWFnbm9zdGljCglhbmQgZXJyb3IgY2FsbGJhY2sgYWZ0ZXIgbGV4aW5nLgoKMjAwNS0xMS0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjE2MjcKCSogcHQuYyAocmVnaXN0ZXJfc3BlY2lhbGl6YXRpb24pOiBVcGRhdGUgaW5saW5lIGZsYWdzIG9uIGNsb25lcy55CgoyMDA1LTExLTAzICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBjKysvMjQ1ODIKCSogZGVjbC5jIChkZWNsYXJlX2xvY2FsX2xhYmVsKTogUmV0dXJuIDAgZm9yIHZhcmlhYmxlcwoJd2l0aCBlcnJvcl9tYXJrX25vZGUgYXMgdGhlaXIgdHlwZXMuCgoyMDA1LTExLTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMjQzNAoJKiBjYWxsLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBEbyBiYWQgY29udmVyc2lvbnMsIGlmIHRoZXJlJ3MKCW5vIG90aGVyIGNob2ljZS4KCglQUiBjKysvMjQ1NjAKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wb3N0Zml4X2RvdF9kZXJlZl9leHByZXNzaW9uKTogSW1wcm92ZSBlcnJvcgoJbWVzc2FnZSBmb3IgdXNlIG9mIG92ZXJsb2FkZWQgZnVuY3Rpb25zIG9uIExIUyBvZiAiLiIgb3BlcmF0b3IuCgoJUFIgYysrLzE5MjUzCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uKTogVXNlCgljcF9wYXJzZXJfZWxhYm9yYXRlZF90eXBlX3NwZWNpZmllciB0byBoYW5kbGUgdHlwZW5hbWUtdHlwZXMgaW4KCWZ1bmN0aW9uYWwgY2FzdHMuCgkoY3BfcGFyc2VyX2VuY2xvc2VkX2FyZ3VtZW50X2xpc3QpOiBTa2lwIGFoZWFkIHRvIHRoZSBlbmQgb2YgdGhlCgl0ZW1wbGF0ZSBhcmd1bWVudCBsaXN0IGlmIHRoZSBjbG9zaW5nICI+IiBpcyBub3QgZm91bmQuCgoJUFIgYysrLzI0NTY5CgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBVc2UgY3BfZmluaXNoX2RlY2wsIG5vdAoJZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcl9kZWNsLgoKMjAwNS0xMC0yOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBSZW1vdmUgdGhlIHNldHRpbmcKCW9mIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gdHlwZQoJb2YgbWFpbiBhZnRlciBlcnJvcmluZyBhYm91dCBtdXN0IHJldHVybmluZwoJaW50LgoKMjAwNS0xMC0yOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgQysrLzIzMjI5CgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IENyZWF0ZSBhIG5ldyBmdW5jdGlvbiB0eXBlCglhZnRlciBlcnJvcmluZyBvdXQgYWJvdXQgbWFpbiBub3QgcmV0dXJuaW5nIGludC4KCjIwMDUtMTAtMjggIEpvc2ggQ29ubmVyICA8amNvbm5lckBhcHBsZS5jb20+CgoJUFIgYysrLzIyMTUzCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbWVtYmVyX2RlY2xhcmF0aW9uKTogRGV0ZWN0IGFuZCBoYW5kbGUKCWEgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24uCgoyMDA1LTEwLTI4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBDKysvMjM0MjYKCSogZGVjbC5jIChzdGFydF9kZWNsKTogQ2hlY2sgdGhhdCB0aGUgZGVjbCBpcyBhbgoJZXJyb3JfbWFya19ub2RlIGJlZm9yZSBnZXR0aW5nIHRoZSB0eXBlLgoJUmVtb3ZlIHRoZSBjaGVjayBmb3IgdGhlIGRlY2wncyB0eXBlIGJlaW5nIGFuCgllcnJvcl9tYXJrX25vZGUuCgoyMDA1LTEwLTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNDI2MAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2luaXRfZGVjbGFyYXRvcik6IFBhc3MgYXR0cmlidXRlcyB0bwoJZ3Jva2ZpZWxkLgoKMjAwNS0xMC0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjI2MTgKCSogc2VhcmNoLmMgKGFjY2Vzc2libGVfcCk6IENoZWNrIGFjY2VzcyBpbiB0aGUgb3V0ZXJtb3N0IHNldCBvZgoJdGVtcGxhdGUgcGFyYW1ldGVycy4KCjIwMDUtMTAtMjAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBGaXggYW1iaWd1b3VzIHBlZHdhcm4gbWVzc2FnZS4KCjIwMDUtMTAtMTggIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzIyMjkzCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZWplY3QgdW5xdWFsaWZpZWQgZGVzdHJ1Y3RvcnMgaW4KCWZyaWVuZCBkZWNsYXJhdGlvbnMuCgoyMDA1LTEwLTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzI5MwoJKiBwdC5jIChjb252ZXJ0X3RlbXBsYXRlX2FyZ3VtZW50KTogVXNlIGNhbm9uaWNhbCB0eXBlIHZhcmlhbnRzIGluCgl0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMuCgoyMDA1LTEwLTE4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTM4MwoJKiBuYW1lLWxvb2t1cC5jIChhcmdfYXNzb2MpOiBUZW1wbGF0ZSBhcmdzIGNhbiBiZSBudWxsIGluIGEKCXRlbXBsYXRlLWlkLWV4cHIuCgoJUFIgYysrLzIyNjA0CgkqIGNsYXNzLmMgKHVwZGF0ZV92dGFibGVfZW50cnlfZm9yX2ZuKTogRG9uJ3QgcHJvY2VzcyBpbnZhbGlkCgljb3ZhcmlhbnQgb3ZlcnJpZGVycy4KCglQUiBjKysvMjMxMTgKCSogY3AtdHJlZS5oIChhZGRfbWV0aG9kKTogQWRkIHJldHVybiB2YWx1ZS4KCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IFJldHVybiBzdWNjZXNzIGluZGljYXRvci4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9tZW1iZXJfZGVjbGFyYXRpb24pOiBEb24ndCBhZGQgYW4gaW52YWxpZAoJbWV0aG9kIHRvIHRoZSBtZXRob2QgbGlzdC4KCjIwMDUtMTAtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxOTA4CgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogRG8gbm90IHNob3cgVlRUIHBhcmFtZXRlcnMgdG8KCXRoZSB1c2VyLgoKMjAwNS0xMC0xNyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjM0NDAKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9zdGF0ZW1lbnQpOiBJZiB0aGUgcGFyc2VyIHJlYWNoZWQgQ1BQX0VPRiwKCW9ubHkgY29tcGxhaW4gYWJvdXQgbWlzc2luZyBzdGF0ZW1lbnQuCgoyMDA1LTEwLTE3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNDM4NgoJKiBjcC10cmVlLmggKEJBU0VMSU5LX1FVQUxJRklFRF9QKTogTmV3LgoJKiBwdC5jICh0c3Vic3RfY29weV9hbmRfYnVpbGQpOiA8Q0FMTF9FWFBSIGNhc2U+OiBVc2UgaXQuCgkqIHR5cGVjay5jIChmaW5pc2hfY2xhc3NfbWVtYmVyX2FjY2Vzc19leHByKTogU2V0IGl0LgoKCVBSIGMrKy8yMTM1MwoJKiBkZWNsLmMgKGNoZWNrX2RlZmF1bHRfYXJndW1lbnQpOiBEb24ndCBjaGVjawoJcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsIG9yIHVzZXNfdGVtcGxhdGVfcGFybXMgaGVyZS4KCShncm9rcGFybXMpOiBPbmx5IGNhbGwgY2hlY2tfZGVmYXVsdF9hcmd1bWVudCB3aGVuIG5vdCBwcm9jZXNzaW5nCglhIHRlbXBsYXRlIGRlY2wuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbGF0ZV9wYXJzaW5nX2RlZmF1bHRfYXJnKTogQ2FsbAoJY2hlY2tfZGVmYXVsdF9hcmd1bWVudCB3aGVuIG5vdCBwcm9jZXNzaW5nIGEgdGVtcGxhdGUgZGVjbC4KCjIwMDUtMTAtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0Mzg5CgkqIGRlY2wyLmMgKG1hcmtfdXNlZCk6IFVzZSB1c2VzX3RlbXBsYXRlX3Bhcm1zIGluc3RlYWQgb2YKCWRlcGVuZGVudF90eXBlX3AuCgkqIGluaXQuYyAoY29uc3RhbnRfdmFsdWVfMSk6IEhhbmRsZSB1bmluc3RhbnRpYXRlZCB0ZW1wbGF0ZXMKCXNwZWNpYWxseS4KCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IEFkZCBzYW5pdHkgY2hlY2suCgoyMDA1LTEwLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMjE3MwoJKiB0eXBlY2suYyAoY2hlY2tfdGVtcGxhdGVfa2V5d29yZCk6IEZpeCB0aGlua28uCgoyMDA1LTEwLTE2ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBjKysvMjM5NTkKCSogZGVjbC5jIChwb3Bfc3dpdGNoKTogT25seSBjYWxsIGNfZG9fc3dpdGNoX3dhcm5pbmdzCgl3aGVuIG5vdCBwcm9jZXNzaW5nIHRlbXBsYXRlcy4KCjIwMDUtMTAtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIyMTczCgkqIGNwLXRyZWUuaCAoUVVBTElGSUVEX05BTUVfSVNfVEVNUExBVEUpOiBOZXcgbWFjcm8uCgkoY2hlY2tfdGVtcGxhdGVfa2V5d29yZCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfaWRfZXhwcmVzc2lvbik6IENoYW5nZSBwcm90b3RveXBlLgoJKGZpbmlzaF9xdWFsaWZpZWRfaWRfZXhwcik6IENoYW5nZSBwcm90b3R5cGUuCgkoYnVpbGRfcXVhbGlmaWVkX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2NsYXNzX21lbWJlcl9hY2Nlc3NfZXhwcik6IENoYW5nZSBwcm90b3R5cGUuCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IFVzZSBidWlsZF9xdWFsaWZpZWRfbmFtZS4KCSogbWFuZ2xlLmMgKHdyaXRlX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wcmltYXJ5X2V4cHJlc3Npb24pOiBSZW1vdmUgcXVhbGlmeWluZ19jbGFzcwoJcGFyYW1ldGVyLiAgQWRkIGFkZHJlc3NfcCBhbmQgdGVtcGxhdGVfYXJnX3AuICBVc2UKCWJ1aWxkX3F1YWxpZmllZF9uYW1lLgoJKGNwX3BhcnNlcl9pZF9leHByZXNzaW9uKTogRGVmYXVsdCAqdGVtcGxhdGVfcCB0bwoJdGVtcGxhdGVfa2V5d29yZF9wLiAgQ2hlY2sgZm9yIGludmFsaWQgdXNlcyBvZiB0aGUgdGVtcGxhdGUKCWtleXdvcmQuCgkoY3BfcGFyc2VyX3Bvc3RmaXhfZXhwcmVzc2lvbik6IEVsaW1pbmF0ZSBzcGVjaWFsIGhhbmRsaW5nIGZvcgoJcXVhbGlmaWVkIG5hbWVzLiAgQWRqdXN0IGNhbGwgdG8gY3BfcGFyc2VyX3ByaW1hcnlfZXhwcmVzc2lvbi4KCShjcF9wYXJzZXJfcG9zdGZpeF9kb3RfZGVyZWZfZXhwcmVzc2lvbik6IEFkanVzdCBjYWxsIHRvCgljcF9wYXJzZXJfaWRfZXhwcmVzc2lvbiBhbmQgZmluaXNoX2NsYXNzX21lbWJlcl9hY2Nlc3NfZXhwci4KCShjcF9wYXJzZXJfdGVtcGxhdGVfYXJndW1lbnRfbGlzdCk6IEFkZCBjb21tZW50LgoJKGNwX3BhcnNlcl90ZW1wbGF0ZV9hcmd1bWVudCk6IEFkanVzdCB1c2Ugb2YKCWNwX3BhcnNlcl9wcmltYXJ5X2V4cHJlc3Npb24uICBSZW1vdmUgY2FsbCB0bwoJZmluaXNoX3F1YWxpZmllZF9pZF9leHByLgoJKGNwX3BhcnNlcl9sb29rdXBfbmFtZSk6IFVzZSBidWlsZF9xdWFsaWZpZWRfbmFtZS4KCSogcHQuYyAodHN1YnN0KTogVXNlIGJ1aWxkX3F1YWxpZmllZF9uYW1lLgoJKHRzdWJzdF9xdWFsaWZpZWRfaWQpOiBMaWtld2lzZS4gIEFkanVzdCBjYWxsIHRvCglmaW5pc2hfcXVhbGlmaWVkX2lkX2V4cHIuCgkodHN1YnN0X2NvcHkpOiBVc2UgYnVpbGRfcXVhbGlmaWVkX25hbWUuCgkodHN1YnN0X2NvcHlfYW5kX2J1aWxkKTogQWRqdXN0cyBjYWxsIHRvIGZpbmlzaF9pZF9leHByZXNzaW9uIGFuZAoJZmluaXNoX2NsYXNzX21lbWJlcl9hY2Nlc3NfZXhwci4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9ub25fc3RhdGljX2RhdGFfbWVtYmVyKTogVXNlCglidWlsZF9xdWFsaWZpZWRfbmFtZS4KCShmaW5pc2hfcXVhbGlmaWVkX2lkX2V4cHIpOiBBZGQgdGVtcGxhdGVfcCBhbmQgdGVtcGxhdGVfYXJnX3AKCXBhcmFtZXRlcnMuCgkoZmluaXNoX2lkX2V4cHJlc3Npb24pOiBSZW1vdmUgcXVhbGlmaXlpbmdfY2xhc3MgcGFyYW1ldGVyLiAgQWRkCgl0ZW1wbGF0ZV9wLCBkb25lLCBhZGRyZXNzX3AsIGFuZCB0ZW1wbGF0ZV9hcmdfcC4gIFVzZQoJYnVpbGRfcXVhbGlmaWVkX25hbWUuICBBZGp1c3QgY2FsbHMgdG8KCWZpbmlzaF9jbGFzc19tZW1iZXJfYWNlc3NfZXhwci4KCSogdHJlZS5jIChidWlsZF9xdWFsaWZpZWRfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCSogdHlwZWNrLmMgKGNoZWNrX3RlbXBsYXRlX2tleXdvcmQpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2NsYXNzX21lbWJlcl9hY2Nlc3NfZXhwcik6IEFkZCB0ZW1wbGF0ZV9wIGFyZ3VtZW50LiAgQ2hlY2sKCWZvciBpbnZhbGlkIHVzZXMgb2YgdGhlIHRlbXBsYXRlIGtleXdvcmQuCgoyMDA1LTEwLTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTM0NwoJKiBjbGFzcy5jIChtYXliZV93YXJuX2Fib3V0X292ZXJseV9wcml2YXRlX2NsYXNzKTogTGF6eQoJY29uc3RydWN0b3JzIGFyZSBwdWJsaWMuCgoyMDA1LTEwLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTU2NQoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZV9yZWFsKTogUmVseSBvbiBjb252ZXJ0X2FuZF9jaGVjayB0byBpc3N1ZQoJd2FybmluZ3MgYWJvdXQgb3ZlcmZsb3cgYW5kIGNvbnZlcnNpb24gdG8gdW5zaWduZWQuCgkqIGRlY2wuYyAoZmluaXNoX2VudW0pOiBVc2UgdGhlIGxvY2F0aW9uIG9mIHRoZSBlbnVtZXJhdG9ycywgbm90Cgl0aGUgY2xvc2luZyBicmFjZSBvZiB0aGUgZW51bWVyYXRpb24sIHdoZW4gcmVwb3J0aW5nIHdhcm5pbmdzCglhYm91dCBjb252ZXJzaW9ucy4KCShidWlsZF9lbnVtZXJhdG9yKTogVXNlIGVycm9yX21hcmtfbm9kZSBmb3IgZXJyb25lb3VzIHZhbHVlcy4KCSogdHlwZWNrMi5jIChkaWdlc3RfaW5pdCk6IFJlbW92ZSByZWZlcmVuY2UgdG8gInNpZ25hdHVyZSBwb2ludGVyIgoJZnJvbSBjb21tZW50LgoKMjAwNS0xMC0xNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTc3OTYKCSogb3B0aW1pemUuYyAodXBkYXRlX2Nsb25lZF9wYXJtKTogQWRkIEZJUlNUIHBhcmFtZXRlci4gVXNlIGl0LgoJKG1heWJlX2Nsb25lX2JvZHkpOiBUcmFjayB0aGUgZmlyc3QgY2xvbmUuCgoyMDA1LTEwLTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzk4NAoJKiBjbGFzcy5jIChidWlsZF9iYXNlX3BhdGgpOiBUaGUgdnRhYmxlIGlzIGFsd2F5cyB0aGUgZmlyc3QgdGhpbmcKCWluIHRoZSB2dHQuCgoyMDA1LTEwLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDcyMQoJKiBjcC10cmVlLmggKERFQ0xfTk9OVFJJVklBTExZX0lOSVRJQUxJWkVEX1ApOiBOZXcgbWFjcm8uCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogTWVyZ2UgaXQgaW50byBuZXcgZGVjbGFyYXRpb25zLgoJKGRlY2xfanVtcF91bnNhZmUpOiBVc2UgaXQsIHJhdGhlciB0aGFuIERFQ0xfSU5JVElBTC4KCShjcF9maW5pc2hfZGVjbCk6IFNldCBpdCwgd2hlbiBhcHByb3ByaWF0ZS4KCglQUiBjKysvMjIxODAKCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBDb3JyZWN0IHByZXR0eS1wcmludGluZyBvZgoJZGVzdHJ1Y3RvciBuYW1lcy4KCSogcHQuYyAodHN1YnN0X3F1YWxpZmllZF9pZCk6IFJlY29nbml6ZSBpbnZhbGlkIHVzZXMgb2YgIn5UIiBhcyBhbgoJaWRlbnRpZmllci4KCglQUiBjKysvMjM2OTQKCSogZGVjbC5jIChzdGFydF9tZXRob2QpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIGZvciBlcnJvcnMuCgoJUFIgYysrLzIzMzA3CgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogQ29tcGxhaW4gYWJvdXQgYXR0ZW1wdHMgdG8KCWRlY2xhcmUgdGVtcGxhdGUgdmFyaWFibGVzLgoKCVBSIGMrKy8yMjM1MgoJKiBwdC5jICh0c3Vic3RfdGVtcGxhdGVfcGFybXMpOiBTZXQgcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsIHdoaWxlCglwcm9jZXNzaW5nIHRoZSBwYXJhbWV0ZXJzLgoJKHRzdWJzdF9kZWNsKTogU2V0IHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCB3aGVuIHN1YnN0aXR1dGluZyBpbnRvCglhIFRFTVBMQVRFX0RFQ0wuCgoJUFIgYysrLzIyNDA1CgkqIHB0LmMgKG1vc3Rfc3BlY2lhbGl6ZWRfaW5zdGFudGlhdGlvbik6IFJvYnVzdGlmeS4KCglQUiBjKysvMjI0NjQKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9pZF9leHByZXNzaW9uKTogSXNzdWUgZXJyb3JzIGFib3V0IHVzZXMgb2YKCWxvY2FsIHZhcmlhYmxlcyBpbiBjb250YWluaW5nIGZ1bmN0aW9ucyBldmVuIGluIHRlbXBsYXRlcy4KCjIwMDUtMTAtMTIgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgdGFyZ2V0LzIxODAxCglQUiB0YXJnZXQvMjM1ODkKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogQ2FsbAoJdGFyZ2V0bS5jeHguYWRqdXN0X2NsYXNzX2F0X2RlZmluaXRpb24uCgoKMjAwNS0xMC0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjE1OTIKCSogcHQuYyAoYnVpbGRfbm9uX2RlcGVuZGVudF9leHByKTogRG9uJ3Qgd3JhcCBhIENPTVBPTkVOVF9SRUYKCXdpdGggYWxyZWFkeSBsb29rZWQgdXAgbWVtYmVyIGZ1bmN0aW9ucy4gIEFzc2VydCB3ZSdyZSBub3QKCXJldHVybmluZyBhIE5PTl9ERVBFTkRFTlRfRVhQUiB3aXRoIHVua25vd24gdHlwZS4KCSogdHlwZWNrLmMgKGZpbmlzaF9jbGFzc19tZW1iZXJfYWNjZXNzX2V4cHIpOiAgV2UgY2FuIGdldAoJbm9uLXRlbXBsYXRlLWlkLWV4cHIgYmFzZWxpbmtzLiAgSWYgdGhlIGxvb2t1cCBmaW5kcyBhIGJhc2VsaW5rLAoJcmVtZW1iZXIgaXQgZXZlbiBpbnNpZGUgdGVtcGxhdGVzLgoKCVBSIGMrKy8yMzc5NwoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2Z1bmN0aW9uYWxfY2FzdCk6IENvcGUgd2hlbiBUWVBFIGlzIG5vdCBhCglUWVBFX0RFQ0wuICBVc2UgZGVwZW5kZW50X3R5cGVfcCB0byBjaGVjayB0eXBlLgoJKiBwdC5jICh1c2VzX3RlbXBsYXRlX3Bhcm1zX3ApOiBVc2UgZGVwZW5kZW50X3R5cGVfcCBmb3IgYQoJVFlQRV9ERUNMLgoJKHR5cGVfZGVwZW5kZW50X2V4cHJlc3Npb25fcCk6IEFzc2VydCB3ZSd2ZSBub3QgYmVlbiBnaXZlbiBhCglUWVBFX0RFQ0wuCgoJUFIgYysrLzIxMTE3CgkqIGRlY2wuYyAoY2hlY2tfZnVuY3Rpb25fdHlwZSk6IENvcnJlY3RseSBvdmVyd3JpdGUgaW5jb21wbGV0ZQoJcmV0dXJuIHR5cGUgd2l0aCB2b2lkIHR5cGUuCgkqIHR5cGVjay5jIChjaGVja19yZXR1cm5fZXhwcik6IElmIHRoZSBmdW5jdGlvbidzIHJldHVybiB0eXBlIGlzCgl2b2lkLCBkb24ndCB0cnkgYW5kIGNvbnZlcnQgYSByZXR1cm4gZXhwci4KCjIwMDUtMTAtMTIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCglQUiBjKysvMjM3MzAKCSogY2FsbC5jIChidWlsZF9vYmplY3RfY2FsbCk6IElmIEJJTkZPIGlzIE5VTEwsIGJ5cGFzcwoJbG9va3VwX2ZuZmllbGRzIGFuZCBzZXQgZm5zIHRvIE5VTExfVFJFRS4KCjIwMDUtMTAtMTIgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgYysrLzI0MDUyCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IFBhc3MgTEFCRUxfREVDTCB0byBkdW1wX2RlY2wuICBQcmludAoJYW4gQUREUl9FWFBSIG9mIGEgTEFCRUxfREVDTCBhcyAmJi4KCjIwMDUtMTAtMTIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5OTY0CgkqIGNsYXNzLmMgKHdhbGtfc3Vib2JqZWN0X29mZnNldHMpOiBEb24ndCB3YWxrIGVycm9yX21hcmtfbm9kZS4KCjIwMDUtMTAtMTEgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJUFIgYysrLzgwNTcKCSogY3Z0LmMgKGNvbnZlcnRfdG9fdm9pZCk6IERvbid0IHdhcm4gYWJvdXQgdW51c2VkIHZhbHVlcyB3aGVuCglwcm9jZXNzaW5nIGEgdGVtcGxhdGUgZGVjbGFyYXRpb24uCgoyMDA1LTEwLTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTA4OQoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZV9yZWFsKTogVXNlIGRlY2xfY29uc3RhbnRfdmFsdWUsIG5vdAoJaW50ZWdyYWxfY29uc3RhbnRfdmFsdWUuCgkqIGluaXQuYyAoY29uc3RhbnRfdmFsdWVfMSk6IE5ldyBmdW5jdGlvbi4KCShpbnRlZ3JhbF9jb25zdGFudF92YWx1ZSk6IFVzZSBpdC4KCShkZWNsX2NvbnN0YW50X3ZhbHVlKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChkZWNheV9jb252ZXJzaW9uKTogVXNlIGRlY2xfY29uc3RhbnRfdmFsdWUsIG5vdAoJaW50ZWdyYWxfY29uc3RhbnRfdmFsdWUuCgoJUFIgYysrLzIxMzY5CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZWxhYm9yYXRlZF90eXBlX3NwZWNpZmllcik6IERvbid0IHRyZWF0CgljbGFzcyB0eXBlcyBhcyB0ZW1wbGF0ZXMgaWYgdGhlIHR5cGUgaXMgbm90IGFwcGVhcmluZyBhcyBwYXJ0IG9mIGEKCXR5cGUgZGVmaW5pdGlvbiBvciBkZWNsYXJhdGlvbi4KCjIwMDUtMTAtMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0Mjc3CgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBDYWxsIGZpbmlzaF9zdGF0aWNfZGF0YV9tZW1iZXJfZGVjbCBmb3IKCXN0YXRpYyBkYXRhIG1lbWJlcnMuCgoyMDA1LTEwLTEwICBHaW92YW5uaSBCYWpvICA8Z2lvdmFubmliYWpvQGdjYy5nbnUub3JnPgoJICAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIzNDM3CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdGVtcGxhdGVfYXJndW1lbnRfbGlzdCk6IERvIG5vdCB0cmVhdAoJY29udGVudHMgb2YgYXJndW1lbnQgbGlzdCBhcyBwYXJ0IG9mIGEgY29uc3RhbnQgZXhwcmVzc2lvbi4KCjIwMDUtMTAtMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0MTM5CgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEbyBub3QgcmVxdWlyZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgbGlzdHMKCWZvciBleHBsaWNpdGx5IHNwZWNpYWxpemVkIGNsYXNzLgoJKiBlcnJvci5jIChkdW1wX2FnZ3JfdHlwZSk6IERvIG5vdCBkdW1wIHRlbXBsYXRlIGFyZ3VtZW50cyBmb3IKCW5vbi1wcmltYXJ5IHNwZWNpYWxpemF0aW9ucy4KCShkdW1wX2Z1bmN0aW9uX25hbWUpOiBMaWtld2lzZS4KCglQUiBjKysvMjQyNzUKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IEluc3RhbnRpYXRlIHRoZSBpbml0aWFsaXplciBvZgoJYSBzdGF0aWMgZGF0YSBtZW1iZXIgaW4gdGhlIG5hbWVzcGFjZSBjb250YWluaW5nIHRoZSBjbGFzcwoJY29udGFpbmluZyB0aGUgc3RhdGljIGRhdGEgbWVtYmVyLgoKMjAwNS0xMC0wOCAgSmFtZXMgQS4gTW9ycmlzb24gIDxwaHl0aG9uQGdjYy5nbnUub3JnPgoKCVBSIGMrKy8yMjE3MgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3Bvc3RmaXhfZXhwcmVzc2lvbikgPFJJRF9UWVBFTkFNRT46IFRyZWF0IG5vbnR5cGUKCXNjb3BlcyBhcyBub25kZXBlbmRlbnQuCgoyMDA1LTEwLTA2ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogY2FsbC5jIChyZXNvbHZlX2FyZ3MpOiBSZW1vdmUgcmVkdW5kYW50IHRlc3QuCgoyMDA1LTEwLTA1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzIxNDE5CglQUiB0cmVlLW9wdGltaXphdGlvbi8yNDE0NgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjQxNTEKCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYXNtX3N0bXQpOiBDYWxsIHJlYWRvbmx5X2Vycm9yIGlmIG91dHB1dHMgYXJlCglyZWFkLW9ubHkuICBTZXQgQVNNX1ZPTEFUSUxFX1AgZm9yIGFzbXMgd2l0aG91dCBvdXRwdXRzLgoKMjAwNS0xMC0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjM1MTMKCSogY2FsbC5jIChqb3VzdCk6IEFkanVzdCBsZW5ndGggY291bnQgdG8gbW9yZV9zcGVjaWFsaXplZF9mbi4KCSogcHQuYyAobW9yZV9zcGVjaWFsaXplZF9mbik6IENvcGUgd2l0aCBub24tc3RhdGljIG1lbWJlciB2cwoJbm9uLW1lbWJlci4KCjIwMDUtMTAtMDQgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG1pZGRsZS1lbmQvMjMxMjUKCSogZGVjbC5jIChtYWtlX3J0bF9mb3Jfbm9ubG9jYWxfZGVjbCk6IFVzZSBzZXRfdXNlcl9hc3NlbWJsZXJfbmFtZQoJaW5zdGVhZCBvZiBjaGFuZ2VfZGVjbF9hc3NlbWJsZXJfbmFtZS4KCjIwMDUtMTAtMDMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZXJyb3IuYyAoZHVtcF90eXBlKSA8VU5LTk9XTl9UWVBFPjogUHJpbnQgcmV3b3JkZWQgbWVzc2FnZS4KCjIwMDUtMTAtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE3Nzc1CgkqIHJlcG8uYzogSW5jbHVkZSBmbGFncy5oLgoJKGZpbmlzaF9yZXBvKTogQWRkIC1mcmFuZG9tLXNlZWQgdG8gdGhlIGFyZ3VtZW50cy4KCjIwMDUtMTAtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIyNjIxCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdGVtcGxhdGVfYXJndW1lbnQpOiBEb24ndCB0dXJuICJUOjpmIiBpbnRvCgkiKCp0aGlzKS5UOjpmIi4KCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogUmVtb3ZlID8/PyBjb21tZW50LgoKCVBSIGMrKy8yMzg0MAoJKiB0cmVlLmMgKGx2YWx1ZV9wXzEpOiBBIFZBX0FSR19FWFBSIHdpdGggY2xhc3MgdHlwZSBpcyBhbiBsdmFsdWUsCgl3aGVuIGNsYXNzIHJ2YWx1ZXMgYXJlIGx2YWx1ZXMuCgoyMDA1LTA5LTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xNjc4MgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWx3YXlzIHBlZHdhcm4gYWJvdXQgb3ZlcnF1YWxpZmllZAoJbWVtYmVyIG5hbWVzLgoKMjAwNS0wOS0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjIxNDcKCSogbmFtZS1sb29rdXAuYyAobWF5YmVfcHJvY2Vzc190ZW1wbGF0ZV90eXBlX2RlY2xhcmF0aW9uKTogRG9uJ3QKCXRyZWF0IGZvcndhcmQgZGVjbGFyYXRpb25zIG9mIGNsYXNzZXMgYXMgdGVtcGxhdGVzIGp1c3QgYmVjYXVzZQoJd2UncmUgcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsLgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IENsZWFyIERFQ0xfVEVNUExBVEVfSU5GTyBmb3IgZnJpZW5kCglmdW5jdGlvbnMuCgoyMDA1LTA5LTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMTM3NjQKCSogY3AtdHJlZS5oIChGVU5DVElPTl9ORUVEU19CT0RZX0JMT0NLKTogTmV3IG1hY3JvLgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoZGVjbF9tYXliZV9mcmllbmQpOiBDaGVjayBpdC4KCSogZGVjbC5jIChiZWdpbl9mdW5jdGlvbl9ib2R5KTogRG8gbm90aGluZyBpZiBpdCdzIGZhbHNlLgoJKGZpbmlzaF9mdW5jdGlvbl9ib2R5KTogRGl0dG8uCgkob3V0ZXJfY3VybHlfYnJhY2VfYmxvY2spOiBOZXcgZm4uCgkoZmluaXNoX2Z1bmN0aW9uKTogVXNlIGl0LgoKMjAwNS0wOS0yNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMTU4NTUKCSogZGVjbDIuYyAoZG9fc3RhdGljX2Rlc3RydWN0aW9uKTogUmVtb3ZlLgoJKGZpbmlzaF9zdGF0aWNfaW5pdGlhbGl6YXRpb25fb3JfZGVzdHJ1Y3Rpb24pOiBMaWtld2lzZS4KCShERUNMX0VGRkVDVElWRV9JTklUX1BSSU9SSVRZKTogTmV3IG1hY3JvLgoJKE5FRURTX0dVQVJEX1ApOiBMaWtld2lzZS4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb24pOiBSZW5hbWUgdG8KCWRvX3N0YXRpY19pbml0aWFsaXphdGlvbl9vcl9kZXN0cnVjdGlvbi4gIFByb2Nlc3MgYWxsCglpbml0aWFsaXplcnMvZGVzdHJ1Y3RvcnMgYW5kIGhhbmRsZSBjb21tb24gY29uZGl0aW9uYWxpemluZy4KCShzdGFydF9zdGF0aWNfaW5pdGlhbGl6YXRpb25fb3JfZGVzdHJ1Y3Rpb24pOiBSZW5hbWUgdG8KCW9uZV9zdGF0aWNfaW5pdGlhbGl6YXRpb25fb3JfZGVzdHJ1Y3Rpb24uICBIYW5kbGUgb25seQoJZGVjbC1zcGVjaWZpYyBjb25kaXRpb25hbGl6aW5nLgoJKGNwX2ZpbmlzaF9maWxlKTogQ2FsbCBkb19zdGF0aWNfaW5pdGlhbGl6YXRpb25fb3JfZGVzdHJ1Y3Rpb24uCgoyMDA1LTA5LTIyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMjE5ODMKCSogY2xhc3MuYyAoZmluZF9maW5hbF9vdmVycmlkZXIpOiBNb3ZlIGRpYWdub3N0aWMgYWJvdXQgbm8gdW5pcXVlIGZpbmFsCglvdmVycmlkZXIgdG8uLi4KCSh1cGRhdGVfdnRhYmxlX2VudHJ5X2Zvcl9mbik6IC4uLiBoZXJlLgoKMjAwNS0wOS0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjM5OTMKCSogaW5pdC5jIChpbnRlZ3JhbF9jb25zdGFudF92YWx1ZSk6IFVzZSBERUNMX0lOVEVHUkFMX0NPTlNUQU5UX1ZBUl9QLgoKMjAwNS0wOS0yMSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjM5NjUKCSogY2FsbC5jIChyZXNvbHZlX2FyZ3MpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIG9uIGFyZ3VtZW50cwoJd2hvc2UgVFJFRV9UWVBFIGlzIGVycm9yX21hcmtfbm9kZS4KCjIwMDUtMDktMjAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8yMzk0NwoJKiBydHRpLmMgKGdldF9wc2V1ZG9fdGlfaW5pdCk6IFJlY29tcHV0ZSB0aSBwb2ludGVyIGFmdGVyCglnZXRfdGluZm9fcHRyIGNhbGxzLgoKMjAwNS0wOS0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjM5MTQKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9lbmNsb3NlZF90ZW1wbGF0ZV9hcmd1bWVudF9saXN0KTogTWFrZSBzdXJlCglza2lwX2V2YWx1YXRpb24gaXMgZmFsc2Ugd2hlbiBwcm9jZXNzaW5nIHRlbXBsYXRlIGFyZ3VtZW50cy4KCglQUiBjKysvMjE1MTQKCSogcHQuYyAoY2hlY2tfaW5zdGFudGlhdGVkX2FyZ3MpOiBUcmVhdCB1c2VzIG9mIGFub255bW91cyB0eXBlcyBhcwoJY2F1c2luZyB0eXBlLWRlZHVjdGlvbiBmYWlsdXJlLgoKMjAwNS0wOS0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzIzMzU3CgkqIGNwLXRyZWUuZGVmIChTSVpFT0ZfRVhQUiwgQUxJR05PRl9FWFBSKTogQ2hhbmdlIGNvZGUgY2xhc3MgdG8KCXRjY19leHByZXNzaW9uLgoKMjAwNS0wOS0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjM4OTYKCSogcHQuYyAodHN1YnN0X2FnZ3JfdHlwZSk6IE1ha2Ugc3VyZSBza2lwX2V2YWx1YXRpb24gaXMgZmFsc2Ugd2hlbgoJcHJvY2Vzc2luZyB0ZW1wbGF0ZSBhcmd1bWVudHMuCgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9pbnN0YW50aWF0aW9uX25hbWVzcGFjZSk6IEZpeCB0eXBvLgoKCVBSIGMrKy8xMzE0MAoJKiBkZWNsLmMgKGNoZWNrX2NsYXNzX21lbWJlcl9kZWZpbml0aW9uX25hbWVzcGFjZSk6IE5ldyBmdW5jdGlvbi4KCShncm9rZm5kZWNsKTogVXNlIGl0LgoJKGdyb2t2YXJkZWNsKTogTGlrZXdpc2UuCgkoZ3Jva2RlY2wpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24uCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X2luc3RhbnRpYXRpb25fbmFtZXNwYWNlKTogTmV3IGZ1bmN0aW9uLgoJKHJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uKTogQ2FsbCBjaGVja19zcGVjaWFsaXphdGlvbl9uYW1lc3BhY2UKCXdoZW4gcmVwbGFjaW5nIGFuIGltcGxpY2l0bHkgaW5zdGFudGlhdGVkIGZ1bmN0aW9uLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRW5zdXJlIHRoYXQgREVDTF9DT05URVhUIGlzIHNldAoJY29ycmVjdGx5IGZvciBuYW1lc3BhY2Utc2NvcGUgc3BlY2lhbGl6YXRpb25zLgoJKGRvX2RlY2xfaW5zdGFudGlhdGlvbik6IFVzZQoJY2hlY2tfZXhwbGljaXRfaW5zdGFudGlhdGlvbl9uYW1lc3BhY2UuCgkoZG9fdHlwZV9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgoyMDA1LTA5LTE1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzcyNQoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiA8VVNJTkdfREVDTCBjYXNlPiBVc2UgVVNJTkdfREVDTF9TQ09QRS4KCjIwMDUtMDktMTMgIEJhc3RpYW4gQmxhbmsgPHdhbGRpQGRlYmlhbi5vcmc+CgoJUFIgYysrLzE2MTcxCgkqIG1hbmdsZS5jIChmaW5kX3N1YnN0aXR1dGlvbik6IERvIG5vdCB1c2Ugc3BlY2lhbCBzdWJzdGl0dXRpb25zCglmb3IgaWRlbnRpZmllcnMgbm90IGluIHN0ZDo6LgoKMjAwNS0wOS0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjM4MzkKCSogdHlwZWNrLmMgKGN4eF9tYXJrX2FkZHJlc3NhYmxlKTogT25seSBjaGVjayBERUNMX0hBUkRfUkVHSVNURVIKCWZvciBWQVJfREVDTHMuCgoyMDA1LTA5LTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzg0MgoJKiBwdC5jICh0c3Vic3RfZGVmYXVsdF9hcmd1bWVudCk6IERvIHRyZWF0IGRlZmF1bHQgYXJndW1lbnQKCWV4cHJlc3Npb25zIGFzIG9jY3VycmluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZnVuY3Rpb24gY2FsbGVkLgoKMjAwNS0wOS0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjM4NDEKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wcmltYXJ5X2V4cHJlc3Npb24pOiBSZWNvZ25pemUgdGhlIGNsb3NpbmcKCSI+IiBvZiBhIHRlbXBsYXRlLWFyZ3VtZW50LWxpc3QgYWZ0ZXIgYSBmbG9hdGluZy1wb2ludCBsaXRlcmFsIGFzCgl0aGUgZW5kIG9mIGEgY2FzdCBleHByZXNzaW9uLgoKMjAwNS0wOS0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjM3ODkKCSogY3Z0LmMgKHBlcmZvcm1fcXVhbGlmaWNhdGlvbl9jb252ZXJzaW9ucyk6IERvbid0IGNyZWF0ZQoJdW5uZWNlc3NhcnkgTk9QX0VYUFJzLgoJKiBwdC5jICh0c3Vic3RfdGVtcGxhdGVfYXJnKTogVXNlIGZvbGRfbm9uX2RlcGVuZGVudF9leHByLgoKMjAwNS0wOS0xMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBhaXJzLmNvbT4KCglQUiBnKysvNzg3NAoJKiBjcC10cmVlLmggKHN0cnVjdCBsYW5nX2RlY2xfZmxhZ3MpOiBBZGQgaGlkZGVuX2ZyaWVuZF9wCgliaXRmaWVsZC4gIE1ha2UgZHVtbXkgYml0ZmllbGQgb25lIGJpdCBzbWFsbGVyLgoJKERFQ0xfSElEREVOX0ZSSUVORF9QKTogRGVmaW5lLgoJKHB1c2hkZWNsX21heWJlX2ZyaWVuZCk6IERlY2xhcmUuCgkocHVzaGRlY2xfdG9wX2xldmVsX21heWJlX2ZyaWVuZCk6IERlY2xhcmUuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQWRkIG5ld2RlY2xfaXNfZnJpZW5kIHBhcmFtZXRlci4KCUNoYW5nZSBwcm90b3R5cGUgYW5kIGFsbCBjYWxsZXJzLiAgQWRkIGFzc2VydGlvbiB0aGF0IGEKCURFQ0xfQVJUSUZJQ0lBTCBGVU5DVElPTl9ERUNMIGlzIG5vdCBERUNMX0hJRERFTl9GUklFTkRfUC4gIFNldAoJREVDTF9BTlRJQ0lQQVRFRCBhbmQgREVDTF9ISURERU5fRlJJRU5EX1AgaW4gZHVwbGljYXRlZCBkZWNsIGlmCglhcHByb3ByaWF0ZS4KCSogbmFtZS1sb29rdXAuYyAoc3VwcGxlbWVudF9iaW5kaW5nKTogRG9uJ3QgaWdub3JlIGEKCURFQ0xfSElEREVOX0ZSSUVORF9QLgoJKHB1c2hkZWNsX21heWJlX2ZyaWVuZCk6IEJyZWFrIG91dCBjb250ZW50cyBvZiBwdXNoZGVjbC4gIEFkZAoJaXNfZnJpZW5kIHBhcmFtZXRlci4gIFNldCBERUNMX0FOVElDSVBBVEVEIGFuZAoJREVDTF9ISURERU5fRlJJRU5EX1AgZm9yIGEgZnJpZW5kIGZ1bmN0aW9uLgoJKHB1c2hkZWNsKTogSnVzdCBjYWxsIHB1c2hkZWNsX21heWJlX2ZyaWVuZC4KCShwdXNoZGVjbF93aXRoX3Njb3BlKTogQWRkIGlzX2ZyaWVuZCBwYXJhbWV0ZXIuICBDaGFuZ2UgcHJvdG90eXBlCglhbmQgYWxsIGNhbGxlcnMuCgkocHVzaGRlY2xfbmFtZXNwYWNlX2xldmVsKTogTGlrZXdpc2UuCgkocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBMaWtld2lzZS4gIENoZWNrIERFQ0xfSElEREVOX0ZSSUVORF9QIGFzCgl3ZWxsIGFzIERFQ0xfQU5USUNJUEFURUQgd2hlbiBjaGVja2luZyBmb3IgYSBidWlsdGluLgoJKGRvX25vbm1lbWJlcl91c2luZ19kZWNsKTogQ2hlY2sgREVDTF9ISURERU5fRlJJRU5EX1AgYXMgd2VsbCBhcwoJREVDTF9BTlRJQ0lQQVRFRCB3aGVuIGNoZWNraW5nIGZvciBhIGJ1aWx0aW4uCgkoZG9fbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBMaWtld2lzZS4KCShwdXNoZGVjbF90b3BfbGV2ZWxfMSk6IEFkZCBpc19mcmllbmQgcGFyYW1ldGVyLiAgQ2hhbmdlIGFsbAoJY2FsbGVycy4KCShwdXNoZGVjbF90b3BfbGV2ZWxfbWF5YmVfZnJpZW5kKTogTmV3IGZ1bmN0aW9uLgoJKHJlbW92ZV9oaWRkZW5fbmFtZXMpOiBOZXcgZnVuY3Rpb24uCgkoc3RydWN0IGFyZ19sb29rdXApOiBBZGQgYXJncyBmaWVsZC4KCShmcmllbmRfb2ZfYXNzb2NpYXRlZF9jbGFzc19wKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShhcmdfYXNzb2NfbmFtZXNwYWNlKTogSWdub3JlIGhpZGRlbiBmdW5jdGlvbnMgd2hpY2ggYXJlIG5vdAoJZnJpZW5kcyBvZiBhbiBhc3NvY2lhdGVkIGNsYXNzIG9mIHNvbWUgYXJndW1lbnQuCgkobG9va3VwX2FyZ19kZXBlbmRlbnQpOiBSZW1vdmUgaGlkZGVuIGZ1bmN0aW9ucyBmcm9tIGxpc3QgcGFzc2VkCglpbi4gIEluaXRpYWxpemUgay5hcmdzLgoJKiBuYW1lLWxvb2t1cC5oIChyZW1vdmVfaGlkZGVuX25hbWVzKTogRGVjbGFyZS4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IENhbGwgcHVzaGRlY2xfbWF5YmVfZnJpZW5kIGluc3RlYWQgb2YKCXB1c2hkZWNsLgoJKiBjYWxsLmMgKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUpOiBDaGFuZ2UgREVDTF9BTlRJQ0lQQVRFRCB0ZXN0IHRvCglhbiBhc3NlcnRpb24sIHdpdGggYSBjaGVjayBmb3IgREVDTF9ISURERU5fRlJJRU5EX1AuCgkoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBBZGQga29lbmlnX3AgcGFyYW1ldGVyLiAgQ2hhbmdlCglwcm90b3R5cGUgYW5kIGNhbGxlcnMuCgkqIHB0LmMgKHJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uKTogQWRkIGlzX2ZyaWVuZCBwYXJhbWV0ZXIuICBDaGFuZ2UKCWFsbCBjYWxsZXJzLgoJKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogQ2hhbmdlIGlzX2ZyaWVuZCBwYXJhbWV0ZXIgdG8gYm9vbC4KCUNoYW5nZSBwcm90b3R5cGUgYW5kIGFsbCBjYWxsZXJzLgoJKHRzdWJzdF9mcmllbmRfY2xhc3MpOiBDYWxsIHB1c2hkZWNsX3RvcF9sZXZlbF9tYXliZV9mcmllbmQKCWluc3RlYWQgb2YgcHVzaGRlY2xfdG9wX2xldmVsLgoKMjAwNS0wOS0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRlY2wyLmMgKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IENvcHkgYXR0cmlidXRlcyBmcm9tIHRoZSBiYXNlIGFkZHIuCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogU3Vic3RpdHV0ZSBpbiBERUNMX1ZBTFVFX0VYUFIuCgoyMDA1LTA5LTA5ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdHJhbnNsYXRpb25fdW5pdCk6IFNpbXBsaWZ5LiAgVGhlIHdoaWxlLWJsb2NrCgl3YXMgYWN0dWFsbHkgZXhlY3V0ZWQgYXQgbW9zdCBvbmNlLgoKMjAwNS0wOS0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBkZWJ1Zy8yMDk5OAoJKiBjcC10cmVlLmRlZiAoQUxJQVNfREVDTCk6IFJlbW92ZS4KCSogY3AtbGFuZy5jIChjcF9pbml0X3RzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGl0LgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBMaWtld2lzZS4KCSogbmFtZS1sb29rdXAuYyAocHVzaGRlY2wpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9pZF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IFVzZSBhIFZBUl9ERUNMIHdpdGgKCURFQ0xfVkFMVUVfRVhQUiBpbnN0ZWFkLgoKMjAwNS0wOS0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjIyNTIKCSogZGVjbC5jIChzdGFydF9wcmVwYXJzZWRfZnVuY3Rpb24pOiBEbyBub3QgcGF5IGF0dGVudGlvbiB0bwoJI3ByYWdtYSBpbnRlcmZhY2UgZm9yIGltcGxpY2l0bHktZGVmaW5lZCBtZXRob2RzLgoJKiBkZWNsMi5jIChjcF9maW5pc2hfZmlsZSk6IERvIG5vdCBjb21wbGFpbiBhYm91dCB1c2VzIG9mIGlubGluZQoJZnVuY3Rpb25zIHRoYXQgaGF2ZSBib2RpZXMsIGV2ZW4gaWYgd2UgZGVjaWRlZCBub3QgdG8gZW1pdCB0aGUKCWJvZHkgaW4gdGhpcyB0cmFuc2xhdGlvbiB1bml0LgoJKiBzZW1hbnRpY3MuYyAobm90ZV9kZWNsX2Zvcl9wY2gpOiBEbyBub3QgbWVzcyB3aXRoIGxpbmthZ2UuCgkoZXhwYW5kX29yX2RlZmVyX2ZuKTogTWFrZSBpbmxpbmUsIG5vbi10ZW1wbGF0ZSBmdW5jdGlvbnMgQ09NREFUCglhdCB0aGlzIHBvaW50LgoKMjAwNS0wOS0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBkZWJ1Zy8yMzE5MAoJKiBkZWNsLmMgKHdyYXB1cF9nbG9iYWxzX2Zvcl9uYW1lc3BhY2UpOiBDYWxsCgllbWl0X2RlYnVnX2dsb2JhbF9kZWNsYXJhdGlvbnMuCgkqIGRlY2wyLmMgKGNwX2ZpbmlzaF9maWxlKTogTGlrZXdpc2UuCgoyMDA1LTA5LTA4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzY5MQoJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBJbnN0YW50aWF0ZSBzdGF0aWMgZGF0YSBtZW1iZXJzIGluaXRpYWxpemVkCglieSBjb25zdGFudHMsIGV2ZW4gaW4gYSB0ZW1wbGF0ZS4KCjIwMDUtMDktMDggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG9iai1jKysvMTY4MTYKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vYmpjX3NlbGVjdG9yX2V4cHJlc3Npb24pOiBUcmVhdCBDUFBfU0NPUEUgYXMKCXR3byBDUFBfQ09MT04uCgoyMDA1LTA5LTA3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBjcC1naW1wbGlmeS5jIChjcF9naW1wbGlmeV9leHByKTogQ3JlYXRlIGVtcHR5IENPTlNUUlVDVE9SCglmb3IgRU1QVFlfQ0xBU1NfRVhQUi4KCjIwMDUtMDktMDYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMvMjMwNzUKCSogdHlwZWNrLmMgKGNoZWNrX3JldHVybl9leHByKTogQWRkIG5vX3dhcm5pbmcgYXJndW1lbnQuICBTZXQKCSpub193YXJuaW5nIHRvIHRydWUgaWYgInJldHVybi1zdGF0ZW1lbnQgd2l0aCBubyB2YWx1ZSwgaW4gZnVuY3Rpb24KCXJldHVybmluZyIgd2FybmluZyBoYXMgYmVlbiBpc3N1ZWQuCgkqIGNwLXRyZWUuaCAoY2hlY2tfcmV0dXJuX2V4cHIpOiBBZGp1c3QgcHJvdG90eXBlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3JldHVybl9zdG10KTogU2V0IFRSRUVfTk9fV0FSTklORyBpZgoJY2hlY2tfcmV0dXJuX2V4cHIgc2V0ICpub193YXJuaW5nIHRvIHRydWUuCgoyMDA1LTA5LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChydmFsdWUpOiBOZXcgZnVuY3Rpb24uCgkqIGNhbGwuYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IFVzZSBpdC4KCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAocnZhbHVlKTogTmV3IGZ1bmN0aW9uLgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBVc2UgaXQuCgkoYnVpbGRfc3RhdGljX2Nhc3RfMSk6IExpa2V3aXNlLgoKCVBSIGMrKy85NzgyCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBNYWtlIHN1cmUgdGhlIGVudGlyZSBhcnJheSB0eXBlIGlzCgljb21wbGV0ZSwgbm90IGp1c3QgaXRzIGVsZW1lbnQgdHlwZXMuCgoyMDA1LTA5LTA2ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogZGVjbC5jIChjaGVja19lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyKTogUmVtb3ZlIHJlZHVuZGFudCBjaGVjay4KCjIwMDUtMDktMDYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8yMzA1NgoJKiB0eXBlY2suYyAoaWdub3JlX292ZXJmbG93cyk6IE5ldyBoZWxwZXIgZnVuY3Rpb24uCgkoYnVpbGRfc3RhdGljX2Nhc3RfMSk6IFVzZSBpdC4KCjIwMDUtMDktMDYgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oLCBkZWNsLmMsIGRlY2wyLmMsIHNlbWFudGljcy5jOiBGaXggY29tbWVudCB0eXBvcy4KCUZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDUtMDktMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIzNjY3CgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogQ2xlYXIgREVDTF9URU1QTEFURV9JTlNUQU5USUFURUQgd2hlbgoJY29weWluZyBhIFZBUl9ERUNMLgoKMjAwNS0wOS0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjE0NDAKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zdG10X2V4cHJfZXhwcik6IEFkZCBhbiBleHBsaWNpdAoJaW5pdGlhbGl6YXRpb24gdG8gdGhlIGxhc3Qgc3RhdGVtZW50IGluIHRoZSBzdGF0ZW1lbnQtZXhwcmVzc2lvbi4KCSogKGZpbmlzaF9zdG10X2V4cHIpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgoyMDA1LTA5LTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzY5OQoJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBBbHdheXMgaW5zdGFudGlhdGUgc3RhdGljIGRhdGEgbWVtYmVycwoJaW5pdGlhbGl6ZWQgYnkgY29uc3RhbnQgZXhwcmVzc2lvbnMuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBJbnN0YW50aWF0ZSB0aGUgaW5pdGlhbGl6ZXJzIGZvciBzdGF0aWMKCWRhdGEgbWVtYmVycyBpbml0aWFsaXplZCBieSBjb25zdGFudCBleHByZXNzaW9ucy4KCglQUiBjKysvMjE2ODcKCSogc2VtYW50aWNzLmMgKGV4cGFuZF9vcl9kZWZlcl9mbik6IERvIG5vdCBjYWxsIGdnY19jb2xsZWN0IHdoZW4KCWZpbmlzaGluZyBwcm9jZXNzaW5nIGZvciBhIHRlbXBsYXRlIGZ1bmN0aW9uIGluIGEgbG9jYWwgY2xhc3MuCglSZXZlcnQ6CgkyMDA1LTA5LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2NsYXNzX3NwZWNpZmllcik6IFB1c2gvcG9wIEdDIGNvbnRleHRzCglhcm91bmQgZnVuY3Rpb25zIGluIGxvY2FsIGNsYXNzZXMuCgoyMDA1LTA5LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTY4NwoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2NsYXNzX3NwZWNpZmllcik6IFB1c2gvcG9wIEdDIGNvbnRleHRzCglhcm91bmQgZnVuY3Rpb25zIGluIGxvY2FsIGNsYXNzZXMuCgoyMDA1LTA4LTMxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBvYmotYysrLzIzNjQwCgkqIGRlY2wyLmMgKGNwX2ZpbmlzaF9maWxlKTogSWYgdGhpcyBpcyBvYmotYysrIGFuZCB3ZSBuZWVkIGEgc3RhdGljCglpbml0LCBjYWxsIGdlbmVyYXRlX2N0b3Jfb3JfZHRvcl9mdW5jdGlvbi4KCjIwMDUtMDgtMzEgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzEzMzc3CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbG9va3VwX25hbWUpOiBQYXNzIExPT0tVUF9DT01QTEFJTiB0bwoJbG9va3VwX25hbWVfcmVhbCBvbiBmaW5hbCBwYXJzZS4KCjIwMDUtMDgtMzEgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzIzNjM5CgkqIHNlbWFudGljcy5jIChxdWFsaWZpZWRfbmFtZV9sb29rdXBfZXJyb3IpOiBEbyBub3QgY29tcGxhaW4gYWdhaW4KCW9uIGludmFsaWQgc2NvcGUuCgoyMDA1LTA4LTMwICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yMzU4NgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX25hbWVzcGFjZV9uYW1lKTogTW92ZSBkaWFnbm9zdGljIGZvcgoJaW52YWxpZCBuYW1lc3BhY2UtbmFtZSB0byBoZXJlIGZyb20gLi4uCgkqIG5hbWUtbG9va3VwLmMgKGRvX25hbWVzcGFjZV9hbGlhcyk6IC4uLiBoZXJlIGFuZCAuLi4KCShkb191c2luZ19kaXJlY3RpdmUpOiAuLi4gaGVyZS4gIFJlbW92ZSBkZWFkIGNvZGUuCgoyMDA1LTA4LTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzA5OQoJKiBjcC10cmVlLmggKHNhdmVkX3Njb3BlKTogQWRkIHNraXBfZXZhbHVhdGlvbi4KCSogZGVjbC5jIChzdGFydF9kZWNsKTogVXNlIERFQ0xfSU5JVElBTElaRURfSU5fQ0xBU1NfUCwgbm90CglERUNMX0lOSVRJQUwsIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhIHN0YXRpYyBkYXRhIG1lbWJlciB3YXMKCWluaXRpYWxpemVkIGluIHRoZSBjbGFzcy1zcGVjaWZpZXIuCgkoY3BfZmluaXNoX2RlY2wpOiBBZGQgY29tbWVudC4KCSogaW5pdC5jIChpbnRlZ3JhbF9jb25zdGFudF92YWx1ZSk6IFN1YnRpdHV0ZSBpbnRvIHRoZQoJaW5pdGlhbGl6ZXJzIGZvciBzdGF0aWMgZGF0YSBtZW1iZXJzIGluCXRlbXBsYXRlcy4KCSogbmFtZS1sb29rdXAuYyAocHVzaF90b190b3BfbGV2ZWwpOiBTYXZlIHNraXBfZXZhbHVhdGlvbi4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBSZXN0b3JlIGl0LgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvIG5vdCBzdWJzdGl0dXRlIGludG8gdGhlCglpbnRpYWxpemVycyBvZiBzdGF0aWMgZGF0YSBtZW1iZXJzIHdoZW4gaW5zdGFudGlhdGluZyBhIGNsYXNzLgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogU2ltcGxpZnkuCgkoaW5zdGFudGlhdGVfZGVjbCk6IFRpZHkuICBTdWJzdGl0dXRlIGludG8gdGhlIGluaXRpYWxpemVyIGZvciBhCglzdGF0aWMgZGF0YSBtZW1iZXIgZXZlbiB3aGVuIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBkYXRhIG1lbWJlciBpcwoJbm90IGF2YWlsYWJsZS4KCjIwMDUtMDgtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5MDA0CgkqIHB0LmMgKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBIYW5kbGUgSURFTlRJRklFUl9OT0RFLgoJKHR5cGVfZGVwZW5kZW50X2V4cHJlc3Npb25fcCk6IEFsbG93IEJBU0VMSU5LcyB3aG9zZSBhc3NvY2lhdGVkCglmdW5jdGlvbnMgYXJlIHNpbXBseSBhIEZVTkNUSU9OX0RFQ0wuCgoJUFIgYysrLzIzNDkxCgkqIGNwLXRyZWUuaCAoYnVpbGRfdmVjX2luaXQpOiBBZGp1c3QgcHJvdG90eXBlLgoJKiBpbml0LmMgKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBBZGp1c3QgY2FsbCB0byBidWlsZF92ZWNfaW5pdC4KCShidWlsZF9hZ2dyX2luaXQpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfMSk6IERvIG5vdCBjYWxsIGJ1aWxkX2RlZmF1bHRfaW5pdCBmb3IgYXJyYXkgdHlwZXMuCgkoYnVpbGRfdmVjX2luaXQpOiBBZGQgZXhwbGljaXRfZGVmYXVsdF9pbml0X3AgcGFyYW1ldGVyLiAgUGVyZm9ybQoJZGVmYXVsdCBpbml0aWFsaXphdGlvbiBvZiB2ZWN0b3IgZWxlbWVudHMgd2hlbiBzZXQuCgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IEFkanVzdCBjYWxsIHRvIGJ1aWxkX3ZlY19pbml0LgoKMjAwNS0wOC0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjA4MTcKCSogdHlwZWNrLmMgKGJ1aWxkX3hfdW5hcnlfb3ApOiBNYWtlIHN1cmUgT0ZGU0VUX1JFRiBpcyBub3QgZm9yIGEKCS0+Ki4KCjIwMDUtMDgtMjQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIyNDU0CgkqIHBhcnNlci5jIChjcF9sZXhlcl9wZWVrX250aF90b2tlbik6IFJlbGF4IGFzc2VydC4KCjIwMDUtMDgtMjMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIzMDQ0CgkqIHB0LmMgKHRzdWJzdF9xdWFsaWZpZWRfaWQpOiBBIFNDT1BFX1JFRiBjYW4gc3RpbGwgcmVtYWluLgoKMjAwNS0wOC0yMiAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXguY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzIzNDI2CgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBVc2UgVFlQRV9TSVpFX1VOSVQgbm90IFRZUEVfU0laRSBmb3IKCWFycmF5IHNpemUgY2hlY2suCgoyMDA1LTA4LTIyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yMjIzMwoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgaWYgdGhlCgludW1iZXIgb2YgdGVtcGxhdGUgcGFyYW1ldGVycyBkb2VzIG5vdCBtYXRjaCBwcmV2aW91cyBkZWZpbml0aW9uLgoKMjAwNS0wOC0yMiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjMwODkKCSogZGVjbC5jIChyZXF1aXJlX2NvbXBsZXRlX3R5cGVzX2Zvcl9wYXJtcyk6IE1hcmsgaW5jb21wbGV0ZSB0eXBlcwoJYXMgaW52YWxpZC4KCjIwMDUtMDgtMTkgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX250aF90b2tlbl9zdGFydHNfdGVtcGxhdGVfYXJndW1lbnRfbGlzdF9wKToKCUZpeCB0eXBvIGluIGxlYWRpbmcgY29tbWVudC4KCjIwMDUtMDgtMTUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG5hbWUtbG9va3VwLmMsIHB0cmVlLmM6IERlbGV0ZSBIT1NUX1BUUl9QUklOVEYuCgoyMDA1LTA4LTE1IEZhcmlib3J6IEphaGFuaWFuIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogY3AtdHJlZS5oIChjYW5fY29udmVydF9hcmcsIGZuX3R5cGVfdW5pZmljYXRpb24pOiBOZXcgYXJndW1lbnQuCgkqIGNhbGwuYyAoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZV9yZWFsKTogUGFzcyBkb3duICdmbGFncycgdG8KCWZuX3R5cGVfdW5pZmljYXRpb24uCgkoY2FuX2NvbnZlcnRfYXJnKTogTmV3ICdmbGFncycgYXJndW1lbnQuIFBhc3MgaXQgdG8gY2FsbCB0bwoJaW1wbGljaXRfY29udmVyc2lvbiBpbnN0ZWFkIG9mIExPT0tVUF9OT1JNQUwuCgkoY2FuX2NvbnZlcnQpOiBBZGQgTE9PS1VQX05PUk1BTCB0byBjYWxsIHRvIGNhbl9jb252ZXJ0X2FyZy4KCSogY2xhc3MuYyAocmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24pOiBEaXR0by4KCShyZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbik6IERpdHRvLgoJKiBkZWNsLmMgKHJlc2hhcGVfaW5pdCwgY2hlY2tfZGVmYXVsdF9hcmd1bWVudCk6IERpdHRvLgoJKiB0eXBlY2suYyAoYnVpbGRfcHRybWVtZnVuYyk6IERpdHRvLgoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBBZGQgJ2ZsYWdzJyBhcmd1bWVudC4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogUGFzcyAnZmxhZ3MnIHRvIHR5cGVfdW5pZmljYXRpb25fcmVhbC4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBQYXNzIG5ldyAnZmxhZ3MnIGFyZ3VtZW50IHRvIGNhbGwgdG8KCWNhbl9jb252ZXJ0X2FyZy4KCjIwMDUtMDgtMTIgIEdpb3Zhbm5pIEJham8gIDxnaW92YW5uaWJham9AbGliZXJvLml0PgoJICAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxNzk5CglQUiBjKysvODI3MQoJKiBwdC5jICh1bmlmeSkgPE1FVEhPRF9UWVBFPjogQ2hlY2sgdGhpcy1wb2ludGVyIGN2LXF1YWxpZmllcnMKCWV4cGxpY2l0bHkuCgoyMDA1LTA4LTEyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTc5OQoJUmV2ZXJ0IG15IDIwMDUtMDctMDggcGF0Y2gKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogUmVtb3ZlIGlzX21ldGhvZF9hcmd1bWVudCBhbmQKCWFzc29pY2F0ZWQgY2hlY2tzLgoJKGZuX3R5cGVfdW5pZmljYXRpb24sIHVuaWZ5KTogQWRqdXN0IHR5cGVfdW5pZmljYXRpb25fcmVhbCBjYWxscy4KCjIwMDUtMDgtMTEgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzIzMjY2CgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IENoZWNrIHRoYXQgbWV0aG9kIGlzIG5vdCBzdGF0aWMgYmVmb3JlCgltYXJraW5nIGl0IGFzIHB1cmUuCgoyMDA1LTA4LTExICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzIxOQoJKiBuYW1lLWxvb2t1cC5jIChwdXNodGFnKTogUHJvY2VzcyB0aGUgdGVtcGxhdGUgdHlwZSBiZWZvcmUKCWFsdGVyaW5nIHRoZSBpZGVudGlmaWVyIGxvb2t1cCBmaWVsZHMuICBSZW1vdmUgdW5yZWFjaGFibGUgY29kZQoJY3JlYXRpbmcgYW4gZW1wdHkgc3R1YiBkZWNsLgoKMjAwNS0wOC0xMCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjA2NDYKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJlc2V0IHN0b3JhZ2VfY2xhc3MgYWZ0ZXIgZXJyb3IuCgoyMDA1LTA4LTA4ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yMjUwOAoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogQ2hlY2sgZm9yIGVtcHR5IGNhbmRpZGF0ZSBsaXN0LgoKMjAwNS0wOC0wNiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjMxOTEKCSogcHQuYyAodHN1YnN0KSA8Y2FzZSBNRVRIT0RfVFlQRT46IENoZWNrIGZvciBlcnJvcl9tYXJrX25vZGUKCWJlZm9yZSBjYWxsaW5nIGJ1aWxkX2V4Y2VwdGlvbl92YXJpYW50LgoKMjAwNS0wOC0wNiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMTk0OTgKCSogcHQuYyAodHN1YnN0X2RlY2wpIDxjYXNlIFRFTVBMQVRFX0RFQ0w+OiBSZXR1cm4gRVJST1JfTUFSS19OT0RFCglpZiBzdWJzdGl0dXRpb24gb2YgdGVtcGxhdGUgYXJncyBkaWQgbm90IHN1Y2NlZWQuCgoyMDA1LTA4LTA2ICBNaWNoYWVsIE1hdHogIDxtYXR6QHN1c2UuZGU+CgoJKiBtZXRob2QuYyAodXNlX3RodW5rKTogQ2FsbCBpbml0X2luc25fbGVuZ3Rocy4KCjIwMDUtMDgtMDUgIEphbWVzIEEuIE1vcnJpc29uICA8cGh5dGhvbkBnY2MuZ251Lm9yZz4KCglQUiBjKysvMjI1MTQKCSogbmFtZS1sb29rdXAuYyAoY3BfZW1pdF9kZWJ1Z19pbmZvX2Zvcl91c2luZyk6IERvIG5vdGhpbmcgaWYKCXNvcnJ5Y291bnQgb3IgZXJyb3Jjb3VudCBhcmUgbm9uemVyby4KCjIwMDUtMDgtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBuYW1lLWxvb2t1cC5jIChwdXNodGFnKTogUmVtb3ZlIGFjY2lkZW50YWwgY29tbWl0IGZyb206CgkyMDA0LTEyLTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoJUFIgYysrLzE5MDYzCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlLCBub3QKCXZvaWRfdHlwZV9ub2RlLCB0byBpbmRpY2F0ZSBlcnJvcnMuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdGVtcGxhdGVfcGFyYW1ldGVyX2xpc3QpOiBSb2J1c3RpZnkuCgkoY3BfcGFyc2VyX3RlbXBsYXRlX3BhcmFtZXRlcik6IExpa2V3aXNlLgoKMjAwNS0wOC0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jLCBkZWNsLmMsIG5hbWUtbG9va3VwLmMsIHB0LmMsIHR5cGVjay5jLCB0eXBlY2syLmM6CglGaXggY29tbWVudCB0eXBvcy4KCjIwMDUtMDctMjkgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogbWV0aG9kLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDUtMDctMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIyNTQ1CgkqIGNhbGwuYyAoYWRkX2J1aWx0aW5fY2FuZGlkYXRlKTogQWRqdXN0IGZvciBjaGFuZ2VzIGluCglyZXByZXNlbnRhdGlvbiBvZiBwb2ludGVyLXRvLW1lbWJlciB0eXBlcy4KCjIwMDUtMDctMjggIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBBZGQgdmlzaWJpbGl0eSBsb2dpYy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoKMjAwNS0wNy0yNyAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIG5hbWUtbG9va3VwLmMgKHB1c2h0YWcpOiBEbyBubyBzZXQgREVDTF9JR05PUkVEX1AgYml0LgoKMjAwNS0wNy0yNSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBhaXJzLmNvbT4KCgkqIHB0cmVlLmMgKGN4eF9wcmludF9pZGVudGlmaWVyKTogUHJpbnQgYSBsZWFkaW5nIHNwYWNlIGlmIHRoZQoJaW5kZW50IGxldmVsIGlzIDAuCgoyMDA1LTA3LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjYWxsLmMgKGNvbnZlcnRfZm9yX2FyZ19wYXNzaW5nKTogQ2hlY2sgZnVuY3Rpb24gcG9pbnRlcnMgd2hlbgoJLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgaXMgYWN0aXZhdGVkLgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IExpa2V3aXNlLgoKMjAwNS0wNy0yMiAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtaEBzdXNlLmNvbT4KCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZGVjbGFyYXRpb24pOiBGaXggdW5pdGlhbGlzZWQgd2FybmluZ3MuCgoyMDA1LTA3LTIxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGNsYXNzLmMgKGJ1aWxkX2Jhc2VfcGF0aCk6IEZpeCB0eXBvLgoKMjAwNS0wNy0yMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgQysrLzIyMzU4CgkqIGNsYXNzLmMgKGJ1aWxkX2Jhc2VfcGF0aCk6IENvbnZlcnQgQklORk9fT0ZGU0VUIHRvIHRoZSBjb3JyZWN0IHR5cGUuCgoyMDA1LTA3LTIxICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogY2FsbC5jOiBGaXggY29tbWVudCB0eXBvKHMpLgoJKiBjeHgtcHJldHR5LXByaW50Lmg6IExpa2V3aXNlLgoJKiBuYW1lLWxvb2t1cC5jOiBMaWtld2lzZS4KCSogcGFyc2VyLmM6IExpa2V3aXNlLgoKMjAwNS0wNy0yMCAgRG91Z2xhcyBHcmVnb3IgPGRvdWcuZ3JlZ29yQGdtYWlsLmNvbT4KCglQUiBjKysvMjkyMgoJKiBzZW1hbnRpY3MuYyAocGVyZm9ybV9rb2VuaWdfbG9va3VwKTogRm9yIGRlcGVuZGVudCBjYWxscywganVzdAoJcmV0dXJuIHRoZSBzZXQgb2YgZnVuY3Rpb25zIHdlJ3ZlIGZvdW5kIHNvIGZhci4gTGF0ZXIsIGl0IHdpbGwgYmUKCWF1Z21lbnRlZCBieSB0aG9zZSBmb3VuZCB0aHJvdWdoIGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAuCgkqIG5hbWUtbG9va3VwLmMgKGxvb2t1cF9hcmdfZGVwZW5kZW50KTogSW1wbGVtZW50IERSIDE2NCBieSByZW1vdmluZwoJdGhlIG9wdGltaXphdGlvbiB0aGF0IHNraXBzIG5hbWVzcGFjZXMgd2hlcmUgdGhlIGZ1bmN0aW9ucyB3ZXJlCglvcmlnaW5hbGx5IGZvdW5kLgoKMjAwNS0wNy0yMCAgR2lvdmFubmkgQmFqbyAgPGdpb3Zhbm5pYmFqb0BsaWJlcm8uaXQ+CgoJTWFrZSBDT05TVFJVQ1RPUiB1c2UgVkVDIHRvIHN0b3JlIGluaXRpYWxpemVycy4KCSogY2FsbC5jIChjb252ZXJ0X2RlZmF1bHRfYXJnKTogVXBkYXRlIGNhbGwgdG8gZGlnZXN0X2luaXQuCgkqIGNsYXNzLmMgKGR1bXBfY2xhc3NfaGllcmFyY2h5LCBkdW1wX2FycmF5KTogVXBkYXRlIHRvIGNvcGUgd2l0aAoJVkVDIGluIENPTlNUUlVDVE9SX0VMVFMuCgkqIGNwLXRyZWUuaCAoRU1QVFlfQ09OU1RSVUNUT1JfUCk6IExpa2V3aXNlLgoJKGZpbmlzaF9jb21wb3VuZF9saXRlcmFsLCBkaWdlc3RfaW5pdCk6IFVwZGF0ZSBkZWNsYXJhdGlvbi4KCSogZGVjbC5jIChzdHJ1Y3QgcmVzaGFwZV9pdGVyKTogTmV3IGRhdGEgdHlwZS4KCShyZXNoYXBlX2luaXRfYXJyYXkpOiBSZW5hbWUgdG8uLi4KCShyZXNoYXBlX2luaXRfYXJyYXlfMSk6IFVwZGF0ZSB0byBjb3BlIHdpdGggVkVDIGluIENPTlNUUlVDVE9SX0VMVFMuCgkocmVzaGFwZV9pbml0KTogUmV3cml0ZSBmcm9tIHNjcmF0Y2guIFNwbGl0IHBhcnRzIGludG8uLi4KCShyZXNoYXBlX2luaXRfYXJyYXksIHJlc2hhcGVfaW5pdF92ZWN0b3IsIHJlc2hhcGVfaW5pdF9jbGFzcywKCXJlc2hhcGVfaW5pdF9yKTogTmV3IGZ1bmN0aW9ucy4KCShjaGVja19pbml0aWFsaXplcik6IFVwZGF0ZSBjYWxsIHRvIHJlc2hhcGVfaW5pdC4gUmVtb3ZlIG9ic29sZXRlCgljb2RlLgoJKGluaXRpYWxpemVfYXJ0aWZpY2lhbF92YXIsIGNwX2NvbXBsZXRlX2FycmF5X3R5cGUpOiBVcGRhdGUgdG8gY29wZQoJd2l0aCBWRUMgaW4gQ09OU1RSVUNUT1JfRUxUUy4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogVXBkYXRlIGNhbGxzIHRvIGRpZ2VzdF9pbml0LgoJKG1hcmtfdnRhYmxlX2VudHJpZXMpOiBVcGRhdGUgdG8gY29wZSB3aXRoIFZFQyBpbiBDT05TVFJVQ1RPUl9FTFRTLgoJKiBlcnJvci5jIChkdW1wX2V4cHJfaW5pdF92ZWMpOiBOZXcgZnVuY3Rpb24uCgkoZHVtcF9leHByKTogVXNlIGR1bXBfZXhwcl9pbml0X3ZlYy4KCSogaW5pdC5jIChidWlsZF96ZXJvX2luaXQsIGJ1aWxkX3ZlY19pbml0KTogVXBkYXRlIHRvIGNvcGUgd2l0aCBWRUMKCWluIENPTlNUUlVDVE9SX0VMVFMuCgkoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IFVwZGF0ZSBjYWxsIHRvIGRpZ2VzdF9pbml0LgoJKiBwYXJzZXIuYyAgKGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24pOiBVc2UgYSBWRUMgZm9yIHRoZQoJaW5pdGlhbGl6ZXJzLgoJKGNwX3BhcnNlcl9pbml0aWFsaXplcl9saXN0KTogQnVpbGQgYSBWRUMgb2YgaW5pdGlhbGl6ZXJzLgoJKiBwdC5jICh0c3Vic3RfY29weSwgdHN1YnN0X2NvcHlfYW5kX2J1aWxkKTogVXBkYXRlIHRvIGNvcGUgd2l0aCBWRUMKCWluIENPTlNUUlVDVE9SX0VMVFMuCgkqIHJ0dGkuYyAodGluZm9fYmFzZV9pbml0LCBnZW5lcmljX2luaXRpYWxpemVyLCBwdHJfaW5pdGlhbGl6ZXIsCglwdG1faW5pdGlhbGl6ZXIsIGNsYXNzX2luaXRpYWxpemVyLCBnZXRfcHNldWRvX3RpX2luaXQpOiBVc2UKCWJ1aWxkX2NvbnN0cnVjdG9yX2Zyb21fbGlzdCBpbnN0ZWFkIG9mIGJ1aWxkX2NvbnN0cnVjdG9yLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NvbXBvdW5kX2xpdGVyYWwpOiBVcGRhdGUgY2FsbCB0byBkaWdlc3RfaW5pdC4KCSogdHJlZS5jIChzdGFiaWxpemVfaW5pdCk6IFVwZGF0ZSB0byBjb3BlIHdpdGggVkVDIGluCglDT05TVFJVQ1RPUl9FTFRTLgoJKiB0eXBlY2suYyAoYnVpbGRfcHRybWVtZnVuYzEpOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jOiAoY3h4X2luY29tcGxldGVfdHlwZV9lcnJvciwgc3BsaXRfbm9uY29uc3RhbnRfaW5pdF8xKToKCUxpa2V3aXNlLgoJKHN0b3JlX2luaXRfdmFsdWUpOiBVc2UgYnVpbGRfY29uc3RydWN0b3JfZnJvbV9saXN0IGFuZCB1cGRhdGUgY2FsbAoJdG8gZGlnZXN0X2luaXQuCgkoZGlnZXN0X2luaXQpOiBSZXdyaXRlLgoJKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IFJld3JpdGUgZnJvbSBzY3JhdGNoLiBTcGxpdCBpbnRvLi4uCgkocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yX2FycmF5LCBwaWNmbGFnX2Zyb21faW5pdGlhbGl6ZXIsCglwcm9jZXNzX2luaXRfY29uc3RydWN0b3JfcmVjb3JkLCBwcm9jZXNzX2luaXRfY29uc3RydWN0b3JfdW5pb24pOgoJTmV3IGZ1bmN0aW9ucy4KCShQSUNGTEFHX0VSUk9ORU9VUywgUElDRkxBR19OT1RfQUxMX0NPTlNUQU5ULCBQSUNGTEFHX05PVF9BTExfU0lNUExFKToKCU5ldyBtYWNyb3MuCgkoYnVpbGRfZnVuY3Rpb25hbF9jYXN0KTogVXNlIGJ1aWxkX2NvbnN0cnVjdG9yX2Zyb21fbGlzdCBpbnN0ZWFkIG9mCglidWlsZF9jb25zdHJ1Y3Rvci4KCjIwMDUtMDctMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIyMjYzCgkqIGNwLXRyZWUuaCAoaW5zdGFudGlhdGVfZGVjbCk6IENoYW5nZSBwcm90b3R5cGUuCgkqIGRlY2wyLmMgKG1hcmtfdXNlZCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCSogcHQuYyAoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfY2xhc3NfbWVtYmVyKTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfZGVjbCk6IFJlbmFtZSB1bmRlZmluZWRfb2sgYXMgZXhwbF9pbnN0X2NsYXNzX21lbV9wLgoJQ2xlYXIgREVDTF9JTlRFUkZBQ0VfS05PV04gZm9yIGFuIGV4cGxpY2l0bHkgaW5zdGFudGlhdGVkIHRlbXBsYXRlCgl0aGF0IGhhcyBubyBkZWZpbml0aW9uIGF2YWlsYWJsZS4KCShpbnN0YW50aWF0ZV9wZW5kaW5nX3RlbXBsYXRlcyk6IEFkanVzdCBjYWxsIHRvIGluc3RhbnRpYXRlX2RlY2wuCgoyMDA1LTA3LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMjEzOQoJKiBjcC10cmVlLmggKERFQ0xfVEVNUExBVEVfSU5GTyk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBSZS1yZWdpc3RlciB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMKCWZvciBmdW5jdGlvbnMgdGhhdCBoYXZlIERFQ0xfVEVNTFBMQVRFX0lORk8sIGV2ZW4gaWYgdGhleSBkbyBub3QKCWhhdmUgREVDTF9URU1QTEFURV9JTlNUQU5USUFUSU9OIHNldC4KCjIwMDUtMDctMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGwuYyAoZGlhZ25vc3RpY19mbl90KTogTmV3LgoJKGJ1aWxkX3RlbXAsIGNvbnZlcnRfbGlrZV9yZWFsKTogVXNlIGRpYWdub3N0aWNfZm5fdC4KCjIwMDUtMDctMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIyMjA0CgkqIHJlcG8uYyAocmVwb19lbWl0X3ApOiBSb2J1c3RpZnkuCgoyMDA1LTA3LTE0ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglGaXggUFIgYysrLzIyNDUyCgkqIHRyZWUuYyAoZGVjbF9saW5rYWdlKTogRG9uJ3QgY2hlY2sgREVDTF9DT01EQVQgb24gQ09OU1RfREVDTC4KCjIwMDUtMDctMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIyMTMyCgkqIGNhbGwuYyAoaW1wbGljaXRfY29udmVyc2lvbik6IEFkZCBjX2Nhc3RfcCBwYXJhbWV0ZXIuCgkoc3RhbmRhcmRfY29udmVyc2lvbik6IExpa2V3aXNlLiAgQWxsb3cgY29udmVyc2lvbnMgYmV0d2VlbgoJZGlmZmVyZW50bHktcXVhbGlmaWVkIHBvaW50ZXIgdHlwZXMgd2hlbiBwZXJmb3JtaW5nIGEgQy1zdHlsZQoJY2FzdC4KCShhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogQWRqdXN0IGNhbGxlZS4KCShidWlsZF9idWlsdGluX2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBMaWtld2lzZS4KCShjb25kaXRpb25hbF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoY2FuX2NvbnZlcnRfYXJnKTogTGlrZXdpc2UuCgkoY2FuX2NvbnZlcnRfYXJnX2JhZCk6IExpa2V3aXNlLgoJKHBlcmZvcm1faW1wbGljaXRfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKGNvbXBfcHRyX3R0eXBlc19jb25zdCk6IERlY2xhcmUuCgkqIHR5cGVjay5jIChjb21wX3B0cl90dHlwZXNfY29uc3QpOiBHaXZlIGl0IGV4dGVybmFsIGxpbmthZ2UuCglSZXR1cm4gYm9vbC4KCjIwMDUtMDctMTIgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgkgICAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjAxNzIKCSogcHQuYyAodHN1YnN0X3RlbXBsYXRlX3Bhcm1zKTogQ2hlY2sgZm9yIGludmFsaWQgbm9uLXR5cGUKCXBhcmFtZXRlcnMuCgoyMDA1LTA3LTA5ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGNwLWxhbmcuYyAoc2hhZG93ZWRfdmFyX2Zvcl9kZWNsLCBkZWNsX3NoYWRvd2VkX2Zvcl92YXJfbG9va3VwLAoJZGVjbF9zaGFkb3dlZF9mb3JfdmFyX2luc2VydCk6IE1vdmUgb3ZlciB0byBjcC1vYmpjcC1jb21tb24uYy4KCShjcF9pbml0X3RzKTogQ2FsbCBpbml0X3NoYWRvd2VkX3Zhcl9mb3JfZGVjbC4KCVJlbW92ZSBpbmNsdWRlIG9mIGd0LWNwLWNwLWxhbmcuaC4KCSogY3Atb2JqY3AtY29tbW9uLmMgKHNoYWRvd2VkX3Zhcl9mb3JfZGVjbCwKCWRlY2xfc2hhZG93ZWRfZm9yX3Zhcl9sb29rdXAsIGRlY2xfc2hhZG93ZWRfZm9yX3Zhcl9pbnNlcnQpOiBNb3ZlZCBmcm9tCgljcC1sYW5nLmMuCgkoaW5pdF9zaGFkb3dlZF92YXJfZm9yX2RlY2wpOiBOZXcgZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZQoJc2hhZG93ZWRfdmFyX2Zvcl9kZWNsLgoJSW5jbHVkZSBndC1jcC1jcC1vYmpjcC1jb21tb24uaC4KCSogTWFrZS1sYW5nLmluIChndC1jcC1sYW5nLmgpOiBSZW1vdmUuCgkoZ3QtY3AtY3Atb2JqY3AtY29tbW9uLmgpOiBBZGQuCgkoY3AvY3AtbGFuZy5vKTogUmVtb3ZlIGRlcGVuZGFuY3kgb24gZ3QtY3AtbGFuZy5oLgoJKGNwL2NwLW9iamNwLWNvbW1vbi5vKTogQWRkIGRlcGVuZGFuY3kgb24gZ3QtY3AtY3Atb2JqY3AtY29tbW9uLmguCgkqIGNvbmZpZy1sYW5nLmluIChndGZpbGVzKTogUmVtb3ZlIGNwLWxhbmcuYyBhbmQgQWRkIGNwLW9iamNwLWNvbW1vbi5jLgoJKiBjcC10cmVlIChpbml0X3NoYWRvd2VkX3Zhcl9mb3JfZGVjbCk6IEFkZCBwcm90b3R5cGUuCgoyMDA1LTA3LTA4ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIE1ha2UtbGFuZy5pbjogQWRkIGd0LWNwLWxhbmcuaC4KCShjcC1sYW5nLm8pOiBEaXR0by4KCSogY2xhc3MuYyAoY3JlYXRlX3Z0YWJsZV9wdHIpOiBTdG9wIHNldHRpbmcgREVDTF9BU1NFTUJMRVJfTkFNRSBvbgoJdGhlIGZpZWxkLgoJKiBjb25maWctbGFuZy5pbjogQWRkIGNwLWxhbmcuYyB0byBndGZpbGVzLgoJKiBjcC1sYW5nLmM6IEluY2x1ZGUgaGFzaHRhYi5oLgoJKGNwX2luaXRfdHMpOiBOZXcgZnVuY3Rpb24uCgkoTEFOR19IT09LX0lOSVRfVFMpOiBVc2UgbWFjcm8uCgkoZGVjbF9zaGFkb3dlZF9mb3JfdmFyX2xvb2t1cCk6IE5ldyBmdW5jdGlvbi4KCShkZWNsX3NoYWRvd2VkX2Zvcl92YXJfaW5zZXJ0KTogRGl0dG8uCgkqIGNwLXRyZWUuaCAoVEhVTktfRlVOQ1RJT05fQ0hFQ0spOiBVc2UgZGVjbF9jb21tb24uCgkoTk9OX1RIVU5LX0ZVTkNUSU9OX0NIRUNLKTogRGl0dG8uCgkoREVDTF9OQU1FU1BBQ0VfQVNTT0NJQVRJT05TKTogVXNlIGRlY2xfbm9uX2NvbW1vbi4KCShERUNMX0lOSVRfUFJJT1JJVFkpOiBEaXR0by4KCShERUNMX0hBU19TSEFET1dFRF9GT1JfVkFSX1ApOiBEaXR0by4KCShERUNMX1NIQURPV0VEX0ZPUl9WQVIpOiBVc2UgaGFzaHRhYmxlLgoJKFNFVF9ERUNMX1NIQURPV0VEX0ZPUl9WQVIpOiBEaXR0by4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBVcGRhdGUgZm9yIG5ldy91cGRhdGVkIHN0cnVjdHVyZXMuCgkocG9wbGV2ZWwpOiBVc2UgU0VUX0RFQ0xfU0hBRE9XRURfRk9SX1ZBUi4KCSogZGVjbDIuYyAoc3RhcnRfc3RhdGljX2luaXRpYWxpemF0aW9uX29yX2Rlc3RydWN0aW9uKTogRGVhbCB3aXRoCglwcmlvcml0eS4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBDaGVjayBUU19ERUNMX1dSVEwgYmVmb3JlIGRvaW5nCglTRVRfREVDTF9SVEwuCgkqIHRyZWUuYyAoaGFuZGxlX2luaXRfcHJpb3JpdHlfYXR0cmlidXRlKTogSGFuZGxlIHByaW9yaXR5LgoKMjAwNS0wNy0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjE3OTkKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogQWRkIGlzX21ldGhvZCBhcmd1bWVudC4gIFVzZSBpdAoJZm9yIHRoaXMgcG9pbnRlciB1bmlmaWNhdGlvbi4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogQWRqdXN0IHR5cGVfdW5pZmljYXRpb25fcmVhbCBjYWxsLgoJKHVuaWZ5KTogTGlrZXdpc2UuCgoyMDA1LTA3LTA3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogUmVtb3ZlIGFsbG93X2luY29tcGxldGUgYXJndW1lbnQuCglSZW1vdmUgdW5yZWFjaGFibGUgY29kZS4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogQWRqdXN0IGNhbGwgdG8gdHlwZV91bmlmaWNhdGlvbl9yZWFsLgoJKHVuaWZ5KTogTGlrZXdpc2UuCgoyMDA1LTA3LTA1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGNsYXNzLm8sIGRlY2wyLm8pOiBBZGp1c3QgZGVwZW5kZW5jaWVzLgoJKiBjbGFzcy5jOiBJbmNsdWRlIHRyZWUtZHVtcC5oLgoJKiBkZWNsMi5jOiBJbmNsdWRlIHRyZWUtZHVtcC5oLgoKMjAwNS0wNy0wMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBkdW1wLmM6IFVzZSBkdW1wX3N0cmluZ19maWVsZC4KCjIwMDUtMDctMDMgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChHQ0NfRElBR19TVFlMRSk6ICN1bmRlZiBiZWZvcmUgZGVmaW5pbmcuICBDaGFuZ2UKCW1pbmltdW0gR0NDIHZlcnNpb24gZm9yIGZvcm1hdCBjaGVja2luZyB0byA0LjEuCgoyMDA1LTA3LTAyICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY2MxcGx1cy1jaGVja3N1bS5jKTogVXNlCglidWlsZC9nZW5jaGVja3N1bSQoYnVpbGRfZXhlZXh0KSwgbm90IGJ1aWxkL2dlbmNoZWNrc3VtJChleGVleHQpLgoKMjAwNS0wNy0wMiAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBuYW1lLWxvb2t1cC5jLCBwYXJzZXIuYzogVXNlICVxLCAlPCBhbmQgJT4gdG8gcXVvdGUgaW4KCWRpYWdub3N0aWNzLgoKMjAwNS0wNy0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVycm9yLmMgKGxvY2F0aW9uX29mKTogQWRkIGNvbW1lbnQuCgkobG9jYXRlX2Vycm9yLCBjcF9lcnJvcl9hdCwgY3Bfd2FybmluZ19hdCwgY3BfcGVkd2Fybl9hdCk6IFJlbW92ZS4KCSogY3AtdHJlZS5oIChjcF9lcnJvcl9hdCwgY3Bfd2FybmluZ19hdCwgY3BfcGVkd2Fybl9hdCk6IFJlbW92ZS4KCSogY2FsbC5jLCBjbGFzcy5jLCBkZWNsLmMsIGRlY2wyLmMsIGZyaWVuZC5jLCBpbml0LmMsCgluYW1lLWxvb2t1cC5jLCBwYXJzZXIuYywgcHQuYywgc2VhcmNoLmMsIHNlbWFudGljcy5jLCB0eXBlY2suYywKCXR5cGVjazIuYzogVXNlICcrJyBmbGFnIGluc3RlYWQgb2YgJUosIGNwX2Vycm9yX2F0LCBjcF93YXJuaW5nX2F0CglvciBjcF9wZWR3YXJuX2F0LiAgTWFyayB1cCBzb21lIGRpYWdub3N0aWMgc3RyaW5ncyB3aXRoIE5fLgoKMjAwNS0wNi0zMCAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBkZWNsLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZXNfZm9yX3Bhcm1zKTogQ2FsbCByZWxheW91dF9kZWNsCglpbnN0ZWFkIG9mIGxheW91dF9kZWNsLgoKMjAwNS0wNi0zMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNwLWxhbmcuYzogTm8gbmVlZCB0byBpbmNsdWRlIGN4eC1wcmV0dHktcHJpbnQuaC4KCSogZXJyb3IuYyAoY3BfcHJpbnRlcik6IFVwZGF0ZSBzaWduYXR1cmUuICBObyBuZWVkIHRvIHByb2Nlc3MKCWZsYWdzLgoJKHByaW50X2luc3RhbnRpYXRpb25fcGFydGlhbF9jb250ZXh0KTogT3V0cHV0IGxhc3QgbmV3bGluZQoJd2l0aCBwcF9iYXNlX25ld2xpbmUuCgkqIE1ha2UtbGFuZy5pbjogVXBkYXRlIGRlcGVuZGVuY2llcy4KCjIwMDUtMDYtMzAgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IFJlcGxhY2UgREVDTF9USFJFQURfTE9DQUwgd2l0aAoJREVDTF9USFJFQURfTE9DQUxfUC4KCShjcF9maW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKGdyb2t2YXJkZWNsKTogU2V0IHRoZSBkZWZhdWx0IERFQ0xfVExTX01PREVMIGhlcmUuCgoyMDA1LTA2LTI4ICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGN2dC5jIChvY3BfY29udmVydCk6IFVzZSBpbnZhbGlkX2NvbnZlcnNpb24gaG9vay4KCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IFVzZSBpbnZhbGlkX2JpbmFyeV9vcCBob29rLgoJKGJ1aWxkX3VuYXJ5X29wKTogVXNlIGludmFsaWRfdW5hcnlfb3AgaG9vay4KCjIwMDUtMDYtMjggIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGNwL2V4Y2VwdC5vKTogRGVwZW5kIG9uICQoVEFSR0VUX0gpCgkqIGV4Y2VwdC5jOiBJbmNsdWRlIHRhcmdldC5oLgoJKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIHVud2luZF9yZXN1bWVfbGliZnVuYy4KCSogZG9jL3RtLnRleGk6IERvY3VtZW50IFRBUkdFVF9BU01fVFRZUEUKCjIwMDUtMDYtMjYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogUGFzcyBpbiBuYW1lZCBhcmd1bWVudCBsaXN0IHRvCglgY2hlY2tfZnVuY3Rpb25fYXJndW1lbnRzJy4KCSogdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KCjIwMDUtMDYtMjYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwLXRyZWUuaCAobGFuZ19jaGVja19mYWlsZWQpOiBBZGQgbm9yZXR1cm4gYXR0cmlidXRlLgoKMjAwNS0wNi0yNSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGFsbCBmaWxlczogVXBkYXRlIEZTRiBhZGRyZXNzIGluIGNvcHlyaWdodCBoZWFkZXJzLgoKMjAwNS0wNi0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzE5MzE3CgkqIHNlbWFudGljcy5jIChzaW1wbGlmeV9hZ2dyX2luaXRfZXhwcik6IFVzZQoJQ0FMTF9FWFBSX1JFVFVSTl9TTE9UX09QVCwgbm90IENBTExfRVhQUl9IQVNfUkVUVVJOX1NMT1RfQUREUi4KCjIwMDUtMDYtMjMgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBwdC5jIChyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IFJlbW92ZSBzdXBlcmZsdW91cyBhc3NlcnRpb24uCgoyMDA1LTA2LTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZV9yZWFsKTogQWRkIGZvcm1hdCBhdHRyaWJ1dGUuCgkqIHR5cGVjay5jIChjaGVja19mb3JfY2FzdGluZ19hd2F5X2NvbnN0bmVzcywKCWJ1aWxkX3N0YXRpY19jYXN0XzEpOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jIChyZWFkb25seV9lcnJvciwgY3h4X2luY29tcGxldGVfdHlwZV9kaWFnbm9zdGljKToKCUxpa2V3aXNlLgoKMjAwNS0wNi0xNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJUFIgYysrLzE3NDEzCgkqIHB0LmMgKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IEFwcGx5IHRlbXBsYXRlIHR5cGUgZGVkdWN0aW9uIGV2ZW4KCXRvIHByb2NlZHVyZSBwYXJhbWV0ZXJzIHRoYXQgYXJlIG5vdCBkZXBlbmRlbnQgb24gYSB0ZW1wbGF0ZQoJcGFyYW1ldGVyLgoKMjAwNS0wNi0xNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2RlY2wpOiBBdm9pZCBjYWNoaW5nIHRpbmZvX2Rlc2NzIHdoZW4gaXQgbWlnaHQKCWNoYW5nZS4KCShjcmVhdGVfcHNldWRvX3R5cGVfaW5mbyk6IEZpcnN0IHBhcmFtZXRlciBpcyBhbiBpbnQuCgoyMDA1LTA2LTE1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDY3OAoJKiBlcnJvci5jIChkdW1wX2V4cHIpIDxDT01QT05FTlRfUkVGIGNhc2U+OiBDaGVjayBERUNMX05BTUUgaXMgbm90CgludWxsLgoKCSogTWFrZS1sYW5nLmluOiBSZWZvcm1hdCBzb21lIGxvbmcgbGluZXMuCgkoZ3QtY3AtcnR0aS5oKTogTmV3IHRhcmdldC4KCShjcC9ydHRpLm8pOiBBZGQgZGVwZW5kZW5jeS4KCSogY29uZmlnLWxhbmcuaW4gKGd0ZmlsZXMpOiBBZGQgY3AvcnR0aS5jLgoJKiBjcC10cmVlLmggKENQVElfVElfREVTQ19UWVBFLCBDUFRJX0JMVE5fREVTQ19UWVBFLAoJQ1BUSV9QVFJfREVTQ19UWVBFLCBDUFRJX0FSWV9ERVNDX1RZUEUsIENQVElfRlVOQ19ERVNDX1RZUEUsCglDUFRJX0VOVU1fREVTQ19UWVBFLCBDUFRJX0NMQVNTX0RFU0NfVFlQRSwKCUNQVElfU0lfQ0xBU1NfREVTQ19UWVBFLCBDUFRJX1ZNSV9DTEFTU19ERVNDX1RZUEUsCglDUFRJX1BUTV9ERVNDX1RZUEUsIENQVElfQkFTRV9ERVNDX1RZUEUpOiBSZW1vdmUuCgkodGlfZGVzY190eXBlX25vZGUsIGJsdG5fZGVzY190eXBlX25vZGUsIHB0cl9kZXNjX3R5cGVfbm9kZSwKCWFyeV9kZXNjX3R5cGVfbm9kZSwgZnVuY19kZXNjX3R5cGVfbm9kZSwgZW51bV9kZXNjX3R5cGVfbm9kZSwKCWNsYXNzX2Rlc2NfdHlwZV9ub2RlLCBzaV9jbGFzc19kZXNjX3R5cGVfbm9kZSwKCXZtaV9jbGFzc19kZXNjX3R5cGVfbm9kZSwgcHRtX2Rlc2NfdHlwZV9ub2RlLAoJYmFzZV9kZXNjX3R5cGVfbm9kZSk6IFJlbW92ZS4KCSogZGVjbC5jOiBBZGp1c3QgZG9jdW1lbnRhdGlvbiBvZiBnbG9iYWwgdHJlZXMuCgkqIHJ0dGkuYyAoVElORk9fUFNFVURPX1RZUEUsIFRJTkZPX1ZUQUJMRV9ERUNMLAoJVElORk9fUkVBTF9OQU1FKTogUmVtb3ZlLgoJKHN0cnVjdCB0aW5mb19zKTogTmV3LgoJKGVudW0gdGluZm9fa2luZCk6IE5ldy4KCSh0aW5mb19kZXNjcyk6IE5ldy4KCShnZXRfdGluZm9fZGVjbCk6IEFkanVzdCB1c2Ugb2YgdGluZm8gZGVzY3JpcHRvci4KCSh0aW5mb19iYXNlX2luaXQsIGdlbmVyaWNfaW5pdGlhbGl6ZXIsIHB0cl9pbml0aWFsaXplciwKCXB0bV9pbml0aWFsaXplciwgY2xhc3NfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShnZXRfcHNldWRvX3RpX2luaXQpOiBUYWtlIGRlc2NyaXB0b3IgaW5kZXguIEFkanVzdC4KCShjcmVhdGVfcHNldWRvX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKGdldF9wc2V1ZG9fdGlfZGVzYyk6IFJldHVybiBkZXNjcmlwdG9yIGluZGV4LiBBZGp1c3QuCgkoY3JlYXRlX3RpbmZvX3R5cGVzKTogQWRqdXN0IHVzZSBvZiBjcmVhdGVfcHNldWRvX3R5cGVfaW5mby4KCShlbWl0X3RpbmZvX2RlY2wpOiBBZGp1c3QgdXNlIG9mIHRpbmZvIGRlc2NyaXB0b3IuCgoyMDA1LTA2LTE0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBPbmx5IGNoZWNrIFRSRUVfT1ZFUkZMT1cgb24gSU5URUdFUl9DU1QuCgoyMDA1LTA2LTEzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoYysrLmluc3RhbGwtbWFuKTogRG9lc24ndCByZWFsbHkgZGVwZW5kIG9uIGluc3RhbGxkaXJzLgoJKHJ1bGUgZm9yIGluc3RhbGxpbmcgZysrLjEgbWFucGFnZSk6IERvZXMgZGVwZW5kIG9uIGluc3RhbGxkaXJzLgoKMjAwNS0wNi0xMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjA3ODkKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IENsZWFyIHJ1bnRpbWUgcnVudGltZSBpbml0aWFsaXphdGlvbiBpZgoJaW4tY2xhc3MgZGVjbCdzIGluaXRpYWxpemVyIGlzIGJhZC4KCglQUiBjKysvMjE5MjkKCSogcGFyc2VyLmMgKHN0cnVjdCBjcF9wYXJzZXIpOiBEb2N1bWVudCB0aGF0IHNjb3BlIGNvdWxkIGJlCgllcnJvcl9tYXJrLgoJKGNwX3BhcnNlcl9kaWFnbm9zZV9pbnZhbGlkX3R5cGVfbmFtZSk6IENvcGUgd2l0aCBlcnJvcl9tYXJrIGZvcgoJc2NvcGUuCgkoY3BfcGFyc2VyX25lc3RlZF9uYW1lX3NwZWNpZmllcik6IFJldHVybiBOVUxMX1RSRUUgb24gZXJyb3IuCgkoY3BfcGFyc2VyX3Bvc3RmaXhfZXhwcmVzc2lvbik6IERlYWwgd2l0aCBudWxsIG9yIGVycm9yX21hcmsKCXNjb3BlLgoJKGNwX3BhcnNlcl9lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyKTogQWRqdXN0CgljcF9wYXJzZXJfbmVzdGVkX25hbWVfc3BlY2lmaWVyIGNhbGwuCgoJKiBwYXJzZXIgKGNwX3BhcnNlcl9za2lwX3RvX2VuZF9vZl9ibG9ja19vcl9zdGF0ZW1lbnQpOiBDbGVhbnVwLgoKMjAwNS0wNi0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgYysrLzIxOTMwCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IFVOQVJZX1BMVVNfRVhQUiBuZWVkIG5vdCBoYW5kbGUgdm9pZCB0eXBlcy4KCVRyZWF0IENPTlZFUlRfRVhQUiBpZGVudGljYWxseSB0byBOT1BfRVhQUi4KCjIwMDUtMDYtMTAgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCglQUiBjKysvMTA2MTEKCSogY3Z0LmMgKGJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uKTogU2FtZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IEhhbmRsZSB2ZWN0b3JzLgoJKGNvbW1vbl90eXBlKTogU2FtZS4KCSh0eXBlX2FmdGVyX3VzdWFsX2FyaXRobWV0aWNfY29udmVyc2lvbnMpOiBTYW1lLgoKMjAwNS0wNi0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTk0OTcKCSogY3AtdHJlZS5kZWYgKFVTSU5HX0RFQ0wpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCSogY3AtdHJlZS5oIChERUNMX0RFUEVOREVOVF9QKTogTmV3LgoJKFVTSU5HX0RFQ0xfREVDTFMsIFVTSU5HX0RFQ0xfU0NPUEUpOiBOZXcuCgkqIGNsYXNzLmMgKGhhbmRsZV91c2luZ19kZWNsKTogTW92ZSBtb3N0IG9mIHRoZSBwcm9jZXNzaW5nIHRvIC4uLgoJKiBuYW1lLWxvb2t1cC5jIChkb19jbGFzc191c2luZ19kZWNsKTogLi4uIGhlcmUuICBNYWtlIHN0cmljdGVyLgoJKHB1c2hfdXNpbmdfZGVjbCk6IFVzZSBVU0lOR19ERUNMX1NDT1BFLgoJKGNwX2VtaXRfZGVidWdfaW5mb19mb3JfdXNpbmcpOiBNYWtlIGV4dGVybi4KCSogY3h4LXByZXR0eS1wcmludC5jIChwcF9jeHhfc3RhdGVtZW50KSA8VVNJTkdfREVDTCBjYXNlPjogQWRqdXN0LgoJKiBuYW1lLWxvb2t1cC5oIChjcF9lbWl0X2RlYnVnX2luZm9fZm9yX3VzaW5nKTogRGVjbGFyZS4KCSogcHQuYyAodHN1YnN0X2RlY2wpIDxVU0lOR19ERUNMIGNhc2U+OiBVc2UgZG9fY2xhc3NfdXNpbmdfZGVjbAoJd2hlbiB0c3Vic3RpbmcuCgkodHN1YnN0X2V4cHIpOiBVc2UgVVNJTkdfREVDTF9TQ09QRS4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZF8xKTogVXNlIERFQ0xfREVQRU5ERU5UX1AuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfbWVtYmVyX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgoyMDA1LTA2LTA4ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8xOTg5NAoJKiBwdC5jICh0c3Vic3QpOiBSZWplY3QgcG9pbnRlci10by1tZW1iZXIgb2YgdHlwZSB2b2lkLgoKCVBSIGMrKy8yMDU2MwoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2xhYmVsX2RlY2xhcmF0aW9uKTogRGVhbCB3aXRoIGludmFsaWQvbWlzc2luZwoJaWRlbnRpZmllcnMuCgoyMDA1LTA2LTA3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5kZWYgKERFRkFVTFRfQVJHKTogQWRqdXN0IGRvY3VtZW50YXRpb24uCgkqIGNwLXRyZWUuaCAoREVGQVJHX0lOU1RBTlRJQVRJT05TKTogTmV3LgoJKHN0cnVjdCB0cmVlX2RlZmF1bHRfYXJnKTogQWRkIGluc3RhbnRpYXRpb25zIG1lbWJlci4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9sYXRlX3BhcnNpbmdfZGVmYXVsdF9hcmdzKTogQWRqdXN0IHRvIHVzZSBhCglWRUMuCgkqIHB0LmMgKHRzdWJzdF9hcmdfdHlwZXMpOiBMaWtld2lzZS4KCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbGF0ZV9wYXJzaW5nX2RlZmF1bHRfYXJncyk6IEZpeCBvdmVyZWFnZXIKCWFzc2VydCBpbiBwcmV2aW91cyBwYXRjaC4KCjIwMDUtMDYtMDYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZXJyb3IuYyAobG9jYXRlX2Vycm9yKTogVXNlIGdtc2dpZCBpbnN0ZWFkIG9mIG1zZ2lkIGZvciBhcmd1bWVudAoJbmFtZS4KCShjcF9lcnJvcl9hdCwgY3Bfd2FybmluZ19hdCwgY3BfcGVkd2Fybl9hdCk6IExpa2V3aXNlLgoKMjAwNS0wNi0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiAyMTkwMwoJKiBjcC10cmVlLmRlZiAoREVGQVVMVF9BUkcpOiBEb2N1bWVudCBUUkVFX0NIQUlOIHVzZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9sYXRlX3BhcnNpbmdfZGVmYXVsdF9hcmdzKTogUHJvcGFnYXRlIHBhcnNlZAoJYXJndW1lbnQgdG8gYW55IGVhcmx5IGluc3RhbnRpYXRpb25zLgoJKiBwdC5jICh0c3Vic3RfYXJnX3R5cGVzKTogQ2hhaW4gZWFybHkgaW5zdGFudGlhdGlvbiBvZiBkZWZhdWx0IGFyZy4KCglQUiBjKysvMjA2MzcKCSogY3AtdHJlZS5oIChhZGRfbWV0aG9kKTogQWRkIHVzaW5nX2RlY2wgcGFyYW1ldGVyLgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogQWRkIHVzaW5nX2RlY2wgcGFyYW1ldGVyLiAgQWRqdXN0IGVycm9yCgltZXNzYWdlcy4KCShoYW5kbGVfdXNpbmdfZGVjbCk6IFBhc3MgdGhlIHVzaW5nIGRlY2wgdG8gYWRkX21ldGhvZC4KCShjbG9uZV9mdW5jdGlvbl9kZWNsKTogQWRqdXN0IGFkZF9tZW1iZXIgY2FsbHMuCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKGxhemlseV9kZWNsYXJlX2ZuKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfbWVtYmVyX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZV9tZXRob2QpOiBVc2UgaW5mb3JtLCBub3Qgd2FybmluZy4KCjIwMDUtMDYtMDYgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuc2U+CgoJKiBjb25maWctbGFuZy5pbiAodGFyZ2V0X2xpYnMpOiBSZW1vdmUgdGFyZ2V0LWdwZXJmLgoKMjAwNS0wNi0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjE2MTkKCSogY3AtdHJlZS5oIChERUNMX0lTX0JVSUxUSU5fQ09OU1RBTlRfUCk6IE5ldyBtYWNyby4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24pOiBBbGxvdyBub24tY29uc3RhbnQKCWV4cHJlc3Npb25zIGFzIGFyZ3VtZW50cyB0byBfX2J1aWx0aW5fY29uc3RhbnRfcC4KCSogdHJlZS5jIChidWlsdGluX3ZhbGlkX2luX2NvbnN0YW50X2V4cHJfcCk6IFVzZQoJREVDTF9JU19CVUlMVElOX0NPTlNUQU5UX1AuCgoyMDA1LTA2LTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTg1MwoJKiB0eXBlY2suYyAoY2FzdHNfYXdheV9jb25zdG5lc3Nfcik6IERvIG5vdCBkcm9wIGN2LXF1YWxpZmllcnMgb24KCXRoZSBwb2ludGVkLXRvIHR5cGUgZm9yIGEgcG9pbnRlci10by1tZW1iZXIuCgoJUFIgYysrLzIxMzM2CgkqIGNwLXRyZWUuaCAoZ3Jva19vcF9wcm9wZXJ0aWVzKTogUmVtb3ZlIGZyaWVuZHAgcGFyYW1ldGVyLgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBBZGp1c3QgY2FsbC4KCShncm9rX29wX3Byb3BlcnRpZXMpOiBEZXRlcm1pbmUgdGhlIGNsYXNzIG9mIHdoaWNoIHRoZSBmdW5jdGlvbiBpcwoJYSBtZW1iZXIgYnkgbG9va2luZyBhdCBpdHMgREVDTF9DT05URVhULCBub3QgY3VycmVudF9jbGFzc190eXBlLgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IEFkanVzdCBjYWxsIHRvIGdyb2tfb3BfcHJvcGVydGllcy4KCjIwMDUtMDYtMDIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZV9tZXRob2QpOiBBZGQgYWRkdGlvbmFsIGFyZyB0byB3YXJuaW5nIGNhbGwuCgoJUFIgYysrLzIxMjgwCgkqIE1ha2UtbGFuZy5pbiAobWV0aG9kLm8pOiBBZGQgZGlhZ25vc3RpYy5oCgkqIGRlY2wuYyAoc3RhcnRfcHJlcGFyc2VkX2Z1bmN0aW9uKTogVXNlIGRlY2wncyBsb2NhdGlvbiBmb3IgZmlsZQoJaW5mby4KCSogZGVjbDIuYyAoY3BfZmluaXNoX2ZpbGUpOiBTZXQgaW5wdXRfbG9jYXRpb24gYmVmb3JlIHN5bnRoZXNpemluZwoJYSBmdW5jdGlvbi4KCShtYXJrX3VzZWQpOiBXaGVuIGRlZmVycmluZyBhIHN5bnRoZXNpemVkIGZ1bmN0aW9uLCBzYXZlIGN1cnJlbnQKCWxvY2F0aW9uLiAgRG8gbm90IHNldCBmdW5jdGlvbidzIGxvY2F0aW9uIHdoZW4gYWN0dWFsbHkKCXN5bnRoZXNpemluZyBpdC4KCSogbWV0aG9kLmM6ICNpbmNsdWRlIGRpYWdub3N0aWMuaC4KCShzeW50aGVzaXplX21ldGhvZCk6IFNldCB0aGUgZnVuY3Rpb25zIHNvdXJjZSBsb2NhdGlvbi4gIFNob3cKCW5lZWRlZCBsb2NhdGlvbiBpZiBlcnJvcnMgYXJlIGVtaXR0ZWQuCgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBTaW1wbGlmeSBzcGVjaWFsaXphdGlvbiBoYW5kbGluZy4gUmVtb3ZlCgl1bm5lZWRlZCBDTEFTU1RZUEVfVEVNUExBVEVfSU5TVEFOVElBVElPTiBjaGVjay4KCSogbWFuZ2xlLmMgKGRpc2NyaW1pbmF0b3JfZm9yX2xvY2FsX2VudGl0eSk6IFVzZSBWRUNfaW5kZXguCgoJUFIgYysrLzIwMzUwCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQ29weSBhbGwgb2YgREVDTF9VU0VfVEVNUExBVEUuCgoJUFIgYysrLzIxMTUxCgkqIG5hbWUtbG9va3VwLmMgKHB1c2h0YWcpOiBQdXNoIGxvY2FsIGNsYXNzIGV2ZW4gaW4gYSB0ZW1wbGF0ZS4KCjIwMDUtMDUtMzEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxMTY1CgkqIGluaXQuYyAoaW50ZWdyYWxfY29uc3RhbnRfdmFsdWUpOiBDaGVjayB0aGUgdHlwZSBvZiB0aGUKCWluaXRpYWxpemVyLCBub3QgdGhlIGRlY2wuCgoyMDA1LTA1LTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTc4NAoJKiBuYW1lLWxvb2t1cC5jIChkb19ub25tZW1iZXJfdXNpbmdfZGVjbCk6IElnbm9yZSBidWlsdGluCglmdW5jdGlvbnMsIGV2ZW4Jd2hlbiB0aGUgdXNlZCBuYW1lIGlzIG5vdCBhIGZ1bmN0aW9uLgoKMjAwNS0wNS0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIG9wZXJhdG9ycy5kZWYsIG9wdGltaXplLmM6IFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDA1LTA1LTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTIxMAoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBQZXJtaXQgY29udmVyc2lvbnMgdG8gY29tcGxleAoJdHlwZXMgaWYgY29udmVyc2lvbiB0byB0aGUgY29ycmVzcG9uZGluZyBzY2FsYXIgdHlwZSB3b3VsZCBiZQoJcGVybWl0dGVkLgoKCVBSIGMrKy8yMTM0MAoJKiBtZXRob2QuYyAoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTogQ2xlYXIgcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsCgl3aGVuIGdlbmVyYXRpbmcgaW1wbGljaXQgZGVjbGFyYXRpb24uCgoyMDA1LTA1LTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTYxNAoJKiB0eXBlY2suYyAoZ2V0X21lbWJlcl9mdW5jdGlvbl9mcm9tX3B0cmZ1bmMpOiBEbyBub3QgYXR0ZW1wdAoJY29udmVyc2lvbnMgdG8gYmFzZSBjbGFzc2VzIG9mIGluY29tcGxldGUgdHlwZXMuCgoyMDA1LTA1LTI3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoKCSogc2VtYW50aWNzLmMgKGFkZF9zdG10KTogQWRkIEMrKyBmcm9udGVuZCBzcGVjaWZpYyB2ZXJzaW9uLgoJKiBjcC10cmVlLmggKFNUTVRfSVNfRlVMTF9FWFBSX1ApOiBEZWZpbmUuCgkoc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCk6IERlY2xhcmUuCgoyMDA1LTA1LTI3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBHaW92YW5uaSBCYWpvICA8Z2lvdmFubmliYWpvQGdjYy5nbnUub3JnPgoKCSogY3AtdHJlZS5kZWYgKFVOQVJZX1BMVVNfRVhQUik6IE5ldyBDKysgdW5hcnkgdHJlZSBjb2RlLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3VuYXJ5X2V4cHJlc3Npb24pOiBVc2UgVU5BUllfUExVU19FWFBSIGluc3RlYWQKCW9mIENPTlZFUlRfRVhQUi4KCShjcF9wYXJzZXJfdW5hcnlfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4KCSogY2FsbC5jIChhZGRfYnVpbHRpbl9jYW5kaWRhdGUsIGJ1aWxkX25ld19vcCk6IExpa2V3aXNlLgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBMaWtld2lzZS4KCSogcHQuYyAodHN1YnN0X2NvcHksIHRzdWJzdF9jb3B5X2FuZF9idWlsZCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGFtYmlfb3BfcCwgZ3Jva19vcF9wcm9wZXJ0aWVzKTogTGlrZXdpc2UuCgkqIGR1bXAuYyAoZHVtcF9vcCk6IExpa2V3aXNlLgoJKiBsZXguYyAoaW5pdF9vcGVyYXRvcnMpOiBMaWtld2lzZS4KCSogb3BlcmF0b3JzLmRlZiAoIisiKTogTGlrZXdpc2UuCgkqIGNwLWdpbXBsaWZ5LmMgKGNwX2dpbXBsaWZ5X2V4cHIpOiBIYW5kbGUgVU5BUllfUExVU19FWFBSIGxpa2UgYQoJY29udmVyc2lvbiwgaWYgdGhlIHJlc3VsdCBhbmQgYXJndW1lbnQgdHlwZXMgZGlmZmVyLgoJKiB0cmVlLmMgKGZvbGRfaWZfbm90X2luX3RlbXBsYXRlKTogRm9sZCBVTkFSWV9QTFVTX0VYUFIgbXVjaAoJbGlrZSBhIE5PUF9FWFBSIHdoZW4gIXByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbC4KCgkqIGN4eC1wcmV0dHktcHJpbnQuYyAocHBfY3h4X2Nhc3RfZXhwcmVzc2lvbik6IFByb3RvdHlwZS4KCShwcF9jeHhfdW5hcnlfZXhwcmVzc2lvbik6IEhhbmRsZSBuZXcgVU5BUllfUExVU19FWFBSIHRyZWUgY29kZS4KCjIwMDUtMDUtMjcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxNDU1CgkqIHR5cGVjay5jIChnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IENvcGUgd2l0aCBpbmNvbXBsZXRlIGJ1dCBlcXVhbAoJY2xhc3Nlcy4gIFJlb3JkZXIgaWYuCgoJUFIgYysrLzIxNjgxCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbGF0ZV9wYXJzaW5nX2Zvcl9tZW1iZXIpOiBEaXNhYmxlIGFjY2VzcwoJY2hlY2tpbmcgZm9yIHRlbXBsYXRlIGZ1bmN0aW9ucy4KCjIwMDUtMDUtMjYgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzIxNzY4CgkqIHB0LmMgKHJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZSk6IENoYW5nZSBlcnJvciBtZXNzYWdlIGFjY29yZGluZwoJdG8gY29kaW5nIGNvbnZlbnRpb25zLgoKMjAwNS0wNS0yNiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGNhbGwuYyAoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBGaXggcXVvdGluZyBpbiBlcnJvciBtZXNzYWdlLgoKMjAwNS0wNS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBsaWJnY2ovMjE2OTIKCSogY3AtdHJlZS5oIChtYWtlX2FsaWFzX2Zvcik6IERlY2xhcmUuCgkqIGRlY2wyLmMgKGJ1aWxkX2phdmFfbWV0aG9kX2FsaWFzZXMpOiBOZXcuCgkoY3BfZmluaXNoX2ZpbGUpOiBDYWxsIGl0LgoJKiBtZXRob2QuYyAobWFrZV9hbGlhc19mb3IpOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShtYWtlX2FsaWFzX2Zvcl90aHVuayk6IC4uLiBoZXJlLgoKMjAwNS0wNS0yNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjE2ODYKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9pZF9leHByZXNzaW9uKTogRml4IHF1b3RpbmcgaW4gZXJyb3IgbWVzc2FnZS4KCjIwMDUtMDUtMjUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBNb3ZlIHdhcm5pbmcgY29udHJvbCBmcm9tIGlmKCkgdG8KCXdhcm5pbmcoT1BUXyopLgoJKiBuYW1lLWxvb2t1cC5jIChwYXJzZV91c2luZ19kaXJlY3RpdmUpOiBMaWtld2lzZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2luaXRfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGhhbmRsZV9jb21faW50ZXJmYWNlX2F0dHJpYnV0ZSk6IExpa2V3aXNlLgoKMjAwNS0wNS0yNCAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX3R5cGUpOiBEbyBub3QgaXNzdWUgQysrIEFCSSB3YXJuaW5ncwoJZm9yIE9iakMgc3RydWN0cy4KCSogZGVjbC5jIChvYmpjX21hcmtfbG9jYWxzX3ZvbGF0aWxlKTogU3RyZWFtbGluZSBieSBjYWxsaW5nCglvYmpjX3ZvbGF0aWxpemVfZGVjbCgpLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX29iamNfbWVzc2FnZV9leHByZXNzaW9uKTogQWxsb3cgc2ltcGxlCgl0eXBlIHNwZWNpZmllcnMgKGluc3RlYWQgb2YgbWVyZWx5IHR5cGUgbmFtZXMpIGFzIG1lc3NhZ2UKCXJlY2VpdmVycy4KCSogcHQuYyAodGVtcGxhdGVfYXJnc19lcXVhbCk6IERvIG5vdCBjYWxsIG9iamNfY29tcHR5cGVzKCkuCgkqIHR5cGVjay5jIChjb21wb3NpdGVfcG9pbnRlcl90eXBlKTogSWYgYm90aCBwb2ludGVycyBhcmUKCU9iakMtZXNxdWUsIGFyYml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3Q7IGRvIG5vdCBjYWxsCglvYmpjX2NvbXB0eXBlcygpLgoJKGNvbXB0eXBlcyk6IERvIG5vdCBjYWxsIG9iamNfY29tcHR5cGVzKCkuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IENhbGwgb2JqY19jb21wYXJlX3R5cGVzKCkuCgkoY29tcF9wdHJfdHR5cGVzX3JlYWwpOiBDYWxsIG9iamNfdHlwZV9xdWFsc19tYXRjaCgpIGJlZm9yZQoJY29uY2x1ZGluZyB0aGF0IHR5cGVzIGRvIG5vdCBtYXRjaC4KCjIwMDUtMDUtMjQgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIEMrKy8yMTY0NQoJKiBvcHRpbWl6ZS5jICh1cGRhdGVfY2xvbmVkX3Bhcm0pOiBDb3B5IHRoZSBUWVBFIGFsc28gZnJvbSB0aGUKCW9yaWdpbmFsIG9uZS4KCjIwMDUtMDUtMTkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8yMTQ5NQoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRml4ICJzdG9yYWdlIGNsYXNzIHNwZWNpZmllZCBmb3IiCgllcnJvciByZXBvcnRpbmcuCgoyMDA1LTA1LTE5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogcGFyc2VyLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNS0wNS0xOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGNjMXBsdXMtZHVtbXkpOiBOZXcuCgkoY2MxcGx1cy1jaGVja3N1bS5jKTogTmV3LgoJKGNjMXBsdXMtY2hlY2tzdW0ubyk6IE5ldy4KCShjYzFwbHVzKTogQWRkIGNjMXBsdXMtY2hlY2tzdW0uby4KCjIwMDUtMDUtMTcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCglQUiBDKysvMTk2NjQKCSogZGVjbDIuYyAoZGV0ZXJtaW5lX3Zpc2liaWxpdHkpOiBEb24ndCBzZXQgdmlzaWJpbGl0eSB0bwoJaGlkZGVuIGlmIGl0IGhhcyBiZWVuIHNldCBleHBsaWNpdGx5IGJ5IHVzZXIuCgoyMDA1LTA1LTE3ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgkgICAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJWWV0IG1vcmUgT2JqZWN0aXZlLUMrKy4uLgoKCSogY3Atb2JqY3AtY29tbW9uLmggKGN4eF9nZXRfYWxpYXNfc2V0KTogTW92ZSBmcm9tCgloZXJlLi4uCgkoY3h4X3dhcm5fdW51c2VkX2dsb2JhbF9kZWNsKTogTGlrZXdpc2UuCgkoY3BfZXhwcl9zaXplKTogTGlrZXdpc2UuCgkoY3BfdHJlZV9zaXplKTogTGlrZXdpc2UuCgkoY3BfdmFyX21vZF90eXBlX3ApOiBMaWtld2lzZS4KCShjeHhfaW5pdGlhbGl6ZV9kaWFnbm9zdGljcyk6IExpa2V3aXNlLgoJKGN4eF90eXBlc19jb21wYXRpYmxlX3ApOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oOiB0byBoZXJlLgoJKGRvX3BvcGxldmVsKTogQWRkLgoJKiBsZXguYyAoRF9PQkpDKTogQWRkLgoJKGluaXRfcmVzd29yZHMpOiBBZGQuCgkqIE1ha2UtbGFuZy5pbiAoY3AvcHQubyk6IEFkZCBjcC9jcC1vYmpjcC1jb21tb24uaC4KCSogcGFyc2VyLmM6IEFkZCBjLWNvbW1vbi5oIGluY2x1ZGUuCgkqIHB0LmM6IEFkZCBjLWNvbW1vbi5oIGFuZCBjcC1vYmpjcC1jb21tb24uaCBpbmNsdWRlcy4KCSh0ZW1wbGF0ZV9hcmdzX2VxdWFsKTogVXNlIG9iamNfY29tcHR5cGVzIGFzIHdlbGwuCgkodHN1YnN0X2NvcHlfYW5kX2J1aWxkKTogVXNlIG9iamNwX3RzdWJzdF9jb3B5X2FuZF9idWlsZCBhcyB3ZWxsLgoJKiBzZW1hbnRpY3MuYyAoZG9fcG9wbGV2ZWwpOiBSZW1vdmUgc3RhdGljLgoKCSogZGVjbC5jIChvYmpjX21hcmtfbG9jYWxzX3ZvbGF0aWxlKTogRG9uJ3QgY2hhbmdlIGRlY2xzIHRoYXQgYXJlCglhbHJlYWR5IG9rLgoJKiBkZWNsMi5jIChnZW5lcmF0ZV9jdG9yX29yX2R0b3JfZnVuY3Rpb24pOiBBZGQgY29kZSB0byBpbml0aWFsaXplCglPYmplY3RpdmUgQysrIGVhcmx5IGVub3VnaC4KCSogbGV4LmMgKHN0cnVjdCByZXN3b3JkIHJlc3dvcmRzKTogQWRkIE9iamVjdGl2ZS1DKysgc3VwcG9ydC4KCSogcGFyc2VyLmMgKGNwX2xleGVyX2dldF9wcmVwcm9jZXNzb3JfdG9rZW4pOiBBZGQgT2JqZWN0aXZlLUMrKy4KCShjcF9wYXJzZXJfb2JqY19tZXNzYWdlX3JlY2VpdmVyKTogQWRkLgoJKGNwX3BhcnNlcl9vYmpjX21lc3NhZ2VfYXJncyk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX21lc3NhZ2VfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX2VuY29kZV9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfZGVmc19leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfcHJvdG9jb2xfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX3NlbGVjdG9yX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfdmlzaWJpbGl0eV9zcGVjKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfbWV0aG9kX3R5cGUpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19wcm90b2NvbF9xdWFsaWZpZXJzKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfdHlwZW5hbWUpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19zZWxlY3Rvcl9wKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfc2VsZWN0b3IpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19tZXRob2Rfa2V5d29yZF9wYXJhbXMpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19tZXRob2RfdGFpbF9wYXJhbXNfb3B0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfaW50ZXJzdGl0aWFsX2NvZGUpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19tZXRob2Rfc2lnbmF0dXJlKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfbWV0aG9kX3Byb3RvdHlwZV9saXN0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfbWV0aG9kX2RlZmluaXRpb25fbGlzdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX2NsYXNzX2l2YXJzKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfaWRlbnRpZmllcl9saXN0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfYWxpYXNfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19jbGFzc19kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX3Byb3RvY29sX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfcHJvdG9jb2xfcmVmc19vcHQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19zdXBlcmNsYXNzX29yX2NhdGVnb3J5KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfY2xhc3NfaW50ZXJmYWNlKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfY2xhc3NfaW1wbGVtZW50YXRpb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19lbmRfaW1wbGVtZW50YXRpb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX3RyeV9jYXRjaF9maW5hbGx5X3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX3N5bmNocm9uaXplZF9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY190aHJvd19zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfcHJpbWFyeV9leHByZXNzaW9uKTogQWRkIE9iamVjdGl2ZS1DKysuCgkoY3BfcGFyc2VyX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9zaW1wbGVfdHlwZV9zcGVjaWZpZXIpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfdHlwZV9uYW1lKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3BhcmFtZXRlcl9kZWNsYXJhdGlvbl9saXN0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX21lbWJlcl9kZWNsYXJhdGlvbikgTGlrZXdpc2UuCgkqIHRyZWUuYzogSW5jbHVkZSBkZWJ1Zy5oLgoJKiB0eXBlY2suYyAoY29tcG9zaXRlX3BvaW50ZXJfdHlwZSk6IEFkZCBPYmplY3RpdmUtQysrIHN1cHBvcnQuCgkoZmluaXNoX2NsYXNzX21lbWJlcl9hY2Nlc3NfZXhwcik6IExpa2V3aXNlLgoJKGJ1aWxkX2Z1bmN0aW9uX2NhbGwpOiBBbGxvdyBvYmpjIHRvIHJld3JpdGUgRlVOQ1RJT05fREVDTHMuCgkoYnVpbGRfbW9kaWZ5X2V4cHIpOiBBbGxvdyBvYmpjIHRvIGdlbmVyYXRlIHdyaXRlIGJhcnJpZXJzLgoKCSogTWFrZS1sYW5nLmluIChjcC90cmVlLm8pOiBBZGQgZGVidWcuaC4KCSogdHJlZS5jIChsdmFsdWVfcF8xLCBjYXNlIENPTlNUX0RFQ0wpOiBBZGQuCgoyMDA1LTA1LTE4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBtZXRob2QuYzogSW5jbHVkZSB0cmVlLXBhc3MuaAoJKHVzZV90aHVuayk6IExvd2VyIGJvZHkgYmVmb3JlIGV4cGFuZGluZy4KCjIwMDUtMDUtMTcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8yMTQ1NAoJKiBkZWNsLmMgKG1heWJlX2RlZHVjZV9zaXplX2Zyb21fYXJyYXlfaW5pdCk6IENhbGwKCWNwX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCBhZnRlciBjb21wbGV0aW5nIGFycmF5IHR5cGUuCgoyMDA1LTA1LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZGVjbC5jIChidWlsZF9saWJyYXJ5X2ZuXzEpOiBNb3ZlIHNldHRpbmcgVFJFRV9OT1RIUk9XIC4uLgoJKGJ1aWxkX2xpYnJhcnlfZm4pOiAuLi4gaGVyZS4KCjIwMDUtMDUtMTIgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJKiBjcC10cmVlLmggKGNwX3N0bXRfY29kZXMpOiBEb24ndCBkZWZpbmUuCgkoc3RhdGVtZW50X2NvZGVfcCk6IERlY2xhcmUuCgkoU1RBVEVNRU5UX0NPREVfUCk6IERlZmluZS4KCSogbGV4LmMgKHN0YXRlbWVudF9jb2RlX3ApOiBEZWZpbmUuCgkoY3h4X2luaXQpOiBVc2UgYWN0dWFsIGNvZGVzIGluIHN0bXRfY29kZXMgaW5pdGlhbGl6ZXIsIG5vdAoJY3Bfc3RtdF9jb2RlcyBtYWNyby4gIEluaXRpYWxpemUgc3RhdGVtZW50X2NvZGVfcCBkaXJlY3RseSwgcmF0aGVyCgl0aGFuIHVzaW5nIElOSVRfU1RBVEVNRU5UX0NPREVTLgoKMjAwNS0wNS0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IERvIG5vdCByZXNvcnQgdG8gYWRkcmVzcyBhcml0aG1ldGljCgl3aGVuIHRha2luZyB0aGUgYWRkcmVzcyBvZiBhIENPTVBPTkVOVF9SRUYuCgoyMDA1LTA1LTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2xhc3MuYyAodnRibF9pbml0X2RhdGFfcyk6IENoYW5nZSB0aGUgdHlwZSBvZiBmbnMgdG8KCVZFQyh0cmVlLGdjKSouCgkoYnVpbGRfdnRibF9pbml0aWFsaXplciwgYWRkX3ZjYWxsX29mZnNldCwgYWRkX3ZjYWxsX29mZnNldCk6CglVc2UgVkVDIGluc3RlYWQgb2YgVkFSUkFZLgoKMjAwNS0wNS0wNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogbWFuZ2xlLmM6IFJlbW92ZSBhIHJlZmVyZW5jZSB0byB0aGUgTUlQUyAtbWludDY0IG9wdGlvbi4KCjIwMDUtMDUtMDcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkZWNsLmMgKHdyYXB1cF9nbG9iYWxzX2Zvcl9uYW1lc3BhY2UpOiBVc2UgVkVDIGluc3RlYWQgb2YKCVZBUlJBWS4KCSogbmFtZS1sb29rdXAuYyAoYWRkX2RlY2xfdG9fbGV2ZWwsIGJlZ2luX3Njb3BlKTogTGlrZXdpc2UuCgkqIG5hbWUtbG9va3VwLmggKGNwX2JpbmRpbmdfbGV2ZWwpOiBDaGFuZ2UgdGhlIHR5cGUgb2YKCXN0YXRpY19kZWNscyB0byBWRUModHJlZSxnYykqLgoKCSogbWFuZ2xlLmMgKGdsb2JhbHMpOiBDaGFuZ2UgdGhlIHR5cGUgb2Ygc3Vic3RpdHV0aW9ucyB0bwoJVkVDKHRyZWUsZ2MpKi4KCShkdW1wX3N1YnN0aXR1dGlvbl9jYW5kaWRhdGVzLCBhZGRfc3Vic3RpdHV0aW9uLAoJZmluZF9zdWJzdGl0dXRpb24sIGZpbmlzaF9tYW5nbGluZywgaW5pdF9tYW5nbGUpOiBVc2UgVkVDCglpbnN0ZWFkIG9mIFZBUlJBWS4KCjIwMDUtMDUtMDYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkZWNsMi5jIChzcGV3X2RlYnVnKTogUmVtb3ZlLgoKCSogZGVjbDIuYyAoc3NkZl9kZWNscywgc3RhcnRfc3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24sCglnZW5lcmF0ZV9jdG9yX29yX2R0b3JfZnVuY3Rpb24pOiBVc2UgVkVDIGluc3RlYWQgb2YgVkFSUkFZLgoKCSogZGVjbDIuYyAocGVuZGluZ19zdGF0aWNzLCBub3RlX3ZhZ3VlX2xpbmthZ2VfdmFyLAoJY3BfZmluaXNoX2ZpbGUpOiBVc2UgVkVDIGluc3RlYWQgb2YgVkFSUkFZLgoJKHBlbmRpbmdfc3RhdGljc191c2VkKTogUmVtb3ZlLgoKMjAwNS0wNS0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRlY2wyLmMgKGRlZmVycmVkX2Zucywgbm90ZV92YWd1ZV9saW5rYWdlX2ZuLAoJY3BfZmluaXNoX2ZpbGUpOiBVc2UgVkVDIGluc3RlYWQgb2YgVkFSUkFZLgoKMjAwNS0wNS0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjEzNTIKCSogcHQuYyAoYnVpbGRfbm9uX2RlcGVuZGVudF9leHByKTogVXNlIGlzX292ZXJsb2FkZWRfZm4uCgoyMDA1LTA1LTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogcHQuYzogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwNS0wNS0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNwLXRyZWUuaCAobGFuZ3VhZ2VfZnVuY3Rpb24pOiBDaGFuZ2UgdGhlIHR5cGUgb2YKCXhfbG9jYWxfbmFtZXMgdG8gVkVDLgoJKiBkZWNsLmMgKHB1c2hfbG9jYWxfbmFtZSk6IEFkanVzdCB1c2VzIG9mIGxvY2FsX25hbWVzLgoKMjAwNS0wNS0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGZyaWVuZC5jLCBsZXguYywgbWFuZ2xlLmMsIHJlcG8uYzogVXBkYXRlIGNvcHlyaWdodC4KCjIwMDUtMDUtMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjbGFzcy5jIChsb2NhbF9jbGFzc2VzLCBpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBVc2UgVkVDCglpbnN0ZWFkIG9mIFZBUlJBWS4KCSogY3AtdHJlZS5oIChsb2NhbF9jbGFzc2VzKTogTGlrZXdpc2UuCgkqIG1hbmdsZS5jIChkaXNjcmltaW5hdG9yX2Zvcl9sb2NhbF9lbnRpdHkpOiBMaWtld2lzZS4KCSogbmFtZS1sb29rdXAuYyAocHVzaHRhZyk6IExpa2V3aXNlLgoKCSogY2xhc3MuYyAoY3VycmVudF9sYW5nX2RlcHRoLCBwdXNoX2xhbmdfY29udGV4dCwKCXBvcF9sYW5nX2NvbnRleHQpOiBVc2UgVkVDIGluc3RlYWQgb2YgVkFSUkFZLgoJKiBjcC10cmVlLmggKHNhdmVkX3Njb3BlKTogVXNlIFZFQyBmb3IgbGFuZ19iYXNlIGluc3RlYWQgb2YKCVZBUlJBWS4KCSogbmFtZS1sb29rdXAuYyAocHVzaF90b190b3BfbGV2ZWwpOiBVc2UgVkVDIGluc3RlYWQgb2YKCVZBUlJBWS4KCjIwMDUtMDUtMDIgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NhbGxfZXhwcik6IENhbGwgcmVzb2x2ZV9vdmVybG9hZGVkX2J1aWx0aW4KCWZvciBCVUlMVF9JTl9NRCBidWlsdC1pbnMuCgoyMDA1LTA1LTAyICBNaWNoYWVsIE1hdHogIDxtYXR6QHN1c2UuZGU+CgoJUFIgYysrLzE5NTQyCgkqIGNwLXRyZWUuaCAoY3BfdHJlZV9pbmRleCk6IFJlbW92ZSBDUFRJX05VTEwsIHRvIGJlIGRlZmluZWQgaW4gQwoJY29tbW9uIGZyb250ZW5kLgoJKG51bGxfbm9kZSk6IFJlbW92ZS4KCSogbGV4LmMgKGN4eF9pbml0KTogTW92ZSBudWxsX25vZGUgaW5pdGlhbGlzYXRpb24gdG8gQyBjb21tb24gZnJvbnRlbmQuCgoyMDA1LTA0LTI1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoKCSogY3AtdHJlZS5kZWY6IEFkZCBFWFBSX1NUTVQuCgkqIGNwLXRyZWUuaCAoY3Bfc3RtdF9jb2Rlcyk6IEFkZCBFWFBSX1NUTVQuCgkoRVhQUl9TVE1UX0VYUFIpOiBEZWZpbmUuCgkqIGNwLWdpbXBsaWZ5LmM6IEluY2x1ZGUgImZsYWdzLmgiLgoJKGdpbXBsaWZ5X2V4cHJfc3RtdCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoY3BfZ2ltcGxpZnlfZXhwcik6IEhhbmRsZSBFWFBSX1NUTVQuCgkqIGN4eC1wcmV0dHktcHJpbnQuYyAocHBfY3h4X3N0YXRlbWVudCk6IFVzZSBwcF9jeHhfZXhwcmVzc2lvbgoJcmF0aGVyIHRoYW4gcHBfZXhwcmVzc2lvbi4KCShwcF9jeHhfc3RhdGVtZW50KTogSGFuZGxlIEVYUFJfU1RNVC4KCSogZHVtcC5jIChjcF9kdW1wX3RyZWUpOiBIYW5kbGUgRVhQUl9TVE1ULgoJKiBsZXguYyAoY3h4X2luaXQpOiBEb24ndCB1c2UgY19jb21tb25fc3RtdF9jb2RlcyBpbiBzdG10X2NvZGVzCglpbml0aWFsaXplci4KCjIwMDUtMDQtMjUgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIEMrKy8yMTE4OAoJKiBydHRpLmMgKGlmbm9ubnVsbCk6IENhc3QgdGhlIHplcm8gY29tcGFyaXNvbiBvcGVyYW5kCgl0byB0aGUgY29ycmVjdCB0eXBlLgoKMjAwNS0wNC0yNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yMDk5MQoJKiBjbGFzcy5jOiBJbmNsdWRlIGNncmFwaC5oLgoJKGNwX2ZvbGRfb2JqX3R5cGVfcmVmKTogU2V0IG5vZGUtPmxvY2FsLnZ0YWJsZV9tZXRob2QuCgkqIE1ha2UtbGFuZy5pbiAoY2dyYXBoLm8pOiBEZXBlbmQgb24gJChDR1JBUEhfSCkuCgoyMDA1LTA0LTEyICBNYXJrdXMgRi5YLkouIE9iZXJodW1lciAgPG1hcmt1c0BvYmVyaHVtZXIuY29tPgoKCSogbWFuZ2xlLmMgKHdyaXRlX2J1aWx0aW5fdHlwZSk6IEhhbmRsZSBpbnRlZ2VyIHR5cGVzIHdoaWNoIGFyZQoJbm90IG9uZSBvZiB0aGUgc2hhcmVkIGludGVnZXIgdHlwZSBub2RlcyBhbmQgZW1pdCBhICJ2ZW5kb3IKCWV4dGVuZGVkIGJ1aWx0aW4gdHlwZSIgd2l0aCBhbiBlbmNvZGluZyBpbiB0aGUgZm9ybSBvZiAidTVpbnQ5NiIuCgoyMDA1LTA0LTI0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoKCSogY3AtdHJlZS5kZWYgKFVTSU5HX1NUTVQpOiBDaGFuZ2UgY2xhc3MgdG8gdGNjX3N0YXRlbWVudC4KCShUUllfQkxPQ0ssIEVIX1NQRUNfQkxPQ0ssIEhBTkRMRVIsIENMRUFOVVBfU1RNVCk6IExpa2V3aXNlLgoJKElGX1NUTVQsIEZPUl9TVE1ULCBXSElMRV9TVE1ULCBET19TVE1UKTogTGlrZXdpc2UuCgkoQlJFQUtfU1RNVCwgQ09OVElOVUVfU1RNVCwgU1dJVENIX1NUTVQpOiBMaWtld2lzZS4KCjIwMDUtMDQtMjMgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY2FsbC5jLCBjbGFzcy5jLCBjdnQuYywgZGVjbC5jLCBkZWNsMi5jLCBleGNlcHQuYywgZnJpZW5kLmMsCglpbml0LmMsIGxleC5jLCBtYW5nbGUuYywgbWV0aG9kLmMsIG5hbWUtbG9va3VwLmMsIHBhcnNlci5jLAoJcmVwby5jLCBydHRpLmMsIHRyZWUuYywgdHlwZWNrLmMsIHR5cGVjazIuYzogQWRqdXN0IHdhcm5pbmcoKQoJY2FsbGVycy4KCjIwMDUtMDQtMjIgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogZGVjbC5jIChtYWtlX3J0bF9mb3Jfbm9ubG9jYWxfZGVjbCk6IERvbid0IHRyeSBnZXRfZmlsZWluZm8gaWYKCWlucHV0X2ZpbGVuYW1lIGlzIE5VTEwsIGFzIGl0IGlzIGZvciAoc2F5KSBfX1BSRVRUWV9GVU5DVElPTl9fLgoKMjAwNS0wNC0yMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJUFIgYysrLzIxMDg3CgkqIG5hbWUtbG9va3VwLmMgKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogRG8gbm90IG92ZXJsb2FkIHdpdGgKCW5vbi1kdXBsaWNhdGUgYW50aWNpcGF0ZWQgYnVpbHQtaW4uCgoyMDA1LTA0LTIxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY3AtdHJlZS5oIChUSFJPV19OQU1FLCBBVVRPX1ZUQUJMRV9OQU1FLCBBVVRPX1RFTVBfRk9STUFULAoJVlRBQkxFX0JBU0UsIFZUQUJMRV9OQU1FX1BSRUZJWCwgU1RBVElDX05BTUVfRk9STUFUKTogUmVtb3ZlLgoKMjAwNS0wNC0yMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaDogQWRqdXN0IGZvciBuZXcgVkVDIEFQSS4KCURlZmluZSBWRUModHJlZV9wYWlyX3MsZ2MpLgoJKHN0cnVjdCBzYXZlX3Njb3BlKTogQWRqdXN0LgoJKHN0cnVjdCBsYW5nX3R5cGVfY2xhc3MpOiBBZGp1c3QuCgkodW5lbWl0dGVkX3RpbmZvX2RlY2xzKTogQWRqdXN0LgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kLCByZXNvcnRfdHlwZV9tZXRob2RfdmVjLAoJZmluaXNoX3N0cnVjdF9tZXRob2RzLCBzdHJ1Y3QgZmluZF9maW5hbF9vdmVycmlkZXJfZGF0YSwKCWRmc19maW5kX2ZpbmFsX292ZXJyaWRlcl9wcmUsIGZpbmRfZmluYWxfb3ZlcnJpZGVyLAoJZ2V0X3ZjYWxsX2luZGV4LCB3YXJuX2hpZGRlbiwgd2Fsa19zdWJvYmplY3Rfb2Zmc2V0cywKCWNoZWNrX21ldGhvZHMsIGZpeHVwX2lubGluZV9tZXRob2RzLCBlbmRfb2ZfY2xhc3MsCgl3YXJuX2Fib3V0X2FtYmlndW91c19iYXNlcywgZmluaXNoX3N0cnVjdCwgYnVpbGRfdnRibF9pbml0aWFsaXplciwKCWFkZF92Y2FsbF9vZmZzZXQpOiBBZGp1c3QuCgkqIGRlY2wuYyAoeHJlZl9iYXNldHlwZXMsIGZpbmlzaF9tZXRob2QpOiBBZGp1c3QuCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBBZGp1c3QuCgkqIGluaXQuYyAoc29ydF9tZW1faW5pdGlhbGl6ZXJzLCBwdXNoX2Jhc2VfY2xlYW51cHMpOiBBZGp1c3QuCgkqIG1ldGhvZC5jIChkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogQWRqdXN0LgoJKiBuYW1lLWxvb2t1cC5jIChuZXdfY2xhc3NfYmluZGluZywgc3RvcmVfYmluZGluZywKCXN0b3JlX2JpbmRpbmdzLCBzdG9yZV9jbGFzc19iaW5kaW5ncyk6IEFkanVzdC4KCSogbmFtZS1sb29rdXAuaDogRGVmaW5lIFZFQyhjeHhfc2F2ZWRfYmluZGluZyxnYyksCglWRUMoY3BfY2xhc3NfYmluZGluZyxnYykuCgkoc3RydWN0IGNwX2JpbmRpbmdfbGV2ZWwpOiBBZGp1c3QuCgkqIHBhcnNlci5jOiBEZWZpbmUgVkVDKGNwX3Rva2VuX3Bvc2l0aW9uLGhlYXApLgoJKHN0cnVjdCBjcF9sZXhlcik6IEFkanVzdC4KCShjcF9sZXhlcl9uZXdfbWFpbiwgY3BfbGV4ZXJfbmV3X2Zyb21fdG9rZW5zLCBjcF9sZXhlcl9kZXN0cm95LAoJY3BfbGV4ZXJfc2F2ZV90b2tlbnMpOiBBZGp1c3QuCgkqIHB0LmMgKHJldHJpZXZlX3NwZWNpYWxpemF0aW9uLAoJY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBBZGp1c3QuCgkqIHJ0dGkuYyAodW5lbWl0dGVkX3RpbmZvX2RlY2xzKTogQWRqdXN0LgoJKGluaXRfcnR0aV9wcm9jZXNzaW5nLCBnZXRfdGluZm9fZGVjbCwgZ2V0X3BzZXVkb190aV9pbml0LAoJZ2V0X3BzZXVkb190aV9kZXNjKTogQWRqdXN0LgoJKiBzZWFyY2guYyAoZGZzX2FjY2Vzc19pbl90eXBlLCBsb29rdXBfY29udmVyc2lvbl9vcGVyYXRvciwKCWxvb2t1cF9mbmZpZWxkc18xLCBkZnNfd2Fsa19vbmNlLCBkZnNfd2Fsa19vbmNlX2FjY2Vzc2libGUsCglkZnNfZ2V0X3B1cmVfdmlydHVhbHMsIGxvb2t1cF9jb252ZXJzaW9uc19yLCBiaW5mb19mb3JfdmJhc2UpOiBBZGp1c3QuCgkqIHNlbWFudGljcy5jOiBEZWZpbmUgVkVDKGRlZmVycmVkX2FjY2VzcyxnYykuCgkocHVzaF9kZWZlcnJpbmdfYWNjZXNzX2NoZWNrcyk6IEFkanVzdC4KCSogdHlwZWNrMi5jIChhYnN0cmFjdF92aXJ0dWFsc19lcnJvcik6IEFkanVzdC4KCjIwMDUtMDQtMjAgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJKiBjcC10cmVlLmRlZjogQWRkIFNUTVRfRVhQUi4KCSogY3AtdHJlZS5oIChTVE1UX0VYUFJfTk9fU0NPUEUpOiBEZWZpbmUuCgkoU1RNVF9FWFBSX1NUTVQpOiBEZWZpbmUuCgkqIGN4eC1wcmV0dHktcHJpbnQuYyAocHBfY3h4X3ByaW1hcnlfZXhwcmVzc2lvbik6IEhhbmRsZQoJU1RNVF9FWFBSLgoJKHBwX2N4eF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY3h4X3N0YXRlbWVudCk6IENhbGwgcHBfY3h4X3N0YXRlbWVudCwgbm90IHBwX3N0YXRlbWVudC4KCSogZHVtcC5jIChjcF9kdW1wX3RyZWUpOiBIYW5kbGUgU1RNVF9FWFBSLgoKMjAwNS0wNC0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogQ2FsbCBidWlsZDIgYW5kIGJ1aWxkMyBpbnN0ZWFkCglvZiBidWlsZC4KCgkqIGNwLXRyZWUuaCAoVlBUUl9OQU1FLCBWUFRSX05BTUVfUCk6IFJlbW92ZS4KCjIwMDUtMDQtMTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJKiBjcC10cmVlLmRlZjogQWRkIFNJWkVPRl9FWFBSLCBBUlJPV19FWFBSIGFuZCBBTElHTk9GX0VYUFIuCgkqIGN4eC1wcmV0dHktcHJpbnQuYyAocHBfY3h4X3Bvc3RmaXhfZXhwcmVzc2lvbik6IEhhbmRsZQoJQVJST1dfRVhQUi4KCShwcF9jeHhfdW5hcnlfZXhwcmVzc2lvbik6IEhhbmRsZSBTSVpFT0ZfRVhQUiBhbmQgQUxJR05PRl9FWFBSLgoJKHBwX2N4eF9leHByZXNzaW9uKTogSGFuZGxlIEFSUk9XX0VYUFIsIFNJWkVPRl9FWFBSLCBhbmQKCUFMSUdOT0ZfRVhQUi4KCSogdHlwZWNrLmMgKGN4eF9zaXplb2Zfb3JfYWxpZ25vZl90eXBlKTogVXBkYXRlIGNhbGwgdG8KCWNfc2l6ZW9mX29yX2FsaWdub2ZfdHlwZSBmb3IgY2hhbmdlIGluIHBhcmFtZXRlciB0eXBlLgoKMjAwNS0wNC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjEwMjUKCSogdHlwZWNrLmMgKGN4eF9zaXplb2Zfb3JfYWxpZ25vZl90eXBlKTogQ2hlY2sgd2hldGhlciB0aGUgdHlwZSB0bwoJd2hpY2ggc2l6ZW9mL2FsaWdub2YgaXMgZGVwZW5kZW50LCByYXRoZXIgdGhhbiBqdXN0IHdoZXRoZXIgd2UgYXJlCglwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wuCgoyMDA1LTA0LTE3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY3AtdHJlZS5oIChMT09LVVBfR0xPQkFMKTogUmVtb3ZlLgoJKExPT0tVUF9PTkxZQ09OVkVSVElORywgRElSRUNUX0JJTkQsIExPT0tVUF9OT19DT05WRVJTSU9OLAoJTE9PS1VQX0RFU1RSVUNUT1IsIExPT0tVUF9OT19URU1QX0JJTkQsIExPT0tVUF9QUkVGRVJfVFlQRVMsCglMT09LVVBfUFJFRkVSX05BTUVTUEFDRVMsIExPT0tVUF9DT05TVFJVQ1RPUl9DQUxMQUJMRSk6IEFkanVzdAoJdGhlaXIgdmFsdWVzLgoKMjAwNS0wNC0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzE0MzExCgkqIHNlbWFudGljcy5jIChmaW5pc2hfY2FsbF9leHByKTogQ2FsbCByZXNvbHZlX292ZXJsb2FkZWRfYnVpbHRpbi4KCjIwMDUtMDQtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjcC10cmVlLmggKGxhbmdfdHlwZV9jbGFzcyk6IFJlbW92ZSByZWRlZmluZWQuICBNb3ZlCglqYXZhX2ludGVyZmFjZSBpbnRvIHdoZXJlIHJlZGVmaW5lZCB3YXMuICBJbmNyZW1lbnQgdGhlIHdpZHRoCglvZiBkdW1teS4KCShUWVBFX1JFREVGSU5FRCk6IFJlbW92ZS4KCjIwMDUtMDQtMTQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjcC10cmVlLmggKFNFVF9UTVBMX0FSRywgRU5VTV9USV9URU1QTEFURSwgRU5VTV9USV9BUkdTLAoJQ0xBU1NUWVBFX1RFTVBMQVRFX0xFVkVMKTogUmVtb3ZlLgoKMjAwNS0wNC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGRldGVybWluZV92aXNpYmlsaXR5KTogRG9uJ3QgdXNlIGV4cG9ydF9jbGFzc19kYXRhLgoJKGltcG9ydF9leHBvcnRfZGVjbCk6IEhvbm9yIFRBUkdFVF9DWFhfQ0xBU1NfREFUQV9BTFdBWVNfV0VBSyBhbmQKCVRBUkdFVF9DWFhfREVURVJNSU5FX0NMQVNTX0RBVEFfVklTSUJJTElUWS4KCjIwMDUtMDQtMDkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjcC10cmVlLmggKGN4eF9hbGlnbm9mKTogUmVtb3ZlLgoKCSogY3AtdHJlZS5oIChERUNMX0FSUkFZX0RFTEVURV9PUEVSQVRPUl9QKTogUmVtb3ZlLgoKCSogY3AtdHJlZS5oIChFWENFUFRJT05fQ0xFQU5VUF9OQU1FLCBCX1NFVCwgQl9DTFIsIEJfVFNULAoJQ09OVl9TVEFUSUNfQ0FTVCk6IFJlbW92ZS4KCgkqIHB0LmMgKFVOSUZZX0FMTE9XX01BWF9DT1JSRUNUSU9OKTogUmVtb3ZlLgoKCSogY3AtdHJlZS5oIChWRl9CSU5GT19WQUxVRSwgVkZfQkFTRVRZUEVfVkFMVUUpOiBSZW1vdmUuCgoJKiBjcC10cmVlLmggKGNwX2RlcHJlY2F0ZWQpOiBSZW1vdmUuCgoyMDA1LTA0LTA4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoKCSogY3AtdHJlZS5kZWY6IERlZmluZSBGT1JfU1RNVCwgV0hJTEVfU1RNVCwgRE9fU1RNVCwgQlJFQUtfU1RNVCwKCUNPTlRJTlVFX1NUTVQsIFNXSVRDSF9TVE1ULgoJKiBjcC10cmVlLmggKGNwX3N0bXRfY29kZXMpOiBBZGQgRk9SX1NUTVQsIFdISUxFX1NUTVQsIERPX1NUTVQsCglCUkVBS19TVE1ULCBDT05USU5VRV9TVE1ULCBTV0lUQ0hfU1RNVC4KCShXSElMRV9DT05ELCBXSElMRV9CT0RZKTogRGVmaW5lLgoJKERPX0NPTkQsIERPX0JPRFkpOiBEZWZpbmUuCgkoRk9SX0lOSVRfU1RNVCwgRk9SX0NPTkQsIEZPUl9FWFBSLCBGT1JfQk9EWSk6IERlZmluZS4KCShTV0lUQ0hfU1RNVF9DT05ELCBTV0lUQ0hfU1RNVF9CT0RZLCBTV0lUQ0hfU1RNVF9UWVBFKTogRGVmaW5lLgoJKiBjcC1naW1wbGlmeS5jIChlbnVtIGJjX3QpOiBEZWZpbmUuCgkoc3RydWN0IGNwX2dpbXBsaWZ5X2N0eCwgY3R4cCk6IERlZmluZS4KCShwdXNoX2NvbnRleHQsIHBvcF9jb250ZXh0KTogTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoYmVnaW5fYmNfYmxvY2ssIGZpbmlzaF9iY19ibG9jayk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKGJ1aWxkX2JjX2dvdG8pOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGdpbXBsaWZ5X2NwX2xvb3AsIGdpbXBsaWZ5X2Zvcl9zdG10KTogTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoZ2ltcGxpZnlfd2hpbGVfc3RtdCwgZ2ltcGxpZnlfZG9fc3RtdCk6IExpa2V3aXNlLgoJKGdpbXBsaWZ5X3N3aXRjaF9zdG10KTogTGlrZXdpc2UuCgkoY3BfZ2ltcGxpZnlfZXhwcik6IEhhbmRsZSBGT1JfU1RNVCwgV0hJTEVfU1RNVCwgRE9fU1RNVCwKCVNXSVRDSF9TVE1ULCBDT05USU5VRV9TVE1ULCBCUkVBS19TVE1ULgoJKGNwX2dlbmVyaWNpemUpOiBDYWxsIHB1c2hfY29udGV4dCBhbmQgcG9wX2NvbnRleHQuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYnJlYWtfc3RtdCk6IEp1c3QgY2FsbCBidWlsZF9zdG10CgkoQlJFQUtfU1RNVCkgcmF0aGVyIHRoYW4gYnVpbGRfYnJlYWtfc3RtdC4KCShmaW5pc2hfY29udGludWVfc3RtdCk6IENvcnJlc3BvbmRpbmcgY2hhbmdlLgoJKiBkZWNsLmMgKHBvcF9zd2l0Y2gpOiBVcGRhdGUgY2FsbCB0byBjX2RvX3N3aXRjaF93YXJuaW5ncyBmb3IgbmV3CglwYXJhbWV0ZXJzLgoJKiBjeHgtcHJldHR5LXByaW50LmMgKHBwX2N4eF9zdGF0ZW1lbnQpOiBIYW5kbGUgU1dJVENIX1NUTVQsCglXSElMRV9TVE1ULCBET19TVE1ULCBGT1JfU1RNVCwgQlJFQUtfU1RNVCwgQ09OVElOVUVfU1RNVC4KCSogZHVtcC5jIChjcF9kdW1wX3RyZWUpOiBMaWtld2lzZS4KCjIwMDUtMDQtMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwOTA1CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdHlwZV9zcGVjaWZpZXJfc2VxKTogQWRkIGlzX2NvbmRpdGlvbgoJcGFyYW1ldGVyLgoJKGNwX3BhcnNlcl9uZXdfdHlwZV9pZCk6IFBhc3MgaXQuCgkoY3BfcGFyc2VyX2NvbmRpdGlvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9jb252ZXJzaW9uX3R5cGVfaWQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfdHlwZV9pZCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl90eXBlX3NwZWNpZmllcl9zZXEpOiBJbiBhIGNvbmRpdGlvbiwgZG8gbm90IGFsbG93CglpbnZhbGlkIHR5cGUtc3BlY2lmaWVyIGNvbWJpbmF0aW9ucy4KCShjcF9wYXJzZXJfZXhjZXB0aW9uX2RlY2xhcmF0aW9uKTogQWRqdXN0IGNhbGwgdG8KCWNwX3BhcnNlcl90eXBlX3NwZWNpZmllcl9zZXEuCgoJKiBjcC10cmVlLmRlZiAoVElOU1RfTEVWRUwpOiBEb2N1bWVudCBUSU5TVF9JTl9TWVNURU1fSEVBREVSX1AuCgkqIGNwLXRyZWUuaCAoc3RydWN0IHRpbnN0X2xldmVsKTogQWRkIGluX3N5c3RlbV9oZWFkZXJfcC4KCShUSU5TVF9JTl9TWVNURU1fSEVBREVSX1ApOiBOZXcgbWFjcm8uCgkobWFrZV90aW5zdF9sZXZlbCk6IFJlbW92ZS4KCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogUHJlc2VydmUgREVDTF9JTl9TWVNURU1fSEVBREVSIG9uCgl0aGUgaW5zdGFudGlhdGVkIGNsYXNzLgoJKHB1c2hfdGluc3RfbGV2ZWwpOiBEbyBub3QgdXNlIG1ha2VfdGluc3RfbGV2ZWwuICBTZXQKCVRJTlNUX0lOX1NZU1RFTV9IRUFERVJfUC4KCShwb3BfdGluc3RfbGV2ZWwpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFNldCBpbl9zeXN0ZW1faGVhZGVyLgoJKGluc3RhbnRpYXRlX3BlbmRpbmdfdGVtcGxhdGVzKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAobWFrZV90aW5zdF9sZXZlbCk6IFJlbW92ZS4KCjIwMDUtMDQtMDYgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogQXBwbHkgcGVuZGluZyAjcHJhZ21hIHdlYWsgcmVnYXJkbGVzcyBvZgoJc2NvcGUuCgoyMDA1LTA0LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDIxMgoJKiBwdC5jIChyZWdlbmVyYXRlX2RlY2xfZnJvbV90ZW1wbGF0ZSk6IENvcHkgYXR0cmlidXRlcyBmb3IKCXBhcmFtZXRlcnMgZnJvbSB0aGUgcGF0dGVybiB0byB0aGUgaW5zdGFudGlhdGlvbi4KCjIwMDUtMDQtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwNzM0CgkqIGNwLXRyZWUuZGVmIChPRkZTRVRfUkVGKTogQ29ycmVjdCBjb21tZW50cy4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogUmVtb3ZlIG1pc2xlYWRpbmcgY29tbWVudC4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogSGFuZGxlIHBvaW50ZXItdG8tbWVtYmVyIGNyZWF0aW9uCgloZXJlLCByYXRoZXIgdGhhbiAuLi4KCSh1bmFyeV9jb21wbGV4X2x2YWx1ZSk6IC4uLiBoZXJlLgoKMjAwNS0wNC0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzE5MzEyCgkqIHRyZWUuYyAoc3RhYmlsaXplX2luaXQpOiBEb24ndCBib3RoZXIgdHJ5aW5nIHRvIHN0YWJpbGl6ZQoJc29tZXRoaW5nIHdpdGggbm8gc2lkZS1lZmZlY3RzLgoKMjAwNS0wNC0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjA3NjMKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENvcnJlY3QgYXR0cmlidXRlIGhhbmRsaW5nLgoKMjAwNS0wNC0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTkxNTkKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogVXNlIG5vbi1DT01EQVQgZXh0ZXJuYWwgbGlua2FnZQoJZm9yIHZpcnR1YWwgdGFibGVzLCB0eXBlaW5mbywgZXRjLiB0aGF0IHdpbGwgYmUgZW1pdHRlZCBpbiBvbmx5CglvbmUgdHJhbnNsYXRpb24gdW5pdCBvbiBzeXN0ZW1zIHdpdGhvdXQgd2VhayBzeW1ib2xzLgoKMjAwNS0wNC0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjA2NzkKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90ZW1wbGF0ZV9uYW1lKTogRml4IHRoaW5rby4KCjIwMDUtMDQtMDQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwNzQ2CgkqIG1ldGhvZC5jICh1c2VfdGh1bmspOiBQcm90ZWN0IGNvdmFyaWFudCBwb2ludGVyIHJldHVybgoJYWRqdXN0bWVudHMgZnJvbSBOVUxMIHBvaW50ZXJzLgoKMjAwNS0wNC0wNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZGVjbDIuYyAoZmluaXNoX29iamVjdHMpOiBSZXZlcnQgbXkgcHJldmlvdXMgcGF0Y2guCgkoY3BfZmluaXNoX2ZpbGUpOiBMaWtld2lzZS4KCjIwMDUtMDQtMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBwdC5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDUtMDQtMDMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwNzIzCgkqIHB0LmMgKG1vcmVfc3BlY2lhbGl6ZWRfZm4pOiBNZW1iZXIgZnVuY3Rpb25zIGFyZSB1bm9yZGVyZWQgd3J0Cglub24tbWVtYmVycy4gIENvbnZlcnNpb24gb3BlcmF0b3JzIGFyZSB1bm9yZGVyZWQgd3J0IG90aGVyCglmdW5jdGlvbnMuCgoyMDA1LTA0LTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChhZGRfdGVtcGxhdGVfY2FuZGlkYXRlc19yZWFsKTogUmVtb3ZlIGxlbmd0aCBwYXJhbWV0ZXIKCWZyb20gZm5fdHlwZV91bmlmaWNhdGlvbiBjYWxsLgoJKiBjbGFzcy5jIChyZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbik6IExpa2V3aXNlCgkqIGNwLXRyZWUuaCAoZm5fdHlwZV91bmlmaWNhdGlvbik6IFJlbW92ZSBsZW5ndGggcGFyYW1ldGVyLgoJKiBwdC5jIChnZXRfYmluZGluZ3Nfb3ZlcmxvYWQpOiBSZW1vdmUuCgkoZ2V0X2JpbmRpbmdzX3JlYWwpOiBSZW5hbWUgdG8gLi4uCgkoZ2V0X2JpbmRpbmdzKTogLi4uIGhlcmUuICBSZW1vdmUgbGVuZ3RoIGFuZCBzdHJpY3QKCXBhcmFtZXRlcnMuIENoYW5nZSByZXR1cm4gdHlwZSBmbGFnIHRvIGJvb2xlYW4uICBSZW1vdmUgb3JpZ2luYWwKCWZvcndhcmRpbmcgZnVuY3Rpb24uCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogQWRqdXN0IGdldF9iaW5kaW5ncyBjYWxsLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBSZW1vdmUgbGVuZ3RoIHBhcmFtZXRlci4gIEFkanVzdC4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBSZW1vdmUgbGVuZ3RoIHBhcmFtZXRlci4gIEFkanVzdC4KCShyZXNvbHZlX292ZXJsb2FkZWRfdW5pZmljYXRpb24pOiBBZGp1c3QgZ2V0X2JpbmRpbmdzIGNhbGwuCgkodHJ5X29uZV9vdmVybG9hZCk6IFNpbXBsaWZ5IGNvbmZ1c2luZyBjYXNjYWRlZCBpZiBjb250cm9sIGZsb3cuCgkodW5pZnkpOiBSZW1vdmUgbGVuZ3RoIHBhcmFtdGVyIGZyb20gdHlwZV91bmlmaWNhdGlvbl9yZWFsIGNhbGwuCgkobW9zdF9zcGVjaWFsaXplZF9pbnN0YW50aWF0aW9uKTogQWRqdXN0IGdldF9iaW5kaW5ncyBjYWxscy4KCShtb3N0X3NwZWNpYWxpemVkKTogTGlrZXdpc2UuCgoyMDA1LTAzLTMxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTIwMywgaW1wbGVtZW50IERSIDIxNAoJKiBjYWxsLmMgKGpvdXN0KTogVXNlIG1vcmVfc3BlY2lhbGl6ZWRfZm4uCgkqIGNwLXRyZWUuaCAoREVEVUNFX09SREVSKTogUmVtb3ZlLgoJKG1vcmVfc3BlY2lhbGl6ZWQpOiBSZXBsYWNlIHdpdGggLi4uCgkobW9yZV9zcGVjaWFsaXplZF9mbik6IC4uLiB0aGlzLgoJKiBwdC5jIChtYXliZV9hZGp1c3RfdHlwZXNfZm9yX2RlZHVjdGlvbik6IFJlbW92ZSBERURVQ0VfT1JERVIKCWNhc2UuCgkodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogUmVtb3ZlIERFRFVDRV9PUkRFUiBjYXNlLgoJKG1vcmVfc3BlY2lhbGl6ZWQpOiBSZXBsYWNlIHdpdGggLi4uCgkobW9yZV9zcGVjaWFsaXplZF9mbik6IC4uLiB0aGlzLiAgSW1wbGVtZW50IERSIDIxNC4KCShtb3N0X3NwZWNpYWxpemVkX2luc3RhbnRpYXRpb24pOiBVc2UgZ2V0X2JpbmRpbmdzX3JlYWwgZGlyZWN0bHkuCgoyMDA1LTAzLTMxICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCglQUiBjKysvMTg2NDQKCSogY2FsbC5jIChidWlsZF9uZXdfb3ApOiBSZW1vdmUgY2hlY2sgZm9yIC1Xc3ludGguCgoyMDA1LTAzLTMxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBkZWNsMi5jIChmaW5pc2hfb2JqZWN0cyk6IE1hcmsgY3RvciBhcyBuZWVkZWQuCgkoY3BfZmluaXNoX2ZpbGUpOiBPdXRwdXQgdmFyaWFibGVzIG9ubHkgaW4gbm9udW5pdC1hdC1hLXRpbWUuCgoyMDA1LTAzLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGMvMjA1MTkKCSogZGVjbC5jIChjcF9jb21wbGV0ZV9hcnJheV90eXBlKTogUmVuYW1lIGZyb20gY29tcGxldGVfYXJyYXlfdHlwZS4KCVVzZSB0aGUgbmV3IGNvbXBsZXRlX2FycmF5X3R5cGUgaW4gYy1jb21tb24uYy4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCSogY3AtdHJlZS5oIChjcF9jb21wbGV0ZV9hcnJheV90eXBlKTogVXBkYXRlIHRvIG1hdGNoLgoKMjAwNS0wMy0yNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfc3RhdGljX2Nhc3RfMSk6IEFsbG93IHNjYWxhcl9jYXN0IGJldHdlZW4KCWFueSBpbnRlZ3JhbCwgZmxvYXRpbmcsIG9yIGVudW1lcmF0aW9uIHR5cGUuCgoyMDA1LTAzLTI0ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogRmlyc3QgZGV0ZXJtaW5lIGlmIHRoZSB0eXBlcyBhcmUgY29tcGF0aWJsZQoJZnJvbSBhIHRhcmdldC1pbmRlcGVuZGVudCBwb2ludCBvZiB2aWV3LiAgQ2hlY2sgdGFyZ2V0IGF0dHJpYnV0ZXMKCWxhc3QuCgoJKiBjbGFzcy5jIChidWlsZF9iYXNlX3BhdGgpOgoJKGJ1aWxkX3ZiYXNlX29mZnNldF92dGJsX2VudHJpZXMpOgoJKGFkZF92Y2FsbF9vZmZzZXQpOiBSZXBsYWNlIGZvbGQgKGJ1aWxkTiAoLi4uKSkgd2l0aCBmb2xkX2J1aWxkTi4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoYnVpbGRfemVyb19pbml0LCBleHBhbmRfY2xlYW51cF9mb3JfYmFzZSwKCWJ1aWxkX3ZlY19kZWxldGVfMSk6IExpa2V3aXNlLgoJKiBtYW5nbGUuYyAod3JpdGVfaW50ZWdlcl9jc3QpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKHRodW5rX2FkanVzdCk6IExpa2V3aXNlLgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQsIHRzdWJzdCwgdW5pZnkpOiBMaWtld2lzZS4KCSogdHJlZS5jIChjeHhfcHJpbnRfc3RhdGlzdGljcywgYXJyYXlfdHlwZV9uZWx0c190b3RhbCk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfcHRybWVtZnVuY19hY2Nlc3NfZXhwciwKCShnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IExpa2V3aXNlLgoKMjAwNS0wMy0yMyAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1vYmpjcC1jb21tb24uaCAoTEFOR19IT09LU19UUlVUSFZBTFVFX0NPTlZFUlNJT04pOiBSZW1vdmUuCgoyMDA1LTAzLTIzICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAocGVyZm9ybV9pbnRlZ3JhbF9wcm9tb3Rpb25zKTogUmVtb3ZlLgoJKGRlZmF1bHRfY29udmVyc2lvbik6IEFkZC4KCjIwMDUtMDMtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3dhcm5fbWluX21heCk6IE5ldyBmdW5jdGlvbi4KCShjcF9wYXJzZXJfYmluYXJ5X2V4cHJlc3Npb24pOiBVc2UgaXQuCgkoY3BfcGFyc2VyX2Fzc2lnbm1lbnRfb3BlcmF0b3Jfb3B0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29wZXJhdG9yKTogTGlrZXdpc2UuCgoyMDA1LTAzLTIyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8xOTk4MAoJKiBkZWNsLmMgKHN0YXJ0X3ByZXBhcnNlZF9mdW5jdGlvbik6IFJvYnVzdGlmeS4KCjIwMDUtMDMtMjIgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzIwNDk5CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfY2xhc3NfaGVhZCk6IFJldHVybiBOVUxMX1RSRUUgd2hlbgoJZW5jb3VudGVyaW5nIGEgcmVkZWZpbml0aW9uLgoKMjAwNS0wMy0yMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjA0NjUKCVBSIGMrKy8yMDM4MQoJKiB0eXBlY2suYyAoYnVpbGRfcHRybWVtZnVuYyk6IEFsbG93IE9GRlNFVF9SRUYgd2hlbiBwcm9jZXNzaW5nIGEKCXRlbXBsYXRlLgoKMjAwNS0wMy0yMSAgUGFvbG8gQ2FybGluaSAgPHBjYXJsaW5pQHN1c2UuZGU+CgoJUFIgYysrLzIwNDYxCglQUiBjKysvMjA1MzYKCSogaW5pdC5jIChlbWl0X21lbV9pbml0aWFsaXplcnMpOiBEb24ndCBjcmFzaCBvbiB1bmRlZmluZWQKCXR5cGVzLgoKMjAwNS0wMy0yMSAgUGFvbG8gQ2FybGluaSAgPHBjYXJsaW5pQHN1c2UuZGU+CgoJUFIgYysrLzIwMTQ3CgkqIHNlbWFudGljcy5jIChmaW5pc2hfc3RtdF9leHByX2V4cHIpOiBSZXR1cm4gaW1tZWRpYXRlbHkKCWlmIGVycm9yX29wZXJhbmRfcCAoZXhwcikuCgoyMDA1LTAzLTIxICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobHZhbHVlX29yX2Vsc2UsIGx2YWx1ZV9wKTogTmV3LgoJKiB0eXBlY2suYyAobHZhbHVlX29yX2Vsc2UpOiBOZXcuICBDYWxsIGx2YWx1ZV9lcnJvci4KCjIwMDUtMDMtMTkgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGMrKy8yMDI0MAoJKiBkZWNsLmMgKGRlY2xzX21hdGNoKTogQ29tcGFyZSBjb250ZXh0IG9mIFZBUl9ERUNMLgoKMjAwNS0wMy0xOSAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYysrLzIwMzMzCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uKSA8Y2FzZSBSSURfVFlQRU5BTUU+OgoJQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBjcF9wYXJzZXJfbmVzdGVkX25hbWVfc3BlY2lmaWVyLgoKMjAwNS0wMy0xOCAgRGFsZSBKb2hhbm5lc2VuIDxkYWxlakBhcHBsZS5jb20+CgoJKiBjcC90cmVlLmMgKGNwX3RyZWVfZXF1YWwpOiAgSGFuZGxlIFNTQV9OQU1FLgoKMjAwNS0wMy0xOCAgUGFvbG8gQ2FybGluaSAgPHBjYXJsaW5pQHN1c2UuZGU+CgoJUFIgYysrLzIwNDYzCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZGlhZ25vc2VfaW52YWxpZF90eXBlX25hbWUpOgoJQ2hlY2sgVFlQRV9CSU5GTyAoY3VycmVudF9jbGFzc190eXBlKSBiZWZvcmUgYXR0ZW1wdGluZwoJdG8gZW1pdCBpbmZvcm0gbWVzc2FnZXMuCgoyMDA1LTAzLTE3ICBQYW9sbyBDYXJsaW5pICA8cGNhcmxpbmlAc3VzZS5kZT4KCglQUiBjKysvMTk5NjYKCSogY3AtdHJlZS5oIChncm9rX29wX3Byb3BlcnRpZXMpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gdm9pZC4KCSogZGVjbC5jIChncm9rX29wX3Byb3BlcnRpZXMpOiBSZXR1cm4gZWFybHkgLSBkb24ndCBjaGVjayB0aGUKCWFyaXR5IC0gaW4gY2FzZSBvZiBhIHN0YXRpYyBtZW1iZXIgb3IgYW4gb3BlcmF0b3IgdGhhdCBjYW5ub3QKCWJlIG5vbi1tZW1iZXI7IHRpZHkgYSBiaXQuCgoyMDA1LTAzLTE3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDE4NgoJKiBwdC5jIChjb250YWluc19kZXBlbmRlbnRfY2FzdF9wKTogUmVtb3ZlLgoJKGZvbGRfbm9uX2RlcGVuZGVudF9leHByKTogRG9uJ3QgdXNlIGl0LgoJKHZhbHVlX2RlcGVuZGVudF9leHByZXNzaW9uX3ApOiBVc2UgYSBzd2l0Y2ggc3RhdGVtZW50LgoJcmVmZXJlbmNlX2V4cHJzIGNhbiBiZSBkZXBlbmRlbnQuCgoyMDA1LTAzLTE0ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBjKysvNDQwMwoJUFIgYysrLzk3ODMsIERSNDMzCgkqIG5hbWUtbG9va3VwLmMgKHB1c2h0YWcpOiBTa2lwIHRlbXBsYXRlIHBhcmFtZXRlciBzY29wZSB3aGVuCglzY29wZSBpcyB0c19nbG9iYWwuICBEb24ndCBwdXNoIHRhZyBpbnRvIHRlbXBsYXRlIHBhcmFtZXRlcgoJc2NvcGUuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogUmVvcmRlciBmcmllbmQgY2xhc3MKCXRlbXBsYXRlIHN1YnN0aXR1dGlvbiB0byBoYW5kbGUgbm9uLWRlcGVuZGVudCBmcmllbmQgY2xhc3MKCXRoYXQgaGFzbid0IGJlZW4gcHJldmlvdXNseSBkZWNsYXJlZC4KCjIwMDUtMDMtMTQgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCUZyaWVuZCBjbGFzcyBuYW1lIGxvb2t1cCA1L24KCVBSIGMrKy8xMDE2CgkqIGNwLXRyZWUuaCAocHVzaHRhZyk6IEFkanVzdCBkZWNsYXJhdGlvbi4KCSogZGVjbC5jIChsb29rdXBfYW5kX2NoZWNrX3RhZyk6IENhbGwgbG9va3VwX3R5cGVfc2NvcGUgaWYKCWxvb2t1cF9uYW1lIGZhaWxzLgoJKHhyZWZfdGFnKTogQWRqdXN0IGNhbGwgdG8gcHVzaHRhZy4gIE1ha2UgaGlkZGVuIGNsYXNzIHZpc2libGUuCgkoc3RhcnRfZW51bSk6IEFkanVzdCBjYWxsIHRvIHB1c2h0YWcuCgkqIG5hbWUtbG9va3VwLmMgKGFtYmlndW91c19kZWNsKTogSWdub3JlIGhpZGRlbiBuYW1lcy4KCShxdWFsaWZ5X2xvb2t1cCk6IENoYW5nZSByZXR1cm4gdHlwZSB0byBib29sLgoJKGhpZGRlbl9uYW1lX3ApOiBOZXcgZnVuY3Rpb24uCgkobG9va3VwX25hbWVzcGFjZV9uYW1lLCB1bnF1YWxpZmllZF9uYW1lc3BhY2VfbG9va3VwLAoJbG9va3VwX25hbWVfcmVhbCk6IFVzZSBpdC4KCShsb29rdXBfdHlwZV9zY29wZSk6IFVwZGF0ZSBjb21tZW50cy4KCShtYXliZV9wcm9jZXNzX3RlbXBsYXRlX3R5cGVfZGVjbGFyYXRpb24pOiBDaGFuZ2UgcGFyYW1ldGVyIG5hbWUKCWZyb20gZ2xvYmFsaXplIHRvIGlzX2ZyaWVuZC4KCShwdXNodGFnKTogQ2hhbmdlIGdsb2JhbGl6ZSBwYXJhbWV0ZXIgb2YgdHlwZSBpbnQgdG8gdGFnX3Njb3BlLgoJSGlkZSBuYW1lIGlmIGludHJvZHVjZWQgYnkgZnJpZW5kIGRlY2xhcmF0aW9uLgoJKiBuYW1lLWxvb2t1cC5oIChoaWRkZW5fbmFtZV9wKTogQWRkIGRlY2xhcmF0aW9uLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2xvb2t1cF9uYW1lKTogRG9uJ3QgZGVhbCB3aXRoIGhpZGRlbiBuYW1lCgloZXJlLgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IE1ha2UgaGlkZGVuIGNsYXNzIHRlbXBsYXRlCgl2aXNpYmxlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcywgaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBBZGp1c3QgY2FsbAoJdG8gcHVzaHRhZy4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCSogcnR0aS5jIChpbml0X3J0dGlfcHJvY2Vzc2luZywgYnVpbGRfZHluYW1pY19jYXN0XzEsCgl0aW5mb19iYXNlX2luaXQsIGVtaXRfc3VwcG9ydF90aW5mb3MpOiBVc2UgdHNfY3VycmVudCBpbnN0ZWFkIG9mCgl0c19nbG9iYWwuCgoyMDA1LTAzLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDE1NwoJKiBwdC5jIChkZXRlcm1pbmVfc3BlY2lhbGl6YXRpb24pOiBSZWplY3Qgbm9uLXNwZWNpYWxpemF0aW9ucy4KCjIwMDUtMDMtMTEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgY3BfZGVjbGFyYXRvcik6IE5ldyBpZF9sb2MgZmllbGQuCgkqIGNwL3BhcnNlci5jIChjcF9sZXhlcl9nZXRfcHJlcHJvY2Vzc29yX3Rva2VuKTogU2V0IGNwX3Rva2VuJ3MKCWxvY2F0aW9uIHVzaW5nIGNfbGV4X3dpdGhfZmxhZ3MsIGluc3RlYWQgb2YgaW5wdXRfbG9jYXRpb24uCgkoY3BfcGFyc2VyX2RpcmVjdF9kZWNsYXJhdG9yKTogU2V0IGRlY2xhcmF0b3IncyBpZF9sb2MgZnJvbQoJY3BfdG9rZW4ncyBpZF9sb2MuCgoyMDA1LTAzLTEwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMTgzODQsIGMrKy8xODMyNwoJKiBkZWNsLmMgKHJlc2hhcGVfaW5pdF9hcnJheSk6IFVzZSBVSFdJIHR5cGUgZm9yIG1heF9pbmRleF9jc3QKCWFuZCBpbmRleC4gIENvbnZlcnQgbWF4X2luZGV4IHRvIHNpemVfdHlwZV9ub2RlIGlmIGl0IGlzbid0Cglob3N0X2ludGVnZXJwICgsIDEpLgoKMjAwNS0wMy0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjAyMDgKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBBcHBseSBhcnJheS10by1wb2ludGVyIGFuZAoJZnVuY3Rpb24tdG8tcG9pbnRlciBjb252ZXJzaW9ucyB0byBmdW5jdGlvbiBhcmd1bWVudHMuCgkocmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUpOiBMaWtld2lzZS4KCjIwMDUtMDMtMDkgIFBhb2xvIENhcmxpbmkgIDxwY2FybGluaUBzdXNlLmRlPgoKCVBSIGMrKy8xNjg1OQoJKiBkZWNsLmMgKGNvbXBsZXRlX2FycmF5X3R5cGUpOiBJbiBwZWRhbnRpYyBtb2RlLCByZXR1cm4KCTMgZm9yIGFuIGVtcHR5IGluaXRpYWxpemVyIGxpc3QgYXMgdGhlIGluaXRpYWxpemVyIGZvciBhbgoJYXJyYXkgb2YgdW5rbm93biBib3VuZCAoOC41LjEvNCkuCgkobWF5YmVfZGVkdWNlX3NpemVfZnJvbV9hcnJheV9pbml0KTogRml4IGZpbmFsIHRlc3QgdG8gdXNlCgl0aGUgYWJvdmUuCgoyMDA1LTAzLTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDE4NgoJKiBwdC5jIChjb250YWluc19kZXBlbmRlbnRfY2FzdF9wKTogTmV3LgoJKGZvbGRfbm9uX2RlcGVuZGVudF9leHByKTogQ2FsbCBpdC4KCjIwMDUtMDMtMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwMTQyCgkqIGNwLXRyZWUuaCAodGFyZ2V0X3R5cGUpOiBSZW1vdmUuCgkqIGRlY2wuYyAobGF5b3V0X3Zhcl9kZWNsKTogUmVtb3ZlICNpZiAwJ2QgY29kZS4KCShjcF9maW5pc2hfZGVjbCk6IFJlbW92ZSBkZWFkIGNvZGUuCgkqIGluaXQuYyAoYnVpbGRfdmVjX2luaXQpOiBXaGVuIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRoZQoJZWxlbWVudCB0eXBlIGhhcyBhbiBhc2lnbm1lbnQgb3BlcmF0b3IsIGxvb2sgdGhyb3VnaCBhbGwgYXJyYXkKCWRpbWVuc2lvbnMuCgkqIHR5cGVjay5jICh0YXJnZXRfdHlwZSk6IFJlbW92ZS4KCjIwMDUtMDMtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBEbyBub3Qgd2FybiBhYm91dCBub24tdmlydHVhbAoJZGVzdHJ1Y3RvcnMgaW4gSmF2YSBjbGFzc2VzLgoKMjAwNS0wMy0wNSAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYysrLzE5MzExCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IERvbid0IGJ1aWxkIG5vbi1kZXBlbmRlbnQgU0NPUEVfUkVGLgoJKiBwdC5jIChidWlsZF9ub25fZGVwZW5kZW50X2V4cHIpOiBEb24ndCBidWlsZCBOT05fREVQRU5ERU5UX0VYUFIKCWZvciBPRkZTRVRfVFlQRS4KCSogdHlwZWNrLmMgKGJ1aWxkX3hfdW5hcnlfb3ApOiBEb24ndCBidWlsZCBub24tZGVwZW5kZW50IFNDT1BFX1JFRi4KCUFsc28gc2V0IFBUUk1FTV9PS19QIGZvciBOT05fREVQRU5ERU5UX0VYUFIuCgkoYnVpbGRfdW5hcnlfb3ApOiBIYW5kbGUgYnVpbGRpbmcgQUREUl9FWFBSIG9mIE9GRlNFVF9SRUYgaW5zaWRlCgl0ZW1wbGF0ZS4KCjIwMDUtMDMtMDIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbmFtZS1sb29rdXAuYyAocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBEb24ndCBlcnJvciBpZiB0aGUgbmV3CglkZWNsIG1hdGNoZXMgdGhlIG9sZCBvbmUuCgkqIGRlY2wuYyAocmVkZWNsYXJhdGlvbl9lcnJvcl9tZXNzYWdlKTogTGlrZXdpc2UuCgoyMDA1LTAzLTAxICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogVXNlIFNFVF9FWFBSX0xPQ0FUSU9OIGluc3RlYWQgb2YKCXVuYXZhaWxhYmxlIGFubm90YXRlX3dpdGhfZmlsZV9saW5lLCBpZiBVU0VfTUFQUEVEX0xPQ0FUSU9OLgoKMjAwNS0wMy0wMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjAyMzIKCSogY2xhc3MuYyAodXBkYXRlX3Z0YWJsZV9lbnRyeV9mb3JfZm4pOiBEb24ndCBjcmFzaCBvbiBpbnZhbGlkCgljb3ZhcmlhbmN5LgoKCSogY3AtdHJlZS5nIChUSFVOS19UQVJHRVQpOiBFeHBhbmQgY29tbWVudC4KCSogbWV0aG9kLmMgKHVzZV90aHVuayk6IE1ha2Ugc3VyZSB3ZSBhbHNvIHVzZSB0aGUgdGFyZ2V0LCBpZiB0aGF0CglpcyBhIHRodW5rLgoKMjAwNS0wMi0yNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzIwMjA2CgkqIGRlY2wuYyAoY3h4X2NvbWRhdF9ncm91cCk6IFB1dCB0aHVua3MgZm9yCglUQVJHRVRfVVNFX0xPQ0FMX1RIVU5LX0FMSUFTX1AgKGZ1bmN0aW9uKSBmdW5jdGlvbnMgaW50byB0aGUgc2FtZQoJY29tZGF0IGdyb3VwIGFzIHRoZSB0aHVuayB0YXJnZXQuCgoyMDA1LTAyLTI0ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogY2FsbC5jLCBjbGFzcy5jLCBjcC10cmVlLmgsIGRlY2wyLmMsIGVycm9yLmMsIGluaXQuYywgbWFuZ2xlLmMsCglwYXJzZXIuYzogRml4IGNvbW1lbnQgdHlwbyhzKS4KCjIwMDUtMDItMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8yMDE3NQoJKiBkZWNsLmMgKHJlc2hhcGVfaW5pdCk6IERvbid0IHdhcm4gYWJvdXQgbWlzc2luZyBicmFjZXMgaWYgU1RSSU5HX0NTVAoJaW5pdGlhbGl6ZXMgYSBjaGFyL3djaGFyX3QgYXJyYXkuCgoyMDA1LTAyLTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTg3OAoJKiBkZWNsLmMgKGdyb2t2YXJkZWNsKTogU2V0IERFQ0xfSU5URVJGQUNFX0tOT1dOIGZvciBkZWNsYXJhdGlvbnMKCXdpdGggaW50ZXJuYWwgbGlua2FnZS4KCjIwMDUtMDItMjMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IERvbid0IGV4ZW1wdCBhbm9ueW1vdXMgdHlwZXMgZnJvbSBoYXZpbmcKCWxpbmthZ2UgZm9yIHZhcmlhYmxlcyB0aGF0IGhhdmUgbGlua2FnZSBvdGhlciB0aGFuICJDIi4KCjIwMDUtMDItMjMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjcC1vYmpjcC1jb21tb24uaCwgZXJyb3IuYzogVXBkYXRlIGNvcHlyaWdodC4KCjIwMDUtMDItMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwMDczCgkqIGRlY2wuYyAoc3RhcnRfZGVjbF8xKTogRG9uJ3QgY2xlYXIgVFJFRV9SRUFET05MWS4KCShjcF9maW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKGNvbXBsZXRlX3ZhcnMpOiBDYWxsIGNwX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbC4KCSogdHlwZWNrLmMgKGNwX2FwcGx5X3R5cGVfcXVhbHMpOiBBdm9pZCBzZXR0aW5nIFRSRUVfUkVBRE9OTFkgaW4KCWNhc2VzIHdoZXJlIHRoYXQncyBub3QgdmFsaWQuCgoJUFIgYysrLzE5OTkxCgkqIGluaXQuYyAoaW50ZWdyYWxfY29uc3RhbnRfdmFsdWUpOiBJdGVyYXRlIGlmIHRoZSB2YWx1ZSBvZiBhIGRlY2wKCWlzIGl0c2VsZiBhIGNvbnN0YW50LgoKCVBSIGMrKy8yMDE1MgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2NsYXNzX2hlYWQpOiBDaGVjayBmb3IgcmVkZWZpbnRpb25zIGhlcmUuCgkqIHNlbWFudGljcy5jIChiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogTm90IGhlcmUuCgoJUFIgYysrLzIwMTUzCgkqIGRlY2wyLmMgKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IEFkZCB0eXBlIHBhcmFtZXRlci4KCShmaW5pc2hfYW5vbl91bmlvbik6IFBhc3MgaXQuCgoJUFIgYysrLzIwMTQ4CgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IERvIG5vdCBwcmludCB0aGUgYm9keSBvZiBhIEJJTkRfRVhQUi4KCUhhbmRsZSBTVEFURU1FTlRfTElTVC4KCglQUiBjKysvMTk4ODMKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kaXJlY3RfZGVjbGFyYXRvcik6IEFsd2F5cyBjb21wbGFpbiBhYm91dAoJbm9uLWNvbnN0YW50IGFycmF5IGJvdW5kcyB3aGVuIGluIGEgZnVuY3Rpb24gc2NvcGUuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfaWRfZXhwcmVzc2lvbik6IERvIG5vdCBtYXJrIGRlcGVuZGVudCBuYW1lcwoJYXMgbm9uLWNvbnN0YW50LgoKMjAwNS0wMi0yMSAgRG91Z2xhcyBHcmVnb3IgIDxkZ3JlZ29yQGNzLmluZGlhbmEuZWR1PgoKCVBSIGMrKy8xOTA3NgoJUFIgYysrLzY2MjgKCSogY3AtdHJlZS5oIChjcF9hcHBseV90eXBlX3F1YWxzX3RvX2RlY2wpOiBEZWNsYXJlZC4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFBlZHdhcm4gYWJvdXQgcXVhbGlmeWluZyBhIGZ1bmN0aW9uCgl0eXBlLgoJQWRkIHF1YWxpZmllcnMgd2hlbiBkZWNsYXJpbmcgYSB0eXBlZGVmIG9mIGEgZnVuY3Rpb24gdHlwZS4KCU1lbWJlciBmdW5jdGlvbiBwb2ludGVycyBwaWNrIHVwIHRoZSBxdWFsaWZpZXJzIG9mIHRoZSB0eXBlZGVmCgl1c2VkIHRvIGRlY2xhcmUgdGhlbS4KCURvbid0IGNvbXBsYWluIGFib3V0IGNyZWF0aW5nIGN2LXF1YWxpZmllZCBmdW5jdGlvbiB0eXBlcy4KCUNvbXBsYWluIGFib3V0IHF1YWxpZmllZCBmdW5jdGlvbiB0eXBlZGVmcyB0aGF0IGFyZSB1c2VkIHRvCglkZWNsYXJlIG5vbi1zdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyBvciBmcmVlIGZ1bmN0aW9ucy4KCVVzZSBjcF9hcHBseV90eXBlX3F1YWxzX3RvX2RlY2wuCgkoc3RhcnRfcHJlcGFyc2VkX2Z1bmN0aW9uKTogVXNlIGNwX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbC4KCShncm9rY2xhc3Nmbik6IFVzZSBjcF9hcHBseV90eXBlX3F1YWxzX3RvX2RlY2wuCgkqIGVycm9yLmMgKGR1bXBfdHlwZV9zdWZmaXgpOiBQcmludCBxdWFsaWZpZXJzIGZvciBmdW5jdGlvbgoJdHlwZXMuCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogVXNlIGNwX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbC4KCSh0c3Vic3QpOiBXaGVuIHN1YnN0aXR1dGluZyBhIGZ1bmN0aW9uIHR5cGUgaW50byBhIG1lbWJlcgoJcG9pbnRlciB0eXBlLCBwYXNzIGFsb25nIHRoZSBxdWFsaWZpZXJzLgoJKHVuaWZ5KTogVW5pZnkgbWVtYmVyIHBvaW50ZXJzIHRvIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycy4KCSogdHJlZS5jIChjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsKTogRnVuY3Rpb24gdHlwZXMgbWF5IGJlCglxdWFsaWZpZWQuIFRoaXMgaW5jbHVkZXMgcmVzdHJpY3QgcXVhbGlmaWVycy4KCSogdHlwZWNrLmMgKGNwX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCk6IE5ldyBmdW5jdGlvbiB0byByZXBsYWNlCgl1c2Ugb2YgY19hcHBseV90eXBlX3F1YWxzX3RvX2RlY2wuIERyb3BzIHF1YWxpZmllcnMgdGhhdCBhcmUgYmVpbmcKCWFkZGVkIHRvIGZ1bmN0aW9uIHR5cGVzLgoKMjAwNS0wMi0yMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiAxODc4NQoJKiBjcC1vYmpjcC1jb21tb24uaCAoTEFOR19IT09LU19UT19UQVJHRVRfQ0hBUlNFVCk6IFNldCB0bwoJY19jb21tb25fdG9fdGFyZ2V0X2NoYXJzZXQuICBEZWxldGUgYm9ndXMgY29tbWVudC4KCjIwMDUtMDItMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgbGlic3RkYysrLzEwNjA2CgkqIGV4Y2VwdC5jIChkb19nZXRfZXhjZXB0aW9uX3B0cik6IE5ldy4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBVc2UgaXQuCgoyMDA1LTAyLTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbF8xKTogT25seSBjaGVjayBUWVBFX05FRURTX0NPTlNUUlVDVElORwoJaWYgdHlwZSBpcyBub3QgZXJyb3JfbWFya19ub2RlLgoKMjAwNS0wMS0yMCAgR2lvdmFubmkgQmFqbyAgPGdpb3Zhbm5pYmFqb0BnY2MuZ251Lm9yZz4KCglQUiBjKysvMTk1MDgKCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogRG8gbm90IGFwcGx5IGF0dHJpYnV0ZXMgdG8gdGVtcGxhdGUgcGFyYW1ldGVycwoJYXMgdGhleSBhcmUgaWdub3JlZCBieSB0c3Vic3QgYW55d2F5LgoKMjAwNS0wMi0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzE5ODEzCgkqIGRlY2wuYyAoc3RhcnRfZGVjbF8xKTogQ2xlYXIgVFJFRV9SRUFET05MWSBmbGFnIGlmCglpdHMgdHlwZSBoYXMgVFlQRV9ORUVEU19DT05TVFJVQ1RJTkcuCgkoY29tcGxldGVfdmFycyk6IExpa2V3aXNlLgoKMjAwNS0wMi0xNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJUFIgYysrLzIwMDI4CgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiBJbml0aWFsaXplIFRZUEVfU0laRV9VTklUIG9mIGEKCXRlbXBsYXRlIGFsb25nIHdpdGggVFlQRV9TSVpFLgoKCVBSIGMrKy8yMDAyMgoJKiBzZW1hbnRpY3MuYyAocGVyZm9ybV9kZWZlcnJlZF9hY2Nlc3NfY2hlY2tzKTogVXNlCglnZXRfZGVmZXJyZWRfYWNjZXNzX2NoZWNrcyB0byBnZXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suCgoyMDA1LTAyLTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiBjKysvMTc3ODgKCSogY2xhc3MuYyAoYWRkX2ltcGxpY2l0bHlfZGVjbGFyZWRfbWVtYmVycywgY2hlY2tfZmllbGRfZGVjbCkKCShjaGVja19maWVsZF9kZWNscywgY2hlY2tfYmFzZXMpOiBSZW1vdmUgYXJndW1lbnRzLCB0ZXN0cyBhbmQKCWFzc2lnbm1lbnRzIG9mIGNhbnRfaGF2ZV9kZWZhdWx0X2N0b3ItcmVsYXRlZCB2YXJpYWJsZXMuCgoyMDA1LTAyLTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGRlY2wyLmMgKG1hcmtfdXNlZCk6IFNldCB0aGUgc291cmNlIGxvY2F0aW9uIG9mIHRoZSB1c2VkIGRlY2wgdG8KCXRoZSBjdXJyZW50IGlucHV0IGxvY2F0aW9uIGhlcmUuLi4KCSogbWV0aG9kLmMgKHN5bnRoZXNpemVfbWV0aG9kKTogLi4uIG5vdCBoZXJlLiAgU2V0IGlucHV0X2xvY2F0aW9uCglmcm9tIHRoZSBkZWNsIGluc3RlYWQuCgoyMDA1LTAyLTE0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTYwOAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2xhdGVfcGFyc2luZ19mb3JfbWVtYmVyKTogVXNlCgljdXJyZW50X2Z1bmN0aW9uX2RlY2wgYXMgc2NvcGUgdG8gcHVzaCB0byBhbmQgZnJvbS4KCglQUiBjKysvMTk4ODQKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBNYWtlIHN1cmUgbmFtZXNwYWNlCgliaW5kaW5nIGxvb2t1cCBmb3VuZCBhbiBvdmVybG9hZGVkIGZ1bmN0aW9uLgoJKGxvb2t1cF90ZW1wbGF0ZV9mdW5jdGlvbik6IEp1c3QgYXNzZXJ0IEZOUyBpcyBhbiBvdmVybG9hZGVkCglmdW5jdGlvbi4KCglQUiBjKysvMTk4OTUKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENoZWNrIGZvciBlcnJvciBtYXJrIG5vZGUgaW4gcHRybWVtCgljb25zdHJ1Y3Rpb24uCgoyMDA1LTAyLTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiBjKysvMTc4MTYKCSogZGVjbC5jIChyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBSZXBvcnQgcmVkZWZpbml0aW9uIG9mCglwdXJlIHZpcnR1YWwgZnVuY3Rpb24uCgoyMDA1LTAyLTE0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTg5MQoJKiBjbGFzcy5jIChidWlsZF9zaW1wbGVfYmFzZV9wYXRoKTogQnVpbGQgdGhlIGNvbXBvbmVudF9yZWYKCWRpcmVjdGx5LgoJKHVwZGF0ZV92dGFibGVfZW50cnlfZm9yX2ZuKTogV2FsayB0aGUgY292YXJpYW50J3MgYmluZm8gY2hhaW4KCXJhdGhlciB0aGFuIHVzaW5nIGxvb2t1cF9iYXNlLgoJKiBzZWFyY2guYyAoZGZzX3dhbGtfb25jZSk6IEFkZCBub24tcmVjdXJzaXZlIGFzc2VydCBjaGVjay4KCSogdHlwZWNrLmMgKGJ1aWxkX2NsYXNzX21lbWJlcl9hY2Nlc3NfZXhwcik6IEl0IGlzIHBvc3NpYmxlIGZvcgoJdGhlIG1lbWJlciB0eXBlIHRvIGJlIGJvdGggY29uc3QgYW5kIHZvbGF0aWxlLgoKMjAwNS0wMi0xMiAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYysrLzE0NDc5CglQUiBjKysvMTk0ODcKCSogcHQuYyAobWF5YmVfY2hlY2tfdGVtcGxhdGVfdHlwZSk6IFJlbW92ZS4KCSogY3AtdHJlZS5oIChtYXliZV9jaGVja190ZW1wbGF0ZV90eXBlKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogbmFtZS1sb29rdXAuYyAobWF5YmVfcHJvY2Vzc190ZW1wbGF0ZV90eXBlX2RlY2xhcmF0aW9uKTogRG9uJ3QKCXVzZSBtYXliZV9jaGVja190ZW1wbGF0ZV90eXBlLgoKMjAwNS0wMi0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBjKysvMTk2MzIKCSogcHQuYyAoZ2V0X21vc3RseV9pbnN0YW50aWF0ZWRfZnVuY3Rpb25fdHlwZSk6IFNhdmUgYW5kIHJlc3RvcmUKCWZsYWdfYWNjZXNzX2NvbnRyb2wgaW5zdGVhZCBvZiBwdXNoL3BvcF9hY2Nlc3Nfc2NvcGUuCgoyMDA1LTAyLTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTc1NQoJKiBkZWNsLmMgKHJlc2hhcGVfaW5pdCk6IElzc3VlIHdhcm5pbmdzIGFib3V0IG1pc3NpbmcgYnJhY2VzLgoKMjAwNS0wMi0xMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNwLXRyZWUuZGVmLCBleGNlcHQuYywgcHRyZWUuYzogVXBkYXRlIGNvcHlyaWdodC4KCjIwMDUtMDItMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5ODExCgkqIGNhbGwuYyAoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBDaGVjayBDT01QTEVURV9UWVBFX1AgYmVmb3JlCglhdHRlbXB0aW5nIG5hbWUgbG9va3VwLgoKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl91bnF1YWxpZmllZF9pZCk6IEluaXRpYWxpemUgdHlwZV9kZWNsLgoKCVBSIGMrKy8xOTc4NwoJKiBjYWxsLmMgKGluaXRpYWxpemVfcmVmZXJlbmNlKTogUm9idXN0aWZ5LgoKCVBSICsrLzE5NzMyCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBDaGVjayBmb3IgaW52YWxpZCB1c2Ugb2YgZGVzdHJ1Y3RvcgoJbmFtZXMuCgoJUFIgYysrLzE5NzYyCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdW5xdWFsaWZpZWRfaWQpOiBBdm9pZCBjcmVhdGluZyBkZXN0cnVjdG9yCgluYW1lcyB3aXRoIGludmFsaWQgdHlwZXMuCgoJUFIgYysrLzE5ODI2CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZGlyZWN0X2RlY2xhcmF0b3IpOiBBbGxvdyB0eXBlLWRlcGVuZGVudAoJZXhwcmVzc2lvbnMgYXMgYXJyYXkgYm91bmRzLgoKCVBSIGMrKy8xOTczOQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2F0dHJpYnV0ZXNfbGlzdCk6IEFsbG93IGVtcHR5IGxpc3RzLgoKMjAwNS0wMi0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTk3MzMKCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IERvbid0IHNldCBUWVBFX0hBU19ERVNUUlVDVE9SLgoJKGNoZWNrX2Jhc2VzKTogR2l2ZSB3YXJuaW5ncyBhYm91dCBhIGJhc2UgY2xhc3Mgd2l0aCBhCglub24tdmlydHVhbCBkZXN0cnVjdG9yLCBldmVuIGlmIGl0IGlzIGltcGxpY2l0LgoJKGZpbmlzaF9zdHJ1Y3RfYml0cyk6IERvbid0IGNvcHkgVFlQRV9IQVNfREVTVFJVQ1RPUi4KCShtYXliZV93YXJuX2Fib3V0X292ZXJseV9wcml2YXRlX2NsYXNzKTogRG9uJ3QgdXNlCglUWVBFX0hBU19ERVNUUlVDVE9SLgoJKGZpbmlzaF9zdHJ1Y3RfbWV0aG9kcyk6IERvbid0IHNldCBUWVBFX0hBU19ERVNUUlVDVE9SLgoJKGNoZWNrX2Zvcl9vdmVycmlkZSk6IEdpdmUgaXQgZXh0ZXJuYWwgbGlua2FnZS4KCShhZGRfaW1wbGljaXRseV9kZWNsYXJlZF9tZW1iZXJzKTogR2VuZXJhdGUgZGVzdHJ1Y3RvcnMgbGF6aWx5LgoJKGNoZWNrX2ZpZWxkX2RlY2xzKTogVXNlIFRZUEVfSEFTX05PTlRSSVZJQUxfREVTVFJVQ1RPUiwgbm90CglUWVBFX0hBU19ERVNUUlVDVE9SLgoJKGNoZWNrX2Jhc2VzX2FuZF9tZW1iZXJzKTogQ2FsbCBjaGVja19tZXRob2RzIGJlZm9yZQoJY2hlY2tfZmllbGRfZGVjbHMuCgkoY2hlY2tfYmFzZXNfYW5kX21lbWJlcnMpOiBVc2UgVFlQRV9IQVNfTk9OVFJJVklBTF9ERVNUUlVDVE9SLCBub3QKCVRZUEVfSEFTX0RFU1RSVUNUT1IuCgkoZmluaXNoX3N0cnVjdF8xKTogRG8gbm90IHVzZSBUWVBFX0hBU19ERVNUUlVDVE9SLgoJKiBjcC10cmVlLmRlZiAoUFNFVURPX0RUT1JfRVhQUik6IERvY3VtZW50LgoJKiBjcC10cmVlLmggKFRZUEVfSEFTX0RFU1RSVUNUT1IpOiBSZW1vdmUuCgkobGFuZ190eXBlX2NsYXNzKTogQWRkIGxhenlfZGVzdHJ1Y3Rvci4KCShDTEFTU1RZUEVfTEFaWV9ERVNUUlVDVE9SKTogTmV3IG1hY3JvLgoJKENMQVNTVFlQRV9ERVNUUlVDVE9SUyk6IFJvYnVzdGlmeS4KCShUWVBFX0hBU19ERVNUUlVDVE9SKTogUmVtb3ZlLgoJKGNoZWNrX2Zvcl9vdmVycmlkZSk6IERlY2xhcmUuCgkoYnVpbGRfdmJhc2VfZGVsZXRlKTogUmVtb3ZlLgoJKiBjdnQuYyAoY29udmVydF90b192b2lkKTogSXNzdWUgZXJyb3JzIGFib3V0IHBzZXVkby1kZXN0cnVjdG9yCglleHByZXNzaW9ucy4KCSogZGVjbC5jIChjeHhfbWF5YmVfYnVpbGRfY2xlYW51cCk6IFJlbW92ZSBkZWFkIGNvZGUuCgkqIGV4Y2VwdC5jIChkdG9yX25vdGhyb3cpOiBMYXppbHkgY3JlYXRlIGRlc3RydWN0b3JzIGlmIG5lY2Vzc2FyeS4KCShidWlsZF90aHJvdyk6IFVzZSBUWVBFX0hBU19OT05UUklWSUFMX0RFU1RSVUNUT1IuCgkqIGluaXQuYyAoYnVpbGRfZGVsZXRlKTogTGF6aWx5IGNyZWF0ZSBkZXN0cnVjdG9ycywgaWYgbmVjZXNzYXJ5LgoJKGJ1aWxkX3ZiYXNlX2RlbGV0ZSk6IFJlbW92ZS4KCSogbWV0aG9kLmMgKGxvY2F0ZV9kdG9yKTogU2ltcGxpZnkuCgkoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTogQWRkIHN1cHBvcnQgZm9yIGRlc3RydWN0b3JzLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2xvb2t1cF9uYW1lKTogTGF6aWx5IGNyZWF0ZSBkZXN0cnVjdG9ycywgaWYKCW5lY2Vzc2FyeS4KCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBEb24ndCB1c2UKCVRZUEVfSEFTX0RFU1RSVUNUT1IuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBMaWtld2lzZS4KCSogcHRyZWUuYyAoY3h4X3ByaW50X3R5cGUpOiBEb24ndCBwcmludCBUWVBFX0hBU19ERVNUUlVDVE9SLgoJKiBydHRpLmMgKGVtaXRfc3VwcG9ydF90aW5mb3MpOiBSb2J1c3RpZnkuCgkqIHNlYXJjaC5jIChsb29rdXBfZm5maWVsZHNfMSk6IExhemlseSBjcmVhdGUgZGVzdHJ1Y3RvcnMuCgkqIHR5cGVjay5jIChidWlsZF9jbGFzc19tZW1iZXJfYWNjZXNzX2V4cHIpOiBSZW1vdmUKCVBTRVVET19EVE9SX0VYUFIgaGFuZGxpbmcuCgkobG9va3VwX2Rlc3RydWN0b3IpOiBMaWtld2lzZS4KCjIwMDUtMDItMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjeHgtcHJldHR5LXByaW50LmMsIGN4eC1wcmV0dHktcHJpbnQuaCwgZGVjbC5oOiBVcGRhdGUKCWNvcHlyaWdodC4KCjIwMDUtMDItMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZXIuYyAoY3BfbGV4ZXJfc3RhcnRfZGVidWdnaW5nKTogQXZvaWQgYXJpdGhtZXRpYyBvcGVyYXRpb25zCglvbiBib29sZWFuIHZhcmlhYmxlcy4KCShjcF9sZXhlcl9zdG9wX2RlYnVnZ2luZyk6IExpa2V3aXNlLgoKMjAwNS0wMi0wMyAgR2lvdmFubmkgQmFqbyAgPGdpb3Zhbm5pYmFqb0BnY2MuZ251Lm9yZz4KCglQUiBjKysvMTc0MDEKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wdXJlX3NwZWNpZmllcik6IEVtaXQgYSBzcGVjaWZpYyBlcnJvcgoJbWVzc2FnZSB3aXRoIGFuIGludmFsaWQgcHVyZSBzcGVjaWZpZXIuCgkqIGRlY2wyLmMgKGdyb2tfZnVuY3Rpb25faW5pdCk6IFJlbW92ZS4KCShncm9rZmllbGQpOiBBbiBpbml0aWFsaXplciBmb3IgYSBtZXRob2QgaXMgYSBhbHdheXMgYSBwdXJlCglzcGVjaWZpZXIuCgoyMDA1LTAyLTAyICBNYXR0IEF1c3Rlcm4gIDxhdXN0ZXJuQGFwcGxlLmNvbT4KCglQUiBjKysvMTk2MjgKCSogY3AtdHJlZS5oIChidWlsdGluX3ZhbGlkX2luX2NvbnN0YW50X2V4cHJfcCk6IERlY2xhcmUuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uKTogQWNjZXB0IGZ1bmN0aW9uIGNhbGwgaW4KCWNvbnN0YW50IGV4cHJlc3Npb24gaWYgYnVpbHRpbl92YWxpZF9pbl9jb25zdGFudF9leHByX3AgaXMgdHJ1ZQoJZm9yIHRoYXQgZnVuY3Rpb24uCgkqIHB0LmMgKHZhbHVlX2RlcGVuZGVudF9leHByZXNzaW9uX3ApOiBIYW5kbGUgQ0FMTF9FWFBScyBwcm9wZXJseS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9pZF9leHByZXNzaW9uKTogQWNjZXB0IGZ1bmN0aW9uIGNhbGwgaW4gY29uc3RhbnQKCWV4cHJlc3Npb24gaWYgYnVpbHRpbl92YWxpZF9pbl9jb25zdGFudF9leHByX3AgaXMgdHJ1ZSBmb3IgdGhhdAoJZnVuY3Rpb24uCgkqIHRyZWUuYyAoYnVpbHRpbl92YWxpZF9pbl9jb25zdGFudF9leHByX3ApOiBOZXcuCgoyMDA1LTAyLTAyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8xNzQxMwoJKiBwdC5jIChjaGVja19pbnN0YW50aWF0ZWRfYXJncyk6IEltcHJvdmUgZXJyb3IgbWVzc2FnZS4KCUZpeCBsb2dpYyB3aGVuIHRvIHByaW50IGl0cyBzZWNvbmQgcGFydC4KCjIwMDUtMDItMDIgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBjcC10cmVlLmggKGNvbXBsZXRlX3R5cGVfb3JfZWxzZSk6IFJlbW92ZSBtYWNyby4KCShjb21wbGV0ZV90eXBlX29yX2RpYWdub3N0aWMpOiBSZW5hbWUgdG8gY29tcGxldGVfdHlwZV9vcl9lbHNlCglhbmQgcmVtb3ZlIGxhc3QgYXJndW1lbnQuCgkqIHR5cGVjay5jIChjb21wbGV0ZV90eXBlX29yX2RpYWdub3N0aWMpOiBSZW5hbWUgdG8KCWNvbXBsZXRlX3R5cGVfb3JfZWxzZSBhbmQgcmVtb3ZlIGxhc3QgYXJndW1lbnQuCgoyMDA1LTAyLTAyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogY3AtdHJlZS5oIChjb21tb25wYXJtcyk6IFJlbW92ZSBwcm90b3R5cGUuCgkoY29udmVydF9hcmd1bWVudHMpOiBMaWtld2lzZS4KCShQRk5fRlJPTV9QVFJNRU1GVU5DKTogUmVtb3ZlLgoJKiB0eXBlY2suYyAoY29tbW9ucGFybXMpOiBNYWtlIHN0YXRpYy4KCShjb252ZXJ0X2FyZ3VtZW50cyk6IEFkZCBwcm90b3R5cGUuIE1ha2Ugc3RhdGljLgoJKFBGTl9GUk9NX1BUUk1FTUZVTkMpOiBSZXBsYWNlIGJ5IHBmbl9mcm9tX3B0cm1lbWZ1bmMuCgoyMDA1LTAxLTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wcmltYXJ5X2V4cHJlc3Npb24pOiBEb24ndCBjb21wbGFpbiBhYm91dAoJZmxvYXRpbmctcG9pbnQgbGl0ZXJhbHMgaW4gaW50ZWdyYWwgY29uc3RhbnQgZXhwcmVzc2lvbnMgd2hlbgoJIXBlZGFudGljLgoKMjAwNS0wMi0wMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3RlbXBsYXRlX2lkKTogUmV2ZXJ0IGNvbW1lbnQgcGF0Y2ggdG9vLgoKCVBSIGMrKy8xODc1NwoJUFIgYysrLzE5MzY2CglQUiBjKysvMTk0OTkKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90ZW1wbGF0ZV9pZCk6IFJldmVydCAyMDA0LTEyLTA5J3MgcGF0Y2guCglJc3N1ZSBhbiBlcnJvciB3aGVuIGNyZWF0aW5nIHRoZSB0ZW1wbGF0ZSBpZC4KCSogcHQuYyAoZm5fdHlwZV91bmlmaWNhdGlvbik6IFJldHVybiBlYXJseSBpZiB0aGUgZXhwbGljaXQKCXRlbXBsYXRlIGFyZyBsaXN0IGlzIGFuIGVycm9yX21hcmtfbm9kZS4KCjIwMDUtMDEtMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGJ1aWxkX2VudW1lcmF0b3IpOiBEbyBub3QgaXNzdWUgZHVwbGljYXRlIGVycm9yIG1lc3NhZ2VzCglhYm91dCBpbnZhbGlkIGVudW1lcmF0aW9uIGNvbnN0YW50cy4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9ub25faW50ZWdyYWxfY29uc3RhbnRfZXhwcmVzc2lvbik6IEFsd2F5cwoJc2V0IHBhcnNlci0+bm9uX2ludGVncmFsX2NvbnN0YW50X2V4cHJlc3Npb25fcC4KCShjcF9wYXJzZXJfcHJpbWFyeV9leHByZXNzaW9uKTogQWRkIGNhc3RfcCBwYXJhbWV0ZXIuICBJc3N1ZQoJZXJyb3JzIGFib3V0IGludmFsaWQgdXNlcyBvZiBmbG9hdGluZy1wb2ludCBsaXRlcmFscyBpbgoJY2FzdC1leHByZXNzaW9ucy4KCShjcF9wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uKTogQWRkIGNhc3RfcCBwYXJhbWV0ZXIuCgkoY3BfcGFyc2VyX29wZW5fc3F1YXJlX2V4cHJlc3Npb24pOiBQYXNzIGl0LgoJKGNwX3BhcnNlcl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb25fbGlzdCk6IEFkZCBjYXN0X3AgcGFyYW1ldGVyLgoJKGNwX3BhcnNlcl91bmFyeV9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX25ld19wbGFjZW1lbnQpOiBQYXNzIGl0LgoJKGNwX3BhcnNlcl9kaXJlY3RfbmV3X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfbmV3X2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2Nhc3RfZXhwcmVzc2lvbik6IEFkZCBjYXN0X3AgcGFyYW1ldGVyLgoJKGNwX3BhcnNlcl9iaW5hcnlfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9xdWVzdGlvbl9jb2xvbl9jbGF1c2UpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfYXNzaWdubWVudF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfY29uc3RhbnRfZXhwcmVzc2lvbik6IElmIGFuIGludGVncmFsIGNvbnN0YW50CglleHByZXNzaW9uIGlzIGludmFsaWQsIHJldHVybiBlcnJvcl9tYXJrX25vZGUuCgkoY3BfcGFyc2VyX2V4cHJlc3Npb25fc3RhdGVtZW50KTogUGFzcyBjYXN0X3AuCgkoY3BfcGFyc2VyX2NvbmRpdGlvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9pdGVyYXRpb25fc3RhdGVtZW50KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2p1bXBfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX21lbV9pbml0aWFsaXplcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl90ZW1wbGF0ZV9hcmd1bWVudCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9wYXJhbWV0ZXJfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfdGhyb3dfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9hdHRyaWJ1dGVfbGlzdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9zaW1wbGVfY2FzdF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2Z1bmN0aW9uYWxfY2FzdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9sYXRlX3BhcnNpbmdfZGVmYXVsdF9hcmdzKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3NpemVvZl9vcGVyYW5kKTogU2F2ZS9yZXN0b3JlCglub25faW50ZWdyYWxfY29uc3RhbnRfZXhwcmVzc2lvbl9wLgoKMjAwNS0wMS0zMSAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBwYXJzZXIuYyAoY3BfbGV4ZXJfbmV3X21haW4pOiBHZXQgdGhlIGZpcnN0IHRva2VuLCBmaXJzdCwgYmVmb3JlCglkb2luZyBhbnl0aGluZy4KCjIwMDUtMDEtMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBBZGQgbWlzc2luZyBwYXJlbnRoZXNlcy4KCjIwMDUtMDEtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5NTU1CgkqIGNwLXRyZWUuaCAoREVDTF9VU0VfVEVNUExBVEUpOiBFeHBhbmQgZG9jdW1lbnRhdGlvbi4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEbyBub3QgZGlzY2FyZAoJREVDTF9JTVBMSUNJVF9JTlNUQU5USUFUSU9OIHdoZW4gbWVyZ2luZyBkZWNsYXJhdGlvbnMuCgkoc3RhcnRfZGVjbCk6IERvIG5vdCBTRVRfREVDTF9URU1QTEFURV9TUEVDSUFMSVpBVElPTiBmb3IKCXZhcmlhYmxlcyB0aGF0IGRvIG5vdCBoYXZlIERFQ0xfVVNFX1RFTVBMQVRFLgoKCVBSIGMrKy8xOTM5NQoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmVmYWN0b3IgY29kZSBzbyB0aGF0IHF1YWxpZmllZCBuYW1lcwoJYXJlIG5ldmVyIGFsbG93ZWQgYXMgdGhlIGRlY2xhcmF0b3IgaW4gYSB0eXBlZGVmLgoKCVBSIGMrKy8xOTM2NwoJKiBuYW1lLWxvb2t1cC5jIChkb19ub25tZW1iZXJfdXNpbmdfZGVjbCk6IEF2b2lkIG92ZXJsb2FkaW5nCglidWlsdGluIGRlY2xhcmF0aW9ucy4KCglQUiBjKysvMTk0NTcKCSogY2FsbC5jIChjb252ZXJ0X2xpa2VfcmVhbCk6IElubGluZSBjYWxsIHRvCglkdWJpb3VzX2NvbnZlcnNpb25fd2FybmluZ3MgaGVyZS4KCSogY3AtdHJlZS5oIChkdWJpb3VzX2NvbnZlcnNpb25fd2FybmluZ3MpOiBSZW1vdmUuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdW5hcnlfb3BfZXhwcik6IENvcHkgSU5URUdFUl9DU1RzIGJlZm9yZQoJc2V0dGluZyBUUkVFX05FR0FURURfSU5ULgoJKiB0eXBlY2suYyAoZHViaW91c19jb252ZXJzaW9uX3dhcm5pbmdzKTogUmVtb3ZlLgoKCVBSIGMrKy8xOTM0OQoJKiBuYW1lLWxvb2t1cC5jIChwdXNoZGVjbF9uYW1lc3BhY2VfbGV2ZWwpOiBBdm9pZCBhY2Nlc3NpbmcgZnJlZSdkCgltZW1vcnkuCgoyMDA1LTAxLTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTI1MwoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2RpYWdub3NlX2ludmFsaWRfdHlwZV9uYW1lKTogQ29tbWl0IHRvCgl0ZW50YXRpdmUgcGFyc2VzLgoKCVBSIGMrKy8xOTY2NwoJKiBwdC5jIChyZWRlY2xhcmVfY2xhc3NfdGVtcGxhdGUpOiBSb2J1c3RpZnkuCgoyMDA1LTAxLTI3ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBkZWNsLmMgKGZpbmlzaF9jYXNlX2xhYmVsKTogVXNlIFNXSVRDSF9TVE1UIGFjY2Vzc29yIG1hY3JvcwoJaW5zdGVhZCBvZiBTV0lUQ0hfRVhQUiBvbmVzLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fc3dpdGNoX3N0bXQsIGZpbmlzaF9zd2l0Y2hfY29uZCwKCWZpbmlzaF9zd2l0Y2hfc3RtdCk6IExpa2V3aXNlLgoKMjAwNS0wMS0yNiAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN0LmNvbT4KCglQUiBjKysvMTgzNzAKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9pbml0aWFsaXplcl9jbGF1c2UpOiBJbml0aWFsaXplICpub25fY29uc3RhbnRfcC4KCjIwMDUtMDEtMjUgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY2xhc3MuYyAoYWJvcnRfZm5kZWNsX2FkZHIpOiBOZXcgdmFyaWFibGUuCgkoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IElmIHdlIGhhdmUgYSBwdXJlIHZpcnR1YWwgZnVuY3Rpb24KCXNoYXJlIHRoZSBhYm9ydCBmdW5jdGlvbidzIGFkZHJlc3MuCglJbmNsdWRlIGd0LWNwLWNsYXNzLmggYXQgdGhlIGVuZC4KCSogY29uZmlnLWxhbmcuaW4gKGd0ZmlsZXMpOiBBZGQgY3AvY2xhc3MuYy4KCjIwMDUtMDEtMjUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBjeHgtcHJldHR5LXByaW50LmMgKHBwX2N4eF9zdGF0ZW1lbnQpOiBBZGQgcHJvdG90eXBlLiBNYWtlIHN0YXRpYy4KCShwcF9jeHhfZnVuY3Rpb25fZGVmaW5pdGlvbik6IE1ha2Ugc3RhdGljLgoJKiBjeHgtcHJldHR5LXByaW50LmggKHBwX2N4eF9zdGF0ZW1lbnQpOiBSZW1vdmUgcHJvdG90eXBlLgoJKHBwX2N4eF9mdW5jdGlvbl9kZWZpbml0aW9uKTogTGlrZXdpc2UuCgoyMDA1LTAxLTI1ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogbmFtZS1sb29rdXAuYyAocHJpbnRfYmluZGluZ19sZXZlbCk6IE1ha2Ugc3RhdGljLgoJKGNvbnN0cnVjdG9yX25hbWVfZnVsbCk6IE1ha2Ugc3RhdGljIGlubGluZS4KCShjdXJyZW50X2RlY2xfbmFtZXNwYWNlKTogTWFrZSBzdGF0aWMuCgkqIG5hbWUtbG9va3VwLmggKGNvbnN0cnVjdG9yX25hbWVfZnVsbCk6IFJlbW92ZSBwcm90b3R5cGUuCgkocHJpbnRfYmluZGluZ19sZXZlbCk6IExpa2V3aXNlLgoJKGN1cnJlbnRfZGVjbF9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCjIwMDUtMDEtMjUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBkZWNsLmggKGRlYnVnX2JpbmRpbmdzX2luZGVudGF0aW9uKTogUmVtb3ZlLgoKMjAwNS0wMS0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHR5cGVjay5jOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA1LTAxLTIxICBHaW92YW5uaSBCYWpvICA8Z2lvdmFubmliYWpvQGdjYy5nbnUub3JnPgoKCVBSIGMrKy8xOTIwOAoJKiBwdC5jIChmb2xkX2RlY2xfY29uc3RhbnRfdmFsdWUpOiBBbHdheXMgY2FsbCBmb2xkX25vbl9kZXBlbmRlbnRfZXhwcgoJYXQgbGVhc3Qgb25jZS4KCSh0c3Vic3QpOiBVc2UgZm9sZF9kZWNsX2NvbnN0YW50X3ZhbHVlIGluIHBsYWNlIG9mIGEgYmFyZSBjYWxsIHRvCglpbnRlZ3JhbF9jb25zdGFudF92YWx1ZS4KCjIwMDUtMDEtMjAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0eXBlY2suYyAobW9yZV9xdWFsaWZpZWRfcCk6IFJlbW92ZS4KCSogY3AtdHJlZS5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKMjAwNS0wMS0xOSAgTWF0dCBBdXN0ZXJuICA8YXVzdGVybkBhcHBsZS5jb20+CgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogSGFuZGxlIHJldHVybiBjb2RlIGZyb20gb2JqY19jb21wdHlwZXMKCWNvcnJlY3RseS4KCjIwMDUtMDEtMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjcC10cmVlLmgsIG5hbWUtbG9va3VwLmg6IFJlbW92ZSB1bnVzZWQgcHJvdG90eXBlcy4KCjIwMDUtMDEtMTkgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGMrKy8xOTM3NQoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2lkX2V4cHJlc3Npb24pOiBEaXNhYmxlIGFjY2VzcyBjaGVja2luZyBmb3IKCWFscmVhZHkgbG9va3VwZWQgRklFTERfREVDTC4KCjIwMDUtMDEtMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkZWNsLmMgKGRlbGV0ZV9ibG9jayk6IFJlbW92ZS4KCSogY3AtdHJlZS5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKCSogZGVjbC5jICh2dGFibGVfZGVjbF9wLCB2dHlwZV9kZWNsX3AsIHdhbGtfZ2xvYmFsc19kYXRhLAoJd2Fsa192dGFibGVzX3IsIHdhbGtfdnRhYmxlcywgd2Fsa19nbG9iYWxzX3IsIHdhbGtfZ2xvYmFscyk6CglSZW1vdmUuCgkqIGNwLXRyZWUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZXMuCgoJKiB0cmVlLmMgKGNvdW50X2Z1bmN0aW9ucywgYm91bmRfcG1mX3AsIGNwX2lzX292ZXJsb2FkX3AsCgljcF91cGRhdGVfZGVjbF9hZnRlcl9zYXZpbmcsIG5hbWVfcCk6IFJlbW92ZS4KCSogY3AtdHJlZS5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlcy4KCjIwMDUtMDEtMTggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGMvMTk0NzIKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IFN0cmlwIG5vcHMgb2ZmCglpbnB1dCBtZW1vcnkgb3BlcmFuZHMuCgoyMDA1LTAxLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogTWFrZS1sYW5nLmluLCBjYWxsLmMsIGN2dC5jLCBpbml0LmMsIHJ0dGkuYywgdHJlZS5jLAoJdHlwZWNrMi5jOiBVcGRhdGUgY29weXJpZ2h0LgoKMjAwNS0wMS0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNsYXNzLmMgKGdldF9lbmNsb3NpbmdfY2xhc3MpOiBSZW1vdmUuCgkqIGNwLXRyZWUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZXMuCgoJKiBjdnQuYyAoY29udmVydF9sdmFsdWUpOiBSZW1vdmUuCgkqIGNwLXRyZWUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZS4KCgkqIHB0LmMgKHRpbnN0X2Zvcl9kZWNsKTogUmVtb3ZlLgoJKiBjcC10cmVlLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGVzLgoKCSogdHJlZS5jIChoYXNoX2NoYWlub24pOiBSZW1vdmUuCgkqIGNwLXRyZWUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZXMuCgoyMDA1LTAxLTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMTkyNjMKCSogdHlwZWNrMi5jIChzcGxpdF9ub25jb25zdGFudF9pbml0XzEpIDxjYXNlIFZFQ1RPUl9UWVBFPjogUHV0IGEgY29weQoJb2YgQ09OU1RSVUNUT1IncyBub2RlIGludG8gTU9ESUZZX0VYUFIsIGFzIHRoZSBvcmlnaW5hbCBpcyBtb2RpZmllZC4KCjIwMDUtMDEtMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoY3Atd2Fybik6IERvbid0IGFwcGVuZCAkKFdFUlJPUikuCgoyMDA1LTAxLTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY3AtdHJlZS5oOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA1LTAxLTA3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTI5OAoJKiBwdC5jICh0c3Vic3RfcXVhbGlmaWVkX2lkKTogQ2FsbCBjb252ZXJ0X2Zyb21fcmVmZXJlbmNlLgoKMjAwNS0wMS0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTkyNDQKCSogY2xhc3MuYyAoYWRkX2ltcGxpY2l0bHlfZGVjbGFyZWRfbWVtYmVycyk6IFJlbW92ZSBkZWFkIGNvZGUuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IEFkZCBzZmsgcGFyYW1ldGVyLiAgVXNlIGl0IGRvIHNldAoJREVDTF9DT05TVFJVQ1RPUl9QLgoJKGdyb2tkZWNsYXJhdG9yKTogQWRqdXN0IGNhbGxzIHRvIGdyb2tmbmRlY2wuCgkqIG1ldGhvZC5jIChpbXBsaWNpdGx5X2RlY2xhcmVfZm4pOiBJbXByb3ZlIGRvY3VtZW50YXRpb24uCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZGlyZWN0X2RlY2xhcmF0b3IpOiBEbyBub3QgY29uc2lkZXIgYQoJZnVuY3Rpb24gdG8gYmUgYSBjb25zdHJ1Y3RvciBpZiB0aGUgY29udGFpbmluZyBjbGFzcyB3YXMKCW9yaWdpbmFsbHkgYW5vbnltb3VzLgoKMjAwNS0wMS0wNiAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYysrLzE3MTU0CgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfMSk6IEhhbmRsZSB1c2luZyBkZWNsYXJhdGlvbiBpbgoJY2xhc3MgdGVtcGxhdGUgcGFydGlhbCBzcGVjaWFsaXphdGlvbi4KCjIwMDUtMDEtMDYgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGMrKy8xOTI1OAoJKiBwdC5jIChwdXNoX2FjY2Vzc19zY29wZSk6IEhhbmRsZSBmcmllbmQgZGVmaW5lZCBpbiBjbGFzcy4KCShwb3BfYWNjZXNzX3Njb3BlKTogTGlrZXdpc2UuCgoyMDA1LTAxLTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTI3MAoJKiBwdC5jICh0c3Vic3RfY29weSkgPEFSUkFZX1JFRiBjYXNlPjogSGFuZGxlIHNlcGFyYXRlbHkuCgkodHN1YnN0X2NvcHlfYW5kX2J1aWxkKSA8QVJSQVlfUkVGIGNhc2U+OiBSZW1vdmUgb2Jzb2xldGUKCWFycmF5LW5ldyBoYW5kbGluZyBjb2RlLiAgVXNlIGJ1aWxkX3hfYmluYXJ5X29wLgoKMjAwNS0wMS0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTkwMzAKCSogY3AtdHJlZS5oIChzdGFydF9kZWNsKTogVGFrZSBwb2ludGVyIHRvIHB1c2hlZCBzY29wZSwgbm90IGJvb2wuCgkqIG5hbWUtbG9va3VwLmggKHB1c2hfc2NvcGUpOiBSZXR1cm4gcHVzaGVkIHNjb3BlLCBub3QgZmxhZy4KCSogbmFtZS1sb29rdXAuYyAocHVzaF9zY29wZSk6IFJldHVybiBzY29wZSB0aGF0IHNob3VsZCBiZSBwb3BwZWQsCglub3QgYSBmbGFnLgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBBZGp1c3QuCgkoZ3Jva2ZuZGVjbCk6IEFkanVzdCBzY29wZSBwdXNoIGFuZCBwb3AuCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBMaWtld2lzZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9jb25kaXRpb24sIGNwX3BhcnNlcl9jb252ZXJzaW9uX2Z1bmN0aW9uX2lkLAoJY3BfcGFyc2VyX2luaXRfZGVjbGFyYXRvciwgY3BfcGFyc2VyX2RpcmVjdF9kZWNsYXJhdG9yLAoJY3BfcGFyc2VyX2NsYXNzX3NwZWNpZmllciwgY3BfcGFyc2VyX2NsYXNzX2hlYWQsCgljcF9wYXJzZXJfbG9va3VwX25hbWUsCgljcF9wYXJzZXJfY29uc3RydWN0b3JfZGVjbGFyYXRvcl9wKTogTGlrZXdpc2UuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlLAoJcmVzb2x2ZV90eXBlbmFtZV90eXBlKTogTGlrZXdpc2UuCgoyMDA1LTAxLTAzICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8xNDEzNgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3VucXVhbGlmaWVkX2lkKTogRG8gbm90IGlzc3VlIGVycm9yIG1lc3NhZ2UKCWZvciB0eXBlZGVmLW5hbWUgYXMgZGVzdHJ1Y3RvciBkZWNsYXJhdG9yIHdoZW4gcGVyZm9ybWluZyBhbgoJdW5jb21taXR0ZWQgdGVudGF0aXZlIHBhcnNlLgoKMjAwNS0wMS0wMSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMTc1NDQKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBGaXggY29tbWVudC4gIEFubm90YXRlIHRoZSBjb21waWxlcgoJZ2VuZXJhdGVkIHJldHVybiB3aXRoIHRoZSBjdXJyZW50IGZpbGUgbmFtZSBhbmQgbGluZSAwLgo=