MjAwMy0wOS0yMSAgUm9iZXJ0IE1pbGxhbiAgPHJvYmVydG1oQGdudS5vcmc+CgoJKiBsaWJ0b29sLm00OiBBZGQgR05VL0tOZXRCU0Qgc3VwcG9ydC4KCSogbHRkbC5tNDogTGlrZXdpc2UuCgoyMDAzLTA5LTEzICBTY290dCBKYW1lcyBSZW1uYW50ICA8c2NvdHRAbmV0c3BsaXQuY29tPgoKCSogbGlidG9vbC5tNDogYWxsb3cgU1RSSVAgdG8gY29udGFpbiBzcGFjZXMgYW5kIGFkZGl0aW9uYWwKCWFyZ3VtZW50cy4gIChEZWJpYW4gQnVnICMxODMwNTUpCgkqIGx0bWFpbi5pbjogaW5jbHVkZSBuZXdsaW5lIGluICJzZW5zaWJsZSBkZWZhdWx0IiBmb3IgSUZTLgoJKERlYmlhbiBCdWcgIzk4NDkyIGFuZCAjOTU0NDcpCQoKMjAwMy0wOS0xMSAgUGV0ZXIgTydHb3JtYW4gIDxwZXRlckBwb2dtYS5jb20+CgoJKiBBVVRIT1JTLCBUSEFOS1M6IEFkZGVkIG15c2VsZiB0byBBVVRIT1JTLCByZW1vdmVkIGZyb20gVEhBTktTLgoKMjAwMy0wOS0xMCAgUGV0ZXIgTydHb3JtYW4gIDxwZXRlckBwb2dtYS5jb20+CgoJKiBtZGVtbzIvY29uZmlndXJlLmFjOiBVc2UgQUNfTElCVE9PTF9ETE9QRU4uCgkqIG1kZW1vMi9tYWluLmM6IFVzZSBMVERMX1NFVF9QUkVMT0FERURfU1lNQk9MUygpLgoJKiBtZGVtbzIvTWFrZWZpbGUuYW06IFNldCBJTkNMVURFUyBwcm9wZXJseSBhbmQgYWRkIC1kbG9wZW4gZm9yY2UKCXRvIG1ha2Ugc3VyZSB0aGUgc3ltYm9scyBmaWxlIGlzIGluY2x1ZGVkIGluIHRoZSBsaW5rIGxpbmUuCgoJKiBsdG1haW4uaW46IEFjY2VwdCAtZnJhbWV3b3JrIGZvciBkYXJ3aW4gYW5kIHB1dCBpdCBpbgoJZGVwZW5kZW5jeV9saWJzLiBGb3Igbm9uLWluc3RhbGxlZCAubGEncyB0cnkgdG8gYXZvaWQgaGF2aW5nCgkuLy5saWJzLy5saWJzL2xpYmZvby5zbyBvbiB0aGUgbGluayBsaW5lLgoKMjAwMy0wOS0xMCAgQXJuZSBXb2VybmVyICA8d29lcm5lckBtZWRpYWJhc2UtZ21iaC5kZT4KCgkqIGxpYnRvb2wubTQgW29wZW5ic2RdOiBvcGVuYnNkIDMueCBuZWVkcyB2ZXJzaW9uaW5nIGluZm9ybWF0aW9uLgoKMjAwMy0wOC0yOSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogYm9vdHN0cmFwOiBUeXBvLgoKMjAwMy0wOC0yOSAgQWxleGFuZHJlIER1cmV0LUx1dHogIDxhZGxAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19MQU5HX0NfQ09ORklHKTogRml4IHVucXVvdGVkIGNhbGwgdG8KCV9MVF9BQ19MQU5HX0NfQ09ORklHLgoJKEFDX1BST0dfRUdSRVApOiBSZW1vdmUsIG5vdyB0aGF0IExpYnRvb2wgcmVxdWlyZXMgQXV0b2NvbmYgMi41Ni4KCSogYm9vdHN0cmFwOiBJc3N1ZSBhbiB1cGdyYWRlIHdhcm5pbmcuCgoyMDAzLTA4LTI3ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfQ0hFQ0tfRExGQ04pOiBVc2UgdGhlIGludGVycmltIG5ldwoJQUNfQ0hFQ0tfSEVBREVSIHdpdGggY29tcGlsZXIgcmF0aGVyIHRoYW4gcHJlcHJvY2Vzc29yLgoJKEFDX0xJQlRPT0xfU0VUVVApOiAuLi53aGljaCB3YXMgaW50cm9kdWNlZCBpbiBhdXRvY29uZi0yLjU2LCBzbwoJd2UgQUNfUFJFUkVRIHRoYXQgdmVyc2lvbi4KCSogbHRkbC5tNCAoQUNfV0lUSF9MVERMLCBBQ19MSUJfTFRETCwgQUNfTFRETF9GVU5DX0FSR1opOiBEaXR0by4KCjIwMDMtMDgtMjcgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglXb3JrIGFyb3VuZCBhIGJ1ZyBpbiBBVV9BTElBUyBpbiBDVlMgQXV0b2NvbmYgdGhhdCBpbnNlcnRzIGEKCW5ld2xpbmUganVzdCBiZWZvcmUgQUNfRkRfQ0MsIGJ5IGhhbmQgdXBkYXRpbmc6CgoJKiBsdGRsLm00IChBQ19MVERMX1NZTUJPTF9VU0NPUkUpOiBzL0FDX0ZEX0NDL0FTX01FU1NBR0VfTE9HX0ZEL2cuCgoyMDAzLTA4LTA1ICBKaW0gUGljayA8amltQGthZmZlLm9yZz4sCglJdG8gS2F6dW1pdHN1IDxrYXpAbWFjenVrYS5nY2Qub3JnPiwKCUdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglNdWNoIGFzIHdlIGhhdmUgdHJpZWQgbm90IHRvIG1ha2UgaXQgdGhlIGNhbGxlcnMnIHJlc3BvbnNpYmlsaXR5Cgl0byBtYWludGFpbiBhbiBsdF9kbHJlYWxsb2MgZnVuY3Rpb24gcG9pbnRlciwgaXQgaXMgdG9vIGRpZmZpY3VsdAoJdG8gaW1wbGVtZW50IHJlYWxsb2MgYXMgbWFsbG9jL21lbWNweS9mcmVlIHdpdGhvdXQga25vd2luZyB0aGUKCXNpemUgb2YgdGhlIG9yaWdpbmFsIGJsb2NrLiAgcnBsX3JlYWxsb2MgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZQoJMjAwMi0xMC0zMCwgYnV0IGthZmZlIGhhcyByZWFsIGZhaWx1cmVzIHdpdGggdGhhdCBzbyBpdCdzIHRpbWUgdG8KCWJpdGUgdGhlIGJ1bGxldC4gIENhbGxlciBnZXRzIHRvIG1haW50YWluIGx0X2RscmVhbGxvYzoKCgkqIE5FV1MgKDEuNS4xKTogVXBkYXRlZC4KCSogbGlibHRkbC9sdGRsLmMgKExUX0RMUkVBTExPQyk6IFVzZSBsdF9kbHJlYWxsb2Mgc28gdGhlIHVzZXIgY2FuCgl1cGRhdGUgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdG8gbWF0Y2ggbHRfZGxtYWxsb2MuCgkobHRfZW1hbGxvYyk6IFVzZSBsdF9kbHJlYWxsb2MgcmF0aGVyIHRoYW4gaGFyZGNvZGluZyByZWFsbG9jLgoJKiBkb2MvbGlidG9vbC50ZXhpIChMaWJsdGRsIGludGVyZmFjZSk6IERlc2NyaWJlIGx0X2RscmVhbGxvYyBub3cKCXRoYXQgaXQgdG9vIGhhcyBiZWNvbWUgcGFydCBvZiB0aGUgZXhwb3J0ZWQgaW50ZXJmYWNlIHRvIGxpYmx0ZGwuCgoyMDAzLTA4LTAxICBQZXRlciBPJ0dvcm1hbiAgPHBldGVyQHBvZ21hLmNvbT4KCgkqIGxpYnRvb2wubTQgKGRhcndpbik6IFVzZSAiLXVuZGVmaW5lZCBkeW5hbWljX2xvb2t1cCIgaWYgdGhlCgl1c2VyIHNldCBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgdG8gMTAuMyBvciBncmVhdGVyLgoJKiBsaWJsdGRsL2x0ZGwuYyAoZHlsZCk6IFNhdmUgdGhlIGVycm9yIGZyb20gdGhlIGZpcnN0IGxvb2t1cAoJdG8gcmVwb3J0IGluIGx0X2RsZXJyb3IoKS4gT3RoZXJ3aXNlIHRoZSBlcnJvciBpcyBhbHdheXMKCSJTeW1ib2wgX2ZvbyBub3QgaW4gL3Vzci9saWIvbGliU3lzdGVtLmR5bGliIi4KCVRoYW5rcyB0byBDaHJpcyBadWJyenlja2kgZm9yIHJlcG9ydGluZyB0aGlzLgoKMjAwMy0wOC0wMSAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGxpYmx0ZGwvbHRkbC5oOiBUd2VhayB0aGUgaGVhZGVyIHRvIHN1cHBvcnQgdmlzdWFsIHN0dWRpby4KCjIwMDMtMDctMzEgIEdyZWcgRWlzZW5oYXVlciAgPGVpc2VuQGNjLmdhdGVjaC5lZHU+CgoJKiBsdG1haW4uaW46IFByb3ZpZGUgYWJzb2x1dGUgcGF0aHMgZm9yIGRsb3BlbiBhbmQgZGxwcmVvcGVuCglmaWxlcyBpbiBnZW5lcmF0aW5nIHVuaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzLgoJKiBtZGVtbzIvbWFpbi5jLCBtZGVtbzIvTWFrZWZpbGUuYW0sIG1kZW1vMi9SRUFETUUsCgltZGVtbzIvY29uZmlndXJlLmFjLCBtZGVtbzIvLmN2c2lnbm9yZSwgbWRlbW8vbWxpYi5jLAoJdGVzdHMvbWRlbW8yLWNvbmYudGVzdCwgdGVzdHMvbWRlbW8yLWV4ZWMudGVzdCwKCXRlc3RzL21kZW1vMi1tYWtlLnRlc3Q6IE5ldyBmaWxlcyBmb3IgdGVzdGluZyBhYm92ZSBmZWF0dXJlLgoJKiBjb25maWd1cmUuYWMsIGJvb3RzdHJhcCwgdGVzdHMvTWFrZWZpbGUuYW06IEFjY29tb2RhdGUgbmV3Cgl0ZXN0IGRpcmVjdG9yeS4KCSogbWRlbW8vTWFrZWZpbGUuYW06IEJ1aWxkIGxpYm1saWIubGEgZm9yIG1kZW1vMiB0ZXN0cy4KCjIwMDMtMDctMzAgIFRvbnkgV3lhdHQgPHd5YXR0YXdAb3B0dXNob21lLmNvbS5hdT4KCgkqIGxpYnRvb2wubTQ6IFJlbW92ZSBwYXJlbnRoZXNlcyBhcm91bmQgZmluaXNoX2V2YWwgcGFydCB3aGljaAoJYnJva2Ugb24gYW1pZ2FvcyBwZGtzaC4KCjIwMDMtMDctMzAgIENocmlzdGlhYW4gV2VsdmFhcnQgIDxjandAZGFuZWVsLmR5bmRucy5vcmc+CgoJKiB0ZXN0cy9kcnlydW4udGVzdDogSWdub3JlIGFueSAndG90YWwnIGxpbmUgZnJvbSAibHMgLWwiIG91dHB1dC4KCjIwMDMtMDctMzAgIEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1BST0dfQ0NfQ19PKTogQ29ycmVjdGx5IHJlbW92ZSBJUklYIEMrKwoJdGVtcGxhdGUgZmlsZXMuCgoyMDAzLTA3LTI0ICBSb2JlcnQgTWlsbGFuICA8cm9iZXJ0bWhAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQ6IE1vcmUgZml4ZXMgZm9yIHRoZSBuZXcgR05VL0ZyZWVCU0QgdHJpcGxldC4KCjIwMDMtMDctMTQgIEJvYiBGcmllc2VuaGFobiAgPGJmcmllc2VuQHNpbXBsZS5kYWxsYXMudHgudXM+CgoJKiBjb25maWcuZ3Vlc3MsIGNvbmZpZy5zdWI6IFN5bmNocm9uaXplZCBmcm9tIGZ0cC5nbnUub3JnIHNpbmNlCglSb2JlcnQgTWlsbGFuJ3MgcGF0Y2ggcmVxdWlyZXMgaXQuCgoyMDAzLTA3LTE0ICBSb2JlcnQgTWlsbGFuICA8emVyYXR1bDJAd2FuYWRvby5lcz4KCgkqIGxpYnRvb2wubTQ6IEZpeGVkIHRvIHVzZSB0aGUgbmV3IEdOVS9GcmVlQlNEIHRyaXBsZXQuCgkqIGx0ZGwubTQ6IEZpeGVkIHRvIHVzZSB0aGUgbmV3IEdOVS9GcmVlQlNEIHRyaXBsZXQuCgkqIGx0bWFpbi5pbjogUmVtb3ZlIEdOVS9GcmVlQlNEIGNhc2VzLCB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KCjIwMDMtMDctMTQgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTE9DSyk6IEFsc28gbWF0Y2ggcG93ZXJwYzY0LSpsaW51eCogaW4KCWFkZGl0aW9uIHRvIHBwYzY0LSpsaW51eCouICBGcm9tIE1hcmt1cyBNZWlzc25lcgoJPG1laXNzbmVyQGJvZ3VzLmV4YW1wbGUuY29tPi4KCjIwMDMtMDctMTQgIERhbGlib3IgVG9waWMgIDxyb2JpbGFkQHlhaG9vLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOKTogRm9yIEFtaWdhT1Mgd2l0aCBwZGtzaCwKCXNldCB0aGUgbWF4aW11bSBjb21tYW5kIGxpbmUgbGVuZ3RoIHRvIDhLIHNpbmNlIG90aGVyd2lzZSB0aGUgdGVzdAoJdGFrZXMgb3ZlciBhbiBob3VyIHRvIHJ1bi4KCjIwMDMtMDYtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPiwgVGltIFdhdWdoICA8dHdhdWdoQHJlZGhhdC5jb20+CgoJKiBsaWJ0b29sLm00OiBSZXBsYWNlIG1pcy11c2VzIG9mIHBhdGggd2l0aCBwYXRobmFtZS4KCShBQ19QUk9HX0xEX0dOVSk6IERvbid0IHF1b3RlICRMRCB3aGVuIHJ1bm5pbmcgaXQuCgkoX0xUX0FDX0xBTkdfQ1hYX0NPTkZJRyk6IFVzZSAtbm9zdGRsaWIgYWxzbyB3aGVuIGxpbmtpbmcgd2l0aCBnKysKCWFuZCBub24tR05VIGxkLgoKMjAwMy0wNi0xMSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9DT01QSUxFUl9PUFRJT04pOiBSZXF1aXJlIExUX0FDX1BST0dfU0VEIHRvCgllbnN1cmUgJFNFRCBpcyBzZXQgYnkgdGhlIHRpbWUgaXQgaXMgdXNlZC4KCgkqIENoYW5nZUxvZzogUmVzdG9yZSBtaXNzaW5nIGVudHJpZXMgZnJvbSAyMDAzLTA0LTIyLgoKCSogTkVXUzogU3ljaHJvbmlzZWQgZnJvbSBicmFuY2gtMS01LgoKMjAwMy0wNi0wMyAgQmVuamFtaW4gUmVlZCAgPHJhbmdlckBiZWZ1bmsuY29tPgoKCSogbHRtYWluLmluOiBzZWFyY2ggbGlicmFyaWVzIGluIHRoZSBvcmRlciBvZiBwcmVmZXJlbmNlLCByYXRoZXIKCXRoYW4gcGlja2luZyAubGEncyBldmVuIGlmIHRoZXkncmUgaW4gYSBsZXNzIHByZWZlcnJlZCBkaXJlY3RvcnkuCgoyMDAzLTA2LTAzICBSb2JlcnQgTWlsbGFuIDxybWhAZGViaWFuLm9yZz4KCgkqIGx0ZGwubTQ6IEFkZCBzdXBwb3J0IGZvciBHTlUvRnJlZUJTRC4KCSogbHRtYWluLmluOiBBZGQgc3VwcG9ydCBmb3IgR05VL0ZyZWVCU0QuCgoyMDAzLTA2LTAzICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbGlidG9vbC5tNDogTm8gbmVlZCB0byB1c2Ugc2VkIHRvIHJlbW92ZSBsZWFkaW5nIGNvbW1hIHdoZW4KCWFwcGVuZGluZyB0byAkdGFnbmFtZXMuCgoyMDAzLTA2LTAzICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogdGVzdHMvZGVmcywgdGVzdHMvZGVtby1jb25mLnRlc3QsIHRlc3RzL2RlbW8tbm9mYXN0LnRlc3QsCgl0ZXN0cy9kZW1vLW5vcGljLnRlc3QsIHRlc3RzL2RlbW8tcGljLnRlc3QsCgl0ZXN0cy9kZW1vLXNoYXJlZC50ZXN0LCB0ZXN0cy9kZW1vLXN0YXRpYy50ZXN0LAoJdGVzdHMvZGVwZGVtby1jb25mLnRlc3QsIHRlc3RzL2RlcGRlbW8tbm9mYXN0LnRlc3QsCgl0ZXN0cy9kZXBkZW1vLXNoYXJlZC50ZXN0LCB0ZXN0cy9kZXBkZW1vLXN0YXRpYy50ZXN0OgoJUGFzcyBidWlsZCBzeXN0ZW0gdHlwZSB0byB0ZXN0cyB0byBzdXBwb3J0IGVudmlyb25tZW50Cgl3aGVyZSBkZWZhdWx0IHN5c3RlbSB0eXBlIG5vdCBlcXVhbCB0byBidWlsZCBzeXN0ZW0gdHlwZQoJKGVnLiA2NC1iaXQgSFAtVVgpLgoKMjAwMy0wNi0wMyAgUGV0ZXIgTydHb3JtYW4gIDxwZXRlckBwb2dtYS5jb20+CgoJKiBsaWJ0b29sLm00IChkYXJ3aW4pOiBSZW1vdmUgY2hlY2tzIGZvciBBcHBsZS1zcGVjaWZpYyBnY2MuCgkqIGxpYmx0ZGwvbHRkbC5jIChIQVZFX01BQ0hfT19EWUxEX0gpOiAjZGVmaW5lCglfX3ByaXZhdGVfZXh0ZXJuX18gZm9yIGZzZiBnY2MuCgkqIGx0bWFpbi5pbiAoZGFyd2luKTogT25seSBhZGQgbmV3IHBhdGhzIHRvIG5ld2xpYl9zZWFyY2hfcGF0aC4KCjIwMDMtMDYtMDMgIE1heCBCb3dzaGVyICA8bWF4YkB1a2YubmV0PgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVIpOiBSZW9yZGVyIGN5Z3dpbidzCglzeXN0ZW0gbGlicmFyeSBzZWFyY2ggcGF0aC4KCjIwMDMtMDYtMDEgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUik6IE1hdGNoIGFsbCBxbngtbnRvCglhcyByZWNlbnQgY29uZmlnLmd1ZXNzIHJldHVybnMgYSBzbGlnaHRseSBkaWZmZXJlbnQgc3RyaW5nLgoJKiBsdG1haW4uaW46IFJlcGxhY2UgdXNlIG9mICJvZCIgd2l0aCB0ci4KCjIwMDMtMDUtMzAgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYmx0ZGwvbHRkbC5jIChhcmd6X2luc2VydCk6IENvcnJlY3RlZCBhbiBvZmYgYnkgb25lIGVycm9yIHdoZW4KCWNoZWNraW5nIHRoYXQgYmVmb3JlIGlzIG5vdCBvdXQgb2YgcmFuZ2UuCgoyMDAzLTA1LTI5ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfaW50X2R5bGRfbGliX2luc3RhbGxfbmFtZSk6IFJlbW92ZWQgdW51c2VkCgl2YXJpYWJsZSBtaDEuCgkoc3lzX2R5bGRfY2xvc2UpOiBSZW1vdmVkIHVudXNlZCB2YXJpYWJsZSBzaXplLgoKMjAwMy0wNS0yMSAgQnJ1bm8gSGFpYmxlICA8YnJ1bm9AY2xpc3Aub3JnPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVIpOiBBZGQgc3VwcG9ydCBmb3IKCUdOVS9GcmVlQlNELgoKMjAwMy0wNC0yMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsaWJ0b29sLm00IChsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCk6IFVzZSBwYXNzX2FsbCBvbiBhbGwKCW1pcHMqLWxpbnV4KiB2YXJpYW50cy4KCjIwMDMtMDQtMjIgIFNhbXVlbCBNZWRlciAgPG1lZGVyQG1jcy5hbmwuZ292PgoKCSogbGlidG9vbC5tNCBTd2l0Y2ggb24gJENDIGFuZCBhZGQgcGF0ZXJucyB0byBjYXNlcy4KCjIwMDMtMDQtMjIgIFBldGVyIE8nR29ybWFuICA8cGV0ZXJAcG9nbWEuY29tPgoKCSogbGlidG9vbC5tNDogTW92ZSB0aGUgQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVIgY2hlY2sKCXRvIGJlIGJlZm9yZSBBQ19MSUJUT09MX1BST0dfTERfSEFSRENPREVfTElCUEFUSCwgYmVjdWFzZSB0aGUKCXZhbHVlIG9mIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCBpcyB1c2VkIGluIHRoZSBIQVJEQ09ERQoJdGVzdCBhbmQgaXMgc2V0IGluIHRoZSBEWU5BTUlDX0xJTktFUiB0ZXN0LgoJKiBsdG1haW4uaW4gW2Rhcndpbl06IFdlIG5ldmVyIG5lZWQgdG8gcmVsaW5rIG9uIGRhcndpbi4KCjIwMDMtMDQtMjIgIFNhbXVlbCBNZWRlciAgPG1lZGVyQG1jcy5hbmwuZ292PgoKCSogbGlidG9vbC5tNDogU3dpdGNoIG9uICRDQyBhbmQgYWRkIHBhdHRlcm5zIHRvIGNhc2VzLgoKMjAwMy0wNC0yMSAgUmljaGFyZCBEYXdlICA8cmljaEBwaGVrZGEuZnJlZXNlcnZlLmNvLnVrPgoKCSogZG9jL2xpYnRvb2wudGV4aTogVXNlIEBpZm5vdHRleCBpbnN0ZWFkIG9mIEBpZmluZm8sCgl0byBhbGxvdyBwcm9kdWN0aW9uIG9mIEhUTUwgZG9jdW1lbnRhdGlvbiB1c2luZyBtYWtlaW5mby4KCjIwMDMtMDQtMTQgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBORVdTOiBVcGRhdGVkLgoJKiBjb25maWd1cmUuYWM6IEJ1bXBlZCB2ZXJzaW9uIHRvIDEuNWEuCgoJR05VIGxpYnRvb2wgMS41IHdhcyByZWxlYXNlZC4KCgkqIGNvbmZpZ3VyZS5hYzogQnVtcGVkIHZlcnNpb24gdG8gMS41LgoJKiBORVdTOiB1cGRhdGVkLgoJKiBSRUFETUUtYWxwaGE6IFVwZGF0ZWQgdXBsb2FkIGluc3RydWN0aW9ucy4KCSogUkVBRE1FOiBDaGFuZ2VkIHR5cG8gaW4gdmVyc2lvbiBkZXNjcmlwdGlvbi4KCSogY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViLCB0ZXhpbmZvLnRleDogIFN5bmNocm9uaXplZCBmcm9tCglmdHAuZ251Lm9yZy4KCgoyMDAzLTA0LTEwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGxpYnRvb2wubTQgKGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kKTogVXNlIHBhc3NfYWxsIG9uIGFsbAoJbWlwcyotbGludXgqIHZhcmlhbnRzLgoKMjAwMy0wNC0wOSAgU2FtdWVsIE1lZGVyICA8bWVkZXJAbWNzLmFubC5nb3Y+CgoJKiBsaWJ0b29sLm00IFN3aXRjaCBvbiAkQ0MgYW5kIGFkZCBwYXRlcm5zIHRvIGNhc2VzLgoKMjAwMy0wNC0wOSAgUGV0ZXIgTydHb3JtYW4gIDxwZXRlckBwb2dtYS5jb20+CgoJKiBsaWJ0b29sLm00OiBNb3ZlIHRoZSBBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUiBjaGVjawoJdG8gYmUgYmVmb3JlIEFDX0xJQlRPT0xfUFJPR19MRF9IQVJEQ09ERV9MSUJQQVRILCBiZWN1YXNlIHRoZQoJdmFsdWUgb2Ygc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIGlzIHVzZWQgaW4gdGhlIEhBUkRDT0RFCgl0ZXN0IGFuZCBpcyBzZXQgaW4gdGhlIERZTkFNSUNfTElOS0VSIHRlc3QuCgkqIGx0bWFpbi5pbihkYXJ3aW4pOiBXZSBuZXZlciBuZWVkIHRvIHJlbGluayBvbiBkYXJ3aW4uCgoyMDAzLTA0LTA5ICBTYW11ZWwgTWVkZXIgIDxtZWRlckBtY3MuYW5sLmdvdj4KCgkqIGxpYnRvb2wubTQgU3dpdGNoIG9uIGBiYXNlbmFtZSAkQ0NgIG5vdCAkQ0MKCjIwMDMtMDQtMDUgIFBldGVyIE8nR29ybWFuICA8cGV0ZXJAcG9nbWEuY29tPgoKCSogbGlidG9vbC5tNDogaWYgWlNIX1ZFUlNJT04gaXMgc2V0IHRoZW4gc2V0b3B0IE5PX0dMT0JfU1VCU1Qgc28KCWxpYnRvb2wgd29ya3MuIFJlbW92ZSB6c2ggZWNobyB0ZXN0IGNvZGUsIGRvbid0IGJvdGhlciBjaGVja2luZwoJZm9yIHpzaCBhbnltb3JlIGluIHRoZSBkYXJ3aW4gYXJjaGl2ZV9leHBzeW1fY21kcy4KCjIwMDMtMDQtMDUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPHNub3d3b2xmQG9uZTJvbmUtbmV0d29ya3MuY29tPgoKCSogbGlidG9vbC5tNDogU3dpdGNoIG9uICRDQyBub3QgJGNjX2Jhc2VuYW1lLgoKMjAwMy0wNC0wMiAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIHRlc3RzL2RlZnM6IFF1b3RlICRESkdQUCB0byBwcmV2ZW50IHByb2JsZW1zIHdpdGggc29tZSBzaGVsbHMuCglQb2ludGVkIG91dCBieSBBbGJlcnQgQ2hpbiA8bGlidG9vbEB0aGV3cml0dGVud29yZC5jb20+CgoyMDAzLTA0LTAxICBQZXRlciBPJ0dvcm1hbiAgPHBldGVyQHBvZ21hLmNvbT4KCgkqIGxpYnRvb2wubTQ6IEZpeCB0aGUgZWNobyB0ZXN0IHdoaWNoIEkgYnJva2UgZWFybGllci4KCSogbHRtYWluLmluOiBNYWtlIERFU1RESVIgd29yayBvbiBkYXJ3aW4sIGRvbid0IHVzZSBvdG9vbC4KCjIwMDMtMDMtMzEgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIGx0bWFpbi5pbjogTmV3IGZsYWcgLXZlcnNpb24tbnVtYmVyIHRvIGJlIHVzZWQgZm9yIG1haW50YWluaW5nCgljb21wYXRhYmlsaXR5IHdpdGggYSBwcmV2aW91c2x5IG5vbi1MaWJ0b29sIHZlcnNpb25pbmcgc2NoZW1lLgoJKiBkb2MvbGlidG9vbC50ZXhpOiBEb2N1bWVudCBpdC4KCjIwMDMtMDMtMzEgIE5hb2Z1bWkgWWFzdWZ1a3UgIDxuYW9mdW1pQHlhc3VmdWt1Lm5ldD4KCgkqIGx0bWFpbi5pbiAod2luMzJfbGliaWQpOiBGaXhlZCBzZWQgZXhwcmVzc2lvbiBlcnJvciBpbgoJd2luMzJfbm1yZXMgZXZhbHVhdGlvbi4KCjIwMDMtMDMtMzEgIEFsYmVydCBDaGluICA8bGlidG9vbEB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsdG1haW4uaW46IERvbid0IHBhc3MgLVIgZmxhZ3MgZm91bmQgaW4gYSAubGEncyBkZXBlbmRlbmN5X2xpYnMKCXZhcmlhYmxlIGRpcmVjdGx5IGRvd24gdG8gdGhlIGxpbmtlci4KCVJlcG9ydGVkIGJ5IFRpbSBNb29uZXkgPG1vb25leUBkb2diZXJ0LmNjLm5kc3Uubm9kYWsuZWR1Pi4KCjIwMDMtMDMtMjggIFJpY2hhcmQgRGF3ZSAgPHJpY2hAcGhla2RhLmZyZWVzZXJ2ZS5jby51az4KCgkqIE1ha2VmaWxlLmFtOiBEZWZpbmUgQ09ORl9TVUJESVJTLgoJKiB0ZXN0cy9kZWZzOiBTZXQgQ09ORklHX1NJVEUgdG8gL25vbmV4aXN0ZW50LCBleGNlcHQgb24gREpHUFAsCgl3aGljaCByZXF1aXJlcyBpdHMgY29uZmlnLnNpdGUsIHRvIHdvcmsgY29ycmVjdGx5LgoJKiB0ZXN0cy9jZGVtby1jb25mLnRlc3QsIHRlc3RzL2NkZW1vLXNoYXJlZC50ZXN0LAoJdGVzdHMvY2RlbW8tc3RhdGljLnRlc3QsIHRlc3RzL2RlbW8tY29uZi50ZXN0LAoJdGVzdHMvZGVtby1ub2Zhc3QudGVzdCwgdGVzdHMvZGVtby1ub3BpYy50ZXN0LAoJdGVzdHMvZGVtby1waWMudGVzdCwgdGVzdHMvZGVtby1zaGFyZWQudGVzdCwKCXRlc3RzL2RlbW8tc3RhdGljLnRlc3QsIHRlc3RzL2RlcGRlbW8tY29uZi50ZXN0LAoJdGVzdHMvZGVwZGVtby1ub2Zhc3QudGVzdCwgdGVzdHMvZGVwZGVtby1zaGFyZWQudGVzdCwKCXRlc3RzL2RlcGRlbW8tc3RhdGljLnRlc3QsIHRlc3RzL2Y3N2RlbW8tY29uZi50ZXN0LAoJdGVzdHMvZjc3ZGVtby1zaGFyZWQudGVzdCwgdGVzdHMvZjc3ZGVtby1zdGF0aWMudGVzdCwKCXRlc3RzL21kZW1vLWNvbmYudGVzdCwgdGVzdHMvbWRlbW8tc2hhcmVkLnRlc3QsCgl0ZXN0cy9tZGVtby1zdGF0aWMudGVzdCwgdGVzdHMvcGRlbW8tY29uZi50ZXN0LAoJdGVzdHMvdGFnZGVtby1jb25mLnRlc3QsIHRlc3RzL3RhZ2RlbW8tc2hhcmVkLnRlc3QsCgl0ZXN0cy90YWdkZW1vLXN0YXRpYy50ZXN0OiBEb24ndCBzZXQgQ09ORklHX1NJVEUsIG5vdyB0aGF0Cgl0ZXN0cy9kZWZzIHNldHMgaXQuCgkqIHRlc3RzL2NkZW1vLWV4ZWMudGVzdCwgdGVzdHMvZGVtby1leGVjLnRlc3QsCgl0ZXN0cy9kZW1vLWluc3QudGVzdCwgdGVzdHMvZGVwZGVtby1leGVjLnRlc3QsCgl0ZXN0cy9kZXBkZW1vLWluc3QudGVzdCwgdGVzdHMvZjc3ZGVtby1leGVjLnRlc3QsCgl0ZXN0cy9tZGVtby1leGVjLnRlc3QsIHRlc3RzL21kZW1vLWluc3QudGVzdCwKCXRlc3RzL3BkZW1vLWV4ZWMudGVzdCwgdGVzdHMvcGRlbW8taW5zdC50ZXN0LAoJdGVzdHMvdGFnZGVtby1leGVjLnRlc3Q6IFdoZW4gY2hlY2tpbmcgZm9yIHRoZSBleGlzdGVuY2UKCW9mIGV4ZWN1dGFibGVzLCB1c2UgdGhlIGV4ZWN1dGFibGUgZmlsZSBleHRlbnNpb24gZnJvbSAkRVhFRVhULgoKMjAwMy0wMy0yOCAgUGV0ZXIgTydHb3JtYW4gIDxwZXRlckBwb2dtYS5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoZHlsZCk6IFJlbW92ZSBzb21lIGRlYnVnIHByaW50ZidzLCBmaXggYSBidWcuCgkqIGx0bWFpbi5pbiAoZGFyd2luKTogT25seSBsaW5rIGFnYWluc3Qgc2hhcmVkIGxpYnJhcmllcyB3aGVuIGRvaW5nCglsaW5rX2FsbF9kZXBsaWJzLgoKMjAwMy0wMy0yNSAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGJvb3RzdHJhcDogQWRkIGY3N2RlbW8gdG8gdGhlIGRpcmVjdG9yaWVzIHRoYXQgQVVUT0hFQURFUgoJaXMgcnVuIGluLgoKMjAwMy0wMy0yMSAgV2VzbGV5IFcuIFRlcnBzdHJhIDx0ZXJwc3RyYUBpdG8udHUtZGFybXN0YWR0LmRlPgoKCSogbHRtYWluLmluOiBEb24ndCBhY2N1bXVsYXRlIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiBpbiBjbGVhbiBtb2RlLgoJSW5jbHVkZSBwcm9wZXJseSBwYXRoZWQgd3JhcHBlciBzY3JpcHQuCgoyMDAzLTAzLTIxICBQZXRlciBPJ0dvcm1hbiAgPHBldGVyQHBvZ21hLmNvbT4KCgkqIFJFQURNRTogUmVtb3ZlICJJbXBvcnRhbnQiIGluZm9ybWF0aW9uIGFib3V0IHBhdGNoaW5nIGF1dG9tYWtlLgoJKiBjb25maWd1cmUuYWM6IEZpeCBtaXNhcHBsaWVkIHBhdGNoIGluIGxhc3QgY29tbWl0CgkqIGxpYnRvb2wubTQgKGRhcndpbik6IENoZWNrIGNvbXBpbGVyIGlzIGFwcGxlIGdjYywgYWRkIC1zaW5nbGVfbW9kdWxlCglzdXBwb3J0IHNvIHRoYXQgZHlsb2FkaW5nIGMrKyBzaGFyZWQgbGlicmFyaWVzIHdpbGwgd29yay4KCSogbGlidG9vbC5tNCAoX0xUX0FDX1RBR0NPTkZJRyk6IEFkZCB0ZXN0IC1uIHRvIHRoZSB0ZXN0cyBzbyB0aGF0CglpdCB3aWxsIHdvcmsgb3V0c2lkZSBvZiBsaWJ0b29sLgoJKiBkb2MvUExBVEZPUk1TOiBBZGQgZGFyd2luCgkqIGY3N2RlbW8vY29uZmlndXJlLmFjOiBBZGQgY29uZmlnLmggd2hpY2ggd2FzIG1pc2FwcGxpZWQgcHJldmlvdXNseS4KCjIwMDMtMDMtMjAgIFBldGVyIE8nR29ybWFuICA8cGV0ZXJAcG9nbWEuY29tPgoKCSogbHRtYWluLmluOiBBbHdheXMgdXNlICRlY2hvIG5vdCBlY2hvIGZvciBjb25zaXN0ZW5jeS4KCUNoYW5nZXMgZm9yIGRhcndpbiBidWlsZGluZy4gV2FybiBpZiBsaW5raW5nIGFnYWluc3QgbGlicyBsaW5rZWQKCXdpdGggLW1vZHVsZS4gVXNlIG1vZHVsZV9jbWRzIGlmIGF2YWlsYWJsZSBhbmQgYnVpbGRpbmcgYSBtb2R1bGUsCgltb3ZlIGNvbnZlbmllbmNlIGRvdWJsZSBsaWIgY2hlY2ssCgkqIGxpYmx0ZGwvbHRkbC5jOiBsdGRsIHN1cHBvcnQgZm9yIGRhcndpbiAoZmlyc3QgYmx1c2gpCgkqIGxpYmx0ZGwvUkVBRE1FOiBub3RlIHRoYXQgZGFyd2luIGlzIHN1cHBvcnRlZAoJKiBsdGRsLm00OiBDaGFuZ2VzIGZvciBkYXJ3aW4sIGFuZCBmb3IgbmV3IHNocmV4dAoJKiBsaWJ0b29sLm00OiBDaGFuZ2VkIHRoZSB3YXkgZGFyd2luIGJ1aWxkcyBzdHVmZiAobWFrZSBjaGVjayBwYXNzZXMpCglhZGRlZCBtb2R1bGVfY21kcywgbW9kdWxlX2V4cHN5bV9jbWRzIGFuZCBoYXJkY29kZV9hdXRvbWF0aWMgYW5kIHB1dAoJdGhlbSBpbiB0aGUgbGlidG9vbCBzY3JpcHQuIGNoZWNrIGZvciB6c2gncyByZW1vdmFsIG9mIGVzY2FwZXMuIEFsbG93CglsaWJyYXJpZXMgdG8gYmUgc3RyaXBwZWQgb24gZGFyd2luLgoJKiBUT0RPOiBSZW1vdmUgdGhlIHRvZG8gYWJvdXQgenNoJ3MgcmVtb3ZhbCBvZiBleGNhcGVzLiBub3RlIHRoYXQgenNoCgllY2hvIHdvcmtzIHBlcmZlY3RseSB3ZWxsLCBldmFsIGlzIHNjcmV3ZWQgdXAuIFNlZW1zIHRvIGJlIGZpeGVkIGluCglsYXRlc3QgenNoLgoJKiBUSEFOS1M6IGFkZGVkIHNlbGYgOikKCSogZjc3ZGVtby9jb25maWd1cmUuYWM6IFVzZSBjb25maWcuaCBvciBpdCBkb2Vzbid0IHdvcmsuCgoyMDAzLTAzLTE5ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogbGlidG9vbC5tNCAoX0xUX0FDX1RBR0NPTkZJRyk6IEFkZCB0ZXN0IGFyb3VuZCB0aGUgbWFjcm8gdGhhdAoJYWRkcyB0YWdzIHRvIHRoZSBsaWJ0b29sIHNjcmlwdCBzbyB0aGF0IHRoZXkgd29uJ3QgcnVuIHdoZW4gbm90CgluZWVkZWQuCgkqIGNvbmZpZ3VyZS5hYzogU2V0IEY3NyB0byBubyB3aGVuIG5vIEZvcnRyYW4gY29tcGlsZXIgaXMgZm91bmQuCgoyMDAzLTAzLTE2ICBDaGFybGVzIFdpbHNvbiAgPGN3aWxzb25AZWNlLmdhdGVjaC5lZHU+CgoJKiBsdG1haW4uaW4gKHdpbjMyX2xpYmlkKTogdXNlICRTRUQsIG5vdCBoZWFkLgoKMjAwMy0wMy0wMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsaWJ0b29sLm00IChBQ19QUk9HX0xEKTogVXNlICRDQyBpbnN0ZWFkIG9mIEdDQy4KCShfTFRfQUNfTEFOR19DWFhfQ09ORklHKTogUHJlc2VydmUgdmFyaWFibGVzIHVzZWQgYnkgQUNfUFJPR19MRCwKCWFuZCByZXNldCB0aGVtIGZvciBhIEMrKyBlbnZpcm9ubWVudC4gIFVzZSB0aGUgd2l0aF9nbnVfbGQgc2V0dGluZwoJZnJvbSBBQ19QUk9HX0xELgoKMjAwMy0wMi0yOCAgUmFscGggU2NobGVpY2hlciAgPHJzQG51bmF0YWsuYWxsZ2FldS5vcmc+CgoJKiBsdG1haW4uaW46IE9ubHkgYXBwZW5kIGEgZG90IHRvIHRoZSB3cmFwcGVyIHNjcmlwdCB3aGVuCglidWlsZGluZyBvbiBjeWd3aW4vTVNZUyAoY2hlY2sgZm9yICRidWlsZCwgbm90ICRob3N0KS4KCjIwMDMtMDItMjcgIFNhbXVlbCBNZWRlciAgPG1lZGVyQG1jcy5hbmwuZ292PgoKCSogbGlidG9vbC5tNCAoaWE2NCk6IEFkZCBzdXBwb3J0IGZvciBJbnRlbCBjb21waWxlciAoZWNjKSBvbiBJQTY0CglMaW51eC4KCjIwMDMtMDItMjcgIEJlbmphbWluIFJlZWQgPHJhbmdlckBiZWZ1bmsuY29tPgoKCSogVEhBTktTOiBBZGRlZCBwZW9wbGUgd2hvIGhhdmUgc3VibWl0dGVkIDMgb3IgbW9yZSBwYXRjaGVzCgl0byBsaWJ0b29sIHRvIHRoZSBUSEFOS1MgZmlsZS4KCSogUkVBRE1FOiBBZGRlZCBub3RlcyBhYm91dCB0aGUgRGFyd2luIChNYWNPU1gpIHN1cHBvcnQuCgoyMDAzLTAyLTI1ICBCb2IgTWNFbHJhdGggIDxib2IrbGlidG9vbEBtY2VscmF0aC5vcmc+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfUElDKTogQWRkIHN1cHBvcnQgZm9yCgl0aGUgQ29tcGFxIEMgY29tcGlsZXIgZm9yIEFscGhhIExpbnV4LgoKMjAwMy0wMi0yNSAgQmVuamFtaW4gUmVlZCAgPHJhbmdlckBiZWZ1bmsuY29tPgoKCSogbGlidG9vbC5tNCAoZGFyd2luKTogRGlzYWJsZSBoYXJkY29kaW5nIGxpYnJhcnkgcGF0aHMgdG8KCW1ha2UgcmVsaW5raW5nIHVubmVjZXNzYXJ5LgoKMjAwMy0wMi0yNCAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGxpYmx0ZGwvY29uZmlndXJlLmFjOiBVc2UgQUNfQ09ORklHX0FVWF9ESVIoWy5dKSB0byBwbGFjZQoJYXV4aWxhcnkgZmlsZXMgaW4gdGhlIGxpYmx0ZGwgZGlyZWN0b3J5LgoJKiBNYWtlZmlsZS5hbTogQWRkIHRvIHRoZSBsdG1haW4uc2ggcnVsZSB0byBjb3B5IGl0IGludG8gdGhlCglsaWJsdGRsIHN1YmRpcmVjdG9yeS4KCSogYm9vdHN0cmFwOiBFeHBsaWNpdGx5IGhhbmRsZSBsdG1haW4uc2ggaW4gbGlibHRkbCwgYW5kIHBhc3MKCS0tY29weSB0byBhdXRvbWFrZS4KCjIwMDMtMDItMjQgIFJhbHBoIFNjaGxlaWNoZXIgIDxyc0BudW5hdGFrLmFsbGdhZXUub3JnPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9TRVRVUCk6IENoZWNrIGZvciBhci4KCjIwMDMtMDItMjMgIFBldGVyIE8nR29ybWFuICA8cGV0ZXJAcG9nbWEuY29tPgoKCSogbGlidG9vbC5tNCAoZGFyd2luKTogUmV2YW1wIGRhcndpbiBwbGF0Zm9ybSBzdXBwb3J0LgoJKiBsdGRsLm00IChkYXJ3aW4pOiBTdXBwb3J0IGRsY29tcGF0IGlmIGZvdW5kLgoJKiBsdG1haW4uaW46IE1ha2Ugc3VyZSByYW5saWIgaXMgcnVuIGlmIG5lZWRlZCB3aGVuIHBpZWNld2lzZQoJbGlua2luZy4KCjIwMDMtMDItMjMgIEFsZXhhbmRyZSBEdXJldC1MdXR6ICA8YWRsQGdudS5vcmc+CgoJKiBsdG1haW4uaW4gKC0taGVscCk6IFNob3cgbWFpbGluZy1hZGRyZXNzIGZvciBidWcgcmVwb3J0cy4KCSgtLXZlcnNpb24pOiBNZW50aW9uIG9ubHkgdGhlIG1vc3QgcmVjZW50IGNvcHlyaWdodCB5ZWFyLgoJKiBsaWJ0b29saXplLmluICgtLWhlbHApOiBTaG93IG1haWxpbmctYWRkcmVzcyBmb3IgYnVnIHJlcG9ydHMuCgkoLS12ZXJzaW9uKTogTWVudGlvbiBvbmx5IHRoZSBtb3N0IHJlY2VudCBjb3B5cmlnaHQgeWVhci4KCjIwMDMtMDItMTkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbGlidG9vbC5tNCAoQUNfUFJPR19MRCk6IFVzZSAkQ0MgaW5zdGVhZCBvZiBHQ0MuCgkoX0xUX0FDX0xBTkdfQ1hYX0NPTkZJRyk6IFByZXNlcnZlIHZhcmlhYmxlcyB1c2VkIGJ5IEFDX1BST0dfTEQsCglhbmQgcmVzZXQgdGhlbSBmb3IgYSBDKysgZW52aXJvbm1lbnQuICBVc2UgdGhlIHdpdGhfZ251X2xkIHNldHRpbmcKCWZyb20gQUNfUFJPR19MRC4KCgkqIGxpYnRvb2wubTQ6IFJlcGxhY2UgJGxpbmtlcl9mbGFncyB3aXRoICRjb21waWxlcl9mbGFncyB3aGVyZXZlcgoJaXQgaXMgdXNlZCBhcyBhcmd1bWVudCB0byAkQ0MuCgoJKiBsaWJ0b29sLm00OiBVc2UgbGludXggdmVyc2lvbl90eXBlIG9uIElSSVggd2l0aCBHTlUgbGQuCglQcmVmaXggLXNvbmFtZSwgLXNldF92ZXJzaW9uIGFuZCB0aGVpciBhcmd1bWVudHMgd2l0aCAke3dsfS4gIEFkZAoJLW1lbGYqIGxpbmtlciBzY3JpcHRzIHRvIExELCBhbmQgdXNlIHRoZW0gdG8gZGV0ZXJtaW5lIGxpYnN1ZmYsCglzaGxpYnN1ZmYgYW5kIGxpYm1hZ2ljLgoKMjAwMy0wMi0xNyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8c25vd3dvbGZAb25lMm9uZS1uZXR3b3Jrcy5jb20+CgoJKiBsaWJ0b29sLm00OiBJbnRlbCBpY2MgZml4dXBzIGZvciB2ZXJzaW9uIDcuMC4KCjIwMDMtMDItMTcgIFJhbHBoIFNjaGxlaWNoZXIgIDxyc0BudW5hdGFrLmFsbGdhZXUub3JnPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVIpOiBQcmVwZW5kIGEgZG90IHRvCgl0aGUgdmFsdWUgb2YgdGhlIHNocmV4dCAoYWthIHNoYXJlZF9leHQpIHZhcmlhYmxlIGFuZCBkZWxldGUgaXQKCWZyb20gdGhlIGxpYnJhcnlfbmFtZXNfc3BlYyBhbmQgc29uYW1lX3NwZWMgZGVmaW5pdGlvbnMuICBUaGF0Cgl3YXkgdGhlIHVzZXIgY2FuIG9taXQgdGhlIHNoYXJlZCBsaWJyYXJ5IHN1ZmZpeCBieSBzZXR0aW5nIGl0Cgl0byB0aGUgZW1wdHkgc3RyaW5nLgoJKEFDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHKTogU3RyZW5ndGhlbiByZW5hbWluZyBjb21tYW5kcyBmb3IKCXRoZSBLQ0MgY29tcGlsZXIuCgkqIGRvYy9saWJ0b29sLnRleGkgKExpbmsgbW9kZSk6IFVwZGF0ZSB0aGUgbWFudWFsLgoKMjAwMy0wMi0xNyAgQ2hhcmxlcyBXaWxzb24gIDxjd2lsc29uQGVjZS5nYXRlY2guZWR1PgoKCSogbHRtYWluLmluICh3aW4zMl9saWJpZCk6IFJld3JpdHRlbiB0byBpbXByb3ZlIHNwZWVkLgoKMjAwMy0wMi0xMSAgUmljaGFyZCBEYXdlICA8cmljaEBwaGVrZGEuZnJlZXNlcnZlLmNvLnVrPgoKCSogbGlidG9vbGl6ZS5pbjogVXNlIHRoZSBwcm9ncmFtIGZvdW5kIGJ5IEFDX1BST0dfTE5fUwoJdG8gY3JlYXRlIHN5bWxpbmtzLgoKMjAwMy0wMi0wOCAgSmFuIEtyYXRvY2h2aWwgIDxwcm9qZWN0LWxpYnRvb2xAamFua3JhdG9jaHZpbC5uZXQ+CgoJKiBsdG1haW4uaW46IEhhbmRsZSBkdXBsaWNhdGUgb2JqZWN0IGZpbGUgbmFtZXMgd2hlbiBwZXJmb3JtaW5nCglwaWVjZXdpc2UgYXJjaGl2ZSBsaW5raW5nIGJ5IHJlbmFtaW5nIG9iamVjdCBmaWxlcyB3aGVuIG5lZWRlZC4KCjIwMDMtMDItMDUgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChBQ19DSEVDS19MSUJNKTogU2VhcmNoIGZvciBhIHJlYWwgc3ltYm9sIGluCgl0aGUgbWF0aCBsaWJyYXJ5IHJhdGhlciB0aGFuICdtYWluJywgaXQgY2F1c2VzIHByb2JsZW1zIGZvcgoJQysrIGNvbXBpbGVycyB3aXRoIGNlcnRhaW4gQXV0byogdG9vbHMuCgkoQUNfTElCTFRETF9JTlNUQUxMQUJMRSk6IGRpdHRvLgoKMjAwMy0wMi0wNSAgQ2hyaXN0aWFuIENvcm5lbHNzZW4gIDxjY29ybkBjcy50dS1iZXJsaW4uZGU+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTEFOR19DWFhfQ09ORklHKQoJKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpOiBSZXdyaXRlIHByaW50ZiBjb21tYW5kcyBzbwoJdGhhdCB0aGUgZm9ybWF0IHN0cmluZyBjYW5ub3QgYmUgbWlzdGFrZW4gYXMgYW4gb3B0aW9uLgoJUmVwb3J0ZWQgYnkgTWFydGluIE1PS1JFSlMuCgoyMDAzLTAyLTA1ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogbGlidG9vbC5tNDogTW9kaWZ5IHRoZSBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgdG8gYWxsb3cKCWZvciBlaXRoZXIgbmF0aXZlIHNlZCBvciBHTlUgc2VkIHRvIGJlIHVzZWQuCgoyMDAzLTAyLTA0ICBOaWNrIEh1ZHNvbiAgPHNrcmxsQG5ldGJzZC5vcmc+CgoJKiBsaWJ0b29sLm00OiBkb24ndCB1c2UgLW5vZGVmYXVsdGxpYnMgaW4gYXJjaGl2ZV9jb21tYW5kcwoJb3IgYXJjaGl2ZV9leHBzeW1fY29tbWFuZHMgb24gTmV0QlNELgoKMjAwMy0wMi0wNCAgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYnRvb2wubTQ6IENoYW5nZSBzZXR0aW5nIG9mIGFyY2hpdmVfY21kc19uZWVkX2xjCglzbyB0aGF0IGl0IGRvZXNuJ3Qgb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBzZXR0aW5nLgoKMjAwMy0wMS0yOCAgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYnRvb2wubTQ6IEFsbG93IGNvbXBpbGVyIHZhcmlhYmxlLCBDQywgQ1hYLCBldGMuIHRvCgliZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4gT3JpZ2luYWwgdmVyc2lvbiBzdHJpcHBlZAoJYXJndW1lbnRzIGZvciBDQy4KCjIwMDMtMDEtMjggIENoYXJsZXMgV2lsc29uICA8Y3dpbHNvbkBlY2UuZ2F0ZWNoLmVkdT4KCgkqIGx0bWFpbi5pbjogYWRkIGNvZGUgZm9yIGEgYmluYXJ5IHdyYXBwZXIKCXRvIHVzZSB3aXRoIHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG9uIGN5Z3dpbi9taW5ndy4KCU1ha2Ugc3VyZSB0aGF0IC0tbW9kZT1jbGVhbiBnZXRzIHNoZWxsIHdyYXBwZXIgYW5kCgliaW5hcnkgd3JhcHBlci4gIFdoZW4gc291cmNpbmcgdGhlIHNoZWxsIHdyYXBwZXIsCglpbnZva2UgdXNpbmcgYSB0ZXJtaW5hbCBgLicgb24gY3lnd2luL21pbmd3IHRvCglhdm9pZCB0aGUgYXV0b21hdGljIGFwcGVuZC0uZXhlIGJlaGF2aW9yLgoKMjAwMy0wMS0yOCAgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYnRvb2wubTQ6IEhhcmRjb2RlIGxpYnJhcnkgcGF0aHMgaW50byBsaWJyYXJpZXMgb24gSVJJWC4KCjIwMDMtMDEtMTggIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfUElDKTogRG9uJ3QgYWRkIC1EUElDCglmb3IgbGFuZ3VhZ2VzIG90aGVyIHRoYW4gQyBhbmQgQysrLgoKMjAwMy0wMS0xMyAgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYnRvb2wubTQsIGx0bWFpbi5pbjogQWRkIHN1cHBvcnQgZm9yIGhwcGEqNjQqIGJhc2VkIG9uCglhIHBhdGNoIGJ5IFJvc3MgQWxleGFuZGVyIDxyb3NzLmFsZXhhbmRlckB1ay5uZWNldXIuY29tPi4KCUNyZWRpdCB0byBSb3NzISBVc2UgK2IgdG8gaGFyZGNvZGUgbGlicmFyeSBydW50aW1lIHBhdGguCglBZGQgbmV3IHZhcmlhYmxlLCAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgdGhhdAoJaXMgZXF1aXZhbGVudCB0byAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBidXQgaXMgdXNlZAoJd2hlbiBsZCBpcyB1c2VkIGZvciBsaW5raW5nLiBUaGlzIHdvcmtzIGFyb3VuZCBoYXZpbmcgdG8KCXNldCB3bD0nJy4KCjIwMDMtMDEtMTIgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUik6IFJldmVydCBhbgoJYWNjaWRlbnRhbCByZWFycmFuZ2luZyBvZiBkeWxpYiBhbmQgc28gZm9yIGRhcndpbi4KCjIwMDMtMDEtMTAgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUik6IE1vZGlmeSB0aGUKCSItc2hyZXh0IiBvcHRpb24gc28gdGhhdCBpcyB3b3JrcyBwcm9wZXJseSB1bmRlciBEYXJ3aW4uCglNb2RpZnkgdGhlIHByb2Nlc3Npbmcgb2YgJ2djYyAtcHJpbnQtc2VhcmNoLWRpcnMnIHVuZGVyCglEYXJ3aW4gdG8gbWFrZSBpdCBiZWhhdmUgbGlrZSBHTlUgZ2NjIGRvZXMuCgkoQUNfTElCVE9PTF9DT05GSUcpOiBTaW5nbGUgcXVvdGUgJHNocmV4dC4KCSogbHRpbWFpbi5pbjogRXhwYW5kIHNoYXJlZF9leHQganVzdCBiZWZvcmUgaXQgaXMgdXNlZAoJc28gdGhhdCBpdCBjYW4gYmUgY29uZGl0aW9uYWwgb24gdGhlIHZhbHVlIG9mICRtb2R1bGUuCgoyMDAyLTEyLTMxICBCZW5qYW1pbiBSZWVkICA8cmFuZ2VyQGJlZnVuay5jb20+CgoJKiBsdG1haW4uaW4gW2Rhcndpbl06IGRpc2FibGUgbGF6eSBsaW5raW5nLCBuZWVkZWQKCXRvIHJlc29sdmUgQysrIGdsb2JhbCBjb25zdHJ1Y3RvciBpc3N1ZXMKCjIwMDItMTItMzAgIFJhbHBoIFNjaGxlaWNoZXIgIDxyc0BudW5hdGFrLmFsbGdhZXUub3JnPgoKCVJld29yayBieSBSb2JlcnQgQm9laG5lIDxyYm9laG5lQGdudS5vcmc+CgkqIGx0bWFpbi5pbjogTmV3IGxpbmsgb3B0aW9uIC1zaHJleHQuCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfQ09ORklHKTogTmV3IGxpYnRvb2wgdmFyaWFibGUgc2hyZXh0LgoJKEFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKTogUmVwbGFjZSBhbGwgaGFyZCBjb2RlZCBzaGFyZWQKCWxpYnJhcnkgZmlsZSBuYW1lIGV4dGVuc2lvbnMgaW4gbGlicmFyeV9uYW1lc19zcGVjIGFuZAoJc29uYW1lX3NwZWMgd2l0aCAkc2hyZXh0LgoJKiBkb2MvbGlidG9vbC50ZXhpIChMaW5rIG1vZGUpOiBEb2N1bWVudCBpdC4KCjIwMDItMTItMzAgIENoYXJsZXMgV2lsc29uICA8Y3dpbHNvbkBlY2UuZ2F0ZWNoLmVkdT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHKTogbW9kaWZ5CgkkYXJjaGl2ZV9leHBzeW1fY21kcyB0byByZXN0b3JlIHN1cHBvcnQgZm9yIHVzaW5nCgkuZGVmIGZpbGVzIHZpYSB0aGUgLWV4cG9ydC1zeW1ib2xzIHN3aXRjaC4KCShBQ19MSUJUT09MX1BST0dfTERfU0hMSUJTKFtUQUdOQU1FXSk6IGluIGJvdGggdGhlIFtDWFhdCglicmFuY2ggYW5kIHRoZSBkZWZhdWx0IGJyYW5jaCwgaW1wcm92ZSAkZXhwb3J0X3N5bWJvbHNfY21kcwoJc28gdGhhdCBEQVRBIHN5bWJvbHMgYXJlIHByb3Blcmx5ICBsYWJlbGxlZC4gIEluIHRoZSBkZWZhdWx0CglicmFuY2gsIGR1cGxpY2F0ZSB0aGUgX0NYWF9DT05GSUcgY29ycmVjdGlvbiBmb3IKCSRhcmNoaXZlX2V4cHN5bV9jbWRzLgoKMjAwMi0xMi0zMCAgQ2hhcmxlcyBXaWxzb24gIDxjd2lsc29uQGVjZS5nYXRlY2guZWR1PgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9SQyk6IEFDX1BST0dfUkMgZG9lc24ndCBleGlzdCAtLQoJYnV0IHdlIGRvIEFDX0RFRlVOIHNvbWV0aGluZyBjYWxsZWQgTFRfQUNfUFJPR19SQy4KCUNhbGwgdGhhdCBpbnN0ZWFkLgoKMjAwMi0xMi0zMCAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHKTogQ29weSB0aGUgc2VjdGlvbgoJZm9yIERhcndpbiBmcm9tIEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMgc28gdGhhdCB0aGUgQ1hYCgl0YWcgZG9lc24ndCB1c2UgdGhlIGcrKyBkZWZhdWx0cyBmb3IgdGhlIE9TIFggY29tcGlsZXIuCgoyMDAyLTEyLTMwICBBbGJlcnQgQ2hpbi1BLVlvdW5nIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsaWJ0b29sLm00OiBTeW5jIG1ldGhvZHMgdXNlZCB0byBkZXRlY3QgR05VIGxkLgoKMjAwMi0xMi0yMCAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfQ09NUElMRVJfT1BUSU9OLAoJQUNfTElCVE9PTF9QUk9HX0NDX0NfTyk6IERvIG5vdCBlc2NhcGUgfSBvciA/IGluIHNlZCBhcmd1bWVudC4KCjIwMDItMTItMTkgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsdG1haW4uaW46IFVzZSB0aGUgc2VkIHByb2dyYW0gZm91bmQgYnkgTFRfQUNfUFJPR19TRUQKCXNvIHRoYXQgcmVsaW5rIGNvbW1hbmRzIGRvbid0IGdldCB0cnVuY2F0ZWQuCgoyMDAyLTEyLTE4ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogbGlidG9vbC5tNDogTW92ZSBBQ19SRVFVSVJFKFtMVF9BQ19QUk9HX1NFRF0pIHRvIEFDX1BST0dfTEQKCXNvIGl0IGlzIGludm9rZWQgZWFybGllci4KCjIwMDItMTItMTEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPHNub3d3b2xmQG9uZTJvbmUtbmV0d29ya3MuY29tPgoKCSogbGlidG9vbC5tNDogQWRkIHN1cHBvcnQgZm9yIEludGVsIGljYyBjb21waWxlciBmb3IgTGludXguCgoyMDAyLTEyLTExICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogbHRtYWluLmluOiBSZXZlcnQgdGhlIHZlcnNpb24gKzEgY2hhbmdlIGZvciBJUklYLCBpdCBjb3VsZAoJY2F1c2UgY29tcGF0aWJpbGl0eSBwcm9ibGVtcy4KCjIwMDItMTEtMjIgIENocmlzdGlhbiBDb3JuZWxzc2VuICA8Y2Nvcm5AY3MudHUtYmVybGluLmRlPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9DT01QSUxFUl9PUFRJT04sCglBQ19MSUJUT09MX1BST0dfQ0NfQ19PKTogQ2hhbmdlZCBtZXRob2QgZm9yIGNvbXBpbGF0aW9uIHdpdGgKCWN1c3RvbSBmbGFncyB0byBiZSBsYW5ndWFnZS1pbmRlcGVuZGVudC4gIFRoZXJlYnkgcmVtb3ZlZAoJQ0ZMQUdTL0dDSkZMQUdTIG1peHVwIGJ1Zy4gIEltaXRhdGUgQXV0b2NvbmYtc3R5bGUgbG9nZ2luZy4KCUxvZyBlbnRyaWVzIG5vIGxvbmdlciBkaXNjYXJkZWQgYnkgY29tcGlsYXRpb24gZmFpbHVyZXMuCgkoX0xUX0FDX0xBTkdfQ19DT05GSUcsIF9MVF9BQ19MQU5HX0NYWF9DT05GSUcsCglfTFRfQUNfTEFOR19HQ0pfQ09ORklHKTogVHVuZWQgc2V0dGluZ3Mgb2YKCWx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSBhbmQgbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlCgl0byBhdm9pZCB3YXJuaW5ncyB0aGF0IGNvdWxkIGJyZWFrIHNvbWUgb3B0aW9uIGRldGVjdGlvbnMuCgkoQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX05PX1JUVEkpOiBSZW1vdmVkCglyZWR1bmRhbnQgIi1jIGNvbmZ0ZXN0LiRhY19leHQiIGluIHRoZSBhcmd1bWVudCB0bwoJQUNfTElCVE9PTF9DT01QSUxFUl9PUFRJT04uCgkoQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUyk6IFJlcGxhY2VkIEMtc3BlY2lmaWMgY29uZnRlc3QKCXNvdXJjZSBjb2RlIHdpdGggJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSwgdG8gc3VwcG9ydAoJdGhlICItbGMiIHRlc3Qgd2l0aCBvdGhlciBsYW5ndWFnZXMuCgoyMDAyLTExLTE5ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEB0d2luc3VuLmNvbT4KCglEb24ndCBhc3N1bWUgdGhhdCBlZ3JlcCBhbmQgZmdyZXAgZXhpc3QuICBQT1NJWCAxMDAzLjEtMjAwMSBubwoJbG9uZ2VyIHJlcXVpcmVzIHRoZW07IHlvdSdyZSBzdXBwb3NlZCB0byB1c2UgZ3JlcCAtRSBhbmQgZ3JlcCAtRgoJaW5zdGVhZC4gIEFsc28sIGRvbid0IGFzc3VtZSB0aGF0ICJ0ZXN0IC1hIiB3b3Jrcywgc2luY2UgUE9TSVgKCWRvZXNuJ3QgcmVxdWlyZSBpdC4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSLCBfTFRfQUNfTEFOR19DX0NPTkZJRywKCV9MVF9BQ19MQU5HX0NYWF9DT05GSUcsIEFDX0xJQlRPT0xfU1lTX0dMT0JBTF9TWU1CT0xfUElQRSwKCUFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpOgoJZWdyZXAgLT4gZ3JlcCwgd2hlbiB0aGF0IG1ha2VzIG5vIGRpZmZlcmVuY2UuCgkqIGxpYnRvb2xpemUuaW46IExpa2V3aXNlLgoJKiBsdGRsLm00IChBQ19MVERMX1NZTUJPTF9VU0NPUkUpOiBMaWtld2lzZS4KCSogbHRtYWluLmluOiBMaWtld2lzZS4KCSogZGVtby9NYWtlZmlsZS5hbSAoaGMtZGlyZWN0KTogTGlrZXdpc2UuCgkqIHBkZW1vL01ha2VmaWxlLmFtIChoYy1kaXJlY3QpOiBMaWtld2lzZS4KCSogdGVzdHMvYnVpbGQtcmVsaW5rLnRlc3QsIHRlc3RzL2J1aWxkLXJlbGluazIudGVzdCwKCXRlc3RzL2NkZW1vLWNvbmYudGVzdCwgdGVzdHMvY2RlbW8tc2hhcmVkLnRlc3QsCgl0ZXN0cy9jZGVtby1zdGF0aWMudGVzdCwgdGVzdHMvZGVtby1jb25mLnRlc3QsCgl0ZXN0cy9kZW1vLW5vZmFzdC50ZXN0LCB0ZXN0cy9kZW1vLXNoYXJlZC50ZXN0LAoJdGVzdHMvZGVtby1zdGF0aWMudGVzdCwgdGVzdHMvZGVwZGVtby1jb25mLnRlc3QsCgl0ZXN0cy9kZXBkZW1vLW5vZmFzdC50ZXN0LCB0ZXN0cy9kZXBkZW1vLXNoYXJlZC50ZXN0LAoJdGVzdHMvZGVwZGVtby1zdGF0aWMudGVzdCwgdGVzdHMvaGFyZGNvZGUudGVzdCwKCXRlc3RzL21kZW1vLWNvbmYudGVzdCwgdGVzdHMvbWRlbW8tc2hhcmVkLnRlc3QsCgl0ZXN0cy9tZGVtby1zdGF0aWMudGVzdCwgdGVzdHMvcGRlbW8tY29uZi50ZXN0LAoJdGVzdHMvdGFnZGVtby1jb25mLnRlc3QsIHRlc3RzL3RhZ2RlbW8tc2hhcmVkLnRlc3QsCgl0ZXN0cy90YWdkZW1vLXN0YXRpYy50ZXN0OiBMaWtld2lzZS4KCgkqIGxpYnRvb2wubTQgKEFDX1BST0dfRUdSRVApOgoJTmV3IG1hY3JvLCBkZWZpbmVkIGlmIEF1dG9jb25mIGRvZXNuJ3QgZGVmaW5lLgoJKEFDX1BBVEhfVE9PTF9QUkVGSVgsIEFDX1BST0dfTERfR05VKTogVXNlIGl0LgoJKEFDX1BST0dfTEQsIEFDX1BST0dfTk0sIEFDX0xJQlRPT0xfU1lTX0dMT0JBTF9TWU1CT0xfUElQRSk6CglVc2Ugc2hlbGwgcGF0dGVybiBtYXRjaGluZyByYXRoZXIgdGhhbiBlZ3JlcC4KCShBQ19MSUJUT09MX0NPTkZJRyk6IFNldCBsdF9FR1JFUCBhbmQgRUdSRVAuCgoJKiBkZW1vL01ha2VmaWxlLmFtIChTRVRfSEFSRENPREVfRkxBR1MpOiBVc2Ugc2VkIGluc3RlYWQgb2YgZWdyZXAuCgkqIHBkZW1vL01ha2VmaWxlLmFtIChTRVRfSEFSRENPREVfRkxBR1MpOiBMaWtld2lzZS4KCgkqIHRlc3RzL2RlZnMgKEVHUkVQLCBGR1JFUCk6IE5ldyB2YXJzLgoKCSogbHRtYWluLmluOiBlZ3JlcCAtPiAkRUdSRVAKCSogdGVzdHMvYXNzaWduLnRlc3QsIHRlc3RzL2RlbW8tZXhlYy50ZXN0LCB0ZXN0cy9kZW1vLWluc3QudGVzdCwKCXRlc3RzL3BkZW1vLWV4ZWMudGVzdCwgdGVzdHMvcGRlbW8taW5zdC50ZXN0LCB0ZXN0cy9zaC50ZXN0OgoJTGlrZXdpc2UuCgoJKiB0ZXN0cy9oYXJkY29kZS50ZXN0OiBmZ3JlcCAtPiAkRkdSRVAKCgkqIHRlc3RzL2Y3N2RlbW8tZXhlYy50ZXN0OiB0ZXN0IC1hIC0+IHRlc3QgJiYKCjIwMDItMTEtMTggIEJvYiBGcmllc2VuaGFobiAgPGJmcmllc2VuQHNpbXBsZS5kYWxsYXMudHgudXM+CgoJKiBsdG1haW4uaW46IFdoZW4gdXNpbmcgZ2NjLCBwYXNzIC1tZm9vIHRvIHRoZSBsaW5rZXIKCXZpYSAkY29tcGlsZXJfZmxhZ3MgaW4gb3JkZXIgdG8gcGFzcyBhcmNoaXRlY3R1cmUgaW5mb3JtYXRpb24gdG8KCXRoZSBsaW5rZXIgKGUuZy4gMzIgdnMgNjQtYml0KS4gVGhpcyBtYXkgYWxzbyBiZSBhY2NvbXBsaXNoZWQgdmlhCgktV2wsLW1mb28gYnV0IHRoaXMgaXMgbm90IHJlbGlhYmxlIHdpdGggZ2NjIGJlY2F1c2UgZ2NjIG1heSB1c2UKCS1tZm9vIHRvIHNlbGVjdCBhIGRpZmZlcmVudCBsaW5rZXIsIGRpZmZlcmVudCBsaWJyYXJpZXMsIGV0Yywgd2hpbGUKCS1XbCwtbWZvbyBzaW1wbHkgcGFzc2VzIC1tZm9vIHRvIHRoZSBsaW5rZXIuIElmIHRoZXJlIGlzIGEgYmV0dGVyCglzb2x1dGlvbiwgcGxlYXNlIGxldCBtZSBrbm93IHdoYXQgaXQgaXMuCgoyMDAyLTExLTE4ICBCb2IgRnJpZXNlbmhhaG4gIDxiZnJpZXNlbkBzaW1wbGUuZGFsbGFzLnR4LnVzPgoKCSogdGVzdHMvTWFrZWZpbGUuYW06IENvbmRpdGlvbmFsIGFzc2lnbm1lbnQgb2YgRkZMQUdTID0gQEZGTEFHU0AKCWRvZXMgbm90IGFwcGVhciB0byBiZSBuZWNlc3NhcnkgZ2l2ZW4gdGhhdCBBdXRvbWFrZSBtYWtlcyB0aGlzCglhc3NpZ25tZW50IGJ5IGRlZmF1bHQuICBUaGUgY29uZGl0aW9uIGlzIHJlbW92ZWQgc2luY2UgQXV0b21ha2UKCTEuNy4xIGNvbXBsYWlucyBhYm91dCBpdC4KCjIwMDItMTEtMTggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogbGlidG9vbC5tNDogU3VwcG9ydCBsaW5raW5nIG9mIDY0LWJpdCBsaWJyYXJpZXMgb24KCXNwYXJjeyx2Wzc4OV19LSpsaW51eCosIHMzOTAqLSpsaW51eCosIHBwYyotKmxpbnV4KgoJR05VL0xpbnV4IHN5c3RlbXMgd2hlbiB0aGUgcGxhdGZvcm0gZGVmYXVsdCBpcyB0byBidWlsZAoJMzItYml0IGxpYnJhcmllcy4KCjIwMDItMTEtMTggIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4sIEJvIFRob3JzZW4gIDxib0BzdXNlLmRlPgoKCSogbGlidG9vbC5tNDogU3VwcG9ydCBsaW5raW5nIG9mIDMyLWJpdCBsaWJyYXJpZXMgd2l0aCBsZAoJb24gdGhlIHg4Ni02NCwgcHBjNjQsIHMzOTB4IGFuZCBzcGFyYzY0IEdOVS9MaW51eCBzeXN0ZW1zLgoKMjAwMi0xMS0xOCAgQWtpbSBEZW1haWxsZSAgPGFraW1AZXBpdGEuZnI+CgoJKiBsdG1haW4uaW46IERvIG5vdCBjaGFuZ2UgdGhlIFBBVEggaW4gdGhlIHdyYXBwZXJzOiBsZXQgdGhlbQoJbGF1bmNoIHRoZSByZWFsIGJpbmFyeSB1c2luZyBpdHMgcGF0aC4KCjIwMDItMTEtMTggIEtldmluIFJ5ZGUgIDx1c2VyNDJAemlwLmNvbS5hdT4KCgkqIGRvYy9saWJ0b29sLnRleGkgKExpYnJhcnkgdGlwcyk6IE5vdGUgYXJyYXkgZGltZW5zaW9ucy4KCjIwMDItMTEtMTggIEJvYiBGcmllc2VuaGFobiAgPGJmcmllc2VuQHNpbXBsZS5kYWxsYXMudHgudXM+CgoJKiB0ZXN0cy8qLnRlc3Q6IE1pbkdXJ3MgTVNZUyB0cmVhdHMgZmlsZXMgdW5kZXIgL2RldgoJc3BlY2lhbGx5LiBUaGlzIGNhdXNlcyAndGVzdCAtciAvZGV2L251bGwvY29uZmlnL3NpdGUnIHRvCglpbXByb3Blcmx5IHJlcG9ydCBzdWNjZXNzLCBjYXVzaW5nIGNvbmZpZ3VyZSB0byBmYWlsLiBDaGFuZ2UgdGhlCglDT05GSUdfU0lURSBkZWZpbml0aW9uIGZyb20gIi9kZXYvbnVsbC9jb25maWcvc2l0ZSIgdG8KCSIvbm9uZXhpc3RlbnQiIHRvIGF2b2lkIHRoaXMgcHJvYmxlbS4KCjIwMDItMTEtMTggIENoYXJsZXMgV2lsc29uICA8Y3dpbHNvbkBlY2UuZ2F0ZWNoLmVkdT4KCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19MT0NLKTogcmVtb3ZlIHN1cHBvcnQgZm9yIGFuY2llbnQKCXZlcnNpb25zIG9mIG1pbmd3IGFuZCBjeWd3aW4uCgkoQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUCk6IG5ldyBmdW5jdGlvbi4KCW1vdmVkIHRoZSAiZmluZCBoaWRkZW4gbGlicmFyeSBkZXBlbmRlbmNpZXMiIGNvZGUgaGVyZQoJZnJvbSBBQ19MSUJUT09MX0xBTkdfQ1hYX0NPTkZJRy4gIEF0dGVtcHRlZCB0byBtYWtlIGl0CgltdWx0aS10YWcgY29tcGF0aWJsZSwgYnV0IGN1cnJlbnRseSBvbmx5IENYWCBjYWxscyBpdC4KCShBQ19MSUJUT09MX0xBTkdfQ1hYX0NPTkZJRyk6IHNldAoJZW5hYmxlX3NoYXJlZF93aXRoX3NhdGljX3J1bnRpbWVzIHRvICdubycgYnkgZGVmYXVsdAoJU2V0IGl0IHRvICd5ZXMnIGZvciBjeWd3aW4sIG1pbmd3LCBwdzMyLiBSZXBsYWNlCgkiZmluZCBoaWRkZW4gbGlicmFyeSBkZXBlbmRlbmNpZXMiIGNvZGUgd2l0aCBhIGNhbGwKCXRvIHRoZSBuZXcgZnVuY3Rpb24gQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUC4KCUNvbnNvbGlkYXRlIGN5Z3dpbiBhbmQgbWluZ3cvcHczMiBzdGFuemFzLgoJKEFDX0xJQlRPT0xfTEFOR19GNzdfQ09ORklHKTogc2V0CgllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzIHRvICdubycgYnkgZGVmYXVsdAoJKEFDX0xJQlRPT0xfQ09ORklHKTogYWRkCgllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzIHRvIHRoZSBsaXN0IG9mIHZhcmlhYmxlcwoJdG8gd3JpdGUgaW50byBsdG1haW4uc2g7IGluY2x1ZGUgaXQgaW4gdGhlIGxpYnRvb2wgc2NyaXB0Cgl0ZW1wbGF0ZSBhcyBhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMuCgkoQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUyk6IHNldAoJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcyB0byAnbm8nIGJ5IGRlZmF1bHQKCVNldCBpdCB0byAneWVzJyBmb3IgY3lnd2luLCBtaW5ndywgcHczMi4KCShBQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEUpOiBvbmx5IHB1dCBjciBpbiByZWdleHAKCWlmIHRoZSBidWlsZF9vcyBpcyBtaW5ndywgbm90IGhvc3Rfb3MKCgkqIGx0bWFpbi5pbiAoY2FzZSBkZXBsaWJzX2NoZWNrX21ldGhvZCk6IGZvciBhbGwgYXBwcm9wcmlhdGUKCWNhc2VzLCBpZiBhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMsIHRoZW4gcmVtb3ZlCglwcmVkZXBzIGFuZCBwb3N0ZGVwcyBmcm9tIHRoZSBsaXN0IG9mIGRlcGVuZGVuY2llcyB0aGF0IG11c3QKCWJlIGNoZWNrZWQgZm9yICJkeW5hbWljbmVzcyIuICBGb3IgdGhlICJub25lIiBjYXNlLCB0aGUKCXByZXNlbmNlIG9mIGNvbXBpbGVyLWdlbmVyYXRlZCBwb3N0ZGVwcyBhbmQgcHJlZGVwcyBzaG91bGQKCW5vdCB0cmlnZ2VyICJpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBub3Qgc3VwcG9ydGVkIiBlcnJvci4KCShpbml0aWFsIHNldHVwIGFmdGVyIGFyZyBwcm9jZXNzaW5nKTogb24gY3lnd2luL21pbmd3LCBhbGxvdwoJY29tcGlsZXItZ2VuZXJhdGVkIGRlcGVuZGVudCBsaWJzIHRvIGJlIGR1cGxpY2F0ZWQgd2l0aG91dAoJZWxpbWluYXRpb24uCgkoaW5pdGlhbCBzZWFyY2ggbG9vcCBmb3IgZGVwbGlicyk6IGlmIHRoZSBkZXBsaWIgaW4gcXVlc3Rpb24KCWlzIGEgbGlidG9vbCBsaWIsIHRoZW4gaWYKCWFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyB0aGVuIHBhcnNlIHRoZSAubGEgZmlsZS4KCUlmIHRoZSAubGEgZmlsZSBvbmx5IGhhcyBhbiAib2xkX2xpYnJhcnkiLCBhZGQgdGhlIGRlcGxpYgoJZGlyZWN0bHkgdG8gdGhlIGRlcGxpYnMgbGlzdCAoLWxzdGRjKyspIGFuZCBET04nVCB1c2UgdGhlIC5sYQoJZmlsZTsgdGhpcyBhbGxvd3MgdGhlIChjYXNlIGRlcGxpYnNfY2hlY2tfbWV0aG9kKSBjaGFuZ2UgYWJvdmUKCXRvIHRha2UgZWZmZWN0LgoJKiBsdG1haW4uaW4gKGZvciBwYXNzIGluICRwYXNzZXMgbG9vcCk6IHJlbW92ZSBwcmVkZXBzLAoJcG9zdGRlcHMsIGFuZCBjb21waWxlcl9saWJfc2VhcmNoX3BhdGggZnJvbSBkZXBlbmRlbmN5X2xpYnMuCgoyMDAyLTExLTA4ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogZG9jL2xpYnRvb2wudGV4aTogQWRkIC0tbW9kZT0qIHRvIGV2ZXJ5IGV4YW1wbGUgdXNpbmcgbGlidG9vbC4KCjIwMDItMTEtMDMgIE9zc2FtYSBPdGhtYW4gIDxvc3NhbWFAZG9jLmVjZS51Y2kuZWR1PgoKCSogbHRtYWluLmluOiBhZGQgc3VwcG9ydCBmb3IgaW5zdGFsbGluZyBpbnRvIHRlbXBvcmFyeQoJc3RhZ2luZyBhcmVhIChlLmcuICdtYWtlIGluc3RhbGwgREVTVERJUj0uLi4nKQoKMjAwMi0xMS0wMyAgQ2hhcmxlcyBXaWxzb24gIDxjd2lsc29uQGVjZS5nYXRlY2guZWR1PgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUcpOiByZXN0b3JlIHNldHRpbmcKCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkIGZvciBjeWd3aW4gYW5kIG1pbmd3LgoJKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpOiBkaXR0bywgZm9yIGJvdGggIm5vcm1hbCIgZ2NjL2xkCglhbmQgZm9yIHRoZSAodW5tYWludGFpbmVkPykgTVNWQyBjYXNlLgoKMjAwMi0xMS0wMyAgQ2hhcmxlcyBXaWxzb24gIDxjd2lsc29uQGVjZS5nYXRlY2guZWR1PgoKCSogZG9jL2xpYnRvb2wudGV4aSAoSW5zdGFsbCBtb2RlKTogZG9jdW1lbnQgbmV3CgktaW5zdC1wcmVmaXggb3B0aW9uLgoKMjAwMi0xMS0wMiAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGx0bWFpbi5pbjogUHJpbnQgYSB3YXJuaW5nIGlmIHRoZSBtb2RlIGlzIG5vdCBzcGVjaWZpZWQuCgkqIGRvYy9saWJ0b29sLnRleGk6IERvY3VtZW50IHRoZSBjaGFuZ2UgdGhhdCB0aGUgbW9kZSBtdXN0IGJlCglzcGVjaWZpZWQuCgoyMDAyLTEwLTMwICBDaGFybGVzIFdpbHNvbiAgPGN3aWxzb25AZWNlLmdhdGVjaC5lZHU+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1BST0dfQ0NfQ19PKTogdXNlIHByaW50Ziwgbm90CgllY2hvLiAoQUNfREVQTElCU19DSEVDS19NRVRIT0QpOiB1c2UgbmV3IHNoZWxsIGZ1bmN0aW9uCgl3aW4zMl9saWJpZCBvbiB3MzIgcGxhdGZvcm1zCgkqIGx0bWFpbi5pbjogYWRkIG5ldyBzZWN0aW9uIGZvciBzaGVsbCBmdW5jdGlvbnMuIEFkZAoJd2luMzJfbGliaWQoKSBzaGVsbCBmdW5jdGlvbi4KCSogZjc3ZGVtby9NYWtlZmlsZS5hbTogYWRkIC1uby11bmRlZmluZWQgZmxhZwoKMjAwMi0xMC0zMCAgUm9iIEJyb3duaW5nICA8cmxiQGRlZmF1bHR2YWx1ZS5vcmc+CgoJKiBsdGRsLmMgKHJlYWxsb2MpOiBSZW1vdmUgY3VzdG9tIHJlYWxsb2MuICgjZGVmaW5lCglycGxfcmVhbGxvYyByZWFsbG9jKSBhbmQgY29tbWVudCBvdXQgbGF0ZXIgY29kZSBmb3IgY3VzdG9tCglyZWFsbG9jLiBZb3UgY2FuJ3QgZGVmaW5lIHlvdXIgb3duIG1hbGxvYyB1bmxlc3MgeW91IGtub3cKCWVub3VnaCBhYm91dCB0aGUgbWFsbG9jIGluIHVzZSB0byBiZSBhYmxlIHRvIHRlbGwgaG93IGJpZwoJdGhlIHNyYyBwdHIgaXMuIFRoZSBkaXNhYmxlZCBjb2RlIGluY29ycmVjdGx5IHVzZWQgdGhlCgkqZGVzdGluYXRpb24qIHB0ciB0byBkZWNpZGUgaG93IG11Y2ggdG8gY29weS4gVGhpcwoJc29tZXRpbWVzIHJlc3VsdHMgaW4gb3V0LW9mLWJvdW5kIGFjY2Vzc2VzIHdoaWNoIGNhdXNlCglzZWdmYXVsdHMuIFRoaXMgaXMgYSBxdWljayBoYWNrIGZvciBub3c7IHdlIG1heSB3YW50Cglzb21ldGhpbmcgY2xlYW5lciBsYXRlci4KCSh0cnlhbGxfZGxvcGVuX21vZHVsZSk6IGNoZWNrIHRvIGJlIHN1cmUgKGRpcm5hbWVfbGVuID4gMCkgYmVmb3JlCgl0ZXN0aW5nIGZpcnN0IGNoYXJhY3RlciBhZ2FpbnN0ICcvJy4KCSh0cnlfZGxvcGVuKTogY2hlY2sgZm9yIGZlb2YoZmlsZSkgaW4gcmVhZCBsb29wIC0tIG90aGVyd2lzZQoJaW5maW5pdGUgbG9vcD8KCjIwMDItMTAtMjUgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsdG1haW4uaW4gKC1YQ0NsaW5rZXIpOiBOZXcgZmxhZyBwYXNzZXMgYSBsaW5raW5nIG9wdGlvbgoJZGlyZWN0bHkgdG8gdGhlIGNvbXBpbGVyIGRyaXZlciB3aXRob3V0IGFwcGVuZGluZyAke3dsfS4KCjIwMDItMTAtMjUgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIFJFQURNRS1hbHBoYTogQWRkIHNvbWUgcmVsZWFzZSBub3QgdGVtcGxhdGVzIGZvciBpbnNwaXJhdGlvbiBhbmQKCWNvbnNpc3RlbmN5IGF0IHJlbGVhc2UgdGltZS4KCgkqIE1ha2VmaWxlLmFtIChjdnMtZGlmZik6IENvbXByZXNzIHRoZSBnZW5lcmF0ZWQgZGlmZiBmaWxlLCByZWFkeQoJZm9yIHVwbG9hZCB0byBmdHAuZ251Lm9yZy4KCjIwMDItMTAtMjUgIEhvd2FyZCBDaHUgIDxoeWNAaGlnaGxhbmRzdW4uY29tPgoKCSogbHRtYWluLmluIFthaXhdOiBCZSBzdXJlIHRvIGRlYWwgd2l0aCB4bGNfciwgY2NfciBhbmQgb3RoZXIKCWNvbXBpbGVyIHZhcmlhbnRzLgoKMjAwMi0xMC0yNSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlidG9vbC5tNCAoX0xUX0FDX0ZJTEVfSU1QR0VOX0MpOiBSZW1vdmVkLiAgTm8gbG9uZ2VyIHVzZWQuCgkoX0xUX0FDX0ZJTEVfTFRETExfQyk6IERpdHRvLgoJKEFDX0xJQlRPT0xfQ09ORklHKSBbY3lnd2luLCBtaW5ndywgcHczMiwgb3MyXTogRG9uJ3QgY2FsbAoJX0xUX0FDX0ZJTEVfTFRETExfQyBvciBfTFRfQUNfRklMRV9JTVBHRU5fQy4KCjIwMDItMTAtMjUgIEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsaWJ0b29sLm00OiBXaGVuIExERkxBR1M9Ii1XbCwtYnJ0bCxbb3RoZXIgb3B0aW9uc10iLCB0aGUKCS1icnRsIHNwZWNpYWwtY2FzZSBjb2RlIGZvciBBSVggbmV2ZXIgZ2V0cyB0cmlnZ2VyZWQgYmVjYXVzZQoJd2VyZSBhcmUgYmVpbmcgdG9vIHNwZWNpZmljIGFib3V0IGhvdyB3ZSBzZWFyY2ggZm9yIC1icnRsLgoJVXNlIGNhc2Ugc3RhdGVtZW50IHRvIGF2b2lkIHRoaXMuIFJlbW92ZSBleHRyYW5lb3VzCglzZW1pY29sb24uCgkqIGx0bWFpbi5pbjogUmVjb2duaXplIHRoZSBJQk0geGxjIGNvbXBpbGVyLgoKMjAwMi0xMC0yNCAgQW5kcmV3IFN1ZmZpZWxkICA8YXN1ZmZpZWxkQGRlYmlhbi5vcmc+CgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxvcGVuZXh0KTogQ29ycmVjdGVkIHNlbnNlIG9mICJmaWxlIG5vdAoJZm91bmQiIGNoZWNrLgoKMjAwMi0xMC0yNCAgT3NzYW1hIE90aG1hbiAgPG9zc2FtYUBkb2MuZWNlLnVjaS5lZHU+CgoJKiBsdG1haW4uaW46IFN1cHBvcnQgY29tcGlsZXIgbmFtZXMgbWF0Y2hpbmcgZysrKgoKMjAwMi0xMC0yMyAgQm9iIEZyaWVzZW5oYWhuICA8YmZyaWVzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KCgkqIGxpYnRvb2wubTQ6IFJlbW92ZWQgb2xkIFdpbmRvd3MgY3J1ZnQuCgkqIGxpYnRvb2wubTQ6IEFkYXB0ZWQgcHczMiB0byBiZSBsaWtlIEN5Z3dpbi9NaW5HVy4KCjIwMDItMTAtMjMgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJbHRtYWluLmluOiBEbyBub3QgYWRkIDEgdG8gdGhlIHZlcnNpb24gdW5kZXIgSVJJWCwgaXQgaXMKCW5vdCBuZWNlc3NhcnkuCgoyMDAyLTEwLTE1ICBDaGFybGVzIFdpbHNvbiAgPGN3aWxzb25AZWNlLmdhdGVjaC5lZHU+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NZU19NQVhfQ01EX0xFTik6IGF2b2lkIGxvbmcgZGVsYXkgb24KCSBjeWd3aW4vV2luOXggd2hlbiBjb21wdXRpbmcgY29tbWFuZGxpbmUgbGVuZ3RoLgoJKEFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKTogZml4IHBvc3RpbnN0YWxsX2NtZHMgd2hlbgoJc291cmNlcyBhcmUgaW4gYSBzdWJkaXJlY3RvcnkKCSogbHRkbC5tNCAoQUNfTFRETF9TWVNTRUFSQ0hQQVRIKTogdXNlICRQQVRIX1NFUEFSQVRPUiwgbm90CgkkYWNfcGF0aF9zZXBhcmF0b3IKCSogY29uZmlndXJlLmFjOiBtb3ZlIGRlcGRlbW8tc3BlY2lmaWMgc3R1ZmYuICBZb3UgbXVzdCBjb25maWd1cmUKCWxpYnRvb2wgYmVmb3JlIHlvdSBjYW4gdHJ5ICcuL2xpYnRvb2wgLS1mZWF0dXJlcycuCgkqIG1kZW1vLWluc3QudGVzdDogc2V0ICRQQVRIIHRvIGluY2x1ZGUgdGhlIGRpcmVjdG9yeSBpbiB3aGljaAoJdGhlIG1vZHVsZXMgYXJlIGluc3RhbGxlZCAob24gY3lnd2luLCBETEwgc2VhcmNoIHBhdGggaXMgdGhlCgkkUEFUSCkKCjIwMDItMTAtMTUgIEJvYiBGcmllc2VuaGFobiA8YmZyaWVzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KCgkqIGx0bWFpbi5pbjogTWluR1cgd29ya3MgaWRlbnRpY2FsbHkgdG8gQ3lnd2luLgoJKiBsaWJ0b29sLm00OiBsdF9jdl9zeXNfbWF4X2NtZF9sZW4gaGFyZC1jb2RlZCB0byA4MTkyCgkqICBNb2RlbCBNaW5HVyBjb25maWd1cmF0aW9uIGFmdGVyIEN5Z3dpbiBjb25maWd1cmF0aW9uLgoJU29tZSBwb3J0aW9ucyBzaGFyZSBpbXBsZW1lbnRhdGlvbi4KCjIwMDItMTAtMTUgIEVsaXphYmV0aCBCYXJoYW0gPHNvZ2d5dHJvdXNlcnNAeWFob28uY29tPgoKCSogbGlidG9vbC5tNDogUGF0dGVybiBNaW5HVyBsaWJyYXJ5IG5hbWluZyBhZnRlciB0aGF0Cgl1c2VkIGJ5IEN5Z3dpbiBleGNlcHQgdXNlICdsaWInIHByZWZpeCByYXRoZXIgdGhhbiAnY3lnJy4KCSogVHJhbnNmZXIgc29tZSBjb25maWd1cmF0aW9uIGZyb20gQ3lnd2luIHdpdGggYWRqdXN0bWVudHMKCWZvciBNaW5HVy4KCjIwMDItMTAtMTUgIEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsaWJ0b29sLm00OiBXaGVuIGEgbW9kdWxlIGlzIGJ1aWx0IGZvciBBSVgsIHRoZSAnbGliJwoJcHJlZml4IGlzbid0IG5lZWRlZCwgbmVpdGhlciBpcyB0aGUgdmVyc2lvbi4gQUlYIGRsb3BlbgoJd2lsbCBob25vciB0aGUgUlBBVEggaW4gYSBsaWJyYXJ5LgoKMjAwMi0xMC0xMSAgQ2hyaXN0b3BoIEVnZ2VyICA8Q2hyaXN0b3BoX0VnZ2VyQGdteC5kZT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMsIGRhcndpbik6IEFkZAoJLWluc3RhbGxfbmFtZSB0byB0aGUgbGluayBsaW5lIG9ubHkgd2hlbiAtZHluYW1pY2xpYiBpcwoJc3BlY2lmaWVkIGZvciBhIG1vZHVsZS4gIFVzZSAtYmluZF9hdF9sb2FkIHdoZW4gbGlua2luZyBDKysKCXNoYXJlZCBsaWJyYXJpZXMuCgoyMDAyLTEwLTA0ICBFbGl6YWJldGggQmFyaGFtICA8c29nZ3l0cm91c2Vyc0B5YWhvby5jb20+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NFVFVQKTogR0NDIG5vdyBjaGVja3MgLXNoYXJlZCB0bwoJY3JlYXRlIGEgZGxsIGZvciBXaW5kb3dzIHRhcmdldHMuCgoyMDAyLTA5LTI0ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogbHRtYWluLmluOiBGaXhlZCBhIGZldyBzcGVsbGluZyBlcnJvcnMuCgoyMDAyLTA5LTE3ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogbGlibHRkbC9sdGRsLmM6IENvbW1lbnRlZCBvdXQgYWNjZXNzKCkgY2FsbCB0aGF0IGNoZWNrcyBmb3IgYQoJbGlicmFyeSBmaWxlJ3MgZXhpc3RlbmNlIGFuZCBwZXJtaXNzaW9ucywgYXMgaXQgYXBwZWFycyB0byBmYWlsCglpbiBldmVyeSBjYXNlLgoKMjAwMi0wOS0wOSAgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYnRvb2wubTQ6IEN1c3RvbSAkc3ltY29kZSBmb3IgVHJ1NjQgVU5JWCB0byBjYXRjaCAnUScsCglyZWFkLW9ubHkgY29uc3RhbnRzLgoKMjAwMi0wOS0wOSAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuZGU+CgoJKiBsaWJ0b29sLm00IChvc2ZbMzQ1XSk6IEFwcGVuZCAkbWFqb3IgdG8gc29uYW1lX3NwZWMuCglSZWZsZWN0IHRoaXMgaW4gbGlicmFyeV9uYW1lc19zcGVjLgoJKiBsdG1haW4uaW4gKG9zZik6IFByZWZpeCAkbWFqb3Igd2l0aCAnLicgZm9yIHVzZSBhcyBleHRlbnNpb24uCgoyMDAyLTA4LTI4ICBCb2IgRnJpZXNlbmhhaG4gIDxiZnJpZXNlbkBzaW1wbGUuZGFsbGFzLnR4LnVzPgoKCSogbHRkbC5tNCAmIGxpYmx0ZGwvbHRkbC5jOiBQb3J0IGZ1bGx5IHRvIG5hdGl2ZSBXaW4zMiBBUEkuCgoyMDAyLTA3LTMxICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogZjc3ZGVtby8uY3ZzaWdub3JlOiBOZXcgZmlsZSwgZm9yZ290dGVuIGluIHRoZSBsYXN0IGNvbW1pdC4KCjIwMDItMDctMzEgIEVyaWMgTGluZGFobCAgPGVyaWtAdGhlb3BoeXMua3RoLnNlPgoKCSogbGlidG9vbC5tNCAoQUNfUFJPR19MSUJUT09MKTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIG5ldyBGNzcKCUZvcnRyYW4gc3VwcG9ydCB0YWcuCgkoQUNfTElCVE9PTF9QUk9HX0NDX0NfTywgX0xUX0FDX1RBR0NPTkZJRyk6IFN1cHBvcnQgRjc3IHRhZy4KCShBQ19MSUJUT09MX0Y3NywgX0xUX0FDX0xBTkdfRjc3LCBBQ19MSUJUT09MX0xBTkdfRjc3X0NPTkZJRyk6CglOZXcgbWFjcm9zIGZvciBGNzcgdGFnIEZvcnRyYW4gc3VwcG9ydC4KCSogY29uZmlndXJlLmFjOiBBZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgdGhlIG5ldyBGNzcgdGFnLgoJKiBib290c3RyYXA6IEFkZCBmNzdkZW1vIGRpcmVjdG9yeSB0byB0aGUgbGlzdCB0byBiZSBwcm9jZXNzZWQuCgkqIE1ha2VmaWxlLmFtOiBBZGQgc3VwcG9ydCBmb3IgRkZMQUdTIGFuZCBGTElCUy4KCSogdGVzdHMvTWFrZWZpbGUuYW06IEFkZCBuZXcgRm9ydHJhbiB0ZXN0cy4KCSogdGVzdHMvZjc3ZGVtby0qLnRlc3Q6IE5ldyBmaWxlcy4KCSogZjc3ZGVtby9jb25maWd1cmUuYWMsIGY3N2RlbW8vY3Byb2dyYW0uYywgZjc3ZGVtby9mb29jLmMKCSogZjc3ZGVtby9mb29mLmYsIGY3N2RlbW8vZm9vLmgsIGY3N2RlbW8vZnByb2dyYW0uZgoJKiBmNzdkZW1vL01ha2VmaWxlLmFtLCBmNzdkZW1vL1JFQURNRTogTmV3IGZpbGVzLgoKMjAwMi0wNy0xNiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlibHRkbC9sdGRsLmMgKHRyeWFsbF9kbG9wZW4pOiBXZSBuZWVkIHRvIGNhdGNoIG1pc3NpbmcgZmlsZQoJZXJyb3JzIGVhcmx5IHNvIHRoYXQgZmlsZV9ub3RfZm91bmQoKSBjYW4gZGV0ZWN0IHdoYXQgaGFwcGVuZWQuCgoyMDAyLTA2LTI2ICBCb2IgRnJpZXNlbmhhaG4gIDxiZnJlaXNlbkBzaW1wbGUuZGFsbGFzLnR4LnVzPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVIpIFttaW5nd106IFJlbW92ZQoJZXh0cmFuZW91cyAnPScgY2hhcmFjdGVyIHdoaWNoIGFwcGVhcnMgaW4gZ2NjIDMuMQoJLXByaW50LXNlYXJjaC1kaXJzIG91dHB1dC4KCUhhbmRsZSBib3RoIHVwcGVyIGFuZCBsb3dlciBjYXNlIGRyaXZlIGxldHRlcnMgd2hlbiB0ZXN0aW5nIGZvcgoJV2luZG93cyB2cyBQT1NJWCBzdHlsZSBwYXRoIG91dHB1dCBmcm9tIC1wcmludC1zZWFyY2gtZGlycwoJb3V0cHV0LgoKMjAwMi0wNi0yNCAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGx0bWFpbi5pbiAoUGllY2V3aXNlIGxpbmtpbmcpOiBBZGQgYSBjbGF1c2UgdG8gc2tpcCBjcmVhdGluZwoJdGhlIGV4cG9ydCBmaWxlIHVudGlsIHRoZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlKHMpIGhhdmUgYmVlbgoJY3JlYXRlZCwgdGhlbiB1c2UgdGhlbSBhcyBpbnB1dCBmb3IgJGV4cG9ydF9zeW1ib2xzX2NtZHMuCgoyMDAyLTA2LTIzICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbHRkbC5tNCAoQUNfTFRETF9TWVNfRExPUEVOX0RFUExJQlMpOiBOZWVkIHRvIHF1b3RlIFsgYW5kIF0gZm9yCglBdXRvY29uZi4KCgkqIGx0ZGwubTQgKEFDX0xURExfU1lTX0RMT1BFTl9ERVBMSUJTKTogSFAvVVggbmVlZHMKCWxpYmx0ZGxfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzIHNldCB0byB5ZXMuCgoyMDAyLTA2LTIzICBLZXZpbiBSeWRlICA8dXNlcjQyQHppcC5jb20uYXU+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NFVFVQLCBfTFRfQUNfTE9DSyk6IFVzZQoJQUNfUFJPVklERV9JRkVMU0UgdG8gdGVzdCBBQ19MSUJUT09MX1dJTjMyX0RMTCBhbmQKCUFDX0xJQlRPT0xfRExPUEVOLCBuZWNlc3NhcnkgZm9yIGF1dG9jb25mIDIuNTMuCgoyMDAyLTA2LTIzICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoYXJnel9pbnNlcnQpOiBBY3R1YWxseSwgQkVGT1JFIGNhbiBiZSBOVUxMCgl3aGVuICpQQVJHWl9MRU4gaXMgbm9uLU5VTEwsIHNvIHRoZSBhc3NlcnRpb24gdG8gdGhlIGNvbnRyYXJ5IHdhcwoJYm9ndXMuCglSZXBvcnRlZCBieSBCb2IgRnJpZXNlbmhhaG4gPGJmcmVpc2VuQHNpbXBsZS5kYWxsYXMudHgudXM+CglhbmQgQWxiZXJ0IENoaW4tQS1Zb3VuZyA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKMjAwMi0wNi0yMSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlibHRkbC9sdGRsLmMgKGZvcmVhY2hfZGlyaW5wYXRoKTogRW5zdXJlIHRoYXQgZmlsZW5hbWUgaXMgJ1wwJwoJdGVybWluYXRlZCBieSBhbGwgY29kZSBwYXRocy4KCVJlcG9ydGVkIGJ5IEx1dHogTfxsbGVyIDxsdXR6QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCjIwMDItMDYtMjAgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglGcm9tIEtldmluIFJ5ZGUgIDx1c2VyNDJAemlwLmNvbS5hdT46CgkqIGRvYy9saWJ0b29sLnRleGkgKFBsYXRmb3JtIHF1aXJrcyk6IHMvZGVwZW5kYW4vZGVwZW5kZW4vCgkqIGxpYnRvb2wubTQgKEFDX0RFUExJQlNfQ0hFQ0tfTUVUSE9EKTogRGl0dG8uCgkqIFRPRE86IERpdHRvLgoKMjAwMi0wNi0xMyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBsdG1haW4uaW4gKGlyaXgsIG5vbnN0b3B1eCk6IFNldCBtYWpvciBiZWZvcmUgdXNlLgoKMjAwMi0wNi0xMSAgRGFuaWVsIEtvYnJhcyAgPGtvYnJhc0BsaW51eC5kZT4KCgkqIGxpYmx0ZGwvbHRkbC5jICh0cnlfZGxvcGVuKTogRG9uJ3QgcmV0dXJuIGJvZ3VzIGhhbmRsZSB0byB1c2VyCgkgIGlmIHRyeWFsbF9kbG9wZW4oKSBmYWlscy4KCjIwMDItMDYtMDEgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIHRlc3RzL3BkZW1vLWV4ZWMudGVzdDogVHlwby4gIHMvaGVsbC1zdGF0aWMvaGVsbF9zdGF0aWMvCgoyMDAyLTA1LTMxICBDaGFybGVzIFdpbHNvbiAgPGN3aWxzb25AZWNlLmdhdGVjaC5lZHU+CgoJKiBORVdTOiBVcGRhdGVkLgoJKiBsaWJ0b29sLm00OiB1c2UgJE5NIHRvIGNyZWF0ZSB0aGUgc3ltYm9sIGxpc3Qgb24gY3lnd2luLCBub3QKCSRsdGRsbF9jbWRzIGFzIG9uIG1pbmd3LiAgRm9yIGFsbCB0YWdzLCAoYW5kIGhvc3Q9Y3lnd2luKSBzZXQKCWFsbG93X3VuZGVmaW5lZF9mbGFnPSIiIHNvIHRoYXQgdGhlIC0tYXV0by1pbXBvcnQgbWFnaWMKCXdvcmtzIHByb3Blcmx5LiAgRm9yIGFsbCB0YWdzIChhbmQgaG9zdD1jeWdpd24pIHNldAoJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vIC0tIGl0IGlzIHVubmVjZXNzYXJ5IHRoYW5rcyB0bwoJYmludXRpbHMnIGF1dG8tZXhwb3J0IG1hZ2ljLgoJKiBsaWJsdGRsL2x0ZGwuYzogRG9uJ3QgZm9yY2UgY3lnd2luIHRvIHVzZSB0aGUgTG9hZExpYnJhcnkKCXdyYXBwZXI7IHVzZSBjeWd3aW4ncyBidWlsdGluIGltcGxlbWVudGF0aW5vIG9mIGRsKi4KCSogY2RlbW8vTWFrZWZpbGUuYW06IHRoZSBkb3duc2lkZSBvZiB1bnNldHRpbmcKCSdhbGxvd191bmRlZmluZWRfZmxhZycgLS0gd2UgbXVzdCBpbmNsdWRlIC1uby11bmRlZmluZWQKCWluIHRoZSBfbGFfTERGTEFHUyB2YXJpYWJsZS4KCSogZGVwZGVtby9sMS9NYWtlZmlsZS5hbTogZGl0dG8uCgkqIGRlcGRlbW8vbDIvTWFrZWZpbGUuYW06IGRpdHRvLgoJKiBkZXBkZW1vL2wzL01ha2VmaWxlLmFtOiBkaXR0by4KCSogZGVwZGVtby9sNC9NYWtlZmlsZS5hbTogZGl0dG8uCgkqIG1kZW1vL01ha2VmaWxlLmFtOiBkaXR0by4KCSogdGFnZGVtby9NYWtlZmlsZS5hbTogZGl0dG8uCgkqIGRlbW8vTWFrZWZpbGUuYW06IGRpdHRvLiAgQnV0IGFsc28sIHdlIG11c3QgbWFrZSBzcGVjaWFsCglwcm92aXNpb24gdG8gY2xlYW4gdXAgdGhlIGhlbGwwIHdyYXBwZXIgc2NyaXB0LgoJKiBwZGVtby9NYWtlZmlsZS5hbTogZGl0dG8gLW5vLXVuZGVmaW5lZC4gIGRpdHRvIGhlbGwwLgoJQW5kIHVzZSAnaGVsbF9zdGF0aWMnIGluc3RlYWQgb2YgJ2hlbGwuc3RhdGljJy4KCSogdGVzdHMvcGRlbW8taW5zdC50ZXN0OiB1c2UgJ2hlbGxfc3RhdGljJyBpbnN0ZWFkCglvZiAnaGVsbC5zdGF0aWMnLgoJKiB0ZXN0cy9wZGVtby1leGVjLnRlc3Q6IGRpdHRvLgoKMjAwMi0wNS0zMCAgQ2hhcmxlcyBXaWxzb24gIDxjd2lsc29uQGVjZS5nYXRlY2guZWR1PgoKCSogdGVzdHMvYnVpbGQtcmVsaW5rMi50ZXN0OiBsb29rIGZvciBpbnN0YWxsZWQgbGlibDMubGEKCWluICRwcmVmaXgvbGliLyBhcyB3ZWxsIGFzICRwcmVmaXgvbGliL2V4dHJhLy4KCjIwMDItMDUtMzAgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIHRlc3RzL2hhcmRjb2RlLnRlc3Q6IFVzZSBsaWJ0b29sIC0tY29uZmlnIHRvIGNvbGxlY3QgdGhlCgl2YXJpYWJsZSB2YWx1ZXMgZm9yIHRoZSB0ZXN0LCBvdGhlcndpc2UgdGhlIHRhZyB2YWx1ZXMgaW50ZXJmZXJlCgl3aXRoIGEgc3RyYWlnaHQgZ3JlcC4KCjIwMDItMDUtMzAgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglGaW5hbGx5IGZpeCB0aGUgYW5ub3lpbmcgYnVnIHdoaWNoIGFsd2F5cyBhZGRzIGFsbCB0YWdzIHRvIHRoZQoJbGlidG9vbCBzY3JpcHQgYnVpbHQgYnkgeW91ciBwcm9qZWN0IGNvbmZpZ3VyZS4gIE5vdyB3ZSBzZXQgdGhlCglkZWZhdWx0IHRhZ3MgZGVwZW5kaW5nIG9uIHdoZXRoZXIgQUNfUFJPR19DWFggZXQuIGFsLiBhcmUgYWN0dWFsbHkKCWNhbGxlZCBmcm9tIGNvbmZpZ3VyZS5hYy4KCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19UQUdDT05GSUcpOiBEb24ndCBkZWZhdWx0IHRoZSB0YWduYW1lcyB3aGVuCglubyAtLXdpdGgtdGFncyBhcmd1bWVudCBpcyBnaXZlbi4KCShfTFRfQUNfU0hFTExfSU5JVCk6IEZhY3RvcmVkIG91dCBmcm9tIHRoZSBBQ19ESVZFUlRfUFVTSCBjb2RlCglpbi4uLgoJKF9MVF9BQ19QUk9HX0VDSE9fQkFDS1NMQVNIKTogLi4ud2hpY2ggbm93IGNhbGxzIHRoZSBtYWNybwoJaW5zdGVhZC4KCShBQ19MSUJUT09MX0NYWCk6IFVzZSBfTFRfQUNfU0hFTExfSU5JVCB0byBhZGQgQ1hYIHRvIHRoZQoJaW5pdGlhbGlzYXRpb24gc2VxdWVuY2UgZm9yIHRhZ25hbWVzLgoJKEFDX0xJQlRPT0xfR0NKKTogU2ltaWxhcmx5IGZvciBHQ0ogdGFnLgoJKEFDX0xJQlRPT0xfUkMpOiBMaWtld2lzZSBmb3IgUkMgdGFnLgoKMjAwMi0wNS0yMSAgSm9uIE1lcmVkaXRoICA8am9ubUBhbGNoZW1ldHJpY3MuY28udWs+CgoJKiBsdG1haW4uaW46IEZpeCBhIHByb2JsZW0gb24gU0NPIE9wZW5TZXJ2ZXI1IHRoYXQgY2F1c2VkIGEKCWZhaWx1cmUgaW4gdGhyZWUgZGVwZGVtby1tYWtlIHRlc3RzLiBGb3Igc29tZSByZWFzb24gdGhlIGxpbmtlcgoJdHJpZXMgdG8gZmluZCB0aGUgZGVwZW5kZW50IGxpYnJhcmllcyB1c2luZyB0aGUgbGlicmFyeSBzZWFyY2gKCXBhdGggYmVmb3JlIGl0IGhhcyByZWFkIHRoZSBsaWJyYXJpZXMgc3BlY2lmaWVkIHdpdGggYWJzb2x1dGUKCXBhdGhzIGluIHRoZSBmdWxsIGNvbW1hbmRsaW5lLiBUaGlzIHBhdGNoIGFkZCAtTCdzIGZvciBlYWNoIG9mCgl0aGUgZGVwZW5kZW50IGxpYnJhcnkgZGlyZWN0b3JpZXMgc28gdGhhdCB0aGV5IGNhbiBiZSByZXNvbHZlZC4KCjIwMDItMDUtMDkgIE5pY2sgSHVkc29uICA8c2tybGxAbmV0YnNkLm9yZz4KCgkqIGxpYnRvb2wubTQ6IFVwZGF0ZSBzdXBwb3J0IGZvciBOZXRCU0QKCSogbHRkbC5tNDogTWFrZSBzdXJlIHRoYXQgbGlibHRkbF9jdl9mdW5jX2Rsb3BlbiBhbmQKCWxpYmx0ZGxfY3ZfbGliX2RsX2Rsb3BlbiBhcmUgc2V0IGFuZCB1c2VkIGluc3RlYWQgb2YgdGhlCglhY19jdl8gdmVyc2lvbnMuIEFsc28sIHVzZSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlCglpbnN0cmVhZCBvZiBnbG9iYWxfc3ltYm9sX3BpcGUuIFRoaXMgZml4ZXMgdGhlIGRldGVjdGlvbiBvZgoJZGxvcGVuIG9uIEJTRCBkZXJpdmVkIHBsYWZvcm1zIGFuZCBtb3JlIGltcG9ydGFudGx5IGZpeGVzCgluZWVkX3VzY29yZSBkZXRlY3Rpb24uCgoyMDAyLTA1LTA2ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEB0d2luc3VuLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpOiBoZWFkIC0xIC0+IHNlZCAxcSB0bwoJcG9ydCB0byBQT1NJWCAxMDAzLjEtMjAwMSBob3N0cywgbGlrZSB0ZXh0dXRpbHMgMi4wLjIxIHdpdGgKCV9QT1NJWDJfVkVSU0lPTj0yMDAxMTIuCgoyMDAyLTA1LTA2ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEB0d2luc3VuLmNvbT4KCgkqIGx0bWFpbi5pbjogRG9uJ3QgYXNzdW1lIHRoYXQgInNvcnQgKzIiIHdvcmtzLCBhcyBQT1NJWAoJMTAwMy4xLTIwMDEgc2F5cyB0aGF0ICJzb3J0ICsyIiBpcyBzdXBwb3NlZCB0byBzb3J0IHRoZSBmaWxlCgluYW1lZCAiKzIiLiAgQW4gZXhhbXBsZSBob3N0IHRoYXQgYmVoYXZlcyBsaWtlIHRoaXMgaXMKCXRleHR1dGlscyAyLjAuMjEgd2l0aCBfUE9TSVgyX1ZFUlNJT049MjAwMTEyLgoKMjAwMi0wNS0wNiAgTG9yZW4gSmFtZXMgUml0dGxlICA8cml0dGxlQGxhdG91ci5yc2NoLmNvbW0ubW90LmNvbT4KCgkqIGx0bWFpbi5pbjogRGV0ZWN0IGFuZCBoYW5kbGUgb2JqZWN0IG5hbWUgY29uZmxpY3RzIHdoaWxlCglwaWVjZXdpc2UgbGlua2luZyBhIHN0YXRpYyBsaWJyYXJ5LgoKMjAwMi0wNS0wMiAgRGF2ZSBWYXNpbGV2c2t5ICA8dGhldmFzQG1hYy5jb20+CgoJKiBsdG1haW4uaW46IFJlbW92ZSBjb252ZW5pZW5jZSBsaWJyYXJpZXMgZnJvbSBkZXBsaWJzIGZvciBEYXJ3aW4uCgoyMDAyLTA1LTAyICBGcml0eiBFbGZlcnQgIDxmZWxmZXJ0QHRvLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpOiBNb2RpZnkgYXJjaGl2ZV9leHBzeW1fY21kcwoJdG8gY2F0Y2ggcHJvcGVybHkgaGFuZGxlIGRsbCBhbGlhcyBzeW1ib2xzLgoKMjAwMi0wNC0yNCAgS2V2aW4gUnlkZSAgPHVzZXI0MkB6aXAuY29tLmF1PgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9TWVNfTUFYX0NNRF9MRU4pOiBVc2UgJGJ1aWxkX29zIG5vdCAkaG9zdF9vcy4KCjIwMDItMDQtMTQgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChDKysgbGlicmFyaWVzKTogRmluYWxseSB1cGRhdGVkIHRvIHJlZmxlY3QKCUxpYnRvb2wncyBzdXBwb3J0IGZvciBDKysuCgoyMDAyLTA0LTE0ICBKZWFuLUZyZWRlcmljIENsZXJlICA8amZyZWRlcmljLmNsZXJlQGZ1aml0c3Utc2llbWVucy5jb20+CgoJKiBsaWJ0b29sLm00OiBVcGRhdGUgc3VwcG9ydCBmb3IgRnVqaXN0dS1TaWVtZW5zIENvbXB1dGVycyAoRlNDKS4KCSogbHRtYWluLmluOiBBZGQgc3VwcG9ydCBmb3IgRUJDRElDIGJhc2VkIHN5c3RlbXMuCgoyMDAyLTA0LTA3ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogbGlidG9vbC5tNCAoTFRfQUNfUFJPR19TRUQpOiBSZWZhY3RvciwgcmVtb3ZpbmcgdGVtcG9yYXJ5IGRpcmVjdG9yeQoJYW5kIGNvbnNpc3RlbnQgdXNlIG9mIHRoZSBzaGVsbCB2YXJpYWJsZSBuYW1lc3BhY2UgImx0X2FjXyIuCgoyMDAyLTA0LTAyICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogbHRtYWluLmluOiBGaW5pc2ggdGhlIHRhZyBtYXRjaGluZyBsb2dpYyBzdGFydGVkIHllc3RlcmRheSBhbmQKCXJlZmFjdG9yIGl0IGEgYml0LgoKMjAwMi0wNC0wMSAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGx0bWFpbi5pbjogSGFuZGxlIHRoZSBjYXNlIHdoZW4gbm8gdGFnIGlzIGV4cGxpY2l0bHkgc2V0LCBhbmQKCSRiYXNlX2NvbXBpbGUgaGFzIGEgc3BhY2UgaW4gZnJvbnQgb2YgJENDLCBhbmQgcmV2ZXJ0IHRoZSBzZXR0aW5nCglvZiB0YWduYW1lIGNoZWNrZWQgaW4gb24gMjAwMi0zLTE0LgoKMjAwMi0wNC0wMSAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIHRhZ2RlbW8vZm9vLmNwcDogVXNlIEMrKyBJTyB0byBjYXRjaCBwcm9ibGVtcyBsaW5raW5nIHRvIEMrKwoJcnVudGltZSBsaWJyYXJpZXMuCgkqIHRhZ2RlbW8vbWFpbi5jcHA6IERpdHRvLgoKMjAwMi0wMy0xNiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogVE9ETzogUmVtb3ZlZCBvYnNvbGV0ZSBjb21tZW50cyBhYm91dCBSTVMnIHBhY2thZ2Ugc3lzdGVtLgoKMjAwMi0wMy0xNCAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCglsdG1haW4uaW46IFRvdWNoLXVwIHRvIG1ha2UgdGVzdHN1aXRlIHBhc3MsIGFuZCBkZWZhdWx0IHRhZ25hbWUKCXRvIENDIHdoZW4gaXQgaXNuJ3QgZXhwbGljaXRseSBzZXQuCgoyMDAyLTAzLTE0ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfUFJPR19DQ19DX08pOiBBbGJlcnQgQ2hpbidzIGdjaiBmaXguCgkoQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX1BJQyk6IFBlciBCb3RobmVyJ3MgY2hhbmdlIGZvciBub3QKCXVzaW5nIC1EUElDIHdpdGggZ2NqLgoKMjAwMi0wMy0xMSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBsdG1haW4uaW4oY29tcGlsZSk6IGJyaW5nIGEgdG91Y2ggb2Ygb3JkZXIgdG8gdGhlIG9wdGlvbiBwcm9jZXNzaW5nCgoyMDAyLTAyLTA5ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBORVdTOiBVcGRhdGVkLgoJKiBUSEFOS1M6IEFkZGVkIFJvYiBDb2xsaW5zIGFuZCBDaHVjayBXaWxzb24gZm9yIHRoZWlyIGN5Z3dpbgoJd29yay4KCglGcm9tIFJvYmVydCBDb2xsaW5zICA8cm9iZXJ0LmNvbGxpbnNAaXRkb21haW4uY29tLmF1PjoKCSogY29uZmlndXJlLmFjIChBQ19FWEVFWFQpOiBOZWVkZWQgZm9yIERPU2lzaCBzeXN0ZW1zLgoJKiBsaWJ0b29sLm00IChzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgpIFtjeWd3aW5dOiBTZXQgdG8geWVzCgl3aGVuIGNvbXBpbGluZyB3aXRoIGdjYy4KCShsdF9wcm9nX2NvbXBpbGVyX3BpYykgW2N5Z3dpbl06IE5vIGxvbmdlciBuZWVkcyB0aGUgLURETExfRVhQT1JUCgloYWNrLCBzbyB3ZSBqdXN0IHNheSB0aGUgcGljIGlzIHRoZSBkZWZhdWx0LgoJKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpIFtjeWd3aW5dOiBFeHRyYWN0IHN5bWJvbHMgZnJvbSBhCglsaWJyYXJ5IG5vcm1hbGx5LgoJW2N5Z3dpbl06IERlY2xhcmUgQysrIGNvbXBpbGVyIGNoYXJhY3RlcmlzaWNzIGZvciBnKyssIHRha2luZyBpbnRvCglhY2NvdW50IHRoZSBuZXcgYXV0by1pbXBvcnQgc3VwcG9ydCBpbiBjeWd3aW4gbGQuCgkqIGx0bWFpbi5pbiAoc3BlY2lhbGRlcGxpYnMpIFtjeWd3aW5dOiBCZSBjYXJlZnVsIGFib3V0CgllbGltaW5hdGluZyBkdXBsaWNhdGUgLWxnY2MncyBmcm9tIHRoZSBsaW5rIGxpbmUuCglbY3lnd2luXTogQmUgc21hcnRlciBhYm91dCAuZXhlIHN1ZmZpeGVzLgoJKiBkZW1vL2NvbmZpZ3VyZS5hYyAoQUNfRVhFRVhULCBBQ19MSUJUT09MX1dJTjMyX0RMTCk6ICBTdXBwb3J0CglET1Npc2ggc3lzdGVtcyBwcm9wZXJseS4KCSogZGVwZGVtby9jb25maWd1cmUuYWMgKEFDX0VYRUVYVCwgQUNfTElCVE9PTF9XSU4zMl9ETEwpOiAgRGl0dG8uCgkqIGRlbW8vTWFrZWZpbGUuYW0gKGRlcGxpYnMtY2hlY2spOiBBbGxvdyBmb3IgLmV4ZSBzdWZmaXguICBVc2UKCWhlbGxfc3RhdGljIGluc3RlYWQgb2YgaGVsbC5zdGF0aWMgZm9yIG11bHRpLWAuJyBpbmhpYml0ZWQgT1Nlcy4KCSogdGVzdHMvZGVtby1leGVjLnRlc3Q6IERpdHRvLgoJKiB0ZXN0cy9kZW1vLWluc3QudGVzdDogRGl0dG8uCgkqIGRlbW8vZm9vLmggW2N5Z3dpbl06IFNhbml0aXplIGN5Z3dpbiBkbGwgc3VwcG9ydC4KCSogZGVtby9mb28uYyAoX0xJQkZPT19DT01QSUxBVElPTl8pOiBObyBsb25nZXIgcmVxdWlyZWQuCgkqIGRlbW8vaGVsbG8uYyAoX0xJQkZPT19DT01QSUxBVElPTl8pOiBEaXR0by4KCSogZGVwZGVtby9NYWtlZmlsZS5hbSAoYmluX1BST0dSQU1TKTogVXNlIGRlcGRlbW9fc3RhdGljIGluc3RlYWQKCW9mIGRlcGRlbW8uc3RhdGljIGZvciBtdWx0aS1gLicgaW5oaWJpdGVkIE9TZXMuCgkqIHRlc3RzL2RlcGRlbW8tZXhlYy50ZXN0OiBEaXR0by4KCSogdGVzdHMvZGVwZGVtby1pbnN0LnRlc3Q6IERpdHRvLgoJKiBtZGVtby9NYWtlZmlsZS5hbSAoYmluX1BST0dSQU1TKTogIERpdHRvIGZvciBtZGVtby5zdGF0aWMuCgkqIHRlc3RzL2RyeXJ1bi50ZXN0OiBEaXR0by4KCSogdGVzdHMvbWRlbW8tZXhlYy50ZXN0OiBEaXR0by4KCSogdGVzdHMvbWRlbW8taW5zdC50ZXN0OiBEaXR0by4KCSogdGVzdHMvYnVpbGQtcmVsaW5rLnRlc3Q6ICBCZSBjYXJlZnVsIGFib3V0IHBvc3NpYmxlIC5leGUKCXN1ZmZpeGVzLgoJKiB0ZXN0cy9ub2luc3QtbGluay50ZXN0OiBBbGxvdyBmb3IgLmV4ZSBzdWZmaXguCgoyMDAyLTAyLTA3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglSZXZlcnRlZCBpbmNvcnJlY3QgcGF0Y2g6CgkyMDAxLTEwLTI0ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGx0bWFpbi5zaDogQWxsb3cgbGluayBhZ2FpbnN0IGFuIGFyY2hpdmUgd2hlbiBidWlsZGluZyBhCglzaGFyZWQgbGlicmFyeS4KCSogbGlidG9vbC5tNCAobHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QpOiBBbHdheXMgdXNlCglmaWxlX21hZ2ljIGZvciBMaW51eCBFTEYuCgoyMDAyLTAxLTMwICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUByaWNhcmRvLXVzLmNvbT4KCgkqIGxpYnRvb2wubTQgKExUX0FDX1BST0dfU0VEKTogUmVtb3ZlZCBhIG15c3RlcmlvdXMgbmV3bGluZS4KCjIwMDItMDEtMjggIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQHJpY2FyZG8tdXMuY29tPgoKCSogbGlidG9vbC5tNCAoTFRfQUNfUFJPR19TRUQpOiBOZXcgbWFjcm8gdGVzdHMgc2VkIGZvciB0cnVuY2F0aW9uIG9mCglvdXRwdXQuICBBQ19SRVFVSVJFIHRoZSBuZXcgbWFjcm8uCgkqIGx0bWFpbi5pbjogVXNlICRTRUQgcmF0aGVyIHRoYW4gcGxhbiBvbGQgc2VkLCBhcyBzZXQgYnkgdGhlIG5ldwoJbWFjcm8gTFRfQUNfUFJPR19TRUQuCgoyMDAyLTAxLTEwICBWb2xrZXIgQ2hyaXN0aWFuICA8dm9jQHNvZnQudW5pLWxpbnouYWMuYXQ+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoZmluZF9oYW5kbGVfY2FsbGJhY2spOiB0cmVhdCB0aGUgcmVzdWx0IG9mIGEgY2FsbAoJdG8gYWNjZXNzKDIpIGNvcnJlY3RseSB3aGVuIGRlY2lkaW5nIHdoZXRoZXIgYSBsaWJyYXJ5IGNhbiBiZSBmb3VuZAoJaW4gYSBkaXJlY3RvcnkgZnJvbSB1c2VyX3NlYXJjaF9wYXRoLgoKMjAwMi0wMS0wNyAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAcmljYXJkby11cy5jb20+CgoJKiBORVdTOiBGaXhlZCB3cm9uZyBwYXRoIGZvciB0ZXhpbmZvLnRleC4KCSogY29uZmlndXJlLmFjOiBCdW1wZWQgdmVyc2lvbiB0byAxLjRlLgoKCUdOVSBsaWJ0b29sIDEuNGQgd2FzIHJlbGVhc2VkLgoKCSogY29uZmlndXJlLmFjOiBCdW1wZWQgdmVyc2lvbiB0byAxLjRkLgoJKiBORVdTOiB1cGRhdGVkLgoJKiBjb25maWcuZ3Vlc3MsIGNvbmZpZy5zdWIsIHRleGluZm8udGV4OiAgU3luY2hyb25pc2VkIGZyb20KCWZ0cC5nbnUub3JnLgoKMjAwMS0xMi0wNiAgSmVucyBQZXRlcnNlbiAgPHBldGVyc2VuQHJlZGhhdC5jb20+CgoJKiBsdG1haW4uaW46IFJlcGxhY2UgYWxsIHRlc3QgIi1hInMgYnkgIiYmIHRlc3QiCglmb3IgcG9ydGFiaWxpdHkuCgoyMDAxLTExLTI4ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUByaWNhcmRvLXVzLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOKTogQ2hhbmdlIHRoZQoJZmFjdG9yIG9mIHNhZnRleSBhcyAzLzQgb2YgdGhlIHJlc3VsdCB3YXMgbm90IGxvdyBlbm91Z2guCgoyMDAxLTExLTI4ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29saXplLmluOiBUaGUgdGVzdCBmb3Igd2hldGhlciBBQ19QUk9HX0xJQlRPT0wgaXMgZGVmaW5lZAoJaW4gYWNsb2NhbC5tNCBoYWQgYml0cm90dGVkIHNsaWdodGx5LgoJUmVwb3J0ZWQgYnkgVGFrYWhpa28gS2F3YXNha2kgPFRha2FoaWtvX0thd2FzYWtpQGNpaS5jc2suY28uanA+CgoyMDAxLTExLTI3ICBEb25hbGQgRC4gQW5kZXJzb24gIDxkZGFAc2xlZXB5Y2F0LmNvbT4KCgkqIGx0bWFpbi5pbjogVHJlYXQgZnJlZWJzZCBsaWtlIG9wZW5ic2QsIGluIHRoYXQgLWxjLy1sY19yIHNob3VsZAoJbm90IGJlIGV4cGxpY2l0bHkgdXNlZC4gIGxkIGhhbmRsZXMgdGhpcyBkZXBlbmRpbmcgb24gdGhlIHByZXNlbmNlCglvZiB0aGUgLXB0aHJlYWQgb3B0aW9uLgoKMjAwMS0xMS0yNyAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAcmljYXJkby11cy5jb20+CgoJV2l0aCBoZWxwIGZyb20gTWljaGFlbCBNYXR6IDxtYXR6QGtkZS5vcmc+OgoJKiBsdG1haW4uaW46ICBBZGQgYSBuZXcgY29tbWFuZCBsaW5lIGFyZ3VtZW50CgktLXByZXNlcnZlLWR1cC1kZXBzIGZvciBwcmVzZXJ2aW5nIGR1cGxpY2F0ZQoJZGVwZW5kZW50IGxpYnJhcmllcy4KCSogbGlidG9vbC50ZXhpOiBEb2N1bWVudCBpdC4KCjIwMDEtMTEtMjcgIEtldmluIFJ5ZGUgIDx1c2VyNDJAemlwLmNvbS5hdT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOKTogU2VuZCAidGVzdCIKCXdhcm5pbmdzIHRvIC9kZXYvbnVsbCwgaGVscHMgRnJlZUJTRCBhbmQgbWF5YmUgb3RoZXJzLgoKMjAwMS0xMS0xNSAgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYnRvb2wubTQ6IHF1b3RlIExUQ0MgYmVjYXVzZSBhdXRvY29uZiBBQ19QUk9HX0NDX1NUREMKCW1hY3JvIG1pZ2h0IGFkZCB0byAkQ0MgaWYgb3B0aW9ucyBuZWVkZWQgYnkgY29tcGlsZXIgdG8KCWdyb2sgQU5TSS4KCjIwMDEtMTEtMTUgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglGcm9tIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az46CgkqIGx0bWFpbi5pbjogVHlwby4KCjIwMDEtMTEtMTUgICBNbyBEZUpvbmcgIDxzdXBlcm1vQGJheWFyZWEubmV0PgoKCSogbHRtYWluLmluOiBQbGFjZSBwYXJlbnMgYXJvdW5kIGEgZ2VuZXJhdGVkIHJlbGlua19jb21tYW5kCglzbyBpdCBpcyBydW4gaXMgYSBzdWJzaGVsbC4gVGhpcyBhdm9pZHMgYW4gaW5zdGFsbCBlcnJvcgoJd2hlcmUgbGlidG9vbCBlbmRlZCB1cCBpbiB0aGUgd3JvbmcgZGlyZWN0b3J5IGFmdGVyCglyZWxpbmtpbmcgYSAubGEgZmlsZS4KCjIwMDEtMTAtMzEgIFJhamEgUiBIYXJpbmF0aCAgPGhhcmluYXRoQGNzLnVtbi5lZHU+CgoJKiBjb25maWd1cmUuYWMgKHBrZ2RhdGFkaXIpOiBNb3ZlIHRoZSBpbnZvY2F0aW9uIG9mIEFDX0lOSVRfQVVUT01BS0UKCWJlZm9yZSB0aGUgdXNlIG9mICRQQUNLQUdFIGluICRwa2dkYXRhZGlyLgoJUmVwb3J0ZWQgYnkgQm9iIEZyaWVzZW5oYWhuIDxiZnJlaXNlbkBzaW1wbGUuZGFsbGFzLnR4LnVzPgoKMjAwMS0xMC0yOCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gVG9tIEJhdGVzICA8VG9tLkJhdGVzQGNvbXBhcS5jb20+OgoJKiBsaWJ0b29sLm00IFttaXBzLWNvbXBhcS1ub25zdG9wdXhdOiBOZXcgcG9ydC4KCSogbHRtYWluLmluIFttaXBzLWNvbXBhcS1ub25zdG9wdXhdOiBTdXBwb3J0CgkkdmVyc2lvbl90eXBlID09IG5vbnN0b3B1eC4KCjIwMDEtMTAtMjggIEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoZm9yZWFjaF9kaXJpbnBhdGgpOiBjaGFuZ2Ugc29tZSB0eXBlcyB0byBzaXplX3QKCWZyb20gaW50IGJlY2F1c2Ugc3RybGVuKCkgcmV0dXJucyBzaXplX3QuIGFyZ3pfbGVuIGNoYW5nZWQgdG8KCXNpemVfdCBiZWNhdXNlIGFyZ3ppemVfcGF0aCgpIHRha2VzIDNyZCBhcmd1bWVudCBhcyBzaXplX3QsIG5vdAoJaW50LgoJQmFzZWQgb24gbGludCBydW4gZnJvbSBCb2IgRnJpZXNlbmhhaG4gPGJmcmllc2VuQHNpbXBsZS5kYWxsYXMudHgudXM+CgoyMDAxLTEwLTI3ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfVEFHQ09ORklHKTogQ3JheSBzZWQgZG9lcyBub3QgYWxsb3cgY2hhcmFjdGVyCglzZXRzIHRvIGNvbnRhaW4gdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIuCglSZXBvcnRlZCBieSBLZXZpbiBSeWRlIDx1c2VyNDJAemlwLmNvbS5hdT4KCgkqIGx0ZGwubTQgKEFDX1dJVEhfTFRETCk6IE5ldyBtYWNybyB0byBhZGQgYC0td2l0aC1pbmNsdWRlZC1sdGRsJwoJb3B0aW9uIHRvIGNvbmZpZ3VyZSwgYnV0IHRvIGZpbmQgYW4gYXBwcm9wcmlhdGUgbHRkbCBsaWJyYXJ5IGFuZAoJYXBwZW5kIHRoZSByaWdodCBvcHRpb25zIHRvIGxpbmsgaXQuCgoyMDAxLTEwLTI0ICBLZXZpbiBSeWRlICA8dXNlcjQyQHppcC5jb20uYXU+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1BST0dfTERfU0hMSUJTKTogUmVtb3ZlIGEgc3RyYXkgJyBxdW90ZS4KCjIwMDEtMTAtMjQgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGx0bWFpbi5zaDogQWxsb3cgbGluayBhZ2FpbnN0IGFuIGFyY2hpdmUgd2hlbiBidWlsZGluZyBhCglzaGFyZWQgbGlicmFyeS4KCSogbGlidG9vbC5tNCAobHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QpOiBBbHdheXMgdXNlCglmaWxlX21hZ2ljIGZvciBMaW51eCBFTEYuCgoyMDAxLTEwLTEyICBHdWlkbyBEcmFoZWltICA8Z3VpZG9kLTIwMDFxM0BnbXguZGU+CgoJKiBsdGRsLm00OiBDaGFuZ2VkICJ1bmRlcnNjb2RlIHRvIHVuZGVyc2NvcmUiLgoKMjAwMS0xMC0wNiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogY29uZmlndXJlLmFjOiBHZW5lcmFsIG1vZGVybmlzYXRpb24gYW5kIGNsZWFudXAuCgkqIGNkZW1vL2NvbmZpZ3VyZS5hYzogRGl0dG8uCgkqIGRlbW8vY29uZmlndXJlLmFjOiBEaXR0by4KCSogZGVwZGVtby9jb25maWdydWUuYWM6IERpdHRvLgoJKiBsdGRsL2NvbmZpZ3VyZS5hYzogRGl0dG8uCgkqIGx0ZGxkZW1vL2NvbmZpZ3VyZS5hYzogRGl0dG8uCgkqIG1kZW1vL2NvbmZpZ3VyZS5hYzogRGl0dG8uCgkqIHBkZW1vL2NvbmZpZ3VyZS5hYzogRGl0dG8uCgkqIHRhZ2RlbW8vY29uZmlndXJlLmFjOiBEaXR0by4KCjIwMDEtMTAtMDQgIEFsYmVydCBDaGluLUEtWW91bmcgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jOiBNYXRjaCBmdW5jdGlvbiByZXR1cm4gdHlwZSB3aXRoIHByb3RvdHlwZQoJKGFkZCBzdGF0aWMgaW5pdGlhbGl6ZXIgdG8gZmlsZV9ub3RfZm91bmQpLgoKMjAwMS0wOS0zMCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlidG9vbC5tNCAoQUNfTElCTFRETF9DT05WRU5JRU5DRSk6IHMvSU5DTFRETC9MVERMSU5DTC8gZm9yCgljb25zaXN0ZW5jeSB3aXRoIGdldHRleHQncyBJTlRMSU5DTC4gIEtlZXAgdGhlIG9sZCBzeW1ib2wgdG9vIGZvcgoJYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCgkoQUNfTElCTFRETF9JTlNUQUxMQUJMRSk6IERpdHRvLgoJKiBkb2MvbGlidG9vbC50ZXhpIChEaXN0cmlidXRpbmcgbGlibHRkbCk6ICBBZGp1c3QgZG9jdW1lbnRhdGlvbi4KCjIwMDEtMDktMjIgIEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsdGRsLm00IChBQ19MVERMX0RMTElCKTogRXZlbiB0aG91Z2ggSFAtVVggMTAuMjAgYW5kIDExLjAwCglzdXBwb3J0IHNobF9sb2FkICphbmQqIGRsb3BlbiwgZGxvcGVuIHdvcmtzIGNvcnJlY3RseSBvbmx5Cgl3aXRoIGEgcGF0Y2guIEJlY2F1c2Ugd2Ugd2FudCB0byBhdm9pZCB0aGUgc2l0dWF0aW9uIHdoZXJlIHdlCglidWlsZCBvbiBhIHN5c3RlbSB3aXRoIHRoZSBwYXRjaCBidXQgZGVwbG95IG9uIGEgc3lzdGVtIHdpdGhvdXQsCgl1c2Ugc2hsX2xvYWQgZXhjbHVzaXZlbHkgaWYgZm91bmQuCgoyMDAxLTA5LTIyICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfRklMRV9MVERMTF9DKTogQmUgY2FyZWZ1bGUgdGhhdCB0aGUgc3RhcnQKCW1hcmtlciBzZWFyY2hlZCBmb3IgYnkgc2VkIG11c3Qgc3RhcnQgaW4gY29sdW1uIDAuCgkoX0xUX0FDX0ZJTEVfSU1QR0VOX0MpOiBEaXR0by4KCVJlcG9ydGVkIGJ5IFRvciBMaWxscXZpc3QgPHRtbEBpa2kuZmk+CgoyMDAxLTA5LTIyICBUb3IgTGlsbHF2aXN0ICA8dG1sQGlraS5maT4KCgkqIGxpYnRvb2wubTQgW21pbmd3KiBjeWd3aW4qXTogU21hbGwgaW1wcm92ZW1lbnQgZm9yIG1pbmd3LWhvc3RlZAoJdG9vbCBzdXBwb3J0ICh3aGlsZSBzdGlsbCBydW5uaW5nIGxpYnRvb2wgb24gY3lnd2luKS4gSW4gdGhhdCBjYXNlCglQQVRIX1NFUEFSQVRPUiBpcyAnOicsIGJ1dCBnY2MgLXByaW50LXNlYXJjaC1kaXJzIHN0aWxsIHByaW50cyBpdHMKCXNlYXJjaCBwYXRoIHdpdGggJzsnIGFzIHNlcGFyYXRvci4KCShBQ19MSUJUT09MX1JDLCBBQ19MSUJUT09MX0xBTkdfUkNfQ09ORklHKTogQWRkIHN1cHBvcnQgZm9yIC5yYwoJZmlsZXMgKFdpbmRvd3MgcmVzb3VyY2UgZmlsZXMpLCBjb21waWxlZCBieSB0aGUgcmVzb3VyY2UgY29tcGlsZXIKCSh3aW5kcmVzIGluIG1pbmd3KSB0byAubyBmaWxlcy4KCShBQ19QUk9HX05NKTogTWlub3IgYnVnIGZpeCBmb3IgJFBBVEggZWxlbWVudHMgd2l0aCBzcGFjZXMgaW4KCXRoZW0uCgkqIGNvbmZpZ3VyZS5hYzogVXNlIExUX0FDX1BST0dfUkMuCgkqIGx0bWFpbi5pbjogQ2hlY2sgZm9yIC5yYyBmaWxlcy4KCSogTkVXUzogVXBkYXRlZC4KCgkqIGx0bWFpbi5pbjogQWRkIGEgc3BhY2UgdG8gJGJhc2VfY29tcGlsZSBpbiB0aGUgY2FzZSBzdGF0ZW1lbnQsCglhcyB0aGUgY2FzZSBsYWJlbHMgY2hlY2tzIGZvciB0cmFpbGluZyBzcGFjZXMsIGJ1dCB0aGVyZSBhcmVuJ3QKCW5lY2Vzc2FyaWx5IGluICRiYXNlX2NvbXBpbGUuCgoyMDAxLTA5LTIyICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbGlidG9vbC5tNDogV2hlbiBzZXR0aW5nIGFyY2hpdmVfY21kcyBmb3IgQ0MsIGRvbid0Cgl0ZXN0IGZvciAkR1hYIGJ1dCBmb3IgJEdDQyBvbiBIUC1VWC4gSW5kZW50YXRpb24gZml4ZXMuCgoyMDAxLTA5LTIxICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBUb3IgTGlsbHF2aXN0IDx0bWxAaWtpLmZpPjoKCSogbHRtYWluLmluIFtjeWd3aW4qIG1pbmd3Kl06IFRha2UgY2FyZSBvZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuCgl3cmFwcGVyIHNjcmlwdCBuYW1lIGFuZCBleGVjdXRhYmxlIG5hbWUuCgoJKiBsaWJ0b29sLm00IChhcmNoaXZlX2NtZHMpIFtkYXJ3aW4xLlswLTJdXTogRGFyd2luIHVzZXMgenNoLTMuMS42Cglmb3IgL2Jpbi9zaCwgYW5kIHRoYXQgc2hlbGwgZG9lcyBub3QgaGFuZGxlIGVzY2FwZWQgcXVvdGVzCglwcm9wZXJseSB5ZXQuCglSZXBvcnRlZCBieSBDaHJpc3RvcGhlciBQZmlzdGVyZXIgPGNwQGNocmlzcC5kZT4KCjIwMDEtMDktMjEgIEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuYzogTWF0Y2ggZnVuY3Rpb24gcmV0dXJuIHR5cGUgd2l0aCBwcm90b3R5cGUKCShhZGQgc3RhdGljIGluaXRpYWxpemVyIHRvIHNvbWUgZnVuY3Rpb25zKSB0byBwcmV2ZW50IHdhcm5pbmdzCglmcm9tIEhQLVVYIGNjLgoKMjAwMS0wOS0yMSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlibHRkbC9sdGRsLmM6IEFkZGVkIHN1cHBvcnQgZm9yIGRtYWxsb2MsIGFuZCB1bmNvdmVyZWQgc29tZQoJbWVtb3J5IGJ1Z3MgYXMgYSByZXN1bHQuCgoyMDAxLTA5LTIxICBBbGJlcnQgQ2hpbiAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYnRvb2wubTQ6IERvbid0IGluY2x1ZGUgbWFpbigpIHdoZW4gdGVzdGluZyBmb3IgY29tbWFuZCB0bwoJcGFyc2UgJE5NIG91dHB1dCBiZWNhdXNlIHNvbWUgQysrIGNvbXBpbGVycyBkb24ndCBhbGxvdyB5b3UgdG8KCXRha2UgdGhlIGFkZHJlc3Mgb2YgbWFpbiAoZS5nLiBIUC1VWCBhQ0MpLgoKCSogbGlidG9vbC5tNDogU29tZSB1c2VzIG9mICRHWFggd2VyZSB1bnF1b3RlZCwgYnV0IEdYWCBpcyBlaXRoZXIKCU5VTEwgb3IgeWVzLiAgVXNlICIkR1hYIi4KCjIwMDEtMDktMTMgIEFzc2FyIFdlc3Rlcmx1bmQgIDxhc3NhckBzaWNzLnNlPgoKCSogbHRkbC5tNCAoQUNfTFRETF9ETExJQik6IGNhbGwgZGxvcGVuIHdpdGggYXJndW1lbnRzIHNvIHRoZSB0ZXN0Cglkb2VzIG5vdCBmYWlsIGR1ZSB0byBhIHByb3RvdHlwZSBpbiBkbGZjbi5oCgoyMDAxLTA5LTEzICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsdGRsLm00IChBQ19DSEVDS19IRUFERVJTKTogQ2hlY2sgZm9yIGFzc2VydC5oLgoJKiBsaWJsdGRsL2x0ZGwuYzogIElmIG5vdCwgZGlzYWJsZSBhc3NlcnRpb25zIG1hbnVhbGx5LgoKMjAwMS0wOS0xMSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogYm9vdHN0cmFwOiBCZSByb2J1c3QgdG8gaGF2aW5nIG5vIGZpbGVzIHRoYXQgbmVlZCByZW1vdmluZy4KCgkqIGxpYmx0ZGwvY29uZmlndXJlLmFjIChBTV9JTklUX0FVVE9NQUtFKTogQnVtcCBsaWJsdGRsIHZlcnNpb24gdG8KCTEuMi4KCSogbGlibHRkbC9NYWtlZmlsZS5hbSAobGlibHRkbF9sYV9MREZMQUdTKTogIEJ1bXAgbGlidG9vbCBsaWJyYXJ5Cgl2ZXJzaW9uIGluZm8gdG8gNDowOjEuCgoyMDAxLTA5LTExICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00OiBObyBuZWVkIHRvIHVuZGVmaW5lKFtzeW1ib2xzXSksIHByb3BlciBxdW90YXRpb24gaXMKCWVub3VnaC4KCjIwMDEtMDktMTAgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQ6IENWUyBBdXRvY29uZiBndWFyYW50ZWVzIGEgZGVjZW50IGRlZmF1bHQgSUZTLCBzbwoJdGhlcmUgaXMgbm8gbmVlZCBmb3IgdXMgdG8gcHJlc2V0IGl0IGFueW1vcmUuCglCZSBjYXJlZnVsIG5vdCB0byBzZXQgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IiIGZvciBQQVRICglzcGxpdHRpbmcsIG90aGVyd2lzZSBzcGFjZXMgaW4gZGlyZWN0b3J5IG5hbWVzIHdpbGwgYmUgbG9zdC4KCVVzZSAkUEFUSF9TRVBBUkFUT1IuLi4gZG9uJ3QgcmVseSBvbiAkYWNfcGF0aF9zZXBhcmF0b3IsIHdoaWNoIHdhcwoJYW4gYXV0b2NvbmYgaW50ZXJuYWwgdW50aWwganVzdCBub3csIHdoZW4gaXQgZGlzYXBwZWFyZWQhCgkqIGx0bWFpbi5pbjogRGVmYXVsdCBJRlMgb25jZSwgYXQgdGhlIHN0YXJ0LgoJUmVwb3J0ZWQgYnkgQWtpbSBEZW1haWxsZSA8YWtpbUBlcGl0YS5mcj4KCjIwMDEtMDktMTAgICBCcmFkICA8YnJhZEBjb21zdHlsZS5jb20+CgoJKiBsaWJ0b29sLm00IChBQ19ERVBMSUJTX0NIRUNLX01FVEhPRCk6IE1pc3NlZCBhbiBpbnN0YW5jZSBvZgoJQXV0b2NvbmYgc3F1YXJlIGJyYWNrZXQgcXVvdGluZyBzdHlsZSBub3JtYWxpc2F0aW9uLgoKCSogbHRtYWluLmluICgtbGNfcik6IFN0eWxlIGltcHJvdmVtZW50LgoKCSogZG9jL2xpYnRvb2wudGV4aTogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gbHRjb25maWcuCgkqIHRlc3RzL3F1b3RlLnRlc3Q6IHMvbHRjb25maWcvXCQwLwoKMjAwMS0wOS0wOSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlidG9vbC5tNDogVXNlIEF1dG9jb25mIHNxdWFyZSBicmFja2V0IHF1b3Rpbmcgc3R5bGUKCWNvbnNpc3RlbnRseSB0aHJvdWdob3V0LgoKMjAwMS0wOS0wOCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogYm9vdHN0cmFwOiBDbGVhbnVwIGBhdXRvbTR0ZScgYW5kIGBsaWJ0b29sJyBzbyB0aGF0IHdlIGRvbid0CglnZXQgY2F1Z2h0IGJ5IHNvbWV0aGluZyBmcm9tIGEgcHJldmlvdXMgYnVpbGQuCgoJKiBsaWJ0b29sLm00IChhcmNoaXZlX2NtZHMsIGFyY2hpdmVfZXhwc3ltX2NtZHMpIFtzb2xhcmlzKl06IFJldmVydAoJbXkgMjAwMS0wOS0wNiBwYXRjaC4KCShub191bmRlZmluZWRfZmxhZylpIFtzb2xhcmlzKl06IFJldmVydCBBbGV4YW5kcmUncyAyMDAxLTA0LTExIHBhdGNoLgoKMjAwMS0wOS0wNyAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlibHRkbC9sdGRsLmMgKGZvcmVhY2hfZGlyaW5wYXRoKTogYXJnel9sZW4gc2hvdWxkIGJlIGEgc2l6ZV90LgoJUmVwb3J0ZWQgYnkgQWxiZXJ0IENoaW4gPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCjIwMDEtMDktMDYgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpIFtzb2xhcmlzKl06IFR5cG8uIHMvR1hYL0dDQy8uCgoJKiBsaWJ0b29sLm00IChhcmNoaXZlX2NtZHMsIGFyY2hpdmVfZXhwc3ltX2NtZHMpIFtzb2xhcmlzKl06IENoYW5naW5nCglub191bmRlZmluZWRfZmxhZyBmcm9tIGAteiB0ZXh0JyB0byBgLXogZGVmcycgKHNlZSBlbnRyeSBiZWxvdyBhdAoJMjAwMS0wNC0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+KSBoYXMgYSBwcm9ibGVtLgoJd2hlbiBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkgd2l0aCBnY2MgY2FsbGluZyAvdXNyL2Njcy9iaW4vbGQgKGVnLgoJdGhlIGdjYyBzdXBwbGllZCB3aXRoIFNvbGFyaXMgOCBjb21wYW5pb24gQ0QpLCB1c2luZyB0aGUgZmxhZwoJLW5vLXVuZGVmaW5lZCwgc2hhcmVkIGxpYnJhcnkgbGlua2luZyB3aWxsIGFsd2F5cyBmYWlsIGJlY2F1c2Ugb2YKCXRoZSB1bnJlc29sdmVkIHN5bWJvbHMgZnJvbSBsaWJnY2MuYS4gIENvbnNlcXVlbnRseSB3ZSBoYXZlIHRvCglwcm92aWRlIGEgcGF0aCB0byBsaWJnY2MuYSB3aGVuIGxpbmtpbmcgc2hhcmVkIGxpYnJhcmllcyBpbgoJY29uanVuY3Rpb24gd2l0aCAtbm8tdW5kZWZpbmVkIQoKCUZyb20gTWljaGFlbCBQcnVldHQgPG1wcnVldHRAZW5nci5zZ2kuY29tPjoKCSogbGlibHRkbC9sdGRsLmMgKGZpbmRfbW9kdWxlKTogYDAnIHZhbHVlZCBhcmd1bWVudHMgdG8KCXRyeWFsbF9kbG9wZW5fbW9kdWxlKCkgbXVzdCBiZSBleHBsaWNpdGx5IGNhc3QgdG8gYXZvaWQgY29tcGlsZXIKCXdhcm5pbmdzIG9uIHNvbWUgZW52aXJvbm1lbnRzLgoKCUZyb20gRGFuaWVsIEpvaG5zb24gPGRhbmllbGo3QG1hYy5jb20+OgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1BST0dfTERfU0hMSUJTKSBbZGFyd2luKl06IE1vdmUgZnJvbSBHTlUKCWxkIHNlY3Rpb24gdG8gbm9uLUdOVSBsZCBzZWN0aW9uLgoKMjAwMS0wOS0wNSAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAcmljYXJkby11cy5jb20+CgoJKiBwZGVtby9NYWtlZmlsZS5hbSAoaGVsbGRsKTogIEF1dG9tYWtlIDEuNCBjYW4ndCBmaW5kIHRoZSB0YXJnZXQKCWlmIHdlIHVzZSBoZWxsZGwkKEVYRUVYVCksIGFuZCBBdXRvbWFrZSAxLjUgYmFyZnMgdW5sZXNzIHdlIGRvLgoJVXNpbmcgYm90aCB0YXJnZXRzIHRvIHRoZSBsZWZ0IG9mIHRoZSBjb2xvbiBzZWVtcyB0byB3b3JrIHRob3VnaCEKCjIwMDEtMDktMDMgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGRlbW8vTWFrZWZpbGUuYW0gKGhlbGxkbCk6ICBBdXRvbWFrZSAxLjQgY2FuJ3QgZmluZCB0aGUgdGFyZ2V0CglpZiB3ZSB1c2UgaGVsbGRsJChFWEVFWFQpLCBhbmQgQXV0b21ha2UgMS41IGJhcmZzIHVubGVzcyB3ZSBkby4KCVVzaW5nIGJvdGggdGFyZ2V0cyB0byB0aGUgbGVmdCBvZiB0aGUgY29sb24gc2VlbXMgdG8gd29yayB0aG91Z2ghCgoyMDAxLTA5LTAzICBCcmFkICA8YnJhZEBjb21zdHlsZS5jb20+CgoJKiBsdGRsLm00IFtBQ19MVERMX1NZU19ETE9QRU5fREVQTElCU106IFRlYWNoIGx0ZGwgYWJvdXQgdGhlCgliZWhhdmlvciBvZiBPcGVuQlNEJ3MgZGxvcGVuKCkuCgoyMDAxLTA5LTAzICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBNYXJpdXMgVm9sbG1lciA8bXZvQHphZ2Fka2EucGluZy5kZT46CgkqIGxpYmx0ZGwvbHRkbC5jICh0cnlhbGxfZGxvcGVuX21vZHVsZSk6IERvbid0IGZvcmdldCB0byBwcm9wb2dhdGUKCWVycm9ycyBvdmVyIHJlY3Vyc2UgbGV2ZWxzLgoKMjAwMS0wOS0wMyAgQnJhZCAgPGJyYWRAY29tc3R5bGUuY29tPgoKCSogbGlidG9vbC5tNCBbb3BlbmJzZCpdOiBNb3JlIGltcHJvdmVtZW50cyB0byB0aGUgT3BlbkJTRCBwb3J0LgoKMjAwMS0wOS0wMiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gQWxiZXJ0IENoaW4gPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT46CgkqIGxpYnRvb2wubTQgKF9MVF9BQ19MQU5HX0NfQ09ORklHKSBbYWl4NCpdOiBCZSBjYXJlZnVsIHdpdGgKCXNoYXJlZCBuYW1lc3BhY2VzIGZvciBzdGF0aWMgYW5kIHNoYXJlZCBsaWJzLgoJKEFDX0xJQlRPT0xfRExPUEVOX1NFTEYpOiBJZiBhbGwgZWxzZSBmYWlscywgdHJ5IGRsZF9saW5rIGZyb20gR05VCglETEQuCgoyMDAxLTA5LTAyICBDaHJpc3RvcGhlciBQZmlzdGVyZXIgPGNwQGNocmlzcC5kZT4KCgkqIGxpYnRvb2wubTQsIGx0bWFpbi5pbjogTGlua2VyIGZsYWcgYW5kIHZlcnNpb24gbnVtYmVyaW5nIGZpeGVzCglmb3IgZGFyd2luLgoKMjAwMS0wOS0wMiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUJhc2VkIG9uIGEgcGF0Y2ggZnJvbSBNYXJpdXMgVm9sbG1lciA8bXZvQHphZ2Fka2EucGluZy5kZT46CgkqIE5FV1M6IHVwZGF0ZWQuCgkqIGx0ZGwubTQgKEFDX0xJQl9MVERMKTogQ2hlY2sgZm9yIHVuaXN0ZC5oLgoJKiBsdGRsLmM6IEluY2x1ZGUgdW5pc3RkLmggaWYgaXQgZXhpc3RzLgoJKExURExfU0VBUkNIUEFUSF9WQVIpOiBNYWNybyB0byBwcmV2ZW50IGhhcmRjb2RpbmcKCSJMVERMX0xJQlJBUllfUEFUSCIuCgkoTFRETF9BUkNISVZFX0VYVCk6IE1hY3JvIHRvIHByZXZlbnQgaGFyZGNvZGluZyAiLmxhIi4KCShhcmNoaXZlX2V4dCk6IEhhdmUgb25seSBvbmUgY29weSBvZiAiLmxhIiBpbiB0aGUgcmVhZG9ubHkKCXNlZ21lbnQgb2YgdGhlIGNvbXBpbGVkIGxpYnJhcnkuCgkoZmluZF9oYW5kbGVfY2FsbGJhY2spOiBEb24ndCBib3RoZXIgdHJ5aW5nIHRvIGRsb3BlbiB0aGUgZmlsZSBpZgoJaXQgZG9lc24ndCBleGlzdC4KCShmaW5kX2hhbmRsZSk6IERvbid0IGJvdGhlciBzZWFyY2hpbmcgZm9yIGZpbGVzIGlmIG5vIHNlYXJjaF9wYXRoCgl3YXMgc3VwcGxpZWQuCgkoZmlsZV9ub3RfZm91bmQpOiBBIG5ldyBmdW5jdGlvbiB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgbGFzdAoJZXJyb3Igd2FzIGR1ZSB0byBhIGZpbGUgbm90IGZvdW5kIGNvbmRpdGlvbi4KCSh0cnlfZGxvcGVuKTogUmVuYW1lZCBmcm9tIGx0X2Rsb3BlbigpIGFuZCBjaGFuZ2VkIHRvIGhhdmUgdGhlCglzYW1lIGZvb3RwcmludCBhcyB0cnlhbGxfZGxvcGVuLiAgVGhpcyBpbnZvbHZlZCBhIG1pbm9yIHJld3JpdGUgb2YKCW11Y2ggb2YgdGhlIGludGVybmFscyBvZiB0aGlzIGZ1bmN0aW9uLgoJKGx0X2Rsb3Blbik6IEEgbmV3IGZ1bmN0aW9uIHdyYXBwZWQgYXJvdW5mIHRyeV9kbG9wZW4oKS4KCShsdF9kbG9wZW5leHQpOiBJZiBhIGZpbGUgYWxyZWFkeSBoYXMgYSBzdWl0YWJsZSBleHRlbnNpb24sIGRvbid0Cglib3RoZXIgYWRkaW5nIGFkZGl0aW9uYWwgZXh0ZW5zaW9ucyBhbmQgdHJ5aW5nIHRvIG9wZW4gdGhvc2UuCglUaWR5IHVwIHRoZSByZXN0IG9mIHRoZSBjb2RlIHRvIHByZXZlbnQgY29udGludWVkIHNlYXJjaGluZyB3aXRoCglhbiBldmVudHVhbCBGSUxFX05PVF9GT1VORCB3aGVuIGEgZ2VudWluZSBmYWlsdXJlIGVhcmxpZXIgaW4gdGhlCglzZWFyY2ggcHJvY2VzcyBjb3VsZCBiZSBsZWdpdGltYXRlbHkgcmVwb3J0ZWQuCgoJKiBkZW1vL01ha2VmaWxlLmFtIChoZWxsZGwkKEVYRUVYVCkpOiBBdXRvbWFrZS0xLjUgbWFkZSBtZSBjaGFuZ2UKCXRoaXMgZnJvbSBqdXN0IGBoZWxsZGwnLgoKMjAwMS0wNy0zMSAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAcmljYXJkby11cy5jb20+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1BST0dfTERfU0hMSUJTKSBGaXhlZCBhIHByb2JsZW0KCXdpdGggZXhwb3J0X3N5bWJvbHNfY21kcyBub3QgYmVpbmcgc2V0IGZvciBDWFggdGFncywgYW5kCglub3QgYmVpbmcgcHJvcGVybHkgc2V0IGZvciBhbnkgdGFnIHVuZGVyIEFJWC9Qb3dlci4KCjIwMDEtMDgtMTkgIE9zc2FtYSBPdGhtYW4gIDxvc3NhbWFAdWNpLmVkdT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHKTogQ29ycmVjdGVkIGFuZCBpbXByb3ZlZAoJICBlcnJvciBtZXNzYWdlIHRoYXQgaXMgZGlzcGxheWVkIHdoZW4gdGhlcmUgd2FzIGEgcHJvYmxlbQoJICBjb21waWxpbmcgdGhlIEMrKyB0ZXN0IHByb2dyYW0uICBJdCBzdGlsbCBtZW50aW9uZWQgdGhlIG5vdwoJICBub24tZXhpc3RlbnQgYGx0Y2YtY3h4LnNoJyBmaWxlLgoKCSogZG9jL2xpYnRvb2wudGV4aSAoTFRETF9TRVRfUFJFTE9BREVEX1NZTUJPTFMpOiBSZW1vdmVkCgkgIHBhcmVudGhlc2VzIGF0IGVuZCBvZiBzdGFydGluZyAiZGVmbWFjIiBsaW5lLCBhcyBwb2ludGVkIG91dCBieQoJICBtYWtlaW5mby4KCjIwMDEtMDgtMTggIEJyYWQgIDxicmFkQGNvbXN0eWxlLmNvbT4KCgkqIGx0bWFpbi5pbjogRG8gbm90IHJlbW92ZSAtbG0gZnJvbSBkZXBsaWJzIGZvciBPcGVuQlNELgoKMjAwMS0wOC0xNiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlibHRkbC9sdGRsLmMgKGFyZ3pfY3JlYXRlX3NlcCk6IERvbid0IGZvcmdldCB0byBpbmNsdWRlIHRoZQoJdGVybWluYXRpbmcgJ1wwJyB3aGVuIGNvdW50aW5nIGFyZ3pfbGVuLgoJKGFyZ3pfY3JlYXRlX3NlcCk6IFdoZW4gY2Fub25pY2FsaXppbmcgYXJneiwgZG9uJ3QgZm9yZ2V0IHRvIGNvcHkKCXRoZSB0ZXJtaW5hdGluZyAnXDAnLCBpbmNhc2UgY2Fub25pY2FsaXphdGlvbiBoYXMgc2hvcnRlbmVkIGFyZ3ouCgkoYXJnel9zdHJpbmdpZnkpOiBEb24ndCBjb3ZlcnQgdGhlIGZpbmFsICdcMCcgdG8gYSBzZXBhcmF0b3IuCgoyMDAxLTA4LTE1ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxoYW5kbGVfbmV4dCk6IE5vdyB3ZSBjYW4gbG9vcCB0aHJvdWdoIGFsbAoJbG9hZGVkIG1vZHVsZSBoYW5kbGVzIGFzIG9yaWdpbmFsbHkgaW50ZW5kZWQuCgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxzZXRlcnJvcik6IE9vcHMuICBUaGlzIG5ldmVyIHdvcmtlZAoJZWl0aGVyLCBkdWUgdG8gYSBwYWlyIG9mIHR5cG9zLiAgTm93IGZpeGVkLgoKCSogbGlibHRkbC9sdGRsLmMgKE5fRUxFTUVOVFMpOiAgRGVsZXRlZC4gIEhvdyBjb21lIG5vYm9keSBub3RpY2VkCgl0aGVyZSB3YXMgbm8gd2F5IHRoaXMgY291bGQgaGF2ZSBldmVyIHdvcmtlZD8KCShsdF9kbGNhbGxlcl9zZXRfZGF0YSk6IE5vdyB0aGF0IHZhbGlkIGNhbGxlcl9pZHMgbXVzdCBiZQoJbm9uLXplcm8sIGFsbG9jYXRlIGFuIGFkZGl0aW9uIGVudHJ5IGluIHRoZSBjYWxsZXJfZGF0YSB2ZWN0b3IgYW5kCgl1c2UgYSB6ZXJvIHZhbHVlZCBrZXkgYXMgdGhlIGVuZCBtYXJrZXIuCgkobHRfZGxjYWxsZXJfZ2V0X2RhdGEpOiBJdGVyYXRlIHVwIHRvIHRoZSBlbmQgbWFya2VyIGluIG9uZSBwYXNzLgoKMjAwMS0wOC0xNCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2RsY2FsbGVyX3JlZ2lzdGVyKTogQ2FsbGVyIGlkcyBhcmUgYWxsb2NhdGVkCglzdGFydGluZyBmcm9tIHZhbHVlIGAxJywgc28gdGhhdCBjbGllbnRzIGNhbiB1c2UgYSB2YWx1ZSBvZiB6ZXJvCgl0byBpbmRpY2F0ZSB0aGF0IGxpYmx0ZGwgaGFzIG5vdCB5ZXQgaW5pdGlhbGlzZWQuCgoJKiBsdG1haW4uaW4gKGV4ZWNfY21kKTogRml4IHF1b3RpbmcgaW4gZXhlY3V0ZSBtb2RlIHNvIHRoYXQgdGhlCglkb3VibGUgcXVvdGVzIGFkZGVkIGJ5IGxpYnRvb2wgKHRvIHByZXZlbnQgbG9zc2FnZSB3aXRoIGVtYmVkZGVkCglzcGFjZXMgaW4gZmlsZW5hbWVzIGV0Yy4pIGFyZSBub3QgaW50ZXJwcmV0ZWQgYXMgbGl0ZXJhbHMgYnkgdGhlCglzaGVsbC4KCjIwMDEtMDgtMTMgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYmx0ZGwvbHRkbC5jIChmaW5kX2ZpbGVfY2FsbGJhY2spOiBGaXggYSBtdWx0aXBsZSBmcmVlKCkKCWJ1Zy4KCSh0cnlhbGxfZGxvcGVuX21vZHVsZSk6IFJlbW92ZSBzb21lIHVudXNlZCB2YXJpYWJsZXMuCgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxpbnNlcnRzZWFyY2hkaXIpOiBDYWxjdWxhdGUgdGhlIGFkZHJlc3MKCW9mIHRoZSBlbmQgb2YgdXNlcl9zZWFyY2hfcGF0aCBjb3JyZWN0bHkuCgoJKiBsaWJsdGRsL2x0ZGwuYyAocnBsX2FyZ3pfc3RyaW5naWZ5KTogTmV3IGZhbGxiYWNrIGltcGxlbWVudGF0aW9uLgoJKiBsdGRsLm00IChBQ19MVERMX0ZVTkNfQVJHWik6ICBUZXN0IGZvciBhcmd6X3N0cmluZ2lmeSBpbiBsaWJjLgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfYXJnel9pbnNlcnRpbm9yZGVyKTogUmVuYW1lZCBmcm9tCglsdF9hcmd6X2luc2VydCB0byBtYWtlIHJvb20gZm9yLi4uCgkobHRfYXJnel9pbnNlcnQpOiBXcmFwcyBhcmd6X2luc2VydCB3aXRoIGxpYmx0ZGwgZXJyb3IgaGFuZGxpbmcuCgkobHRfZGxwYXRoX2luc2VydGRpcik6IEluc2VydCBuZXcgcGF0aCBlbGVtZW50cyBpbnRvIGFuCglhcmd6aXplZCBwYXRoLgoJKGx0X2RsaW5zZXJ0c2VhcmNoZGlyKTogTmV3IGZ1bmN0aW9uIHRvIGluc2VydCBuZXcgc2VhcmNoCglkaXJlY3RvcmllcyBhbnl3aGVyZSBpbnRvIHVzZXJfc2VhcmNoX3BhdGggdXNpbmcgdGhlIGFib3ZlLgoJKGx0X2RsYWRkc2VhcmNoZGlyKTogUmV3cml0dGVuIHRvIHVzZSBsdF9kbHBhdGhfaW5zZXJ0ZGlyLgoJKiBsaWJsdGRsL2x0ZGwuaCAobHRfZGxpbnNlcnRzZWFyY2hkaXIpOiBQcm90b3R5cGUgZm9yIGV4cG9ydC4KCSogZG9jL2xpYnRvb2wudGV4aSAoTGlibHRkbCBpbnRlcmZhY2UpOiBEb2N1bWVudCBpdC4KCSogTkVXUzogVXBkYXRlZCwKCjIwMDEtMDgtMDcgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglGcm9tIEFsYmVydCBDaGluIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+OgoJKiBsdG1haW4uaW4gW2lyaXgqXTogJHdpdGhfZ2NjIGlzIGVpdGhlciAieWVzIiBvciAiIiAoZW1wdHkgc3RyaW5nKQoJd2l0aCBjdXJyZW50IGF1dG9jb25mLCBzbyB3ZSBuZWVkIHRvIGJlIHJvYnVzdCB0byB0aGF0IHdoZW4gdGVzdGluZwoJaXQsCgoyMDAxLTA4LTA2ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBCcmFkIDxicmFkQGNvbXN0eWxlLmNvbT46CgkqIGxpYnRvb2wubTQgKGRlcGxpYnNfY2hlY2tfbWV0aG9kKSBbYWl4Kl06IFJlbW92ZWQgcmVkdW5kYW50IHNldHRpbmcKCW9mIHRoaXMgdmFyaWFibGUuCgoyMDAxLTA4LTA1ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJsdGRsL2x0ZGwuYyAobG9hZF9kZXBsaWJzKTogSW5zZXJ0IG1pc3NpbmcgMXN0IGFyZ3VtZW50IHRvCglMVF9FTUFMTE9DLgoKMjAwMS0wOC0wNSAgVGltIFZhbiBIb2xkZXIgIDx0aW0udmFuLmhvbGRlckBwYW5kb3JhLmJlPgoKCSogbHRkbC5tNDogQ2Fub25pY2FsaXplIGRlc2NyaXB0aXZlIHRleHQgdXNlZCB3aXRoCglBQ19ERUZJTkUuCgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTElCVE9PTF9TWVNfUEFUSF9TRVBBUkFUT1IpOiBSZW1vdmUuCgkoX0xUX0FDX1BST0dfRUNIT19CQUNLU0xBU0gpOiBVc2UgJGFjX3BhdGhfc2VwYXJhdG9yCglpbnN0ZWFkIG9mICRQQVRIX1NFUEFSQVRPUi4KCShBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUik6IERpdHRvLgoJKF9MVF9BQ19UQUdDT05GSUcpOiBEaXR0by4KCShBQ19FTkFCTEVfU0hBUkVEKTogRGl0dG8uCgkoQUNfRU5BQkxFX1NUQVRJQyk6IERpdHRvLgoJKEFDX0VOQUJMRV9GQVNUX0lOU1RBTEwpOiBEaXR0by4KCShBQ19QQVRIX1RPT0xfUFJFRklYKTogRGl0dG8uCgkoQUNfUEFUSF9NQUdJQyk6IERpdHRvLgoJKEFDX1BST0dfTEQpOiBEaXR0by4KCShBQ19QUk9HX05NKTogRGl0dG8uCgkqIGx0ZGwubTQgKEFDX0xURExfU1lTU0VBUkNIUEFUSCk6IERpdHRvLgoKMjAwMS0wOC0wNSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gQnJhZCA8YnJhZEBjb21zdHlsZS5jb20+OgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUikgW29wZW5ic2RdOiAgT3BlbkJTRAoJY2FuIGJ1aWxkIG1vZHVsZXMgd2l0aG91dCBhIGBsaWInIHByZWZpeCBhbmQgdmVyc2lvbiBudW1iZXIuCglNb3ZlIHRoZSBkZXBsaWJzIGNoZWNrIGNvZGUgZnJvbSBoZXJlLi4uCgkoQUNfREVQTElCU19DSEVDS19NRVRIT0QpOiAuLi50byBoZXJlLgoKMjAwMS0wOC0wNSAgVGltIE1vb25leSA8bW9vbmV5QGRvZ2JlcnQuY2MubmRzdS5Ob0Rhay5lZHU+CgoJKiBsaWJ0b29sLm00IFtvc2YzKiwgb3NmNCosIG9zZjUqXTogVHJ1NjQgKmNhbiogYnVpbGQgbW9kdWxlcwoJd2l0aG91dCBhIGBsaWInIHByZWZpeCB0byB0aGUgbW9kdWxlIG5hbWUuCgoyMDAxLTA4LTA1ICBHYXJ5IFYuIFZ1YWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBHdWlkbyBEcmFoZWltIDxHdWlkby5EcmFoZWltQHRlay5jb20+OgoJKiBsdG1haW4uaW46IERpc3BsYXkgYmV0dGVyIGFuZCBkaWZmZXJlbnQgZXJyb3IgbWVzc2FnZXMgd2hlbgoJbGlicmFyeSBsaW5rYWdlIGZhaWxzIGluIHZhcmlvdXMgd2F5cy4KCjIwMDEtMDgtMDUgIEFsYmVydCBDaGluLUEtWW91bmcgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19TWVNfTElCUEFUSF9BSVgpOiBBZGQgbmV3bGluZSBhZnRlcgoJdGVybWluYXRpbmcgJ30nIGdyb3VwaW5nIGNoYXJhY3Rlci4gQ2hhbmdlICdbMC05XVswLTldJwoJdG8gJzAnIGFzIHdlJ3ZlIGFscmVhZHkgbWF0Y2hlZCBpdC4KCjIwMDEtMDgtMDUgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglGcm9tIEJyYWQgPGJyYWRAY29tc3R5bGUuY29tPjoKCSogbGlidG9vbC5tNCAoYXJjaGl2ZV9jbWRzKSBbZGFyd2luLCBuZXdzb3MsIHN5c3Y0XTogUmVwbGFjZQoJMS4zIGVyYSAkbGlua29wdHMgcmVmZXJlbmNlcyB3aXRoICRsaW5rZXJfZmxhZ3MuCgoJKiBsaWJsdGRsL2x0ZGwuYzogIEZpeGVkIHNldmVyYWwgY2FyZWxlc3MgbWlzdGFrZXMgaW4gdGhlCglmb3JlYWNoX2RpcmlucGF0aCBzdXBwb3J0IGZ1bmN0aW9ucy4KCShmb3JlYWNoX2RpcmlucGF0aCk6IFdhbGsgcGF0aCBlbGVtZW50cyB3aXRoIHRoZSBhcmd6IEFQSS4KCjIwMDEtMDgtMDQgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglGcm9tIFNlZGkgTWFzdGVyIEFsYmVydCBDaGluIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+OgoJKiBsaWJ0b29sLm00IChfTFRfQUNfU1lTX0xJQlBBVEhfQUlYKTogUmVwbGFjZSB0aGUgYXdrIGludm9jYXRpb24KCXdpdGggYW4gZXF1aXZhbGVudCBiaXQgb2Ygc2VkIHdpemFyZHJ5LgoKCUZyb20gRWRvdWFyZCBHLiBQYXJtZWxhbiA8ZWdwQGZyZWUuZnI+CgkqIGxpYnRvb2wubTQgW2Rhcndpbiwgb3BlbmJzZF06IEZpeCBxdW90aW5nIHByb2JsZW1zIHdpdGgKCXVucXVvdGVkIFtdIGV4cHJlc3Npb25zLgoKMjAwMS0wOC0wMyAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogYm9vdHN0cmFwOiAgcy9sdGRsZGVtbyAvLyAtLSBUaGlzIGRlbW8gc29lc24ndCB3b3JrIHByb3Blcmx5LAoJc28gSSBoYXZlbid0IGNvbW1pdHRlZCBpdCB5ZXQuCgoyMDAxLTA4LTAxICBPc3NhbWEgT3RobWFuICA8b3NzYW1hQGRvYy5lY2UudWNpLmVkdT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU0VUVVApOiBSZXF1aXJlIEF1dG9jb25mLTIuNTAgdmlhIHRoZQoJQUNfUFJFUkVRIGF1dG9jb25mIG1hY3JvIHNpbmNlIHRoZSBuZXcgbGlidG9vbCBtYWNyb3MgdXRpbGl6ZQoJbWFjcm9zIGZyb20gdGhhdCB2ZXJzaW9uIG9mIEF1dG9jb25mLgoKMjAwMS0wOC0wMSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbHRkbC5tNDogQnVtcCBzZXJpYWwgbnVtYmVyLgoJR2VuZXJhbCByZWZvcm1hdCBhbmQgdGlmeSB1cCBpbiBsaW5lIHdpdGggQXV0b2NvbmYtMi41MCBzdXBwb3J0LgoJKEFDX0xURExfRlVOQ19BUkdaKTogVGVzdCBmb3Igc3lzdGVtIGltcGxlbWVudGF0aW9ucyBvZiBhCgloYW5kZnVsIG9mIGFyZ3ogQVBJIGNhbGxzLCB0aGUgZXJyb3JfdCB0eXBlLCBhbmQgdGhlIGFyZ3ouaAoJaGVhZGVyLgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5hYyAoQU1fSU5JVF9BVVRPTUFLRSk6IEJ1bXAgdmVyc2lvbiBudW1iZXIuCgkqIGxpYmx0ZGwvbHRkbC5jIChycGxfYXJnel9hcHBlbmQsIHJwbF9hcmd6X2NyZWF0ZV9zZXAuCglycGxfYXJnel9pbnNlcnQsIHJwbF9yZ3pfbmV4dCk6ICBGYWxsYmFjayBpbXBsZW1lbnRhdGlvbnMgb2YKCXRoZSBzaW1pbGFybHkgbmFtZWQgZnVuY3Rpb25zIGZvciBtYWNoaW5lcyB0aGF0IGRvbjt0IHVzZSBnbGliYy4KCShsdF9kbHJlYWxsb2MpOiAgTmV3IG1lbW9yeSBmdW5jdGlvbiBwb2ludGVyIHRoYXQgY2FuIGJlIHNldCBieQoJdGhlIGNsaWVudC4gIERlZmF1bHRzIHRvIHJwbF9yZWFsbG9jLCB3aGljaCBpbiB0dXJuIHVzZXMgb25seQoJbHRfZGxtYWxsb2MgYW5kIGx0X2RsZnJlZS4KCShMVF9FTUFMTE9DLCBMVF9FUkVBTExPQyk6IFNldCBpbnRlcm5hbCBvdXQtb2YtbWVtb3J5IGVycm9yCglpbnNpZGUgdGhlIGZ1bmN0aW9ucyBjYWxsZWQgYnkgdGhlc2UgbmV3IG1hY3Jvcy4gIFNpbXBsaWZpZWQgYWxsCgljYWxsZXJzIGJ5IHJlbW92aW5nIGV4cGxpY2l0IGNsaWVudCBlcnJvciByZXBvcnRpbmcuCgkobWVtbW92ZSk6ICBGYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBvdmVybGFwIHNhZmUgbWVtb3J5IGNvcHkKCWZ1bmN0aW9uLgoJKHRyeWFsbF9kbG9wZW4pOiAgRmFjdG9yaXplZCBjb21tb24gY29kZSBpbnRvLi4uCgkodHJ5YWxsX2Rsb3Blbl9tb2R1bGUpOiAuLi50aGlzIG5ldyBoZWxwZXIgZnVuY3Rpb24uCgkoY2Fub25pY2FsaXplX3BhdGgpOiAgQ2hhbmdlZCBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmV0dXJuIHN1Y2Nlc3MKCW9yIGZhaWx1cmUuICBVcGRhdGVkIGFsbCBjYWxsZXJzLgoJKGZvcmVhY2hmaWxlX2NhbGxiYWNrKTogIE1ha2UgdXNlIG9mIGFyZ3ogQVBJLgoJKExUX0RMU1RSTEVOKTogTW92ZWQgZnJvbSBoZXJlLi4uCgkqIGxpYmx0ZGwvbHRkbC5oIChMVF9TVFJMRU4pOiAuLi50byBoZXJlLiAgVXBkYXRlZCBhbGwgY2FsbGVycy4KCShsdF9kbHJlYWxsb2MpOiAgRGVjbGFyZSBuZXcgbWVtb3J5IG1hbmFnZW1lbnQgaGFuZGxlLgoKMjAwMS0wNy0zMSAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAcmljYXJkby11cy5jb20+CgoJKiBsaWJ0b29sLm00IChtaW5ndyopIFJldmVydCB0aGUgcHJldmlvdXMgY2hhbmdlIGFzIGl0IHdhcwoJYXBwbGllZCBieSBtaXN0YWtlLgoKMjAwMS0wNy0zMSAgR3VpZG8gRHJhaGVpbSAgPEd1aWRvLkRyYWhlaW1AdGVrLmNvbT4KCgkqIGxpYnRvb2wubTQgKG1pbmd3Kikgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjOgoJU2V0cyB0aGUgcHJvcGVyIHBhdGggc2VwYXJhdG9yIGZvciBjcm9zcy1jb21waWxpbmcuCgoyMDAxLTA3LTMwICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGxpYnRvb2wubTQgKGlhNjQtKi1ocHV4KikgQWRkIHN1cHBvcnQgZm9yIGlhNjQqLSotaHB1eCogcGxhdGZvcm0uCgoyMDAxLTA3LTMwICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUByaWNhcmRvLXVzLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMpIFthaXgqXTogRml4ZWQgYW4KCWluY29ycmVjdCByZXNldHRpbmcgb2YgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgd2hlbiB1c2luZyBnY2MKCXVuZGVyIEFJWCBQb3dlci4KCjIwMDEtMDctMzEgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGJvb3RzdHJhcDogUmVtb3ZlIGdlbmVyYXRlZCBmaWxlcyAoaW5jYXNlIHRoZXkgYXJlIGxpbmtzKSBiZWZvcmUKCXJlcnVubmluZyB0aGUgYXV0b3Rvb2xzIHRvIHJlZ2VuZXJhdGUgdGhlbS4KCjIwMDEtMDctMzAgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU0VUVVApOiBVc2UgQXV0b2NvbmYtMi41MCBlcmEKCXF1YWRyaWdyYXBocyBhbmQgQUNfSEVMUF9TVFJJTkcgdG8gYnJpbmcgQUNfQVJHX1dJVEgvRU5BQkxFCgltYWNyb3MgdXAgdG8gZGF0ZS4KCShfTFRfQUNfTE9DSyk6IERpdHRvLgoJKF9MVF9BQ19UQUdDT05GSUcpOiBEaXR0by4KCShBQ19QUk9HX0xEKTogRGl0dG8uCgkoQUNfRU5BQkxFX1NIQVJFRCk6IERpdHRvLiAgQW5kIGVsaW1pbmF0ZSB0aGUgbGFzdCByZW1haW5pbmcKCWNoYW5nZXF1b3RlIGludm9jYXRpb25zLgoJKEFDX0VOQUJMRV9TVEFUSUMpOiBEaXR0by4gIEFuZCBEaXR0by4KCShBQ19FTkFCTEVfRkFTVF9JTlNUQUxMKTogIERpdHRvLiAgQW5kIERpdHRvLgoJKiBsdGRsLm00IChBQ19MVERMX0VOQUJMRV9JTlNUQUxMKTogVXNlIEF1dG9jb25mLTIuNTAgZXJhCglxdWFkcmlncmFwaHMgYW5kIEFDX0hFTFBfU1RSSU5HIHRvIGJyaW5nIEFDX0FSR19FTkFCTEUKCW1hY3JvIHVwIHRvIGRhdGUuCgkqIE5FV1M6IFVwZGF0ZWQuCgoJKiBsaWJ0b29sLm00IFtVbml4V2FyZTcsIE9wZW5VTklYOF06IEluaXRpYWwgc3VwcG9ydCBmb3IKCVVuaXhXYXJlNyBhbmQgT3BlblVOSVg4LiAgQWNjZXB0IHRoZXNlIGlkZW50aWZpZXJzIGZyb20gdGhlCglsYXRlc3QgY29uZmlnLmd1ZXNzL2NvbmZpZy5zdWIgYXMgcHNldWRvbnltcyBmb3Igc3lzdjV1d1s3OF0uCgkqIE5FV1M6IFVwZGF0ZWQuCglSZXBvcnRlZCBieSBCb3lkIEx5bm4gR2VyYmVyIDxnZXJiZXJiQHplbmV6LmNvbT4KCjIwMDEtMDctMjkgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIHRlc3RzL3NoLnRlc3Q6IEFkZCBhIG5ldyB0ZXN0IHRvIGVuZm9yY2UgWCBhcyB0aGUgZmlsbAoJY2hhcmFjdGVyIGluIGB0ZXN0ICJYLi4uJy4KCUJlZWYgdXAgdGhlIGB0ZXN0JyB0ZXN0cyB0byBhbHNvIGNoZWNrIGB0ZXN0IC0uJyBhbmQgYHRlc3QgISAtLicKCXBocmFzZXMgZm9yIGNvbXBsaWFuY2UuCgkqIGx0bWFpbi5pbjogRml4IHF1b3RpbmcgcHJvYmxlbXMgdW5jb3ZlcmVkIGJ5IHRoZSBuZXcgdGVzdHMuCgoyMDAxLTA3LTI5ICBBbmRyZXcgQy4gRmVyZW4gIDxhZmVyZW5AQ2V0YWNlYW5OZXR3b3Jrcy5jb20+CgoJKiB0ZXN0cy9zaC50ZXN0OiAgTmV3IHRlc3QgdG8gZGlzYWxsb3cgYHRlc3QgJGZvbycsIHdoZXJlCglgdGVzdCAiJGZvbyInIGlzIG11Y2ggc2FmZXIuCgkqIGx0bWFpbi5pbjogRml4IHF1b3RpbmcgcHJvYmxlbXMgdW5jb3ZlcmVkIGJ5IHRoZSBuZXcgdGVzdC4KCjIwMDEtMDctMjkgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogbGlidG9vbC5tNCAobHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wpOiAgQ2hhbmdlIGl0IGZyb20KCSJleHRlcm4gY2hhciIgdG8gImV4dGVybiBpbnQiIHNvIHRoYXQgR0NDIDMuMCB3b24ndCBjb21wbGFpbiBhbmQKCXJlZnVzZSB0byBjb21waWxlIHByb2dyYW1zIGNvbnRhaW5pbmcgImV4dGVybiBjaGFyIG1haW4oKSIuCgoyMDAxLTA3LTI5ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBHdWlkbyBEcmFoZWltIDxHdWlkby5EcmFoZWltQHRlay5jb20+OgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUikgW21pbmd3XTogU3VwcG9ydAoJY3Jvc3MgY29tcGlsYXRpb24gdG8gbWluZ3cgYnkgYWxsb3dpbmcgYDonIG9yICc7JyBhcyBhIHBhdGgKCXNlcGFyYXRvci4KCSogTkVXUzogVXBkYXRlZC4KCjIwMDEtMDctMjcgIE5JSUJFIFl1dGFrYSAgPGduaWliZUBtMTduLm9yZz4KCgkqIGxpYnRvb2wubTQgKGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kKTogVXNlIHBhc3NfYWxsCglmb3Igc2gqLSotbGludXgqIChTdXBlckgpIHRvby4KCjIwMDEtMDctMjUgIE9zc2FtYSBPdGhtYW4gIDxvc3NhbWFAZGViaWFuLm9yZz4KCglGcm9tIFRob21hcyBQb2luZGVzc291cyA8cG9pbmRlX3RAZXBpdGEuZnI+CgkqIGx0bWFpbi5pbiAocGljX21vZGUpOiAgQWRkZWQgbWlzc2luZyBxdW90ZXMgYXJvdW5kIHNoZWxsCgl2YXJpYWJsZSBpbiAiaWYgdGVzdCIgY29uZGl0aW9uYWwuCgoJRnJvbSBQZXRlciBNb3VsZGVyIDxwbW91bGRlckBsb25nZm9yZC5jc3NlLm1vbmFzaC5lZHUuYXU+CgkqIGx0bWFpbi5pbiAoeGZvcm0pOiBBZGQgc3VwcG9ydCBmb3IgcHJlLXByb2Nlc3NlZAoJKGUuZy4gYCoue2ksaWl9JyBzb3VyY2VzKS4KCjIwMDEtMDctMjUgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglGcm9tIFN0ZXZlIEVsbGNleSA8c2plQGN1cC5ocC5jb20+OgoJKiBsaWJsdGRsL2x0ZGwuYyAoZm9yZWFjaF9kaXJpbnBhdGgpOiBGcmVlIHVuYXNzaWduZWQgcG9pbnRlcgoJZml4IGZvciBgY2Fub25pY2FsJy4KCjIwMDEtMDctMjMgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQHJpY2FyZG8tdXMuY29tPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUcsIEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpCglbYWl4NCosIGFpeDUqXTogRml4ZWQgYSBtaXNwZWxsZWQgYmluZGVyIG9wdGlvbiB1bmRlciBBSVguCglUaGUgb3B0aW9uIHRvIHRocm93IGVycm9ycyBmb3IgdW5yZXNvbHZlZCBleHRlcm5hbCByZWZlcmVuY2VzIGlzCgktYmVybm90b2ssIG5vdCAtYm5vZXJvay4KCjIwMDEtMDctMjMgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogRG9uJ3QgZm9yZ2V0IHRvIGRpc3RyaWJ1dGUKCUNoYW5nZUxvZy4xLgoKCUZyb20gRXJpayBMaW5kYWhsIDxFLkxpbmRhaGxAY2hlbS5ydWcubmw+CgkqIGxpYnRvb2wubTQgKF9MVF9BQ19TWVNfTElCUEFUSF9BSVgpOiBVc2VkIG9uIGFpeCB0byBkaXNjb3ZlcgoJdGhlIGNvbXBpbGVyJ3MgZGVmYXVsdCBsaWJyYXJ5IHNlYXJjaCBwYXRoIHNvIHRoYXQgdGhlIE1QSQoJY29tcGlsZXIgc3VpdGUgaXMgbm90IGhvc2VkIGJ5IHRoZSBwcmV2aW91c2x5IGhhcmRjb2RlZCBwYXRoLgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1BST0dfTERfU0hMSUJTKSBbYWl4NCosIGFpeDUqXTogVXNlIGl0LgoKMjAwMS0wNy0yMyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGxpYnRvb2wubTQgKEFDX0RFUExJQlNfQ0hFQ0tfTUVUSE9EKTogVXNlIHBhc3NfYWxsIGZvcgoJczM5MCotKi1saW51eCogYW5kIG02OCotKi1saW51eCouCgoyMDAxLTA3LTE5ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUByaWNhcmRvLXVzLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpOiBGaXggdGFnIHN1cHBvcnQKCXByb2JsZW1zIHdpdGggQ1hYIHZhcmlhYmxlcyBiZWluZyBvdmVyd3JpdHRlbiBieSB0aGUgaW5kaXZpZHVhbAoJbWFjcm9zLgoJKEFDX0xJQlRPT0xfUFJPR19DQ19DX08pOiBEaXR0by4KCShBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfUElDKTogRGl0dG8uCgkoQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUcpOiBNb3ZlZCBjYWxsIHRvCglBQ19MSUJUT09MX1NZU19IQVJEX0xJTktfTE9DS1MgYWZ0ZXIgdGhlIGNhbGwgdG8KCUFDX0xJQlRPT0xfUFJPR19DQ19DX08gYXMgaXQgZGVwZW5kcyBvbiB0aGUgcmVzdWx0LgoJKEFDX0xJQlRPT0xfTEFOR19HQ0pfQ09ORklHKTogRGl0dG8uCgkoQUNfTElCVE9PTF9MQU5HX0NfQ09ORklHKTogRGl0dG8uCgkoQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEgpOiBVc2VkIHRoZSBtYWNybwoJX0xUX0FDX1RBR1ZBUiB0byBlbnN1cmUgdGhlIGNvcnJlY3QgdmFyaWFibGUgaXMgYmVpbmcgcXVlcmllZC4KCShBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUik6IENoYW5nZWQgdGhlIG5hbWluZyBvZiBzaGFyZWQKCW9iamVjdHMgdW5kZXIgSVJJWCBiYWNrIHRvIHdoYXQgaXQgd2FzIGluIHRoZSBNTEIuCgoyMDAxLTA3LTIzICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOKSBbZ251Kl06IFJlbW92ZSBzcHVyaW91cwoJImJyZWFrIiBhbmQgYm9ndXMgY29tbWVudAoJKF9MVF9BQ19MQU5HX0NYWF9DT05GSUcpOiBBZGQgc3VwcG9ydCBmb3IgdGhlIEh1cmQuCgkqIGx0ZGwubTQgKEFDX0xURExfU1lTX0RMT1BFTl9ERVBMSUJTKTogQWRkIHN1cHBvcnQgZm9yIHRoZSBIdXJkLgoKMjAwMS0wNy0xNiAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAcmljYXJkby11cy5jb20+LCBUaW0gTW9vbmV5ICA8bW9vbmV5QGRvZ2JlcnQuY2MubmRzdS5Ob0Rhay5lZHU+CgoJKiBsdGRsLm00IChBQ19MVERMX1NZU19ETE9QRU5fREVQTElCUyk6IGFkZCBjYXNlcyBhbmQgY29tbWVudHMgZm9yCgltb3JlIHBsYXRmb3JtcywgaW5jbHVkaW5nIEFJWCwgRGlnaXRhbC9UcnU2NCBVTklYIGFuZCBJUklYLgoKMjAwMS0wNy0xNiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUyk6IEZpeCBpYTY0IEFJWAoJcnVuLXRpbWUtbGlua2luZyB3aGVuIG5vdCB1c2luZyBnY2MuCgkoQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUcpOiAgRGl0dG8uCglSZXBvcnRlZCBieSBEYW4gTWNOaWNob2wgPG1jbmljaG9sQGF1c3Rpbi5pYm0uY29tPgoKMjAwMS0wNy0xMiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gZGRhQHNsZWVweWNhdC5jb20gKERvbiBBbmRlcnNvbik6CgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKSBbcW54XTogTmV3CglzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLgoJKEFDX0RFUExJQlNfQ0hFQ0tfTUVUSE9EKSBbcW54XTogIERpdHRvLgoJKiBORVdTOiBVcGRhdGVkLgoKCUZyb20gU3RlZmFuIE9uZHJlamlja2EgPG9uZHJlakBpZGF0YS5zaz46CgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKSBbY3lnd2luKl06IE1ha2UKCXN1cmUgdGhhdCAvbGliL3czMmFwaSBpcyBzZWFyY2hlZCBmb3Igc3lzdGVtIGxpYnJhcmllcyB0bwoJbWF0Y2ggcmVjZW50IHZlcnNpb25zIG9mIGN5Z3dpbi4KCSogTkVXUzogVXBkYXRlZC4KCjIwMDEtMDctMTIgIERhbiBNY05pY2hvbCAgPG1jbmljaG9sQGF1c3Rpbi5pYm0uY29tPgoKCUZyb20gYWxiZXJ0IGNoaW4gPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUyk6IEZpeCBBSVgKCXJ1bi10aW1lLWxpbmtpbmcgd2hlbiB1c2luZyBnY2MuCgkoQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUcpOiAgRGl0dG8uCgoyMDAxLTA3LTExICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTEFOR19DWFhfQ09ORklHKSBbaHB1eCwgbGludXgsIG9zZiwKCXNvbGFyaXNdOiBEb2ghICB0aGUgZXZhbGxlZCB2YXJpYWJsZSBzaG91bGRuJ3QgaGF2ZSBiZWVuCglxdW90ZWQuCgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTEFOR19DWFhfQ09ORklHKSBbaHB1eCwgbGludXgsIG9zZiwKCXNvbGFyaXNdOiBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCBoYXZlIHVucXVvdGVkIGAqJyBpbiBjYXNlCglzdGF0ZW1lbnRzIGZvciB0aGVzZSBhcmNoaXRlY3R1cmVzLiAgQmUgc3VyZSB0byBxdW90ZSB0aGVtCgl3aXRoIGEgc2VkIGV4cHJlc3Npb24gYmVmb3JlIHBhc3NpbmcgdG8gZXZhbC4KCVJlcG9ydGVkIGJ5IFRpbSBNb29uZXkgPG1vb25leUBkb2diZXJ0LmNjLm5kc3UuTm9EYWsuZWR1PgoKMjAwMS0wNy0wOSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogUkVBRE1FLWFscGhhOiAgcy9jb25maWd1cmUuaW4vY29uZmlndXJlLmFjLgoJKiBjb25maWd1cmUuYWM6IEJ1bXBlZCB2ZXJzaW9uIHRvIDEuNGMuCgoJR05VIGxpYnRvb2wgMS40YiB3YXMgcmVsZWFzZWQuCgoJKiBjb25maWd1cmUuYWM6IEJ1bXBlZCB2ZXJzaW9uIHRvIDEuNGIuCgkqIE5FV1M6IHVwZGF0ZWQuCgkqIGNvbmZpZy5ndWVzcywgY29uZmlnLnN1YiwgdGV4aW5mby50ZXg6ICBTeW5jaHJvbmlzZWQgZnJvbQoJZnRwLmdudS5vcmcuCgoyMDAxLTA3LTA5ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUByaWNhcmRvLXVzLmNvbT4KCglGcm9tIE1pY2hhZWwgRWxpemFiZXRoIENoYXN0YWluIDxjaGFzdGFpbkBjeWdudXMuY29tPjoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9TWVNfTUFYX0NNRF9MRU4pOiAgU2V0IG1heF9jbWRfbGVuCgl0byBhIG1heGltdW0gb2YgNTEyS2IsIGFzIGl0IHNlZW1zIHNvbWUgSFBVWCAxMS4wIHN5c3RlbXMKCWhhdmUgdHJvdWJsZSB3aXRoIDFNQi4KCjIwMDEtMDctMDkgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIFJFQURNRS1hbHBoYTogIFVwZ3JhZGUgZGlzdHJpYnV0aW9uIGluc3RydWN0aW9ucyB0byBpbmNsdWRlCgljYW5vbmljYWwgbG9jYXRpb24gb2YgdGV4aW5mby50ZXguCgoyMDAxLTA3LTA5ICBUaW1vdGh5IFdhbGwgIDx0d2FsbEBvY3VsdXN0ZWNoLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpOiBEb24ndCBkaXNhYmxlIHNobGlicwoJb24gQUlYNS9JQTY0IHdpdGggR05VIGxkLiAgS2VlcCBnbnUgZGVmYXVsdHMgaWYgdXNpbmcgZ251IHRvb2xzCglvbiBBSVg1L0lBNjQuCgoyMDAxLTA3LTA5ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUByaWNhcmRvLXVzLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOKTogIFNldCBtYXhfY21kX2xlbgoJdG8gLTEgb24gaHVyZCwgaXQgaGFzIG5vIGNvbW1hbmQgbGluZSBhcmd1bWVudCBsaW1pdHMuCgkqIGx0bWFpbi5pbiBIYW5kbGUgbWF4X2NtZF9sZW49LTEgZm9yIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlCgljb21tYW5kIGxpbmUgYXJndW1lbnQgbGltaXRzLgoKMjAwMS0wNy0wNSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlidG9vbC5tNCAoX0xUX0FDX0xBTkdfQ19DT05GSUcpOiAgUmV2ZXJ0IHRvIDEuMy54CglzZW1hdGljcywgYW5kIGFsd2F5cyBidWlsZCBzdGF0aWMgbGlicyB3aGVuIHRoZSBob3N0IG1hY2hpbmUKCWNhbm5vdCBidWlsZCBzaGFyZWQgbGlicy4gIEV2ZW4gaWYgc3RhdGljIGxpYnMgd2VyZSBleHBsaWNpdGx5CglkaXNhYmxlZC4KCjIwMDEtMDctMDIgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglDbGVhbnVwIG9mIGxpYmx0ZGw6CgkqIGx0ZGwuYyAobHRfZGxhZGRlcnJvcik6IERvbid0IHVzZSBgaW5kZXgnIGFzIGEgdmFyaWFibGUgbmFtZSwKCXNpbmNlIGl0IGlzIGEgZnVuY3Rpb24gb24gQlNEIGJhc2VkIGJveGVzLgoJKGx0X2Rsc2V0ZXJyb3IpOiBEaXR0by4KCShsdF9kbGV4aXQpOiBSZW1vdmUgdW51c2VkIGVycm9ybXNnIGRlY2xhcmF0aW9uLgoJKGZvcmVhY2hfZGlyaW5wYXRoKTogIE1ha2Ugc3VyZSBmaWxlbmFtZSBpcyBpbml0aWFsaXNlZC4KCShmaW5kX2hhbmRsZSk6ICBSZXR1cm4gTlVMTCBmb3IgYSBmYWlsZWQgc2VhcmNoLgoJKGZvcmVhY2hmaWxlX2NhbGxiYWNrKTogRG9uJ3QgcmV1c2UgZGF0YTIgc3ltYm9sIGZyb20gcHJvdG90eXBlCglpbiBmdW5jIGRlY2xhcmF0aW9uIHRvIHByZXZlbnQgc3ltYm9sIHNoYWRvd2luZy4KCSogbHRkbC5oIChsdF9kbG11dGV4X3NldGVycm9yKTogRG9uJ3QgdXNlIGBlcnJvcicgYXMgYSBwYXJhbWV0ZXIKCW5hbWUsIHNpbmNlIGl0IGlzIGEgZnVuY3Rpb24gb24gZ2xpYmMgYm94ZXMuCgoJKiBsaWJ0b29saXplLmluOiAgRGlzcGxheSAtLXZlcnNpb24gaW4gdGhlIHNhbWUgZm9ybWF0IGFzCglhdXRvY29uZiBhbmQgYXV0b21ha2UuCgkqIGx0bWFpbi5pbjogRGl0dG8uCgoyMDAxLTA2LTMwICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJTWVyZ2UgdGVzdCBpbXByb3ZlbWVudHMgZnJvbSBtdWx0aS1sYW5ndWFnZS1icmFuY2g6CgkqIHRlc3RzL2RlZnM6IEZpbmQgYW5kIHNldCB0aGUgdmFsdWUgb2YgQ0MgcHJvYmVkIGJ5IGxpYnRvb2wubTQKCSogdGVzdHMvbGluay0yLnRlc3Q6IFVzZSBhIC5sbyB3cmFwcGVyIHNjcmlwdCwgYW5kIHRoZSB2YWx1ZSBvZgoJQ0Mgc2V0IGJ5IGRlZnMgaW5zdGVhZCBvZiBoYXJkY29kaW5nIGdjYy4KCSogdGVzdHMvbGluay50ZXN0OiBVc2UgdGhlIHZhbHVlIG9mIENDIHNldCBieSBkZWZzIGluc3RlYWQgb2YKCWhhcmRjb2RpbmcgZ2NjLgoJKiB0ZXN0cy9xdW90ZS50ZXN0OiBEaXR0by4KCSogdGVzdHMvc3VmZml4LnRlc3Q6IERpdHRvLgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX1BJQykgW2FpeCpdOiBBbHdheXMgc2V0CglsdF9wcm9nX2NvbXBpbGVyX3dsIHRvIGAtV2wnLgoJUmVwb3J0ZWQgYnkgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGx0ZGwubTQgKEFDX0xURExfRExMSUIpIFtzY28zLjIqXTogV2hlbiBzZWFyY2hpbmcgZm9yIGEgZGxvcGVuCglpbXBsZW1lbnRhdGlvbiwgYW5kIGFkZGluZyBgLWxkbCcgaGFzIGZhaWxlZCwgdHJ5IGxpbmtpbmcgYSBjYWxsCgl0byBkbG9wZW4sICNpbmNsdWRpbmcgZGxmY24uaCwgYW5kIHdpdGhvdXQgLWxkbC4gIE9uIHNjbzMuMiB0aGUKCWhlYWRlciBmaWxlcyByZWRlZmluZXMgdGhlIGludGVyZmFjZSBzeW1ib2xzIHRvIHBvaW50IGF0IHRoZQoJaW1wbGVtZW50YXRpb24gc3ltYm9scyBpbiBsaWJjLgoJUmVwb3J0ZWQgYnkgIkdvbHViZXYgSS4gTi4iIDxnaW5AbW8ubXNrLnJ1PgoKMjAwMS0wNi0yOSAgVGltIFZhbiBIb2xkZXIgIDx0aW0udmFuLmhvbGRlckBwYW5kb3JhLmJlPgoKCUdlbmVyYWwgY2xlYW51cCBvZiBhdXRvY29uZi0yLjUwIHVwZ3JhZGU6CgkqIGNvbmZpZ3VyZS5hYzogTWFyayBhcyBuZWVkaW5nIGF1dG9jb25mLW1vZGUgaW4KCWVtYWNzLiAgUGFzcyBhcmd1bWVudHMgdG8gQUNfSU5JVC4KCSogY2RlbW8vY29uZmlndXJlLmFjOiBEaXR0by4KCSogZGVtby9jb25maWd1cmUuYWM6IERpdHRvLgoJKiBkZXBkZW1vL2NvbmZpZ3VyZS5hYzogRGl0dG8uCgkqIGxpYnRsZGwvY29uZmlndXJlLmFjOiBEaXR0by4KCSogbWRlbW8vY29uZmlndXJlLmFjOiBEaXR0by4KCSogcGRlbW8vY29uZmlndXJlLmFjOiBEaXR0by4KCSogdGFnZGVtby9jb25maWd1cmUuYWM6IERpdHRvLgoJKiBsdGRsLm00OiBNYXJrIGFzIG5lZWRpbmcgYXV0b2NvbmYtbW9kZSBpbgoJZW1hY3MuCgkqIGxpYnRvb2wubTQ6IE1hcmsgYXMgbmVlZGluZyBhdXRvY29uZi1tb2RlIGluCgllbWFjcy4gIERvbid0IGFkZCAoKSB0byBBU19NRVNTQUdFX0xPR19GRC4KCSogbGlibHRkbC9jb25maWd1cmUuYWM6IFVzZSBjb25maWctaC5pbiBhcwoJdGVtcGxhdGUgZm9yIGNvbmZpZy5oLgoJKiB0YWdkZW1vL2NvbmZpZ3VyZS5hYzogRHJvcCB0aGUgQUNfRElBR05PU1RJQy4gTW92ZQoJQUNfTEFORyhbQysrXSkgYWZ0ZXIgdGhlIE9CSkVYVC9FWEVFWFQgY2hlY2suCgoyMDAxLTA2LTI5ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBUaW0gVmFuIEhvbGRlciA8dGltLnZhbi5ob2xkZXJAcGFuZG9yYS5iZT4KCSogdGVzdHMvc3VmZml4LnRlc3Q6IFR5cG8gaW4gMm5kIGZvciBsb29wLgoKCUZyb20gVGltIFZhbiBIb2xkZXIgPHRpbS52YW4uaG9sZGVyQHBhbmRvcmEuYmU+CgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW0gKE9CSkVDVFMpOiAgVGhpcyB3YXMgYW4gaW1wbGljaXQgdmFyaWFibGUuCglpbnN0ZWFkIHN0YXRlIHRoZSBsaXN0IG9mIG9iamVjdCB2YXJpYWJsZXMgZXhwbGljaXRseS4KCglGcm9tIEJydW5vIEhhaWJsZSA8aGFpYmxlQGlsb2cuZnI+CgkqIGxpYnRvb2wubTQ6ICB1bmRlZmluZSB0aGUgbTQgYnVpbHRpbiBgc3ltYm9scycsIHNvIHRoYXQgdGhlCglzdHJpbmcgYHN5bWJvbHMnIGNhbiBiZSB1c2VkIGluIHRoZSByZXN0IG9mIHRoZSBjb2RlIHdpdGhvdXQKCWNhdXNpbmcgZXJyb3JzIHdpdGggYXV0b2NvbmYtMi4xMy4KCglGcm9tICJHb2x1YmV2IEkuIE4uIiA8Z2luQG1vLm1zay5ydT4KCSogdGVzdHMvTWFrZWZpbGUuYW0gKENQUExBR1MpOiBUeXBvLiBzL0NQUExBR1MvQ1BQRkxBR1MuCgoJKiBtZGVtby9NYWtlZmlsZSxhbSAoZm9vMV9sYV9MSUJBREQpOiBBZGQgbGlic3ViLmxhLCBzaW5jZSBmb28xCglkb2VzIHVzZSBzeW1ib2xzIGZyb20gbGlic3ViLmxhIC0tIG9ubHkgcGxhdGZvcm1zIHRoYXQgYWxsb3cKCXVuZGVmaW5lZCBzeW1ib2xzIGluIGxpYnJhcmllcyB3ZXJlIGFibGUgdG8gY29wZSB3aXRoIHRoaXMKCXByZXZpb3VzbHkuCglSZXBvcnRlZCBieSBSb2JlcnQgQ29sbGlucyA8cm9iZXJ0LmNvbGxpbnNAaXRkb21haW4uY29tLmF1PgoKCUZyb20gIkdvbHViZXYgSS4gTi4iIDxnaW5AbW8ubXNrLnJ1PgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1BST0dfTERfU0hMSUJTKSBbc2NvMy4ydjUqXTogTmVlZHMKCS13bCwtQmV4cG9ydCB0byBtYWtlIHNlbGYgZGxvcGVuIHdvcmsuCgoyMDAxLTA2LTI4ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSAgQWxleGFuZGVyIEJsdWhtICA8QWxleGFuZGVyLkJsdWhtQFdpcmVkTWluZHMuZGU+CgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW4pOiBGaXggYmFkIG1lbW9yeSBpbml0aWFsaXNhdGlvbgoJYXNzdW1wdGlvbnMuCgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEUpIFtIUFVYXTogRGVmaW5lCglsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyB0byBiZSBhIHNlZCBleHByZXNzaW9uCglmb3IgbWFuZ2xpbmcgdGhlIG91dHB1dCBvZiB0aGUgc3ltYm9sIHBpcGUgaW50byBhIGJyYWNlIGRlbGltaXRlZAoJQyBkZWNsYXJhdGlvbiBvZiBzeW1ib2wgbmFtZSBhbmQgYWRkcmVzcy4KCSogbHRtYWluLmluOiBVc2UgaXQgdG8gZ2VuZXJhdGUgdGhlIGZvb1MuYyBzeW1ib2wgbmFtZQoJUmVwb3J0ZWQgYnkgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCjIwMDEtMDYtMjggIFRpbSBWYW4gSG9sZGVyICA8dGltLnZhbi5ob2xkZXJAcGFuZG9yYS5iZT4sIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGJvb3RzdHJhcDogVXNlIGNwIGluc3RlYWQgb2YgbG4gLXMsIGZvciBzeXN0ZW1zIHdpdGhvdXQKCXN5bWxpbmtzLiAgUmVvcmRlciB0aGUgc3RhdGVtZW50cyB0byBhdm9pZCByZXBldGl0aW9uIG91dHNpZGUKCXRoZSBsb29wLgoKMjAwMS0wNi0yOCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4sIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglMaWJ0b29sIG5vdyBidWlsZHMgd2l0aCB0aGUgaGVscCBvZiBBdXRvY29uZi0yLjUwIQoJKiBjb25maWd1cmUuYWMgKEFDX1BSRVJFUSk6ICBSZXF1aXJlIEF1dG9jb25mLTIuNTAgb3IgbmV3ZXIuCgkoQUNfUFJPR19DUFAsIEFDX0VYRUVYVCwgQUNfT0JKRVhUKTogIFJlbW92ZWQuICBBdXRvY29uZi0yLjUwCglkb2Vzbid0IGhhdmUgdGhlIEFDX1JFUVVJUkUgYnVnIHRoYXQgcmVxdWlyZWQgdGhlc2UgdG8gYmUgY2FsbGVkCglleHBsaWNpdGx5IGZyb20gaGVyZS4gIEF1dG9jb25mLTIuNTAgdXNlcyB0aGlzIGZpbGUgaW5zdGVhZCBvZi4uLgoJKiBjb25maWd1cmUuaW46IC4uLnRoaXMsIHdoaWNoIGlzIG5vdyBkZWxldGVkLgoJKiBjZGVtby9jb25maWd1cmUuYWMsIGNkZW1vL2NvbmZpZ3VyZS5pbjogRGl0dG8uCgkqIGRlbW8vY29uZmlndXJlLmFjLCBkZW1vL2NvbmZpZ3VyZS5pbjogRGl0dG8uCgkqIGRlcGRlbW8vY29uZmlndXJlLmFjLCBkZXBkZW1vL2NvbmZpZ3VyZS5pbjogRGl0dG8uCgkqIGxpYmx0ZGwvY29uZmlndXJlLmFjLCBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogRGl0dG8uCgkqIG1kZW1vL2NvbmZpZ3VyZS5hYywgbWRlbW8vY29uZmlndXJlLmluOiBEaXR0by4KCSogcGRlbW8vY29uZmlndXJlLmFjLCBwZGVtby9jb25maWd1cmUuaW46IERpdHRvLgoJKiB0YWdkZW1vL2NvbmZpZ3VyZS5hYywgdGFnZGVtby9jb25maWd1cmUuaW46IERpdHRvLgoJKiBsaWJsdGRsL2FjY29uZmlnLmg6ICBEZWxldGVkLgoJKiBNYWtlZmlsZS5hbSAobGlidG9vbCk6IGxpYnRvb2wgbm93IGRlcGVuZHMgb24gY29uZmlndXJlLmFjLgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTE9DSyk6ICBVc2UgMi41MCdzIEFDX0xBTkdfUFVTSC9BQ19MQU5HX1BPUAoJaW5zdGVhZCBvZiAyLjEzJ3MgQUNfTEFOR19TQVZFL0FDX0xBTkdfUkVTVE9SRS4KCShBQ19MSUJUT09MX0xBTkdfQ19DT05GSUcpOiBEaXR0by4KCShBQ19MSUJUT09MX0xBTkdfQ1hYX0NPTkZJRyk6IERpdHRvLgoJKiBsaWJ0b29saXplLmluOiAgVXNlICRjb25maWd1cmVfYWMsIGluc3RlYWQgb2YgaGFyZGNvZGluZwoJY29uZmlndXJlLmluLgoKMjAwMS0wNi0yOCAgVGltIFZhbiBIb2xkZXIgIDx0aW0udmFuLmhvbGRlckBwYW5kb3JhLmJlPgoKCSogcGRlbW8vTWFrZWZpbGUuYW06ICBVc2UgJz0nIGluc3RlYWQgb2YgJys9JyB0byBzaHV0IHVwCglhdXRvbWFrZS4KCjIwMDEtMDYtMjcgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglGcm9tIGJyYWRAb3BlbmJzZC5vcmc6CgkqIE5FV1M6IFVwZGF0ZWQuCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKSBbb3BlbmJzZF06IEltcHJvdmVkCglzdXBwb3J0IGZvciB2YXJpb3VzIG9wZW5ic2QgcGxhdGZvcm1zLgoJKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpOiBEaXR0by4KCSogbHRtYWluLmluOiBEaXR0bywKCjIwMDEtMDYtMjYgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIE5FV1M6IFVwZGF0ZWQuCgkqIGxpYmx0ZGwvbHRkbCxjIChMVF9ETE1VVEVYX0xPQ0spOiBSZW5hbWVkIGZyb20gTVVURVhfTE9DSyB0bwoJYXZvaWQgcG90ZW50aWFsIG5hbWVzcGFjZSBjbGFzaC4KCShMVF9ETE1VVEVYX1VOTE9DSywgTFRfRExNVVRFWF9TRVRFUlJPUiwgTFRfRExNVVRFWF9HRVRFUlJPUik6CglEaXR0by4KCShsdF9kbG11dGV4X2xvY2tfZnVuYyk6IFJlbmFtZWQgZnJvbSBtdXRleF9sb2NrIHRvIGF2b2lkIGEKCW5hbWVzcGFjZSBjbGFzaCBvZiBOQ1IgTVAtUkFTLgoJKGx0X2RsbXV0ZXhfdW5sb2NrX2Z1bmMsIGx0X2RsbXV0ZXhfc2V0ZXJyb3JfZnVuYywKCWx0X2RsbXV0ZXhfZ2V0ZXJyb3JfZnVuYyk6IERpdHRvLgoJUmVwb3J0ZWQgYnkgRWRvdWFyZCBHLiBQYXJtZWxhbiA8ZWdwQGZyZWUuZnI+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoTFRfRExTVFJMRU4pOiBDYWxsIHN0cmxlbiBvbmx5IGlmIHRoZSBhcmd1bWVudAoJaXMgbm9uLU5VTEwgYW5kIG5vbi16ZXJvIGluIGxlbmd0aC4gIENoYW5nZWQgYWxsIGNhbGxzIHRvIHN0cmxlbgoJYXBwcm9wcmlhdGVseS4KCgkqIGxpYmx0ZGwvbHRkbC5jOiBQcm90b3R5cGUgYWxsIHN0YXRpYyBmdW5jdGlvbnMuCgoJKiBsdGRsLm00OiBCdW1wIHNlcmlhbCBudW1iZXIgdG8gMy4KCShBQ19MSUJfTFRETCk6IFJlcXVpcmUgQUNfSEVBREVSX0RJUkVOVCBmb3IgbHRkbC5jLgoJKiBsaWJsdGRsL2x0ZGwuaCAobHRfZGxmb3JlYWNoZmlsZSk6IFByb3RvdHlwZSBmb3IgbmV3IGZ1bmN0aW9uLgoJKiBsaWJsdGRsL2x0ZGwuYzogSW5jbHVkZSBhbiBhcHByb3ByaWF0ZSBoZWFkZXIgZm9yIHRoZQoJb3BlbmRpci9kaXJlbnQgYXBpLgoJKGZvcmVhY2hfZGlyaW5wYXRoKTogVmlzaXQgZWFjaCBmaWxlIGluIGEgbGlzdCBvZiBkaXJlY3Rvcmllcy4KCShmaW5kX2ZpbGVfY2FsbGJhY2spOiBGYWN0b3Igb3V0IHRoZSBjb3JlIG9mIGZpbmRfZmlsZSgpIHRvIG1ha2UKCXVzZSBvZiBmb3JlYWNoX2RpcmlucGF0aCgpLgoJKGZpbmRfZmlsZSk6IFVzZSBpdCEKCShmaW5kX2hhbmRsZV9jYWxsYmFjaywgZmluZF9oYW5kbGUpOiBEaXR0by4KCShsdF9kbGZvcmVhY2hmaWxlKTogIE5ldyBmdW5jdGlvbiB0byBmaW5kIGZpbGVzIGluIGEgc2VhcmNocGF0aC4sLAoJKGZvcmVhY2hmaWxlX2NhbGxiYWNrKTogLi4udXNpbmcgdGhpcyBjYWxsYmFjay4KCSogZG9jL2xpYnRvb2wudGV4aSAoTGlibHRkbCBpbnRlcmZhY2UpOiBEb2N1bWVudCBuZXcKCWx0X2RsZm9yZWFjaGZpbGUgYXBpIGNhbGwuCgoyMDAxLTA2LTI1ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBUSEFOS1M6ICBBZGRlZCBBbGJlcnQgQ2hpbi1BLVlvdW5nLgoKCSogbGlidG9vbC5tNCAoSUZTKTogV2hlbiBJRlMgaXMgY2hhbmdlZCB0byBzcGxpdCBhIHN0cmluZyBmb3IKCWV4YW1pbmF0aW9uIGluIGEgbG9vcCwgcmVzdG9yZSBpdCBpbnNpZGUgdGhlIGxvb3AgYXMgd2VsbCBhcwoJb3V0c2lkZSBpbmNhc2UgSUZTIGlzIG5lZWRlZCBieSBjb21tYW5kcyBpbiB0aGF0IGxvb3AuCglSZXBvcnRlZCBieSBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoKMjAwMS0wNi0yNSAgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYnRvb2wubTQ6IFByZWZlciBzaGxfbG9hZCB0byBkbG9wZW4gb24gSFAtVVggYmVjYXVzZSBkbG9wZW4KCXdvbid0IHdvcmsgcHJvcGVybHkgd2l0aG91dCBhIHBhdGNoLgoKMjAwMS0wNi0yNSAgRGFuaWVsIEhhcnZleSA8ZGFuaWVsQGFtcmlzdGFyLmNvbS5hdT4KCgkqIGxpYnRvb2wubTQgKGx0ZGxsX2NtZHMpOiBbJF0wIGRvZXNuJ3QgYXBwZWFyIHRvIHRyYW5zbGF0ZSB0aHJvdWdoCgl0aGUgc2NyaXB0IGNvcnJlY3RseSwgY2hhbmdlIHRvICQnJzAKCjIwMDEtMDYtMjUgIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9AZHMyLnBnLmdkYS5wbD4KCgkqIGxpYnRvb2wubTQgKEFDX0RFUExJQlNfQ0hFQ0tfTUVUSE9EKTogVXNlIHBhc3NfYWxsIGZvcgoJbWlwcy0qLWxpbnV4KiBhbmQgbWlwc2VsLSotbGludXgqLgoKMjAwMS0wNi0yNCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU0VUVVApOiBSZW1vdmUgZmFpbGVkIHRyeSB0bwoJdHJhbnNmb3JtIGxpbnV4IHRvIGxpbnV4LWdudSBpbiAkaG9zdC4KCShBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUik6IE1hdGNoICRob3N0X29zIGFnYWluc3QKCWxpbnV4Kiwgbm90IGxpbnV4LWdudSouCgkoQUNfREVQTElCU19DSEVDS19NRVRIT0QpOiBMaWtld2lzZS4KCjIwMDEtMDYtMjQgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19MSUJUT09MX1NZU19QQVRIX1NFUEFSQVRPUik6ICBTZXQKCVBBVEhfU0VQQVJBVE9SIGFwcHJvcHJpYXRlbHkgaWYgaXQgaXMgbm90IHNldCBhbHJlYWR5LAoJKF9MVF9BQ19UQUdDT05GSUcpOiBVc2UgaXQuCgkoQUNfRU5BQkxFX1NIQVJFRCk6IERpdHRvLgoJKEFDX0VOQUJMRV9TVEFUSUMpOiBEaXR0by4KCShBQ19FTkFCTEVfRkFTVF9JTlNUQUxMKTogRGl0dG8uCgkoQUNfUEFUSF9UT09MX1BSRUZJWCk6IERpdHRvLgoJKEFDX1BBVEhfTUFHSUMpOiBEaXR0by4KCShBQ19QQVRIX1BST0dfTk0pOiBEaXR0by4KCglGcm9tIFRpbSBWYW4gSG9sZGVyICA8dGltLnZhbi5ob2xkZXJAcGFuZG9yYS5iZT46CgkqIGxpYnRvb2wubTQ6IFVzZSB0aGUgY2Fub25pY2FsIGFic29sdXRlIHBhdGggdGVzdAoJKFtcXC9dKiB8ID86W1xcL10pIGFuZCAkUEFUSF9TRVBBUkFUT1Igd2hlcmV2ZXIKCWFwcHJvcHJpYXRlLgoJKEFDX0xJQlRPT0xfUFJPR19DQ19QSUMpOiBQcm9wZXJseSByZWNvZ25pemUgREpHUFAgYXMgYQoJcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1cHBvcnQgc2hhcmVkIGxpYnJhcmllcy4KCShBQ19MSUJUT09MX1NZU19NQVhfQ01EX0xFTik6IEF2b2lkIHRoaXMgdGVzdCBvbiBESkdQUDsgdXNlIGEKCWZpeGVkIHZhbHVlICgxMkspIGluc3RlYWQuCgkoQUNfTElCVE9PTF9TWVNfR0xPQkFMX1NZTUJPTF9QSVBFKTogRG9uJ3QgZm9yZ2V0ICRhY19leGVleHQKCXdoZW4gdGVzdGluZyBmb3IgbGluayBzdWNjZXNzLgoKCSogY29uZmlndXJlLmluIChBTV9JTklUX0FVVE9NQUtFKTogQnVtcGVkIHZlcnNpb24gdG8gMS40YS4KCglDb21wbGV0ZSB0aGUgbmV3IGNvbmZpZ3VyZSB0aW1lIHRhZ3MgY3JlYXRpb24gZmFjaWxpdHkgYmFzZWQgb24KCXRoZSBsdGNmLSouc2ggYW5kIGx0Y29uZmlnLmluIGZpbGVzIGZyb20gbXVsdGktbGFuZ3VhZ2UtYnJhbmNoOgoJKiBsaWJ0b29sLm00OiAgTW9yZSByZWZhY3RvcmluZyBhbmQgcmVmb3JtYXR0aW5nLgoJKF9MVF9BQ19MQU5HX0dDSl9DT05GSUcpOiBNZXJnZWQgbHRjZi1nY2ouc2ggZnJvbQoJbXVsdGktbGFuZ3VhZ2UtYnJhbmNoLgoJKF9MVF9BQ19MQU5HX0NYWF9DT05GSUcpOiBNZXJnZWQgbHRjZi1jeHguc2ggZnJvbQoJbXVsdGktbGFuZ3VhZ2UtYnJhbmNoLgoJKiBjb25maWd1cmUuaW4gKEFDX1BST0dfQ1hYLCBMVF9BQ19QUk9HX0dDSik6IENvbXBpbGVyIGNoZWNrcyBtdXN0CgliZSBkb25lIGJlZm9yZSBBQ19QUk9HX0xJQlRPT0wgd2hpY2ggYXBwZW5kcyB0YWdzIGJhc2VkIG9uIHRoZWlyCglyZXN1bHRzLgoKMjAwMS0wNi0xMiAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAcmljYXJkby11cy5jb20+CgoJKiBkb2NzL2xpYnRvb2wudGV4aTogVXBkYXRlZCB0aGUgbGlibHRkbCBpbnRlcmZhY2UgZG9jdW1lbnRhdGlvbgoJdG8gYnJpbmcgaXQgdXAgdG8gZGF0ZS4KCjIwMDEtMDYtMDYgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGRlbW8vTWFrZWZpbGUuYW0gKG9iamRpcik6IFVzZSBgbGlidG9vbCAtLWNvbmZpZycgZm9yCglleHRyYWN0aW5nIGNvbmZpZ3VyYXRpb24gdmFsdWVzLCBzaW5jZSBhIGdpdmVuIHZhbHVlIG1heQoJYmUgcHJlc2VudCBpbiBlYWNoIHRhZy4KCShoYy1saWJwYXRoKTogRGl0dG8uCgkoaGMtbWludXNMKTogRGl0dG8uCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19UQUdDT05GSUcpOiBBZGQgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIGZyb20KCXRoZSAtLXdpdGgtdGFncyBvcHRpb24uCgkoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiBGYWN0b3JlZCBvdXQgaW50byBzZXBhcmF0ZSBjb25maWd1cmF0aW9uCgltYWNyb3MgLS0gVGhlIGludGVyZGVwZW5kZW5jaWVzIGFuZCBydW5uaW5nIG9yZGVyIGFyZSBzdGlsbAoJaW1tdXRhYmxlLCBhbmQgbmVlZCBhIGxvdCBvZiB3b3JrIHRvIGZpeC4KCShBQ19MSUJUT09MX0NPTkZJRyk6IFRha2VuIGZyb20gdGhlIHByZXZpb3VzIGluY2FybmF0aW9uIG9mCglfTFRfQUNfTFRDT05GSUdfSEFDSyAtLSB0aGlzIG1hY3JvIGlzIHVzZWQgYm90aCB0byBjcmVhdGUgdGhlCglwcmltYXJ5IChDIGxhbmd1YWdlKSBsaWJ0b29sIGNvbmZpZ3VyYXRpb24gZnJvbQoJX0xUX0FDX0xUQ09ORklHX0hBQ0sgYW5kIGFsc28gdG8gYXBwZW5kIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBmcm9tCglfTFRfQUNfVEFHQ09ORklHLgoJKiBORVdTOiAgTWVyZ2VkIGZyb20gbXVsdGktbGFuZ3VhZ2UtYnJhbmNoLgoKMjAwMS0wNi0wNiAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAcmljYXJkby11cy5jb20+CgoJKiBib290c3RyYXA6IEFkZGVkIHRhZ2RlbW8gYW5kIHBkZW1vIHRlc3RzIGZyb20KCW11bHRpLWxhbmd1YWdlLWJyYW5jaC4KCSogY29uZmlndXJlLmluOiBBZGRlZCBwZGVtbyBhbmQgdGFnZGVtbyB0byBDT05GX1NVQkRJUlMKCWFuZCBtZXJnZWQgcmVmZXJlbmNlcyB0byBDWFggYW5kIEdDSiBmcm9tIG11bHRpLWxhbmd1YWdlLWJyYW5jaC4KCSogcGRlbW86IEFkZGVkIHRlc3QgZGlyZWN0b3J5IGZyb20gbXVsdGktbGFuZ3VhZ2UtYnJhbmNoLgoJKiB0YWdkZW1vOiBBZGRlZCB0ZXN0IGRpcmVjdG9yeSBmcm9tIG11bHRpLWxhbmd1YWdlLWJyYW5jaC4KCSogdGVzdHMvTWFrZWZpbGUuYW06IE1lcmdlZCBhZGRpdGlvbmFsIHRlc3RzIGZyb20KCW11bHRpLWxhbmd1YWdlLWJyYW5jaC4KCSogdGVzdHMvcGRlbW8tKi50ZXN0OiBkaXR0by4KCSogdGVzdHMvdGFnZGVtby0qLnRlc3Q6IGRpdHRvLgoKMjAwMS0wNS0zMCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlidG9vbC5tNDogTWVyZ2VkIGx0Y29uZmlnLmluIGZyb20gbXVsdGktbGFuZ3VhZ2UtYnJhbmNoLgoKMjAwMS0wNS0yOCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlidG9vbC5tNDogUmVmb3JtYXR0aW5nIGZvciBjb25zaXN0ZW5jeSwgYW5kIHNvbWUgcmVmYWN0b3JpbmcKCWluIHByZXBhcmF0aW9uIGZvciBsdGNmLSouc2ggbWVyZ2UuCgoyMDAxLTA1LTI3ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsdG1haW4uaW46IE1lcmdlZCBmcm9tIG11bHRpLWxhbmd1YWdlLWJyYW5jaC4KCSogbGlidG9vbC5tNDogTWVyZ2VkIGZyb20gbXVsdGktbGFuZ3VhZ2UtYnJhbmNoLgoJKiBDaGFuZ2VMb2c6IFN0YXJ0ZWQgYWZyZXNoLiAgT2xkIENoYW5nZUxvZyBoaXN0b3J5IG1vdmVkIHRvLi4uCgkqIENoYW5nZUxvZy4xOiAuLi5oZXJlLgoKQ29udGludWVkIGluIENoYW5nZUxvZy4xCgoJJFJldmlzaW9uJCAkRGF0ZSQK