LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTEwLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUHJvdGVjdCBHbG9iYWxIYW5kbGUoKSBhZ2FpbnN0IGJhZCBwYXJhbWV0ZXJzLgoKCSogZGVidWdnZXIvc3RhY2suYzoKCUZpeGVkIGJhY2t0cmFjZSBmb3IgYXBwcyB0aGF0IG5ldmVyIGNhbGxlZCBkb3duIHRvIDE2LWJpdCBjb2RlLgoKCSogbG9hZGVyL3Rhc2suYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTWFrZSBzdXJlIHRoYXQgd2Ugc2tpcCB0YXNrcyB3aXRoIG1pc3NpbmcgaEluc3RhbmNlLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglJbnRyb2R1Y2VkIGEgbmV3IGFyZW5hIGZsYWcgY2FsbGVkIEdBX0RPU01FTSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCglET1NNRU0gYW5kIG5vcm1hbCAid2luZG93cyIgZ2xvYmFsIG1lbS4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJQnVnIGZpeGVzIGluIG1taW8sIHJlbGF0ZWQgdG8gYnVmZmVyaW5nIGluIHJlY29yZCBtb2RlLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBtZW1vcnkvcmVnaXN0cnkuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3NlcnZlci5oLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglDb252ZXJ0IE50UXVlcnlLZXkgYW5kIE50RW51bWVyYXRlS2V5IHRvIHRoZSBuZXcgcmVxdWVzdCBtZWNoYW5pc20uCglGaXhlZCBhIGZldyBidWdzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCUZvcndhcmQgYWxsIGxhcmdlIGludGVnZXIgZnVuY3Rpb25zIHRvIG50ZGxsLgoKCSogb2xlL29sZTJubHMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldERhdGVGb3JtYXRBOiBDaGVjayByYW5nZSBhbmQgcmVjYWxjdWxhdGUgd0RheU9mV2Vlay4KCU9MRV9HZXRGb3JtYXRBfFc6IEZpeCB0cmFuc2Zvcm1hdGlvbiBvZiB3RGF5T2ZXZWVrIHRvCglMT0NBTEVfUyhBQkJSRVYpREFZTkFNRXguCgoJKiBpbmNsdWRlL3duYXNwaTMyLmgsIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3duYXNwaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L21tc3lzdGVtLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3NldHVweC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi91c2VyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFN1cHBvcnQgZm9yIHN0ZGNhbGw2NAoJLSBNaW5vciBBUEkgdXBkYXRlcy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUJlYXV0aWZpZWQgdGhlIGxvYWRvcmRlciBhcnJheSAoZ3JvdXAgRExMcyBhY2NvcmRpbmcgdG8gZnVuY3Rpb25hbGl0eSwKCWFkZCBncm91cCBoZWFkZXIgY29tbWVudHMsIC4uLiksIGFkZGVkIGJ1aWx0aW4geDExZHJ2IGFuZCB3aW5hc3BpLgoKCSogZGxscy9tc2FjbS9pbnRlcm5hbC5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJU2lsZW5jZSB1bm5lZWRlZCBleGNlcHRpb24gdG8gYWxsb3cgZWFzaWVyIEFDTSBkZWJ1Z2dpbmcuCgoyMDAwLTEwLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgbWVtb3J5L3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL250ZGxsL3JlZy5jOgoJQ29udmVydGVkIHNvbWUgb2YgdGhlIHJlZ2lzdHJ5IHNlcnZlciByZXF1ZXN0cyB0byB0aGUgbmV3IHJlcXVlc3QKCW1lY2hhbmlzbS4KCgkqIHdpbjMyL3RpbWUuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9sYXJnZV9pbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3RpbWUuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3dpbm50LmgsIHNjaGVkdWxlci90aW1lci5jLCBkbGxzL2tlcm5lbC90aW1lLmM6CglJbXBsZW1lbnRlZCBhIGJ1bmNoIG9mIGxhcmdlIGludGVnZXIgZnVuY3Rpb25zIGluIG50ZGxsLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCByZWxheTMyL3JlbGF5Mzg2LmM6CglBZGRlZCBzdGRjYWxsNjQgZW50cnkgcG9pbnQgdHlwZSB0byBhbGxvdyBjb3JyZWN0IHJlbGF5IGRlYnVnZ2luZwoJc3VwcG9ydCBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIDY0LWJpdCB2YWx1ZXMuCgoyMDAwLTA5LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2hlYXAuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTWFrZSBzdXJlIHdlIGNvbW1pdCBlbm91Z2ggbWVtb3J5IGluIGEgbmV3IHN1YmhlYXAuCgoJKiBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJLSBtb3ZlZCBzb21lIGNvZGUgZnJvbSBXSU5TUE9PTF9HZXRQcmludGVyRHJpdmVyIGludG8gbmV3IGZ1bmN0aW9uCgkgIFdJTlNQT09MX0dldERyaXZlckluZm9Gcm9tUmVnCgktIGJ1ZyBmaXggaW4gZnVuY3Rpb24gR2V0UHJpbnRlckRpcmVjdG9yeVc6IGZyZWUgbG9jYWwgdmFyaWFibGUgbm90CgkgIHRoZSBvbmUgZnJvbSBmdW5jdGlvbiBpbnRlcmZhY2UKCS0gaW1wbGVtZW50ZWQgRW51bVByaW50ZXJEcml2ZXJzQXxXCgoJKiBmaWxlcy9wcm9maWxlLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIHRoZSBkZWZhdWx0IHZhbHVlIGhhbmRsaW5nICh0cmFpbGluZyBzcGFjZXMgb2YgdGhlIGRlZmF1bHQgdmFsdWUKCWFyZSBjbGlwcGVkKS4KCXNlY3Rpb24gPT0gTlVMTCwga2V5X25hbWUgPT0gTlVMTCB1bmRvYy4gZmVhdHVyZSBpcyBvbmx5IHZhbGlkIGluIFdpbjMyLgoKCSogZGxscy9udGRsbC9zeW5jLmMsIGluY2x1ZGUvbnRkZGsuaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9uZXdmbnMuYywgd2luMzIvcHJvY2Vzcy5jLCB3aW4zMi90aW1lLmMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RpbWUuYzoKCU1vdmVkIGEgYnVuY2ggb2Ygcm91dGluZXMgdG8ga2VybmVsMzIuZGxsICh3aXRoIHRoZSBoZWxwIG9mCglEaW1pdHJpZSBPLiBQYXVuKS4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJR0RJU2VsZWN0UGFsZXR0ZTE2IGNoZWNrZWQgR2V0T2JqZWN0VHlwZSgpIHJldHVybiB2YWx1ZSBmb3IKCVBBTEVUVEVfTUFHSUMgaW5zdGVhZCBvZiBPQkpfUEFMLgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIERMTFZFUlNJT05JTkZPIHRvIHNobHdhcGkuaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTGV0IEludGVybmFsRXh0cmFjdEljb24xNiBsb2FkIGljb25zIGZyb20gYnVpbHRpbiBETExzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW9kaWZpZWQgdGhlIGJpdG1hcCBjZW50ZXJpbmcgYWxnb3JpdGhtIHRvIHRha2UgdGhlIGJ1dHRvbidzIGJvcmRlcgoJaW50byBhY2NvdW50LgoKCSogd2luZG93cy90aW1lci5jLCBpbmNsdWRlL21lc3NhZ2UuaCwgd2luZG93cy9tZXNzYWdlLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUJlZm9yZSBjYWxsaW5nIHRoZSB0aW1lciB3aW5kb3cgcHJvYywgbWFrZSBzdXJlIGl0IGlzIHZhbGlkLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3NlYy5jOgoJUmVtb3ZlZCBhIGZldyBkZXBlbmRlbmNpZXMgb24ga2VybmVsMzIgZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOgoJTW92ZWQgY3JpdGljYWwgc2VjdGlvbiBpbXBsZW1lbnRhdGlvbiB0byBudGRsbC4KCgkqIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW4zMi9NYWtlZmlsZS5pbiwgd2luZG93cy9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL01ha2VmaWxlLmluLCB0c3gxMS9NYWtlZmlsZS5pbiwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVzb3VyY2VzL01ha2VmaWxlLmluLCBvYmplY3RzL01ha2VmaWxlLmluLCBvbGUvTWFrZWZpbGUuaW4sIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2NlbXUvTWFrZWZpbGUuaW4sIG1zZG9zL01ha2VmaWxlLmluLCBsb2FkZXIvbmUvTWFrZWZpbGUuaW4sIG1lbW9yeS9NYWtlZmlsZS5pbiwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvZG9zL01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGlmMTYzMi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3Mvd2luMTZkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9tZXRhZmlsZWRydi9NYWtlZmlsZS5pbiwgZmlsZXMvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL01ha2VmaWxlLmluLCBjb25zb2xlL01ha2VmaWxlLmluLCBjb250cm9scy9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbjoKCU1vdmVkICQoTU9EVUxFKS5vIHJ1bGUgb3V0IG9mIE1ha2UucnVsZXMgaW50byB0aGUgaW5kaXZpZHVhbAoJTWFrZWZpbGVzLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgaW5jbHVkZS9zaGx3YXBpLmgsIGRsbHMvc2hsd2FwaS9yZWcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgU0hEZWxldGVFbXB0eUtleUEsIFNIRGVsZXRlS2V5QS4KCgkqIG9iamVjdHMvcmVnaW9uLmM6CglTZXJnZWkgSXZhbm92IDxzZXJnZWlAY29yZWwuY29tPgoJRml4ZWQgcmV0dXJuIHZhbHVlcyBvZiBHZXRSZWdpb25EYXRhLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQ2FsbCBSZWxlYXNlQ2FwdHVyZSAod2hpY2ggdHJpZ2dlcnMgV01fQ0FQVFVSRUNIQU5HRUQpIGFmdGVyIHRoZQoJV01fQ09NTUFORCBmb3IgdGhlIGJ1dHRvbiBoYXMgYmVlbiBzZW50LCByYXRoZXIgdGhhbiBiZWZvcmUuCgoJKiBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVVzZSB3YXZlYXVkaW8sIG5vdCB3YXZlZm9ybS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgY291cGxlIG9mIFRSQUNFIG1lc3NhZ2VzLgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkZWQgbWlzc2luZyBjYXN0LgoKCSogaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaCwgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgcmV0dXJuIHR5cGUgb2YgbWl4ZXJNZXNzYWdlMTYuCgoJKiBpbmNsdWRlL3dpbnZlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbmFtZWQgVlNfVVNFUl9JTkZPIHRvIFZTX1VTRVJfREVGSU5FRC4KCjIwMDAtMDktMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2J1aWx0aW4zMi5oLCBtaXNjZW11Ly5jdnNpZ25vcmUsIG1pc2NlbXUvTWFrZWZpbGUuaW4sIG1pc2NlbXUvbWFpbi5jLCBtaXNjZW11L3dpbmUuc3BlYywgcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsIE1ha2UucnVsZXMuaW46CglDaGFuZ2VkIHRoZSBXaW4zMiBkbGwgZGVzY3JpcHRvciB0byBiZSBpbiBJTUFHRV9OVF9IRUFERVJTIGZvcm1hdC4KCUdlbmVyYXRlIHRoZSBpbXBvcnQgdGFibGUgZGlyZWN0bHkgaW4gUEUgZm9ybWF0LgoJQWRkZWQgZ3VpL2N1aWV4ZV9ub19tYWluIG1vZGVzIGluIEVYRSBzcGVjIGZpbGVzLCBhbmQgdXNlIHRoaXMgZm9yIHRoZQoJbWFpbiB3aW5lIGJpbmFyeS4KCgkqIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkzMi5zcGVjOgoJQWRkZWQgYSBmZXcgbWlzc2luZyBpbXBvcnRzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdmFyaW91cyB0eXBlIGFuZCBtYWNybyBkZWZpbml0aW9ucyB0aGF0IGFyZSBuZWVkZWQgdG8gY29tcGlsZQoJdGhlIGxhdGVzdCBNRkMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTdG9yZSBhIGNvcHkgb2YgTUlESU9QRU5ERVNDIGluZm9ybWF0aW9uIGluc3RlYWQgb2YgcG9pbnRlci4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVW5sb2NrIHdpbjE2IGNyc3Qgd2hpbGUgdGh1bmtpbmcgdXAgdG8gMzIgYml0IGRsbC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglJbmNsdWRlIDx1bmlzdGQuaD4gZm9yIHByb3RvdHlwZSBvZiBzZWxlY3QoKS4KCgkqIHNlcnZlci9zb2NrLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVNvY2tldCByZXR1cm5lZCBieSBhY2NlcHQgZnVuY3Rpb24gb2YgTWljcm9zb2Z0IEFQSSBzaG91bGQga2VlcCB0aGUKCXByb3BlcnRpZXMgb2YgdGhlIGxpc3RlbmluZyBzb2NrZXQuIFRoaXMgaXMgYWxzbyB0cnVlIGZvciBub24tYmxvY2tpbmcKCXByb3BlcnR5LgoKCSogd2luZG93cy93aW5wb3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJSWYgd2luZG93IHdhcyBub3QgcmVzaXplZCBhbmQgbm90IG1vdmVkLCByZXBhaW50IG9ubHkgaXRzZWxmIGV4Y2x1ZGluZwoJcGFyZW50LgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYzoKCUdlbmVyYXRlIFdpbjMyIGRsbCBkZXNjcmlwdG9yIHN0cnVjdHVyZSBpbiB0aGUgLnNwZWMuYyBmaWxlIHNvIHRoYXQgd2UKCWRvbid0IG5lZWQgdG8gZGVwZW5kIG9uIGJ1aWx0aW4zMi5oLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3ptb3VzZS5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlZCB6bW91c2UuaCwgbW92ZWQgd2hlZWwgY29kZSBmcm9tIG1vdXNlLmggaW50byBpdC4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglNQ0lfU1RBVFVTX0xFTkdUSCBvbiBXaW5kb3dzIHJldHVybnMgb25lIGZyYW1lIGxlc3MgdGhhbiB0aGUgdG90YWwKCXRyYWNrIGxlbmd0aCBmb3IgdGhlIGxhc3QgdHJhY2sgb24gYSBDRC4gIFRoaXMgYWxzbyBhZmZlY3RzIHF1ZXJpZXMKCWZvciB0aGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBDRC4KCgkqIG1zZG9zL2Rvc2FzcGkuYywgaW5jbHVkZS93aW5lL3dpbmFzcGkuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3duYXNwaTMyLmgsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOgoJRml4ZWQgYSBmZXcgbm9uIHBvcnRhYmxlIHplcm8tc2l6ZSBhcnJheSBkZWNsYXJhdGlvbnMuCgoJKiBmaWxlcy9kcml2ZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYXZlIHRoZSBVTklYIGN3ZCBmb2xsb3cgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IG9uIHRoZSBjdXJyZW50IGRyaXZlLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJT24gcmVjZXB0aW9uIG9mIGEgRm9jdXNPdXQgZXZlbnQsIGRvbid0IGRlYWN0aXZhdGUgdGhlIGFwcGxpY2F0aW9uIGlmIHRoZQoJbmV4dCB3aW5kb3cgdG8gZ2V0IHRoZSBmb2N1cyBpcyBhIFdpbmUgd2luZG93LgoKMjAwMC0wOS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXksIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLCBkbGxzL2RwbGF5eC9kcGxheXhfcXVldWUuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbjoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIFJlbW92ZSB3aW5tbSBoYWNrIGluIGRwbGF5IGNvZGUKCS0gRml4IHVwIHNvbWUgbWlzc2luZyBob2xlcyBpbiB0aGUgY29kZQoJLSBNb3JlIG1lc3NhZ2UgaW1wbGVtZW50YXRpb24KCS0gU3RhdHVzIGRvY3VtZW50YXRpb24gdXBkYXRlCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglNaWdyYXRlICRMREZMQUdTIGZyb20gY29uZmlndXJlIHRvIE1ha2VmaWxlIGFuZCBpbnRvIG1haW4gd2luZQoJZXhlY3V0YWJsZS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglEaXNwbGF5IGFuIEVSUigpIGluIGNhc2Ugb2YgdW5kZWZpbmVkIHN5bWJvbHMuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU3RhcnRlZCBzb21lIGJhc2ljIHdvcmsgb24gdGhlIG1vcmUgb3IgbGVzcyB1bmRvY3VtZW50ZWQgU0VUVVBYCglmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglTdXBwb3J0IGZvciBUQlNUWUxFX0VYX0RSQVdEREFSUk9XUyBzdHlsZTsgcmVzZXQgY2FwdHVyZSBhbmQgYnV0dG9uCglwcmVzc2VkIGZsYWdzIG9uIFdNX0NBUFRVUkVDSEFOR0VELgoKCSogb2JqZWN0cy9kYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXT1JEIGlzIHVuc2lnbmVkLCBzbyB3ZSBuZWVkIHRvIHRyYW5zYWx0ZSAweGZmZmYgaW50byAtMS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbjMyL2NvbnNvbGUuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBtc2Rvcy9kb3Nhc3BpLmMsIG1zZG9zL3htcy5jLCBvbGUvb2xlMm5scy5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGluY2x1ZGUvd2luZS9rZXlib2FyZDE2LmgsIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2LmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvd2luYXNwaS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5lL3dpbm5ldDE2LmgsIGluY2x1ZGUvd2luZS93aW5zb2NrMTYuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luY29uLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2lucHJvYy5oLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93aW5zb2NrMi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93aW52ZXIuaCwgaW5jbHVkZS93bmFzcGkzMi5oLCBpbmNsdWRlL3dvd250MzIuaCwgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS9uZWV4ZS5oLCBpbmNsdWRlL25vbmNsaWVudC5oLCBpbmNsdWRlL250c2VjYXBpLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS90b29saGVscC5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmFzcGkuaCwgaW5jbHVkZS9hc3BpLmgsIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL2Nkcm9tLmgsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2RjZS5oLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL2dsb2JhbC5oLCBpbmNsdWRlL2xvY2FsLmgsIGluY2x1ZGUvbHpleHBhbmQuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL21tZGRrLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpZjE2MzIvc25vb3AuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIGZpbGVzL2ZpbGUuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vc291bmQxNi5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbmFzcGkvYXNwaS5oLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luMzJzL3czMnN5cy5jLCBkbGxzL3ZlcnNpb24vdmVyMTYuYywgZGxscy91c2VyL2RkZW1sLmMsIGRsbHMvdXNlci9kZGVtbDE2LmgsIGRsbHMvdXNlci9iaWRpMTYuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9tc3ZpZGVvL3ZmdzE2LmgsIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL21zYWNtL21zYWNtZHJ2LmgsIGRsbHMvbXNhY20vd2luZWFjbS5oLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL2dkaS9iaWRpMTYuYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9rZXJuZWwvc3RyZXNzLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jOgoJTW92ZWQgYWxsIFdpbjE2IGRlZmluaXRpb25zIG91dCBvZiB0aGUgc3RhbmRhcmQgV2luZG93cyBoZWFkZXJzLgoKCSogbG9hZGVyL3BlX3Jlc291cmNlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUF2b2lkIGNyYXNoZXMgaWYgMTYtYml0IG1vZHVsZSBoYW5kbGUgd2FzIHBhc3NlZCB0byB0aGUgMzItYml0CglyZXNvdXJjZSBlbnVtZXJhdG9yLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgaW5jbHVkZS9kZHJhdy5oLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oLCB3aW5lLmluaToKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzdXBwb3J0IGZvciBEaXJlY3REcmF3IG92ZXJsYXlzIHVzaW5nIHRoZSBYVmlkZW8gZXh0ZW5zaW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQ29kZSBjbGVhbnVwLgoJQWRkIGNoZWNraW5nIGZvciBpbnZhbGlkIERCQ1MgdHJhaWxlciBieXRlcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSBjb21tY3RsIGhlYWRlciBpc3N1ZXMgcmVwb3J0ZWQgaW4gbmV3c2dyb3VwLgoKCSogZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3dpbmUvdzMyc2tybmwuaCwgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgcmVzb3VyY2VzL3N5c3Jlc19XYS5yYzoKCUEgZmV3IGluY2x1ZGVzIGNsZWFudXAuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgbG9hZGVyL21haW4uYywgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5c3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3F1ZXJ5YXNzb2NpYXRpb25zLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2FjaGUuaCwgaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RvY2tpbmd3aW5kb3dmcmFtZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZS9vYmpfZW51bWlkbGlzdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2Vycm9yaW5mby5oLCBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaCwgaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGluY2x1ZGUvZGxncy5oLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZG93cy5oLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYywgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGZvbGRlci5oLCBkbGxzL3NoZWxsMzIvc2hlbGxndWlkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvb2xlMzIvb2xlMmltcGwuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21vbmlrZXIuYzoKCVJlbW92ZWQgc2hlbGwuaC4gQ2xlYW5lZCB1cCB0aGUgbmVzdGVkIGluY2x1ZGVzIG1lc3MgaW4gd2luZS9vYmpfKi5oLgoKMjAwMC0wOS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVXNlIGRvY3VtZW50ZWQgRFJPUEZJTEVTIHN0cnVjdHVyZSBpbnN0ZWFkIG9mIGludGVybmFsIERST1BGSUxFU1RSVUNULgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIHdpbjMyL2RldmljZS5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDEzLmMsIG1zZG9zL2ludDE1LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDMzLmMsIG1zZG9zL2ludDVjLmMsIG1zZG9zL3Z4ZC5jLCBtc2Rvcy94bXMuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtZW1vcnkvaW5zdHIuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvZXJyb3IuYywgbWlzYy9zeXN0ZW0uYywgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kb3Nhc3BpLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL3Rhc2suYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvd2luODdlbS5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL3VzZXIvbW91c2UuYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYzoKCVJlbW92ZWQgc29tZSBvZiB0aGUgWFhYX3JlZyBtYWNyb3Mgbm93IHRoYXQgd2UgYXJlIHVzaW5nIHRoZSBzdGFuZGFyZAoJQ09OVEVYVDg2IHN0cnVjdHVyZSBldmVyeXdoZXJlLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3VzZXIuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3RpbWVyLmMsIHdpbjMyL2NvbnNvbGUuYywgbWlzYy9jb21tLmMsIG1pc2MvY3B1LmMsIG1pc2MvbWFpbi5jLCBtaXNjL3ZlcnNpb24uYywgb2xlL29sZTJubHMuYywgc2NoZWR1bGVyL2V2ZW50LmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL2NvbnZlcnQuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2Nkcm9tLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBncmFwaGljcy93aW4xNmRydi90ZXh0LmMsIGluY2x1ZGUvd2luYmFzZS5oLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMvbXByL3duZXQuYywgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmM6CglSZW1vdmVkIGluY2x1c2lvbiBvZiB3aW5lL3dpbmVzdHJpbmcuaCBmcm9tIHdpbmJhc2UuaCBhbmQgYWRkZWQgaXQgdG8KCXRoZSBDIGZpbGVzIHRoYXQgbmVlZCBpdC4KCjIwMDAtMDktMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDMzLmMsIG1lbW9yeS9pbnN0ci5jLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIGluY2x1ZGUvbGR0LmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvZG9zZXhlLmg6CglNb3ZlZCBtb3N0IGdsb2JhbCBkYXRhIG91dCBvZiB0aGUgTFBET1NUQVNLIHN0cnVjdHVyZS4KCUFsbG9jYXRlIERQTUkgcmVhbC1tb2RlIHNlZ21lbnRzIGdsb2JhbGx5IGF0IHN0YXJ0dXAuCglUcnkgdG8gYWxsb2NhdGUgRE9TIG1lbW9yeSBhdCBhZGRyZXNzIDAuCgoJKiB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL21lc3NhZ2UuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBkbGxzL3VzZXIvdXNlci5zcGVjOgoJQ2FsbCBXSF9HRVRNRVNTQUdFIGhvb2sgaW4gUGVla01lc3NhZ2UgdG9vIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFJvYgoJRmFybnVtKS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUxvY2tzIHRoZSB2aXJ0dWFsIHZpZXdzIGxpbmtlZCBsaXN0LgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglNYWtlIGNhbGxzIHRvIGdldGhvc3RieW5hbWUsIGdldGhvc3RieWFkZHIsIGdldHNlcnZieW5hbWUsCglnZXRzZXJ2Ynlwb3J0LCBnZXRwcm90b2J5bmFtZSBhbmQgZ2V0cHJvdG9ieW51bWJlciB0aHJlYWQtc2FmZS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVVzZSBhcHByb3ByaWF0ZSBjaGFyc2V0IGlmIGZhY2VuYW1lcyBvZiBmb250IGlzIGtub3duLgoJVXNlIENQX0FDUCBpZiBERUZBVUxUX0NIQVJTRVQgaXMgcmVxdWVzdGVkLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglJbiBXTV9EUkFXSVRFTSwgYWx3YXlzIGNhbGxzIHRoZSBhcHAgd2l0aCBhIHZhbGlkIGN1cnJlbnQgZm9jdXNfaXRlbS4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9icmVhay5jOgoJSW1wcm92ZWQgc3VwcG9ydCBmb3Igdm04NiBtb2RlLgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6CglBZGRlZCBzdXBwb3J0IGZvciBleGNlcHRpb24gaGFuZGxpbmcgd2hpbGUgaW4gdm04NiBtb2RlLgoJRml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiB2bTg2IHN1cHBvcnQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jLCBvYmplY3RzL2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBmb3JtYXQgc3RyaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgc2V0IFdTX0NISUxEIGFuZCBDQ1NfVE9QIHRvIHRoZSB0b29sYmFyJ3Mgc3R5bGUuCglUT09MQkFSX0NhbGNUb29sYmFyKCk6IGlmIHRoZSBiaXRtYXAgc2l6ZSBpcyAwLCB1c2UgdGhlIGJ1aWx0aW4KCWRlZmF1bHRzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZSBzaXplIG9mIHRoZSBjb21jdGwzMiBpbnRlcm5hbCBiaXRtYXBzIGlzIDI0eDI0IG5vdCAyNngyNi4KCUZpeGVkIG1pbm9yIHR5cG9zLgoKCSogdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvUkVBRE1FLndyYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRmlsZW5hbWVzIG1heSBjb250YWluICcvJyBhbmQgJ1wnLgoJU21hbGwgdHlwbyBmaXhlcy4KCjIwMDAtMDktMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJUGFpbnQgYmFja2dyb3VuZCBiZWZvcmUgZHJhd2luZyBpdGVtIGFuZCBzdWJpdGVtcy4gIFBhaW50IGFueSBhcmVhIG9mCgl0aGUgY29udHJvbCBub3Qgb2NjdXBpZWQgYnkgaXRlbXMuICBFYXJseSBvdXQgb2YgTElTVFZJRVdfUmVmcmVzaFhYWAoJaWYgbm8gaXRlbXMgZXhpc3QuIEludmFsaWRhdGVSZWN0KCkgb24gTEJVVFRPTkRPV04gb25seSBpZiB0aGUgY29udHJvbAoJaGFzIGl0ZW1zIHRvIGRyYXcuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBtaXNjL21haW4uYywgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUveDExZHJ2LmgsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNYWtlIEdldFRpY2tDb3VudCBub3QgdXNlIHRoZSB3aG9sZSBVbml4IGVwb2NoIChzaW5jZSAxOTcwKSBhbnkgbW9yZSwKCXNpbmNlIHRoYXQgY3Jhc2hlZCBzZXZlcmFsIGdhbWVzIG9yIGNhdXNlZCBwcm9ibGVtcyB3aXRoIHRoZW0gYXMgdGhleQoJYXJlbid0IHVzZWQgdG8gYSBoaWdoIFdpbmRvd3MgdXB0aW1lIG9mIG1vcmUgdGhhbiAyNC45IGRheXMuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6CglSb2JlcnRvIEF1Z3VzdG8gUHVuZ2FydG5payA8cHVuZ0BrYXJpbmEuZXRjb20udWZyZ3MuYnI+CglBZGRlZCBTX0lTRklGTyBjaGVjayBmb3IgU29sYXJpcy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBtYWNybyBmb3IgX2RlY2xzcGVjIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHN5bm9ueW0gb2YKCV9fZGVjbHNwZWMpLgoJUmVtb3ZlZCB0aGUgZGxsaW1wb3J0IGFuZCBkbGxleHBvcnQgbWFjcm9zLgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTXVzdCBpbmNsdWRlICdzdGRsaWIuaCcuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgSEFORExFX1dNX05PVElGWSBhbmQgRk9SV0FSRF9XTV9OT1RJRlkuCgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2luZXBzL3BzZGxnLmgsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3JzcmMucmMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3dpbmVwcy93cHNfRW4ucmMsIGRsbHMvd2luZXBzL3dwc194eC5yYywgZGxscy93aW5lcHMvLmN2c2lnbm9yZSwgZGxscy9NYWtlZmlsZS5pbjoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVBhcGVyIHNpemUgYW5kIG9yaWVudGF0aW9uIHByb3Agc2hlZXQgZm9yIHdpbmVwcy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBEVF9QQVRIX0VMTElQU0lTLCBEVF9FTkRfRUxMSVBTSVMsIGFuZCBEVF9XT1JEX0VMTElQU0lTCglmbGFncyBpbiBEcmF3VGV4dC4KCgkqIGxvYWRlci9tb2R1bGUuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgV2luRXhlYzE2IHRvIGhhbmRsZSBxdW90ZWQgZmlsZW5hbWVzIGNvcnJlY3RseS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfZXJyb3JpbmZvLmgsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmM6CglEYW15YW4gT2dueWFub2ZmIDxEYW15YW5Acm9ja2V0bWFpbC5jb20+CglJRXJyb3JJbmZvIGlzIG5vdyBkZXJpdmVkIGZyb20gSVVua25vd24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBzb21lIHNpdHVhdGlvbnMgd2l0aCBsaXN0dmlldyBzZWxlY3Rpb25zLiBTcGVjaWZpY2FsbHkgZml4ZWQKCXNpdHVhdGlvbnMgd2hlcmUgaW4gYW4gT1dORVJEQVRBIGxpc3R2aWV3IHRoZSBzZWxlY3Rpb24gcmFuZ2VzIGJlY29tZQoJaW52YWxpZCBpZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGlzIGNoYW5nZWQuIEFkZGl0aW9uYWwgZml4ZXMgYSBmZXcKCXByb2JsZW1zIHJlc3VsdGluZyBpbiBsb29wcyBpbiBSZW1vdmVBbGxTZWxlY3Rpb25zLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBtYWNyb3MsIHR5cGVzIGFuZCBwcm90b3R5cGVzLgoKCSogaW5jbHVkZS93aW5yZXMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTmV3IGZpbGUuIEFsbCBSQyBmaWxlcyBnZW5lcmF0ZWQgYnkgVkM2IGluY2x1ZGUgYWZ4cmVzLmggd2hpY2ggaW4gdHVybgoJaW5jbHVkZXMgdGhpcyBmaWxlLgoKCSogd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNwZWxsaW5nLCB0cmFjZSBmaXhlcy4KCgkqIG1lbW9yeS9lbnZpcm9uLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBTZXRMYXN0RXJyb3IoKSBpbiBHZXRFbnZpcm9ubWVudFZhcmlhYmxlQS4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglEYW15YW4gT2dueWFub2ZmIDxEYW15YW5Acm9ja2V0bWFpbC5jb20+CglBZGRlZCBlcnJvciBjb3JyZWN0aW9uIHdoZW4gdXNpbmcgc3ltYm9sIG9mZnNldHMuCgoJKiBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAdm9pbGEuZnI+CglGaXhlZCByZWVudHJhbmN5IGlzc3VlcyBpbiBwbGF5L3N0b3Agb3BlcmF0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IFByaW50RGxnIGNvbGxhdGUgaWNvbnMuICBBZGQgb3JpZW50YXRpb24gaWNvbnMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3R1YnMgZm9yIHNobHdhcGkuMTUxIGFuZCBzaGx3YXBpLjE1My4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0dWIgZm9yIENvSXNPbGUxQ2xhc3MuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBjbG9zZSBvbiBleGVjKCkgZmxhZyBhdCB0aW1lcyB3aGVuIHdlIGxlYXZlIC9kZXYvZHNwIGFuZAoJL2Rldi9zZXF1ZW5jZXIgb3Blbi4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgRkxBVEJVVFRPTiBzdHlsZSB0YWJzLgoJTWFkZSB3aWR0aCBvZiBCVVRUT04gc3R5bGUgdGFicyBubyBsZXNzIHRoYW4gMnggdGhlaXIgaGVpZ2h0LgoJRXhwYW5kZWQgZm9jdXMgcmVjdCB0byBiZSBqdXN0IGluc2lkZSB0aGUgYm9yZGVyLgoKCSogZGxscy9rZXJuZWwvdG9vbGhlbHAuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZCBGSVhNRXMgZm9yIGFsbCB0aGVzZSBuaWNlIGNvbXBsZXRlbHkgdW5pbXBsZW1lbnRlZCBUT09MSEVMUAoJZnVuY3Rpb25zLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglmaXhlZCB0aGUgd2luOTUgcmVnaXN0cnkgbG9hZGVyIHRvIGhhdmUgc29tZXdoYXQgc3RyaWN0ZXIgY2hlY2tpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBidXR0b24gaW1hZ2UgdG8gYmUgb2Zmc2V0IHRvIHRoZSBjZW50ZXIgb2YgdGhlIGJ1dHRvbiBob3Jpem9udGFsbHksCgl2aXNpYmxlIHdpdGggV2luWmlwIGFuZCBDdXRlRlRQIDQuMC4gIEZpeGVkIGNvbXBpbGUgd2FybmluZ3MgZnJvbSBmb3JtYXQgdHlwZQoJc3BlY2lmaWVycyBpbiB0d28gVFJBQ0Uncy4gIFJlbW92ZWQgVFJBQ0UgaW4gVE9PTEJBUl9HZXRJdGVtUmVjdCgpLiAgQWRkZWQKCWJ1dHRvbiB3aWR0aCB0byBUUkFDRSBpbiBUT09MQkFSX0NhbGNUb29sYmFyKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIFJlZHJhd1dpbmRvdygpJ3MgdG8gSW52YWxpZGF0ZVJlY3QoKSdzLiAgUmVkcmF3V2luZG93KCkgd2FzCgliZWluZyBjYWxsZWQgd2l0aCBSRFdfVVBEQVRFTk9XLCBmb3JjaW5nIGltbWVkaWF0ZSBwYWludGluZy4gIEFkZGVkCglyZWRyYXdpbmcgbG9naWMgdG8gU1RBVFVTQkFSX1NldFRleHRXKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJRml4IGJlaGF2aW9yIG9mIFRWU19TSU5HTEVFWFBBTkQgc3R5bGUgYnJva2VuIGluIENvcmVsIG1lcmdlLiAgT3B0aW1pemUKCXJlZHJhd2luZyBpbiBUUkVFVklFV19TZXRJdGVtQSgpIHRvIHJlZHJhdyBvbmx5IGlmIHRoZSBpdGVtIGNoYW5nZXMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSYWlzZWQgTUFYX0RMTFMgdG8gMTAwLgoKMjAwMC0wOS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnNvY2syLmgsIGluY2x1ZGUvd2luc3ZjLmgsIGluY2x1ZGUvd3R5cGVzLmgsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgc29tZSBtaXNzaW5nIFdJTkVMSUJfTkFNRV9BVyBkZWZpbml0aW9ucywgdHlwZXMgYW5kIG1lc3NhZ2VzCgktIFNtYWxsIHByb3RvdHlwZSBmaXhlcwoKCSogcmVsYXkzMi9zbm9vcC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNhdGNoIEVYQ0VQVElPTl9QUklWX0lOU1RSVUNUSU9OIGV4Y2VwdGlvbiB0b28uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCU5vdGlmaWNhdGlvbiBOTV9DTElDSywgTk1fUkNMSUNLIGFuZCBOTV9EQkxDTEsgc2VudCBieSB0aGUgbGlzdHZpZXcKCXNob3VsZCBzZXQgbFBhcmFtIHRvIGEgTk1MSVNUVklFVyBpbnN0ZWFkIG9mIGEgTk1IRFIuIEFjY29yZGluZyB0bwoJTVNETiBkb2MsIGl0IGlzIGxpa2UgdGhhdCBzaW5jZSB2ZXJzaW9uIDQuNzEsIFdpbmUgaXMgcmV0dXJuaW5nIDUuMCBhcwoJdGhlIERMTCB2ZXJzaW9uLgoKCSogY29udHJvbHMvbWVudS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCB3aW5kb3cgbG9jayBwcm9ibGVtIGluIFNldE1lbnUoKS4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSGVubmluZyBIb2ZmbWFubgoJQXZvaWQgZGVhZGxvY2tzIGluIEVudW1NZXRhRmlsZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBdm9pZCBpbmZpbml0ZSBsb29wIGlmIFF1ZXJ5UGF0aE9mUmVnVHlwZUxpYiBpcyBjYWxsZWQgd2l0aCBsY2lkPTAuCgoyMDAwLTA5LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50ZXJydXB0cy5jLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBtZW1vcnkvaW5zdHIuYzoKCU1pc2MgY2xlYW51cHMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaDoKCUFkZGVkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIHN3aXRjaGluZyB0byB2bTg2IG1vZGUgd2l0aCBwcm9wZXIKCWV4Y2VwdGlvbiBoYW5kbGluZy4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS92aXJ0dWFsLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglNb3ZlZCBGSUxFX2RvbW1hcCgpIHRvIG1lbW9yeS92aXJ0dWFsLmMgKGFuZCByZW5hbWVkIGl0IFZJUlRVQUxfbW1hcCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJQ2hhbmdlIEZJWE1FKCJCdXR0b24gc2l6ZSBzZXQgYWZ0ZXIgYnV0dG9uIGluIHRvb2xiYXJcbiIpIGluCglTZXRCdXR0b25TaXplKCkgdG8gV0FSTiBhcyBxdWl0ZSBhIGZldyBhcHBsaWNhdGlvbnMgYXJlIGRvaW5nIHRoaXMKCWFmdGVyIGFkZGluZyBlYWNoIGJ1dHRvbiB0byB0aGUgdG9vbGJhciBhbmQgdGhlcmUgaXMgbm8gd2F5IHdlIGNhbgoJc3RvcCB0aGVtLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJUmVtb3ZlIHVudXNlZCBsb2NhbCB2YXJpYWJsZSBpbiBER0FfSURpcmVjdERyYXdTdXJmYWNlNEltcGxfU2V0UGFsZXR0ZSgpLgoKCSogbWlzYy9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCS0gcmVtb3ZlZCByZWR1bmRhbnQgZnVuY3Rpb25zIENPTU1fR2V0KFJlYWQvV3JpdGUpRmQKCS0gY29ycmVjdGVkIHRoZSBuYW1lIG9mIDE2Yml0IGZ1bmN0aW9ucyBpbiBjb21tZW50cwoJLSByZW1vdmVkIHVudXNlZCBzdGF0aWMgdmFyaWFibGUKCgkqIFJFQURNRTogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBwcmVmZXIgd2luZWluc3RhbGwKCS0gbWVudGlvbiBkZWJ1Z2dlciBzZXR1cCAodGVtcG9yYXJ5KQoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUZpeGVkIGluY29ycmVjdCBhcmcgY291bnQgaW4gU0hHZXRTZXR0aW5ncyB0aGF0IGNhdXNlcyB3aW56aXAzMi5leGUgdG8KCXJlcG9ydCBhbiBlcnJvci4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJU29ydGluZyBpdGVtcyBpbiBhIGxpc3R2aWV3IHVzaW5nIExWV19TT1JUSVRFTVMgaXMgb25seSBzb3J0aW5nIHRoZSBpdGVtcwoJYW5kIG5vdCB0aGUgc3ViaXRlbXMuIFRoaXMgcGF0Y2ggZml4IHRoaXMgaXNzdWUuIEkndmUgcmVtb3ZlIHRoZSB0ZW1wb3JhcnkKCVNvcnRsaXN0LCBpdCB3YXMgbm90IG5lY2Vzc2FyeSB0byBjcmVhdGUgYW5vdGhlciBsaXN0LCBhbmQgaXQgd2FzIGJ1Z2d5LgoKMjAwMC0wOS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgd2luZG93cy94MTFkcnYvZXZlbnQuYywgaWYxNjMyL3RodW5rLmM6CglSZW1vdmVkIGEgY291cGxlIG9mIHVudXNlZCBmdW5jdGlvbnMgaW4gdGhlIENhbGxvdXQgc3RydWN0dXJlLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglNb3ZlZCBTZWxlY3QvUmVhbGl6ZVBhbGV0dGUgaW1wbGVtZW50YXRpb24gdG8gVVNFUiBhbmQgdXNlCglwZm5TZWxlY3QvUmVhbGl6ZVBhbGV0dGUgZnVuY3Rpb24gcG9pbnRlcnMgaW4gR0RJLgoJTWFrZSBzdXJlIHRoZSBwYWxldHRlIGhhbmRsZSBpcyB2YWxpZCBpbiBHRElTZWxlY3RQYWxldHRlMTYgKHRoYW5rcyB0bwoJVXdlIEJvbm5lcykuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBtaXNjL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgU2V0Q29tbU1hc2ssIFNldENvbW1UaW1lb3V0cywgR2V0Q29tbU1hc2ssIEdldENvbW1UaW1lb3V0cy4KCgkqIGRsbHMvd2luZXBzL29iamVjdHMuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIG5vbi1kZWxldGFibGUgc3lzdGVtIGJydXNoZXMgYW5kIHBlbnMgY3JlYXRlZCBieQoJVVNFUi4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUpvaG4gR2lsbW9yZSA8Z251QHRvYWQuY29tPgoJQ2xlYW5lZCBpdCB1cCBzbyB0aGF0IGNvZGUgcGF0aHMgd2hpY2ggaGF2ZSB1bnN1cHBvcnRlZCBXU19TTyB2YWx1ZXMKCW5ldmVyIGFjdHVhbGx5IHBhc3MgdGhlbSB0byBVbml4IHN5c3RlbSBjYWxscy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIG1lbW9yeS92aXJ0dWFsLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBWaXJ0dWFsQWxsb2NFeC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIEdldFRpbWVab25lSW5mb3JtYXRpb24gYW5kIFRJTUVfWk9ORV9JRF9JTlZBTElELgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIHRhYiBjb250cm9sIHRvIHVzZSBIVFRSQU5TUEFSRU5UIHdoZW4gbW91c2UgaGl0cyBjbGllbnQgYXJlYSwKCWJ1dCBub3QgdGFiIGNvbnRyb2wgYnV0dG9ucy4KCgkqIG1pc2MvY2Ryb20uYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU2lsZW5jZSBzb21lIGJvZ3VzIGVycm9yIG1lc3NhZ2UuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkanVzdGVkIHRvIGFsbG93IE1GQyBjb21waWxhdGlvbjsgcHJldmVudCBkZWZpbml0aW9uIG9mIHN0cnVjdCBmZF9zZXQKCXdoaWNoIGNvbmZsaWN0cyB3aXRoIHRoZSBmZF9zZXQgdHlwZWRlZi4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgUFdORENMQVNTIGRlZmluaXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUFsbG93IGhhdmluZyBhIHRyYW5zcGFyZW50IGJhY2tncm91bmQgdGV4dCBjb2xvciBmb3IgdGhlIGxpc3R2aWV3LgoKCSogb2xlL29sZTJubHMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglVc2UgdGhlIHN5c3RlbSBsb2NhbCB0aW1lIGlmIGxwVGltZT1OVUxMLgoKMjAwMC0wOS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVwZGF0ZSBFU1AgY29ycmVjdGx5IG9uIHJldHVybiBmcm9tIGZsYXQgdGh1bmsgcm91dGluZXMuCgoJKiB3aW5kb3dzL3dpbnByb2MuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgbG9hZGVyL25lL21vZHVsZS5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgaWYxNjMyL3JlbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vZGlmaWVkIENhbGxUbzE2UmVnaXN0ZXIgcm91dGluZXMgdG8gdXBkYXRlIHJlZ2lzdGVyIGNvbnRleHQgYWZ0ZXIKCWNhbGwgcmV0dXJucy4gQ2FsbGVycyBhZGFwdGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBTdHIqIHByb3RvdHlwZXMgdG8gc2hsd2FwaS5oLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJTWVyZ2VkIG1haW4gV2luZSBjaGFuZ2VzIGludG8gQ29yZWwncyB0cmVldmlldyBjb250cm9sIHJld3JpdHRlbiBieQoJU2VyZ2UgSXZhbm92IGFuZCBBbmRyZXcgTGV3eWNreS4gIEZpeGVkIGl0ZW0gZm9jdXMgYmVoYXZpb3IgdG8gbWF0Y2gKCVdpbmRvd3MuICBGaXhlZCBpdGVtIHNlbGVjdGlvbiB3aGVuIHVuL2V4cGFuZGluZyBpdGVtcy4gIEltcGxlbWVudGVkCglXTV9TRVRSRURSQVcuICBBZGRlZCBDb3JlbCdzIENPTUNUTDMyX0NyZWF0ZVRvb2xUaXAoKSBoZWxwZXIgZnVuY3Rpb24KCXRvIGNvbW1jdHJsLmMuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmMsIGNvbnRyb2xzL2J1dHRvbi5jOgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CgkoTWVyZ2VkIGJ5IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPikKCUZpeGVkIHByb2JsZW0gd2l0aCBvcmlnaW4gZm9yIERTVF9DT01QTEVYIHN0eWxlLgoJRml4ZWQgaGFuZGxpbmcgb2YgRFNTX0RJU0FCTEVEIGFuZCBEU1NfREVGQVVMVCBzdHlsZXMuCgoJQWRkZWQgaGFuZGxpbmcgb2YgQlNfTVVMVElMSU5FIHN0eWxlLCBsYWJlbCBhbGlnbm1lbnQKCXN0eWxlcyAoQlNfUklHSFQsIGV0Yy4pIGFuZCBzb21lIGV4b3RpYyBzdHlsZXMgQlNfRkxBVCAob25seQoJcHVzaGJ1dHRvbnMgZm9yIG5vdyksIGFuZCBCU19QVVNITElLRS4KCglNb2RpZmllZCBsYWJlbCBkcmF3aW5nIHByb2NlZHVyZTogbm93IGFsbCBraW5kcyBvZiBidXR0b25zCgl1c2UgY29tbW9uIEJVVFRPTl9EcmF3TGFiZWwgZnVuY3Rpb24uIEFjdHVhbCBsYWJlbCBkcmF3aW5nIGlzCglwZXJmb3JtZWQgYnkgRHJhd1N0YXRlVyBmdW5jdGlvbi4KCglHcm91cEJveCBtdXN0IHVzZSBXTV9DVExDT0xPUlNUQVRJQyBpbnN0ZWFkIG9mIFdNX0NUTENPTE9SQlROIG1lc3NhZ2UuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVcGdyYWRlIGFsc28gMTVicHAgdG8gMTZicHAgc3VyZmFjZXMuCgoyMDAwLTA5LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW5wb3MuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUtERSAxLnggaGFzIHByb2JsZW1zIHdpdGggdXNpbmcgWFNoYXBlQ29tYmluZU1hc2sgd2hlbiB0aGVyZSB3YXMgbm8KCXByZXZpb3VzIHJlZ2lvbi4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXRTY3JvbGxJbmZvIDogZG9uJ3Qgc2hvdy9oaWRlIHNjcm9sbGJhciBpZiBubyBwYXJhbWV0ZXIgKG1pbnZhbCwKCW1heHZhbCkgY2hhbmdlLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUFkZGVkIG1pc3NpbmcgX192b2xhdGlsZV9fLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9nZGkvZ2RpLnNwZWMsIGZpbGVzL2ZpbGUuYywgbWlzYy9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBjb250cm9scy9idXR0b24uYywgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvdGFiLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIGZpeGVzIGRlYnVnZ2VyIG91dHB1dAoJLSBnZXQgcmlkIG9mIHdyb25nIGNvbW1lbnRzCgktIGZpeCBjb21tZW50cwoJLSAuc3BlYyBzcGVsbGluZyBmaXgKCS0gaW1wcm92ZSB3YXJuaW5nIG1lc3NhZ2UKCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIHdpbjMyL3RpbWUuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCSJpbXBsZW1lbnRlZCIgR2V0U3lzdGVtVGltZUFkanVzdG1lbnQuCgoJKiB3aW5kb3dzL2NsYXNzLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCB0cnkgdG8gZGVsZXRlIGEgd25kY2xhc3MgYmFja2dyb3VuZCBicnVzaCBpZiBpdCdzIGEgQ09MT1JfKgoJY29uc3RhbnQuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglNYWtlIHN1cmUgTkNfSGFuZGxlTkNDYWxjU2l6ZSByZXR1cm5zIGEgdmFsaWQgcmVjdGFuZ2xlLgoJUGFpbnRpbmcgZmFpbHMgaWYgdGhlIHJlY3RhbmdsZSBpcyBpbnZhbGlkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglIaWRlIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgd2hlbiBsaXN0dmlldyBzdHlsZSBpcyBMVlNfTElTVC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkIFdNX1VTRVJDSEFOR0VELgoKCSogZGVidWdnZXIvaW5mby5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBpbmNsdWRlL3RsaGVscDMyLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgdHBYWFggaW5zdGVhZCBvZiB0YlhYWCBpbiB0YWdUSFJFQURFTlRSWTMyLgoKCSogZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgREdBIC8gREdBIDIgcGFsZXR0ZSBjcmVhdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeCBhIG1lbW9yeSBsZWFrIGluIFgxMURSVl9HZXRUZXh0RXh0ZW50UG9pbnQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDktMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6CglBZGRlZCBXSU5FU0VSVkVSIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGFsbG93IG92ZXJyaWRpbmcgdGhlIG5vcm1hbAoJc2VydmVyIHNlYXJjaCBzZXF1ZW5jZS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOgoJUmVtb3ZlZCBjaGRpcigiLyIpIHVudGlsIHdlIGhhdmUgcHJvcGVyIFVuaXggY3dkIG1hbmFnZW1lbnQuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJSW1wbGVtZW50ZWQgUnRscFdhaXRGb3JDcml0aWNhbFNlY3Rpb24gYW5kIFJ0bHBVbldhaXRDcml0aWNhbFNlY3Rpb24uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBORV9Mb2FkRXhlSGVhZGVyIGVycm9yIGhhbmRsaW5nLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBsb2FkZXIgLSBicm9rZW4gc2VhcmNoIGZvciBhbHJlYWR5IGxvYWRlZCBtb2R1bGVzLgoKCSogb2JqZWN0cy9kaWIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZmFsbGJhY2sgY29kZSBmb3IgU3RyZXRjaEJsdCBvbiBSTEUgRElCcyB3aXRoIGdhcHMuCgoyMDAwLTA5LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBiZGZ0b3BjZiBjb21tYW5kLgoKCSogZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9zdHJlYW0uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgKkZpbHRlciogZnVuY3Rpb25zLgoJTWlzYyBidWcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBUQ01fR0VUUk9XQ09VTlQuCgoJKiBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIGxpYnRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUgbWlzc2luZyBsaWJyYXJ5IGRlcGVuZGVuY2llcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY2d1aWQuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBjZ3VpZC5oLgoKCSogZGxscy9kZHJhdy9kZ2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEbyBub3Qgc3VwcG9ydCBER0Egd2hlbiBEaXJlY3RWaWRlbyBub3QgcHJlc2VudC4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVVuaWZ5IFdNX1NFVFRFWFQgaGFuZGxpbmcgYW1vbmcgRGVmV2luZG93UHJvYzE2L0RlZldpbmRvd1Byb2NBL0RlZldpbmRvd1Byb2NXLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglBdm9pZCBkaXZpZGUgYnkgemVybyB3aGVuIGxpc3Rib3ggc2V0IHRvIHplcm8gaGVpZ2h0LgoKCSogd2luZG93cy9tZGkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJU2ltcGxpZnkgYSBiaXQgTURJIGNoaWxkIHdpbmRvdyBjcmVhdGlvbi4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJR2V0TWVudSBtaWdodCBiZSB1c2VkIHRvIGdldCBjaGlsZCB3aW5kb3cgaWQuCgoyMDAwLTA5LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUdpb3Zhbm5pIFBhbmNvdHRpIDxnaW92YW5uaS5wYW5jb3R0aUBjZWRlY3JhLml0PgoJSXRhbGlhbiBrZXlib2FyZCBmaXhlcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglET1NGU19NYXRjaExvbmcgaWdub3JlZCBzZXZlcmFsIHRoaW5ncyBhYm91dCBmaWxlIG1hc2sgbWF0Y2hpbmcgZm9yCglsb25nIGZpbGUgbmFtZXMuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJRXJpayBIb2ZtYW4gPGVyaWsuaG9mbWFuQGExLm5sPgoJQWRkZWQgbWlzc2luZyBjb25zdCB0byBleHRlcm5hbCB0YWJsZXMgZGVmaW5pdGlvbnMuCgoJKiBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS9jb21tLmgsIGluY2x1ZGUvc2VydmVyLmgsIG1pc2MvY29tbS5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUFkZGVkIHNlcmlhbCBwb3J0IG9iamVjdCB0byB0aGUgc2VydmVyLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSBNYWtlIHN1cmUgdG9vbHRpcHMgYXJlIGhpZGRlbiBiZWZvcmUgZGVsZXRpbmcgdGhlbS4KCS0gR2xpdGNoIGhhcHBlbmVkIHdoaWxlIG1vdmluZyBmcm9tIGEgdG9vbHRpcCB0byBhbm90aGVyIChmaXhlZCkuCgoJKiBvYmplY3RzL2RjLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTWFrZSBHZXREZXZpY2VDYXBzMTYgKGhkYywgTlVNQ09MT1JTKSBub3QgcmV0dXJuIC0xIGZvciAxNiBiaXRzIHByb2dyYW1zLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3VwcG9ydCBmb3IgY3A5NDkuCgoyMDAwLTA5LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2F0b20uYzogRml4ZWQgY3V0JnBhc3RlIHR5cG8uCgoJKiB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194dmlkZW8uYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS90c194dmlkZW8uaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVyczoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBwb3NzaWJpbGl0eSB0byB1c2UgWFZpZGVvLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgYm90aCBjdXN0b21kcmF3IG1lc3NhZ2Ugc2VuZGluZyBhbmQgaGFuZGxpbmcgKGJhc2VkIG9mZgoJdGhlIHRyZWV2aWV3IG1ldGhvZCkgYXMgd2VsbCBhcyBMVlNfT1dORVJEUkFXRklYRUQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJRml4ZWQgYSBidWcgKGluY29ycmVjdCBzaXplIGluIG1lbW1vdmUpIHRoYXQgSSBpbnRyb2R1Y2VkIHdpdGggYW4KCWVhcmxpZXIgcGF0Y2guIFRlc3RlZCB3aXRoIHdvcmR2aWV3LgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglQaGlsIENvbGUgPHVrcGdjQHAuY29sZS5lYXN5bmV0LmNvLnVrPgoJQWRkZWQgdHdvIGRpcmVjdG9yaWVzIHRvIGRlZmF1bHQgbm9uLXdpbmRvd3MgaW5zdGFsbC4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBuZXdlciAoQVNQSSAzLjAgPykgZnVuY3Rpb24gc3R1YnMgdG8gV05BU1BJMzIuCglCZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJU3lzdHJheSBzaG91bGQga2VlcCBhIGNvcHkgb2YgaXRzIGljb25zLgoKCSogc2VydmVyL3NvY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGFwdGVkIFdpbnNvY2sgdG8gTGludXggMi40IFRDUCBzb2NrZXQgcG9sbCgpIGJlaGF2aW91cgoJKHRoYW5rcyB0byBCZXJlbmQgT3pjZXJpIGZvciBmaW5kaW5nIHRoZSBwcm9ibGVtKS4KCgkqIHdpbmRvd3MvbWRpLmM6IFNlcmdlIEl2YW5vdgoJRGVsYXkgZGVzdHJveWluZyBtZW51IGVudHJ5IHVudGlsIGFsbCBtZXNzYWdlcyBhcmUgc2VudC4KCjIwMDAtMDktMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvYXRvbS5jOgoJRml4ZWQgVW5pY29kZSBjb252ZXJzaW9uIGluIEdldEF0b21OYW1lQSAodGhhbmtzIHRvIEdlcmFyZCBQYXRlbCkuCgoJKiBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9jb21wb2JqLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGQgamlzeDAyMTIgZW5jb2RpbmcuCglSZW1vdmUgRklYTUVzIGZvciBpbXBsZW1lbnRlZCBEQkNTIGhhbmRsaW5nLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQWRkZWQgbWlzc2luZyBjb21tYS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglSZXdyb3RlIHF1aWNrc29ydCB0byBzb2x2ZSBpbmZpbml0ZSByZWN1cnNpb25zIFdpbjk4IGV4cGxvcmVyLmV4ZS4KCjIwMDAtMDktMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9jb25zb2xlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZSB4dGVybSBtb3VzZSB0cmFja2luZyBtb2RlIHRvIEJUTl9FVkVOVF9NT1VTRSAodHJhY2sgaWYgcHJlc3NlZCkuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQXZvaWQgY3Jhc2ggb24gZW1wdHkgY29tbWFuZC1saW5lLgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkZWQgdHdvIG1pc3NpbmcgY2FzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUplYW4tQ2xhdWRlIEJhdGlzdGEgPGpjYkBtYWNhZGFtaWFuLmNvbT4KCVVzZSBTZXRESUJpdHMgaW5zdGVhZCBvZiBTdHJldGNoRElCaXRzIChpbiBBTklNQVRFX1BhaW50RnJhbWUpLgoKMjAwMC0wOS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi9idWlsdGluLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBdm9pZCBidWZmZXIgb3ZlcmZsb3dzIGluIGJ1aWx0aW4gZGxsIGxvYWRpbmcgKHdpdGggdGhlIGhlbHAgb2YgRG1pdHJ5CglUaW1vc2hrb3YpLgoKCSogd2luZG93cy9tZGkuYzogSGVubmluZyBIb2ZmbWFubgoJQXVnbWVudCBtZW51IHdoZW4gYSBtZGkgd2luZG93IHN0YXJ0cyBtYXhpbWl6ZWQuCgoJKiB3aW5kb3dzL21kaS5jOiBGcmFuY2lzIEJlYXVkZXQKCU1ESSBQYXRjaCB3aGljaCBmaXhlcyBwcm9ibGVtcyBpbiBQUiwgUVAsIFdQIGFuZCBQYXJhZG94LgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRG9uJ3QgdXNlIGNvcGllcyBvZiBjcml0aWNhbCBzZWN0aW9ucyBtYWRlIGJ5IG1lbWNweSgpCglBZGRlZCBtaXNzaW5nIFdJTkFQSXMKCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4IGZvciBkZWJ1Z2dlciBkaXNhc3NlbWJseSBiZWluZyBvZmYgYnkgb25lIGJ5dGUgYWZ0ZXIgdXNpbmcgbmV4dGkKCW9uIGEgImNhbGwiIGluc3RydWN0aW9uLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglXaGVuIGNoZWNraW5nIHRoZSBzb2NrZXQgcmV0dXJuIGJ5IHRoZSBzZXJ2ZXIgcmVxdWVzdCwgd2Ugc2hvdWxkIGRvIGEKCSJzaWduZWQiIGNoZWNrLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIENvR2V0UFNDbHNpZCgpLgoKMjAwMC0wOC0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVjb25mOgoJUGhpbCBDb2xlIDx1a3BnY0BwLmNvbGUuZWFzeW5ldC5jby51az4KCVRoZSBQYXRoIHZhcmlhYmxlIGluIHRoZSBjcmVhdGVkIC53aW5lcmMgbXVzdCBiZSBpbiBkb3MgZm9ybWF0LgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglQaGlsIENvbGUgPHVrcGdjQHAuY29sZS5lYXN5bmV0LmNvLnVrPgoJU21hbGwgZml4LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgYSBzdHJpbmcgYnVmZmVyIG92ZXJmbG93LgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglKZWFuLUNsYXVkZSBCYXRpc3RhIDxqY2JAbWFjYWRhbWlhbi5jb20+CgktIGltcHJvdmVkIEFDU19UUkFOU1BBUkVOVCBhbmQgQUNTX0NFTlRFUiBzdXBwb3J0CgktIGFkZGVkIFJMRTggaW5jcmVtZW50YWwgZGVjb21wcmVzc2lvbgoJLSBlYWNoIGFuaW1hdGlvbiBpcyBub3cgY29udHJvbGxlZCBieSBpdHMgb3duIFdpbmRvd3MgdGhyZWFkCgktIGFkZGVkIHVzZSBvZiBDcml0aWNhbCBTZWN0aW9ucyBpbiB0aGUgV01fUEFJTlQgaGFuZGxlci4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZXBsYWNlZCBVU0VSMzIuRExMIHVzZSBieSBoYXJkY29kZWQgdGFibGVzIGZvciBWa0tleVNjYW5BIGFuZAoJTWFwVmlydHVhbEtleUEuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2NvbnRleHRfc3BhcmMuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3NlcnZlci5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NvbW0uYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQ29udmVydGVkIGEgbG90IG9mIHNlcnZlciByZXF1ZXN0cyB0byB0aGUgbmV3IGV4Y2VwdGlvbiBoYW5kbGluZwoJbWVjaGFuaXNtLgoKMjAwMC0wOC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglGaXhlZCBub24tT3BlbkdMIGNvbXBpbGUuCgoJKiBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvc2VydmVyLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvcmVnaXN0cnkuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2NoZWR1bGVyL3RpbWVyLmMsIHNlcnZlci9hdG9tLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luZG93cy9xdWV1ZS5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9zeW5jLmM6CglBZGRlZCBleGNlcHRpb24gaGFuZGxpbmcgd3JhcHBlciB0byBhIG51bWJlciBvZiBzZXJ2ZXIgcmVxdWVzdHMuCglDaGFuZ2VkIGEgZmV3IHJlcXVlc3RzIHRvIHVzZSB0aGUgbmV3IHZhcmFyZyBtZWNoYW5pc20uCgoyMDAwLTA4LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIG1pc2MvY2Ryb20uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIHZlcmJvc2UgQ0QtUk9NIHNlcmlhbCBudW1iZXIgd2FybmluZ3MgYW5kIHNvbWUgc3BlbGxpbmcgZXJyb3JzLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglOZXdiaWUgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBmb3IgM0QgY3JlYXRpb24gZmFpbHVyZS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gTW9yZSBpbXBsZW1lbnRhdGlvbgoJLSBTaG91bGQgYmUgYWJsZSB0byBlbnVtZXJhdGUgc2Vzc2lvbnMgYW55d2hlcmUgd2l0aCBhdCBsZWFzdCB0Y3AvaXAKCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHM6CglBZGRlZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBtYWNyb3MgdGhhdCB3aWxsIGJlIG5lZWRlZCB0byBzdXBwb3J0CglyZWVudHJhbnQgc2VydmVyIHJlcXVlc3RzLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9pbnB1dC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBmaXggb25lIGxvY2tpbmcgaWdub3JhbnQgcmV0dXJuIDA7IGluIE1TR19TZW5kTWVzc2FnZUludGVyVGhyZWFkKCkKCS0gZml4IGEgY3Jhc2ggaW4gUVVFVUVfUmVtb3ZlU01TRygpCgktIGNvbnZlcnQgc29tZSBxdWV1ZSBXQVJOKCkgdG8gRVJSKCkKCS0gc3BhaWxlbmcgZmlrc2VzCgoJKiBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFsd2F5cyBjYWxsIExJU1RWSUVXX1NldFNlbGVjdGlvbigpIGZvciBhbiBpdGVtLCBldmVuIGlmIHRoYXQgaXRlbQoJaGFzIGJlZW4gc2VsZWN0ZWQgYmVmb3JlLCBpbiBvcmRlciB0byBsZXQgb3RoZXIgaXRlbXMgZ2V0IGVyYXNlZC4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY29tPgoJQ29udmVydCB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgaWQgdG8gYSBnbHlwaCBpZCBpbgoJWDExRFJWX0dldFRleHRFeHRlbnRQb2ludC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNvbT4KCS0gZW5oYW5jZWQgcmVwb3J0aW5nIG9mIHVuc3VwcG9ydGVkIFggZm9udCBlbmNvZGluZ3MKCS0gYWRkZWQgLWNwLSotIGRhdGEgdG8gZm9udCBlbmNvZGluZyBsb29rdXAgc3RydWN0dXJlcwoKMjAwMC0wOC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvbG9hZG9yZGVyLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2Mvb3B0aW9ucy5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJLSBBbHdheXMgc3RvcmUgdGhlIGZ1bGwgcGF0aCBuYW1lIG9mIDMyYml0IG1vZHVsZXMgaW4gV0lORV9NT0RSRUYKCS0gQWRkIHRoZSBwb3NzaWJpbGl0eSB0byB1c2UgcGF0aCBuYW1lcyB3aXRoIHRoZSAtLWRsbCBjb21tYW5kIGxpbmUKCSAgb3B0aW9uCgktIEFkZCB0aGUgcG9zc2liaWxpdHkgdG8gdXNlIHRoZSAtLWRsbCBjb21tYW5kIGxpbmUgb3B0aW9uIHNldmVyYWwKCSAgdGltZXMuCgktIE5vdGU6IFRoZSBjb2xvbi1zaWduIGlzIG5vdyBleGNoYW5nZWQgd2l0aCB0aGUgcGx1cy1zaWduLCBhcyBpdCBpcwoJICBwYXJ0IG9mIGRvcyBwYXRoIG5hbWVzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBhIHdpbmUgcnBtIHVuaW5zdGFsbCBzZWN0aW9uIHRvIHdpbmVpbnN0YWxsLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCUZyYW5jb2lzIE1ldGhvdCA8ZnJhbmNvaXNtQG1hY2FkYW1pYW4uY29tPgoJRG8gbm90IGNoZWNrIGZvciBzeXN0ZW0gbWVudSBpZiB0aGUgd2luZG93IGhhcyBzdHlsZSBXU19FWF9UT09MX1dJTkRPVy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgQVJHQiAxNTU1IGZvcm1hdAoJLSBmaXhlZCByZWZjb3VudCBwcm9ibGVtIGZvciBBZGQvRGVsZXRlQXR0YWNoZWRTdXJmYWNlCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jb20+CglGaXhlZCB0eXBvIGluIEhLRVlfQ1VSUkVOVF9DT05GSUcgbmFtZS4KCgkqIGRsbHMva2VybmVsL21lc3NhZ2VzL3dpbmVycl9lbnUubWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZCBtaXNzaW5nIG1lc3NhZ2UgdG8gd2luZXJyX2VudS5tYy4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUluY3JlYXNlIG51bWJlciBvZiBzdXBwb3J0ZWQgYXJncyBmb3IgV09XX0NhbGxQcm9jMzJXMTYgZnJvbSAxMSB0byAxMwoJKGZvciBDcmVhdGVTZXJ2aWNlKS4KCgkqIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLCBtc2Rvcy92eGQuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJU3R1YiBzdXBwb3J0IGZvciBpbnQyZi9heD0xNjg0L2J4PTAwMjcgKFZYRExEUikuCgoyMDAwLTA4LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvZXhjZXB0LmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBsb2FkZXIvdGFzay5jOgoJUmVtb3ZlZCBjYWxscyB0byBDb252ZXJ0VG9HbG9iYWxIYW5kbGUgYW5kIE1ha2VDcml0aWNhbFNlY3Rpb25HbG9iYWwuCgoJKiBkbGxzL250ZGxsL3JlZy5jLCBpbmNsdWRlL250ZGRrLmg6CglTaW1wbGlmaWVkIHJvb3Qga2V5IGhhbmRsaW5nIG5vdyB0aGF0IHRoZSBzZXJ2ZXIgc3VwcG9ydHMgYSByZWFsIHJvb3QKCWtleS4gRml4ZWQgYSBmZXcgcHJvdG90eXBlcy4gSW1wbGVtZW50ZWQgTnREZWxldGVLZXkvTnREZWxldGVWYWx1ZUtleS4KCgkqIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaDoKCUZpeGVkIGRlYnVnc3RyX2FzL3VzIHByb3RvdHlwZXMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2MvY29tbS5jLCBtaXNjL2V4dF9kZWJ1Z2dlci5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgY29uc29sZS94dGVybS5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9vbGVhdXQzMi9wYXJzZWR0LmMsIGRsbHMvd2luaW5ldC9mdHAuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gbWFkZSB0aGUgTUlESSBzZXF1ZW5jZXIgZXJyb3IgbWVzc2FnZSBtdWNoIGJldHRlciBmb3IgY29uZnVzZWQgdXNlcnMKCSAgdG8gYmUgZm91bmQgb24gI1dpbmVIUQoJLSB1c2Ugc3RyZXJyb3IgaW5zdGVhZCBvZiBlcnJubyBhdCBpbXBvcnRhbnQgcGxhY2VzCgktIGdvdCByaWQgb2YgSEFWRV9TVFJFUlJPUiBtYWNybwoJLSByZW1vdmVkIHNvbWUgI2luY2x1ZGU6cyAoaG9wZWZ1bGx5IEkgZGlkbid0IGJyZWFrIGFueXRoaW5nKQoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVJlcGxhY2VkIGNDdXJJbWFnZSBieSBjTWF4SW1hZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJIkZpeGVkIiBob3JyaWJseSBtaXNhbGlnbmVkIHBhZ2VzIGluIHByb3BlcnR5IHNoZWV0cyBvZiBhcHBhcmVudGx5CgluZXdlciBJbnN0YWxsU2hpZWxkcy4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVnaXN0ZXIgV2luZSBQb3N0c2NyaXB0IERyaXZlciBhcyAiV0lORVBTIiwgIldJTkVQUy5ETEwiIGFuZAoJIldJTkVQUy5EUlYiIHRvIGFsbG93IGFuIGVhc3kgY29uZmlndXJpbmcgZm9yIHVzZXJzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJICBpbXBsZW1lbnRzIERyYXdUZXh0IGZvciBjcDkzMi4KCgkqIGRsbHMvdXNlci9kZGVtbC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRG9uJ3QgbWFrZSBEREVNTCBtdXRleGVzIGdsb2JhbCBhbnkgbW9yZS4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmg6CglBZGRlZCBhIHJlYWwgcm9vdCBrZXkgYW5kIHNpbXBsaWZpZWQgY3JlYXRpb24gb2YgdGhlIEhLRVlfKiBzcGVjaWFsIHJvb3Qga2V5cy4KCURvIG5vdCBwcmVmaXggYWxsIGtleXMgd2l0aCB0aGUgbmFtZSBvZiB0aGUgdG9wIGtleSB3aGVuIHNhdmluZyB0byBhIGZpbGUuCglUcnkgdG8gbG9hZCAkV0lORVBSRUZJWC9jb25maWcgaW50byB0aGUgV2luZSBjb25maWcgYnJhbmNoIGF0IHN0YXJ0dXAuCgoJKiBkbGxzL21zYWNtLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2FjbS9tc2FjbS5yYywgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20vc3RyZWFtLmMsIGRsbHMvbXNhY20vd2luZWFjbS5oLCBpbmNsdWRlL21zYWNtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIG1vc3Qgb2YgJypGb3JtYXQqJyBBUEkuCglJbXByb3ZlZCBpbnRlcm5hbCBvYmplY3QgYW5kIG1lc3NhZ2VzIGhhbmRsaW5nLgoJU3RhcnRlZCBzb21lICcqRmlsdGVyKicgZnVuY3Rpb25zLgoJRml4ZWQgc3RhbmRhcmQgaGVhZGVycyBmb3IgV2luZWxpYi4KCUZpeGVkIGFjbU1ldHJpY3MuCgoyMDAwLTA4LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBpbmNsdWRlL250ZGRrLmg6CglGaXhlZCBSdGwqIHN0cmluZyBmdW5jdGlvbnMgZm9yIHByb3BlciBNQkNTL2NvZGVwYWdlIHN1cHBvcnQuIEFkZGVkIGEKCWZldyBtb3JlIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNb3ZlZCBUQVNLX0NyZWF0ZSBjYWxsIHRvIEtFUk5FTCBpbml0aWFsaXNhdGlvbiByb3V0aW5lLgoJQ2xlYXIgbGFzdCBlcnJvciBjb2RlIGJlZm9yZSBjYWxsaW5nIG1haW4gZW50cnkgcG9pbnQgKHJlcG9ydGVkIGJ5CglKYW1lcyBKdXJhbikuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL3VzZXIuc3BlYywgbWVtb3J5L3N0cmluZy5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgV0lOQVBJIGlzc3VlcyB3aXRoIDE2LWJpdCBzcGVjIGZpbGVzICh0aGFua3MgdG8KCU1hcmN1cyBNZWlzc25lcikuCgoJKiBkbGxzL2RwbGF5eC9kcGxheV9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9xdWV1ZS5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmgsIGluY2x1ZGUvZHBsYXkuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvZ3VpZC5jLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBpbml0LmgsIGRsbHMvZHBsYXl4L2RwbGF5LmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBJbXBsZW1lbnRlZCBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBvZiBzZXJ2aWNlIHByb3ZpZGVycwoJLSBDcmVhdGVkIHNlcnZpY2UgcHJvdmlkZXIgQ09NIG9iamVjdAoJLSBMb3RzIG9mIGRwbGF5L2RwbG9iYnkgaW1wbGVtZW50YXRpb24vZml4ZXMKCS0gQ2xlYW4gdXAgb2Ygb2xlL2d1aWQuYwoKCSogb2JqZWN0cy9kYy5jOiBCYWNrZWQgb3V0IGZvbnQgY29kZXBhZ2UgY2hhbmdlLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1pc2MvY29tbS5jLCBtaXNjL3ZlcnNpb24uYywgbXNkb3MvaW50MmYuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNaW5vciBjb3NtZXRpYyBjaGFuZ2VzLgoKCSogbWlzYy90d2Vhay5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglDbGVhbnVwIGFuZCBzcGVlZHVwIG9mIGluaXQgY29kZS4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlc3RvcmVkIHRoZSBoUHNldWRvQml0bWFwIGhhY2sgZm9yIHByb2dyYW1zIGRlbGV0aW5nIHRoZSAxeDEgYml0bWFwCglpbiBtZW1vcnkgRENzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL3RleHQuYzoKCUJhY2tlZCBvdXQgZm9udCBjb2RlcGFnZSBjaGFuZ2UuCgoJKiBkbGxzL2RkcmF3L2hlbHBlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeGVkIHRoZSBkaXNwbGF5aW5nIG9mIHRoZSBGT1VSQ0MgY29kZXMgaW4gX2R1bXBfcGl4ZWxmb3JtYXQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVjb3JkaW5nIGZvcm1hdCBzZXR0aW5ncyAoMTYgYml0IHdhcyBicm9rZW4pIGFuZCByZWVudHJhbmN5Cglpc3N1ZXMuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUltcHJvdmVkIGEgYml0IHRoZSBmb2xkZXIgYnJvd3NpbmcgaW1wbGVtZW50YXRpb24uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCU1hdHRoZXcgTGFrZSA8TWFzdGVyUl9MQHlhaG9vLmNvbT4KCUFkZGVkIExITkQuCgoJKiB0b29scy93cmMvLmN2c2lnbm9yZSwgdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW46CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJRml4ZWQgYSBMQUxSKDIpIHByb2JsZW0gd2hpbGUgc2Nhbm5pbmcgdXNlcnR5cGUgcmVzb3VyY2VzIHdoaWNoIGhhZAoJaWRlbnRpZmllcnMgZm9yIGJvdGggbmFtZSBhbmQgdHlwZS4KCgkqIG1pc2Mvd3NwcmludGYuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglVc2UgaW50IGluc3RlYWQgb2YgQ0hBUi9XQ0hBUiBpbiB2YV9hcmcoKSAoZml4ZXMgZ2NjLWN1cnJlbnQgY29tcGlsZQoJcHJvYmxlbSkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDaGFuZ2UgcGl4ZWwgZm9ybWF0IGZvciAyNCBCUFAgc3VyZmFjZXMgd2hlbiB0aGUgRERyYXcgQlBQIGlzIDMyLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUdldE9iamVjdEE6IHVubG9jayB0aGUgb2JqZWN0IGFnYWluIGV2ZW4gaW4gY2FzZSBvZiBmYWlsdXJlLgoKMjAwMC0wOC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaDoKCUZpeGVkIGZpbmFsbHkgaGFuZGxlciBuYW1lLgoKCSogd2luZG93cy9jbGFzcy5jOgoJRml4ZWQgUmVnaXN0ZXJDbGFzcyBsYXN0IGVycm9yIGNvZGUgb24gYXRvbSBjcmVhdGlvbiBmYWlsdXJlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglDbGVhbmVkIHVwIG1ham9yIHVnbGluZXNzIGluIF9fbGZDaGVja1N1bS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglMYXJnZSBjYXB0aW9uIGljb25zIHNob3VsZCBlbmQgaW4gJy4uLicgd2hlbiB0aGV5IGFyZSBhYmJyZXZpYXRlZC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJRnJhbmNvaXMgTWV0aG90IDxmcmFuY29pc21AbWFjYWRhbWlhbi5jb20+CglGb3IgdGhlIHRyYW5zcGFyZW5jeSBpc3N1ZSwgaW1wbGVtZW50ZWQgYSBzd2l0Y2gtY2FzZSBmb3IgdGhlIGJpdGNvdW50CgkoYml0IHBlciBwaXhlbCkgb2YgdGhlIGFuaW1hdGlvbiBmaWxlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXaW5lIHdhcyBub3QgZHJhd2luZyB0cmFja2JhcnMgd2l0aCBtaW5pbXVtIHJhbmdlcyBvZiBtb3JlIHRoYW4gMAoJY29ycmVjdGx5LgoKMjAwMC0wOC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSByZW1vdmVkIHVubmVjZXNzYXJ5IHJlY3Vyc2lvbgoJLSB1cG9uIHF1ZXJ5IGZhaWx1cmUgb24gbWFpbiBwcmltYXJ5IGxjaWQgYW5kIHNlY29uZGFyeSBsY2lkLAoJICBhdHRlbXB0cyBhIHF1ZXJ5IG9uIHN5c3RlbSBsY2lkICgwKQoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGlmMTYzMi9zbm9vcC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogbXNkb3MvaW9wb3J0cy5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlcyBmb3IgcmVhZGluZyBsYXRjaGVkIHZhbHVlcyB3aXRoIHBvcnRzIDB4NDAtMHg0My4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglEb24ndCBjcmFzaCB3aGVuIGNhbGxpbmcgRGlyZWN0RHJhd1N1cmZhY2U6OkVudW1BdHRhY2hlZFN1cmZhY2VzIG9uIGEKCXN1cmZhY2Ugd2l0aCBubyBhdHRhY2hlZCBzdXJmYWNlcy4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQWxsb3cgRm9ybWF0TWVzc2FnZSB0byBsb2FkIFVuaWNvZGUgc3RyaW5nIHJlc291cmNlcy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2lubnQuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIEFQQyBzdXBwb3J0IGluIHdhaXRhYmxlIHRpbWVycy4KCgkqIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGNhbGxzIHRvIENMSVBQSU5HX1VwZGF0ZUdDUmVnaW9uLiBGaXhlZCBQYXRCbHQgdG8KCXVzZSBEQ19HZXREQ1VwZGF0ZS4KCjIwMDAtMDgtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMDA4MjEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDgtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gZG9uJ3QgcmV0dXJuIEZBTFNFIGZvciBzeXN0ZW0gcHJvY2VzcyBjaGFuZ2VzCgktIFNIVVRET1dOX05PUkVUUlkgaXMgMSBhbmQgaGFzIHRvIGJlIGluIHdpbmJhc2UuaAoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJlZ2lubmluZyBvZiBzb21lIHNpbXBsZSBvcHRpbWl6YXRpb24gb2YgdGhlIGxpc3R2aWV3CglkcmF3aW5nLiBTcGVjaWZpY2FsbHkgaXQgcmVkdWNlcyBmbGlja2VyIHdoZW4gc2VsZWN0aW9uIGNoYW5nZXMuCgoJKiBsb2FkZXIvdGFzay5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglUcmFuc2Zvcm0gZXZlcnkgRVJSKCkgdG8gV0FSTigpIGluIE1ha2VQcm9jSW5zdGFuY2UuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2FsbCBXcml0ZU91dFByb2ZpbGVzMTYgdG8gbWFrZSBzdXJlIHRoYXQgbGFzdCBwcm9maWxlIGdldHMgd3JpdHRlbi4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGluY2x1ZGUvZGlhbG9nLmgsIHdpbmRvd3MvZGlhbG9nLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURpc2FibGUgdGhlIG93bmVyIG9mIGEgbW9kYWwgZGlhbG9nIGJveCBqdXN0IGJlZm9yZSBjcmVhdGluZyB0aGUKCWRpYWxvZyB3aW5kb3cuCgoJKiBmaWxlcy9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCShmcm9tIElCTSBUb3BQYWdlIHBhdGNoKSByZXR1cm4gY29ycmVjdCBlcnJvciBmb3IgYWxyZWFkeSBleGlzdGluZwoJZmlsZS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglIYW5kbGUgdGhlIExCX0dFVFRFWFQgYW5kIENCX0dFVExCVEVYVCBjYXNlcyBmb3IgMzJXIHRvIDE2IG1hcHBpbmcuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglFbmFibGVzIHNob3dpbmcgb2YgaGlkZGVuIHdpbmRvd3Mgd2hlbiB0aGUgYXBwIGFzayAqb25seSogdG8gbWF4aW1pemUgaXQuCgoyMDAwLTA4LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvdGV4dC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUhhbmRsZSB0aGUgY29kZXBhZ2Ugb2YgZm9udHMgaWYgc3VwcG9ydGVkIGJ5IHRoZSBncmFwaGljcyBkcml2ZXIuCgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZm9udC5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGludGVybmFsIGNoYXJzZXRzIGZvciBzdXBwb3J0aW5nIERCQ1MgY2hhcnNldHMuCgoJKiBvYmplY3RzL2RjLmM6CglGaXhlZCBHREkgbG9ja2luZyBpbiBHZXREZXZpY2VDYXBzLgoKCSogZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCUthaSBNb3JpY2ggPG1haWxAa2FpLW1vcmljaC5kZT4KCUZpeGVkIGJ1ZyBpbiByZXBlYXRlZGx5IGljb25pc2F0aW9uLCBjb2RlIGNsZWFudXAuCgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTZXQgWDExRFJWX0RldmljZUNhcHMubnVtQ29sb3JzIGFjY29yZGluZyB0byBkb2MgKGZpeGVzIEN1YmFzZSBWU1QyNAoJc3RhcnR1cCBwcm9ibGVtKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgRHVwbGljYXRlSWNvbigpLgoKCSogbXNkb3MvaW50MTUuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglTdHViYmVkIElOVCAxNSBmdW5jdGlvbiA4NGguCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJLSBTZXBhcmF0ZSBhcHBsaWNhdGlvbiBjYWxscyB0byBTaG93T3duZWRQb3B1cHMgZnJvbSBXaW5lIGNhbGxzIChpbgoJICBFVkVOVF9NYXBOb3RpZnkpIGJ5IGludHJvZHVjaW5nIGFuIGludGVybmFsIGZ1bmN0aW9uLgoJLSBGaXggU2hvd093bmVkUG9wdXBzIHNvIGl0IHNlbmRzIG1lc3NhZ2VzIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBhcwoJICBpbiBXaW5kb3dzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglSZW1vdmVkIGRpcmVjdCBjYWxscyB0byBUUkVFVklFV19SZWZyZXNoKCkuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCBwbGF5YmFjayBvZiBFTVJfUE9MWUJFWklFUntUT30xNiwgRU1SX1BPTFlMSU5FMTYgYW5kCglFTVJfUE9MWVBPTFlMSU5FLgoKCSogaW5jbHVkZS9tYWluLmgsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBuZXcgbGFuZ3VhZ2UgZGV0ZWN0aW9uIHNjaGVtZSB0aGF0IHVzZXMgTkxTIGRhdGEgYmFzZSBpbnN0ZWFkIG9mCgloYXJkIGNvZGVkIHZhbHVlcy4KCgkqIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJRHVzYW4gTGFja28gPGRsYWNrb0Bjb2Rld2VhdmVycy5jb20+CglQYXNzIHRoZSB0eXBlL25hbWUgYXMgYSBDIHN0cmluZyBpbnN0ZWFkIG9mIGFuCglJTUFHRV9SRVNPVVJDRV9ESVJfU1RSSU5HX1Ugc3RydWN0dXJlIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4KCjIwMDAtMDgtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2dsb2JhbC5oLCBpbmNsdWRlL3BhdGguaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW4xNmRydi5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG1lbW9yeS9sb2NhbC5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2dkaS93aW5nLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3dpbmVwcy9icnVzaC5jLCBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL29iamVjdHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWFwcGluZy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZGMuaCwgaW5jbHVkZS9nZGkuaDoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNvbT4KCUFkZGVkIHN5c2xldmVsIGxvY2tpbmcgZm9yIEdESSBvcGVyYXRpb25zLgoJUHJvcGFnYXRlIHRoZSBjaGFuZ2VzIHRocm91Z2ggdGhlIGdyYXBoaWNzIGNvZGUuCgoJKiBtaXNjL2Nkcm9tLmM6CglFZCBTbm93IDxlZF9zbm93QHR0bWVuZ2luZWVyaW5nLmNvbT4KCUNvcnJlY3RlZCBzZXJpYWwgbnVtYmVyIGdlbmVyYXRpb24gZm9yIENEJ3Mgd2l0aCAxIG9yIDIgdHJhY2tzLgoKMjAwMC0wOC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY2Ryb20uYywgZmlsZXMvZG9zX2ZzLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUZpeGVkIHJldHVybiB2YWx1ZSBvZiBDRFJPTV9HZXRMYWJlbCBpZiBDRFJPTV9PcGVuIGZhaWxlZCAoZS5nLiBubwoJRGV2aWNlIGVudHJ5IGZvciBkcml2ZSBpbiB3aW5lLmNvbmYpLgoKCSogaW5jbHVkZS94MTFmb250LmgsIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglTZXBhcmF0ZSBHZXRUZXh0TWV0cmljcyBhbmQgaW1wbGVtZW50IGl0IGZvciBTQkNTL1VuaWNvZGUvY3A5MzIuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUZpeGVkIFNUQVRVU19HZXRUZXh0VyBpbiByZWdhcmQgdG8gTlVMTCBwb2ludGVycy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBcHBlbmQgLkRSViB0byBuYW1lIG9ubHkgaWYgbm8gZXh0ZW5zaW9uIHByZXNlbnQuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEbyBub3QgY3Jhc2ggaWYgcGF0aCBpcyBOVUxMIGluIERFQlVHX1Byb2Nlc3NFbGZGaWxlRnJvbVBhdGguCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzoKCUVkIFNub3cgPGVkX3Nub3dAdHRtZW5naW5lZXJpbmcuY29tPgoJQ2xlYW4gb3V0IHRoZSBoYWNrIG9uIEJBU1MvVFJFQkxFIGFuZCBzdXBwcmVzcyB0aGVtIGluIHRoZSBtYXNrIGFzIHdhcwoJcmVjb21tZW5kZWQgb2ggc28gbG9uZyBhZ28uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJLSBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbiBUT09MQkFSX0dldFRleHQoKSBhbmQgbWFjcm8gVE9PTEJBUl9IYXNUZXh0KCkgdG8KCSAgZGV0ZXJtaW5lIHdoZXRoZXIgd2UgbmVlZCB0byBjYWxsIEludmFsaWRhdGVSZWN0KCkgd2l0aCBiRXJhc2Ugb2YgVFJVRSBvcgoJICBGQUxTRS4gIFJlZHVjZXMgYmFja2dyb3VuZCBlcmFzZXMgaW4gbm9uLXRleHQgdG9vbGJhcnMgYnkgODAtODUlLgoJLSBGaXhlZCBidXR0b24gc3RhdGUgbm90IGJlaW5nIHVwZGF0ZWQgcHJvcGVybHkgd2hlbiBMQlVUVE9ORE9XTiBhbmQgY3Vyc29yCgkgIGxlYXZlcyB0aGUgdG9vbGJhci4KCS0gUmVtb3ZlZCBGSVhNRSgpIGluIFRPT0xCQVJfRHJhd1N0cmluZyBmb3IgYnRuUHRyLT5pU3RyaW5nID09IC0xLCByZXBsYWNlZAoJICB3aXRoIGEgc291cmNlIGNvZGUgY29tbWVudC4KCS0gUmVtb3ZlZCB1bmVjZXNzYXJ5IGNhbGwgdG8gVE9PTEJBUl9DYWxjVG9vbGJhcigpIGluCgkgIFRPT0xCQVJfR2V0SXRlbVJlY3QoKS4gIE9wdGltaXplZCBUT09MQkFSX0NhbGNTdHJpbmdzKCkuIEZpeGVzIHZlcnkKCSAgc2xvdyByZXNwb25kaW5nIHRvb2xiYXJzIGluIFVsdHJhZWRpdCBkdWUgdG8gcHJvY2Vzc2luZyBUQl9HRVRJVEVNUkVDVAoJICBtZXNzYWdlcy4KCS0gT3B0aW1pemVkIFRPT0xCQVJfU2V0SW50ZW50KCksIFNldFJvd3MoKSBhbmQgU2V0U3R5bGUoKS4KCgkqIHNjaGVkdWxlci9zeW5jaHJvLmM6CglNaWtlIE1jQ29ybWFjayAgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglTYXZlIEdFVF9BUENTIGRhdGEgYmVmb3JlIGNhbGxpbmcgYW55IGFzeW5jaHJvbm91cyBwcm9jZWR1cmUgY2FsbHMsIGluCgljYXNlIHRoZSBzZXJ2ZXIgaXMgY2FsbGVkIGR1cmluZyB0aGUgQVBDLgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgaW5jbHVkZS9kaWFsb2cuaCwgd2luZG93cy9kaWFsb2cuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJVHVybnMgdGhlIGhhbmRsaW5nIHRvIHB1cmUgMTYgYml0cywgcmVtb3ZlIHJlZmVyZW5jZXMgdG8gZGlhbG9nLmguCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jb20+CglSZW1vdmUgdW51c2VkIGNyaXRpY2FsIHNlY3Rpb24gZ2xvYmFsIHZhcmlhYmxlIFBSSU5UMzJfUmVnaXN0cnlCbG9ja2VyLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQXZvaWRzIGNoYW5naW5nIDIgbGV2ZWxzIHdoZW4gY2xpY2tpbmcgLi4gaW4gdGhlIGRpcmVjdG9yeSBsaXN0LgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgd2luMzIvY29uc29sZS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglTdHViYmVkIFNldENvbnNvbGVJbnB1dEV4ZU5hbWVBL1cuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglXTV9HRVRGT05UIHNob3VsZCByZXR1cm4gYSByZWFsIGZvbnQgaGFuZGxlIGluc3RlYWQgb2YgTlVMTC4KCjIwMDAtMDgtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCU5pY2xhcyBLYXJsc3NvbiBNQVRFIDxua2FybHNzb0ByYS5hYm8uZmk+CglXQVRDT00gY29tcGlsZWQgcHJvZ3JhbXMgbGVhdmUgVmlydHVhbFNpemUgdG8gemVybyB3aGljaCB0cmlnZ2VycyB0aGUKCXZpcnVzIGNoZWNrLiBVc2UgU2l6ZU9mUmF3RGF0YSBpbnN0ZWFkLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglOaWNsYXMgS2FybHNzb24gTUFURSA8bmthcmxzc29AcmEuYWJvLmZpPgoJSW1wbGVtZW50ZWQgQUNTX0NFTlRFUiBmb3IgYW5pbWF0aW9uIGNvbnRyb2xzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglBdm9pZCBnb2luZyBwYXN0IHRoZSBlbmQgb2YgdGhlIHJlbG9jYXRpb24gc2VjdGlvbi4gU2tpcCBzYW5pdHkgY2hlY2tzCglmb3IgZW1wdHkgcmVsb2NhdGlvbiBibG9ja3MuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUZyYW5jb2lzIE1ldGhvdCA8ZnJhbmNvaXNtQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgYmFja2dyb3VuZCB0cmFuc3BhcmVuY3kgb24gYW5pbWF0aW9uIGNvbnRyb2wgZm9yIGF2aQoJY29tcG9zZWQgb2YgOCBicHAob3IgbGVzcykgaW1hZ2UuIEkgYWRkZWQgc3VwcG9ydCBmb3IgOCBicHAgb3IgbW9yZSwKCWJ1dCBpdCBoYXMgbm90IGJlZW4gdGVzdGVkLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglXaGlsZSBkcmFnZ2luZywgY2F0Y2gga2V5Ym9hcmQgbWVzc2FnZXMgYmV0d2VlbiBXTV9LRVlGSVJTVCBhbmQKCVdNX0tFWUxBU1QsIG5vdCBqdXN0IFdNX0tFWUZJUlNULgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUlmIGEgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZCBpbiBMb2FkTGlicmFyeUV4MzJXMTYsIGNhbGwgTG9hZExpYnJhcnlFeAoJYW55d2F5LCBzaW5jZSBpdCBtaWdodCBiZSBhIGJ1aWx0aW4gbW9kdWxlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzZWQgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBldmVyeSBhcmd1bWVudCBpbiBDb21tYW5kTGluZVRvQXJndi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBZGQgYW4gZXJyb3IgbWVzc2FnZSBpZiBkZXZtb2RlIHN0cnVjdHVyZSBpbiByZWdpc3RyeSBpcyBpbnZhbGlkOwoJYXR0ZW1wdCB0byBwcm92aWRlIHBsYXVzaWJsZSB2YWx1ZXMuCgoyMDAwLTA4LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS94MTFmb250LmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIGZvciBEQkNTKGNwOTMyL2NwOTQ5KSBjb2RlcGFnZSBjb252ZXJzaW9uLgoJSW1wbGVtZW50ZWQgY3A5MzIgaGFuZGxpbmcgcGFydGx5KGJ1dCBzdGlsbCBpbmNvbXBsZXRlKS4KCUFkZGVkIHN1cHBvcnRpbmcgbXVsdGlwbGUgZm9udHMgZm9yIERCQ1MgaGFuZGxpbmcuCgoJKiBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9zdGFicy5jLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUVuaGFuY2VkIEVMRiBmaWxlcyBsb29rdXAgZm9yIHN5bWJvbGljIGluZm8uCgoJKiBkZWJ1Z2dlci9icmVhay5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZWdyZXNzaW9uIGluIGJyZWFrIGNvbW1hbmQuCgoyMDAwLTA4LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4IHJldHVybiB2YWx1ZSB0byAxNiBiaXRzIGZvciAxNiBiaXQgaG9vazsgcmVtb3ZlIGxlYWRpbmcgc3BhY2UgZm9yCglmaWxlIHNwZWNpZmljYXRpb24uCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVRocmVhZHMgd2l0aG91dCBhY3RpdmUgb3IgZm9jdXMgd2luZG93IHNob3VsZCBub3QgcmVjZWl2ZSBrZXlib2FyZAoJbWVzc2FnZXMuCgoJKiBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS92aXJ0dWFsLmM6CglJbXBsZW1lbnRlZCBTRUNfSU1BR0UgbWFwcGluZ3MgYW5kIHNoYXJlZCBQRSBzZWN0aW9ucyAod2l0aCB0aGUgaGVscAoJb2YgUGV0ZXIgR2FudGVuKS4KCgkqIGluY2x1ZGUvbnRkZGsuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBtaXNjL2xzdHIuYywgbWlzYy9tYWluLmMsIG1zZG9zL2ludDIxLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy91c2VyL2xzdHIuYywgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvcHJvZmlsZS5jOgoJTW92ZWQgQ2hhclVwcGVyKiBhbmQgQ2hhckxvd2VyKiBmdW5jdGlvbnMgdG8gZGxscy91c2VyLgoKCSogZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZm9udC5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpYWwgdHJlYXRtZW50cyAodXNlIDIgb3IgbW9yZSBmb250cywgY29kZXBhZ2UKCWNvbnZlcnNpb24sIGV0Yy4uLikgZm9yIERCQ1MgdGV4dC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmVkZWZhdWx0LnJlZzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkICJGdWxsV2luZG93RHJhZyIgZmVhdHVyZSBmb3Igbm90IG1hbmFnZWQgd2luZG93cy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIHRoZSBlZGl0IGJveCBiZWZvcmUgcm9sbGluZyB1cCB0aGUgbGlzdGJveCwgc28gdGhlCglzZWxlY3Rpb24gaXNuJ3QgbG9zdC4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgcmVmZXJlbmNlZCBkbGxzIGZvciBsaWJ0ZXN0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTmljbGFzIEthcmxzc29uIE1BVEUgPG5rYXJsc3NvQHJhLmFiby5maT4KCUxQU1RSX1RFWFRDQUxMQkFDSyB3b3VsZG4ndCB3b3JrIGlmIHRoZSBhcHBsaWNhdGlvbiBzdXBwbGllZCB0aGUgaXRlbQoJdGV4dCBpbiBpdHMgb3duIGJ1ZmZlci4KCgkqIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9lcnJvci5jLCB3aW4zMi9maWxlLmMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jOgoJQ2xlYW5lZCB1cCBhIGZldyBpbnRlci1kbGwgZGVwZW5kZW5jaWVzLiBBZGRlZCBhIGZldyBpbXBvcnRzLgoKCSogb2xlL29sZTJubHMuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zcHkuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIGxvYWRlci9uZS9jb252ZXJ0LmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBvYmplY3RzL3BhbGV0dGUuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NocG9saWN5LmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9saXN0Ym94LmM6CglSZXBsYWNlZCBhbGwgbHN0ciogY2FsbHMgZnJvbSBpbnNpZGUgV2luZSBjb2RlIGJ5IHRoZWlyIHN0ciogZXF1aXZhbGVudC4KCgkqIG1zZG9zL2RwbWkuYzoKCVJlcGxhY2VkIGdsb2JhbCBDYWxsYmFja3Mgc3RydWN0dXJlIGJ5IGFwcHJvcHJpYXRlIGdsdWUgY29kZQoJZ2VuZXJhdGlvbi4gUmVtb3ZlZCBhIGZldyB1bnVzZWQgZW50cmllcyBpbiB0aGUgQ2FsbG91dCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBpbmNsdWRlL3dpbnZlcnNpb24uaCwgbWlzYy92ZXJzaW9uLmMsIHdpbjMyL2RldmljZS5jLCB3aW5kb3dzL3dpbmhlbHAuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmM6CglSZXBsYWNlZCBWRVJTSU9OXyogY2FsbHMgYnkgZXhwb3J0ZWQgQVBJIGVxdWl2YWxlbnRzLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBsb2FkZXIvbmUvLmN2c2lnbm9yZSwgbG9hZGVyL25lL01ha2VmaWxlLmluLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtZW1vcnkvLmN2c2lnbm9yZSwgbWVtb3J5L01ha2VmaWxlLmluLCBtZW1vcnkvbG9jYWwuYywgbWlzYy9jb21tLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgY29udHJvbHMvLmN2c2lnbm9yZSwgY29udHJvbHMvTWFrZWZpbGUuaW4sIGNvbnRyb2xzL2VkaXQuYywgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvYnVpbHRpbjE2Lmg6CglSZXBsYWNlZCBnbG9iYWwgQ2FsbGJhY2tzIHN0cnVjdHVyZSBieSBhcHByb3ByaWF0ZSBnbHVlIGNvZGUKCWdlbmVyYXRpb24uIFJlbW92ZWQgYSBmZXcgdW51c2VkIGVudHJpZXMgaW4gdGhlIENhbGxvdXQgc3RydWN0dXJlLgoKCSogd2luZWRlZmF1bHQucmVnOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBZGRlZCBsb2FkIGFkZHJlc3MgZm9yIHRoZSBzaGFyZWQgbWVtb3J5IG9mIEJERSAoQm9ybGFuZCBkYXRhYmFzZQoJbWFuYWdlcikuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggZm9yIHN0YXJ0aW5nIHNlcnZlciBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGNoZWNraW5nIGZvciBicm9rZW4gZm9udCBjYWNoZS4KCUFkZGVkIHN1cHBvcnRpbmcgZm9yIGlzbzEwNjQ2IGVuY29kaW5nLgoKMjAwMC0wOC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3JlcXVlc3QuYzoKCU1hZGUgc2VydmVyIHN0YXJ0dXAgbW9yZSByb2J1c3QgYWdhaW5zdCByYWNlcyBjYXVzZWQgYnkgYSBwcmV2aW91cwoJc2VydmVyIHRlcm1pbmF0aW5nIGF0IHRoZSBzYW1lIHRpbWUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgdG9vbHMvYzJtYW4ucGw6CglNaWtlX01jQ29ybWFja0Bsb29rc21hcnQuY29tLmF1CglDcmVhdGVkIGRlZmF1bHQgYzJtYW4gY29tcGF0aWJsZSBwZXJsIHNjcmlwdCBmb3IgZ2VuZXJhdGluZwoJZG9jdW1lbnRhdGlvbiwgaW4gY2FzZSBjMm1hbiBpc24ndCBpbnN0YWxsZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc2VuZGluZyBvZiBMVk5fSVRFTUNIQU5HSU5HIGFuZCBMVk5fSVRFTUNIQU5HRUQgbWVzc2FnZXMsCgljbGVhbmVkIHVwIHNvbWUgb2YgdGhlIGRyYXdpbmcsIGltcGxlbWVudGVkIHRoZSBpSW5kZW50IGZvciBMVlNfUkVQT1JUCglhbmQgZml4ZWQgYSBwcm9ibGVtIHdoZXJlIHN1YiBpdGVtcyB3aGVyZSBub3QgYmVpbmcgcHJvcGVybHkKCWFzc29jaWF0ZWQgd2l0aCB0aGVpciBpdGVtIGZvciB2aXJ0dWFsIGxpc3Qgdmlld3MuCgoJKiBtZW1vcnkvY29kZXBhZ2UuYywgbWlzYy9sc3RyLmMsIG9sZS9vbGUybmxzLmMsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvd2N0eXBlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2NydGRsbC9tYnN0cmluZy5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGRsbHMvdXNlci9sc3RyLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJQWRkZWQgVW5pY29kZSBjdHlwZSBzdXBwb3J0LgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYywgaW5jbHVkZS9jb21tY3RybC5oOgoJTW92ZWQgTk1fVVBET1dOIGRlZmluaXRpb24gdG8gY29tbWN0cmwuaC4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVRoZSB1c2VyIGRyaXZlciBmdW5jdGlvbnMgbWlnaHQgYmUgY2FsbGVkIHdpdGggdGhlIHdpbmRvdyBsb2NrIGhlbGQuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1ha2UgRmluZFJlc291cmNlIGFuZCBGaW5kUmVzb3VyY2VFeCBmdWxseSB3aW5kb3dzIGNvbXBhdGlibGUuCgoJKiBpbmNsdWRlL3RjaGFyLmg6CglEYW15YW4gT2dueWFub2ZmIDxEYW15YW5Acm9ja2V0bWFpbC5jb20+CglSZW1vdmUgc29tZSBvYnNvbGV0ZSAjZGVmaW5lJ3MgLSBzdHJsd3IgYW5kIHN0cnVwciBhcmUgaW4gTlRETEwgbm93LgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgbWVtb3J5L2NvZGVwYWdlLmMsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvdXRmOC5jOgoJQWRkZWQgVVRGLTggY29udmVyc2lvbiBzdXBwb3J0LgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUluc3RlYWQgb2Ygbm90IGRvaW5nIHRoZSBaIG9yZGVyaW5nIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGFza3MgdG8gcGxhY2UKCXRoZSB3aW5kb3cgdW5kZXIgYSB6ZXJvLXNpemVkIHdpbmRvdywgbm93IHRoZSB3aW5kb3cgYWJvdmUgdGhlCgl6ZXJvLXNpemVkIHdpbmRvdywgaXMgdXNlZCB0byBkbyB0aGUgWiBvcmRlcmluZy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJSW5pdGlhbGl6ZSBscHN0ckluaXRpYWxEaXIgdG8gcmVhbGx5IGJvZ3VzIHZhbHVlIHRvIHJlc3RvcmUgb3JpZ2luYWwKCXZhbHVlIGxhdGVyLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgYSBmZXcgbW9yZSBhbm9ueW1vdXMgdW5pb24gZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL2d1aWRkZWYuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgQysrIG9wZXJhdG9ycyByZXR1cm4gdmFsdWUuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBmb3BlbigpIGFwcGVuZCBtb2RlLCBhbmQgYSByZWFsbHkgY2hlZXN5IGZzY2FuZigpCglpbXBsZW1lbnRhdGlvbi4uLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CgkxLiBNYWtlIGJ1ZmZlciBmb3IgbWVzc2FnZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCB2ZXJ5IGxvbmcgZmlsZSBuYW1lcy4KCTIuIFBhc3MgRk9STUFUX01FU1NBR0VfQVJHVU1FTlRfQVJSQVkgZm9yIEZvcm1hdE1lc3NhZ2VBIHRvIG5vdCBhc3N1bWUKCSAgIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGJlaGF2aW91ci4KCTMuIFNob3cgYWN0dWFsIG1lc3NhZ2UgdG8gdXNlciwgbm90IG5vbi1mb3JtYXR0ZWQgb25lLgoKMjAwMC0wOC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCBtaXNjL21haW4uYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBjb250cm9scy9kZXNrdG9wLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLCBkbGxzL3R0eWRydi9wYWxldHRlLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL21vdXNlLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglNZXJnZWQgY2xpcGJvYXJkIGRyaXZlciBpbnRvIFVTRVIgZHJpdmVyLgoJTW92ZWQgYWxsIHR0eWRydiBzb3VyY2UgZmlsZXMgdG8gZGxscy90dHlkcnYuCglMb2FkIGZ1bmN0aW9ucyBwb2ludGVyIGZvciB0aGUgVVNFUiBkcml2ZXIgZnJvbSB0aGUgZ3JhcGhpY3MgZHJpdmVyCglkbGwgd2l0aCBHZXRQcm9jQWRkcmVzcy4KCjIwMDAtMDgtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2JpdG1hcC5jLCBwcm9ncmFtcy9ub3RlcGFkL3NlYXJjaC5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCB3aW5kb3dzL2NhcmV0LmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGluY2x1ZGUvbXNhY21kcnYuaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgbWlzYy9jb21tLmMsIG1pc2MvbWFpbi5jLCBtc2Rvcy9pbnQwOS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvbXNhY20vbXNhY21kcnYuaCwgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3VzZXIvZGRlbWwuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy93aWRnZXRzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy9tYWluLmM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgI2luY2x1ZGVzIGFuZCBkbGwgZGVwZW5kZW5jaWVzLgoKCSogbWVtb3J5L2Vudmlyb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9pbml0LmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYzoKCU1ha2UgUERCLCBFTlZEQiBhbmQgU1RBUlRVUElORk8gZ2xvYmFsIHZhcmlhYmxlcy4KCUFkZGVkICdtb2R1bGUnIGZpZWxkIGluIFBEQiwgYW5kIHJlbW92ZWQgV2luZS1zcGVjaWZpYyBmaWVsZHMuCgoJKiBtaXNjL3ZlcnNpb24uYywgc2NoZWR1bGVyL3NlcnZpY2VzLmM6CglSZW1vdmVkIHdpbnZlciBhbmQgc2VydmljZV90YWJsZSBmcm9tIHRoZSBQREIgYW5kIG1hZGUgdGhlbSBzdGF0aWMKCXZhcmlhYmxlcy4KCgkqIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGZpbGVzL2ZpbGUuYzoKCVJlbW92ZWQgdGhlIERPUyBoYW5kbGVzIHRhYmxlIGZyb20gdGhlIFBEQiBhbmQgbWFkZSBpdCBhIHN0YXRpYwoJdmFyaWFibGUuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1zZG9zL2Rvc21lbS5jLCBvYmplY3RzL21ldGFmaWxlLmM6CglSZW1vdmVkIG9ic29sZXRlIFNITURBVEEgcGFyYW1ldGVyIGluIEdMT0JBTF9DcmVhdGVCbG9jay4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSBBdm9pZCBudWxsLXBvaW50ZXIgZXhjZXB0aW9ucyBieSB0ZXN0aW5nIGxpc3Rub2RlcyB2YWxpZGl0eSBiZWZvcmUgZG9pbmcKCSAgYW55IHdvcmsgd2l0aCB0aG9zZS4KCS0gVExCX1JlYWRUeXBlTGliIG5vdyByZXRyaWV2ZXMgdGhlIGxlbmd0aCBvZiB0aGUgVExCIGFuZCBwYXNzZXMgaXQgdG8KCSAgdGhlIFRMQiBjb25zdHJ1Y3RvciB3aGljaCBpbml0aWFsaXplcyBUTEJDb250ZXh0OjpsZW5ndGggdG8gdGhhdAoJICB2YWx1ZS4KCS0gRm9yIG5vbi1zdGFuZGFyZCBwb2ludGVkIHR5cGVzLCB0ZFszXSBpcyBhbHdheXMgMC4gSSBvYnNlcnZlZCB0aGF0CgkgIHRoZSB0eXBlIGlzIHN0b3JlZCBhdCB0ZFsyXS84IGFuZCBub3QgdGRbM10vOC4KCS0gTnVsbC1wb2ludGVyIGV4Y2VwdGlvbiBvY2N1cnMgd2hlbiBHZXRSZWZUeXBlT2ZJbXBsVHlwZSBpcyBjYWxsZWQgb24gYQoJICB0eXBlIHdpdGggbm8gaW5oZXJpdGVkIGludGVyZmFjZXMuIElmIHRoZSBpbXBsZW1lbnRlZCB0eXBlcyBsaW5rZWQgbGlzdAoJICBpcyBlbXB0eSwgc2V0IHBSZWZUeXBlIGFzIDAgYW5kIHJldHVybiBTX09LLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHR5cG8gaW4gdGhlIElEaXNwYXRjaF9HZXRUeXBlSW5mbyBtYWNyby4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIHJlbWFpbmluZyBwcm9ibGVtcyB3aXRoIHRvb2x0aXBzLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIE9wZW5HTCBjb25maWd1cmU6IG1vdmUgSEFWRV9PUEVOR0wgZGVmaW5lIHRvIHdoZXJlIGl0IGJlbG9uZ3MsCglmaXhlZCBnbGV4dC5oIHByZXNlbmNlIGluIGNvbmZpZ3VyZSBjaGVjayBmb3IgUEZOR0xDT0xPUlRBQkxFRVhUUFJPQy4KCgkqIGluY2x1ZGUvYXV0aG9ycy5oLCBpbmNsdWRlL2NydGRsbC5oLCBpbmNsdWRlL2RldmljZS5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3czMnN5cy5oLCB0b29scy9tYWtlX2F1dGhvcnMsIHdpbjMyL2ZpbGUuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvc2hlbGwzMi9hdXRob3JzLmgsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvd2luMzJzL3czMnN5cy5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L21ldGFmaWxlZHJ2LmgsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJTW92ZWQgYSBmZXcgbm9uLXN0YW5kYXJkIGhlYWRlcnMgaW50byB0aGVpciByZXNwZWN0aXZlIGRsbHMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOgoJSW5zdGFsbCBhbGwgc3RhbmRhcmQgV2luZG93cyBpbmNsdWRlcywgcGx1cyBzb21lIGZyb20gdGhlIHdpbmUgc3ViZGlyLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5oLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBpbmNsdWRlL2FuaW1hdGUuaCwgaW5jbHVkZS9jb21ib2V4LmgsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kYXRldGltZS5oLCBpbmNsdWRlL2ZsYXRzYi5oLCBpbmNsdWRlL2hlYWRlci5oLCBpbmNsdWRlL2hvdGtleS5oLCBpbmNsdWRlL2ltYWdlbGlzdC5oLCBpbmNsdWRlL2lwYWRkcmVzcy5oLCBpbmNsdWRlL2xpc3R2aWV3LmgsIGluY2x1ZGUvbW9udGhjYWwuaCwgaW5jbHVkZS9uYXRpdmVmb250LmgsIGluY2x1ZGUvcGFnZXIuaCwgaW5jbHVkZS9wcm9ncmVzcy5oLCBpbmNsdWRlL3JlYmFyLmgsIGluY2x1ZGUvc3RhdHVzLmgsIGluY2x1ZGUvdGFiLmgsIGluY2x1ZGUvdG9vbGJhci5oLCBpbmNsdWRlL3Rvb2x0aXBzLmgsIGluY2x1ZGUvdHJhY2tiYXIuaCwgaW5jbHVkZS90cmVldmlldy5oLCBpbmNsdWRlL3VwZG93bi5oLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCVJlbW92ZWQgYWxsIG5vbi1zdGFuZGFyZCBjb21tb24gY29udHJvbCBoZWFkZXJzIGZyb20gdGhlIGluY2x1ZGUKCWRpcmVjdG9yeS4KCgkqIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3Mvc3RydWN0MzIuYywgd2luZG93cy9zdHJ1Y3QzMi5oLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgaW5jbHVkZS9zdHJ1Y3QzMi5oLCB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvc3RydWN0MzIuYzoKCU1vdmVkIHN0cnVjdDMyLmMgdG8gd2luZG93cyBkaXJlY3RvcnkuCgoyMDAwLTA4LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCU1ha2Ugc3VyZSBidWlsdGluIGRsbHMgYXJlIG5ldmVyIGZyZWVkIHNpbmNlIHdlIGRvbid0IHN1cHBvcnQgZGxjbG9zZQoJcHJvcGVybHkgeWV0LgoKCSogZGxscy9wc2FwaS9NYWtlZmlsZS5pbiwgZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYywgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJU21hbGwgZGxsIGludGVyZmFjZXMgY2xlYW51cHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS93aW5lX2dsLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVhc2VkIHJlc3RyaWN0aW9ucyBvbiBPcGVuR0wvTUVTQSB1c2FnZSBhIGJpdC4gSXQgY29tcGlsZXMganVzdCBmaW5lCgl1c2luZyBtZXNhLTMuMiBldmVuIHdpdGhvdXQgZ2xleHQuaC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29ya2VkIGhvdyBzZWxlY3Rpb25zIGFyZSBrZXB0IHRyYWNrIG9mIGluIHRoZSBsaXN0IHZpZXcuIFNlbGVjdGlvbnMKCWFyZSBub3cgbGlzdGVkIGFzIGEgc29ydGVkIHJhbmdlIG9mIHBhaXJlZCBpbnRlZ2Vycy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCVdoZW4gdW5zdWJjbGFzc2luZyB0b29scywgdXNlIHRvb2xQdHItPmh3bmQgaW5zdGVhZCBvZiB0b29sUHRyLT51SWQgaWYKCXRvb2xQdHItPmZsYWdzIGRvZXMgbm90IGNvbnRhaW4gVFRGX0lESVNIV05EIChtZWFuaW5nIHVJZCBpcyBub3QgYQoJdmFsaWQgd2luZG93IGhhbmRsZSkuCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6CglXaWxidXIgTi4gRGFsZSA8d2lsYnVyLmRhbGVAbHVtaW4ubmw+CglBZGRlZCBkZXNjcmlwdGlvbiBvZiB1c2luZyBETExzIHdpdGggV2luZUxpYi4KCgkqIGRvY3VtZW50YXRpb24vKjoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnRlZCBXaW5lIGRvY3VtZW50YXRpb24gdG8gU0dNTCBmb3JtYXQuCgoyMDAwLTA4LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvaWNvbnRpdGxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUluaXRpYWxpemUgJ3N0cicgaW4gSUNPTlRJVExFX0dldFRpdGxlUG9zLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYzoKCUZpeGVkIHJlc291cmNlIGZ1bmN0aW9ucyB0byB3b3JrIHdpdGggMzItYml0IG1vZHVsZXMgdGhhdCBkb24ndCBoYXZlIGEKCTE2LWJpdCBjb3VudGVycGFydCAobmVjZXNzYXJ5IGZvciBMT0FEX0xJQlJBUllfQVNfREFUQUZJTEUgc3VwcG9ydCkuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZCBhbiBlZGl0IGNvbnRyb2wgc2hvd2luZyB0aGUgY29tbWFuZCBsaW5lIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQKCWRlaW5zdGFsbCBpdGVtLgoKCSogd2luZG93cy93aW5wb3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVdJTlBPU19XaW5kb3dGcm9tUG9pbnQgc2hvdWxkIHJlc3BlY3QgaHJnblduZC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJU2V0IHVwIGV4ZV9tb2RyZWYgYmVmb3JlIGxvYWRpbmcgaW1wbGljaXRseSBsaW5rZWQgZGxscy4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJUHJldmVudCBlbmRsZXNzIGxvb3BpbmcgaW4gbGluZWJyZWFrIGhhbmRsaW5nLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWYgd2UgYXJlIGxvb2tpbmcgZm9yIGFuIGV4aXN0aW5nIHBpeG1hcCBmb3JtYXQsIHdlIGRvIG5vdCBuZWVkIHRoZQoJc2FtZSBiaXRzcGVycGl4ZWwgKGZpeGVzIGRlcHRoIDE1L2JpdHNwaXhlbCAxNiBtb2RlKS4KCgkqIGluY2x1ZGUvZGlucHV0Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIGEgZmV3IERpcmVjdElucHV0IDcgZGVmaW5pdGlvbnMgYW5kIEMrKyBmaXhlcy4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglMb2FkTGlicmFyeUV4MzJXMTYgc2hvdWxkIHVzZSB0aGUgc2VhcmNoIGFsZ29yaXRobSBvZiAxNi1iaXQgbGlicmFyaWVzLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy93aW5wb3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBsb2NhbCB2YXJpYWJsZSBzaGFkb3dzIHdhcm5pbmdzLgoKCSogd2luMzIvcHJvY2Vzcy5jLCBpbmNsdWRlL2VsZmRsbC5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgbWlzYy92ZXJzaW9uLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3R5cGVzLmM6CgktIEZpeGVkIHJlc291cmNlIGZ1bmN0aW9ucyB0byB3b3JrIGRpcmVjdGx5IGZyb20gdGhlIEhNT0RVTEUgaW5zdGVhZCBvZgoJICByZXF1aXJpbmcgYSBtb2RyZWYuCgktIEF0dGVtcHRlZCB0byBnZXQgTE9BRF9MSUJSQVJZX0FTX0RBVEFGSUxFIHJpZ2h0IChiYXNlZCBvbiBwYXRjaGVzIGJ5CgkgIEVyaWMgUG91ZWNoIGFuZCBEdXNhbiBMYWNrbykuCgktIFNpbXBsaWZpZWQgbW9kcmVmIHN0cnVjdHVyZSBhbmQgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUHJvdGVjdCB0aGUgcHJvdG90eXBlcyBpbiBoZXJlIGZyb20gQysrIG5hbWUgbWFuZ2xpbmcuLi4KCgkqIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVZJRl9PVVRPRlNQQUNFIGFuZCBWSUZfT1VUT0ZNRU0gd2VyZSByZXZlcnNlZC4KCgkqIGluY2x1ZGUvdmZ3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWlubGluZSBtdXN0IGJlIGZpcnN0IGF0dHJpYnV0ZSBpbiBmdW5jdGlvbiBkZWZpbml0aW9uLgoKCSogZGxscy91c2VyL2xzdHIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgQ2hhck5leHRXLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJWDExRFJWX0RJQl9TZXRJbWFnZUJpdHNfUkxFODogYnJlYWsgaW1hZ2UgbGluZXMuCgoyMDAwLTA4LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBkbGxzL2ljbXAvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC9pY21wLnNwZWMsIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9sejMyLnNwZWMsIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuc3BlYywgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWMsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWM6CglBZGRlZCBpbXBvcnRzIG9mIGtlcm5lbDMyLmRsbCB3aGVyZSBuZWNlc3NhcnkuCgoJKiBNYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluOgoJTGluayBVU0VSIHJlc291cmNlcyBpbnRvIGxpYnVzZXIuc28uCgoJKiBvbGUvb2xlMm5scy5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeCBmb3IgY2FsbGluZyBjdHlwZSBmdW5jdGlvbnMgd2l0aCBVbmljb2RlIGNoYXJhY3RlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJQ29udmVydGVkIGFsbCBjYWxscyB0byBSZWRyYXdXaW5kb3cgdG8gSW52YWxpZGF0ZVJlY3QuICBQcmV2aW91c2x5CglSZWRyYXdXaW5kb3cgd2FzIGJlaW5nIHVzZWQgZm9yIHRoZSBSRFdfVVBEQVRFTk9XIGZsYWcgd2hpY2ggZm9yY2VkIGFuCglpbW1lZGlhdGUgV01fUEFJTlQgbWVzc2FnZS4gIE1vdmluZyB0byBJbnZhbGlkYXRlUmVjdCBzaG91bGQgbGV0CglXTV9QQUlOVHMgb2NjdXIgbm9ybWFsbHkuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgcmVzZXR0aW5nIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHdoZW4gY2xlYXJpbmcgb3V0IGJsYW5rIGFyZWFzLCBhcwoJaXQgbWF5IGhhdmUgYmVlbiBzZXQgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gQ09MT1JfV0lORE9XIGJ5IHRoZQoJYXBwbGljYXRpb24uCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJVG9wIGxldmVsIHdpbmRvd3Mgd2l0aCAwIHdpZHRoIG9yIGhlaWdodCBhcmUgY3JlYXRlZCB3aXRoIGEgc2l6ZSBvZiAxeDEgaW4KCXRoZSBYMTEgZHJpdmVyLiBJJ3ZlIGFkZGVkIHNvbWUgY29kZSB0byBtYWtlIHN1cmUgdGhvc2Ugd2luZG93cyBhcmUgbmV2ZXIKCW1hcHBlZCB3aGlsZSB0aGUgc2l6ZSA8PSAwLgoKCSogbWlzYy9sc3RyLmMsIG1pc2MvbWFpbi5jLCByZWxheTMyL3Nub29wLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvZHVtbXkuYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oLCBtZW1vcnkvc3RyaW5nLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJTW92ZWQgbW9zdCBVU0VSIHN0cmluZyBmdW5jdGlvbnMgdG8gZGxscy91c2VyLgoJQ2xlYW5lZCB1cCBhIGZldyBtb3JlIGludGVyLWRsbCBkZXBlbmRlbmNpZXMuCgoJKiBvbGUvb2xlMm5scy5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9pbml0LmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW4uYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbmUvY29udmVydC5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvdXNlci90ZXh0LmM6CglSZXBsYWNlZCBsc3RybGVuL2xzdHJjbXAgYnkgbGliYyBlcXVpdmFsZW50cyBldmVyeXdoZXJlIHdlIGRvbid0IG5lZWQKCXRvIHRyYXAgZXhjZXB0aW9ucy4KCjIwMDAtMDgtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NvbWN0bDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93c29jazMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBXYXJuIGFib3V0IGRpcmVjdG9yaWVzIHNwZWNpZmllZCBpbiBtb2R1bGVzLmRhdCB0aGF0IGFyZSBub3QgdXNlZC4KCS0gRWxpbWluYXRlZCB0aGUgd2FybmluZ3MgY2F1c2VkIGJ5IHRoZSBjaGFuZ2UgYWJvdmUuCgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkZWJ1Z2dlci9zdGFjay5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbjoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBhIGZldyBtaXNzaW5nIGltcG9ydHMuCgoJKiBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy90ZXh0LmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL25ld2Zucy5jLCB3aW4zMi9vcmRpbmFscy5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2NhY2hlLmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3VzZXIvdGV4dC5jLCBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvY2FjaGUuYywgbG9hZGVyL3Jlc291cmNlLmMsIG1pc2MvbHN0ci5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJTW92ZWQgYSBidW5jaCBvZiBmdW5jdGlvbnMgb3V0IG9mIGxpYndpbmUva2VybmVsL2dkaSBpbnRvIFVTRVIuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL21ldGFmaWxlLmMsIHdpbmRvd3MvY2FyZXQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW5wb3MuYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbWVudS5jLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYzoKCVJlbW92ZWQgYSBmZXcgZGVwZW5kZW5jaWVzIG9uIEdESSBpbnRlcm5hbHMgZnJvbSBVU0VSIGRsbC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYzoKCUFkZGVkIGEgZmV3IG1pc3NpbmcgaW1wb3J0cy4KCjIwMDAtMDgtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9jb25zb2xlLmMsIE1ha2VmaWxlLmluLCBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuc3BlYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3ByaW50ZHJ2LmMsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2ludDE2LmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCU1ha2UgVVNFUiBhbmQgR0RJIHNlcGFyYXRlIGRsbHMuCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbmUvd2luc29jazE2LmgsIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dpbnNvY2syLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIHRoZSBXaW4xNi9XaW4zMiBzdHJ1Y3R1cmUgc2l6ZS9hbGlnbm1lbnQgZGlmZmVyZW5jZXMgb2YKCXdzX2hvc3RlbnQsIHdzX3Byb3RvZW50LCB3c19zZXJ2ZW50LCB3c19uZXRlbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGluY2x1ZGUvdG9vbHRpcHMuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglSZWRvIHRoZSBzaG93L2hpZGUgbG9naWMgYW5kIGFkZCBhIGNvbW1lbnQgdG8gZXhwbGFpbiB3aGF0J3MgZ29pbmcgb24uCglGaXggVFRNX3tTfEd9RVRERUxBWVRJTUUgdG8gdXNlIHRoZSBkb3VibGUgY2xpY2sgdGltZSBhcyBkZWZhdWx0LgoJRml4IGhhbmRsaW5nIG9mIFRURFRfQVVUT01BVElDLgoJUmVsYXllZCBtb3VzZSBtZXNzYWdlcyBzaG91bGQgZXh0cmFjdCB0aGUgcG9zaXRpb24gZnJvbSBsUGFyYW0gbm90Cgltc2cucHQKCVN1YmNsYXNzUHJvYyBub3cgdW5pZmllZCB3aXRoIFRUTV9SRUxBWUVWRU5ULgoJQ2hhbmdlIGFsbCBsc3RyY3B5eHRveCB0byB1c2Ugd2luMzIgQVBJcy4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglDaGFuZ2VkIHRoZSBBRk0gbWV0cmljcyBzdHJ1Y3R1cmUgdG8gdXNlIGFuIGFycmF5IGluc3RlYWQgb2YgYSBsaW5rZWQKCWxpc3QuIFRoaXMgYXZvaWRzIGRvaW5nIHR3byBoZWFwIGFsbG9jYXRpb25zIGZvciBldmVyeSBjaGFyYWN0ZXIsIGFuZAoJcmVkdWNlcyB0aGUgbWV0cmljcyBwYXJzaW5nIHRpbWUgYnkgYXBwcm94IDI1JS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCAiTWltZS1WZXJzaW9uIiB0byBzdGFuZGFyZCBNSU1FIGhlYWRlcnMgcGFyc2VkIGluCglIVFRQX0dldFN0ZEhlYWRlckluZGV4KCkuCgoJKiBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5lL29ial9lcnJvcmluZm8uaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJSW1wbGVtZW50ZWQgdGhlIEVycm9ySW5mbyBpbnRlcmZhY2VzLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW46CglBZGRlZCBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIG1lc3NhZ2UgZmlsZXMgZm9yIHBlb3BsZSB3aG8gZG9uJ3QgcnVuCgltYWtlIGRlcGVuZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGd1aWQuYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBvbGUvZ3VpZC5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6CglNb3ZlZCBHVUlEIGRlZmluaXRpb25zIHRvIHRoZWlyIHJlc3BlY3RpdmUgZGxsLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oOgoJRml4ZWQgSVNoZWxsTGlua0EvVyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgaW5jbHVkZS9ndWlkZGVmLmgsIGluY2x1ZGUvaW5pdGd1aWQuaCwgaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbW1kbGdicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9lbnVtaWRsaXN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJQWRkZWQgZ3VpZGRlZi5oIGFuZCBtb3ZlZCBhIGZldyBHVUlEIGRlZmluaXRpb25zIHRvIHRoZSBjb3JyZWN0IGZpbGUuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJRml4ZWQgSXNFcXVhbEdVSUQgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIG9sZS9vbGUybmxzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUxPQ0FMRV9OT1VTRVJPVkVSUklERSBtZWFuczogZG8gbm90IGdldCB1c2VyIHJlZGVmaW5lZCBzZXR0aW5ncyBmcm9tCgl0aGUgcmVnaXN0cnkuIEluc3RlYWQsIHVzZSBzeXN0ZW0gZGVmYXVsdCB2YWx1ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBGaXhlZCBidWcgd2hlcmUgSW5pdFN1Ykl0ZW0gd2FzIGRvaW5nIGEgWmVyb01lbW9yeSBvbiB0aGUgaXRlbS4KCS0gQ2xlYW5lZCB1cCBhIHNpdCBvZiBleHRyYSBibHVlIGF0IHRoZSBlbmQgb2YgYSBGVUxMUk9XU0VMRUNUIGxpc3QgdmlldwoJICBpZiB0aGVyZSBpcyBvbmx5IG9uZSBjb2x1bW4uCgktIENvcnJlY3RlZCBhIGJ1ZyBJIGludHJvZHVjZWQgd2l0aCBhbiBlYXJsaWVyIHBhdGNoIHdoaWNoIGNhdXNlZAoJICBwcm9ibGVtcyB3aXRoIG11bHRpcGxlIHNlbGVjdGlvbnMuCgoJKiBkbGxzL2RkcmF3L2NvbnZlcnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT25lIG9mIHRoZSAyNC8zMiBjb252ZXJ0IGNvbG9yIG1hc2tzIHdhcyB3cm9uZy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0UHJvcEEvVyBoYXZlIHN0cmluZyBhcmdzLgoKCSogaWYxNjMyL3RodW5rLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvKi9NYWtlZmlsZS5pbiwgZGxscy8qLyouc3BlYzoKCUFkZGVkIGltcG9ydHMgb2YgdXNlcjMyL2dkaTMyL2tlcm5lbDMyIHdoZXJldmVyIG5lY2Vzc2FyeS4KCjIwMDAtMDgtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMDA4MDEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDgtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgV01fVENBUkQgYW5kIERXT1JETE9ORy4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgdG9vbHMvd21jL3dyaXRlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBFX01FU1NBR0VfSEVBREVSLkxlbmd0aCBjb250YWlucyB0aGUgaGVhZGVyIGl0c2VsZiB0b28uCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglDb21taXR0aW5nIGEgcGFnZSBvZiBhIHNoYXJlZCBtYXBwaW5nIGluIG9uZSBwcm9jZXNzIGxldHMgaXQgYXBwZWFyCgljb21taXR0ZWQgaW4gb3RoZXIgcHJvY2Vzc2VzLCB0b28uIFRvIGZha2UgdGhpcywgd2UgY29tbWl0IHRoZW0gYXMKCXNvb24gYXMgdGhleSBhcmUgbWFwcGVkLgoKCSogaW5jbHVkZS93aW5udC5oLCBtZW1vcnkvaGVhcC5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJTW92ZWQgV2luZSBwcml2YXRlIGhlYXAgY3JlYXRpb24gZmxhZ3MgdG8gb3RoZXIgdmFsdWVzLgoJUmV0dXJuIHN5c3RlbSBoZWFwIHdoZW4gYSBzaGFyZWQgaGVhcCBpcyByZXF1ZXN0ZWQuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCU9ubHkgc2V0IENPTVNQRUMgaWYgbm90IGRlZmluZWQgYWxyZWFkeS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGluY2x1ZGUvd2luZS91bmljb2RlLmg6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNoYW5nZWQgdGhlIHdpbjMxIHN0eWxlIGZpbGUgZGlhbG9nIHRvIDMyIGJpdHMgc3RydWN0dXJlcyBhbmQKCW1lc3NhZ2VzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBTZXJnZSBJdmFub3YKCUFuZHJldyBMZXd5Y2t5CglJbXByb3ZlZCBkcmF3aW5nIG9mIGl0ZW0gdGV4dCwgYWRkZWQgU0hPV1NFTEFMV0FZUyBjYXBhYmlsaXR5LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTWF0dGhldyBMYWtlIDxNYXN0ZXJSX0xAeWFob28uY29tPgoJRml4ZWQgYSBzZWdmYXVsdCBwcm9ibGVtIHVzaW5nIHRoZSBzdGFuZGFyZCBmaWxlIG9wZW4gZGlhbG9nIGJveC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvdmdhLmMsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy92Z2EuYywgb2JqZWN0cy9nZGlvYmouYzoKCU1vdmVkIE11bERpdigpIGFuZCBWR0Egcm91dGluZXMgb3V0IG9mIEdESS4KCgkqIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy93Y21kL1JFQURNRSwgcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIEVSUk9STEVWRUwuCglNb3N0IGVycm9ycyByZXBvcnRlZCB2aWEgRm9ybWF0TWVzc2FnZSgpLgoJQ09QWSBjb21tYW5kIG5vdyB3b3JrcyBjb3JyZWN0bHkgaWYgb3V0cHV0IHNwZWNpZmllciBpcyBhIGRpcmVjdG9yeS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglNb3JlIGNvbnNpc3RlbnQgY2FsY3VsYXRpb24gb2YgbGluZSBoZWlnaHQsIHNjcm9sbHMgYSBmdWxsIGl0ZW0gb24KCWxpbmUgdXAvZG93bi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgZmV3IGJ1Z3MgaW5jbHVkaW5nIG9uZSB3aXRoIHNldHRpbmcgZXh0ZW5kZWQgc3R5bGVzIGFuZAoJZWRpdGluZyBsYWJlbHMuCglJbXBsZW1lbnRlZCB0aGUgTFZTX0VYX0ZVTExST1dTRUxFQ1QgZXh0ZW5kZWQgc3R5bGUuCglCZWdpbiBhbiBpbXBsZW1lbnRhdGlvbiBvZiB2aXJ0dWFsIGxpc3Qgdmlld3MgKExWU19PV05FUkRBVEEgc3R5bGUKCXNldCkuCgoJKiBpbmNsdWRlL2RkcmF3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgWDExIGluY2x1ZGVzIGZyb20gZGRyYXcuaC4KCgkqIGxvYWRlci9tb2R1bGUuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJV2luRXhlYzE2IHNob3VsZCBub3Qgc3BsaXQgcXVvdGVkIGZpbGVuYW1lcyB3aXRoIHNwYWNlcy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIEludGVybmV0Q2hlY2tDb25uZWN0aW9uQS4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYW5vdGhlciBub24tTGludXggYnVpbGQgZmFpbHVyZS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCAyIGZvcndhcmQgZW50cmllcy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgc29tZSBmbGlja2VyIGJ5IGRldGVjdGluZyBpZiB3ZSBzZXQgdGhlIHNhbWUgdmFsdWUgYWdhaW4uCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ2hhbmdlIGxvZ2ljIG9mIGxpc3Rib3ggcmVzaXppbmcgZm9yIDE2IGJpdHMgYXBwcyBmb3IgbGlzdHMgd2l0aG91dAoJTEJTX05PSU5URUdSQUxIRUlHSFQgc3R5bGUuCgoJKiBvYmplY3RzL2RjLmM6IFBoaWxsaXAgRXpvbHQgPGV6b2x0QHBlcmYuemtvLmRlYy5jb20+CglGaXhlZCBDcmVhdGVEQyB0byB3b3JrIHByb3Blcmx5IHdoZW4gaXQgaXMgY2FsbGVkIHdpdGggYSBkZXZpY2UuCgoJKiBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCUphc29uIEVkbWVhZGVzIDxqYXNvbkB0aGUtZWRtZWFkZXMuZnNuZXQuY28udWs+CgktIFN1cHBvcnQgd2hpdGVzcGFjZSBhcm91bmQgY29tbWFuZHMgYmV0dGVyLCBhbmQgc3VwcG9ydCB0aGUgQAoJICBwcmVmaXggYmV0dGVyCgktIEVuaGFuY2UgdGhlIHNldCBzdXBwb3J0IHRvIHVuc2V0LCBkaXNwbGF5IHZhbHVlIGVycm9yIGNvcnJlY3RseQoJLSBFbmhhbmNlIHRoZSBjb21tYW5kIGxpbmUgc3VwcG9ydCBmb3IgcGFybXMsIGFuZCBlbnYgdmFyIGV4cGFuc2lvbgoJLSBFbmhhbmNlIHRoZSBlY2hvIGNvbW1hbmQgdG8gbm90IGxvb3NlIHdoaXRlc3BhY2UsIGFuZCBkaXNwbGF5CgkgIG91dHB1dCB3aXRoICUgc2lnbnMgYmV0dGVyCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9yZWdzdHIuaCwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci9SRUFETUUsIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5oLCBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci91bmluc3RhbGxlci5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBhbiB1bmluc3RhbGxlciBmb3IgSW5zdGFsbFNoaWVsZCwgV0lTRSBldGMuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUplYW4tQ2xhdWRlIEJhdGlzdGEgPGpjYkBtYWNhZGFtaWFuLmNvbT4KCVByb3ZpZGUgcG9zaXRpb24gaGludHMgZm9yIHdpbmRvdyBtYW5hZ2Vycy4KCjIwMDAtMDctMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL21vbml0b3IuaCwgaW5jbHVkZS9zeXNtZXRyaWNzLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG1pc2MvbWFpbi5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2dkaS93aW5nLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy90dHlkcnYvZGMuYywgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L3gxMS5jOgoJQ2xlYW5lZCB1cCBzb21lIG1vcmUgVVNFUiBkZXBlbmRlbmNpZXMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1vdmVkIHN5c3RlbSBtZXRyaWNzIGRlZmluaXRpb25zIHRvIHdpbnVzZXIuaC4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVGlkeWVkIHVwIHN0YWNrIGJhY2t0cmFjZSBjb2RlIGEgYml0LCBhbmQgYWRkZWQgYSBzaW1wbGUgc3BlY2lhbAoJY2FzZSBmb3IgYmFja3RyYWNpbmcgZnJvbSBhIG51bGwgRUlQLgoKCSogZmlsZXMvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeCBmb3IgNjQtYml0IG5lZ2F0aXZlIHNlZWsgdmFsdWUuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBtc2Rvcy9pbnQyZi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW1vdmVkIERPUyB0YXNrIGZpZWxkcyBmcm9tIHRoZSBORV9NT0RVTEUgc3RydWN0dXJlLgoKCSogbG9hZGVyL3Rhc2suYzoKCVNraXAgcXVvdGVkIHByb2dyYW0gbmFtZSB3aGVuIGJ1aWxkaW5nIGNvbW1hbmQgbGluZS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRE9TIGJpbmFyeSBzdXBwb3J0IGhhcyBiZWVuIHJlc3RvcmVkLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3Rvb2xoZWxwLmMsIHdpbmRvd3MvdXNlci5jOgoJTW92ZWQgdG9vbGhlbHAgaW1wbGVtZW50YXRpb24gaW50byBrZXJuZWwzMiBkbGwuCgoJKiBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYzoKCUJhY2tlZCBvdXQgRmluZFJlc291cmNlIGxhbmd1YWdlIHBhdGNoLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jLCBtc2Rvcy9pbnQwOS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGZldyBwcm9ibGVtcy4KCgkqIGRsbHMva2VybmVsL21lc3NhZ2VzL3dpbmVycl9lbnUubWM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCUFkZGVkIHRleHQgZm9yIGFsbCBtZXNzYWdlcyBpbmNsdWRlZCBpbiB3aW45NSBhbmQgd2luTlQuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHsgfSBhcm91bmQgc3R1ZmYgaW4gQUREX1RPX1QgbWFjcm9zLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ29udmVydCBET1MgKE1aKSBiaW5hcnkgbG9hZGVyIHRvIHRoZSBuZXcgRE9TIHByb2Nlc3MgbW9kZWwuCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIE1aX0N1cnJlbnQoKSBpbnN0ZWFkIG9mIHBNb2R1bGUtPmxwRG9zVGFzay4gQ2xlYW5lZCB1cCB0aGUgUk1DQjMyCglhc3NlbWJseSBjb2RlIGEgYml0LCBhbmQgd3JhcHBlZCBpdCBpbiAjaWZkZWYgX19pMzg2X18uCgoyMDAwLTA3LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1pc2MvbWFpbi5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL3BhbGV0dGUuYywgd2luZG93cy9rZXlib2FyZC5jOgoJQ2xlYW5lZCB1cCBhIGZldyBVU0VSIGRlcGVuZGVuY2llcy4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2RwbWkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVtb3ZlZCBoTW9kdWxlIHBhcmFtZXRlciBmcm9tIE1aX0FsbG9jRFBNSVRhc2soKSwgYW5kIHJlbmFtZWQKCU1aX0tpbGxNb2R1bGUoKSB0byBNWl9LaWxsVGFzaygpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglDcmVhdGUgZGxsL2tlcm5lbC9tZXNzYWdlcyBkaXJlY3RvcnkuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgRE9TTUVNX0luaXQoKSB0YWtlIGEgQk9PTCBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIEhNT0RVTEUxNiwgYW5kCglpbml0aWFsaXplIERPUyBtZW1vcnkgcHJvcGVybHkgaW4gdGhlIG5ldyBwcm9jZXNzIG1vZGVsLiBNYWRlCglET1NNRU1fTWVtb3J5QmFzZSgpIHVzZSBNWl9DdXJyZW50KCktPmltZyBpbnN0ZWFkIG9mIHBNb2R1bGUtPmRvc19pbWFnZS4KCgkqIGxvYWRlci90YXNrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVtb3ZlZCB1c2FnZSBvZiBvYnNvbGV0ZSBwTW9kdWxlLT5scERvc1Rhc2suCgoyMDAwLTA3LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludXNlci5oLCBsb2FkZXIvcmVzb3VyY2UuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L2Vudmlyb24uYywgbWlzYy9jb21tLmMsIG1pc2MvbHN0ci5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9zbm9vcC5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpZjE2MzIvc25vb3AuYzoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBpbmNsdXNpb25zIG9mIHdpbmdkaS5oIGFuZCB3aW51c2VyLmgKCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgaW5jbHVkZS9udGRkay5oLCBsb2FkZXIvbW9kdWxlLmM6CglSZW1vdmVkIGEgZmV3IGV4dGVybmFsIGRlcGVuZGVuY2llcyBmcm9tIG50ZGxsLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3N0dWJzLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBDcmVhdGVUeXBlTGliLExIYXNoVmFsT2ZOYW1lU3lzIHN0dWJzLgoJQ2hlY2sgZm9yIGNvcnJlY3Qgc3RydWN0IG1hZ2ljIGJlZm9yZSByZWFkaW5nIG91dCBvZiBpdC4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9zbW9vdGhzY3JvbGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgU21vb3RoU2Nyb2xsV2luZG93LgoKCSogbXNkb3MvZG9zbWVtLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRmlsbCBCSU9TIHNlZ21lbnRzIHVzaW5nIHBvaW50ZXJzIGZyb20gRE9TTUVNX0Jpb3MqIGZ1bmN0aW9ucywgaW5zdGVhZAoJb2YgcG9pbnRlcnMgZnJvbSBnbG9iYWwgaGVhcCBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldCByaWQgb2YgVVNFUjMyIGZ1bmN0aW9ucyBpbiBLRVJORUwzMi4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zdm0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIFdpbjMyIENvbnNvbGUgaW50ZXJmYWNlIHRvIHRoZSBtYWluIERPU1ZNIGV2ZW50Cglsb29wLiBDbGVhbmVkIHVwIGV2ZW50IGRpc3BhdGNoaW5nIGNvZGUgYSBiaXQuCgoJKiBtc2Rvcy9pbnQyMS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1ha2UgZGlyZWN0IGNvbnNvbGUgaW5wdXQgcm91dGluZXMgZ28gdGhyb3VnaCBpbnQxNiwgcmF0aGVyIHRoYW4KCXJlYWRpbmcgZGlyZWN0bHkgZnJvbSB0aGUgY29uc29sZSBkcml2ZXIuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJb2xlMzIgbm93IHJlcXVpcmVzIGxpbmtpbmcgd2l0aCBrZXJuZWwzMgoJc2hlbGwzMiBub3cgcmVxdWlyZXMgbGlua2luZyB3aXRoIGtlcm5lbDMyIGFuZCBzaGx3YXBpCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVdlIGFsd2F5cyBoYXZlIHN0cmVycm9yLCBzbyBubyBuZWVkIHRvIGlmZGVmIEhBVkVfU1RSRVJST1IuCgoJKiB3aW5kb3dzL3dpbi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBocmduV25kLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IHRoZSBHTEVYVCBmdW5jdGlvbiBwcm90b3R5cGUgdHlwZWRlZnMgZGV0ZWN0aW9uLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pb3BvcnRzLmMsIGluY2x1ZGUvbWlzY2VtdS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglMZXQgSW50MDkgcm91dGluZXMgcmVtZW1iZXIgYSBrZXlzdHJva2UncyBBU0NJSSBjb2RlLCBpZiBhdmFpbGFibGUuCgoJKiBtc2Rvcy9pbnQzMy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHNvbWUgaW50MzMgZnVuY3Rpb24gc3R1YnMuCgoJKiBtc2Rvcy9pbnQxMC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoYW5nZWQgYSBmZXcgY29yZSBpbnQxMCByb3V0aW5lcyB0byB1c2UgdGhlIEJJT1MgZGF0YSBzZWdtZW50IGN1cnNvcgoJcG9zaXRpb25zIGFuZCB0aGUgVkdBIHJvdXRpbmVzLCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGFjY2Vzc2luZyB0aGUKCWNvbnNvbGUgZHJpdmVyLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgT2xlR2V0QXV0b0NvbnZlcnQuCgoJKiBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUZpbmRSZXNvdXJjZUV4QS9XIHNob3VsZCBzZWFyY2ggZm9yIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UgcmVzb3VyY2Ugb25seS4KCUZpbmRSZXNvdXJjZUEvVyBzaG91bGQgc2VhcmNoIGZvciBhbnkgbGFuZ3VhZ2UgcmVzb3VyY2UuCgoJKiBpbmNsdWRlL3RzX3hsaWIuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU5vIGxvbmdlciBjcmFzaCB3aGVuIHJ1bm5pbmcgd2l0aCBEaXJlY3REcmF3IHdpdGggYSBERENsaXBwZXIgaW4KCS1kZXNrdG9wIG1vZGUuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJTkNfRG9OQ0hpdFRlc3Qgbm93IHJldHVybnMgSFROT1dIRVJFIGxpa2UgV2luZG93cyBpcyBkb2luZyB3aGVuCgljbGlja2luZyBvbiBhIHdpbmRvdyBoYXZpbmcgYSBjdXN0b21pemUgbm9uIGNsaWVudCBhcmVhLgoKMjAwMC0wNy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS94MTFkcnYuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkIFgxMURSVl9ESUJfVXBkYXRlRElCU2VjdGlvbjIgdGhhdCB0YWtlcyBhIEhCSVRNQVAgcGFyYW1ldGVyLgoKCSogbWVtb3J5L2NvZGVwYWdlLmM6CglXb2xmZ2FuZyBTY2h3b3R6ZXIgPHdvc2Nod290QGdteC5uZXQ+CglBZGRlZCBOVUxMIHBvaW50ZXIgY2hlY2tzLgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3RzX3NoYXBlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3NoYXBlLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYvd25kLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSBpbXBsZW1lbnRhdGlvbiBvZiBTZXRXaW5kb3dzUmduIGFuZCBHZXRXaW5kb3dSZ24KCS0gWDExRFJWIGFuZCBUVFlEUlYgdXBkYXRlZCB3aXRoIG5ldyBBUEkgU2V0V2luZG93UmduCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludGVycnVwdHMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVtb3ZlZCB0aGUgaE1vZHVsZSBwYXJhbWV0ZXIgZnJvbSB2YXJpb3VzIERPU01FTSByb3V0aW5lcywgdGhlIERPU01FTQoJcm91dGluZXMgbm93IGFsd2F5cyB1c2UgdGhlIGN1cnJlbnQgbWVtb3J5IHNwYWNlLgoKCSogaW5jbHVkZS9zaGx3YXBpLmg6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogdG9vbHMvd21jL21jeS55OiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgc3BlY2lmaWMgZml4ZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL2RlZnduZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglOb3cgdGhlIHNlcnZpY2UgdGhyZWFkIGlzIG5vIG1vcmUgaW4gY2hhcmdlIG9mIGVyYXNpbmcgdGhlIGJhY2tncm91bmQKCW9mIHRoZSBXaW5kb3cuIFNlcnZpY2UgdGhyZWFkIGlzIGRvaW5nIHRoZSBpbnZhbGlkYXRpb24gcGFydCwgYW5kIHRoZQoJYXBwbGljYXRpb24gdGhyZWFkIGlzIGRvaW5nIHRoZSBlcmFzaW5nIHBhcnQuIEFsbCB0aGlzIGhhcyBiZWVuCglpbXBsZW1lbnRlZCB1c2luZyBXTV9TWU5DUEFJTlQgbWVzc2FnZS4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgc3R1YiBmb3IgT0xFMzIuT2xlU2V0QXV0b0NvbnZlcnQgbmVlZGVkIGJ5IEFkb2JlIFBob3Rvc2hvcCA0LjAuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEbyBub3QgY3Jhc2ggaWYgd2luZG93IHdhcyBub3QgZm91bmQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gVXBkYXRlV2luZG93IHNob3VsZCByZWZyZXNoIGFsbCBjaGlsZHJlbiB0aGF0IGhhdmUgYW4gdXBkYXRlIHJlZ2lvbi4KCS0gSW4gRElBTE9HX0NyZWF0ZUluZGlyZWN0IFVwZGF0ZVdpbmRvdyBzaG91bGRuJ3QgYmUgY2FsbGVkLiBXaW5lIHdpbGwgZ2VuZXJhdGUKCSAgYSBXTV9QQUlOVCBldmVudHVhbGx5IGZvciB0aGUgZGlhbG9nLCBubyBuZWVkIHRvIGZvcmNlIGEgcGFpbnQgcmlnaHQgYXdheS4KCShiYXNlZCBvbiBhIHBhdGNoIGZyb20gSmFtZXMgSGF0aGV3YXkgaW4gdGhlIENvcmVsIHRyZWUpCgoJKiBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyZi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglKdXN0IGdldCBET1MgdGFzayBzdHJ1Y3R1cmUgZnJvbSBNWl9DdXJyZW50KCksIGluc3RlYWQgb2YgKGNsdW1zaWx5KQoJdHJ5aW5nIHRvIGZpbmQgYW5kIHJlYWQgZnJvbSB0aGUgY3VycmVudCB0YXNrJ3MgbW9kdWxlIHN0cnVjdHVyZXMuCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFrZSBhIGdsb2JhbCBhc20gaGVscGVyIGZ1bmN0aW9uIHRvIGhhbmRsZSAzMi1iaXQgUk1DQiBjYWxscywgc28gd2UKCWRvbid0IG5lZWQgdGhvc2UgY29tcGxleCBjb25zdHJhaW50cyBlaXRoZXIuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBbHdheXMgZ2V0IGEgaGFyZHdhcmUgbWVzc2FnZSBmcm9tIHRoZSBzeXN0ZW0gcXVldWUgaW4gUGVla01lc3NhZ2UsCglldmVuIGlmIG5vIHN1Y2ggd2FrZSBiaXRzIGFyZSBzZXQsIGJlY2F1c2UgaW4gYSBQZWVrTWVzc2FnZSBsb29wLAoJdGhlcmUncyBubyBzbGVlcGluZywgc28gdGhlIG5lY2Vzc2FyeSB3YWtlIGJpdHMgYXJlIG5ldmVyIHNldC4uLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGluY2x1ZGUvb2xlY3RsLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGQgQ29ubmVjdGlvbiBQb2ludCBzdXBwb3J0IHRvIE9MRSBmb250IG9iamVjdHMuCglBZGQgc29tZSBtb3JlIFRSQUNFKClzLgoKCSogZGxscy8qLyouc3BlYzoKCUFkZGVkICdvd25lcicgZmllbGQgdG8gMTYtYml0IHNwZWMgZmlsZXMgdG8gc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUKCTMyLWJpdCBkbGwgdGhhdCBjb250YWlucyBpdC4KCjIwMDAtMDctMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3NvdW5kLnNwZWMsIGRsbHMvd2lubW0vc291bmQxNi5jLCBpbmNsdWRlL3N0cmVzcy5oLCBpbmNsdWRlL3dpbmUvd2luZXNvdW5kLmgsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvc3RyZXNzLmMsIGRsbHMva2VybmVsL3N0cmVzcy5zcGVjLCBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCU1lcmdlZCBzZXR1cHguZGxsIGludG8gc2V0dXBhcGkuZGxsLgoJTWVyZ2VkIHNvdW5kLmRsbCBpbnRvIHdpbm1tLmRsbC4KCU1lcmdlZCBzdHJlc3MuZGxsIGludG8ga2VybmVsMzIuZGxsLgoKCSogZGxscy9kY2ltYW4zMi9NYWtlZmlsZS5pbiwgZGxscy9kY2ltYW4zMi9kY2ltYW5fbWFpbi5jLCBkbGxzL2RwbGF5L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5L2RwbGF5X21haW4uYywgZGxscy9tc25ldDMyL01ha2VmaWxlLmluLCBkbGxzL21zbmV0MzIvbXNuZXRfbWFpbi5jLCBkbGxzL3NoZm9sZGVyL01ha2VmaWxlLmluLCBkbGxzL3NoZm9sZGVyL3NoZm9sZGVyLnNwZWMsIGRsbHMvc2hmb2xkZXIvc2hmb2xkZXJfbWFpbi5jLCBkbGxzL3dvdzMyL01ha2VmaWxlLmluLCBkbGxzL3dvdzMyL3dvd19tYWluLmM6CglBZGRlZCBhIGZldyBlbXB0eSBzb3VyY2UgZmlsZXMgc28gdGhhdCBlYWNoIGRsbCBoYXMgYXQgbGVhc3Qgb25lIEMKCWZpbGUuCgoJKiBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZGxscy93aW5tbS93aW5lb3NzL21tYXV4LmMsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYywgaW5jbHVkZS9kcml2ZXIuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvdmZ3LmgsIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5jLCB3aW5kb3dzL2RyaXZlci5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSByZW1vdmVkIChub3cgb2Jzb2xldGUpIGRyaXZlci5oIGZpbGUgKGl0J3MgY29udGVudCBpcyBub3cgaW4gbW1zeXN0ZW0uaCkKCS0gdXBncmFkZWQgdmZ3LmggY29udGVudAoKCSogbXNkb3MvZHBtaS5jOiBBdm9pZCBjbG9iYmVyaW5nICVlYnguCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglSZXR1cm4gdGhlIHByb3BlciBlcnJvciBjb2RlIHdoZW4gYSAxNi1iaXQgdGFzayBmYWlsZWQgdG8gc3RhcnQKCSh0aGFua3MgdG8gUGV0ZXIgR2FudGVuKS4KCgkqIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYjoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRhcHRlZCB0byB0aGUgcmVjZW50IHdpbmVidWlsZCByZW5hbWUuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIGRldGVjdGlvbiBjb2RlIGZvciB2ZXJ5IG9sZCBXaW5kb3dzICgxLjEsIDIuMCwgLi4uKSBiaW5hcmllcyB0bwoJTU9EVUxFX0dldEJpbmFyeVR5cGUoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglNb3ZlZCBzaGx3YXBpIHJvdXRpbmVzIGZyb20gc2hlbGwzMi5kbGwgdG8gc2hsd2FwaS5kbGwuCgoyMDAwLTA3LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2F0b20uYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci91bmljb2RlLmMsIHNlcnZlci91bmljb2RlLmgsIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdW5pY29kZS8uY3ZzaWdub3JlLCB1bmljb2RlL01ha2VmaWxlLmluOgoJTWFrZSB1bmljb2RlLm8gaW50byBhIHNlcGFyYXRlIEVMRiBsaWJyYXJ5IHNvIHRoYXQgd2UgY2FuIHVzZSBpdCBmcm9tCgl0aGUgd2luZXNlcnZlciB0b28uCgoJKiBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2Nkcm9tLmgsIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MmYuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBmaXhlZCBhIGdyb3NzIGJ1ZyBpbiBTZXRDdXJyZW50RGlyZWN0b3J5QSAod2hlcmUgY2hhbmdpbmcgdG8gYSBuZXcKCSAgbm9uLWV4aXN0ZW50IGRpcmVjdG9yeSB3b3VsZCBsZWF2ZSB0aGUgbmV3IGRyaXZlIGVuYWJsZWQgdXBvbiBhYm9ydGluZwoJICAoZml4ZXMgQ3V0ZUZUUCBpbnN0YWxsIGFuZCBzaG91bGQgZml4IE1BTlkgYXBwcykKCSAgVGhpcyBoYXMgcHJvYmFibHkgYmVlbiBjYXVzZWQgYnkgbXlzZWxmLiAqYnJvd25wYXBlcmJhZyoKCS0gYWRkZWQgR2V0Vm9sdW1lSW5mb3JtYXRpb24gc2VyaWFsIG51bWJlciBidWctZm9yLWJ1ZyBjb21wYXRpYmlsaXR5CgktIGNvcnJlY3RlZCBVbmljb2RlIGxhYmVscyAoYmV0dGVyIENELVJPTSBoYW5kbGluZyBpbiBnZW5lcmFsKQoJLSBtb3ZlZCBDRC1ST00gbGFiZWwgZGV0ZWN0aW9uIGNvZGUgdG8gbWlzYy9jZHJvbS5jCgktIHBvc3NpYmxlIHRvIHVzZSBsb29wYmFjayBtb3VudGVkIElTTzk2NjAgZmlsZXMKCS0gaW5pdCBzb21lIHVuaW5pdGlhbGlzZWQgZHJpdmUgZmllbGRzCgktIHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IGhlYWRlciBpbmNsdWRlcwoKCSogd2luZG93cy93aW5wb3MuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBkZXN0cm95IHRoZSBjYXJldCBvbiBTV1BfSElERVdJTkRPVy4KCgkqIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMva2VybmVsL2tlcm5lbC5yYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbWVzc2FnZXMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvbWVzc2FnZXMvd2luZXJyX2VudS5tYywgbG9hZGVyL3Jlc291cmNlLmMsIG1pc2MvbHN0ci5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CglJbXByb3ZlZCBGb3JtYXRNZXNzYWdlOgoJLSBBZGRlZCBmdWxsIHN1cHBvcnQgZm9yIEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNCgktIEltcGxlbWVudGVkIGxhbmd1YWdlIHNlYXJjaCBhcyBkb2N1bWVudGVkCgktIElsbGVnYWwgY29tYmluYXRpb25zIG9mIG9wdGlvbnMgdHJhcHBlZC4KCS0gTWVzc2FnZSB0YWJsZSBmb3Igc3lzdGVtIG1lc3NhZ2VzIGFkZGVkLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTW92ZWQgRk9STUFUX01FU1NBR0UgZmxhZ3MgZGVmaW5pdGlvbiB0byB3aW5iYXNlLmguCgoJKiBNYWtlLnJ1bGVzLmluOgoJQWRkZWQgcnVsZXMgZm9yIG1lc3NhZ2UgY29tcGlsZXIgLm1jIGZpbGVzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVBvcnRhYmlsaXR5IGZpeGVzLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLCBtaXNjL2NvbW0uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9yYXNhcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9ycGNydDQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2VyaWFsdWkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvc2V0dXB4LmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gSW1wbGVtZW50ZWQgYSBidWctd29yay1hcm91bmQgZm9yIEJlcmtlbGV5IHlhY2MgKGJ5YWNjKSB3aGljaAoJICBkb2VzIG5vdCBnZW5lcmF0ZSBwcm9wZXIgZGVmYXVsdCB0cmFuc2l0aW9uIHJ1bGVzIGZvciBub24tdGVybWluYWxzLgoJICBTZWUgY29tbWVudHMgaW4gcGFyc2VyLnkgaG93IHRoZSBmaXggd29ya3MuCgktIENoYW5nZWQgdGhlIGVycm9yLWxpbmUvY2hhciBwb3NpdGlvbiB0byBtYWtlIGVtYWNzIGhhcHB5IHBhcnNpbmcKCSAgdGhlIHBvc2l0aW9uIG9mIHRoZSBlcnJvci4KCS0gQWRkZWQgY29tbWVudHMgaW4gdGhlIGRvY3VtZW50YXRpb24gaW4gd2hpY2ggb3JkZXIgdGhlIGxpbmUtbnVtZXIKCSAgYW5kIGNoYXJhY3Rlci1wb3NpdGlvbiBvZiB0aGUgZXJyb3IgaXMgd3JpdHRlbi4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgbGNhbGwgb3Bjb2Rlcywgc28gYWxsIGdhcy1lcyB1bmRlcnN0YW5kIGl0Li4uCgoJKiBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2ZsYXR0aHVuay5oLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3czMnNjb21iLmMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvdXR0aHVuay5jLCByZWxheTMyL3dvd3RodW5rLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL29yZGluYWxzLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9mbGF0dGh1bmsuaCwgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglNb3ZlZCB0aHVua2luZyBmdW5jdGlvbnMgb2ZmIHRvIGtlcm5lbDMyLmRsbC4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvc2VjLmMsIG1lbW9yeS9NYWtlZmlsZS5pbiwgbWVtb3J5L3JlZ2lzdHJ5LmM6CglUZW1wb3JhcmlseSBtb3ZlZCBhZHZhcGkzMiByZWdpc3RyeSBzdXBwb3J0IGJhY2sgaW50byBsaWJ3aW5lLnNvLCBhbmQKCW1hZGUgYWR2YXBpMzIgYSBzZXBhcmF0ZSBkbGwuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglmaXhlZCBhIG51bWJlciBvZiBsb25nIHN0YW5kaW5nIGJ1Z3M6CgkgICAgLSBzZWdtZW50ZWQgZXhwcmVzc2lvbnMgZGlkbid0IGRpc3BsYXkgY29ycmVjdGx5CgkgICAgLSB1c2luZyBkeW5hbWljIHNpemUgYXJyYXkgZm9yIG5lc3RlZCB0eXBlcyBwYXJzaW5nCgkgICAgLSBjb3JyZWN0IGRpc3BsYXkgb2Ygc291cmNlIGNvZGUgYWZ0ZXIgYSBjcmFzaAoJZmFjdG9yaXplZCBzb21lIGNvZGUKCgkqIGRsbHMvZ2RpL3dpbmcuYywgZGxscy9nZGkvd2luZy5zcGVjLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW46CglNZXJnZWQgd2luZy5kbGwgaW50byBnZGkzMi5kbGwuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUHJldmVudCB0aGUgYXR0ZW1wdCB0byBkcmF3IGludmFsaWQgaW1hZ2UgaW5kZXhlcy4KCVByb3ZpZGUgdGhlIHR3byBwaXhlbCBidWZmZXIgYmV0d2VlbiB0aGUgaW1hZ2UgYW5kIHRoZSBsYWJlbC4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsIGRsbHMvb2xlYXV0MzIvY29ubnB0Lmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBIGdlbmVyaWMgaW1wbGVtZW50aW9uIG9mIElDb25uZWN0aW9uUG9pbnQvSUVudW1Db25uZWN0aW9ucy4KCgkqIHRvb2xzL2ZudDJiZGYuYywgdG9vbHMvZm50MmJkZi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTWFrZSBmbnQyYmRmIHByb2R1Y2UgY29ycmVjdCBmb250cy4KCgkqIG1zZG9zL2ludDE2LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFrZSBpbnQxNiByZWFkIGZyb20gdGhlIEJJT1Mga2V5Ym9hcmQgYnVmZmVyLCBub3QgZGlyZWN0bHkgZnJvbSB0aGUKCWNvbnNvbGUgZHJpdmVyLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGJyb2tlbiBhc3NlbWJsZXIuIFJlbW92ZWQgc3VwcG9ydCBmb3Igb2xkIHByb3RlY3RlZC1tb2RlIGhhY2sKCWZvciBydW5uaW5nIHJlYWwtbW9kZSBjb2RlIG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgdm04NjsgdGhlCgljdXJyZW50IENhbGxSTS0+Uk1DQiBzaG9ydGN1dCBjb2RlIHNob3VsZCB0YWtlIGNhcmUgb2YgYWxsCglXaW5lLXN1cHBsaWVkIFJNIEFQSXMgKHN1Y2ggYXMgRE9TQVNQSSkgYW55d2F5LgoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmM6CglQZXJmb3JtIE5FX0luaXRQcm9jZXNzIGluIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgdGFzay4KCjIwMDAtMDctMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zYWNtLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20vc3RyZWFtLmMsIGRsbHMvbXNhY20vd2luZWFjbS5oLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3dpbjg3ZW0uYywgZGxscy9rZXJuZWwvd2luODdlbS5zcGVjLCBkbGxzL2tlcm5lbC93aW5kZWJ1Zy5jLCBkbGxzL2tlcm5lbC93aW5kZWJ1Zy5zcGVjOgoJTWVyZ2VkIG1zYWNtIGFuZCBtc2FjbTMyIGRsbHMuCglNZXJnZWQgd2luODdlbSBhbmQgd2luZGVidWcgaW50byBrZXJuZWwzMi5kbGwuCgoyMDAwLTA3LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9ncm91cC5jLCBwcm9ncmFtcy9wcm9nbWFuL2dycGZpbGUuYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9ncmFtLmMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgaW50L0hBTkRMRSBtaXNtYXRjaGVzIHJldmVhbGVkIGJ5IC1EU1RSSUNULgoJUmVwbGFjZWQgdGhlIFdpbjE2IGhtZW1jcHkxNiAob2Jzb2xldGUpIHdpdGggbWVtY3B5LgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIFdpbk1haW4ncyBzaWduYXR1cmUuCglSZXBsYWNlZCB0aGUgV2luMTYgaG1lbWNweTE2IChvYnNvbGV0ZSkgd2l0aCBtZW1jcHkuCglSZW1vdmVkIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gdGhlIExhbmd1YWdlcyBhcnJheS4KCgkqIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvcHJvZ21hbi9zdHJpbmcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIHRoZSBMYW5ndWFnZXMgYXJyYXkuCgoJKiBwcm9ncmFtcy9jbG9jay9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIFdpbk1haW4ncyBzaWduYXR1cmUuCglGaXhlZCBwYXJhbWV0ZXIgb3JkZXIgZm9yIHRoZSBjYWxsIHRvIENyZWF0ZVdpbmRvdy4KCgkqIGxpYnRlc3QvaGVsbG8uYywgbGlidGVzdC9oZWxsbzIuYywgbGlidGVzdC9oZWxsbzMuYywgbGlidGVzdC9oZWxsbzQuYywgbGlidGVzdC9oZWxsbzUuYywgbGlidGVzdC9uZXcuYywgbGlidGVzdC9yb2xleC5jLCBsaWJ0ZXN0L3ZhcnRlc3QuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL3dpbnZlci93aW52ZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgV2luTWFpbidzIHNpZ25hdHVyZS4KCgkqIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgbGlidGVzdC9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgLURTVFJJQ1QuCglBZGRlZCBtaXNzaW5nIGxpYnJhcmllcyBjb21jdGwzMiBhbmQgcnBjcnQ0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzY29udHJvbC5oOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJQWRkcyBhbiBpbml0aWFsIFdTQUlvY3RsIGZ1bmN0aW9uIHdpdGggc3VwcG9ydCBmb3Igb25seSB0aGUKCVNJT19HRVRfSU5URVJGQUNFX0xJU1QgY29tbWFuZC4gIEFkZHMgaW5pdGlhbCBjb2RlIHRvIFdzQ29udHJvbAoJZnVuY3Rpb24gdG8gc3VwcG9ydCB0aGUgV1NDTlRMX1RDUElQX1FVRVJZX0lORk8gY29tbWFuZC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvbXBpbGF0aW9uIGZpeGVzIGZvciBPcGVuR0wuCgoJKiBNYWtlLnJ1bGVzLmluOiBNaWtlX01jQ29ybWFja0Bsb29rc21hcnQuY29tLmF1CglDb3JyZWN0ZWQgYzJtYW4gZmxhZ3MuIEl0IHN0aWxsIGNyYXNoZXMgYW55aG93IDotLwoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURldGVjdCBicm9rZW4gZ2xleHQuaCBoZWFkZXJzLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oOgoJTWlrZV9NY0Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdQoJQWRkZWQgc29tZSBiYXNpYyB0ZXh0IGRpc3BsYXkgYW5kIGVkaXRpbmcgY2FwYWJpbGl0aWVzLCBjdXJzb3IKCXBvc2l0aW9uaW5nLCBhIGJpdCBvZiBzY3JvbGxpbmcgYW5kIGEgdGV4dCBmaWxlIGxvYWRlci4KCgkqIGluY2x1ZGUvdGFwaS5oOiBNaWtlX01jQ29ybWFja0Bsb29rc21hcnQuY29tLmF1CglJbXBsZW1lbnRlZCBsaW5lR2V0Q291bnRyeS4gKHdvcmtzIHdpdGggSHlwZXJUcm0uZXhlKQoKCSogZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX0NzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fby5yYywgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywgZGxscy9jb21tZGxnL2NkbGdfSHUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy9jb21tZGxnL2NkbGdfS28ucmMsIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Oby5yYywgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZvY3VzIGhhbmRsaW5nLCB2aXN1YWwgY2hhbmdlcyArIG1pc2MgZml4ZXMuCgoJKiBkbGxzL3RhcGkzMi9saW5lLmM6IE1pa2VfTWNDb3JtYWNrQGxvb2tzbWFydC5jb20uYXUKCUltcGxlbWVudGVkIGxpbmVHZXRDb3VudHJ5LiAod29ya3Mgd2l0aCBIeXBlclRybS5leGUpCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbiBvZiBBZGRBY2Nlc3NBbGxvd2VkQWNlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgZnVuY3Rpb24gU2V0SXRlbSBpcyBjYWxsZWQgdG8gc2VsZWN0IGFuIGl0ZW0KCW9yIHNldCBpdHMgZm9jdXMuCgoJKiBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGluY2x1ZGUvZDNkdHlwZXMuaCwgaW5jbHVkZS9kM2R2ZWMuaW5sOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBhIGZldyBDKysgb3BlcmF0b3JzIHRvIERpcmVjdDNEIHN0cnVjdHVyZXMsIGFuZCBtYWRlIHNvbWUgdW5pb25zCgknbmFtZWxlc3MnLgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUluc3VyZWQgdGhhdCBhbGwgcGFyYW1ldGVycyBvZiBhc3luYyBmdW5jdGlvbnMgYXJlIGNvcGllZCBiZWZvcmUKCXJldHVybmlnIGZyb20gcmVxdWVzdC4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9ycywgZG9jdW1lbnRhdGlvbi94MTFkcnYsIHRvb2xzL3dpbmVjb25mOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXggYSBmZXcgdHlwb3MgYW5kIHN1Y2guCgoJKiBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2RkcmF3Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIHNvbWUgRGlyZWN0RHJhdzctcmVsYXRlZCBkZWZpbml0aW9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWtlIG5vbi1leGlzdGVuY2Ugb2YgKGYpbGV4IGFuIGVycm9yLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywgZGxscy9kZHJhdy9kcGFsZXR0ZS94MTEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSURpcmVjdERyYXcsSURpcmVjdERyYXcyLElEaXJlY3REcmF3NCBmaXhlZCB1cCBpbiByZWdhcmQgdG8gQ09NIHVzYWdlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBmZXcgV2luMzIgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL3dpbnNwb29sLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVkdWNlIHNjb3BlIG9mICJTdGF0dXMiICNpZmRlZiBoYWNrLgoKCSogaWYxNjMyL3JlbGF5LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNheSB0aGF0ICJObyBoYW5kbGVyIiBtZXNzYWdlcyBhcyBmYXRhbC4KCgkqIHdpbmVkZWZhdWx0LnJlZzogRml4ZWQgU2hhcmVkRGlyIGxvY2F0aW9uLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jLCBtc2Rvcy9kcG1pLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS93aW5udC5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGFuZ2UgdGhlIFY4NkJBU0UgbWFjcm8gdG8gY2FsbCBET1NNRU1fTWVtb3J5QmFzZSgpIGluc3RlYWQgb2YgdXNpbmcKCXRoZSB1Z2x5IERyNyBoYWNrLgoKCSogZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmaXJzdCBzZWVrIG9uIE1FTSBtbWlvIGZpbGVzLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVtb3ZlIGNhbGxzIHRvIERJQUxPR19Eb0RpYWxvZ0JveCBhbmQgRElBTE9HX0NyZWF0ZUluZGlyZWN0LgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGZldyBtb3JlIGZpZWxkcyB0byBIVFRQX0dldFN0ZEhlYWRlckluZGV4KCkgYW5kIGZpeCBzb21lIHR5cG9zLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglQdXQgdGhlIFVSTCBwYXJhbWV0ZXIgbGlzdCBpbiB3aXRoIHRoZSBVUkwgcGF0aCBpZiB0aGUgRXh0cmFJbmZvCglidWZmZXIgaXNuJ3Qgc3BlY2lmaWVkLgoKCSogY29udHJvbHMvaWNvbnRpdGxlLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeGVkIGNhbGN1bGF0aW9uIG9mIGJ1ZmZlciBsZW5ndGggYWZ0ZXIgc3dpdGNoIG9mIHdpbmRvdyB0ZXh0IHRvCgl1bmljb2RlLgoKCSogZGVidWdnZXIvbWVtb3J5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ29tbWVudCBvdXQgYSBub25mdW5jdGlvbmFsIERPUyBwYXJ0IG9mIGRlYnVnZ2VyLgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzdHViIGZvciBSYXNIYW5nVXBBKCkuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURlZldpbmRvd1Byb2Mgc2hvdWxkIHBhc3MgdW5oYW5kbGVkIFdNX01PVVNFV0hFRUwgdG8gcGFyZW50LCBhY2NvcmRpbmcKCXRvIGRvY3VtZW50YXRpb24uCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGZldyBwcm9ibGVtcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCS0gQ2hhbmdlZCB0aGUgdGVtcG9yYXJ5IGJ1ZmZlciBmb3IgbG9hZGluZyByZXNvdXJjZXMgZnJvbSAyNTYgdG8gNTEyCgktIERlZmluZSBNQVhfUkVTT1VSQ0VfU1RSSU5HX0xFTkdUSCBpbnN0ZWFkIG9mIHVzaW5nIGl0IG1hZ2ljYWxseSB0aHJvdWdob3V0CgkgIHRoZSBmdW5jdGlvbgoJLSBVc2UgbHN0cmNweW5XIGluc3RlYWQgb2YgbHN0cmNweVcKCjIwMDAtMDctMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMDA3MTYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDctMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUFkZGVkIGFzc2VtYmx5IHdyYXBwZXIgZm9yIGNhbGxpbmcgd2luZG93IHByb2NlZHVyZXMuCgoJKiBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJR2V0IGZ1bGwgcGF0aCBvZiBhcmd2WzBdIGJlZm9yZSB3ZSBjaGFuZ2UgZGlyZWN0b3JpZXMuCglNYWtlIHN1cmUgcHJvY2VzcyBuYW1lcyBhcmUgbG9uZyBwYXRoIG5hbWVzLgoJQ2xlYW5lZCB1cCBpbml0aWFsaXNhdGlvbiBhIGJpdC4KCgkqIHNlcnZlci9zb2NrLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUluIHNldF9zb2NrZXRfZXZlbnQsIHRoZSBldmVudCBzaG91bGQgYmUgc2lnbmFsZWQgaWYgdGhlcmUncyBhIHBlbmRpbmcKCW5ldHdvcmsgZXZlbnQgY29ycmVzcG9uZGluZyB0byB0aGUgZXZlbnRzIHRoZSBhcHBsaWNhdGlvbiB3YW50ZWQgdG8gYmUKCW5vdGlmaWVkLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvY2xhc3MuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVNwZWxsaW5nIGZpeGVzLgoKCSogbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIHRvb2xzL3dpbmVpbnN0YWxsLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRG9jIGFuZCB0cmFjZSB1cGRhdGVzLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJhbnNtaXQgY3VycmVudCBkaXJlY3Rvcnkgc2V0dGluZ3MgdG8gbmV3bHkgY3JlYXRlZCBwcm9jZXNzZXMuCgoJKiBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW46CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglBZGRlZCBHZXJtYW4gaW5zdGFsbGF0aW9uIGFuZCBjb25maWd1cmF0aW9uIG1hbnVhbC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglSYXVsIEZlcm5hbmRlcyA8cmdmQGllZy5jb20uYnI+CglBZGRlZCBCcmF6aWxpYW4ga2V5Ym9hcmQuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0IGNsaXBwaW5nIHJlZ2lvbiB0byBjbGllbnQgd2luZG93IGJlZm9yZSBvd25lci1kcmF3biBwYWludGluZy4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgdGhlICJTaGFyZWREaXIiIHJlZ2lzdHJ5IGtleS4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBEaXJlY3QzRCBzdXBwb3J0IGFuZCBhIGxvdCBvZiB3YXJuaW5ncwoJLSBhZGQgc3VwcG9ydCBmb3IgRERyYXcgaW4gYSB3aW5kb3cgKG5vdCBvcHRpbWl6ZWQgeWV0KQoJLSBjbGVhbnMgdXAgT3BlbkdMIGV4dGVuc2lvbnMgaGFuZGxpbmcgZm9yIEQzRAoKCSogY29udHJvbHMvc3RhdGljLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQmFja2dyb3VuZCBvZiBTU19TSU1QTEUgc3RhdGljIGNvbnRyb2wgaXMgbm90IGZpbGxlZCAodW5sZXNzIGl0IGhhcwoJU1NfTk9QUkVGSVggdG9vKS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcm9wIFVOSVggY3dkIHRvIC8gYWZ0ZXIgY2FsY3VsYXRpbmcgV0lORSBjdXJyZW50IGRpcmVjdG9yeSAodG8gYWxsb3cKCUNEIHVubW91bnRzKS4KCjIwMDAtMDctMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCU5ldyB2ZXJzaW9uIG9mIHRoZSBwYXRjaCBmcm9tIEZyYW5jb2lzIEphY3F1ZXMgd2l0aCBhIG1vZGlmaWNhdGlvbiBvZgoJbXkgb3duIHRoYXQgbWFrZXMgZXZlcnlib2R5IGhhcHB5IDotKQoKCSogbWlzYy9jb21tLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUhvb2sgc2VyaWFsdWkgZGxsIGludG8gZXhpc3RpbmcgY29tbSBmdW5jdGlvbnMuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zZXJpYWx1aS8uY3ZzaWdub3JlLCBkbGxzL3NlcmlhbHVpL01ha2VmaWxlLmluLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5oLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWlfcmMucmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIHNlcmlhbHVpIGRsbCBjb250YWluaW5nIENvbW1Db25maWdEaWFsb2csCglHZXREZWZhdWx0Q29tbUNvbmZpZyBhbmQgU2V0RGVmYXVsdENvbW1Db25maWcuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2V0dXBhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyBmaXhlcy4KCS0gTWlub3IgYnVnIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglBbGwgc3RhbmRhcmQgd2luZG93IGNvbnRyb2xzIHNob3VsZCBoYXZlIENTX1BBUkVOVERDLCBidXQgc2hvdWxkIHN0aWxsCgljbGlwIHRvIHRoZSBjb250cm9sIHdpbmRvdy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJSm9obiBSIC4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIGFsc28gaGF2ZSB0byB2YWxpZGF0ZSB0aGUgZnJhbWUgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVuIHRoZQoJYXBwIGRvZXNuJ3QgY2FsbCBCZWdpblBhaW50LgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglFeHRlbmQgdGhlIFdTT0NLMzIgd2FybmluZyBpbiBjZXJ0YWluIGZ1bmN0aW9ucyB0byBtZW50aW9uIFdTMl8zMiB0b28uCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzoKCUVkIFNub3cgPGVkX3Nub3dAdHRtZW5naW5lZXJpbmcuY29tPgoJRml4ZXMgdW5tdXRpbmcgd2hlbiB1bm11dGVkLgoJVW5pZmllcyBzY2FsZSByZXBvcnRlZCB3aXRoIHNjYWxlIHVzZWQgZm9yIHZvbHVtZSBjb250cm9sLgoJSGFjayBmb3IgQmFzcy9UcmVibGUgdW50aWwgYmV0dGVyIGZpeCBpcyBjb21wbGV0ZS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIERCQ1MvdW5pY29kZSBlbmNvZGluZyB0ZW1wbGF0ZXMuCgoJKiBjb250cm9scy9jb21iby5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGNsZWFyIHNlbGVjdGlvbiB3aGVuIGluaXRpYWwgZW50cnkgaXMgbm90IGluIHRoZSBsaXN0LgoKCSogaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgb2xlL29sZTJubHMuYzoKCU1hZGUgLS1sYW5ndWFnZSBiZWhhdmUgdGhlIHNhbWUgYXMgc2V0dGluZyB0aGUgTEFOR1VBR0UgZW52aXJvbm1lbnQKCXZhcmlhYmxlLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvcnBjcnQ0Ly5jdnNpZ25vcmUsIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS93dHlwZXMuaCwgbG9hZGVyL2xvYWRvcmRlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIHJwY3J0NC5kbGwuCglJbXBsZW1lbnQgVXVpZENyZWF0ZSAodXNpbmcgZXhpc3RpbmcgY29kZSBmcm9tIENvQ3JlYXRlR3VpZCkuCglDb0NyZWF0ZUd1aWQgY2FsbHMgVXVpZENyZWF0ZS4KCgkqIG1lbW9yeS9oZWFwLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4IGZvciBzdXBwb3J0aW5nIERCQ1MuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVJvYiBGYXJudW0gPHJmYXJudW1AbWluZHNwcmluZy5jb20+CglJZ25vcmUgaUJpdG1hcCB3aWR0aCB3aGVuIGRyYXdpbmcgZmxhdCB0b29sYmFyLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUZpeGVkIGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gdGhlIFBFIGxvYWRlci4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglKZWFuLUNsYXVkZSBCYXRpc3RhIDxqY2JAbWFjYWRhbWlhbi5jb20+CglFbnN1cmUgdGhlIHZhbGlkaXR5IG9mIGhPbGRGb2N1cyBiZWZvcmUgY2FsbGluZyBXSU5fR2V0VG9wUGFyZW50LgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglEcmV3IFJvbm5lYmVyZyA8ZHJld0Bjb2Rvbi5wcmluY2V0b24uZWR1PgoJSWdub3JlIGJyb2tlbiBmb250cyB3aGVuIGJ1aWxkaW5nIGNhY2hlIGZpbGUuCgoJKiB3aW5kb3dzL3dpbi5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFsbG93IFNldFdpbmRvd0xvbmcoLi4uIEdXTF9TVFlMRSkgdG8gY2hhbmdlIHZpc2libGUgYml0LgoKCSogZG9jdW1lbnRhdGlvbi9yZWdpc3RyeToKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPkQKCVRleHQgb2YgV1dOIGFydGljbGUgIlRoZSBSZWdpc3RyeSIuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCS0gTmV3IGZ1bmN0aW9uIGluIGFzcGkuYyBTQ1NJX0ZpeF9DTURfTEVOIHdoaWNoIGRldGVybWluZXMgaWYgTGludXggaXMKCSAgZ3Vlc3NpbmcgdGhlIGNvbW1hbmQgbGVuZ3RoIGNvcnJlY3RseSwgYW5kIGlmIG5vdCwgdGVsbCdzIGl0IHdoYXQncyB1cC4KCS0gQ2hhbmdlZCBzdHJjYXQgdG8gc3RyY3B5IGluIFNlbmRBU1BJMzJDb21tYW5kIHRvIGF2b2lkIHJlcXVpcmluZyB0aGUKCSAgY2FsbGVyIHRvIGNsZWFyIHRoZSBmaWVsZHMuCgktIEFkZGVkIGEgbmV3IGZpZWxkIHRvIEhBX1VuaXF1ZSBjb250ZW50IHRvIGZpeCBzb21lIGFwcGxpY2F0aW9ucy4gIFdpbGwKCSAgZml4IHRoaXMgZm9yIGdvb2QgYXQgYSBsYXRlciBkYXRlLgoJLSBBZGRlZCBUUkFDRSB0byBHZXRBU1BJMzJETExWZXJzaW9uIChhbmQgRklYTUUgd2hlbiBub3QgcnVubmluZyB1bmRlcgoJICBMaW51eCkKCS0gQWRkZWQgc29tZSBjb25zdGFudHMgdG8gd2luZXNjc2kuaAoJKHdpdGggdGhlIGhlbHAgb2YgQmVybmQgQmVybmllIE1leWVyIDxibWV5ZXJAY3MubW9uYXNoLmVkdS5hdT4pCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJU3R1YnMgZm9yIENyZWF0ZURlc2t0b3BBIGFuZCBFbnVtRGVza3RvcFdpbmRvd3MuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHdzMl8zMiBsb2Fkb3JkZXIuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJVHJ5IHRvIHVubGluayBvdXRwdXQgZmlsZSBiZWZvcmUgb3BlbmluZyBpdC4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZWQgJXMgYnkgJXAgaW4gRURJVF9XTV9TZXRUZXh0LgoKCSogZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBXU0FXYWl0Rm9yTXVsdGlwbGVFdmVudHMgKGFsaWFzIHRvIFdhaXRGb3JNdWx0aXBsZU9iamVjdHNFeCkuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBZGQgYSB3YXJuaW5nIHdoZW4gdGhlIG5vcm1hbCBsb2FkIGFkZHJlc3MgZm9yIGEgd2luMzIgcHJvZ3JhbSBpcyBub3QKCWF2YWlsYWJsZS4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3N0dWJzLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglPTEUgcGljdHVyZSBvYmplY3QgaW1wbGVtZW50YXRpb24uCgoJKiBtaXNjL2NvbW0uYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgYW4gaW5jb3JyZWN0IGZvcm1hdCBzdHJpbmcuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIGxvYWRvcmRlciBlbnRyeSBmb3IgdGhlIExpbnV4IGdsaWRlM3ggbGlicmFyeS4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkICJDb21tb25GaWxlc0RpciI9IkM6XFByb2dyYW0gRmlsZXNcQ29tbW9uIEZpbGVzIi4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglBZGRlZCBQZW50aXVtIFByby8yLzMvNCBjb25kaXRpb25hbCBtb3ZlIGluc3RydWN0aW9ucy4KCjIwMDAtMDctMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBtZW1vcnkvY29kZXBhZ2UuYzoKCVNldCBhbnNpL29lbS9tYWMgY29kZSBwYWdlcyBmcm9tIGN1cnJlbnQgbG9jYWxlLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglCZXR0ZXIgZXJyb3IgbWVzc2FnZSBmb3IgcmVhbGx5IGNsdWVsZXNzIG5ld2JpZXMuCgoJKiBkbGxzL21zYWNtMzIvbXNhY20zMl9tYWluLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglTdHViIGZvciB0aGUgQUNNX01FVFJJQ19NQVhfU0laRV9GT1JNQVQgY29tbWFuZCBvZiBhY21NZXRyaWNzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBOVUxMIGZsaXBjaGFpbiBhbmQganVzdCByZXR1cm4gdGhlIGN1cnJlbnQgc3VyZmFjZSBpZiBpdAoJaGFwcGVucy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBfdnNucHJpbnRmIGJ5IGNhbGxpbmcgd3ZzbnByaW50ZkEuCgoJKiBvYmplY3RzL2RpYi5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbiBDcmVhdGVESUJTZWN0aW9uIGZ1bmN0aW9uLCBpZiBoZGMgaXMgTlVMTCBpdCBub3cgdXNlcyB0aGUgZGVza3RvcCBEQwoJaW5zdGVhZCBvZiBmYWlsaW5nLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeGVkIFRPT0xCQVJfRHJhd1N0cmluZygpIHRvIG9mZnNldCBidXR0b24gdGV4dCBpZiBpbmZvUHRyLT5oaW1sRGVmCglpcyBub24temVyby4gIEJldHRlciBmaXggdGhhbiBteSBwcmV2aW91cyBwYXRjaC4KCjIwMDAtMDctMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6CglMYXp5IGluaXRpYWxpc2F0aW9uIG9mIHRocmVhZCBsb2NhbGUuCgoJKiBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwgZGxscy9kcGxheXgvZHBsYXl4X3F1ZXVlLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheSwgaW5jbHVkZS9kcGxvYmJ5Lmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBNYWtlIHJlZiBjb3VudGluZyBhIGxpdHRsZSBtb3JlIGVmZmljaWVudAoJLSBDb3JyZWN0IHN1c3BlbmRlZCBwcm9jZXNzIHJlc3VtcHRpb24KCS0gRG9uJ3QgdXNlIHN5cy9xdWV1ZS5oIGFueW1vcmUKCS0gUHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgZ2xvYmFsIHNlbWFwaG9yZSBhY3Jvc3MgcHJvY2Vzc2VzCgktIENyZWF0ZSBhIG1hcHBlZCBmaWxlIGZvciBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzCgktIENoYW5nZSBzb21lIHRyYWNlIG1lc3NhZ2VzCgktIEFsbG9jYXRlIGR5bmFtaWMgc2hhcmVkIGRhdGEgZnJvbSB0aGUgbWFwcGVkIGZpbGUKCS0gUmV3b3JrIHNldHRpbmcgYW5kIHJldHJpZXZpbmcgbG9iYnkgc2V0dGluZ3MgZnJvbSBzaGFyZWQgbWVtb3J5CgktIEFkZCBpbmZyYXN0cnVjdHVyZSBmb3Igc3luY3Jvbml6YXRpb24gYWZ0ZXIgYXBwIGxhdW5jaAoJLSBTbWFsbCBkb2N1bWVudGF0aW9uIHVwZGF0ZQoJLSBJbmNsdWRlIHNvbWUgc3R1ZmYgbWlzc2luZyBmcm9tIGhlYWRlcgoJLSBTdGFydCBvbiBkcCBhbmQgZHBsIG1lc3NhZ2UgaW5mcmFzdHJ1Y3R1cmUKCS0gVW5pY29kZSB2ZXJzaW9ucyBvZiBwbGF5ZXIvZ3JvdXAgY29tbWFuZHMgYWRkZWQKCS0gQ29tYmluZWQgQ29ubmVjdC9Db25uZWN0RXggYW5kIE9wZW4vU2VjdXJlT3BlbgoJLSBNb3JlIGltcGxlbWVudGF0aW9uCgoJKiBkbGxzL2tlcm5lbC9ubHMvKiwgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xvY2FsZV9yYy5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTW92ZWQgYWxsIE5MUyBkZXBlbmRlbnQgZGF0YSB0byB0aGUgS0VSTkVMIHJlc291cmNlcy4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTW92ZWQgc2V0dGluZyB0aGUgbG9jYWxlIHZhbHVlIHRvIHRoZSByaWdodCBwb3NpdGlvbi4KCgkqIG1pc2MvbHN0ci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIEZvcm1hdE1lc3NhZ2VbQXwxNl0gYWdhaW5zdCBzb21lIGJ1ZmZlciBvdmVyZmxvdyBjYXNlcy4KCgkqIGRlYnVnZ2VyL2luZm8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGV4dHJhbmVvdXMgdHJhY2UgbWVzc2FnZS4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVW5jb25kaXRpb25uYWxseSBwcmludCBtZXNzYWdlcyBvbiBETEwgbG9hZCBicmVha3BvaW50LgoKCSogZGVidWdnZXIvYnJlYWsuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgd2luZWRiZyB3YXRjaHBvaW50cy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVByZXZlbnQgU3lzQWxsb2NTdHJpbmcgYW5kIFN5c0FsbG9jU3RyaW5nMTYgdG8gcGVyZm9ybSBhbnkgcHJvY2Vzc2luZwoJb24gTlVMTCBzdHJpbmdzLgoKCSogdG9vbHMvZm50MmJkZi5jOgoJU3RhcyBTZXJnZWV2IDxzdGFzLm9yZWxAbWFpbGNpdHkuY29tPgoJTWFrZSBpdCBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIGVuY29kaW5nIG9mIGZvbnRzIGZyb20gdGhlIGNvbW1hbmQKCWxpbmUsIGV2ZW4gaWYgYXV0b2RldGVjdGVkLgoKCSogd2luZG93cy9zcHkuYywgd2luZG93cy90dHlkcnYvd25kLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBpbmNsdWRlL21kaS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5lLmluaToKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQ29udmVydCBXTkQudGV4dCBmaWVsZCB0byBVbmljb2RlLgoJQWRkIG5ldyBrZXkgdG8gd2luZS5pbmkgaW4gdGhlIHNlY3Rpb24gW3gxMWRydl0gLSBUZXh0Q1AsIHdoaWNoIG1lYW5zCgljb2RlIHBhZ2UgdXNlZCBmb3IgdGV4dHMgcGFzc2VkIHRvIFguCglBY2NvcmRpbmdseSBmaXggaGFuZGxlcnMgb2YgV01fU0VUVEVYVC9XTV9HRVRURVhULgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBCYWNrZWQgb3V0IHByZXZpb3VzIHBhdGNoLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy91c2VyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWIgZm9yIFJlZ2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uQS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRmFrZXMgYSBuZWdvdGlhdGlvbiBvZiB0aGUgd2luc29jayB2ZXJzaW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gYmV0dGVyIGxvYWRpbmcgb2YgKi50bGIgZmlsZXMKCS0gc2VwZXJhdGVkIGNvZGUgZm9yIGxvYWRpbmcgdGxiIHJlc291cmNlIGludG8gbWVtb3J5IGZyb20gY29kZSBmb3IKCSAgcGFyc2luZyB0aGUgdGxiIHJlc291cmNlLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJSW1wbGVtZW50ZWQgT2xlQ3JlYXRlLgoKMjAwMC0wNy0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvY2xhc3MuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglHZXRDbGFzc0luZm8gc2hvdWxkIHJldHVybiBnbG9iYWwgY2xhc3NlcyBldmVuIGlmIHRoZSBoSW5zdGFuY2UKCXBhcmFtZXRlciBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIHBhc3NlZCB0byB0aGUgUmVnaXN0ZXJDbGFzcwoJZnVuY3Rpb24uCgoJKiBtaXNjL2NvbW0uYzogU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglGaXhlcyB0aGUgQnVpbGRDb21tRENCQSBmdW5jdGlvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBtaXNjL3BvcnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIGxpYnV0aWwuaC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglNYWtlIHRoZSBmb2N1cyBmb2xsb3cgdGhlIGxhc3Qgc2VsZWN0ZWQgaXRlbSBmb3IgbXVsdGlzZWxlY3QgbGlzdGJveGVzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgTEhhc2hWYWxPZk5hbWVTeXNBLgoJRG9uJ3QgY3Jhc2ggaWYgd2UgZW5jb3VudGVyIGEgQlNUUiB3aXRoIGxlbmd0aCA8PSAwLgoJRml4IHR5cG9zIGluIElUeXBlTGliOjpHZXREb2N1bWVudGF0aW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCVdpdGggc29tZSBhcHBzIGEgZmF1bHQgd2FzIHBvc3NpYmxlIGluIEV4dHJhY3RBc3NvY2lhdGVkSWNvbi4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglHZXRJY29uSW5mbyBkaWQgbm8gY29ycmVjdGx5IGlkZW50aWZ5IGljb25zIGZyb20gY3Vyc29ycy4KCgkqIHdpbmRvd3MvbXNnYm94LmM6CglIYWl0aGVtIEhtaWRhIDxoYWl0aGVtQG1hY2FkYW1pYW4uY29tPgoJVW5kZXIgV2luZG93cyA5NS85OC9OVCwgbWVzc2FnZSBib3hlcyBkbyBub3QgaGF2ZSBhIGRlZmF1bHQgaWNvbi4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUZpeGVkIGxzdHJjcHluQXRvVyB1c2FnZSAocmVwb3J0ZWQgYnkgU3RhcyBTZXJnZWV2KS4KCVNtYWxsIGNsZWFudXBzLgoKCSogZGxscy93c29jazMyLy5jdnNpZ25vcmUsIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLCBkbGxzL2RwbGF5Ly5jdnNpZ25vcmUsIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXkvZHBsYXkuc3BlYywgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5LnNwZWMsIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC93b3czMi5zcGVjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZm9sZGVyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvc2hmb2xkZXIvLmN2c2lnbm9yZSwgZGxscy9zaGZvbGRlci9NYWtlZmlsZS5pbiwgZGxscy9zaGZvbGRlci9zaGZvbGRlci5zcGVjLCBkbGxzL3NobHdhcGkvLmN2c2lnbm9yZSwgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGRsbHMvd2luc29jay8uY3ZzaWdub3JlLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL3dpbnNvY2svd3NvY2szMi5zcGVjLCBkbGxzL3dvdzMyLy5jdnNpZ25vcmUsIGRsbHMvd293MzIvTWFrZWZpbGUuaW4sIGRsbHMvd293MzIvd293MzIuc3BlYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglDcmVhdGVkIHNlcGFyYXRlIGxpYnJhcmllcyBmb3IgZHBsYXksIHNoZm9sZGVyLCBzaGx3YXBpLCB3b3czMiBhbmQKCXdzb2NrMzIgc28gdGhhdCB3ZSBoYXZlIGF0IG1vc3Qgb25lIFdpbjMyIGRsbCBpbiBlYWNoIC5zbyBsaWJyYXJ5LgoKMjAwMC0wNy0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZWQgWDExRFJWX0RJQl9HZXRESUJpdHMgdG8gcHJvcGVybHkgaGFuZGxlIGJvdHRvbS11cCBESUJzCgltYW5pcHVsYXRpb24uCglDb3JyZWN0ZWQgWEdldFN1YkltYWdlIGFyZ3VtZW50cyBvcmRlci4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTWF0dGhldyBMYWtlIDxNTGFrZUBzdW5iZWx0LXBsYi5jb20+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBTYWZlQXJyYXlHZXRWYXJUeXBlLgoJQWRkZWQgYSBWVF9SRUNPUkQgdmFyaWFudCB0eXBlIGRlZmluaXRpb24uCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBtaXNjL2NvbW0uYzoKCVN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJU3RhcnRlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZnVuY3Rpb25zIEdldERlZmF1bHRDb21tQ29uZmlnQS9XLgoKCSogZGxscy9kZHJhdy9jb252ZXJ0LmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQ29ycmVjdGVkIDI0LT4zMiBjb252ZXJzaW9uLiBTdGlsbCBvbmx5IGNvcnJlY3QgZm9yIGxpdHRsZSBlbmRpYW4uCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIGZvciBXU19ESVNBQkxFRCBwYXJlbnQgaW4gV2luZG93RnJvbVBvaW50IGZvciB1bi1tYW5hZ2VkIHdpbmRvd3MuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVJlbmFtZSBNT0RVTEVfSW5pdERsbCB0byBNT0RVTEVfSW5pdERMTCBmb3IgdGhlIHNha2Ugb2YgY29uc2lzdGVuY3kuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4ZWQgVE9PTEJBUl9EcmF3U3RyaW5nKCkgdG8gb2Zmc2V0IGJ1dHRvbiB0ZXh0IGlmIHRoZSBoaW1sIHBhcmFtZXRlcgoJaXMgbm9uLXplcm8gb3IgdGhlIGRlZmF1bHQgaGltbCwgaGltbERlZiwgaXMgbm9uLXplcm8uICBGaXhlcyBhIGJ1ZyBpbgoJV2luWmlwIDguMCB3aGVyZSB0ZXh0IGlzIG5vdCBzaGlmdGVkIGRvd24gYnkgdGhlIGhlaWdodCBvZiB0aGUgYnV0dG9uCglpbWFnZS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFNsYXZhIE1vbmljaCA8U2xhdmFfTW9uaWNoQGNudC5jb20+CglDaGVjayB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgRElBTE9HX0dldENoYXJTaXplLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsIGluY2x1ZGUvZGVidWdkZWZzLmg6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzZXR1cGFwaSBzaGFyZWQgbGlicmFyeSBhbmQgU2V0dXBJdGVyYXRlQ2FiaW5ldCBzdHViLgoKCSogZGxscy9tc3ZpZGVvLy5jdnNpZ25vcmUsIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW8uc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBpbmNsdWRlL3Zmdy5oLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvbXN2aWRlby5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZmdzMyLmFwaSwgd2luZG93cy9kcml2ZXIuYzoKCUJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJSW1wbGVtZW50ZWQgYSBsYXJnZSBudW1iZXIgb2YgdGhlIG1zdmlkZW8gZGxsIHJvdXRpbmVzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFsbG93IHRoZSBzaXplIG9mIGJpdG1hcHMgdG8gYmUgY2hhbmdlZCBhZnRlciB0b29sYmFyIGJ1dHRvbnMgaGF2ZQoJYmVlbiBhZGRlZC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglTbGF2YSBNb25pY2ggPFNsYXZhX01vbmljaEBjbnQuY29tPgoJT24gV2luZG93cyBwcm9wZXJ0eSBzaGVldCBoYXMgRFdMX1VTRVIgZHdvcmQgcG9pbnRpbmcgdG8gYSBzdHJ1Y3R1cmUKCXRoYXQgc3RhcnRzIHdpdGggSFdORCBhbmQgUFJPUFNIRUVUSEVBREVSIGZpZWxkcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglTbGF2YSBNb25pY2ggPFNsYXZhX01vbmljaEBjbnQuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgR2V0L1NldFRocmVhZFByaW9yaXR5Qm9vc3QuCgoJKiBkb2N1bWVudGF0aW9uL3BzZHJpdmVyOgoJU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglBZGRlZCBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byBzZXR1cCB3aW5lJ3MgQnVpbGRpbiBQb3N0c2NyaXB0IERyaXZlcgoJd29ya2luZyB3aXRoIGdob3N0c2NyaXB0IChhZm1maWxlcywgcHBkZmlsZSkuCgoJKiBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL3R5cGVzLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBFeHBsaWNpdCBpbml0IG9mIHJ0bi5jb29raWUgaW4gREVCVUdfRXZhbEV4cHIgdG8gYmFkIHZhbHVlIHRvCgkgIGV4cG9zZSBmdXJ0aGVyIGJhZCBjb2RlCgktIFByaW50IG9mIHBvaW50ZXIgdXNlZCBhcyBhcnJheSBub3cgd29ya3MKCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCU9ubHkgdXNlIHRoZSBjb2x1bW4gaGVhZGVycyB0byBjYWxjdWxhdGUgdGhlIHdpZHRoIG9mIGEKCUxEU19SRVBPUlQtdHlwZSBsaXN0Ym94IGlmIGl0IGFjdHVhbGx5IGhhcyBjb2x1bW4gaGVhZGVycy4KCShpZS4gTFZTX05PQ09MVU1OSEVBREVSIGJpdCBpcyBub3Qgc2V0LikKCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFNsYXZhIE1vbmljaCA8U2xhdmFfTW9uaWNoQGNudC5jb20+CglCZWdpbkRlZmVyV2luZG93UG9zIHNob3VsZCBhbGxvdyB6ZXJvIGNvdW50LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBzZW1pLXN0dWIuCgoJKiBkbGxzL3dpbm1tL21jaS5jOgoJQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CglIYW5kbGUgbWNpU2VuZFN0cmluZygib3BlbiA8bWNpdHlwZT4iLC4uLikKCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3BwbC5sLCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW46CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJLSBCdWdmaXg6IE1hY3JvIGV4cGFuc2lvbiBvZiBzdHJpbmdzIHdvdWxkIGFzc2VydCBhbiBpbnRlcm5hbCBlcnJvcgoJICBvciBhIHNlZ2ZhdWx0IGR1ZSB0byBhIGxhY2tpbmcgJ1wwJyBpbiB0aGUgZXhwYW5zaW9uLgoJLSBCdWdmaXg6IFByZXZlbnQgYnVmZmVyIG92ZXJmbG93IGluIHJlYWxsb2NhdGlvbiBvZiBtYWNybyBleHBhbnNpb24KCSAgYnVmZmVycy4KCS0gQnVnZml4OiBXcmMncyB2ZXJzaW9uIGluZm9ybWF0aW9uIHdhcyBub3QgcGFzc2VkIGFzIG51bWVyaWNhbCB0byB0aGUKCSAgcHJlcHJvY2Vzc29yIGR1ZSB0byBhbiBlcnJvciBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgbWFjcm8uCgktIFJlbGF4ZWQgdGhlIG5ld2xpbmUgY29uc3RyYWludCBpbiBnbG9iYWwgTEFOR1VBR0Ugc3RhdGVtZW50cywgd2hpY2gKCSAgd2FzIGludHJvZHVjZWQgaW4gdmVyc2lvbiAxLjEuMywgc28gdGhhdCBzb21lIGZhbmN5IHByZXByb2Nlc3NvcgoJICBjb25zdHJ1Y3RzIGNhbiB3b3JrLgoJLSBSZW1vdmVkIHRoZSBnY2Mtc3R5bGUgI2xpbmUgaGFuZGxpbmcgZnJvbSB0aGUgcmVzb3VyY2UtcGFyc2VyIHRvIHRoZQoJICByZXNvdXJjZS1zY2FubmVyIHNvIHRoYXQgaXQgaXMgcG9zc2libGUgdG8gaW5jbHVkZSBmaWxlcyBhdCBhbnkgc3RhZ2UKCSAgb2YgdGhlIHNvdXJjZSwgaW5kZXBlbmRlbnQgb2YgdGhlIHBhcnNlci1zdGF0ZS4KCS0gQnVnZml4OiBTdHJpbmd0YWJsZXMgd2VyZSBub3QgY29ycmVjdGx5IHNlYXJjaGVkIGZvciBkdXBsaWNhdGVzCgkgIGJlY2F1c2UgdGhlIGxhbmd1YWdlIGNvbXBhcmlzb24gZGlzcmVnYXJkZWQgdGhlIHN1Ymxhbmd1YWdlLgoJLSBFbGltaW5hdGVkIGEgcmVwZXRpdGl2ZSB3YXJuaW5nIHdoZW4gd3JpdGluZyBzdHJpbmd0YWJsZXMgd2l0aCB6ZXJvCgkgIGxlbmd0aCBzdHJpbmcgZW50cmllcy4gVGhlc2UgYXJlIHBlcmZlY3RseSB2YWxpZCAoYnV0IG1ha2Ugbm8gc2Vuc2U6LSkuCgkgIFdhcm5pbmdzIGFyZSBub3cgb25seSBnZW5lcmF0ZWQgZHVyaW5nIHBhcnNlIGluIHBlZGFudGljIG1vZGUuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggU3lzU3RyaW5nQnl0ZUxlbiB0byByZWFsbHkgcmV0dXJuIHRoZSBsZW5ndGggaW4gYnl0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglTbGF2YSBNb25pY2ggPFNsYXZhX01vbmljaEBjbnQuY29tPgoJQ2hhbmdlZCB0aGUgc2l6ZSBvZiBwcm9wZXJ0eSBzaGVldCB0ZW1wbGF0ZSB0byBiZSB0aGUgc2FtZSBhcyB0aGUKCW9yaWdpbmFsIG9uZSAod2FzIDI5MngxNTksIG5vdyAyMjB4MTQwKS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZW9iai5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IElEYXRhQWR2aXNlSG9sZGVyLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggdHlwbyBpbiBJVHlwZUxpYjo6SXNOYW1lLgoKCSogZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDcmVhdGVTdHJlYW1PbkhHbG9iYWwgc2hvdWxkIGFsbG9jIGEgc2hhcmVkIG1lbW9yeSBibG9jayBpZiBzdXBwbGllZAoJaGFuZGxlIGlzIDAuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvIG5vdCBjcmFzaCBpZiB0aGVyZSB3YXMgbm8gZmlsZXMgc2VsZWN0ZWQgYW5kIE9LIGJ1dHRvbiB3YXMgcHJlc3NlZC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeCBhIGNvdXBsZSBvZiBwcm9ibGVtcyB3aXRoIHVuZGVycnVucyBhbmQgc3RvcHBpbmcvcmVzdGFydGluZy4KCgkqIG1pc2MvbWFpbi5jOgoJSm9lcmcgTWF5ZXIgPGptYXllckB0ZWxlc3VuMi50ZWxlbWF0aW9uLmRlPgoJRml4ZWQgdGhlIGRlYnVnbXNnIGhlbHAuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaDoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CglNYXAgZWFjaCBjaGFubmVsIG9uIGV2ZXJ5IGhvc3QgdG8gYW4gQVNQSSBjb250cm9sbGVyIG51bWJlci4KCVN0b3JlIG1hcCBpbiBIS0VZX0RZTl9EQVRBLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCURTQV9JbnNlcnRJdGVtIHJldHVybnMgbkluZGV4LCBub3Qgbkl0ZW1Db3VudC4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4ZWQgYmFja2dyb3VuZCByZWRyYXdpbmcgd2hlbiBjb250cm9sIGlzIGNvdmVyZWQuICBGaXhlZCBhIHJlYWxseQoJZHVtYiBtaXN0YWtlIEkgbWFkZSB3aXRoIGJvcmRlciBkcmF3aW5nIG1hbnkgcGF0Y2hlcyBhZ28uICBGaXhlZAoJb2Zmc2V0IGJ5IDEgYWxpZ25tZW50IGlzc3Vlcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlbW92ZWQgYW5vdGhlciBiYWQgYXNzZXJ0IGFuZCB0d28gbm8gbG9uZ2VyIG5lZWRlZCBvbmVzLgoKMjAwMC0wNi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2V4Y2VwdC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJhZCBleGNlcHRpb24gaGFuZGxlciBjaGFpbiB0ZXJtaW5hdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCB3aW5kb3dzL3dpbi5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJTW92ZWQgemVyby1zaXplZCB3aW5kb3cgaGFjayB0byB4MTFkcnYuCgoJKiBkbGxzL250ZGxsL250LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldHVybiAibm8gZGVidWdnZXIgYXR0YWNoZWQiIGluIE50UXVlcnlJbmZvcm1hdGlvblByb2Nlc3MgdG8gc2F0aXNmeQoJc29tZSBjb3B5IHByb3RlY3Rpb24gbWVjaGFuaXNtcy4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCB3aGVuIGxwVGVtcGxhdGVOYW1lIGlzIGdvdHRlbiBmcm9tIE1BS0VJTlRSRVNPVVJDRS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB0d28gYXNzZXJ0cyBpbiBCbHQoKS4KCgkqIGRsbHMvZGRyYXcvaGVscGVyLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVByb3Blcmx5IGNhc3QgYXJndW1lbnRzIHRvIHByaW50ZiB0byBtYXRjaCB0aGUgaW50ZW5kZWQgb3V0cHV0LgoKCSogZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU2V2ZXJhbCBmaXhlcyBzcG90dGVkIGJ5IENvcmVsIChKZWFuLUNsYXVkZSBCYXRpc3RhICYgU2VhbiBMYW5nbGV5KS4KCVNlZWtpbmcgZnJvbSBTRUVLX0VORCB3YXMgd3JvbmcuCglTZWVraW5nIG9uIGVtcHR5IGJ1ZmZlciB3YXMgd3JvbmcuCglTb21lIGluc3RhbGxlZCBpb1Byb2NzIGhhZCB1bmluaXRpYWxpemVkIGZpZWxkcy4KCUEgZmV3IG1vcmUgYml0cyBmb3IgcmVuYW1lIGZ1bmN0aW9ucy4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvd2luZWRiZy5jLCBkb2N1bWVudGF0aW9uL3dpbmVkYmc6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIEJyZWFrT25EbGxMb2FkIGludGVybmFsIHZhciwgY2xlYW5lZCB1cCByZWdpc3RlciB2YWxpZGF0aW9uIG9uCglleGNlcHRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxNaWtlX01jQ29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQWRkIHdvcmthcm91bmRzIGZvciBudWxsIHN0cmluZ3MgaW4gVE9PTEJBUl9JbnNlcnRCdXR0b25BIGFuZCBjYWxsaW5nCglUT09MQkFSX1NldEJ1dHRvblNpemUgYWZ0ZXIgYnV0dG9uIGFkZGVkIHRvIHRoZSB0b29sYmFyIChsYXR0ZXIgZm9yCglXSU5aSVAzMi5FWEUpCgoJKiBjb250cm9scy9jb21iby5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldCB0aGUgbWluaW11bSBkcm9wcGVkIGhlaWdodCB0byB0aGUgY29tYm8gbGlzdCBoZWlnaHQgaWYgYW55IGluCglDQkRyb3BEb3duLgoKCSogZmlsZXMvZG9zX2ZzLmM6IERhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJSWYgd2hpdGVzcGFjZSBvciBkb3RzIGFyZSBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIGFueSBjb21wb25lbnQgaW4gYQoJcGF0aCB0aGVuIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoKMjAwMC0wNi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9wcm9jZXNzLmg6CglNYWtlIHN1cmUgdGhlIGNtZGxpbmUgcGFzc2VkIHRvIENyZWF0ZVByb2Nlc3NBIGlzIHdyaXRlYWJsZSAodGhhbmtzIHRvCglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+KS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmMsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2xlYW5lZCB1cCBsb2FkaW5nL2luaXQgY29kZSBpbiBPU1MuCglDbGVhbmVkIHVwIGdldERldkNhcHMgaW4gbWlkaSBwYXJ0LgoJSW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHdhdmVJbiByZWNvcmRpbmcgdXNpbmcgYSB0aHJlYWQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCB3aW4zMi9jb25zb2xlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUEgZmV3IG1pc3NpbmcgY29uc29sZSBzdHVicy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhbmltYXRpb24gbG9hZGluZyBmb3IgUkxFIGVuY29kaW5nLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gcmVtb3ZlZCBoYWNrIHRvIGZpbmQgdGhlIHJpZ2h0IHJlc291cmNlCgktIHVwZGF0ZWQgdG8gdXNlIHRoZSBJQ09NIG1hY3JvcwoJLSBjbGVhbmVkIHVwIHVzZSB0eXBlbGliIGFuZCB0eXBlbGliMiAod2FzIG1peGVkIHVwKQoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gZml4ZWQgcmVwb3J0ZWQgYnVncwoJLSBmaXhlZCBkZWZhdWx0IGV4dGVuc2lvbnMKCS0gaW1wbGVtZW50ZWQgImJyb3dzZSB0byBkZXNrdG9wIiBidXR0b24KCgkqIG1lbW9yeS9lbnZpcm9uLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgaW5jbHVkZS93aW5iYXNlLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJR2V0Q29tbWFuZExpbmUgc2hvdWxkIHJldHVybiBub24tY29uc3Qgc3RyaW5ncy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglDYWxsUHJvY0V4MzJXIHNob3VsZCBiZSBuYW1lZCBfQ2FsbFByb2NFeDMyVy4KCgkqIGZpbGVzL2NoYW5nZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBzb21lIHN0dWZmIHNheWluZyB0aGF0IHRoaXMgaXMgTk9UIHN1cHBvcnRlZC4KCgkqIHJlbGF5MzIvc25vb3AuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQXZvaWQgY2FsbGluZyB0aGUgZXhjZXB0aW9uIGhhbmRsZXIgaW4gc29tZSBjYXNlcy4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gbWFueSBuZXcgUGF0aCogc3R1YnMKCS0gbWFueSBidWdmaXhlcwoJLSBjbGFzcyBmdW5jdGlvbnMgZXhwYW5kaW5nIGVudmlyb25tZW50cyB2YXJpYWJsZXMgbm93CgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIHRoZSBEaXJlY3RTb3VuZCBIQUwgaW4gd2lubW0ncyB3aW5lb3NzIChPcGVuIFNvdW5kIFN5c3RlbSkKCWRyaXZlciwgYW5kIHdpbm1tJ3MgaW50ZXJmYWNlIGZvciBEaXJlY3RTb3VuZCB0byBhY2Nlc3MgaXQuIEl0CglyZXF1aXJlcyB0aGUgYWJpbGl0eSB0byBtbWFwIC9kZXYvZHNwLCB0byB0cmlnZ2VyIHBsYXliYWNrLCBhbmQKCXNhbXBsZS1hY2N1cmF0ZSBwb3NpdGlvbiByZWFkb3V0cy4gKElmIHRoZSBzb3VuZGNhcmQncyBkZXZpY2UgZHJpdmVyCglkb2VzIG5vdCByZXBvcnQgdGhlc2UgY2FwYWJpbGl0aWVzLCB3aW5lb3NzIHdpbGwgcmVwb3J0IHRoZSBIQUwgYXMKCXVuYXZhaWxhYmxlIGFuZCBmb3JjZSBEaXJlY3RTb3VuZCB0byB1c2UgaXRzIEhFTCBpbnN0ZWFkLikKCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgdGhlIERpcmVjdFNvdW5kIEhBTCBtb2RlIGZvciBETUEgcHJpbWFyeSBidWZmZXJzLCB3aXRoIGEKCTEwbXMgbGF0ZW5jeSAobm90IG5vdGljZWFibGUpLCBhbmQgYWJvdXQgMzAwbXMgb2YgcHJlYnVmZmVyaW5nLiBGaXhlZAoJYSBmZXcgYnVncy4gQWRkZWQgYSBXaW5lLW9ubHkgV0lOTU0gZmxhZyBmb3Igd2F2ZU91dE9wZW4gZm9yCglEaXJlY3RTb3VuZCB0byB1c2UgKHNvIGRyaXZlcnMgbGlrZSB3aW5lb3NzIGhhdmUgc29tZSB3YXkgb2Yga25vd2luZwoJd2hhdCB0byBwcmVwYXJlIGl0c2VsZiBmb3IpLgoKCSogZGxscy91c2VyL3VzZXIuc3BlYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJSW1wbGVtZW50ZWQvc3R1YmJlZCBJY29uU2l6ZSgpIGFuZCBDb250cm9sUGFuZWxJbmZvKCkgbmVlZGVkIGZvciBXaW4KCTIuMCBjb250cm9sLmV4ZSBhbmQgcGFpbnQuZXhlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgSURJX1dJTkxPR08uCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCURvbid0IGJsb2NrIGVuZGxlc3NseSBhZnRlciBsYXN0IGRlYnVnZ2VkIHByb2Nlc3MgaGFzIGV4aXRlZC4KCgkqIG1lbW9yeS9zdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCAoYmFjaykgY29ycmVjdCBiZWhhdmlvciBmb3IgTlVMTCBwdHJzIGluIENoYXJUb09lbSBmdW5jcy4KCgkqIG1lbW9yeS9nbG9iYWwuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIE9PTSBjb25kaXRpb25zIGluIEdsb2JhbEFsbG9jLgoKCSogZGxscy9udGRsbC9taXNjLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZGVkIG1pc3NpbmcgI2luY2x1ZGUgPG1hdGguaD4uCgoJKiBpbmNsdWRlL3dpbnJlc3JjLmg6IFJlbW92ZWQgTUlNRSBnYXJiYWdlLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlIHhsaWIgZGRzdXJmYWNlcyB3aXRoIGNvcnJlY3QgcmVmZXJlbmNlIGNvdW50cy4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9iaWRpMTYuYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvYmlkaTE2LmMsIGRsbHMvdXNlci9uZXR3b3JrLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvYmlkaTE2LmMsIG1pc2MvbmV0d29yay5jOgoJU3BsaXQgYmlkaTE2LmMgYW5kIG5ldHdvcmsuYyBvdXQgb2YgbWlzYy8gaW50byB0aGVpciByZXNwZWN0aXZlIGRsbHMuCgoyMDAwLTA2LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jLCB0b29scy93aW5lYnVpbGQvLmN2c2lnbm9yZSwgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvUkVBRE1FLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluOgoJU3BsaXQgdGhlIGJ1aWxkIHByb2dyYW0gaW4gc2V2ZXJhbCBmaWxlcy4KCVJlbmFtZWQgaXQgJ3dpbmVidWlsZCcgdG8gYXZvaWQgcG9zc2libGUgY29uZmxpY3RzLgoJQ2xlYW5lZCB1cCBjb21tYW5kLWxpbmUgcGFyc2luZy4KCU1ha2UgaXQgdW5kZXJzdGFuZCAtZlBJQyBpbnN0ZWFkIG9mIC1waWMuCglNZXJnZWQgY2FsbDE2LnMgYW5kIGNhbGwzMi5zIGdlbmVyYXRlZCBmaWxlcy4KCgkqIGRsbHMvZ2RpL2dkaS5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwvc3lzdGVtLnNwZWMsIGRsbHMvc291bmQvc291bmQuc3BlYywgZGxscy91c2VyL3VzZXIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgbW9yZSBvcmRpbmFscyB0byBLRVJORUwsIEdESSwgVVNFUiBhbmQgc3lzdGVtIGRyaXZlcnMKCShXaW5kb3dzIDEuMSwgMi4wKS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglfY29tbW9uX2RlcHRoX3RvX3BpeGVsZm9ybWF0KCkgcmV0dXJucyAtMSBhbmQgbm90IHplcm8sIGlmIGEgbW9kZSBpcwoJc3VwcG9ydGVkLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUF2b2lkIGdyYXR1aXRvdXNseSBjaGFuZ2luZyB0aGUgWk9SREVSLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBjb3JyZWN0IGJwcCBmb3IgdGhlIFggc2lkZSBvZiB0aGUgc3VyZmFjZSBYSW1hZ2VzLgoJQ2xlYW5lZCB1cCBYbGliX1N1cmZhY2VfUmVsZWFzZSBzbyBpdCBpcyBhIGJpdCBtb3JlIHJlYWRhYmxlLgoJdXNlIFZpcnR1YWxBbGxvYyBmb3IgY29udmVyc2lvbi1wcm9ncmFtc2lkZSBidWZmZXIgdG8gc2ltcGxpZnkKCWhhbmRsaW5nLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUdsb2JhbEZyZWUxNiByZXR1cm5zIE5VTEwgb24gc3VjY2VzcywgYnV0IERlc3Ryb3lBY2NlbGVyYXRvclRhYmxlCglzaG91bGQgcmV0dXJuIFRSVUUgb24gc3VjY2Vzcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEdW1wIEZvdXJDQyBjb3JyZWN0bHksIHByaW50IGNvbnZlcnNpb24gbWVzc2FnZXMsIGFkZCByZWZlcmVuY2UgdG8KCWRkcmF3IGluIEREU3VyZmFjZTo6R2V0RERJbnRlcmZhY2UuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXN0cmljdCBuVGltZW91dCB0byAwLTMyNzY3LCBzaW5jZSBpdCBpcyBhIDE2Yml0IHZhbHVlIGluIFguCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUV4Y2VwdGlvbiBoYW5kbGluZyBmb3IgU0lHRlBFIG11c3QgYWx3YXlzIGNsZWFyIHRoZSBGUFUgaW50ZXJydXB0CglzdGF0dXMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY3J0ZGxsLy5jdnNpZ25vcmUsIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zdHJpbmcuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBpbmNsdWRlL2NydGRsbC5oLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCU1vdmVkIHNoYXJlZCBjcnRkbGwvbnRkbGwgZnVuY3Rpb25zIGludG8gbnRkbGwuCglNYWRlIGNydGRsbCBhIHNlcGFyYXRlIGRsbC4KCgkqIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIG1pc2MvbHN0ci5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJQ2xlYW5lZCB1cCBhIGZldyBpbnRlci1kbGwgZGVwZW5kZW5jaWVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlY2xpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb3BlbmdsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luaW5ldC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2ZnczMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGVzIGZpeGVzLgoJLSBNaW5vciBidWcgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGluY2x1ZGUvZHNkcml2ZXIuaCwgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZXN0cnVjdHVyZSBEaXJlY3RTb3VuZC4gUmVtb3ZlIGRzb3VuZCB0aHJlYWQsIHVzZSBNTSB0aW1lcnMKCWluc3RlYWQuIEltcGxlbWVudGVkIHRoZSBEaXJlY3RTb3VuZCBIRUwsIHdpdGggdGhlIGFiaWxpdHkgdG8KCXByZWJ1ZmZlciAzMDBtcyBvZiBzb3VuZCwgd2hpbGUgbWFpbnRhaW5pbmcgcGxheSBsYXRlbmN5IG9mIDQwbXMsIGFuZAoJdGhlIGV4YWN0IHBsYXlwb3NpdGlvbiAoU3RhcmNyYWZ0IGNpbmVtYXRpY3MgYXJlIGxpcC1zeW5jaGVkKS4gIFNvbWUKCWluaXRpYWwgSEFMIHN1cHBvcnQuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVwbGFjZWQgdGhlIEJVSUxUSU4zMl9kbG9wZW4oKSBFUlIoKSBieSBhIFdBUk4oKS4KCgkqIGluY2x1ZGUvd2lucmVzcmMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBpbmNsdWRlL3dpbnJlc3JjLmggZm9yIHBvcnRpbmcgd2l0aCB3aW5lbGliLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1lcmdlZCBEZXZpY2VDYXBhYmlsaXRpZXMgYW5kIERldmljZUNhcGFiaWxpdGllc0EuCgoJKiBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGluY2x1ZGUvdmZ3Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1lcmdlZCBNQ0lXbmRDcmVhdGUgYW5kIE1DSVduZENyZWF0ZUEuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNMU0lERnJvbVN0cmluZyBhcHBhcmVudGx5IGFsc28gYWNjZXB0cyBQcm9nSURzIGFzIGFuIGlucHV0IHN0cmluZy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIFNDX0lDT04vU0NfWk9PTSAob2Jzb2xldGUgbWFjcm9zKS4KCgkqIGluY2x1ZGUvd2luaW5ldC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBwcm90b3R5cGVzIGZvciBuZXcgSW50ZXJuZXRDaGVja0Nvbm5lY3Rpb24qLgoKMjAwMC0wNi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCUNsZWFuZWQgdXAgYSBmZXcgaW50ZXItZGxsIGRlcGVuZGVuY2llcy4KCgkqIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluOgoJQWxleGFuZGVyIFYuIEx1a3lhbm92IDxsYXZAbG9uZy55YXIucnU+CglGaXhlZCBwcm9ibGVtcyB3aXRoIGNvbXBpbGF0aW9uL2luc3RhbGwgb3V0IG9mIHNvdXJjZSB0cmVlLgoKCSogaW5jbHVkZS93aW5lcnJvci5oLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJT2xlQ29udmVydE9MRVNUUkVBTVRvSVN0b3JhZ2UgZmFpbHMgKHJldHVybnMgUkVHREJfRV9DTEFTU05PVFJFRykgd2hlbgoJdGhlIENMU0lEIG9mIHRoZSBPTEUgb2JqZWN0IGlzIG5vdCBmb3VuZCBpbiB0aGUgcmVnaXN0cnkuIEZpeGVkLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSBXcml0ZVByaXZhdGVQcm9maWxlU2VjdGlvbkEgY2FyZSBmb3IgIiIgYW5kIE5VTEwgYXMgdGhlCglzdHJpbmcgYXJndW1lbnQuIE5ldyBmdW5jdGlvbiBQUk9GSUxFX0RlbGV0ZUFsbEtleXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBmb3JtYXQgc3RyaW5ncy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ubGV4LmwsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeCBhIGNyYXNoIGluIHdpbmhlbHAgY2F1c2VkIGJ5IGhtZW1jcHkxNiB3aXRob3V0IHByb3RvdHlwZS4KCUZpeCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZGxscy8qL01ha2VmaWxlLmluOgoJRm9yIGRsbHMsIGRlcml2ZSBTUEVDX1NSQ1MgZnJvbSBNT0RVTEUgYW5kIEFMVE5BTUVTLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIFdIRFJfRE9ORSByYWNlIGNvbmRpdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgU3RyQ2F0QnVmZi4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgdHlwZWRlZiBvZiBEUk9QRklMRVMuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgUmVzdWx0RnJvbVNjb2RlL0dldFNjb2RlIChvYnNvbGV0ZSBtYWNyb3MpLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJTW92ZVRvRXg6IHJldHVybiBUUlVFIGV2ZW4gaWYgdGhlcmUgaXMgbm8gZHJpdmVyIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUHJvdGVjdCBhZ2FpbnN0IHByb2dyYW1zIGNyZWF0aW5nIHBhcnRzIHdpdGggbmVnYXRpdmUgd2lkdGguCgoyMDAwLTA2LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3Jlc291cmNlLmMsIG1zZG9zL2ludDIxLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVVzZSBHZXRTeXN0ZW1EZWZhdWx0TGFuZ0lEKCkgaW5zdGVhZCBvZiBXSU5FX0xhbmd1YWdlSWQuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVkYmcsIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIGNsZWFuZWQtdXAgYnJlYWsgaGFuZGxpbmcKCS0gYmV0dGVyIGludGVncmF0aW9uIG9mIGRlYnVnZ2VyIGlubmVyIGxvb3BzIChwYXJzZXIgJiBldmVudHMpCgktIGFkZGVkIGF0dGFjaCBjb21tYW5kCgktIGltcHJvdmVkIHBhcnNlciBzbyB0aGF0IGl0IGNhbiBiZSBlbnRlcmVkIHdpdGhvdXQgYW55IHByb2Nlc3MgbG9hZGVkCgktIGFkZGVkIEJyZWFrT25GaXJzdENoYW5jZSBpbnRlcm5hbCB2YXJpYWJsZQoJLSBkaXNhYmxlZCBORSBtb2R1bGUgc3ltYm9sIG1vZHVsZSAod2hpY2ggaXMgYnJva2VuIHdpdGggQVNTKQoJLSBtaXNjIHBvcnRhYmlsaXR5IGNsZWFudXBzCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIEZpeGVkIGEgbWVtb3J5IGNvcnJ1cHRpb24gaW4gc2FmZSBhcnJheXMgd2hlbiB1c2luZyBTYWZlQXJyYXlDb3B5KCkKCSAgZnVuY3Rpb24gd2l0aCBhIFNhZmVBcnJheSBjcmVhdGVkIHdpdGggRkFERl9GSVhFRFNJWkUuCgktIEFkZGVkIG1vcmUgRkFERiBmbGFncyBpbiB0aGUgLmggZmlsZS4KCS0gRkFERiBmbGFncyB3ZXJlIGRlZmluZWQgdHdpY2UsIGNvcnJlY3RlZCB0aGUgc2l0dWF0aW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG8gbm90IGFzc3VtZSB0aGF0IGRvdWJsZSBieXRlIGZvbnQgPT0gdW5pY29kZSBmb250LgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmZ3MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgd2luZG93cy91c2VyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyBwcm90b3R5cGVzLgoJRGVmaW5lIHRoZSBIRFJBV0RJQiBoYW5kbGUgdHlwZS4KCgkqIGluY2x1ZGUvd2luZG93c3guaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglobWVtY3B5MTYgaXMgYSBXaW4xNiBBUEksIHRoZSBtYWNybyBpcyBobWVtY3B5LgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrMi5oOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJQ3JlYXRlZCBhbiBpbml0aWFsIFdpbnNvY2sgMiAod3MyXzMyKSBETEwuIE1ha2VzIHVzZSBvZiB0aGUgV2luc29jayAxCglmdW5jdGlvbnMgYWxyZWFkeSBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcG9ydCBzdGF0dXMgcXVlcnkuCgoJKiBpbmNsdWRlL2RzZHJpdmVyLmg6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgRGlyZWN0U291bmQgZGV2aWNlIGRyaXZlciBoZWFkZXIgZmlsZS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1ha2UgdGhlIGJhc2UgcmVsb2NhdGlvbiBtZXNzYWdlIGEgV0FSTiwgbm90IGEgRklYTUUuCgoJKiB0b29scy9NYWtlZmlsZS5pbjoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRGlzdGluZ3Vpc2ggYmV0d2VlbiBTVUJESVJTIGFuZCBJTlNUQUxMU1VCRElSUy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ0JfU0VUQ1VSU0VMIHNob3VsZCBub3QgZ2VuZXJhdGUgYW5vdGhlciBsaXN0Ym94IGV2ZW50IGFmdGVyIHVwZGF0aW5nCgl0aGUgZWRpdCBib3guCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVdNX1BBSU5UIHNob3VsZCBiZSBwcm9jZXNzZWQgb25seSBieSB0aGUgVFJFRVZJRVdfUGFpbnQgZnVuY3Rpb24sIHNvCgl3ZSBkb24ndCBuZWVkIHRvIGNhbGwgRGVmV2luZG93UHJvY0EgZnVuY3Rpb24gd2l0aGluIFRSRUVWSUVXX1BhaW50LgoKCSogd2luZG93cy9jbGFzcy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJV2UgbXVzdCByZXR1cm4gdGhlIGF0b20gb2YgdGhlIGNsYXNzIGluIEdldENsYXNzSW5mb0V4IGluc3RlYWQgb2YganVzdAoJVFJVRS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIHN0dWIgZm9yIENvQ3JlYXRlRnJlZVRocmVhZGVkTWFyc2hhbGVyKCkuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVpbXBsZW1lbnQgQ2hhclRvT2VtQS9XLCBDaGFyVG9PZW1CdWZmQS9XLCBPZW1Ub0NoYXJBL1csCglPZW1Ub0NoYXJCdWZmQS9XIHVzaW5nIE11bHRpQnl0ZVRvV2lkZUNoYXIvV2lkZUNoYXJUb011bHRpQnl0ZS4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUdldFN5c3RlbU1lbnUgY2FsbGVkIHdpdGggYlJldmVydCBhcmd1bWVudCBzZXQgdG8gVFJVRSBub3cgcmV0dXJucwoJTlVMTCBhcyBzcGVjaWZpZWQgaW4gUGxhdGZvcm0gU0RLLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBtZW1vcnkgYWNjZXNzIG91dHNpZGUgb2YgdGhlIHJhbmdlIGZvciBzb3VyY2UgYml0cyBpbiAyNC1iaXQgYml0bWFwcy4KCjIwMDAtMDYtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglNYWtlIElJREZyb21TdHJpbmcgcG9pbnQgdG8gQ0xTSURGcm9tU3RyaW5nLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGJldHRlciBlcnJvciBjaGVjayB3aGVuIGltcG9ydGluZyBmdW5jdGlvbnMgdmlhIEdldFByb2NBZHJlc3MKCS0gcmVwbGFjZWQgU0hHZXRTcGVjaWFsRm9sZGVyUGF0aCAobm90IGF2aWFibGUgaW4gYWxsIHNoZWxsMzIgdmVyc2lvbnMpCgktIGNoYW5nZWQgY2FsbCBvcmRlciB3aGVuIGJyb3dzaW5nIHRvIGRpZmZlcmVudCBmb2xkZXIgKGNyYXNoIHdpdGggbmF0aXZlIHNoZWxsKQoJLSByZW1vdmVkIE1vdmUgY2FsbCBzaW5jZSBJU2hlbGx2aWV3X0NyZWF0ZVZpZXdXaW5kb3cgY3JlYXRlcyBpdCBhbHJlYWR5IGluCgkgIHRoZSByaWdodCByZWN0CgoJKiBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gZml4ZWQgbnVsbC1waWRsIGZyb20gX0lMQ3JlYXRlQ29udHJvbAoJLSBzb21lIG1vcmUgbm8tbmFtZSBmdW5jdGlvbnMgaW4gc2hsd2FwaQoKCSogZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUtlZXAgYW4gaW50ZXJuYWwgY29weSBvZiB0aGUgaWNvbi4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlb3JkZXIgdGhlIF9fYXR0cmlidXRlX18gZGlyZWN0aXZlIGluIHRoZSBsZWdhY3kgbWFjcm9zIGZvcgoJY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBnKysgY29tcGlsZXJzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJS2VuIENvbGVtYW4gPGtlbl9jb2xlbWFuQGluYW1lLmNvbT4KCUZpeGVzIHRvIENyZWF0ZURJQlNlY3Rpb24gYW5kIG90aGVyIGFyZWFzIHdoZXJlIGJpU2l6ZUltYWdlIGlzCglpbmNvcnJlY3RseSBhc3N1bWVkIHRvIGJlIGNvcnJlY3QgaWYgaXQgbm9uLXplcm8uICBUaGlzIGZpeGVzIGEKCWNyYXNoaW5nIHByb2JsZW0gaW4gU2lkIE1laWVyJ3MgQWxwaGEgQ2VudGF1cmkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDYtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21kaS5jLCBpbmNsdWRlL21kaS5oLCByZXNvdXJjZXMvc3lzcmVzX0VuLnJjLCByZXNvdXJjZXMvdXNlcjMyLnJjOgoJRGF2aWQgTGFzc29uZGUgPGRhdmlkbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBNb3JlIFdpbmRvd3MuLi4gbWVudSBpdGVtIGZvciBNREkuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglDaGVjayBhZ2FpbiBmb3IgR2V0TmV4dERsZ1RhYkl0ZW0gYWZ0ZXIgcmV0dXJuIGZyb20gV01fSU5JVERJQUxPRwoJbWVzc2FnZSBpbiBkaWFsb2cgY3JlYXRpb24uCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0IGNsaXBwaW5nIHJlZ2lvbiB0byBjbGllbnQgd2luZG93IGluIExJU1RCT1hfUGFpbnQuCgoJKiBzZXJ2ZXIvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglNb3JlIHZlcmJvc2UgZXJyb3IgbWVzc2FnZS4KCgkqIHVuaWNvZGUvbWJ0b3djLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgljcF9tYnN0b3djczogY2hlY2sgZnVuY3Rpb25zIHJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldEZ1bGxQYXRoTmFtZTogZ2V0ICJkcml2ZSIgdmFsdWUgdG9vIGZvciBhYnNvbHV0ZSBwYXRocy4KCgkqIG1pc2MvcHJpbnRkcnYuYzoKCUZyZWRlcmljIEJvdWxhbmdlciA8ZnJlZGVyaWNAbWFjYWRhbWlhbi5jb20+CglDcmVhdGVTcG9vbEZpbGUgaXMgY2FsbGVkIHdpdGggYSBkb3MgbmFtZSwgd2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdAoJd2hlbiB3ZSBjcmVhdGUgdGhlIHNwb29sZmlsZSB3ZSB1c2UgdGhlIHVuaXggbmFtZSBhc3NvY2lhdGVkIHRvIHRoZQoJZG9zIGZpbGUgbmFtZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBtaXNjL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJLSBhZGQgcHJvdG90eXBlcyBmb3Igc2VyaWFsIEFQSSBmdW5jdGlvbnMKCS0gY29ycmVjdCBleGlzdGluZyBzZXJpYWwgQVBJIHByb3RvdHlwZXMgaW5jb3JyZWN0bHkgdXNpbmcgRFdPUkQKCSAgaW5zdGVhZCBvZiBIQU5ETEUKCS0gZGVmaW5lIG1vcmUgc3RydWN0dXJlcyBhbmQgdmFsdWVzIGluIHNlcmlhbCBBUEkKCgkqIHdpbmRvd3MvZGNlLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBOVUxMIHBvaW50ZXIgY2hlY2sgd2l0aGluIERDRV9BZGRDbGlwUmVjdHMgZnVuY3Rpb24uCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJT3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mIExvYWRTdHJpbmdBLgoKCSogZG9jdW1lbnRhdGlvbi94MTFkcnY6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVGV4dCBvZiBXV04gYXJ0aWNsZSAiVGhlIFgxMSBkcml2ZXIiLgoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOgoJV2lsYnVyIE4uIERhbGUgPHdpbGJ1ci5kYWxlQGx1bWluLm5sPgoJV2luZUxpYiBkb2VzIG5vdCBzdXBwb3J0IFdpbjE2LiBSZW1vdmVkIHJlZmVyZW5jZXMgdG8gV2luMTYgYW5kIFdpbgoJMy54IGluIHRoZSBpbnRyb2R1Y3Rpb24uIFN0YW5kYXJkaXplZCBjYXBpdGFsaXphdGlvbiBvZiBXaW5lIGFuZAoJV2luZUxpYi4gQWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgY29tcGlsaW5nIGEgc2ltcGxlICJIZWxsbyBXb3JsZCIKCVdpbmVMaWIgcHJvZ3JhbS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzZXR0aW5nIG9mIGN1cnNvciBwb3N0aXRpb24gdG8gTVNHX1Bvc3RUb1F1ZXVlLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVdNX1NFVFJFRFJBVyBzaG91bGQgcmVwYWludCB0aGUgbGlzdGJveCB3aGVuIHNldCB0byBvbiBpZiBzb21ldGhpbmcKCWhhcyBiZWVuIGNoYW5nZWQuCgoyMDAwLTA2LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgc2VydmVyL01ha2VmaWxlLmluLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvY3ZkdW1wL01ha2VmaWxlLmluLCB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCVJlbW92ZWQgQFBST0dFWFRAIChpdCB3YXMgYnJva2VuIGFueXdheSkuCglJbXByb3ZlZCAnbWFrZSBpbnN0YWxsJy4KCUNsZWFuZWQgdXAgdGhlIG1haW4gTWFrZWZpbGUuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUNvbnZlcnRUb0dsb2JhbEhhbmRsZTogZml4ZWQgaGFuZGxlIGxlYWsuCgoJKiBpbmNsdWRlL29wdGlvbnMuaDoKCUZpeGVkIG9wdGlvbnMgc3RydWN0dXJlIGRlZmluaXRpb24uCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglNYWRlIFNldFdpbmRvd1BvcyBoYW5kbGUgdGhlIGNhc2Ugd2hlbiBpbnNlcnRpbmcgYSB3aW5kb3cgYWZ0ZXIgaXRzZWxmCgkoZG9uJ3QgbmVlZCB0byBjaGFuZ2UgdGhlIFpvcmRlcikuCgoJKiBkb2N1bWVudGF0aW9uL29wZW5nbDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVcGRhdGVkIE9wZW5HTCBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXQgdGhlIGJhc2UgZm9yIHRoZSBvcmRpbmFscyBvZiBvbGVwcm8zMiB0byAyNDguCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglNYXR0aGV3IEouIEZyYW5jaXMgPG1mcmFuY2lzQHBsdXMubmV0LnVrPgoJQWxpYXMgTk1VUERPV04gdG8gYmUgTk1fVVBET1dOLCByYXRoZXIgdGhhbiBvdmVyd3JpdGUgTk1fVVBET1dOIHdpdGgKCU5NVVBET1dOLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglqaW1yZWdhbkBsaXRzdS5pZQoJQWRkZWQgZGlmZnRpbWUgZnVuY3Rpb24uCgoyMDAwLTA2LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dtYy8uY3ZzaWdub3JlLCB0b29scy93bWMvQ0hBTkdFUywgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93bWMvbGFuZy5jLCB0b29scy93bWMvbGFuZy5oLCB0b29scy93bWMvbGFuZ3VhZ2UuYywgdG9vbHMvd21jL21jbC5jLCB0b29scy93bWMvbWN5LnksIHRvb2xzL3dtYy91dGlscy5jLCB0b29scy93bWMvdXRpbHMuaCwgdG9vbHMvd21jL3dtYy5jLCB0b29scy93bWMvd21jLmgsIHRvb2xzL3dtYy93bWMubWFuLCB0b29scy93bWMvd21jdHlwZXMuaCwgdG9vbHMvd21jL3dyaXRlLmMsIHRvb2xzL3dtYy93cml0ZS5oLCB1bmljb2RlL3djdG9tYi5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglJbml0aWFsIHJlbGVhc2Ugb2YgdGhlIG1lc3NhZ2UgY29tcGlsZXIuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGZvbGRlci5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIG5ldyBkbGwgc2hmb2xkZXIuZGxsCgktIHNtYWxsIGZpeGVzCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9wcGwubCwgdG9vbHMvd3JjL3BweS55LCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW46CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBCdWdmaXg6IENvcnJlY3RlZCAib2ZmIGJ5IG9uZSIgZXJyb3IgaW4gdGhlIGxpbmVudW1iZXIgd2hpbGUgcGFyc2luZwoJICByZXNvdXJjZS4KCS0gQnVnZml4OiBBIHNlZ2ZhdWx0IHdvdWxkIG9jY3VyIGlmIG1lc3NhZ2V0YWJsZXMgd2VyZSBwYXJzZWQgd2l0aG91dAoJICBtZW1vcnkgb3B0aW9ucyBhdHRhY2hlZC4gQWxzbyBhZGRlZCBidWZmZXItb3ZlcmZsb3cgc2FmZWd1YXJkIHdoaWxlCgkgIGNvbnZlcnRpbmcgYmV0d2VlbiBieXRlb3JkZXJzLgoJLSBGaW5pc2hlZCByZW1hcHBpbmcgdXNlcnR5cGUgcmVzb3VyY2VzIG9udG8gc3RhbmRhcnMgdHlwZXMgYnkgdHJpY2tpbmcKCSAgdGhlIHBhcnNlciBpbnRvIGFjY2VwdGluZyBhIGRpZmZlcmVudCB0b2tlbi4gVGhlIHJlbWFwcGluZyBjYW4gYmUKCSAgZGlzYWJsZWQgd2l0aCBhIG5ldyBjb21tYW5kbGluZSBvcHRpb24gJy1tJy4KCS0gUmVzb2x2ZWQgc29tZSB3YXJuaW5nIGFib3V0IGNoYXJzIHVzZWQgYXMgaW5kZXggb24gU0dJIE8yIG1hY2hpbmUKCSAgKHRoZSBjdHlwZSBpc1hYWCgpIHJvdXRpbmVzIGFyZSBtYWNyb3MgdGhlcmUpLgoKCSogb2xlL29sZTJubHMuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglDb21tZW50ZWQgb3V0IElzQmFkV3JpdGVQdHIgY2hlY2suIE1ha2VzIHdpbmhscDMyLmV4ZSBoYXBweSBpbgoJZXh0ZW5kZWQgc2VhcmNoLgoKCSogZG9jdW1lbnRhdGlvbi9vcGVuZ2w6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJT3BlbkdMIGRvY3VtZW50YXRpb24uCgoJKiBmaWxlcy9kcml2ZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglEUklWRV9HZXRGcmVlU3BhY2UoKSBpcyBzdXBwb3NlZCB0byAqYWx3YXlzKiByZXR1cm4gMCBmb3IgImF2YWlsIgoJb24gQ0QtUk9NcywgZXZlbiBpZiBDRC1ST00gaXMgKm5vdCogbW91bnRlZCBhbmQgdGh1cyB0aGUgbW91bnQgcG9pbnQKCW5vcm1hbGx5IHJldHVybnMgdGhlICJhdmFpbCIgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcGFydGl0aW9uLgoJQ2xlYW5lZCB1cCBHZXREaXNrRnJlZVNwYWNlQS4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEbyBub3QgY2hhbmdlIHRoZSBXU19DSElMRCBzdHlsZSBpbiBTZXRQYXJlbnQuCgoJKiBsb2FkZXIvcGVfcmVzb3VyY2UuYywgb2xlL29sZTJubHMuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglVc2UgdGhlIFVuaWNvZGUgc3RyaW5nIGZ1bmN0aW9ucyBmcm9tIHdpbmUvdW5pY29kZS5oIGluc3RlYWQgb2YgdGhlCgljcnRkbGwgb25lcy4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvc3RyaW5nLmM6CglBZGRlZCBhIGNvdXBsZSBvZiBVbmljb2RlIHN0cmluZyByb3V0aW5lcy4KCgkqIGRsbHMvZGRyYXcvY29udmVydC5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgMjQtPjMyIHBhY2tlZCBwaXhlbCBtYXBwaW5nIHN1cHBvcnQgdG8gY29udmVydC4KCVNsaWdodGx5IHJld3JvdGUgdGhlIGNvbnZlcnNpb24gaW5pdGlhbGlzYXRpb24uCgoJKiBmaWxlcy9wcm9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0cmlwIHdoaXRlc3BhY2UgZnJvbSBmcm9udCBvZiBwcm9maWxlIHZhbHVlcy4KCjIwMDAtMDYtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9leHRpY29uLmMsIHdpbjMyL29yZGluYWxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUltcGxlbWVudGF0aW9uIGZvciBQcml2YXRlRXh0cmFjdEljb25zLCBQcml2YXRlRXh0cmFjdEljb25FeC4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBpbXBsZW1lbnRlZCBHZXQvU2V0VGhyZWFkTG9jYWxlCgktIGFkZGVkIGNvbW1lbnQgYWJvdXQgT2xlRXJyb3JJbmZvIGZpZWxkIGluIFRFQgoKCSogaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHJ1Y3Qgb2Zmc2V0cyBzbyB1bmRlcnN0YW5kaW5nIGdhbWUgZGlzYXNzZW1ibHkgaXMgZWFzaWVyLgoKCSogZGxscy93aW5lcHMvYnJ1c2guYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUlmIHByaW50ZXIgb25seSBzdXBwb3J0cyBsZXZlbCAxIFBvc3RTY3JpcHQgdGhlbiBjb21wbGFpbiByYXRoZXIgdGhhbgoJdHJ5aW5nIHRvIHVzZSBhIHBhdHRlcm4gY29sb3Igc3BhY2UuICBUaGFua3MgdG8gRGF2aWQgR29vZGVub3VnaC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb3JyZWN0ZWQgSXNFcXVhbEdVSUQgcHJvdG90eXBlLgoKCSogZGxscy9kZHJhdy9kZ2EyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJcmVwbGFjZWQgYSBEUFJJTlRGIGJ5IGEgVFJBQ0UKCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIG1vdmVkIHRoZSAnY29uc3RydWN0b3InIGludG8gYSByZWFsIERMTCBpbml0IGZ1bmN0aW9uCgktIG1ha2UgT3BlbkdMMzIgZGVwZW5kYW50IG9uIHRoZSBYMTEgZHJpdmVyCgoJKiBvYmplY3RzL2RjLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJaG9va1RodW5rIHdhcyBub3QgaW5pdGlhbGl6ZWQgaW4gR2V0RGNTdGF0ZS4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglVc2UgdGhlIGZvbnQgZGVmYXVsdCBjaGFyIGZvciB1bmRlZmluZWQgY2hhcmFjdGVycyB3aGVuIG1hcHBpbmcgZnJvbQoJVW5pY29kZS4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfZXh0LCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX25vcm0sIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCU5ldyBPcGVuR0wgdGh1bmsgZ2VuZXJhdGlvbiBzY3JpcHQuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlbW92ZWQgdGhlIFJlbGVhc2UgaW4gY2FzZSBvZiBlcnJvciBhcyB3ZSBkbyBub3QgQWRkUmVmIGFueW1vcmUuCgoJKiBtaXNjL3ZlcnNpb24uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJTWFkZSB0aGUgRExMIHZlcnNpb24gY2xhc2ggZXJyb3IgbWVzc2FnZSBtb3JlIHZlcmJvc2UuCgoJKiB1bmljb2RlL2NfOTMyLmMsIHVuaWNvZGUvY185MzYuYywgdW5pY29kZS9jXzk0OS5jLCB1bmljb2RlL2NfOTUwLmMsIHVuaWNvZGUvY2FzZW1hcC5jLCB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL21idG93Yy5jLCB1bmljb2RlL3djdG9tYi5jLCB1bmljb2RlL2NfMDQyLmMsIHVuaWNvZGUvY18xMDAwMC5jLCB1bmljb2RlL2NfMTAwMDYuYywgdW5pY29kZS9jXzEwMDA3LmMsIHVuaWNvZGUvY18xMDAyOS5jLCB1bmljb2RlL2NfMTAwNi5jLCB1bmljb2RlL2NfMTAwNzkuYywgdW5pY29kZS9jXzEwMDgxLmMsIHVuaWNvZGUvY18xMDI2LmMsIHVuaWNvZGUvY18xMjUwLmMsIHVuaWNvZGUvY18xMjUxLmMsIHVuaWNvZGUvY18xMjUyLmMsIHVuaWNvZGUvY18xMjUzLmMsIHVuaWNvZGUvY18xMjU0LmMsIHVuaWNvZGUvY18xMjU1LmMsIHVuaWNvZGUvY18xMjU2LmMsIHVuaWNvZGUvY18xMjU3LmMsIHVuaWNvZGUvY18xMjU4LmMsIHVuaWNvZGUvY18yMDg2Ni5jLCB1bmljb2RlL2NfMjg1OTEuYywgdW5pY29kZS9jXzI4NTkyLmMsIHVuaWNvZGUvY18yODU5My5jLCB1bmljb2RlL2NfMjg1OTQuYywgdW5pY29kZS9jXzI4NTk1LmMsIHVuaWNvZGUvY18yODU5Ni5jLCB1bmljb2RlL2NfMjg1OTcuYywgdW5pY29kZS9jXzI4NTk4LmMsIHVuaWNvZGUvY18yODU5OS5jLCB1bmljb2RlL2NfNDI0LmMsIHVuaWNvZGUvY180MzcuYywgdW5pY29kZS9jXzUwMC5jLCB1bmljb2RlL2NfNzM3LmMsIHVuaWNvZGUvY183NzUuYywgdW5pY29kZS9jXzg1MC5jLCB1bmljb2RlL2NfODUyLmMsIHVuaWNvZGUvY184NTUuYywgdW5pY29kZS9jXzg1Ni5jLCB1bmljb2RlL2NfODU3LmMsIHVuaWNvZGUvY184NjAuYywgdW5pY29kZS9jXzg2MS5jLCB1bmljb2RlL2NfODYyLmMsIHVuaWNvZGUvY184NjMuYywgdW5pY29kZS9jXzg2NC5jLCB1bmljb2RlL2NfODY1LmMsIHVuaWNvZGUvY184NjYuYywgdW5pY29kZS9jXzg2OS5jLCB1bmljb2RlL2NfODc0LmMsIHVuaWNvZGUvY184NzUuYywgdW5pY29kZS9jXzg3OC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBpbmNsdWRlL2Nhc2VtYXAuaCwgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgbWVtb3J5L3N0cmluZy5jLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NfMDM3LmM6CglSZWltcGxlbWVudGVkIFVuaWNvZGUgY2FzZSBtYXBwaW5nIGluIGEgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQgd2F5LgoJTW92ZWQgY2FzZSBtYXBwaW5nIHN1cHBvcnQgdG8gdGhlIHVuaWNvZGUgZGlyZWN0b3J5LgoJU29tZSBjbGVhbnVwcyBpbiBjcG1hcC5wbCwgdXNlIFdDSEFSIGluc3RlYWQgb2YgdW5zaWduZWQgc2hvcnQuCgoyMDAwLTA2LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXZSB3ZXJlIG5vdCBwcm9wZXJseSBtYXNraW5nIHRoZSBpdGVtIHRoYXQgd2FzIHNlbnQgd2l0aCB0aGUgbWVzc2FnZQoJYW5kIGFsc28gd2Ugd2hlcmUgbm90IHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbiBhdCB0aGUgcHJvcGVyIHRpbWVzLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJSmFzb24gTWF3ZHNsZXkgPGphc29uQG1hY2FkYW1pYW4uY29tPgoJVGFrZSBmb2N1cyBiZWZvcmUgc2V0dGluZyB0aGUgY2FyZXQgcG9zaXRpb24gYW5kIHNlbGVjdGlvbnMuCgoJKiByZWxheTMyL3Nub29wLmM6IEphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4IGZvciBjb21waWxlciB3YXJuaW5nIChkdWUgdG8gc2V0am1wL2xvbmdqbXAgYmVpbmcgdXNlZCBmb3IKCWV4Y2VwdGlvbiBoYW5kbGluZykuCgoJKiBjb250cm9scy9idXR0b24uYzoKCVNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc2F2ZSBhbmQgcmVzZXQgb2YgU2V0QktNb2RlIHZhbHVlcyBpbiBXTV9QQUlOVC4KCUFkZGVkIGhhbmRsaW5nIG9mIGxQYXJhbSB2YWx1ZSBpbiBCTV9TRVRTVFlMRS4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvZHNvdW5kLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS9pbW0uaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL21tZGRrLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL25ldHNwaS5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVkbGcuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3JpY2hlZGl0LmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvdGFwaS5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbmluZXQuaCwgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2luc3ZjLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL2FuaW1hdGUuaCwgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2NydGRsbC5oLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2QzZGNhcHMuaCwgaW5jbHVkZS9kM2R0eXBlcy5oLCBpbmNsdWRlL2RkZW1sLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlb3JkZXJlZCB0aGUgQ0FMTEJBQ0sgYW5kIFdJTkFQSSBkaXJlY3RpdmVzIHNvIHRoYXQgaXQgY29tcGlsZXMgd2l0aAoJb2xkIGcrKyB2ZXJzaW9ucy4KCgkqIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gRGVmaW5lIEhJQyBpbiB0aGlzIGhlYWRlciByYXRoZXIgdGhhbiBpbiB3aW5kZWYuaCAodGhpcyBpcyB0aGUKCSAgY29ycmVjdCB0aGluZyB0byBkbyBhbHRob3VnaCBpdCBpcyB1bnJlbGF0ZWQgdG8gdGhlIEMrKyBpc3N1ZXMpLgoJLSBXSU5FX0hJQyBpcyBhbiBpbnRlcm5hbCBzdHJ1Y3R1cmUgYW5kIGl0IHdvbid0IGNvbXBpbGUgaW4gQysrIGJlY2F1c2UKCSAgaXQgY29udGFpbnMgYSBmaWVsZCBjYWxsZWQgJ3ByaXZhdGUnLiBFbmNsb3NlZCBpbiBhIF9fV0lORV9fIGlmZGVmLgoJLSBSZW9yZGVyZWQgdGhlIENBTExCQUNLIGFuZCBXSU5BUEkgZGlyZWN0aXZlcyBzbyB0aGF0IGl0IGNvbXBpbGVzIHdpdGgKCSAgb2xkIGcrKyB2ZXJzaW9ucy4KCgkqIGluY2x1ZGUvd2luc3Bvb2wuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBhIHR5cG8gaW4gdGhlIG5hbWUgb2YgRnJlZVByaW50ZXJOb3RpZnlJbmZvLgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUhUVFAgcHJvdG9jb2wgbm93IHN1cHBvcnRlZCwgSW50ZXJuZXRDcmFja1VybCBmaXhlZCwgbG90cyBvZiBvdGhlcgoJZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCB0b29scy9idWlsZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9vdXRwdXQucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGVzIGZpeGVzCgktIFVzZSBvdXRwdXQgcHJlZml4IGluc3RlYWQgb2YgaGlnaCBvcmRlciBmdW5jdGlvbnMgdGhhdCwgZm9yIHNvbWUKCSAgcmVhc29uLCBsZWFrcyBtZW1vcnkuIFRoZSBtZW1vcnkgdXNhZ2Ugb2Ygd2luYXBpX2NoZWNrIGlzIG5vdyBncmVhdGx5CgkgIHJlZHVjZWQuIDotKQoJLSBUdXJuZWQgb24gYXJndW1lbnQga2luZCBjaGVja2luZyBvZiBkb3VibGVzIGJ5IGRlZmF1bHQKCgkqIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUmVtb3ZlIHNlY29uZCBpbXBvcnQgb2Ygd2luc3Bvb2wuZHJ2LgoKCSogY29udHJvbHMvc3RhdGljLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgc3VwcG9ydCBmb3IgaWNvbnMgc2V0IGJ5IFNUTV9TRVRJTUFHRS4KCgkqIGRsbHMvd2luZXBzL2JpdG1hcC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJVGVybWluYXRlIGltYWdlIGRhdGEgd2l0aCBhICc+JyBbVGhlIFBTTFJNIGlzIHJhdGhlciB2YWd1ZSBhYm91dCB0aGlzXS4KCVRoYW5rcyB0byBCZXJuZCBIZXJkLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglKb2huIEVsbGlvdCA8amNlQHNlYXNpcC5kZW1vbi5jby51az4KCVNvbWUgZm9udHMgbWF5IGhhdmUgbm8gY2hhcmFjdGVycyBhdCBhbGwgZm9yIHNvbWUgcmVhc29uLCBhdm9pZCBjcmFzaGVzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQWRkIGEgZmV3IG1vcmUgZmxhZ3MgdG8gdGhvc2UgcmVjb2duaXplZCB3aGVuIGRvaW5nIHRyYWNlK2Rzb3VuZC4KCgkqIG9iamVjdHMvdGV4dC5jOiBKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCURvbid0IHByaW50IHVpTGVuZ3RoRHJhd24gaW4gdGhlIEZJWE1FIGluIERyYXdUZXh0RXhBLiAgSXRzIGFuIG91dHB1dAoJdmFyaWFibGUsIG5vdCBhbiBpbnB1dCB2YXJpYWJsZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJVXNlIFhDcmVhdGVJbWFnZS9YR2V0U3ViSW1hZ2UgaW5zdGVhZCBvZiBYR2V0SW1hZ2UgZm9yCglYMTFEUlZfRElCX0dldEltYWdlQml0cy4KCjIwMDAtMDYtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB1bmljb2RlL2NfOTUwLmMsIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvY3B0YWJsZS5jLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NfMDQyLmMsIHVuaWNvZGUvY18xMDAwMC5jLCB1bmljb2RlL2NfMTAwMDYuYywgdW5pY29kZS9jXzEwMDc5LmMsIHVuaWNvZGUvY18xMDA4MS5jLCB1bmljb2RlL2NfMTI1My5jLCB1bmljb2RlL2NfMTI1NS5jLCB1bmljb2RlL2NfMTI1Ny5jLCB1bmljb2RlL2NfMjg1OTMuYywgdW5pY29kZS9jXzI4NTk2LmMsIHVuaWNvZGUvY18yODU5Ny5jLCB1bmljb2RlL2NfMjg1OTguYywgdW5pY29kZS9jXzQyNC5jLCB1bmljb2RlL2NfODU2LmMsIHVuaWNvZGUvY184NTcuYywgdW5pY29kZS9jXzg2NC5jLCB1bmljb2RlL2NfODc0LmMsIHVuaWNvZGUvY185MzIuYywgdW5pY29kZS9jXzkzNi5jLCB1bmljb2RlL2NfOTQ5LmMsIG1lbW9yeS9jb2RlcGFnZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3Igc3ltYm9sIGNvZGVwYWdlLgoJSW1wcm92ZWQgaGFuZGxpbmcgb2YgdW5kZWZpbmVkIGNvZGVwYWdlIGNoYXJhY3RlcnMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglNYWtlIHN1cmUgR2V0TW9kdWxlRmlsZU5hbWUxNiBkb2VzIG5vdCByZXR1cm4gZ2FyYmFnZSBldmVuIGlmIHRoZSBwYXRoCglpcyBub3QgdmFsaWQgKHRoYW5rcyB0byBBbmRyZWFzIE1vaHIpLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZm9udC5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBc3NpZ24gY29kZXBhZ2UgZm9yIGV2ZXJ5IFgxMSBmb250IHN1ZmZpeCwgYW5kIHVzZSBpdCBmb3IgY29udmVydGluZwoJdGV4dCB0byBkaXNwbGF5LgoKCSogd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL2NvZGVfcGFnZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgbWVtb3J5L01ha2VmaWxlLmluLCBtZW1vcnkvY29kZXBhZ2UuYywgbWVtb3J5L3N0cmluZy5jOgoJUmV3cm90ZSBjb2RlcGFnZSBzdXBwb3J0IHRvIHVzZSB0aGUgbmV3IGNvZGVwYWdlIHRhYmxlcy4KCgkqIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvbWJ0b3djLmMsIHVuaWNvZGUvd2N0b21iLmMsIHVuaWNvZGUvY184NTcuYywgdW5pY29kZS9jXzg2MC5jLCB1bmljb2RlL2NfODYxLmMsIHVuaWNvZGUvY184NjIuYywgdW5pY29kZS9jXzg2My5jLCB1bmljb2RlL2NfODY0LmMsIHVuaWNvZGUvY184NjUuYywgdW5pY29kZS9jXzg2Ni5jLCB1bmljb2RlL2NfODY5LmMsIHVuaWNvZGUvY184NzQuYywgdW5pY29kZS9jXzg3NS5jLCB1bmljb2RlL2NfODc4LmMsIHVuaWNvZGUvY185MzIuYywgdW5pY29kZS9jXzkzNi5jLCB1bmljb2RlL2NfOTQ5LmMsIHVuaWNvZGUvY185NTAuYywgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgaW5jbHVkZS93aW5ubHMuaCwgdW5pY29kZS9jXzAzNy5jLCB1bmljb2RlL2NfMTAwMDAuYywgdW5pY29kZS9jXzEwMDA2LmMsIHVuaWNvZGUvY18xMDAwNy5jLCB1bmljb2RlL2NfMTAwMjkuYywgdW5pY29kZS9jXzEwMDYuYywgdW5pY29kZS9jXzEwMDc5LmMsIHVuaWNvZGUvY18xMDA4MS5jLCB1bmljb2RlL2NfMTAyNi5jLCB1bmljb2RlL2NfMTI1MC5jLCB1bmljb2RlL2NfMTI1MS5jLCB1bmljb2RlL2NfMTI1Mi5jLCB1bmljb2RlL2NfMTI1My5jLCB1bmljb2RlL2NfMTI1NC5jLCB1bmljb2RlL2NfMTI1NS5jLCB1bmljb2RlL2NfMTI1Ni5jLCB1bmljb2RlL2NfMTI1Ny5jLCB1bmljb2RlL2NfMTI1OC5jLCB1bmljb2RlL2NfMjA4NjYuYywgdW5pY29kZS9jXzI4NTkxLmMsIHVuaWNvZGUvY18yODU5Mi5jLCB1bmljb2RlL2NfMjg1OTMuYywgdW5pY29kZS9jXzI4NTk0LmMsIHVuaWNvZGUvY18yODU5NS5jLCB1bmljb2RlL2NfMjg1OTYuYywgdW5pY29kZS9jXzI4NTk3LmMsIHVuaWNvZGUvY18yODU5OC5jLCB1bmljb2RlL2NfMjg1OTkuYywgdW5pY29kZS9jXzQyNC5jLCB1bmljb2RlL2NfNDM3LmMsIHVuaWNvZGUvY181MDAuYywgdW5pY29kZS9jXzczNy5jLCB1bmljb2RlL2NfNzc1LmMsIHVuaWNvZGUvY184NTAuYywgdW5pY29kZS9jXzg1Mi5jLCB1bmljb2RlL2NfODU1LmMsIHVuaWNvZGUvY184NTYuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIFdDX05PX0JFU1RfRklUX0NIQVIgYW5kIGRlZmF1bHQgY2hhciBwYXJhbWV0ZXJzIGluCgljcF93Y3N0b21icy4KCU1pbm9yIGNvc21ldGljIGZpeGVzLgoKCSogZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQ2FsbCBUU1hGbHVzaCBhZnRlciBzZXR0aW5nIERHQSBwYWxldHRlLCBzbyBpdCB1cGRhdGVzIGltbWVkaWF0ZWx5LgoKMjAwMC0wNi0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHVuaWNvZGUvY18yODU5MS5jLCB1bmljb2RlL2NfMjg1OTIuYywgdW5pY29kZS9jXzI4NTkzLmMsIHVuaWNvZGUvY18yODU5NC5jLCB1bmljb2RlL2NfMjg1OTUuYywgdW5pY29kZS9jXzI4NTk2LmMsIHVuaWNvZGUvY18yODU5Ny5jLCB1bmljb2RlL2NfMjg1OTguYywgdW5pY29kZS9jXzI4NTk5LmMsIHVuaWNvZGUvY180MjQuYywgdW5pY29kZS9jXzQzNy5jLCB1bmljb2RlL2NfNTAwLmMsIHVuaWNvZGUvY183MzcuYywgdW5pY29kZS9jXzc3NS5jLCB1bmljb2RlL2NfODUwLmMsIHVuaWNvZGUvY184NTIuYywgdW5pY29kZS9jXzg1NS5jLCB1bmljb2RlL2NfODU2LmMsIHVuaWNvZGUvY184NTcuYywgdW5pY29kZS9jXzg2MC5jLCB1bmljb2RlL2NfODYxLmMsIHVuaWNvZGUvY184NjIuYywgdW5pY29kZS9jXzg2My5jLCB1bmljb2RlL2NfODY0LmMsIHVuaWNvZGUvY184NjUuYywgdW5pY29kZS9jXzg2Ni5jLCB1bmljb2RlL2NfODY5LmMsIHVuaWNvZGUvY184NzQuYywgdW5pY29kZS9jXzg3NS5jLCB1bmljb2RlL2NfODc4LmMsIHVuaWNvZGUvY185MzIuYywgdW5pY29kZS9jXzkzNi5jLCB1bmljb2RlL2NfOTQ5LmMsIHVuaWNvZGUvY185NTAuYywgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9jcHRhYmxlLmMsIHVuaWNvZGUvZGVmYXVsdHMsIHVuaWNvZGUvbWJ0b3djLmMsIHVuaWNvZGUvd2N0b21iLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgdW5pY29kZS8uY3ZzaWdub3JlLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NfMDM3LmMsIHVuaWNvZGUvY18xMDAwMC5jLCB1bmljb2RlL2NfMTAwMDYuYywgdW5pY29kZS9jXzEwMDA3LmMsIHVuaWNvZGUvY18xMDAyOS5jLCB1bmljb2RlL2NfMTAwNi5jLCB1bmljb2RlL2NfMTAwNzkuYywgdW5pY29kZS9jXzEwMDgxLmMsIHVuaWNvZGUvY18xMDI2LmMsIHVuaWNvZGUvY18xMjUwLmMsIHVuaWNvZGUvY18xMjUxLmMsIHVuaWNvZGUvY18xMjUyLmMsIHVuaWNvZGUvY18xMjUzLmMsIHVuaWNvZGUvY18xMjU0LmMsIHVuaWNvZGUvY18xMjU1LmMsIHVuaWNvZGUvY18xMjU2LmMsIHVuaWNvZGUvY18xMjU3LmMsIHVuaWNvZGUvY18xMjU4LmMsIHVuaWNvZGUvY18yMDg2Ni5jOgoJQWRkZWQgYSBidW5jaCBvZiBjb2RlIHBhZ2UgdGFibGVzIGZvciBtdWx0aWJ5dGU8LT53aWRlIGNoYXIKCWNvbnZlcnNpb25zICh3aXRoIHRoZSBoZWxwIG9mIERtaXRyeSBUaW1vc2hrb3YpLgoKMjAwMC0wNi0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvd2lubmxzLmgsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9sc3RyLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglJbXBsZW1lbnQgTlRETEwudG93dXBwZXIgYW5kIE5URExMLnRvd2xvd2VyIHVzaW5nIGFscmVhZHkgZXhpc3RpbmcKCWNhc2UgY29udmVyc2lvbiB0YWJsZXMuIFJlcGxhY2UgYWxsIGRpcmVjdCBjYWxscyB0byB0b3d1cHBlci90b3dsb3dlcgoJZWl0aGVyIHRvIE5URExMIGZvciBjb3JlIG9yIHRvIENSVERMTCBpZiBsYXR0ZXIgYWxyZWFkeSB1c2VkIGluIHRoZQoJbm9uIGNvcmUgZGxsLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOiBTaGkgUXVhbiBIZSAob2YgQ29yZWwpCglUaGUgaW1wbGVtZW50YXRpb24gb2YgU3RyZXRjaEJsdCBpbiBXSU5FIGRvZXMgbm90IHVzZSB0aGUgZm9yZWdyb3VuZCBhbmQKCWJhY2tncm91bmQgY29sb3Igd2hlbiBhIGJpdG1hcCBpcyBjb3BpZWQgZnJvbSBtb25vIHRvIG1vbm8uICBUaGlzIGlzCglub3QgdGhlIGNhc2UgaW4gdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiB1bmRlciBXaW5kb3dzIGJ1dCBNU0ROIGRpZAoJbm90IGRvY3VtZW50IGl0LgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXaW5kb3dzIG11c3QgdXBkYXRlIHRoZSByaWdodCBlZGdlICgtMSkgb2YgdGhlIGxhc3QgcGFuZWwgdXBvbiBkcmF3aW5nCglpbnN0ZWFkIG9mIHJlbHlpbmcgb24gV01fU0laRS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglQcm9wZXJseSBoYW5kbGUgSW5zZXJ0SXRlbSB3aXRoIGFuIGludmFsaWQgSFRSRUVJVEVNLiBXaW5kb3dzIGhhbmRsZXMKCXRoZXNlIGxpa2UgYSBUVklfTEFTVC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglUdXJjaGFub3YgU2VyZ2VpIDx0dXJjaGFub3ZAb3R2cHJpbS5ydT4KCURHQSBjb21waWxlIGZpeC4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IEFkZGVkIG1pc3NpbmcgZGVwZW5kZW5jeS4KCgkqIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglSZW1vdmVkIHRoZSAueGNubG5rIHNlY3Rpb24gaGFjaywgYW5kIHJlcGxhY2VkIGl0IGJ5IGFub3RoZXIgaGFjayBpbgoJdGhlIGRlYnVnZ2VyIENSRUFURV9QUk9DRVNTIGV2ZW50IGhhbmRsaW5nLgoKCSogZGxscy9NYWtlZmlsZS5pbjogTWVyZ2VkIG1vdXNlIGRsbCBpbnRvIFVTRVIuCgoJKiBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmM6IENvbXBpbGUgZml4LgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3RodW5rLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9hdG9tLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIva2VybmVsMzIuYzoKCVJlbW92ZWQgYSBmZXcgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCgoJKiBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvZGlzcGxheS5zcGVjLCBkbGxzL3VzZXIvbW91c2UuYywgZGxscy91c2VyL21vdXNlLnNwZWMsIGRsbHMvdXNlci9tb3VzZXJjLnJjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjOgoJTWVyZ2VkIG1vdXNlIGRsbCBpbnRvIFVTRVIuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5tbS5zcGVjLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcmVzb3VyY2VzL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluOgoJU2ltcGxpZmllZCB3cmMgZmxhZ3MgaGFuZGxpbmcuCgoJKiB3aW5kb3dzL3dpbi5jOgoJWWV0IGFub3RoZXIgYXR0ZW1wdCBhdCBmaXhpbmcgQ1dfVVNFREVGQVVMVCBoYW5kbGluZy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCVVzZSBGSUxFX1NIQVJFX1JFQUQgdG8gb3BlbiB0aGUgZmlsZSBpbiBHZXRCaW5hcnlUeXBlQS4KCgkqIGRlYnVnZ2VyL21vZHVsZS5jOgoJU3RyaXAgcGF0aCBuYW1lIGZyb20gZGxsIHdoZW4gYWRkaW5nIHN5bWJvbHMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVNlbmQgZnVsbCBwYXRoIG5hbWUgYW5kIGRlYnVnIGluZm9ybWF0aW9uIGluIGxvYWRfZGxsIGV2ZW50LgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL21vZHVsZS5oOgoJUGFzcyB0aGUgbWFpbiBleGUgbmFtZSBpbiB0aGUgQ1JFQVRFX1BST0NFU1MgZGVidWcgZXZlbnQuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNYWtlIGEgYmV0dGVyIGd1ZXNzIHRvIGZpbmQgdGhlIHRvcCBvZiB0aGUgaW5pdGlhbCBzdGFjay4KCUZpeGVkIEZyZWVCU0QgY29tcGlsZSBwcm9ibGVtICh0aGFua3MgdG8gR2VyYWxkIFBmZWlmZmVyKS4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJTG91aXMtUGhpbGlwcGUgR2Fnbm9uIChvZiBNYWNhZGFtaWFuIGZvciBDb3JlbCkKCVNlYXJjaCBmb3IgYWxyZWFkeSBsb2FkZWQgQ3Vyc29ySWNvbiB3YXMgZG9uZSB3aXRoIHRoZSB3cm9uZyBoYW5kbGUsCglzbyBpdCB3YXMgbGVha2luZyBpY29ucy4gRml4ZWQuCgoJKiB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW4sIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYywgdG9vbHMvd3JjL0NIQU5HRVM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBJbXBsZW1lbnRlZCBNRVNTQUdFVEFCTEUgcmVzb3VyY2UgdHlwZS4KCS0gVXNlcnR5cGUgcmVzb3VyY2VzIHRoYXQgY2F1c2UgYSB0eXBlLWNsYXNoIHdpdGggZGVmaW5lZCByZXNvdXJjZXMKCSAgYXJlIG5vdyBkZXRlY3RlZCBhbmQgYSB3YXJuaW5nIGlzIGdlbmVyYXRlZC4gU29tZSB0eXBlcyBzaG91bGQgYmUKCSAgcmVyb3V0ZWQgdGhyb3VnaCBvdGhlciBjb2RlIHNvIHRoYXQgdGhleSB3aWxsIGJlIChyZS0paW50ZXJwcmV0ZWQuCgktIEJ1Z2ZpeDogTGluZS1jb250aW51YXRpb24gaW4gc3RyaW5ncyBpbiByZXNvdXJjZXMgaW5jbHVkZSBhIG5ld2xpbmUuCgkgIFRoaXMgYGZlYXR1cmUnIGdvdCBkZWxldGVkIHdpdGggdGhlIGJ1aWx0aW4gcHJlcHJvY2Vzc29yLCBidXQgaGFzIGJlZW4KCSAgcHV0IGJhY2sgaW50byBwbGFjZSAoc2VlIGxhc3QgY2hhbmdlcyBjb21tZW50IGZyb20gdmVyc2lvbiAxLjEuMCkuCgktIEJ1Z2ZpeDogVGhlIHByZXByb2Nlc3NvciBub3cgY29ycmVjdGx5IHdpbGwgc2VlICJcXFxyXG4iIGFzIGEgbGluZS0KCSAgY29udGludWF0aW9uLgoJLSBCdWdmaXg6IEFzc2VtYmxlcnMgb24gc29tZSBwbGF0Zm9ybXMgZG8gbm90IHVzZSAxNmJpdCBxdWFudGl0aWVzCgkgIGZvciBgLndvcmQnLiBUaGlzIGRpcmVjdGl2ZSBpcyBub3cgY2hhbmdlZCBpbnRvIGAuc2hvcnQnLgoJLSBBbGwgdHlwZXMgdGhhdCBhY2NlcHQgaW5saW5lIGRhdGEgZGVmaW5pdGlvbnMgKGEgbGEgUkNEQVRBKSBub3cKCSAgYWxzbyBhY2NlcHQgYSBmaWxlIHNwZWNpZmljYXRpb24uIFRoaXMgdW5pZmllcyB0aGUgc3RydWN0dXJlIGEgYml0LgoKMjAwMC0wNi0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vZGxsLW92ZXJyaWRlczoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVGV4dCBvZiBXV04gYXJ0aWNsZSAiRExMIG92ZXJyaWRlcyIuCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6CglXaWxidXIgTi4gRGFsZSA8d2lsYnVyLmRhbGVAbHVtaW4ubmw+CglBZGRlZCB0byBwcm9qZWN0LiBDdXJyZW50bHkgaW5jb21wbGV0ZSBidXQgd2lsbCB1cGRhdGUgd2Vla2x5LgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglTZXR1cCBzaWduYWwgaGFuZGxpbmcgYW5kIGV4Y2VwdGlvbnMgb25seSBhZnRlciBSRVFfSU5JVF9QUk9DRVNTX0RPTkUKCWhhcyBiZWVuIHNlbnQsIHRvIGF2b2lkIGRlYWRsb2NraW5nIHRoZSBkZWJ1Z2dlci4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGluY2x1ZGUvY29tYm8uaDoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJLSBDb21ib0xCb3ggaXMgYWx3YXlzIGNyZWF0ZWQgYXMgY2hpbGQgb2YgQ29tYm9Cb3guIElmIENvbWJvQm94IGhhcyBzdHlsZQoJICBvdGhlciB0aGFuIENCU19TSU1QTEUsIHBhcmVudCBvZiBsaXN0Ym94IGlzIHNldCB0byBkZXNrdG9wLgoJLSBJbiBDQkRyb3BEb3duLiBDb21ib0JveCB1c2VzIG9ubHkgZmlyc3QgaXRlbSB0byBjYWxjdWxhdGUgaGVpZ2h0IG9mCgkgIGRyb3BwZWQgbGlzdGJveC4gQWxzbyBpZiBsaXN0Ym94IGlzIGVtcHR5IGl0cyBoZWlnaHQgaXMgdW5tb2RpZmllZAoJICAocHJldmlvdXNseSBpdCB3YXMgc2V0IHRvIDApLgoJLSBBZGRlZCBjb3JyZWN0IGhhbmRsaW5nIG9mIFdNX0dFVERMR0NPREUgYW5kIFdNXyhTWVMpS0VZRE9XTiBtZXNzYWdlcy4KCS0gR2VuZXJhbCBjbGVhbi11cC4gTWVzc2FnZSBvcmRlciBpcyBub3cgbW9yZSBwcmVjaXNlIChhdCBsZWFzdAoJICBub3RpZmljYXRpb25zIHRvIGNsaWVudCk7IGxpc3Rib3ggLSBjb21ib2JveCBpbnRlcmFjdGlvbiBoYXMgc2xpZ2h0CgkgIGRpZmZlcmVuY2VzIGNvbXBhcmluZyB0byBXaW5kb3dzLgoKCSogY29udHJvbHMvZWRpdC5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCS0gUmVtb3ZlZCBkZXBlbmRlbmN5IG9mIGVkaXQgY29udHJvbCBmcm9tIGNvbWJvYm94IGltcGxlbWVudGF0aW9uLgoJLSBFZGl0IGNvbnRyb2wgdXNlcyB1bmRvY3VtZW50ZWQgd2luZG93IHN0eWxlIDB4MDIwMCB0byBkZXRlY3QgaXMgaXQgYSBwYXJ0CgkgIG9mIGNvbWJvYm94LiBJZiBzbyBpdCBjYWxscyBHZXREbGdJdGVtKGh3bmRDb21ibywgMTAwMCkgdG8gZ2V0IENvbWJvTEJveAoJICB3aW5kb3cgaGFuZGxlIChzZWUgY29tbWVudHMgZm9yIGNvbWJvLmMgYmVsb3cpLgoJLSBFRElUX0NoZWNrQ29tYm8gLSBtb2RpZmllZCBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiBrZXlib2FyZCBtZXNzYWdlcy4KCS0gUHJvY2Vzc2luZyBvZiBXTV9HRVRETEdDT0RFIGFuZCBXTV9DSEFSIGZvciBWS19SRVRVUk4gYW5kIFZLX0VTQ0FQRQoJICBkZXBlbmRzIG9uIHdoZXRoZXIgbGlzdGJveCBpcyBkcm9wcGVkIGRvd24uIFRoaXMgcHJldmVudHMgY2xvc2luZyBvZiBkaWFsb2cKCSAgaWYgbGlzdGJveCBpcyBkcm9wcGVkIGRvd24gYW5kIGFsbG93cyBjb21ib2JveCB0byBwcm9jZXNzIHRoZXNlIGtleWJvYXJkCgkgIG1lc3NhZ2VzIHByb3Blcmx5LgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCS0gV2UgY2FuIHVzZSB3bmQtPndJRG1lbnUgZm9yIENvbWJvTEJveCAoaXQgaXMgbm90IHJlc2V0IGFueW1vcmUgaW4gU2V0UGFyZW50KQoJLSBXaGVuIHVzZXIgY2xpY2tzIG91dHNpZGUgb2YgZHJvcHBlZCBsaXN0Ym94LCBvcmlnaW5hbCBzZWxlY3Rpb24gbXVzdCBiZQoJICByZXN0b3JlZC4KCS0gQ29tYm9MQm94IGhhcyBjYXJldF9vbiA9IEZBTFNFIG9uIGNyZWF0aW9uLCB0aGF0J3Mgd2h5IGNvbWJvYm94IHNlbmRzCgkgIExCX0NBUkVUT04gbWVzc2FnZSBiZWZvcmUgZHJvcHBpbmcgbGlzdGJveCBkb3duIChidXQgb25seSBmb3IKCSAgQ0JTX0RST1BET1dOTElTVCAtIEkgZG9uJ3Qgbm93IHdoeSkuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglXZWxsLCBTZXRQYXJlbnQgZG9lc24ndCB3b3JrIHByb3Blcmx5IGF0IGFsbCwgYnV0IGF0IGxlYXN0IGl0IG11c3QgcHJlc2VydmUKCXdpbmRvdyBJRC4gIEluIGZhY3QgaXQgYWxzbyBtdXN0IHByZXNlcnZlIHdpbmRvdyBzdHlsZXMsIGRlc3Ryb3kgWAoJY291bnRlcnBhcnQgaWYgcGFyZW50IG9mIHBvcHVwIG9yIG92ZXJsYXBwZWQgd2luZG93IGlzIHNldCB0byBzb21ldGluZwoJZGlmZmVyZW50IGZyb20gRGVza3RvcCwgYW5kIGxvdCBvZiBvdGhlciBzdHVmZiB0aGF0IGl0IG11c3QgYW5kIG11c3RuJ3QgZG8uCglCdXQgcHJlc2VydmluZyBJRCBpcyBnb29kIGVub3VnaCBmb3Igbm93LgoKCSogaW5jbHVkZS93aW51c2VyLmg6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJQWRkZWQgdW5kb2N1bWVudGVkIHdpbmRvdyBzdHlsZS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9xdWV1ZS5oLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5OgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gU21hbGwgdXBkYXRlIHRvIGRvY3VtZW50YXRpb24KCS0gTW9yZSBwbGF5ZXIvZ3JvdXAgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIChub3QgdGVzdGVkKQoKCSogd2luMzIvZXhjZXB0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNhbGwgTWVzc2FnZUJveEEgYmVmb3JlIFVTRVIgaXMgaW5pdGlhbGl6ZWQuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFN0ZXBoYW5lIEx1c3NpZXIKCVNoZXJpIFN0ZWV2ZXMKCUhhaXRoZW0gSG1pZGEKCS0gSGVpZ2h0IG9mIHRoZSBsaXN0Ym94IHNob3VsZCBiZSBhZGp1c3Qgd2hlbiBMQlNfT1dORVJEUkFXRklYRUQgaXMgc2V0CgkgIGFuZCBub3QgaWYgTEJTX09XTkVSRFJBV1ZBUklBQkxFIGlzIHNldCwgcHJldmlvdXNseSBpdCB3YXMgbm90IGFkanVzdGluZwoJICB0aGUgc2l6ZSBpbiBib3RoIGNhc2VzLgoJLSBXaGVuIHRoZSBjYXJldCBpbmRleCBjaGFuZ2UsIGl0ZW1zIHJlcGFpbnRpbmcgbmVlZCB0cCBiZSBpbiB0aGlzCgkgIG9yZGVyCgkgIGEpIFBhaW50IG9sZCBjYXJldCBpdGVtIHdpdGhvdXQgdGhlIGZvY3VzCgkgIGIpIFBhaW50IG9sZCBjYXJldCBpdGVtIHdpdGhvdXQgdGhlIHNlbGVjdGlvbgoJICBjKSBQYWludCBuZXcgY2FyZXQgaXRlbSB3aXRoIHRoZSBzZWxlY3Rpb24KCSAgZCkgUGFpbnQgbmV3IGNhcmV0IGl0ZW0gd2l0aCB0aGUgZm9jdXMuCgktIFdoZW4gcmVwYWludGluZyB0aGUgbGlzdGJveCwgd2Ugc2hvdWxkIHBhaW50IGFsbCBpdGVtcyByZWdhcmRpbmcgaWYKCSAgdGhleSBhcmUgc2xlY3RlZCBvciBub3QgYW5kIHRoZW4gcGFpbnQgYWZ0ZXIgdGhlIGZvY3VzIGl0ZW0uIFNvIGZvY3VzCgkgIGl0ZW0gd2lsbCBlbmQgb3V0IGJlaW5nIHBhaW50ZWQgdHdpY2UuIChUaGF0J3Mgd2hhdCBXaW5kb3dzIGRvZXMpLgoKCSogZmlsZXMvZmlsZS5jOiBTdGFzIFNlcmdlZXYgPHN0YXMub3JlbEBtYWlsY2l0eS5jb20+CgltbWFwKCkgZmFpbHMgd2l0aCBFTk9ERVYgb24gTlRGUyB1bmRlciBMaW51eC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUGF0aEZpbmROZXh0Q29tcG9uZW50OiByZXR1cm4gcG9pbnRlciB0byBOVUxMIGFuZCBub3QgTlVMTC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGhhbmRsaW5nIG9mIFRCU1RZTEVfQVVUT1NJWkUuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL2NydGRsbC5oLCBtc2Rvcy9pb3BvcnRzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGluY2x1ZGUvdXJsbW9uLmgsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NvbWRsZzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29kYmMzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgktIFR1cm5lZCBvbiBjYWxsaW5nIGNvbnZlbnRpb24gY2hlY2tpbmcgZm9yIFdpbjMyIGZ1bmN0aW9ucyBieQoJICBkZWZhdWx0LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUT09MQkFSX0RyYXdTdHJpbmc6IGNhdGNoIGluZGV4PT0gLTEgKGJ1dCBub3QgeWV0IGhhbmRsZWQpLgoKCSogbWlzYy9vcHRpb25zLmM6CglGaXhlZCBvZmYtYnktb25lIGVycm9yIGluIHN0cmluZyBhbGxvY2F0aW9uLgoKCSogd2luZG93cy93aW4uYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiBmb3IgQ29yZWwKCVRoZSB3aW5kb3cgZGltZW5zaW9ucyBoYXZlIHRvIGJlIGluaXRpYWxpemVkIGJlZm9yZSBzZW5kaW5nIHRoZQoJV01fR0VUTUlOTUFYSU5GTyBtZXNzYWdlLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBtaXMtYWxpZ25lZCBhY2Nlc3NlcyBkdXJpbmcgQklPUy9ET1MgZGF0YSBpbml0aWFsaXphdGlvbi4KCgkqIHRvb2xzL2J1aWxkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHNpemUgb2YgcGVfaGVhZGVyIG9uIG1hY2hpbmVzIHdpdGggbm9uLTRLIHBhZ2VzLgoKCSogaWYxNjMyL3Nub29wLmMsIHJlbGF5MzIvc25vb3AuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSAiQ0FMTCIgYW5kICJSRVQiIGluIGNhcGl0YWwgbGV0dGVycyBmb3IgZGlzdGluY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglUaGUgYWN0aXZlIHBhZ2Ugc2hvdWxkIGJlIHVuY2hhbmdlZCB3aGVuIHJlbW92aW5nIGFuIGFjdGl2ZSBmaXJzdCBwYWdlCglmcm9tIGEgcHJvcGVydHkgc2hlZXRzLgoKMjAwMC0wNi0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVcGRhdGVkIHN1cHBvcnQgZm9yIFNvbGFyaXMvU3BhcmMgYXJjaGl0ZWN0dXJlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNaWNoYWVsIENhcmRlbmFzIDxtaWNoYWVsX2NhcmRlbmFzQGRlbmViYS5jb20+CglDb3JyZWN0ZWQgYSBwb3RlbnRpYWwgY3Jhc2guCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCB0b29scy9idWlsZC5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIHN0YWNrIHN3aXRjaCBoYW5kbGluZyAobGFyZ2Ugc3RhY2spIHRvIHN5c2RlcHMuYwoJRW5hYmxlIGV4Y2VwdGlvbiBkaXNwYXRjaCB3aGlsZSBvbiBsYXJnZSBzdGFjay4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRmluaXNoZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIExJU1RWSUVXX1NldENvbHVtbldpZHRoLiAgVGVzdGVkCglhZ2FpbnN0IHdpbmRvd3MgdGhvcm91Z2hseS4gIEZpeGVkIGJ1ZyByZXN1bHRpbmcgaW4gdW5zaWduZWQgdmFsdWVzCgliZWluZyBwYXNzZWQgaW50byBMSVNUVklFV19TZXRDb2x1bW5XaWR0aCBmcm9tIHRoZSBsaXN0dmlldyB3aW5kb3cKCXByb2NlZHVyZS4gIEZpeGVkIExJU1RWSUVXX0dldEl0ZW1IZWlnaHQgdG8gZGlzcmVnYXJkIHRoZSBoZWlnaHQgb2YKCWljb25zIGlmIG5vIGljb25zIGV4aXN0LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUFkZGVkIGRlZmluZXMgZm9yIExWU0NXX0FVVE9TSVpFL19VU0VIRUFERVIuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglSZXBsYWNlZCBjYWxscyB0byBIRUFERVJfUmVmcmVzaCB3aXRoIEludmFsaWRhdGVSZWN0LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglFcmljIEtvaGwgPGVrb2hsQHJ6LW9ubGluZS5kZT4KCVN0YXJ0ZWQgc3VwcG9ydCBmb3IgbWVudWJhci1saWtlIHRvb2xiYXJzLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ29tcGlsZSBmaXhlcyBmb3Igbm9uLWkzODYgYXJjaHMuCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvdWl0b29scy5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF0dGVtcHQgdG8gcGFpbnQgdGhlIGNoZWNrYm94IGFuZCByYWRpbyBidXR0b25zIGJldHRlci4KCjIwMDAtMDYtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jOiBGaXhlZCB3YXJuaW5nLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglFcmljIEtvaGwgPGVrb2hsQHJ6LW9ubGluZS5kZT4KCVVwZGF0ZWQgdG8gZGxsIHZlcnNpb24gNS44MSAoSUUgNS4wMSkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglFcmljIEtvaGwgPGVrb2hsQHJ6LW9ubGluZS5kZT4KCUltcGxlbWVudGVkIFRWTV9HRVRJVEVNVy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJSmFzb24gTWF3ZHNsZXkgPGphc29uQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgdHlwaW5nIHRoZSBmaWxlbmFtZSBpbiB0aGUgbGlzdHZpZXcgY29udHJvbCBhbmQKCWhhdmluZyB0aGUgY29udHJvbCBzZWxlY3QgaXQuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgaW5jbHVkZS9tZXNzYWdlLmgsIG1pc2MvbWFpbi5jOgoJUmVtb3ZlZCBNU0dfV2luZVN0YXJ0VGlja3MgKGRvZXMgbm90IHdvcmsgZm9yIG11bHRpcGxlIGFkZHJlc3Mgc3BhY2VzCglhbnl3YXkpLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jOgoJUmVwbGFjZWQgR2V0REMgYnkgQ3JlYXRlREMuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2RpYi5jLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCU1vdmVkIERJQl9GaXhDb2xvcnNUb0xvYWRmbGFncyB0byBjdXJzb3JpY29uLmMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJRG9jdW1lbnRlZCB0aGUgbmV3IHdpbmUgY29tbWFuZCBsaW5lIGFuZCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKCVdJTkVQUkVGSVguCgoJKiBtc2Rvcy9kcG1pLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd2luZXBzMTYuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY29tZGxnMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZHNvdW5kLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93aW5lcHMuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBUEkgZmlsZXMgdXBkYXRlLgoKCSogbWVtb3J5L2luc3RyLmMsIG1zZG9zL2ludGVycnVwdHMuYywgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvYnVpbHRpbjE2Lmg6CglEZWxheSBsb2FkaW5nIG9mIGludGVycnVwdCB0YWJsZSBmdW5jdGlvbnMgdW50aWwgdGhleSBhcmUgbmVlZGVkLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2lvcG9ydHMuYzoKCURlbGF5IGluaXRpYWxpemF0aW9uIG9mIEkvTyBwZXJtaXNzaW9ucyB1bnRpbCB0aGV5IGFyZSBmaXJzdCB1c2VkLgoKCSogbG9hZGVyL21haW4uYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGlmMTYzMi9yZWxheS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTW92ZWQga2VybmVsIGluaXRpYWxpemF0aW9uIHRvIGtlcm5lbF9tYWluLmMKCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kaXNwLnJjLCBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvZGlzcGxheS5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGluY2x1ZGUvZGlzcGxheS5oLCBsb2FkZXIvbWFpbi5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCU1lcmdlZCBkaXNwbGF5LmRsbCBpbnRvIFVTRVIuCgoJKiBtaXNjL3dzcHJpbnRmLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVkIGNyYXNoLgoKCSogcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvd293MzIuc3BlYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9jb21tLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9zeXN0ZW0uc3BlYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuc3BlYywgZGxscy9rZXJuZWwvd293MzIuc3BlYywgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9jb21tLnNwZWMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3N5c3RlbS5zcGVjLCBpZjE2MzIvdG9vbGhlbHAuc3BlYywgaWYxNjMyL3dwcm9jcy5zcGVjLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglTdGFydCB0byBzZXBhcmF0ZSBLRVJORUwgb3V0IG9mIGxpYndpbmUuCgoyMDAwLTA2LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS90c194dXRpbC5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3h1dGlsLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXNlcnZlIFdNIGhpbnRzIHRoYXQgd2VyZSBzZXQgZHVyaW5nIHdpbmRvdyBjcmVhdGlvbiBieSBjYWxsaW5nCglYR2V0V01IaW50cyBwcmlvciB0byBYU2V0V01IaW50cy4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOgoJTWljaGFlbCBDYXJkZW5hcyA8bWljaGFlbF9jYXJkZW5hc0BkZW5lYmEuY29tPgoJQWRkZWQgYSBmZXcgbWVzc2FnZSBjcmFja2Vycy4KCgkqIHRvb2xzL3dpbmVjb25mOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZCAiVW5peCBkcml2ZXMiIC90bXAgYW5kICR7SE9NRX0sIGFuZCBEZXZpY2UgYW5kIEZpbGVzeXN0ZW0KCXN0YXRlbWVudHMsIHRvIGF1dG9nZW5lcmF0ZWQgd2luZS5jb25mLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBSZXdyaXRlIG9mIHRoZSBzaGVsbCByZWxhdGVkIHBhcnRzIG9mIHRoZSBkaWFsb2cgdG8gdXNlIHRoZSBhbHJlYWR5CgkgIGluIHNoZWxsMzJpbXBsZW1lbnRlZCBmdW5jdGlvbnMgKFNoZWxsRm9sZGVyL1BhdGgqKS4gRWxpbWluYXRlZCBkaXJlY3QKCSAgZmlsZSBhY2Nlc3MuCgktIFJlcGxhY2VkIExvYWRMaWJyYXJ5QSB3aXRoIEdldE1vZHVsZUhhbmRsZUEgc2luY2UgY29tZGxnMzIgaXMgaW1wb3J0cwoJICBzb21lIGRsbHMgcGVyICouc3BlYyBmaWxlCgktIE1vc3QgT3BlbkZpbGUgRmxhZ3MgKE9GTl8qKSBzaG91bGQgd29yayBwcm9wZXJseSBub3cKCS0gVGhlIGVkaXQgYm94IHNob3VsZCB3b3JrIHJpZ2h0IHdpdGggYWxsIHN0dWZmIGVudGVyZWQgaW4gaXQgbGlrZQoJICAuLlx0ZW1wXGZpbGUudHh0IG9yIGp1c3QgYzogdG8gY2hhbmdlIGEgZHJpdmUKCS0gT3B0aW1pemVkIERhdGFPYmplY3QgaGFuZGxpbmcKCS0gU29tZSBidWdzIGZpeGVkLCBzaG91bGQgd29yayB3aXRoIG5hdGl2ZSBzaGVsbDMyIGFnYWluLgoJLSBTdHVicyBmb3IgUHJpbnREbGdFeAoKMjAwMC0wNi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkb2N1bWVudGF0aW9uL2NvbmZpZywgZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnMsIGRvY3VtZW50YXRpb24vZm9udHMsIGRvY3VtZW50YXRpb24vbm8td2luZG93cywgbWlzYy9yZWdpc3RyeS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL21lc3NhZ2UuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJTG90cyBvZiBzcGVsbGluZyBmaXhlcyB0aGF0IGFjY3VtdWxhdGVkIGluIG15IHRyZWUgYWdhaW4sIG1hZGUgc2V2ZXJhbAoJZXJyb3IgbXNncyBtb3JlIHZlcmJvc2UsIGRvYyB1cGRhdGVzLgoKCSogZG9jdW1lbnRhdGlvbi9zaGVsbDMyLCBpbmNsdWRlL3NobHdhcGkuaCwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gTmV3IChzb21lIHN0dWJzKTogU0hHZXRGb2xkZXJMb2NhdGlvbiwgUGF0aEFkZEV4dGVuc2lvbiwKCSAgUGF0aElzVU5DU2VydmVyLCBQYXRoSXNVTkNTZXJ2ZXJTaGFyZSwgUGF0aE1ha2VQcmV0dHksCgkgIFNIQ3JlYXRlU2hlbGxQYWxldHRlLCBTSE9wZW5SZWdTdHJlYW0sIFNIT3BlblJlZ1N0cmVhbTIKCS0gTWFueSBzdHJpbmcgZnVuY3Rpb25zIGltcGxlbWVudGVkCgktIFNvbWUgc3R1YnMgZm9yIGV4cG9ydHMgYnkgb3JkaW5hbAoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUdpdmUgYSBlcnJvciBtZXNzYWdlIGlmIGEgZm9yd2FyZGVkIGV4cG9ydCBpcyBub3QgcmVzb2x2ZWQuCgoJKiBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJSW1wbGVtZW50ZWQgRmluZEZpcnN0RmlsZUV4LCBjbGVhbmVkIG9sZCBpbXBsZW1lbnRhdGlvbiB1cC4KCgkqIGNvbnRyb2xzL3dpZGdldHMuYzoKCUxvdWlzLVBoaWxpcHBlIEdhZ25vbiAob2YgTWFjYWRhbWlhbiBmb3IgQ29yZWwpCglTdGF0aWMgY29udHJvbHMgd2VyZW4ndCByZWNlaXZpbmcgV01fTEJVVFRPTkRCTENMSyBtZXNzYWdlcyBiZWNhdXNlIHRoZQoJU3RhdGljIHdpbmRvdyBjbGFzcyB3YXMgcmVnaXN0ZXJlZCB3aXRob3V0IHRoZSBDU19EQkxDTEtTIHN0eWxlICh3aGljaCBpdAoJaGFzIGluIFdpbmRvd3MpLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1ha2Ugc3VyZSBtYWluX2V4ZV9uYW1lIGlzIGEgRE9TIGZpbGVuYW1lICh0aGFua3MgdG8gVXdlIEJvbm5lcykuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBpbmNsdWRlL2RwbGF5Lmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBEaXJlY3RTb3VuZENhcHR1cmUgYW5kIERpcmVjdFNvdW5kQ2FwdHVyZUJ1ZmZlciBpbnRlcmZhY2VzCgktIEFkZGVkIHNvbWUgU291bmRDYXB0dXJlIHN0dWJzCgktIENoYW5nZWQgUkVGSUlEIHRvIExQQ0dVSUQgaW4gYSBmZXcgcGxhY2VzIGFzIHBlciBNUyBoZWFkZXIgZmlsZQoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlYy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTdHViIGZvciBSdGxDb252ZXJ0U2lkVG9Vbmljb2RlU3RyaW5nLgoKCSogY29udHJvbHMvc3RhdGljLmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJTVNETjogIldNX05DSElUVEVTVCAtIFJldHVybnMgSFRDTElFTlQgaWYgdGhlIGNvbnRyb2wgc3R5bGUgaXMKCVNTX05PVElGWTsgb3RoZXJ3aXNlLCByZXR1cm5zIEhUVFJBTlNQQVJFTlQuICIKCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgd2FybmluZy4KCjIwMDAtMDUtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbi5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldCBhIGRlZmF1bHQgc2l6ZSBmb3Igd2luZG93cyB3aGVuIENXX1VTRURFRkFVTFQgaXMgdXNlZC4KCjIwMDAtMDUtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvbmxzL2hydi5ubHMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGRvY3VtZW50YXRpb24vbGFuZ3VhZ2VzLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6Cglab3JhbiBEemVsYWpsaWphIDxqZWxseUBzcmsuZmVyLmhyPgoJQmFzaWMgQ3JvYXRpYW4gbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU2VyZ2UgSXZhbm92CglSZXR1cm5pbmcgRExHQ19XQU5UQUxMS0VZUyBmb3IgbXVsdGlsaW5lIGVkaXQgY29udHJvbCB3YXMgbm90IGdvb2QgYmVjYXVzZQoJaXQgYnJlYWtzIG5hdmlnYXRpb24gaW4gZGlhbG9ncy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBGaXhlZCBzb21lIGluaXRpYWxpemF0aW9uL2Rlc3RydWN0aW9uIGFuZCByZWZlcmVuY2UgY291bnRpbmcKCS0gQWRkZWQgYSBsaXR0bGUgbW9yZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KCgkqIHRvb2xzL2ZvbnRfY29udmVydC5zaDoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUFkZGVkIGEgc2hlbGwtc2NyaXB0IGZvciBlYXNpZXIgZm9udC1pbnN0YWxsYXRpb24uCgoJKiBkbGxzL3dpbmVwcy9iaXRtYXAuYywgZGxscy93aW5lcHMvYnJ1c2guYywgZGxscy93aW5lcHMvY2xpcHBpbmcuYywgZGxscy93aW5lcHMvY29sb3IuYywgZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvb2JqZWN0cy5jLCBkbGxzL3dpbmVwcy9wZW4uYywgZGxscy93aW5lcHMvcHBkLmMsIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3RleHQuYywgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMvd2luZXBzL3dpbmVwczE2LnNwZWMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi93aW5lcHMuc3BlYywgaW5jbHVkZS9wc2Rydi5oLCBsb2FkZXIvbWFpbi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvd2luZXBzLy5jdnNpZ25vcmUsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvYml0Ymx0LmMsIE1ha2UucnVsZXMuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJU2VwYXJhdGUgd2luZXBzIG91dCBvZiBXaW5lJ3MgY29yZS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9xdWV1ZS5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBhIGxpdHRsZSBtb3JlIGRsbCBsZXZlbCBkZWJ1Z2dpbmcgYW5kIHNtYWxsIGNoYW5nZXMKCS0gU3RhcnQgb24gZ3JvdXAgYW5kIHBsYXllciBpbnRlcmZhY2VzCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgaW5jbHVkZS9kc291bmQuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZCBhbm90aGVyIHdheSB0byBjcmVhdGUgYSAzZCBsaXN0ZW5lciBpbnRlcmZhY2UuCgktIEZpeCB1cCBzb21lIHJlZmVyZW5jZSBjb3VudGluZyBidWdzIGFuZCBpbnRlcmZhY2UgY3JlYXRpb24gYnVncwoJLSBBZGQgRGlyZWN0U291bmRFbnVtZXJhdGVXIHN0dWIKCS0gQWRkIERpcmVjdFNvdW5kQ2FwdHVyZUVudW1lcmF0ZXtBLFd9IHN0dWJzCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGluY2x1ZGUvZGF0ZXRpbWUuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJQWRkZWQgM0QgYm9yZGVyIGFyb3VuZCBjb250cm9sLiAgRml4ZWQgbW9udGhjYWwgY29udHJvbCBwb3B1cC4gIEFkZGVkCglXTV9TSVpFIHN1cHBvcnQuICBPcHRpbWl6ZWQgZHJhd2luZy4gIEFkZGVkIFdNX0xCVVRUT05VUCBoYW5kbGluZy4KCUhhbmRsZSBEVFNfUklHSFRBTElHTiBzdHlsZS4gIEZpeGVkIGhhbmRsaW5nIG9mIGZvcm1hdHRpbmcgc3R5bGVzLAoJZGF0ZSBpcyBub3cgZGlzcGxheWVkIHByb3Blcmx5IGZvciBEVFNfU0hPUlREQVRFRk9STUFULgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglSZW1vdmVkIGFsbCBkaXJlY3QgY2FsbHMgdG8gTU9OVEhDQUxfUmVmcmVzaCgpIGFuZCByZXBsYWNlZCB3aXRoCgllaXRoZXIgUmVkcmF3V2luZG93IG9yIEludmFsaWRhdGVSZWN0LiBPcHRpbWl6ZWQgZHJhd2luZyB1c2luZwoJUmVkcmFXaW5kb3cgYW5kIHVwZGF0ZSByZWdpb25zLiAgRml4ZWQgIlRvZGF5IiBkYXRlIGJ1ZyB3aGVyZSB5ZWFyIHdhcwoJb25seSBvbmUgZGlnaXQuICBGaXhlZCBkcmF3aW5nIG9mIGNpcmNsZSBkcmF3biBuZXh0IHRvICJUb2RheSIuICBGaXhlZAoJbW92aW5nIHRvIHByZXZpb3VzIG9yIG5leHQgbW9udGggYnkgY2xpY2tpbmcgb24gZGF5cyBiZWxvbmdpbmcgdG8KCXByZXZpb3VzIG9yIG5leHQgbW9udGhzLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9jb25zb2xlLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY29tPgoJQWRkIHN0dWIgZm9yIFNldENvbnNvbGVPdXRwdXRDUC4KCgkqIHRvb2xzL3dyYy9wcHkueToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkIGEgOyBuZWVkZWQgYnkgc29tZSBZQUNDcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW5zdGFsbCB0aGUgY29sb3JtYXAgb25seSBpZiBpdCB3YXMgY3JlYXRlZC4KCgkqIG1zZG9zL2ludDIxLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUltcGxlbWVudGVkIGludCAweDIxIGxvbmcgZmlsZSBuYW1lIGZ1bmN0aW9uIDB4NzFhMDogR2V0IFZvbHVtZSBJbmZvLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnRlZCB3Z2xTaGFyZUxpc3RzIGFuZCB3Z2xHZXRDdXJyZW50REMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglNb3ZlZCBpZGxlIGV2ZW50IGhhbmRsaW5nIHRvIHRoZSBzZXJ2ZXIuCgoJKiB3aW5kb3dzL3dpbi5jOgoJVXNlIEdldFN0YXJ0dXBJbmZvQSgpIGluc3RlYWQgb2YgYWNjZXNzaW5nIHByb2Nlc3Mgc3RydWN0dXJlCglkaXJlY3RseS4KCgkqIGxvYWRlci90YXNrLmM6CglNYWtlIHN1cmUgaW5pdGlhbCB0YXNrIGlzIG5vdCBtYXJrZWQgYXMgMzItYml0LgoKCSogbWlzYy9vcHRpb25zLmM6CglNYWtlIGNoaWxkIHByb2Nlc3NlcyBpbmhlcml0IGNvbW1hbmQtbGluZSBvcHRpb25zIHRocm91Z2ggdGhlCglXSU5FT1BUSU9OUyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCgkqIHdpbmRvd3Mvd2luLmM6IFNlcmdlIEl2YW5vdgoJU2V0UGFyZW50OiBjYWxsIFNldFdpbmRvd1BvcyB3aXRoIFNXUF9OT0FDVElWQVRFIGZsYWcgc2V0LgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2Rpc3BkaWIuc3BlYywgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvZGlzcGRpYi5zcGVjOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1vdmVkIERJU1BESUIgb3V0IG9mIHRoZSBrZXJuZWwgaW50byBHREkuCgoJKiBjb250cm9scy9jb21iby5jLCBpbmNsdWRlL2NvbWJvLmg6CglEYXZpZCBHcmFudCA8ZGF2aWRncmFAY29yZWwuY2E+CgktIENyZWF0aW5nIGNvbWJvYm94IHdpdGggQ0JTX1NJTVBMRSBzdHlsZSBzaGFsbCBzZXQgaW50ZXJuYWwgZmxhZyBDQkZfRURJVC4KCS0gRWRpdCB0ZXh0IG11c3QgYmUgc2VsZWN0ZWQgb25seSBpZiBDQiBpcyBpbiBmb2N1cy4KCS0gSWYgQ0IgaGFzIGVkaXQgY29udHJvbCB3ZSBoYXZlIHRvIGNhbGwgQ0JVcGRhdGVFZGl0IHRvIHVwZGF0ZSBpdHMKCSAgY29udGVudHMuIEludmFsaWRhdGluZyB0ZXh0UmVjdCB3aWxsIG5vdCBmb3JjZSB1cGRhdGluZyBvZiBjaGlsZAoJICBlZGl0IGNvbnRyb2wsIG9idmlvdXNseS4KCS0gV2UgaGF2ZSB0byBwcm90ZWN0IG91cnNlbHZlcyBmcm9tIGNoYW5naW5nIHNlbGVjdGlvbiBpbiBsaXN0Ym94IHdoZW4KCSAgd2UgcmVjZWl2ZSBsaXN0Ym94IG5vdGlmaWNhdGlvbi4gU28gTEJOX1NFTENIQU5HRSAtPiBDQlVwZGF0ZUVkaXQgLT4KCSAgRU5fQ0hBTkdFIHdpbGwgbm90IHJlc2VsZWN0IGl0ZW0gaW4gdGhlIGxpc2JveC4KCgkqIGRsbHMvZ2RpL2dkaV9tYWluLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJQWRkIGluY2x1ZGUgZm9yIExvYWRMaWJyYXJ5LgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgbWVtb3J5L2F0b20uYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCVR1cmNoYW5vdiBTZXJnZWkgPHR1cmNoYW5vdkBvdHZwcmltLnJ1PgoJSW1wbGVtZW50ZWQgbG9jYWwgYXRvbXMgaW4gdGhlIHNlcnZlci4KCgkqIGlmMTYzMi9idWlsdGluLmM6IERvIG5vdCBsb2FkIHdpbmVwcyBvbiBzdGFydHVwLgoKCSogbWlzYy9jb21tLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIHdhcm5pbmcuCgoJKiBjb250cm9scy9jb21iby5jOiBPd2VuIFdhbmcKCVdoZW4geW91IGNsaWNrIG9uIGFuIGljb24gdG8gb3BlbiBhIGNvbWJvIGJveCwgeW91IHdvdWxkIGV4cGVjdCBpdCB0bwoJYmUgZW5hYmxlZCBzbyB5b3UgY2FuIGNob29zZSBzb21ldGhpbmcgaW4gaXQuIEluIFdpbmUgdGhpcyB3YXMgbm90CglndWFyYW50ZWVkIHNpbmNlIHlvdXIgZGVmYXVsdCBmbGFncyBjb3VsZCBnZXQgbG9zdCBpbiB0aGUgcHJvY2Vzcy1oZWFwCglvZiB0aGUgYXBwbGljYXRpb24uCgoyMDAwLTA1LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50MjEuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvZW52aXJvbi5jLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmMsIG1pc2NlbXUvbWFpbi5jLCBtc2Rvcy9pbnQyMC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jOgoJRXhlYyBhIHNlcGFyYXRlIHdpbmUgYmluYXJ5IGZvciBldmVyeSB3aW4zMiBwcm9jZXNzIHNvIHRoYXQgdGhleSBydW4KCWluIHNlcGFyYXRlIGFkZHJlc3Mgc3BhY2VzLgoJUnVuIDE2LWJpdCB0YXNrcyBhcyBXaW4zMiB0aHJlYWRzLCBub3QgcHJvY2Vzc2VzLgoKMjAwMC0wNS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAwMDUyNi4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogU2VyZ2UgSXZhbm92CgktIEFkZGVkIGhhbmRsaW5nIG9mIFdNX01PVVNFQUNUSVZBVEUgbWVzc2FnZQoJLSBBZGRlZCBpbl9mb2N1cyBmaWVsZCB0byBpbnRlcm5hbCBsaXN0Ym94J3Mgc3RydWN0dXJlLiBUaGlzIGZsYWcgaXMgc2V0IG9uCgkgIHJlY2VpdmluZyBXTV9TRVRGT0NVUyBtZXNzYWdlIGFuZCBpcyByZXNldGVkIG9uIFdNX0tJTExGT0NVUy4gQWxsIGNhbGxzIHRvCgkgIEdldEZvY3VzIGZ1bmN0aW9uIHdlcmUgcmVwbGFjZWQgd2l0aCBjaGVja3Mgb2YgdGhpcyBmbGFnLgoJLSBJbiBMSVNUQk9YX0hhbmRsZUxCdXR0b25Eb3duOiBmb2N1cyBpcyBzZXQgb25seSBpZiAnaW5fZm9jdXMnIGZsYWcgaXMKCSAgY2xlYXIKCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCVN0YXJ0ZWQgbG9jYWwgbmFtZSBzZXJ2ZXIgZnJhbWV3b3JrLgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgUHJpbnRTZXR1cCBkaWFsb2cgYW5kIHN1cHBvcnQgZm9yIGhvb2tzIGFuZCB0ZW1wbGF0ZXMuCglNb3ZlIDE2IGJpdCBhcGkgZGVmaW5pdGlvbnMgb3V0IG9mIGNvbW1kbGcuaCB0byBjZGxnLmgKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wNS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogU2VyZ2UgSXZhbm92CgktIEFkZGVkIGhhbmRsaW5nIG9mIFdNX01PVVNFQUNUSVZBVEUgbWVzc2FnZQoJLSBBZGRlZCBpbl9mb2N1cyBmaWVsZCB0byBpbnRlcm5hbCBsaXN0Ym94J3Mgc3RydWN0dXJlLiBUaGlzIGZsYWcgaXMgc2V0IG9uCgkgIHJlY2VpdmluZyBXTV9TRVRGT0NVUyBtZXNzYWdlIGFuZCBpcyByZXNldGVkIG9uIFdNX0tJTExGT0NVUy4gQWxsIGNhbGxzIHRvCgkgIEdldEZvY3VzIGZ1bmN0aW9uIHdlcmUgcmVwbGFjZWQgd2l0aCBjaGVja3Mgb2YgdGhpcyBmbGFnLgoJLSBJbiBMSVNUQk9YX0hhbmRsZUxCdXR0b25Eb3duOiBmb2N1cyBpcyBzZXQgb25seSBpZiAnaW5fZm9jdXMnIGZsYWcgaXMKCSAgY2xlYXIKCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCVN0YXJ0ZWQgbG9jYWwgbmFtZSBzZXJ2ZXIgZnJhbWV3b3JrLgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgUHJpbnRTZXR1cCBkaWFsb2cgYW5kIHN1cHBvcnQgZm9yIGhvb2tzIGFuZCB0ZW1wbGF0ZXMuCglNb3ZlIDE2IGJpdCBhcGkgZGVmaW5pdGlvbnMgb3V0IG9mIGNvbW1kbGcuaCB0byBjZGxnLmgKCgkqIGNvbnRyb2xzL2VkaXQuYzogSGVubmluZyBIb2ZmbWFubgoJRG9uJ3Qgc2VuZCBFTl9DSEFOR0UgYWZ0ZXIgcGFpbnRpbmcgdGhlIGVkaXQuCglTZW5kIGl0IHdoZXJldmVyIHRleHQgaXMgY2hhbmdlZC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNvbT4KCU1vdmVkIHRoZSBFTl9VUERBVEUgbm90aWZpY2F0aW9uIG91dCBvZiB0aGUgcGFpbnQgaGFuZGxlci4gSW5zdGVhZCwKCXRoZSBub3RpZmljYXRpb24gaXMgc2VudCB3aGVuIGFuIEludmFsaWRhdGVSZWN0IGlzIG1hZGUgYWZ0ZXIKCW1vZGlmeWluZyB0aGUgdGV4dC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUZyYW5jb2lzIE1ldGhvdCAoTWFjYWRhbWlhbikKCUZpeGVkIHRoZSBibGFuayBjb2xvciBwYWxldHRlIHRvb2x0aXAgYnVnIGJ5IHRyaWdnZXJpbmcgYSByZWZyZXNoIG9mCgl0aGUgdG9vbHRpcCB3aXRoIFVwZGF0ZVdpbmRvdyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGNhbGxpbmcgZGlyZWN0bHkgdGhlCglyZWZyZXNoIGZ1bmN0aW9uLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2V4dGVybmFsLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvZXh0X2RlYnVnZ2VyLmM6CglKYW1lcyBKdXJhbiA8anVyYW5AY3NlLnBzdS5lZHU+CglERUJVR19FeHRlcm5hbERlYnVnZ2VyKCkgbmVlZHMgdG8gYmUgYSBwYXJ0IG9mIHdpbmUsIG5vdCB3aW5lZGJnLgoKMjAwMC0wNS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW46CglEbyBub3QgY2xlYXIgc3VmZml4ZXMgbGlzdCAoYnJlYWtzIEJTRCBtYWtlKS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBpbmNsdWRlL3dpbnNwb29sLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglNb3ZlIHdpbnNwb29sIHRvIHVuaWNvZGUuCglNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrZWQgdGhlIHRodW1iIGRyYXdpbmcgY29kZSwgdGh1bWIgY2FsY3VsYXRpb24gY29kZSwgY2hhbm5lbAoJY2FsY3VsYXRpb24gY29kZSwgYW5kIGNvcnJlY3RlZCBzb21lIGJ1Z3MgaW4gaG93IHRpY3MgYXJlIGRyYXduIGFuZAoJaG93IGNsaWNrcyBhcmUgaGFuZGxlZC4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUxvdWlzLVBoaWxpcHBlIEdhZ25vbiAob2YgTWFjYWRhbWlhbiBUZWNobm9sb2dpZXMgZm9yIENvcmVsKQoJQWRkZWQgZXZlbnQgaGFuZGxlciBmb3IgV01fTUJVVFRPTkRPV04gKHNlbmRzIFdNX1BBU1RFIG1lc3NhZ2UpLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVVzZSBjbGlwcGluZyByZWdpb25zIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIHByb2Nlc3NpbmcgcGVyZm9ybWVkIHdoZW4gdGhlCgl0b29sYmFyIGlzIHJlcGFpbnRpbmcuICBSZWR1Y2VzIHByb2Nlc3NpbmcgYnkgYXBwcm94aW1hdGVseSA4NS05NSUgaW4gbW9zdAoJY2FzZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeGVzIGNyYXNoIHdoZW4gY2FsbGluZyBUcmVldmlld19FbmRFZGl0TGFiZWxOb3cgYW5kIG5vIG5vZGUgaXMKCWN1cnJlbnRseSBlZGl0ZWQuCgoyMDAwLTA1LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9mbGF0c2IuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglEZWZlciB0byBzdGFuZGFyZCBzY3JvbGxpbmcgQVBJcyBmb3Igbm9uLWZsYXRTQiBzcGVjaWZpYyBmdW5jdGlvbnMgc28KCXRoYXQgZmxhdFNCcyBzaG93IHVwIGFuZCBiZWhhdmUgcHJvcGVybHksIGp1c3Qgbm90IHdpdGggZmxhdCBwcm9wZXJ0aWVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJUm9iIEZhcm51bSA8cm9iZkBjb2Rld2VhdmVycy5jb20+CglTZXBhcmF0ZSBvdXQgdGhlIDMyYml0IGNhc2UgZnJvbSB0aGUgMjRiaXQgY2FzZSwgYW5kIGNvcHkgM2J5dGVzIG9mCglzb3VyY2UgZm9yIGV2ZXJ5IDRieXRlcyBvZiBpbnB1dCwgaW50byB0aGUgZGVzdGluYXRpb24gZm9yIHRoZSAyNGJpdAoJY2FzZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsIHdpbjMyL2ZpbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJU29ydGVkIG91dCBhIGZldyBtaXNwbGFjZWQgZGVmaW5pdGlvbnMuCglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBmaWxlIGhhbmRsaW5nIGFuZCB2aXJ0dWFsCgltZW1vcnkgbWFuaXB1bGF0aW9uLgoJQWRkZWQgSXNUZXh0VW5pY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBoYW5kbGluZyBmb3IgVFZTX1NJTkdMRUVYUEFORC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdGVkIHRoZSBwcm9ibGVtIHdoZXJlIGEgdGFiIGNvbnRyb2wgbWFya2VkIG11bHRpbGluZSBidXQgaGFzCglvbmx5IG9uZSB0YWIgd2FzIGJlaW5nIGp1c3RpZmllZCB0byBmaWxsIHRoZSB3aG9sZSB0YWIgc3BhY2UuCgoJKiBtc2Rvcy9kcG1pLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29tbWVudGVkIG91dCBicm9rZW4gX19hc21fXywgYWRkZWQgY29tbWVudHMgd2hlcmUgaXQgaXMgYnJva2VuLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUluc2VydGVkIGEgbWlzc2luZyBjYWxsIHRvIFNldFdpbmRvd1BvcygpLiBXaXRoIHRoaXMgY2hhbmdlIHRoZSBoZWFkZXIKCWNvbnRyb2wgaXMgdmlzaWJsZSBhZ2FpbiBpbiBsaXN0IHZpZXdzIHdpdGggcmVwb3J0IHN0eWxlLgoKCSogTWFrZS5ydWxlcy5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluOgoJUmV2aXZlZCB0aGUgR0VOX0NfU1JDUyB2YXJpYWJsZSB0byBzdXBwb3J0IHdyYyBsZXgveWFjYyBzb3VyY2VzLgoKMjAwMC0wNS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglTZW5kIGEgbm9ybWFsIG1vdXNlIG1lc3NhZ2UgY29kZSBpbiBXTV9QQVJFTlROT1RJRlksIGV2ZW4gaWYgdGhlCglhY3R1YWwgbWVzc2FnZSB3YXMgYSBub24tY2xpZW50IG9uZS4KCgkqIHNlcnZlci9yZWdpc3RyeS5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS94MTFkcnYuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb3BlbmdsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gVXBkYXRlZCBBUEkgZmlsZXMKCS0gQmV0dGVyIGhlYWRlcnMgYW5kIHByb3RvdHlwZSBjaGVja2luZwoJLSBQcm90b3R5cGUgY2hlY2tpbmcgbm93IGNhbGxlZCAtLXByb3RvdHlwZSBpbnN0ZWFkIG9mIC0taGVhZGVycwoJLSBOZXcgb3B0aW9ucyAtLWhlYWRlcnMte2R1cGxpY2F0ZWQsbWlzcGxhY2VkfSBmb3IKCSAgZHVwbGljYXRlZC9taXNwbGFjZWQgZnVuY3Rpb25zIGNoZWNraW5nIG9mIHRoZSBoZWFkZXJzLgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJZiBzeXN0ZW0gZG9lc24ndCBoYXZlIE9wZW5HTCwgZG9uJ3QgcmVmZXIgdG8gbGlib3BlbmdsMzIuc28uCgoJKiBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmM6CglBYmV5IEdlb3JnZSAob2YgTWFjYWRhbWlhbi9Db3JlbCkKCVdoZW4geW91IG9wZW4gZmlsZXMgd2l0aCBFbWJlZGRlZCBvYmplY3RzLCB0aGV5IHdlcmUgbm90IGdldHRpbmcgZHJhd24KCWNvcnJlY3RseS4gIFdoZW4geW91IHBhc3RlIE9MRSBvYmplY3RzIHdpdGggcHJlc2VudGF0aW9uIGRhdGEsIHRoZXkKCXdlcmUgbm90IGdldHRpbmcgZHJhd24gY29ycmVjdGx5LgoKCSogY29udHJvbHMvbWVudS5jOiBSb2IgRmFybnVtIDxyb2JmQGNvZGV3ZWF2ZXJzLmNvbT4KCVBvc3QgYSBXTV9DQU5DRUxNT0RFIG1lc3NhZ2UgdG8gd2FrZSB1cCB0aGUgaW50ZXJuYWwgbWVudSBoYW5kbGluZwoJY29kZS4gVGhpcyBmaXhlcyB0aGUgcHJvYmxlbSBvZiBhIG1lbnUgYmVpbmcgb3JwaGFuZWQgd2hlbiB0aGUgcGFyZW50Cgl3aW5kb3cgZGlzYXBwZWFycywgb3IgaWYgdGhlIHBhcmVudCBsb3NlcyBmb2N1cy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4IGEgbWlzbWF0Y2ggYmV0d2VlbiBmb3JtYXQgc3RyaW5nIGFuZCBwYXJhbWV0ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldEJ1ZGR5IG5vIGxvbmdlciBvdmVyd3JpdGVzIGl0cyBzdXBlcmNsYXNzJyBXbmRQcm9jIHByb3BlcnR5IHdoZW4KCXRoZSBidWRkeSBoYXMgYWxyZWFkeSBiZWVuIHN1YmNsYXNzZWQsIGVsaW1pbmF0aW5nIHRoZSBpbmZpbml0ZSBsb29wCgl0aGF0IHJlc3VsdGVkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglDbGVhbmVkIHVwIFgxMSBleHRlbnNpb24gdGVzdHMuCgoJKiBjb250cm9scy9lZGl0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jb20+CglDYXB0dXJlIF5WLF5YLF5DIGFuZCB0cmFuc2xhdGUgaXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbWVzc2FnZSBmb3IKCXBhc3RlLCBjdXQsIGNvcHkuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX3NwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeGVkIHRoZSBPcGVuR0wzMiBzcGVjIGZpbGUgKGFuZCB0aGUgbWFrZV9vcGVuZ2xfc3BlYyB0b29sKQoJLSBwcmV2ZW50IEhhbGZMaWZlIGZyb20gY3Jhc2hpbmcgd2hlbiBpdCBmcmVlcyB0aHJlZSB0aW1lcyB0aGUgc2FtZQoJICByZW5kZXJpbmcgY29udGV4dAoKCSogZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvdmdhLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcHJvdmVkIERpcmVjdERyYXdQYWxldHRlIGhhbmRsaW5nIChzZXQgaXQgb24gaW5pdCwgbm90IGV2ZXJ5IHRpbWUgaXQKCWNoYW5nZXMpLiBBZGRlZCBWR0FfV3JpdGVDaGFycygpIGZ1bmN0aW9uLgoKCSogbXNkb3MvaW50MzMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTY2FsZSBtb3VzZSBjb29yZGluYXRlcyB0byBkZWZhdWx0IHdpZHRoIDY0MC4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIFdJTkVfRGlyZWN0RHJhdyBhIGRlY29yYXRpb25sZXNzIHBvcHVwIHdpbmRvdy4gRml4ZXMgbW91c2UKCWNvb3JkaW5hdGVzIHByZXZpb3VzbHkgb2Zmc2V0IGJ5IHRoZSBpbnZpc2libGUgZGVjb3JhdGlvbnMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCSN1bmRlZiBERUxFVEUgYmVmb3JlIChyZSlkZWZpbmluZyBpdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4ZWQgdG9vbHRpcHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJUmVkdWNlIHRvb2xiYXIgcmVkcmF3aW5nIGFuZCBmbGlja2VyIGJ5IGNhbGxpbmcgUmVkcmF3V2luZG93KCkgaW4KCVRPT0xCQVJfTW91c2VNb3ZlKCkgb25seSBpZiBob3QgZWZmZWN0IGFwcGxpZXMgdG8gdGhlIGN1cnJlbnQgaG90CglidXR0b24uICBSZXN0b3JlIGJIb3QgZmxhZyBvZiBob3QgYnV0dG9uIGluIFRPT0xCQVJfTEJ1dHRvblVwKCkgdG8KCXJlc3RvcmUgaG90IGVmZmVjdCBwcm9wZXJseS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogU2VyZ2UgSXZhbm92CglGaXhlZCBXTV9MQlVUVE9OREJMQ0xLIGhhbmRsaW5nLgoKCSogaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJU2V0IGFuZCByZXRyaWV2ZSB0aGUgd2luZG93IGljb24gdGhhdCBpcyBkcmF3biB1bmRlciBtYW5hZ2VkIG1vZGUKCShiYXNlZCBvbiB0aGUgd29yayBvZiBBbmRyZXcgTGV3eWNreSBmb3IgQ29yZWwpLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdGVkIGEgcHJvYmxlbSBvZiB3aGVuIG9sZEhpdCBpcyBuZWdhdGl2ZSBhbmQgd2UgdHJ5IHRvIHVzZSBpdCBhcwoJYW4gaW5kZXggaW50byB0aGUgYnV0dG9ucyBhcnJheS4KCgkqIGluY2x1ZGUvd2luZG93cy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVNob3VsZCBpbmNsdWRlIGNvbW1kbGcuaC4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRGVmaW5lIHRoZSBfWDg2XyBtYWNybyBvbiBJbnRlbCBwcm9jZXNzb3JzLgoKCSogY29udHJvbHMvZWRpdC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglTb21lIHBhcnQgb2YgRURJVF9FTV9MaW5lTGVuZ3RoIGNvZGUgd2FzIGNvbW1lbnRlZCAoYnJva2VuKS4gUmVzdG9yZWQKCXRoZSBjYXBhYmlsaXR5IHRvIGNhbGN1bGF0ZSB0aGUgcmVtYWluaW5nIG5vbi1zZWxlY3RlZCBjaGFycyBvZiBhCglzZWxlY3Rpb24gYXJlYS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVtb3ZlIHRoZSBQUklNQVJZU1VSRkFDRSBhdHRyaWJ1dGUgZnJvbSBiYWNrIGJ1ZmZlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSWYgYSBsaXN0dmlldyBpcyBjcmVhdGVkIHdpdGggTFZTX05PQ09MVU1ORUhFQURFUiB0aGVuIHdpbmUgY3JlYXRlcyB0aGUKCWhlYWRlciBsaWtlIG5vcm1hbCBidXQganVzdCBzZXRzIGl0IG5vdCB2aXNpYmxlLiBUaGlzIGZpeCBsYXlzIG91dAoJdGhvc2Ugc3VwcG9zZWRseSBub25leGlzdGVudCBoZWFkZXJzIHRvIHNpemUgMCwwLiBTbyB0aGF0IGV2ZW4gaWYgdGhleQoJYmVjb21lIHZpc2libGUgdGhleSBhcmUgbm90IGRyYXduLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaDoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVtb3ZlIHRoZSBkaXJlY3QgY2FsbCBpbnRvIGNvcmUgKERJQUxPR19Eb0RpYWxvZ0JveCkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUluaXRpYWxpemUgdGhlIGJhY2stYnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgVlRhYmxlLgoKCSogZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX3NwZWMsIHdpbmUuaW5pOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgb3B0aW9uIHRvIGdldCBkb3VibGUtYnVmZmVyZWQgZGVza3RvcAoJLSBpbXBsZW1lbnRlZCB3Z2xVc2VGb250Qml0bWFwc0EgYW5kIHdnbERlbGV0ZUNvbnRleHQKCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2R1bXByZXMuaCwgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmgsIHRvb2xzL3dyYy9wYXJzZXIuaCwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvdXRpbHMuaCwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbiwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gSW1wbGVtZW50ZWQgYW5pbWF0ZWQgY3Vyc29ycyBhbmQgaWNvbnMgcmVzb3VyY2UgdHlwZXMuCgktIEFkZGVkIHBhcnRpYWwgc3VwcG9ydCBmb3IgZm9udCByZXNvdXJjZXMgKHVzZXIgc3VwcGxpZWQgZm9udGRpciBpcwoJICByZXF1aXJlZCkuCgktIEFsbCByZXNvdXJjZXMgd2l0aCBpbmxpbmUgZGF0YSAoYSBsYSBSQ0RBVEEpIG5vdyBzdXBwb3J0IGxhbmd1YWdlLAoJICB2ZXJzaW9uIGFuZCBjaGFyYWN0ZXJpc3RpY3MgZGF0YS4KCS0gSW1wbGVtZW50ZWQgcmVzb3VyY2UgbmFtZSBkdXBsaWNhdGUgY2hlY2tzLiBJdCBpcyBub3cgYW4gZXJyb3IgaWYKCSAgdHdvIHJlc291cmNlcyBvZiB0aGUgc2FtZSB0eXBlIGhhdmUgdGhlIHNhbWUgbmFtZS4KCS0gQnVnZml4OiBMYW5ndWFnZSBwcm9wYWdhdGlvbiB3YXMgbm90IGNvcnJlY3Qgd2hlbiAucmVzIGZpbGVzIHdlcmUKCSAgZ2VuZXJhdGVkLgoJLSBCdWdmaXg6IFZFUlNJT05JTkZPIG5vdyBoYW5kbGVzIG1lbW9yeSBvcHRpb25zLgoJLSBCdWdmaXg6IHJlc291cmNlIG5hbWVzIGFuZCB0aGUgcmVzb3VyY2UgdHlwZSBtYXkgYmUgZXF1YWwgKGUuZy4gTUVOVQoJICBNRU5VIHsuLi59KS4gVGhpcyBzdXBwb3J0IHdhcyBtaXN0YWtpbmdseSBkZWxldGVkIGluIHRoZSB1cGdyYWRlIHRvCgkgIHRoZSBidWlsdGluIHByZXByb2Nlc3Nvci4KCSAgVGhlIHN0YW5kYWxvbmUgTEFOR1VBR0Ugc2V0dGluZyBiZWNhbWUgY29udGV4dCBzZW5zaXRpdmUgYXMgYSBjb25zZXF1ZW5jZQoJICBvZiB0aGlzLiBOb3cgaXQgKm11c3QqIGVuZCB3aXRoIGEgbmV3bGluZSAqYWZ0ZXIqIGJvdGggZXhwcmVzc2lvbnMgYW5kCgkgIG5vIG5ld2xpbmVzIGFyZSBhbGxvd2VkIHdpdGhpbiB0aGUgbGluZSAodGhlIHN0YXRlbWVudCBtdXN0IGZpdCBvbiBvbmUKCSAgbGluZSkuIFRoaXMgaXMgbm8gcHJhY3RpY2FsIHByb2JsZW0gdGhvdWdoLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL291dHB1dC5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJU2VuZCByZWd1bGFyIG1lc3NhZ2VzIHRvIHN0ZG91dCBzbyB0aGF0IHRoZXkgYXJlIHNlcGFyYXRlIGZyb20KCXByb2dyZXNzIG1lc3NhZ2VzLgoKCSogZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZWdyZXNzaW9uIHRlc3RpbmcgdXNpbmcgQ1ZTLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5OgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gU21hbGwgZml4ZXMvdXBkYXRlcwoJLSBBZGQgc3VwcG9ydCBmb3IgdGhlIERQQ09OTkVDVElPTl9ESVJFQ1RQTEFZTE9CQlkgZmxhZwoKCSogZG9jdW1lbnRhdGlvbi93aW5lZGJnOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBIGJpdCBvZiBkb2N1bWVudGF0aW9uIG9uIG5ldyBkZWJ1Z2dpbmcgZmVhdHVyZXMuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogSmFtZXMgSnVyYW4gPGp1cmFuQGNzZS5wc3UuZWR1PgoJU2VhcmNoUGF0aEEgbmVlZHMgdG8gc2V0IHRoZSBsYXN0IGVycm9yIHRvIEVSUk9SX0ZJTEVfTk9UX0ZPVU5EIHdoZW4KCWl0IGRvZXMgbm90IGZpbmQgdGhlIGZpbGUuCgoJKiBzY2hlZHVsZXIvZGVidWdnZXIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJVXNlIFdBUk4oKSBpbnN0ZWFkIG9mIFRSQUNFKCkgaW4gRGVidWdPdXRwdXRBKCkuCgoJKiBtZW1vcnkvaGVhcC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSGVhcEZyZWUgb24gYSBOVUxMIHB0ciBzaG91bGQgcmV0dXJuIFRSVUUuCgoyMDAwLTA1LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglVcGRhdGUgbkl0ZW1XaWR0aCBpbiBMSVNUVklFV19TZXRJdGVtKCkgaWYgTFZTX0xJU1Qgb3IgTFZTX1NNQUxMSUNPTgoJbW9kZSBhbmQgaXRlbSB0ZXh0IGlzIHdpZGVyIHRoYW4gdGhlIGN1cnJlbnQgbkl0ZW1XaWR0aC4KCgkqIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT5VCglGaXhlZCBpbml0aWFsaXphdGlvbiBvZiBJTlNUQU5DRURBVEEgaW4gSW5pdFRhc2soKS4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU3RnT3BlblN0b3JhZ2UxNjogY29ycmVjdCBhcmd1bWVudHMgdG8gdGhlIENyZWF0ZUZpbGUgY2FsbC4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRE9TRlNfRG9HZXRGdWxsUGF0aE5hbWU6IHRlcm1pbmF0ZSBzdHJpbmcgd2VoIGNhbGxlZCBsaWtlIC5cXGZpbGUKCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVwbGFjZSB0aGUgY2FsbHMgdG8gbWFsbG9jIGJ5IGNhbGxzIHRvIEhlYXBBbGxvYyBhbmQgZnJpZW5kcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVzIHRoZSBsaW5lIG9mIGdhcmJhZ2UgYXQgdGhlIGJvdHRvbSBvZiBpbWFnZXMgYW5kIHRoZSBmYWN0IHRoYXQKCXRoZSBidXR0b25zIGluIHRoZSBvcGVuIGRpYWxvZyBib3ggd2hlcmUgdG9vIHRhbGwuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL29sZTJjb252LnNwZWMsIGRsbHMvb2xlMzIvb2xlMnByb3guc3BlYywgZGxscy9vbGUzMi9vbGUydGhrLnNwZWMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9vbGUyY29udi5zcGVjLCBpZjE2MzIvb2xlMnByb3guc3BlYywgaWYxNjMyL29sZTJ0aGsuc3BlYywgZGxscy9NYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNb3ZlZCBpZjE2MzIvb2xlMntjb252LHByb3gsdGhrfS5zcGVjIGludG8gZGxscy9vbGUzMi4KCjIwMDAtMDUtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2QzZGNhcHMuaCwgaW5jbHVkZS9kM2R0eXBlcy5oLCBpbmNsdWRlL2Rzb3VuZC5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgcmVtYWluaW5nIERpcmVjdFggM0QzIDYmNyAzRCBpbnRlcmZhY2VzLgoJLSBBZGRlZCBkM2RjYXBzLmgsIGQzZHR5cGVzLmggYW5kIHJlYXJyYW5nZWQgY29udGVudHMgYWNjb3JkaW5nIHRvCgkgIERpcmVjdFggNyBoZWFkZXJzLgoJLSBGaXhlZCBkc291bmQuaCBpbmNsdWRlIGxpc3QgKGQzZC5oLT5kM2R0eXBlcy5oKS4KCgkqIHByb2dyYW1zL3JlZ2FwaS9SRUFETUU6CglKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglNaW5vciB1cGRhdGUuCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV90ZXN0LgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUdldFJlbEFicyBmb3Igc29tZSByZWFzb24gdGFrZXMgMiBwYXJhbWV0ZXJzLCBldmVuIHRob3VnaCB0aGUgc2Vjb25kCglvbmUgaXMgaWdub3JlZCBhdCBsZWFzdCBvbiBXaW5kb3dzIE5UIDMuNTEgYWNjb3JkaW5nIHRvIE1hcmN1cyBNZWlzc25lci4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU2hlcmkgU3RlZXZlcwoJVGhlIGVkaXQgaXMgbm93IGRldGVjdGVkIGNvcnJlY3RseSBpZiB0aGUgcGFyZW50IGlzIGEgY29tYm8gYm94LiBJdAoJd2Fzbid0IHdvcmtpbmcgd2hlbiB0aGUgY29tYm9ib3ggd2FzIHN1cGVyY2xhc3NlZC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0CglTeXN0ZW0gaWNvbnMgaW4gdGhlIHNtYWxsIGNhcHRpb24gYmFycyBhcmUgZGlzcGxheWVkIHdpdGggdGhlIHJpZ2h0IHNpemUuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX25vcm0sIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYywgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29wZW5nbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQ29udmVydCBDKysgY29tbWVudHMgdG8gcmVndWxhciBDIGNvbW1lbnRzLgoKCSogZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIElEaXJlY3REcmF3U3VyZmFjZTo6U2V0UGFsZXR0ZSBzZXQgdGhlIHN1cmZhY2UncyBESUJTZWN0aW9uIGNvbG9yCgltYXAgdG8gcG9pbnQgdG8gdGhlIElEaXJlY3REcmF3UGFsZXR0ZSdzIG93biBkZXB0aCBjb252ZXJzaW9uIGNvbG9yIG1hcC4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW5pdGlhbGl6ZSBhbiBpZGVudGl0eSBtYXBwaW5nIGluIENyZWF0ZVBhbGV0dGUgaWYgbm8gZGVwdGggY29udmVyc2lvbgoJaXMgbmVjZXNzYXJ5LiBBbHNvIGZpeGVkIGEgd2FybmluZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIFgxMURSVl9ESUJfTWFwQ29sb3IgbWFwIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNvbG9yIGluZGV4IGlmIHRoZQoJWEltYWdlIHBpeGVsJ3MgcGh5c2ljYWwgY29sb3IgaXMgc3RpbGwgdGhlIHNhbWUuCgoyMDAwLTA1LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglVc2UgdGhlIGNvcnJlY3QgZGlzcGxheSBmb3IgY2FjaGVkIG1ldHJpY3MgZmlsZSBuYW1lLgoJU3RvcmUgbWV0cmljcyBpbiBzcGVjaWZpZWQgY29uZmlnIGRpci4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvb3B0aW9ucy5oLCB3aW5lLmluaToKCU1ha2Ugc3VyZSBhbGwgV2luZSBwcm9jZXNzZXMgc2hhcmUgdGhlIHNhbWUgWCBkaXNwbGF5LgoJSW5oZXJpdCAtLW1hbmFnZWQgb3B0aW9uIGFjcm9zcyBwcm9jZXNzZXMuCglBZGQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBkaXNwbGF5IGFuZCBtYW5hZ2VkIG1vZGUgaW4gY29uZmlnIGZpbGUuCgoJKiBkbGxzL2RkcmF3L2NvbnZlcnQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgdW5zaWduZWQgaW50IGluc3RlYWQgb2YgdW5zaWduZWQgc2hvcnQgaW4gRGlyZWN0RHJhdwoJZGVwdGgtY29udmVyc2lvbiBjb2xvciBtYXAuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgY2FsbHMgdG8gU2V0Rm9jdXMgd2hlbiB0aGV5IGFyZSB1bm5lY2Vzc2FyeS4KCjIwMDAtMDUtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglEYXZpZCBCbGFjayA8ZGJsYWNrQGJ0aW50ZXJuZXQuY29tPgoJSW1wbGVtZW50ZWQgVFZNX0VESVRMQUJFTEEsIHBsdXMgc29tZSBpbXByb3ZlbWVudHMgdG8gRW5kTGFiZWxFZGl0Tm93LgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJTW9yZSB2ZXJib3NlIGVycm9ycy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4ZWQgYm9yZGVycyBvZiB3aW5kb3dzIHdoaWxlIGRyYWdnaW5nIG9yIHNpemluZyB0byBtYXRjaAoJVFdFQUtfV2luZUxvb2sgc2V0dGluZy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gYmVmb3JlIDxzeXMvbW1hbi5oPi4KCgkqIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvZGRlbWwuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZGRlbWwuYywgZGxscy91c2VyL2RkZW1sLnNwZWMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9kZGVtbC5zcGVjLCBpZjE2MzIvb2xlMm5scy5zcGVjOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1vdmVkIERERU1MIGludG8gZGxscy91c2VyLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBpbmNsdWRlL3NlcnZlci5oLCBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHJlZ2lzdHJ5IHZhbHVlcyBsYXJnZXIgdGhhbiB0aGUgc2VydmVyIGJ1ZmZlci4KCVdoZW4gbG9hZGluZyBhIHJlZ2lzdHJ5IGZpbGUsIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIG92ZXJsYXAgYmV0d2VlbgoJa2V5IG5hbWUgYW5kIGZpbGUgY29udGVudHMgYmFzZWQgb24gdGhlIGZpcnN0IGtleSBuYW1lLgoJUmVtb3ZlZCB2MSBzYXZpbmcgY29kZS4KCVNhdmUgVVNFUlwuRGVmYXVsdCBzZXBhcmF0ZWx5IGludG8gfi8ud2luZS91c2VyZGVmLnJlZy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXByb3ZlZCBESUJTZWN0aW9uIHN1cHBvcnQgZm9yIElEaXJlY3REcmF3U3VyZmFjZTo6R2V0REMuCgoJKiBncmFwaGljcy94MTFkcnYvb3BlbmdsLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzZXQgZGVidWcgbWVzc2FnZXMgYWZ0ZXIgYSBUUkFDRV9PTiB0ZXN0CgktIHByZXZlbnQgY3Jhc2ggd2hlbiBtYWtpbmcgdGhlIE5VTEwgY29udGV4dCBjdXJyZW50CgoJKiBjb250cm9scy9tZW51LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJV2hlbiBuZXcgbWVudSBJZCBpcyBub3QgZm91bmQgb3IgaW5kZXggPiBuaXRlbXMsIGluc2VydCB0aGUgbmV3IG1lbnUKCWF0IGVuZCBvZiBjdXJyZW50IG1lbnUuCgoyMDAwLTA1LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgaW5jbHVkZS9kZHJhdy5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgYWJpbGl0eSB0byBjcmVhdGUgM0QzIGludGVyZmFjZXMgZm9yIFhsaWIKCS0gQ2hhbmdlZCBERF9PSyB0byBEM0RfT0sgaW4gc29tZSBwbGFjZXMgZm9yIGNvbnNpc3RlbmN5CgktIENsZWFuZWQgdXAgc29tZSBjb21waWxlciB3YXJuaW5ncyBwcmVzZW50IHdpdGhvdXQgREdBMgoJLSBDaGFuZ2VkIG9yZGVyIGZvciBEaXJlY3REcmF3RW51bWVyYXRlRXhBIHRvIGVudW1lcmF0ZSBhdCBsZWFzdAoJICB3aGF0IGFiaWxpdGllcyBhcmUga25vd24gcmF0aGVyIHRoYW4gYmFpbGluZyBvbiB1bnN1cHBvcnRlZCBmbGFncwoJLSBBZGRlZCBEaXJlY3REcmF3Q3JlYXRlRXggc3R1YgoKMjAwMC0wNS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglEaXN0aW5ndWlzaCBSQURJT0NIRUNLIHN0eWxlIG1lbnUgaXRlbXMgZnJvbSBzdGFuZGFyZCBjaGVja21hcmsgbWVudQoJaXRlbXMuCgoJKiBjb250cm9scy9idXR0b24uYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglMaWtlIHRoZSBBVVRPUkFESU9CVVRUT04sIHRoZSBwYXJlbnQgb2YgYSBSQURJT0JVVFRPTiBzdHlsZSBidXR0b24KCXNob3VsZCBiZSBzZW50IGEgQk5fQ0xJQ0tFRCB3aGVuIGl0IHJlY2VpdmVzIHRoZSBmb2N1cy4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0RnVsbFBhdGhuYW1lOiBhZGQgbWlzc2luZyB0ZXJtaW5hdGlvbiB0byB0aGUgc3RyaW5nLgoKCSogdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGJ5dGUgb3JkZXIgb24gU29sYXJpcyBhbmQgRnJlZUJTRC4KCgkqIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luZV9nbC5oLCBpbmNsdWRlL3gxMWRydi5oLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgZGxscy9vcGVuZ2wzMi8uY3ZzaWdub3JlLCBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX2V4dCwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9ub3JtLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX3NwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5oLCBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmgsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgT3BlbkdMLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhYnNvbHV0ZSBwYXRoIHRvIHBpZGwgZ2VuZXJhdGlvbi4KCjIwMDAtMDUtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUZpeGVkIGJ1ZmZlciBvdmVyZmxvdy4KCgkqIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMvaW1hZ2VobHAvaW50ZWdyaXR5LmMsIGRsbHMvaW1hZ2VobHAvc3ltYm9sLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy90YXBpMzIvcGhvbmUuYywgd2luZG93cy9kcml2ZXIuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBkZWJ1ZyBtZXNzYWdlcy4KCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgaW5jbHVkZS9yaWNoZWRpdC5oLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9vbGUyZGlzcC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hZHZhcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvaW1hZ2VobHAuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcmljaGVkMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIENoZWNrIGZvciBtaXNzaW5nIG1vZHVsZXMgaW4gbW9kdWxlcy5kYXQuCgktIE5ldyBvcHRpb25zIC0tZGVidWctbWVzc2FnZXMgZm9yIGRlYnVnIG1lc3NhZ2UgY2hlY2tpbmcgKHR1cm5lZCBvZmYKCSAgYnkgZGVmYXVsdCkKCS0gRG8gbm90IGRpc2NhcmQgdGhlIGFyZ3VtZW50IG5hbWUgKHVzZSBpbiBkZWJ1ZyBtZXNzYWdlIGNoZWNraW5nKQoJLSBJbXByb3ZlZCBwYXJzaW5nCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUZpeGVkIGFzbSgpIGNvbnN0cmFpbnRzLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgJXAgaW4gcHJpbnRmIChub3cgdXNpbmcgd3NwcmludGYgd2hpY2ggZG9lc24ndCBzdXBwb3J0IGl0KS4KCUFkZGVkIFRocmVhZElkIGFuZCBQcm9jZXNzSWQgaW50ZXJuYWwgdmFycy4KCUFsbG93IGF0IHN0YXJ0dXAgdG8gcGljayB1cCBhIHByb2Nlc3MgdG8gZGVidWcuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZGl2aXNpb24gYnkgemVyby4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBxdWlya3MgKHJhbmdlIGlzIDMyIGJpdCwgcGFnZSB1cC9kbiBtaXNtYXRjaCBvbiBIWiB0cmFja2JhcnMpLgoKCSogd2luZG93cy9zY3JvbGwuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTY3JvbGwgb2ZmLXNjcmVlbiBjb250cm9scyB3aGVuIHNjcm9sbCByZWN0YW5nbGUgaXMgTlVMTC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGluY2x1ZGUvdGFiLmg6CglLZW4gVGhvbWFzZXMgPGtlbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCB0YWIgY29udHJvbCBzdHlsZSBUQ1NfSE9UVFJBQ0sgKHRhYnMgYXJlIGhpZ2hsaWdodGVkIG9uCgltb3VzZS1vdmVyKS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHRoZSBiYWNrZ3JvdW5kIGZyb20gdGhlIG5ldyBpbWFnZSB3aGVuIGl0IGlzIGJlaW5nIHJlcGxhY2VkCgl3aXRoIGEgUmVwbGFjZUltYWdlLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvdGFzay5jOgoJQmVybmQgSGVyZCA8aW5mb0BoZXJkc29mdC5jb20+CglNYWtlIHN1cmUgaEluc3RhbmNlIGlzIGEgcHJvcGVyIGdsb2JhbCBoYW5kbGUgYW5kIG5vdCBhIHNlbGVjdG9yCgl2YWx1ZS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBKZWFuLUNsYXVkZSBCYXRpc3RhCglQcmludERpYWxvZyBub3cgY3JlYXRlcyBhIERDIHdoZW4gcmVjZWl2aW5nIGEgUERfUkVUVVJOREMgZmxhZy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDbGVhbiB1cCB0aGUgZHJhd2luZyBjb2RlIGFmdGVyIGEgbGFiZWwgdXBkYXRlLiBUaGVyZSB3ZXJlIHByb2JsZW1zIGlmCgl0aGUgbmV3IGxhYmVsIGlzIHNob3J0ZXIgdGhhdCB0aGUgb2xkIGxhYmVsIGZyYWdtZW50cyBvZiB0aGUgb2xkIGxhYmVsCgl3ZXJlIGxlZnQgZHJhd24uCgoJKiB3aW5kb3dzL3dpbi5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ2xlYXIgbWVudSBoYW5kbGUgYWZ0ZXIgZGVzdHJveWluZyBtZW51LgoKCSogY29udHJvbHMvbWVudS5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVJldmFsaWRhdGUgbWVudSBoYW5kbGUgaW4gbXQuaFRvcE1lbnUgYWZ0ZXIgRGlzcGF0Y2hNZXNzYWdlLgoKCSogd2luZG93cy9kaWFsb2cuYzogQmVybmQgSGVyZCA8aW5mb0BoZXJkc29mdC5jb20+CglQYXNzIENUTERBVEEgYXMgU0VHUFRSIGZvciAxNi1iaXQgcHJvZ3JhbXMuCgoJKiBkbGxzL3ZlcnNpb24vdmVyMTYuYzoKCUFsZXhhbmRlciBGcmluayA8QWxleGFuZGVyLkZyaW5rQFVuaS1NYWluei5ERT4KCVByZXZlbnQgcG9zc2libGUgTlVMTCBwb2ludGVyIGFjY2Vzcy4KCjIwMDAtMDUtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIFdpbmUgd2FzIHBhc3NpbmcgdGhlIHdyb25nIGh3bmQgYXMgdGhlIG93bmVyIHdoZW4gcHJvY2Vzc2luZyBvd25lcgoJICBkcmF3biBtZW51YmFycy4KCS0gV2hlbiBkb2luZyBNRU5VX0NhbGNJdGVtU2l6ZSBmb3IgdGhlIG1lbnUgYmFyIHdlIHdlcmUgbm90IHByb3Blcmx5CgkgIHBhZGRpbmcgdGhlIHJldHVybmVkIHJlY3QuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgdGhlIHVzZXIgdG8gY2FuY2VsIGxhYmVsIGVkaXRpbmcgd2l0aCBlc2MgYW5kIGNvbmZpcm0gd2l0aCByZXR1cm4uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJS2VuIFRob21hc2VzIDxrZW5AY29kZXdlYXZlcnMuY29tPgoJUmVzdG9yZSBhY2NpZGVudGFsbHkgdW5kb25lIGNoYW5nZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBXaW5lIHdhcyBub3QgcHJvcGVybHkgcmVwb3J0aW5nIGJhY2sgdGhlIGVkaXRlZCBsYWJlbCB0byB0aGUKCSAgYXBwbGljYXRpb24gaW4gYSB0cmVldmlldyB3aGVuIHRoZSBsYWJlbCBpcyBhIGNhbGxiYWNrLgoJLSBCZWNhdXNlIHdpbmRvd3MgYXBwbGljYXRpb25zIGFzc3VtZSB0aGV5IGdldCBhIG5ldyBlZGl0IGNvbnRyb2wKCSAgZXZlcnkgdGltZSB0aGV5IG9mdGVuIHN1YmNsYXNzIHRoYXQgZWRpdCBib3ggd2lsbHktbmlsbHkgYW5kIGRvIG5vdAoJICBjbGVhbiB1cC4gU28gaXQgaXMgbmVjZXNzYXJ5IHRvIGFjdHVhbGx5IGdpdmUgdGhlbSBhIG5ldyBlZGl0IGNvbnRyb2wKCSAgZWFjaCB0aW1lLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBDbGVhbmVkIHVwIHNvbWUgb2YgdGhlIGRyYXdpbmcgY29kZSwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aAoJICBhdm9pZGluZyB0cnlpbmcgdG8gZHJhdyBpbnZhbGlkIGJpdG1hcHMuCgktIEF2b2lkIGRpcmVjdGx5IGNhbGxpbmcgZHJhd2luZyBmdW5jdGlvbnMgaW5zdGVhZCBpbnZhbGlkYXRpbmcgcmVjdHMKCSAgYW5kIHJlbHlpbmcgb24gV01fUEFJTlQuCgktIEZvciB0aGUgZHJvcGRvd24gZXZlbnQgY2hlY2sgdGhlIGJ1dHRvbiBzdHlsZSBhcyBvcHBvc2VkIHRvIHRoZQoJICB0b29sYmFyIHN0eWxlLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFrZSBpbnRlcm5hbCBidWZmZXJzIHNpemUgbXVsdGlwbGUgb2YgNC4KCgkqIHdpbmRvd3MvbWRpLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJVmVyaWZ5IHRoZSBtZW51IGhhbmRsZSBpcyBub24temVybyBwcmlvciB0byB1c2UuCgoJKiBjb250cm9scy9tZW51LmM6IEtlbiBUaG9tYXNlcyA8a2VuQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRvIGRpc3BsYXkgcG9wdXAtbWVudSBhcnJvdyBvbiBvd25lci1kcmF3biBwb3B1cCBtZW51cy4KCUZpeGVkIHBvc2l0aW9uaW5nIG9mIHN1Ym1lbnVzIHJlbGF0aXZlIHRvIHBhcmVudCBtZW51cy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZ3JhcGhpY3MvdmdhLmMsIG1pc2Mvc3lzdGVtLmMsIHNjaGVkdWxlci9zZXJ2aWNlcy5jLCB3aW5kb3dzL3RpbWVyLmM6CglTcGVjaWZ5IHRoZSBzZXJ2aWNlIHRocmVhZCB0aW1lcnMgaW4gbXMgaW5zdGVhZCBvZiB1cy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9idWlsdGluMzIuaCwgaW5jbHVkZS93aW5udC5oLCBtaXNjL21haW4uYzoKCVJlc2VydmUgc3BhY2UgZm9yIHRoZSBQRSBoZWFkZXIgYXQgdGhlIHN0YXJ0IG9mIHRoZSAuc28gZmlsZS4KCVN0b3JlIHRoZSBleHBvcnQgdGFibGUgaW5zaWRlIHRoZSBkYXRhIHNlY3Rpb24gc28gdGhhdCBzZWN0aW9ucyBjYW4gYmUKCXByb3Blcmx5IGFsaWduZWQuCglCdWlsZCB0aGUgcmVsYXkgZnVuY3Rpb24gdGFibGUgZGlyZWN0bHkgaW4gdGhlIC5zcGVjLmMgZmlsZS4KCU1vdmVkIHJlbGF5IGRlYnVnZ2luZyBmdW5jdGlvbnMgdG8gcmVsYXkzODYuYy4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglQcm90ZWN0IGFnYWluc3QgdXNlIG9mIGNvbWN0bDMyIHByaXZhdGUgY29udHJvbCBtZW1vcnkgYWZ0ZXIgaXQgaGFzCgliZWVuIGZyZWVkLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTb21lIHByb2dyYW1zIHN3aXRjaCB0aGVpciBzdGF0dXMgYmFyIGJhY2sgYW5kIGZvcnRoIGZyb20gc2ltcGxlIG1vZGUKCXdoaWxlIHJ1bm5pbmcuIFRoaXMgZml4IGNvcnJlY3RzIGRyYXdpbmcgYW5kIHRleHQgc2V0dGluZyBwcm9ibGVtcyB0aGF0CglyZXN1bHQgZnJvbSB0aGlzIGJlaGF2aW9yLgoKMjAwMC0wNS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9oZWFwLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUZpeGVkIEhlYXBBbGxvYyhIRUFQX1pFUk9fTUVNT1JZKSB0byBjbGVhciB0aGUgd2hvbGUgYWxsb2NhdGVkIGJsb2NrLgoJVmFyaW91cyBvcHRpbWl6YXRpb25zLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgV0FWRUhEUiBub3RpZmljYXRpb24gaGV1cmlzdGljLgoJQWRkZWQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgbG9vcHMgaW4gV0FWRUhEUnMuCglGaXhlZCBpc3N1ZXMgd2hlbiBtaXhpbmcgb3BlbiBhbmQgZ2V0Q2FwcyBjYWxscy4KCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcmVhZHJlcy5jLCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW4sIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEJ1Z2ZpeDogQ29ycmVjdGVkIGEgU0VHViBpbiB0aGUgcmF3ZGF0YSBoYW5kbGluZy4gTWlzdGFraW5nbHkgdG9vayB0aGUKCSAgYWRkcmVzcyBvZiBhIHBvaW50ZXIgaW5zdGVhZCBvZiBpdHMgdmFsdWUuIFRoaXMgcHJvYmFibHkgc2xpcHBlZCBpbgoJICBkdXJpbmcgdGhlIG1lcmdlIG9mIG15IHRyZWUgaW50byB0aGUgd2luZXRyZWUuCgkgIExlc3NvbiBsZWFybmVkOiBhbHdheXMgZG91YmxlIGNoZWNrLgoJLSBWZXJpZmllZCBtb3N0IHJlc291cmNlcyBzbyB0aGF0IHdpbjE2IGNvbXBpbGUgYWxzbyBnZW5lcmF0ZXMgY29ycmVjdAoJICBvdXRwdXQgZm9yIHJldmVyc2VkIGVuZGlhbi4KCS0gSW1wbGVtZW50ZWQgYnl0ZS1vcmRlcmluZyBmb3IgcmVzb3VyY2VzLiBBbGwgcmVzb3VyY2VzIGNhbiBiZSBmb3JjZWQKCSAgdG8gYmUgbGl0dGxlLSwgYmlnLSBvciBuYXRpdmUgZW5kaWFuIHdpdGggY29tbWFuZC1saW5lIG9wdGlvbiAtQi4KCS0gUmVhZGluZyByZXNvdXJjZXMgZnJvbSAucmVzLWZpbGVzIGFyZSBvbmx5IGFjY2VwdGVkIGluIG5hdGl2ZSBieXRlLQoJICBvcmRlcmluZyBzbyB0aGF0IG5vIGFkZGl0aW9uYWwgc2VtYW50aWMgYW5hbHlzaXMgaXMgcmVxdWlyZWQuCgktIFJlc291cmNlIGRpcmVjdG9yeSBpcyBzdGlsbCB3cml0dGVuIGluIG5hdGl2ZS1vbmx5IGZvcm1hdCwgaW5jbHVkaW5nCgkgIHRoZSBzdHJpbmdzLgoJLSBXcmMgaXMgbm93IGluc3RhbGxlZCB0aHJvdWdoIHRoZSBtYWtlZmlsZSB3aXRoICdtYWtlIGluc3RhbGwnIGFuZCBhbHNvCgkgIHVuaW5zdGFsbGVkIHdpdGggJ21ha2UgdW5pbnN0YWxsJy4KCS0gV3JvdGUgYSBtYW4tcGFnZSBmb3IgYmV0dGVyIHJlZmVyZW5jZS4gVGhlIG1hbnBhZ2UgYWxzbyBnZXRzIGluc3RhbGxlZAoJICBhbmQgdW5pbnN0YWxsZWQuCgktIENsZWFuZWQgdXAgdGhlIG5hbWVzcGFjZSBhIGJpdCBieSBtb3JlIGFncmVzc2l2ZSB1c2Ugb2Ygc3RhdGljLgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgaW5jbHVkZS90YWIuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUgYWJpbGl0eSB0byB1c2UgbXVsdGlsaW5lIHRhYiBjb250cm9scyB0byB3aW5lLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU51bWJlciBvZiBzdXJmYWNlIExvY2svVW5sb2NrcyBtdXN0IE5PVCBtYXRjaCwgc28gZG8gTk9UIHVzZSBpdCBmb3IKCXJlZmVyZW5jZSBjb3VudGluZy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVwZGF0ZSBmb3IgbmV3IFdpbmUgZmVhdHVyZXM7IHVzZSB0dHlkcnYgaW5zdGVhZCBvZiB4MTFkcnYgd2hlbgoJcnVubmluZyByZWdhcGksIGFuZCBzZXQgY29ycmVjdCB3aW5lZGJnIHBhdGggaW4gdGhlIHJlZ2lzdHJ5LgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBqdW1wX2FsaWFzIGZvciBub24tUElDLCBhbmQgZGlzYWJsZWQgaXQgZm9yIFBJQywgc2luY2UgaXQKCWRvZXNuJ3Qgd29yayBmb3IgUElDIHJpZ2h0IG5vdy4gVGhpcyBmaXhlcyBjdXJyZW50IGNyYXNoaW5nIHNpZ2FjdGlvbgoJY2FsbHMuCgoJKiBkZWJ1Z2dlci9tZW1vcnkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgeCAvcyBjb21tYW5kLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBzb21lIHJlZyB0ZW1wIGZpbGUgY2x1dHRlciBjaGVjayAobW9yZSB0aGFuIDEwMCB0ZW1wIGZpbGVzIGluCgl+Ly53aW5lKS4KCjIwMDAtMDUtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNldEltYWdlQml0c184OiBhZGRlZCAtPjE1IGNvbnZlcnNpb24gaW4gb3B0aW1pemVkIGFzc2VtYmxlci4KCgkqIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvYW5zaV9nZW4uaCwgZGxscy9yaWNoZWRpdC9hbnNpX3N5bS5oLCBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmMsIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuaCwgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5oLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLnNwZWMsIGRsbHMvcmljaGVkaXQvcmljaGVkMzJfbWFpbi5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvcmljaGVkaXQvcnRmLmgsIGRsbHMvcmljaGVkaXQvcnRmMnRleHQuaCwgZGxscy9yaWNoZWRpdC9zdGRjaGFybmFtZXMuaCwgZGxscy9yaWNoZWRpdC90ZXh0LXdyaXRlci5jLCBkbGxzL3JpY2hlZGl0L3RleHRfbWFwLmgsIGluY2x1ZGUvcmljaGVkaXQuaDoKCUplYW4tQ2xhdWRlIEJhdGlzdGEKCVdyYXBzIHNvbWUgUmljaEVkaXQgY29udHJvbCBmdW5jdGlvbmFsaXR5IG9uIGFuIEVkaXQgY29udHJvbC4gSXQgdXNlcwoJYSBmcmVlIGltcGxlbWVudGF0aW9uIG9mIGFuIFJURiBwYXJzZXIgd3JpdHRlbiBieSBQYXVsIER1Qm9pcwoJaHR0cDovL3d3dy5wcmltYXRlLndpc2MuZWR1L3NvZnR3YXJlL1JURi8gd2hpY2ggSSBtb2RpZmllZCBhIGJpdCB0bwoJd29yayB3aXRoIHRoZSBjb250cm9sLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglEbyBub3Qgc2VuZCBXTV9TSVpJTkcgdG8gMTYtYml0IHdpbmRvd3MuCgoJKiBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglDbGVhbmVkIHVwIGxvY2FsIGhlYXAgaW5pdGlhbGlzYXRpb24uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBsb2FkZXIvcGVfaW1hZ2UuYywgcmVsYXkzMi9idWlsdGluMzIuYywgd2luZG93cy9kcml2ZXIuYzoKCU1vdmVkIExvYWQvRnJlZUxpYnJhcnkxNiBkZWZpbml0aW9uIHRvIHdpbmJhc2UxNi5oLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5zcGVjLCBpZjE2MzIvTWFrZWZpbGUuaW4sIG9sZS9vbGUybmxzLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJU2VwYXJhdGUgT0xFMk5MUyBvdXQgb2YgS0VSTkVMLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBDaGVjayBmb3IgbWlzc2luZyBtb2R1bGVzIGluIG1vZHVsZXMuZGF0LgoJLSBNaW5vciBidWcgZml4ZXMKCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUplYW4tQ2xhdWRlIEJhdGlzdGEgKE1hY2FkYW1pYW4vQ29yZWwpCglUb3AtZG93biBpbWFnZXMgaGF2ZSBhIG5lZ2F0aXZlIGJpSGVpZ2h0LCB0aGUgc2NhbmxpbmVzIG9mIHRoZXNlcwoJaW1hZ2VzIHdlcmUgaW52ZXJ0ZWQgaW4gWDExRFJWX0RJQl9HZXRJbWFnZUJpdHNfeHguIFRvIHByZXZlbnQgdGhpcyBJCglzaW1wbHkgY2hhbmdlZCB0aGUgc2lnbiBvZiBsaW5lcywgdGhlIHNjYW5saW5lcyB3ZXJlIGNvcnJlY3RseSBoYW5kbGVkCglhZnRlcndhcmRzCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbGQgdmVyc2lvbnMgb2YgZ2xpYmMgbWlnaHQgbm90IGhhdmUgU1ROX1VOREVGIGRlZmluZWQuCgoJKiBmaWxlcy9maWxlLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmV2ZXJ0IHRoZSB0ZXN0IGZvciBWaXJ0dWFsX0hhbmRsZUZhdWx0IGluIFJlYWRGaWxlL1dyaXRlRmlsZS4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldCB0aGUgaXRlbUlEIG1lbWJlciBvZiB0aGUgRFJBV0lURU1TVFJVQ1QgdG8gdGhlIG51bWJlciBvZiB0aGUKCXN0YXR1cyBwYXJ0IHBhaW50ZWQuCgoJKiB3aW5kb3dzL21kaS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFsd2F5cyBjYWxscyBTZXRNZW51IGluIE1ESVNldE1lbnUuCgoJKiBkbGxzL3RhcGkzMi9saW5lLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJU21hbGwgZGVidWcgY2hhbm5lbCBjbGVhbnVwLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeGVkIHNjcm9sbGluZyBidWcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgTGlzdFZpZXdfU2V0SG92ZXJUaW1lKCksIExpc3RWaWV3X0dldEhvdmVyVGltZSgpLCBpbml0aWFsCglzdXBwb3J0IGZvciB0aGUgTFZTX0VYX1RSQUNLU0VMRUNUIGZsYWcuICBBZGRlZCBjb2RlIHRvIGRlbGV0ZSBpdGVtcwoJaW4gTElTVFZJRVdfU2V0SXRlbUNvdW50KCkuCgoyMDAwLTA1LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgV01fU0laSU5HIG1lc3NhZ2Ugc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3BhdGguYzogUm9iIEZhcm51bSA8cm9iZkB0d2ludXguY29tPgoJUmVtb3ZlZCB3YXJuaW5ncyBmcm9tIGZyZWVpbmcgcGF0aCBpbiBEZWxldGVEQy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBidWcgd2l0aCB0aGUgcHJvY2Vzc2luZyBvZiBIaXRUZXN0LgoKCSogY29udHJvbHMvZWRpdC5jOiBTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBeQywgXlYgYW5kIF5YIGluIGFuIGVkaXQgY29udHJvbCBwcm9wZXJseS4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0cmlwIHRoZSAkJCRQUk9UTy5ISVYgYml0IGZyb20gd2luMmsgU1lTVEVNIGFuZCBTT0ZUV0FSRSBoaXZlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIERDIGxlYWsuCgoJKiBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSWYgd2UgZG8gbm90IGZpbmQgYSByZXNvdXJjZSBmb3IgYm90aCAocHJpbWFyeSBsYW5nfHN1YiBsYW5nKSwgd2UgdHJ5CglqdXN0IChwcmltYXJ5IGxhbmcpIGJlZm9yZSB1c2luZyB0aGUgZGVmYXVsdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCVNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJV29ya2VkIGFyb3VuZCBzb21lIHRvb2x0aXBzIGhpZGUgcHJvYmxlbXMgYnkgY2hlY2tpbmcgdGhlIGN1cnJlbnQgdG9vbHRpcC4KCgkqIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSBjb25maWd1cmF0aW9uIGhpbnQgZm9yIHRoZSBDRC1ST00gInVuaGlkZSIgb3B0aW9uLgoKCSogb2xlL29sZTJubHMuYzoKCUhlbm5pbmcgSG9mZm1hbm4gKG9mIE1hY2FkYW1pYW4gZm9yIENvcmVsKQoJSW1wbGVtZW50ZWQgU2V0TG9jYWxlSW5mbygpLiBJdCByZXF1aXJlZCBhIGNoYW5nZSB0byBHZXRMb2NhbGVJbmZvKCkKCWFzIHdlbGwsIGJlY2F1c2UgR2V0TG9jYWxlSW5mbygpIGhhcyB0byBnZXQgYW55IHZhbHVlcyBzYXZlZCBieQoJU2V0TG9jYWxlSW5mbygpIGluIHRoZSByZWdpc3RyeS4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBidWZmZXIgb3ZlcmZsb3dzLgoJTWFkZSBzdGFiIHBhcnNpbmcgbW9yZSByb2J1c3QgKG5vdyBpZ25vcmVzIEMrKyBzdGFicykuCglEaXNwbGF5IGNvcnJlY3QgYmFja3RyYWNlIGF0IGZpcnN0IHdoZW4gaW52b2tlZCBvbiB1bmhhbmRsZWQgZXhjZXB0aW9uLgoJTG9hZHMgc3RhYnMgZnJvbSAuc28gZmlsZXMgd2hlbiB0aG9zZSBhcmUgbG9hZGVkLgoKMjAwMC0wNS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZGVidWdkZWZzLmg6IEdlbmVyYXRlZCBhZ2Fpbi4KCgkqIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL3BlX2ltYWdlLmM6CglQRV9Mb2FkSW1hZ2U6IHJlbW92ZWQgdmVyc2lvbiBwYXJhbWV0ZXIsIHNldCBsYXN0IGVycm9yIGNvcnJlY3RseS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaDoKCVN0b3JlIHByb2Nlc3MgZmlsZSBuYW1lIGluIHN0YXJ0dXAgaW5mby4KCUZpeGVkIGV4ZV9maWxlIGhhbmRsaW5nLgoKCSogZGxscy9NYWtlZmlsZS5pbjogRml4ZWQgdHlwby4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0Ly5jdnNpZ25vcmUsIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuc3BlYywgZGxscy9yaWNoZWRpdC9yaWNoZWQzMl9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3R1YnMgZm9yIHJpY2hlZDMyLmRsbC4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ2FsbCBYT3BlbklNIG9uIHRoZSBsYXJnZSBzdGFjay4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJQmFuZyBKdW4tWW91bmcgPGJhbmdqeUBkcmVhbXdpei5jb20+CglGcmVlQlNEIDMuNCBjb21waWxlIGZpeC4KCgkqIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmNvbi5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNlcnZlci9jb25zb2xlLmMsIHdpbjMyL2NvbnNvbGUuYzoKCUZpeGVkIENPT1JEIHN0cnVjdHVyZSBkZWZpbml0aW9uLgoJRml4ZWQgR2V0TGFyZ2VzdENvbnNvbGVXaW5kb3dTaXplIHRvIG5vdCByZXR1cm4gYSBzdHJ1Y3R1cmUgd2hlbgoJY2FsbGVkIGZyb20gdGhlIFdpbmRvdyBiaW5hcnkuCgoJKiBzZXJ2ZXIvb2JqZWN0LmM6IFNtYWxsIG9wdGltaXphdGlvbi4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzogRml4ZWQgZGVmYXVsdCB0aHJlYWQgc3RhY2sgc2l6ZS4KCgkqIG9iamVjdHMvdGV4dC5jOiBGaXhlZCBEcmF3VGV4dFcgbGVuZ3RoIGhhbmRsaW5nLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVtb3ZlIHRoZSBhc3NlcnRpb24gd2hlbiB0aGVyZSBpcyBubyBzb3VyY2Ugc3VyZmFjZS4KCgkqIGluY2x1ZGUvb2xlYXV0by5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIERvc0RhdGVUaW1lVG9WYXJpYW50VGltZSBwcm90b3R5cGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTWFwIFN0ckNockEgdG8gc3RyY2hyLiAgRml4IFN0ckNoclcgYXJnIGxpc3QuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIEhXTkRfTUVTU0FHRS4KCgkqIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWxsb3cgSVNlcXVlbnRpYWxTdHJlYW1fV3JpdGUgdG8gd29yayBpZiBhY2Nlc3MgbW9kZSBpcyBTVEdNX1JFQURXUklURS4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglNbWFwIGRvZXMgbm90IGZhaWwgb24gemVyby1sZW5ndGggZmlsZXMuCgoyMDAwLTA1LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCVVzZSBleGNlcHRpb24gaGFuZGxpbmcgdG8gaW1wbGVtZW50IHRoZSBJc0JhZCogZnVuY3Rpb25zLgoJUmVtb3ZlZCAvcHJvYy9zZWxmL21hcHMgcGFyc2luZyBhcyBpdCBpcyBub3QgdmVyeSB1c2VmdWwgd2l0aCAuc28gbGlicy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJU2V0dXAgdGhlIGluaXRpYWwgdGhyZWFkICVmcyBmcm9tIGEgY29uc3RydWN0b3IuCgoJKiBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy94MTEuYywgaW5jbHVkZS93aW5udC5oOgoJQWRkZWQgREVDTF9HTE9CQUxfQ09OU1RSVUNUT1IgbWFjcm8uCgoJKiByZXNvdXJjZXMvdXNlcjMyLnJjLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjLy5jdnNpZ25vcmUsIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci5oLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3BwbC5sLCB0b29scy93cmMvcHB5LnksIHRvb2xzL3dyYy9wcmVwcm9jLmMsIHRvb2xzL3dyYy9wcmVwcm9jLmgsIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvdXRpbHMuaCwgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jLCBkbGxzL2NvbW1kbGcvcnNyYy5yYywgZGxscy9kaXNwbGF5L2Rpc3AucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBJbXBsZW1lbnRlZCBhIG5ldyBwcmVwcm9jZXNzb3IgdGhhdCBpcyAobmVhcmx5KSBBTlNJLUMgY29tcGxpYW50LiBUaGUKCSAgb2xkIHBhcnNlciBoYXMgYmVlbiBzdHJpcHBlZCBmcm9tIHRoZSBvbGQgcHJlcHJvY2Vzc29yLWNvZGUgd2hpY2gKCSAgY2xlYW5lZCB1cCBib3RoIHJlc291cmNlLXNjYW5uZXIgYW5kIC1wYXJzZXIuCgktIFN0YW5kYXJkIGRlZmluZXMgaGF2ZSBiZWVuIGludHJvZHVjZWQgKHNlZSBSRUFETUUud3JjKQoJLSBCb3RoIHByZXByb2Nlc3Nvci0gYW5kIHJlc291cmNlLXNjYW5uZXIgaGF2ZSBiZWVuIG9wdGltaXplZCBzbGlnaHRseQoJICBzbyB0aGF0IG5vIGJhY2tpbmcgdXAgaXMgcmVxdWlyZWQgKG9uZSBjaGFyIGxvb2thaGVhZCBpcyBlbm91Z2gpLgoJLSBGaWxlbmFtZS1zY2FubmluZyBoYXMgYmVlbiBjbGVhbmVkIHVwLCB0aG91Z2ggbm90IHBlcmZlY3QgeWV0LgoJLSBVc2VyLXR5cGUgcmVzb3VyY2VzIGFyZSBjb21wYXRpYmxlIG5vdy4KCS0gTGluZS1jb250aW51YXRpb24gaW4gc3RyaW5ncyBpcyBjb3JyZWN0ZWQgc28gdGhhdCBpdCBkb2VzIG5vdAoJICBpbnRyb2R1Y2UgYSBuZXdsaW5lIGluIHRoZSBvdXRwdXQuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgd2luZG93cy9xdWV1ZS5jLCBsb2FkZXIvbW9kdWxlLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL21haW4uYzoKCVJld3JvdGUgVW5peCBwcm9jZXNzIGxhdW5jaGluZyB0byBhbGxvdyBwYXNzaW5nIHN0YXJ0dXAgaW5mb3JtYXRpb24gdG8KCVdpbmVsaWIgYXBwcy4gSW1wcm92ZWQgaGFuZGxpbmcgb2YgZXhlY3ZlKCkgZmFpbHVyZXMuCgoJKiBmaWxlcy9maWxlLmM6IEFkZGVkIEVOT0VYRUMgZXJyb3IgY29kZS4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IEFkZGVkIGF0Zm9yayBzdXBwb3J0LgoKCSogY29uZmlndXJlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGdhMl9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsIGNvbmZpZ3VyZToKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBER0EyIGRyaXZlciB0byBEaXJlY3REcmF3LgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ09NRExHMzJfRGxsRW50cnlQb2ludCxDT01ETEczMl9TZXRDb21tRGxnRXh0ZW5kZWRFcnJvcjogZGVsYXkKCWFsbG9jYXRpb24gb2YgVGxzIGZvciBDb21tRGxnRXh0ZW5kZWRFcnJvciB1bnRpbCBpdCBpcyBuZWVkZWQuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNlZ3Ygd2hlbiBkZWJ1Z2dlciByZWdpc3RyeSBrZXkgZG9lc24ndCBleGlzdC4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJVXNlIDxzdGRsaWIuaD4gaW5zdGVhZCBvZiB0aGUgZGVwcmVjYXRlZCBhbmQgbm9uLXBvcnRhYmxlIDxtYWxsb2MuaD4uCgoyMDAwLTA0LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDAwNDMwLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVgxMURSVl9TZXRGb2N1czogcmVhbGx5IGRvbid0IG1lc3Mgd2l0aCBmb2N1cyBmb3IgbWFuYWdlZCB3aW5kb3dzLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBpbmNsdWRlL2hlYXAuaCwgbWVtb3J5L2hlYXAuYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy93aW5wcm9jLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVtb3ZlZCBIRUFQX3hhbGxvYy4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZGlzcGxheS5jLCBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gRW5oYW5jZWQgaW50ZXJuYWwgdmFyaWFibGVzIGZyYW1ld29yayAoaW5jbHVkaW5nIHJlYWQvc2F2ZSB0bwoJICByZWdpc3RyeSBhbmQgdHlwaW5nKQoJLSBGaW5hbGl6ZWQgdXNlIG9mIFdpbmRvd3MnIENvbnNvbGUgSS9PIGludGVyZmFjZSAoaW5zdGVhZCBvZiBVbml4IHN0ZAoJICBzdHJlYW1zKQoJLSBOb3cgaGFuZGxpbmcgcmVnaXN0ZXJzIGFzIGludGVybmFsIHZhcmlhYmxlcyAodGhleSBhcmUgbm8gbG9uZ2VyCgkgIHNlZW4gYXMgYSBzcGVjaWZpYyB0eXBlKQoKCSogd2luMzIvZXhjZXB0LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW5zdXJlIHdlIGFsd2F5cyB0cnkgdG8gbGF1bmNoIGEgZGVidWdnZXIuCgoJKiByZWxheTMyL3dvd3RodW5rLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgVGhyZWFkIHBzZXVkbyBoYW5kbGUgYW5kIG5vdCBUaHJlYWQgSWQgYXMgYXJndW1lbnQgZm9yIHRoZSBjYWxsIHRvCglHZXRUaHJlYWRTZWxlY3RvckVudHJ5LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA0LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVgxMURSVl9TZXRGb2N1czogcmVhbGx5IGRvbid0IG1lc3Mgd2l0aCBmb2N1cyBmb3IgbWFuYWdlZCB3aW5kb3dzLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBpbmNsdWRlL2hlYXAuaCwgbWVtb3J5L2hlYXAuYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy93aW5wcm9jLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVtb3ZlZCBIRUFQX3hhbGxvYy4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZGlzcGxheS5jLCBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gRW5oYW5jZWQgaW50ZXJuYWwgdmFyaWFibGVzIGZyYW1ld29yayAoaW5jbHVkaW5nIHJlYWQvc2F2ZSB0bwoJICByZWdpc3RyeSBhbmQgdHlwaW5nKQoJLSBGaW5hbGl6ZWQgdXNlIG9mIFdpbmRvd3MnIENvbnNvbGUgSS9PIGludGVyZmFjZSAoaW5zdGVhZCBvZiBVbml4IHN0ZAoJICBzdHJlYW1zKQoJLSBOb3cgaGFuZGxpbmcgcmVnaXN0ZXJzIGFzIGludGVybmFsIHZhcmlhYmxlcyAodGhleSBhcmUgbm8gbG9uZ2VyCgkgIHNlZW4gYXMgYSBzcGVjaWZpYyB0eXBlKQoKCSogd2luMzIvZXhjZXB0LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW5zdXJlIHdlIGFsd2F5cyB0cnkgdG8gbGF1bmNoIGEgZGVidWdnZXIuCgoJKiByZWxheTMyL3dvd3RodW5rLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgVGhyZWFkIHBzZXVkbyBoYW5kbGUgYW5kIG5vdCBUaHJlYWQgSWQgYXMgYXJndW1lbnQgZm9yIHRoZSBjYWxsIHRvCglHZXRUaHJlYWRTZWxlY3RvckVudHJ5LgoKMjAwMC0wNC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJQ2xlYXIgdGhlIHJlbWFpbmRlciBvZiB0aGUgcGFnZSB3aGVuIG1hcHBpbmcgYSBzZWN0aW9uIHdob3NlIHNpemUgb24KCWRpc2sgaXMgbm90IGEgZnVsbCBwYWdlIG11bHRpcGxlLgoJVGVtcG9yYXJpbHkgY29tbWVudGVkIG91dCB0aGUgVmlydHVhbEZyZWUgY2FsbCBpbiBQRV9VbmxvYWRMaWJyYXJ5LgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYywgaW5jbHVkZS90c194bGliLmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgdGhyZWFkLXNhZmV0eSBwcm90ZWN0aW9uIHRvIFhMaXN0UGl4bWFwRm9ybWF0cwoJLSBtb3ZlZCBwaXhtYXAgLyBpbWFnZSBmb3JtYXQgbWF0Y2hpbmcgRVJScyB0byBXQVJOcwoKCSogd2luMzIvY29uc29sZS5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgR2V0TGFyZ2VzdENvbnNvbGVXaW5kb3dTaXplIHByb3RvdHlwZS4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRnJlZUJTRCBjb21waWxlIGZpeC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgRElCX0NyZWF0ZURJQlNlY3Rpb24gd2l0aCBleHRyYSBwYXJhbWV0ZXIgb3ZyX3BpdGNoLCBhZGRlZAoJb3ZyX3BpdGNoIHRvIHBDcmVhdGVESUJTZWN0aW9uIGluIERDX0ZVTkNTLiBJZiBvdnJfcGl0Y2ggaXMgbm9uemVybywKCWl0IGlzIGEgcGl0Y2ggb3ZlcnJpZGUgKHNwZWNpZmllcyBieXRlcyBwZXIgbGluZSksIGFuZCB0ZWxscyB0byB0cmVhdAoJdGhlIG9mZnNldCBwYXJhbWV0ZXIgYXMgYW4gYWxyZWFkeS1tYXBwZWQgdmlydHVhbCBtZW1vcnkgYWRkcmVzcyAoaWYKCXRoZSBzZWN0aW9uIHBhcmFtZXRlciBpcyB6ZXJvKS4gRml4ZWQgYSBESUIgc3RhdHVzIGluaXQgYnVnIGluCgljcmVhdGluZyBESUIgc2VjdGlvbnMgZnJvbSBmaWxlIG1hcHBpbmdzIChpZiBjcmVhdGVkIGZyb20gbWFwcGluZywgdGhlCglESUIgaXMgKm5vdCogcmVhbGx5IEluU3luYykuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkIFdpbmUtaW50ZXJuYWwgYWxsb2NhdGlvbiB0eXBlIE1FTV9TWVNURU0gZm9yIFZpcnR1YWxBbGxvYyB0bwoJcmVnaXN0ZXIgZXh0ZXJuYWwgbWFwcGluZ3MgKGxpa2UgdmlkZW8gZnJhbWUgYnVmZmVycykuCgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIHNjaGVkdWxlci9wdGhyZWFkLmMsIGNvbmZpZ3VyZToKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRW5oYW5jZWQgbGliYydzIHB0aHJlYWQgY29uZmlndXJhdGlvbiBkZXRlY3Rpb24uCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIG1zZG9zL2Rvc2FzcGkuYywgd2luZG93cy9tdWx0aW1vbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyBjb21waWxhdGlvbiB3YXJuaW5ncy4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBtaXNjL2NvbW0uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlcyB1cGRhdGUKCS0gTWlub3IgYnVnIGZpeGVzLgoJLSBBZGRlZCBuZXcgb3B0aW9uIC0tY3Jvc3MtY2FsbC11bmljb2RlLWFzY2lpIGZvciBjaGVja2luZyBpbGxlZ2FsCgkgIFVuaWNvZGUgdG8gQVNDSUkgY2FsbHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCAnLS1lbmFibGUtb3BlbmdsJyBmbGFnIHRvIGJ5cGFzcyB0aGUgdGhyZWFkLXNhZmV0eSBjaGVjay4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlbW92ZWQgc29tZSBIRUFQX3hhbGxvYyBjYWxscy4KCgkqIGRsbHMvd2lubW0vbWNpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1ZyB3aGVuIGZpbGUgZG9lc24ndCBleGlzdCBpbiBNQ0lfT1BFTiBoYW5kbGluZy4KCVJlZHVjZWQgdGltZSBzcGVudCB3aXRoIGNyaXQgc2VjdCBsb2NrZWQuCgoJKiB0b29scy9idWlsZC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFyZ3YgaGFuZGxpbmcgZm9yIGN1aWV4ZSB3aW5lbGliIHByb2dyYW1zLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIHB0aHJlYWRfa2lsbF9vdGhlcl90aHJlYWRzX25wIGFuZCBwdGhyZWFkX2F0Zm9yayBmaXhtZXMgbGVzcwoJb2J0cnVzaXZlLgoKCSogd2luZG93cy93aW5oZWxwLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglXaW5IZWxwIG11c3QgYWNjZXB0IGEgTlVMTCBwb2ludGVyIHRvIHRoZSBoZWxwIGtleSBzdHJpbmcuCgoyMDAwLTA0LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQ29ycmVjdCBjaGVjayBmb3IgbWluaW11bSBidWZmZXIgbGVuZ3RoLgoJLSBDb3JyZWN0IGNhc2VzIHdoZXJlIFNob3dXaW5kb3cgaXMgZG9uZS9ub3QgZG9uZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PiwgSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBUTUVfUVVFUlkgYW5kIFRNRV9IT1ZFUiBmbGFncyBpbiBfVHJhY2tNb3VzZUV2ZW50IGFuZAoJVHJhY2tNb3VzZUV2ZW50UHJvYy4gIEFkZGVkIGNvZGUgdG8gYWxsb3cgYWRkaXRpb24vY2FuY2VsYXRpb24gb2YKCXRyYWNraW5nIGZsYWdzIG9uIGV4aXN0aW5nIGVudHJpZXMgcmF0aGVyIHRoYW4gY3JlYXRlIGV4dHJhIGVudHJpZXMuCglGaXhlZCB0aW1lci4gIEFkZGVkIGNoZWNrIHRvIF9UcmFja01vdXNlRXZlbnQgdG8gc3RvcCB0aW1lciBpZiB0aGUKCXRyYWNraW5nIGxpc3QgaXMgZW1wdHkuICBGaXhlZCBUTUVfQ0FOQ0VMLiAgRml4ZWQgVE1FX0xFQVZFL1RNRV9IT1ZFUgoJd2hlbiBod25kVHJhY2sgaXNuJ3QgdGhlIGN1cnJlbnQgaHduZC4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRE9TRlNfRG9HZXRGdWxsUGF0aE5hbWU6IHJld3JpdGUgdG8gcmV0dXJuIHJlc3VsdHMgbGlrZSBPU1IyLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L3ZpcnR1YWwuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4sIFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBtZW1vcnkgbWFwcGluZyBvZiA0ayBhbGlnbmVkIFBFIGJpbmFyaWVzLiAgVGhpcyBjYW4KCXNwZWVkIHVwIGxvYWQgdGltZXMgc2lnbmlmaWNhbnRseSBmb3Igc29tZSBhcHBsaWNhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGd1aWQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaCwgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglDb21wbGV0ZSBjbGVhbnVwLCBidWdmaXhlcy4KCU5ldzogUGF0aFN0cmlwUGF0aCwgUGF0aE1ha2VVbmlxdWVOYW1lLCBQYXRoU3RyaXBUb1Jvb3QsCglQYXRoR2V0U2hvcnRQYXRoLCBQYXRoUGFyc2VJY29uTG9jYXRpb24sIFBhdGhSZW1vdmVFeHRlbnNpb24sCglQYXRoUmVtb3ZlQXJncywgUGF0aEFwcGVuZCwgUGF0aEJ1aWxkUm9vdCwgUGF0aENhbm9uaWNhbGl6ZSwKCVBhdGhGaW5kTmV4dENvbXBvbmVudCwgUGF0aFJlbW92ZUZpbGVTcGVjLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgaW5jbHVkZS93aW5lL29ial9xdWVyeWFzc29jaWF0aW9ucy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTdHVicyBmb3IgSVF1ZXJ5QXNzb2NpYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NocG9saWN5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU1vdmVkIHBvbGljeSByZWxhdGVkIGZ1bmN0aW9ucyB0byBzaHBvbGljeS5jCglNb3ZlZCBkaWFsb2cgcmVsYXRlZCBmdW5jdGlvbnMgdG8gZGlhbG9ncy5jCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglFeHBsaWNpdCBpbXBvcnQgdXNlcjMyLmRsbC4KCU1hbnkgY29ycmVjdGlvbnMsIGV4cG9ydGVkIHNvbWUgZnVuY3Rpb25zIGJ5IG5hbWUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNlcGFyYXRlZCAzMiBiaXQgZnVuY3Rpb25zIHRvIHNoZWxsb2xlLmMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTbWFsbCBmaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZWQ6IGV4dHJhY3QgdGhlIGljb24gYnkgcmVzb3VyY2UgaWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTbWFsbCBmaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlcy4KCVVzZSBHZXRNb2R1bGVIYW5kbGVBIGluc3RlYWQgb2YgTG9hZExpYnJhcnkgZm9yIGRsbHMgaW1wb3J0ZWQgYnkKCXRoZSBzcGVjIGZpbGUuCgoJKiB3aW5lLmluaTogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNYWtlIFdpbmVMb29rPVdpbjk1IHRoZSBkZWZhdWx0IHNldHRpbmcuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIGxlYXZpbmcgb2YgY3JpdGljYWwgc2VjdGlvbiBvbiBhbGwgcmV0dXJuIGNhc2VzLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW1vdmVkIGluaXRfc2VjdC4gVXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW5zdGVhZC4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU21hbGwgZml4ZXMsIHJlbW92ZWQgYXNzZXJ0cy4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbjoKCUNoYW5nZWQgaW1wb3J0cyBvZiB3aW5zcG9vbCB0byB3aW5zcG9vbC5kcnYuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW46CglBZGRlZCBsaWJrZXlib2FyZC5zbyBjcmVhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGluY2x1ZGUvaGVhZGVyLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBSZXR1cm4gbW9kaWZpZWQgcmVjdGFuZ2xlIGFmdGVyIGxheW91dGluZyBoZWFkZXIgY29udHJvbAoJLSBPdXRwdXQgdGV4dCBpbiBoZWFkZXIgY29udHJvbCB3aGVuIG5vIG90aGVyIEZsYWcgc3BlY2lmaWVkCgktIERlbGF5IGJvdW5kaW5nIHJlY3RhbmdsZSBjYWxjdWxhdGlvbiBmb3IgaGVhZGVyIGNvbnRyb2wgaXRlbXMKCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBUT09MQkFSX01vdXNlTGVhdmUgdG8gaGFuZGxlIFdNX01PVVNFTEVBVkUgbWVzc2FnZXMuCglBZGRlZCBUcmFja01vdXNlRXZlbnQgY2FsbHMgdG8gVE9PTEJBUl9Nb3VzZU1vdmUuICBIb3QgYnV0dG9ucyBub3cKCWxvb2svYmVoYXZlIGFsbW9zdCBleGFjdGx5IHRoZSBzYW1lIGFzIG5hdGl2ZSB3aW5kb3dzLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglBZGRlZCBkZWZhdWx0IHZhbHVlcyBmb3IgU1BJX0dFVE1PVVNFSE9WRVJIRUlHSFQsIFNQSV9HRVRNT1VTRUhPVkVSV0lEVEggYW5kCglTUElfR0VUTU9VU0VIT1ZFUlRJTUUgdG8gU3lzdGVtUGFyYW1ldGVyc0luZm8xNigpLgoKCSogbWlzYy9jb21tLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJbXBsZW1lbnQgbWFyayBhbmQgc3BhY2UgcGFyaXR5IGdlbmVyYXRpb24uIEFjY2VwdCBvbmUtYW5kLSBhLWhhbGYKCXN0b3BiaXRzOiB0aGUgbW9zdCBjb21tb24gdWFydHMgd2lsbCBnZW5lcmF0ZSB0aGlzIGF1dG9tYXRpY2FsbHkgd2hlbgoJdGhlcmUgYXJlIDUgZGF0YWJpdHMuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU92ZXJyaWRlIGZvcmsoKS4KCgkqIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGluY2x1ZGUvaGVhcC5oLCBtZW1vcnkvaGVhcC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUdldCByaWQgb2YgSEVBUF94cmVhbGxvYy4KCjIwMDAtMDQtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIC0td2l0aG91dC14LgoKCSogbG9hZGVyL21haW4uYywgd2luZS5pbmk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIG5ldyBjb25maWd1cmF0aW9uIGZpbGUgb3B0aW9uIGZvciBzZWxlY3RpbmcgZ3JhcGhpY3MgZHJpdmVyLgoKCSogZGxscy90dHlkcnYvTWFrZWZpbGUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUxpbmsgdGhlIFRUWSBkcml2ZXIgd2l0aCB0aGUgc3RhbmRhcmQgbGlicy4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC8uY3ZzaWdub3JlLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB3aW5zcG9vbCguZHJ2KSBsb2FkaW5nLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS90c194Zjg2ZGdhLmgsIGluY2x1ZGUvdHNfeGY4NmRnYTIuaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHNfeHBtLmgsIGluY2x1ZGUvdHNfeHJlc291cmNlLmgsIGluY2x1ZGUvdHNfeHNobS5oLCBpbmNsdWRlL3RzX3h1dGlsLmgsIGluY2x1ZGUveDExZHJ2LmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL3RzX3hmODZkZ2EuYywgdHN4MTEvdHNfeGY4NmRnYTIuYywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIHRzeDExL3RzX3hsaWIuYywgdHN4MTEvdHNfeHBtLmMsIHRzeDExL3RzX3hyZXNvdXJjZS5jLCB0c3gxMS90c194c2htLmMsIHRzeDExL3RzX3h1dGlsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgWF9ESVNQTEFZX01JU1NJTkcuCgoJKiBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci9tc2MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wcm92ZWQgQ29kZVZpZXcgdHlwZSBpbmZvcm1hdGlvbiBsb2FkZXIuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRG9uJ3QgdXNlIHRoZSB0ZW1wbGF0ZSBtZW1iZXIgdW5sZXNzIHRoZSBjb3JyZXNwb25kaW5nIGZsYWcgaXMgc2V0LgoKMjAwMC0wNC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIExJQ0VOU0UsIFdBUlJBTlRZOgoJU3dpdGNoZWQgdG8gdGhlIFgxMSBsaWNlbnNlLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmMsIGlmMTYzMi9yZWxheS5jLCBtaXNjL2RkZW1sLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGRsbHMvd2luaW5ldC93aW5pbmV0X21haW4uYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd3Byb2NzLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2RpbnB1dC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91cmxtb24uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luaW5ldC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBVcGRhdGVkIEFQSSBmaWxlcy4KCS0gSW1wcm92ZWQgbWlzcGxhY2VkIGZ1bmN0aW9uIGNoZWNraW5nLgoJLSBGaXhlZCBtaW5vciBidWdzLgoKCSogaW5jbHVkZS93aW5udC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUluY2x1ZGUgc3RyaW5nLmggdG8gbWFrZSB3aW5udC5oIHNlbGYtc3VmZmljaWVudC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogUGF0cmljayBZYW5nIChDb3JlbCkKCWluZm9QdHIgc29tZXRpbWVzIGNhbiBiZSBOVUxMLgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX0NzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fby5yYywgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywgZGxscy9jb21tZGxnL2NkbGdfSHUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy9jb21tZGxnL2NkbGdfS28ucmMsIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Oby5yYywgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CgkzMiBiaXRzIG1lc3NhZ2UgcHJvY2Vzc2luZyBmb3IgY29sb3IgZGlhbG9nLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXhlZCB0b29sYmFyIGJpdG1hcCBzaXplIGhhbmRsaW5nLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdCB0ZXN0IGZvciBsaW51eCAyLjIgam95c3RpY2sgQVBJLCB3aGljaCByZXR1cm5lZCB0cnVlIGluIGV2ZXJ5CgljYXNlLgoKCSogZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBpbmNsdWRlL3htYWxsb2MuaCwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy94bWFsbG9jLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVtb3ZlZCB0aGUgbGFzdCB4bWFsbG9jIGNhbGxzLgoKCSogcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCByZWxheTMyL2J1aWx0aW4zMi5jLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvaGVsbG8zcmVzLnJjLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgd2luZS5pbmksIC5jdnNpZ25vcmUsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglJbXBsZW1lbnRlZCBvbi1kZW1hbmQgbG9hZGluZyBvZiBidWlsdGluIGRsbHMgdXNpbmcgZGxvcGVuKCkuCgoyMDAwLTA0LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L01ha2VmaWxlLmluOgoJQnVpbGQgd2luZWNsaXBzcnYgYXMgcGFydCBvZiB0aGUgeDExZHJ2IGRsbC4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJUmVtb3ZlZCBhIGZldyBpbnRlci1kbGwgZGVwZW5kZW5jaWVzLgoKCSogd2luZG93cy9wYWludGluZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTWFrZSBSRFdfVmFsaWRhdGVQYXJlbnQoKSBtb2RpZnkgdGhlIHVwZGF0ZSByZWdpb24gb2YgYWxsIHBhcmVudHMsIG5vdAoJanVzdCB0aGUgZGlyZWN0IHBhcmVudC4KCgkqIHJlbGF5MzIvc25vb3AuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNOT09QX1ByaW50QXJnOiByZXBsYWNlZCBJc0JhZCogZnVuY3Rpb25zIGJ5IGV4Y2VwdGlvbiBoYW5kbGVyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIC0td2l0aG91dC1jdXJzZXMgY29tcGlsZSBvcHRpb24uCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHNvbWUgbW9yZSBwdGhyZWFkIG92ZXJyaWRlcy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBkZWJ1Z2dlciByZWdpc3RyeSBrZXkgbG9jYXRpb24uCgoJKiBpbmNsdWRlL2RkZW1sLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXNlIERFQ0xBUkVfSEFORExFIHRvIGRlY2xhcmUgaGFuZGxlcy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJREVDTEFSRV9IQU5ETEUgc2hvdWxkIG5vdCBiZSB1bmRlZidlZCBhZnRlciB1c2UuCgoJKiBjb250cm9scy9lZGl0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4IGVkaXQgY29udHJvbCdzIFdNX0dFVFRFWFQgYmVoYXZpb3VyLgoKCSogbWlzYy9jb21tLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRG8gbm90IGluaXRpYWxpemUgZGNiIGluIEJ1aWxkQ29tbURDQltBbmRUaW1lb3V0c10uCgoJKiBpbmNsdWRlL2Nhc2VtYXAuaCwgdG9vbHMvdW5pbWFwLnBsOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGFwdGVkIHVuaW1hcC5wbCBzY3JpcHQgYW5kIGdlbmVyYXRlZCBieSBpdCBjYXNlbWFwLmggdG8gdGhlIFVuaWNvZGUKCVN0YW5kYXJkLCBWZXJzaW9uIDMuMC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ2hlY2sgaWYgZGlhbG9nIGlzIHZpc2libGUgYmVmb3JlIHNldHRpbmcgdGhlIGZvY3VzLgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVtb3ZlZCB0aGUgbG9uZ3N0YW5kaW5nIGhhY2sgaW4gcmVzcG9uc2UgdG8gV01fQUNUSVZBVEUgbWVzc2FnZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeGVkIEdldE51bWJlckZvcm1hdCBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCVJlZHJhdyB0b29sYmFyIGJ1dHRvbiBpbnNpZGUgVE9PTEJBUl9FbmFibGVCdXR0b24oKSBvbmx5IGlmIHRoZSBzdGF0ZQoJb2YgdGhlIGJ1dHRvbiBjaGFuZ2VzLiAgU3RvcHMgZmxpY2tlcmluZyBpbiB0b29sYmFycyBjYXVzZWQgYnkKCWV4Y2Vzc2l2ZSByZWRyYXdpbmcuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU3R1YiBmb3IgSW50ZXJuZXRHZXRDb25uZWN0ZWRTdGF0ZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIEdldFByb2Nlc3NIZWFwKCkgZm9yIHRoZSBTVFJJQ1QgbW9kZS4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbHNvIGNoZWNrIGZvciBlbXB0eSBHVUlEIGluIERpcmVjdERyYXdDcmVhdGUuCgoyMDAwLTA0LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5zcGVjLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5zcGVjLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuc3BlYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLnNwZWMsIGRsbHMvd2lubW0vbWNpc2VxL21jaXNlcS5zcGVjLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5zcGVjLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5zcGVjLCBkbGxzL3dpbm1tL3dhdmVtYXAvbXNhY20uc3BlYywgZGxscy93aW5tbS93aW5lb3NzL3dpbmVvc3Muc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYzoKCUFkZGVkIHNvbWUgbWlzc2luZyBpbXBvcnQgZGlyZWN0aXZlcy4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluOgoJUmVtb3ZlZCB3aW5tbSBmcm9tIGltcG9ydCBsaXN0LgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGluY2x1ZGUvYW5pbWF0ZS5oOgoJVXNlIEdldFByb2NBZGRyZXNzIGZvciBtbWlvKiBmdW5jdGlvbnMgdG8gYXZvaWQgaW1wb3J0aW5nIHdpbm1tLmRsbC4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWM6CglGaXhlZCByZXNvdXJjZSBsb2FkaW5nLgoKCSogdG9vbHMvY3ZkdW1wL2N2Y3J1bmNoLmMsIHRvb2xzL2N2ZHVtcC9jdmR1bXAuYywgdG9vbHMvY3ZkdW1wL2N2aW5jbHVkZS5oLCB0b29scy9jdmR1bXAvY3Zsb2FkLmM6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglNaW5vciBjbGVhbnVwcywgcGx1cyBmaXhlZCBhIGNvdXBsZSBidWdzIGluIC5EQkcgcGFyc2luZyBjb2RlLgoJQWRkZWQgZHVtcCBmb3IgTUlTQyBzZWN0aW9uLgoKCSogd2luZWRlZmF1bHQucmVnOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBEaXJlY3RQbGF5IHJlZ2lzdHJ5IGtleXMgdG8gd2luZWRlZmF1bHQucmVnLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglNb3VzZXdoZWVsIHN1cHBvcnQuCgoyMDAwLTA0LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvY3ZkdW1wL2N2Y3J1bmNoLmMsIHRvb2xzL2N2ZHVtcC9jdmR1bXAuaCwgdG9vbHMvZm50MmJkZi5jLCBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvbmVleGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3BlZXhlLmgsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvc25vb3AuYywgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jOgoJTW92ZWQgUEUgaGVhZGVyIGRlZmluaXRpb25zIHRvIHdpbm50Lmggd2hlcmUgdGhleSBiZWxvbmcuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mvc3B5LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIE1vdXNld2hlZWwgc3VwcG9ydC4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvbnZlcnQgc2VydmljZSBhbmQgcHJvdG9jb2wgbmFtZXMgdG8gbG93ZXJjYXNlIGJlZm9yZSBjYWxsaW5nCglnZXRzZXJ2Ynl7bmFtZXxwb3J0fSBhbmQgZ2V0cHJvdG9ieXtuYW1lfHBvcnR9LgoKCSogb2JqZWN0cy9yZWdpb24uYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCByZXR1cm4gdmFsdWUgZm9yIE9mZnNldFJnbiBpZiB4IGFuZCB5IGFyZSAwLgoKCSogZ3JhcGhpY3MvcGF0aC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IFN0cm9rZUFuZEZpbGxQYXRoLgoJQ2FsbCBEZWxldGVPYmplY3Qgd2hlbiBmaW5pc2hlZCB3aXRoIGhyZ24gaW4gUEFUSF9GaWxsUGF0aC4KCgkqIGluY2x1ZGUvd2luaW5ldC5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgdHlwby4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYzoKCVNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJRU1SX1NFTEVDVE9CSkVDVCByZWNvcmRzIHN0b2NrIG9iamVjdHMgd2l0aCB0aGVpciBpZCBhcyB0aGUgb2JqZWN0CgloYW5kbGUgYW5kIHRoZSBoaWdoIGJpdCBzZXQuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglUaWR5IHVwIG9mIFBsYXlFbmhNZXRhRmlsZVJlY29yZCAtIGZpeGVzIFBvbHlQb2x5KiBmdW5jdGlvbnMuCgoyMDAwLTA0LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6CglSZW1vdmVkIHBlcm1pc3Npb24gY2hlY2tzIGluIGNyZWF0ZV9rZXkgYW5kIGRlbGV0ZV9rZXkuIEl0IHNlZW1zCglXaW5kb3dzIGRvZXNuJ3QgY2hlY2sgYW55dGhpbmcuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJV3JhcCBhbiBleGNlcHRpb24gaGFuZGxlciBhcm91bmQgRmluZFJlc291cmNlLgoKCSogcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDb3JyZWN0ZWQgV2luTWFpbi4KCUFkZGVkIHRlc3QgY2FzZSBmb3IgUmVnQ3JlYXRlS2V5RXggc2hvd2luZyB3aW45NSBiZWhhdmlvdXIuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW5mby5jOgoJSW1wbGVtZW50ZWQgJ3dhbGsgcHJvY2VzcycgYW5kICd3YWxrIHRocmVhZHMnIGNvbW1hbmRzIHVzaW5nIHRvb2xoZWxwCglzbmFwc2hvdHMuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RsaGVscDMyLmgsIGluY2x1ZGUvdG9vbGhlbHAuaCwgbWlzYy90b29saGVscC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJSW1wbGVtZW50ZWQgdGhyZWFkIGFuZCAocGFydGlhbCkgbW9kdWxlIHNuYXBzaG90cywgYmFzZWQgb24gdGhlIHdvcmsKCW9mIEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPi4KCgkqIHNlcnZlci9tYWluLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NoZWxsLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvcmVnaXN0cnkuYywgd2luZS5pbmk6CglTYXZlIHRoZSByZWdpc3RyeSBvbiBzZXJ2ZXIgZXhpdCB3aXRob3V0IGNsaWVudCBpbnRlcnZlbnRpb24uCglSZW1vdmVkICJhbHQiIHJlZ2lzdHJ5IGZpbGVzIHNpbmNlIHdlIG5vdyBoYXZlIHN5bWxpbmtzIGFuZAoJV0lORVBSRUZJWCB0byByZXBsYWNlIHRoZW0uCgoJKiBpbmNsdWRlL3RzX3hsaWIuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVN1cHBvcnQgc3dpdGNoaW5nIHRoZSBrZXlib2FyZCBsYXlvdXQgd2l0aCBXSU5FIHJ1bm5pbmcuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJZmdldHM6IERvbid0IHN3YWxsb3cgXG4sIHRyZWF0IEVPRgoJZmVvZjogQ3J1ZGUgaW1wbGVtZW50YXRpb24KCXNpZ25hbDogUmV0dXJuIGVycm9yCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgbWlzc2luZyBiYWNrc2xhc2ggaW4gdGhlIGRlYnVnZ2VyIGRlZmluaXRpb24uCgoJKiB3aW4zMi90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglTZXRMb2NhbFRpbWUoKSBhbmQgU2V0U3lzdGVtVGltZSgpIGJ1Z2ZpeGVzLiBBZGRlZCBhIG1heGltdW0gY2xvY2sKCWFkanVzdG1lbnQgb2YgMiBtaW51dGVzIGp1c3QgaW4gY2FzZS4uLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRFNPVU5EX01peGVyTm9ybTogZG8gbm90IGNvbXBhcmUgdW5yZWxhdGVkIHBvaW50ZXJzLgoKMjAwMC0wNC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCVJld3JvdGUgY29tbWFuZC1saW5lIHBhcnNpbmcgb2YgQ3JlYXRlUHJvY2Vzc0EgdG8gYmUgbW9yZSBjb21wYXRpYmxlLgoKCSogcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHRvb2xzL2J1aWxkLmMsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suYywgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suc3BlYywgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL3djbWQuc3BlYywgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2Mvb3B0aW9ucy5jLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW46CglJbXByb3ZlZCBXaW5lbGliIGFwcHMgaW5pdGlhbGlzYXRpb24gY29kZS4gTm8gbG9uZ2VyIG5lZWQgdG8gbGluawoJd2luZXN0dWIubyB3aXRoIFdpbmVsaWIgYXBwcy4KCgkqIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgcmVsYXkzMi91dHRodW5rLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy93aW44N2VtL2VtdWxhdGUuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZ3JhcGhpY3MvdHR5ZHJ2L3BhbGV0dGUuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcveDExLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlcyB1cGRhdGUuCgktIEFkZCBuZXcgb3B0aW9ucyAtLWFsbCBhbmQgLS1ub25lIHRoYXQgZW5hYmxlL2Rpc2FibGVzIGFsbCBjaGVjawoJICByZXNwZWN0aXZlbHkuCgktIEZpeGVkIGFuZCBpbXByb3ZlZCBzdHViIHN0YXRpc3RpY3MuCgktIEZpeGVkIGJ1ZyB0aGF0IHByZXZlbnRlZCBjaGVja2luZyBvZiB0aGUgZmlyc3QgZnVuY3Rpb24gaW4gdGhlIC5zcGVjIGZpbGVzLgoJLSBQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIGEgbW9yZSBhZHZhbmNlZCBtaXNwbGFjZWQgZnVuY3Rpb24gY2hlY2tpbmcuCgktIE1pbm9yIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50IENDU19OT01PVkVZIGZvciB0b29sIGJhcnMuCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTeW1saW5rIHJvb3QncyByZWdpc3RyeSB0byBnbG9iYWwgcmVnaXN0cnkuIE1pbm9yIGNsZWFudXBzLgoKCSogb2xlL29sZTJubHMuYzogT3dlbiBXYW5nIDxvd2Vud0Bjb3JlbC5jYT4KCUFkZGVkIGZ1cnRoZXIgaW1wbGVtZW50YXRpb24gb2YgV0lOQVBJIEVudW1EYXRlRm9ybWF0cygpIHRvIHN1cHBvcnQKCXRocmVlIG1vcmUgbG9jYWxlczogR2VybWFuKHN0YW5kYXJkKSwgRnJlbmNoKHN0YW5kYXJkKSBhbmQgRnJlbmNoCgkoY2FuYWRpYW4pLiBBbGwgZGF0ZSBmb3JtYXRzIGZvbGxvdyBjb252ZW50aW9ucyBmcm9tIFdpbmRvd3MgTlQgNC4wCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUFkZGVkIHByb3BlciBoYW5kbGluZyBUVklTX09WRVJMQVlNQVNLIGZsYWcgYW5kIGFsbG93cyB0byBkaXNwbGF5CglvdmVybGF5IGltYWdlcy4gRml4ZWQgb2ZmIGJ5IG9uZSBlcnJvciB3aXRoIGxpc3RpdGVtIGluCglUUkVFVklFV19JbnNlcnRJdGVtQSAodU51bUl0ZW1zIGlzIDAgYmFzZWQsIGNDaGlsZHJlbiBpcyBhIGNvdW50KS4KCjIwMDAtMDQtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9wdGhyZWFkLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVBPU0lYIHRocmVhZHMgZW11bGF0aW9uLCB0cmlja3MgZ2xpYmMgaW50byBiZWluZyB0aHJlYWRzYWZlLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJTWFkZSBzZXJ2ZXIgbGF1bmNoaW5nIHNvbWV3aGF0IGNsZWFuZXIgYW5kIGZhc3Rlci4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhLmMsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJRGV0eXBvZWQgWDExRFJWX0VWRU5UX1NldElucHV0TWV0aG9kLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJV2hlbiBkZWFsaW5nIHdpdGggWEtCIGV4dGVuc2lvbnMsIGZvcmNlIHRoZSBBbHRHciBrZXkgbWFzayB0byB1c2UgdGhlCglncm91cCBpbmRleCBpbnN0ZWFkIG9mIHRoZSBtb2RpZmllci4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglEZWZpbmUgX19mYXN0Y2FsbC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIGEgZmV3IHRvb2xiYXIgZGVmaW5lcy4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUEgZmV3IGNvcnJlY3Rpb25zIHRvIGJvdW5kaW5nIGJveGVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglEb24ndCBjbG9zZSBncm91cHMgb2YgcG9seWxpbmVzLgoKCSogbWlzYy9jb21tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGRlcmVmZXJlbmNlIGEgcHRyIHdlIGp1c3QgY2hlY2tlZCBiZWluZyBOVUxMLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUNoYW5nZWQgdGhlIHBsYWNlbWVudCBvZiBXSU5FX1VOVVNFRCB0byBtYWtlIGdjYyAyLjcuMiBoYXBweS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGb2xsb3cgc3ltbGlua3Mgd2hlbiBzYXZpbmcgcmVnaXN0cnkuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbjoKCUFkZGVkIG1pc3Npbmcgd2luZXN0dWIgZGVwZW5kZW5jeS4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglMb2FkIGRvbmUgZXZlbnQgbm93IGNyZWF0ZWQgYnkgdGhlIHNlcnZlci4KCjIwMDAtMDQtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci8uY3ZzaWdub3JlLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvd2luZWRiZy5zcGVjLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgdGhlIHdpbmVkYmcgYW4gZXh0ZXJuYWwgYW5kIFdpbmVMaWIgcHJvZ3JhbS4KCUNlbnRyYWxpemVkIG91dHB1dCBoYW5kbGluZyAocHJlcGFyYXRpb24gZm9yIGNvbnNvbGUgdXNhZ2UpLgoJRml4ZWQgYSBmZXcgZGVidWcgaW5mb3JtYXRpb24gcmVhZGluZyBvcHRpb25zIChzdGFicyBhbmQgc3ltKS4KCVN0YXJ0ZWQgYSBmcmFtZXdvcmsgdG8gaG9sZCBkZWJ1Z2dlcidzIGludGVybmFsIHZhcmlhYmxlcy4KCgkqIG1pc2NlbXUvbWFpbi5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglHb3QgcmlkIG9mIC1kZWJ1ZyB3aW5lJ3Mgb3B0aW9uICh3aW5lIG5vdyByZXF1aXJlcyBhbiBleHRlcm5hbCBkZWJ1Z2dlcikuCgoJKiB3aW4zMi9leGNlcHQuYywgd2luZWRlZmF1bHQucmVnOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBsYXVuY2hpbmcgb2YgYSBkZWJ1Z2dlciB3aGVuIHVuaGFuZGxlZCBleGNlcHRpb24gb2NjdXJzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSAueGNubG5rIHNlY3Rpb24gdG8gYnVpbHRpbiBLRVJORUwzMiBQRSBoZWFkZXIuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTGV0IENyZWF0ZVByb2Nlc3MgbGF1bmNoIHVuaXggZXhlY3V0YWJsZSB3aXRob3V0IGEgLmV4ZSBleHRlbnNpb24uCglGaXhlZCBhcmd1bWVudHMgcGFzc2VkIHdoZW4gY3JlYXRpbmcgYSB1bml4IHByb2Nlc3MuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglGaXhlZCBzaWduYWwgc3RhY2sgaGFuZGxpbmcgb24gTGludXggd2hlbiBzaWdhbHRzdGFjayBpcyBhdmFpbGFibGUuCglBZGRlZCBhIGRpcmVjdCBzaWdhbHRzdGFjayBzeXNjYWxsIHRvIHdvcmstYXJvdW5kIHRoZSBnbGliYyBidWcuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS92aXJ0dWFsLmM6CglJbXBsZW1lbnRlZCBndWFyZCBwYWdlcyBhbmQgc3RhY2sgb3ZlcmZsb3cgZXhjZXB0aW9ucy4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUNsZWFudXAgdGhyZWFkIHN0YWNrIGFsbG9jYXRpb24uIFVzZSBhIHNpbmdsZSBWaXJ0dWFsQWxsb2MgZm9yIFRFQiBhbmQKCXRoZSB2YXJpb3VzIHN0YWNrcy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCU1ha2Ugc3VyZSBIS0xNXFNvZnR3YXJlXFdpbmVcV2luZSBpcyBhIG5vbi12b2xhdGlsZSBrZXkuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBBbHRHciBrZXkgaGFuZGxpbmcuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJTWFrZSBEaXJlY3REcmF3IGNvbXBpbGUgd2l0aCBER0EyIHByZXNlbnQuCgoJKiBmaWxlcy9maWxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUZJTEVfQ3JlYXRlRmlsZSgpJ3MgcmVhZC93cml0ZS1jaGVjayB3YXMgYnJva2VuIGR1ZSB0byBjaGVja2luZyBvZgoJRVJST1JfeHh4IGluc3RlYWQgb2YgU1RBVFVTX3h4eC4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVzIGFuZCBjbGVhbnMgdXAgc29tZSBvZiB0aGUgR2V0RW5oTWV0YUZpbGUqIGZ1bmN0aW9ucy4KCUZpeGVzIHNjYWxpbmcgb2YgRU1GcyBpbiBwbGF5YmFjay4gIFdpbGwgcHJvYmFibHkgYmUgcmlnaHQKCXdoZW4gV29ybGQgVHJhbnNmb3JtcyB3b3JrIHByb3Blcmx5Li4uCgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglHbG9iYWxSZUFsbG9jIHJldHVybnMgMCBvbiBmYWlsdXJlLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL29tLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVN0dWIgZm9yIE50QWxsb2NhdGVVdWlkcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNsZWFyIFRvcFJvb3RJdGVtIHdoZW4gd2hvbGUgdHJlZSBpcyBkZWxldGVkLgoJRml4IG9mZiBieSBvbmUgbHN0cmNweW4uCglDbGVhbiB1cCBhbmQgZml4IEdldE5leHRJdGVtLgoKMjAwMC0wNC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZTogSWdub3JlIGFsbCBvdXRwdXQgZmlsZXMuCgoJKiBkbGxzL3dpbmluZXQvLmN2c2lnbm9yZSwgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS93aW5pbmV0LmgsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi8uY3ZzaWdub3JlLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYzoKCU1lcmdlZCB1cmxtb24uZGxsIGFuZCB3aW5pbmV0LmRsbCBmcm9tIHRoZSBDb3JlbCB0cmVlIChpbXBsZW1lbnRhdGlvbgoJYnkgVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPikKCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvcXVldWUuYzoKCU1hZGUgR2V0UHJvY2Vzc0hlYXAoKSwgR2V0Q3VycmVudFByb2Nlc3NJZCgpLCBHZXRDdXJyZW50VGhyZWFkKCkgYW5kCglHZXRDdXJyZW50UHJvY2VzcygpIGlubGluZS4KCgkqIEFVVEhPUlMsIGluY2x1ZGUvYXV0aG9ycy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNZXJnZWQgaW4gQ29yZWwncyBBVVRIT1JzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbmx5IGNvcHkgZHN0d2lkdGgqMyBieXRlcyBpbiB0aGUgMjRiaXQgY2FzZS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZyZWUgcHJpdmF0ZSBzdHJ1Y3R1cmUgaW4gWGxpYl9ERFNfUmVsZWFzZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglNU0dfUHJvY2Vzc0tiZE1zZyBjYW4gYmUgY2FsbGVkIGZyb20gcGVlaywgc28gb25seSBwcm9jZXNzIHdoZW4gcmVtb3ZlIGlzIHNldC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJVHJlZVZpZXcgLSBtaW5vciBidWdmaXggYW5kIG9wdGltaXphdGlvbjoKCSAgIC0gR2V0REMgY2FsbCBtb3ZlZCBkb3duIHRvIGF2b2lkIHBvc3NpYmxlIHJlc291cmNlIGxlYWsuCgkgICAtIEludmFyaWFudCBjb2RlIGlzIG1vdmVkIG91dCBvZiBsb29wLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCV9JTEdldEZpbGVEYXRlIHNob3VsZCBjb252ZXJ0IHRoZSBkYXRlIHRvIGxvY2FsIHRpbWUgYmVmb3JlIGdlbmVyYXRpbmcKCXRoZSBzdHJpbmcgKF9JTEdldEZpbGVEYXRlVGltZSBkb2VzIG5vdCkuCgoJKiBkbGxzL3dpbm1tL21taW8uYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgb3RoZXIgYnVncyB3aXRoaW4gTU1JTyBpbXBsZW1lbnRhdGlvbi4gTm93LCBpdCdzIHBvc3NpYmxlIHRvCgljb3B5L2N1dCBmcm9tIFBob3RvUGFpbnQgYW5kIHBhc3RlIHRvIENvcmVsRHJhdy4KCjIwMDAtMDQtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglVc2UgZDNkZXhlY3V0ZWJ1ZmZlcl9jcmVhdGUgb25seSB3aGVuIGNvbXBpbGluZyB3aXRoIE1FU0EuCgoyMDAwLTA0LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy90dHlkcnYvcGFsZXR0ZS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlcGxhY2VkIHhtYWxsb2MgY2FsbHMgd2l0aCBtYWxsb2MvSGVhcEFsbG9jIGNhbGxzLgoKCSogY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3h0ZXJtLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvc21ldGljcy4KCgkqIG1lbW9yeS9oZWFwLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUltcGxlbWVudGVkIEhlYXBXYWxrKCkuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUd28gbGVmdCBvdmVyIEhlYXBWYWxpZGF0ZSBhc3NlcnRpb25zIHJlbW92ZWQuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2xlYXIgc3RhdHVzIGZvciBzZW5kaW5nIGV4Y2VwdGlvbiBldmVudC4KCgkqIHRvb2xzL2dlbnBhdGNoOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGFiaWxpdHkgdG8gcHV0IG5ldy1saW5lcyBpbiBjaGFuZ2Vsb2cgZW50cnkuCglBZGRlZCAtcCB0byBsb2NhdGUgZGVzdGluYXRpb24gZGlyZWN0b3J5LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglHZXRJdGVtIHdhcyByZXR1cm5pbmcgdGhlIGl0ZW0gaW5zdGVhZCBvZiBzdWJpdGVtIGluZm8uCgoJKiBwcm9ncmFtcy93aW5lbWluZS9tYWluLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCVJlZ2lzdHJ5IGtleSB1c2VkIGluIExvYWRCb2FyZCgpIHdhcyBub3QgdGhlIHNhbWUgYXMgdGhlIG9uZSB1c2VkIGluCglTYXZlQm9hcmQoKS4gQWxzbyBmaXhlZCBhIHR5cG8gaW4gdGhlIHBvc2l0aW9uIHNhdmluZyBjb2RlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglDcmVhdGUgZGlyZWN0b3JpZXMgdGhhdCBkb24ndCBjb250YWluIGEgTWFrZWZpbGUuCgoJKiB0b29scy93cmMvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgb2xlL01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgdG9vbHMvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbjoKCUltcHJvdmVkIHN1cHBvcnQgZm9yIE1ha2VmaWxlcyB0aGF0IG5lZWQgdG8gcmVjdXJzZSBpbiBzdWJkaXJlY3Rvcmllcy4KCgkqIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL3gxMS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgY29uZmlndXJlLmluLCBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvY29udmVydC5jLCBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZXMuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlc3RydWN0dXJlZCBEaXJlY3REcmF3LiBTcGxpdCBpbnRvIFgxMSBhbmQgREdBIGRyaXZlciwgYW5kIG11bHRpcGxlCglmaWxlcy9kaXJzIGZvciBlYXNpZXIgbWFpbnRlbmFuY2UuIENsZWFuZWQgdXAgc3RydWN0cyBhbmQgaW5jbHVkZQoJZmlsZXMuIFJlaW5kZW50ZWQgdGhlIGNvZGUuIFN0YXJ0ZWQgdGhlIHNhbWUgZm9yIERpcmVjdDNELiAgRHJpdmVyCglpbmNsdXNpb24gbm93IGRvbmUgYnkgdXNpbmcgY29uZmlndXJlL01ha2VmaWxlL0VMRiBjb25zdHJ1Y3RvciB0cmlja3MuCgoyMDAwLTA0LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9jdXJzb3JpY29uLmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS9oZWFwLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy90aW1lci5jLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJUmVtb3ZlZCBhIG51bWJlciBvZiBnbG9iYWwgaGFuZGxlIGFsbG9jYXRpb25zIGFuZCBjcml0aWNhbCBzZWN0aW9uCglpbml0aWFsaXphdGlvbnMuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVGVtcG9yYXJ5IGhhY2sgdG8gc2hhcmUgaGFuZGxlcyBiZXR3ZWVuIHByb2Nlc3NlcyBzaGFyaW5nIHRoZSBzYW1lCglhZGRyZXNzIHNwYWNlLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJQWRkZWQgbGF6eSBpbml0aWFsaXphdGlvbiBvZiBjcml0aWNhbCBzZWN0aW9ucywgYmFzZWQgb24gYSBwYXRjaCBieQoJQW5kcmV3IExld3lja3kuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBZdXhpIFpoYW5nIDx5dXhpQGNvcmVsLmNhPgoJU3RlcGhlbiBNZXJldQoJVGFiQ3RybCBsZWZ0bW9zdFZpc2libGUgaXMgbm90IHVwZGF0ZWQgcHJvcGVybHkuIEl0IGNhdXNlZCB0aGUgUVAKCWFwcGxpY2F0aW9uIGJhciBvbiB0aGUgYm90dG9tIGZhaWwgdG8gYnJpbmcgYmFjayB0aGUgaXRlbXMgd2hlbiB0aGVyZQoJaXMgbm8gbmVlZCB0byBzY3JvbGxpbmcuIEFsc28gZml4ZWQgYSBidWcgdGhhdCB3aGVuIGFuIGl0ZW0gaXMgaW5zZXJ0ZWQsCglzZXRJdGVtQm91bmRzIHNob3VsZCBiZSBjYWxsZWQgZmlyc3QsIHRoZW4gaXQncyB0aW1lIHRvIGludmFsaWRhdGUuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL25ld2Zucy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBQZWVrTmFtZWRQaXBlIHN0dWIuCgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXhlZCBwaXhtYXAgbGVhayB3aXRoIHRoZSAxeDEgYml0bWFwIGluIG1lbW9yeSBEQ3MuCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+Cgl3aW5laW5zdGFsbCBub3cgcHJvcGVybHkgY29uZmlndXJlcyBuby13aW5kb3dzIGluc3RhbGxzLCBhbmQgc2hvdWxkIG5vdwoJYmUgZWFzaWVyIHRvIGFkYXB0IGZvciBiaW5hcnkgcGFja2FnZXMgdG9vLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmk6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURlZmF1bHQgc3lzdGVtLmluaSAoZnJvbSBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhKS4KCjIwMDAtMDQtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglEbyBub3Qgc2VuZCBhIGRlYnVnIGV2ZW50IGZvciBhIHRocmVhZCB1bnRpbCB0aGUgcHJldmlvdXMgZXZlbnQgZm9yCgl0aGUgc2FtZSB0aHJlYWQgaGFzIGJlZW4gY29udGludWVkLgoKCSogbWlzYy9yZWdpc3RyeS5jLCB3aW5lLmluaToKCU1vdmVkIFNhdmVPbmx5VXBkYXRlZEtleXMgdG8gd2luZS5pbmkuCglVc2UgZ2V0X2NvbmZpZ19kaXIoKSBpbnN0ZWFkIG9mIGhhcmRjb2Rpbmcgfi8ud2luZQoJU2ltcGxpZmllZCBsb2FkaW5nIGFuZCBzYXZpbmcgcm91dGluZXMuCgoJKiBmaWxlcy9wcm9maWxlLmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9yZXF1ZXN0LmM6CglBZGRlZCBzdXBwb3J0IGZvciBXSU5FUFJFRklYIGVudmlyb25tZW50IHZhcmlhYmxlLgoKCSogd2luZG93cy93aW5wb3MuYywgbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy9sc3RyLmMsIG1pc2MvbmV0d29yay5jLCBtc2Rvcy9pbnQyMS5jLCBvYmplY3RzL2ZvbnQuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9leGNlcHQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBkbGxzL3dpbjMycy93MzJzeXMuYywgZGxscy93aW44N2VtL2VtdWxhdGUuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBsb2FkZXIvbW9kdWxlLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvZ2RpL2dkaS5zcGVjLCBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi9zdHVicy5jLCBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCBvbGUvb2xlMm5scy5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglPd2VuIFdhbmcgPG93ZW53QGNvcmVsLmNhPgoJSW1wbGVtZW50ZWQgQVBJIEVudW1UaW1lRm9ybWF0c0EoKS4gSXQgc3VwcG9ydHMgbm93IGFsbCBkaWZmZXJlbnQKCUVuZ2xpc2ggbG9jYWxlcywgYXMgd2VsbCBhcyBHZXJtYW4oc3RhbmRhcmQpLCBGcmVuY2goc3RhbmRhcmQpIGFuZAoJRnJlbmNoKENhbmFkaWFuKS4gIEFsbCB0aW1lIGZvcm1hdHMgZm9sbG93IGNvbnZlbnRpb25zIGluIFdpbmRvd3MgTlQgNC4wCgoJSGFpdGhlbSBIbWlkYSAob2YgTWFjYWRhbWlhbiBmb3IgQ29yZWwpCglJbXBsZW1lbnRlZCBHZXRDdXJyZW5jeUZvcm1hdEEoKSBBUEk6CgktIEdldEN1cnJlbmN5Rm9ybWF0QSgpIGNhbGxzIEdldE51bWJlckZvcm1hdEEoKSB0byBmb3JtYXQgdGhlIG51bWJlcgoJICAoYXMgYSBwb3NpdGl2ZSBvbmUpLCB0aGVuIGZvcm1hdHMgdGhlIG51bWJlciBkZXBlbmRpbmcgb24KCSAgTmVnYXRpdmVPcmRlci9Qb3NpdGl2ZU9yZGVyIGZpZWxkcy4KCS0gR2V0TnVtYmVyRm9ybWF0QSgpIGhhcyBiZWVuIHNsaWdodGx5IG1vZGlmaWVkLgoKCSogb2JqZWN0cy90ZXh0LmM6CglKdW5pY2hpIEt1Y2hpbmlzaGkgPGprdWNoaUBtYWhvcm9iYS5uZS5qcD4KCUFkZGVkIGNvbnZlcnNpb24gZnJvbSBEQkNTIGxwRHggdG8gV0NIQVIgbHBEeC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hZHZhcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEltcGxlbWVudGVkIHN0dWIgc3RhdGlzdGljcy4gVHVybmVkIG9mZiBieSBkZWZhdWx0LiAoUmVxdWVzdGVkIGJ5IEZyYW5jb2lzCglHb3VnZXQpLgoJLSBJbXBsZW1lbnRlZCBtaXNzaW5nIHByb3RvdHlwZSBjaGVja2luZy4gVHVybmVkIG9mZiBieSBkZWZhdWx0IChSZXF1ZXN0ZWQKCWJ5IERpbWl0cnkgVGltb3Noa292KS4KCS0gSW1wbGVtZW50ZWQgLnNwZWMgZmlsZSBuYW1lIHNhbml0eSBjaGVja2luZy4gVHVybmVkIG9mZiBieSBkZWZhdWx0LgoJLSBJbXBsZW1lbnRlZCBkb2N1bWVudGF0aW9uIHdpZHRoIGNoZWNraW5nLiBUdXJuZWQgb2ZmIGJ5IGRlZmF1bHQuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY2E+CglGaXggU3RyaW5nRnJvbUdVSTIgcmV0dXJuIHZhbHVlIGFzIHBlciBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglNYWtlIGF1ZGlvZGV2aWNlIGJsb2NraW5nIGRpcmVjdGx5IGFmdGVyIHRoZSBub24tYmxvY2tpbmcgb3Blbiwgc2luY2UKCXdlIHVzZSB0aGUgd3JpdGUoMikgYWxzbyBmb3Igc3luY2hyb25pemF0aW9uLgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0ZWQgZXJyb3IgaGFuZGxpbmcgZm9yIHdzX2dldHByb3RvYnluYW1lL251bWJlci4KCU1hZGUgdGhlIEFzeW5jIGVycm9yIHJldHVybnMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbCBmdW5jdGlvbnMuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldFNob3J0UGF0aE5hbWU6IGFsd2F5cyBlcmFzZSBjaGFyYWN0ZXJzIGF0IHRoZSBlbmQgb2YgdGhlIG5ldwoJc3RyaW5nLCBhbmQgcmV0dXJuIG9ubHkgc2luZ2xlIGJhY2tzbGFzaGVzLgoKMjAwMC0wNC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZHJpdmUuaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmMsIG1pc2MvcmVnaXN0cnkuYywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJQWRkZWQgYSBwZXItZHJpdmUgRmFpbFJlYWRPbmx5IGZsYWcsIGFuZCByZW1vdmVkIHRoZSBnbG9iYWwKCS0tZmFpbHJlYWRvbmx5IG9wdGlvbi4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGZpbGVzL2ZpbGUuYywgc2NoZWR1bGVyL2NsaWVudC5jOgoJRml4ZWQgZmlsZSBkZXNjcmlwdG9yIGxlYWtzLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJQ2FsbCBQUk9GSUxFX0dldFdpbmVJbmlCb29sIGJlZm9yZSBzdGFydGluZyB0byBmaWxsIHRoZSByZXF1ZXN0CglidWZmZXIuIE1hZGUgbmV3IHJlZ2lzdHJ5IGZvcm1hdCB0aGUgZGVmYXVsdC4KCgkqIHNlcnZlci9wdHJhY2UuYzoKCUluY3JlbWVudCBzdXNwZW5kIGNvdW50IGJlZm9yZSBhdHRlbXB0aW5nIGF0dGFjaCBpbiBzdXNwZW5kX2Zvcl9wdHJhY2UuCgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZXZlbnQuYzoKCU1hZGUgcmVxdWVzdCB0cmFjaW5nIG1vcmUgcm9idXN0IGFnYWluc3QgYm9ndXMgbGVuZ3Rocy4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUFkYXB0ZWQgdGhlIG1hbnVhbCBwYWdlcyB0byB0aGUgbmV3IGxvbmcgb3B0aW9ucywgdXBkYXRlZCB0aGUKCS1kZWJ1Z21zZyBjaGFubmVscyBhbmQgYWRkZWQgYSBzbWFsbCBoYWNrIHRvIGdldCB0aGUgQHN5c2NvbmZkaXJACglzdHVmZiBpbiB0aGUgbWFudWFsIHBhZ2VzIHJpZ2h0LgoKCSogZGxscy93aW5tbS9tbWlvLmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHR3byBzbWFsbCBidWdzIHdpdGhpbiBNTUlPX0luc3RhbGxJT1Byb2MgYW5kIE1NSU9fRGVzdHJveS4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5oOgoJSm9zaHVhIFRoaWVsZW4gPGZvemV5QG5ldHplcm8uY29tPgoJQWRkZWQgRGVzdHJveUJvYXJkIGZ1bmN0aW9uIHRvIGRlbGV0ZSBiaXRtYXAgaGFuZGxlcy4KCU1vdmVkIFNlbGVjdE9iamVjdCBvdXRzaWRlIG9mIERyYXdNaW5lLgoJU2VsZWN0ZWQgb2xkIG9iamVjdCdzIGJhY2sgaW50byBoTWVtREMuCgoJKiBtc2Rvcy9pbnQyMS5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUltcGxlbWVudGVkIEZBVDMyIGZ1bmN0aW9uIDczMDIgKEdldCBFeHRlbmRlZCBEUEIpLgoKCSogd2luMzIvZGV2aWNlLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJSW1wbGVtZW50ZWQgRGV2aWNlSW9Db250cm9sIFZXSU4zMl9ESU9DX0RPU19EUklWRUlORk8sIG5lZWRlZCBieQoJSW50ZXJuZXQgRXhwbG9yZXIuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jYT4KCVRoaXMgcGF0Y2ggYWRkcyB0aGUgYWJpbGl0eSBmb3IgcmVnYXBpIHRvIGNhbGwgdGhlIERsbFJlZ2lzdGVyU2VydmVyIG9yCglEbGxVbnJlZ2lzdGVyU2VydmVyIGZvciBhIGxpc3Qgb2YgRExMcy4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jYT4KCU9sZVJlZ0dldFVzZXJUeXBlIGRpZCByZXR1cm4gYW4gdW50ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZyBpbnN0ZWFkIG9mIGFuCglPTEVTVFIgKHdpZGUgY2hhcmFjdGVycykuCgoJKiBtaXNjL21haW4uYywgb2xlL25scy9lbmEubmxzLCBvbGUvbmxzL2VuYi5ubHMsIG9sZS9ubHMvZW5jLm5scywgb2xlL25scy9lbmcubmxzLCBvbGUvbmxzL2VuaS5ubHMsIG9sZS9ubHMvZW5qLm5scywgb2xlL25scy9lbmwubmxzLCBvbGUvbmxzL2Vucy5ubHMsIG9sZS9ubHMvZW50Lm5scywgb2xlL25scy9lbnUubmxzLCBvbGUvbmxzL2Vuei5ubHMsIG9sZS9ubHMvaXJsLm5scywgb2xlL29sZTJubHMuYzoKCU1pY2hhZWwgQWJkLUVsLU1hbGVrIChDb3JlbCkKCUNoYW5nZWQgaXJsLm5scyB0byBlbmkubmxzLiBSZXZpZXdlZCBhbmQgZml4ZWQgYSBsb3Qgb2YgdGhlIE5MUyBmaWxlcwoJdG8gYmUgbW9yZSBjb21wYXRpYmxlIHRvIFdpbmRvd3MuCglBZGRlZCBlbl9HQiAodXNlZCBieSBDb3JlbCBMaW51eCAxLjAsMS4xKSBhcyBhbGlhcyBmb3IgZW5fVUsuCgoJSmVmZiBUcmFudGVyIDxqZWZmdEBjb3JlbC5jYT4KCVRoZSBtZWFzdXJlbWVudCB1bml0IGZvciBDYW5hZGlhbiBFbmdsaXNoIHNob3VsZCBiZSBtZXRyaWMuCglMQU5HX1NVQl9FTlRSWSBkaWQgYWx3YXlzIHJldHVybiB0aGUgZmlyc3QgbGFuZ3VhZ2UgZHVlIHRvIG1pc3Npbmcge30uCgoyMDAwLTAzLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVwZGF0ZWQgZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnMgaW4gcmVnYXJkcyB0byBzaGFyZWQgbGlicmFyaWVzIGFuZAoJc29tZSBtb3JlIHdpbmRvd3Mgc3BlY2lmaWMgZGlycy4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL1JFQURNRSwgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBGaXggcGFpbnRpbmcgYnVnIHdpdGggbWlkZGxlIGJ1dHRvbiBkb3duIHdoZW4gZHJhZ2dpbmcgbW91c2UKCS0gU3BlZWQgdXAgZHJhd2luZyBhbmQgaGVuY2Ugb3ZlcmFsbCBzcGVlZAoJLSBGaXggY29tcGlsZXIgd2FybmluZ3MKCS0gQWRkZWQgc29tZSBvcHRpb25hbCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KCS0gQWRkZWQgYSBuZXcga25vd24gYnVnIHRvIHRoZSBsaXN0CgoJKiBtaXNjL2NvbW0uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIENUUywgRFNSIGFuZCBSaW5nSW5kaWNhdG9yIHN0YXRlcyB0byBXaW5kb3cncyBzZW1pLWRvY3VtZW50ZWQKCW1vZGVtIGxpbmUgc3RhdHVzIHJlZ2lzdGVyLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRGVsZXRlIG9iamVjdHMgYWZ0ZXIgdXNlIGluIEVudW1FbmhNZXRhRmlsZS4KCU1ha2UgUGxheUVuaE1ldGFGaWxlIGNhbGwgRW51bUVuaE1ldGFGaWxlLgoJTW92ZSBFbnVtRW5oTWV0YUZpbGUgcHJvdG90eXBlIHRvIHdpbmdkaS5oLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJb3BlbigpIHRoZSBPU1Mgc291bmRkZXZpY2Ugbm9uLWJsb2NraW5nIGluIGNhc2UgYW5vdGhlciBwcm9jZXNzIGhhcyBpdAoJb3BlbiBhbHJlYWR5LgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUNvbW1lbnRlZCBvdXQgZXhpdCgpIGNhbGwgb24gRXhpdFByb2Nlc3MgZm9yIG5vdy4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglTZXQgdGhyZWFkIHN0YXJ0IGFkZHJlc3MgdG8gMCBvbiBldmVudHMgZ2VuZXJhdGVkIGJ5CglEZWJ1Z0FjdGl2ZVByb2Nlc3MuCglSZXR1cm4gYSBjb3JyZWN0IGFkZHJlc3MgaW4gdGhlIHNpbXVsYXRlZCBleGNlcHRpb24gZXZlbnQuCgoJKiBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBncmFwaGljcy90dHlkcnYvZGMuYywgZ3JhcGhpY3MvdHR5ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3R0eWRydi90ZXh0LmMsIGluY2x1ZGUvdHR5ZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jOgoJRml4ZWQgdHR5ZHJ2IGNvbXBpbGUgd2hlbiB1c2luZyBjdXJzZXMuIENsZWFuZWQgdXAgYSBmZXcgI2lmZGVmcy4KCjIwMDAtMDMtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGdyYXBoaWNzL3BhdGguYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby55YWNjLnk6CglOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCS0gRml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MuCgktIFJlbW92ZSBzdXBlcmZsdW91cyAjaW5jbHVkZSBzdGF0ZW1lbnQuCgoJKiBpbmNsdWRlL3dpbmUvd2lubmV0MTYuaCwgbWlzYy9uZXR3b3JrLmM6CglSb24gR2FnZSA8cm9uZ2FnZUBhdHQubmV0PgoJRml4ZWQgYnVnIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqICovKi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZC9maXhlZCBzb21lIGRvY3VtZW50YXRpb24gcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgb2JqZWN0cy9wYWxldHRlLmM6CglGaXhlZCBtZW1vcnkgYWxsb2NhdGlvbnMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9pbnB1dC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkL2ZpeGVkIHNvbWUgZG9jdW1lbnRhdGlvbiByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2sKCS0gUmVuYW1lZCBNYXBWaXJ0dWFsS2V5RXgzMkEgdG8gTWFwVmlydHVhbEtleUV4QQoJLSBSZW5hbWVkIENSVERMTF9fZGxsb25leGl0IHRvIENSVERMTF9fX2RsbGluaXQKCgkqIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIG1pc2MvcHJpbnRkcnYuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBVcGRhdGVkIHRoZSBBUEkgZmlsZXMuCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCURvIGEgTG9hZExpYnJhcnlBIG9mIFdJTk1NIHVwb24gQU5JTUFURV9DcmVhdGUgYW5kIGEgRnJlZUxpYnJhcnkgdXBvbgoJQU5JTUFURV9EZXN0cm95LgoKCSogdG9vbHMvd3JjL3BhcnNlci5sOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGZpeCBpbiB3cmMgdG8gc3VwcG9ydCB0aGUgU29sYXJpcyBwcmVwcm9jZXNzb3IuCgoJKiBkZWJ1Z2dlci9tc2MuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIEFOU0kgQyB2aW9sYXRpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGQgc3RhcnQgbWVudSBkaXJlY3Rvcmllcy4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVB1dCBDTE9ORV9GSUxFUyBiYWNrIGluLCBpdCBpcyBzdGlsbCBicmVha2luZyB0b28gbWFueSB0aGluZ3MuCgoJKiBvYmplY3RzL2JpdG1hcC5jLCBncmFwaGljcy90dHlkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL3gxMWRydi5oOgoJTWVyZ2VkIEREQml0bWFwIGFuZCBwaHlzQml0bWFwIGludG8gdGhlIGdlbmVyaWMgYml0bWFwIHN0cnVjdHVyZQoJKHN1Z2dlc3RlZCBieSBBbmRyZXcgTGV3eWNreSkuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCUlnbm9yZSB0cmFpbGluZyBzcGFjZXMgaW4gRE9TRlNfVG9Eb3NGQ0JGb3JtYXQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglGaXhlZCBzbWFsbCBidWcgaW4gV1NPQ0szMl9hY2NlcHQKCjIwMDAtMDMtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMDAzMjYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDMtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kb3NfZnMuYzogU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglET1NGU19Ub0Rvc0ZDQkZvcm1hdDogZmFpbCBpZiBleHRlbnNpb24gbG9uZ2VyIHRoYW4gMyBjaGFyYWN0ZXJzLgoKCSogdG9vbHMvY3ZkdW1wLy5jdnNpZ25vcmUsIHRvb2xzL2N2ZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvY3ZkdW1wL2N2Y3J1bmNoLmMsIHRvb2xzL2N2ZHVtcC9jdmR1bXAuYywgdG9vbHMvY3ZkdW1wL2N2ZHVtcC5oLCB0b29scy9jdmR1bXAvY3ZpbmNsdWRlLmgsIHRvb2xzL2N2ZHVtcC9jdmxvYWQuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgY3ZkdW1wIHRvb2wgdG8gZHVtcCBDb2RlVmlldyBzeW1ib2wgaW5mb3JtYXRpb24uCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglIYW5kbGUgUE9MTEhVUCBiZXR0ZXIgKGRlbGF5IEZEX0NMT1NFIG5vdGlmaWNhdGlvbiB1bnRpbCBhbGwgZGF0YSBoYXMKCWJlZW4gcmVhZCkuIE1hZGUgV1NBRW51bU5ldHdvcmtFdmVudHMgYXRvbWljLiBDb252ZXJ0IHNvY2tldCBldmVudAoJZXJyb3IgY29kZXMgcHJvcGVybHkuIE1hZGUgYWNjZXB0KCktZWQgc29ja2V0cyBpbmhlcml0IHRoZSBsaXN0ZW5pbmcKCXNvY2tldCdzIFdTQUFzeW5jU2VsZWN0KCkuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCBkZWJ1ZyBmb3JtYXR0aW5nLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOiBGaXhlZCBlcnJvciBjaGVja2luZyBpbiByZWdpc3RyeSBzYXZpbmcuCgoJKiBtaXNjL2Nkcm9tLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBzdHJlcnJvciBpbiBkZWJ1ZyBvdXRwdXQuCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTSENoYW5nZU5vdGlmeVtBfFddOiBmcmVlIG9ubHkgaXRlbXMgd2UgYWxsb2NhdGVkLgoKCSogbG9hZGVyL3Jlc291cmNlLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvdGV4dC5jLCB3aW4zMi9jb25zb2xlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZXMgZm9yIGkxOG4uCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyByZWFkIC5zbyBsaXN0IGZyb20gZGVidWdnZWUncyBhZGRyZXNzIHNwYWNlLgoKCSogaW5jbHVkZS93aW5kb3dzeC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIG1pc3NpbmcgbWFjcm9zLgoKCSogaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oLCBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJTW92ZWQgc29tZSByZWdpc3RyeSBkZWZpbml0aW9ucyB0byB3aW5udC5oLgoKCSogcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLnNwZWMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LnNwZWMsIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5zcGVjLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBpbXBvcnQgb2YgY29tZGxnMzIuZGxsIGluIHNwZWMgZmlsZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWN0aXZhdGUgYSBoaWRkZW4gd2luZG93IG9ubHkgd2hlbiBleHBsaWNpdGVseSBhc2tlZCBieSB0aGUKCWFwcGxpY2F0aW9uLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWltcHJvdmVkIGV4Y2VwdGlvbiBoYW5kbGluZwoJbWVyZ2VkIGFsbCBtb2R1bGUgaGFuZGxpbmcgY29kZSBpbiBuZXcgbW9kdWxlLmMgZmlsZQoJcmVlbmFibGVkICd3YWxrIG1vZHVsZScgYW5kICdpbmZvIG1vZHVsZScgY29tbWFuZHMKCWFkZGVkIGFiaWxpdHkgdG8gZHJpdmUgYnJlYWsgb24gdGhyZWFkIHN0YXJ0dXAKCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YnMgZm9yIERsbFJlZ2lzdGVyU2VydmVyL0RsbFVucmVnaXN0ZXJTZXJ2ZXIuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgcmV0dXJuIHZhbHVlIGZvciBTQ19HRVRfREVWX1RZUEUuCgoyMDAwLTAzLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9idWlsZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9yZWN0LmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9sb2NhbC5jLCBtaXNjL3ZlcnNpb24uYywgbXNkb3MvaW50MjEuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS93aW5kZWYuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVc2UgbWluL21heCBpbnN0ZWFkIG9mIE1JTi9NQVguCgoJKiBzZXJ2ZXIvc29jay5jOiBPdmUgS2FhdmVuIDxvdmVoa0BwaW5nLnVpby5ubz4KCUhhbmRsZSBzb2NrZXQgUE9MTEVSUi9QT0xMSFVQIGNvbmRpdGlvbnMgcHJvcGVybHkuCglDbGVhciBlcnJvciBmaWVsZCBmb3IgT09CIG5vdGlmaWNhdGlvbnMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNlbmQgdGhlIGNvcnJlY3QgT0RBXyBjb2RlIHdoZW4gZGVzZWxlY3RpbmcgYW4gaXRlbS4KCgkqIHdpbmRvd3MvdXNlci5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglGaXhlZCBhIGNvdXBsZSBvZiBmaWxlIGRlc2NyaXB0b3IgbGVha3MuCglBbHdheXMgY2FsbCBVU0VSIHNpZ25hbCBwcm9jIGluIHRoZSByaWdodCBjb250ZXh0LgoJQ2xlYW5lZCB1cCBUSFJFQURfQ3JlYXRlLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjoKCURvIG5vdCBlcmFzZSBsb2NhbCBmaWxlcyBvbiB1bmluc3RhbGwgaWYgaW5zdGFsbCBkaXIgZG9lcyBub3QgZXhpc3QuCgoJKiB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdHR5ZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3R0eWRydi9kZXNrdG9wLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3R0eWRydi93bmQuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgY29udHJvbHMvZGVza3RvcC5jLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy90dHlkcnYvZGMuYywgaW5jbHVkZS9kZXNrdG9wLmgsIGluY2x1ZGUvbW9uaXRvci5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgbWlzYy9tYWluLmMsIHdpbmRvd3MvZGNlLmM6CglTdG9yZSBtb25pdG9yIHNpemUgYW5kIGRlcHRoIGluIHRoZSBnZW5lcmljIHN0cnVjdHVyZS4KCU1lcmdlZCBtb25pdG9yIGRyaXZlciBpbnRvIFVTRVIgZHJpdmVyLgoKCSogd2luZG93cy90dHlkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MvdHR5ZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2Rlc2t0b3AuYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL2RkcmF3L2RkcmF3X21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBpbmNsdWRlL3gxMWRydi5oOgoJQSBmZXcgc2ltcGxpZmljYXRpb25zIGFuZCBvcHRpbWl6YXRpb25zIGluIHRoZSB4MTEgZHJpdmVyLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbjoKCUxpbmsgdHR5ZHJ2IGFuZCB4MTFkcnYgb2JqZWN0cyBpbnRvIHRoZWlyIHJlc3BlY3RpdmUgZGxsLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluOiBBZGRlZCBtaXNzaW5nIGtleWJvYXJkLnNwZWMuCgoyMDAwLTAzLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9tc2dib3guYywgbWlzYy9jb21tLmMsIG1pc2MvcHJpbnRkcnYuYywgd2luMzIvZXhjZXB0LmM6CglNb3ZlZCBGYXRhbEFwcEV4aXQgZnVuY3Rpb25zIHRvIHdpbjMyL2V4Y2VwdC5jLgoJQWRkZWQgYSBmZXcgdXNlcyBvZiBDYWxsb3V0IGluc3RlYWQgb2YgcmVmZXJlbmNpbmcgVVNFUiBmdW5jdGlvbnMKCWRpcmVjdGx5LgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmM6CglNb3ZlZCBMb2FkSW1hZ2UgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIGN1cnNvcmljb24uYy4KCgkqIGRsbHMvZ2RpLy5jdnNpZ25vcmUsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkuc3BlYywgZGxscy9nZGkvdGh1bmsuYywgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2tleWJvYXJkLnNwZWMsIGRsbHMvdXNlci90aHVuay5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIva2V5Ym9hcmQuc3BlYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgb2JqZWN0cy9saW5lZGRhLmMsIHdpbmRvd3Mvd2luLmM6CglNb3ZlZCBnZGkvdXNlciB0aHVua2luZyBmdW5jdGlvbnMgaW50byB0aGVpciByZXNwZWN0aXZlIGRsbHMuCglNb3ZlZCBrZXlib2FyZC5zcGVjIGludG8gdXNlciBkbGwuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURpc2FibGUgT3BlbkdMIHN1cHBvcnQgaWYgdGhlIGxhdHRlciBpcyB0aHJlYWQgc2FmZS4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9tZW1vcnkuYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBncmFwaGljcy9kaXNwZGliLmMsIGluY2x1ZGUvYW5pbWF0ZS5oLCBpbmNsdWRlL2J1dHRvbi5oLCBpbmNsdWRlL2NydGRsbC5oLCBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2Rpc3BkaWIuaCwgaW5jbHVkZS9lbmhtZXRhZmlsZS5oLCBpbmNsdWRlL2ltYWdlbGlzdC5oLCBpbmNsdWRlL21ldGFmaWxlLmgsIGluY2x1ZGUvcmVnaW9uLmgsIGluY2x1ZGUvc3FsdHlwZXMuaCwgaW5jbHVkZS93aW5lL2ljbXBhcGkuaCwgaW5jbHVkZS93aW5lL29ial9jb21tZGxnYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfZG9ja2luZ3dpbmRvd2ZyYW1lLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbnBvcy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIHRoZSBpbmNsdWRlIGZpbGVzIHNlbGYgc3VmZmljaWVudC4KCgkqIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYywgZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93c29jazMyLnNwZWMsIG1pc2MvZGRlbWwuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvdGFwaTMyL2Fzc2lzdGVkLmMsIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy90YXBpMzIvcGhvbmUuYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL21wci9tcHJfbWFpbi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9kZHJhdy9kZHJhd19tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkL2ZpeGVkIHNvbWUgZG9jdW1lbnRhdGlvbiByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCB3aW4zMi9uZXdmbnMuYywgd2luZG93cy9wYWludGluZy5jLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBncmFwaGljcy9wYWludGluZy5jLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvd2luZ2RpLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGluY2x1ZGUvd2lubnQuaCwgb2xlL29sZTJubHMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIEFOU0kgQyB2aW9sYXRpb25zLgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYywgcHJvZ3JhbXMvbm90ZXBhZC9EYS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3QuYywgcHJvZ3JhbXMvdmlldy92aWV3LmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBBTlNJIEMgcmVsYXRlZCBjb21waWxlIHByb2JsZW1zLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2dkaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5tbS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9kZGVtbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gVXBkYXRlZCBBUEkgZmlsZXMKCS0gRG9uJ3QgY2hlY2sgdGhlICouc3BlYy5jIGZpbGVzCgktIEJldHRlciBwYXJzaW5nIG9mIHN0cmluZ3MKCS0gQmV0dGVyIGRvY3VtZW50YXRpb24gY2hlY2tpbmcKCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBzb21lIGRlYnVnIGNvZGUgYW5kIGNsZWFuZWQtdXAgdGhlIG1vdXNlIHdhcnBpbmcgY29kZQoJLSBiZSByZWFkeSBvbmNlIG1vdXNlIHdpbGwgYmUgcmVwb3J0ZWQgcmVsYXRpdmVseQoKCSogd2luZG93cy9tZGkuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgY29weWluZyBvZiB0aGUgTURJICdXaW5kb3dzJyBtZW51IGl0ZW1zIGlmIHRoZSBpdGVtcyBhcmUgbm90IG9mCgl0eXBlIE1GVF9TVFJJTkcuCgoJKiBjb250cm9scy9tZW51LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNldCB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgdGhlIGNjaCBlbGVtZW50IG9mIE1FTlVJVEVNSU5GTyBpbgoJR2V0TWVudUl0ZW1JbmZvLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IHNwZWMgZmlsZSBlbnRyaWVzIGZvciBFbnVtRm9udEZhbWlsaWVzRXgqLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGdXJ0aGVyIGNvZGUgc2ltcGxpZmljYXRpb25zIGFuZCBpbnRlcmZhY2UgKGNvbnNpc3RlbmN5KSBpbXByb3ZlbWVudHMuCglGaXggc2VsZWN0aW9uIG9mIHRoZSBXaW5lIGJpbmFyeSB3aGljaCB3YXMgYnJva2VuIGJ5IGEgcmVjZW50IGNoYW5nZS4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgcHJvcGVyIHRlcm1pbmF0aW9uIHVwb24gZmFpbHVyZS4KCgkqIGRlYnVnZ2VyL3R5cGVzLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYmFzaWMgdHlwZSBldmFsdWF0aW9uLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUVuc3VyZSB0aGF0IG5vbi1OVUxMIHRlcm1pbmF0ZWQgc3RpbmdzIGFyZSBzYXZlZCBjb3JyZWN0bHkuCgoJKiB3aW5kb3dzL2lucHV0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0IHRoZSBOb3RpZnlDb2RlIGluIHRoZSBXTV9DT01NQU5EIG1lc3NhZ2Ugc2VudCBieQoJS0JEX3RyYW5zbGF0ZV9hY2NlbGVyYXRvcigpLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNsaWdodGx5IGJldHRlciBSRVFVRVNUIFNFTlNFIGR1bXBpbmcsIGZpeGVkIEdFVF9ERVZfVFlQRSByZXR1cm5zLAoJd29yayBhcm91bmQgRVhFQyBTQ1NJIGNvbW1hbmRzIHdoaWNoIGRvIG5vdCBzZXQgdGhlIGhvc3Q8LT50YXJnZXQgZGF0YQoJZmxhZ3MsIGlnbm9yZSBlcnJvcnMgb24gRFZEIFJFUE9SVCBLRVkvRFZEIFNFTkQgS0VZLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQ2hhbmdlZCBQVFJBQ0VfUEVFS1VTRVIgdG8gUFRSQUNFX1BFRUtVU1IgYW5kIFBUUkFDRV9QT0tFVVNFUiB0bwoJUFRSQUNFX1BPS0VVU1IgZm9yIGxpYmM1KD8pIGNvbXBpbGUuCgoJKiBjb250cm9scy9jb21iby5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdG9wIGEgV01fU0VUVEVYVCBtZXNzYWdlIChhbmQgZnJpZW5kcykgdG8gYSBjb21ibyBzZW5kaW5nIENCTl9FRElUKgoJbWVzc2FnZXMgdG8gdGhlIHBhcmVudC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBtZW1vcnkvaGVhcC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIChjb3JyZWN0KSBwcm90b3R5cGUgZm9yIEhlYXBXYWxrLgoKCSogZGxscy9vbGUzMi9pZnMuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gVGhlIElDT01fQ01FVEhPRHh4eCBjYXVzZSBwcm9ibGVtcyBiZWNhdXNlIHRoZSAnY29uc3QnIGNoYW5nZXMgdGhlCgkgIHNpZ25hdHVyZS4gVGhlcmUncyBubyBzdWNoIHRoaW5nIG9uIFdpbmRvd3MgYW55d2F5IChpdCdzIGEgc2hhbWUpIHNvCgkgIGp1c3QgcmVtb3ZlIHRoZW0gYWx0b2dldGhlci4KCS0gSGVhcE1pbmltaXplIHJldHVybnMgYSB2b2lkLCBub3QgYSAndm9pZConCgoyMDAwLTAzLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L2Rlc2t0b3AuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGxvYWRlci9tYWluLmMsIG1pc2MvbWFpbi5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3R0eWRydi9kZXNrdG9wLmMsIHdpbmRvd3Mvd2luLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaXNwbGF5L2Rpc3BsYXlfbWFpbi5jLCBkbGxzL21vdXNlL21vdXNlX21haW4uYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2Rlc2t0b3AuaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9tb25pdG9yLmgsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglNb3ZlZCBncmFwaGljcyBpbml0aWFsaXNhdGlvbiB0byB0aGUgeDExZHJ2L3R0eWRydiBkbGwgaW5pdCBjb2RlLgoJTWVyZ2VkIGV2ZW50LCBrZXlib2FyZCBhbmQgbW91c2UgZHJpdmVycyBpbnRvIFVTRVIgZHJpdmVyLgoKMjAwMC0wMy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9vbGUybmxzLmM6IEFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNvbT4KCUltcHJvdmVkIENvbXBhcmVTdHJpbmdBIHBlcmZvcm1hbmNlLgoKCSogbGlicmFyeS93aW5lc3R1Yi5jOiBBZGRlZCBtaXNzaW5nIGRlYnVndG9vbHMuaCBpbmNsdWRlLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5sZXgubCwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uaCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvc2VhcmNoLmMsIHByb2dyYW1zL3Byb2dtYW4vZGlhbG9nLmMsIHByb2dyYW1zL3Byb2dtYW4vZ3JvdXAuYywgcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ3JhbS5jLCBwcm9ncmFtcy92aWV3L2luaXQuYywgcHJvZ3JhbXMvdmlldy92aWV3LmM6CglOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCUZpeGVkIHNvbWUgY29tcGlsZXIgZXJyb3JzIGFuZCB3YXJuaW5ncy4KCgkqIG9sZS9vbGUybmxzLmM6IFN0ZXZlbiBFbGxpb3R0IDxlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbT4KCVRlbXBvcmFyaWx5IGltcGxlbWVudGVkIHRoZSBMQ01BUF9TT1JUS0VZIGZsYWcgaW4gdGhlIExDTWFwU3RyaW5nVygpCglmdW5jdGlvbiBwZW5kaW5nIGEgbW9yZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBsb2NhbGVzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJSGFjazogYWx3YXlzIHRyeSBidWlsdGluIG1vZHVsZSBiZWZvcmUgZWxmIG9yIGVsZmRsbCB0byBhdm9pZCBsb2FkaW5nCglhIGJ1aWx0aW4gZGxsIC5zbyBmaWxlIGluIHRoZSB3cm9uZyBtb2RlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG9iamVjdHMvZm9udC5jOgoJTW92ZWQgZm9udCByZXNvdXJjZSBmdW5jdGlvbnMgb3V0IG9mIHRoZSBYMTEgZHJpdmVyLgoKCSogdG9vbHMvbWFrZWRlcC5jOgoJQWRkZWQgc3VwcG9ydCBmb3Igc291cmNlIGZpbGVzIHN0b3JlZCBpbiBzdWJkaXJlY3Rvcmllcy4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGMuYzoKCUFkZGVkIEdldERDT3JnRXggaW4gZ3JhcGhpY3MgZGV2aWNlIGludGVyZmFjZSBhbmQgcmVtb3ZlZCBYMTEgY29kZQoJZnJvbSBkYy5jLgoKCSogZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYywgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5tbS5zcGVjLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNlZ21lbnRlZC9saW5lYXIgYnVmZmVycyBtYW5pcHVsYXRpb24uCglCZXR0ZXIgSU8gYnVmZmVyaW5nLgoJQWRkZWQgc29tZSBtaXNzaW5nIHByb3RvdHlwZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRXhwbGljaXRseSB1c2UgdGhlIFRWTl94eHhBIHZlcnNpb24gb2YgdGhlIG1hY3Jvcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIEFkZGVkIHRoZSBUVk5feHh4QSBtYWNyb3MKCS0gQWRkZWQgbWlzc2luZyBUQk5PVElGWSBtYWNyb3MgYW5kIHR5cGVzCgktIEFkZGVkIFNORE1TRwoKCSogaW5jbHVkZS93aW51c2VyLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgV01fQVBQLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBpbmNsdWRlL3gxMWRydi5oLCBsaWJyYXJ5L3dpbmVzdHViLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvbWFpbi5jLCBtaXNjL3ByaW50ZHJ2LmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy94bWFsbG9jLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZW1vdmVkIG1vc3QgY2FsbHMgdG8geG1hbGxvYy94cmVhbGxvYy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSBBZGRlZCBtaXNzaW5nIGRlZmluaXRpb24gZm9yIEdMT0JBTEhBTkRMRSBhbmQgTE9DQUxIQU5ETEUKCS0gRml4ZWQgdGhlIHByb3RvdHlwZSBvZiBXTkRFTlVNUFJPQwoKCSogaW5jbHVkZS9kZGVtbC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbmVzLgoKCSogd2luZG93cy9kaWFsb2cuYzogQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY29tPgoJUHJvcGFnYXRlIElzRGlhbG9nTWVzc2FnZSB0byB0aGUgcGFyZW50IGlmIHRoZSBkaWFsb2cgaGFzIHRoZQoJRFNfQ09OVFJPTCBmbGFnLgoKCSogbWVtb3J5L3N0cmluZy5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIGFuIGV4Y2VwdGlvbiBmcmFtZSBmb3IgbHN0cmNweTE2LgoKCSogbG9hZGVyL21haW4uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgYXR0YWNoaW5nIGltcG9ydGVkIERMTHMgb2YgYSB3aW5lbGliIGV4ZWN1dGFibGUuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJT2xlSXRlbUNvbnRhaW5lciBoYXMgT0xFR1VJRCgweDExYyksIG5vdCAweDExYS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIG1lbW9yeSBjb3JydXB0aW9uIHdpdGggQ29UYXNrTWVtUmVhbGxvYy4KCgkqIHRvb2xzL2dlbnBhdGNoOiBTdGV2ZW4gRWxsaW90dCA8ZWxsaW90c2xAbWluZHNwcmluZy5jb20+CglNYWRlIHZhcmlvdXMgY2hhbmdlcyB0byB0b29scy9nZW5wYXRjaCBpbmNsdWRpbmcgc3VnZ2VzdGlvbnMgZnJvbSBPdmUKCUthYXZlbiAoUGxhY2UgYWRkZWQgZmlsZXMgbGFzdCBpbiB0aGUgcGF0Y2guICBBZGQgYSBzd2l0Y2ggdGhhdAoJc3BlY2lmaWVzIG1vZGlmaWVkIGZpbGVzLikKCgkqIGluY2x1ZGUvdGNoYXIuaCwgaW5jbHVkZS93aW5udC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1vdmVkIHRoZSBkZWZpbml0aW9uIG9mIFBUU1RSIGFuZCBMUFRTVFIgZnJvbSB0Y2hhci5oIHRvIHdpbm50LmguCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglTaG91bGQgaW5jbHVkZSAnd2luc3Bvb2wuaCcuCgoJKiB0b29scy93cmMvcGFyc2VyLmgsIHRvb2xzL3dyYy9wYXJzZXIubDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSBBbiBleHRlcm4gc3RhdGVtZW50IGZpbmlzaGVzIHdpdGggdGhlIGZpcnN0IGNsb3NpbmcgJ30nIG9yIHRoZSBmaXJzdAoJICBvdXRlciAnOycKCS0gSGFuZGxlICcjZXJyb3InLCAnI2xpbmUnIGFuZCAnI3ByYWdtYScgZXZlbiB3aGVuIGluIHRoZSAncHBfc3RyaXBzJywKCSAgJ3BwX3N0cmlwZScsICdwcF9zdHJpcHAnIG9yICdwcF9mYWxzZScgY29udGV4dHMgKGp1c3QgbGlrZSAnI2lmJyBhbmQKCSAgY28pLiAgQnV0IHN0aWxsIGRvbid0IGlzc3VlIGFuIGVycm9yIGlmICcjZXJyb3InIGlzIGZvdW5kIHdoZW4gaW4gdGhlCgkgICdwcF9mYWxzZScgc3RhdGUuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTWFrZSB0aGUgZmlyc3QgY29tbWEgaW4gdGhlIGNvbnRyb2wncyBkZWZpbml0aW9uIG9wdGlvbmFsLgoKCSogZGxscy9vbGUzMi9kYXRhY2FjaGUuYzogQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY29tPgoJU3VwcG9ydCBsb2FkaW5nIGFueSBwcmVzZW50YXRpb24gYXNwZWN0LgoKCSogZGxscy93aW5hc3BpL2FzcGkuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBdm9pZCBhIGxpbmsgZXJyb3IgZnJvbSBhbm90aGVyIERMTCBvbiBGcmVlQlNELgoKCSogZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGpveXN0aWNrIElEL2RldmljZUlEL2RyaXZlciBoYW5kbGUvaW5zdGFuY2UgSUQgbWl4dXAuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNvbT4KCURlbGV0ZSB0aGUgc2htIHNlZ21lbnQgYXMgc29vbiBhcyB3aW5lIGFuZCBYIGhhdmUgYXR0YWNoZWQgaXQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IExhcnMgSGVldGUgPGhlbEBhZG1pbi5kZT4KCUNvcnJlY3RlZCBoYW5kbGluZyBvZiBwcm90bz09TlVMTCBpbiBXSU5TT0NLX2dldHNlcnZieW5hbWUgYW5kCglXSU5TT0NLX2dldHNlcnZieXBvcnQuCgoJKiB3aW5kb3dzL2V2ZW50LmMsIGluY2x1ZGUvbWFpbi5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL21haW4uYywgbWlzY2VtdS9tYWluLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9nZGkzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpLy5jdnNpZ25vcmUsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkuc3BlYywgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy90dHlkcnYvLmN2c2lnbm9yZSwgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvLmN2c2lnbm9yZSwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvZ2RpLnNwZWMsIGlmMTYzMi91c2VyLnNwZWMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZToKCUNyZWF0ZWQgc2VwYXJhdGUgZGxscyBmb3IgdXNlcixnZGksdHR5ZHJ2LHgxMWRydi4KCUZpeGVkIFdpbmVsaWIgYXJnYyBoYW5kbGluZyAodGhhbmtzIHRvIEVyaWMgUG91ZWNoKS4KCjIwMDAtMDMtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9wc2Rydi9lc2NhcGUuYywgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3R3ZWFrLmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL3R3ZWFrLmMsIG9sZS9vbGUybmxzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy90dHlkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L21haW4uYzoKCU1pc2Mgc21hbGwgY2xlYW51cHMuCgoJKiB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGxvYWRlci9kb3MvZG9zdm0uYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9tYWluLmMsIG1pc2Mvc3B5LmMsIG9iamVjdHMvTWFrZWZpbGUuaW4sIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9tZXNzYWdlLmM6CglBdm9pZCBjYWxsaW5nIHRoZSAqUmVjdCBVU0VSIGZ1bmN0aW9ucyBmcm9tIGluc2lkZSBHREkuCglNb3ZlZCBhIGZldyBVU0VSIGZ1bmN0aW9ucyB0byBhIG1vcmUgYXBwcm9wcmlhdGUgbG9jYXRpb24uCgoJKiBsb2FkZXIvbWFpbi5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy92ZXJzaW9uLmMsIG1pc2NlbXUvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgZGxscy9kZHJhdy9kZHJhd19tYWluLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3NoZWxsLmgsIHdpbmUuaW5pOgoJTW92ZWQgY29tbWFuZC1saW5lIG9wdGlvbiBoYW5kbGluZyBvdXQgb2YgdGhlIFgxMSBkcml2ZXIuCglBZGRlZCBzdXBwb3J0IGZvciAiLS0iIHByZWZpeCBvbiBvcHRpb25zLgoJUmVwbGFjZWQgYSBmZXcgWDExIGNvbW1hbmQtbGluZSBvcHRpb25zIGJ5IHdpbmUuY29uZiBwYXJhbWV0ZXJzLgoKMjAwMC0wMy0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBncmFwaGljcy92Z2EuYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9kZHJhdy5zcGVjLCByZWxheTMyL2RpbnB1dC5zcGVjLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2RpbnB1dC5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy8uY3ZzaWdub3JlLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlcy5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZHJhdy9kZHJhd19tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC8uY3ZzaWdub3JlLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6CglNYWRlIGRkcmF3IGFuZCBkaW5wdXQgc2VwYXJhdGUgZGxscy4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUhhdmUgdGhyZWFkcyBhbmQgcHJvY2Vzc2VzIGV4aXQgbW9yZSBjbGVhbmx5IHdoZW5ldmVyIHBvc3NpYmxlLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUluY2x1ZGUgc3BhY2UgZm9yIHJlc291cmNlcyBpbiB0aGUgbW9kdWxlIGhlYWRlciBpbnN0ZWFkIG9mIGRvaW5nIGEKCXNlcGFyYXRlIGFsbG9jYXRpb24uCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tcHIvLmN2c2lnbm9yZSwgZGxscy9tcHIvTWFrZWZpbGUuaW4sIG1pc2MvbmV0d29yay5jOgoJTWFkZSBNUFIgYSBzZXBhcmF0ZSBkbGwuCgoJKiBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaDoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNvbT4KCVJld3JpdGUgdGhlIEJJR0JMT0NLRklMRSBpbXBsZW1lbnRhdGlvbiBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGdXJ0aGVyIHNpbXBsaWZ5IHRoZSBjb2RlIGFuZCByZW1vdmUgc29tZSByZWR1bmRhbnQgY29kZS4KCU1ha2UgdGhlIHVzZXIgaW50ZXJmYWNlIG1vcmUgY29uc2lzdGVudCBhbmQgYXBwZWFsaW5nLgoKCSogZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jOiBBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jb20+CglBdm9pZCBhIHJlZmNvdW50IGxlYWsgaW4gUXVlcnlJbnRlcmZhY2Ugd2hlbiBkZWxlZ2F0aW5nLgoJQW5kIGEgY291cGxlIG9mIG1pbm9yIGJ1Z3MuCgoyMDAwLTAzLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbnRyb2R1Y2VkIERCR19WQUxVRSBzdHJ1Y3QgdG8gbWFuaXB1bGF0ZSBkZWJ1Z2dlci9kZWJ1Z2dlZSBhZGRyZXNzIHNwYWNlLgoJQWRkZWQgd2F0Y2ggKGhhcmR3YXJlIGFzc2lzdGVkIGRlYnVnZ2luZykgYW5kIHdoYXRpcyAodHlwZSBvZiBleHByKSBjb21tYW5kcy4KCUZpeGVkIHNvbWUgaXNzdWVzIGluIGxvY2FsIHZhcnMgaGFuZGxpbmcgKHN0YWJzIHBhcnNpbmcgJiByZWdpc3RlcnMgb3B0aW1pemF0aW9uKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jYT4KCVVwZGF0ZSBESUIgc2VjdGlvbnMgaW4gdGV4dCBvdXRwdXQgYW5kIGZvciBncmFwaGljcyBwcmltaXRpdmVzLgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCU1pY2hhZWwgQWJkLUVsLU1hbGVrIChvbiBiZWhhbGYgb2YgQ29yZWwpCglXaGVuIHdlIHdlcmUgc3dpdGNoaW5nIHRvIGFub3RoZXIgZGVza3RvcCwgdGhlIHBvcHVwIHdpbmRvd3MgbG9zdAoJdGhlaXIgV1NfVklTSUJMRSBmbGFnLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOgoJQXZvaWQgU0lHU1RPUC9TSUdDT05UIHJhY2Ugd2hlbiBwdHJhY2UgaXMgZGlzYWJsZWQuCglGaXhlZCBjb250ZXh0IGZsYWdzIGhhbmRsaW5nICh0aGFua3MgdG8gRXJpYyBQb3VlY2gpLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCUF2b2lkIFNJR1NUT1AvU0lHQ09OVCByYWNlIHdoZW4gcHRyYWNlIGlzIGRpc2FibGVkLgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6IEZpeGVkIGJ1ZyBpbiBnZW5lcmF0ZV9zdGFydHVwX2RlYnVnX2V2ZW50cygpLgoKCSogcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9SRUFETUUsIHByb2dyYW1zL3dpbmVtaW5lL2RpYWxvZy5jLCBwcm9ncmFtcy93aW5lbWluZS9kaWFsb2cuaCwgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmgsIHByb2dyYW1zL3dpbmVtaW5lL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmMsIHByb2dyYW1zL3dpbmVtaW5lL3dpbmVtaW5lLnNwZWMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSm9zaHVhIFRoaWVsZW4gPGZvemV5QG5ldHplcm8uY29tPgoJQWRkZWQgd2luZW1pbmUgYXBwLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglJbXByb3ZlZCB0aGUgdmlzdWFsIGFwcGVhcmVuY2Ugb2YgdGhlIHVzZXIgaW50ZXJmYWNlLiBNYWRlIHRoZSBjb2RlCglzb21ld2hhdCBzaW1wbGVyLgoKMjAwMC0wMy0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjOgoJV2FsZGVrIEhlYmlzY2ggPGhlYmlzY2hAbWF0aC51bmkud3JvYy5wbD4KCUltcGxlbWVudGVkIF9yZWFkIGFuZCBfbHNlZWsuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0IGNvbnZlcnNpb24gb2YgbGV2ZWwgcGFyYW1ldGVyIGlmIFdJTlNPQ0tfc2V0c29ja29wdCBpcyBjYWxsZWQKCWZvciBvcHRpb24gV1NfU09fRE9OVExJTkdFUi4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0IHJvdW5kaW5nIG9mIHRoZSByZXN1bHQgaW4gTXVsRGl2MTYoKS4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBGcmVlQlNEIGNvbXBpbGF0aW9uLgoKCSogZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuaCwgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheToKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIE1ha2UgcmVnaXN0cnkgdXNhZ2UgYSBsaXR0bGUgbW9yZSBjb3JyZWN0IGFuZCBtb2Rlcm4KCS0gQ3JlYXRlIGhvbWUgZm9yIGFsbCBkcGxheSBuYW1lIHNlcnZlciBmdW5jdGlvbmFsaXR5CgktIEFkZCB0aGUgZnJhbWV3b3JrIGZvciBFbnVtU2Vzc2lvbnMKCS0gRG9jdW1lbnRhdGlvbiB1cGRhdGUKCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGluY2x1ZGUvZGVidWdkZWZzLmg6CglEaW1pdHJpZSBQYXVuIDxkaW1pQGJpZ2Zvb3QuY29tPgoJQ2xlYW5lZCB1cCBkZWJ1ZyBjaGFubmVscyBhIGJpdC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglJbXBsZW1lbnRlZCBzdHJldGNoZWQgYmx0cyBmb3IgZGVwdGggMjQgKHVub3B0aW1pemVkKS4KCjIwMDAtMDMtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6IEZpeGVkIE9VVFBVVF9ERUJVR19TVFJJTkcgcG9pbnRlciBoYW5kbGluZy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBtZW1vcnkvdmlydHVhbC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJUmVtb3ZlZCBQUk9DRVNTX0lzQ3VycmVudCgpLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9leGNlcHQuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCUFkZGVkIHNwZWNpZmljIHJvdXRpbmVzIGZvciBPVVRQVVRfREVCVUdfU1RSSU5HIGFuZCBFWENFUFRJT04gZGVidWcgZXZlbnRzLgoJR2VuZXJhdGUgYSBicmVha3BvaW50IGV2ZW50IG9uIHByb2Nlc3MgYXR0YWNoLgoJTWlzYyBjbGVhbnVwcyBpbiByZXF1ZXN0IGhhbmRsaW5nLgoKMjAwMC0wMy0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgcmVseWluZyBvbiBleGNlcHRpb24gY29kZXMgdG8ga25vdyB3aGVuIGRlYnVnZ2VyIGlzIGVudGVyZWQgZm9yIGEKCXNpbmdsZSBzdGVwIHRyYXAuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmMsIG1pc2NlbXUvbWFpbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBwcm9jIHRvIHN0YXJ0IGRlYnVnZ2luZyBwcm9jZXNzIGZyb20gaXRzIGNvbW1hbmQgbGluZSAoYnkgbGF1bmNoaW5nIGl0KS4KCgkqIGRlYnVnZ2VyL2V4cHIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDbGVhbnVwLgoKCSogZ3JhcGhpY3MvcHNkcnYvYWZtLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBCbGFjayBhcyBhIHZhbGlkIGZvbnQgd2VpZ2h0LgoJQ29wZSB3aXRoIGFmbSBmaWxlcyB0aGF0IGRvIG5vdCBjb250YWluIHtGYW1pbHl8RnVsbH1OYW1lIGVudHJpZXMuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6IERhdmlkIEVsbGlvdHQgPGRmZUBuZXRuaXRjby5uZXQ+CgktIEdvdCByaWQgb2YgUFJPRklMRSBmdW5jdGlvbnMuCgktIFVzZSBmdW5jdGlvbmFsaXR5IG9mIGFzcGkuYy4KCS0gQXV0b21hZ2ljYWxseSByZWFkIC9wcm9jL3Njc2kvc2NzaSAocGFydCBvZiBhc3BpLmMgd2hpY2ggaXMgYWxyZWFkeQoJICBpbiB0cmVlKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJSGFuZGxlIDI0IGJpdCBESUJzIDwtPiAyNCBiaXQgZGVlcC8yNCBiaXRzIHBlciBwaXhlbCBYSW1hZ2VzLgoKCSogcHJvZ3JhbXMvdmlldy9nbG9iYWxzLmg6IE1pa2UgQ2FzdGxlIDxkYWxnb2RhQGl4Lm5ldGNvbS5uZXQ+CglBZGRlZCByZXNvdXJjZS5oIGluY2x1ZGUuCgoJKiB3aW5kb3dzL3JlY3QuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJc1JlY3RFbXB0eSBhbHNvIHJldHVybnMgdHJ1ZSBmb3IgbmVnYXRpdmUgd2lkdGgvaGVpZ2h0cyAodmVyaWZpZWQKCWFnYWluc3QgV2luZG93cyksIGZvdW5kIGJ5IEJyYWQgT2xpdmVyIDxicmFkbWFuQHBvYm94LmNvbT4uCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJVGFrZSB0eXBlIGZyb20gcmVmZXJlbmNlZCB2YXJpYW50IGZvciBWVF9CWVJFRiAmJiBWVF9WQVJJQU5ULgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL2VsZmRsbC5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVN0b3JlIHRoZSBsaXN0IG9mIGxvYWRlZCBkbGxzIGluIHRoZSBzZXJ2ZXIsIGFuZCBnZW5lcmF0ZSBkZWJ1ZyBldmVudHMKCWludGVybmFsbHkuCgoyMDAwLTAzLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jOgoJQWRkZWQgc2VydmVyIHByb3RvY29sIHZlcnNpb24gY2hlY2suCgoJKiBpbmNsdWRlL2FzcGkuaCwgaW5jbHVkZS93aW5hc3BpLmgsIGluY2x1ZGUvd25hc3BpMzIuaCwgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2Rvc2FzcGkuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvLmN2c2lnbm9yZSwgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmgsIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjOgoJRGF2aWQgRWxsaW90dCA8ZGZlQG5ldG5pdGNvLm5ldD4KCS0gU2xpZ2h0bHkgcmV3b3JrZWQgaW5jbHVkZSBmaWxlcyAobGVzcyBtZXNzeSwgbW9yZSBzdHJhaWdodGZvcndhcmQpLgoJLSBNb3ZlZCBET1MgQVNQSSBmdW5jdGlvbmFsaXR5IHRvIG1zZG9zL2Rvc2FzcGkuYy4KCS0gR290IHJpZCB1c2luZyBQUk9GSUxFIHRvIGdldCBTQ1NJIGluZm8gZnJvbSB3aW5lLmNvbmYuCgktIFJlYWQgc2NzaSBpbmZvIGZyb20gL3Byb2Mvc2NzaS9zY3NpLgoJLSBBZGRlZCBzZXR0aW5nIG9mIGEgcmVhc29uYWJsZSB0aW1lb3V0IHdoZW4gb3BlbmluZyBhIFNDU0kgZGV2aWNlICg1CgkgIG1pbnV0ZXMsIGRlZmluZWQgaW4gd2luZXNjc2kuaCkuCgktIEV4ZWNTY3NpQ29tbWFuZCBub3cgQUxXQVlTIHBvc3RzLCBldmVuIG9uIGVycm9yICh3aGljaCBpcyB0aGUgY29ycmVjdAoJICBiZWhhdmlvcikuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9jb21tZGxnL3JzcmMucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NrLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgcmVzb3VyY2VzL3N5c3Jlc19Tay5yYywgcmVzb3VyY2VzL3VzZXIzMi5yYzoKCVNpbWVuIFphbWVjbmlrIDxzaW1lbkBuZXh0cmEuc2s+CglBZGRlZCBTbG92YWsgbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0phLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgcmVzb3VyY2VzLy5jdnNpZ25vcmUsIHJlc291cmNlcy9zeXNyZXNfSmEucmMsIHJlc291cmNlcy91c2VyMzIucmMsIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL2NvbW1kbGcvcnNyYy5yYzoKCUp1bmljaGkgS3VjaGluaXNoaSA8amt1Y2hpQG1haG9yb2JhLm5lLmpwPgoJQWRkZWQgc29tZSBKYXBhbmVzZSByZXNvdXJjZXMuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL29sZTJpbXBsLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlc3RkLmgsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3dpbmVycm9yLmg6CglBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIE9MRSBjbGlwYm9hcmQgZnVuY3Rpb25hbGl0eSBmb3IgRW1iZWQgU291cmNlIGZvcm1hdC4KCUl0IGhlbHBzIHlvdSBjdXQgYW5kIHBhc3RlIGRhdGEgd2l0aCBFbWJlZCBTb3VyY2UgZm9ybWF0IGJldHdlZW4KCWFwcGxpY2F0aW9ucy4gIEl0IGFsc28gaW1wbGVtZW50cyBPbGVDcmVhdGVGcm9tRGF0YSBhbmQKCU9sZVF1ZXJ5Q3JlYXRlRnJvbURhdGEgYW5kIGZpeGVzIHNvbWUgYnVncyBpbiBkYXRhY2FjaGUuYy4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJd20tPm1vZG5hbWUgbWlnaHQgYmUgaW52YWxpZCBhdCB0aGUgZW5kIG9mIEZyZWVMaWJyYXJ5LgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBtaXNjL2RlYnVnc3RyLmMsIG1pc2MvZXJyb3IuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgZGVidWdnZXIvc3RhY2suYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL2RjZS5oLCBpbmNsdWRlL21lbnUuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvbm9uY2xpZW50LmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGluY2x1ZGUvc3RydWN0MzIuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW5wb3MuaCwgbG9hZGVyL21vZHVsZS5jLCBjb250cm9scy9idXR0b24uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCBhIGxvdCBvZiB1bm5lY2Vzc2FyeSBpbmNsdWRlcyBhbmQgZml4ZWQgdGhlIGNvbXBpbGUgZXJyb3JzLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3NoZWxsLmgsIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3dzcHJpbnRmLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUNvcnJlY3RlZCB2YWx1ZSBmb3IgREFZU19JTl9PTkVfWUVBUi4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUNsZWFuZWQgdXAgQ1JURExMX191bmxpbmsuCgoJKiBjb250cm9scy9zdGF0aWMuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJVGhlIHN0YXRpYyBjb250cm9sIG9ubHkgbmVlZHMgdG8gaW52YWxpZGF0ZSBpdHMgcmVjdCB3aGVuIHdlIFNldFRleHQuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgbWlzYy9zcHkuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBhIGZldyBtZXNzYWdlcyBmb3IgSU1FLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZGlzcGxheS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZGVidWdnZXIuaCwgbWlzY2VtdS9tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBkaXJlY3RseSBhY2Nlc3NpbmcgZGVidWdnZWUgbWVtb3J5LgoJRXhlY3V0aW9uIGNvbnRleHQgKG1vZGUsIHN0ZXBzLi4uKSBhcmUgbm93IGxpbmtlZCB0byBhIHRocmVhZC4KCVJlbW92ZWQgc29tZSBYMTEgY3JzdCBoYWNrcy4KCVJld3JvdGUgaW5mby93YWxrIGNvbW1hbmRzLgoJUmVtb3ZlZCBkaXJlY3QgZGVidWdnZXIgaW52b2NhdGlvbiBjb2RlIChhbmQgbW92ZWQgdGhlIHJlc3QgdG8gdGhlIG5ldwoJd2luZWRiZy5jIGZpbGUpLgoKCSogc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCB3aW4zMi9leGNlcHQuYywgd2luMzIvbmV3Zm5zLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGxvYWRlci9tb2R1bGUuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCVJlbW92ZWQgUERCMzJfREVCVUdHRUQgZmxhZyBhbmQgc2VuZCBhbGwgZGVidWcgZXZlbnRzIHVuY29uZGl0aW9uYWxseS4KCUltcGxlbWVudGVkIElzRGVidWdnZXJQcmVzZW50KCkuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglHZW5lcmF0ZSBDUkVBVEVfUFJPQ0VTUy9USFJFQUQgZGVidWcgZXZlbnRzIGludGVybmFsbHkgaW4gdGhlIHNlcnZlci4KCjIwMDAtMDMtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvdGhyZWFkLmMsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIGlubGluZSBmdW5jdGlvbnMgU2V0TGFzdEVycm9yIGFuZAoJR2V0Q3VycmVudFRocmVhZElkLiAgQWRkZWQgYXNtIGlubGluZXMgZm9yIEludGVybG9ja2VkKiBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvbnRkZGsuaCwgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJQWRkZWQgRGJnQnJlYWtQb2ludC4gRml4ZWQgZXhjZXB0aW9uIHJlY29yZCBjb250ZW50cyBvbiBTSUdUUkFQLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCBzZWNvbmQgaW5zdGFuY2UgREdST1VQIGxvYWRpbmcuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgbWlzYy9tYWluLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgU1BJX0dFVElDT05NRVRSSUNTLgoJQ2hhbmdlIFdBUk4gLT4gRklYTUUgZm9yIHVuaW1wbGVtZW50ZWQgU1BJX3MgYW5kIHNldCBhcHByb3ByaWF0ZSBlcnJvci4KCgkqIG1lbW9yeS9nbG9iYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBY3R1YWwgd3JpdGUgdGhlIGNhY2hlZCBzdHJ1Y3QgaW4gR2xvYmFsTWVtb3J5U3RhdHVzLgoKCSogZG9jdW1lbnRhdGlvbi9mb250cywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSW5jbHVkZSBpbiB0aGUgQWRkRm9udFJlc291cmNlQS9XIGZpeG1lIG1lc3NhZ2UgYSBwb2ludGVyIHRvIHRoZSBmb250cwoJZG9jdW1lbnQuIEluIHRoaXMgZG9jdW1lbnQgdGVsbCB0aGUgdXNlciBob3cgdG8gZmluZCB0aGUgbmVlZGVkIHRvb2xzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkIGEgbWVzc2FnZSBhbmQgZml4IGVycm9yIGNvZGUgaWYgX193c19nZXRzZXJ2YnluYW1lKCkgYW5kCglfX3dzX2dldHNlcnZieXBvcnQoKSBjYW5ub3QgZmluZCB0aGUgcmVxdWVzdGVkIHNlcnZpY2UuCglGaXggV0lOU09DS19zZXRzb2Nrb3B0KCkgd2hlbiBjYWxsZWQgd2l0aCBvcHR2YWwgcG9pbnRpbmcgdG8gMTYgYml0IGludC4KCgkqIGRsbHMvd2lubW0vbW1pby5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglDaGVjayBmb3IgZXhpc3RlbmNlIGlmIE1NSU9fRVhJU1QgaXMgcGFzc2VkIHRvIE1NSU9fT3Blbi4KCgkqIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYzogSmVmZiBUcmFudGVyIDxqZWZmdEBjb3JlbC5jYT4KCVRoZSBwYXRobmFtZSB3YXMgc3RvcmVkIGluIGEgc3RyaW5nIG9mIHNpemUgMTAwLCB3aGljaCB3YXMgbm90IGFsd2F5cwoJbGFyZ2UgZW5vdWdoLiBJdCBzaG91bGQgYmUgc2V0IHRvIE1BWF9QQVRIICgyNTUpLgoKCSogbG9hZGVyL3Rhc2suYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglTZXZlcmFsIGZpeGVzIHRvIE1ha2VQcm9jSW5zdGFuY2UuCgoyMDAwLTAzLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW46CglBZGRlZCBzdXBwb3J0IGZvciBjcmVhdGluZyBleHRyYSBzeW1saW5rcyBmb3IgLnNvIGZpbGVzIHRoYXQgY29udGFpbgoJbXVsdGlwbGUgZGxscy4KCjIwMDAtMDMtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiAqL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvLmN2c2lnbm9yZSwgZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJTW92ZWQgZGxsLXNwZWNpZmljIG1ha2UgcnVsZXMgdG8gYSBzZXBhcmF0ZSBNYWtlZGxsLnJ1bGVzIGZpbGUuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEZpeGVkIGVycm9yIGNoZWNraW5nIGluIHJlZ2lzdHJ5IHNhdmluZy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXU0FDbGVhbnVwIHNob3VsZCBzZXQgbGFzdCBlcnJvciB0byBXU0FOT1RJTklUSUFMSVNFRCBpZiBmYWlsaW5nCgliZWNhdXNlIFdpbnNvY2sgd2FzIG5vdCBpbml0aWFsaXplZC4uLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb0xvYWRMaWJyYXJ5IGdldHMgVU5JQ09ERSwgbm90IEFTQ0lJIHN0cmluZ3MuIChzcG90dGVkIGJ5IExhd3NvbgoJV2hpdG5leSksIHJlbW92ZWQgdGhlIGRsbE5hbWUgY29tcG9uZW50IG9mIHRoZSBvcGVuRGxscy4gIEFkZGVkIHNvbWUKCWRlYnVnc3RyX2d1aWQoKS4KCgkqIGRsbHMvbnRkbGwvbnQuYzogRGFuIFNjb3R0IDxkYW4uc2NvdHRAaG9tZS5jb20+CglGaXhlZCB0eXBvcyBpbiBfYWxsZGl2KCkgYW5kIF9hbGxtdWwoKS4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1lc3NhZ2UgZm9yIG1pc3NpbmcgeHBtIGRldmVsIGxpYnMgZm9yIGRlYmlhbi9jb3JlbC4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglPbGVSZWdHZXRVc2VyVHlwZSBkaWQgcXVlcnkgd3JvbmcgcmVnaXN0cnkga2V5LgoKCSogbWVtb3J5L2dsb2JhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgYXBwbGljYXRpb25zIGNhbGwgR2xvYmFsTWVtb3J5U3RhdHVzKCkgdmVyeSBvZnRlbi4gQ2FjaGUgdGhlCglyZXN1bHRzIG9mIHRoZSBjYWxsIGZvciAxIHNlY29uZCAoc3BvdHRlZCBieSBDb3JlbCkuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldENsaXBib2FyZERhdGExNiBtaWdodCByZXR1cm4gYW4gaW52YWxpZCBnbG9iYWwgaGFuZGxlIChzcG90dGVkIGJ5CglDb3JlbCkuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IExpbGlhIFJvdW1pYW50c2V2YQoJY2JDb3VudFNpemVPZkVuaE1ldGFmaWxlIGNhbGxiYWNrIGZ1bmN0aW9uIGluc3RlYWQgb2YgaW5jcmVhc2luZyBhCgljb250ZW50cyBvZiB0aGUgcG9pbnRlciB0byB0aGUgc2l6ZSBpbmNyZWFzZWQgdGhlIHBvaW50ZXIgaXRzZWxmLgoKCSogZG9jdW1lbnRhdGlvbi9wc2RyaXZlcjogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IGRvY3MgdG8gcmVmbGVjdCBjaGFuZ2UgdG8gLndpbmVyYyBwcm9jZXNzaW5nLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBjb3VwbGUgb2YgY29uZmlnLmNhY2hlIHByb2JsZW1zLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBWYWhpZCBQb3VybG90ZmFsaQoJVHJhY2tiYXIgY29udG9sIGRpZCBub3QgaGF2ZSBwcm9wZXIgcG9zaXRpb24gdmFsdWUgaW4gY2FzZSBvZgoJU0JfVEhVTUJUUkFDSyBub3RpZmljYXRpb24gbWVzc2FnZTogaXQgd2FzIGFsd2F5cyBzZW5kaW5nIDAuCgoJSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJTWFkZSB0aGUgc2xpZGVyIGNvbnRyb2wgYSByZWN0LiAgSXQgaGFkIGJlZW4gdHJ5aW5nIHRvIGRyYXcgYSBub3RjaGVkCglzbGlkZXIsIGJ1dCB0aGUgcmVzdWx0IGRpZG4ndCBsb29rIHJpZ2h0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTWFkZSBXSU5TT0NLX3NldHNvY2tvcHQgaGFuZGxlIG9wdGlvbiBTT19ET05UTElOR0VSIGNvcnJlY3RseS4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUNVUlNPUklDT05fSWNvblRvQ3Vyc29yOiBpbmNvbnNpc3RlbnQgTG9jay9VbmxvY2sKCgkqIGZpbGVzL3Byb2ZpbGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUFJPRklMRV9HZXRTdHJpbmc6IG9ubHkgYWNjZXB0IE5VTEwgZm9yIGtleW5hbWUgdG8gcmV0dXJuIHRoZSBsaXN0IG9mCglrZXlzIGFzIFdpbjk1IGRvZXMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEpvZXJnIE1heWVyIDxqbWF5ZXJAdGVsZXN1bjIudGVsZW1hdGlvbi5kZT4KCUZpeCBhIHNpZ24gYnVnIHdoZXJlIG1lbWNweSB3YXMgY2FsbGVkIHdpdGggbmVnYXRpdmUgbGVuZ3RoLgoKMjAwMC0wMi0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogTWFrZSBwcm9maWxlIGtleSBhIGdsb2JhbCBoYW5kbGUuCgoJKiBkbGxzL3dpbjMycy8uY3ZzaWdub3JlLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBkbGxzL3dpbjMycy93MzJza3JubC5jLCBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluOgoJUmVuYW1lZCBsaWJ3aW4zMnMgdG8gdXNlIHRoZSBwcm9wZXIgZGxsIG5hbWUgKGxpYnczMnNrcm5sKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL21zYWNtMzIvZHJpdmVyLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBtc2Rvcy9pbnQyMS5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCU5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJUmVtb3ZlZCBzdXBlcmZsdW91cyAjaW5jbHVkZSBzdGF0ZW1lbnRzIGZvciBoZWFkZXIgZmlsZXMgaW5jbHVkZWQgdHdpY2UuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCU1ha2UgdXBkb3duIGNvbnRyb2wgd29yay4gVXBEb3duIGNvbnRyb2wgYWx3YXlzIHNlbmRzIFdNXypTQ1JPTEwKCW1lc3NhZ2UgYW5kIHVzZXMgU0JfVEhVTUJQT1NJVElPTiBjb2RlIChub3QgU0JfTElORVtVUHxET1dOXSkuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIGJlaGF2aW9yIG9mIHNlbmRpbmcgV01fQ09OVEVYVE1FTlUgd2hlbiByZWNlaXZpbmcgYQoJV01fUkJVVFRPTlVQLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzogTXVyYWxpIFBhdHRhdGhlCgoJVGhpcyBpcyB0aGUgcGF0Y2ggZm9yIHRoZSBPbGVDb252ZXJ0T0xFU1RSRUFNVG9JU3RvcmFnZSB3aW5lIEFQSS4KCVRoaXMgQVBJIGNhbGxzIGFub3RoZXIgZnVuY3Rpb24gY2FsbGVkIE9MRUNPTlZFUlRfTG9hZE9MRTEwIHdoaWNoCgliYXNpY2FsbHkgcmVhZCB0aGUgT0xFIHN0cmVhbSBmcm9tIHRoZSBmaWxlIHRocm91Z2ggdGhlIGNhbGxiYWNrCglmdW5jdGlvbiAodGhpcyBpcyBwYXNzZWQgYnkgdGhlIGFwcGxpY2F0aW9uKS4KCglUaGUgcmVhZGluZyBmb3JtYXQgd2FzIHdyb25nLiBTdGlsbCBJIGFtIG5vdCB2ZXJ5IHN1cmUgdGhpcyBpcyAxMDAgJQoJY29ycmVjdCBmb3JtYXQuIEkgZGlkIHNvbWUgcmV2ZXJzZSBlbmdpbmVlcmluZyBhbmQgZm91bmQgdGhlIGZvcm1hdC4gSQoJaGF2ZSB0cmllZCB3aXRoIGRpZmZlcmVudCBPTEUgb2JqZWN0IGFuZCBpdHMgd29ya2VkIGluIHBhcmFkb3guIEkKCWhhdmVuJ3QgdGVzdGVkIHdpdGggYW55IG90aGVyIGFwcHMuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLCBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgc29tZSBzdHVicyBhbmQgYWRkZWQgZm9yd2FyZHMgaW4gb3JkZXIgdG8gbWFrZSBib3RoIHdpbmFwaV9jaGVjawoJYW5kIGNoZWNrbGluayBoYXBweS4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCB0aGUgcmVzdCBvZiB0aGUgQVBJIHNwZWNpZmljYXRpb24gZnJvbSB0aGUgZ2xvYmFsIGZpbGUgdG8gdGhlCglsb2NhbCBmaWxlcy4KCjIwMDAtMDItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDogUmVsZWFzZSAyMDAwMDIyNy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wMi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2luaXQuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0Q29tcHV0ZXJOYW1lQSgpOiBhZGRlZCBwYXJhbWV0ZXIgY2hlY2sgbGlrZSBXaW45NSBkb2VzLgoKCSogdG9vbHMvYnVpbGQuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEZpeGVkIHNvbWUgU29sYXJpcyBzcGVjaWZpYyBhc3NlbWJsZXIgcHJvYmxlbXMKCS0gRml4ZWQgc29tZSBtaXNzaW5nIC50eXBlIEBmdW5jdGlvbiAoaGVscHMgZGVidWdnaW5nIHdpdGggZGJ4KQoJLSBGaXhlZCBjb2RlIG5lZWRpbmcgX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKV9fIGZvciBub24tR0NDIEVMRiBjb21waWxlcnMKCS0gRml4ZWQgdXNlIG9mIHplcm8gd2lkdGggYXJyYXlzIChBTlNJIEMgdmlvbGF0aW9uKQoJLSBAR09UT0ZGIG9uIFNvbGFyaXMgZG9lc24ndCB3b3JrIC0gdXNlIEBHT1QgYW5kIHJlZGlyZWN0aW9uIGluc3RlYWQKCgkqIG1lbW9yeS9zZWxlY3Rvci5jLCBpbmNsdWRlL3NlbGVjdG9ycy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIFNvbGFyaXMgc3BlY2lmaWMgYXNzZW1ibGVyIHByb2JsZW1zLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVcGRhdGVkIHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL2dlbnBhdGNoOiBTdGV2ZW4gRWxsaW90dCA8ZWxsaW90c2xAbWluZHNwcmluZy5jb20+CglBZGRlZCB1dGlsaXR5IHRoYXQgZ2VuZXJhdGVzIHBhdGNoZXMgZm9yIHN1Ym1pc3Npb24gdG8KCXdpbmUtcGF0Y2hlc0B3aW5laHEuY29tLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJb2xlYXV0MzIgc2hvdWxkIG5vdCBpbXBvcnQgZnVuY3Rpb25zIGZyb20gb2xlcHJvMzIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCURvbid0IGRpc3BsYXkgdGhlIGNvbnRleHQgbWVudSBvbiBhIGRvdWJsZSBjbGljay4KCglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglTZXQgdGhlIGZvbnQgb24gdGhlIGVkaXQgbGFiZWwgY29udHJvbCB0byB0aGF0IHVzZWQgYnkgdGhlIGxpc3R2aWV3Cgljb250cm9sLiBJdCBhbHNvIHVzZXMgdGV4dCBtZXRyaWNzIHRvIHNldCBhIG1vcmUgcmVhc29uYWJsZSBpbml0aWFsCgllZGl0IGNvbnRyb2wgc2l6ZS4KCglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglIYW5kbGUgTV9TRVRSRURSQVcgaW4gTGlzdFZpZXcuCglGaXggdG8gRW5zdXJlVmlzaWJsZSB0byBoYW5kbGUgc21hbGwgYW5kIGxhcmdlIGljb24gY29ycmVjdGx5LgoJQWRkIGVkaXQgbGFiZWwgZnVuY3Rpb25uYWxpdHkgdG8gdGhlIGxpc3R2aWV3IGFuZCB0aGUgZmlsZSBvcGVuIGRpYWxvZy4KCglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglSZWxhc2VEQyBpbiBDcmVhdGVFZGl0TGFiZWwuCgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJQWRkIGZ1bmN0aW9ubmFsaXR5IHRvIGNyZWF0ZSBuZXcgZm9sZGVyIGluIHRoZSBvcGVuIGRpYWxvZy4KCUFkZCBzdXBwb3J0IGZvciByaWdodCBjbGljayBtZW51IGluIGNvbW1vbiBmaWxlIGRpYWxvZy4KCUxJU1RWSUVXX0VuZEVkaXRsYWJlbCBpcyBub3cgaGFuZGxpbmcgTk9OTFBTVFJfVEVYVENBTExCQUNLIGxpc3R2aWV3IGl0ZW1zLgoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJTElTVFZJRVdfR2V0Q29sdW1uQSBmaXggKGRvIG5vdCBjb3B5IHN0cmluZywgcGFzcyBwb2ludGVycykuCgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVByZXZlbnRpbmcgYSBkaXZpZGUgYnkgemVybyB3aGVuIGhhbmRsaW5nIExWV19FTlNVUkVWSVNJQkxFIG1lc3NhZ2UuCgoJRG9uIEtlbGx5CgktSW1wbGVtZW50ZWQgdGhlIHNvcnRpbmcgb24gaW5zZXJ0IG9mIGl0ZW1zIGludG8gYSBMaXN0VmlldyBjb250cm9sCgkgd2l0aCBlaXRoZXIgTFZTX1NPUlRBU0NFTkRJTkcgb3IgTFZTX1NPUlRERVNDRU5ESU5HIHNldC4KCS0oaGVscGluZyBldmlsIGFwcGxpY2F0aW9ucyk6IHNvbWV0aW1lcyBub3Qgc28gd2VsbCBzdHJ1Y3R1cmVkIGFwcHMKCSAoUEZQSTkwLCBpbiB0aGlzIGNhc2UpIHdpbGwgbm90IGZ1bGx5IGluaXRpYWxpemUgc3RydWN0cy4gIEluIHRoZSBjYXNlCgkgb2YgdGhlIExWTV9HRVRJVEVNIG1lc3NhZ2UgdGhlIGFwcCBtYXkgaGF2ZSBvbmx5IGluaXRpYWxpemVkIHRoZSBtYXNrCgkgYW5kIGlJdGVtIG1lbWJlcnMgb2YgdGhlIHN0cnVjdC4gIEFkZGVkIHByb2Nlc3Npbmcgb2YgdGhlIExWSUZfUEFSQU0KCSBtYXNrIGluIHRoZSBjYXNlIHRoYXQgaVN1Ykl0ZW0gd2FzIHNldCBidXQgaXMgaW52YWxpZC91bmluaXRpYWxpemVkLgoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUZpeCBmb3IgaGFuZGxpbmcgY29ycmVjdGx5IHRoZSBjYW5jZWxsaW5nIG1vZGUgb2YgdGhlIEVkaXQgbGFiZWwuCglGaXggd2lkdGggY2FsY3VsYXRpb24gb2YgdGhlIGVkaXQgbGFiZWwuCgoJUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBiZWhhdmlvciBvZiBzZW5kaW5nIFdNX0NPTlRFWFRNRU5VIHdoZW4gcmVjZWl2aW5nIGEKCVdNX1JCVVRUT05VUC4KCglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglGaXhlZCBhIHBhaW50aW5nIHByb2JsZW0gd2l0aCBsaXN0dmlldyB3aGVuIHRoZSB2aWV3IGNoYW5nZXMgYW5kIGFuCgllZGl0IGxhYmVsIGlzIGFjdGl2ZS4KCglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglGaXhlZCBhIG5vdGlmaWNhdGlvbiBwcm9ibGVtIHdpdGggbGlzdHZpZXcuIE9uIGNyZWF0aW9uIGlmIHRoZSB1c2VyCglzcGVjaWZpZXMgYW4gaXRlbSB3aXRoIGZvY3VzIGFuZC9vciBzZWxlY3Rpb24gd2Ugc2hvdWxkIHNlbmQgdGhlCglwcm9wZXIgbm90aWZpY2F0aW9uLiBJbnNlcnQgd2FzIHByZXZlbnRpbmcgTElTVFZJRVdfU2V0SXRlbSBmcm9tCglzZWVpbmcgdGhlIGNoYW5nZXMgYW5kIHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbi4KCglNYWtlIHRoZSBkcmF3IGl0ZW0gcmVjdGFuZ2xlIGNvbnNpc3RlbnQgd2l0aCB0aGUgc2VsZWN0aW9uCglyZWN0YW5nbGUuIFRoaXMgYWxsb3dzIHVzIHRvIGNsaWNrIG9uIHRoZSBmb2xkZXJzIGFuZCBpY29ucyBpbiB0aGUKCWZpbGUgb3BlbiBkaWFsb2cgYm94IGFuZCB0aGUgaXRlbSBhY3R1YWxseSBnZXRzIHNlbGVjdGVkLgoKCSogZmlsZXMvZHJpdmUuYzogUGV0ciBUb21hc2VrIDx0b21hc2VrQGV0Zi5jdW5pLmN6PgoJLSBXcml0ZSBzZXJpYWwgbnVtYmVycyB0byB0aGUgZGV2aWNlIChGQVQpCgktIERSSVZFX1JlYWRTdXBlcmJsb2NrOiBiZXR0ZXIgY2hlY2tpbmcgZm9yIHRoZSBGQVQgZnMuCgoJKiBmaWxlcy9kb3NfZnMuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0RnVsbFBhdGhOYW1lIGZpeGVzLgoKMjAwMC0wMi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsIG1lbW9yeS9zdHJpbmcuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlZCBkZWZpbml0aW9uIG9mIHRoZSBSdGxNZW1vcnkgZnVuY3Rpb25zLiBVc2UgbWFjcm9zIGludGVybmFsbHkgYW5kCglmb3IgV2luZWxpYiwgdXNlIHJlYWwgZnVuY3Rpb25zIGZvciBleHBvcnRzIGZyb20gbnRkbGwuCgoJKiBpbmNsdWRlL29sZTIuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglQcm90b3R5cGVzIE9sZUluaXRpYWxpemUsIE9sZVVuaW5pdGlhbGl6ZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBcnJhbmdlQ3RybFBvc2l0aW9uczogZml4IGZvciB1c2VyLWRlZmluZWQgdGVtcGxhdGUgd2l0aCBubyBzdGMzMi4KCgkqIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZW51LmgsIHdpbmRvd3MvbWVzc2FnZS5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNvbT4KCVNlbmQgV01fSEVMUCBtZXNzYWdlIHdoZW4gRjEgaXMgcHJlc3NlZC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogWXV4aSBaaGFuZyA8eXV4aUBjb3JlbC5jYT4KCUluIHRoZSBsaXN0Ym94LCB3aGVuIHRoZSBsYXN0IGl0ZW0gaXMgc2VsZWN0ZWQgYW5kIGRlbGV0ZWQsIGl0IHN0aWxsCglhcHBlYXJlZCBpbiB0aGUgd2luZG93LgoKCVNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJSW4gTElTVEJPWF9VcGRhdGVTY3JvbGwoKSwgaWYgdGhlIGxpc3Rib3ggZGlkIG5vdCBoYXZlIHRoZSBXU19TQ1JPTEwKCXN0eWxlIGl0IHdvdWxkIGp1c3QgcmV0dXJuLiAgVGhpcyBsZWZ0IHRoZSBob3Jpem9udGFsIHNjcm9sbCBiYXIKCXVuaW5pdGlhbGl6ZWQgYW5kIGl0IHdhcyBhcHBlYXJpbmcgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbGlzdGJveCB3aGVuCglpdCBkaWQgbm90IGhhdmUgdG8uCgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY29tPgoJTElTVEJPWF9TZXRDb2x1bW5XaWR0aCBhZGRzIGV4dHJhIDIgcGl4ZWxzIHRvIHRoZSBwYXNzZWQgY29sdW1uIHdpZHRoCgkoaXQgc2F5cyBpdCBpcyBmb3IgY29sdW1uIG1hcmdpbnMpLiBPYnZpb3VzbHkgaXQgaXMgd3JvbmcsIGJlY2F1c2UKCW1hcmdpbnMgbXVzdCBiZSBpbnRlcm5hbC4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvZXJyb3JpbmZvLmM6CglFcnJvckluZm8gZnVuY3Rpb25zIG5lZWQgdG8gYmUgaW4gb2xlMzIsIG5vdCBvbGVhdXQzMi4KCgkqIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmM6IE1vcmUgcG9ydGFibGUgQ1JURExMX2lzd2N0eXBlLgoKCSogZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU1vdmVkIGZpbGUgZnVuY3Rpb25zIHRvIHNobGZpbGVvcC5jCglOZXcgU0hFTExfRGVsZXRlRGlyZWN0b3J5QQoJVXNlIHNoZWxsIG5vdGlmaWNhdGlvbnMuCglFbmFibGVkIGZpbGUgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4IGZvciBPcGVuSWNvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU3R1YiBQYXRoSXNEaXJlY3RvcnkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZXMgZm9yIFNoZWxsRXhlY3V0ZUV4LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQmFzaWMgaW1wbGVtZW50YXRpb24gb2Ygc2hlbGwgbm90aWZpY2F0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vc2hlbGwzMjogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglVcGRhdGVkLgoKCSogaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgV2luZWxpYiB0eXBlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBpY29uIG5vIDQgKG9wZW4gZm9sZGVyKS4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9lcnJvcmluZm8uYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBpbmNsdWRlL29sZWF1dG8uaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc3R1YnMgZm9yIHtDcmVhdGUsR2V0LFNldH1FcnJvckluZm8uCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVJldHVybiBhbiBlcnJvciBpbnN0ZWFkIG9mIGEgc3VjY2VzcyBjb2RlIGluIE9sZUNyZWF0ZSBzdHViIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgaW5jbHVkZS90YWIuaDogRG9uIEtlbGx5CglJbiBXaW5kb3dzIFByb3BlcnR5IFNoZWV0IGNhbiBoYXZlIGFueSBtaXggb2YgaWNvbi1sZXNzIHRhYnMgYW5kIHRhYnMKCXdpdGggaWNvbnMuICBBZGRzIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBpY29uIHdlJ3JlIGFkZGluZyBpcyBub24tTlVMTAoJKG90aGVyd2lzZSByYW5kb20ganVuayBmcm9tIG1lbW9yeSBjYW4gYmUgcmVuZGVyZWQpIHdoZW4gdGhlIGFwcGxpY2F0aW9uCgloYXMgc3BlY2lmaWVkIHRoZSBQU1BfVVNFSUNPTklEIGZsYWcgaXMgc2V0LiAgQ2hhbmdlcyB0byB0aGUgVGFiIGNvbnRyb2wKCXRvIG9ubHkgcmVuZGVyIGljb25zIGZvciB0YWJzIHRoYXQgaGF2ZSB0aGUgVENJRl9JTUFHRSBmbGFnIHNldAoJKHByZXZpb3VzbHksIGlmIHRoZSBmbGFnIHdhcyBzZXQgdGhlIGVudGlyZSBpbWFnZSBsaXN0IG9mIGljb25zIHdhcwoJcmVuZGVyZWQpLgoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4ZXMgZm9yIHNvbWUgdGFiIGNvbnRyb2wgYnVncwoKCUhlbm5pbmcgSG9mZm1hbm4KCUZpeGVkIHNvbWUgd2lkdGggcHJvYmxlbSB3aXRoIE9XTkVSRFJBVyB0YWIuCgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVRDTV9BREpVU1RSRUNUIGlzIG5vdyByZXR1cm5pbmcgY29uc2lzdGFudCBjb21wYXJlIHRvIFdpbmRvd3MuCgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglGaXhlZCBwcm9ibGVtIHdpdGggdGFiIHNlbGVjdGlvbi4gV2hlbiB5b3Ugc2VsZWN0IHRhYiBpdCBiZWNhbWVzIGZpcnN0Cgl2aXNpYmxlIHRhYi4gTm93IGxlZnRtb3N0IHZpc2libGUgdGFiIGlzIGNhbGN1bGF0ZWQgcHJvcGVybHkuCgktIEFkZGVkIGNvZGUgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdXBkb3duIGNvbnRyb2wuCgktIEZvcmNlZCByZWNhbGN1bGF0aW9uIG9mIHRhYnMnIGNvb3JkaW5hdGVzIHdoZW46CglhKSBhbGwgaXRlbXMgYXJlIGRlbGV0ZWQsCgliKSB3aW5kb3cgc3R5bGUgaXMgY2FuZ2VkCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQWRkZWQgbmVjZXNzYXJ5IGRlZmluZXMgYW5kIHN0cnVjdHVyZXMgdG8gY29tcGlsZSBXaW5lTGliIGFwcHMgdXNpbmcKCU1GQyA2LjAgaGVhZGVycy4KCUZpeGVkIHR5cG8gaW4gVENNX1NFVE1JTlRBQldJRFRIIGNvbnN0YW50LgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEJpbGwgSmluIDxiaWxsakBjb3JlbC5jYT4KCUJpdG1hcCBidXR0b25zIHdlcmUgbm90IHJlZnJlc2hlZCBjb3JyZWN0bHkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglUaGlzIHJldmVydHMgTWF0dHMgcGF0Y2guICBUaGUgbWVzc2FnaW5nIG5lZWRzIGRvdWJsZSBjaGVja2luZy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbnByb2MuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvdzMyc2NvbWIuYywgbXNkb3MvZHBtaS5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB0b29scy9idWlsZC5jLCB3aW4zMi9rZXJuZWwzMi5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2xpc3Rib3guYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3NlbGVjdG9ycy5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9tYWluLmM6CglJbXByb3ZlZCB0aGUgc2VsZWN0b3IgZ2V0L3NldCBmdW5jdGlvbnMuCglTdXBwb3J0IEFOU0ktY29tcGF0aWJsZSBpbmxpbmUgYXNtICh3aXRoIHRoZSBoZWxwIG9mIFBhdHJpayBTdHJpZHZhbGwpLgoKCSogZGxscy93aW5tbS9qb3lzdGljay9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhbmltL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWF2aS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2ljZGEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpc2VxL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXdhdmUvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWlkaW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93YXZlbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCU1hZGUgd2lubW0gYSBzZXBhcmF0ZSBzaGFyZWQgbGlicmFyeS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHRvb2xzL2JpbjJyZXMuYywgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG9iamVjdHMvZGliLmMsIG9sZS9vbGUybmxzLmMsIHByb2dyYW1zL2Nsb2NrL3dpbmNsb2NrLmMsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvd2luZ2RpLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgQU5TSSBDIHZpb2xhdGlvbnMuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgU29sYXJpcyBzcGVjaWZpYyBjb21waWxlciBpc3N1ZS4KCgkqIGZpbGVzL2Rvc19mcy5jLCB3aW4zMi9pbml0LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBkZWJ1ZyBtZXNzYWdlIGNyYXNoZXMuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gaW1wbGVtZW50IEVudW1PYmplY3RzIGFuZCBHZXRQcm9wZXJ0eSBmb3IgTW91c2UgYW5kIEpveXN0aWNrIGRyaXZlcnMKCS0gaW1wbGVtZW50IFNldERhdGFGb3JtYXQgZm9yIHRoZSBNb3VzZSBkcml2ZXIKCgkqIGRsbHMvd2lubW0vam95c3RpY2svLmN2c2lnbm9yZSwgZGxscy93aW5tbS9qb3lzdGljay9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLnNwZWMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL21tZGRrLmgsIHdpbmRvd3MvbWVzc2FnZS5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9qb3lzdGljay5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBoYXJkd2FyZSByZWxhdGVkIGhhbmRsaW5nIHRvIGRsbHMvd2lubW0vam95c3RpY2sgZHJpdmVyLgoJR290IHJpZCBvZiBqb3lTZW5kTWVzc2FnZXMoKSBoYWNrIChub3cgaW1wbGVtZW50YXRpb24gd2l0aCBhIHRpbWVyKS4KCjIwMDAtMDItMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2RlYnVnc3RyLmM6CglSZWxlYXNlIHVudXNlZCBzcGFjZSBpbiBkZWJ1ZyBzdHJpbmdzIHRvIGF2b2lkIHRvbyBmcmVxdWVudAoJd3JhcC1hcm91bmRzIGluIHRoZSBjaXJjdWxhciBidWZmZXIuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluOiBBZGRlZCBpbXBvcnQgb2Ygb2xlcHJvMzIuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgT0xFIGVudHJpZXMgYW5kIGNvbW1lbnRzLgoKCSogb2xlL25scy9qcG4ubmxzOiBIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSmFwYW5lc2Ugc3VwcG9ydCBpbXBsZW1lbnRlZC4KCgkqIG9sZS9vbGUybmxzLmM6IFN0ZXZlbiBFbGxpb3R0IDxlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbT4KCVN0dWJiZWQgb3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBMQ01BUF9TT1JUS0VZIGluIExDTWFwU3RyaW5nVygpIGluCglvcmRlciB0byBhbGxvdyBXaW5kb3dzIDl4IFBlcmwgdG8gc3RhcnQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJVGhpcyBwYXRjaCBpbml0aWFsaXplcyB0aGUgcmV0dXJuIGJ1ZmZlciB1c2VkIGluIEdldFByaW50ZXJEcml2ZXJBIHRvCgl6ZXJvcy4gVGhpcyBwcmV2ZW50cyBidWZmZXIgb3ZlcnJ1bnMgY2F1c2VkIGJ5IGFjY2Vzc2luZyBnYXJiYWdlIGRhdGEuCglTb21lIGltcHJvdmVtZW50cyB0byB0aGUgTlVMTCBjaGVjayBwYXRjaC4KCglHYXV0YW0gSmFpbgoJRW51bVByaW50ZXJzIGlzIG5vdCByZXR1cm5pbmcgdGhlIG51bWJlciBvZiBwcmludGVycyBmb3VuZCBpbiBjYXNlIHRoZQoJcGFyYW1ldGVyIGR3TGV2ZWwgaXMgMS4KCgkqIGRsbHMvbnRkbGwvcmVnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG8gbm90IG92ZXJ3cml0ZSB0aGUgdmFsaWQgT2JqZWN0QXR0cmlidXRlcy0+Um9vdERpcmVjdG9yeS4KCVBlcmZvcm0gY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIGZvciB0aGUgcmVnaXN0cnkgcGF0aHMuCgoJKiBpbmNsdWRlL250ZGRrLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgcmVnaXN0cnkgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubmxzLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1vdmUgZGVmaW5pdGlvbiBvZiBDUElORk8gc3RydWN0dXJlIGZyb20gd2luYmFzZS5oIHRvIHdpbm5scy5oCglBZGQgZGVmaW5pdGlvbiBvZiBDUElORk9FWCBzdHJ1Y3R1cmUgdG8gd2lubmxzLmgKCgkqIGluY2x1ZGUvY3J0ZGxsLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkIHByb3RvdHlwZSBmb3IgQ1JURExMX3djc3RvbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4IGZvciB0b29sYmFyIGJ1dHRvbiBzaXplLgoKCSogbWlzYy9sc3RyLmM6IEhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBDaGFyTmV4dEEvQ2hhck5leHRFeEEgZm9yIERCQ1MuCgoJKiB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgaW5jbHVkZS9kZWJ1Z2dlci5oLCBtaXNjL2NvbW0uYywgb2xlL29sZTJubHMuYywgcmVsYXkzMi9zbm9vcC5jLCB0b29scy9idWlsZC5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc3RhYnMuYywgZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLCBncmFwaGljcy9kZHJhdy5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQFdQSS5FRFU+CglNaXNjLiBmaXhlcyBmb3IgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmVycm9yLmg6CglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBPbGVDb252ZXJ0IHJvdXRpbmVzLgoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRG9uJ3QgYWxsb3cgdG8gcmVzaXplIHN0cmVhbSBvcGVuIGluIHJlYWQgb25seSBtb2RlCglBbGxvdyB3cml0ZSBhY2Nlc3MgZm9yIHN0cmVhbS9zdG9yYWdlIG9wZW4gd2l0aCBTVEdNX1JFQURXUklURS4KCVN0Z09wZW5TdG9yYWdlIHJldHVybiB2YWx1ZXMgYXJlIG5vdyBtb3JlIGRldGFpbGVkLgoJRG9uJ3QgcmVseSBvbiBTVEdNX0NSRUFURSBmbGFnIGluIHRoZSBTdG9yYWdlIGNvbnN0cnVjdG9yLgoJUHJldmVudGluZyB0byB3cml0ZSBvdXQgb2YgZGF0ZSBwcm9wZXJ0eS4KCglPd2VuIFdhbmcgPG93ZW53QGNvcmVsLmNhPgoJQWxsb3cgYm90aCBwb3NpdGl2ZSAmIG5lZ2F0aXZlIDMyLWJpdCBpbnRlZ2VycyBhcyB3aXRoIE1GQyBhc3N1bXB0aW9uLgoJVGhpcyBwYXRjaCBpbXByb3ZlcyB0aGUgMzJiaXQgbGltaXQgb24gSVN0cmVhbTo6Kl9TZWVrIG9wZXJhdGlvbnMuCgoJSm9obiBMaSA8am9obmxAY29yZWwuY2E+CglXaGVuIFdQIG9wZW5zIGEgbGlua2VkIGZpbGUsIHRoZSBtYWxsb2MgZnVuY3Rpb24gaW4KCU9MRUNPTlZFUlRfTG9hZE9MRTEwKC4uLikgcmV0dXJucyBhIE5VTEwuIFRoaXMgY2F1c2VzIGEgbGF0ZXIgV2luZQoJY3Jhc2guIFRoZSBhY3R1YWwgcHJvYmxlbSBpcyB0aGUgZnVuY3Rpb24gcmVhZGluZyBhIGxhcmdlIGRhdGEgbGVuZ3RoLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIHNvbWUgbG9jYWwgZnVuY3Rpb25zIHN0YXRpYy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgc2VydmVyL2NvbnRleHRfaTM4Ni5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgc29tZSBvZiB0aGUgQVBJIHNwZWNpZmljYXRpb24gZnJvbSB0aGUgZ2xvYmFsIGZpbGUgdG8gdGhlIGxvY2FsCglmaWxlcy4KCgkqIGRsbHMvbW91c2UvbW91c2VfbWFpbi5jLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAV1BJLkVEVT4KCUJldHRlciB0aHJlYWQgc2FmZXR5IGZvciBXYXJwUG9pbnRlciBoYWNrLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIEFkZEFjY2Vzc0FsbG93ZWRBY2UuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU29tZSBtb3JlIExpc3RWaWV3XyBtYWNyb3MsIHdpbmVsaWIgZml4ZXMuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlZCBhbGxvY2F0aW9uIG9mIDE2eDE2IGljb25zLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGb3IgdW5pY29kZTogZ2l2ZSB0aGUgc2VsZWN0ZWQgZmlsZW5hbWUgYmFjay4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoZWNrIGZvciBYcG0gaGVhZGVycyBhbmQgYWRkIC91c3IvbG9jYWwvbGliIHRvIC9ldGMvbGQuc28uY29uZiBpZgoJbmVjZXNzYXJ5LgoKCSogd2luZG93cy9wYWludGluZy5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCVdlIGRvbid0IG5lZWQgdG8gY2FsbCBMUHRvRFAgaW4gaGVyZSBhcyBmYXIgYXMgUGF0Qmx0IGRvZXMgaXQgaW50ZXJuYWxseS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJSW4gV2luZG93cywgaWYgUHJvcGVydHlTaGVldCBjYW4ndCBjcmVhdGUgc29tZSBwYWdlIGl0IGp1c3Qgc2tpcHMgaXQuIFRoaXMKCXBhdGNoIGFkZHMgc2ltaWxhciBiZWhhdmlvdXIgdG8gV2luZS4gSXQgYWxzbyBhZGRzIHNvbWUgTlVMTCBjaGVja3MuCgoJPHl1eGlAY29yZWwuY29tPgoJRml4IHByb3BlcnR5IHNoZWV0IGluaXRpYWxpemF0aW9uIGJ1Z3MuCgoJTWF0dGhldyBSb2JlcnRzb24KCVRoZSB0ZW1wbGF0ZSB3YXMgY2FsbGluZyBHZXRBY3RpdmVJbmRleCB3aGljaCB3YXMgbm90IGJlaW5nIHNldCBpbiB0aGUKCXByb3BzaGVldCBjb2RlLCBhbmQgdGhlIGNhbGwgd2FzIG1vdmVkIGJlZm9yZSB3ZSBjYWxsIFNldEFjdGl2ZSAtCgliZWNhdXNlIHRoYXQncyB3aGVyZSB3ZSBxdWVyeSBmb3IgdGhlIEFjdGl2ZSBJbmRleC4KCglOb29tZW4gSGFtemEKCVJlc2l6ZSBwcm9wZXJ0eSBzaGVldCB0byB0aGUgbGFyZ2VzdCBkaWFsb2cgc2l6ZS4KCglEb24gS2VsbHkKCUluIHRoZSBXTV9JTklURElBTE9HIGhhbmRsZXIgZm9yIHRoZSBwcm9wIHNoZWV0LCB0aGVyZSBpcyBhIGNhbGwgdG8KCVBST1BTSEVFVF9Jc1Rvb1NtYWxsKCkgd2hpY2gsIGlmIGl0IHJldHVybnMgVFJVRSwgY2FsbHMKCVBST1BTSEVFVF9BZGp1c3RTaXplKCkuICBDb250cmFyeSB0byBpdHMgY29tbWVudCwgLi5fQWRqdXN0U2l6ZSgpIGFjdHVhbGx5CglhbGlnbnMgdGhlIHNpemVzIG9mIHRoZSAibGFyZ2VzdCIgcHJvcC4gc2hlZXQgZGlhbG9nIHRlbXBsYXRlIGFuZCB0aGUgdGFiCgljb250cm9sLiAgVGhlIElzVG9vU21hbGwoKSBjYWxsIGRvZXNuJ3QgcHJvcGVybHkgY2F0Y2ggdGhpcyBtaXNtYXRjaC4KCU1vZGlmaWVkIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gVFJVRSBpZiB0aGUgc2l6ZXMgbWlzbWF0Y2ggYW5kIHJlbmFtZWQgaXQgdG8KCVBST1BTSEVFVF9TaXplTWlzbWF0Y2goKSB0byByZWZsZWN0IGl0cyBwcm9wZXIgdXNlLgoKCSogZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXZSBkZWZpbmUgUGF0aElTVVJMQSwgc28gdXNlIGl0LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglJbiBmdW5jdGlvbiBJTUFHRUxJU1RfSW50ZXJuYWxEcmF3TWFzayB3ZSBoYXZlIHRvIG1hc2sgb3V0IG92ZXJsYXkgbWFzayBpbgoJZlN0eWxlLiBPdGhlcndpc2UgY29tcGFyaXNvbiBmU3R5bGUgPT0gSUxEX05PUk1BTCB3aWxsIG5vdCB3b3JrLCB3aGljaCBsZWFkcwoJdG8gaW1wcm9wZXIgZGlzcGxheSBvZiBvdmVybGF5IGltYWdlcy4KCgkqIHdpbmRvd3Mvd2luLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUFUT01zIGFyZSBjb25zaWRlcmVkIHVuaXF1ZSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBjbGFzcwoJcG9pbnRlcnMgaW4gRmluZFdpbmRvdy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNvbT4KCU5vdCBhbGwgcmVnaW9uIGZ1bmN0aW9ucyB1cGRhdGVkICd0eXBlJyBmaWVsZCB0byByZWZsZWN0IGN1cnJlbnQKCXJlZ2lvbiBzdGF0ZS4KCgkqIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzoKCUVyaWMgV2lsbGlhbXMgPGV3aWxsQG5jYWwudmVyaW8uY29tPgoJTWlub3IgZml4dXBzIGFuZCB0d2Vha2luZywgYW5kIGEgZHVtbXkgaG9vay4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZWQgaGFuZGxpbmcgb2YgZmlsZWRsZyBmbGFncy4KCjIwMDAtMDItMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIEZJWE1FIGNvbW1lbnQgZm9yIGVudHJ5IHBvaW50IHBhcmFtZXRlci4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gc3R1YiBmb3IgT0xFMzIuTWtQYXJzZURpc3BsYXlOYW1lCgktIHNwZWxsaW5nIGZpeGVzCgoJKiB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL3dpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIGZpeGVkIG15IHNsaWdodGx5IGluY29ycmVjdCBFbmREaWFsb2cgcGF0Y2gKCS0gY2xlYW5lZCB1cCB3aW4uYwoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglTcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSB0aGUgYnVmZmVyIGxpc3QgaW4gdGhlIGRpcmVjdHNvdW5kIG9iamVjdCB0aHJlYWQtc2FmZS4KCgkqIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglJdCBzZWVtcyB0byBiZSBHZXRNb2R1bGVGaWxlTmFtZTE2IHRoYXQgY2hlY2tzIGV4ZSB2ZXJzaW9uIG9uIHdoZXRoZXIKCXRvIHJldHVybiBsb25nIG9yIHNob3J0IHBhdGhzLCBub3QgR2V0TW9kdWxlRmlsZU5hbWVBLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBdm9pZCB0b28gbXVjaCByZWZyZXNoaW5nIHdoZW4gY2hhbmdpbmcgdGhlIGRyaXZlIGluIHRoZSAxNiBiaXRzIGZpbGUKCWRpYWxvZy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBQZXRyIFRvbWFzZWsgPHRvbWFzZWtAZXRmLmN1bmkuY3o+CglHZXRMb25nUGF0aE5hbWUgcmV3cml0ZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jOgoJQ29yZWwgbWVyZ2U6CgoJUGllcnJlIE1hZ2VhdQoJRG9uJ3QgdXBkYXRlIHRoZSBjb21ibyBib3ggc2VsZWN0aW9uIHdoZW4gY2xvc2luZyB0aGUgZGlhbG9nIG9ubHkgd2hlbgoJY2xpY2tpbmcgb24gT0sgYnV0dG9uLiAgQWRqdXN0IGZpbGUgZGlhbG9nIHNpemUgd2hlbiBoZWxwIGJ1dHRvbiBpc24ndAoJcHJlc2VudC4KCglEb24gS2VsbHkuCglGaXhlcyBwcm9ibGVtcyB3aXRoIG9wZW4gZGlhbG9nIGJveCBmaWx0ZXJzLgoKCVVscmljaCBDemVrYWxsYQoJUHJldmVudHMgdGhlIGhlbHAgYnV0dG9uIGZyb20gZGlzcGxheWluZyBvbiBPcGVuRmlsZSBkaWFsb2dzIHVubGVzcwoJdGhlIHByb3BlciBmbGFnIGlzIHNldCBpbiB0aGUgT1BFTkZJTEVOQU1FIHN0cnVjdC4KCglZdXhpIFpoYW5nCglGaXhlZCBtZW1vcnkgbGVhay4KCglKZWFuLUNsYXVkZSBCYXRpc3RhCglBZGQgdG9vbHRpcHMgdG8gdGhlIGZpbGUgRGlhbG9nIHRvb2xiYXIuCgoJU3lsdmFpbiBCb3VjaGFyZCwgQmlsbCBKaW4KCVRocmVlIG5ldyBmdW5jdGlvbnMKCUVudW1TZWxlY3RlZFBpZGxzLCBHZXROdW1TZWxlY3RlZCwgRklMRURMRzk1X09uT3BlblVzaW5nVmlldzogY29ycmVjdGlvbnMKCUluc3RlYWQgb2YgcGFzc2luZyBpbiBhIGNvcHkgb2Ygb2ZuLCBwYXNzaW5nIGluIHRoZSBwb2ludGVyIG9mIG9mbi4KCglEYXZpZCBHb2xkaW5nCglBICIhIiB3YXMgbWlzc2luZyBpbiBhIGNoZWNrIGFnYWluc3QgbHBzdHJJbml0aWFsRGlyLgoKCVJpY2sgTXV0emtlCglGaXhlZCBjcmFzaDogaWYgZGlhbG9nIGhhcyBubyBmaWxldHlwZXMgYXBwZWFyaW5nIGluIHRoZSBkcm9wZG93biBsaXN0LgoKCU1hdHQgUm9iZXJ0c29uLCBVbHJpY2ggQ3pla2FsbGEKCUZpeGVkIHByb2JsZW1zIG9jY3VycmluZyB3aXRoIHNlbGVjdGlvbiBvZiBmaWxlcyBpbnNpZGUgb3BlbmZpbGVkbGcuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gYWN0aXZhdGVkIHVzZSBvZiB0ZW1wbGF0ZXMKCS0gbW92ZWQgdGhlIGNyZWF0aW5nIG9mIG5ldyBmb2xkZXJzIHRvIHRoZSBzaGVsbHZpZXcKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTdGFydGVkIHdpdGggc2hlbGwtY2xpcGJvYXJkIGhhbmRsaW5nIChjb250ZXh0IG1lbnUgY3V0JnBhc3RlLAoJZHJhZyZkcm9wKS4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVJlbW92ZWQgSXRlbUlETGlzdExpc3QsIHJlb3JnYW5pc2F0aW9uLCBtb3JlIGZvcm1hdHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gaW1wbGVtZW50ZWQgcmVuYW1lLCBjb3B5IGFuZCBkZWxldGUgZmlsZQoJLSAibmV3IGZpbGUiIGlzIGFjdGl2YXRpbmcgbGFiZWwgZWRpdCBmb3IgcmVuYW1lCgktIGltcGxlbWVudGVkIElTaGVsbFZpZXdfU2VsZWN0SXRlbQoKCSogZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaCwgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglCZXR0ZXIgY29udGV4dCBtZW51cy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBuZXcgZmlsZXMgcmVsYXRlZCB0byBjb250ZXh0IG1lbnUgYW5kIGRyYWcgZHJvcCBmaWxlIG9wZXJhdGlvbnMKCS0gcmVuZGVyIGZ1bmN0aW9ucyBmb3IgY2xpcGJvYXJkZm9ybWF0cwoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogU3RlcGhhbmUgTHVzc2llcgoJSW1wbGVtZW50ZWQgUGF0aElzVVJMQSBhbmQgbW9kaWZpZWQgU2hlbGxFeGVjdXRlMTYgdG8gYmUgYWJsZSB0byBsb2FkIFVSTAoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVN0YXJ0ZWQgaW1wbGVtZW50YXRpb24gb2Ygc2hlbGwgbm90aWZpY2F0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTmV3IGZpbGUgKFNIRmlsZU9wZXJhdGlvbikuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsZm9sZGVyLmgsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBuZXcgaW50ZXJuYWwgaW50ZXJmYWNlIGZvciBpdGVtIG1hbmlwdWxhdGlvbiAoY3V0L3Bhc3RlL25ldyBmb2xkZXIvZGVsZXRlL3JlbmFtZSkKCS0gaW1wbGVtZW50ZWQgSVBlcnNpc3RGb2xkZXIyIGludGVyZmFjZQoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTmV3IGFQaWRsIGhhbmRsaW5nIGZ1bmN0aW9ucy4KCgkqIG1pc2MvbWFpbi5jOiBBdm9pZCBjcmFzaCBvbiB1c2FnZSBtZXNzYWdlLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOiBBdm9pZCBjcmFzaCBvbiBOVUxMIGRhdGEgcG9pbnRlci4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgc3R1YiBmb3IgUnRsQXNzZXJ0KCkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIEphcGFuZXNlIGpwMTA2IGFuZCBwYzk4eDEga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy93aW5tbS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglHb3QgcmlkIG9mIFBST0ZJTEVfIGZ1bmN0aW9ucywgbm93IGFjY2Vzc2luZyBXaW5lIGNvbmZpZyBvcHRpb25zCgl0aHJvdWdoIHRoZSByZWdpc3RyeS4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXaGlsZSBjcmVhdGluZyB0aGUgd2luZSBjb25maWcga2V5LCBtYWtlIHN1cmUgdGhhdCBvbmx5IFdpbmUncyBzdWJrZXlzCglhcmUgdm9sYXRpbGUuCgoJKiBncmFwaGljcy9wc2Rydi9kcml2ZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgTlVMTCBwdHIgaW4gUFNEUlZfR2V0RGV2aWNlQ2FwYWJpbGl0aWVzLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGEgYml0IG1hZ2ljIHRvIENPTlNPTEVfZ2V0X2lucHV0IHNvIHdlIGRvbid0IGdldCBzaW5nbGUgRXNjYXBlcwoJZnJvbSBmdW5jdGlvbiBrZXkgZXNjYXBlIHNlcXVlbmNlcy4KCjIwMDAtMDItMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvYXRvbS5jOiBCdWcgZml4IGZvciBuYXRpdmUgVVNFUi4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYywgd2luZS5pbmk6CglIYXJkLWNvZGVkIERsbFBhaXJzIGNvbmZpZ3VyYXRpb247IHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoZSB1c2VyIHRvCgljaGFuZ2UgaXQuCgoJKiBncmFwaGljcy9wc2Rydi9hZm0uYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvY29uc29sZS5oLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBtaXNjL3ZlcnNpb24uYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29uc29sZS9pbnRlcmZhY2UuYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgZmlsZXMvcHJvZmlsZS5jOgoJU3RvcmUgY29uZmlnIGZpbGUgY29udGVudHMgaW4gdGhlIHJlZ2lzdHJ5IHNvIHdlIG9ubHkgaGF2ZSB0byBsb2FkIGl0CglvbmNlIHBlciBzZXNzaW9uLgoJUmVwbGFjZWQgUFJPRklMRV9FbnVtZXJhdGVXaW5lSW5pU2VjdGlvbiBieSBQUk9GSUxFX0VudW1XaW5lSW5pU3RyaW5nLgoJUmVtb3ZlZCBhIGZldyB1bm5lY2Vzc2FyeS91bnVzZWQgY29tbWFuZC1saW5lIG9wdGlvbnMuCgoyMDAwLTAyLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oOgoJU3RvcmUgdGhlIGhhbmRsZSBvZiB0aGUgcHJvY2VzcyBleGUgZmlsZSBpbiB0aGUgc2VydmVyLgoJUmVtb3ZlZCBQUk9DRVNTX0luaXRpYWwoKS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBPd2VuIFdhbmcgPG93ZW53QGNvcmVsLmNvbT4KCVNldCB0aGUgdHlwZSBvZiBWYXJCc3RyRnJvbURhdGUgdG8gZHdGbGFncywgaW5zdGVhZCBvZiBsY2lkLgoKCVVscmljaCBDemVrYWxsYSAgPHVscmljaGNAY29yZWwuY2E+CglGaXhlZCB0aGUgcHJvYmxlbSB3aXRoIHRoZSBkYXRlIGJlaW5nIG9mZiBieSBvbmUuCgoJUGV0YXIgRGp1a2ljCglWYXJpYW50Q29weSB3YXMgaWdub3JpbmcgVlRfRElTUEFUQ0gsVlRfVU5LTk9XTiwgYW5kIFZUX1ZBUklBTlQuIFNhbWUKCXdpdGggVmFyaWFudENsZWFyLgoJQ29lcmNlIGZ1bmN0aW9uIGRvZXNuJ3QgaW1wbGVtZW50IGNvZXJjaW9uIGZvciBWVF9ESVNQQVRDSCB0eXBlLgoKCSogaWYxNjMyL2dkaS5zcGVjLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi91c2VyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkL2NvcnJlY3RlZCBvcmRpbmFscyBvZiBrZXJuZWwsIGdkaSwgdXNlci4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJUG9wdXAgd2luZG93cyB3aWxsIGJlIGhpZGRlbiB3aGVuIG1pbmltaXppbmcgdGhlIG1haW4gZnJhbWUuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmg6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUNoYW5nZWQgdGhlIGxvYWRpbmcgb2YgdHlwZWxpYiBmaWxlcyB0byB1c2UgYSBtZW1vcnkgbWFwcGluZyBpbnN0ZWFkCglvZiByZWFkaW5nIHRoZSBmaWxlIGJpdCBieSBiaXQuCgoJKiBmaWxlcy9kcml2ZS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCURSSVZFX0ZpbmREcml2ZVJvb3QoKSBhbHdheXMgY2hlY2tlZCBmcm9tIGRyaXZlIEE6IHRvIFo6IGZvciBlYWNoCglwYXRoIGNvbXBvbmVudCBldmVuIGlmIGEgbWF0Y2ggYWxyZWFkeSBvY2N1cnJlZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwcm90b3R5cGUgZm9yIE9sZVRyYW5zbGF0ZUNvbG9yLgoKCSogZmlsZXMvZmlsZS5jOiBNYXR0aGV3IENsaW5lIDxtYXR0QG5pZ2h0cmVhbG1zLmNvbT4KCUFkZGVkIFdBUk4gbWVzc2FnZXMgb24gb3BlbiBlcnJvcnMuCgoJKiBtaXNjL3dzcHJpbnRmLmM6IEhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglUaGUgbWF4aW11bSBzaXplIG9mIHRoZSBidWZmZXIgaXMgMTAyNCBieXRlcyBpbiBXaW4zMi4KCjIwMDAtMDItMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL3Nub29wLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3JlZ2lvbi5oLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzYy9kZGVtbC5jLCBtaXNjL3Rvb2xoZWxwLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvZHJpdmVyLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9iaXRibHQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9tcHIvbXByX21haW4uYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGZpbGVzL2Rvc19mcy5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglNb3ZlZCBTeXN0ZW1IZWFwIGFsbG9jYXRpb25zIHRvIHRoZSBwcm9jZXNzIGhlYXAuCgoJKiB3aW5kb3dzL3dpbi5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURvIG5vdCB1c2UgR2xvYmFsRmluZEF0b20gd2l0aCBhdG9tIGhhbmRsZXMgaW4gQ3JlYXRlV2luZG93KiBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglTZW5kIFdNX0hFTFAgbWVzc2FnZSB3aGVuIEYxIGlzIHByZXNzZWQuCgoJKiBvbGUvbmxzL2JyZi5ubHMsIG9sZS9ubHMvY29yLm5scywgb2xlL25scy9jeW0ubmxzLCBvbGUvbmxzL2dhZS5ubHMsIG9sZS9ubHMvZ2RoLm5scywgb2xlL25scy9nZHYubmxzLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS93aW5ubHMuaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6CglBbGFzdGFpciBNY0tpbnN0cnkgPEFsYXN0YWlyLk1jS2luc3RyeUBkaWdpdGFsLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgY2VsdGljIGxhbmd1YWdlczogSXJpc2ggR2FlbGljLCBTY290cwoJR2FlbGljLCBNYW54IEdhZWxpYywgQnJldG9uLCBXZWxzaCwgQ29ybmlzaC4KCjIwMDAtMDItMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBzdHViIGZvciBDb1Jlc3VtZUNsYXNzT2JqZWN0cy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIGFyZ3VtZW50IHByaW50aW5nIHRvIHN0dWJzCgktIHJlcGxhY2VkIG1lbWNtcCBieSBJc0VxdWFsR1VJRAoJLSBpbXBsZW1lbnRlZCBHZXRDYXBhYmlsaXRpZXMgZm9yIE1vdXNlIGFuZCBLZXlib2FyZAoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCWlvY3Rsc29ja2V0KCkgbm93IHJldHVybnMgc3VjY2VzcyBpZiB0aGUgYXBwIHNldHMgbm9uYmxvY2tpbmcgbW9kZSBmb3IKCVdTQUFzeW5jU2VsZWN0KCktZWQgc29ja2V0cy4KCgkqIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgRnJlZUJTRCBjb21waWxlLgoKCSogZGxscy93aW5tbS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIGZpeGVkIGNyYXNoIG9uIG1jaSBjaGFubmVsIHRyYWNpbmcKCS0gZml4ZWQgMTYgdG8gMzIgYml0IHRyYW5zbGF0aW9uIGZvciBNQ0lfQlJFQUsgYW5kIE1DSV9TWVNJTkZPIG1lc3NhZ2VzCgoyMDAwLTAyLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOiBKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCU1vdmVkIENMSVBQSU5HX1VwZGF0ZUdDQ2xpcHBpbmcgY2FsbCBvdXRzaWRlIG9mIHRoZSBYMTEgc2VjdGlvbi4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJQWRkZWQgZGVmaW5pdGlvbiBmb3IgU1RJTExfQUNUSVZFLgoKCSogc2VydmVyL3JlcXVlc3QuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIHNjaGVkdWxlci9jbGllbnQuYzoKCUp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3IgdGhlIHVuaXggZG9tYWluIHNvY2thZGRyIGxlbmd0aC4KCgkqIG1pc2MvY2Ryb20uYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJRml4ZWQgQ0RST01fQXVkaW9fU2VlayBmb3Igbm9uLWxpbnV4IHN5c3RlbXMuCgoJKiBvYmplY3RzL2dkaW9iai5jLCBpbmNsdWRlL2dkaS5oOiBNYXR0aGV3IENsaW5lIDxtYXR0QG5pZ2h0cmVhbG1zLmNvbT4KCUdldE9iamVjdEEoKSBub3cgcmVqZWN0cyBHREkgaGFuZGxlcyB3aGljaCBhcmUgaW52YWxpZC4KCgkqIG1pc2MvdmVyc2lvbi5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglWRVJTSU9OX0dldFN5c3RlbURMTFZlcnNpb24gY3Jhc2hlZCB3aGVuIGJlaW5nIGNhbGxlZCBvbiBhIC5zby4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEaXNwbGF5IHRoZSBzeXN0ZW0gcG9wdXAgbWVudSB3aGVuIGNsaWNraW5nIHdpdGggdGhlIHJpZ2h0IG1vdXNlCglidXR0b24gaW4gdGhlIHdpbmRvdyBjYXB0aW9uLgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYzogUmVtb3ZlZCBjaGVjayBmb3IgY2xhc3MgZXhpc3RlbmNlLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHN1cGVyZmx1b3VzIEdsb2JhbEZpbmRBdG9tIGNhbGxzLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVJlYWRpbmcgb2YgcmkgYmxvY2tzLgoJQmV0dGVyIGVycm9yIGhhbmRsaW5nLgoKCSogd2luZG93cy9tZGkuYzogTWF0dGhldyBDbGluZSA8bWF0dEBuaWdodHJlYWxtcy5jb20+CglDaGVjayB0aGF0IGNpLT5oV2luZG93TWVudSBpcyBub3QgemVybyBiZWZvcmUgdXNpbmcgaXQuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJRGF2aWQgSG93ZWxscyA8RGF2aWQuSG93ZWxsc0BuZXhvci5jby51az4KCUltcGxlbWVudGVkIGlzdyooKSB3Y3R5cGUuaCBmdW5jdGlvbnMuCgoJKiBtaXNjZW11L21haW4uYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglCZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGaXhlZCBvZmYtYnktb25lIGVycm9yLgoKCSogbWVtb3J5L2F0b20uYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdW5pY29kZS5oLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbi5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oOgoJTW92ZWQgZ2xvYmFsIGF0b21zIHRvIHRoZSBzZXJ2ZXIgKGJhc2VkIG9uIHRoZSB3b3JrIG9mIFNlcmdlaQoJVHVyY2hhbm92IDx0dXJjaGFub3ZAb3R2cHJpbS5ydT4pLgoKMjAwMC0wMi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IE1hdHRoZXcgQ2xpbmUgPG1hdHRAbmlnaHRyZWFsbXMuY29tPgoJQWRkZWQgYSBQVEVYVE1FVFJJQ1tBfFddIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBNYXR0aGV3IENsaW5lIDxtYXR0QG5pZ2h0cmVhbG1zLmNvbT4KCUFkZGVkIHR5cGVkZWZzIGZvciBQU0hPUlQgYW5kIFBVU0hPUlQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVByb3RlY3QgRW5kRGlhbG9nKCkgZnJvbSBpbnZhbGlkIHdpbmRvdyBoYW5kbGVzLgoKCSogZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlcGxhY2VkIGZwcmludGZzIGJ5IHByb3BlciBkZWJ1ZyBtYWNyb3MgYW5kIGZpeGVkIHNvbWUgY29tcGlsYXRpb24gd2FybmluZ3MuCgoyMDAwLTAyLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kZHJhdy5oOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUFkZGVkIEdVSURzLCBkZWZpbmVzLCBhbmQgc3RydWN0dXJlcyBmb3IgRGlyZWN0WDcuCgoJKiBkbGxzL3dpbm1tL3dpbm1tX1J1LnJjLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYzoKCU9sZWcgS29yZGEgPG9sZWdAaXNwLm5zYy5ydT4KCUFkZGVkIFJ1c3NpYW4gdHJhbnNsYXRpb24uCgoJKiB3aW5kb3dzL2NsYXNzLmM6IFBoaWxsaXAgRXpvbHQgPGV6b2x0QHBlcmYuemtvLmRlYy5jb20+CglBZGRlZCBtaXNzaW5nIGdvdG8gaW4gc3dpdGNoIHN0YXRlbWVudC4KCgkqIG1pc2MvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUluaXRpYWxpemUgdGhlIE5PTkNMSUVOVE1FVFJJQ1Mgd2l0aCAwIChoZWxwcyBtb29yaHVobi5leGUpLgoKCSogd2luMzIva2VybmVsMzIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCBncmFwaGljcy9wc2Rydi9hZm0uYywgZ3JhcGhpY3MvcHNkcnYvcHBkLmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZGVidWd0b29scy5oLCBpbmNsdWRlL21pc2NlbXUuaCwgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvbGR0LmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY3B1LmMsIG1pc2MvZGVidWdzdHIuYywgbWlzYy9lcnJvci5jLCBtaXNjL21haW4uYywgbWlzYy9yZWdpc3RyeS5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDJhLmMsIG1zZG9zL2ludDNkLmMsIG1zZG9zL2ludDQxLmMsIG1zZG9zL2ludDRiLmMsIG1zZG9zL2lvcG9ydHMuYywgcmVsYXkzMi9zbm9vcC5jLCB0b29scy9tYWtlX2RlYnVnLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MvZGRyYXcuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglPcHRpbWl6ZWQgZGVidWdnaW5nIEFQSSB0byByZWR1Y2UgY29kZSBzaXplLgoKCSogbGlicmFyeS93aW5lc3R1Yi5jLCBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDJmLmMsIG9iamVjdHMvbGluZWRkYS5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYywgZ3JhcGhpY3MvY2FjaGUuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3R0eWRydi90ZXh0LmMsIGluY2x1ZGUvY29sb3IuaCwgaW5jbHVkZS9lbmhtZXRhZmlsZWRydi5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS93aW4xNmRydi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9zdG9yYWdlLmM6CglSZW1vdmVkIGV4dHJhIGluY2x1ZGVzIGZyb20gb2xlLmggYW5kIHdpbmdkaS5oLgoKCSogKi8qOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCAjaW5jbHVkZSBvZiB3aW5nZGkuaCBhbmQgd2luZGVmLmggZnJvbSB3aW51c2VyLmggKGFuZCByZXNvbHZlZAoJdGhlIHJlc3VsdGluZyBjb21waWxhdGlvbiBmYWlsdXJlcykuCgoyMDAwLTAyLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IE93ZW4gV2FuZyA8b3dlbndAY29yZWwuY2E+CglNYWtlIENMU0lERnJvbVN0cmluZyByZXR1cm4gYSBDTFNJRCBvZiB6ZXJvcyBpbnN0ZWFkIG9mIGNyYXNoaW5nIHdoZW4KCXBhc3NlZCBhIG51bGwgcG9pbnRlci4KCgkqIGRsbHMvd2lubW0vam95c3RpY2suYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCB1bmNvbmRpdGlvbmFsIHVzZSBvZiBKT1lERVYuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS93aW5kb3dzeC5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1pY2hhZWwgQ2FyZGVuYXMgPG1pY2hhZWxfY2FyZGVuYXNAZGVuZWJhLmNvbT4KCUFkZGVkIGEgYnVuY2ggb2YgbWFjcm9zIG5lZWRlZCBmb3IgY29tcGlsaW5nIFdpbmVsaWIgYXBwcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBMaXN0Vmlld19FZGl0TGFiZWwgbWFjcm9zLgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUNoYW5nZWQgaW1wb3J0IHRvIG9yZGluYWwuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIElQZXJzaXN0Rm9sZGVyMiBpbnRlcmZhY2UuCgoJKiBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDJmLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuc3BlYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9jZHJvbS5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIGltcGxlbWVudGVkIHNlcmlhbCBudW1iZXJzIGZvciBhdWRpbyBDRHMgYW5kIGRhdGEgQ0RzCgktIGJpZyBjbGVhbiB1cCBvZiBtaXNjL2Nkcm9tLmMgYW5kIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jIGZ1bmN0aW9uCgkgIG5hbWluZyBhbmQgc3VjaAoJLSBzcGxpdCBkZWJ1ZyBjaGFubmVsIGNkYXVkaW8gaW50byBjZHJvbSBhbmQgbWNpY2RhCgktIGZpeGVkIHNvbWUgdHlwb3MKCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBpbmNsdWRlL29sZWN0bC5oOgoJU2VhbiBMYW5nbGV5IDxzZWFubEBjb3JlbC5jYT4KCU1hZGUgT2xlQ3JlYXRlRm9udEluZGlyZWN0IGhhdmUgdGhlIHNhbWUgc2lnbmF0dXJlIChleGFjdGx5KSBhcyB0aGUKCWhlYWRlciBmaWxlLiBBZGRlZCBvbGVwcm8zMiBkbGwgc3R1YnMuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9vbGVwcm8zMi8uY3ZzaWdub3JlLCBkbGxzL29sZXBybzMyL01ha2VmaWxlLmluLCBkbGxzL29sZXBybzMyL1JFQURNRSwgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLCBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYzoKCVNlYW4gTGFuZ2xleSA8c2VhbmxAY29yZWwuY2E+CglPTEVQUk8zMiBzdHVicy4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgQ0ZfSERST1AuCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLmM6IFdvbGZnYW5nIFNjaHdvdHplciA8d29zY2h3b3RAZ214Lm5ldD4KCUV4dGVuZGVkIHRoZSB3aW5tbSBqb3lzdGljayBBUEkgY2FsbHMgdG8gc3VwcG9ydCB0aGUgbmV3IExpbnV4Cglqb3lzdGljayBkcml2ZXIuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUFkZGVkIGNvbnRleHQgZnVuY3Rpb25zIGZvciBGcmVlQlNELgoKCSogZGxscy9zaGVsbDMyL3N5c3RyYXkuYzogU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglGaXggZm9yIHRoZSBzeXN0ZW0gdHJheSwgSWNvbiBhbmQgcG9wdXAgbWVudSdzIG5vdyB3b3JrLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2Ugd2luZG93IHByb3BlcnRpZXMgaW5zdGVhZCBvZiB3aW5kb3cgbG9uZywgYWxzbyB1c2UgdGhlbSB0bwoJZGV0ZXJtaW5lIGlmIHdlIHJlYWxseSBvd24gYSB3aW5kb3cgYW5kIGNhbiBkZXN0cm95IGl0LgoJVGhlIHBpeGVsZm9ybWF0IGZvciAyNTYgY29sb3JzIGhhcyBQQUxFVFRFfFJHQiBmbGFncyAoVG9tYiBSYWlkZXIgMikKCVNldCBwYWludGFibGUgZmxhZyBmb3IgYXBwbGljYXRpb24gcGFzc2VkIGNvb3BlcmF0aXZlL2RyYXdpbmcgd2luZG93LgoJR2V0RGlzcGxheU1vZGU6IFdlIG1pZ2h0IGhhdmUgYW5kIGRvIHN1cHBvcnQgMiBiYWNrYnVmZmVycy4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVJ1bm5pbmcgb2JqZWN0IHRhYmxlIGFyZSBub3QgdXNpbmcgMCBhcyBhIHZhbGlkIGluZGV4IGFueW1vcmUuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIFN0YXRpYyBPd25lckRyYXcuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhlaWdodCBjYWxjdWxhdGlvbiB3YXMgMSBvZmYgaW4gSW1hZ2VMaXN0X1JlYWQuCgoyMDAwLTAyLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvdmlldy9pbml0LmMsIHByb2dyYW1zL3ZpZXcvdmlldy5jLCB0b29scy93cmMvd3JjLmMsIHdpbmRvd3MvbWRpLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgaW5jbHVkZS9yZXNvdXJjZS5oLCBsb2FkZXIvbmUvcmVzb3VyY2UuYzoKCVJlbW92ZWQgcmVzb3VyY2UuaC4KCgkqIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5zcGVjLCBwcm9ncmFtcy92aWV3Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvdmlldy5zcGVjLCBwcm9ncmFtcy93Y21kLy5jdnNpZ25vcmUsIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5zcGVjLCBwcm9ncmFtcy93aW52ZXIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvd2ludmVyLnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzLy5jdnNpZ25vcmUsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLnNwZWMsIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9jbG9jay5zcGVjLCBwcm9ncmFtcy9jbWRsZ3RzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3Quc3BlYywgcHJvZ3JhbXMvY29udHJvbC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuc3BlYywgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQuc3BlYywgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLnNwZWMsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLnNwZWMsIHByb2dyYW1zL3JlZ2FwaS8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuc3BlYywgcHJvZ3JhbXMvcmVndGVzdC8uY3ZzaWdub3JlLCBsaWJ0ZXN0Ly5jdnNpZ25vcmUsIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvZXhwYW5kLnNwZWMsIGxpYnRlc3QvaGVsbG8uc3BlYywgbGlidGVzdC9oZWxsbzIuc3BlYywgbGlidGVzdC9oZWxsbzMuc3BlYywgbGlidGVzdC9oZWxsbzQuc3BlYywgbGlidGVzdC9oZWxsbzUuc3BlYywgbGlidGVzdC9uZXcuc3BlYywgbGlidGVzdC9yb2xleC5zcGVjLCBsaWJ0ZXN0L3ZhcnRlc3Quc3BlYywgbGlidGVzdC92b2xpbmZvLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIC5zcGVjIGZpbGVzIGZvciBhbGwgbGlidGVzdC8gYW5kIHByb2dyYW1zLyBXaW5lTGliIGFwcHMuCglVcGRhdGVkIGFsbCBNYWtlZmlsZXMgdG8gdXNlIC5zcGVjIGZpbGVzIGFuZCBuZXcgcmVzb3VyY2UgaGFuZGxpbmcuCgoJKiBsb2FkZXIvbGlicmVzLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVzb3VyY2VzL3N5c3Jlcy5jLCB0b29scy9idWlsZC5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCBpbmNsdWRlL2xpYnJlcy5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcmVzb3VyY2UuaCwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvZWxmLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIC5zcGVjIGtleXdvcmQgJ21vZGUnIHRvIGFsbG93IGNyZWF0aW5nIGJ1aWx0LWluIEVYRSBtb2R1bGVzLgoJVXNlIGJ1aWx0LWluIEVYRSBtb2R1bGVzIGZvciBXaW5lTGliIGFwcHMgKGluc3RlYWQgb2YgRUxGIG1vZHVsZXMpLgoJUmVtb3ZlZCBkdW1teSBFTEYgbW9kdWxlIGNyZWF0aW9uLgoJUmVtb3ZlZCBMSUJSRVMgaGFuZGxpbmcuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgbWVtb3J5IG92ZXJ3cml0ZSBidWcuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIGRlZmluaXRpb25zIHN1Y2ggYXMgQk9PTDE2IGFuZCBJTlQxNiBmcm9tIHdpbmRlZi5oIGludG8KCXdpbmUvd2luZGVmMTYuaC4KCgkqIG9sZS9vbGUybmxzLmM6IEp1bGlvIEPpc2FyIEfhenF1ZXogPGpnYXpxdWV6QGRsZC5uZXQ+CglHZXROdW1iZXJGb3JtYXRBIGltcGxlbWVudGF0aW9uIGFkZGVkLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJU2F2ZSBhbmQgcmVzdG9yZSBjdXJzb3IgaW4gV3JpdGVDb25zb2xlT3V0cHV0QS4KCgkqIGluY2x1ZGUvZGF0ZXRpbWUuaCwgaW5jbHVkZS9tb250aGNhbC5oLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIEltcGxlbWVudGF0aW9uIG9mIFdNX1NFVEZPUk1BVAoJLSBSZXdvcmtlZCBkcmF3aW5nL3NlbGVjdGlvbgoJLSBJbXBsZW1lbnRhdGlvbiBvZiBXTV9LRVlET1dOCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvaW50MDkuYywgbXNkb3MvaW50MTYuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgSU5UX0ludDE2UmVhZENoYXIgYW5kIG1hZGUgaW50MDkgaGFuZGxlIHNwZWNpYWwga2V5cy4KCgkqIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL3ZnYS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGFscGhhbnVtZXJpYyBtb2RlIHRvIHRoZSBWR0EgZW11bGF0aW9uLgoJVXNlIHNlcnZpY2UgdGhyZWFkIGZvciB0aGUgcGVyaW9kaWMgcmVmcmVzaC4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2xlYW51cCBWR0EgcmVmcmVzaCB3aGVuIHRlcm1pbmF0aW5nLgoKCSogd2luMzIvY29uc29sZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUhhbmRsZSBiYWNrc3BhY2UgY29ycmVjdGx5LgoKMjAwMC0wMS0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgTWFrZS5ydWxlcy5pbiwgKi9NYWtlZmlsZS5pbjoKCUJ1aWxkIG1vc3QgZGxscyBhcyBzZXBhcmF0ZSBzaGFyZWQgbGlicmFyaWVzLgoKMjAwMC0wMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBjb25maWd1cmU6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3Igc3lzL3JlZy5oLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgaW5jbHVkZS9pbWFnZWxpc3QuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT3ZlcmxheSBpbmRpY2VzIGFyZSBzaWduZWQgc2hvcnRzICgtMSBtZWFucyBubyBvdmVybGF5KQoJKEltYWdlTGlzdF9TZXRPdmVybGF5SW5kZXgpIHNob3VsZCBhY2NlcHQgLTEgYXMgb3ZlcmxheWluZGV4LgoJKEltYWdlTGlzdF9SZWFkKSBXZSBjYW4gcmVhZCBhIE54TSBiaXRtYXAgZnJvbSB0aGUgc3RyZWFtIGFuZCBoYXZlCgl0byBjb252ZXJ0IGl0IGludG8gYSAxeChNKk4pIGJpdG1hcCwgc2V0IGNDdXJJbWFnZSxjTWF4SW1hZ2UuIEFkZGVkCglkb2N1bWVudGF0aW9uLgoJKG90aGVycykgcmVtb3ZlZCBzb21lIHBvdGVudGlhbCBvcGVyYXRvciBwcmVjZW5kZW5jZSBwcm9ibGVtcy4KCgkqIG9iamVjdHMvZGMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXREZXZpY2VDYXBzOiBzcG90IHlldCB1bnN1cHBvcnRlZCBhY2Nlc3NlcyB0byB0aGUgRGV2aWNlQ2FwcyBzdHJ1Y3QuCgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIG1pc2NlbXUvbWFpbi5jLCB3aW4zMi9leGNlcHQuYywgTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9leHRlcm5hbC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvdGhyZWFkLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIGRlYnVnZ2VyIHRvIGxpYndpbmUgdG8gbWFrZSBpdCBhdmFpbGFibGUgdG8gV2luZUxpYiBhcHBzLgoJVHJ5IHRvIGludm9rZSBleHRlcm5hbCBkZWJ1Z2dlciBpZiBpbnRlcm5hbCBkZWJ1Z2dlciBjcmFzaGVzLgoJVHJ5IHRvIGhhbmRsZSBlYXJseSBpbnZvY2F0aW9uIG9mIGRlYnVnZ2VyIG1vcmUgZ3JhY2VmdWxseS4KCgkqIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWFyayBpbml0aWFsIHByb2Nlc3MgYXMgMzItYml0IGZvciBXaW5lTGliIGFwcHMuCglVc2UgdGViLT50aWJmbGFncyBpbnN0ZWFkIG9mIHRlYi0+ZmxhZ3MgKGZvciBXaW45NSBVU0VSMzIgY29tcGF0aWJpbGl0eSkuCglSZW1vdmVkIHVudXNlZCB0aHJlYWQgZXZlbnQuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBXaW5kb3dzIHNraXBzIHRoZSAnXHQnIGFuZCAnICcgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHNlY3Rpb24KCSAga2V5IG5hbWVzIG9mIC5JTkkgZmlsZXMuCgktIEZpeGVkIEdldC9Xcml0ZVByaXZhdGVQcm9maWxlU3RydWN0QSgpOgoJICAtIChyZS0pdHJhbnNsYXRlIHRoZSBiaW5hcnkgZGF0YSBpbnRvIEFTQ0lJIGhleCBjaGFycwoJICAtIGFkZCBjaGVja3N1bSAvIGNoZWNraW5nIG9mIGl0CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDEtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIHNlcnZlci9jb250ZXh0X2kzODYuYywgY29uZmlndXJlOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHN5cy9yZWcuaC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGluY2x1ZGUvaW1hZ2VsaXN0Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU92ZXJsYXkgaW5kaWNlcyBhcmUgc2lnbmVkIHNob3J0cyAoLTEgbWVhbnMgbm8gb3ZlcmxheSkKCShJbWFnZUxpc3RfU2V0T3ZlcmxheUluZGV4KSBzaG91bGQgYWNjZXB0IC0xIGFzIG92ZXJsYXlpbmRleC4KCShJbWFnZUxpc3RfUmVhZCkgV2UgY2FuIHJlYWQgYSBOeE0gYml0bWFwIGZyb20gdGhlIHN0cmVhbSBhbmQgaGF2ZQoJdG8gY29udmVydCBpdCBpbnRvIGEgMXgoTSpOKSBiaXRtYXAsIHNldCBjQ3VySW1hZ2UsY01heEltYWdlLiBBZGRlZAoJZG9jdW1lbnRhdGlvbi4KCShvdGhlcnMpIHJlbW92ZWQgc29tZSBwb3RlbnRpYWwgb3BlcmF0b3IgcHJlY2VuZGVuY2UgcHJvYmxlbXMuCgoJKiBvYmplY3RzL2RjLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0RGV2aWNlQ2Fwczogc3BvdCB5ZXQgdW5zdXBwb3J0ZWQgYWNjZXNzZXMgdG8gdGhlIERldmljZUNhcHMgc3RydWN0LgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBtaXNjZW11L21haW4uYywgd2luMzIvZXhjZXB0LmMsIE1ha2VmaWxlLmluLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZXh0ZXJuYWwuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS9kZWJ1Z2dlci5oLCBpbmNsdWRlL3RocmVhZC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBkZWJ1Z2dlciB0byBsaWJ3aW5lIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIFdpbmVMaWIgYXBwcy4KCVRyeSB0byBpbnZva2UgZXh0ZXJuYWwgZGVidWdnZXIgaWYgaW50ZXJuYWwgZGVidWdnZXIgY3Jhc2hlcy4KCVRyeSB0byBoYW5kbGUgZWFybHkgaW52b2NhdGlvbiBvZiBkZWJ1Z2dlciBtb3JlIGdyYWNlZnVsbHkuCgoJKiBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1hcmsgaW5pdGlhbCBwcm9jZXNzIGFzIDMyLWJpdCBmb3IgV2luZUxpYiBhcHBzLgoJVXNlIHRlYi0+dGliZmxhZ3MgaW5zdGVhZCBvZiB0ZWItPmZsYWdzIChmb3IgV2luOTUgVVNFUjMyIGNvbXBhdGliaWxpdHkpLgoJUmVtb3ZlZCB1bnVzZWQgdGhyZWFkIGV2ZW50LgoKCSogZmlsZXMvcHJvZmlsZS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gV2luZG93cyBza2lwcyB0aGUgJ1x0JyBhbmQgJyAnIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBzZWN0aW9uCgkgIGtleSBuYW1lcyBvZiAuSU5JIGZpbGVzLgoJLSBGaXhlZCBHZXQvV3JpdGVQcml2YXRlUHJvZmlsZVN0cnVjdEEoKToKCSAgLSAocmUtKXRyYW5zbGF0ZSB0aGUgYmluYXJ5IGRhdGEgaW50byBBU0NJSSBoZXggY2hhcnMKCSAgLSBhZGQgY2hlY2tzdW0gLyBjaGVja2luZyBvZiBpdAoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIG1pc2MvcmVnaXN0cnkuYywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCB3aW5lLmluaToKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBmaXhlcywgbG9hZGluZyBvZiBzZXR0aW5ncyBwZXIgdXNlcgoJLSBhdXRvZGV0ZWN0aW5nIG9mIHdpbmRvd3MgcmVnaXN0cnkgdmVyc2lvbgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVGhlIENPTSB2aXJ0dWFsIHRhYmxlcyBtdXN0IHVzZSB0aGUKCSdJQ09NX01TVlRBQkxFX0NPTVBBVF9EdW1teVJUVElWQUxVRScgbWFjcm8gdG8gcHJvdmlkZSBwYWRkaW5nIGluIEMrKy4KCgkqIG1zZG9zL2ludDA5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBpbnQ5IGhhbmRsZXIgYWRkIGtleXN0cm9rZSB0byBCSU9TIGtleWJvYXJkIGJ1ZmZlci4KCgkqIGxvYWRlci9kb3MvZG9zbW9kLmMsIGxvYWRlci9kb3MvZG9zbW9kLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCWRvc21vZCBwcm90b2NvbCByZXZpc2lvbiAzLCBmZWF0dXJpbmcgTVBST1RFQ1QgYW5kIEVOVEVSSURMRS4KCgkqIGluY2x1ZGUvd2luY29uLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBjb3VwbGUgb2YgcHJvdG90eXBlcy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGQgaW5mb3JtYXRpb24gYWJvdXQgY29kZSBwYWdlcyB0byBkZWZhdWx0IHJlZ2lzdHJ5LgoKCSogY29uZmlndXJlLmluLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmU6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gVW5peHdhcmUgKFNvbGFyaXMpIGxpbmtlciB0eXBvIGZpeGVkCgktIFNvbGFyaXMgKGFuZCBwb3NzaWJseSBVbml4d2FyZSkgc3BlY2lmaWMgbGlua2VyIHN1cHBvcnQgZm9yIHRoZQoJICBHTlU6aXNtIC0tW25vLV13aG9sZS1hcmNoaXZlCgktIFNvbGFyaXMgbWFrZSBzcGVjaWZpYyBtYWtlZmlsZSBmaXgKCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIHN1cHBvcnQgZm9yIHtzZXQsZ2V0fV90aHJlYWRfY29udGV4dCBhZGRlZC4KCjIwMDAtMDEtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6CglBZGRlZCBvdXIgb3duIHVzZXJfcmVnc19zdHJ1Y3QgZGVmaW5pdGlvbiBmb3IgYmV0dGVyIGNvbXBhdGliaWxpdHkuCgoJKiBjb250cm9scy9idXR0b24uYywgd2luZG93cy9kaWFsb2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQ29ycmVjdCB0aGUgYmVoYXZpb3VyIG9mIHRoZSBhY2NlbGVyYXRvciBrZXlzIGluIGRpYWxvZ3MgYWNjb3JkaW5nIHRvCgl0aGUgV2luZG93cycgb25lLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmgsIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vWHgucmMsIHByb2dyYW1zL3Byb2dtYW4vYWNjZWwucmMsIHByb2dyYW1zL3Byb2dtYW4vbWFpbi5jLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9QdC5yYywgcHJvZ3JhbXMvd2luaGVscC9YeC5yYywgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL2Nsb2NrLnJjLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUxpbmsgb25seSBhIHNpbmdsZSAucmMgZmlsZSB3aXRoIGFwcGxpY2F0aW9uLgoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGlmMTYzMi9zbm9vcC5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIEJVR1MsIFJFQURNRSwgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIGFkZCBzb21lIGRvY3VtZW50YXRpb24gaXRlbXMKCS0gZml4IHNvbWUgc3BlbGxpbmcKCS0gZml4IHNvbWUgd2FybmluZ3MKCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkb2N1bWVudGF0aW9uL2Nkcm9tLWxhYmVscywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9jZHJvbS5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2RyaXZlLmgsIGxpYnRlc3Qvdm9saW5mby5jLCBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDJmLmMsIHdpbmUuaW5pOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIHN1cHBvcnQgZm9yIHJlYWRpbmcgbGFiZWxzIGFuZCBzZXJpYWwgbnVtcyBmcm9tIGRldmljZQoJLSAicmVhc29uYWJsZSIgbWlzYy9jZHJvbS5jIGRldmljZSBoYW5kbGluZwoJLSBtdWNoIGltcHJvdmVkIGF1ZGlvIENEIHN1cHBvcnQKCS0gc2VyaWFsIG51bWJlciBvdmVyd3JpdGUgYnVnIGZpeAoJLSBzcGVsbGluZyBmaXhlcwoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NldHVweC8uY3ZzaWdub3JlLCBkbGxzL3NldHVweC9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cHgvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXB4L3NldHVweF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIFNFVFVQWCBkbGwuCgoJKiBkbGxzL29sZTMyL29sZTIuc3BlYywgc2VydmVyL3Byb2Nlc3MuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgbWlub3IgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIGZpeGVzLgoJLSBNb3ZlZCBzb21lIG9mIHRoZSBBUEkgc3BlY2lmaWNhdGlvbnMgZnJvbSB0aGUgZ2xvYmFsIGZpbGUgdG8gdGhlCgkgIGxvY2FsIGZpbGVzLgoKCSogaW5jbHVkZS9pbWFnZWxpc3QuaCwgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgSW1hZ2VMaXN0X1JlYWQgKG5vdCAxMDAlIGNvcnJlY3QgaW4gcmVnYXJkaW5nIHRvIHNldHRpbmcKCXRoZSBiaXRtYXApLgoJRmlsbGVkIG91dCB1bmtub3duIG1lbWJlcnMgb2YgSUxIRUFELgoJU3RhcnRlZCByZW9yZGVyaW5nIElNQUdFTElTVCB0byBtYWtlIGl0IFdpbmRvd3MgYmluYXJ5IGNvbXBhdGlibGUuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbkljb25JbmRleCA9PSAtMSBzaG91bGQgcmV0dXJuIG5yIG9mIGF2YWlsYWJsZSBpY29ucywgbm90IDAuCgoJKiBNYWtlZmlsZS5pbjogRml4ZWQgYnVpbGRpbmcgb2YgZG9zbW9kIGFuZCB3aW5lY2xpcHNydi4KCgkqIG1pc2MvZGVidWdzdHIuYzoKCUJ1ZyBmaXg6IGFkZGVkIHRlbXAgc3RydWN0dXJlIHRvIGNvcGUgd2l0aCBkZWJ1ZyB0cmFjZXMgZHVyaW5nIHRocmVhZAoJc3RhcnR1cC4KCgkqIHdpbjMyL25ld2Zucy5jLCB3aW5kb3dzL21zZ2JveC5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zeW5jLmMsIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL2RlYnVnc3RyLmgsIGxpYnRlc3QvdmFydGVzdC5jLCBsb2FkZXIvcmVzb3VyY2UuYywgb2JqZWN0cy90ZXh0LmMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCByZWxheTMyL3V0dGh1bmsuYzoKCVJlbW92ZWQgZGVidWdzdHIuaC4KCgkqIG1pc2MvZGVidWdzdHIuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIGluY2x1ZGUvdGhyZWFkLmg6CglVc2UgYSBwZXItdGhyZWFkIGJ1ZmZlciBhbmQgd3JpdGUoMikgZm9yIGRlYnVnIHRyYWNlcy4KCVJlbW92ZWQgZGVidWdfZHVtcHN0ci4KCjIwMDAtMDEtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNtYWxsIGZpeC4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUdldCBIQ1UgbmFtZSBmcm9tIHVuaXggdXNlciBuYW1lLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgaW5jbHVkZS9zZXJ2ZXIuaCwgbWVtb3J5L3NlbGVjdG9yLmM6CglJbXBsZW1lbnRlZCBHZXRUaHJlYWRTZWxlY3RvckVudHJ5IHRocm91Z2ggdGhlIHNlcnZlci4KCjIwMDAtMDEtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6CglEeW5hbWljYWxseSBsb2FkIHZlcnNpb24uZGxsIGluIE1NRFJWX0dldERlc2NyaXB0aW9uMzIuCgoJKiBkbGxzL29sZTMyL29sZTIuYzoKCVVzZSBhIGxpbmtlZCBsaXN0IGluc3RlYWQgb2YgYSBEUEEgZm9yIHRoZSBob29rIGxpc3QuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCVVzZSBhIGxpbmtlZCBsaXN0IGluc3RlYWQgb2YgYSBEUEEgdG8gbWFuYWdlIHBpeG1hcHMuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmV0dXJucyBhbiBlcnJvciBpZiB0cnlpbmcgdG8gd3JpdGUgdG8gYSBzdHJlYW0gb3BlbmVkIGZvciByZWFkLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkIGEgbmV3YmllIHdhcm5pbmcgZm9yIHNsYXNoZXMgaW4gdGhlIHNlYXJjaCBQYXRoPSBvZiB3aW5lLmNvbmYuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdhaXQgZm9yIFNobUNvbXBsZXRpb24gZHVyaW5nIEZsaXAuCgoJKiBjb25maWd1cmUuaW4sIGxpYnRlc3QvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglNYWRlIC0tZW5hYmxlLWRsbCB0aGUgZGVmYXVsdC4KCVVzZSAkKE1BS0UpIGluc3RlYWQgb2YgJChTVUJNQUtFKSBmb3IgcmVjdXJzaXZlIG1ha2VzLgoJQ2xlYW5lZCB1cCBpbnN0YWxsIHRhcmdldHMgaW4gbWFpbiBNYWtlZmlsZS4KCgkqIGRsbHMvbnRkbGwvc3luYy5jOiBEb24ndCBjcmFzaCB3aGVuIE9iamVjdEF0dHJpYnV0ZXMgaXMgTlVMTC4KCjIwMDAtMDEtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvc3RhYnMuYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgaW5jbHVkZS9vcHRpb25zLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tYWluLmMsIG1pc2MvbWFpbi5jLCBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL2NsaWVudC5jOgoJVXNlIGFyZ3ZbMF0gdG8gbG9jYXRlIHRoZSBzZXJ2ZXIgZXhlY3V0YWJsZS4KCgkqIG1lbW9yeS9oZWFwLmMsIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS93aW5udC5oLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvZ2xvYmFsLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4KCVNoYXJlIHRoZSBzeXN0ZW0gaGVhcCBiZXR3ZWVuIGRpZmZlcmVudCBhZGRyZXNzIHNwYWNlcy4gTWFkZSBwcm9jZXNzCgloZWFwIHBlci1hZGRyZXNzIHNwYWNlIGluc3RlYWQgb2YgcGVyLXByb2Nlc3MuCgoJKiBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCBNYWtlZmlsZS5pbiwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL21haW4uYywgbWlzYy9yZWdpc3RyeS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4KCU1hZGUgdGhlIHNlcnZlciBsaXN0ZW4gZm9yIG5ldyBjbGllbnRzIG9uIGEgVW5peCBzb2NrZXQgaW4KCSRIT01FLy53aW5lLiBOZXdseSBzdGFydGVkIHdpbmUgcHJvY2Vzc2VzIG5vdyBhdHRhY2ggdG8gYW4gZXhpc3RpbmcKCXNlcnZlciBpZiBvbmUgaXMgcnVubmluZy4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgaW5jbHVkZS9vcHRpb25zLmg6CglBZGRlZCBQUk9GSUxFX0dldENvbmZpZ0RpciBmdW5jdGlvbi4KCjIwMDAtMDEtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyLyouYzoKCUNoYW5nZWQgdGhlIHNlcnZlciB0byByZXR1cm4gU1RBVFVTXyogZXJyb3IgY29kZXMuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvbnRkbGwvcnRsLmM6CglCdWlsdCBhIGNvbXBsZXRlIHRyYW5zbGF0aW9uIHRhYmxlIGZvciBSdGxOdFN0YXR1c1RvRG9zRXJyb3IuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2lubnQuaDogQWRkZWQgc29tZSBlcnJvciBjb2Rlcy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglVc2UgR2V0UHJvY0FkZHJlc3MgaW5zdGVhZCBvZiBjYWxsaW5nIFNoZWxsQWJvdXRBIGRpcmVjdGx5LgoKMjAwMC0wMS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vdmVyLnNwZWMsIGRsbHMvdmVyc2lvbi92ZXIxNi5jOgoJTWVyZ2VkIGRsbHMvdmVyIGludG8gZGxscy92ZXJzaW9uLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS9udHNlY2FwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBpbXBsZW1lbnRhdGlvbiBvZiBSdGxSZWcqIChyZWFkIGFjY2VzcyksIFJ0bEV2ZW50KiwgUnRsU2VtYXBob3JlKiwKCSAgTnRBbGxvY2F0ZUxvY2FsbHlVbmlxdWVJZAoJLSBpbXBsZW1lbnRhdGlvbiBvciBzdHVicyBmb3IgTnRBY2Nlc3NDaGVjaywgTnRTZXRTZWN1cml0eU9iamVjdCwKCSAgUnRsQ2xlYXJCaXRzLCBSdGxFcXVhbFByZWZpeFNpZCwgUnRsRmluZENsZWFyQml0cywKCSAgUnRsRm9ybWF0Q3VycmVudFVzZXJLZXlQYXRoLCBSdGxHZXRDb250cm9sU2VjdXJpdHlEZXNjcmlwdG9yLAoJICBSdGxJZGVudGlmaWVyQXV0aG9yaXR5U2lkLCBSdGxJbXBlcnNvbmF0ZVNlbGYsIFJ0bEluaXRpYWxpemVCaXRNYXAsCgkgIFJ0bEluaXRpYWxpemVHZW5lcmljVGFibGUsIFJ0bE1ha2VTZWxmUmVsYXRpdmVTRCwKCSAgUnRsUHJlZml4VW5pY29kZVN0cmluZywgUnRsU2V0Qml0cywgUnRsVW5pY29kZVRvTXVsdGlCeXRlTiwKCSAgUnRsVXBjYXNlVW5pY29kZVN0cmluZ1RvT2VtU3RyaW5nLCBSdGxVcGNhc2VVbmljb2RlVG9PZW1OLAoJICBSdGxWYWxpZFNpZCwgUnRseFVuaWNvZGVTdHJpbmdUb09lbVNpemUKCS0gY29ycmVjdGVkIG1vc3QgUnRsU3RyaW5nKiBmdW5jdGlvbnMsIGFkZGVkIGRvY3VtZW50YXRpb24KCS0gbW9yZSBmaXhlcyBhbmQgcGFydGlhbCBpbXBsZW1lbnRhdGlvbnMKCgkqIG1pc2MvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvb3B0aW9ucy5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCAtZHhncmFiIGNvbW1hbmQgbGluZSBvcHRpb24sIHdoaWNoIGNvbmZpbmVzIGN1cnNvciBtb3Rpb24gdG8gdGhlCglEaXJlY3RYIHByaW1hcnkgc3VyZmFjZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCBzb21lIHdlaXJkIEMgY29uc3RydWN0cyAoY2hhcltdPSIiICkgd2l0aCBtb3JlIGNvbXBhdGlibGUgb25lcy4KCUFkZGVkIGFub3RoZXIgTlVMTCBwdHIgY2hlY2sgaW4gX09uT3Blbi4KCgkqIG1pc2Mvd2luc29ja19hc3luYy5jLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL3dzb2NrMzIuc3BlYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svLmN2c2lnbm9yZSwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd2luc29jay5zcGVjLCBkbGxzL3dpbnNvY2svd3NvY2szMi5zcGVjLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi93aW5zb2NrLnNwZWMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2Mvd2luc29jay5jOgoJTW92ZWQgd2luc29jayBpbXBsZW1lbnRhdGlvbiB0byBkbGxzL3dpbnNvY2suCgoJKiBkbGxzLyovLmN2c2lnbm9yZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgKi5zcGVjLmMsICouc3BlYy5nbHVlLnMsICouZ2x1ZS5jIHRvIC5jdnNpZ25vcmUgdGhhdCBuZWVkIHRoZW0uCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29ycmVjdGVkIGFyZ3VtZW50cyB0byBWaXJ0dWFsRnJlZSgpLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBtZW1vcnkvc3RyaW5nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlcGxhY2VkIExvY2FsVG9XaWRlQ2hhcigpIGJ5IGxzdHJjcHluQXRvVygpLCBXaWRlQ2hhclRvTG9jYWwoKSBieQoJbHN0cmNweW5XdG9BKCkuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglNYXAgV01fTUVOVVNFTEVDVCAzMi0+MTYgYml0cyBmb3IgY2xvc2luZyBtZW51LgoKCSogd2luZG93cy9tZGkuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXggcGFyYW1ldGVycyBmb3IgTURJX1Jlc3RvcmVGcmFtZU1lbnUgaW4gV01fREVTVFJPWSBtc2cuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIChSZWdpc3RlcnxHZXR8UmV2b2tlKUFjdGl2ZU9iamVjdCBmcm9tIHRoZSBkb2NzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU3VwZXJjaGFyZ2VkIFhTaG0gaW1wbGVtZW50YXRpb24gZm9yIERpcmVjdERyYXcuCgoJKiBkZWJ1Z2dlci9tc2MuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IG1pc3NpbmcgTlVMTCBwb2ludGVyIGNoZWNrcy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2hlY2sgZm9yIE1aIGhlYWRlciBiZWZvcmUgdHJ5aW5nIHRvIGRlY2lwaGVyIHRoZSBQRSBoZWFkZXIuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglFeHBvcnQgR2V0TG9uZ1BhdGhOYW1lW0F8V10uCgoJKiBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IHByb2JsZW1zIHdpdGggR2xvYmFsSGFuZGxlIGFuZCBHbG9iYWxGcmVlIHNvIHJlc3VsdHMgbWF0Y2ggV2luOTguCglSZXN0cnVjdHVyZSBIRUFQX1ZhbGlkYXRlSW5Vc2VBcmVuYSwgSGVhcFZhbGlkYXRlLCBhbmQgYWRkCglIRUFQX0lzUmVhbEFyZW5hIHRvIGVsaW1pbmF0ZSAqYm9ndXMqIGVycm9yIG1lc3NhZ2VzLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFjdHVhbGx5IHByaW50IHJldHVybiB2YWx1ZSBvZiBtZXNzYWdlLgoKCSogb2JqZWN0cy9kaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb3JyZWN0ZWQgYXJndW1lbnRzIGluIERJQl9EZWxldGVESUJTZWN0aW9uLgoKCSogZmlsZXMvZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBcXC5cPGRvc2RldmljZT4gbGlrZSA8ZG9zZGV2aWNlPiBpbiBDcmVhdGVGaWxlLiBUZXN0ZWQgd2l0aAoJaGVscCBvZiBKYW1lcyBGZWVuZXkgPGphbWVzQG51cmVhbG0ubmV0Pi4KCjIwMDAtMDEtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGluY2x1ZGUvc2VydmVyLmg6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEdldC9TZXRUaHJlYWRDb250ZXh0IHN1cHBvcnQgdGhyb3VnaCB0aGUgc2VydmVyLgoKMjAwMC0wMS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlucHV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGVidWdzdHIuaCwgbWlzYy9kZWJ1Z3N0ci5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jOgoJQWRkZWQgZGVidWdzdHJfZ3VpZCBmdW5jdGlvbiBhbmQgdXNlZCBpdCB0byByZXBsYWNlCglXSU5FX1N0cmluZ0Zyb21DTFNJRCBpbiBhbGwgZGVidWdnaW5nIG1lc3NhZ2VzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbHdheXMgaW5pdGlhbGl6ZSBscFdhdmVIZHItPmxwTmV4dCB0byBOVUxMLgoJRG9uJ3QgZmFpbCBvbiBzdHJhbmdlIGZyYWdtZW50IHNpemVzLgoKMjAwMC0wMS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2lubmxzLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkIHNvbWUgZGVmaW5lcyBuZWVkZWQgZm9yIFVuaWNvZGUgdG8gQXNjaWkgY29udmVyc2lvbnMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQmV0dGVyIGVycm9yIGhhbmRsaW5nLCBsZXNzIGtleXMgaGVsZCBvcGVuLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbnVtRGlzcGxheU1vZGVzIG11c3QgcGFzcyBsUGl0Y2guCgoJKiBjb250cm9scy9tZW51LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJVmFsaWRhdGUgdGhlIG1lbnUgaGFuZGxlcy4KCgkqIGRsbHMvd2luODdlbS9lbXVsYXRlLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUm91bmRzIHRvIHRoZSBsb3dlc3QgaW50ZWdlciwgbm90IHRoZSBuZWFyZXN0LgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCByYWNlIGJldHdlZW4gV2luMTYgcGFyZW50IGFuZCBjaGlsZCBmb3IgZmlyc3QgcmVzY2hlZHVsaW5nCglvZiBjaGlsZCBwcm9jZXNzLiBUaGlzIGZpeGVzIFdpbkV4ZWMgcmV0dXJuaW5nIHRvbyBlYXJseS4KCjIwMDAtMDEtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVc2UgLS13aG9sZS1hcmNoaXZlIHRvIGZvcmNlIGxpbmtpbmcgYWxsIG9mIGxpYndpbmUuYS4gaW50byB3aW5lLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9idWlsdGluMzIuaCwgcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvYnVpbGQuYzoKCUFkZGVkIGF1dG9tYXRpYyByZWdpc3RyYXRpb24gb2YgYnVpbHQtaW4gRExMcy4KCjIwMDAtMDEtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZTogQWFyb24gSG9wZSA8ZWRoQG1haWwuYnJpb2ZvcmdlLmNvbT4KCUZpeGVkIElQWCBkZXRlY3Rpb24uCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTmV3IGltcGxlbWVudGF0aW9uIG9mIHRoZSB3aW45NSByZWdpc3RyeSBsb2FkZXIuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUlmIHRoZXJlIGlzIGVub3VnaCBzcGFjZSBpbiB0aGUgYnVmZmVyIGFuZCB0aGUgdHlwZSBpcyBSRUdfU1ogYW5kIHRoZQoJc3RyaW5nIGlzIG5vdCAwLXRlcm1pbmF0ZWQgUmVnUXVlcnlWYWx1ZSBhbmQgUmVnRW51bVZhbHVlIGFyZSBhcHBlbmRpbmcgYSAwLgoKCSogZGVidWdnZXIvaGFzaC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURpc3BsYXkgdGhlIGV4dGVybmFsIG1vZHVsZXMgYWZ0ZXIgdGhlIGludGVybmFsIG1vZHVsZXMgaW4gY3Jhc2ggcmVwb3J0LgoKCSogZmlsZXMvZHJpdmUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIFNldFZvbHVtZUxhYmVsIHJlcG9ydCBmYWlsdXJlIG9uIENELVJPTSBkcml2ZXMuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5OgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCVVwZGF0ZWQgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgaW5jbHVkZS9kcml2ZXIuaCwgd2luZG93cy9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVwbGFjZWQgV2luZSBzcGVjaWZpYyBEUklWRVJfR2V0VHlwZSBieSBhIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YKCUdldERyaXZlckZsYWcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS93aW5lX2dsLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSAodWdseSkgZml4IGZvciB0aGUgJ1htZC5oJyBwcm9ibGVtCgktIGZpeCB0aGUgZGV0ZWN0aW9uIG9mIERHQSAyIGluIGNvbmZpZ3VyZSBzY3JpcHQKCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci90aHJlYWQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBhZGRlZCBOVCBmaWVsZHMgdG8gVEVCCgktIG1vdmVkIHRscy1maWVsZHMgYW5kIHNvbWUgd2luZSBzcGVjaWZpYyBmaWVsZHMgdG8gYSBoaWdoZXIgb2Zmc2V0CgktIGFkZGVkIHNvbWUgZG9jdW1lbnRhdGlvbgoJLSBpbml0aWFsaXNhdGlvbiBvZiB0aGUgVW5pY29kZVN0cmluZwoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogVG9kZCBULiBGcmllcyA8dG9kZEBmcmllcy5uZXQ+CglBZGQgSEFWRV9TT1VORENBUkRfSCB0byBzdXBwb3J0IE9wZW5CU0QuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIHNvbWUgbWlzc2luZyBFTVIgcmVjb3JkIHR5cGVzIGFuZCB1cGRhdGVkIGFuZCBmaXhlZCBvdGhlcnMKCS0gQWRkZWQgc3R1YnMgYW5kIGhlYWRlcnMgZm9yIENyZWF0ZUNvbG9yU3BhY2UsRGVsZXRlQ29sb3JTcGFjZSBhbmQgU2V0Q29sb3JTcGFjZQoJLSBBZGRlZCBoZWFkZXIgZm9yIFNldElDTU1vZGUKCS0gQWRkZWQgYWJpbGl0eSB0byBwbGF5IG1vcmUgZW5oYW5jZWQgbWV0YWZpbGUgcmVjb3JkcwoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCVN0b3JlIHJlZmVyZW5jZSBoZGMgc2l6ZSBpbnRvIGVuaGFuY2VkIG1ldGFmaWxlIGhlYWRlciB3aGVuIGNyZWF0aW5nLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIE9sZVJ1bi4KCgkqIG9iamVjdHMvZGMuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW1vdmVkIERlbGV0ZU9iamVjdCBjYWxsIGxlZnQgb3ZlciBmcm9tIHByZXZpb3VzIHBhdGNoLgoKCSogd2luMzIvdGhyZWFkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYmFkIHJlZ2lzdGVyIGNvbnN0cmFpbnQgaW4gSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBwcm90b3R5cGVzIGZvciB0aGUgTlQgc3luY2hyb25pemF0aW9uIGZ1bmN0aW9ucwoJSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UgYW5kIEludGVybG9ja2VkRXhjaGFuZ2VBZGQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgYWNjZXNzICd3bS0+bW9kbmFtZScgYWZ0ZXIgdGhlIG1vZHJlZiBoYXMgYmVlbiBmbHVzaGVkLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkZWQgbnVsbCBjaGVjayBpbiBHbG9iYWxIYW5kbGUuCgoyMDAwLTAxLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5jLCBpbmNsdWRlL21vbnRoY2FsLmg6CglSZW1vdmVkIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIG9sZWF1dDMyIGFuZCBjb21jdGwzMi4KCgkqIGluY2x1ZGUvd2lubnQuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglNb3JlIFNUQVRVU18gY29kZXMuCgoJKiBpbmNsdWRlL2RkcmF3Lmg6IFN0ZXZlIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJRml4ZWQgbWFjcm8gZGVmaW5pdGlvbiBvZiBJRGlyZWN0RHJhd1N1cmZhY2VfUmVzdG9yZS4KCUFkZGVkIGRlZmluZXMgZm9yIERkcmF3J3MgV2FpdEZvclZlcnRpY2FsRGlzcGxheSgpLgoKCSogaW5jbHVkZS9kc291bmQuaDogU3RldmUgTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglGaXhlZCB0eXBvcyBpbiBtYWNybyBkZWZpbml0aW9ucyBmb3IgSURpcmVjdFNvdW5kQnVmZmVyX0dldFN0YXR1cywKCUlEaXJlY3RTb3VuZEJ1ZmZlcl9VbmxvY2suCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IFN0ZXZlIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJTWlzc2luZyBXaW5lbGliIGRlY2xhcmF0aW9ucyBmb3IgQVVYQ0FQUy4KCgkqIHRvb2xzL2J1aWxkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4IChoYXJtbGVzcykgYXNzZW1ibGVyIHdhcm5pbmdzLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUZpeCBwcm9ibGVtIHdpdGggaW5pdGlhbGl6YXRpb24gKHJlcG9ydGVkIGJ5IEFuZHJlYXMgTW9ocikuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglJbmZvUHRyIGNoZWNraW5nIG1peGVkIHVwIFdNX0RFU1RST1kgYW5kIFdNX0NSRUFURS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEphbiAgOSAyMTo0Mjo0MiAyMDAwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglOb24tTGludXggY29tcGlsZSBmaXguCgoJKiBmaWxlcy9kb3NfZnMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglET1NGU19Eb0dldEZ1bGxQYXRoTmFtZSB3b3VsZCB1bmRlcmZsb3cgKHAgd291bGQgZ2V0IHBhc3QgdGhlCgliZWdpbm5pbmcgb2YgYnVmZmVyKSBpZiBnaXZlbiB0aGUgbmFtZSAiLy8uLiIuCglSZWdyb3VwZWQgdGhlIGhhbmRsaW5nIG9mIHRoZSBkaXJlY3Rvcnkgc2VwYXJhdG9ycy4KCURpcmVjdG9yeSBzZXBhcmF0b3JzIGluIHRoZSByZXR1cm5lZCBwYXRoIGFyZSBub3cgYWx3YXkgYSBzaW5nbGUgIlwiCgl3aGljaCBzaW1wbGlmaWVzIHRoZSBoYW5kbGluZyBvZiAiLi4iIGluIHRoZSBuYW1lLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglDb3JyZWN0ZWQgYmVoYXZpb3VyIG9mIFJlZ09wZW5LZXkgaW4gY2FzZSBvZiBmYWlsdXJlLgoKCSogbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gcmVtb3ZlZCBjb3B5aW5nIG9mIEhLRVlfVVNFUlMgdG8gSEtFWV9DVVJSRU5UX1VTRVIKCS0gSEtFWV9DVVJSRU5UX1VTRVIgaXMgbm93IHN1YmtleSBvZiBIS0VZX1VTRVJTCgktIGNoYW5nZWQgcXVlcnlfa2V5X2luZm9fcmVxdWVzdCB0byByZXR1cm4gdGhlIGtleSBuYW1lIHRvbyAoTnRRdWVyeUtleSBuZWVkcyB0aGlzKQoJLSB0aGUgcm9vdGtleXMgKE1BQ0hJTkUgYW5kIFVTRVIpIGRvIGhhdmUgbmFtZXMKCgkqIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQXZvaWQgZGVsZXRpbmcgb2YgdGhlIGRlZmF1bHQgMXgxIGJpdG1hcCBmb3IgbWVtb3J5IERDcy4KCgkqIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi91c2VyMzIuc3BlYywgdG9vbHMvYnVpbGQuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9kaXNwbGF5L2Rpc3BsYXkuc3BlYywgZGxscy9tb3VzZS9tb3VzZS5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGlmMTYzMi9idWlsdGluLmM6CglCdWlsdC1pbiBETExzIHJlc291cmNlcyBhcmUgbm93IHNwZWNpZmllZCBpbiBzcGVjIGZpbGUuCglSZW1vdmVkIHVubmVjZXNzYXJ5IGZsYWdzIGluIGJ1aWx0LWluIERMTHMgdGFibGVzLgoKCSogaWYxNjMyL2R1bW15LmMsIGlmMTYzMi9nZGkuc3BlYywgaWYxNjMyL3VzZXIuc3BlYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9iaWRpMTYuYzoKCUVyZXogVm9sayA8ZXJlekBnbXgubmV0PgoJQWRkZWQgc3R1YnMgZm9yIHNvbWUgQmlEaSBBUEkgZnVuY3Rpb25zLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJRml4ZWQgcmFjZSBjb25kaXRpb24gYmV0d2VlbiBhcHAgYW5kIHdpbmUgaW4gV0FWRV9tY2lQbGF5LgoKCSogY29udHJvbHMvbWVudS5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJU3RvcCBtZW51IHRyYWNraW5nIHdoZW4gY2xpY2tpbmcgb24gdGhlIG1lbnUgYmFyIHdoZXJlIHRoZXJlIGlzIG5vCgltZW51IGl0ZW0uCgoJKiB3aW4zMi9uZXdmbnMuYzogRXJleiBWb2xrIDxlcmV6QGdteC5uZXQ+CglCZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLgoKU2F0IEphbiAgOCAyMjoyNzozMSAyMDAwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglCYWNrZWQgb3V0IHNjYWxhYmxlIGJpdG1hcCBjaGFuZ2UgKGdpdmVzIHVnbHkgcmVzdWx0cykuCgoJKiBjb250cm9scy9tZW51LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0TWVudVN0cmluZyBzaG91bGQgcmV0dXJuIGl0ZW1sZW5ndGggb24gMCBuTWF4IG9yIE5VTEwgc3RyCglJbnNlcnRJdGVtIHBvcz0tMSwgZmxhZ3MgPSAwIHNob3VsZCBhcHBlbmQgaXRlbQoJKHRoYW5rcyB0byBTYW5kZXIgdmFuIExlZXV3ZW4pCgoJKiBpbmNsdWRlL2FzcGkuaCwgZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgZGxscy93bmFzcGkzMi93bmFzcGkzMi5zcGVjOgoJRGF2aWQgRWxsaW90dCA8ZGZlQG5ldG5pdGNvLm5ldD4KCVJlbW92ZWQgbWFsbG9jL2ZyZWUgaGFjayBhbmQgcmVwbGFjZWQgd2l0aCBIZWFwQWxsb2MvSGVhcEZyZWUgdGhyb3VnaG91dCBjb2RlLgoJQWRkZWQgY3JpdGljYWwgc2VjdGlvbiBhcm91bmQgY29kZSBkZWFsaW5nIHdpdGggZ2xvYmFsIHZhcmlhYmxlcy4KCUFkZGVkIGEgZmV3IGNvbW1lbnRzIGFib3V0IGhvdyBBU1BJIGlzIHN1cHBvc2VkIHRvIHdvcmsuCglDb3B5IHNlbnNlIGluZm8gaW50byB0aGUgY29ycmVjdCBwbGFjZSAocmlnaHQgYWZ0ZXIgdGhlIGZpeGVkIDE2LWJ5dGUgQ0RCKS4KCU5vdyByZXR1cm5zIHRhcmdldCBzdGF0dXMgKG1hbnkgV2luZG93cyBhcHBzIHdvbid0IGV2ZW4gbG9vayBhdCB0aGUKCXNlbnNlIGFyZSB1bmxlc3MgdGhleSBnZXQgYW4gZXJyb3IgY29kZSkuCglBZGRlZCBTQ19BQk9SVF9TUkIgRklYTUUuCglBZGRlZCBTQ19HRVRfRElTS19JTkZPIHBsYWNlIGhvbGRlciBmb3IgY2xhcml0eS4KCVVwZGF0ZWQgTGludXggU0cgaW50ZXJmYWNlIHN0cnVjdHVyZSB0byBpbmNsdWRlIG5ldyBrZXJuZWwgMi4yCglzdGF0dXMgZmllbGRzLgoKCSogTWFrZS5ydWxlcy5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMb29rIGZvciBvdXIgaGVhZGVyIGZpbGVzIGZpcnN0LCB0aGVuIGZvciBzeXN0ZW1zIGhlYWRlcnMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRoZSBuZXcgZmlsZWRpYWxvZyBzdHVmZiBkb2VzIG5vdCBoYW5kbGUgdGVtcGxhdGUuIFNvIGRvIG5vdCBjYWxsIGlmCgl0aGVyZSBhcmUgYW55LgoKCSogd2luZG93cy93aW5wb3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUF2b2lkIHByb2JsZW1zIGR1cmluZyBjaGFuZ2luZyB0aGUgWi1vcmRlciBpZiB0aGUgd2luZG93IGFuZCB0aGUKCXdpbmRvdyB0byBpbnNlcnQgYWZ0ZXIgYXJlIHRoZSBzYW1lLgoKCSogbGlidGVzdC9leHBhbmQuYywgbGlidGVzdC9oZWxsbzUuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZW1vdmVkIEdVSSBqdW5rIGZyb20gZXhwYW5kLmMsIHNvIHlvdSBjYW4gdXNlIGl0IGluIGNvbW1hbmRsaW5lIG1vZGUuCglGaXhlZCBoZWxsbzUuYy4KCgkqIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgc3VwcG9ydCBmb3IgYXV0byBhbGxvY2F0ZWQgb3JkaW5hbHMKCS0gRml4ZWQgdmFyYXJncyAoMTYgYml0KSBidWcKCS0gTWlub3IgZml4ZXMKCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGFsaWdubWVudCBwcm9ibGVtIHdpdGggVkVSU0lPTl9JTkZPIG1lbWJlcnMuCgpXZWQgSmFuICA1IDAzOjI0OjUyIDIwMDAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgJFhfRVhUUkFfTElCUyB0byBhbnkgWCBkZXBlbmRlbmQgY2hlY2tzIG9yIHRoZXkgd2lsbCBmYWlsIGlmIHNvbWUKCW9mIHRoZSAkWF9FWFRSQV9MSUJTIGFyZSByZXF1aXJlZC4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNYWRlIEZpbGxSZWN0IGJlaGF2ZSBsaWtlIGl0IGRvZXMgb24gV2luZG93cwoJLSBDbGVhbmVkIHVwIFdNX3ssSUNPTn1FUkFTRUJBQ0tHUk9VTkQgZGVmYXVsdCBoYW5kbGluZwoJLSBBZGRlZCBzb21lIGNvbW1lbnRzIG9uIGhvdyBXaW5kb3dzIGJlaGF2ZXMKCgkqIHdpbmRvd3Mvd2luaGVscC5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglDaGVjayBpZiB3aW5oZWxwIGlzIGFscmVhZHkgcnVubmluZzsgdXNlIHdpbmhscDMyLmV4ZSBvciB3aW5oZWxwLmV4ZQoJZGVwZW5kaW5nIG9uIHRoZSBlbXVsYXRlZCB2ZXJzaW9uLCByZWxhc2Ugd2luMTZsb2NrIGJlZm9yZSBjYWxsaW5nCglXaW5IZWxwQS4KCgkqIEFVVEhPUlMsIGluY2x1ZGUvYXV0aG9ycy5oOgoJVXBkYXRlZCBhdXRob3JzIGxpc3QgZnJvbSB0aGUgQ2hhbmdlbG9nLiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgeW91CgloYXZlIGJlZW4gbGVmdCBvdXQuCgoJKiBkb2N1bWVudGF0aW9uL2ZvbnRzOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRydWVUeXBlIGNsYXJpZmljYXRpb24uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGRldGVjdCBpZiB0aGUgT3BlbkdMIGltcGxlbWVudGF0aW9uIGRlZmluZXMgdGhlIHBhbGV0dGVkIHRleHR1cmUgYW5kCgkgIGNvbG9yIHRhYmxlIGV4dGVuc2lvbnMKCS0gc21hbGwgd2FybmluZyBmaXhlcwoJLSBmaXggdGhlIGRvdWJsZSAnLWxYeGY4NmRnYScgd2hlbiBoYXZpbmcgREdBIDIuMAoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBjb21tIGNsZWFuIHVwLCBtdWNoIG1vcmUgZXJyb3IgbWVzc2FnZXMsIG9ubHkgdXNlIFRJT0NPVVRRIGlmCglkZWZpbmVkIFt3aW5lLWJ1Z3MvMTA0XSwgdHJpZWQgaW1wbGVtZW50aW5nIFNldENvbW1UaW1lb3V0cy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gV2hlbiBwcm9jZXNzaW5nIFdNX1BBSU5UIG1lc3NhZ2VzLCB0aGUgdHJlZXZpZXcgbWlnaHQgc29tZXRpbWVzIHVzZQoJICB0aGUgd3JvbmcgaGRjLiBGaXhlZC4KCS0gQmV0dGVyIGNoZWNraW5nIGZvciBUUkVFVklFV19JTkZPICppbmZvUHRyPU5VTEwuCgkgIFNpbWlsYXIgdG8gY29kZSBpbiB0b29sYmFyLmMKCS0gT3RoZXIgc21hbGwgZml4ZXMgKHN1YmNsYXNzZWQgZWRpdCBjb250cm9sKS4KCgkqIGRlYnVnZ2VyL21zYy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogdW5pbml0aWFsaXplZCBwb2ludGVyIGNhdXNlZCBjcmFzaGVzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSB2aXJ1cyB3YXJuaW5nIGEgYml0IG1vcmUgZHJhc3RpYywgc2luY2Ugc29tZSBwZW9wbGUgZG9uJ3QgYmVsaWV2ZSB1cy4KCgkqIG1pc2MvY29tbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgY29tbSBjbGVhbiB1cCwgbXVjaCBtb3JlIGVycm9yIG1lc3NhZ2VzLCBvbmx5IHVzZSBUSU9DT1VUUSBpZgoJZGVmaW5lZCBbd2luZS1idWdzLzEwNF0sIHRyaWVkIGltcGxlbWVudGluZyBTZXRDb21tVGltZW91dHMuCgoJKiBmaWxlcy9wcm9maWxlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJbXBsZW1lbnQgV3JpdGVQcml2YXRlUHJvZmlsZVNlY3Rpb25BKCkuCgoJKiBkbGxzL250ZGxsL3J0bC5jOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJRml4IGZvciBjb21waWxlcnMgdGhhdCBkb24ndCBzdXBwb3J0ICdsb25nIGxvbmcnIChGcm9tIE92ZSBLYWF2ZW4pLgoKVHVlIEphbiAgNCAwMjo0MDoyMiAyMDAwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglNb3ZlZCBhbGxvY2F0aW9uIG9mIHRoZSBzb2NrZXQgcGFpciBmb3IgYSBuZXcgdGhyZWFkIHRvIHRoZSBzZXJ2ZXIuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzogTWFkZSBkZWJ1ZyBldmVudHMgYW5kIGNvbnRleHRzIHN0YW5kYXJkIG9iamVjdHMuCglVc2Ugc2xlZXBfb24gdG8gd2FpdCBvbiBkZWJ1ZyBldmVudHMuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglNYWRlIHNsZWVwX29uIHVzYWJsZSBmcm9tIGFsbCByZXF1ZXN0cy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1vcmUgTUlESSBtZXNzYWdlcyAxNjw9PjMyIG1hcHBpbmcuCglGaXhlcyBzb21lIGJ1Z3MgaW4gYnVmZmVycyBoYW5kbGluZyBhbmQgaW5kZXggZm9yIE1BUFBFUi4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgaWYxNjMyL3RodW5rLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgdGhlIG9ic29sZXRlZCBDYWxsVGltZUZ1bmNQcm9jLCBDYWxsRHJpdmVyUHJvYywKCUNhbGxEcml2ZXJDYWxsYmFjay4KCgkqIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS90aW1lLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVB1dCBiYWNrIHZpc2libGUgbWluaW11bSB0aW1lciByZXNvbHV0aW9uIHRvIDEgbXMuCglEZWNvcnJlbGF0ZSB0aGUgc2VydmljZSB0aHJlYWQgcmVzb2x1dGlvbiBmcm9tIHRoZSB1c2VyIHJlcXVpcmVkIHRpbWVyCgkmIHZpc2libGUgbWluaW11bSByZXNvbHV0aW9ucy4KCVJlbW92ZWQgdGhlIENhbGxiYWNrLlRpbWVGdW5jUHJvYyBlbnRyeS4KCgkqIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUdpdmUgKzArMCBhcyBhIGRlZmF1bHQgcG9zaXRpb24gZm9yIHRoZSBkZXNrdG9wIHdpbmRvdy4KCgkqIGRsbHMvd2lubW0vbW1pby5jOiBCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCUNvbnZlcnQgbW1pbyB0byBhbGxvdyB0aGUgdXNlIG9mIDMyIGJpdCBtbWlvIHByb2NlZHVyZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU21hbGwgZml4ZXMuCgoJKiBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYywgbWlzYy9yZWdpc3RyeS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hZHZhcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jb21jdGwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vZGJjMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVcGRhdGVkIHdpbmFwaV9jaGVjayB0byBoYW5kbGUgdGhlIG5ldyBhZGRpdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGluY2x1ZGUvbW9udGhjYWwuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBXTV9TSVpFIG1lc3NhZ2Ugc3VwcG9ydC4gT3B0aW1pemVkIGRyYXdpbmcgdG8gdXNlCglwcmVjYWxjdWxhdGVkIHNpemUgdmFsdWVzIHJhdGhlciB0aGFuIHJlY2FsY3VsYXRpbmcgZHVyaW5nIGVhY2ggY2FsbAoJb2YgTU9OVEhDQUxfUmVmcmVzaC4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvZGlhbG9nLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUNvcnJlY3RlZCBwYXJhbWV0ZXIgY291bnQgZm9yIERpYWxvZ0JveEluZGlyZWN0UGFyYW1Bb3JXLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglEb24ndCBzaG93IHRoZSBzY3JvbGxiYXIgaWYgU2V0U2Nyb2xsaW5mbygpIGlzIGNhbGxlZCB3aXRoIG9ubHkgdGhlCglTSUZfRElTQUJMRU5PU0NST0xMIGZsYWcuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGV4dHJhIFVTIGtleW1hcCB3aXRoIHRoZSBpbmZhbW91cyBwaGFudG9tIGtleS4KCgkqIE1ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVzZSBhIHVuaWZvcm0gbmFtaW5nIHNjaGVtZSBmb3IgZHJpdmVyIG1vZHVsZXMuCgoJKiBpbmNsdWRlL2RyaXZlci5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUVuY2Fwc3VsYXRlZCBXaW5lIGludGVybmFsIGRhdGEgaW50byBhbiBpZmRlZiBfX1dJTkVfXy4KCgkqIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvLmN2c2lnbm9yZToKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgdGhlIDE2IGJpdCBkcml2ZXIgZnVuY3Rpb25zIGNhbGxvdXQgaW50byB0aGUgZGlyLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBXT0RNX0JSRUFLTE9PUCBtZXNzYWdlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBleHRyYW5lb3VzIEVSUiBtZXNzYWdlLgoKCSogZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIE1DSV9JTkZPX0NPUFlSSUdIVCBhbmQgTUNJX0lORk9fTkFNRS4KCgkqIGRlYnVnZ2VyL2hhc2guYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVc2UgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIHdoaWxlIHNlYXJjaGluZyBmb3IgbmV3IG1vZHVsZXMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHNwZWMgZW50cnkgZm9yIF9pdG9hLgoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJR2VuZXJhdGVkIGxhYmVscyBvZiByZXNvdXJjZSBuYW1lcyBtdXN0IGJlIHVuaXF1ZSB0aHJvdWdob3V0IHRoZQoJZ2VuZXJhdGVkIGNvZGUuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgkicmVzdWx0cCIgY2FuIGJlIE5VTEwgaW4gU2VuZE1lc3NhZ2VUaW1lb3V0KigpLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gcHJldmVudCBtZW0gbGVhayBvZiBDUlRETExfYWNtZGxuX2RsbAoJLSBiZXR0ZXIgYXJndW1lbnQgcGFyc2luZwoJLSBsYXN0IHhhcmd2IGVudHJ5IGhhcyB0byBiZSBOVUxMCgktIHJldHVybiB2YWx1ZSBpcyBlbnZpcm9ubWVudCBwb2ludGVyIGluc3RlYWQgb2YgTlVMTAoJLSBhZGRlZCBhIHNwZWMgZW50cnkgZm9yIGJzZWFyY2goKQoKU2F0IEphbiAgMSAyMjozODoyMSAyMDAwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9wcm9jZXNzLmg6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglJbXBsZW1lbnRlZCBXYWl0Rm9ySW5wdXRJZGxlLgoKCSogbWlzYy9kZGVtbC5jLCB3aW5kb3dzL3dpbi5jOgoJRml4ZWQgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MgKHNwb3R0ZWQgYnkgRnJhbmNvaXMgR291Z2V0KS4KCgkqIHJlbGF5MzIvd293MzIuc3BlYywgZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLCBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIHJlbGF5MzIvZGRyYXcuc3BlYywgcmVsYXkzMi9kaW5wdXQuc3BlYywgcmVsYXkzMi9nZGkzMi5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsIGRsbHMvZHBsYXl4L2RwbGF5LnNwZWMsIGRsbHMvaWNtcC9pY21wLnNwZWMsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjLCBkbGxzL2x6ZXhwYW5kL2x6MzIuc3BlYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOgoJTWFrZSB1c2Ugb2YgYXV0b21hdGljIG9yZGluYWwgYWxsb2NhdGlvbi4KCgkqIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jOgoJTW92ZWQgcG9sbCBoYW5kbGluZyB0byB0aGUgZ2VuZXJpYyBwYXJ0IG9mIHRoZSBzZXJ2ZXIgb2JqZWN0cy4KCUZpeGVkIGJ1c3kgd2FpdGluZyBvbiBQT0xMRVJSIGV2ZW50cy4KCU1lcmdlZCBzdHJ1Y3QgY2xpZW50IGludG8gc3RydWN0IHRocmVhZC4KCk1vbiBEZWMgMjcgMDU6MjY6MDEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL3Byb2Nlc3MuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGdyYXBoaWNzL3R0eWRydi9iaXRtYXAuYywgbWlzYy9kZGVtbC5jLCBtaXNjL3ZlcnNpb24uYzoKCUNvc21ldGljcy4KCgkqIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1pc2MvbHN0ci5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2Mvd2luc29jay5jLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUJ1ZmZlciBvdmVyZmxvd3MgYW5kIHN0cm5jcHkgZml4ZXMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVBFX0ZpbmRFeHBvcnRlZEZ1bmN0aW9uOiB1c2UgYSBiaW5hcnkgc2VhcmNoIGZvciBmdW5jdGlvbiBuYW1lcy4KClN1biBEZWMgMjYgMjM6MTI6MzggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWM6CglGaXhlZC9jb21tZW50ZWQgb3V0IGR1cGxpY2F0ZSBlbnRyeSBwb2ludCBuYW1lcy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgYXV0b21hdGljIG9yZGluYWwgYWxsb2NhdGlvbi4KCU91dHB1dCBsaXN0IG9mIGZ1bmN0aW9uIG5hbWVzIGluIHNvcnRlZCBvcmRlci4KCUFkZGVkIHN1cHBvcnQgZm9yIG5hbWVsZXNzIChvcmRpbmFsLW9ubHkpIGVudHJ5IHBvaW50cy4KCUNsZWFuZWQgdXAgZXJyb3IgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvdGV4dC5jLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBncmFwaGljcy9wc2Rydi9mb250LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGdyYXBoaWNzL3BzZHJ2L3RleHQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvdHR5ZHJ2L3RleHQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBncmFwaGljcy93aW4xNmRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTW92ZSBEQ0Z1bmNzIEV4dFRleHRPdXQgYW5kIEdldFRleHRFeHRlbnRQb2ludCB0byBVbmljb2RlLgoJTWFwIGEgZmV3IFVuaWNvZGUgY2hhcnMgdG8gdGhlIGZpcnN0IDB4ZmYgaW4gcHNkcnYuCglEb24ndCBleHBlY3QgeDExZHJ2IHRvIGRpc3BsYXkgVW5pY29kZSBjaGFycyB5ZXQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgbWVtb3J5L3N0cmluZy5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJV3JhcHBlZCBzb21lIHN0cmluZ3MgaW4gYSBkZWJ1Z3N0cl8qIGNhbGwuCglSZXBsYWNlZCBzb21lIGNhbGxzIHRvIGRlYnVnc3RyX3thLHd9IGJ5IGRlYnVnc3RyX3thLHd9bi4KCVJlbW92ZWQgcmVkdW5kYW50ICdMJ3MgZm9yIFVuaWNvZGUgc3RyaW5ncy4KCVRyaWVkIHRvIGhhcm1vbml6ZSB0aGUgdHJhY2VzIGEgbGl0dGxlIGJpdC4KCgkqIG1pc2MvZGVidWdzdHIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglkZWJ1Z3N0cl93IG5vdyByZXR1cm5zIHNvbWV0aGluZyBsb29raW5nIGxpa2UgJ0wieHh4eCIuLi4nCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRklMRURMRzk1X0hhbmRsZUN1c3RvbURpYWxvZ01lc3NhZ2VzOgoJLSBmb3IgdGhlIHRocmVlIGhhbmRsZWQgbWVzc2FnZXMgd2UgbXVzdCByZXR1cm4gdGhlIHJlcXVpcmVkIGJ1ZmZlciBzaXplCgktIGZvciBDRE1fR0VURklMRVBBVEggcGF0aHMgbGlrZSAiZGlyXGZpbGUiIHdlcmUgaGFuZGxlZCBpbmNvcnJlY3RseQoJLSBmaXhlZCBtdWx0aXBsZSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cy4KCUZJTEVETEc5NV9Pbk9wZW46IGZpeGVkIGEgdXNlIG9mIHN0cm5jcHkgd2l0aG91dCAnXDAnLgoJRklMRURMRzk1X1NIRUxMX05ld0ZvbGRlcjogdGhlIHNpemUgb2YgbHBzdHJDYXB0aW9uIHdhcyBpbmNvcnJlY3QKCWxlYWRpbmcgdG8gYSBidWZmZXIgb3ZlcmZsb3cuCgpTYXQgRGVjIDI1IDIyOjU4OjU5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBwbGF5aW5nIG1vcmUgcmVjb3JkIHR5cGVzIChzdGlsbCBtb3JlIHRvIGNvbWUpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUJldHRlciBzdXBwb3J0IHZlcnkgbG9uZyBzdHJpbmdzIGJ5IGF2b2lkaW5nIHRvIGNvcHkgdGhlbSBpbiBhIGZpeGVkCglzaXplIGJ1ZmZlciAob25lIGV4Y2VwdGlvbiBwYXJ0bHkgcmVtYWluczogY2FsbGJhY2sgc3RyaW5ncykuCglSYWlzZSB0aGUgYnVmZmVyIHNpemUgdG8gNTEyIGNoYXJhY3RlcnMuCglNZXJnZSB0aGUgaGFuZGxpbmcgb2YgaXRlbSAwIGFuZCBvdGhlciBpdGVtcyB0b2dldGhlciBpbiBHZXRJdGVtQSB0bwoJcmVkdWNlIGNvZGUgZHVwbGljYXRpb24uCgoJKiBncmFwaGljcy9wc2Rydi9iaXRtYXAuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IFBTRFJWX1N0cmV0Y2hESUJpdHMgZm9yIG5vbi1pbnRlZ2VyIGJ5dGUgc3JjIHdpZHRocyAoMSAmIDRicHApLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2FzdCB0aGUgdW5zaWduZWQgaW50IHRvIHNpZ25lZCwgb3IgTkVBUl9NQVRDSCB3aWxsIG5vdCB3b3JrLgoKCSogbWlzYy9jZHJvbS5jLCBtc2Rvcy9pbnQyZi5jLCBpbmNsdWRlL2Nkcm9tLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZpcnN0L2xhc3QgcGxheWFibGUgZnJhbWUgcmVmZXJlbmNpbmcuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJvZ3VzIHZhbHVlcyBpbiBNQ0lfU1RBVFVTIGhhbmRsaW5nIChwb3NpdGlvbiAmIGxlbmd0aCBvZiB0cmFja3MpLgoJQWRkZWQgc3VwcG9ydCBmb3IgTUNJX0lORk8gb24gTUVESUFfVVBDICYgTUVESUFfSURFTlRJVFkgY29tbWFuZHMuCgoJKiB3aW5kb3dzL3JlY3QuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUZXN0IHBvaW50ZXJzIHBhc3NlZCB0byBjb3B5cmVjdCBmb3IgTlVMTC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVzdG9yZSBlcnJvbmVvdXNseSBkZWxldGVkIGxpbmVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglEUEFfRGVsZXRlUHRyIHdhcyByZXNpemluZyB0aGUgYXJyYXkgdG8gYSB0b28gc21hbGwgc2l6ZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUF2b2lkIGluZmluaXRlIGxvb3AgaW4gV0lOUE9TX0ZpbmRJY29uUG9zIGlmIHRoZSB3aWR0aCBvZiB0aGUgcGFyZW50CgljbGllbnQgYXJlYSBpcyBsZXNzIHRoYW4gdGhlIGljb24gc3BhY2luZy4KCgkqIGRvY3VtZW50YXRpb24vbGludXgtZmF0LXBlcm1pc3Npb25zOgoJU3RldmVuIEVsbGlvdHQgPGVsbGlvdHNsQG1pbmRzcHJpbmcuY29tPgoJQWRkZWQgYSBkb2N1bWVudCB0aGF0IGRlc2NyaWJlcyBjb25maWd1cmluZyBGQVQgZmlsZXN5c3RlbSBwZXJtaXNzaW9ucwoJZm9yIFdpbmUuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTlQgYWxsb2NhdGVzIG9uZSBwYWdlIGFzIFRFQi4gU29tZSBuYXRpdmUgTlQtZGxscyBhcmUgdXNpbmcgdGhpcy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvbid0IHNraXAgdXNhYmxlIFggZm9udHMuIEFkZCBzdXBwb3J0IGZvciBrb2k4IGZvbnRzLgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1vZGlmaWVkIEljbXBDbG9zZUhhbmRsZSBhbmQgSWNtcFNlbmRFY2hvUmVxdWVzdCBzbyB0aGF0IHdlIGRvbid0CgljcmFzaCBpZiB0aGUgaGFuZGxlIGlzIElOVkFMSURfSEFORExFX1ZBTFVFLgoKCSogaW5jbHVkZS93aW5kZWYuaDogU3RldmVuIEVsbGlvdHQgPGVsbGlvdHNsQG1pbmRzcHJpbmcuY29tPgoJQ2hhbmdlZCB0aGUgInRoaXNfaXNfYV9zeW50YXhfZXJyb3IiIGVycm9yIG1lc3NhZ2UgdG8gYSBtb3JlIHNwZWNpZmljCgllcnJvciBtZXNzYWdlLgoKTW9uIERlYyAyMCAwNDoxNDo0OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3R0eWRydi9ncmFwaGljcy5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3BhdGguaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU1vdmUgQmV6aWVyIGNvZGUgb3V0IG9mIHgxMWRydiBpbnRvIGNvbW1tb24gR0RJIGNvZGU7IGlmIGFueSBkcml2ZXIKCWRvZXMgbm90IGltcGxlbWVudCBQb2x5QmV6aWVyW1RvXSB0aGUgY3VydmUgaXMgYXBwcm94aW1hdGVkIHRvIGxpbmVzCglhbmQgZHJhd24gd2l0aCBQb2x5bGluZS4KCUltcGxlbWVudCBtYW55IEdESS1QYXRoIHJlY29yZGluZyBmdW5jdGlvbnMgKGF0IGxlYXN0IHRoZSB3aW45eCBzdWJzZXQpLgoJSW1wbGVtZW50IEZsYXR0ZW5QYXRoIGFuZCBGaWxsUGF0aC4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJRml4ZWQgb3JkaW5hbCBudW1iZXJpbmcgYW5kIGFkZGVkIG5ldyBzcGVjIHN0dWIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWFkZGVkIFhwbSBhdXRvY29uZiBjaGVja3MuCgoJKiBvbGUvb2xlMm5scy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRW51bVN5c3RlbUxvY2FsZXNBIHNob3VsZCBsb29rIGZvciByZWdpc3RyeSB2YWx1ZXMsIG5vdCBzdWJrZXlzLgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbWFsbCBmaXggdG8gZ2V0IEdFVF9ERVZJQ0VfVFlQRSB3b3JraW5nICh2ZXJpZmllZCBieSBEYW4gS2VnZWwpLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUNvcnJlY3RlZCBiYWNrZ3JvdW5kIGNvbG9yIGFuZCBmaXhlZCBsZWFraW5nIEdESSBicnVzaC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglOVCBsb2FkZXI6IGRvbid0IHN0b3AgbG9hZGluZyBhIGhpdmUgd2hlbiBhbiBlcnJvciBvY2N1cnMuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVBsYXlNZXRhRmlsZSBhbmQgRW51bU1ldGFGaWxlIHNob3VsZCB3b3JrIGlmIHRoZSBoZGMgaXMgYQoJKGVuaCltZXRhZmlsZSBEQy4KCgkqIFJFQURNRTogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJVXBkYXRlZCB0aGUgRnJlZUJTRCBub3RlcywgdGhlIExEVCBwYXRjaCBmaW5hbGx5IG1hZGUgaXQgaW50byAtY3VycmVudC4KCgkqIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglJZiBscFRpdGxlPT1OVUxMIGFuZCBjYkJ1Zj09MCB0aGVuIHdlIG11c3QgcmV0dXJuIHRoZSByZXF1aXJlZCBidWZmZXIKCXNpemUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJU2hhdW4gTW9ycmlzIDxzaGF1bkBibHVlbmVwdHVuZS5jb20+CglJbXBsZW1lbnRlZCBfVHJhY2tNb3VzZUV2ZW50IGZvciB0aGUgVE1FX0xFQVZFIGZsYWcuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkcyByZXNvbHV0aW9uIC8gZGVwdGggc3dpdGNoaW5nIHdpdGggREdBIDIuMC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIERlYyAxMiAyMToyODo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeGVkIGhhbmRsaW5nIG9mIERHQTIuMCBrZXlib2FyZCBldmVudHMuCgoJKiBkbGxzL21zYWNtMzIvZHJpdmVyLmMsIGRsbHMvbXNhY20zMi9pbnRlcm5hbC5jLCBkbGxzL21zYWNtMzIvbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20zMi93aW5lYWNtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHRoZSBhYmlsaXR5IHRvIG9wZW4gc2V2ZXJhbCBzdHJlYW1zIG9uIHRoZSBzYW1lIGRyaXZlci4KCUFkZGVkIGEgZmV3IGFjbU1ldHJpY3Mgb3B0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTeXNTdHJpbmdMZW4gY2FuIGdldCBhIE5VTEwgcG9pbnRlciAoYW5kIHNoYWxsIHJldHVybiAwKS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgdXNpbmcgbm90aWZpY2F0aW9uIGZvciBkZXRlY3Rpbmcgd2hlbiBhIFdBVkVIRFIgaGFzIGJlZW4gcGxheWVkCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUVuaGFuY2VkIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHBsYXliYWNrIHRocmVhZCBhbmQgc3RvcC9jbG9zZSBjb21tYW5kcwoJTm93IHVzaW5nIG5vdGlmaWNhdGlvbiBmb3IgZGV0ZWN0aW5nIHdoZW4gYSBXQVZFSERSIGhhcyBiZWVuIHBsYXllZAoKCSogY29udHJvbHMvY29tYm8uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglDb21ib0JveCBzaG91bGQgbm90IHNlbmQgYm9ndXMgbWVzc2FnZXMgdG8gZWRpdCBidWRkeSBhbmQgdG8gaXRzZWxmLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUZpeGVkIEdldFNob3J0UGF0aE5hbWVBLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTW9zZXMgRGVKb25nIDxkZWpvbmdAY3MudW1uLmVkdT4KCUZpeGVkIG1pc3NpbmcgbGlid2luZS5zbyBzeW1saW5rIGR1cmluZyBpbnN0YWxsLiBTZXQgdGhlIHJ1bnRpbWUKCWxpbmtlciBwYXRoLgoKCSogd2luZG93cy9kaWFsb2cuYzogTXVyYWxpIFBhdHRhdGhlCglHZXROZXh0RGxnR3JvdXBJdGVtOiBuZWVkcyB0byBjaGVjayB0aGUgY29udHJvbCBwYXJlbnQgaXMgdGhlIG1haW4gZGlhbG9nLgoJR2V0TmV4dFRhYkl0ZW06IG1ha2Ugc3VyZSB0aGlzIGNvbnRyb2wgaXMgdmlzaWJsZSBhbmQgbm90IGRpc2FibGVkLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgY21kIGxpbmUgbGVuZ3RoIGNhbGN1bGF0aW9uLgoKCSogaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy94MTFkcnYvZXZlbnQuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIHN1cHBvcnQgb2YgREdBLTIuMCBldmVudHMKCS0gZml4ZWQgdGhlIGxlYXZpbmcgb2YgREdBLTIuMCBtb2RlCgoJKiBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVudS5oLCB3aW5kb3dzL3dpbnByb2MuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJbiB3aW4zMiBhIFdNX01FTlVTRUxFQ1QgbWVzc2FnZSBzaG91bGQgY29udGFpbiB0aGUgcG9zaXRpb24gd2hlbiB0aGUKCWl0ZW0gcmVmZXJzIHRvIGEgc3VibWVudSwgbm90IHRoZSBzdWJtZW51J3MgaGFuZGxlIGFzIGluIHdpbjE2LgoKCSogZmlsZXMvdGFwZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBhcmcgdHlwZXMgb2YgRklYTUVzLgoKCSogd2luZG93cy9tZGkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgcGFzc2VkIGludmFsaWQgd2luZG93IGhhbmRsZSBpbiBEZWZNRElDaGlsZFByb2MqLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggbm8uIG9mIGFyZ3VtZW50cyBpbiBhIFdBUk4gc3RhdGVtZW50LgoKCSogb2JqZWN0cy90ZXh0LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsb3dzIERyYXdUZXh0KDE2fEF8VykgdG8gZ2V0IGEgTlVMTCBzdHJpbmcgYXMgcGFyYW1ldGVyLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZ3JhcGhpY3MvdHR5ZHJ2L29iamVjdHMuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogY29udHJvbHMvbGlzdGJveC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2MvdmVyc2lvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIDIgdXNlbGVzcyBpbmNsdWRlIHdpbnZlcnNpb24uaAoJRG8gbm90IG1ha2UgYXV0b2RldGVjdGVkIHZlcnNpb24gZml4IG9uIGZpcnN0IGNhbGxzIGlmIGl0IGlzIFdpbjMxLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgU3RyTkNweUEsIFN0ck5DcHlXLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTWVzc2FnZSB0cmFuc2xhdGlvbiBXTV9DUkVBVEUgZml4ZWQuCgpTYXQgRGVjIDExIDIzOjU2OjQ3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb2RiYzMyLy5jdnNpZ25vcmUsIGRsbHMvb2RiYzMyL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3NxbC5oLCBpbmNsdWRlL3NxbGV4dC5oLCBpbmNsdWRlL3NxbHR5cGVzLmgsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCVhpYW5nIExpCglJbXBsZW1lbnRhdGlvbiBvZiBhIHByb3h5IE9EQkMzMiBkbGwuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJS2FpIE1vcmljaCA8a2FpLm1vcmljaEBiaWdmb290LmRlPgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzeXN0cmF5IHN1cHBvcnQuCglTd2FsbG93IHRoZSB3aW5kb3dzIHN5c3RyYXkgaWNvbnMgaW50byBrcGFuZWwgc3lzdHJheSBpZiBLREUvS1dNIGlzCglydW5uaW5nLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmUuaW5pOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBsb2FkZXIgZm9yIE5UIHJlZ2lzdHJ5IGZpbGVzLgoKCSogZGxscy9udGRsbC9udC5jLCBpbmNsdWRlL250c2VjYXBpLmgsIGluY2x1ZGUvd2lubnQuaCwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVN0dWJzIGZvciBMc2FGcmVlTWVtb3J5LCBMc2FRdWVyeUluZm9ybWF0aW9uUG9saWN5LCBMc2FDbG9zZS4KCVNtYWxsIGZpeGVzLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBJbXBsZW1lbnRlZCBHZXRFbmhNZXRhRmlsZVBhbGV0dGVFbnRyaWVzCgktIEFkZGVkIGZpeG1lIHN0dWJzIGZvciBTZXRNZXRhUmduIGFuZCBHZXRNZXRhUmduCgktIEFkZGVkIHN1cHBvcnQgZm9yIHBsYXlpbmcgc2V2ZXJhbCBlbmhhbmNlZCBtZXRhZmlsZSByZWNvcmRzCgktIEFkZGVkIGJlZ2lubmluZ3Mgb2YgaW1wbGVtZW50YXRpb24gZm9yIHBsYXlpbmcgdGhlIHJlc3Qgb2YgdGhlCgkgIGVuaGFuY2VkIG1ldGFmaWxlIHJlY29yZHMKCgkqIGdyYXBoaWNzL3R0eWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvdHR5ZHJ2L2JpdG1hcC5jLCBncmFwaGljcy90dHlkcnYvYnJ1c2guYywgZ3JhcGhpY3MvdHR5ZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3R0eWRydi9kYy5jLCBncmFwaGljcy90dHlkcnYvZGliLmMsIGdyYXBoaWNzL3R0eWRydi9mb250LmMsIGdyYXBoaWNzL3R0eWRydi9ncmFwaGljcy5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvb2JqZWN0cy5jLCBncmFwaGljcy90dHlkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3R0eWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3R0eWRydi9wZW4uYywgZ3JhcGhpY3MvdHR5ZHJ2L3RleHQuYywgaW5jbHVkZS90dHlkcnYuaCwgd2luZG93cy90dHlkcnYvbWFpbi5jLCB3aW5kb3dzL3R0eWRydi9tb25pdG9yLmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglJbXByb3ZlZCB0aGUgVFRZIGRyaXZlci4KCgkqIGZpbGVzL2ZpbGUuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJUmV0dXJuIGFuIGVycm9yIGlmIGxwT3ZlcmxhcHBlZCBpcyBwcm92aWRlZCB0byBSZWFkRmlsZSAvIFdyaXRlRmlsZS4KCgkqIG1pc2Mvd3NwcmludGYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgY29uZnVzZSB0aGUgMCBmaWxsIG1hZ2ljIG9mIHdzcHJpbnRmIHdpdGggdGhlICIweCIgaGV4IHByZWZpeC4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJVGhlIHdhdmVtYXAgZHJpdmVyIHdhc24ndCBwYXNzaW5nIHRoZSBjYWxsYmFjayB0eXBlIHRvIHRoZQoJRHJpdmVyQ2FsbGJhY2sgcm91dGluZSBjb3JyZWN0bHkuCgoJKiBmaWxlcy90YXBlLmM6IEFkZGVkIG1pc3NpbmcgV0lOQVBJcy4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZiB3ZSBoYXZlIHJlZ2lzdHJ5IGVudHJpZXMsIHVzZSB0aGVtLiBOZXZlciBtaW5kIHdoaWNoIHZlcnNpb24gd2UKCWF1dG9kZXRlY3RlZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgbWlzYy9wb3J0LmMsIHRvb2xzL2JpbjJyZXMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2Rpc3BsYXkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTZhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzJhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGxvYWRlci9uZS9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEFkZGVkIG1pc3NpbmcgJ3JldHVybicgc3RhdGVtZW50LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTbWFsbCBmaXhlcy4KCkZyaSBEZWMgMTAgMDM6NDc6MTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcXVldWUuYywgY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lc3NhZ2UuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUGVyZm9ybSAxNi8zMkEvMzJXIG1lc3NhZ2UgbWFwcGluZyBmb3IgcG9zdGVkIG1lc3NhZ2VzLgoKCSogZmlsZXMvTWFrZWZpbGUuaW4sIGZpbGVzL3RhcGUuYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUFkZGVkIHN0dWJzIGZvciB0aGUgV2luTlQgdGFwZSBiYWNrdXAgZnVuY3Rpb25zLgoKCSogZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3NvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQYXJzZSBDb2RlVmlldyB0eXBlL3N5bWJvbCBpbmZvIHdpdGggMzItYml0IHR5cGUgaW5kaWNlcy4KCUFkZGVkIChwYXJ0aWFsKSBzdXBwb3J0IGZvciBWQyA1LzYgLlBEQiBmaWxlcy4KCUZpeGVkIHRyZWF0bWVudCBvZiBzb3VyY2UgZmlsZSBuYW1lcyBjb250YWluaW5nIHBhdGguCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJRml4ZWQgb2ZmLWJ5LW9uZSBlcnJvci4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogU2hvdyBtYWluIHdpbmRvdyBpZiBDcmVhdGVQcm9jZXNzIHdhcyBjYWxsZWQgd2l0aG91dCB0aGUKCVNUQVJURl9VU0VTSE9XV0lORE9XIGZsYWcuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgUEVfVW5sb2FkTGlicmFyeSgpLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGRvIG5vdCBsb29zZSBpbml0aWFsIGF1dG8tcmVwZWF0IHN0YXR1cyB3aGVuIGFjcXVpcmluZyB0aGUga2V5Ym9hcmQgbW9yZQoJICB0aGFuIG9uZSB0aW1lCgktIHN1cHBvcnQgb2YgRGlyZWN0WCA3J3MgRElNT1VTRVNUQVRFMiBzdHJ1Y3R1cmUKCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAbHN0LmRlPgoJQWRkZWQgTnRQb3dlckluZm9ybWF0aW9uIHN0dWIuCgoJKiBkbGxzL29sZTMyL2JpbmRjdHguYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglUcmFuc2ZlciBvbmx5IGNiU3RydWN0IHNpemUgaW4gQmluZEN0eEltcGxfUyhHKWV0T3B0aW9ucy4KCldlZCBEZWMgIDggMDM6NTY6MzQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9uZXdmbnMuYywgbXNkb3MvZG9zbWVtLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9mb250LmMsIG9sZS9vbGUybmxzLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9pbnN0ci5jLCBtZW1vcnkvbG9jYWwuYywgbWlzYy9yZWdpc3RyeS5jLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGlmMTYzMi90aHVuay5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgY29udHJvbHMvZWRpdC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1ha2UgdXNlIG9mIHRoZSBERUZBVUxUX0RFQlVHX0NIQU5ORUwgd2hlcmUgYXBwcm9wcmlhdGUuCglVc2UgdGhlIGRlZmF1bHQgdmVyc2lvbiBvZiBGSVhNRSwgRVJSLCBXQVJOLCBUUkFDRSBmb3IgdGhlIGRlZmF1bHQKCWNoYW5uZWwuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURlbGF5IHNlbmRpbmcgZGVidWcgZXZlbnRzIHVudGlsIHByb2Nlc3MgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQsIGFkZGVkIGNoYXB0ZXIgb24gY29uZmlndXJhdGlvbiBhbmQgYXJjaGl0ZWN0dXJlLgoKCSogZGxscy93aW5tbS9tbWlvLmM6IEJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJLSBGaXggTU1JT197T3BlbixSZW5hbWV9IHRvIGNoZWNrIHRoZSBmaWxlbmFtZSAob2YgdGhlIGZvcm0KCSAgZmlsZS5leHQrQUJDKSBmb3IgdGhlIGNvcnJlY3QgbW1pbyBwcm9jZWR1cmUgdG8gdXNlLgoJLSBtbWlvU3RyaW5nVG9GT1VSQ0Mgbm93IGNvbnZlcnRzIHRvIHVwcGVyY2FzZSBpZiBhc2tlZCB0bywgYW5kIGhhbmRsZXMKCSAgc3RyaW5ncyBvZiBsZW5ndGggPCA0LgoKCSogY29udHJvbHMvZWRpdC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUZpeCBwcm9ibGVtIHdpdGggRU5fVVBEQVRFIG5vdGlmaWNhdGlvbiBzZW50IGJ5IGVkaXQgY29udHJvbC4KCk1vbiBEZWMgIDYgMDE6MjA6MDEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbW91c2UvLmN2c2lnbm9yZSwgZGxscy9tb3VzZS9NYWtlZmlsZS5pbiwgZGxscy9tb3VzZS9tb3VzZS5zcGVjLCBkbGxzL21vdXNlL21vdXNlX21haW4uYywgZGxscy9tb3VzZS9tb3VzZXJjLnJjLCBkb2N1bWVudGF0aW9uL3Jlc291cmNlcywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9kaXNwbGF5LnNwZWMsIGlmMTYzMi9tb3VzZS5zcGVjLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGlzcGxheS8uY3ZzaWdub3JlLCBkbGxzL2Rpc3BsYXkvTWFrZWZpbGUuaW4sIGRsbHMvZGlzcGxheS9kaXNwLnJjLCBkbGxzL2Rpc3BsYXkvZGlzcGxheS5zcGVjLCBkbGxzL2Rpc3BsYXkvZGlzcGxheV9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIC5yYyBmaWxlIHN1cHBvcnQgZm9yIFdpbjE2IE5FIG1vZHVsZXMuCglNb3ZlZCBkaXNwbGF5LmMgYW5kIG1vdXNlLmMgdG8gc2VwYXJhdGUgZGxsIGRpcmVjdG9yaWVzLgoKCSogY29udHJvbHMvY29tYm8uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBbGxvdyB0byBkZXNlbGVjdCBhbGwgaXRlbXMgYnkgc2VuZGluZyBDQl9TRVRDVVJTRUwoLTEpIHRvIHRoZSBjb21iby4KClN1biBEZWMgIDUgMjM6NTQ6MDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZGMuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9kYy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZW5obWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3BhdGguaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBzZXZlcmFsIGJ1Z3MgaW4gZ2RpIHBhdGggaGFuZGxpbmcuCglBZGRzICpQYXRoIGZ1bmN0aW9ucyB0byBkYyBmdW5jcyB0YWJsZSArIGFkZCBFbmhNZXRhRmlsZSByZWNvcmRpbmcuCglTZXBhcmF0ZSBvdXQgUG9seWxuZS9Qb2x5bGluZVRvIGFuZCBQb2x5QmV6aWVyL1BvbHlCZXppZXJUbyBpbiBkYwoJZnVuY3MgdGFibGUgdG8gZW5hYmxlIHByb3BlciBlbmhtZXRhZmlsZSByZWNvcmRpbmcuCglUaGUgY3VycmVudCBwb3NpdGlvbiB1cGRhdGUgaW4gKlRvIGZ1bmN0aW9ucyBpcyBub3cgaGFuZGxlZCBieSB0aGUKCW1haW4gZnVuY3Rpb24gYW5kIG5vdCBpbiB0aGUgZHJpdmVycy4KCU1vdmUgVVNFUiBmdW5jdGlvbnMgZnJvbSBncmFwaGljcy9wYWludGluZy5jIC0+IHdpbmRvd3MvcGFpbnRpbmcuYwoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLnNwZWMsIGluY2x1ZGUvb2xlMnZlci5oLCBtaXNjL3ZlcnNpb24uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSB0aGUgT0xFIHZlcnNpb24gcmV0dXJuZWQgd2FzIHRvbyBsb3cKCS0gcmVuYW1lZCBPQUJ1aWxkVmVyc2lvbjE2IHRvIE9hQnVpbGRWZXJzaW9uMTYKCS0gc3BlbGxpbmcgZml4ZXMKCgkqIGZpbGVzL2RyaXZlLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUZpeCBHZXRDdXJyZW50RGlyZWN0b3J5QSBhbmQgVyB0byByZXR1cm4gdGhlIG5lZWRlZCBzcGFjZSBmb3IgdGhlIENXRCwKCWlmIHRoZSBidWZmZXIgc2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIHdpbmRvd3MvZGlhbG9nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlbW92ZSBoYWNrIGZvciBrZXlib2FyZCBtZXNzYWdlcyBpbiBkaWFsb2dzLgoKCSogd2luMzIvZGV2aWNlLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJU3R1YnMgZm9yIFZNTSBHZXREZW1hbmRQYWdlSW5mbyBmdW5jdGlvbiBhbmQgVldpbjMyICJHZXQgVk1DUEQgVmVyc2lvbiIuCglJbXBsZW1lbnRhdGlvbiBmb3IgVldpbjMyIEludDMxL0RQTUkgZGlzcGF0Y2ggY2FsbC4KCUZpeGVkICJkYW5nbGluZyBlbHNlIiBjb21waWxlciB3YXJuaW5nLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVdoZW5ldmVyIHdlIGRvIGFuIHN0cm5jcHkgd2Ugc2hvdWxkIG1ha2Ugc3VyZSB3ZSBwdXQgYSAnXDAnIGF0IHRoZSBlbmQKCW9mIHRoZSBidWZmZXIuCgoJKiBpbmNsdWRlL3Rvb2xoZWxwLmgsIG1pc2MvdG9vbGhlbHAuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBUaHJlYWQzMkZpcnN0L05leHQgc3R1YnMuCgoJKiBpbmNsdWRlL3RocmVhZC5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIHdpbmVzZXJ2ZXIncyBidWZmZXIgJiBidWZmZXJfc2l6ZSBhdCB0aGUgZW5kIG9mIFRFQiBzbyB0aGF0IElFCglkb2Vzbid0IG92ZXJ3cml0ZSB0aGVtLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtY2lJbmZvLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBXQVZFX0ZPUk1BVF9RVUVSWSBmbGFnIGluIHdvZE9wZW4uCgoJKiBkbGxzL21zYWNtMzIvc3RyZWFtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29ycmVjdGx5IGltcGxlbWVudCBBQ01fU1RSRUFNT1BFTkZfUVVFUlkgZmxhZyBpbiBhY21PcGVuU3RyZWFtLgoKCSogZGxscy93aW5tbS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBNQ0lfT1BFTiBjb21tYW5kIGZvciB0eXBlcyBsaWtlICJDREFVRElPIUg6Ii4KCgkqIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgZ3JhcGhpY3MvZGRyYXcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWVyZ2VkIF9hbGxfIGxwQ2xpcHBlciBpbnRvIGNvbW1vbl9zdXJmYWNlLgoJQWRkIE5VTEwgcHRyIGNoZWNrIHRvIFNldENsaXBwZXIuCglTb21lIG1vcmUgZGVidWcgb3V0cHV0LgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgbWlzYy9wb3J0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgdGhlIHJlYWwgZ2xpYmMgb3BlbnB0eSBpZiBwcmVzZW50LgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0eXBlZGVmIHRvIGluc3VyZSBjb21waWxhdGlvbiBvbiBhbGwgZ2NjJmVnY3MgdmVyc2lvbnMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgX2NvcHlfcmVnaXN0cnkoKS4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIG9sZS9ubHMvZXNhLm5scywgb2xlL25scy9lc2MubmxzLCBvbGUvbmxzL2VzZC5ubHMsIG9sZS9ubHMvZXNnLm5scywgb2xlL25scy9lc20ubmxzLCBvbGUvbmxzL2Vzbi5ubHMsIG9sZS9ubHMvZXNwLm5sczoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgc29tZSBjb25zdGFudHMgZm9yIFNwYW5pc2guCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQ2FsbCBEbGxFbnRyeVBvaW50IGZvciAqZXZlcnkqIHByb2Nlc3MgdGhhdCBsb2FkcyB0aGUgRExMLCBub3QKCWp1c3QgZm9yIHRoZSBmaXJzdCBvbmUuCglCeXBhc3MgMzItPjE2LT4zMiB0cmFuc2l0aW9uIHdoZW4gY2FsbGluZyBEbGxFbnRyeVBvaW50IG9mIGJ1aWx0LWluLgoKCSogaWYxNjMyL3VzZXIuc3BlYywgd2luZG93cy91c2VyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIFVTRVIuRGxsRW50cnlQb2ludCgpLgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgMTYtYml0IGluc3RlYWQgb2YgMzItYml0IFVzZXJTaWduYWxQcm9jIGVudHJ5IHBvaW50LgoJRG9uJ3QgbG9hZCBVU0VSMzIuRExMIHVubGVzcyByZXF1ZXN0ZWQgYnkgdGhlIHByb2dyYW0uCglCdWdmaXg6IFBhc3MgdGhlIGNvcnJlY3QgdGhyZWFkIElEIHRvIFVzZXJTaWduYWxQcm9jLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggd2hlbiBtYXAgZmFpbHMuCgoJKiBjb250cm9scy9jb21iby5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVNob3cgdXNlIG9mIHVuZG9jdW1lbnRlZCBtZXNzYWdlcy4KCgkqIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSByZW1vdmVkIGtleWJvYXJkIGF1dG8tcmVwZWF0IHdoZW4gRElucHV0IGFjcXVpcmVzIGl0CgktIHJlbW92ZWQgc29tZSAobm93KSBvYnNvbGV0ZSBmaXhtZSdzCgoJKiBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGdyYXBoaWNzL2RkcmF3LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vdmVkIGxwQ2xpcHBlciBpbnRvIGNvbW1vbl9kaXJlY3RkcmF3c3VyZmFjZSBzdHJ1Y3QKCVJlbGVhc2Ugb2xkIGNsaXBwZXIgb24gbmV3IHNldAoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGYWtlIE1JRElfSU9fU1RBVFVTIHN1cHBvcnQgaW4gbWlkaSBpbiBvcGVuCglGaXhlZCBidWcgaW4gbWlkaSBpbiB3aGlsZSByZWFkaW5nIGRhdGEKCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGluZmluaXRlIGxvb3AgZm9yIDAtbGVuZ3RoIHdhdmVoZHJzLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWdneSBwbGF5YmFjayBmb3Igbm9uIFBDTSBmaWxlcwoJQWRkZWQgc3VwcG9ydCBmb3IgZnJvbSAmIHRvIGluZGV4ZXMgZm9yIHBsYXliYWNrCglOb3cgdXNpbmcgZG91YmxlIHdhdmVoZHIgZm9yIGJldHRlciBvdXRwdXQKCUNsZWFuZWQtdXAgaW50ZXJuYWwgc3RydWN0cyBhbmQgcmVtb3ZlZCBsYXN0IDE2IGJpdCBBUEkgYWRoZXJlbmNlCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVHJpZWQgdG8gcmVkdWNlIGVjaG8gaW4gcGxheVNvdW5kIEFQSSAodXNpbmcgdHdvIHdhdmVoZHIgaW5zdGVhZCBvZgoJb25lKS4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBjYWxsYmFjayBtZWNoYW5pc21zIGZvciBNSURJIElOLgoKCSogZGxscy9tc2FjbTMyL3N0cmVhbS5jLCBkbGxzL21zYWNtMzIvd2luZWFjbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBpbXByb3BlciBhY20gc3RyZWFtcyBjbG9zaW5nLgoKCSogZGxscy9tc2FjbTMyL2RyaXZlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCURlYnVnIHRyYWNlcyBjb3NtZXRpYyBmaXhlcy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBlcnJvcnMgKHRoYW5rcyB0byBGIEdvdWdldCBmb3IgcmVwb3J0aW5nIHRoZW0pLgoJQWRkZWQgc29tZSBiaXRzIG9uIHRodW5raW5nIGFuZCByZXNvdXJjZXMgZm9yIERMTHMuCgpTYXQgRGVjICA0IDA0OjIyOjA0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXJzdCBzdXBwb3J0IG9mIERHQSAyLjAgZm9yIERpcmVjdERyYXcuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luMzIvbmV3Zm5zLmM6CglFcmV6IFZvbGsgPGVyZXpAZ214Lm5ldD4KCVN0dWJzIGZvciBHZXQvU2V0UHJvY2Vzc0RlZmF1bHRMYXlvdXQuCgoJKiBmaWxlcy9wcm9maWxlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmb3IgQ2xvc2VQcm9maWxlVXNlck1hcHBpbmcuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXNlIERJbnB1dCdzIGludGVybmFsIG1vdXNlIGV2ZW50IGhhbmRsZXIgdG8gaGFuZGxlIHRoZSBHZXREZXZpY2VTdGF0ZQoJZnVuY3Rpb24uCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCXdhdmVIZHIubHBEYXRhIHdhcyBldmVudHVhbGx5IEhlYXBGcmVlKCllZCB1bmluaXRpYWxpemVkLgoKCSogbG9hZGVyL21vZHVsZS5jOiBTZXJnZWkgVHVyY2hhbm92IDx0dXJjaGFub3ZAb3R2cHJpbS5ydT4KCUZpeCBmb3IgR2V0QmluYXJ5VHlwZSB0byByZXR1cm4gU0NTX0RPU19CSU5BUlkgaWYgZXh0ZW5kZWQgc2lnbmF0dXJlCglpcyB1bmtub3duLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL2VsZmRsbC5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCAzMi1iaXQgbW9kdWxlIG5hbWUgaGFuZGxpbmcgdG8gY29uZm9ybSBiZXR0ZXIgdG8gV2luOXguCglSZW1vdmVkIE9GU1RSVUNUIHBhc3NpbmcgZHVyaW5nIHByb2Nlc3MgY3JlYXRpb24gc2VxdWVuY2UuCglCdWdmaXg6IGRvbid0IHNldCBleGVfbW9kcmVmIHdoZW4gTE9BRF9MSUJSQVJZX0FTX0RBVEFGSUxFIGlzIHNldC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBpbmNsdWRlL3dpbnN2Yy5oLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6CglNaWNoYWVsIE1jQ29ybWFjayA8bWNjb3JtYWNAYWFsczI3LmFsY2F0ZWwuY29tLmF1PgoJQWRkZWQgY29kZSB0byBzb21lIHNlcnZpY2UgZnVuY3Rpb25zIChzb21lIHVudGVzdGVkKSwgZml4ZWQKCWRlY2xhcmF0aW9uIG9mIHNlcnZpY2UgbWFpbiBmdW5jdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglQaWVycmUgTWFnZWF1CglNdXJhbGkgUGF0dGF0aGUKCUZyYW5jb2lzIEJvaXN2ZXJ0CglGcmFuY2lzIEJhdWRldAoJSGVubmluZyBIb2ZmbWFubgoJTWFueSBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBzdHVicyBmb3Igc2V2ZXJhbCBNUlUgbGlzdCBmdW5jdGlvbnMgYW5kIGRvY3VtZW50ZWQgc29tZSBvdGhlcnMuCgoJKiBzZXJ2ZXIvZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZsdXNoIGhhbmRsZSBpbiBhbnkgYWNjZXNzIG1vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBvZmYgYnkgb25lIGVycm9yIGluIGl0ZW0gaW5zZXJ0aW9uLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxsb3cgMSUgZGV2aWF0aW9uIGZyb20gc3BlY2lmaWVkIHNhbXBsaW5nIHJhdGUgZm9yIHNvbWUgc291bmRjYXJkcy4KCgkqIGluY2x1ZGUvZDNkLmg6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwcmVzc2VkIHRoZSBpbmNsdXNpb24gb2YgT3BlbkdMIGhlYWRlcnMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIHN0dWIgZm9yIGNvbnZlcnNpb24gZnJvbSBtZXRhIHRvIGVuaGFuY2UgbWV0YSBmaWxlcy4KCS0gSW1wbGVtZW50ZWQgR2V0RW5oTWV0YUZpbGVCaXRzIGZvciBlbmhhbmNlZCBtZXRhIGZpbGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUltcHJvdmVkIHN0dWJzIGZvciB0aGUgZGRyYXcgY2xpcHBlciByb3V0aW5lcy4KCk1vbiBOb3YgMjkgMDI6NDg6NDMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL3RpbWUuYzogTWFkZSBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSByZXR1cm4gdmFsdWUgbW9yZSBwcmVjaXNlLgoKCSogc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmM6CglGaXhlZCBnZXRfZXZlbnRfb2JqL2dldF9maWxlX29iaiB0byB1c2UgdGhlIHByb2Nlc3MgcGFyYW1ldGVyICh0aGFua3MKCXRvIEVyaWMgUG91ZWNoKS4KCgkqIHNlcnZlci9wcm9jZXNzLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmM6CglGaXhlZCBERUJVR19PTkxZX1RISVNfUFJPQ0VTUyBhZ2FpbiAodGhhbmtzIHRvIFVscmljaCBXZWlnYW5kKS4KCgkqIHNjaGVkdWxlci90aW1lci5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgZGxscy9udGRsbC9udC5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW46CglJbXBsZW1lbnRlZCB3YWl0YWJsZSB0aW1lcnMuCgpTdW4gTm92IDI4IDIxOjAzOjQ2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9iaW4ycmVzLmM6IEJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBpbmNsdWRlL3Byc2h0Lmg6CglTZXJnZSBJdmFub3YKCVBpZXJyZSBNYWdlYXUKCVRoeSBOZ3V5ZW4KCURvbiBLZWxseQoJTm9vbWVuIEhhbXphCglMb3RzIG9mIGJ1ZyBmaXhlcyBhbmQgbmV3IGZlYXR1cmVzIGluIHByb3BlcnR5IHNoZWV0cy4KCgkqIHdpbjMyL25ld2Zucy5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBncmFwaGljcy9wc2Rydi9mb250LmMsIGRsbHMvY29tY3RsMzIvdGFiLmM6CglOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCUNvbXBpbGVyIHdhcm5pbmdzIGZpeGVkLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IEJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJR2l2ZSB0aGUgYXBwIGJhY2sgdGhlIGV4YWN0IGZvbnQgbmFtZSBpdCBhc2tlZCBmb3IuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglQcmV2ZW50IGEgY3Jhc2ggaWYgbWVzc2FnZXMgYXJlIHNlbnQgdG8gYSB0b29sYmFyIHdpbmRvdyBiZWZvcmUKCVdNX05DQ1JFQVRFIG9yIGFmdGVyIFdNX0RFU1RST1kuCgoJKiBkbGxzL3dpbm1tL3dpbm1tX0VzLnJjOiBKdWxpbyBDZXNhciBHYXpxdWV6IDxqZ2F6cXVlekBkbGQubmV0PgoJVXBkYXRlZCBTcGFuaXNoIE1NIGVycm9yIHN0cmluZyB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90cmVldmlldy5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gKGZpbmFsPykgdXBkYXRlIG9mIFRyZWVWaWV3XyogbWFjcm8ncy4KCS0gaW1wbGVtZW50YXRpb24gb2YgVFZNX1NFVElOU0VSVE1BUksgJiBUVk1fU0VUSU5TRVJUTUFSS0NPTE9SCgktIGZpeGVkIHNvbWUgdHlwbydzCgktIGN1c3RvbSBkcmF3IGVuaGFuY2VtZW50cwoJLSBpbXBsZW1lbnRhdGlvbiBvZiBzdGF0ZSBpbWFnZXMKCS0gaW1wbGVtZW50YXRpb24gb2YgVFZTX0NIRUNLQk9YRVMKCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgc29tZSB2aXN1YWwgdG9vbGJhciBidWdzLgoKCSogUkVBRE1FOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglBZGRlZCBub3RlcyBhYm91dCBXaW5lLXJlbGF0ZWQgRnJlZUJTRCBrZXJuZWwgcGF0Y2hlcy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglVc2UgUmVnUXVlcnlJbmZvS2V5IHRvIGNvdW50IG51bWJlciBvZiBwcmludGVycy4KCgkqIHNlcnZlci91bmljb2RlLmg6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCURvbid0IHRyeSB0byBjYWxsIHRvd3VwcGVyKCkgd2hlbiB0aGVyZSdzIG5vIHdjdHlwZS5oLgoKCSogY29udHJvbHMvY29tYm8uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglXaGVuIGNvbWJvYm94IHNlbGVjdGlvbiBjaGFuZ2VzLCB1cGRhdGUgaXRzIGVkaXQgYm94IGFjY29yZGluZ2x5LgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU5vdGlmeSBwYXJlbnQgb2YgbGlzdGJveCBpZiByZXF1ZXN0ZWQuCgpUaHUgTm92IDI1IDIzOjQyOjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcHRyYWNlLmM6IE1vcmUgcG9ydGFiaWxpdHkgZml4ZXMgKHRoYW5rcyB0byBKdWVyZ2VuIExvY2spLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglTZXQvdXNlIGZzL2dzIGZyb20gdGhlIHNpZ2NvbnRleHQgc3RydWN0LCB0aGUgY29ycmVzcG9uZGluZyBrZXJuZWwKCWNoYW5nZSBub3cgZmluYWxseSBoYXMgYmVlbiBNRkMnZCB0byAtc3RhYmxlLgoKCSogZG9jdW1lbnRhdGlvbi9mb250czogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJTWVudGlvbiBmcmVlIFRydWV0eXBlIGZvbnQgc2VydmVycyAoWGZzdHQgYW5kIHhmc2Z0KS4KCgkqIHdpbmVkZWZhdWx0LnJlZzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJTm90ZSB3aGF0IHRvIGRvIHdpdGggdGhlIHdpbmVkZWZhdWx0LnJlZyBpbiB0aGUgZmlsZS4KCgkqIHdpbjMyL2RldmljZS5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglJbXBsZW1lbnRlZCBwYXJ0cyBvZiBfUGFnZVJlc2VydmUoKSBfUGFnZUNvbW1pdCgpIF9QYWdlRGVjb21taXQoKQoJX1BhZ2VDaGFuZ2VQZXJtaXNzaW9ucygpIGFuZCBfUGFnZUZyZWUoKSB1c2luZyB0aGUKCVZpcnR1YWwqKCktRnVuY3Rpb25zICh3aXRoIHRoZSBncmVhdCBoZWxwIG9mIFVscmljaCBXZWlnYW5kKS4KCgkqIG1lbW9yeS9hdG9tLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJUmVtb3ZlZCBmaXhtZS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogU2V2ZXJhbCBidWcgZml4ZXMgaW4gc2F2ZV9rZXkoKS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJvZ3VzIGVycm9yIGRldGVjdGlvbiBmb3IgUmVnRW51bVZhbHVlW0FXXSBhbmQKCVJlZ1F1ZXJ5VmFsdWVFeFtBV10uCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgZ2xvYmFsIGRhdGEgbXV0dWFsIGV4Y2x1c2lvbgoJLSBSZW1vdmVkIGhhY2sgZm9yIGNyZWF0aW5nIHByb2Nlc3NlcyBzdXNwZW5kZWQgbm93IHRoYXQgaXQncyBpbXBsZW1lbnRlZAoJLSBGaXhlZCBvcmRpbmFsIG51bWJlcmluZyBhbmQgYWRkZWQgc3BlYyBzdHVicwoJLSBGaXhlZCBFbnVtQ29ubmVjdGlvbnMgY2FsbGJhY2sgdG8gZmlsbCBpbiBhbGwgcGFyYW1ldGVycyB3aXRoIHZhbGlkIGRhdGEKCS0gTWFkZSBkaXJlY3QgcGxheSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBmb2xsb3cgdGhlIHNhbWUgcGF0dGVybiBhcwoJICBkaXJlY3QgcGxheSBsb2JieQoKCSogZGxscy93aW44N2VtL2VtdWxhdGUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNldmVyYWwgaW1wcm92ZW1lbnRzLgoKCSogb2xlL29sZTJubHMuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGludmFsaWQgTENNYXBTdHJpbmcgZml4bWUgZm9yIE5PUk1fSUdOT1JFS0FOQVRZUEUgY2FzZS4KCgkqIGluY2x1ZGUvY29tbS5oLCBtaXNjL2NvbW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIHdpbjE2IHNlcmlhbCBjb21tcyBsZXNzIG9mIGEgQ1BVIGhvZy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIG1lbW9yeS92aXJ0dWFsLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VuaWNvZGUuYywgc2VydmVyL3VuaWNvZGUuaDoKCVN0b3JlIGFsbCBvYmplY3QgbmFtZXMgYXMgVW5pY29kZSBpbiB0aGUgc2VydmVyLgoKV2VkIE5vdiAyNCAxOTozNDozMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3RyYWNlLmMsIHdpbmUuaW5pOgoJQWRkZWQgd2luZS5jb25mIG9wdGlvbiBmb3IgbmV3IGZvcm1hdCByZWdpc3RyeSBmaWxlcy4KCUFkZGVkIG9wdGlvbmFsIHBlcmlvZGljIHNhdmluZyBvZiB0aGUgcmVnaXN0cnkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jOgoJQWRkZWQgc3VwcG9ydCB0byB0aGUgc2VydmVyIGZvciBsb2FkaW5nIG5ldyBmb3JtYXQgKHZlcnNpb24gMikgZmlsZXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEJ1ZyBmaXhlcyAodGhhbmtzIHRvIEp1ZXJnZW4gU2NobWllZCkuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglBZGRlZCBjdXJyZW50IGNvbnRleHQgdG8gdGhlIGV4Y2VwdGlvbiBkZWJ1ZyBldmVudCBzZW50IHRvIHRoZSBzZXJ2ZXIuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglGaXhlZCBoYW5kbGluZyBvZiBkZWJ1ZyBldmVudHMgb24gdGhyZWFkL3Byb2Nlc3MgZXhpdC4KCgkqIGRlYnVnZ2VyL2RiZy55LCBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6CglSYWlzZSBhbiBleGNlcHRpb24gd2hlbiBhIGNyaXRpY2FsIHNlY3Rpb24gd2FpdCBmYWlsZWQuCgpUdWUgTm92IDIzIDIzOjQzOjI5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy90dHlkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3R0eWRydi9iaXRibHQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2JpdG1hcC5jLCBncmFwaGljcy90dHlkcnYvYnJ1c2guYywgZ3JhcGhpY3MvdHR5ZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3R0eWRydi9mb250LmMsIGdyYXBoaWNzL3R0eWRydi9ncmFwaGljcy5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvb2JqZWN0cy5jLCBncmFwaGljcy90dHlkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3R0eWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3R0eWRydi9wZW4uYywgZ3JhcGhpY3MvdHR5ZHJ2L3RleHQuYywgaW5jbHVkZS90dHlkcnYuaCwgd2luZG93cy90dHlkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3R0eWRydi9tYWluLmMsIHdpbmRvd3MvdHR5ZHJ2L21vbml0b3IuYywgd2luZG93cy90dHlkcnYvd25kLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUltcHJvdmVkIHRoZSBzdHVicy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGluY2x1ZGUvaW1hZ2VsaXN0Lmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJLSBmaXJzdCAnZHVtbXknIGltcGxlbWVudGF0aW9uIG9mIEltYWdlTGlzdF9SZWFkCgoJKiBpbmNsdWRlL3JlYmFyLmgsIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CgktIGFkZGVkIHZlcnNpb24gbWVzc2FnZXMKCgkqIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCS0gaW1wbGVtZW50ZWQgTEJJdGVtRnJvbVB0CgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CgktIGltcGxlbWVudGVkIHNpbXBsZSBjb2x1bW4gb3JkZXIgYXJyYXkgZnVuY3Rpb25hbGl0eQoJLSBpbXBsZW1lbnRlZCBzb21lIHZpcnR1YWwgbGlzdHZpZXcgbm90aWZpY2F0aW9ucwoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CgktIG1pbm9yIHVwZGF0ZSB0byBtcnUgbGlzdCBmdW5jdGlvbnMKCS0gc3R1YnMgZm9yIENPTUNUTDMyXzQxMSB0byBDT01DVEwzMl80MTMKCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL3Rvb2xiYXIuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CgktIGFkZGVkIHZlcnNpb24gbWVzc2FnZXMgYW5kIHNvbWUgc2ltcGxlIGdldC9zZXQgbWVzc2FnZXMuCgktIGFkZGVkIHVuaWNvZGUgbWVzc2FnZXMKCgkqIGluY2x1ZGUvc2hsZ3VpZC5oLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gbWFkZSBJU2hlbGxGb2xkZXIgYSBhZ2dyZWdhYmxlIG9iamVjdAoJLSBTSENvQ3JlYXRlSW5zdGFuY2UgY2FuIGNyZWF0ZSBDU0lETF9GU0ZvbGRlciBub3cKCS0gYnJvd3NpbmcgaW50byBmb2xkZXJzIG9uIHRoZSBkZXNrdG9wIGltcGxlbWVudGVkCgktIGNvcnJlY3RlZCByZXR1cm52YWx1ZSBvZiBJY29fRXh0cmFjdEljb25FeAoJLSBmaXhlZCBTSEdldERhdGFGcm9tSURMaXN0IHRvIHJldHVybiBkYXRhIG9mIHNpbXBsZSBwaWRscwoKCSogcmVsYXkzMi93c29jazMyLnNwZWMsIGlmMTYzMi93aW5zb2NrLnNwZWMsIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL3dpbnNvY2suYzoKCU1vc2VzIERlSm9uZyA8ZGVqb25nQGNzLnVtbi5lZHU+CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBmb3IgV1NBUmVjdkV4IGZ1bmN0aW9uLiBUaGlzIGlzIGEgTWljcm9zb2Z0CglzcGVjaWZpYyBleHRlbnNpb24gdG8gdGhlIHdpbnNvY2sgQVBJLgoKCSogZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbXByL3B3Y2FjaGUuYywgaW5jbHVkZS93aW5uZXR3ay5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglDb3JyZWN0ZWQgd3JvbmcgcGFyYW1ldGVyIGNvdW50cyBmb3IgV05ldENhY2hlUGFzc3dvcmQgYW5kCglXTmV0RW51bUNhY2hlZFBhc3N3b3Jkcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQWRkZWQgc3R1YiBmb3IgRGxsSW5zdGFsbCgpLgoKCSogbWlzYy9yZWdpc3RyeS5jLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaCwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuc3BlYywgaWYxNjMyL2tlcm5lbC5zcGVjOgoJQ2hhbmdlZCB0byB1c2UgbmV3IHNlcnZlci1zaWRlIHJlZ2lzdHJ5IHN1cHBvcnQuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91bmljb2RlLmg6CglBZGRlZCByZWdpc3RyeSBzdXBwb3J0IHRvIHRoZSBzZXJ2ZXIuCgoJKiB0b29scy9tYWtlX3JlcXVlc3RzOgoJRGlmZmVyZW50aWF0ZSB0cmFjaW5nIGZ1bmN0aW9ucyBiZXR3ZWVuIHJlcXVlc3QgYW5kIHJlcGx5LgoJQWRkZWQgcG9zc2liaWxpdHkgdG8gaGF2ZSBkdW1waW5nIGZ1bmN0aW9ucyBmb3Igc3BlY2lmaWMgdHlwZXMuCgpTdW4gTm92IDIxIDIxOjAyOjA2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmM6CglBZGRlZCBzZXJ2ZXJfY2FsbF9ub2VyciBmdW5jdGlvbiB0aGF0IGF2b2lkcyB0b3VjaGluZyB0aGUgbGFzdCBlcnJvci4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDogQWRkZWQgYSBmZXcgcmVnaXN0cnkgZXJyb3IgY29kZXMuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgb2JqZWN0cy9mb250LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgc29tZSB1bmFsaWduZWQgYWNjZXNzZXMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gdGhlIGZvZEluZm9zIHdlcmUgdXNlZCBiZWZvcmUgaW5pdGlhbGl6ZWQKCS0gbHBUZW1wbGF0ZU5hbWUgY2FuIGJlIGEgcmVzb3VyY2UgaWQKCS0gaWYgbHBUZW1wbGF0ZU5hbWUgaXMgYSBzdHJpbmcgZG9uJ3QgZnJlZSB0aGUgb3JpZ2luYWwgb25lCgoJKiB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgbG9hZGVyL25lL2NvbnZlcnQuYywgbG9hZGVyL25lL21vZHVsZS5jLCBtaXNjL2NwdS5jLCBtc2Rvcy9pb3BvcnRzLmMsIG9sZS9ndWlkLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3NvY2tldC5jLCB0b29scy93cmMvbmV3c3RydWMuYywgZGxscy93aW5tbS9tY2kuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvdHlwZXMuYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvd2luZy93aW5nX21haW4uYzoKCU5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJUmVtb3ZlZCBleHRyYSAjaW5jbHVkZSBzdGF0ZW1lbnRzLgoKCSogZmlsZXMvZmlsZS5jOgoJRml4ZWQgTW92ZUZpbGVFeEEgYmVoYXZpb3Igd2hlbiB0YXJnZXQgZmlsZSBkb2VzIG5vdCBleGlzdC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvUHQucmM6CglHdXN0YXZvIEp1bmlvciBBbHZlcyA8dHdpbmZvQGJlc3R3YXkuY29tLmJyPgoJQWRkZWQgUG9ydHVndWVzZSBsYW5ndWFnZSBzdXBwb3J0LgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBpbmNsdWRlL21vbnRoY2FsLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgY3VycmVudCBkYXkgY2lyY2xpbmcuICBGaXhlZCBtYW55IGJ1Z3MgaW4gdGhlIG1vbnRoCgljYWxlbmRlciBjb250cm9sIGluY2x1ZGluZyBjb250cm9sIHNwYWNpbmcgYW5kIGFsaWdubWVudC4gIEZpeGVkCglkZWZpbmVzIG1vbnRoY2FsLmguICBPcHRpbWl6ZWQgY29udHJvbCBkcmF3aW5nIGFuZCByZW1vdmVkIG1hbnkKCWV4dHJhbmlvdXMgcmVkcmF3cy4gIEltcHJvdmVkIGNvbnRyb2wgYmVoYXZpb3IuICBGaXhlZCBpbmNvbnNpc3RlbnQKCWZvcm1hdHRpbmcgaW4gYm90aCAuYyBhbmQgLmggZmlsZXMuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGbHVzaCBjdXJyZW50IHByb2ZpbGUgYmVmb3JlIHVzaW5nIGEgbmV3bHkgb3BlbmVkIG9uZS4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEdldFRocmVhZFNlbGVjdG9yRW50cnkoKSBzZXRzIHJlYWQtd3JpdGUgZmxhZyBpbmNvcnJlY3RseS4KCgkqIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBvYmplY3RzL2ZvbnQuYywgaWYxNjMyL2dkaS5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3R1YiBmb3IgR2V0Rm9udERhdGExNi4KCgkqIHdpbmRvd3MvZGlzcGxheS5jLCBpZjE2MzIvZGlzcGxheS5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc29tZSBvcmRpbmFscyBhbmQgR2V0RHJpdmVyUmVzb3VyY2VJRCgpLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3B0cmFjZS5jOiBQb3J0YWJpbGl0eSBmaXhlcy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6IEZpeGVkIG1lYW5pbmcgb2YgREVCVUdfT05MWV9USElTX1BST0NFU1MgZmxhZy4KCgkqIHRvb2xzL2JpbjJyZXMuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUZpeGVkIGNvbXBpbGUgZXJyb3IuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogUGV0ZXIgU2NobGFpbGUgPHVkYnpAcnoudW5pLWthcmxzcnVoZS5kZT4KCUltcGxlbWVudGVkIFN0YXJ0U2VydmljZUN0cmxEaXNwYXRjaGVyQSBhY2NvcmRpbmcgdG8gRGlzcGF0Y2hlclcuCgoJKiBNYWtlZmlsZS5pbjogTWFrZSBzdXJlIHdlIGNsZWFuIGRsbHMvIHRvby4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJTWljaGFlbCBNY0Nvcm1hY2sgPG1jY29ybWFjQGFhbHMyNy5hbGNhdGVsLmNvbS5hdT4KCUltcGxlbWVudGVkIE9wZW5TQ01hbmFnZXJXLCBDbG9zZVNlcnZpY2VIYW5kbGUsIE9wZW5TZXJ2aWNlVywgYW5kIHNvbWUKCW9mIFF1ZXJ5U2VydmljZVN0YXR1cy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nICc7Jy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIubDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglFcnJvciByZXBvcnRpbmcgZml4LgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNoYW5nZWQgZGVmYXVsdCByZWxheSBsaW5lIG51bWJlciBmcm9tIDEwMCB0byAyMDAuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB1bmRvY3VtZW50ZWQgZmVhdHVyZSB0byBJbnNlcnRCdXR0b25BLgoJQWRkZWQgZHJvcGRvd24gYnV0dG9uIHN1cHBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwbGF5IGJhY2sgb2YgdW5jb21wcmVzc2VkIEFWSSBmaWxlLgoJRml4ZWQgZXhpdGluZyBjb25kaXRpb25zLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGNyYXNoIGluIElEaXJlY3REcmF3U3VyZmFjZTpCbHRGYXN0LgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmb3J3YXJkaW5nIGFuZCBoYW5kbGluZyBtZXNzYWdlcyBkaXJlY3RlZCB0byB0aGUgbWFwcGVycy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgaW5jbHVkZS9tb2R1bGUuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2ltcGxpZmllZCBoSW5zdGFuY2UgY3JlYXRpb24vaGFuZGxpbmcuCglGaXhlcyBwcm9ibGVtcyB3aXRoIHNlbGYtbG9hZGVycyBjcmVhdGluZyBER1JPVVAgdGhlbXNlbHZlcy4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGMuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIHN0dWJzIGZvciBHZXQvU2V0TGF5b3V0KCkuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglBZGRlZCBzdHViIGZvciBTdGdTZXRUaW1lcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxtZW51LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTSEZpbmRfSW5pdE1lbnVQb3B1cCBpcyBzdXBwb3NlZCB0byByZXR1cm4gYSBwb2ludGVyLgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+Cgl1X2ludFsxNnwzMl1fdCBtaWdodCBub3QgYmUgZGVmaW5lZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gZml4ZWQgY3Jhc2ggd2hlbiBhZGRpbmcgaXRlbXMgd2l0aCBUVklfU09SVCBhbmQgd2luZUl0ZW0tPnBzelRleHQgaXMKCSAgc2V0IHRvIExQU1RSX1RFWFRDQUxMQkFDSy4KCS0gZGl0dG8gZm9yIFRSRUVWSUVXX0RlbGV0ZUl0ZW0sIFRSRUVWSUVXX0NyZWF0ZURyYWdJbWFnZS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTW9uIE5vdiAxNSAwMDo0NjozMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogRml4ZWQgYWxsb2NhdGlvbiByb3VuZGluZyBmb3IgTUVNX1JFU0VSVkUuCgoJKiBzZXJ2ZXIvZmlsZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGhhc2ggZnVuY3Rpb24uCgpTdW4gTm92IDE0IDIzOjU5OjAxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglUaGUgYWR3SW5mb1swXSBmaWVsZCB3YXMgbm8gbG9uZ2VyIHVzZWQgb24gbW1pb09wZW4gKG1heSBjb250YWluIGZpbGUKCWhhbmRsZSkuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN0dWJzIGZvciBTZXRFcnJvckluZm8sIFByb3BWYXJpYW50Q2xlYXIsIFByb3BWYXJpYW50Q29weSwKCUZyZWVQcm9wVmFyaWFudEFycmF5LgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIHN1aWNpZGUgY29kZSB3aGVuIHBsYXliYWNrIHRocmVhZCdzIGZhdGhlciBkaWVzLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gdGhlIGNvbHVtcyBpbiB0aGUgc2hlbGx2aWV3IGFyZSBub3cgY3JlYXRlZCBkZXBlbmRpbmcgb24gdGhlCgkgIGF0dHJpYnV0ZXMgb2YgdGhlIGZvbGRlciBvYmplY3Qgc2hvd24KCS0gZ2V0IGFsbCBhdHRyaWJ1dGVzIGZyb20gdGhlIHNoZWxsZm9sZGVyIGluc3RlYWQgZGlyZWN0bHkgZnJvbSB0aGUgaWRsaXN0CgktIGhlYWRlciBmaWVsZHMgbG9jYWxpemVkIChvbmx5IGVuZ2wuIGFuZCBnZXJtYW4gdGlsbCBub3cpCgktIHNtYWxsIGZpeGVzCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGNvcnJlY3RlZCBjb250cm9sIHBvc2l0aW9ucwoJLSB1c2UgdGhlIGljb25zIGZyb20gY29tY3RsMzIgZm9yIHRoZSBidXR0b25zCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHJlbGF5L3Nub29wIGRlYnVnZ2luZyB3YXMgYnJva2VuIGJ5IGxhc3QgcGF0Y2ggLi4uCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglNb3ZlZCBwdHJhY2Ugc3VwcG9ydCB0byBwdHJhY2UuYy4gVHJpZWQgdG8gaW1wcm92ZSBwb3J0YWJpbGl0eS4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOiBCdWcgZml4ZXMuCgoJKiBpZjE2MzIvcmVsYXkuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBzb21lIHVucmVzb2x2ZWQgZXh0ZXJuYWxzIG9uIG5vbi1JbnRlbCBhcmNocy4KCgkqIHJlbGF5MzIvc25vb3AuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJIGF0dHJpYnV0ZSB0byB0d28gZm9yd2FyZCBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCBsZWZ0b3ZlciAjdW5kZWZzLgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJZ25vcmUgTUNJX09QRU5fRUxFTUVOVCBpbiBDREFVRElPX21jaU9wZW4uCgoJKiBkbGxzL2NydGRsbC93Y3N0cmluZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdvcmsgYXJvdW5kIGdsaWJjIGJ1ZywgdGhhdCBkb2VzIG5vdCBoYW5kbGUgbGF0aW4tMSB1bWxhdXRzLgoKU2F0IE5vdiAxMyAyMzo1NDowNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvc2VsZWN0b3IuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL29yZGluYWxzLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gbmV3IHJlZ2lzdGVyIGZ1bmN0aW9uIGhhbmRsaW5nLgoKCSogdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGluY2x1ZGUvd2lubnQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9kaWZpZWQgV2luMzIgcmVnaXN0ZXIgZnVuY3Rpb24gaGFuZGxpbmcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL2ljbXAvaXAuaCwgZGxscy9pY21wL2lwX2ljbXAuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXNlIEJTRCBoZWFkZXJzIGZvciBJQ01QIHBvcnRhYmlsaXR5LgoKCSogZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGluc2VydGVkIG1hcmtlcnMgZm9yIHRoZSBiaW4ycmVzIHRvb2wKCS0gcmVmb3JtYXRlZCBoZXhkdW1wIGluIHNocmVzLnJjCgoJKiBkb2N1bWVudGF0aW9uL3Jlc291cmNlcywgdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL2JpbjJyZXMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTmV3IHRvb2wgdG8gY29udmVydCB0aGUgYmluYXJ5IHJlc291cmNlcyBpbiAqLnJjIGZpbGVzIChoZXhkdW1wcykgZnJvbQoJYW5kIHRvIGEgYmluYXJ5LgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgbWlzYy9wb3J0LmMsIG1pc2Mvd2luc29jay5jLCBtaXNjL3dpbnNvY2tfYXN5bmMuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGJldHRlciBtaXNzaW5nIGZ1bmN0aW9uIGVtdWxhdGlvbi4KCgkqIGluY2x1ZGUvZGVidWdnZXIuaCwgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhY2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWFkZSBkZWJ1Z2dlciBjb21waWxlIGFuZCBtYXJnaW5hbGx5IHdvcmsgb24gbm9uLUludGVsIGFyY2hzLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS93aW5udC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBHRVRfSVAgbWFjcm8gdG8gd2lubnQuaAoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZywgZG9jdW1lbnRhdGlvbi9wc2RyaXZlciwgZG9jdW1lbnRhdGlvbi9wc2Rydi5yZWcsIGdyYXBoaWNzL3BzZHJ2L1JFQURNRToKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU1vdmUgUG9zdFNjcmlwdCBkcml2ZXIgZG9jcyB0byBkb2N1bWVudGF0aW9uLyAuICBBZGQgaW5zdHJ1Y3Rpb25zIG9uCglob3cgdG8gdXNlIHJlZ2FwaSB0byBnZXQgaW5mb3JtYXRpb24gaW50byB0aGUgcmVnaXN0cnkuICBTdXBwbHkgc2FtcGxlCglpbnB1dCB0byByZWdhcGkuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUltcGxlbWVudGVkIHRoZSBQcmludFNldHVwIGRpYWxvZyBib3ggZm9yIHRoZSBQcmludERsZ0EuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY29tPgoJQWRkZWQgdmFsaWRhdGlvbnMgZm9yIHBhZ2UgaW5kZXggYmVmb3JlIHVzaW5nIGl0LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY29tPgoJLSBmaXhlZCB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gY2hvc2VuIGluIHRoZSBmaWx0ZXIgY29tYm8gYm94CgktIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBPRk5fT1ZFUldSSVRFUFJPTVBUIGZsYWcKCS0gZml4ZWQgcG9zaXRpb25pbmcgb2YgY29udHJvbHMgaW4gdGhlIHVzZXItZGVmaW5lZCB0ZW1wbGF0ZXMKCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgV3JpdGVQcm9jZXNzTWVtb3J5IHRocm91Z2ggdGhlIHNlcnZlci4KCgkqIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9vYmplY3QuaDogQWRkZWQgZ2V0X3BhZ2Vfc2l6ZSBmdW5jdGlvbi4KCkZyaSBOb3YgMTIgMjE6Mzk6MTUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIFJlYWRQcm9jZXNzTWVtb3J5IHRocm91Z2ggdGhlIHNlcnZlci4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIENSRUFURV9TVVNQRU5ERUQgZmxhZyBpbiBDcmVhdGVQcm9jZXNzLgoKCSogd2luMzIvZGV2aWNlLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJSW1wbGVtZW50ZWQgVldpbjMyIFZ4RENhbGwgbWVjaGFuaXNtIGFuZCAyIGNhbGxzLgoKCSogZGxscy93aW5tbS9qb3lzdGljay5jOiA8am9kYW1hbkBjZWd0MjAxLmJyYWRsZXkuZWR1PgoJRml4ZWQgam95c3RpY2sgc2NhbGluZy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Dcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRGEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fby5yYywgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19IdS5yYywgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsIGRsbHMvY29tbWRsZy9jZGxnX0tvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywgZGxscy9jb21tZGxnL2NkbGdfTm8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ2EucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NzLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRmkucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0h1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfTmwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05vLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QbC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1J1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tdi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfV2EucmM6CglHdXN0YXZvIEp1bmlvciBBbHZlcyA8dHdpbmZvQGJlc3R3YXkuY29tLmJyPgoJVXNlIGNvbnN0YW50cyBJRE9LIGFuZCBJRENBTkNFTCBpbiAucmMgZmlsZXMuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJUG9ydGFiaWxpdHkgZml4OiByZW5hbWVkIFBUUkFDRV8qIGludG8gUFRfKi4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvZGV2aWNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IGZvciBidWdneSBhcHBzIHRoYXQgY2FsbCB0aGUgd3JvbmcgVnhEQ2FsbCByb3V0aW5lLgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDb21wbGV0ZSBzdHViIGZvciBSYXNFbnVtRW50cmllcyBieSBzYXlpbmcgd2UgaGF2ZSAwIGVudHJpZXMuCgoJKiBpbmNsdWRlL2RlYnVnc3RyLmgsIG1pc2MvZGVidWdzdHIuYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkZWJ1Z3N0cl9oZXhfZHVtcCB0byBhbGxvdyBkaXNwbGF5IGhleCBkdW1wcyBvZiBkYXRhIGluIGFueQoJZGVidWdnaW5nIG1lc3NhZ2UuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6CglBZGRlZCB1c2VfcHRyYWNlIGZsYWcgdG8gZGlzYWJsZSBwdHJhY2UgdXNhZ2UuIFNob3VsZCBldmVudHVhbGx5IGJlCgltYWRlIGludG8gYW4gb3B0aW9uLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGRsbHMvY29tbWRsZy9yc3JjLnJjLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL2RsZ3MuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTWFkZSB0aGUgYnV0dG9ucyBpbiB0aGUgZmlsZWRsZyBjaGFuZ2Ugd2hlbiBzZWxlY3RpbmcgYSBkaWZmZXJlbnQKCXZpZXcgdHlwZSBieSB0aGUgY29udGV4dCBtZW51LCBjbGVhbnVwLgoKCSogZGxscy93aW5tbS93aW5tbV9Fcy5yYywgZGxscy93aW5tbS93aW5tbV9yZXMucmM6CglKdWxpbyBDZXNhciBHYXpxdWV6IDxqZ2F6cXVlekBkbGQubmV0PgoJQWRkZWQgU3BhbmlzaCAocHVyZSBDYXN0aWxsYW4pIE1NIGVycm9yIHN0cmluZyB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHNpZ25hbCBoYW5kbGluZyBmb3IgU1BBUkMgLyBTb2xhcmlzLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDb21tZW50IG91dCBleHBsaWNpdCBjYWxsIHRvIFNIRUxMX1NhdmVSZWdpc3RyeSBzaW5jZSB3aW5lbGliIHByb2dyYW1zCglub3cgZXhpdCBwcm9wZXJseS4gIENoYW5nZSBzZXZlcmFsIE5VTExzIHRvICdcMCdzLiAgRml4IHNvbWUgc3BlbGxpbmcuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIFhTaG0gY29tcGxldGlvbiBldmVudCBsZWFrLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlY3Vyc2lvbiBjb3VudCB3aGlsZSBjYWxsaW5nIG1pZGlTdHJlYW0oUGF1c2V8UmVzdGFydCkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBzYXZlX2NoZWNrX3RhaW50ZWQgdG8gcHJvcGVybHkgc2NhbiB0aGUgdHJlZSBzbyB0aGF0IGFsbCB0YWludGVkCglicmFuY2hlcyBnZXQgc2F2ZWQuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCUJlcm5kIFBheXNhbiA8YmVybmQucGF5c2FuQGdteC5kZT4KCUFkZGVkIGEgc3R1YiBmb3Igc2V0am1wLgoKV2VkIE5vdiAxMCAyMDoyNToxOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3RocmVhZC5jOgoJRG9uJ3QgY3Jhc2ggd2hlbiB3ZSBnZXQgYSBTSUdDSExEIGZvciBhIHJlbW92ZWQgdGhyZWFkLgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgY29tcGlsZSBmaXhlcy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvd2lubnQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJKFByZWxpbWluYXJ5KSBDT05URVhUIHN0cnVjdHVyZSBmb3IgU1BBUkMgYWRkZWQuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBMT0FEX0RMTF9ERUJVR19FVkVOVCBscEltYWdlTmFtZSBwYXJhbWV0ZXIgd2FzIGluY29ycmVjdC4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV2hlbiBkZWNvbW1pdHRpbmcsIHJlbWFwIHplcm8gcGFnZXMgdXNpbmcgTUFQX0ZJWEVELgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb0dldENsYXNzT2JqZWN0IHNob3VsZCBjb21wbGFpbiBhYm91dCBub3QgYmVpbmcgYWJsZSB0byBkbwoJb3V0LW9mLXByb2Nlc3Mgc2VydmVycyAqb25seSogaWYgdGhlIGFwcGxpY2F0aW9uIGRvZXNuJ3QgaW5jbHVkZSB0aGUKCWluLXByb2Nlc3Mgb3B0aW9ucy4KCgkqIG1pc2MvdmVyc2lvbi5jLCBjb250cm9scy9lZGl0LmMsIGluY2x1ZGUvd2ludmVyc2lvbi5oOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVNlbmQgV01fQ1RMQ09MT1JFRElUIG5vdCBXTV9DVExDT0xPUlNUQVRJQyBtZXNzYWdlcyB0byBwYXJlbnQgb2YgYQoJZGlzYWJsZWQgZWRpdCBjb250cm9sIGlmIHRoZSBhcHBsaWNhdGlvbiBleHBlY3RzIGEgd2luZG93cyB2ZXJzaW9uCgliZWZvcmUgV0lOOTUgYW5kIE5UNDAuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBmaWxlcy9maWxlLmM6CglNb3NoZSBWYWluZXIgPG1vc2hldkBlYXN5YmFzZS5jb20+CglTdHViIGZvciBHZXRPdmVybGFwcGVkUmVzdWx0LgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURldGVybWluZSBleHBlY3RlZF92ZXJzaW9uIG9mIFBFIGJ1ZGRpZXMgZnJvbSB0aGUgU3Vic3lzdGVtVmVyc2lvbi4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgaW5jbHVkZS93aW5udC5oLCB3aW4zMi9leGNlcHQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBFeGNlcHRpb24gaGFuZGxlcnMgYXJlICpub3QqIFdJTkFQSS4KCk1vbiBOb3YgIDggMDU6MzE6NDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglQcmVsaW1pbmFyeSBwdHJhY2Ugc3VwcG9ydC4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglSZW1hcCB6ZXJvLXBhZ2VzIHdoZW4gZGVjb21pdHRpbmcgYSBwYWdlIHJhbmdlIChiYXNlZCBvbiBhIHBhdGNoIGJ5CglHZXJhcmQgUGF0ZWwpLgoKCSogTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvbWFpbi5jOgoJSW5zdGFsbCB0aGUgd2luZSBzZXJ2ZXIgaW4gJChiaW5kaXIpIGFuZCBleGVjIGl0IGZyb20gdGhlcmUuCgpTdW4gTm92ICA3IDIzOjU5OjA4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzoKCURvIG5vdCBmcmVlIHRoZSBoYW5kbGVzIG9uY2UgdGhleSBoYXZlIGJlZW4gc2VudCB0byB0aGUgY2xpZW50ICh0aGFua3MKCXRvIEplcmVteSBXaGl0ZSkuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIHdoZW4gYXNrZWQgdG8gdXNlIHN0cmluZ3MgaWRlbnRpZmllZCBieSByZXNvdXJjZSBpZAoJaW5zdGVhZCBvZiBwb2ludGVyLgoKCSogd2luZG93cy9kY2UuYzogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJV2hlbiB3aW5kb3cgY2xhc3MgaGFzIENTX0NMQVNTREMgc3R5bGUgd2Ugc2hvdWxkIG5vdCByZW1vdmUgdGhlIERDCgl3aGVuIGRlc3Ryb3lpbmcgdGhlIHdpbmRvdy4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywgZGxscy93aW4zMnMvdzMyc2tybmwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgZml4ZXMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svb3V0cHV0LnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMzJhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGZpeGVzIGFuZCByZW9yZ2FuaXphdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvaWZfbWFjcm9zLmgsIGluY2x1ZGUvYml0X2FycmF5LmgsIGluY2x1ZGUvbnRkbGwuaCwgaW5jbHVkZS9vbGVvYmouaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCBvYnNvbGV0ZSBmaWxlcyBubyBsb25nZXIgaW4gdXNlLgoKCSogdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURpcmVjdFgtWFNobSBub3cgd2FpdHMgZm9yIHRoZSBYIHNlcnZlciB0byBmaW5pc2ggdGhlIHByZXZpb3VzIGZyYW1lCgliZWZvcmUgc2VuZGluZyBhbm90aGVyIGZyYW1lIGRvd24gaXRzIHBpcGUsIGF2b2lkaW5nIHRoZSBYIHNlcnZlcgoJb3ZlcmxvYWQgYW5kIHJlc3VsdGluZyBzbG93bmVzcyB0aGF0IHVzZWQgdG8gYmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBpbmNsdWRlL2RsZ3MuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSB1bmlmaWVkIHRlbXBsYXRlcyBmb3IgdGhlIG9wZW4gYW5kIHRoZSBzYXZlIGRsZwoJLSByZXBsYWNlZCBidXR0b25zIHdpdGggYSB0b29sYmFyCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBuZXcgaW50ZXJmYWNlIGRlY2xhcmF0aW9uIGZvciBJU2hlbGxmb2xkZXIyCgktIGFkZGVkIHRoaXMgaW50ZXJmYWNlIHRvIGFsbCBzaGVsbCBmb2xkZXJzCgktIHNtYWxsIGZpeGVzIHRvIHNoZWxsdmlldyAoY3Jhc2ggd2l0aCBuYXRpdmUgY29tZGxnMzIpCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB0aGUgcmVsb2NhdGlvbiBoYWNrIGluIFBFX0luaXRUbHMuIEFkZGVkIHNvbWUgbW9yZSBmb3IgdGhlIG90aGVyCglwb2ludGVyZmllbGRzIGluIHRoZSBUTFMgZW50cnkuIChXaXRoIHRlc3RpbmcgaGVscCBmcm9tIEp1c3NpCglKdW1wcGFuZW4gPGp1c3NpakB6ZXVzZWRpdC5jb20+KS4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgQ2hhbmdlRGlzcGxheVNldHRpbmdzRXhBIHN0dWIgYW5kIHNvbWUgZmxhZyBkZWZpbmVzLgoKCSogaW5jbHVkZS9jb25zb2xlLmg6IFJvYmVydCAnQWRtaXJhbCcgQ29leW1hbiA8YWRtaXJhbEBjb3JuZXIubmV0PgoJQWRkZWQgdGhlIGhleCB0cmlwbGV0cyB0byB0aGUgY29uc29sZSBjb2xvciBkZWZpbml0aW9ucy4KCgkqIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCBpbmNsdWRlL2lucHV0LmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHRoZSBwb3NzaWJpbGl0eSB0byBoYXZlIG1vdXNlIG1vdmVtZW50cyByZXBvcnRlZCByZWxhdGl2ZSB0bwoJV2luZSdzIG1vdXNlIGRyaXZlci4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9pY21wLy5jdnNpZ25vcmUsIGRsbHMvaWNtcC9NYWtlZmlsZS5pbiwgZGxscy9pY21wL2ljbXAuc3BlYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3dpbmUvaWNtcGFwaS5oLCBpbmNsdWRlL3dpbmUvaXBleHBvcnQuaCwgbG9hZGVyL2xvYWRvcmRlci5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCB3aW5lLmluaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgSUNNUCBETEwgaW1wbGVtZW50YXRpb24uCgoJKiB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvbmV3c3RydWMuaCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvQ0hBTkdFUzoKCUp1ZXJnZW4uU2NobWllZEBkZWJpdGVsLm5ldAoJLSBCdWdmaXg6IFN0eWxlcyB3ZXJlIGV2YWx1YXRlZCBhcyBleHByZXNzaW9ucy4gVGhlIE5PVCBpbiBjb21iaW5hdGlvbgoJICB3aXRoIHN0eWxlIGZsYWdzIHdhcyBub3Qgb3ZlcndyaXRpbmcgdGhlIGRlZmF1bHQgc3R5bGVzIGxpa2UgV1NfVklTSUJMRS4KCSAgU29sdmVkIGJ5IGludHJvZHVjaW5nIG93biBydWxlcyBmb3IgcGFyc2luZyBzdHlsZXMuCgoJKiBjb250cm9scy9jb21iby5jOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglGaXhlZCB0aGUgaGVpZ2h0IG9mIHRoZSBDb21ib0JveCBkcm9wIGxpc3QuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBEYXZpZCBHcmFudCA8ZGF2aWRncmFAY29yZWwuY2E+CglXaW5kb3dzIHNlbmRzIFdNX0dFVERMR0NPREUgb25seSBpbiByZXNwb25zZSB0byBrZXlib2FyZCBtZXNzYWdlcwoJKFdNX0tFWURPV04sIFdNX0NIQVIsIFdNX1NZU0NIQVIpLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIG1pc3NpbmcgX19hdHRyaWJ1dGVfXyAoKGNvbV9pbnRlcmZhY2UpKSBmb3IgSVVua25vd24gd2l0aC4KCSAgSUNPTV9VU0VfQ09NX0lOVEVSRkFDRV9BVFRSSUJVVEUKCS0gU21hbGwgYWRkaXRpb24gdG8gY29tbWVudHMgc3Vycm91bmRpbmcKCSAgSUNPTV9VU0VfQ09NX0lOVEVSRkFDRV9BVFRSSUJVVEUgIm9wdGlvbiIuCgoJKiBvbGUvb2xlMm5scy5jLCBpZjE2MzIvb2xlMm5scy5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50YXRpb24gb2YgUmVnaXN0ZXJOTFNJbmZvQ2hhbmdlZC4KCgkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCB3aW5kb3dzL3F1ZXVlLmMsIG1lbW9yeS9oZWFwLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUFkZHJlc3NlcyBpc3N1ZXMgd2l0aCBtdWx0aXBsZSBwcm9jZXNzZXMgYWNjZXNzaW5nIG5vbi1nbG9iYWwgY3JpdGljYWwKCXNlY3Rpb25zLgoKCSogc2VydmVyL3NvY2suYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYnVnIGluIFdJTlNPQ0tfYWNjZXB0IHdoZW4gbm8gZXZlbnQgaXMgcHJlc2VudC4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGluY2x1ZGUvbG1jb25zLmgsIGluY2x1ZGUvcmFzLmg6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgc3R1YnMgZm9yIFJhc0VudW1FbnRyaWVzQSBhbmQgUmFzR2V0RW50cnlEaWFsUGFyYW1zQS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJSW1wbGVtZW50YXRpb24gb2YgY3VzdG9tIGRpYWxvZyBtZXNzYWdlcyBhbmQgbm90aWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogRGF2aWQgR3JhbnQgPGRhdmlkZ3JhQGNvcmVsLmNhPgoJLSBQcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgY2NoVGV4dE1heCBmaWVsZCB3YXMgYWRkZWQgZm9yCgkgIFRWTl9HRVRESVNQSU5GTyBub3RpZmljYXRpb24gbWVzc2FnZS4KCS0gVFZNX1NFVElURU0gc2hvdWxkIHVwZGF0ZSAnbWFzaycgZmllbGQgdG8gc3luY2hyb25pemUgaXQgd2l0aAoJICBjdXJyZW50IGl0ZW0gc3RhdGUuCgoJKiBncmFwaGljcy9wc2Rydi9wcGQuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSWYgUGFnZVNpemUvSW5wdXRTbG90IGVudHJ5IGRvZXNuJ3QgY29udGFpbiBhbiBvcHRpb25zIHRyYW5zbGF0aW9uCglzdHJpbmcgdXNlIHRoZSBvcHRpb24gbmFtZSBpbnN0ZWFkLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBTZXRUaXRsZUEgd2hlbiBzdHJpbmcgcmVzb3VyY2VzIHdlcmUgdG8gYmUgbG9hZGVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CgktIEZpeGVkIGFuIGVycm9yIGZvciBzY3JvbGxpbmcgaW4gTGlzdHZpZXcgKHNvbWV0aW1lcyBhIGNvbHVtbiB3b3VsZAoJICBub3QgYmUgdmlzaWJsZSkgZHVlIHRvIG15IGxhc3QgY2hlY2tpbi4KCS0gRml4ZWQgYW4gZXJyb3IgZm9yIHRoZSBoZWFkZXIgY29udHJvbCB3aGVuIHRoZSBMaXN0dmlldyBpcyByZXNpemVkIHdpdGggV01fU0laRQoJLSBGaXhlZCB0aGUgc2Nyb2xsaW5nIGZvciBzbWFsbCBhbmQgbGFyZ2UgaWNvbiAodGhpcyBicm9rZSBiZWNhdXNlIG9mCgkgIHRoZSB1c2Ugb2YgU0JfUEFHRSBpbiBzY3JvbGxJbmZvKQoJLSBBZGRlZCBhIHBhdGNoIG1hZGUgYnkgTm9vbWVuIEhhbXphIHRvIHVwZGF0ZSB0aGUgaXRlbSB3aWR0aCB3aGVuCgkgIGFkZGluZyBhIG5ldyBpdGVtCgoJKiBzZXJ2ZXIvc29jay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUhhbmRsZSBzb2NrZXQgY3JlYXRpb24gZXJyb3JzLgoKCSogY29udHJvbHMvbWVudS5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCVdoZW4gYSBwb3B1cG1lbnUgaXMgY3VycmVudGx5IGFjdGl2ZSBvbiB0aGUgc2NyZWVuLCBpdCBzaG91bGRuJ3QKCXJlbW92ZSBtb3VzZSBjbGljayBtZXNzYWdlcyB0aGF0IGRvbid0IGJlbG9uZyB0byBpdCBmcm9tIHRoZSBxdWV1ZS4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglFeGVjIGB3aW5lY2xpcHNydicgbm90IGB3aW5lY2xpcHN2cicsIGFuZCBkb24ndCBpbmhlcml0IHdpbmUncyBYCglzb2NrZXRzIHRvIGl0IChvdGhlcndpc2Ugd2luZG93cyBzdGF5IGFyb3VuZCB3aGVuIHdpbmUgaGFuZ3MpLgoKVGh1IE5vdiAgNCAwMjo1MToyNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21haW4uYzogRml4ZWQgLWRlYnVnbXNnICtzZXJ2ZXIuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6CglBZGRlZCBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGUgc3RkaW8gaGFuZGxlcyBpbiBDbG9zZUhhbmRsZS4KCgkqIHNlcnZlci9oYW5kbGUuYzoKCU1hZGUgYWxsIGhhbmRsZXMgbXVsdGlwbGUgb2YgNC4gRml4ZWQgc2VtYW50aWNzIGZvciBwc2V1ZG8taGFuZGxlcy4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOgoJRnJlZSB0aGUgaGFuZGxlcyBvZiB0aGUgZXZlbnQgc3RydWN0dXJlIGluIHRoZSByaWdodCBwcm9jZXNzICh0aGFua3MKCXRvIEplcmVteSBXaGl0ZSkuCgoJKiBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXksIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5Lmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBkcGxheXggTGliTWFpbiBmb3IgaW5pdGlhbGl6YXRpb24gb2YgYWxsIGRwbGF5eCAnZ2xvYmFsJyBkYXRhCgktIEFkZGVkIHN0YXJ0IGZvciBnbG9iYWwgZGF0YSBtYW5pcHVsYXRpb24KCS0gVE9ETyBsaXN0IHVwZGF0ZWQKCS0gQWRkZWQgc29tZSBtaXNzaW5nIGhlYWRlciBmaWxlIGRlZmluaXRpb25zCgktIEFkZGVkIHRoZSBhbnNpIHZlcnNpb25zIG9mIGRwbGF5IGFuZCBkcGxvYmJ5CgktIEZpeGVkIGludmFsaWQgbWFjcm8gZm9yIElEaXJlY3RQbGF5NAoJLSBDbGVhbmVkIHVwIGNvbXBpbGVyIHdhcm5pbmdzCgktIE1vcmUgaW1wbGVtZW50YXRpb24sIGJ1ZyBmaXhlcyBhbmQgY3JpdGljYWwgcmVnaW9uIHByb3RlY3Rpb24KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJTmV2ZXIgc2VuZCBhIFdNX0NMT1NFIG1lc3NhZ2UgIHRvIGEgcG9wdXAgd2luZG93LgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJQ2hlY2sgaWYgdGhlIHdpbmRvdyBpcyBtYW5hZ2VkIGJlZm9yZSB0cnlpbmcgdG8gZ2l2ZSBpdCBmb2N1cy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVuaGFuY2VkIGxpbnV4IGpveXN0aWNrIGFwaSBkZXRlY3Rpb24gc2xpZ2h0bHkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSmFyb3NsYXcgUGlvdHIgU29iaWVzemVrIDxqc29iaWVzekBlbGthLnB3LmVkdS5wbD4KCUFkZGVkIFBvbGlzaCBrZXlib2FyZCBzdXBwb3J0LgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgRENfVkVSU0lPTiBhbmQgRENfVFJVRVRZUEUgdG8gd2luMTZkcnYgRGV2aWNlQ2FwYWJpbGl0aWVzLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHBkLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBgQ2Fzc2V0dGUnIHRvIFBQRCAtPiB3aW5kb3dzIHByaW50ZXItYmluIG1hcHBpbmcuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IE1pY2hhZWwgTWNDb3JtYWNrIDxtY2Nvcm1hY0BhYWxzMjcuYWxjYXRlbC5jb20uYXU+CglNb2RpZmllZCBsc3RyY3B5bld0b0EgdG8gcHV0IHRlcm1pbmF0aW5nIG51bGwgYXQgZW5kIG9mIHN0cmluZywgbm90CgllbmQgb2YgYnVmZmVyLgoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCBkdXBsaWNhdGUgbWFjcm8gZGVmaW5pdGlvbnMgZm9yIHRoZSBJU3RvcmFnZSBhbmQgSVN0cmVhbSBDT00KCWludGVyZmFjZXMuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCUZpeGVkIENPTE9SX01BWCBkZWZpbml0aW9uIGZvciBuZXcgV2luMzIgdmFsdWVzLgoKCSogb2JqZWN0cy9nZGlvYmouYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglSZW1vdmVkIHVubmVjZXNzYXJ5IFVTRVIgY2FsbCBmcm9tIEdldEZvbnRNZXRyaWNzLiBGaXhlcyBuYXRpdmUgVVNFUi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJU2V0IHByb3BlciBpdGVtIGZvY3VzIG9uIERlbGV0ZUl0ZW0uCglDbGVhbiB1cCBlZGl0IGxhYmVsIGltcGxlbWVudGF0aW9uLgoKCSogZmlsZXMvZHJpdmUuYzogUGV0ZXIgU2NobGFpbGUgPHVkYnpAcnoudW5pLWthcmxzcnVoZS5kZT4KCUZpeGVkIGEgbG9uZyBzdGFuZGluZyAoYW5kIGFubm95aW5nKSB0eXBvLCB0aGF0IHByZXZlbnRlZAoJR2V0RGlza0ZyZWVTcGFjZUEgZnJvbSB3b3JraW5nLi4uCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRW5hYmxlIHNhZmUgcmVhZGluZyBvZiByZWdpc3RyeSBmaWxlLCBldmVuIGlmIGZpbGUgaXMgYnJva2VuLgoKCSogd2luMzIvbmV3Zm5zLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQ2hhbmdlZCBPcGVuRGVza3RvcCBzdHViIHRvIFdpbjl4IGJlaGF2aW9yIGZvciBRdWlja1RpbWUgNC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE9jdCAzMSAyMjoyNjozNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOiBTZXQgY2xvc2Utb24tZXhlYyBmbGFnIG9uIHNlcnZlciBzb2NrZXQuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGV4cGxhbmF0aW9uIG9uIGNyZWF0aW5nIGEgbmV3IERMTC4KCgkqIG1pc2MvdmVyc2lvbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUJldHRlciB2ZXJzaW9uIGF1dG9kZXRlY3Rpb24uCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglJbXBsZW1lbnRlZCBzdXBwb3J0IG9mIERTX0NPTlRST0wgYW5kIFdTX0VYX0NPTlRST0xQQVJFTlQgc3R5bGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogSXZhbiBkZSBTYWVkZWxlZXIgPEl2YW5kc0BzeW1wYXRpY28uY2E+CglGYWlsIHdoZW4gTFBSRUNUIGNvbnRhaW5zIG5lZ2F0aXZlIHZhbHVlcy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCU9uIENvbmZpZ3VyZU5vdGlmeSwgZmluZCB0aGUgZmlyc3QgdmlzaWJsZSB3aW5kb3cgYWJvdmUgdGhlIGN1cnJlbnQgb25lLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0ZWQgb3BlcmFuZCBzaXplcyBmb3IgdGhlICJlbnRlciIgaW5zdHJ1Y3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVBTTV9BRERQQUdFIHJldHVybnMgVFJVRSBvciBGQUxTRS4KCgkqIGRsbHMvbXNhY20zMi9idWlsdGluLmMsIGRsbHMvbXNhY20zMi9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbTMyL2RyaXZlci5jLCBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYywgZGxscy9tc2FjbTMyL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtMzIvc3RyZWFtLmMsIGRsbHMvbXNhY20zMi93aW5lYWNtLmgsIGluY2x1ZGUvbXNhY20uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSBtc2FjbTMyIHJlYWxseSBsb2FkIEFDTSBkcml2ZXJzLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJUHJldmVudCBGaWxsUmduIGZyb20gdXNpbmcgYSBOVUxMIHBvaW50ZXIuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGEgZmV3IHByb2JsZW1zIHdpdGggUmVnRW51bUtleSouCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUltcGxlbWVudGF0aW9uIG9mIHVzZXIgZGVmaW5lZCB0ZW1wbGF0ZXMuCgoJKiBkbGxzL29sZTMyL2lmcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlNYWxsb2MxNl9Db25zdHJ1Y3RvcjogbW92ZWQgSUNPTV9WVEJMKFRoaXMpIHdoZXJlIGl0IGJlbG9uZ3MuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgY2xlYXIgdGhlIGRyYXdpbmcgYXJlYSBmb3IgZXRjaGVkIHN0YXRpYyBjb250cm9scy4KCVJlcGxhY2VkIG91ciBvd24gZHJhd2luZyBzdHVmZiBpbiBldGNoZWQgc3RhdGljIGNvbnRyb2xzIGJ5IERyYXdFZGdlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglJbiByZXBvcnQgdmlldyBtb2RlIG9mIHRoZSBsaXN0dmlldyBjb250cm9sLCBpbXBsZW1lbnRlZCB0aGUKCWhvcml6b250YWwgc2Nyb2xsYmFyIGZ1bmN0aW9uYWxpdHkuCgoJKiB3aW5kb3dzL21kaS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHNtYWxsIGJ1ZyBpbiB0aGUgYmVoYXZpb3Igb2YgbWF4aW1pemVkIE1ESSBjaGlsZHJlbi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglSZXdyaXRlIG9mIEVudW1QcmludGVycy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRmlsbCBpbiB0aGUgaHduZEZyb20gZmllbGQgb2YgdGhlIE5NSERSIHN0cnVjdHVyZSB3aGVuIHNlbmRpbmcKCW5vdGlmaWNhdGlvbnMuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV2hlbiByZWFkaW5nIGEgcHJvZmlsZSBlbnRyeSByZW1vdmUgdHJhaWxpbmcgcXVvdGUgd2hlbiB0aGVyZSdzIGFuCglvcGVuaW5nIG9uZS4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVJldHVybiBjb3JyZWN0IGhlaWdodCBhbmQgd2lkdGggZm9yIHN0b2NrIGZvbnRzIGluIEdldE9iamVjdC4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYzogQ29tcGlsZSBmaXguCgoJKiBwcm9ncmFtcy93Y21kLy5jdnNpZ25vcmU6IEFkZGVkIHdtY2RyYy5oCgoJKiBkbGxzL3dpbm1tL21taW8uYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGFkZGl0aW9uIGFuZCByZW1vdmFsIG9mIGN1c3RvbSBJL08gcHJlb2NlZHVyZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJQWJleSBHZW9yZ2U8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFByb2dJREZyb21DTFNJRC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJV2l6YXJkIG1vZGUgcHJvcGVydHkgc2hlZXRzIGhhdmUgYSB0YWIgY29udHJvbC4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYywgcmVsYXkzMi9idWlsdGluMzIuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21pZGltYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9taWRpbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5zcGVjLCBkbGxzL3dpbm1tL3dhdmVtYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93YXZlbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dhdmVtYXAvbXNhY20uc3BlYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywgd2luZS5pbmk6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGJ1aWx0LWluIG1zYWNtLmRydiBhbmQgbWlkaW1hcC5kcnYgZHJpdmVycy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIGZpeGVzIGFuZCByZW9yZ2FuaXphdGlvbnMuCgktIEFkZGVkIGNoZWNrcyBmb3IgZG9jdW1lbnRhdGlvbiBpbmNvbnNpc3RlbmNpZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9tbWF1eC5jLCBtaXNjL3BvcnQuYywgbWlzYy93aW5zb2NrLmMsIG1pc2Mvd2luc29ja19hc3luYy5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIG1pc3NpbmcgY29uZmlndXJhdGlvbiAjaWY6cyBhbmQgI2luY2x1ZGVzOnMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBmaWxlcy9kb3NfZnMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvTWFrZWZpbGUuaW46IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBtYWtlIGRvZXNuJ3QgbGlrZSB1bm5lY2Vzc2FyeSBcLgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCB3aW5kb3dzL2RpbnB1dC5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2lmX21hY3Jvcy5oLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL2lmcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglHZW5lcmFsaXplZCB0aGUgdXNlIG9mIHRoZSBuZXcgSUNPTV9WRklFTEQgYW5kIElDT01fVlRCTCBtYWNyb3MuCgoJKiB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgYSBjb3VwbGUgb2YgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglBIGNyYXNoIHdvdWxkIG9jY3VyIGlmIHRoZSBmaWxlIHR5cGUgaW4gcmVwb3J0IG1vZGUgd2FzIGVtcHR5LgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ2hhbmdlZCB0aGUgaW5pdGlhbGlzYXRpb24gb2YgdGhlIEtleVN0YXRlIGFycmF5LgoKCSogbWlzYy9sc3RyLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUJldHRlciBoYW5kbGluZyBvZiBuZXdsaW5lcyBpbiBGb3JtYXRNZXNzYWdlKi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeCAoc29tZSkgYmFkIGJlaGF2aW9yIHdpdGggYnVmZmVyIHVuZGVycnVuLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFBsYXlTb3VuZCBwcm9jIGZvciBub24gUENNIGNvbnRlbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCS0gVHJlZXZpZXcgdXNlcyBDT0xPUl9XSU5ET1cgY29sb3IgaW5zdGVhZCBvZiBjbHJCayB0byBmaWxsIGJhY2tncm91bmQuCgktIFRyZWV2aWV3OiBjb2xvcnMgcmV0dXJuZWQgYnkgVFZNX0dFVCoqQ09MT1IgYXJlIG1peGVkIHVwLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglDbGlja2luZyB0aGUgY29tYm8gYm94IHdvdWxkIGNhdXNlIGEgY3Jhc2ggaWYgaXQgd2FzIGVtcHR5LgoKCSogZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIG1pc2MvcHJpbnRkcnYuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUl0IGFwcGVhcnMgdGhhdCBTdGFydERvYyBzZW5kcyB0aGUgU1RBUlRET0MgZXNjYXBlIHdpdGggdGhlIERPQ0lORk8KCXN0cnVjdHVyZSBwb2ludGVkIHRvIHdpdGggdGhlIG91dHB1dCBkYXRhIHBhcmFtZXRlci4KCgkqIGdyYXBoaWNzL2ZvbnRlbmdpbmUuYywgaWYxNjMyL2dkaS5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3R1YiBmb3IgRW5naW5lUmVhbGl6ZUZvbnRFeHQgKHVzZWQgYnkgdGhlIHdpbjk4IHBzY3JpcHQgZHJpdmVyKS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJU2VsZWN0ZWQgYnV0dG9uIHdpdGhpbiB0YWIgY29udHJvbCB3aWxsIGJlIHBhaW50ZWQgd2l0aCB0aGUgcmlnaHQKCWNvbG9yIGJydXNoLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRG8gbm90IHNlbmQgdHdvIFBTTl9LSUxMQUNUSVZFIG1lc3NhZ2VzLgoKCSogd2luZS5pbmk6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJaW5pIHZhcmlhYmxlcyBkbyBub3QgbGlrZSA7IGNvbW1lbnRzIGFmdGVyIHRoZW0gKHRoZXkgYXJlIG5vdCBzaGVsbAoJc2NyaXB0cykuIEZpeGVkIGEgdHlwbyBpbiBvbmUgb2YgdGhlIG5hbWVzLgoKTW9uIE9jdCAyNSAxNTo0MzozNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIHR3byBtYWNyb3MsIElDT01fVkZJRUxEIGFuZCBJQ09NX1ZUQkwsIHNvIHRoYXQgd2hlbiBpbXBsZW1lbnRpbmcKCWEgQ09NIGludGVyZmFjZSBvbmUgbmV2ZXIgaGFzIHRvIG5hbWUgdGhlIGxwVnRibCBmaWVsZCBleHBsaWNpdGx5LgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU3lzQWxsb2NTdHJpbmdMZW4xNiBuZWVkcyB0byBoYW5kbGUgTlVMTCBwb2ludGVycywgdG9vLgoKCSogbWVtb3J5L2xvY2FsLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglCdWcgZml4LgoKCSogdG9vbHMvZmluZF9kZWJ1Z19jaGFubmVsczogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBzbWFsbCB0eXBvcyBhbmQgc2xpZ2h0bHkgb3V0ZGF0ZWQgY29tbWVudHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2hlbGwzMiBjYWxsIFdpbjMyRGVsZXRlRmlsZSgpLCByZXF1aXJlZAoJYnkgSUU1J3MgRXhwbG9yZXIuCgoJKiBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbjoKCUFkZGVkIGRlcGVuZGVuY3kgb24gd2luZXN0dWIubwoKU3VuIE9jdCAyNCAyMjoxMzo1NSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaW5wdXQuYywgdG9vbHMvYnVpbGQuYywgdG9vbHMvZm50MmJkZi5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9maWxlLmMsIHdpbjMyL3Byb2Nlc3MuYywgcmVsYXkzMi9zbm9vcC5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3NvY2tldC5jLCBtc2Rvcy9pbnQyMS5jLCBvYmplY3RzL2dkaW9iai5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsb2FkZXIvZG9zL2Rvc21vZC5jLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvbGR0LmMsIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgY29uZmlndXJlLmluLCBkZWJ1Z2dlci9zdGFicy5jLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBjb25maWd1cmU6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgbWlzc2luZyBjb25maWd1cmF0aW9uICNpZjpzIGFuZCAjaW5jbHVkZXM6cy4KCS0gTWlub3IgY29uZmlndXJhdGlvbiByZWxhdGVkIGNoYW5nZXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSBMb2FkSG9tZVJlZ2lzdHJ5RmlsZXMgZGVmYXVsdCB0byBUUlVFLgoKCSogaW5jbHVkZS9hdXRob3JzLmgsIGluY2x1ZGUvY29tbS5oLCBpbmNsdWRlL2RhdGV0aW1lLmgsIGluY2x1ZGUvbW9udGhjYWwuaCwgaW5jbHVkZS9uZXRzcGkuaCwgaW5jbHVkZS9udHNlY2FwaS5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwgaW5jbHVkZS93aW5lL3dpbm5ldDE2LmgsIGluY2x1ZGUvd2luc3Bvb2wuaCwgaW5jbHVkZS94bWFsbG9jLmgsIHRvb2xzL21ha2VfYXV0aG9yczoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSB0aGUgaW5jbHVkZSBmaWxlcyBzZWxmLXN1ZmZpY2llbnQuCgoJKiB0b29scy93aW5hcGlfY2hlY2svKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBGaXhlZCB0aGUgbG9uZyBsb25nIHByb2JsZW0uCgktIEFkZGVkIGNvbmZpZ3VyZSBpbmNsdWRlIGNvbnNpc3RhbmN5IGNoZWNraW5nLgoJLSBBZGRlZCBwcm9ncmVzcyBpbmRpY2F0b3IuCgktIEJlZ2FuIHNwbGl0dGluZyB1cCB0aGUgd2luMTZhcGkuZGF0IGFuZCB3aW4zMmFwaS5kYXQgZmlsZXMuCgktIEFkZGVkIHZhcmlvdXMgbWlub3IgY2hlY2tzLgoJLSBNaW5vciBmaXhlcy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5zcGVjLCBkbGxzL3duYXNwaTMyL3duYXNwaTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9yZWcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc3BlYyBmaWxlIGRlY2xhcmF0aW9ucyBmb3IgYWxyZWFkeSBpbXBsZW1lbnRlZCBmdW5jdGlvbnMuCgoJKiBncmFwaGljcy9wYXRoLmMsIGlmMTYzMi9nZGkuc3BlYywgb2JqZWN0cy9jbGlwcGluZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBXaW4xNiB2YXJpYW50cyBvZiBleGlzdGluZyBXaW4zMiBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBjb21waWxlIGZpeC4KCgkqIGZpbGVzL2ZpbGUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW1vdmUgcHJlZml4aW5nIGJ5IGEgdGlsZGUgZm9yIEdldFRlbXBGaWxlTmFtZSAzMmJpdHMuCgoJKiBkZWJ1Z2dlci9leHByLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBpbmNsdWRlLgoKCSogd2luZG93cy93aW4uYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJV2FybiB1c2VycyB0byB1c2UgLXRoZSAtZGVza3RvcCBvcHRpb24gdG9nZXRoZXIgd2l0aCB0aGUgbmF0aXZlIHVzZXIgRExMcy4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBuZWVkZWQgcmVzb3VyY2Ugd2hlbiBidWZmZXIgaXMgTlVMTCBmb3IgTG9hZFN0cmluZygpLgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYywgd2luZS5pbmk6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglFbmFibGVkIHRoZSBwZXJzaXN0ZW50IGNsaXBib2FyZCBzZXJ2ZXIuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmUuaW5pOiBOYXRoYW5pZWwgPHdmaWxhcmRvQGZ1c2UubmV0PgoJSW1wcm92ZWQgcmVnaXN0cnkgaXNvbGF0aW9uIHBvc3NpYmlsaXRpZXMuCgoJKiBtdWx0aW1lZGlhLyouYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3BsaXQgdGhlIG11bHRpbWVkaWEvIGRpcmVjdG9yeSBpbnRvIGRsbHMvIHN1YmRpcmVjdG9yaWVzLgoKCSogbXVsdGltZWRpYS93aW5tbS5yYywgbXVsdGltZWRpYS93aW5tbV9QdC5yYywgcHJvZ3JhbXMvY2xvY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9jbG9jay9QdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9DaGFuZ2VMb2csIHByb2dyYW1zL25vdGVwYWQvRnIucmMsIHByb2dyYW1zL25vdGVwYWQvUHQucmMsIHByb2dyYW1zL25vdGVwYWQvV2EucmMsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi9DaGFuZ2VMb2csIHByb2dyYW1zL3Byb2dtYW4vUHQucmMsIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZToKCUd1c3Rhdm8gSnVuaW9yIEFsdmVzIDxhbHZlc0Bjb3JyZWlvbmV0LmNvbS5icj4KCU1vcmUgUG9ydHVndWVzZSBsYW5ndWFnZSBzdXBwb3J0LgoKCSogb2JqZWN0cy9kaWIuYzogTWF0dGhldyBKLiBGcmFuY2lzIDxhc2JlbEBkaWFsLnBpcGV4LmNvbT4KCUZpeGVkIHRvcC1kb3duIERJQiBoYW5kbGluZyBpbiBTdHJldGNoRElCaXRzMzIoKS4KCgkqIGluY2x1ZGUvd2luZG93c3guaDogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIG1hY3JvIGRlZmluaXRpb25zIGZvciBtZW1vcnkgYWxsb2NhdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWZvbnQuaCwgb2JqZWN0cy9mb250LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglNYWtlIHN1cmUgdGhhdCBhbGwgY2FsbHMgdXNlIHRoZSBleHRlbmRlZCBzdHJ1Y3R1cmVzIHdoaWNoIGFyZSBhCglzdXBlcnNldCBvZiB0aGUgcmVndWxhciBzdHJ1Y3R1cmVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglBZGRlZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGh1bWIgdHJhY2suCgoJKiB3aW5kb3dzL2ZvY3VzLmM6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jb20+CglEbyBub3Qgc2V0IGZvY3VzIHRvIGEgZGlzYWJsZWQgd2luZG93LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYW4gZW50cnkgaW4gdGhlIGtleWJvYXJkIHRyYW5zbGF0aW9uIHRhYmxlIGZvciBDdHJsLUJyZWFrLgoKCSogaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgc2NoZWR1bGVyL2RlYnVnZ2VyLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglOZXcgY2hhbm5lbCAnZGVidWdzdHInIHVzZWQgdG8gcHJpbnQgT3V0cHV0RGVidWdTdHJpbmcgQVBJIGNhbGxzLgoKCSogd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJUG9wdXAgd2luZG93cyB3aWxsIGJlIGhpZGRlbiB3aGVuIHdlIG1pbmltaXplIGEgbWFpbiBmcmFtZSBvciBzaG93bgoJd2hlbiB3ZSBtYXhpbWl6ZSBvciByZXN0b3JlIGEgbWluaW1pemVkIG1haW4gZnJhbWUuCgpTYXQgT2N0IDIzIDIzOjU5OjQ3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglQcm9wZXJ0eVNoZWV0IGRpZG4ndCBkZXN0cm95IHBhZ2UgZGlhbG9nJ3Mgd2luZG93IHdoaWxlIHJlbW92aW5nIHBhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZSB0aGUgaXRlbSB3aWR0aCB1cG9uIGEgbmV3IGNvbHVtbiBpbiB0aGUgaGVhZGVyIGNvbnRyb2wuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlb3JkZXIgcGFyYW1ldGVycyB0byBmaXggcG9zaXRpb24gb2YgYmFzZSByZWcgcmVsYXRpdmUgdG8gZXhjZXB0aW9uCglmcmFtZS4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46IEZpeGVkIHR5cG8uCgoJKiBpbmNsdWRlLyouaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRGVmaW5lIHRoZSBDT00gbWFjcm9zIGV2ZW4gaW4gQysrLgoKCSogY29udHJvbHMvbWVudS5jLCB3aW5kb3dzL21kaS5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBsb29wIHdpdGggV01fU1lTQ0hBUi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cGVyc29uLm5ldD4KCUZpeGVkIHRvb2x0aXBzIHBvc2l0aW9uaW5nLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBSZS1hcHBsaWVkIGxvc3QgY2hhbmdlLgoKCSogbG9hZGVyL3Rhc2suYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSWdub3JlIHdyb25nIGhJbnN0YW5jZS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglSb2JlcnQgJ0FkbWlyYWwnIENvZXltYW4gPGFkbWlyYWxAY29ybmVyLm5ldD4KCVJlcG9ydCBub24taGVyY3VsZXMgdmlkZW8uIFR1cm5lZCBvbiBpbnQgMmEuCgoJKiBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGxvYWRlci9tb2R1bGUuYywgZmlsZXMvZmlsZS5jOgoJSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJRml4ZWQgY29tcGlsaW5nIHdpdGggU1RSSUNULgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNvbT4KCVByb3BlciByZXNvdXJjZSBzdXBwb3J0IGZvciBkaWFsb2cgdGl0bGUuCgoJKiBpbmNsdWRlL2RsZ3MuaDogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJRml4ZWQgc29tZSB3cm9uZyBkZWZpbmVzLgoKCSogb2JqZWN0cy9icnVzaC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglDb3B5IGJpdG1hcHMgcHJvcGVybHkuCgoJKiBpbmNsdWRlL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21zYy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBbGxvdyBsb2FkaW5nIG9mIG1vZHVsZXMgZGVidWcgaW5mb3JtYXRpb24gYWZ0ZXIgZmlyc3QgaW52b2NhdGlvbiBvZgoJZGVidWdnZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglBZGRlZCBhIGZldyBzdHVicy4KCgkqIGluY2x1ZGUvbGlzdHZpZXcuaCwgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJSW1wbGVtZW50YXRpb24gb2YgZWRpdCBsYWJlbHMuCgoJKiBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgc29tZSBhbm9ueW1vdXMgdW5pb24gYWNjZXNzZXMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJRHJhdyB0aGUgaXRlbSB0ZXh0IGZyb20gdGhlIHRvcCBvZiB0aGUgaXRlbSByZWN0LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgYXNjZW5kaW5nIGFuZCBkZXNjZW5kaW5nIHNvcnQgb3JkZXIgZm9yIHRoZSBGaWxlIERpYWxvZy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCS0gYWRkcyBjYWxsaW5nIGFwcGxpY2F0aW9uIGRlZmluZWQgY2FsbGJhY2sgZnVuY3Rpb24gb25jZSBQcm9wZXJ0U2hlZXQKCSAgRGlhbG9nYm94IGhhcyBiZWVuIGluaXRpYWxpemVkIGp1c3QgYWZ0ZXIgY3JlYXRpbmcgdGhlIHRhYiBjb250cm9sCgktIGhhbmRsZSB0aGUgY2FzZSB3aGVuIHBzekNhcHRpb24gc3BlY2lmaWVzIGEgcmVzb3VyY2UgaW5zdGVhZCBvZiBhIHN0cmluZwoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gcmVtb3ZlZCBhbGwgdW5uZWNlc3NhcnkgIndpbmFwaSIgZnJvbSBpbnRlcm5hbCBfSUwqIGZ1bmN0aW9ucwoJLSBiZXR0ZXIgcGFyYW1ldGVyIGNoZWNraW5nIGZvciBzaGVsbGZvbGRlcgoJLSByZW1vdmVkIGRlYWQgY29kZSBmcm9tIHNodl9iZ19jb250ZXh0bWVudQoKCSogZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvZGRyYXcuaDoKCUppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUFkZGVkIGFub3RoZXIgYW5vbnltb3VzIHVuaW9uIHVzaW5nIHRoZSBEVU1NWVVOSU9OTkFNRSBzdHlsZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJUHJvcGVybHkgY29weSB0ZXh0IGludG8gdXNlciBzdXBwbGllZCBidWZmZXIuCgoJKiBtaXNjL3dpbnNvY2suYywgcmVsYXkzMi93c29jazMyLnNwZWMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3NvY2suYywgaWYxNjMyL3dpbnNvY2suc3BlYywgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvd2luc29jay5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjL21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV2luc29jayByZXdyaXRlLiBTb2NrZXRzIGFyZSBub3cgcHJvcGVyIHdpbjMyIGhhbmRsZXMuCglJbnRlcm5hbCBzdHJ1Y3R1cmVzIGFyZSBub3cgcmVhbGx5IGludGVybmFsLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJVGFiIGNvbnRyb2wgZG9lc24ndCByZWZyZXNoIHRhYiBhcmVhIG9uIFRDTV9TRVRDVVJTRUwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUltcGxlbWVudGVkIFN0clJDaHJBLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2V4cHIuYywgaW5jbHVkZS9kZWJ1Z2dlci5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFBlcmZvcm0gcHJvcGVyIHByb2Nlc3Mgc2h1dGRvd24gb24gJ3F1aXQnIGFuZCBlcnJvci4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTdHViIE9wZW5UaHJlYWRUb2tlbiAmIE9wZW5Qcm9jZXNzVG9rZW4gZm9yIGZhaWx1cmUgaW4gV2luOXggbW9kZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglGaXhlZCBhIHNtYWxsIHR5cG8uCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY29tPgoJUHJvdGVjdCBhZ2FpbnN0IHdyb25nIHJldHVybiB2YWx1ZSBmcm9tIFdNX0lOSVRESUFMT0cuCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgYW4gaWxsZWdhbCBjaGFyYWN0ZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJTm93IGluaXRzIHRoZSBwb2xpY3kgY2FjaGUgd2hlbiBzaGVsbDMyIGlzIGZpcnN0IGluc3RhbnRpYXRlZC4KCU1hdGNoZXMgV2luZG96ZSBiZWhhdmlvci4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuaDoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJUmVhbCBpbXBsZW1lbnRhdGlvbiBvZiBTSFJlc3RyaWN0ZWQoKSwgY2xhcmlmaWVkIFNISW5pdFJlc3RyaWN0ZWQoKSdzCglyb2xlIGEgbGl0dGxlLCBhZGRlZCBwb2xpY3kgZGF0YSB0YWJsZS4KCgkqIGRsbHMvb2xlMzIvaWZzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIHNlZ21lbnRlZCBscHZ0YmwgcG9pbnRlciBmb3IgSU1hbGxvYzE2IGludGVyZmFjZSwgbm90IGxpbmVhciBvbmUuCgoJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglSZXBsYWNlZCBhIFggY2FsbCB3aXRoIGEgVFNYIGNhbGwgaW4gWERSVl9NT1VTRV9TZXRDdXJzb3IoKS4KCgkqIGRsbHMvY29tY3RsMzIvcnNyYy5yYzogVWxyaWNoIEN6ZWthbGxhIDx5YmljdWJ1a0B1bWFpbC5jb3JlbC5jb20+CglUaGUgcHJvcGVydHkgc2hlZXQgZGlhbG9nIG5lZWRzIGZsYWcgV1NfVklTSUJMRS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJU2V0IHRoZSBkZWZhdWx0IHZpZXcgYnV0dG9uIHRvIExpc3QgaW4gdGhlIEZpbGVEaWFsb2cuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogZG9uJ3QgdXNlIEdldE1vZHVsZUhhbmRsZTE2IGluIExvYWRNb2R1bGUxNi9ORV9DcmVhdGVQcm9jZXNzLgoKCSogZGVidWdnZXIvdHlwZXMuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwb3RlbnRpYWwgY3Jhc2ggaW4gc3RyaW5nIHZhcmlhYmxlIHByaW50aW5nLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgV01fR0VURk9OVCBzdXBwb3J0LgoKCSogaW5jbHVkZS9tYWluLmgsIGxvYWRlci9tYWluLmMsIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGRvbid0IGNhbGwgRXhpdFByb2Nlc3MoKSBiZWZvcmUgU1lTTEVWRUxfSW5pdCgpLgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBidWdzIChtbWlvT3BlbiB3aXRoIDE2LzMyIGJpdCBzdHJhbmdlbmVzcywgbW1pb0FzY2VuZCAmCgltbWlvRGVzY2VuZCBvZmZzZXQgYW5kIGFsaWdubWVudCBpc3N1ZXMpLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJV2UgYXJlIHN1cHBvc2VkIHRvIGRlbGV0ZSB0aGUgcGFsZXR0ZSBvYmplY3Qgd2l0aCB0aGUgRGVsZXRlT2JqZWN0CglmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglMaXN0dmlldyBpdGVtcyB3aWxsIGJlIGRyYXduIHdpdGggdGhlIHJpZ2h0IGl0ZW0gZGltZW5zaW9ucy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3RleHQuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVNvbWUgc21hbGwgY29ycmVjdGlvbnMgdG8gdGhlIEV4dFRleHRPdXQgZnVuY3Rpb24uCgoJKiBkbGxzL29sZTMyL29sZTIuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBzdXJlIHRoYXQgdGhlIGRyb3AgZWZmZWN0IG9mIGEgRG5EIG9wZXJhdGlvbiBpcyBzZXQgdG8KCURST1BFRkZFQ1RfTk9ORSBpZiB0aGUgdXNlciBjYW5jZWxsZWQgdGhlIG9wZXJhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBpbmNsdWRlL2FuaW1hdGUuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRmlyc3Qgd29ya2luZyB2ZXJzaW9uLgoKCSogbXVsdGltZWRpYS9taXhlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHRoZSBtdXRlIGNhcGFiaWxpdHkgdG8gbW9zdCBjb250cm9sIGxpbmVzLgoKCSogd2luZG93cy93aW4uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVVzZSB0aGUgbW9kdWxlIGhhbmRsZSwgaWYgQ3JlYXRlV2luZG93RXggaXMgY2FsbGVkIHdpdGgKCWhJbnN0YW5jZT09TlVMTC4KCgkqIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBwcm90b3R5cGVzIGZvciBTdHJSZXRUb0J1ZihBfFcpLgoKV2VkIE9jdCAxMyAxNjoxNzoyMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmU6CglBZGRlZCBQdC5zLgoKCSogb2JqZWN0cy9kaWIuYzogQmFja2VkIG91dCBwcmV2aW91cyBjaGFuZ2UgKGJyZWFrcyB3aXRoIG1ldGFmaWxlcykuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbnNvY2suaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc29ja2V0IGludGVyZmFjZSB0byB3aW5lc2VydmVyLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbWFpbi5jLCBtaXNjZW11L21haW4uYywgd2luZS5pbmk6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvcnJlY3QgZmlsZW5hbWUgZm9yIGtlcm5lbCBtb2R1bGUgaXMgS1JOTDM4Ni5FWEUuCgoJKiBkbGxzL3dpbnNwb29sL3dpbnNwb29sLnNwZWMsIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgKGFuZCBub3cgcmVxdWlyZWQpIGZpbGVuYW1lIGRpcmVjdGl2ZS4KCgkqIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGZpbGVuYW1lIHRvIDMyIGJpdCBidWlsdGluIG1vZHVsZSBkZXNjcmlwdG9ycy4KCgkqIGlmMTYzMi9idWlsdGluLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeCBsb2FkaW5nIG9mIG1vZHVsZXM6IG5vdyBzZWFyY2gga2V5IGlzIG1vZHVsZSdzIGZpbGVuYW1lLCBub3QKCW1vZHVsZSdzIG5hbWUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJV2hlbiBhbiBlcnJvciBvY2N1cnJlZCBpbiBhIHByb3BlcnR5IHNoZWV0IGJlY2F1c2Ugb2YgaW52YWxpZCBkYXRhLAoJY2xpY2tpbmcgb24gYW5vdGhlciB0YWIsIHdvdWxkIGFjdGl2YXRlIHRoZSBuZXcgdGFiIGJ1dCBrZWVwIHRoZQoJb3JpZ2luYWwgcHJvcGVydHkgc2hlZXQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGltcGxlbWVudGVkIHNvcnRpbmcgdGhlIGxpc3R2aWV3IGJ5IGNsaWNraW5nIG9uIHRoZSBjb2x1bW4gaGVhZGVyCgktIGltcGxlbWVudGVkIHRoZSBjb250ZXh0IG1lbnUgZW50cnlzIGZvciBzb3J0aW5nCgktIHNvbWUgbW9yZSBmdW5jdGlvbnMgdG8gZ2F0aGVyIGRhdGEgZm9ybSBwaWRscwoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglSZW1vdmVkIGxpbmtpbmcgYnkgR2V0UHJvY0FkZHJlc3MgZm9yIFN0clJldFRvQnVmIHNpbmMgbm90IGFsbAoJdmVyc2lvbnMgb2Ygc2hsd2FwaSBleHBvcnRpbmcgdGhpcyBmdW5jdGlvbi4KCgkqIGxvYWRlci9tb2R1bGUuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCVJlbW92ZXMgZXh0cmFuZW91cyBjb21wYXJpc29uIG9mIGRhdGEgcG9pbnRlZCB0byBieSB0aGUgcmVsb2NhdGlvbgoJb2Zmc2V0IHdoZW4gbm8gcmVsb2NhdGlvbiBlbnRyaWVzIGV4aXN0LgoKCSogaWYxNjMyL3dwcm9jcy5zcGVjLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBsc3QuZGU+CglXUFJPQ1MuRU5UUllBRERSUFJPQyBuZWVkcyB0byByZXR1cm4gc29tZXRoaW5nIGluIENYIHRvbyAoZml4ZXMKCUJMSU5LRVIgc2VsZmV4dHJhY3RpbmcgZXhlY3V0YWJsZXMpLgoKCSogd2luZG93cy9kaWFsb2cuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIEVuZERpYWxvZyB0byBiZWhhdmUgbGlrZSBhcyBpbiBXaW5kb3dzLgoJQ2FsbCBTZXRXaW5kb3dQb3MgaW5zdGVhZCBvZiBTaG93V2luZG93IGluIEVuZERpYWxvZy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCBXSU5QT1NfQ2FuQWN0aXZhdGUgdG8gbm90IHRvIGNvbnNpZGVyIFdTX1ZJU0lCTEUgc3R5bGUuCglDb2RlIGZvciBhY3RpdmF0aW5nIGFuZCBzZXR0aW5nIGZvY3VzIHRvIG90aGVyIHdpbmRvd3Mgd2hlbiBhIHdpbmRvdwoJaXMgaGlkZGVuLCBpcyBtb3ZlZCB0byBTaG93V2luZG93IGZyb20gU2V0V2luZG93UG9zLgoJQWN0aXZhdGUgdGhlIHRvcCBsZXZlbCB3aW5kb3cgaWYgaXQncyBub3QgYWN0aXZlIGluIFNob3dXaW5kb3coU1dfU0hPVykuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgWDExRFJWX0RJQl9TZXRJbWFnZUJpdHMgd2hlbiBjYWxsZWQgZm9yIFJMRSBlbmNvZGVkIGRpYnMuCgoJKiBvYmplY3RzL2RpYi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU9wdGltaXplZCBTdHJldGNoRElCaXRzIHRvIGNhbGwgU2V0RElCaXRzVG9EZXZpY2UgKHdoZW4gc3JjICYgZHN0CglkaW1lbnNpb25zIGFyZSBlcXVhbCkuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL1B0LnJjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svUHQucmM6CglHdXN0YXZvIEp1bmlvciBBbHZlcyA8YWx2ZXNAY29ycmVpb25ldC5jb20uYnI+CglBZGRlZCBQb3J0dWd1ZXNlIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXNlIHRoZSBDT00gbWFjcm9zIHJhdGhlciB0aGFuIGRpcmVjdGx5IGFjY2Vzc2luZyB0aGUgbHB2dGJsIGZpZWxkLgoKCSogaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBtaXNjL2xzdHIuYywgaWYxNjMyL3VzZXIuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBMb2FkU3RyaW5nMTYgZm9yIEZvcm1hdE1lc3NhZ2UxNiBhbmQgaGFuZGxlCglGT1JNQVRfTUVTU0FHRV9BTExPQ0FURV9CVUZGRVIgZmxhZy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3RleHQuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVNvbWUgYWRqdXN0bWVudHMgdG8gRXh0VGV4dE91dC4KCgkqIGluY2x1ZGUvcHNkcnYuaCwgZ3JhcGhpY3MvcHNkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgY2xpcHBpbmcgZm9yIHRoZSBwb3N0c2NyaXB0IGRyaXZlciBhbmQgdHVybmVkIGl0IG9uIChieSBzZXR0aW5nCglQU0RSVl9TZXREZXZpY2VDbGlwcGluZyBpbiB0aGUgZnVuY3Rpb24gdGFibGUpLgoKCSogZmlsZXMvZHJpdmUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWNjb3VudCBmb3IgdGhlIHRyYWlsaW5nIE5VTEwgaW4gR2V0TG9naWNhbERyaXZlU3RyaW5nc0EuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIGEgdHlwbyBpbiBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogWm9sdGFuIEtvdmFjcyA8b3JpdGVsZUBhbGFybWl4Lm5ldD4KCUFkZGVkIEh1bmdhcmlhbiBrZXlib2FyZCBzdXBwb3J0LgoKCSogd2luZG93cy9tZGkuYywgd2luZG93cy93aW5wb3MuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglXZSBoYXZlIHRvIGFjdGl2YXRlIE1ESSBjaGlsZCB3aW5kb3dzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBHZXR8U2V0UHJvcEEgdG8gc3RvcmUgbFBhcmFtIHRvIHJldHJpZXZlIHRoZSBPUEVORklMRU5BTUUxNiBmb3IgYQoJaFduZC4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdCB1c2FnZSBvZiBhIHNjcmF0Y2ggYXJyYXkgaW4gWDExRFJWX1BvbHlCZXppZXIuCgoJKiBjb250cm9scy9jb21iby5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCU1ha2UgV01fR0VUVEVYVExFTkdUSCByZXR1cm4gbGVuZ3RoIGZvciBkcm9wZG93bmxpc3QgY29tYm9zLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgRmlsbFJlY3QgaW4gdGhlIG93bmVyZHJhd24gYnV0dG9uIHByb2NlZHVyZS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJTWFrZSBzdXJlIHRoZSBGb2N1cyBPdXQgd2luZG93IGlzIHN0aWxsIHRoZSBGb3JlZ3JvdW5kIHdpbmRvdyBiZWZvcmUKCWRvaW5nIFNldEZvcmVncm91bmRXaW5kb3coMCkgaW4gRXZlbnRfRm9jdXNPdXQuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZXMgcHJvYmxlbXMgd2l0aCBjb2xvciBkcmlmdCB3aGVuIHN3aXRjaGluZyB0by9mcm9tCglsb2dpY2FsL3BoeXNpY2FsIGNvbG9ycy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJTW91c2UgcG9zaXRpb24gaXMgc2lnbmVkLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVNldCB0aGUgQ09MT1JfM0RMSUdIVCBzeXN0ZW0gY29sb3IgdG8gdGhlIHJpZ2h0IHdpbmRvdyBkZWZhdWx0IHZhbHVlLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglTbWFsbCBoYWNrIHRvIGNoZWNrIGlmIHdlIG5lZWQgdG8gcmVsb2NhdGUgdGhlIFRMUyBkaXJlY3Rvcnkgb3Igbm90Cgkoc29tZSBzZWVtIHRvIG5lZWQgdGhpcyBwb2ludGVyIHJlbG9jYXRlYWJsZSwgc29tZSBhbHJlYWR5IGRvIHJlbG9jYXRlCglpdCBieSB0aGVtc2VsdmVzKS4KCgkqIE1ha2UucnVsZXMuaW46IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZWxpbmsgc3ViZGlyZWN0b3J5IG9iamVjdHMgb24gTWFrZWZpbGUuaW4vTWFrZS5ydWxlcy5pbiBjaGFuZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBsc3QuZGU+CglDaGVjayBmb3IgTlVMTCBwdHIgaW4gUHJvcHNoZWV0X1JlbW92ZVBhZ2UgKFhpbmcgRFZEIFBsYXllcikuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBsc3QuZGU+CglEb24ndCByZWYgTlVMTCBwdHJzIGluIGRlYnVnLgoKCSogd2luZG93cy9kaW5wdXQuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAbHN0LmRlPgoJSWYgdGhlIGpveWRldmljZSBpcyBub3QgcHJlc2VudCwgZG8gbm90IGNyZWF0ZSBhIERpcmVjdElucHV0RGV2aWNlLgoKCSogZGxscy9jb21tZGxnL2NvbW1kbGcuc3BlYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTWFwIFByaW50RGxnMTYgdG8gUHJpbnREbGdBLgoKCSogZGxscy9zaGVsbDMyL3NobG1lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYWRlIFRyYWNrUG9wdXBNZW51IHdpdGggVFBNX1JFVFVSTkNNRCByZXR1cm5pbmcgdGhlIGlkIGluc3RlYWQgb2YKCXRydWUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVByZXZlbnQgc2VsZiByZWZlcmVuY2luZyBuZXh0IHBvaW50ZXIgZHVyaW5nIGluc2VydC4KCgkqIG9sZS9ubHMvZnJhLm5sczogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5pdGlvbnMuCgoJKiBtdWx0aW1lZGlhL3dpbm1tLnJjLCBtdWx0aW1lZGlhL3dpbm1tX05sLnJjOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGRlZCBEdXRjaCB0byB0aGUgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSBNQ0kuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9pbnRlcm5hdGlvbmFsaXNhdGlvbjoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJVXBkYXRlZCBzdGF0dXMgb2YgaW50ZXJuYXRpb25hbGlzYXRpb24uCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiAqRG9uJ3QqIHJlc29sdmUgUEUgaW1wb3J0cyBpZiBhc2tlZCBub3QgdG8gLi4uCgoJKiBtaXNjL2RkZW1sLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBEZGVOYW1lU2VydmljZSB3YXMgYnJva2VuLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFdoZW4gbG9hZGluZyBhbiBleGVjdXRhYmxlIG1vZHVsZSBmYWlscywgZG9uJ3QgcGVyZm9ybSBtb2R1bGUKCWNsZWFudXAgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nIHRhc2sgaXMgZGVzdHJveWVkLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglNb3ZlZCBiaXRtYXAgcmVzb3VyY2UgdG8gbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgcmVzb3VyY2UgZmlsZS4KCgkqIG1pc2MvdmVyc2lvbi5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHdhcm5pbmcgZm9yIGZ1dHVyZSBWRVJTSU9OX0dldFZlcnNpb24oKSAobWlzLSl1c2VycyBhbmQgbWFkZQoJT1NWRVJTSU9OSU5GTyB3YXJuaW5nIG1vcmUgZGV0YWlsZWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgc3R1YnMgZm9yIFJldm9rZUFjdGl2ZU9iamVjdCwgR2V0QWN0aXZlT2JqZWN0LCBmaXhlZAoJUmVnaXN0ZXJBY3RpdmVPYmplY3Qgc3R1YiBhcmd0eXBlcy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgZ2VybWFuIGtleWJvYXJkIGxheW91dCB3aXRoICJub2RlYWRrZXlzIiBvcHRpb24gZW5hYmxlZCAoanVzdCB0bwoJYXBvc3Ryb3BoZXMgYXJlIHN3aXRjaGVkKS4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglTdHViIGZvciBWaWRlb0NhcERyaXZlckRlc2NBbmRWZXIuCgoJKiBtc2Rvcy9pbnQyMS5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVwbGljYXRlIENyZWF0ZURpcmVjdG9yeSgpIExhc3RFcnJvciB3b3JrYXJvdW5kIGZvciB0aGUgTEZOIHBhcnQuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBbHNvIGVzY2FwZSBjaGFyYWN0ZXJzID49MHg4MCB3aXRoaW4gdGhlIHdpbmVyZWdpc3RyeSBzYXZlZmlsZS4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJRG9uJ3QgdXNlIG1hbGxvYy9mcmVlIGluIHdpbmFzcGkzMi4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglVc2UgMSBtYWNybyBmb3IgcmdiYml0ZGVwdGggLT4gYnl0ZSBkZXRlcm1pbmF0aW9uLgoJeHNobS9pbWFnZSBjcmVhdGlvbiBub3cgdXNlcyAxLzggb2YgdGhlIHNwYWNlIGZvciBldmVyeSBpbWFnZS4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZXBsYWNlZCBkb3VibGUgQ2hhbmdlRGlzcGxheVNldHRpbmdzQSBieSAoRXgpW0FXXS4KCldlZCBTZXAgMjkgMTI6MTY6MTYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERvbid0IGNhbGwgR2V0VmVyc2lvbkV4QSB0b28gZWFybHksIHRvIGF2b2lkIGJyZWFraW5nCglhdXRvbWF0aWMgZW11bGF0ZWQgV2luZG93cyB2ZXJzaW9uIGRldGVjdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBpbmNsdWRlL29sZWF1dG8uaCwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpcnN0IGltcGxlbWVudGF0aW9uIG9mIExvYWRUeXBlTGliRXgoKS4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0dWIgZm9yIFdNTU1JRElSVU5PTkNFIGNhbGxlZCBieSBtaWRpbWFwLmRydi4KCgkqIG1pc2Mvd2luc29jay5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNldCByZWZjb3VudGVyIHRvIDEgb24gaW5pdGlhbCBpbml0IG9yIFdTQVN0YXJ0dXAvV1NBU3RhcnR1cCB3aXRoCglmb2xsb3dpbmcgV1NBQ2xlYW51cCB3aWxsIGFscmVhZHkgZnJlZSB0aGUgc3RydWN0dXJlcy4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlIERpcmVjdFNvdW5kIG9iamVjdCBldmVuIHdpdGhvdXQgc291bmRkZXZpY2UuIEdhbWVzIGNhbiBiZQoJcGxheWVkIHdpdGhvdXQgc291bmQsIGJ1dCBub3Qgd2l0aG91dCBEaXJlY3RTb3VuZCBvYmplY3QgKHRlc3RlZCB3aXRoCglNb25rZXkgSXNsYW5kIDMpLgoKCSogZGxscy9vbGVkbGcvb2xlZGxnLnNwZWMsIGluY2x1ZGUvbnRkZGsuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCB0b29scy9idWlsZC5jLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIG9mIHRoZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpLWNoZWNrLCBieSBhZGRpbmcgYXJndW1lbnRzCgl0byB2YXJhcmdzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgYWJpbGl0eSB0byBjYWxsIHdpbmFwaV9jaGVjayBmcm9tIHRoZSBNYWtlZmlsZXMuCgoJKiBtc2Rvcy9kcG1pLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW9kaWZpY2F0aW9uIGR1ZSB0byBwcm9ibGVtcyB3aXRoIHdpbmFwaS1jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9wYXJzZXIucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRhcHRlZCB0byBjaGFuZ2VzIGluIFdpbmUuCgktIE1pbm9yIGltcHJvdmVtZW50cy4KClR1ZSBTZXAgMjggMTY6NDA6MDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvb2JqZWN0Lmg6CglNYWRlIGV2ZW50IG1hbmlwdWxhdGlvbiByb3V0aW5lcyBwdWJsaWMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC8uY3ZzaWdub3JlLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBpbml0LmgsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LnNwZWMsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXksIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW4sIG11bHRpbWVkaWEvZHBsYXkuYywgcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL2RwbGF5LnNwZWMsIHJlbGF5MzIvZHBsYXl4LnNwZWMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIE1vdmVkIGRwbGF5IGFuZCBkcGxheXggdG8gYSBwcm9wZXIgaG9tZSBpbiB0aGUgZGxscyBkaXJlY3RvcnkuCgktIEltcGxlbWVudGVkIG5ldyBEaXJlY3RQbGF5NCBhbmQgRGlyZWN0UGxheUxvYmJ5MyBpbnRlcmZhY2VzLgoJLSBJbXBsZW1lbnRlZCBhIGNsYXNzIGZhY3RvcnkgZm9yIGRwbGF5IGFuZCBkcGxvYmJ5LiBDT00gaW50ZXJmYWNlcwoJICBub3cgd29yayBmb3IgZHAgYW5kIGRwbC4KCS0gQWRkZWQgYSBmZXcgbW9yZSBlbnRyaWVzIHRvIGRwbGF5eC5zcGVjIGZpbGVzLiBIb3cgZG8geW91IGZpbmQgdGhlCgkgIG9yZGluYWxzPyBJIGp1c3QgZ3Vlc3NlZCA6KAoJLSBTZXBlcmF0ZWQgRGlyZWN0UGxheSBhbmQgRGlyZWN0UGxheUxvYmJ5IGltcGxlbWVudGF0aW9uIGludG8gc2VwYXJhdGUgZmlsZXMuCgktIEluY2x1ZGVkIHNvbWUgbWlzc2luZyBoZWFkZXIgZmlsZSBkZWZpbml0aW9ucy4KCS0gSW1wbGVtZW50ZWQgdGhlIGRwbGF5IGRsbCBpbiB0ZXJtcyBvZiB0aGUgZHBsYXl4IGRsbC4gSSBoYXZlbid0CgkgIHRlc3RlZCBpdCBzbyBpdCBtYXkgbm90IHdvcmsuLi4KCS0gQSBmZXcgYnVnIGZpeGVzIGFuZCBhIGxpdHRsZSBuZXcgaW1wbGVtZW50YXRpb2UubgoJLSBVcGRhdGVkIGRvY3VtZW50IHdpdGggYSBtb3JlIGRldGFpbGVkIGltcGxlbWVudGF0aW9uIHBsYW4uCgoJKiB3aW5kb3dzL3dpbi5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVJld3JpdGUgdGhlIFNob3dPd25lZFBvcHVwcyBmdW5jdGlvbiB3aXRoIGEgc2FmZXR5IGFsZ29yaXRobS4KCgkqIGNvbnRyb2xzL21lbnUuYzogS2FybCBMZXNzYXJkIDx5YmljdWJ1a0B1bWFpbC5jb3JlbC5jb20+CglNYWtlIEV4ZWNGb2N1c2VkSXRlbSByZXR1cm4gLTEgb24gZmFpbHVyZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBDaGFuZ2VkIHJldHVybiBjb2RlIGZvciBmYWlsdXJlIG9uICpfRGxsR2V0Q2xhc3NPYmplY3QgdG8KCSAgQ0xBU1NfRV9DTEFTU05PVEFWQUlMQUJMRSBmcm9tIEVfTk9UQVZBSUxBQkxFIGFzIGRvY3VtZW50ZWQuCgktIFJlcGxhY2VkIG1lbWNtcHMgd2l0aCBlcXVpdmFsZW50IElzRXF1YWxDTFNJRCBvciBJc0VxdWFsR1VJRCBtYWNyb3MuCgktIENoYW5nZWQgInJldHVybiAwOyIgd2l0aCBTX09LIG9yIERTX09LIGFzIGFwcHJvcHJpYXRlLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJU3VwcG9ydCBUUkFQX3NpZyBmb3IgRnJlZUJTRCAod2l0aCB0aGUgaGVscCBvZiBKdWVyZ2VuIExvY2spLgoKCSogbG9hZGVyL21vZHVsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZW1lbWJlciB0aGUgYWxsb2NhdGVkIHN0cmluZyB0byBmcmVlIGl0LgoKCSogY29udHJvbHMvbWVudS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZvcmNlIHJlY2FsY3VsYXRpb24gb2YgbWVudSB3aGVuIGNhbGxpbmcgSW5zZXJ0TWVudUl0ZW0uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgMiBXaW45OCBieS1vcmRpbmFsIFNIRUxMMzIgcm91dGluZXMuICBIZWxwcyBXaW45OAoJRXhwbG9yZXIgd29yayBiZXR0ZXIuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHR5cG8gaW4gaERydiBmb3Igc2VuZGluZyBtZXNzYWdlLgoKTW9uIFNlcCAyNyAxMzozODo1NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tbWRkay5oLCBtdWx0aW1lZGlhL21jaS5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGxhc3QgZGVwZW5kYW5jaWVzIGJldHdlZW4gTUNJIGRyaXZlcnMgYW5kIFdJTk1NL01NU1lTVEVNCglETExzLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUdvdCByaWQgb2YgaGFjayBvbiBXQVZFSERSJ3MgJiBNSURJSERSJ3MgcmVzZXJ2ZWQgZmllbGQgZm9yIDE2LzMyIGJpdAoJZGlzY3JpbWluYXRpb24uCglGaXhlZCBhIGZldyBzZWdwdHIvbGluZWFyIGFkZHJlc3MgYnVncyBpbiBXQVZFSERSL01JRElIRFIgaGFuZGxpbmcuCgoJKiBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1hdXguYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hlY2sgZm9yIE9TUyBkcml2ZXIgcHJlc2VuY2UgYW5kIHJldHVybiBlcnJvciBhY2NvcmRpbmdseS4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUdvdCByaWQgb2YgaGFjayBvbiBNSURIRFIncyByZXNlcnZlZCBmaWVsZCBmb3IgMTYvMzIgYml0CglkaXNjcmltaW5hdGlvbi4KCgkqIG11bHRpbWVkaWEvbG9sdmxkcnYuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCB3aXRoIG1hcHBlciBsb2FkaW5nLgoJR290IHJpZCBvZiBoYWNrIG9uIFdBVkVIRFIncyByZXNlcnZlZCBmaWVsZCBmb3IgMTYvMzIgYml0CglkaXNjcmltaW5hdGlvbi4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglHb3QgcmlkIG9mIGhhY2sgb24gV0FWRUhEUidzIHJlc2VydmVkIGZpZWxkIGZvciAxNi8zMiBiaXQKCWRpc2NyaW1pbmF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLnRleGluZm86IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVHlwbyBjb3JyZWN0aW9uLgoKCSogbG9hZGVyL2xpYnJlcy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglGaXggaW50ZWdlciBiYXNlZCByZXNvdXJjZSBpZCBhc3N1bXB0aW9uLgoJQWRkIHN1cHBvcnQgZm9yIHN0cmluZyBiYXNlZCB0eXBlIGlkcy4KCgkqIGluY2x1ZGUvd2luc29jazIuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzb21lIGJhc2ljIFdpbnNvY2syIGRlZmluaXRpb25zLgoKCSogc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvc2VsZWN0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgRVhDRVBUX0VWRU5UIHRvIHdpbmVzZXJ2ZXIgc2VsZWN0IGxvb3AuCgoJKiBmaWxlcy9kb3NfZnMuYzogUGV0ZXIgR2FudGVuIDxnYW50ZW5AdW5pLWJyZW1lbi5kZT4KCUZpeCBmb3IgVkZBVF9JT0NUTF9SRUFERElSX0JPVEguCgoJKiBkbGxzL3dpbmcvd2luZ19tYWluLmM6IFBldGVyIEdhbnRlbiA8Z2FudGVuQHVuaS1icmVtZW4uZGU+CglTbWFsbCB3aW5nIGVuaGFuY2VtZW50LgoKCSogY29udHJvbHMvZWRpdC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVJldHVybiBrZXkgc2hvdWxkIG5vdCBiZSBpZ25vcmVkIGluIG11bHRpbGluZSBlZGl0IGV2ZW4gaWYKCUVTX1dBTlRSRVRVUk4gZmxhZyBpc24ndCBzZXQuCgoJKiBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2dkaW9iai5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRFB0b0xQIG5lZWRzIHRvIHJvdW5kIHRoZSByZXN1bHQuCglGaXhlZCBNdWxEaXYgdG8gZGVhbCBiZXR0ZXIgd2l0aCBuZWdhdGl2ZSBudW1iZXJzLgoKCSogd2luZG93cy9wYWludGluZy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglyY1BhaW50IGhhcyB0byBiZSByZXR1cm5lZCBpbiBsb2dpY2FsIGNvb3JkaW5hdGVzIGJ1dCB3YXMgaW50ZXJzZWN0ZWQKCXdpdGggYSBjbGllbnQgcmVjdGFuZ2xlIGluIGRldmljZSBjb29yZGluYXRlcy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJRml4ZWQgR2V0UmFuZG9tUmduLgoKCSogZmlsZXMvZHJpdmUuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglNYWRlIEdldEN1cnJlbnREaXJlY3RvcnkgcmV0dXJuIGxvbmcgbmFtZSBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCgoJKiBpbmNsdWRlL2J1dHRvbi5oLCBjb250cm9scy9idXR0b24uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVVzZSBhbiBleHRyYSBiaXQgaW4gdGhlIGJ1dHRvbiBzdGF0dXMgYnl0ZSB0byBmbGFnIHdoZXRoZXIgdGhlCglEZWZCdXR0b25XbmRQcm9jIHNob3VsZCBwcm9jZXNzIHRoZSBXTV9MQlVUVE9OVVAgbWVzc2FnZS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGxvYWRlci9zaWduYWwuYywgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvbWFpbi5jOgoJTW92ZWQgYWxsIHNpZ25hbCBzdXBwb3J0IHRvIGEgbmV3IHBsYXRmb3JtLXNwZWNpZmljIGZpbGUuCglNYWtlIHVzZSBvZiB0aGUgcGVyLXRocmVhZCBzaWduYWwgc3RhY2sgKEp1ZXJnZW4gTG9jaykuCglGaXhlZCAlZnMgaW4gc2lnbmFsIGhhbmRsZXIgZm9yIG5vbiBGU19zaWcgY2FzZSAoVWxyaWNoIFdlaWdhbmQpLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaHUgU2VwIDIzIDE2OjE0OjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvLmN2c2lnbm9yZSwgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L3dpbmVjbGlwc3J2LmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGNsaXBib2FyZCBzZXJ2ZXIuCgoJKiB0b29scy9BdHRpYy93aW5hcGktY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svcGFyc2VyLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMTZhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzJhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSBhIG5ldyBpbXByb3ZlZCB2ZXJzaW9uIG9mIHdpbmFwaS1jaGVjayBpbiBwZXJsLgoKCSogbXNkb3MvaW50MjEuYzoKCUltcGxlbWVudGVkIHVwcGVyY2FzaW5nIGZ1bmN0aW9ucyAoYmFzZWQgb24gYSBwYXRjaCBieSBSb2JlcnQKCSdBZG1pcmFsJyBDb2V5bWFuKS4KCgkqIHdpbmRvd3MvdXNlci5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc3RyZXNzL3N0cmVzc19tYWluLmMsIGlmMTYzMi9kdW1teS5jLCBpbmNsdWRlL3N0cmVzcy5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgbWlzYy9wcmludGRydi5jLCB3aW5kb3dzL2lucHV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgb2YgdGhlIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGktY2hlY2suCgoJKiBtaXNjL2NvbW0uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb2RpZmljYXRpb24gZHVlIHRvIHByb2JsZW1zIHdpdGggd2luYXBpLWNoZWNrLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglXU19QT1BVUCB3aW5kb3dzIChleGNsdWRpbmcgdGhlIFdTX1BPUFVQV0lORE9XIHdpbmRvd3MpIHNob3VsZCBiZQoJY2xvc2VkIGFmdGVyIGxvb3NpbmcgdGhlIGZvY3VzLgoKCSogb2JqZWN0cy9kaWIuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQ3JlYXRlRElCaXRtYXAgY3JlYXRlcyBhIG1vbm9jaHJvbWUgYml0bWFwIG9ubHkgd2hlbiB0aGUgZmlyc3QgY29sb3Igb2YgdGhlCgljb2xvcm1hcCBpcyBibGFjayBmb2xsb3dlZCBieSB3aGl0ZS4gT3RoZXJ3aXNlIGl0IGNyZWF0ZXMgYSBjb2xvciBiaXRtYXAuCgoJKiB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglOb24gYWN0aXZlIHdpbmRvdyBzaG91bGQgYmUgYWN0aXZhdGVkIHdoZW4gaXQgZ2V0cyBhbnkKCWNsaWVudC9ub24tY2xpZW50IGRvdWJsZS9zaW5nbGUgbGVmdC9tZWRpdW0vcmlnaHQgbW91c2UgY2xpY2socykuCgpXZWQgU2VwIDIyIDE2OjUzOjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIFdJTkVPU1MgZGVzY3JpcHRvci4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNTVNZU1RFTV9HZXRJRGF0YSgpIG5vdyBkaWVzIHdoZW4gbm8gaURhdGEgaXMgcHJlc2VudAoJQmV0dGVyIGVycm9yIHJlY292ZXJ5IHdoZW4gdGhlIHByb2Nlc3MgYXR0YWNobWVudCBmYWlscwoJUGxheVNvdW5kIChhbmQgaGVscGVyIGZ1bmN0aW9ucykgbm93IHVzZSB0aGUgcmVndWxhciB3YXZlT3V0WFhYIChpbnN0ZWFkIG9mIHdvZE1lc3NhZ2UpCglNb3ZlZCBoYW5kbGluZyBvZiBoYWNrIGZvciBkaWZmZXJlbmNpYXRpbmcgYmV0d2VlbiAxNiBhbmQgMzIgYml0IGNhbGxiYWNrIHRvIGxvbHZsZHJ2LmMKCU1ha2VzIHVzZSBvZiBuZXcgbG9sdmxkcnYuYyBpbnRlcmZhY2VzCgoJKiBtdWx0aW1lZGlhLy5jdnNpZ25vcmUsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW4sIG11bHRpbWVkaWEvbG9sdmxkcnYuYywgbXVsdGltZWRpYS9vc3MuYywgbXVsdGltZWRpYS9vc3MuaCwgbXVsdGltZWRpYS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbG9sdmxkcnYuYyBhbmQgb3NzLmMuCglUaHVua3MgdG8gMTYgYml0IGFyZSBub3cgZ2VuZXJhdGVkIGZvciB0aGUgTU1TWVNURU0gbW9kdWxlLgoKCSogY29uZmlndXJlLmluLCBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLnNwZWMsIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGRsbHMvd2lubW0gYW5kIGRsbHMvd2lubW0vd2luZW9zcyBkaXJlY3Rvcmllcy4KCgkqIG11bHRpbWVkaWEvdGltZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBjaGVja2luZyBmb3IgY29ycmVjdCBpRGF0YSBpbiBjb2RlLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgRHJpdmVyQ2FsbEJhY2sgZnVuY3Rpb24uCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBbGwgaGVhZGVycyAod2F2ZSBhbmQgbWlkaSBmdW5jdGlvbnMpIGFyZSBub3cgc2VlbiBhcyBzZWdwdHIuCglBZGRlZCBzdHViIGZvciBqb3lHZXRQb3NFeDE2KCkuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMuCgoJKiBpbmNsdWRlL21tZGRrLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHVzaW5nIHRoZSBzYW1lIHN0cnVjdHMgZm9yIGxvdy1sZXZlbCBkcml2ZXJzIGFzIFdpbmRvd3MgZG8uCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbWF1eC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWtlIGl0IChhbG1vc3QpIDMyIGJpdCBvbmx5LgoJUmVmbGVjdGVkIGNyZWF0aW9uIG9mIFdJTkVPU1MgbW9kdWxlLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFrZSBpdCAoYWxtb3N0KSAzMiBiaXQgb25seS4KCVJlZmxlY3RlZCBjcmVhdGlvbiBvZiBXSU5FT1NTIG1vZHVsZS4KCU5vIGxvbmdlciB1c2luZyBFUlIgd2hlbiBubyBNSURJIGNhcmQgaXMgcHJlc2VudC4KCgkqIG11bHRpbWVkaWEvam95c3RpY2suYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdHViIGZvciBqb3lHZXRQb3NFeDE2KCkuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBjaGVja2luZyBmb3IgY29ycmVjdCBpRGF0YSBpbiBjb2RlLgoJQWRkZWQgbG9vay11cCB0YWJsZXMgdG8gY29tbWFuZCB0YWJsZXMgKHNwZWVkcyB1cCBxdWVyaWVzKS4KCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyB1c2luZyBXQVZFRk9STUFURVggaW5zdGVhZCBvZiBQQ01XQVZFRk9STUFULgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHVzaW5nIG1vZFJlc2V0KCkgaW5zdGVhZCBvZiB0d2Vha2luZyBNSURJIGNvbnRyb2xzLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZXR1cm5lZCB0eXBlIHVwb24gb3Blbi4KCUZpeGVkIHNvbWUgYm9ndXMgZXJyb3IgY2hlY2tpbmcuCgoJKiBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmV0dXJuZWQgdHlwZSB1cG9uIG9wZW4uCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCURvIG5vdCBzZXQgRUhfTk9OQ09OVElOVUFCTEUuCgoJKiBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9DaGFuZ2VMb2csIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW46CglNb3J0ZW4gRXJpa3NlbiA8bW9ydGVuZUBzaW0ubm8+CglBZGRlZCBzaW1wbGUgY29uc29sZSBtb2RlIGV4YW1wbGUgcHJvZ3JhbSB3aGljaCBsaXN0cyBpbmZvcm1hdGlvbgoJYWJvdXQgdGhlIHZlcnNpb24gb2YgV2luZG93cyB3ZSdyZSBjdXJyZW50bHkgcnVubmluZyBvbi4KCgkqIGxvYWRlci9tb2R1bGUuYzogRml4ZWQgbWVtb3J5IGFsbG9jYXRpb24gYnVnLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXggaW5maW5pdGUgbG9vcCB3aXRoIGdsYXN0WEZvY3VzV2luZG93LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglBbGxvdyBjcmVhdGlvbiBvZiBlbXB0eSBpbWFnZWxpc3QuCgoJKiBvYmplY3RzL3BhbGV0dGUuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglBZGRlZCBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIEdldElDTVByb2ZpbGVBLCByZXF1aXJlZCBieSBQYWludCBTaG9wCglQcm8gNS4KCgkqIGNvbnRyb2xzL21lbnUuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglEb24ndCBzZW5kIFdNX0VOVEVSTUVOVUxPT1AsIFdNX0lOSVRNRU5VICYgV01fSU5JVE1FTlVQT1BVUCBtZXNzYWdlcwoJd2hlbiBUUE1fTk9OT1RJRlkgZmxhZyBpcyBzZXQgaW4gVHJhY2tQb3B1cE1lbnUuCgoJKiBtaXNjL3dpbnNvY2suYzogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJZ2V0cGVlcm5hbWUoKSBhbmQgZ2V0c29ja25hbWUoKSByZXR1cm4gZXJyb3JzIGluIGVycm5vIG5vdCBoX2Vycm5vLgoKTW9uIFNlcCAyMCAxODo1MjowNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBtaXNjL3JlZ2lzdHJ5LmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB0b29scy9idWlsZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBBTlNJIEMgdmlvbGF0aW9ucy4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tb3VzZS5jLCBpZjE2MzIva2V5Ym9hcmQuc3BlYywgaWYxNjMyL21vdXNlLnNwZWMsIHdpbmRvd3MvaW5wdXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJS2V5Ym9hcmQvbW91c2UgZXZlbnQgcHJvYyB0aHVuayBjcmVhdGlvbiBtb3ZlZCBvdXQgb2YgaWYxNjMyL3RodW5rLmMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvLmN2c2lnbm9yZSwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNyZWF0ZSB0aHVuayBmb3IgdGFzayBzaWduYWwgcHJvYywgY2FsbCBpdCBkaXJlY3RseS4KCgkqIGlmMTYzMi9nZGkuc3BlYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy8uY3ZzaWdub3JlLCBvYmplY3RzL01ha2VmaWxlLmluLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgd2luZG93cy9kY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJREMgaG9vayBwcm9jIHRodW5rIG1hbmFnZW1lbnQgc2ltcGxpZmllZC4KCgkqIG1pc2Mvc3lzdGVtLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3lzdGVtIHRpbWVyIHByb2MgdGh1bmsgY3JlYXRpb24gbW92ZWQgb3V0IG9mIGlmMTYzMi90aHVuay5jLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjcmVhdGUgdGh1bmsgZm9yIENyZWF0ZVRocmVhZDE2IHByb2MsIGNhbGwgaXQgZGlyZWN0bHkuCgoJKiB3aW5kb3dzLy5jdnNpZ25vcmUsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvaG9vay5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9ob29rLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdpbmRvd3MgaG9vayBwcm9jIHRodW5rIG1hbmFnZW1lbnQgc2ltcGxpZmllZC4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vZGlmaWVkIFRIVU5LX0FsbG9jIHNvIGFzIHRvIGF2b2lkIDMyLT4xNi0+MzIgY2FsbGluZyBzZXF1ZW5jZXMuCglSZW1vdmVkIHBlcnNpc3RlbnQgdGh1bmsgY3JlYXRpb24gcm91dGluZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3RzX3hmODZkZ2EyLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hmODZkZ2EyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgdGhlIHBvc3NpYmlsaXR5IHRvIHVzZSBER0EgMi4wLgoKCSogd2luZWRlZmF1bHQucmVnOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIEhLRVlfTE9DQUxfTUFDSElORVwuLi5cUHJvZ3JhbUZpbGVzRGlyIHJlZ2lzdHJ5IGtleS4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogRGVubmlzIEJvcmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJSXQncyBubyBlcnJvciB0byBzZW5kIGEgV01fQ09NTUFORCB0byBNZW51SGVscC4KCgkqIGZpbGVzL2ZpbGUuYzogRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglDcmVhdGVGaWxlQSByZXR1cm5zIEhGSUxFX0VSUk9SIHdoZW4gdGhlIGZpbGVuYW1lIGNvbnRhaW5zIGEgd2lsZCBjYXJkLgoKCSogY29udHJvbHMvc3RhdGljLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGRpc3BsYXkgYnVnIGluIHRoZSBzdGF0aWMgY29udHJvbC4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCU1lc3NhZ2UgcmVtb3ZlZCB3aGVuIG1lbnUgdHJhY2tpbmcgZmluaXNoIG9uIGEgV01fTEJVVFRPTkRPV04uCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kaWIuYywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJLSBBZGQgY2xpcGJvYXJkIHN1cHBvcnQgZm9yIGNvcHlpbmcvcGFzdGluZyBiaXRtYXBzIG9yIFBpeG1hcHMgYmV0d2VlbiBXaW5lCgkgIGFuZCBuYXRpdmUgTGludXggYXBwbGljYXRpb25zLgoJLSBSZXNwb25kIHRvIHRoZSBNVUxUSVBMRSBzZWxlY3Rpb24gcmVxdWVzdCB0YXJnZXQgd2hlbiBXaW5lIGlzIHRoZQoJICBzZWxlY3Rpb24gb3duZXIuCgktIFJlbGF4IHR5cGUgY2hlY2tpbmcgZm9yIFRBUkdFVFMgc2VsZWN0aW9uLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgbG9hZGVyL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTZXQgJ2V4cGVjdGVkX3ZlcnNpb24nIG9mIGJ1aWx0LWluIGFuZCBkdW1teSBtb2R1bGVzIGFjY29yZGluZyB0bwoJZW11bGF0ZWQgV2luZG93cyB2ZXJzaW9uLgoKCSogaWYxNjMyL3JlbGF5LmMsIGxvYWRlci9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1ha2UgQ2FsbFRvMTYgcmV0dXJuIHN0dWIgc2VnbWVudCBvd25lZCBieSBLRVJORUwuCgoJKiBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogSW1wcm92ZWQgR2V0Q29kZUhhbmRsZTE2IC8gR2V0Q29kZUluZm8xNi4KCgkqIG9sZS9ubHMvc3ZlLm5sczogRGVubmlzIEJqb3JrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCUFkZGVkIHNvbWUgdmFsdWVzIHRoYXQgd2VyZSBtaXNzaW5nIGluIHRoZSBTd2VkaXNoIG5scyBmaWxlLgoKU3VuIFNlcCAxOSAxODo1ODoxNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGNyZWF0ZSBEREIgaW4gWDExRFJWX0RJQl9HZXRESUJpdHMgaWYgbmVjZXNzYXJ5LgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIG1pc3NpbmcgZXhwb3J0LgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgY3Jhc2ggd2hlbiBsb2FkaW5nICouYW5pIGZpbGVzLgoKCSogb2xlLyosIGRsbHMvb2xlMzIvKiwgZGxscy9vbGVhdXQzMi8qLCBkbGxzL29sZWNsaS8qLCBkbGxzL29sZWRsZy8qOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBidWxrIG9mIE9MRSBpbXBsZW1lbnRhdGlvbiB0byBkbGxzLyBzdWJkaXJlY3Rvcmllcy4KCgkqIGNvbnRyb2xzL21lbnUuYzogRGVubmlzIEJq9nJrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCVNlbmQgY29ycmVjdCBXTV9NRU5VU0VMRUNUIHdoZW4gbWVudSBjbG9zZXMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzbWFsbCBmZWF0dXJlIGluIHRoZSBmaWxlIGRpYWxvZy4KCgkqIHdpbjMyL25ld2Zucy5jLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd3R5cGVzLmgsIG1zZG9zL3Z4ZC5jLCBvbGUvYW50aW1vbmlrZXIuYywgb2xlL2NvbXBvc2l0ZW1vbmlrZXIuYywgb2xlL2RhdGFjYWNoZS5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2hnbG9iYWxzdHJlYW0uYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9tZW1sb2NrYnl0ZXMuYywgb2xlL29sZWZvbnQuYywgb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UuYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvdmFyaWFudC5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHN1cHBvcnQgZm9yIGFub255bW91cyBzdHJ1Y3RzL3VuaW9ucyBvbiBjb21waWxlcnMgdGhhdCBpbXBsZW1lbnQgaXQuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL3RleHQuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJUGV0ZXIgR2FudGVuIDxnYW50ZW5AdW5pLWJyZW1lbi5kZT4KCVN0dWJzIGZvciBQb2x5VGV4dE91dEEvVy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgb2JqZWN0cy9kaWIuYzoKCUthcmwgTGVzc2FyZCA8eWJpY3VidWtAdW1haWwuY29yZWwuY29tPgoJU29tZSBtb3JlIG1pbm9yIEdESSBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW4gSW1hZ2VMaXN0X0RyYXcgd2hlbiBkcmF3aW5nIHRoZSBiaXRtYXAgd2l0aCB0aGUgdHJhbnNwYXJlbnQgZmxhZwoJc2V0LCBiYWNrZ3JvdW5kIGNvbG9yL2ZvcmVncm91bmQgY29sb3Igc2hvdWxkIGJlIHNldCB0byB3aGl0ZS9ibGFjaywKCXdoZW4gZG9pbmcgYml0Ymx0IG9wZXJhdGlvbiB3aXRoIHRoZSBiaXRtYXAgbWFzay4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGluY2x1ZGUvd2luMTZkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUV4dGVuZCBEUkFXTU9ERSBzdHJ1Y3QgdG8gd2luOTUgc3BlYy4KCUFkZCBzb21lIG1vcmUgRXNjYXBlIC0+IEVzY2FwZTE2IGNvbnZlcnNpb25zLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdG9wIHRyYXNoaW5nIGRldm1vZGUgaWYgaW4gYW5kIG91dCBkZXZtb2RlcyBhcmUgdGhlIHNhbWUuCgoJKiBjb250cm9scy93aWRnZXRzLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJVGhlIE1ESUNsaWVudCBjbGFzcyBtdXN0IGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgSURDX0FSUk9XIGN1cnNvci4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29tYm9ib3guCgoJKiBjb250cm9scy9tZW51LmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJUHJvdGVjdCBTZXRNZW51IGZyb20gcm9ndWUgbWVudSBoYW5kbGUuCglHZXRNZW51MTYgY2FuIGp1c3QgY2FsbCBHZXRNZW51LgoKCSogd2luZG93cy9tZGkuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglQcm90ZWN0IE1ESVNldE1lbnUgZnJvbSByb2d1ZSBtZW51IGhhbmRsZXMuCgoJKiBtZW1vcnkvbG9jYWwuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglUaWR5IHVwIFRSQUNFIGV0YyB0byB1c2UgZGVmYXVsdCBjaGFubmVsLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludmVyLmgsIG9sZS9vbGUybmxzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmUgVmVyTGFuZ3VhZ2VOYW1lW0FXXSBiYWNrIHRvIGJhc2UgKGV4cG9ydGVkIGZyb20gS0VSTkVMMzIgLi4uKS4KCgkqIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IGZvciB3aXphcmQgcHJvcGVydHkgc2hlZXRzLgoKCSogbWlzYy9sc3RyLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBGb3JtYXRNZXNzYWdlMTYgYXQgbGVhc3QgZW5vdWdoIHRvIGdldCB3aW45NSAxNmJpdCBwcmludGRsZyB3b3JraW5nLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJLSBpU2VsZWN0ZWQgc2hvdWxkIGJlIC0xIGlmIG5vIGl0ZW0gc2VsZWN0ZWQgKEdlcmFyZCBQYXRlbCkKCS0gc29tZSBvZiB0aGUgY2hlY2tzIGZvciBpbnZhbGlkIGl0ZW1zIHdoZXJlID4gd2hlbiB0aGV5IHNob3VsZCBoYXZlIGJlZW4gPj0KCSAgKE1hcmN1cyBNZWlzc25lcikKCS0gbWFkZSBJbnNlcnRJdGVtIGJlaGF2ZSBzaW1pbGFybHkgdG8gRGVsZXRlSXRlbSwgaWUsIGlmIHRoZSBjdXJyZW50IGl0ZW0gaXMKCSAgYWZ0ZXIgd2hlcmUgdGhlIGl0ZW0gaXMgaW5zZXJ0ZWQsIGluY3JlbWVudCB0aGUgc2VsZWN0ZWQgaXRlbSAoRGF2aWQgTHV5ZXIpCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERlY2xhcmUgQ0FMTDMyX0NCQ2xpZW50W0V4XSB3aXRob3V0IFdJTkFQSS4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IChFKUlQLXJlbGF0aXZlIG9mZnNldHMgZGVwZW5kIG9uIG9wZXJhbmQsIG5vdCBhZGRyZXNzLCBzaXplLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIGZvciBFbnVtRGlzcGxheURldmljZXMqLgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBTQ19HRVRfREVWVFlQRS4KCgkqIG9sZS9jb21wb2JqLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgc3R1YiBmb3IgT0xFMzIuRGxsR2V0Q2xhc3NPYmplY3QuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGluY2x1ZGUvc2hsZ3VpZC5oLCBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3JlIHN1cHBvcnQgZm9yIHNwZWNpYWwgcGlkbHMgaW4gU0hHZXRTcGVjaWFsRm9sZGVyTG9jYXRpb24uCgoJKiBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy9wc2Rydi9wZW4uYywgaW5jbHVkZS9wc2Rydi5oOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIGludmlzaWJsZSBwZW5zLgoKCSogb2JqZWN0cy9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU21hbGwgRElCIGZpeGVzLgoKCSogY29udHJvbHMvbWVudS5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBjYXNlIGZvciBtZW51IGhhbmRsaW5nIGluIHdpbjMxLgoKVHVlIFNlcCAxNCAxMTo1MTowMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglGaXhlZCBHZXRESUJpdHMgcHJvYmxlbXMuCgoJKiBtaXNjL2NwdS5jLCBtdWx0aW1lZGlhL21peGVyLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGQgc3VwcG9ydCBmb3IgYW5vbnltb3VzIHN0cnVjdC91bmlvbnMgb24gY29tcGlsZXJzIHRoYXQgaW1wbGVtZW50IGl0LgoKTW9uIFNlcCAxMyAxNjowNjoxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL3VpdG9vbHMuYzoKCURlbm5pcyBCanxya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglGaXhlZCB3aW45eCBsb29rIG9uIGNoZWNrYm94ZXMgYW5kIHJhZGlvYnV0dG9ucy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2Ly5jdnNpZ25vcmUsIGdyYXBoaWNzL3dpbjE2ZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2dkaS5oLCBtaXNjLy5jdnNpZ25vcmUsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvcHJpbnRkcnYuYywgb2JqZWN0cy9kYy5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDaGFuZ2UgaW50ZXJmYWNlcyB0byBUSFVOS19BbGxvYy9GcmVlIHNsaWdodGx5IGFuZCBtYWtlIHRoZW0gbm9uLXN0YXRpYy4KCVJlbW92ZSByZWxheXMgZm9yIHdpbjE2ZHJ2IGZyb20gQ2FsbEJhY2sgdGFibGUsIGluc3RlYWQgdXNlIGJ1aWxkIHRvCglnZW5lcmF0ZSB0aGVtIGRpcmVjdGx5IGluIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLgoJSWYgUHJpbnRlciBBYm9ydFByb2MgaXMgMTZiaXQgdGhlbiBhbGxvY2F0ZSB0aHVuayBhbmQgc3RvcmUgdGhhdCBhcyBhCgkzMmJpdCBwcm9jIGluIERDLiAgU2V0dGluZyBvZiBhYm9ydHByb2NzIG5vdyBkb25lIGluIHRoZSBjb3JyZWN0IHBsYWNlCgkoaS5lLiBub3QgaW4gdGhlIGRyaXZlcikuCgoJKiBvYmplY3RzL2RpYi5jOiBLYWkgTW9yaWNoIDxrYWkubW9yaWNoQGJpZ2Zvb3QuZGU+CglSZWxheGVkIHBhcmFtZXRlciBjaGVja2luZyBmb3IgR2V0RElCaXRzLgoKCSogd2luMzIvZGV2aWNlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgbGFzdCBlcnJvciBjb2RlIHdoZW4gdHJ5aW5nIHRvIGxvYWQgdW5rbm93biBWeEQgd2l0aCBDcmVhdGVGaWxlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglQcmV0ZW5kIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIFNIRUxMX05vdGlmeUljb24qKCkuCgoJKiBjb250cm9scy9tZW51LmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIE1lbnVJdGVtRnJvbVBvaW50IHN0dWIuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBvZmYgYnkgb25lIGFsbG9jYXRpb24gZXJyb3IgKERQQSBhbmQgRFNBKS4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCBpbiBQbGF5U291bmQgdGhyZWFkLgoKU2F0IFNlcCAxMSAxNjoyOTowMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBOaWNrIEhvbGxvd2F5IDxOaWNrLkhvbGxvd2F5QGFsZmllLmRlbW9uLmNvLnVrPgoJRm9yIFdpbiAzLnggYXBwbGljYXRpb25zLCBpZiB0aGV5IGhhdmUgZWl0aGVyIGhvcml6b250YWwgb3IgdmVydGljYWwKCXNjcm9sbGJhcnMsIGVuYWJsZSBib3RoLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgbWVtb3J5L3N0cmluZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglFbGltaW5hdGVkIHdhcm5pbmdzLgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jOgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJU2V0IHRoZSBtb3VzZSBjYXB0dXJlIG9uIHRoZSBjb21ibyBsaXN0Ym94LgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4ZWQgdGhlIGNyZWF0aW9uIG9mIGJhY2stYnVmZmVycyBpbiBER0EgbW9kZQoJLSBhZGRlZCBhIGNoZWNrIG9uIHRoZSB2YWxpZGl0eSBvZiB0aGUgTG9ja2luZyByZWN0YW5nbGUKCS0gZml4ZWQgdGhlIGVudW1lcmF0aW9uIGZvciBEWC02LjAKCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBSR0JRVUFEL0NPTE9SUkVGIG1peHVwIGluIENyZWF0ZU1hcHBlZEJpdG1hcCgpLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJRHJhdyB0aGUgZm9jdXMgcmVjdGFuZ2xlIGZvciBidXR0b25zIHdpdGggQlNfM1NUQVRFLCBCU19SQURJT0JVVFRPTiwKCUJTX0NIRUNLQk9YLCBCU19BVVRPKiBzdHlsZXMuCgpGcmkgU2VwIDEwIDE0OjM4OjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGdyYXBoaWNzL2RyaXZlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJV2luc3Bvb2wgRG9jdW1lbnRQcm9wZXJ0aWVzIGFuZCBEZXZpY2VDYXBhYmlsaXRpZXMgc2hvdWxkIG5vdyB3b3JrIG9uCgluYXRpdmUgMTYgYml0IGRyaXZlcnMuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgRGV2aWNlQ2FwYWJpbGl0aWVzIGZvciBEQ19QQVBFUlNJWkUuCglWYXJpb3VzIGZpeGVzIGZvciBPcGVuUHJpbnRlciBhbmQgRW51bVByaW50ZXJzLgoJU2VwYXJhdGlvbiBvZiBHZXRQcmludGVyIGluIHByZXBhcmF0aW9uIGZvciB1bmlmaWNhdGlvbiB3aXRoIEVudW1QcmludGVycy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BwZC5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIHN1cHBvcnQgZm9yIGEgbGFyZ2UgbnVtYmVyIG9mIGRpZmZlcmVudCBwYXBlciBzaXplcyB0byBQb3N0U2NyaXB0Cglkcml2ZXIuCgoJKiBpbmNsdWRlL2QzZC5oOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgZGVmaW5pdGlvbnMgb2YgQ09NIG9iamVjdHMgZm9yIEQzRCA2Lnggc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYzogTmljayBIb2xsb3dheSA8YWxmaWVAYWxmaWUuZGVtb24uY28udWs+CglJZiB0aGVyZSBpcyBub3QgYW4gZXhhY3QgbWF0Y2ggZm91bmQgZm9yIHRoZSByZXF1ZXN0ZWQgZm9udCBuYW1lLAoJaW5zdGVhZCBvZiB1c2luZyB0aGUgZmlyc3QgZm9udCBkZWZpbmVkIGZvciB0aGUgcHJpbnRlciwgbWFwIHNvbWUKCWNvbW1vbiBmb250IGZhbWlsaWVzIChlLmcuIEFyaWFsIC0+IEhlbHZldGljYSksIGFuZCBzZWFyY2ggYWdhaW4uCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBidWcgaW4gQ0JDbGllbnQgcm91dGluZXMgYnkgc3RvcmluZyB0aGUgU0VHUFRSIGluIHRoZSBnbG9iYWwKCXRhYmxlIGFuZCB0cmFuc2xhdGluZyBpdCBvbiBldmVyeSB1c2UuCgoJKiBpbmNsdWRlL2JpdG1hcHMvb2ljX3NhbXBsZTogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIHRoZSBwaXhtYXAgdG8gbG9vayBsaWtlIHRoZSB3aW5kb3dzIGRlZmF1bHQgYXBwbGljYXRpb24gaWNvbi4KCgkqIGZpbGVzL2RyaXZlLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJU3RvcCBjcmFzaCBpbiBHZXREaXNrRnJlZVNwYWNlRXguCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglNYWRlIHN1cmUgdGhhdCB0aGUgd2luZG93cyB3aXRoIHRoZSBXU19FWF9UT09MV0lORE9XIHN0eWxlIGRpZG4ndCBnZXQKCWhhbmRsZWQgYnkgdGhlIHdpbmRvdyBtYW5hZ2VyLgoKCSogY29udHJvbHMvZWRpdC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIGJlaGF2aW9yIGFyb3VuZCB0aGUgRVNfV0FOVFJFVFVSTiBzdHlsZSBpbiB0aGUgZWRpdAoJY29udHJvbC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJUHJlc3NpbmcgdGhlIGRlbGV0ZSBrZXkgdXNpbmcgYW4gZXh0ZW5kZWQga2V5Ym9hcmQgd2l0aCBudW1sb2NrIG9uIGlzCglub3QgZ2VuZXJhdGluZyBhbnltb3JlIGEgV01fQ0hBUiBtZXNzYWdlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBOaWNsYXMgS2FybHNzb24gPG5rYXJsc3NvQHJhLmFiby5maT4KCUZpeGVkIHBhdHRlcm4gbWF0Y2hpbmcgaW4gUGF0aE1hdGNoU3BlY0EvVwoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJVGFiYmluZyBpbiB0aGUgbGlzdHZpZXcgb2YgdGhlIHNoZWxsdmlldy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIExJU1RWSUVXX0dldEl0ZW1SZWN0OiB0aGUgY2FsY3VsYXRpb25zIHdlcmUgb2ZmIGZvciBMVklSX0JPVU5EUywKCUxWSVJfU0VMQ1RCT1VORFMsIExWSVJfTEFCRUwgd2hlbiB0aGUgaXRlbSB3aWR0aCBpcyBncmVhdGVyIHRoYW4gdGhlCgljb2x1bW4gd2lkdGguCglGaXhlZCBXTV9HRVRETEdDT0RFIGJ5IHJlbW92aW5nIHRoZSBETEdDX1dBTlRSVEFCIGFuZCBhZGRpbmcgRExHQ19XQU5UQ0hBUlMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGNyYXNoIGluIGRldGFjaCBzZXF1ZW5jZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgd3JvbmcgcmV0dXJuIHZhbHVlLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUHJldmVudCBlbmRsZXNzIGxvb3AgaW4gZXhjZXB0Mi4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglOb3cgd29ya3MgYXJvdW5kIHdpbmUgbmV2ZXIgZXhpdGluZyB0aGUgZGVidWdnZXIuCglTaG91bGQgcHV0IGJ1ZyByZXBvcnRzIGluIHRoZSByaWdodCBwbGFjZSBub3cuCgoJKiBvbGUvb2xlYXV0MzIuYywgb2xlL01ha2VmaWxlLmluLCByZWxheTMyL29sZWF1dDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgc3R1YiBmb3IgUmVnaXN0ZXJBY3RpdmVPYmplY3QoKS4KCgkqIGRsbHMvd2luMzJzL3czMnN5cy5jLCBkbGxzL3dpbjMycy93MzJzeXMuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3R1YiBmb3IgV0lOMzJTMTYuRVhQMSAobW9zdCBsaWtlbHkgTG9hZFBlUmVzb3VyY2UxNikuCgpTdW4gU2VwICA1IDE2OjQ4OjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIG1pc2NlbXUvbWFpbi5jLCBpbmNsdWRlL3dpbmRlZi5oOgoJUmVtb3ZlZCBfX3dpbmVsaWIgZmxhZy4KCgkqIHdpbmRvd3MvZHJpdmVyLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9kc291bmQuYywgbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1hdXguYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBtdWx0aW1lZGlhL3RpbWUuYywgbXVsdGltZWRpYS93aW5tbS5yYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCB0byBuZXcgTU0gaGVhZGVyIG9yZ2FuaXphdGlvbi4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBpbmNsdWRlL21tZGRrLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgbXVsdGltZWRpYS9vc3MuaCwgbXVsdGltZWRpYS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgRERLIGxldmVsIG1hdGVyaWFsIHRvIG5ldyBpbmNsdWRlL21tZGRrLmggZmlsZS4KCUNvcGllZCBzb21lIFNESyBsZXZlbCBtYXRlcmlhbCBmcm9tIGluY2x1ZGUvbXVsdGltZWRpYS5oIGZpbGUuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9tY2ltaWRpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgdG8gbmV3IE1NIGhlYWRlciBvcmdhbml6YXRpb24uCglDbGVhbmVkLXVwIGludGVybmFsIHN0cnVjdHVyZXMgKG5vdyAzMiBiaXQgb25seSkuCglOb3cgdXNpbmcgdGhlIE1NU1lTVEVNIGVudHJ5IHBvaW50cyByYXRoZXIgdGhhbiB0aGUgbG93IGxldmVsIGRyaXZlcgoJb25lcyBkaXJlY3RseS4KCgkqIGluY2x1ZGUvc2lnX2NvbnRleHQuaDogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJRml4ICVmcyBmb3Igc2lnbmFsIGhhbmRsZXJzIGluIHRoZSBGU19zaWcgdW5kZWZpbmVkIGNhc2UgKHRoaXMgcGF0Y2gKCWFjdHVhbGx5IGZyb20gVWxyaWNoIFdlaWdhbmQsIEkgb25seSB0ZXN0ZWQgaXQpLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCVJvbiBSZWNvcmQgPHJyQHNjby5jb20+CglBZGRlZCBzdXBwb3J0IG9mIF9fdGhyX2Vycm5vIGZvciByZWVudHJhbmNlIG9uIFVuaXhXYXJlLgoKCSogd2luZG93cy9kaWFsb2cuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglObyBsb25nZXIgbmVlZHMgdG8gY2FsY3VsYXRlIGl0cyBvd24gY2hhcmFjdGVyIHNpemUuCgoJKiBtaXNjL21haW4uYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglDb25zZXF1ZW50aWFsIGNoYW5nZXMgdG8gZGVmYXVsdCBzeXN0ZW0gZm9udCBzaXplcwoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZm9udC5oOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglWYXJpb3VzIGZpeGVzIGZvciB0aGUgWDExIGZvbnQgbWFwcGVyLCBwYXJ0aWN1bGFybHk6CgktIHNpemUgZm9udHMgd2l0aCBuZWdhdGl2ZSBoZWlnaHRzIGNvcnJlY3RseQoJLSBjYWxjdWxhdGUgYXZlcmFnZSB3aWR0aCBjb3JyZWN0bHkuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJVXNlIGEgc3BlY2lhbCB2YWx1ZSBpbiB0aGUgaG90c3BvdCBjb29yZGluYXRlIHRvIGlkZW50aWZ5IHdoaWNoIEhJQ09OCglhcmUgY3Vyc29ycyBhbmQgd2hpY2ggYXJlIGljb25zLgoKCSogY29udHJvbHMvY29tYm8uYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJTW9kaWZpZWQgQ0JEcm9wRG93biB0byBmaW5kIHRoZSBiZXN0IGhlaWdodCBvZiB0aGUgbGlzdGJveC4KClNhdCBTZXAgIDQgMTQ6MzY6MDMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgbWVtb3J5L3N0cmluZy5jLCBtaXNjL3BvcnQuYywgY29uZmlndXJlOgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBzdHJbbl1jYXNlY21wLgoKCSogd2luZG93cy90aW1lci5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbGxvdyB0aW1lb3V0IG9mIDAuIENhcCB0aW1lciByYXRlIHRvIFNZU19USU1FUl9SQVRFLgoKCSogaW5jbHVkZS93aW5kZWYuaDogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgdHlwZSBQV09SRC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBpbmNsdWRlL3dpbnNwb29sLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBsb2FkcyBvZiB0eXBlcywgZGVmaW5lcyBhbmQgZGVjbGFyYXRpb25zIHRvIHdpbnNwb29sLmguCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgaGVpZ2h0IG9mIGl0ZW1zIGluIHRoZSBsb29raW4gY29tYm9ib3ggb2YgdGhlIGZpbGVkbGc5NS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbml0aWFsaXplIHRoZSBlbmFibGluZyBzdGF0ZSB2YXJpYWJsZSBpbiB0aGUgZWRpdC4KCgkqIGdyYXBoaWNzL2JpdGJsdC5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVRoZSBmYXN0IHdpbmRvdyBmcmFtZSBzaXplIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgZnJhbWUgc2l6ZSB1c2VkCglieSBOQ19EcmF3RnJhbWUgZnVuY3Rpb24uCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBjb21waWxlciB3YXJuaW5ncy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJbHN0cm5jbXBpIGlzbid0IGEgd2luZG93cyBBUEksIHVzZSBzdHJuY2FzZWNtcCBpbnN0ZWFkLgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJRml4ZWQgR01FTV9aRVJPSU5JVCBpbiBHbG9iYWxSZWFsbG9jICh0aGFua3MgdG8gR2VyYXJkIFBhdGVsKS4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IEFkZGVkIG1pc3NpbmcgSEZPTlQgdHlwZS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBsb2FkZXIvbWFpbi5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9jbGFzcy5jOgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCBDb3B5SW1hZ2UgdG8gYWNjZXB0IGRlc2lyZWRYLCBkZXNpcmVkWSBhbmQgTFJfQ09QWUZST01SRVNPVVJDRS4KCUNVUlNPUklDT05fRmluZEJlc3RJY29uIGNoYW5nZWQgdG8gZmluZCB0aGUgY29ycmVjdCBpY29uLgoJSW1hZ2VMaXN0X1JlcGxhY2VJY29uIG5vdyBjYWxscyBDb3B5SW1hZ2UgaW50ZXJuYWxseS4KCUFzc2lnbiBhIHZhbHVlIGZvciB0aGUgaEljb25TbSBDTEFTUyBtZW1iZXIgKHVzaW5nIENvcHlJbWFnZSkuCgoJKiB3aW4zMi9jb25zb2xlLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXhlZCBXcml0ZUNvbnNvbGVPdXRwdXQgYW5kIEdldE51bWJlck9mQ29uc29sZUlucHV0RXZlbnRzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglHaXZlIGFwcGxpY2F0aW9ucyBhIGNvcHkgb2YgdGhlIHByb3BlcnR5IHNoZWV0IGRpYWxvZyB0ZW1wbGF0ZSBhcyB0aGV5CgltaWdodCBtb2RpZnkgaXQuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVsYXkgZXhjbHVkZSBsaXN0cyB3ZXJlIG5vdCB3b3JraW5nIGR1ZSB0byBzb21lIENoYXJVcHBlckEoKQoJc29tZXdoZXJlIGVsc2UuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIHdpbmUuaW5pOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJd2luc3Bvb2wgLT4gd2luc3Bvb2wuZHJ2CgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgU3RyQ21wTklBIGxpa2UgdGhlIG90aGVyIFN0ckNtcFhYIGZ1bmN0aW9ucy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglSZXNvbHZlIGVudmlyb25tZW50IHZhcmlhYmxlIHdoZW4gZW51bWVyYXRpbmcgdmFsdWVzLgoKCSogY29udHJvbHMvZWRpdC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJVGhlIGZvcm1hdCByZWN0IGlzIHJlY2FsY3VsYXRlZCBmb3IgZWFjaCBmb250IGNoYW5nZS4gTW92ZUVuZCAmCglNb3ZlSG9tZSBpbXByb3ZlZC4KCkZyaSBTZXAgIDMgMTY6NDk6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kaWIuYzoKCUthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJSWFuIFdhcmQKCURhbiBMYW5nbG9pcwoJU3BlZWQgdXAgY29udmVyc2lvbiBiZXR3ZWVuIFhJbWFnZXMgYW5kIERJQlNlY3Rpb25zLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglTb21lIDxvcGVuPiBmZWF0dXJlcyBpbiB0aGUgZmlsZSBkaWFsb2cgOTUuCgoJKiBpbmNsdWRlL3dpbm50LmgsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgZ2xvYmFsIHZhcmlhYmxlIHBDdXJyZW50VGViLgoKCSogbWVtb3J5L2hlYXAuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglIRUFQX0NvbW1pdC9EZWNvbW1pdCB3ZXJlIGFzc3VtaW5nIGEgcGFnZSBzaXplIG9mIDRLQgoJdW5jb25kaXRpb25hbGx5LgoKCSogaW5jbHVkZS93aW5nZGkuaDogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQSBmZXcgbW9yZSBEQ18gZGVmaW5lcyBmcm9tIFdpbjIwMDAuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDaGVjayB0aGF0IGxwQ3JlYXRlLT5scHN6TmFtZSBpcyBub24tTlVMTC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglNb3JlIHJlc3RyaWN0aXZlIGNoZWNrcywgc28gRElBTE9HX0lzQWNjZWxlcmF0b3IgZG9uJ3QgbG9vcAoJZW5kbGVzc2x5LgoKCSogY29udHJvbHMvbWVudS5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJTWVudSBoaWRlcyB3aGVuIGNsaWNrZWQgZm9yIGEgc2Vjb25kIHRpbWUuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCS0gc2VsZWN0IHRoZSBmb250IGludG8gdGhlIGRjIGJlZm9yZSBjYWxjdWxhdGluZyB0aGUgZXh0ZW50CgktIG1ha2UgYnV0dG9uaGVpZ2h0IGNvcnJlc3BvbmQgdG8gdGV4dCBoZWlnaHQgKyB3aWR0aCB0byBjYXB0aW9uCgktIGJ1dHRvbiB3YXMgImZsYXNoaW5nIiBvbiBFbmREaWFsb2cgKG11c3QgZGVsZXRlIGZvbnQgQUZURVIgRW5kRGlhbG9nKQoJLSAjZGVmaW5lcyBmb3IgRGxnSXRlbUlkcwoJLSBpbXBsZW1lbnQgTUJfUkVUUllDQU5DRUwKCgkqIGNvbnRyb2xzL2VkaXQuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglLZWVwIHRoZSBlbmFibGUgc3RhdGUgaW4gdGhlIGVkaXQgc3RydWN0dXJlIGluc3RlYWQgb2YgY2FsbGluZwoJSXNXaW5kb3dFbmFibGVkKCkuCgoJKiBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvbGUvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CgktIEltcGxlbWVudCBpbnRlcnByb2Nlc3MgY2xpcGJvYXJkIGNvbW11bmljYXRpb24uCgktIFN1cHBvcnQgZm9yIHRoZSBQUklNQVJZIGFuZCBDTElQQk9BUkQgc2VsZWN0aW9uIGF0b21zLgoJLSBTdXBwb3J0IGZvciB0aGUgVEFSR0VUUyBzZWxlY3Rpb24gZm9ybWF0LgoJLSBFeHBvc2UgbmF0aXZlIFdpbmRvd3MgY2xpcGJvYXJkIGZvcm1hdHMgdGhyb3VnaCBYIHNlbGVjdGlvbiB0YXJnZXRzLgoKCSogb2JqZWN0cy9nZGlvYmouYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglNYWtlIHN0b2NrIGZvbnRzIGluZGVwZW5kZW50IG9mIG1hcHBpbmcgbW9kZS4KCVN5c3RlbSBmb250IHNob3VsZCBvbmx5IGJlIGJvbGQgZm9yIFdpbjMxLgoKCSogd2luZG93cy9kaWFsb2cuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCB0cnVuY2F0aW5nIGVycm9ycyB0aGF0IGhhcHBlbiB3aGVuIGNvbnZlcnRpbmcgZm9tIGRpYWxvZyB1bml0cwoJdG8gcGl4ZWxzLgoKCSogd2luZG93cy93aW5wb3MuYzogQWJleSBHZW9yZ2U8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUNoZWNrIG5ldyBjb29yZGluYXRlcyByZWNlaXZlZCBpbiBXTV9OQ0NBTENTSVpFIG1lc3NhZ2UuCgoJKiBjb250cm9scy9idXR0b24uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJU2xpZ2h0IDEgcGl4ZWwgYWRqdXN0bWVudCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIHJhZGlvIGJ1dHRvbiBiaXRtYXAuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgb2ZmIGJ5IG9uZSBhbGxvY2F0aW9uIGVycm9ycy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCVRoZSBiYWNrc3BhY2UgaXMgbm93IGhhbmRsZWQgaW4gdGhlIFdNX0NIQVIgbWVzc2FnZS4KCgkqIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIHN1cmUgdGhhdCBhbGwgTURJIGNoaWxkcmVuIGhhdmUgdGhlIFdTX0VYX01ESUNISUxEIHN0eWxlIHNldC4KCgkqIG1lbW9yeS9zdHJpbmcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBwcm90b3R5cGUgb3JkZXIuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglGaXggRVhDX3NlZ3YgZm9yIHRoZSBUUkFQX3NpZyB1bmRlZmluZWQgY2FzZSAoZWcgRnJlZUJTRCkuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgc3VwcG9ydCBmb3IgdGhlIGNsb3NlIGJ1dHRvbiBpbiB0aGUgU2hlbGxBYm91dCBkaWFsb2dzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfTmwucmM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRkZWQgRHV0Y2ggcmVzb3VyY2VzIGZvciBQcmludERsZzMyLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglDb21wbGV0ZWQgUHJpbnREbGczMiByZXNvdXJjZSBzdHJpbmd0YWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc2FuaXR5IGNoZWNrcyBpbiB0aGUgY2xlYW51cCBjb2RlLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUNvbXBsZXRlZCBHZXRLZXlOYW1lVGV4dCBmb3Igbm9uLWNoYXJhY3RlciBrZXlzLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIGRpcmVjdG9yaWVzIG5hbWUgYXBwZWFyIGluIHRoZSBCcm93c2VGb3JGb2xkZXIgZGlhbG9nLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCURvIG5vdCByZW1vdmUgLmRydiBmcm9tIGZpbGVuYW1lcy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGxpdHRsZSBwb3NpdGlvbmluZyBidWcgd2l0aCB0aGUgY2hlY2tib3guCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgcmVzaXppbmcgYnVncyBmb3Igd2luZG93cyB3aXRoIFdTX1RISUNLRlJBTUUgYW5kIFdTX0RMR0ZSQU1FCglzdHlsZXMuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBNaWNoYWVsIE1jQ29ybWFjayA8bWNjb3JtYWNAYWFsczI3LmFsY2F0ZWwuY29tLmF1PgoJQ2hhbmdlZCBzbnByaW50ZiB0byB3c25wcmludGZBIHRvIHJlbW92ZSB1bnJlc29sdmVkIGV4dGVybmFsIHdoZW4KCWNvbXBpbGluZyBvbiBTb2xhcmlzL1N1bi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBMVk1fSU5TRVJUQ09MVU1OVyBhbmQgTFZNX0lOU0VSVElURU1XIGJ5IHVzaW5nIHRoZSBhc2NpaQoJZXF1aXZhbGVudHMuIChXaW5Xb3JkIDk3LCBGaWxlIE9wZW4gZGlhbG9nKQoKCSogd2luZG93cy9jbGFzcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBpbiBHZXRDbGFzc0luZm9XIHRoZSBzYW1lIGhhY2sgZm9yIHN5c3RlbWNsYXNzZXMgYXMgaW4KCUdldENsYXNzSW5mb0EgKHdpbndvcmQgOTcgd2l0aCBuYXRpdmUgY29tY3RsMzIpLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgU0hHREZJTF9GSU5EREFUQSBjb3JyZWN0bHkgaW4gU0hHZXREYXRhRnJvbUlETGlzdFcuCgoJKiBjb250cm9scy9lZGl0LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgd1BhcmFtIG9mIFdNX1BBSU5UIG1zZyBmb3IgZWRpdCBjb250cm9sLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBvZmYgYnkgb25lIGVycm9yIGluIFdJTlNQT09MX0dldE9wZW5lZFByaW50ZXJBLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCXN1YmtleV9mb3VuZCBkaWQgbm90IHNlYXJjaCBmb3IgX2FsbF8gc3ViIGtleXMuCgpTYXQgQXVnIDIxIDE0OjQ3OjI5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBiYXNpYyBicm93c2luZyBpbiB0aGUgZmlsZSBuYW1lIGVkaXQgb2YgdGhlIGZpbGVkbGcgOTUuCgoJKiBjb250cm9scy9tZW51LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJQXZvaWQgY2hhbmdpbmcgdGhlIGFjdGl2YXRpb24gc3RhdGUgaW4gRW5hYmxlTWVudUl0ZW0uCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEZpeGVkICNpZmRlZiBzeW1ib2wgZm9yIFBvd2VyUEMuCgoJKiBvbGUvcGFyc2VkdC5jLCBvbGUvcGFyc2VkdC5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglPbmx5IGRlY2xhcmUgRGF0ZVN0eWxlIGluIGEgc2luZ2xlIGNvbXBpbGF0aW9uIHVuaXQuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgdGhlIGNhc2Ugb2YgYSB1c2VyIGRlZmluZWQgaWNvbiBmb3IgdGhlIHN5c2J1dHRvbiBoaXR0ZXN0LgoKCSogb2xlL3R5cGVsaWIuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeGVkIHR5cGVsaWIgcmVhZGluZyB0byBjb3JyZWN0bHkgdXNlIHRoZSBvZmZzZXQgb2YgdGhlIHR5cGVsaWIgdGhhdAoJaXMgZW1iZWRkZWQgaW4gZm9yIGV4YW1wbGUgYSBkbGwgZmlsZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogS3Jpc3RpYW4gTmllbHNlbiA8a3Jpc3RpYW4ubmllbHNlbkByaXNvZS5kaz4KCUZpeGVkIENyZWF0ZURJQlNlY3Rpb24oKSBjYWxsZWQgd2l0aCBuZWdhdGl2ZSBoZWlnaHQgdG8gc2V0IHRoZSBoZWlnaHQKCXBvc2l0aXZlIGluIHRoZSBjcmVhdGVkIERJQlNFQ1RJT04sIGFzIHBlciBNUyBrbm93bGVkZ2ViYXNlIFExODY1ODYuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJVGhlIHBhaW50IHJlY3RhbmdsZSByZXR1cm4gaW4gdGhlIFBBSU5UU1RSVUNUIGluIEJlZ2luUGFpbnQgc2hvdWxkCgluZXZlciBiZSBiaWdnZXIgdGhhbiB0aGUgY2xpZW50IGFyZWEgb2YgdGhlIHdpbmRvdy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCU1ha2Ugc3VyZSB0aGF0IGFuIGVtcHR5IHN0cmluZyBuZXZlciBtYXRjaGVzIGEgbGlzdGJveCBlbnRyeSBpbgoJTElTVEJPWF9GaW5kU3RyaW5nKCkuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWxpZ25tZW50IGZpeC4KCgkqIGNvbnRyb2xzL21lbnUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCB3aGVuIGFjY2Vzc2luZyBzeXNtZW51LgoKCSogZGVidWdnZXIvc3RhY2suYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZWFsbHkgZG8gYSBzaWxlbnQgYmFja3RyYWNlIHdoZW4gcmVxdWVzdGVkLgoKCSogZGVidWdnZXIvaGFzaC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCURvIG5vdCBzZXQgdGhlIGFkZHJlc3MgaWYgdGhlIHN5bWJvbCBpcyBzdGlsbCB0YWdnZWQgSU5WQUxJRC4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgTl9CSU5DTCBhbmQgTl9FSU5DTCBpbnN0cnVjdGlvbnMuCglGaXhlZCB0eXBlIHBhcnNpbmcgKGFzIGdlbmVyYXRlZCBieSBlZ2NzKS4KCldlZCBBdWcgMTggMTg6NDA6NTIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL2J1aWxkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIHR5cGVkZWYgdG8gd29yayBhcm91bmQgZWdjcyBwcm9ibGVtLgoKCSogb2xlLyouYzogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVkZXMgZnJvbSBvbGUgcmVsYXRlZCBmaWxlcy4KCgkqIG9sZS9jb21wb2JqLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBXT1cgY2hhbmdlcy4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93b3dudDMyLmgsIGxvYWRlci9tb2R1bGUuYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3dvdzMyLnNwZWMsIHJlbGF5MzIvd293dGh1bmsuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvb3JkaW5hbHMuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIFdPVyByb3V0aW5lcyB0byBzaW5nbGUgZmlsZS4KCUFkZGVkIGFsbCBtaXNzaW5nIFdPVyByb3V0aW5lcywgZml4ZWQgV09XQ2FsbGJhY2sxNkV4LgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaW50ZXJuYWwgYnVmZmVyIGZvciAxNiBiaXQgbW1pbyBNRU0gZmlsZXMuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gc29tZSBlcnJvcnMgaW4gY2xlYW5pbmcgdXAgdmFsdWVzIHJldHVybmVkIGJ5IE1DSSBkcml2ZXJzOiB0aGlzCgkgIHNob3VsZCBzb2x2ZSB0aGUgaXNzdWVzIHJlcG9ydGVkIHdpdGggdGhlIENEIHBsYXllci93cml0ZXIKCS0gY3Jhc2ggd2hlbiBjb21tYW5kIHdhcyByZXF1ZXN0ZWQgd2l0aCBhdXRvbWF0aWMgb3BlbiAobm90ZSwgdGhpcwoJICB3aWxsIG5vdyBncmFjZWZ1bGx5IHJlcG9ydCBhbiBlcnJvciwgbm90IGRvIHRoZSBjb3JyZWN0IHRoaW5nKS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIFBTSF9VU0VJQ09OSUQvUFNIX1VTRUhJQ09OIGFuZCB0aGUgUFNQX1VTRVRJVExFCglmbGFncy4KCgkqIHRvb2xzL2J1aWxkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBFRmxhZ3Mgd2VyZSBwYXNzZWQgaW5jb3JyZWN0bHkgYnkgQ2FsbEZyb20xNlJlZ2lzdGVyLgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHJlc3RvcmUgU1RBQ0sxNkZSQU1FIGZpZWxkcyBpbiBTd2l0Y2hTdGFja0JhY2sxNi4KCgkqIHRvb2xzL3dyYy93cmMuaCwgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvcGFyc2VyLnk6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJV3JjIGRpZCBub3QgY2hlY2sgYW55IElEcyB3aGljaCBhcmUgb25seSAxNiBiaXQuIENvbW1vbiBkaWFsb2dzIGhhZCBzb21lCglJRHMgbGFyZ2VyIGFuZCB0aGF0IGNhdXNlZCBwcm9ibGVtcy4gVGhpcyBpcyBub3cgc29sdmVkIChJIGhvcGUpLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gQXVnIDE1IDE4OjUyOjMyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogU3RldmUgVGliYmV0dCA8c3RldmV0QGNvcmVsLmNvbT4KCUZpeGVkIGN1cnNvciBzdHJldGNoIGNvZGUuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUluaGliaXQgd3JhcGFyb3VuZCBpbiBjb21wYXJpc29uLgoKCSogZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGxvYWRlci9sb2Fkb3JkZXIuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGludGVybmFsIGRsbCwgZXhwb3J0aW5nIGFscmVhZHkgZXhpc3RpbmcgcGF0aCBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIGNvbnRyb2xzL21lbnUuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUVuc3VyZSB0aGF0IHRoZSBXTV9FTlRFUklETEUgbWVzc2FnZSBpcyBub3Qgc2VudCBpZiB0aGUgd2FrZS11cCBldmVudAoJZm9yIHRoZSBNU0dfSW50ZXJuYWxHZXRNZXNzYWdlKCkgY2FsbCBpcyBhIFdNX1RJTUVSLgoKCSogcmMvd2luZXJjLmMsIGluY2x1ZGUvcmVzb3VyY2UuaCwgaW5jbHVkZS93aW5kZWYuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJR0NDIDMuMCBoYXMgbm90IGJlZW4gcmVsZWFzZWQgeWV0LCBidXQgaXQgaXMgZ29vZCB0byBiZSBwcmVwYXJlZC4KCgkqIG1pc2Mvc3B5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgcmVzb2x1dGlvbiBvZiBMVk0gbWVzc2FnZXMuCgoJKiBvYmplY3RzL2RpYi5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFkZGVkIHByb3RlY3Rpb24gYWdhaW5zdCBwb3NzaWJsZSBtZW1vcnkgY29ycnVwdGlvbi4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBTdGV2ZSBUaWJiZXR0IDxzdGV2ZXRAY29yZWwuY29tPgoJRml4ZWQgY3Vyc29yIHNlbGVjdGlvbiB0byBmaW5kIHRoZSBjb3JyZWN0IGN1cnNvciB3aGVuIG1vcmUgdGhhbiBvbmUKCWF2YWlsYWJsZS4KCgkqIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLnNwZWMsIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVJlcGxhY2VkIGEgc3RhdGljIHRlbiBlbGVtZW50IGFycmF5IHdpdGggYSBkeW5hbWljIHBvaW50ZXIgYXJyYXkuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXggc3BlY2lhbCBjYXNlIHdoZW4gbm8gcHJpbnRlciBpbnN0YWxsZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsLnNwZWM6CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglOZXcgcm91dGluZSBEbGxFbnRyeVBvaW50IGZvciBzaGVsbC5kbGwuICBMb2FkcyBzaGVsbDMyLmRsbCwKCXNpbmNlIG1vc3Qgc2hlbGwuZGxsIGZ1bmN0aW9ucyBjYWxsIHRoZWlyIDMyLWJpdCBjb3VudGVycGFydHMuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYWxpZ25tZW50LgoKCSogY29udHJvbHMvZWRpdC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJRU1fU0VUU0VMIHNjcm9sbHMgaWYgb3V0c2lkZSBvZiB0aGUgdmlzaWJsZSByYW5nZS4KCSJzaGlmdCtob21lIiBzZWxlY3Rpb24gaW1wcm92ZWQgaW4gdGhlIGVkaXQgY29udHJvbC4KCgkqIG9sZS9wYXJzZWR0LmM6IFJlbW92ZWQgUkNTIGtleXdvcmQuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmgsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3JlIHVzZSBvZiByYyBmaWxlcyBmb3Igc3RyaW5ncyBhbmQgbWVudXMsIGZpeGVzLiBGaXJzdCBpbnRlcm5hbAoJaWNvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBpbnRlcmZhY2U6IERyb3BTb3VyY2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJldHRlciBEcm9wVGFyZ2V0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBTSEdldEZpbGVJbmZvIGJldHRlci4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUHJvdGVjdCBjYWNoZSB3aXRoIGNyaXRpY2FsIHNlY3Rpb24uCglSZW1vdmVkIGhhY2sgdG8gbG9hZCBpY29ucyBmcm9tIGV4dGVybmFsIHNoZWxsMzIuZGxsLgoKCSogZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUXVlcnlHZXREYXRhLCBFbnVtRm9ybWF0RXRjIGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBtYXBwaW5nIG9mIGZpbGUgZXh0ZW5zaW9ucyB0byB0ZXh0LgoKCSogbWlzYy9kZGVtbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGFzY2lpL3VuaWNvZGUgaXNzdWUgZm9yIG5hbWluZyBvZiB0aGUgbXV0ZXhlcy4KCU1hZGUgbXV0ZXggaGFuZGxlcyBnbG9iYWwuCglGaXhlZCBpbmNvcnJlY3QgaW50ZXJwcmV0YXRpb24gb2YgcmV0dXJuIHZhbHVlcyBvZiBXYWl0Rm9yU2luZ2xlT2JqZWN0LgoKCSogb2JqZWN0cy9mb250LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRmlyc3QgaW1wbGVtZW50YXRpb24gb2YgR2V0Q2hhcmFjdGVyUGxhY2VtZW50QS4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgV01fU0VUSUNPTiBhbmQgV01fR0VUSUNPTiBtZXNzYWdlcy4KCgkqIGZpbGVzL2RyaXZlLmM6IE1vcnRlbiBFcmlrc2VuIDxtb3J0ZW5lQHNpbS5ubz4KCUZJWE1FIG9uIHVuaW1wbGVtZW50ZWQgZmVhdHVyZSBtYWRlIGxlc3Mgb2J0cnVzaXZlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJTm93IHRoZSBjb252ZXJzaW9uIGluIHRoZSBibHQgZnVuY3Rpb25zIHJvdW5kIHVwIHRoZSByZXN1bHQuCgoJKiB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYzogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJRG9jdW1lbnQgdXNlIG9mICJpbml0IiBpbiBidWlsZC1zcGVjLnR4dCwgYW5kIG1ha2UgYnVpbGQuYyBwcmludCBhCgl3YXJuaW5nIGlmIHNvbWVvbmUgdHJpZXMgdG8gdXNlICJpbml0IiBpbiBhIFdpbjE2IHNwZWMgZmlsZS4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmM6IE1pY2hhZWwgS2FyY2hlciA8a2FyY2hlckBkcGsuYmVybGluLmZpZG8uZGU+CglNYWtlIHN1cmUgd2UgaGF2ZSBhIGRncm91cCBiZWZvcmUgcGF0Y2hpbmcgcHJvbG9ncy4KCgkqICovTWFrZWZpbGUuaW4sICovLmN2c2lnbm9yZToKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBnbHVlIGNvZGUgZ2VuZXJhdGlvbiBjaGFuZ2VzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCB3aW5kb3dzL3dpbnByb2MuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Nub29wLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBuZXctc3R5bGUgV2luZSB0aHVua3MuCglSZW1vdmVkIHNvbWUgbm93IHVubmVjZXNzYXJ5IGZ1bmN0aW9uIHBvaW50ZXJzLgoKCSogaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIHRvb2xzL2J1aWxkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGxUbzE2Li4uIC8gQ2FsbEZyb20xNi4uLiBXaW5lIHRodW5rcyByZW9yZ2FuaXplZDoKCS0gQ2xlYW5lciBzZXBhcmF0aW9uIGJldHdlZW4gY29yZSBhbmQgZ2x1ZSBjb2RlLgoJLSBBcmd1bWVudCBjb252ZXJzaW9uIGdsdWUgY29kZSBub3cgaW4gQy4KCS0gR2x1ZSBjb2RlIG5lZWRlZCBmb3IgMTYtYml0IC5zcGVjIGZpbGVzIGlubGluZWQuCgpTYXQgQXVnIDE0IDE1OjUzOjUwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2NvbW0uYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJLSBpbXBsZW1lbnRlZCBHZXRDb21tTW9kZW1TdGF0dXMKCS0gZml4ZWQgdGhlIERUUiwgQ1RTIGFuZCBDT01NQlJFQUsgcmVsYXRlZCBzdWJmdW5jdGlvbnMgb2YgRXNjYXBlQ29tbUZ1bmN0aW9uCgktIGFkZGVkIG1vcmUgdmVyYm9zZSBUUkFDRWluZwoKCSogbWlzYy92ZXJzaW9uLmM6IE1vcnRlbiBFcmlrc2VuIDxtb3J0ZW5lQHNpbS5ubz4KCU1hZGUgR2V0VmVyc2lvbkV4KCkgYmVoYXZlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWNhdGlvbiB3aXRoCglyZWdhcmQgdG8gZXJyb3IgaGFuZGxpbmcuCgoJKiBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglNYXJrIEcuIEFkYW1zIDxtYWRhbXNAbGl2ZXBhZ2UuY29tPgoJQWRkZWQgc3R1YiBmb3IgRHJhd0RpYkNsb3NlLgoKCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGxvb2sgb2YgdGhlIGNvbWJvYm94J3MgZHJvcCBkb3duIGJ1dHRvbiB3aGVuIGluIFdpbjk1IGxvb2suCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGljb25zIGluIHByb3BlcnR5IHNoZWV0IHRhYnMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3dyYy5oOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVZlcnNpb24gMS4wLjE0IG9mIHdyYy4KClN1biBBdWcgIDggMTg6NTY6MDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCB3aW4zMi90aW1lLmM6IEZpeGVkIFNldExvY2FsVGltZSBwcm90b3R5cGUuCgoJKiBvbGUvb2xlMm5scy5jLCB3aW4zMi9rZXJuZWwzMi5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGZpbGVzL2Rvc19mcy5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgbG9hZGVyL2xpYnJlcy5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglSZXBsYWNlZCBhIGZldyBjYWxscyB0byBsc3RyKiBmdW5jdGlvbnMgYnkgdGhlaXIgQ1JURExMIG9yIGxpYmMKCWVxdWl2YWxlbnQuCgoJKiBtZW1vcnkvc3RyaW5nLmM6CglBZGRlZCBhbiBleGNlcHRpb24gaGFuZGxlciBhcm91bmQgYSBmZXcgbHN0ciogZnVuY3Rpb25zLgoKCSogZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9tYnN0cmluZy5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvY3J0ZGxsLmg6CglSZWltcGxlbWVudGVkIG11bHRpLWJ5dGUgYW5kIHdpZGUtY2hhcnMgZnVuY3Rpb25zIHRvIG5vdCBkZXBlbmQgb24KCWxzdHIqIGZ1bmN0aW9uczsgYWRkZWQgYSBmZXcgbWlzc2luZyBvbmVzOyBmaXhlZCBhIGNvdXBsZSBvZiBidWdzLgoKU2F0IEF1ZyAgNyAxNDozMjozNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9BdHRpYy93bmV0LmgsIGluY2x1ZGUvd2luZS93aW5uZXQxNi5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2lubmV0d2suaCwgaW5jbHVkZS93aW51c2VyLmgsIG1pc2MvbmV0d29yay5jLCByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvQXR0aWMvbXByLnNwZWMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tcHIvLmN2c2lnbm9yZSwgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXByL2F1dGguYywgZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbXByL21wcl9tYWluLmMsIGRsbHMvbXByL211bHRpbmV0LmMsIGRsbHMvbXByL25wcy5jLCBkbGxzL21wci9wd2NhY2hlLmMsIGRsbHMvbXByL3duZXQuYywgaW5jbHVkZS9uZXRzcGkuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2VwYXJhdGVkIFdpbjE2IChVU0VSKSBhbmQgV2luMzIgKE1QUikgbmV0d29yayByb3V0aW5lcy4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIE1QUiB0byBkbGxzL21wci8uCglBZGRlZCBwcm9wZXIgaGVhZGVycyBhbmQgc3R1YnMgZm9yIG1pc3NpbmcgTVBSIHJvdXRpbmVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wcm92ZWQgKHNvcnQgb2YpIFJlZ0ZsdXNoS2V5LgoKCSogd2luZG93cy93aW5wb3MuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSWYgdGhlIHdpbmRvdyBpcyBhbHJlYWR5IHRoZSB0b3Btb3N0IHdpbmRvdyBpbiBTaG93V2luZG93KFNXX1NIT1cpLCBpdAoJbXVzdCBub3QgYmUgYWN0aXZhdGVkLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglXTV9TWVNDT01NQU5EIG1lc3NhZ2UgKGZvciBTQ19DTE9TRSkgc2hvdWxkIGJlIHBvc3RlZCBub3Qgc2VudC4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglYMTFkcnYgU2V0RHJhd2FibGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIERDIG9yaWdpbiwgdGhpcyB0cmFuc2xhdGlvbgoJc2hvdWxkIGJlIHJlZmxlY3RlZCBmb3IgdGhlIGRjIGNsaXBwaW5nIHJlZ2lvbiBmb3IgQ1NfT1dOREMgYW5kIENTX0NMQVNTREMuCgoJKiB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RpYWxvZy5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVNldCBmb2N1cyB0byB0aGUgZGlhbG9nIGluIEVuZERpYWxvZy4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCU1ha2Ugc3VyZSB3ZSBjb21waWxlIHdpbmVzdHViLm8gYmVmb3JlIHRyeWluZyB0byBidWlsZCBhIFdpbmVsaWIgdGVzdAoJcHJvZ3JhbS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIGNhc2Ugc2Vuc2l0aXZpdHkgZmxhZy4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJSW1wbGVtZW50ZWQgdGhlIHJldHVybiBvZiBoRGV2TW9kZXMgYW5kIGhEZXZOYW1lcyBpbiB0aGUgUFJJTlRETEcKCXN0cnVjdHVyZSBvZiBQcmludERsZ0EoKS4KCgkqIHdpbmRvd3MvcXVldWUuYywgaW5jbHVkZS9xdWV1ZS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgaGFyZHdhcmVfZXZlbnQgdXNlIHdpbjMyLWNvbmZvcm1hbnQgcGFyYW1ldGVycy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglFeHBsaWNpdGx5IGxvYWQgc2hlbGwzMi5kbGwuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVRha2UgaW50byBhY2NvdW50IGljb25zIHdoZW4gZGV0ZXJtaW5pbmcgdGFiIHNpemUuCgoJKiBmaWxlcy9kcml2ZS5jOiBNb3J0ZW4gRXJpa3NlbiA8bW9ydGVuZUBzaW0ubm8+CglJbXByb3ZlZCBHZXREaXNrRnJlZVNwYWNlRXgoKSBpbXBsZW1lbnRhdGlvbiBhIGxpdHRsZSBiaXQuCgoJKiBtaXNjL2NvbW0uYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJLSBhZGRlZCBzb21lIG1vcmUgQmF1ZHJhdGVzCgktIGZpeGVkIGEgaGFuZyBpbiB0Y3NldGF0dHIgd2hlbiB0aGUgaW5wdXQgYnVmZmVyIGlzbid0IGVtcHR5CgktIGFkZGVkIG1vcmUgdmVyYm9zaXR5IGZvciBkZWJ1Z2dpbmcKCgkqIGNvbnRyb2xzL3VpdG9vbHMuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSGFuZGxlIHRoZSBjYXNlIHdoZW4gdGhlIGJ1dHRvbiBpcyByZWFsbHkgc21hbGwuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVdTX0VYX0RMR01PREFMRlJBTUUgYWxvbmUgZG9lcyBub3QgbWVhbiB0aXRsZSBiYXIsIHlvdSBzdGlsbCBoYXZlIHRvCglzcGVjaWZ5IFdTX0NBUFRJT04uCgpXZWQgQXVnICA0IDE1OjA3OjU3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYywgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBEaXJlY3RJbnB1dCBKb3lzdGljayBzdXBwb3J0ICh0ZXN0ZWQgd2l0aCBXQzpQcm9waGVjeSkuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL3RpbWUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJSW1wbGVtZW50ZWQgU2V0TG9jYWxUaW1lLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogSXZhbiBEZSBTYWVkZWxlZXIgPEl2YW5kc0BzeW1wYXRpY28uY2E+CglNaW5vciBmaXggdG8gdGhlIEZyZW5jaCBDYW5hZGlhbiBrZXlib2FyZC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2hlbiBmbGlwcGluZyBiYWNrYnVmZmVyIC0+IGZyb250YnVmZmVyLCBmaXJzdCBleGNoYW5nZSBzdXJmYWNlcywgdGhlbgoJY29weSBYSW1hZ2UsIHNpbmNlIHRoZSBwYWxldHRlIG1pZ2h0IG9ubHkgYmUgZGVmaW5lZCBpbiB0aGUgZnJvbnRidWZmZXIuCgoJKiB0b29scy93aW5laW5zdGFsbDogSm9lcmcgTWF5ZXIgPGptYXllckB0ZWxlc3VuMi50ZWxlbWF0aW9uLmRlPgoJQ3JlYXRlIHN5c2NvbmZkaXIgb24gaW5zdGFsbC4KCgkqIGRsbHMvc3RyZXNzLy5jdnNpZ25vcmU6IEZpeGVkIHR5cG8uCgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIGxvYWRlci9wZV9pbWFnZS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYzoKCUdvdCByaWQgb2YgZHNwcmludGYgYW5kIHJlbGF0ZWQgbWFjcm9zLgoKCSogc2VydmVyL211dGV4LmM6CglSZW1vdmUgdGhlIG11dGV4IGZyb20gdGhlIHRocmVhZCBsaXN0IHdoZW4gZGVzdHJveWluZyBpdC4KCgkqICovKjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgdmFyaW91cyBETExzIHRvIGRsbHMvCgpTdW4gQXVnICAxIDE0OjU4OjAyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1pc2MvZXJyb3IuYywgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDMzLmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zdGFjay5jOgoJUmVtb3ZlZCBJUF9yZWcsIFNQX3JlZyBhbmQgRkxfcmVnIGRlZmluaXRpb25zIHRvIGF2b2lkIHBvdGVudGlhbAoJYWxpYXNpbmcgb3B0aW1pemF0aW9uIHByb2JsZW1zLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS9taXNjZW11LmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9zaWduYWwuYzoKCVJlbW92ZWQgU0lHTkFMX01hc2tBc3luY0V2ZW50cyBhbmQgY2xlYW5lZCB1cCBzaWduYWwgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL0F0dGljL2FzeW5jLmgsIHdpbjMyL2NvbnNvbGUuYywgZmlsZXMvQXR0aWMvYXN5bmMuYywgZmlsZXMvTWFrZWZpbGUuaW4sIGZpbGVzL2ZpbGUuYzoKCVJlbW92ZWQgYXN5bmMgSS9PIHN1cHBvcnQuCgoJKiBpbmNsdWRlL2NvbW0uaCwgbWlzYy9jb21tLmM6CglVc2UgdGhlIHNlcnZpY2UgdGhyZWFkIGZvciBjb21tIG5vdGlmaWNhdGlvbnMuCgoJKiBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBsb2FkZXIvdGFzay5jLCBtc2Rvcy9kcG1pLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgd2luMzIva2VybmVsMzIuYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jOgoJTWFkZSBzdGFjayBtYW5pcHVsYXRpb24gbWFjcm9zIGludG8gaW5saW5lIGZ1bmN0aW9ucy4KCUNoYW5nZWQgYSBmZXcgYWNjZXNzZXMgdG8gY29udGV4dCByZWdpc3RlcnMgdG8gYXZvaWQgcG90ZW50aWFsCglhbGlhc2luZyBvcHRpbWl6YXRpb24gcHJvYmxlbXMuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL3dpbmRlZi5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1lbW9yeS9pbnN0ci5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJQ2hhbmdlZCBJTlNUUl9FbXVsYXRlSW5zdHJ1Y3Rpb24gdG8gdXNlIGEgQ09OVEVYVDg2IGluc3RlYWQgb2YgYQoJU0lHQ09OVEVYVC4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgd2luZS5jb25mLm1hbiBvbiBkaXN0Y2xlYW4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU2F0IEp1bCAzMSAxOTozNTo1OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9ub25jbGllbnQuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglDbG9zZSB0aGUgcmlnaHQgd2luZG93IHdoZW4gY2xpY2tpbmcgb24gYSBub24gYWN0aXZlIHdpbmRvdyBjbG9zZQoJYnV0dG9uLgoKCSogTWFrZWZpbGUuaW46IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglSZW1vdmVkIHRoZSBkZXBlbmRlbmN5IG9uICJkdW1teSIgZm9yIHdpbmUgYW5kIHdpbmUuc3ltLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJUmVtb3ZlIGZpbGUgZnJvbSBjYWNoZSB3aGVuIGZsdXNoaW5nIGl0IChiYXNlZCBvbiBhIHBhdGNoIGJ5IElhbgoJU2NobWlkdCkuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgQ09OVEVYVCBmb3IgQUxQSEEgYW5kIE1JUFMuCgoJKiBjb25maWd1cmUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHN1cHBvcnQgZm9yIFNvbGFyaXMgTGludC4KCgkqIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgdG9vbHMvbWFrZV9kZWJ1Zywgd2luMzIvY29uc29sZS5jLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS94dGVybS5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS94bWFsbG9jLmgsIG1pc2MveG1hbGxvYy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIG9mIHRoZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgU29sYXJpcyBMaW50LgoKCSogaW5jbHVkZS9wc2hwYWNrNC5oOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgQy9DKysgY29tcGlsZSBmaXguCgoJKiBtc2Rvcy9kb3NtZW0uYywgb2xlL3N0b3JhZ2UzMi5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglWYXJpb3VzIEFOU0kgQyBjb21wYWJpbGl0eSBmaXhlcy4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL2dkaS5zcGVjLCBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS93aW5zb2NrLmgsIG1pc2MvbmV0d29yay5jLCBtaXNjL3N5c3RlbS5jLCBtaXNjL3dpbnNvY2suYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBvbGUvb2xlZm9udC5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBvZiB0aGUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaS1jaGVjay4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWN0dWFsbHkgY3JlYXRlIHRoZSBtYW4vIHN1YmRpcmVjdG9yaWVzIGJlZm9yZSBpbnN0YWxsaW5nLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvcXVldWUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgS0VSTkVMLjQ0NyAoV0lOMzJfT2xkWWllbGQxNikuCgoJKiB3aW5kb3dzL2V2ZW50LmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3VzcGVuZCBXTkQgbG9jayBiZWZvcmUgRVZFTlRfU3luY2hyb25pemUuCgoJKiB3aW4zMi9kZXZpY2UuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDcmVhdGUgVnhEIGhhbmRsZSBvbmx5IGZvciBrbm93biBWeERzLgoKCSogTWFrZS5ydWxlcy5pbiwgcmVsYXkzMi9NYWtlZmlsZS5pbjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIGNvbXBpbGF0aW9uIG9mICouc3BlYy5jIGZpbGVzIHVzZSAtZm5vLWJ1aWx0aW4gcmVnYXJkbGVzcyBvZgoJd2hlcmUgdGhleSBhcmUuCgoJKiBpbmNsdWRlL3RhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkL2FkZGVkIG1pc3Npbmcvd3JvbmcgZnVuY3Rpb24gcHJvdG90eXBlcyBhbmQgbWFkZSBpbnRlcm5hbAoJZnVuY3Rpb25zIHN0YXRpYy4KCgkqIHRzeDExL3RzX3hzaG0uYywgdHN4MTEvdHNfeHV0aWwuYywgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvdHNfeGY4NmRnYS5jLCB0c3gxMS90c194Zjg2dm1vZGUuYywgdHN4MTEvdHNfeGxpYi5jLCB0c3gxMS90c194cG0uYywgdHN4MTEvdHNfeHJlc291cmNlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIG1pc3NpbmcgcHJvdG90eXBlcyBhbmQgbWFkZSBpdCB3b3JrIHdpdGggU29sYXJpcyBYMTEuCgoJKiBkZWJ1Z2dlci9leHRlcm5hbC5jLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgb2xlL2FudGltb25pa2VyLmMsIG9sZS9jb21wb3NpdGVtb25pa2VyLmMsIG9sZS9kYXRhY2FjaGUuYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvb2xlZm9udC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRWxpbWluYXRlZCB3YXJuaW5ncy4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCB0aGUgRFNFRyB2YWx1ZSBpbiB0aGUgU0VHVEFCTEVFTlRSWSBzdHJ1Y3QuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgYnVpbHRpbiB0b29sYmFyIGJpdG1hcHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oLCBpbmNsdWRlL3RyZWV2aWV3Lmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU29tZSBtb3JlIG1lc3NhZ2VzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3R1YiBmb3IgQ3J5cHRTZXRLZXlQYXJhbXMoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN0dWJzIGZvciBEQURfU2V0RHJhZ0ltYWdlKCkgYW5kIFBhdGhDbGVhbnVwU3BlYygpLgoKCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdHViIGZvciBfZXhjZXB0X2hhbmRsZXIyKCkuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgR2V0UmFuZG9tUmVnaW9uKCkuCgoJKiBjb250cm9scy9tZW51LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIHN5c3RlbSBidXR0b24gYmVoYXZpb3IgYW5kIGFzc29jaWF0ZWQgaXQgdG8gdGhlIHN5c3RlbQoJbWVudSBpbiB3aW45NS4gQWxzbyBwZXJtaXQgdGhlIFNDX0NMT1NFIGl0ZW0gdG8gYmUgZGlzYWJsZWQuCgoJKiBtaXNjL2NvbW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglCdWdmaXhlcyBhbmQgYSBmYWtlIEdFVEJBU0VJUlEuCgoJKiBmaWxlcy9hc3luYy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgYXN5bmMgZmRzIG5vbmJsb2NraW5nLgoKCSogd2luZG93cy9tZGkuYzogRGFuIExhbmdsb2lzIDxkYW5pZWxsQGNvcmVsLmNvbT4KCVJlbW92ZWQgYW4gaW5hcHByb3ByaWF0ZSBpZiBzdGF0ZW1lbnQgZnJvbSBNRElfQ2hpbGRBY3RpdmF0ZSB0aGF0CglwcmV2ZW50ZWQgdGhlIGFjdGl2YXRpb24gY29kZSBmcm9tIGV4ZWN1dGluZy4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgaW5jbHVkZS9tb250aGNhbC5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUJ1Z2ZpeGVzICYgZnVydGhlciB1cGRhdGVzIGZvciB0aGUgbW9udGggY2FsZW5kYXIgY29tbW9uIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kYXRldGltZS5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIGRhdGUvdGltZSBjb21tb24gY29udHJvbC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglQU0RSVl9Xcml0ZUFyYyBzaG91bGRuJ3Qgd3JpdGUgYSBuZXdwYXRoLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXggaGFuZGxpbmcgb2YgV01fTEJVVFRPTkRDTElDSyBtZXNzYWdlIGZvciBidXR0b25zIHdpdGggY2VydGFpbgoJc3R5bGVzLgoKCSogd2luZG93cy9kY2UuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglCdWcgZml4IGZvciB1cGRhdGluZyB0aGUgY2xpcHBpbmcgcmVnaW9uIGluIG5lc3RlZCBHZXREQ0V4IGNhbGxzLgoKCSogd2luZG93cy93aW5wb3MuYzogWXV4aSBaaGFuZyA8eXV4aXpAY29yZWwuY2E+CglUcmllZCB0byBmaXggdGhlIGNvZGUgZm9yIFNldFdpbmRvd1BvcyB0byBlcmFzZSB0aGUgYmFja2dyb3VuZAoJcHJvcGVybHkuCgpGcmkgSnVsIDMwIDE4OjEwOjIxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NvbW1kbGcvcnNyYy5yYywgaW5jbHVkZS93aW5zcG9vbC5oOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CgktIGFkZGVkIENvbGxhdGUvTm9Db2xsYXRlIEljb25zIHRvIFByaW50MzIgZGlhbG9nICh1bmZvcnR1bmF0ZWx5IHRoZXkKCSAgZG9uJ3QgZGlzcGxheSB5ZXQpLgoJLSBhZGRlZCBzdGF0dXMgc3RyaW5ncy4KCS0gYWRkZWQgc3RyaW5nIHRhYmxlIGZvciBpbnRlcm5hdGlvbmFsaXNhdGlvbiBvZiBzZXZlcmFsIGludGVybmFsCgkgIG1lc3NhZ2UgYm94ZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvd2ludXNlci5oOiBZdXhpIFpoYW5nIDx5dXhpekBjb3JlbC5jYT4KCVJlbW92ZWQgZHVwbGljYXRlZCBkZWZpbmVzIGluIHdpbnVzZXIuaCBhbmQgY29tbWN0cmwuaC4gQWxzbyBjb3JyZWN0ZWQKCWEgdHlwbyBmb3IgU1dfTUFYIHZhbHVlLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBmaWxlIGRpYWxvZy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3RyaXAgLmRydiBleHRlbnNpb25zIHRvIE1PRFVMRV9HZXRMb2FkT3JkZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIG1lbW9yeSBsZWFrLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBJbnN0YWxsIHRhc2stZW50cnkgYnJlYWtwb2ludCAqYWZ0ZXIqIEVYRSBtb2R1bGUgaXMgaW5pdGlhbGl6ZWQuCgoJKiBncmFwaGljcy9wc2Rydi9wcy5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBjYWxsIHRvIHRoZSBuZXdwYXRoIG9wZXJhdG9yIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgYXJjCglvcGVyYXRvci4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHByb2JsZW0gd2hlbiB0aGUgc3R5bGUgaXMgQlNfQklUTUFQIG9yIEJTX0lDT046IHRoZSBiaXRtYXAgb3IKCWljb24gbmVlZGVkIHRvIGJlIGNlbnRlcmVkIHdoZW4gdGhlIGJ1dHRvbiBpcyBzbWFsbGVyIHRoYW4gdGhlIGJpdG1hcC4KCgkqIHdpbmRvd3MvbWRpLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgbWVtb3J5IGxlYWsgdGhhdCBvY2N1cnMgd2hlbiB3ZSBtYXhpbWl6ZS9taW5pbWl6ZSBhbiBNREkKCWNoaWxkLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgbW9yZSBzdXBwb3J0IGZvciBidWRkeSB3aW5kb3dzIGluIHRoZSB1cGRvd24gY29udHJvbC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgcHJvcGVyIHdpbjk1IHN1cHBvcnQgZm9yIHRoZSBXU19CT1JERVIgc3R5bGUuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgdGhlIFdTX0JPUkRFUiBzdHlsZSB0byBhIFdTX0VYX0NMSUVOVEVER0Ugc3R5bGUgZm9yIHRoZQoJbGlzdGJveCBjb250cm9sLgoKCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGJvcmRlciBmb3IgdGhlIGxpc3Rib3ggY3JlYXRlZCBieSB0aGUgc2ltcGxlIGNvbWJvYm94LgoKCSogb2xlL2NvbXBvYmouYywgaWYxNjMyL2NvbXBvYmouc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIENvUmV2b2tlQ2xhc3NPYmplY3Qgc3R1YiBuZWVkZWQgYnkgQWNyb2JhdCAzIDE2IGJpdC4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJR2V0TW9kdWxlSGFuZGxlMTY6IHRyZWF0IFdpbjMyIG1vZHVsZXMgY29ycmVjdGx5LgoKV2VkIEp1bCAyOCAxNjozODo0NSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB1c2Ugb2YgU3RyUmV0VG9TdHJOLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0clJldFRvU3RyTltBfFd8QVddIG5ldyBpbmRlcGVuZGVudCB1bmljb2RlL2FzY2lpL2V4cG9ydCBmdW5jdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL2RsbHM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRkZWQgZXhwbGFuYXRpb24gb2YgdGhlIGN1cnJlbnQgRExMIHN1cHBvcnQuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBmaXhlZCBmcmVzaGx5IGludHJvZHVjZWQgYnVnIGluIEdsb2JhbExvY2sxNi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBJbml0TVVJTGFuZ3VhZ2UgYW5kIENPTUNUTDMyLjQxMC4KCUZpeGVkIHNvbWUgY29tcGlsZXIgd2FybmluZ3MuCgpUdWUgSnVsIDI3IDE3OjEwOjA2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIvZ2RpLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2NlbXUvbWFpbi5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL3VzZXIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgRmluYWxVc2VySW5pdDE2L0ZpbmFsR2RpSW5pdDE2IHN0dWJzLgoJQ2FsbCBvdXQgdG8gRmluYWxVc2VySW5pdCBpbiBNQUlOX0VtdWxhdG9yUnVuLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBtZW1vcnkvc2VsZWN0b3IuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgSXNCYWRGbGF0UmVhZFdyaXRlUHRyMTYoKS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBpbmNvcnJlY3QgZWRpdCBjb250cm9sIGJlaGF2aW91ciBpbiBtb3VzZSBtZXNzYWdlIGhhbmRsaW5nLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJU2VuZCBub3JtYWwgbW91c2UgbWVzc2FnZXMgdG8gV01fU0VUQ1VSU09SIHdoZW4gbm9uLWNsaWVudCBtb3VzZQoJbWVzc2FnZXMgb2NjdXIuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUNoZWNrIGlmIHRoZSB3aW5kb3cgaGFzIHRoZSBXU19DTElQU0lCTElOR1Mgc3R5bGUgYmVmb3JlIHVzaW5nIHRoZQoJRENYX0NMSVBTSUJMSU5HUyBmbGFnLgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvZGxncy5oLCBpbmNsdWRlL3RjaGFyLmg6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgV2luOTUgZmlsZSBvcGVuL3NhdmUgZGlhbG9ncy4KCgkqIE1ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIHRvb2xzLyBiZWZvcmUgYW55IG9mIHRoZSBvdGhlciBzdWJkaXJlY3RvcmllcywgZXZlbiB3aGVuIGRvaW5nCglwYXJhbGxlbCBtYWtlcy4KCgkqIG1lbW9yeS9nbG9iYWwuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFJldHVybiBzZWxlY3RvciBhbHNvIGluIENYIGZyb20gR2xvYmFsTG9jazE2KCkuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3JlIGdjYyBidWcgd29ya2Fyb3VuZHMuCgoJKiBncmFwaGljcy9wc2Rydi9wcGQuYywgaW5jbHVkZS93aW5nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIG1vcmUgcGFwZXIgc2l6ZXMgYW5kIGJpbiBuYW1lcyB0byBQUEQgcGFyc2VyLgoKCSogd2luZG93cy9kaW5wdXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBY3R1YWxseSByZXR1cm4gdGhlIG51bWJlciBvZiBldmVudHMgaW4gTW91c2VfR2V0RGV2aWNlRGF0YSAoZml4ZXMKCVdpbmcgQ29tbWFuZGVyIFByb3BoZWN5KS4gQWRkZWQgdGltZXN0YW1wIGFuZCBzZXF1ZW5jZSBnZW5lcmF0aW9uLAoJY3JpdGljYWwgc2VjdGlvbiBmb3IgbW91c2VkYXRhLiBEaXNhYmxlZCBtb3VzZSB3YXJwaW5nIGluCglHZXREZXZpY2VEYXRhIGZvciBub3cgKGdlbmVyYXRlcyBleGNlc3MgbW91c2UgZXZlbnRzKS4KClN1biBKdWwgMjUgMTM6MTU6NDkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqICovKi5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCAuc3BlYyBmaWxlcyB0byBjb3JyZXNwb25kaW5nIGRsbHMvIGRpcmVjdG9yeS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXZlcmFsIGZvY3VzIGFuZCBzZWxlY3Rpb24gcHJvYmxlbXMgaW4gbGlzdGJveGVzLgoKCSogd2luZG93cy9kY2UuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJUmV0cmlldmUgdGhlIGNsaXBwaW5nIHJlZ2lvbiBiZWZvcmUgc2V0dGluZyB0aGUgZHJhd2FibGUgYW5kIHJlc2V0IHRoZQoJY2xpcHBpbmcgcmVnaW9uIGFmdGVyLgoKCSogcmVsYXkzMi9BdHRpYy9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfZW51bWlkbGlzdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hbnkgZml4ZXMvcmVpbXBsZW1lbnRhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVJlbW92ZWQgZXhwZXJpbWVudGFsL3VudXNlZCBjb2RlLgoJVXNlIFNoZWxsRm9sZGVyIHRvIGdldCBWaWV3T2JqZWN0cy4KCVN0YXJ0ZWQgY2xlYW51cCBvZiB0aGUgY29udGV4dG1lbnUgY29kZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29tcGxldGUgcmVkZXNpZ24sIHNwbGl0IGludG8gMyBpbXBsZW1lbnRhdGlvbnMgKERlc2t0b3AsIE15Q29tcHV0ZXIKCWFuZCBmaWxlc3lzdGVtIGZvbGRlcnMpLiBBbGwgcGFyc2luZyBhbmQgYmluZGluZyBpcyBkb25lIHJlY3Vyc2l2ZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgU0hHZXRTcGVjaWFsRm9sZGVyUGF0aEEuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgU0hDcmVhdGVTaGVsbEZvbGRlclZpZXdFeC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglSZW1vdmVkIHNwZWNpYWwgQ29DcmVhdGVDbGFzc09iamVjdCBhbmQgdXNlIG9sZSBmdW5jdGlvbnMgaW5zdGVhZC4KCVNIQ3JlYXRlRGVmQ2xhc3NPYmplY3QgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGFjY2VzcyB0byBsbmsncyB0byBhIElTdHJlYW0gaW50ZXJmYWNlLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBpY29uIGJhY2tncm91bmQgKHdhcyBibGFjaykuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGdldHRpbmcgaWNvbnMgZnJvbSBmaWxldHlwZXMuCgoJKiBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBlbnVtZXJhdGlvbiBvZiBzaGVsbCBleHRlbnNpb25zLCBzZXBlcmF0ZWQgZW51bSBzdHVmZiBmb3IKCXRoZSAzIHNlcGVyYXRlIHNoZWxsZm9sZGVyIGltcGxlbWVudGF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVJld3JvdGUgR2V0RGF0YSBzbyBzdXBwb3J0IG11bHRpcGxlIHNlbGVjdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU2VwYXJhdGVkIHN0dWZmIGZvciBzaHYgYmFja2dyb3VuZCBjb250ZXh0bWVudSB0byBzZXBhcmF0ZSBmaWxlLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZnVuY3Rpb25zIHRvIGFjY2VzcyBhdHRyaWJ1dGVzIGluIEhDUi4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZS4gU2VwZXJhdGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNoZWxsdmlldyBiYWNrZ3JvdW5kCgljb250ZXh0bWVudS4KCgkqIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlLiBDb250YWlucyBmdW5jdGlvbnMgbm90IGluIHRoZSBvZmZpY2lhbCBoZWFkZXJzIGJ1dCB3aWRlbHkKCXVzZWQgZnJvbSBvdGhlciBkbGxzLgoKCSogTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgWDExT0JKUyBhbmQgTElCT0JKUyB0byB3aW5lIGRlcGVuZGVuY2llcyAod2UgY2FuJ3QgYWRkIEFMVF9MSU5LKS4KCgkqIE1ha2VmaWxlLmluOiBNYWtlIHN1cmUgd2UgYnVpbGQgdG9vbHMgZmlyc3QuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvd3Byb2NzLnNwZWMsIG1lbW9yeS9nbG9iYWwuYywgdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbGF5IGNvZGUgZm9yIFdpbjE2IHJlZ2lzdGVyIGZ1bmN0aW9ucyBjb252ZXJ0cyBhcmd1bWVudHMuCglOZXcgJ2ludGVycnVwdCcga2V5d29yZCBhZGRlZCAoZm9yIFdpbjE2IGludGVycnVwdCBoYW5kbGVycykuCglBZGFwdGVkIC5zcGVjIGZpbGVzIGFuZCBpbXBsZW1lbnRhdGlvbnMgb2YgcmVnaXN0ZXIgcm91dGluZXMuCgoJKiBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBtaXNjL3ByaW50ZHJ2LmMsIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGlmMTYzMi9nZGkuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCXtTdGFydHxFbmR9e0RvY3xQYWdlfSBnbyB0aHJvdWdoIERDZnVuY3MuCglJbXBsZW1lbnQgdGhlc2UgaW4gdGhlIFBvc3RTY3JpcHQgZHJpdmVyLgoJQ2hhbmdlIFBTRFJWX0VzY2FwZSB0byB1c2UgdGhlbS4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV29yayBhcm91bmQgJ2xvY2FsIGV4dGVybiBkZWNsYXJhdGlvbiB3aXRoIGF0dHJpYnV0ZScgZ2NjIGJ1Zy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnRhdGlvbiBvZiBTZXRFdmVudE5vdGlmaWNhdGlvbiBmb3IgdGhlIG1vdXNlIGRyaXZlci4KCgkqIG9sZS9jb21wb2JqLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTGV0IENvQ3JlYXRlSW5zdGFuY2UgdXNlIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSFBBVEguCgoJKiBpbmNsdWRlL29sZTIuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBpbmNvbXBsZXRlIHByb3RvLgoKCSogd2luZWRlZmF1bHQucmVnOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBrZXlzIG5lc3Nlc2FyeSBmb3IgcnVubmluZyB0aGUgbmV3IHNoZWxsMzIuCgoJKiBjb250cm9scy9zdGF0aWMuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJVXNlIEdESSBBUElzIHRvIGFjY2VzcyBiaXRtYXAgaW5mby4KCgkqIGdyYXBoaWNzL3BzZHJ2L2NsaXBwaW5nLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglSZXdyb3RlIFBTRFJWX1NldERldmljZUNsaXBwaW5nIHRvIHVzZSBHZXRSZWdpb25EYXRhIEFQSS4KClNhdCBKdWwgMjQgMTI6MjA6MjUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2NlbXUvbWFpbi5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9tYWluLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvQXR0aWMvY2FsbGJhY2suYywgbWlzYy9NYWtlZmlsZS5pbjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVW5pZnkgc3RhcnR1cCBzZXF1ZW5jZSBmb3IgV2luZSBhbmQgV2luZUxpYi4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmMsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIG1lbW9yeS9nbG9iYWwuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4IGJ1ZyB3aXRoIHBhc3RpbmcgV2luZSBjbGlwYm9hcmQgY29udGVudCB0byBleHRlcm5hbCBhcHBsaWNhdGlvbnMsCglieSBzdG9yaW5nIGNsaXBib2FyZCBkYXRhIG9uIHRoZSBzaGFyZWQgc3lzdGVtIGhlYXAuCgoJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOiBBY2hpbSBLYWlzZXIgPEFjaGltX0thaXNlckB0LW9ubGluZS5kZT4KCURyYXcgYW4gYWRkaXRpb25hbCB3aGl0ZSBiaXQgZm9yIGVhY2ggaW52ZXJ0IGJpdCBvZiBhIGN1cnNvci4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJV2hpbGUgaGFuZGxpbmcgdGhlIFggRm9jdXNJbiBtZXNzYWdlIGluIG1hbmFnZWQgbW9kZSwgaWYgdGhlIHdpbmRvdwoJaGFzIGJlZW4gZGlzYWJsZWQgcmV2ZXJ0IHRoZSBYIGZvY3VzIGJhY2sgdG8gdGhlIGxhc3QgZm9jdXMgd2luZG93LgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgVFJFRVZJRVdfSW5zZXJ0SXRlbVcuCgoJKiBncmFwaGljcy9lc2NhcGUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgRXh0RXNjYXBlLgoKCSogTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJ5aW5nIHRvIGZpeCBwYXJhbGxlbCBtYWtlIGJ5IGRvaW5nIGRpcmVjdCBzdWJkaXIvc3ViZGlyLm8gcnVsZXMuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN5bHZhaW4gU3QtR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGluY29uc2lzdGVuY3kgaW4gY29uZGl0aW9ucyB0aGF0IGRldGVybWluZXMgaWYgYSB3aW5kb3cgcmVxdWlyZXMKCWEgV00gYm9yZGVyLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZm9udC5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRm9yIGxhcmdlIGZvbnQgc2l6ZXMgY2FsbCBYTG9hZFF1ZXJ5Rm9udCB3aXRoIGEgMTAwIHBpeGVsIGhpZ2ggZm9udAoJYW5kIHJlc2NhbGUgdGhlIG1ldHJpY3MuCgoJKiBtaXNjL3ByaW50ZHJ2LmMsIG9iamVjdHMvZGMuYywgZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBoYW5kbGluZyBvZiAzMiBiaXQgQWJvcnRQcm9jLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgaW5jbHVkZS93aW5udC5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHByZXNzZWQgY29tcGlsZXIgd2FybmluZyBieSB1c2luZyB0aGUgJ3VudXNlZCcgYXR0cmlidXRlLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2V4dGVybmFsLmM6CglLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgoJQWRkZWQgdXRpbGl0eSBmdW5jdGlvbiB0byBpbnZva2UgZXh0ZXJuYWwgZGVidWdnZXIuCgoJKiBtdWx0aW1lZGlhLy5jdnNpZ25vcmUsIG11bHRpbWVkaWEvd2lubW0ucmMsIG11bHRpbWVkaWEvd2lubW1fRW4ucmMsIG11bHRpbWVkaWEvd2lubW1fRnIucmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIFdJTk1NIHJlc291cmNlcy4KCgkqIG11bHRpbWVkaWEvQXR0aWMvbWNpc3RyaW5nLmMsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgb2Jzb2xldGVkIG1jaXN0cmluZy5jLgoJQWRkZWQgc3VwcG9ydCBmb3IgcmVzb3VyY2VzLgoKCSogbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmV0dXJuIHZhbHVlcyBmb3Igc29tZSBtZXNzYWdlcyBpbiBEcml2ZXJQcm9jIChNQ0lfR0VUREVWQ0FQUyAmCglNQ0lfU1RBVFVTKSBmb3IgbWNpU2VuZFN0cmluZy4KCgkqIG11bHRpbWVkaWEvdGltZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNwcmVhZCB0aGUgdXNlIG9mIE1NIGNyaXQgc2VjdC4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBzb21lIE1DSSBmdW5jdGlvbnMgdG8gbWNpLmMuCglOb3cgbG9hZHMgZXJyb3IgbWVzc2FnZXMgZnJvbSBzdHJpbmcgdGFibGUuCglTcHJlYWQgdGhlIHVzZSBvZiBNTSBjcml0IHNlY3QuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHBhcnNpbmcgJiBzdG9yaW5nIG9mIGNvbW1hbmQgdGFibGVzLgoJTWVyZ2VkIHNvbWUgTUNJIGZ1bmN0aW9ucyBmcm9tIG1tc3lzdGVtLmMuCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIHNvbWUgbm8gbG9uZ2VyIHVzZWQgcHJvdG90eXBlcy4KCUFkZGVkIGNvbW1hbmQgdGFibGVzIHRvIE1DSSBzdHJ1Y3R1cmUuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVnZ3kgcHJvdG90eXBlLgoKCSogZGVidWdnZXIvdHlwZXMuYzogS2V2aW4gSG9sYnJvb2sgPGt3aEBuZW9zb2Z0LmNvbT4KCUF2b2lkIGNyYXNoaW5nIG9uIGEgYmFkIHN5bWJvbCBhZGRyZXNzIG9mIDB4MDAwMC4KCgkqIG1pc2MvdzMyc3lzLmM6IEZpeGVkIEdldFczMlN5c1ZlcnNpb24xNiByZXR1cm4gdHlwZS4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmMsIHJlbGF5MzIvdXR0aHVuay5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGlmMTYzMi93cHJvY3Muc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBNT0RVTEVfR2V0V25kUHJvY0VudHJ5MTYoKS4KCVVzZSAzMi1iaXQgd2luZG93IHByb2NlZHVyZXMgaW4gQ09NTURMRyBpbnN0ZWFkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3V0JnBhc3RlIGJ1Zy4KCgkqIGluY2x1ZGUvZG9jb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5c3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRkIGEgZmV3IHN0dWJzLCBzb21lIEMrKyBjb21wYXRpYmlsaXR5LCBhbmQgZml4IGEgZmV3IHR5cGVzLgoKCSogaW5jbHVkZS9pbml0Z3VpZC5oLCBvbGUvZ3VpZC5jOiBBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglEZWNsYXJlIG9ubHkgb25lIGluc3RhbmNlIG9mIEdVSURfTlVMTC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHZhcmlvdXMgcHJvYmxlbSB3aXRoIEltYWdlTGlzdF9EcmF3LgoKCSogd2luZG93cy9kaWFsb2cuYzogU3RlcGhhbmUgTHVzc2llcjxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVJlLWVuYWJsZSB0aGUgb3duZXIgd2luZG93IGluIHRoZSBFbmREaWFsb2coKS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgbm90aWZpY2F0aW9ucy4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsd2F5cyByZXRyaWV2ZSBDYWxsb3V0IHJvdXRpbmVzIHVzaW5nIEdldFByb2NBZGRyZXNzKCkuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVNlbmQgV01fQ09OVEVYVE1FTlUgb24gV01fUkJVVFRPTlVQLCBub3QgV01fUkJVVFRPTkRPV04uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgY29tcGlsZXIgd2FybmluZy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglMZXQgdGhyb3VnaCBtb3JlIGZsYWdzIHRvIEVudW1QcmludGVycy4KCUZpeGVzIGZvciBHZXRQcmludGVyL0dldFByaW50ZXJEcml2ZXIuCgoJKiBncmFwaGljcy9wc2Rydi9jb2xvci5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggc3R1cGlkIGBydWJiaXNoIGF0IGVuZCBvZiAlJVRpdGxlJyBidWcuCglEb24ndCBjb21wbGFpbiBhYm91dCBwYWxldHRlIHJlbGF0aXZlIFJHQnMuCglJZiBvdXRwdXQgcGFyYW0gdG8gQ3JlYXRlREMgaXMgTlVMTCBkZWZhdWx0IHRvIGBMUFQxOicgLSBIYWNrLgoKRnJpIEp1bCAyMyAxOTozMzoyNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZV9nbC5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUJldHRlciBkZXRlY3Rpb24gb2YgT3BlbkdMLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgbWlzYy9BdHRpYy9jYWxsYmFjay5jLCB0b29scy9idWlsZC5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBSZXZlcnRlZCBDYWxsVG8xNiByb3V0aW5lcyB0byBTVERDQUxMIGNvbnZlbnRpb24uCgoJKiBvYmplY3RzL2ZvbnQuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3RyaW5nIHRvIEdldFRleHRFeHRlbnRQb2ludCBpcyBub3QgbmVjZXNzYXJpbHkgMCB0ZXJtaW5hdGVkLgoJRml4IGZ1bmN0aW9uIG5hbWUgYDMyJ3MgaW4gY29tbWVudHMgLSBBUEkgbmFtaW5nIG1hZG5lc3MgbWFrZXMgdGhpcwoJd29ydGh3aGlsZS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBncmFwaGljcy9kcml2ZXIuYywgZ3JhcGhpY3MvcHNkcnYvUkVBRE1FLCBpbmNsdWRlL3dpbnNwb29sLmgsIHJlbGF5MzIvQXR0aWMvd2luc3Bvb2wuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUVudW1Kb2JzIHN0dWIuCglVcGRhdGUgZ3JhcGhpY3MvcHNkcnYvUkVBRE1FLgoJQWRkIHdhcm5pbmdzIHRvIERSSVZFUl9HZXREcml2ZXJOYW1lLgoKCSogd2luZG93cy9tZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJhZCBwdHIgb2NjdXJyZW5jZSBpbiB0aGlzIGNsYXNzIFduZFByb2MuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIEFkZGVkIGEgbmV3IG9wdGlvbiAnbm94c2htJwoJLSBBZGRlZCBhIDE2YnBwIC0+IDMyIGJwcCBjb252ZXJzaW9uIGZ1bmN0aW9uCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ2hhbmdlIGNvbG9yIGdyYXkgdGV4dCB0byAxMjggMTI4IDEyOCBmb3Igd2luOXggbG9vay4KClR1ZSBKdWwgMjAgMTU6MTM6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9kZWJ1Z2dlci5jOgoJRG8gbm90IG91dHB1dCB0ZXh0IGluIE91dHB1dERlYnVnU3RyQVcgd2hlbiBub3QgYmVpbmcgZGVidWdnZWQKCgkqIHdpbmRvd3MvbWRpLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJTURJRGVzdHJveUNoaWxkOiBNREkgd2luZG93IG1lbnUgaXRlbSB3YXMgZGVsZXRlZCBvbmx5IGlmIHRoZSBjdXJyZW50CglkZXN0cm95ZWQgY2hpbGQgd2FzIGFjdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVzZXQgZGlzYWJsZWQgc3R5bGUgZm9yIHRoZSBkaWFsb2cgYm94ZXMgc2V0IG9uIHByb3BlcnR5IHBhZ2VzLgoKCSogdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy9DSEFOR0VTOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gR2VuZXJhbGl6ZWQgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gMiBhbmQgNCBieXRlIGludGVnZXJzIHNsaWdodGx5IHRocm91Z2gKCSAgYSBuZXcgcGFyc2VyIHN0YXRlLiBUaGUgaXMgbm93IGEgd2FybmluZyB3aGVuIGEgMiBieXRlIGludGVnZXIgaXMgbGFyZ2VyCgkgIHRoYW4gMTYgYml0IChhbmQgaXMgdHJ1bmNhdGVkKS4KCS0gRml4ZWQgYSBjb3VwbGUgb2YgY29zbWV0aWMgdGhpbmdzIGluIHRoZSBETEdJTklUIHN0dWZmIHNvIHRoYXQgZHVtcGluZyBvZgoJICB0aGlzIHR5cGUgd2lsbCB3b3JrIGFzIGV4cGVjdGVkLgoJLSBBZGRlZCBnZW5lcmFsaXplZCBsYW5ndWFnZS92ZXJzaW9uL2NoYXJhY3RlcmlzdGljcyBzdXBwb3J0IHRvIHRoZSBETEdJTklUCgkgIHJlc291cmNlIHR5cGUuCgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJLSBBZGRlZCBzdXBwb3J0IGZvciBETEdJTklUIHJlc291cmNlLXR5cGUuCgktIEFkZGVkIHN0cmluZyBjb250aW51YXRpb24gYW5kIGVtYmVkZGVkIHF1b3RpbmcuCgktIEFkZGVkIG51bWVyaWMgSURzIGZvciBpY29ucyBpbiBjb250cm9scy4KCglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gQnVnZml4OiBEaXN0aW5ndWlzaCBiZXR3ZWVuIDIgYW5kIDQgYnl0ZSBpbnRlZ2VycyBpbiBSQ0RBVEEuCgpTdW4gSnVsIDE4IDE4OjQyOjI5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL0F0dGljL3N0cmluZy5jLCBtaXNjL01ha2VmaWxlLmluOgoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJUmVtb3ZlIHN0cmluZy5jIGJlY2F1c2UgYWxsIG9mIGl0cyBmdW5jdGlvbnMgd2VyZSBtb3ZlZCB0byBjcnRkbGwuYwoJd2hlcmUgdGhleSBiZWxvbmdlZC4KCgkqIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3ByZXByb2MuYywgdG9vbHMvd3JjL3JlYWRyZXMuYywgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBpbGUgd2l0aCBHTlUgQydzIC1JLSBvcHRpb24uCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV29yayBhcm91bmQgZ2NjIHNpZzExIGZhdWx0LgoKCSogb2JqZWN0cy9nZGlvYmouYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCByb3VuZGluZyBpbiBNdWxEaXYuCgoJKiBncmFwaGljcy9wc2Rydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvcHNkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJLSBpbXBsZW1lbnRhdGlvbiBvZiBTZXREZXZpY2VDbGlwcGluZwoJLSBjb29yZGluYXRlIHN5c3RlbSBvcmlnaW4gZml4CgoJKiB3aW4zMi9rZXJuZWwzMi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdvcmstYXJvdW5kIGZvciBjb21waWxlciBidWcuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90cmVldmlldy5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gSW1wbGVtZW50YXRpb24gb2Ygc2ltcGxlIGNvbWN0bDMyIHY1LjAgY2hhbmdlcy4KCS0gVFZNX1NPUlRDSElMRFJFTkNCIGFsc28gYWNjZXB0cyBUVklfUk9PVCBhcyBhIHZhbGlkIGhQYXJlbnQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIHBvaW50ZXIgdmFsaWRhdGlvbiBhbmQgYWRkaXRpb25hbCBzYW5pdHkgY2hlY2sgdG8gSXNWYWxpZFNpZCgpLgoKCSogY29udHJvbHMvdWl0b29scy5jOiBEZW5uaXMgQmp8cmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJU21hbGwgZml4IGluIFVJVE9PTFM5NV9EcmF3UmVjdEVkZ2UoKS4KCUFsc28gYSBmaXggdG8gZHJhdyBzY3JvbGxiYXItYnV0dG9ucyBtb3JlIGxpa2UgaW4gd2luOXguCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW4gV0lOX1VwZGF0ZU5DUmduLCBkbyBub3Qgc2VuZCBpbiBXTV9OQ1BBSU5UIGEgcmVnaW9uIHRoYXQgaXMgdXNlZAoJYWZ0ZXJ3YXJkcywgYnV0IGEgY29weSBvZiBpdC4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hlY2sgYmV0dGVyIHRoYXQgaGFuZGxlcyBhcmUgYWN0dWFsIGhhbmRsZXMgdG8gYSByZWdpb24uCgoJKiB3aW5kb3dzL2RjZS5jOiBMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglTdG9wIERDRV9HZXRWaXNSZWN0IGRlcmVmZXJlbmNpbmcgYSBudWxsIHduZFB0ci4KCgkqIGNvbmZpZ3VyZS5pbiwgZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIE1ha2UucnVsZXMuaW4sIFJFQURNRSwgY29uZmlndXJlOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJVXBkYXRlZCBSRUFETUUgYW5kIG1hbiBwYWdlLgoJU3BsaXQgZG9jdW1lbnRhdGlvbiBmb3Igd2luZS5jb25mIGludG8gbmV3IHdpbmUuY29uZig1KSBtYW5wYWdlLgoKCSogaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvY2xpcGJvYXJkLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUyc3R1YnMuYywgb2xlL29sZWNsaS5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgT0xFIENsaXBib2FyZCBBUEkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVZhbGlkYXRlIHRoZSBwYXJlbnQgd2l0aCB0aGUgY2hpbGQgd2luZG93IGNsaWVudCByZWN0YW5nbGUgd2hlbiB0aGUKCXBhcmVudCdzIHVwZGF0ZSByZWdpb24gaXMgbm90IGVtcHR5LgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy9wYWludGluZy5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRGVsYXkgV01fTkNQQUlOVCBtZXNzYWdlIHVudGlsIHRoZSAicGFpbnRlcidzIGFsZ29yaXRobSIga2lja3MgaW4uCgoJKiBjb250cm9scy9jb21iby5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBmYWtlIFdNX0xCVVRUT05VUCBtZXNzYWdlLgoKCSogaW5jbHVkZS93aW52ZXJzaW9uLmgsIG1pc2MvdmVyc2lvbi5jOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZvciBXaW45OC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCU1hY3JvIGRlZmluaXRpb25zIHVzZWQgU05ETVNHIGluc3RlYWQgb2YgU2VuZE1lc3NhZ2VbQVddLiBCYWQuCgoJKiBtaXNjL21haW4uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglkZWJ1Z18oc25vb3B8cmVsYXkpXyhleGNsdWRlfGluY2x1ZGUpbGlzdCA9PiBmaXhlZCBhbGxvY2F0aW9uLCBtb2R1bGVzCglhcmUgbm93IHN0b3JlZCB1cHBlcmNhc2UuCgoJKiBjb250cm9scy9idXR0b24uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIEJTX0lDT04gc3R5bGUuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNyZWF0ZURpYWxvZ1BhcmFtQSBzaG91bGQgbm90IGNhbGwgQ3JlYXRlRGlhbG9nUGFyYW1XLCBiZWNhdXNlCgl0aGF0J2QgY3JlYXRlIGEgZGlhbG9nIGJveCB3aXRoIGEgVW5pY29kZSBkaWFsb2cgcHJvY2VkdXJlLi4uCgoJKiBjb250cm9scy9zY3JvbGwuYzogRGVubmlzIEJqfHJrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCVdpbjl4IGxvb2sgJiBmZWVsIG9uIHNjcm9sbGJhcnMuCgoJKiBncmFwaGljcy9wc2Rydi9SRUFETUUsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgaW5jbHVkZS9wc2Rydi5oOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbnRyb2R1Y2VkIGEgW3BzZHJ2XSBzZWN0aW9uIGluIHdpbmUuY29uZiB3aXRoIGEgcHBkZmlsZSB2YWx1ZQoJc3BlY2lmeWluZyB0aGUgcGF0aCBhbmQgbmFtZSBvZiB0aGUgUFBEIGZpbGUuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBpbmNsdWRlL3VwZG93bi5oOgoJU3lsdmFpbiBTdC1HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgdGhlIHVwZG93biBidWRkeSB3aW5kcHJvYyBzdWJjbGFzc2luZyBmb3IgdGhlCgloYW5kbGluZyBvZiBrZXlib2FyZCB1cCBhbmQgZG93biBhcnJvdy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCVVwZGF0ZWQgZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IHJlbmFtZWQgaGVhZGVyLgoKCSogbWlzYy93aW5zb2NrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgbWlzc2luZyBpbmNsdWRlIG5ldGluZXQvdGNwLmgsIGZvciBUQ1BfTk9ERUxBWS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglHZXRJY29uIGJ1ZyBmaXguCgpUaHUgSnVsIDE1IDE2OjA5OjA1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgV0lOQVBJIGZvciBFbnRyeUFkZHJQcm9jLgoKCSogbWlzYy9kZGVtbC5jOiBLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJTWlub3IgYnVnIGZpeGVzIGluIERkZU5hbWVTZXJ2aWNlLCBhbHNvIGNoYW5nZXMgdG8gbW92ZSB0b3dhcmRzCglwcm9jZXNzLXNhZmUgY29kZS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBEZW5uaXMgQmp8cmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJV2luOXggbG9vayAmIGZlZWwgb24gYnV0dG9ucyBhbmQgYSBmaXggZm9yIG93bmVyZHJhd24gYnV0dG9ucwoJKGJhY2tncm91bmQgc2V0IHRvIENPTE9SX0JUTkZBQ0UpLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglHbG9iYWxTbWFydFBhZ2VVbmxvY2soKSBzdHViIGFkZGVkLgoKCSogbWlzY2VtdS9BdHRpYy9lbXVsYXRlLmMsIG1pc2NlbXUvTWFrZWZpbGUuaW4sIG1pc2NlbXUvbWFpbi5jLCByZWxheTMyL01ha2VmaWxlLmluLCB0b29scy9idWlsZC5jLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luODdlbS8uY3ZzaWdub3JlLCBkbGxzL3dpbjg3ZW0vTWFrZWZpbGUuaW4sIGRsbHMvd2luODdlbS9lbXVsYXRlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L01ha2VmaWxlLmluLCBpZjE2MzIvTWFrZWZpbGUuaW4sIG1lbW9yeS9pbnN0ci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgcG9zaXRpb24taW5kZXBlbmRlbnQgY29kZSBpbiBhc3NlbWJseSBnbHVlIHdoZW4gYnVpbGRpbmcgLnNvLgoJSW5jbHVkZSBpZjE2MzIvIGFuZCBncmFwaGljcy93aW4xNmRydi8gaW50byBXaW5lTGliLgoJTW92ZSBtaXNjZW11L2VtdWxhdGUuYyBpbnRvIGRsbHMvd2luODdlbS8uCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIHdheSBvZiBhbGxvY2F0aW9uIG9wZW4gbWNpIGRyaXZlcnMgKGFycmF5ID0+IGxpc3QpOyB0aGlzIGxpc3QKCWlzIG5vdyBzdG9yZWQgb24gYSBwZXIgcHJvY2VzcyBiYXNpcy4KCgkqIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGZpeGVkIHNpemUgYXJyYXkgdG8gc3RvcmUgc3BlY2lmaWMgZGF0YSAobm93IHVzaW5nCgltY2koU2V0fEdldClEcml2ZXJEYXRhIHRvIHN0b3JlIHNwZWNpZmljIGRhdGEpLgoJTWFrZSB1c2Ugb2YgZGVmYXVsdCBkZWJ1Z3Rvb2xzLmggY2hhbm5lbC4KCUFkZGVkIENBTExCQUNLIGF0dHJpYnV0ZSB0byBEcml2ZXJQcm9jLgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIHdheSBvZiBhbGxvY2F0aW9uIG9wZW4gbWNpIGRyaXZlcnMgKGFycmF5ID0+IGxpc3QpLgoJRmlyc3QgdmFsaWQgSUQgZm9yIG1jaSBkZXZpY2VzIGlzIG5vdyAxIChzb21lIHByb2dzIHdlcmUgdGVzdGluZyB0aGlzCgl2YWx1ZSkuCglTdGFydGVkIGltcGxlbWVudGluZyBtY2kgY29tbWFuZCB0YWJsZSByZXNvdXJjZXMuCglIYW5kbGVkIGNsb3Npbmcgb24gTUNJX0FMTC4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgZml4ZWQgc2l6ZSBhcnJheSB0byBzdG9yZSBzcGVjaWZpYyBkYXRhIChub3cgdXNpbmcKCW1jaShTZXR8R2V0KURyaXZlckRhdGEgdG8gc3RvcmUgc3BlY2lmaWMgZGF0YSkuCglEZWZlcnJlZCBvcGVuaW5nIG9mIGxvdy1sZXZlbCBkZXZpY2UgdW50aWwgcGxheSBpcyByZXF1ZXN0ZWQuCgoJKiBtdWx0aW1lZGlhL0F0dGljL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJldHVybiB2YWx1ZSBmb3IgJ29wZW4nIGNvbW1hbmQuCglDaGFuZ2VkIHdheSBvZiBhbGxvY2F0aW9uIG9wZW4gbWNpIGRyaXZlcnMgKGFycmF5ID0+IGxpc3QpLgoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBmaXhlZCBzaXplIGFycmF5IHRvIHN0b3JlIHNwZWNpZmljIGRhdGEgKG5vdyB1c2luZwoJbWNpKFNldHxHZXQpRHJpdmVyRGF0YSB0byBzdG9yZSBzcGVjaWZpYyBkYXRhKS4KCUZpeGVkIG1taW8gY2h1bmsgbG9va3VwIG9uIG9kZCBzaXplICdmbXQgJyBjaHVua3MuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVbmlmb3JtaXplZCB1c2Ugb2YgZmQgdG8gbWlkaSBkZXZpY2UuCglOb3cgYWxsb2NhdGluZyBtZW1vcnkgb24gc3lzdGVtIGhlYXAuCglGaXhlZCBidWcgd2hlbiBzdG9wcGluZyBhbGwgbm90ZXMuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29zbWV0aWMgZml4ZXMuCglDaGFuZ2VkIHdheSBvZiBhbGxvY2F0aW9uIG9wZW4gbWNpIGRyaXZlcnMgKGFycmF5ID0+IGxpc3QpLgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgbWNpIGNvbW1hbmQgdGFibGUgcmVzb3VyY2VzLgoKCSogbXVsdGltZWRpYS90aW1lLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIGNhbGxpbmcgbW0gdGltZXJzIGNhbGxiYWNrcyB3aXRoIG1tIHRpbWVyIGNyaXQgc2VjdCBsb2NrZWQuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRVJST1JfTU9SRV9EQVRBIHJlcXVpcmVzIHRvIHdyaXRlIHRoZSBuZWVkZWQgbnVtYmVyIG9mIGJ5dGVzIGludG8gdGhlCglscGNjaFggdmFsdWUgKHZlcmlmaWVkIGFnYWluc3QgTlQzLjUxIGFkdmFwaTMyLmRsbCkuCgoJKiBpbmNsdWRlL3dpbm50LmgsIHdpbjMyL2RldmljZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBzb21lIENPTlRFWFQ4NiB2cy4gQ09OVEVYVCBtaXNtYXRjaGVzLgoKCSogaW5jbHVkZS9uZWV4ZS5oLCBsb2FkZXIvbmUvc2VnbWVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzdXBwb3J0IGZvciAzMi1iaXQgTkUgY29kZSBzZWdtZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZpeCBhIGhhbmcgd2hlbiB3ZSBwcm9jZXNzIFdNX1NUWUxFQ0hBTkdFRC4KCVNtYWxsIG9wdGltaXphdGlvbiBpbiBUUkVFVklFV19EcmF3SXRlbS4KCUZpeCBkZWJ1Z2dpbmcgY3Jhc2ggaW4gVFJFRVZJRVdfRXhwYW5kLgoKTW9uIEp1bCAxMiAxMzo0NjozOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3BpZGwuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIHByb3RvdHlwZSBmb3IgSUxGaW5kQ2hpbGQoKS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbWlzYy9uZXR3b3JrLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvbXBpbGVyIHdhcm5pbmdzIGZpeC4KCgkqIG1pc2MvY29tbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUR1bWIgZml4ZXMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGJ1Z3MgaW50cm9kdWNlZCBieSAncmVnaXN0ZXInIGFuZCAncmV0dXJuJyBmdW5jdGlvbiBjaGFuZ2VzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBEaXJlY3REcmF3U3VyZmFjZTo6RmxpcCwgZG8gbm90IGNoYW5nZSBmbGFncywgZXhjaGFuZ2UgdGhlIGxvdwoJbGV2ZWwgcGh5c2ljYWwgc3VyZmFjZXMgKHZlcmlmaWVkIGZvciBYTElCIHdpdGggV0MgUHJvcGhlY3kpLgoKU3VuIEp1bCAxMSAxNzoyMDowNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgbWlzYy9zeXN0ZW0uYywgbWlzYy90b29saGVscC5jLCBtaXNjL3czMnN5cy5jLCB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYywgd2luMzIva2VybmVsMzIuYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvbG9jYWwuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi9rZXlib2FyZC5zcGVjLCBpZjE2MzIvc3lzdGVtLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvdG9vbGhlbHAuc3BlYywgaWYxNjMyL3VzZXIuc3BlYywgaWYxNjMyL3czMnN5cy5zcGVjLCBpZjE2MzIvZHVtbXkuYzoKCVRha2UgYWR2YW50YWdlIG9mIHRoZSBuZXcgcmVnaXN0ZXJzIHNhdmVkIGluIHRoZSBTVEFDSzE2RlJBTUUgdG8gdHVybgoJc29tZSAncmVnaXN0ZXInIGZ1bmN0aW9ucyBpbnRvIG5vcm1hbCBmdW5jdGlvbnMuCglSZW1vdmVkIHRoZSBmZXcgcmVtYWluaW5nICdyZXR1cm4nIGZ1bmN0aW9ucyB0byBzaW1wbGlmeSByZWxheQoJaGFuZGxpbmcuCgoJKiBpcGMvQXR0aWMvaGFzaF90ZXN0LmMsIGlwYy9BdHRpYy9ydW5fdGVzdHMsIGlwYy9BdHRpYy9zaG1fYmxvY2suYywgaXBjL0F0dGljL3NobV9mcmFnbWVudC5jLCBpcGMvQXR0aWMvc2htX2ZyYWdtZW50X3Rlc3QuYywgaXBjL0F0dGljL3NobV9tYWluX2Jsay5jLCBpcGMvQXR0aWMvc2htX3NlbWFwaC5jLCBpcGMvQXR0aWMvc2htX3NlbWFwaF90ZXN0LmMsIGlwYy9BdHRpYy93aW5lX3Rlc3Rfc3R1Yi5jLCBsb2FkZXIvc2lnbmFsLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9kZGVtbC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL0F0dGljL2RkZV9hdG9tLmgsIGluY2x1ZGUvQXR0aWMvZGRlX21lbS5oLCBpbmNsdWRlL0F0dGljL2RkZV9wcm9jLmgsIGluY2x1ZGUvQXR0aWMvc2htX2Jsb2NrLmgsIGluY2x1ZGUvQXR0aWMvc2htX2ZyYWdtZW50LmgsIGluY2x1ZGUvQXR0aWMvc2htX21haW5fYmxrLmgsIGluY2x1ZGUvQXR0aWMvc2htX3NlbWFwaC5oLCBpbmNsdWRlL2RkZS5oLCBpcGMvQXR0aWMvLmN2c2lnbm9yZSwgaXBjL0F0dGljL01ha2VmaWxlLmluLCBpcGMvQXR0aWMvUkVBRE1FLCBpcGMvQXR0aWMvVEVTVF9GUkFHTUVOVC5zdGQsIGlwYy9BdHRpYy9iaXRfYXJyYXkuYywgaXBjL0F0dGljL2JpdF9hcnJheV90ZXN0LmMsIGlwYy9BdHRpYy9kZGUudGV4LCBpcGMvQXR0aWMvZGRlX2F0b20uYywgaXBjL0F0dGljL2RkZV9hdG9tX3Rlc3QuYywgaXBjL0F0dGljL2RkZV9tZW0uYywgaXBjL0F0dGljL2RkZV9tZW1fdGVzdC5jLCBpcGMvQXR0aWMvZGRlX3Byb2MuYywgaXBjL0F0dGljL2RkZV9wcm9jX3Rlc3QuYywgaXBjL0F0dGljL2dlbmVyaWNfaGFzaC5jLCBpcGMvQXR0aWMvZ2VuZXJpY19oYXNoLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdGhlIG9sZCwgaGlzdG9yaWNhbCBhbmQgbm8gbG9uZ2VyIHdvcmtpbmcgSVBDIHN1cHBvcnQuCgoJKiBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBtaXNjL0F0dGljL2NhbGxiYWNrLmMsIG1pc2NlbXUvbWFpbi5jLCByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB0b29scy9idWlsZC5jLCBNYWtlLnJ1bGVzLmluOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb2R1bGFyaXplZCBDYWxsRnJvbS9UbzE2IHJvdXRpbmVzLiAgQWRhcHRlZCBkZXBlbmRlbnQgcm91dGluZXMsCgkxNi1iaXQgc25vb3AvcmVsYXkgZGVidWdnaW5nLCBhbmQgbWFrZSBydWxlcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJldmVydCBsYXN0IGNoYW5nZSBpbiB3aW5kb3cgYWN0aXZhdGlvbiBvbiBtb3VzZSBjbGljay4KCgkqIG1lbW9yeS9nbG9iYWwuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeGVkIGEgY2FzZSB3aGVuIEdsb2JhbFNpemUgZGlkIG5vdCByZXR1cm4gemVybyBhZnRlciBhbiBlcnJvci4KClNhdCBKdWwgMTAgMTM6MTY6NTYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9zb2NrZXQuYzogSG93YXJkIEFicmFtcyA8aG93YXJkQGNzLm5wcy5uYXZ5Lm1pbD4KCVJlbmFtZWQgc3RhdGljIGdsb2JhbCB2YXJpYWJsZSAnaW92ZWMnIHRvICdteWlvdmVjJy4KCgkqIHdpbmRvd3MvZGlucHV0LmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy93aW5zb2NrLmMsIG11bHRpbWVkaWEvam95c3RpY2suYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci90aHJlYWQuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZmlsZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIGluY2x1ZGUvd2luZGVmLmgsIGxvYWRlci9wZV9pbWFnZS5jOgoJSG93YXJkIEFicmFtcyA8aG93YXJkQGNzLm5wcy5uYXZ5Lm1pbD4KCUFkZGVkIGNoZWNrcyBmb3Igc3lzL2Vycm5vLmgsIHN5cy9zaWduYWwuaCBhbmQgc3lzL21tYW4uaC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ3JlYXRlIGRpYWxvZyB3aW5kb3cgdXNpbmcgQ3JlYXRlV2luZG93RXgxNi9XIGRlcGVuZGluZyBvbiB0ZW1wbGF0ZQoJdHlwZSwgbm90IGRpYWxvZyBwcm9jZWR1cmUgdHlwZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJTWFkZSBJU2hlbGxGb2xkZXI6OmZuUGFyc2VEaXNwbGF5TmFtZSByZXR1cm4gYSByZWxhdGl2ZSBwaWRsLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL21vbnRoY2FsLmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRmlyc3QgdHJ5IGF0IHRoZSBtb250aCBjYWxlbmRhciBjb21tb24gY29udHJvbC4gTWFpbiBmZWF0dXJlcwoJYmFzaWNhbGx5IE9LLgoKCSogZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBpbmNsdWRlL3dpbnNwb29sLmgsIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgR2V0UHJpbnRlckEgYW5kIEdldFByaW50ZXJEcml2ZXJBLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBCTl9DTElDS0VEIG5vdGlmaWNhdGlvbiBpbiBXTV9TRVRGT0NVUy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGluY2x1ZGUvZG9jb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzLgoKCSogcmVsYXkzMi9BdHRpYy9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBTdHJUb09sZVN0ck4uCglGaXhlZCBjcmFzaCBpbiBTaGVsbEV4ZWN1dGVFeC4KCUltcGxlbWVudGVkIFNIUmVnT3BlbktleUEsIFNIUmVnUXVlcnlWYWx1ZUV4QSwgU3RyVG9PbGVTdHJbQXxXXS4KCVN0dWJzIGZvciBEb0Vudmlyb25tZW50U3Vic3RbQXxXXSwgUGF0aFByb2Nlc3NDb21tYW5kW0F8V10uCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSVN0cmVhbSBpbnRlcmZhY2UgZm9yIGZpbGUgYWNjZXNzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgY3Jhc2ggZHVyaW5nIHNlY29uZCBETExfUFJPQ0VTU19ERVRBQ0ggaWYgdGhlIGRsbAoJcmVmY291bnQgcmVhY2hlZCB6ZXJvIGFmdGVyIHRoZSBzZWNvbmQgb25lIChtZW1vcnkgZnJlZWQgdHdpY2UpLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU29tZSBtb3JlIHBpZGwtdHlwZXMuCglJbXBsZW1lbnRhdGlvbiBvZiBJTElzUGFyZW50LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb21wbGV0ZWx5IHJld3JpdHRlbi4gSVBlcnNpc3RTdHJlYW0gaW50ZXJmYWNlIGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCURMTEdldENsYXNzT2JqZWN0L0NsYXNzZmFjdG9yeTogY3JlYXRlIG9iamVjdHMgYnkgQ0xTSUQgbm90IElJRC4KCgkqIG1pc2MvbWFpbi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogZXhpdCgpIHJlcGxhY2VkIGJ5IEV4aXRQcm9jZXNzKCkuCgoJKiBtZW1vcnkvbG9jYWwuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGNvcnJlY3RseSBjb3BlIHdpdGggZW5kID4gMHhmZmZlLgoKCSogbGlicmFyeS93aW5lc3R1Yi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIEV4aXRQcm9jZXNzKCkgYWZ0ZXIgV2luTWFpbigpIHJldHVybnMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcHJvdmVkIGJlaGF2aW91ciBvZiBHZXRNb2R1bGVIYW5kbGUxNiB3LnIudCBkdW1teSBtb2R1bGVzLgoJRG9uJ3QgdHJ5IHRvIGNhbGwgV0VQIG9mIGR1bW15IG1vZHVsZXMgaW4gRnJlZUxpYnJhcnkxNigpLgoKCSogaW5jbHVkZS93aW5yZWcuaCwgbWlzYy9yZWdpc3RyeS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgYGNvbnN0J3MgdG8gc29tZSByZWdpc3RyeSBBUEkgZnVuY3Rpb25zLgoKCSogd2luZWRlZmF1bHQucmVnOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGEgY291cGxlIG9mIERpcmVjdFggQ0xTSUQgZW50cmllcy4gVGhpcyBtYWtlcyBVbnJlYWwgY29tcGxldGVseQoJaW5kZXBlbmRlbnQgb2YgYSB3aW5kb3dzIGluc3RhbGxhdGlvbi4KCgkqIG9sZS9vbGUybmxzLmM6IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJR2V0VGltZUZvcm1hdCgpIHNob3VsZCByZXR1cm4gTG9jYWxUaW1lIG5vdCBTeXN0ZW1UaW1lLgoKCSogcHJvZ3JhbXMvd2NtZC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvUkVBRE1FLCBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUZPUiBhbmQgSUYgY29tbWFuZHMgYWRkZWQuCglNT1ZFIGNvbW1hbmQgYWRkZWQsIGJ1dCBubyB3aWxkY2FyZCBzdXBwb3J0LgoJUmVkaXJlY3Rpb24gYWRkZWQuCglGaXhlZCBUSU1FICh3YXMgcmVwb3J0aW5nIGluIEdNVCkuCglNb3JlIGhlbHAgdGV4dC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJU29tZXRpbWVzIHRoZSB0ZXh0IG9uIGEgdGFiIGNvbnRyb2wgZ290IHRydW5jYXRlZC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGhlaWdodCBvZiB0aGUgZHJvcHBlZCBsaXN0IHdoZW4gdGhlcmUgYXJlIGZldyBpdGVtcyBpbiB0aGUKCWxpc3QuCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIGFsbCBFVkVOVF9TeW5jaHJvbml6ZSggRkFMU0UgKSBjYWxsczsgdXNlIGEgcGVyaW9kaWMgY2FsbGJhY2sKCWNhbGxpbmcgWEZsdXNoKCkgaW5zdGVhZC4KCgkqIGluY2x1ZGUvcHNkcnYuaCwgZ3JhcGhpY3MvcHNkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3BzZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9wc2Rydi9iaXRtYXAuYywgZ3JhcGhpY3MvcHNkcnYvYnJ1c2guYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgcGF0dGVybmVkIGJydXNoZXMgKGxldmVsIDIgUG9zdFNjcmlwdCBvbmx5KS4KCVNpbXBsZSBQYXRCbHQgZm9yIFBBVENPUFksIFdISVRFTkVTUyBhbmQgQkxBQ0tORVNTLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJSW1wbGVtZW50YXRpb24gb2YgVFZNX1NPUlRDSElMRFJFTi4gTWFzc2FnZWQgVFZNX1NPUlRDSElMRFJFTkNCIGEgYml0Cgl0byB1c2UgdGhlIHNhbWUgY29kZSBwYXRoLgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXggSW5pdFRhc2soKSB0byB3b3JrIGlmIERHUk9VUCB3YXMgbWFudWFsbHkgcmVzaXplZC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgcmVsYXkzMi9BdHRpYy9hZHZhcGkzMi5zcGVjOgoJSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgc3R1YiBmb3IgU2V0VGhyZWFkVG9rZW4oKSwgcmVxdWlyZWQgYnkgT2ZmaWNlIDIwMDAuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBDT01NRExHIGhvb2sgcHJvY2VkdXJlcyB3ZXJlIG5vdCBDQUxMQkFDSy4KCgkqIG9sZS9zdGdfc3RyZWFtLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSXQgaXMgcG9zc2libGUgZm9yIGEgc3RyZWFtIHRvIGhhdmUgYm90aCBzbWFsbCBibG9jayBhbmQgYmlnIGJsb2NrCgljaGFpbiBhcyBOVUxMLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgc3RyaW5nIGNvbXBhcmUgY2FzZSBpbnNlbnNpdGl2ZSBpbiBHZXRNb2R1bGVIYW5kbGUxNigpIGFzIGEKCXF1aWNrIGZpeCBmb3IgV2luV29yZCA2LgoKCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIHN0dWIgZm9yIFdOZXRHZXRVbml2ZXJzYWxOYW1lW0F8V10uCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBjcmFzaCBkdWUgdG8gaW52YWxpZCBHRElfT2JqLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGNyYXNoIGR1ZSB0byBpbnZhbGlkIHBvaW50ZXIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBKdWwgIDQgMTY6MDk6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvKi5jLCBvbGUvKi5jLCBmaWxlcy8qLmMsIG11bHRpbWVkaWEvKi5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLCB1c2luZyBzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsKCVN0cmlkdmFsbC4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lucmVnLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCBNYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgb24gYW4gaW1wbGVtZW50YXRpb24gb2YgV2luNjQgZm9yIHVzZSBvbiA2NCBiaXQgcGxhdGZvcm1zLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglXaW5kb3dzIHNob3VsZCBiZSBhY3RpdmF0ZWQgaW4gdGhlc2UgY2FzZXM6CgkxLSB3aGVuIHdlIGNsaWNrIG9uIG5vbiBhY3RpdmUgd2luZG93LgoJMi0gd2hlbiB3ZSBjYW5jZWwgYSBtb3Zpbmcgb3IgcmVzaXppbmcgb2YgYSBub24gYWN0aXZlIHdpbmRvdy4KCgkqIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIHNhbXBsZSB3aW5lLmNvbmYuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIGNvZGUgdG8gdGhlIFgxMSBkcml2ZXIuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgbG9hZGVyL3Jlc291cmNlLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwZXJzb24ubmV0PgoJRml4ZWQgRGVzdHJveUFjY2VsZXJhdG9yVGFibGUgYW5kIGltcGxlbWVudGVkIENyZWF0ZUFjY2VsZXJhdG9yVGFibGVXLgoKCSogd2luZG93cy93aW4uYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJV0lOX0ZpbmRXaW5kb3c6IHVzZSBHZXRFeGVwdHIocFduZC0+aEluc3RhbmNlKSBmb3IgQ0xBU1NfRmluZENsYXNzQnlBdG9tLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgY2hlY2sgZm9yIHdoZXRoZXIgdG8gY2FsbCBTZXRXaW5kb3dQb3Mgd2hlbiBzaG93aW5nIGEgd2luZG93CglzY3JvbGwgYmFyLgoKCSogb2xlL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgY29tcGxldGUgbGNpZCBvciBqdXN0IHRoZSBwcmltYXJ5IGxhbmd1YWdlIGlkIGluIHRoZQoJcmVnaXN0cnkgbG9va3VwcyAoZml4ZXMgb25lIEZpcnN0Q2xhc3NDbGllbnQgMzIgcHJvYmxlbSkuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogUGVyIMVuZ3N0cvZtIDxwYW5nQG1ib3gzMDQuc3dpcG5ldC5zZT4KCUZpeGVkIGEgcHJvYmxlbSB3aXRoIGFwcHMgdGhhdCBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgb24KCVdNX01PVVNFQUNUSVZBVEUgbWVzc2FnZSAobWFpbiB3aW5kb3cgd2FzIG5vdCBhY3RpdmF0ZWQpLgoKCSogbG9hZGVyL3BlX3Jlc291cmNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2hlbiBlbnVtZXJhdGluZyByZXNvdXJjZSwgb25seSB1c2UgdGhlIGxvd2VyIDMxIGJpdCBvZiB0aGUgbmFtZSBhcwoJdGhlIG9mZnNldCAoZm9yIHRoZSBoaWdoZXN0IGJpdCBpcyAnMScpLiBTaG91bGQgZml4IHdpbmUtbmV0LzI1Ny4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYywgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIGRsbHMvbnRkbGwvcnRsLmMsIG1pc2Mvd3NwcmludGYuYywgbXVsdGltZWRpYS9tY2ltaWRpLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVzIGZvciBjb21waWxlIG9uIG5vbi1JbnRlbCBwbGF0Zm9ybXMuCgoJKiBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9udHNlY2FwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oLCBpbmNsdWRlL3dpbnN2Yy5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZC9tb3ZlZC9hZGRlZCBtaXNzaW5nL3dyb25nIGZ1bmN0aW9uIHByb3RvdHlwZXMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvaW50ZXJuYXRpb25hbGlzYXRpb24sIHByb2dyYW1zL3Byb2dtYW4vRGEucmMsIHJlc291cmNlcy9zeXNyZXNfRGEucmM6CglIZW5yaWsgT2xzZW4gPGhlbnJpa0BpYWVzdGUuZGs+CglDbGVhbnVwIG9mIHRoZSBEYW5pc2ggc3VwcG9ydC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFl1eGkgWmhhbmcgPHl1eGl6QGNvcmVsLmNhPgoJRml4IGEgYnVnIGluIFNldFdpbmRvd1BvcyB0byBwcmV2ZW50IHBhcmVudCBmcm9tIGVyYXNpbmcgaXRzIGNoaWxkCglwYWludGluZyBhcmVhIHdoZW4gcGFyZW50IHdpbmRvdyBhbmQgY2hpbGQgd2luZG93IGRvbid0IGhhdmUKCVdTX0NMSVBDSElMRFJFTiBhbmQgV1NfQ0xJUFNJQkxJTkdTLgoKCSogd2luZG93cy9kZWZ3bmQuYzogWXV4aSBaaGFuZyA8eXV4aXpAY29yZWwuY2E+CglNYWtlIGRlZnduZHByb2MgZXJhc2UgdGhlIGNvcnJlY3QgbG9jYXRpb24uCgpTYXQgSnVsICAzIDE2OjAxOjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2NydGRsbC5zcGVjLCB3aW5kb3dzL2RpbnB1dC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS93aW4uaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy9jcnRkbGwuYywgbWlzYy9zaGVsbC5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+Cglzb21lIHNtYWxsIGluY2x1ZGUgZml4ZXMsIHNvbWUgY2hlY2tzIGZvciBOVUxMIHB0cnMsCglsb2FkZXIvZWxmLmM6IGZpeGVkIHRoZSAibGliIiBpbnNlcnRpb24KCWNydGRsbDogYWRkZWQgZnNvcGVuKCkKCWRpbnB1dDogcmV0dXJuIHRoYXQgd2UgYXJlIGF0dGFjaGVkLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IFJldmVydGVkIHByZXZpb3VzIGNoYW5nZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDYW5jZWwgcGVuZGluZyBub3RpZmljYXRpb25zIHdoZW4gRU1fU0VUTU9ESUZZIGlzIGNhbGxlZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZpeCBhIGNyYXNoIHdoZW4gZG9pbmcgc29ydGVkIGluc2VydHMgYXQgdG9wIGxldmVsLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZXdvcmtlZCBub25jbGllbnQgZHJhd2luZyBjb2RlLiBXaW4zMSBsb29rIG5vdyB3b3JrcyBtb3JlIGxpa2UgcmVhbAoJV2luMzEsIHNvIGFwcHMgbGlrZSBEZWxwaGkgMS4wIG5vIGxvbmdlciBnbyBpbnRvIGluZmluaXRlIHJlY3Vyc2lvbgoJZXRjLiBGaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIHdpbjk1IGxvb2sgdG9vLCBidXQgbm90IGFzIHRob3JvdWdobHkKCShlLmcuIFdTX0VYX1dJTkRPV0VER0UgaXMgc3RpbGwgbm90IGhhbmRsZWQpLgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU01fQ1tYWV1GUkFNRSBpcyBCb3JkZXJXaWR0aCArIDEuCgoJKiBtZW1vcnkvbG9jYWwuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IExvY2FsSW5pdCB3aXRoIHN0YXJ0ID09IDAgYWx3YXlzIHBsYWNlcyBoZWFwIGF0IGVuZCBvZiBzZWdtZW50LgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFRBU0tfQ2FsbFRvU3RhcnQgZGlkbid0IHBhc3MgY29ycmVjdCBoSW5zdGFuY2UgdG8gYXBwLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJT24gTkUgcHJvY2VzcyBjcmVhdGlvbiwgbW92ZSBtYWpvciBwYXJ0IG9mIE5FIEVYRSBtb2R1bGUgbG9hZGluZyBhbmQKCU5FIGluc3RhbmNlIGNyZWF0aW9uIGludG8gdGhlIGNoaWxkIHByb2Nlc3MuCgoJKiBkb2N1bWVudGF0aW9uL2d1aTogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXaW5kb3cgc3R5bGUgdXBkYXRlcy4KCgkqIGxpYnRlc3QvZ3VpdGVzdC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNvbWUgZW5oYW5jZW1lbnRzLCBhbmQgcmVtb3ZhbCBvZiBDKysgY29uc3RydWN0cy4KCgkqIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBjaGFpbnMgb2Ygc3VyZmFjZXMuIFRoaXMgYWxsb3dzIGFuIHVubGltaXRlZCBudW1iZXIKCW9mIGJhY2tidWZmZXJzLCBhbmQgb3RoZXIgYXR0YWNoZWQgc3VyZmFjZXMgKHpidWZmZXJzLCBhbHBoYSBidWZmZXJzLAoJd2hhdGV2ZXIpLgoKCSogZmlsZXMvZmlsZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBVbmxvY2tGaWxlRXggc3R1Yi4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2ludGVybmF0aW9uYWxpc2F0aW9uLCByZXNvdXJjZXMvc3lzcmVzX0NhLnJjLCByZXNvdXJjZXMvc3lzcmVzX0VzLnJjOgoJSm9zZSBNYXJjb3MgTG9wZXogQ2FyYXZhY2EgPGpvc2UubG9wZXpAdXBjbmV0LnVwYy5lcz4KCUFkZGVkIG1pc3NpbmcgNjE3NjIgZW50cnkgb24gc3lzdGVtIHJlc291cmNlcyBpbiBTcGFuaXNoIGFuZAoJQ2F0YWxvbmlhbiBsYW5ndWFnZXMuCgoJKiBjb250cm9scy9zY3JvbGwuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglNYWtlIEdldFNjcm9sbEluZm8gcmV0dXJuIHNjcm9sbCBwb3Mgd2hlbiBwcm9ncmFtIHJlcXVlc3RzIHRodW1iIHBvcwoJb3V0c2lkZSBkcmFnIG9wZXJhdGlvbi4KClN1biBKdW4gMjcgMTU6NDA6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL2QzZF9wcml2YXRlLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlYWRDb25zb2xlQTogdXNlIGlyIGFzIHBvaW50ZXIgdG8gKHJlcSsxKS4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW1vdmUgdGhlICB2YWxpZGF0ZWQgY2hpbGQgYXJlYSBmcm9tIHRoZSB1cGRhdGUgcmVnaW9uIG9mIHBhcmVudCBmb3IKCXdpbmRvd3Mgd2l0aG91dCBXU19DTElQQ0hJTERSRU4gc3R5bGUuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBHcnA4IGluc3RydWN0aW9ucyBoYXZlICpieXRlKiBCaXRPZmZzZXQgb3BlcmFuZC4KCgkqIG1zZG9zL3Z4ZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogbWlzc2luZyBXSU5BUElzIGFkZGVkLgoKCSogb2xlL29sZTIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbGVNZXRhRmlsZVBpY3RGcm9tSWNvbkFuZExhYmVsMTY6IHNsaWdodGx5IGJyb2tlbiwgdXNlIExQT0xFU1RSMTYuCgoJKiBmaWxlcy9maWxlLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmV0dXJuIEVSUk9SX0RJU0tfRlVMTCBmb3IgV3JpdGVGaWxlLgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzogRXJpYyBXaWxsaWFtcyA8ZXdpbGxAbmNhbC52ZXJpby5jb20+CglGaXhlZCBtaXNzaW5nIHJldHVybiBhZnRlciBhYm91dCBkaWFsb2cuCgpTYXQgSnVuIDI2IDE5OjA5OjExIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy8qLmMsIG1pc2MvKi5jLCBtaXNjZW11LyouYywgZ3JhcGhpY3MvKi5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLCB1c2luZyBzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsKCVN0cmlkdmFsbC4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgdG9vbHMvYnVpbGQuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL29yZGluYWxzLmMsIHdpbmRvd3Mvd2luLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvY2FsbGJhY2suYywgbWlzYy9lcnJvci5jLCBtaXNjL3dpbmRlYnVnLmMsIG1pc2NlbXUvZW11bGF0ZS5jLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MDkuYywgbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MTEuYywgbXNkb3MvaW50MTIuYywgbXNkb3MvaW50MTMuYywgbXNkb3MvaW50MTUuYywgbXNkb3MvaW50MTYuYywgbXNkb3MvaW50MTcuYywgbXNkb3MvaW50MTkuYywgbXNkb3MvaW50MWEuYywgbXNkb3MvaW50MjAuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgbXNkb3MvaW50MjkuYywgbXNkb3MvaW50MmEuYywgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50MzMuYywgbXNkb3MvaW50M2QuYywgbXNkb3MvaW50NDEuYywgbXNkb3MvaW50NGIuYywgbXNkb3MvaW50NWMuYywgbXNkb3MvaW50ZXJydXB0cy5jLCBtc2Rvcy92eGQuYywgbXNkb3MveG1zLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9tc2Rvcy5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci90YXNrLmM6CglDaGFuZ2VkIENPTlRFWFQgaW50byBDT05URVhUODYgZXZlcnl3aGVyZSB3ZSByZWFsbHkgd2FudCBhbiBpMzg2Cgljb250ZXh0LgoJQWRkZWQgI2lmZGVmIF9faTM4Nl9fIGFyb3VuZCBhY2Nlc3NlcyB0byAzODYgcmVnaXN0ZXJzIGluIHRoZSBnZW5lcmljCglDT05URVhUIHN0cnVjdHVyZS4KCgkqIGluY2x1ZGUvd2lubnQuaDogQWRkZWQgQ09OVEVYVDg2IGRlZmluaXRpb24uCglBZGRlZCBQb3dlclBDIGNvbnRleHQgYXMgYW4gZXhhbXBsZSAobm90IHRlc3RlZCkuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oOgoJRml4ZXMgZm9yIG5vbi1pMzg2IGNvbXBpbGluZy4KCgkqICovKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQU5TSSBDIGZpeGVzLgoJUmVtb3ZlZCB3YXJuaW5ncy4KCU1hZGUgdGhlIGluY2x1ZGUgZmlsZXMgc2VsZi1zdWZmaWNpZW50LgoJU29tZSBTb2xhcmlzIGZpeGVzLgoKCSogcmVsYXkzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIERQQV9Mb2FkU3RyZWFtIGFuZCBpbXByb3ZlZCBEUEFfTWVyZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBjaGVjayBmb3IgaW52YWxpZCBwYXJlbnQgaXRlbS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBTSERvRHJhZ0Ryb3AoKSBzdHViLgoKCSogb2JqZWN0cy9yZWdpb24uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIEdldFJhbmRvbVJlZ2lvbigpLgoKCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgV05ldFJlbW92ZUNhY2hlZFBhc3N3b3JkKCkgc3R1Yi4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTdG9yZSBidWRkeSB3aW5kb3cuCgoJKiBpbmNsdWRlL3Rvb2x0aXBzLmgsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTdGFydGVkIFdNX05PVElGWUZPUk1BVCBzdXBwb3J0LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQmV0dGVyIENvbWJvQm94RXggcGxhY2VtZW50LgoKCSogbG9hZGVyL21vZHVsZS5jOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUVuc3VyZSB0aGF0IHRoZSBjb21tYW5kLWxpbmUgcGFzc2VkIHRvIHRoZSB2YXJpb3VzICpDcmVhdGVQcm9jZXNzCglmdW5jdGlvbnMgY29udGFpbnMgdGhlIHBhdGggdG8gdGhlIHByb2dyYW0gYmVpbmcgaW52b2tlZC4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBMYXJzIEhlZXRlIDxoZWxAYWRtaW4uZGU+CglQcmV2ZW50IGJhZCB3aW5kb3cgWCBlcnJvci4KCgkqIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jOgoJQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglUaGUgc3lzdGVtIG1lbnUgaWNvbiBvbiBhIE1ESSBjaGlsZCB3aW5kb3cgd2FzIGNvcnJ1cHRlZCB3aGVuIHRoZQoJY2hpbGQgZnJhbWUgd2luZG93IGlzIG1heGltaXplZCB3aXRoaW4gdGhlIG1haW4gZnJhbWUgd2hlbiB0aGUgd2luZQoJbG9vayBpcyBXaW5kb3dzIDk1LgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIHdpbmRvd3MvZGVmd25kLmM6CglTbGF2YSBNb25pY2ggPFNsYXZhLk1vbmljaEBuZXRtYW5hZ2UuY29tPgoJSW4gY2FzZSBpZiBzY3JvbGxiYXIgaGFzIHRoZSBzYW1lIGJhY2tncm91bmQgY29sb3IgYXMgdGhlIHdpbmRvdwoJaXQgYmVsb25ncyB0bywgaXQgbmVlZHMgdG8gYmUgZmlsbGVkIHdpdGggMHg1NWFhIGJpdG1hcCBicnVzaC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUZpeGVkIHRoZSBzdHJpbmdjb21wYXJlIGluIF9maW5kX29yX2FkZF8qKCkgKHdhcyBtaXNzaW5nIHRvbG93ZXIoKXMpLgoKCSogZGVidWdnZXIvbWVtb3J5LmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUZpeCAod2VsbCBrbHVkZ2UgYXJvdW5kKSBGcmVlQlNEJ3MgYEludmFsaWQgYWRkcmVzcycgZXJyb3JzLgoKCSogY29udHJvbHMvZWRpdC5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRHJhdyBhIDNEIGJvcmRlciBhcm91bmQgZWRpdCBjb250cm9scyB3aGVuIG5vdCBpbiBXSU4zMV9MT09LLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglPbmx5IGRyYXcgYSBibGFjayBib3JkZXIgYXJvdW5kIG5vcm1hbCBidXR0b25zIHdoZW4gaW4gV0lOMzFfTE9PSy4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFsaWdubWVudCBhbmQgcG9zaXRpb24gd2hlbiBsb29raW5nIGZvciBtbWlvIGNodW5rcy4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgdXNpbmcgZ2xvYmFsIHZhcnMgKHNoYXJlZCBkYXRhKSBmb3IgbW0gdGltZXJzLCBidXQgYQoJc3BlY2lmaWMgc3RydWN0dXJlIGZvciBlYWNoIGF0dGFjaGVkIHByb2Nlc3MuCglGaXhlZCBhbGlnbm1lbnQgYW5kIHBvc2l0aW9uIHdoZW4gbG9va2luZyBmb3IgbW1pbyBjaHVua3MuCglGaXhlZCBXQVZFIG1hcHBlciBoYW5kbGluZyBpbiB3YXZlR2V0Q2Fwcy4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL3RpbWUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHVzaW5nIGdsb2JhbCB2YXJzIChzaGFyZWQgZGF0YSkgZm9yIG1tIHRpbWVycywgYnV0IGEKCXNwZWNpZmljIHN0cnVjdHVyZSBmb3IgZWFjaCBhdHRhY2hlZCBwcm9jZXNzLgoKCSogZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV3JvdGUgYSBzbWFsbCBkb2N1bWVudCBvbiBob3cgdG8gcGFja2FnZSBXSU5FIGZvciBkaXN0cmlidXRvcnMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVNldEN1cnNvclBvcygpIGZ1bmN0aW9uIHdhcyBjYWxsZWQgd2l0aCBhIHdpbmRvdyBjb29yZGluYXRlcwoJcGFyYW1ldGVyLgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBudWxsIHB0ciBkZXJlZiBpbnRyb2R1Y2VkIGluIGxhc3QgcGF0Y2guCgoJKiBpZjE2MzIvb2xlMi5zcGVjLCBvbGUvb2xlMi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJS2luZCBvZiBpbXBsZW1lbnRlZCBPbGVNZXRhRmlsZVBpY3RGcm9tSWNvbkFuZExhYmVsLgoKCSogaW5jbHVkZS90b29sYmFyLmgsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIHZhcmlvdXMgcHJvYmxlbXMgcmVsYXRlZCB0byBiaXRtYXBzIGFuZCBmbGF0IHRvb2xiYXJzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgcHJvYmxlbXMgd2l0aCBkaXNhcHBlYXJpbmcgdGV4dC4KCgkqIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglDb21wbGV0ZSByZXdyaXRlIG9mIG1lc3NhZ2luZyBjb2RlIHRvIGltcGxlbWVudC9maXggYWxsIGlucHV0IGJlaGF2aW9ycy4KCUZpeGVkIGEgZmV3IGZpeG1lcy4KCgkqIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy93Y21kL1JFQURNRSwgcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZC5oLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUFkZGVkIG1vcmUgYmF0Y2ggZnVuY3Rpb25hbGl0eSwgaW5jbHVkaW5nIHRoZSBDQUxMIEdPVE8gYW5kIFNISUZUCgljb21tYW5kcyBwbHVzIGJhdGNoIGNvbW1hbmQgYXJndW1lbnRzLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIHRvIHJlZmxlY3QgY3VycmVudCBzdGF0dXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglORV9Mb2FkRmlsZU1vZHVsZTogRnJlZSBtb2R1bGUgd2hlbiBORV9Mb2FkRExMcyBmYWlscy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGdyYXBoaWNzL3BzZHJ2L3RleHQuYywgaW5jbHVkZS9wc2Rydi5oOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgdW5kZXJsaW5lIGFuZCBzdHJpa2VvdXQgdGV4dCBhdHRyaWJ1dGVzIGZvciB0aGUgV2luZQoJUG9zdFNjcmlwdCBkcml2ZXIuCgoJKiB3aW5kb3dzL3dpbi5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJRW5hYmxlV2luZG93IGRvZXNuJ3QgcmVsZWFzZSB0aGUgY2FwdHVyZSBvZiBhIGNoaWxkIHdpbmRvdy4KCgkqIE1ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglPbmx5IHRlc3QgJChMSUJfVEFSR0VUKSA9IGxpYndpbmUuc28uMS4wIGlmICQoTElCX1RBUkdFVCkgaXMKCW5vbi1ibGFuay4KCgkqIGNvbnRyb2xzL21lbnUuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglSZW1vdmUgdGhlIFdNX0xCVVRUT05VUCBtZXNzYWdlIGZyb20gdGhlIHF1ZXVlIGFmdGVyIHNlbGVjdGluZyBhIG1vdXNlCgltZW51IGl0ZW0uCgoJKiBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY29tbS5jLCBtaXNjL3Rvb2xoZWxwLmMsIG9sZS9wYXJzZWR0LmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmM6CglGdXJ0aGVyIHNlcnZlciBvcHRpbWl6YXRpb25zOgoJLSBtZXJnZWQgcmVxdWVzdCBhbmQgcmVwbHkgc3RydWN0dXJlcwoJLSBidWlsZCByZXF1ZXN0cyBkaXJlY3RseSBpbnRvIHRoZSBidWZmZXIgdG8gYXZvaWQgYSBjb3B5CgpUdWUgSnVuIDIyIDE5OjE0OjQxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9SdS5yYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG9sZS9ubHMvcnVzLm5scywgcmVzb3VyY2VzL3N5c3Jlc19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmM6CglBbGV4YW5kZXIgS2FuYXZpbiA8YWtAY2F2ZS5ob3Auc3R1Lm5ldmEucnU+CglTdGFuZGFyZCBkaWFsb2cgYm94ZXMgcmVzb3VyY2VzIGFuZCBPTEUgc3RyaW5ncyBhcmUgbm93IGluIGNwMTI1MSBlbmNvZGluZwoJRm9udCBtYXBwZXIgZG9lcyBub3QgYW55bW9yZSB1c2UgZm9udHMgaW4gLWtvaTgtciBlbmNvZGluZwoJRm9udCBtYXBwZXIgbm93IHJlY29nbmlzZXMgZm9udHMgaW4gLXdpbmRvd3MtKiBlbmNvZGluZ3MgKHRoZXNlIGFyZQoJcHJvdmlkZWQgYnkgeGZzdHQgVHJ1ZVR5cGUgc2VydmVyKQoJRm9udCBtYXBwZXIgbm93IHNlZXMgbWF4IDE2Mzg0IGZvbnRzICh3YXMgMjA0OCkKCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNoYXJlIHRoZSBITU9EVUxFIG9mIGJ1aWx0LWluIG1vZHVsZXMgb3ZlciBhbGwgcHJvY2Vzc2VzLgoJVXNlIHRoZSBjYWNoZWQgSE1PRFVMRSB0byBzcGVlZCB1cCByZWxheSBkZWJ1Z2dpbmcuCglEaXNwbGF5IHRoZSBtdWx0aS1pbnN0YW50aWF0aW9uIHdhcm5pbmcgb25seSBmb3IgJ2Rhbmdlcm91cycgRExMcy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUxvYWQgVVNFUjMyLkRMTCBiZWZvcmUgY2FsbGluZyBVc2VyU2lnbmFsUHJvYy4KCgkqIHdpbmRvd3MvdGltZXIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2Ugc2VwYXJhdGUgc2VydmljZSBmb3IgZWFjaCB3aW5kb3dzIHRpbWVyLgoKCSogaWYxNjMyL2NvbXBvYmouc3BlYywgb2xlL2NvbXBvYmouYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIENPTVBPQkouRGxsRW50cnlQb2ludCAoQWNyb2JhdDMgMTZiaXQgbmVlZHMgaXQpLgoKCSogb2xlL3R5cGVsaWIuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVRob3Ugc2hhbHQgbm90IHVzZSBDKysgY29tbWVudHMuCgoJKiBpbmNsdWRlL2RyaXZlci5oLCB3aW5kb3dzL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCB0byBuZXcgdHJhY2UgaW50ZXJmYWNlLgoJRml4ZWQgZHJpdmVyIGNsb3NpbmcuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUJldHRlciBoYW5kbGluZyBvZiBkb3VibGUgcXVvdGVzIGluIE1DSSBzdHJpbmcgY29tbWFuZHMuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1lbW9yeSBsZWFrIGluIG1jaSBzdHJ1Y3R1cmVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBlcnJvciBoYW5kbGluZyBpbiBER0FfSURpcmVjdERyYXcySW1wbF9HZXRDYXBzKCkuCgoJKiBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIEdESSBoZWFwIHVubG9jay4KCU1vdmVkIHRvIG5ldyBkZWJ1ZyBpbnRlcmZhY2UuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIEdldE9wZW5GaWxlTmFtZSB3aGVuIGNhbGxlZCB3aXRoIGJvdGggT0ZOX0FMTE9XTVVMVElTRUxFQ1QgYW5kCglPRk5fRVhQTE9SRVIgYml0cyBzZXQuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJTW9kaWZpZWQgSW1hZ2VMaXN0X0xvYWRJbWFnZUEgdG8gY2hlY2sgdGhlIGNhc2Ugd2hlcmUgY3ggaXMgc2V0IHRvIHplcm8uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBQaGlsaXBwZSBGcm9pZGV2YXV4IDxwZkBzcGluLmNoPgoJQWRkZWQgU3dpc3MgZnJlbmNoIGtleWJvYXJkIGxheW91dC4KCgkqIHNlcnZlci9zZWxlY3QuYzogRHVtcCBzZXJ2ZXIgb2JqZWN0cyBvbiBTSUdIVVAuCgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL21haW4uYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9BdHRpYy9yZXF1ZXN0LmgsIGluY2x1ZGUvdGhyZWFkLmgsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY29tbS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBmaWxlcy9maWxlLmM6CglNYWRlIHNlcnZlciBjb21tdW5pY2F0aW9uIGZhc3RlciBieSB1c2luZyBhIHNoYXJlZCBtZW1vcnkgYmxvY2suCglBIGZldyBvdGhlciBvcHRpbWl6YXRpb25zIGluIHJlcXVlc3QgcHJvY2Vzc2luZyBpbiB0aGUgc2VydmVyLgoJTW92ZWQgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgcmVxdWVzdCBkZWZpbml0aW9ucyB0byBzZXJ2ZXIuaCBhbmQKCXJlbW92ZWQgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jLCBtc2Rvcy9kcG1pLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHNjaGVkdWxlci90aHJlYWQuYywgdG9vbHMvYnVpbGQuYywgd2luMzIva2VybmVsMzIuYywgZGVidWdnZXIvc3RhY2suYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglNZXJnZWQgVEhEQiBhbmQgVEVCIHN0cnVjdHVyZXMuCglNYWRlIFNldExhc3RFcnJvcigpLCBHZXRDdXJyZW50VGhyZWFkSWQoKSBhbmQgUFJPQ0VTU19DdXJyZW50KCkgaW5saW5lLgoKCSogcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmU6CglBZGRlZCBXYS5zCgpTdW4gSnVuIDIwIDE1OjA5OjMyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvaW5zdHIuYywgbWlzY2VtdS9tYWluLmMsIHByb2dyYW1zL2Nsb2NrL1dhLnJjLCBwcm9ncmFtcy9wcm9nbWFuL1dhLnJjLCBwcm9ncmFtcy93aW5oZWxwL1dhLnJjOgoJRml4ZWQgV2luZWxpYiBjb21waWxhdGlvbi4KCkZyaSBKdW4gMTggMTg6Mjk6MDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9NYWtlZmlsZS5pbiwgbWVtb3J5L2luc3RyLmMsIG1pc2NlbXUvQXR0aWMvaW5zdHIuYywgbWlzY2VtdS9NYWtlZmlsZS5pbjoKCUluY2x1ZGUgaW5zdHJ1Y3Rpb24gZW11bGF0aW9uIGluIFdpbmVsaWIuCgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIHdpbjMyL2V4Y2VwdC5jOiBBIGZldyBvcHRpbWl6YXRpb25zLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOiBVc2UgZXhjZXB0aW9ucyBpbnN0ZWFkIG9mIGN0eF9kZWJ1Z19jYWxsLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYzoKCUFkZGVkIERlYnVnQnJlYWsuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgaW5jbHVkZS9kZWJ1Z2dlci5oLCBtaXNjZW11L21haW4uYzoKCURlYnVnZ2VyIGlzIG5vdyBjYWxsZWQgYnkgZXhjZXB0aW9uIGhhbmRsaW5nLgoJQWRkZWQgJ3Bhc3MnIGNvbW1hbmQgdG8gcGFzcyBleGNlcHRpb25zIHRvIHRoZSBhcHAuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBsb2FkZXIvc2lnbmFsLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglNb3ZlZCBzaWduYWwgaGFuZGxpbmcgdG8gZXhjZXB0aW9uLmMsIGdlbmVyYXRlIGV4Y2VwdGlvbnMgb24gc2lnbmFscy4KCUFkZGVkIGhvb2sgZm9yIGRlYnVnZ2VyIGluIGV4Y2VwdGlvbiBoYW5kbGluZyAodGVtcG9yYXJ5KS4KCgkqIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vV2EucmMsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvV2EucmMsIHJlc291cmNlcy9zeXNyZXNfV2EucmMsIG9sZS9ubHMvd2FsLm5scywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL1dhLnJjLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL1dhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfV2EucmM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQHBpbmcuYmU+CglXYWxsb29uIGxhbmd1YWdlIHVwZGF0ZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBpbmNsdWRlL3dpbnBvcy5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJLSBEbyBub3QgY2FsbCBYQ29uZmlndXJlV2luZG93IGlmIFNldFdpbmRvd1BvcyB3YXMgY2FsbGVkIGR1ZSB0byBhCgkgIHJlY2VpdmVkIENvbmZpZ3VyZU5vdGlmeSBldmVudCAodG8gYXZvaWQgcmVjdXJzaW9uKS4KCS0gVXNlIFhUcmFuc2xhdGVDb29yZGluYXRlcyBpbiBFVkVOVF9HZXRHZW9tZXRyeSBpbnN0ZWFkIG9mIG1hbnVhbGx5CgkgIHdhbGtpbmcgdGhlIHRyZWUuCgktIFNldCBYU2l6ZUhpbnQud2luX2dyYXZpdHkgdG8gU3RhdGljR3Jhdml0eSBmb3IgbWFuYWdlZCB3aW5kb3dzLgoKCSogbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglCdWcgZml4LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeCBjb21waWxlciB3YXJuaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW46CglBbGV4YW5kZXIgVi4gTHVreWFub3YgPGxhdkBsb25nLnlhci5ydT4KCUluc3RhbGwgd2luZS5tYW4gZnJvbSBjdXJyZW50IGRpcmVjdG9yeS4KCVJlbW92ZSB3aW5lLm1hbiBvbiBkaXN0Y2xlYW4sIG5vdCBvbiBjbGVhbi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEp1biAxMyAwODo0OTo0NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgTElTVFZJRVdfU29ydEl0ZW1zKCkgYW5kIExJU1RWSUVXX0NhbGxCYWNrQ29tcGFyZSgpCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZXMgYSBwcm9ibGVtIHdoZW4gdXNpbmcgU1RBVFVTQkFSX1NldFRleHQoKSB0byB0b2dnbGUgU0JUX09XTkVSRFJBVwoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQWRkcyBzb21lIHVuZG9jdW1lbnRlZCBiZWhhdmlvciB0byBUUkVFVklFV19HZXRJdGVtQSgpLgoKCSogbG9hZGVyL21vZHVsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGFtYmlnb3VzIGVsc2UvYnJhY2UgcHJvYmxlbSwgbW92ZWQgIm5hbWUiIGNvbXB1dGF0aW9uIGluCglDcmVhdGVQcm9jZXNzIF9iZWZvcmVfIG91dHB1dHRpbmcgaXQgaW4gdGhlIEZJWE1FXygpcy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IHJldXNlIGEgcGFzc2VkIENPTlNUIFJFQ1QgKiBwb2ludGVyLgoKCSogd2luZG93cy94MTFkcnYvbW91c2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBESVNQTEFZX1NldEN1cnNvciBzaG91bGQgbm90IHVzZSBVU0VSLWludGVybmFscywgYXMgaXQgaXMgYWxzbwoJdXNlZCB3aXRoIG5hdGl2ZSBVU0VSIC4uLgoKCSogbG9hZGVyL3BlX2ltYWdlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgYnJva2VuIGhhY2sgdG8gc3VwcG9ydCBzaGFyZWQgRExMcyAoZS5nLiBVU0VSMzIuRExMKSBhbmQKCXJlcGxhY2VkIGl0IGJ5IGEgc29tZXdoYXQgbGVzcyBicm9rZW4gaGFjayA6LS8KCgkqIG11bHRpbWVkaWEvbWNpLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc21hbGwgbWVtb3J5IGNvcnJ1cHRpb24uCgpTYXQgSnVuIDEyIDE4OjM2OjU1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlLyouaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkIHRoZSBpbmNsdWRlIGZpbGVzIGlkZW1wb3RlbnQgdXNpbmcgYSBjb25zaXN0ZW50IG1hY3JvIG5hbWluZwoJc2NoZW1lLgoKCSogd2luZG93cy9wYWludGluZy5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUF2b2lkIHBhaW50aW5nIGRlc3Ryb3llZCB3aW5kb3dzLgoKCSogZGxscy8qLmMsIGlmMTYzMi8qLmMsIGxvYWRlci8qLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UsIHVzaW5nIHNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpawoJU3RyaWR2YWxsLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvc3RyaW5nLmMsIG9iamVjdHMvdGV4dC5jLCB3aW4zMi90aHJlYWQuYywgd2luZG93cy9wcm9wZXJ0eS5jLCB3aW5kb3dzL3JlY3QuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3N5bmMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgbWlzc2luZy93cm9uZyBpbmNsdWRlcy4KCgkqIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy93aWRnZXRzLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kYmdtYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbWlzYy9zcHkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCBkaXJlY3QgcmVmZXJlbmNlcyB0byBDTEFTUyBpbnRlcm5hbHMuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbWlzYy92ZXJzaW9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZWFycmFuZ2Ugd2ludmVyIGRldGVjdGlvbiBjb2RlIGFuZCBjYWNoZSB0aGUgd2ludmVyIHZhbHVlIHdlCglkZXRlcm1pbmVkIGluIHRoZSBQREIgdG8gc3BlZWQgdXAuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURyYXdzIGEgYm9yZGVyIGFyb3VuZCB3aW5kb3dzIHdpdGggb2xkIHdpbjMxIHN0eWxlIChvbmx5IHdzX2JvcmRlcikgaW4KCXdpbjk1IGxvb2suCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd3R5cGVzLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIENJTlRFUkZBQ0UgYW5kIE5PTkFNRUxFU1NVTklPTiBzdXBwb3J0LgoKCSogaW5jbHVkZS8qLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGV4dGVybiAiQyIgaWYgX19jcGx1c3BsdXMgaXMgZGVmaW5lZC4KCgkqIGluY2x1ZGUvY29tYm8uaCwgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBmZXcgYmVoYXZpb3JzIG9mIHRoZSBjb21ib2JveCB0aGF0IHdlcmUgYnJva2VuLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2luZm8uYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgbmV3ICJ3YWxrIiBjb21tYW5kIG9wdGlvbnMgdG8gbGlzdCBwcm9jZXNzZXMgYW5kIG1vZHJlZidzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJWDExRFJWX0RJQl9TZXRJbWFnZUJpdHNfMjQvMzI6IEZpeCB0aGUgY2FzZSBmb3IgYml0c19wZXJfcGl4ZWwgPT0gMzIKCWFuZCBuZWdhdGl2ZSBsaW5lcy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDaGFuZ2VkIHh4eChWT0lEKSB0byB4eHgodm9pZCkuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIHNpbXBsaWZpZWQgaW50ZXJuYWwgZGF0YQoJLSB0aHJlYWQgc2FmZSBhY2Nlc3MgdG8gaW50ZXJuYWwgc3RydWN0dXJlcwoJLSBmaXhlZCBidWcgb24gT05FX1NIT1QgdGltZXJzCgktIGRlZmVycmVkIHNlcnZpY2UgdGhyZWFkIGNhbGwgdW50aWwgcmVhbGx5IG5lZWRlZCAobm8gbG9uZ2VyIG9uIFdJTk1NCgkgIG9yIE1NU1lTVEVNIGF0dGFjaGVtZW50KQoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmljZXMuaCwgbG9hZGVyL21haW4uYywgc2NoZWR1bGVyL3NlcnZpY2VzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSB0aGUgc2VydmljZSB0aHJlYWQgaW5zdGFuY2lhYmxlIGluIGV2ZXJ5IHByb2Nlc3MuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglVc2UgQXV0b2NvbmYgdG8gZmluZCBwYXRoIHRvIGxkY29uZmlnLgoKCSogb2xlL3R5cGVsaWIuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBwcm9ibGVtIHdpdGggdGhlIExvYWRUeXBlTGliIG1ldGhvZC4KCgkqIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtbUBqZXQubHN0LmRlPgoJVXNlIEBzeXNjb25mZGlyQCBmb3IgdGhlIGRlZmF1bHQgcmVnaXN0cmllcyBpbiBtaXNjL3JlZ2lzdHJ5LmMgdG9vLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtbUBqZXQubHN0LmRlPgoJQWRkZWQgZ2VuZXJpYyBwaXhlbCBjb252ZXJ0ZXIgZm9yIDgtPjI0LgoKCSogd2luZG93cy9kaWFsb2cuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCURJQUxPR19QYXJzZVRlbXBsYXRlMTYoKSBzdXBwb3J0ZWQgdXAgdG8gMTI3IGNvbnRyb2xzLiBCaWdnZXIgdmFsdWVzCgl3ZXJlIGV4cGFuZGVkIHRvIFdPUkQgaW5jb3JyZWN0bHkuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2RwbWkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVmFyaW91cyBEUE1JIGZpeGVzIGFuZCBwcmVsaW1pbmFyeSBEUE1JIHJhdyBtb2RlIHN3aXRjaCBoYW5kbGVyLgoKCSogd2luZG93cy9tZGkuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCBpbXByZWNpc2lvbiBpbiB0aGUgTURJIHRpbGluZyBmdW5jdGlvbmFsaXR5LgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglPcGVuIGZpbGVzIHdpdGggbW9yZSBhcHByb3ByaWF0ZSBzaGFyaW5nIG1vZGUuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNtYWxsIGZpeGVzIGZvciBFbmhNZXRhRmlsZSBwbGF5YmFjay4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglGaXhlZCBhbiBlcnJvciBhbmQgYW4gb2ZmLWJ5LW9uZSBidWcgaW4gRFNBX1NldEl0ZW0oKS4gIFRoaXMKCWVsaW1pbmF0ZXMgc29tZSBjcmFzaGVzIHdpdGggV2luOTggbmF0aXZlIFNIRUxMMzIuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSBESUFCTE9fSEFDSyAoZG9lcyBub3Qgd29yayBhbnltb3JlKSwgYWRkIDEgRklYTUUsIGZpeCBHZXRDYXBzKCkKCXdpdGggY2FwczE9PU5VTEwuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IFNsYXZhIE1vbmljaCA8U2xhdmEuTW9uaWNoQG5ldG1hbmFnZS5jb20+Cglkd0RhdGFTaXplIG5lZWRzIHRvIGJlIHJlc2V0IGJlZm9yZSBlYWNoIFJlZ1F1ZXJ5VmFsdWVFeCgpIGNhbGwuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURvbid0IGlnbm9yZSBhcHBsaWNhdGlvbi1yZXF1ZXN0ZWQgcHJpbWFyeSBidWZmZXIgZmxhZ3MuCgoJKiB0b29scy9idWlsZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNsZWFyIGhpZ2ggd29yZCBvZiAlZXNwIHdoZW4gcmV0dXJuaW5nIGZyb20gQ2FsbEZyb20xNi4KCgkqIGluY2x1ZGUvY29tbS5oLCBtaXNjL2NvbW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRhdGlvbiBvZiBFVl9SWEZMQUcuCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgW0dTXWV0Rm9yZWdyb3VuZFdpbmRvdy4KCUZpeGVkIGZvY3VzIGhhbmRsaW5nIG9uIGludGVyLXRocmVhZCBhY3RpdmF0aW9uLgoJQWRhcHRlZCBGb2N1c0luL091dCBldmVudCBoYW5kbGluZyB0byBwZXItcXVldWUgZm9jdXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbGVhc2UgV2luMTZMb2NrIGR1cmluZyBQUk9DRVNTX0NyZWF0ZS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglJbWFnZUxpc3RfR2V0SWNvbiBidWcgZml4LgoKCSogd2luMzIvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdGVkIGEgcHJvYmxlbSBpbiBHZXRUaW1lWm9uZUluZm9ybWF0aW9uKCkgZHVlIGEgY2hhbmdlIHRvCglta3RpbWUoKSBpbiBnbGliYy0yLjEuMSB3aGVuIGRheWxpZ2h0IHNhdmluZyB0aW1lIGlzIGluIGVmZmVjdC4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNoYW5nZWQgSyZSIEMgZnVuY3Rpb24gZGVmaW5pdGlvbiB0byBBTlNJIEMuCgoJKiBncmFwaGljcy9wc2Rydi9iaXRtYXAuYywgaW5jbHVkZS9wc2Rydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUFNEUlZfU3RyZXRjaERJQml0cyBzaG91bGQgdXNlIGxvZ2ljYWwgY28tb3Jkcy4KCVNvbWUgdmVyc2lvbnMgb2YgZ2hvc3RzY3JpcHQgc2VlbSB0byBlYXQgb25lIHRvbyBtYW55IGNoYXJhY3RlcnMgb2YKCWltYWdlIGRhdGEuIEFkZCBhICclJyB0byB0aGUgb3V0cHV0IGZpbGUgdG8gd29yayBhcm91bmQgdGhpcy4KCgkqIHJlbGF5MzIvd25hc3BpMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIFdOQVNQSTMyIG9yZGluYWxzLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgb2YgR2V0U3RhcnR1cEluZm8qKCkuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kZGUsIG1pc2MvZGRlbWwuYzoKCUtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+Cgkxc3QgY3V0IGltcGxlbWVudGF0aW9uIG9mIERkZU5hbWVTZXJ2aWNlIChvbWl0cyBtb25pdG9yIGNhbGxiYWNrKQoJMXN0IGN1dCBpbXBsZW1lbnRhdGlvbiBvZiBEZGVLZWVwU3RyaW5nSGFuZGxlIChwcm9iYWJseSBjb21wbGV0ZSkKCURkZUluaXRpYWxpemVXIC0gbWlub3IgY2hhbmdlcyB0byBpbml0aWFsaXNlIHNlcnZpY2UgbmFtZXMgc3RydWN0dXJlCglEZGVHZXRMYXN0RXJyb3IgLSBzdGFydCBvZiBwcm9wZXIgbGFzdCBlcnJvciByZXRyaWV2YWwKCURkZUNyZWF0ZVN0cmluZ0hhbmRsZTE2IC0gYWRkZWQgY29kZSBmb3IgZGVmYXVsdCBjb2RlcGFnZSB3aGVyZSBub3QKCXN1cHBsaWVkLgoJVmFyaW91cyBkb2N1bWVudGFyeS9jb21tZW50IGNvcnJlY3Rpb25zLgoKRnJpIEp1biAxMSAxODozMzo0NiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIG1lbW9yeS9lbnZpcm9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVc2UgdGhlIG5vcm1hbCBlbnZpcm9ubWVudCByb3V0aW5lcyB0byBidWlsZCB0aGUgZW52IGRiIG9mIHRoZSBpbml0aWFsCglwcm9jZXNzLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jOgoJUmV0dXJuIGNvbnNvbGUgaGFuZGxlcyBpbiBhbGxvY19jb25zb2xlIHJlcXVlc3QuCglGaXhlZCByZWFkX2NvbnNvbGVfaW5wdXQgcGFyYW1ldGVycyB0byBjb25mb3JtIHRvIHRoZSByZXBseSBzdHJ1Y3R1cmUKCWRlY2xhcmF0aW9uLgoKTW9uIEp1biAgNyAxNzo0NjozOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9iaXRtYXAuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBDcmVhdGVDb21wYXRpYmxlQml0bWFwIHdoZW4gY2FsbGVkIHdpdGggMCB3aWR0aCBvciBoZWlnaHQuCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtbWlvRGVzY2VuZCB3aGVuIGNhbGxlZCB3aXRoIGEgcGFyZW50IGNodW5rLgoKCSogbG9hZGVyL3NpZ25hbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRyeWluZyB0byBmaXggc2lnYWx0c3RhY2soKSBwcm9ibGVtIHJlcG9ydGVkIGJ5IERlYmlhbiB1c2Vycy4KCVNJR1RSQVAgbWlnaHQgYmUgdW5kZWZpbmVkIChiZW9zKS4KCgkqIG9sZS90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgVExCX1JlYWQgKGNhbiBlYXNpbHkgZ2V0IGNvdW50IT1ieXRlc3JlYWQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSkuCglGaXhlZCBUTEJfRmluZFRsYiAoc3Ryc3RyIG9uIGJpbmFyeSBkYXRhIHdpbGwgbm90IHdvcmspLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkID4+IGFuZCAqIG9wZXJhdG9yIHByZWNlZGVuY2UgcHJvYmxlbS4KCgkqIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgb3JkZXIgZm9yIGVudGVyaW5nIGNyaXRpY2FsIHNlY3Rpb25zIChYMTEgdnMuIFduZExvY2spIHdoZW4KCWNhbGxpbmcgWDExRFJWX01PVVNFX1NldEN1cnNvci4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDb25zdWx0IG5lLm9wZXJhdGluZ19zeXN0ZW0gZmllbGQgZm9yIE5FIGZpbGVzIGluIEdldEJpbmFyeVR5cGUoKS4KCgkqIHNlcnZlci9wcm9jZXNzLmM6IEZpeGVkIGluaXRpYWwgcHJvY2VzcyByZWZjb3VudC4KClN1biBKdW4gIDYgMTc6Mjg6MjEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXksIGxvYWRlci9kb3MvTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vY2Ryb20tbGFiZWxzOgoJRm9yY2VkIGNvbW1pdCB0byBnZXQgcmlkIG9mIHRoZSB2ZW5kb3IgYnJhbmNoCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC8uY3ZzaWdub3JlOiBBZGRlZCBjbWRsZ3IuaAoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJQXZvaWQgdXNlIG9mIHN0cm5jbXBpIChyZXBvcnRlZCBieSBSb24gQ2VtZXIpLgoKCSogaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgbXVsdGltZWRpYS9qb3lzdGljay5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNb3ZlZCBpbmNsdXNpb24gb2Ygd2luZXN0cmluZy5oIHRvIHdpbmViYXNlLmguCglBZGRlZCBXaW5lbGliIG1hY3JvcyBmb3IgbHN0cm5jbXAgZnVuY3Rpb25zLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IFJvbiBDZW1lciA8cm9uY2VtZXJAZ3RlLm5ldD4KCUZpeGVzIGZvciBzZXZlcmFsIGJ1Z3MgaW4gd2hpY2ggcG9ydGlvbnMgb2YgdGhlIHNjcm9sbGJhciB3ZXJlIG5vdAoJYmVpbmcgcmVkcmF3biBjb3JyZWN0bHksIHRoZSBmb2N1cyByZWN0YW5nbGUgd2FzIG5vdCBiZWluZyBjb3JyZWN0bHkKCXJlbW92ZWQgZnJvbSB0aGUgdGh1bWIgYmVmb3JlIHJlZHJhd2luZywgZXRjLjsgYWRkZWQgY29tcGxldGUgV2luOXgKCWFuZCBXaW5OVCBsb29rIGFuZCBmZWVsIHN1cHBvcnQuCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYzogUm9uIENlbWVyIDxyb25jZW1lckBndGUubmV0PgoJRml4ZXMgZm9yIFdpbjl4IGFuZCBXaW5OVCBsb29rIGFuZCBmZWVsLgoKCSogZmlsZXMvZG9zX2ZzLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCByZXNwb25zZSBvZiBHZXRGdWxsUGF0aE5hbWVBIHdoZW4gYnVmZmVyPT1OVUxMLgoKCSogZmlsZXMvZmlsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDcmVhdGVGaWxlQS9GSUxFX0RvT3BlbkZpbGU6IGFkZCB2ZXJib3NlIHJlcG9ydGluZyBvZiBhcmd1bWVudHMuCgoJKiBjb25maWd1cmUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kLy5jdnNpZ25vcmUsIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL1JFQURNRSwgcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsIHByb2dyYW1zL3djbWQvbWFrZWZpbGUuYmNjLCBwcm9ncmFtcy93Y21kL3djbWQuaCwgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYywgY29uZmlndXJlOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglBZGRlZCBXaW5lIGNvbW1hbmQtbGluZSBpbnRlcnByZXRlci4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBDYWxsYmFjay5DYWxsVGFza1Jlc2NoZWR1bGVQcm9jKCkuCgoJKiBpbmNsdWRlL21haW4uaCwgbWlzY2VtdS9tYWluLmMsIHRvb2xzL2J1aWxkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN3aXRjaCBzdGFja3MgaW4gQ0FMTDMyX0luaXQoKS4KCgkqIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3Rhc2suaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJMTYtYml0IHNjaGVkdWxlciByZW9yZ2FuaXplZDogcnVuIGFsbCB0YXNrcyBpbiB0aGVpciBvd24gdGhyZWFkLgoJUHJvY2VzcyBjcmVhdGlvbiBzZXF1ZW5jZSBhZGFwdGVkIHRvIG5ldyBzY2hlZHVsZXIuCgoJKiBpbmNsdWRlL3NlcnZpY2VzLmgsIGxvYWRlci9tYWluLmMsIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIFNFUlZJQ0VfRXhpdCgpLgoKCSogd2luZG93cy9xdWV1ZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbGVhc2UgV05EIGxvY2sgYmVmb3JlIGNhbGxpbmcgUG9zdEV2ZW50MTYoKS4KCgkqIGluY2x1ZGUvd25hc3BpMzIuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBzb21lIGRlZmluZXMuCgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQVNQSV9FeGVjU2NzaUNtZDogYmV0dGVyIHJldHVybiB2YWx1ZSBhbmQgdmVyYm9zZSBlcnJvciB3aGVuIG5vIGRldmljZQoJZm91bmQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglVc2UgU2VhcmNoUGF0aCB0byB0ZXN0IGZvciBleGlzdGFuY2Ugb2YgcHJvZ3JhbXMgaW4gbHBDbWRMaW5lCglwcm9jZXNzaW5nLiBGb3IgbHBBcHBsTmFtZSBkbyBub3QgYXBwZW5kICIuZXhlIiBhbmQgdXNlCglET1NGU19HZXRGdWxsTmFtZSB0byBsb2NhdGUgdGhlIHByb2dyYW0uIE1vdmUgbW9kdWxlIGZpbmQgcHJvY2VzcwoJYWZ0ZXIgZmxhZyB0ZXN0aW5nIGFuZCBwcm92aWRlIHF1aWNrIGV4aXQgaWYgbm90IGZvdW5kLgoKCSogd2luZG93cy9kaWFsb2cuYzogU2xhdmEgTW9uaWNoIDxTbGF2YS5Nb25pY2hAbmV0bWFuYWdlLmNvbT4KCUltcGxlbWVudGVkIGRpYWxvZyB1bml0cyAtPiBwaXhlbHMgY29udmVyc2lvbiB2ZXJ5IGNsb3NlIHRvIGhvdyBpdCdzCglhY3R1YWxseSBkb25lIGJ5IFdpbmRvd3MuCgpTYXQgSnVuICA1IDE1OjIzOjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvaW5pdGd1aWQuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3d0eXBlcy5oLCBvbGUvYmluZGN0eC5jLCBvbGUvbW9uaWtlci5jOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglTb21lIG5vbi10aHJlYXRlbmluZyBmaXhlcyB0byBzb21lIGhlYWRlcnMsIGFzIHdlbGwgYXMgc29tZSBjYXN0aW5nCgljaGFuZ2VzIHRoYXQgbWFrZSB3aW5lbGliIG1vcmUgd2luMzIgY29kZSBjb21wYXRpYmxlLgoKCSogZmlsZXMvZHJpdmUuYywgaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCTxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglTdHViIGZvciBTZXRWb2x1bWVMYWJlbCgpLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgYmFjayBsb3N0IHRyZWF0bWVudCBvZiBIV05EX1RPUE1PU1QuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglUcnkgdG8gaW1wcm92ZSBDb25maWd1cmVOb3RpZnkgZXZlbnQgcHJvY2Vzc2luZy4KCgkqIG9iamVjdHMvcGVuLmM6IEpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHBlcnNvbi5uZXQ+CglBbGxvdyBwZW5zIHdpdGggc3R5bGVzIGdyZWF0ZXIgdGhhbiBQU19JTlNJREVGUkFNRSB0byBiZSBjcmVhdGVkIHdpdGgKCUV4dENyZWF0ZVBlbi4KCgkqIHJlbGF5MzIvb2xlYXV0MzIuc3BlYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgb2xlL3R5cGVsaWIuYywgb2xlL3R5cGVsaWIuaDoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglSZWFkL2xvYWQgdHlwZSBsaWJyYXJpZXMuIEltcGxlbWVudGF0aW9uIG9mIElUeXBlTGliLCBJVFlwZUluZm8sCglJVHlwZUxpYjIgYW5kIElUeXBlSW5mbzIgbWV0aG9kcy4KCgkqIG9sZS9vbGUyZGlzcC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWxsb3cgTlVMTCBhcyBhcmd1bWVudCB0byBTeXNGcmVlU3RyaW5nIGluIGFjY29yZGFuY2Ugd2l0aCBTREsuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCS0gbW9yZSB1cC10by1kYXRlIGRlc2NyaXB0aW9uIG9mIHNvdXJjZSB0cmVlCgktIGJldHRlciBleGFtcGxlIG9mIHJlcXVpcmVkIGNvbW1lbnRzIGZvciBhbiBBUEkgaW1wbGVtZW50YXRpb24KCS0gcmVwbGFjZW1lbnQgb2YgV0lORV9QQUNLRUQgYnkgInBzaHBhY2sxLmgiLCBldGMuCgktIG5hbWluZyBjb252ZW50aW9ucyBmb3Igbm9uLWFwaSBjYWxscyBhbmQgdHlwZXMKCS0gbG9jYXRpb24gY29udmVudGlvbnMgZm9yIG5vbi1hcGkgaGVhZGVyIGZpbGVzIGFuZCBwcm90b3R5cGVzCgoJKiByZWxheTMyL21wci5zcGVjLCBpbmNsdWRlL3dpbm5ldHdrLmgsIGluY2x1ZGUvd25ldC5oLCBtaXNjL25ldHdvcmsuYzoKCVJvYmVydCBXIEhhbGwgPGJvYmhAbi1jYW50cmVsbC5kZW1vbi5jby51az4KCUFkZGVkIDIgc3R1YnMuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBiZWhhdmlvdXIgb2YgQWxsb2MuLlRodW5rbGV0Q2FsbGJhY2tbRXhdIGZvciBOVUxMIHRhcmdldC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaW4gRVZFTlRfUXVlcnlaT3JkZXIuCglGaXhlZCBwb3RlbnRpYWwgWCBzeW5jaHJvbml6YXRpb24gcHJvYmxlbSBpbiBYMTFEUlZfV05EX1NldEhvc3RBdHRyLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglDb3JyZWN0IHNlYXJjaCBvcmRlciBpbiBTZWFyY2hQYXRoIGZvciBXaW4gMy4xLzk1Lzk4LiBTdGlsbCBicm9rZW4gZm9yIE5ULgoKCSogd2luZG93cy93aW4uYzogU2xhdmEgTW9uaWNoIDxTbGF2YS5Nb25pY2hAbmV0bWFuYWdlLmNvbT4KCW8gY2hlY2sgZm9yIGJvdGggQ1dfVVNFREVGQVVMVCBhbmQgQ1dfVVNFREVGQVVMVDE2LgoJbyBpZiB4IGlzIENXX1VTRURFRkFVTFQgKG9yIENXX1VTRURFRkFVTFQxNikgYW5kIHkgaXMgKm5vdCoKCSAgQ1dfVVNFREVGQVVMVCAob3IgQ1dfVVNFREVGQVVMVDE2KSB0aGVuIHVzZSB5IGFzIGEgc2Vjb25kCgkgIHBhcmFtZXRlciB0byBTaG93V2luZG93KCkuIFNvbWUgYXBwcyAoQ0FMQy5FWEUgZm9yIFdpbjk4CgkgIGlzIG9uZSBvZiB0aGVtKSB1c2UgdGhpcyB1bmRvY3VtZW50ZWQgZmVhdHVyZSB0byBjcmVhdGUKCSAgaGlkZGVuIHdpbmRvdyB3aXRoIFdTX1ZJU0lCTEUgc3R5bGUgc2V0LgoKCSogcmVsYXkzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUlhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gZm9yIERQQV9Mb2FkU3RyZWFtIGFuZCBzdHViIGZvcgoJRFBBX1NhdmVTdHJlYW0uICBUaGFua3MgdG8gRXJpYyBLb2hsIChla29obEBhYm8ucmhlaW4temVpdHVuZy5kZSkgZm9yCgl0aGUgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBhbmQgcGFyYW1ldGVyIGluZm9ybWF0aW9uLgoKCSogZGVidWdnZXIvc3RhYnMuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCU1ha2UgaXQgcG9zc2libGUgdG8gbGluayBXaW5lIHN0YXRpY2FsbHkgKGF0IGxlYXN0IG9uIFJlZEhhdCA2LjApLgoKCSogY29udHJvbHMvbWVudS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdoZW4gbG9va2luZyBpbnRvIHN5cyBtZW51LCBjaGVjayBpZiBpdGVtcyBhcmUgcHJlc2VudCBiZWZvcmUKCWRlcmVmZXJlbmNpbmcuCgoJKiBkb2N1bWVudGF0aW9uL0F0dGljL3dpbmUubWFuOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUF1dG9jb25maWd1cmUgdGhlIGRpcmVjdG9yaWVzIGluIHRoZSBtYW5wYWdlLgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgRHVtbXlNb3Rpb25Ob3RpZnkgRVZFTlQgZHJpdmVyIHJvdXRpbmUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBdXRvY29uZmlndXJlIHRoZSBkaXJlY3RvcmllcyBpbiB0aGUgbWFucGFnZS4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUFkZCBzdHViIGZvciBMb2NrRmlsZUV4IChLRVJORUwzMi41MTMpLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvaW50ZXJuYXRpb25hbGlzYXRpb246CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUN1cnJlbnQgc3RhdHVzIG9mIFdpbmUgb24gaW50ZXJuYXRpb25hbGlzYXRpb24uCgoJKiBjb250cm9scy9idXR0b24uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCURvIG5vdCBwcm9jZXNzIFdNX0xCVVRUT05VUCBtZXNzYWdlIGluIEJ1dHRvblduZFByb2MoKQoJd2hlbiB0aGUgbW91c2UgaXMgbm90IGNhcHR1cmVkLgoKCSogZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBvYmplY3RzL2RjLmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZyb20gQ3JlYXRlQ29tcGF0aWJsZURDLCBwYXNzIHRoZSBkZXZpY2UgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlCglzb3VyY2UgREMgaW4gb3JkZXIgdG8gYWxsb3cgUFNEUlZfQ3JlYXRlREMgdG8gbG9jYXRlIHRoZSBwcmludGVyIGluZm8KCWZvciB0aGUgZGV2aWNlLgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIGRpZ2l0YWwgdmlkZW8gaW50ZXJmYWNlCglGaXhlZCBhIGZldyBidWdzIChkZXZpY2UgbmFtZXMgYXJlIG5vIGxvbmdlciBjb252ZXJ0ZWQgdG8gdXBwZXIgY2FzZSwKCWFkZGVkIGNhbGwgYmFjayB3aW5kb3csIGFsbCBzdHJ1Y3R1cmVzIG1vdmVkIHRvIDMyIGJpdC4uLikuCgoJKiBpZjE2MzIvdGh1bmsuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXb3JrYXJvdW5nIGdjYyAyLjcuMi54IHNpZyAxMSBpc3N1ZS4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL21jaS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIChzdGlsbCBpbmNvbXBsZXRlKSBoYW5kbGluZyBvZiBNQ0lfQlJFQUsgY29tbWFuZC4KCgkqIGRvY3VtZW50YXRpb24vbm8td2luZG93czogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJVXBkYXRlZCBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3MuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNwZWVkdXAgZW5oYW5jZW1lbnQgZm9yIHRoZSA4LT4xNiBhbmQgOC0+MzIgY29weSBsb29wIGhvdHNwb3RzLAoJdXNpbmcgYSBmYXN0ZXIgZ2VuZXJpYyByb3V0aW5lIGFuZCBzb21lIGlubGluZSBhc3NlbWJseSBmb3IgaTM4NgoJKGNsZWFudXBzIGJ5IE92ZSkuCgpGcmkgSnVuICA0IDE5OjQ5OjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3RocmVhZC5jOgoJTWFkZSBoYW5kbGUgdGFibGUgYSBzZXBhcmF0ZSBvYmplY3QuCglHbG9iYWwgaGFuZGxlIHRhYmxlIGlzIG5vIGxvbmdlciBib3VuZCB0byBhIHByb2Nlc3MuCglSZW1vdmVkIHNwZWNpYWwgaGFuZGxpbmcgb2YgdGhlIGluaXRpYWwgcHJvY2Vzcy4KCgkqIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oOgoJQWRkZWQgb3B0aW9uYWwgZGVidWdnaW5nIGNvZGUgaW4gb2JqZWN0IG1hbmFnZW1lbnQuCgpTYXQgTWF5IDI5IDE0OjI3OjI3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW5wcm9jLmMsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci90YXNrLmM6CglHb3QgcmlkIG9mIFRIUkVBRF9Jbml0RG9uZS4KCU1hZGUgVEhSRUFEX0N1cnJlbnQoKSBpbmxpbmUuCglNb3ZlZCBzZXJ2ZXIgdGlkIGludG8gVEVCLgoKCSogd2luZG93cy9kaWFsb2cuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVJlaW1wbGVtZW50ZWQgdGhlIENoZWNrUmFkaW9CdXR0b24gZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgaW5jb3JyZWN0IGxvb2t1cCBvZiBiYWNrZ3JvdW5kIGNvbG9yLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIHByb2JsZW1zIHdoZW4gdXNpbmcgbXVsdGlwbGUgc3R5bGUgZmxhZ3MgdG9nZXRoZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBhIHByb2JsZW0gd2hlbiB1c2luZyBzdHJpbmcgcmVzb3VyY2VzIGFzIHRvb2x0ZXh0LgoKCSogd2luZG93cy93aW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBiZWhhdmlvciBvZiB0aGUgZm9jdXMgd2hlbiBhIHBhcmVudCB3aW5kb3cgaXMgZGlzYWJsZWQuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzogSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cGVyc29uLm5ldD4KCUZpeGVkIGEgYnVnIHdoaWNoIGNhdXNlcyB0aGUgUG9seUJlemllciB0byBub3QgYmUgdXBkYXRlZCBvbiByZWRyYXcKCSh3aGVuIHlvdSB3YW50IHRoZW0gdG8gYmUpLgoKCSogd2luZG93cy9pbnB1dC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlbW92ZSB1bm5lY2Vzc2FyeSB3YXJuaW5nIGluIFRyYW5zbGF0ZUFjY2VsYXRvci4KCgkqIHNlcnZlci9oYW5kbGUuYzoKCUZpeGVkIGR1cGxpY2F0ZV9oYW5kbGUgdG8gd29yayB3aXRoIHBzZXVkby1oYW5kbGVzIChyZXBvcnRlZCBieSBNYXJjdXMKCU1laXNzbmVyKS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL3Zlci92ZXIxNi5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaW5jbHVkZS92ZXIuaCwgaW5jbHVkZS93aW52ZXIuaCwgdG9vbHMvd3JjL3dyY3R5cGVzLmg6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCXZlci5oIGlzIGEgbGVnYWN5IGhlYWRlci4gd2ludmVyLmggc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KCgkqIGRsbHMvdGFwaTMyL3Bob25lLmMsIG1pc2MvY3J0ZGxsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvbGlzdHZpZXcuaCwgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCS0gUmVpbXBsZW1lbnRlZCB0aGUgc2Nyb2xsaW5nIHVzaW5nIFNldFNjcm9sbEluZm8gYW5kIEdldFNjcm9sbEluZm8uCgktIEltcGxlbWVudGVkIExWTV9GSU5ESVRFTSBtZXNzYWdlLgoJLSBBZGRlZCBzb21lIG5ldyB3aW5kb3cgc3R5bGVzLgoJLSBGaXhlZCBzb21lIGJ1Z3MgYW5kIGV4dGVuZGVkIGEgbnVtYmVyIG9mIGV4aXN0aW5nIGZ1bmN0aW9ucy4KCS0gTW9kaWZpZWQgc2VsZWN0aW9uIGZ1bmN0aW9ucyB0byBzdXBwb3J0IGFyZWEgc2VsZWN0aW9uIChmb3IgZ3JvdXAKCSAgc2VsZWN0aW9uIGluIExWU19JQ09OIGFuZCBMVlNfU01BTExJQ09OKS4KCgkqIG1pc2MvY29tbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgY291cGxlIG9mIG1pc3NpbmcgZXZlbnQgbm90aWZpY2F0aW9ucy4gU29tZSBtb3JlIGRlYnVnZ2luZwoJbWVzc2FnZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBSaWtoYXJkdXIgRWdpbHNzb24gPHJpa2FyZHVyQHNreS5mcj4KCUljZWxhbmRpYyBrZXlib2FyZCBzdXBwb3J0LgoKCSogZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBncmFwaGljcy9kZHJhdy5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGJldHRlciBkZWJ1ZyBvdXRwdXQgZm9yIHN1cmZhY2UgY3JlYXRpb24KCS0gYWRkZWQgKGV4cGVyaW1lbnRhbCkgRElCU2VjdGlvbiBpbXBsZW1lbnRhdGlvbiBvZiBHZXREQyAvIFJlbGVhc2VEQwoKCSogZ3JhcGhpY3MvZDNkZGV2aWNlcy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNvcnJlY3RlZCB3YXJuaW5nLgoKCSogY29udHJvbHMvbWVudS5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJU3VwcG9ydCBUUE1fUkVUVVJOQ01EIGluIFRyYWNrUG9wdXBNZW51LgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeCA8cmV0dXJuPiBrZXkgKHNvbWVob3cgd2UgZ2V0IGEgY29udHJvbCBrZXlzdGF0ZSkuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGNvbXBpbGF0aW9uIGVycm9zIG9uIG5vbi1MaW51eCBzeXN0ZW1zLgoKCSogaW5jbHVkZS9kZWJ1Z3Rvb2xzLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBUUkFDRSBkZWZpbmUgd2hlbiBOT19ERUJVR19NU0dTIHdhcyBkZWZpbmVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJIGZvciBTSFZhbGlkYXRlVU5DLgoKCSogZG9jdW1lbnRhdGlvbi9sYW5ndWFnZXM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRhcHRlZCB0byB0aGUgbmV3IGRsbCByZXNvdXJjZSBoYW5kbGluZyBieSBCZXJ0aG8gU3R1bHRpZW5zLgoKTW9uIE1heSAyNCAxNTowMjoxOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9zaGVsbC5jOiBSZWxlYXNlIHRoZSBXaW4xNkxvY2sgYmVmb3JlIGNhbGxpbmcgV2luRXhlYy4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYzoKCVJlbW92ZWQgcHJvY2VzcyBhcmd1bWVudCB0byBQUk9DRVNTX0NhbGxVc2VyU2lnbmFsUHJvYy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNb3ZlZCByZW1haW5pbmcgaW5pdGlhbGlzYXRpb25zIHRvIHRoZSBuZXcgcHJvY2VzcyBjb250ZXh0LgoJU2h1ZmZsZWQgdGhpbmdzIGFyb3VuZCBhIGJpdCBpbiBQUk9DRVNTX1N0YXJ0IHRvIGF2b2lkIGRlYWRsb2Nrcy4KCUNoYW5nZWQgUFJPQ0VTU19DYWxsVXNlclNpZ25hbFByb2MgdG8gYXZvaWQgYWNjZXNzaW5nIGFub3RoZXIgcHJvY2VzcwoJYWRkcmVzcyBzcGFjZS4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzOgoJQWRkZWQgc3VwcG9ydCBmb3IgZHVtcGluZyB2YXJpYWJsZS1zaXplIGRhdGEgb2Ygc2VydmVyIHJlcGxpZXMuCglBZGRlZCBjbWRfbGluZSBhbmQgY21kX3Nob3cgaW4gbmV3X3Byb2Nlc3MgcmVxdWVzdC4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWZpeGVkIGJ1aWx0aW4gbW1zeXN0ZW0uZGxsIGluaXQgc2VxdWVuY2UKCgkqIG11bHRpbWVkaWEvQXR0aWMvaW5pdC5jLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglyZW1vdmVkIG9ic29sZXRlZCBpbml0LmMgc291cmNlIGZpbGUKCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCXJlbW92ZWQgdW5uZWNlc3NhcnkgTUNJIGRyaXZlcnMgZW50cnkgcG9pbnQKCWFkZGVkIHVuZG9jdW1lbnRlZCBtbXN5c3RlbSBmdW5jdGlvbnMKCgkqIG11bHRpbWVkaWEvdGltZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCW1vdmVkIHRvIG5ldyB0cmFjZSBpbnRlcmZhY2UKCW5vdyBjYWxsaW5nIHRpbWUgaW5pdCBmdW5jdGlvbiBmcm9tIG1tc3lzdGVtIGFuZC9vciB3aW5tbSBlbnRyeSBwb2ludAoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWluY2x1ZGVkIERMTCBpbml0IHNlcXVlbmNlIChmcm9tIG9ic29sZXRlZCBpbml0LmMpCglmaXhlZCBidWlsdGluIG1tc3lzdGVtLmRsbCBpbml0IHNlcXVlbmNlCglmaXhlZCBQbGF5U291bmQgd2hlbiB1c2VkIHdpdGggYW4gYXN5bmNocm9ub3VzIGF1ZGlvIGRyaXZlcgoJZml4ZWQgbWlkaVN0cmVhbSBmdW5jdGlvbnMgZm9yIFN0b3AvUGF1c2UvUmVzdGFydCBmdW5jdGlvbnMKCWZpeGVkIGVycm9yIGhhbmRsaW5nIGluIHdhdmVPdXRPcGVuIHdpdGggUVVFUllfRk9STUFUIGZsYWcKCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWluY2x1ZGVkIG1pZGkgaW5pdCBzZXF1ZW5jZSAoZnJvbSBvYnNvbGV0ZWQgaW5pdC5jKQoJbW92ZWQgdG8gbmV3IHRyYWNlIGludGVyZmFjZQoJc2ltcGxpZmllZCBjb2RlIHdpdGggdXNpbmcgbmV3IGNvbmZpZ3VyYXRpb24gY29uc3RhbnQgKEhBVkVfT1NTX01JREkpCglmaXhlZCBlcnJvbmVvdXMgd2FybmluZ3MKCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJaW5jbHVkZWQgbWNpIGluaXQgc2VxdWVuY2UgKGZyb20gb2Jzb2xldGVkIGluaXQuYykKCW1vdmVkIHRvIG5ldyB0cmFjZSBpbnRlcmZhY2UKCgkqIG11bHRpbWVkaWEvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglvdXRwdXQ6IGJldHRlciBpbnRlcm5hbCB0aHJlYWQgaW50ZXJmYWNlIChvcnRob2dvbmFsaXphdGlvbiBvZiBzdGF0ZXMgYW5kIGV2ZW50cykKCW91dHB1dDogcmVtb3ZlZCB1c2Ugb2YgRFNQX0lPQ1RMX0dFVE9TUEFDRQoJb3V0cHV0OiBmaXhlZCBsYXRlbmN5IGluIHJlc2V0IG1lc3NhZ2VzIGhhbmRsaW5nCglvdXRwdXQ6IHJlcGxhY2VkIHNvbWUgcG9sbGluZyBtZWNoYW5pc21zIHdpdGggYmxvY2tpbmcgb25lcwoJb3V0cHV0OiBmaXhlZCBnZXQvc2V0IHZvbHVtZSBmdW5jdGlvbnMKCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCW1vdmVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlCglmaXhlZCBidWdzIGluIHBhdXNlL3BsYXkvc3RvcCBmdW5jdGlvbnMKCWZpeGVkIHNpZ25hdHVyZSBvZiBkcml2ZXIgZW50cnkgcG9pbnQKCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCW1vdmVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlCglmaXhlZCBidWdzIGluIHBhdXNlL3BsYXkgZnVuY3Rpb25zCglmaXhlZCBzaWduYXR1cmUgb2YgZHJpdmVyIGVudHJ5IHBvaW50CgoJKiBtdWx0aW1lZGlhL21peGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCB0cmFjZXMuCgoJKiB3aW5kb3dzL2RyaXZlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZSBleHRyYW5lb3VzIHdpbnVzZXIxNi5oLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgcHJpbnRmIGludG8gVFJBQ0UuCgoJKiBkZWJ1Z2dlci9leHByLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgdHlwb3MuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoZWNrIHdoZW4gYmFja3RyYWNraW5nIHRoZSBzdGFjayBpZiBmcmFtZXMgYXJlIGNvcnJlY3QgKHJlYWRhYmxlKS4KCgkqIHdpbmRvd3MvZXZlbnQuYywgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvd2luc29jay5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjL3dpbnNvY2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgV0lOU09DSyBuZXR3b3JrIElPIGV2ZW50IGhhbmRsaW5nIHRvIHNwZWNpYWwgdGhyZWFkLgoJUmVtb3ZlZCBFVkVOVF9XYWl0TmV0RXZlbnQsIGludHJvZHVjZWQgYSBnbG9iYWwgc2NoZWR1bGVyIGV2ZW50LgoKCSogbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdhaXQgdW50aWwgY2hpbGQgaW5pdGlhbGl6ZWQgYmVmb3JlIHJldHVybmluZyBmcm9tIFBST0NFU1NfQ3JlYXRlLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9rZXJuZWwzMi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgcmVnaXN0ZXIgZnVuY3Rpb25zIHdpdGggYXJndW1lbnRzIGZvciBMb2dBcGlUaGsuLi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUNsZWFuZWQgdXAgTElTVFZJRVdfS2V5RG93biBieSB1c2luZyBMSVNUVklFV19HZXROZXh0SXRlbS4gIFJlbW92ZWQgdW51c2VkCgl2YXJpYWJsZSBpbiBMSVNUVklFV19HZXROZXh0SXRlbS4KClN1biBNYXkgMjMgMjA6MDI6MDUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJVXNlIHRoZSBuZXcgZGVidWcgZnVuY3Rpb25zIHRvIHNlbmQgZGVidWcgZXZlbnRzIGF0IGFwcHJvcHJpYXRlIHBsYWNlcy4KCVBhc3MgdGhlIHByb2Nlc3MgY3JlYXRpb24gZmxhZ3MgdG8gUFJPQ0VTU19DcmVhdGUuCgoJKiBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHdpbjMyL25ld2Zucy5jLCB3aW4zMi9wcm9jZXNzLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBtaXNjL2xzdHIuYzoKCUltcGxlbWVudGVkIHRoZSBXaW4zMiBkZWJ1ZyBBUEkgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIGRlYnVnIGV2ZW50cyBzdXBwb3J0LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gTWF5IDIzIDEwOjI1OjI2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9sZHQuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS9zdHJpbmcuYywgbWVtb3J5L3ZpcnR1YWwuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvc2VydmljZXMuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvY29kZV9wYWdlLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZXJyb3IuYywgd2luMzIvZmlsZS5jLCB3aW4zMi9pbml0LmMsIHdpbjMyL3Byb2Nlc3MuYywgd2luMzIvc3RydWN0MzIuYywgd2luMzIvdGhyZWFkLmMsIHdpbjMyL3RpbWUuYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aW1lLmMsIG1lbW9yeS9hdG9tLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UsIHVzaW5nIHNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpawoJU3RyaWR2YWxsLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBkd0ZsYWdzIG11c3QgZGVzY3JpYmUgdGFyZ2V0IHByb2Nlc3MgaW4gVXNlclNpZ25hbFByb2MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgbWlzc2luZyBXSU5BUEkgdG8gU0hFTEwzMl82NTQgc3R1Yi4gIEZpeGVzIGNyYXNoIGluIFdpbjk4CglFeHBsb3Jlci4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUxJU1RWSUVXX0tleURvd246IEludmFsaWRhdGUgdGhlIGxpc3R2aWV3IHdpbmRvdyBvbmx5IHdoZW4gdGhlCglzZWxlY3RlZCBpdGVtIGNoYW5nZXMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIG1pc2Mvd3NwcmludGYuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9rZXJuZWwzMi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBfRGVidWdPdXRwdXQgKEtFUk5FTC4zMjgpLCBMb2dBcGlUaGsgKEtFUk5FTC40MjMpLCBMb2dBcGlUaGtMU0YKCShLRVJORUwzMi40MiksIExvZ0FwaVRoa1NMIChLRVJORUwzMi40NCksIExvZ0NCVGhrU0wgKEtFUk5FTDMyLjQ3KSwKCWFuZCBTU0NvbmZpcm1TbWFsbFN0YWNrIChLRVJORUwuNzA0KS4KCgkqIGlmMTYzMi9kaXNwbGF5LnNwZWMsIHdpbmRvd3MvZGlzcGxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXggdHlwbyAod3JvbmcgRElTUExBWS5DaGVja0N1cnNvciBvcmRpbmFsKS4KCVN1cGVyZmx1b3VzIEZJWE1FIGNvbnZlcnRlZCB0byBUUkFDRSBpbiBDaGVja0N1cnNvci4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBzeXNsZXZlbCByZWxheSBjaGVjayB3YXMgdG9vIHN0cmljdC4KCgkqIHNlcnZlci9tYXBwaW5nLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IHVzZSBwYWdlc2l6ZSBhbGlnbmVkIHNpemVfbG93IHRvIGdyb3cgbWFwcGVkIGZpbGUsIGJ1dCBvcmlnaW5hbAoJc2l6ZV9sb3cuIChmaXhlcyBIZWlzZXMgSW5kZXggUmVnaXN0ZXIpCgpTYXQgTWF5IDIyIDE5OjIyOjI2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgc29tZSBtb3JlIGRlYnVnIG91dHB1dAoJLSBjb3JyZWN0ZWQgYSBzbGlnaHQgYnVnIGluIERHQSBEaXJlY3REcmF3IGNyZWF0aW9uCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIG1ham9yIG1lbW9yeSBsZWFrIGluIHRoZSB3aW5kb3cgbWFuYWdlbWVudCBjb2RlLgoKCSogd2luZG93cy93aW5wb3MuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbiBTZXRXaW5kb3dQb3MgaWYgY2hhbmdpbmcgWiBvcmRlciBhbmQgY2hpbGQgd2luZG93IG5vdCB5ZXQgaW4gaXRzCglwYXJlbnQgbGlzdCwgZG8gbm90IGxpbmsgaXQgaW4gV0lOUE9TX1Nob3dJY29uVGl0bGUsIGNoZWNrIGZvciByZXR2YWwKCW9mIFdJTl9GaW5kV25kUHRyLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRGlzYWJsZSBwYXNzaW5nIGRldmljZSBjb250ZXh0IHRvIFgxMURSVl9ESUJfQnVpbGRDb2xvck1hcCB3aGVuIFJHQgoJY29sb3JtYXAgaXMgdXNlZC4KCgkqIGRlYnVnZ2VyL2RiZy55OiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGZyZWV6ZSBvdGhlciB0aHJlYWQgd2hpbGUgaXQgbWF5IGhvbGQgdGhlIFggY3JpdGljYWwgc2VjdGlvbi4KCgkqIGluY2x1ZGUvZGlzcGxheS5oLCBsb2FkZXIvbWFpbi5jLCB3aW5kb3dzL2Rpc3BsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgVXNlclJlcGFpbnREaXNhYmxlMTYoKS4KCgkqIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIEVWRU5UX1dhaXROZXRFdmVudCgpIGNhbGxzLgoKCSogd2luZG93cy9pbnB1dC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIElzVXNlcklkbGUxNigpLgoKCSogaW5jbHVkZS90dHlkcnYuaCwgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIEVWRU5UXyBkcml2ZXIgY2hhbmdlcy4KCgkqIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9zeW5jaHJvLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gZXZlbnQgc3luY2hyb25pemF0aW9uIGNoYW5nZXMuCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBYIGlucHV0IGV2ZW50IGhhbmRsaW5nIG91dCBvZiBFVkVOVF9XYWl0TmV0RXZlbnQgYW5kIGludG8KCXNlcnZpY2UgdGhyZWFkIGNhbGxiYWNrOyBtb3ZlZCBFVkVOVF9XYWl0TmV0RXZlbnQgb3V0IG9mIHRoZSBFVkVOVF8KCWRyaXZlci4gIENoYW5nZWQgd2luQ29udGV4dCB0byBob2xkIEhXTkQgaW5zdGVhZCBvZiBXTkQgKi4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY2hhbmdlIFotb3JkZXIgb2YgY2hpbGQgd2luZG93cyB3aGVuIGFjdGl2YXRpbmcuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5zcG9vbC5oLCByZWxheTMyL3dpbnNwb29sLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCBBZGRQcmludGVyQSwgQWRkUHJpbnRlckRyaXZlckEgYW5kIEdldFByaW50ZXJEcml2ZXJEaXJlY3RvcnkKCU1vdmVkIHNvbWUgMTZiaXQgR0RJIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBmcm9tIHdpbnNwb29sLmggLT4gd2luZ2RpMTYuaAoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ3JlYXRlIGEgbmV3IGNvbmZpZ3VyYXRpb24gbWFuaWZlc3QgY29uc3RhbnQgSEFWRV9PU1NfTUlESS4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgc2lsbHkgRUlOVFIgYnVnIHdpdGggc3RhcnRpbmcgZG9zbW9kLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogS2V2aW4gSG9sYnJvb2sgPGt3aEBuZW9zb2Z0LmNvbT4KCVNob3VsZCBjb21wYXJlIHRvIFgxMSBjb25zdGFudCAiTm9uZSIgc2luY2UgYSBjb2xvcm1hcCBpcyBhbiBYCglSZXNvdXJjZSBJRCBhbmQgbm90IGEgcG9pbnRlci4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglTdG9wIGEgbGlzdGJveCBidWcgdGhhdCBjYXVzZXMgYSBkaXYgYnkgemVybyB3aGVuIHRoZSBpdGVtIGhlaWdodAoJaXMgemVyby4gRG9lc24ndCBzb2x2ZSB0aGUgcm9vdCBvZiB0aGUgcHJvYmxlbSB0aG91Z2guCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYzoKCUFuZHJlIE1hbGFmYXlhIEJhcHRpc3RhIDxNYWxhZmF5YUBtaWxlbmlvMy5wdD4KCUFib3V0IGRpYWxvZyB0cmFuc2xhdGVkIHRvIFBvcnR1Z3Vlc2UuCgoJKiBpZjE2MzIvdGh1bmsuYzogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJdGFzay5oIHdhcyBpbmNsdWRlZCB0d2ljZS4gIFJlbW92aW5nIG9uZSBmaXhlZCBhIHNpZzExIGluIGdjYy0yLjcuMi4zLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hlY2sgaWYgZGMgaGFzIGJlZW4gY3JlYXRlZCBiZWZvcmUgdXNpbmcgaXQuCgoJKiBncmFwaGljcy9lc2NhcGUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIGEgZmV3IG1vcmUgMzItPjE2IEVzY2FwZSBjb252ZXJzaW9ucy4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgaWYxNjMyL3JlbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoZWNrIGZvciBzeXNsZXZlbCB2aW9sYXRpb25zIHdoaWxlIHJlbGF5IGRlYnVnZ2luZy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgaW5jbHVkZS9zeXNsZXZlbC5oLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgd2luZG93cy93aW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wcm92ZWQgc3lzbGV2ZWwgaGFuZGxpbmcsIHN0b3JlIGN1cnJlbnRseSBoZWxkIHN5c2xldmVscyBpbiB0aHJlYWQKCWRhdGFiYXNlLCBXSU5fQ3JpdFNlY3Rpb24gY29udmVydGVkIHRvIHN5c2xldmVsLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6IEpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHBlcnNvbi5uZXQ+CglBZGRlZCBtbXN5c3RlbS5oIGluY2x1ZGUuCgoJKiBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW5kb3dzL3VzZXIuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBFeGl0S2VybmVsMTYgKHJlcGxhY2luZyBVU0VSX0V4aXRXaW5kb3dzKSwgRXhpdFByb2Nlc3MxNiwgYW5kCglNYXBQcm9jZXNzSGFuZGxlOyBzdHViIGZvciBCVU5OWV8zNTEuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglIYW5kbGUgcHJvYyA9PSBOVUxMIGluIFRIVU5LX1NldERDSG9vayBjb3JyZWN0bHkuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgdW5kb2N1bWVudGVkIGNvbWJpbmF0aW9uCglHZXRQcml2YXRlUHJvZmlsZVN0cmluZ0Eoc2VjdGlvbiA9PSBOVUxMLCBlbnRyeSA9PSBOVUxMLCAuLi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglDbGVhbmVyIG51bGwgcG9pbnRlciBjaGVjayBpbiBIRUFERVJfSW5zZXJ0SXRlbUEgYW5kIEhFQURFUl9JbnNlcnRJdGVtVy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUltcGxlbWVudGVkIEdldE5leHRJdGVtIGZvciB0aGUgTGlzdHZpZXcgY29udHJvbC4KCgkqIHNjaGVkdWxlci9zZXJ2aWNlcy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUV4cGlyZSB0aW1lcnMgb24gZXhwaXJ5IHRpbWUgdG9vLCBub3QganVzdCBhZnRlci4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgbXVsdGltZWRpYS9kcGxheS5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBvbGUvYW50aW1vbmlrZXIuYywgb2xlL2JpbmRjdHguYywgb2xlL2NvbXBvc2l0ZW1vbmlrZXIuYywgb2xlL2RhdGFjYWNoZS5jLCBvbGUvZGVmYXVsdGhhbmRsZXIuYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9oZ2xvYmFsc3RyZWFtLmMsIG9sZS9pZnMuYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9tZW1sb2NrYnl0ZXMuYywgb2xlL21vbmlrZXIuYywgb2xlL29sZWZvbnQuYywgb2xlL29sZW9iai5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZTMyLmMsIHdpbmRvd3MvZGlucHV0LmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYzoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJTWljcm9zb2Z0IGNvbSB2dGFibGUgY29tcGF0aWJpbGl0eSB3b3JrYXJvdW5kIGZvciBnKysuICBCYXNpY2FsbHkgYWRkcwoJYW4gb3B0aW9uYWwgOCBieXRlcyBwYWRkaW5nIHRvIENPTSBvYmplY3RzIHdoZXJlIHRoZSBSVFRJIHdvdWxkIGJlLgoKCSogaW5jbHVkZS9zeXNtZXRyaWNzLmgsIG1pc2Mvc2hlbGwuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2VkIGFsbCBvY2N1cmVuY2VzIG9mIFNZU01FVFJJQ1NfeHggYW5kIHN5c01ldHJpY3NbU01feHhdIGJ5CglHZXRTeXN0ZW1NZXRyaWNzKFNNX3h4KSwgcmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIGluY2x1ZGVzIG9mCglzeXNtZXRyaWNzLmguCgoJKiBtc2Rvcy9pbnQxNi5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIElOVF9JbnQxNkFkZENoYXIuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUJ1Z2ZpeDogUHJldmVudCBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gVFJBQ0UgYXJndW1lbnQgbGlzdCBpbgoJUkVTX0ZpbmRSZXNvdXJjZQoKCSogbG9hZGVyL2VsZmRsbC5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRml4ZWQgd3JvbmcgTkUgbW9kdWxlIHJlZ2lzdHJhdGlvbiBzbyB0aGF0IHJlc291cmNlcyB3b3JrLgoKCSogaWYxNjMyL3RodW5rLmMsIHRvb2xzL2J1aWxkLmMsIHdpbjMyL2tlcm5lbDMyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNldCAlZWJ4IHRvIHBvaW50IHRvIHJlYWwgMTYtYml0IHN0YWNrIGluIENCQ2xpZW50VGh1bmtTTC4KCVBhc3MgJWVzaSBiYWNrLWFuZC1mb3J0aCBpbiBDQkNsaWVudFRodW5rU0woRXgpLgoJQ29weSBtb2RpZmllZCBidWZmZXJzIGJhY2sgYWZ0ZXIgcmV0dXJuIGZyb20gRlRfVGh1bmsuCglGaXggYnJva2VuIHJlY29nbml0aW9uIG9mIExTIHRodW5rbGV0cy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHVzZSBvZiB3aW4uaCwgc3lzbWV0cmljcy5oIGFuZCBhc3NvY2lhdGVkIFdJTkUgVVNFUiBpbnRlcm5hbAoJdmFyaWFibGVzLiBBZGRlZCBtaXNzaW5nIGluZm9QdHItPkJ1ZGR5ID0gaHduZEJ1ZDsgaW4gdXBkb3duLmMKCgkqIGRsbHMvY29tY3RsMzIvQXR0aWMvcHJvcHNoZWV0LmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3Rvb2xiYXIuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglUb29sYmFyIGN1c3RvbWl6YXRpb24gZGlhbG9nICh0YWtlIG9uZSkuCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBHZXRUb3BXaW5kb3cgc28gaXQgd2lsbCBjb3JyZWN0bHkgaGFuZGxlIHRoZSBOVUxMIHBhcmFtZXRlci4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeCBzd2FwcGVkIEZyZWVMaWJhcnkgcmV0dXJuIHZhbHVlcy4gSGFuZGxlIEZyZWVMaWJyYXJ5KCAwICkgYmV0dGVyLgoJRml4IERMTF9QUk9DRVNTX0RFVEFDSCBjYWxsIHNlcXVlbmNlIGJ1Z3MgcmVzdWx0aW5nIGZyb20gbmVzdGVkCglGcmVlTGlicmFyeSBjYWxscy4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNwZWNzIGZvciBtaXhlckdldERldkNhcHMxNi9taXhlckdldElEMTYsIGZpeGVkIG1peEdldERldkNhcHMxNi4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9pbnQyMS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGFuZ2VkIGdsb2JhbCBET1NfTE9MIGludG8gZnVuY3Rpb24gRE9TTUVNX0xPTCgpIGluIG9yZGVyIHRvIG9wZXJhdGUKCW9uIHRoZSBjb3JyZWN0IGFkZHJlc3Mgc3BhY2UuIEFkZGVkIERPU01FTV9Nb3ZlUG9pbnRlcnMoKSB0aGF0CglyZWxvY2F0ZXMgc2VsZWN0b3JzIHdoZW4gdGhlIERPUyBhZGRyZXNzIHNwYWNlIGNoYW5nZXMgKGkuZS4gd2hlbgoJZG9zbW9kIGlzIHNwYXduZWQsIHBhcnRpY3VsYXJseSBmcm9tIFdpbjE2IGFwcHMgdGhhdCB1c2VzIERQTUkgdG8KCWV4ZWN1dGUgcmVhbC1tb2RlIGNvZGUpLiBNb3JlIGNvbXBsZXRlIERPUyBkZXZpY2UgaW1wbGVtZW50YXRpb24uCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIE1aX0N1cnJlbnQoKSAocmV0dXJucyBjdXJyZW50IExQRE9TVEFTSykgYW5kIERPU1ZNX1dhaXQoKQoJKERPU1ZNIGlkbGUgbWVzc2FnZSBsb29wKSwgYW5kIGZpZWxkcyBoQ29uSW5wdXQgYW5kIGhDb25PdXRwdXQuCgoJKiBvYmplY3RzL2JpdG1hcC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQWRkIHNvbWUgbnVsbCBjaGVja2luZyBpbiB0aGUgR2V0L1NldEJpdG1hcEJpdHMgZnVuY3Rpb25zLgoKCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgaW5pdCBmdW5jdGlvbiBmb3IgQ1JURExMLCBhbGxvY2F0ZSBzdGRpby9zdGRlcnIvc3Rkb3V0IG9uCglETExfUFJPQ0VTU19BVFRBQ0gsIGluY3JlYXNlIGJ1ZmZlciBmb3IgdmZwcmludGYoKSAoV2luOTUgYXJwLmV4ZQoJbmVlZHMgMS4zS0IpLgoKCSogZGVidWdnZXIvbWVtb3J5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgRnJlZUJTRCAzLjAgdG8gREVCVUdfY2hlY2ttYXBfYmFkKCkuCgoJKiBtaXNjL3dpbnNvY2suYzogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJUHJpbnQgYSBtb3JlIGVmZmVjdGl2ZSAoYW5kIHZpc2libGUpIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiBhcHBsaWNhdGlvbgoJY2FuJ3QgY3JlYXRlIGEgc29ja2V0IHdpdGggdHlwZSA9PSBTT0NLX1JBVy4KCgkqIGluY2x1ZGUvbW1yZWcuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTb21lIG1vcmUgZGVmaW5lcyBmb3IgbXVsdGltZWRpYS4KCgkqIG1zZG9zL3Z4ZC5jLCB3aW4zMi9kZXZpY2UuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQHBvcDMucG9wLmRlYml0ZWwubmV0PgoJU29tZSBzdHVicyBmb3IgcGNjYXJkIHZ4ZCB0byBkZWJ1ZyB0aGUgbmF0aXZlIHNoZWxsMzIuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2Ugc2VydmljZSB0aHJlYWQgZm9yICJ0cnVlIiBtdWx0aW1lZGlhIHRpbWVycy4KCVJlbW92ZWQgaW1wbGVtZW50YXRpb24gb2YgZmFrZSBtdWx0aW1lZGlhIHRpbWVycy4KCVNldCBtaW5pbXVtIHJlc29sdXRpb24gdG8gMTAgbXMgKHRoZSB0aW1pbmcgcmVzb2x1dGlvbiBvZiB0aGUgTGludXgKCWtlcm5lbCkuIEZpeGVkIGEgY291cGxlIG9mIGZsYXdzLgoKCSogbWlzYy9zcHkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAcG9wMy5wb3AuZGViaXRlbC5uZXQ+CglJbXBsZW1lbnRlZCBwcmludGluZyBvdXQgb2Ygc29tZSBzdHJ1Y3R1cmVzLgoKVGh1IE1heSAyMCAxNjo0MDoyMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc29ja2V0LmM6CglTZXQgb25seSB0aGUgY2xpZW50IHNvY2tldCBpbiBub24tYmxvY2tpbmcgbW9kZSBpbnN0ZWFkIG9mIGFsbCBmZHM7CglzaG91bGQgYXZvaWQgcHJvYmxlbXMgd2l0aCBzdGRpbyBoYW5kbGVzLgoKTW9uIE1heSAxNyAxNjoyMDo1MyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5zcG9vbC5oLCBtaXNjL0F0dGljL3Nwb29sZXIuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9wcmludGRydi5jLCBvYmplY3RzL2RjLmMsIGRsbHMvd2luc3Bvb2wvLmN2c2lnbm9yZSwgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9pbmZvLmMsIGdyYXBoaWNzL2RyaXZlci5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL2Vudi5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcGQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgRG9jdW1lbnRQcm9wZXJ0aWVzLCBEZXZpY2VDYXBhYmlsaXRpZXMsIGJlZ2lubmluZ3Mgb2YKCU9wZW4vR2V0L0Nsb3NlUHJpbnRlci4gIEFkZGl0aW9ucyB0byBQU0RSVl9EZXZpY2VDYXBhYmlsaXRpZXMuCglTcGxpdCBvZmYgV0lOU1BPT0wgaW50byBpdHMgb3duIGRpcmVjdG9yeS4KCVNldmVyYWwgZnVuY3Rpb25zIGFkZGVkIHRvIERDX0Z1bmNzLgoJQmFzZWQgbGFyZ2VseSBvbiBhIHBhdGNoIGJ5IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJZ2xpZGUyeCBsb2Fkb3JkZXIgaXMgInNvLG5hdGl2ZSIuCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wcm92ZWQgc2hvcnRjdXRzIC0gZm9sbG93cyBqdW1wcyBpbiB0cnlpbmcgdG8gYXZvaWQgc3dpdGNoaW5nIHRvCglyZWFsIG1vZGUgdW5uZWNlc3NhcmlseS4KCgkqIGRvY3VtZW50YXRpb24vbm8td2luZG93czogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVcGRhdGVkIGFuZCBpbXByb3ZlZCBpbnN0cnVjdGlvbnMuCgoJKiBkZWJ1Z2dlci9leHByLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSAiV2luZS1kYmc+c2V0ICpzZWc6b2ZmID0gdmFsIiB3b3JrIChwcmV2aW91c2x5IG9ubHkKCSJXaW5lLWRiZz5zZXQgKm9mZiA9IHZhbCIgd29ya2VkKS4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYzoKCUp1a2thIEthbmdhcyA8anRrYW5nYXNAbmljLmZpPgoJV2hlbiBvcGVuaW5nIHRoZSBmaWxlIHdlIGRvbid0IG5lZWQgTU1JT19FWENMVVNJVkUKCXJpZ2h0cy4gTU1JT19ERU5ZV1JJVEUgc2hvdWxkIGJlIHN1ZmZpY2llbnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBwb3AzLnBvcC5kZWJpdGVsLm5ldD4KCVByZXZlbnQgY3Jhc2ggaW4gc3R1YiBvZiBTaGVHZXREaXJXLgoKCSogZGxscy9zaGVsbDMyL3NobG1lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQHBvcDMucG9wLmRlYml0ZWwubmV0PgoJRnVydGhlciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRmlsZU1lbnUuCgoJKiB3aW5kb3dzL21kaS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBwb3AzLnBvcC5kZWJpdGVsLm5ldD4KCVNldCB0aGUgZGVmYXVsdCBtZW51IGl0ZW0gb2YgdGhlIHdpbmRvdyBtZW51CgoJKiB3aW5lLmluaTogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQ2hhbmdlZCBzZXJpYWwgcG9ydHMgaW4gd2luZS5pbmkgdG8gL2Rldi90dHlTWCBmcm9tIC9kZXYvY3VhWCBpbgoJYWNjb3JkYW5jZSB3aXRoIExpbnV4IDIuMiBDaGFuZ2VzIGZpbGUuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGxvYWRlci9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVsZWFzZSBXaW4xNkxvY2sgd2hlbiBjYWxsaW5nIExvYWRMaWJyYXJ5MzIgZnJvbSAxNi1iaXQgY29kZS4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIFRIVU5LX1NldERDSG9vayB3aGVuIHVzaW5nIG5hdGl2ZSBVU0VSLgoKCSogd2luMzIva2VybmVsMzIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEZUX1Byb2xvZ1ByaW1lIHdhcyBicm9rZW4gZHVlIHRvIHJlbGF5IGNoYW5nZXMuCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU29tZSBzdHVicyBhZGRlZC4KCgkqIHdpbmRvd3MvaG9vay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN1c3BlbmQgd2luZG93IGxvY2tzIGJlZm9yZSBjYWxsaW5nIGhvb2sgcHJvY2VkdXJlLgoKCSogd2luZG93cy9kaWFsb2cuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCB3aW5kb3cgcmVmY291bnQgaGFuZGxpbmcgaW4gR2V0TmV4dERsZ0dyb3VwSXRlbS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIHN1cGVyZmx1b3VzIFdJTl9SZWxlYXNlV25kUHRyLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAbXVkLmRlPgoJWGxpYl9JRGlyZWN0RHJhd1N1cmZhY2U0SW1wbF9GbGlwIHNob3VsZCBzaG93ICdmbGlwdG8nIHN1cmZhY2UsIG5vdAoJcHJldmlvdXMgb25lLiAocmVwb3J0ZWQgYnkgT3ZlKQoKU3VuIE1heSAxNiAxNzoxMTo1OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCUFkZGVkIGEgZmV3IG1pc3NpbmcgZGVidWcgZXZlbnQgZGVmaW5pdGlvbnMuCgoJKiBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCUFkYXB0ZWQgdG8gbmV3IHNlbGVjdCBpbnRlcmZhY2UuCglGaXhlZCBidWcgaW4gKl9zaWduYWxlZCByb3V0aW5lcyB0aGF0IGNvdWxkIGNhdXNlIGJ1c3ktd2FpdGluZyBpbiB0aGUKCXNlbGVjdCBsb29wLgoKCSogc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NvY2tldC5jOgoJQ2hhbmdlZCBzZWxlY3QgaW50ZXJmYWNlLCBzZXBhcmF0ZWQgdGltZW91dHMgZnJvbSBmaWxlIGRlc2NyaXB0b3JzLgoKCSogc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmg6CglNb3ZlZCBwcm9jZXNzIHN0cnVjdHVyZSBkZWZpbml0aW9uIHRvIHByb2Nlc3MuaC4KCUFkZGVkIHN1c3BlbmQvcmVzdW1lX3Byb2Nlc3MuCglNb3ZlZCBoYW5kbGUgdGFibGUgYmFjayBpbnRvIHRoZSBwcm9jZXNzIHN0cnVjdHVyZS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmg6CglBZGRlZCBURUIgaW4gaW5pdF90aHJlYWQgcmVxdWVzdC4KClNhdCBNYXkgMTUgMTA6NTI6NTYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2NlbXUvaW5zdHIuYzoKCVRyaWVkIHRvIGFkZCBhbiBlcnJvciBtZXNzYWdlIHdoZW4gY3Jhc2hpbmcgb24gYSBzZWxlY3RvciBsb2FkIGJlY2F1c2UKCW9mIG1pc3NpbmcgTERUIHNoYXJpbmcgYmV0d2VlbiB0aHJlYWRzICh1bnRlc3RlZCkuCgoJKiBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL0F0dGljL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9BdHRpYy9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyL0F0dGljL3RocmVhZC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIG1lbW9yeS92aXJ0dWFsLmM6CglTZXJ2ZXIgcmVvcmdhbml6YXRpb246CgktIG1vdmVkIHJlcXVlc3QgaGFuZGxlcnMgdG8gdGhlIHNwZWNpZmljIEMgZmlsZXMKCS0gbW92ZWQgaGFuZGxlIG1hbmFnZW1lbnQgdG8gaGFuZGxlLmMKCS0gbW92ZWQgc2VydmVyIHByaXZhdGUgaW5jbHVkZXMgdG8gc2VydmVyLyBpbnN0ZWFkIG9mIGluY2x1ZGUvc2VydmVyLwoKCSogTWFrZS5ydWxlcy5pbjogR2V0IGluY2x1ZGUgZmlsZXMgZnJvbSB0aGUgY3VycmVudCBkaXJlY3RvcnkgZmlyc3QuCgpGcmkgTWF5IDE0IDE4OjM5OjM3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZWQgV0lOX0dldFdpbmRvd0luc3RhbmNlIGJ5IEdldFdpbmRvd0xvbmdBKEdXTF9ISU5TVEFOQ0UpLAoJcmVtb3ZlZCB1bm5lY2Vzc2FyeSB3aW4uaCBpbmNsdWRlcywgYWRkZWQgc3lzbGV2ZWwuaCB0byBxdWV1ZS5jLgoKCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCBDQkdldERyb3BwZWRDb250cm9sUmVjdCB0byBiZSBjb21wbGlhbnQgd2l0aCBXaW5kb3dzIEFQSS4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgd2luMzIvZXhjZXB0LmM6CglGaXhlZCBhIGZldyBidWdzLCBhbmQgaW1wcm92ZWQgdGhlIGV4Y2VwdGlvbiBtYWNyb3MgKGJhc2VkIG9uCglzdWdnZXN0aW9ucyBieSBTZXJnZWkgVHVyY2hhbm92KS4KCgkqIGRsbHMvdmVyL3ZlcjE2LmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpcGMvZGRlX2F0b20uYywgaXBjL2RkZV9hdG9tX3Rlc3QuYywgaXBjL3NobV9ibG9jay5jLCBpcGMvc2htX2ZyYWdtZW50LmMsIGlwYy9zaG1fZnJhZ21lbnRfdGVzdC5jLCBpcGMvc2htX21haW5fYmxrLmMsIGlwYy9zaG1fc2VtYXBoLmMsIGlwYy9zaG1fc2VtYXBoX3Rlc3QuYywgaXBjL3dpbmVfdGVzdF9zdHViLmMsIHJlbGF5MzIvc25vb3AuYywgcmVsYXkzMi91dHRodW5rLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9pbWFnZWhscC9kZWJ1Zy5jLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYywgZGxscy9pbWFnZWhscC9pbnRlZ3JpdHkuYywgZGxscy9pbWFnZWhscC9pbnRlcm5hbC5jLCBkbGxzL2ltYWdlaGxwL21vZGlmeS5jLCBkbGxzL2ltYWdlaGxwL3N5bWJvbC5jLCBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc2FjbTMyL2J1aWx0aW4uYywgZGxscy9tc2FjbTMyL2RyaXZlci5jLCBkbGxzL21zYWNtMzIvZmlsdGVyLmMsIGRsbHMvbXNhY20zMi9mb3JtYXQuYywgZGxscy9tc2FjbTMyL2ludGVybmFsLmMsIGRsbHMvbXNhY20zMi9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbTMyL3N0cmVhbS5jLCBkbGxzL3BzYXBpL3BzYXBpX21haW4uYywgZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy90YXBpMzIvYXNzaXN0ZWQuYywgZGxscy90YXBpMzIvcGhvbmUuYywgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3h0ZXJtLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvc3RhdGljLmMsIGNvbnRyb2xzL3VpdG9vbHMuYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZSwgdXNpbmcgc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrCglTdHJpZHZhbGwuCgoJKiB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS90c194Zjg2ZGdhLmMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCB0c3gxMS90c194bGliLmMsIHRzeDExL3RzX3hwbS5jLCB0c3gxMS90c194cmVzb3VyY2UuYywgdHN4MTEvdHNfeHNobS5jLCB0c3gxMS90c194dXRpbC5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLgoKCSogd2luZG93cy9wYWludGluZy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBpbnZhbGlkIHdpbmRvdyByZWZjb3VudCBoYW5kbGluZyBpbiBSRFdfUGFpbnQoKS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeCBhIGRlYWRsb2NrIHdpdGggdGhlIHN5c3RlbSBtZXNzYWdlIHF1ZXVlIGJ5IGVuc3VyaW5nIHRoZSBzeXN0ZW0gbWVzc2FnZQoJcXVldWUgaXMgdW5sb2NrZWQgd2hpbGUgdGhlIGFjdHVhbCBtZXNzYWdlIGlzIGJlaW5nIHByb2Nlc3NlZC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ2hlY2sgaWYgaW4gZGVwdGgtY29udmVyc2lvbiBtb2RlIGJlZm9yZSByZXR1cm5pbmcgYW4gZXJyb3IgbWVzc2FnZQoJaW4gSURpcmVjdERyYXdQYWxldHRlSW1wbF9HZXRFbnRyaWVzLgoKVGh1IE1heSAxMyAxODo1MzowNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0M0QsIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGluY2x1ZGUvd2luZV9nbC5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglSZXBsYWNlZCBhbGwgdGhlIE1lc2Egc3BlY2lmaWMgY29kZSBieSBHTFggY29kZS4gU2hvdWxkIHdvcmsgbm93IG9uCglhbnkgT3BlbkdMIGltcGxlbWVudGF0aW9uLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogPFRUYXJyYW50QEV0bm90ZWFtLkl0PgoJQWRkZWQgSXRhbGlhbiBrZXlib2FyZCBzdXBwb3J0LgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGEgY291cGxlIG9mIG1lbWNweSBlcnJvcnMuCgoJKiBncmFwaGljcy9wc2Rydi9kcml2ZXIuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU21hbGwgZml4IHRvIGhlbHAgbmF0aXZlIHdpbjk1IFByaW50RGxnIG9uIHRoZSB3YXkuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGlmMTYzMi93aW5hc3BpLnNwZWMsIGluY2x1ZGUvYXNwaS5oOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgSW5zZXJ0SW5BU1BJQ2hhaW4gYW5kIGZpeGVkIG1pbm9yIHRoaW5ncy4KCgkqIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBxdWl0ZSBpbGwgd2luZG93IGxvY2tpbmcgY29kZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGFuIGluZmluaXRlIGxvb3AgaW4gQ2hpbGRXaW5kb3dGcm9tUG9pbnRFeC4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQHBvcDMucG9wLmRlYml0ZWwubmV0PgoJLSBwcmV2ZW50IGNyYXNoIHdoZW4gR2V0TWVudURlZmF1bHRJdGVtIGlzIGNhbGxlZCBvbiBlbXB0eSBtZW51CgktIHNldCBkZWZhdWx0IGl0ZW0gb24gc3lzdGVtIG1lbnUKCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L3NlbGVjdG9yLmMsIHJlbGF5MzIvbnRkbGwuc3BlYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvb3JkaW5hbHMuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS9zdGFja2ZyYW1lLmg6CglBZGFwdGVkIGZvciBuZXcgcmVnaXN0ZXIgZnVuY3Rpb25zIHN1cHBvcnQgKEVTUF9yZWcgaW4gcmVnaXN0ZXIKCWZ1bmN0aW9ucyBub3cgcG9pbnRzIGFmdGVyIHRoZSBhcmd1bWVudHMpLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgdG9vbHMvYnVpbGQuYzoKCVdpbjMyIHJlZ2lzdGVyIGZ1bmN0aW9ucyBjYW4gbm93IGhhdmUgYXJndW1lbnRzLgoJU2ltcGxpZmllZCByZWxheSBkZWJ1Z2dpbmcgZm9yIHJlZ2lzdGVyIGZ1bmN0aW9ucy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvZGV2aWNlLmM6CglWeERDYWxsIGZ1bmN0aW9ucyBkbyBub3QgbmVlZCB0byBiZSAncmVnaXN0ZXInLgoKV2VkIE1heSAxMiAxNjoxMDo1MyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzogRml4ZWQgYnVnIEkgaW50cm9kdWNlZCBpbiByZWxheSBkZWJ1Z2dpbmcuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9BdHRpYy9leGNlcHQuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCB3aW4zMi9leGNlcHQuYzoKCUFkZGVkIG1hY3JvcyBhbmQgZGVmaW5pdGlvbnMgZm9yIHVzaW5nIGV4Y2VwdGlvbiBpbnNpZGUgV2luZSBvcgoJV2luZWxpYiBjb2RlLgoKCSogaW5jbHVkZS9BdHRpYy9leGNlcHQuaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3dpbm50LmgsIG1pc2MvY3J0ZGxsLmMsIHdpbjMyL2luaXQuYzoKCU1vdmVkIHNvbWUgZXhjZXB0aW9uIGRlZmluaXRpb25zIHRvIHdpbm50LmggYW5kIG50ZGRrLmguCgoJKiBtc2Rvcy9kZXZpY2VzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBXSU5BUEkgZm9yIHRoZSBjYWxsYmFjayBwcm9jcy4KCgkqIGluY2x1ZGUvc2lnX2NvbnRleHQuaDogQWRkZWQgRVJST1Jfc2lnLgoKCSogb2xlL3N0Z19iaWdibG9ja2ZpbGUuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQnVnIGZpeC4KCgkqIG1pc2Mvd2luc29jay5jLCBpbmNsdWRlL3dpbnNvY2suaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV1NPQ0szMi9XSU5TT0NLIHVzZXMgU2V0TGFzdEVycm9yKCkgdG8ga2VlcCBpdHMgb3duIFdTQUxhc3RFcnJvcnMsCglyZXBsYWNlZCBhbGwgcHdzaS0+ZXJyIHJlZmVyZW5jZXMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogQ2hhbmdlZCBzb21lIGVycm9yIGhhbmRsaW5nIGEgYml0LgoKCSogd2luZG93cy93aW4uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDbGVhbmVyIFN1c3BlbmQvUmVzdG9yZVduZHNMb2NrLCB3aGljaCBzaG91bGQgZml4IHNvbWUgc2xvd25lc3MuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvbnRkbGwuc3BlYzoKCUFkZGVkIFJ0bFVud2luZCBpbiBudGRsbCwgYW5kIG1hZGUga2VybmVsMzIgc3BlYyBlbnRyeSBhIGZvcndhcmQgdG8KCXRoZSBudGRsbCBvbmUuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9idWlsdGluMzIuaDoKCUFkZGVkIGltcG9ydCBkZWNsYXJhdGlvbiBmb3IgV2luMzIgYnVpbHQtaW5zLgoKTW9uIE1heSAxMCAxNDo0NDo0OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBZGRlZCBzdXBwb3J0IGZvciBmb3J3YXJkZWQgb3JkaW5hbHMgaW4gYnVpbHQtaW4gZGxscy4KClN1biBNYXkgIDkgMTY6MTU6MjggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCUZpeGVkIHJlcXVlc3Qgc2l6ZSBmb3IgYWxsb2NfY29uc29sZSBhbmQgZnJlZV9jb25zb2xlLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL250ZGxsLnNwZWMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL0F0dGljL2V4Y2VwdC5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglJbXByb3ZlZCBleGNlcHRpb24gaGFuZGxpbmcuCglCYXNlZCBvbiB0aGUgd29yayBvZiBTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4uCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglVc2UgT3BlbkZpbGUoKSB0byB0ZXN0IGZvciBmaWxlIGV4aXN0ZW5jZSwgc28gdGhhdCB0aGUgcGF0aCBnZXRzCglzZWFyY2hlZC4KCgkqIHNlcnZlci9zZWxlY3QuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZXN0YXJ0IGludGVycnVwdGVkIHNlbGVjdCgpIChoYXBwZW5zIHdpdGggLXBnKS4KCgkqIGRlYnVnZ2VyL21lbW9yeS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIG9mZi1ieS1vbmUgYnVnIGluIG1lbW9yeSBhY2Nlc3MgY2hlY2suCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW9yZSBkZWJ1ZyBvdXRwdXQgZm9yIFJlZ1F1ZXJ5SW5mb0tleS4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBjb3VwbGUgb2YgYnVncyAoc2lsZW50IGJhY2t0cmFjZSBub3QgdG90YWxseSBzaWxlbnQsIGNyYXNoZXMKCXdoZW4gdGhlIHN0YWNrIGlzIGNvcnJ1cHRlZCBvciBzaW1pbGFyKS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU2F0IE1heSAgOCAxODozOTowNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWNvbmYubGlicy9hdXRvY29uZi5lbmcsIHRvb2xzL3dpbmVjb25mLmxpYnMvYXV0b2NvbmYudGNsLCB0b29scy93aW5lY29uZi5saWJzL2Jyb3dzZXJzLmVuZywgdG9vbHMvd2luZWNvbmYubGlicy9kaXJicm93c2VyLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy9nZW5lcmFsLmVuZywgdG9vbHMvd2luZWNvbmYubGlicy9nZXRmaWxlbmFtZS50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvbWVzc2FnZS50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvbWVzc2FnZTIudGNsLCB0b29scy93aW5lY29uZi5saWJzL3NhdmVSQy50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZS1oYWxmLmdpZiwgdG9vbHMvd2luZWNvbmYubGlicy93aW5lY29uZi5lbmcsIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZWNvbmYudGNsLCB0b29scy93aW5lY29uZi5saWJzL3dpbmVjb25mMS50Y2wsIHRvb2xzL3dpbmVjb25mLnRjbDoKCUplYW4tTG91aXMgVGhpcm90IDx0aGlyb3RAdW5pdi1icmVzdC5mcj4KCUFkZGVkIGdyYXBoaWNhbCBjb25maWd1cmF0aW9uIHRvb2wgd2luZWNvbmYudGNsLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlnbm9yZSBFU0NbJWRjIHJlcG9ydHMgZ2VuZXJhdGVkIGJ5IDhiaXQgY29udHJvbCBjb2Rlcy4KCU9wZW4gY29uc29sZSBldmVuIGlmIHdlIGFscmVhZHkgaGF2ZSBvbmUgaW4gdGhlIHByb2Nlc3MuCgoJKiBmaWxlcy9wcm9maWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgb2ZmIGJ5IDEgZXJyb3IgaW4gc2VjdGlvbiBjb2RlIChkaWQgbm90IHJldHVybiBsZW4tMiBvbiBidWZmZXIKCW92ZXJmbG93IGluIHNvbWUgY2FzZXMsIGJ1dCBsZW4tMSkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHdhcm5pbmcuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgcGFsZXR0ZSBoYW5kbGluZyBmb3IgdHJ1ZS9oaWdoLWNvbG9yIFgxMS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGV4dGVuc2lvbiBoYW5kbGluZyBpbiBMb2FkTGlicmFyeTE2LgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBpbmNsdWRlL3dpbi5oLCBvYmplY3RzL3JlZ2lvbi5jOgoJQWxleCBLb3JvYmthIDxhbGV4QGFpa2VhLmFtcy5zdW55c2IuZWR1PgoJUmVhcnJhbmdlZCBQQUlOVF9SZWRyYXdXaW5kb3coKSBzbyB0aGF0IGl0IGZpcnN0IHJlY3Vyc2l2ZWx5IHVwZGF0ZXMKCWludmFsaWQgcmVnaW9ucyBhbmQgb25seSB0aGVuIHN0YXJ0cyBzZW5kaW5nIG91dCBtZXNzYWdlcy4gVGhpcyBzaG91bGQKCWhlbHAgd2l0aCByZWVudHJhbmN5IGR1cmluZyBtZXNzYWdlIHByb2Nlc3NpbmcgYW5kIG5vdyBpdCBuZWVkcyBqdXN0CglvbmUgKG9yIG5vbmUpIHNjcmF0Y2ggcmVnaW9uIGZvciBhbGwgdGhlcmUgaXMgdG8gZG8uIEFsc28sIHNtYWxsIGZpeGVzCglmb3IgU2V0V2luZG93UG9zKCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogQWRkZWQgY2hlY2sgZm9yIG1pc3NpbmcgX19pMzg2X18gZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvdHJhY2UuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHRvb2xzL3dyYy9wYXJzZXIueSwgb2xlL2RhdGFjYWNoZS5jLCBvbGUvZGVmYXVsdGhhbmRsZXIuYywgb2xlL2hnbG9iYWxzdHJlYW0uYywgb2xlL21lbWxvY2tieXRlcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCB0b29scy9idWlsZC5jLCBtaXNjL3dzcHJpbnRmLmMsIG1pc2NlbXUvaW5zdHIuYywgbXNkb3MvaW9wb3J0cy5jLCBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGlwYy9iaXRfYXJyYXkuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGRlYnVnZ2VyL2RiZy55LCBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQU5TSSBDIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQYXNzIFBST1BTSEVFVFBBR0UgdG8gcHJvcGVydHlwYWdlIGRpYWxvZyBhcyBsUGFyYW0uCgoJKiBtaXNjL3dpbnNvY2suYywgbXVsdGltZWRpYS9kc291bmQuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIGlwYy9kZGVfYXRvbS5jLCBpcGMvZ2VuZXJpY19oYXNoLmMsIGlwYy9zaG1fYmxvY2suYywgaXBjL3NobV9tYWluX2Jsay5jLCBpcGMvc2htX3NlbWFwaC5jLCBsb2FkZXIvZG9zL2Rvc21vZC5jLCBsb2FkZXIvc2lnbmFsLmMsIG1lbW9yeS9sZHQuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS9tZXRhZmlsZS5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvd2luc29jay5oLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGdyYXBoaWNzL2Rpc3BkaWIuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGVidWdnZXIvbXNjLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFOU0kgQyBmaXhlcy4KCgkqIHdpbmRvd3MvY2FyZXQuYywgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbWlzYy9wcmludGRydi5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9saW5lZGRhLmMsIG9iamVjdHMvcmVnaW9uLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmgsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNwbGl0IG9mZiB3aW5nZGkxNi5oIGZyb20gd2luZ2RpLmguICBBZGQgbWFueSBtb3JlICNkZWZpbmVzL3R5cGVkZWZzCgl0byBicmluZyB3aW5nZGkuaCBhbG1vc3QgdXB0byBhIGNvbXBsZXRlIE5UNC4wIGludGVyZmFjZS4KCUZpeCByZXR1cm4gdmFsdWUgb2YgU2V0UmVjdFJnbigpLgoKCSogd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW5wb3MuaDoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkICNpbmNsdWRlICJ3aW5lL3dpbnVzZXIxNi5oIiBhbmQgdXNlICJzdHJ1Y3QgdGFnPz8/PyIgaW5zdGVhZC4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wcm92ZWQgV2luZSBkZWJ1Z2dlciBiYWNrdHJhY2UuIE5ldyBmZWF0dXJlczoKCS0gRGlzcGxheXMgZWJwLCBpbiBjYXNlIHlvdSB3YW50IHRvIGNoZWNrIHN0YWNrZnJhbWVzIG1hbnVhbGx5CgktIERldGVjdHMgZmFyIGNhbGxzIGV2ZW4gd2hlbiB3aW5kb3dzIGFwcHMgZG9uJ3QgbWFyayB0aGVtCgktIFRyYWNrcyBDYWxsRnJvbTE2L0NhbGxUbzE2IHJlbGF5aW5nICh0aHVua2luZykKCgkqIGxvYWRlci9lbGZkbGwuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJQnVnZml4OiBnZXRfc29iYXNlbmFtZSB3YXMgb2ZmIGJ5IG9uZSBwb2ludGVyIGluY3JlbWVudC4KCgkqIG11bHRpbWVkaWEvaW5pdC5jOiBLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgoJRml4ZWQgaW1wbGljaXQgdHlwZSB3YXJuaW5nLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVZhbHVlcyByZXR1cm5lZCBmcm9tIFB0SW5SZWN0IGFuZCBMQl9JVEVNRlJPTVBPSU5UIGFyZSByZXZlcnNlZC4KCgkqIG9sZS9kYXRhY2FjaGUuYywgb2xlL2RlZmF1bHRoYW5kbGVyLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUyc3R1YnMuYywgb2xlL29sZW9iai5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJU2Vjb25kIHBhcnQgb2YgdGhlIE9MRSBkYXRhY2FjaGUgaW1wbGVtZW50YXRpb24uCgoJKiBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvaW50MjEuYywgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvbXNkb3MuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTW92ZWQgRE9TIExpc3Qgb2YgTGlzdHMgaW5pdGlhbGl6YXRpb24sIGFuZCBhZGRlZCB0aGUgYmVnaW5uaW5ncyBvZgoJdGhlIERPUyBkZXZpY2Ugc3RydWN0dXJlcy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgaW5jbHVkZS93aW5yZWcuaCwgbWlzYy9yZWdpc3RyeS5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglCdWcgZml4ZXMuCgoJKiBvbGUvaGdsb2JhbHN0cmVhbS5jLCByZWxheTMyL29sZTMyLnNwZWM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIEdldEhHbG9iYWxGcm9tU3RyZWFtLgoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIFRIUkVBRF9GcmVlVEhEQiBhcyBzZXJ2aWNlIHRocmVhZCBjYWxsYmFjay4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL3RpbWVyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgVElNRVJfU3dpdGNoUXVldWUuCgoJKiBkZWJ1Z2dlci9tZW1vcnkuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZvcm1hdCBvdXRwdXQgaW4gREVCVUdfRXhhbWluZU1lbW9yeSBmb3IgImQiIGFuZCAieCIgbm90IHRvIGV4Y2VlZCA4MAoJY2hhcnMuCgoJKiBsb2FkZXIvc2lnbmFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3RvcCB3aW5lbGliIHByb2dyYW1zIG9uIGZhdWx0IGluc3RlYWQgb2YgZW5kbGVzcyBmYXVsdGxvb3BpbmcuCgoJKiBNYWtlZmlsZS5pbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJUnVuIGxkY29uZmlnIGluIG1ha2UgaW5zdGFsbCBpZiB1c2luZyAtLWVuYWJsZS1kbGwuCglDbGVhbmVkIHVwIHVuaW5zdGFsbF9saWIgYXMgd2VsbC4KCgkqIG9sZS9zdG9yYWdlLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oLCByZWxheTMyL29sZTMyLnNwZWMsIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBvbGUvbWVtbG9ja2J5dGVzLmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIElTdG9yYWdlIHN1cHBvcnRlZCBieSBhbiBpbXBsZW1lbnRhdGlvbiBvZgoJSUxvY2tCeXRlcyBvbiB0b3Agb2YgYW4gSEdMT0JBTC4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUgZnJvbSBHZXRQcml2YXRlUHJvZmlsZVNlY3Rpb25BLgoJQ29weS9jb252ZXJ0IGJhY2sgdGhlIGJ1ZmZlciBpbiBHZXRQcml2YXRlUHJvZmlsZVNlY3Rpb25XLgoJUmVwbGFjZSBzb21lIG91dHB1dCBwb2ludGVycyBzdHIvd3N0ci0+cHRyIGluIGtlcm5lbDMyLnNwZWMuCgoJKiBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTb21lIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGJ1Z2ZpeGVzOgoJLSBJbml0aWFsaXplIHByb2Nlc3MgY3JzdCBmb3IgMTYtYml0IHByb2Nlc3Nlcy4KCS0gRG9uJ3QgY3Jhc2ggZHVlIHRvIHVuaW5pdGlhbGl6ZWQgc3RhY2sgZnJhbWVzIGluIFdpbmVMaWIuCgktIE1hcCBzeXN0ZW0gRExMcyBiZWZvcmUgY2FsbGluZyBVc2VyU2lnbmFsUHJvYy4KCS0gU2lnbmFsIFVTSUdfUFJPQ0VTU19DUkVBVEUgb25seSAqYWZ0ZXIqIHRoZSBlbnZfZGIgaXMgZmlsbGVkLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBDYWxsb3V0IHJvdXRpbmVzIGRpcmVjdGx5IHdoZW4gdXNpbmcgYnVpbHRpbiBVU0VSLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogYWxsIFBFIG1vZHVsZXMgd2VyZSBtYXJrZWQgJ2ludGVybmFsJy4KCgkqIGluY2x1ZGUvZGNlLmgsIG9iamVjdHMvZGMuYywgd2luZG93cy9kY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hlY2sgZm9yIGJ1c3kgRENFIG1vdmVkIHRvIERDSG9vazE2KCkuCgoJKiBpbmNsdWRlL3dpbi5oLCBsb2FkZXIvbWFpbi5jLCB3aW5kb3dzL3dpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbml0aWFsaXplIFdJTl9Dcml0U2VjdGlvbiBlYXJsaWVyLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBpbmNsdWRlL3RyYWNrYmFyLmg6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCB0aGUgdGltZXIgdGhhdCB3YXMgdXNlZCB0byBxdWV1ZSBUUkFDS0JBUl9SZWZyZXNoIGNhbGxzLgoJUmVtb3ZlZCBhbGwgZGlyZWN0IGNhbGxzIHRvIFRSQUNLQkFSX1JlZnJlc2ggKGV4Y2VwdCBmcm9tIHdpdGhpbiB0aGUKCVdNX1BBSU5UIGhhbmRsaW5nIHNlY3Rpb24pIGFuZCByZXBsYWNlZCB0aGVtIGJ5IGNhbGxzIHRvCglJbnZhbGlkYXRlUmVjdC4KCUZpeGVkIGEgYnVnIGluIHRoZSBUUkFDS0JBUl9TZXRQb3MgZnVuY3Rpb24uCglGaXhlZCB0aGUgYmVoYXZpb3IgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiBtb3VzZSBpbnB1dC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBZdXhpIFpoYW5nIDx5dXhpekBjb3JlbC5jYT4KCUltcGxlbWVudGVkIHRvb2xiYXIgbXVsdGlyb3cgYnV0dG9uIGxheW91dC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgV01fR0VUVEVYVCBhbmQgV01fR0VUVEVYVExFTkdUSCBpbiB0b29sdGlwcy4KCgkqIG9sZS9vbGUyZGlzcC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIE9sZVRyYW5zbGF0ZUNvbG9yLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvaW5wdXQuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgdGhlIHJldHVybiB2YWx1ZSBvZiBHZXRLZXlib2FyZFN0YXRlIGFuZCBTZXRLZXlib2FyZFN0YXRlIGZyb20KCVZPSUQgdG8gQk9PTC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJUHJldmVudGVkIExJU1RCT1hfUmVwYWludEl0ZW0gZnJvbSByZXBhaW50aW5nIGEgbm9uIHZpc2libGUgaXRlbS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdHlwby4KCgkqIHdpbmRvd3MvY2xhc3MuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQnVnZml4IGZvciBUUkFDRSBpbiBVbnJlZ2lzdGVyQ2xhc3MuCgpXZWQgTWF5ICA1IDEzOjIwOjUwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL0F0dGljL3Byb3BzaGVldC5oOiBObyBsb25nZXIgbmVjZXNzYXJ5LgoKVHVlIE1heSAgNCAxNjo1NToyMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9kYy5jLCB3aW5kb3dzL2RjZS5jLCBpbmNsdWRlL2RjZS5oOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hlY2sgaWYgREMgaXMgYnVzeSBiZWZvcmUgZGVsZXRpbmcgaXQuCgoJKiB3aW4zMi9uZXdmbnMuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldE1haWxzbG90SW5mbyBpcyBzdXBwb3NlZCB0byBjaGVjayBmb3IgcG9pbnRlciB2YWxpZGl0eS4KCgkqIHNlcnZlci9zZWxlY3QuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQb3NzaWJsZSBjcmFzaCBpbiBzZWxlY3RfbG9vcCgpIGZpeGVkLgoKCSogaW5jbHVkZS9zZXJ2aWNlcy5oLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvc2VydmljZXMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgdmFyaW91cyBzdHVwaWQgYnVncyBpbiBzZXJ2aWNlcyB0aHJlYWQgcm91dGluZXMuCglBZGRlZCBTRVJWSUNFX0V4aXQgcm91dGluZSB0byBraWxsIHRoZSBzZXJ2aWNlcyB0aHJlYWQuCgoJKiBtaXNjL21haW4uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbnZlcnRlZCBjbGFzcy9jaGFubmVsIGluIF9fKFNFVHxHRVQpX0RFQlVHR0lORyBtYWNyb3MuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRXaW5kb3dUaHJlYWRQcm9jZXNzSWQoKS4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIFBsYXlTb3VuZDE2LCBzbmRQbGF5U291bmQxNi4KCgkqIGlmMTYzMi90aHVuay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVzIHdpbnByb2MgZGVhZGxvY2sgZm9yIHdpbjE2LgoKTW9uIE1heSAgMyAwOTo0NDo1NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9xdWV1ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgZGVhZGxvY2socykgaW4gbWVzc2FnZSBzZW5kaW5nLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWNsZWFuZWQgdXAgZGVidWcgY2hhbm5lbHMgdG8gdXNlIGRlZmF1bHQgb25lIChtbXN5cykKCW1vcmUgY29udmVyc2lvbnMgZnJvbSBtaXhlclhYWFcgYW5kIG1peGVyWFhYWDE2IHRvIG1peGVyWFhYWEEKCWZpeGVkIGNhbGxiYWNrIGJ1ZyBpbiBtaWRpU3RyZWFtIGZ1bmN0aW9ucwoJZml4ZWQgY29tcGlsYXRpb24gYnVnIHdpdGggZWdjcwoJY2hhbmdlZCB0byB0aGUgbmV3IGRlYnVnIGNoYW5uZWwgaW50ZXJmYWNlCgoJKiBtdWx0aW1lZGlhL21tYXV4LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJc21hbGwgcmFuZ2UgZml4ZXMgZm9yIE9TUyBkcml2ZXIKCWNoYW5nZWQgdG8gdGhlIG5ldyBkZWJ1ZyBjaGFubmVsIGludGVyZmFjZQoKCSogbXVsdGltZWRpYS9taXhlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWZpcnN0ICh3b3JraW5nKSBzaG90IGF0IE9TUyBtaXhlciBsb3cgbGV2ZWwgaW50ZXJmYWNlCgljaGFuZ2VkIHRvIHRoZSBuZXcgZGVidWcgY2hhbm5lbCBpbnRlcmZhY2UKCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBvZmYtYnktb25lIG9yZGluYWxzIGluIE1QUi4KCUFkZGVkIE1QUl9BbGxvYy9SZUFsbG9jL0ZyZWUgKE1QUi4yMi0yNCkuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIGlmMTYzMi9yZWxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHJlbGVhc2UgV2luMTZMb2NrIGluIFdpbkV4ZWMxNiwgQ2FsbFByb2NbRXhdMzJXXzE2LgoKCSogbG9hZGVyL21haW4uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMb2FkIHN5c3RlbSBETExzIGludG8gV2luZUxpYiBhcHBsaWNhdGlvbnMuCgoJKiBncmFwaGljcy9wc2Rydi9wcy5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTbWFsbCB1cGRhdGUgdG8gdGhlIFBvc3RTY3JpcHQgZW5jb2RpbmcgdmVjdG9yLgoKCSogbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jOiBCdWcgZml4ZXMuCgpTdW4gTWF5ICAyIDE5OjEwOjU3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTW92ZWQgYSBmZXcgbW9yZSBpbml0aWFsaXNhdGlvbnMgdG8gdGhlIG5ldyBwcm9jZXNzIGNvbnRleHQuCgoJKiBsb2FkZXIvdGFzay5jOiBEb24ndCBpbml0aWFsaXNlIHRoZSBzdGFja3MgZm9yIDMyLWJpdCBwcm9jZXNzZXMuCgoJKiBtaXNjZW11L21haW4uYzogT25seSBjaGVjayBudW1iZXIgb2YgdGFza3MgYWZ0ZXIgZmlyc3QgbWVzc2FnZS4KCVVzZSBhIDE2LWJpdCBtb2R1bGUgZm9yIGNyZWF0aW5nIHRoZSBpbml0aWFsIHRhc2suCgoJKiBpbmNsdWRlL2F1dGhvcnMuaCwgQVVUSE9SUzoKCVVwZGF0ZWQgYXV0aG9ycyBsaXN0IGZyb20gdGhlIENoYW5nZWxvZy4gUGxlYXNlIGxldCBtZSBrbm93IGlmIHlvdQoJaGF2ZSBiZWVuIGxlZnQgb3V0LgoKCSogbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnZ2luZyBpbnRlcmZhY2UgKGRvbmUgd2l0aCB0aGUgaGVscCBvZiB0aGUKCXNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpayBTdHJpZHZhbGwpLgoJU29tZSBjaGFuZ2VzIHRvIHRoZSBpbml0aWFsaXNhdGlvbiBzZXF1ZW5jZSBmb3IgMzItYml0IHByb2Nlc3Nlcy4KCgkqICovKi5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWdnaW5nIGludGVyZmFjZSAoZG9uZSB3aXRoIHRoZSBoZWxwIG9mIHRoZQoJc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrIFN0cmlkdmFsbCkuCgoJKiB0b29scy9tYWtlX2RlYnVnLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgbWlzYy9tYWluLmM6CglNaXNjIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUFkZGVkIGNoZWNrIGZvciAtbG1tYXAgZm9yIE9TLzIuCgoJKiBpbmNsdWRlL2RlYnVnZGVmcy5oLCBvbGUvaGdsb2JhbHN0cmVhbS5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZTMyLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGZldyBidWdzIGluIHRoZSBPTEUgc3RvcmFnZSBpbXBsZW1lbnRhdGlvbiwgYWRkZWQgYSBuZXcgc2V0IG9mCgl0cmFjZSBzdGF0ZW1lbnRzIGZvciB0aGUgT0xFIHN0b3JhZ2UgcmVsYXRlZCBtZXRob2RzIGFuZCBpbnRyb2R1Y2VkIGEKCW5ldyBkZWJ1ZyBjaGFubmVsIGZvciB0aGUgc3RvcmFnZSBzdWJzeXN0ZW0uCgoJKiBtdWx0aW1lZGlhL3RpbWUuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9wYWxldHRlLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbWlzYy9zcG9vbGVyLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCByZWR1bmRhbnQgaW5jbHVkZSBvZiB3aW5iYXNlLmggZnJvbSB3aW51c2VyMTYuaC4KCU1vdmVkIHR5cGVzIGZyb20gd2luYmFzZS5oIHRvIHdpbnVzZXIxNi5oIC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gZGVmYXVsdCBpdGVtIGhhbmRsaW5nCgktIHNtYWxsIGRyYXdpbmcgZml4ZXMKCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJTW9yZSBpbXBsZW1lbnRhdGlvbiBvZiBQcmludERsZ0EuCglDb252ZXJzaW9uIG9mIHJlc291cmNlIGlkZW50aWZpZXJzIG9mIFByaW50MzIgd2luZG93IHRvIGNvbXBseSB0byB0aGUKCU0kIG51bWJlcmluZy4KCgkqIHNlcnZlci90aHJlYWQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjcmFzaCBpZiBxdWV1aW5nIGFuIEFQQyBvbiBhIHRocmVhZCB0aGF0IGRvZXNuJ3Qgd2FpdC4KCgkqIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgaW5jbHVkZS9tZXNzYWdlLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBTRVJWSUNFUyBjYWxsYmFjayB0byBpbXBsZW1lbnQgV2luZG93cyB0aW1lcnMuCglUaW1lciBleHBpcmF0aW9uIGhhbmRsaW5nIHJlbW92ZWQgZnJvbSBFVkVOVF9XYWl0TmV0RXZlbnQgbG9vcC4KCgkqIG1lbW9yeS9oZWFwLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNhbGwgU2V0TGFzdEVycm9yIGluIEhlYXBDb21wYWN0KCkuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBwcm90b3R5cGUgZm9yIFRyeUVudGVyQ3JpdGljYWxTZWN0aW9uLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJTWFrZSBhbGwgc3RydWN0dXJlcyBwYWNrZWQgYW5kIHJlbW92YWwgb2Ygc29tZSBXSU5FX1BBQ0tFRC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJUHVzaGJ1dHRvbnMgc2hvdWxkIG9ubHkgYmUgcm91bmRlZCBpbiBXaW4zMSBsb29rLgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gZGVmYXVsdCBpdGVtIGhhbmRsaW5nCgktIHNtYWxsIGRyYXdpbmcgZml4ZXMKCgkqIHdpbmRvd3Mvd2lucG9zLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYW4gdW5iYWxhbmNlZCB3aW5kb3dzIGxvY2svdW5sb2NrIHNlcXVlbmNlIGluCglXSU5QT1NfQWN0aXZhdGVPdGhlcldpbmRvdy4KCgkqIGluY2x1ZGUvZGVidWdkZWZzLmg6IGVuaG1ldGFmaWxlIGFkZGVkCgoJKiByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvbWNpYW5pbS5zcGVjLCByZWxheTMyL21jaWF2aS5zcGVjLCByZWxheTMyL21jaWNkYS5zcGVjLCByZWxheTMyL21jaXNlcS5zcGVjLCByZWxheTMyL21jaXdhdmUuc3BlYywgcmVsYXkzMi93aW5tbS5zcGVjLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgbG9hZGVyL21haW4uYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXN0cmluZy5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhLCBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgd2luZS5pbmk6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gZ290IHJpZCBvZiBhbGwgdGhlIGludGVybmFsIE1NIHR3ZWFrcyB0byBsb2FkIGJ1aWx0aW4gTUNJCgkgIGRyaXZlcnMuIFRoZXkgYXJlIGFsbCBzZWVuIGFzIGRyaXZlcnMsIGxvYWRlZCBhcyBETExzIGFuZCBzdGFuZGFyZAoJICBtb2R1bGUgbG9hZG9yZGVyIGlzIHVzZWQgdG8ga25vdyB3aGljaCB0eXBlIHRvIHVzZSAoYnVpbHRpbiB2cwoJICBuYXRpdmUpLgoJLSBmaXJzdCBmdWxsIHdvcmtpbmcgaW1wbGVtZW50YXRpb24gb2YgbW1UaHJlYWQ/Pz8gZnVuY3Rpb25zICh0bwoJICBzdXBwb3J0IGdyYWNlZnVsbHkgbmF0aXZlIE1DSSBkcml2ZXJzKS4KCS0gc3VwcG9ydCBvZiBtbVNob3dNTUNQTFByb3BlcnR5U2hlZXQuCgktIGZpeCBvZiBzb21lIGhlYXAgdmFsaWRhdGUgYnVncyAodGhhbmtzIHRvIFVscmljaCBmb3IgcmVwb3J0aW5nIHRoZW0pLgoKCSogbG9hZGVyL21vZHVsZS5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IENyZWF0ZVByb2Nlc3NBIHRvIGltcGxlbWVudCBjb3JyZWN0IGFjdGlvbnMgb24gYW1iaWd1b3VzIGNvbW1hbmQKCWxpbmUgbmFtZXMgKHRyeSBsb25nZXIgYW5kIGxvbmdlciBzdHJpbmdzKS4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvLmN2c2lnbm9yZSwgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2RjLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvbWFwcGluZy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgaW5jbHVkZS9lbmhtZXRhZmlsZWRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTdGFydGVkIGltcGxlbWVudGluZyBFbmhhbmNlZCBNZXRhRmlsZSBkcml2ZXIuCgoJKiBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2RhdGFjYWNoZS5jLCBvbGUvZGVmYXVsdGhhbmRsZXIuYywgb2xlL29sZTIuYywgb2xlL29sZTJzdHVicy5jLCBvbGUvb2xlb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBPTEUgb2JqZWN0IGRlZmF1bHQgaGFuZGxlciBhbmQgZGF0YSBjYWNoZS4KCgkqIGluY2x1ZGUvZW5obWV0YWZpbGUuaCwgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTZXZlcmFsIGltcHJvdmVtZW50cyB0byBFbmhhbmNlZCBNZXRhRmlsZSBwbGF5YmFjay4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCU9ubHkgdHJ5IHRvIGFwcGVuZCAiLmRsbCIgaWYgYSBsaWJyYXJ5IGlzIGxvYWRlZCBpbXBsaWNpdGVseS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUZpeCBUUkFDRSBmb3JtYXR0aW5nIHdhcm5pbmdzLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYSBzbWFsbCBzeW50YXggcHJvYmxlbS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBiZXR0ZXIgc3R1YnMgZm9yIEdldC9TZXQgc3BlY2lhbCAoUHJvZ21hbi9UYXNrbWFuKSB3aW5kb3cgZnVuY3Rpb25zCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBuZXcgU2VuZE1lc3NhZ2VDYWxsYmFja1cKCS0gc29tZSBmaXhtZSdzIGZvciBtaXNzaW5nIEE8LT5XIGNvbnZlcnNpb24KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYW4gdW5iYWxhbmNlZCB3aW5kb3dzIGxvY2svdW5sb2NrIHNlcXVlbmNlIGluIEdldE5leHREbGdUYWJJdGVtLgoKCSogbWlzYy9wcmludGRydi5jOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUJ1Z2ZpeCBmb3IgRW51bVByaW50ZXJzIGxldmVsIDIuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ29ycmVjdCBsb2dpYyBpbiBHZXRLZXlOYW1lVGV4dC4KCgkqIGRvY3VtZW50YXRpb24vYnVncmVwb3J0czoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlbW92ZWQgK3Nub29wIGZyb20gZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzLgoKU2F0IE1heSAgMSAxMDo0MTowMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9iaXRtYXAuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUxvYWRJbWFnZVcgZml4ZWQgZm9yIGhpY29sb3IgZGlzcGxheXMuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1DSV9BTklNX09QRU5fUEFSTVNXIHNob3VsZCBiZSBMUENXU1RSLCBNQ0lfRGVmWWllbGRQcm9jIHNob3VsZCBiZSBXSU5BUEkuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgSEVBREVSX0luc2VydEl0ZW1BIGFuZCBIRUFERVJfSW5zZXJ0SXRlbVcgbnVsbCBwb2ludGVyIGNoZWNraW5nCgl0byBoYW5kbGUgd2lkZSBjaGFyYWN0ZXIgc3RyaW5ncyBwcm9wZXJseS4gIEZpeCBvZiBvdXIgcHJldmlvdXMgcGF0Y2gKCWZvciBudWxsIHBvaW50ZXIgY2hlY2tpbmcuCgoJKiBvbGUvTWFrZWZpbGUuaW4sIG9sZS9tZW1sb2NrYnl0ZXMuYywgb2xlL29sZTJzdHVicy5jOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBDcmVhdGVJTG9ja0J5dGVzT25IR2xvYmEsIEdldEhHbG9iYWxGcm9tSUxvY2tCeXRlcyBhbmQKCXRoZSBJTG9ja0J5dGVzIGludGVyZmFjZSBiYXNlZCBvbiBhbiBIR0xPQkFMLgoKCSogb2xlL2NvbXBvYmouYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBidWcgaW4gQ29SZWdpc3RlckNsYXNzT2JqZWN0LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIHNvbWUgZmxpY2tlcmluZyB3aGVuIGluc2VydGluZyBvciBkZWxldGluZyBidXR0b25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgTElTVFZJRVdfR2V0SXRlbUNoYW5nZXMoKSB0byBwZXJmb3JtIGEgbW9yZSBjb21wbGV0ZSBjb21wYXJpc29uCgliZXR3ZWVuIGxwSXRlbSBhbmQgbHBMVkl0ZW0uICBOb3cgY29tcGFyZXMgdGhlIHBzelRleHQgc3RyaW5nIG9mIHRoZQoJbHBJdGVtIGFuZCBscExWSXRlbSBzdHJ1Y3RzLiAgRml4ZXMgYSBidWcgd2hlcmUgdGhlIG9sZCBhbmQgbmV3IGl0ZW0KCWhhdmUgdGhlIHNhbWUgYXR0cmlidXRlcyBidXQgdGhlaXIgdGV4dCBkaWZmZXJzIGFuZCBHZXRJdGVtQ2hhbmdlcygpCgljb21wYXJlcyB0aGVtIGFzIGVxdWFsLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuaCwgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIHBhZ2VzIGR5bmFtaWNhbGx5IGZyb20gYQoJcHJvcGVydHkgc2hlZXQuCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9saXN0Ym94LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdGhlIGdvdG9zIGZyb20gdGhlIFduZFByb2NzLCBhbHdheXMgdXNlIGEgc21hbGwgd3JhcHBlciB0aGF0Cglsb2NrcyB0aGUgd2luZG93LCBjYWxscyB0aGUgcmVhbCB3bmRwcm9jLCB1bmxvY2tzIHRoZSB3aW5kb3cuCgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgZGVmYXVsdCBtZW51IGl0ZW0uCgoJKiB3aW4zMi9jb2RlX3BhZ2UuYywgbWlzYy9kZGVtbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB0eXBvLgoKCSogd2luZG93cy9xdWV1ZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSBtaXNzaW5nIExlYXZlQ3JpdGljYWxTZWN0aW9uLgoKCSogd2luZG93cy9tZGkuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSB3cm9uZyB1c2FnZSBvZiBXSU5fRmluZFduZFB0ci9XSU5fUmVsZWFzZVduZFB0ciBpbgoJVHJhbnNsYXRlTURJU3lzQWNjZWwxNi4KCgkqIG1pc2MvY29tbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIG9mZi1ieS1vbmUgYnVnIGluIGFzeW5jIG91dHB1dCBidWZmZXJzLgoKCSogb2xlL29sZTIuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBsaXR0bGUgRHJhZyBhbmQgRHJvcCBidWcuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk1vbiBBcHIgMjYgMTQ6NTg6NTkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBhdXRvY29uZiBjaGVjayBmb3IgImlubGluZSIuIFlvdSBjYW4gbm93IHVzZSBpdCwgaXQgd2lsbCBiZQoJZGVmaW5lZCB0byAoZW1wdHkpIGZvciBjb21waWxlcnMgdGhhdCBkbyBub3QgaGF2ZSBpdC4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueTogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglEb24ndCBpbmNsdWRlIGFsbG9jYS5oLgoKCSogUkVBRE1FLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglVcGRhdGUgdG8gcmVmbGVjdCByZWNlbnQgY2hhbmdlcyBhbmQgZGlzY3Vzc2lvbnMuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglUaGUgbG9hZCBvcmRlciBwYXJzZXIgc2hvdWxkIG5vdCBhbHdheXMgY29tcGxhaW4gYWJvdXQgZXh0ZW5zaW9ucy4KCgkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGFsaWduIG1hZ2ljIGJ1dHRvbnMgcmlnaHQKCS0gc2hvcnRjdXRzIGFsaWdubWVudCB3b3JraW5nIGFnYWluCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbG9hZGluZyBvZiBuYXRpdmUgTkUgZGxscy4KClN1biBBcHIgMjUgMTk6MDQ6NDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9oZWFwLmM6IEZpeGVkIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyBhcmcuCgoJKiAqLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIEFOU0kgY29tcGFiaWxsaXR5LgoKCSogKi8qOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUJ1aWx0LWluIGRsbHMgbm93IGhhdmUgcmVzb3VyY2VzIGF0dGFjaGVkIHZpYSB0aGUgUEUtaGVhZGVyIGxpa2UKCW5vcm1hbCBkbGxzLiBUaGlzIGVuYWJsZXMgdGhlIHVzZSBvZiB0aGUgcmVzb3VyY2UgQVBJLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJVXNlICRIT01FIGluc3RlYWQgb2YgZ2V0cHd1aWQgZm9yIHVzZXIncyBob21lIGRpcmVjdG9yeS4KCUZpeGVkIG1lc3NlZCB1cCBpbmRlbnRhdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJVXNlICRIT01FIGluc3RlYWQgb2YgZ2V0cHd1aWQgZm9yIHVzZXIncyBob21lIGRpcmVjdG9yeS4KCgkqICovKi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgkjcHJhZ21hIHBhY2soPykgY2hhbmdlZCB0byAjaW5jbHVkZSAiKnBhY2sqLmgiCgoJKiB0b29scy9idWlsZC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUFkZGVkIHNvbWUgbWlzc2luZyAjZGVmaW5lcyBJJ3ZlIHJ1biBhY3Jvc3MuCgoJKiBmaWxlcy9kb3NfZnMuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJSWdub3JlIHRyYWlsaW5nIGRvdHMgb24gZmlsZSBuYW1lcy4KCgkqIGluY2x1ZGUvZGVidWdnZXIuaCwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBwb3NzaWJpbGl0eSB0byBsZXQgdGhlIGludGVybmFsIGRlYnVnZ2VyIHVzZSBhIHNlcGFyYXRlCgloZWFwLiBOb3QgZW5hYmxlZCBieSBkZWZhdWx0LCBjaGFuZ2UgI2lmIGluIGluY2x1ZGUvZGVidWdnZXIuaCB0byB1c2UKCXRoaXMgKHRoZSBoZWFwIGFsbG9jYXRvciBpcyB2ZXJ5IHNsb3cpLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCXdpbmUuY29uZiBzaG91bGQgbm90IG92ZXJydWxlIGNvbnRlbnQgb2YgYnVybmVkIGluIGRhdGEgaW4KCWxvYWRvcmRlci5jLgoKCSogZ3JhcGhpY3MvbWFwcGluZy5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCVNldE1hcE1vZGUgc2hvdWxkIG5vdCByZXNldCB0aGUgd2luZG93IGFuZCB2aWV3cG9ydCBvcmlnaW5zIHRvIDAuCgoJKiB0b29scy93aW5lY29uZjogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBbGxvdyB0byBhdXRvbWF0aWNhbGx5IGNvcHkgcGFydCBvZiB3aW5lLmluaSBpbnRvIGdlbmVyYXRlZCBmaWxlLgoJU21hbGwgcGVybCBlbmhhbmNlbWVudCAod29yayBpbiBzdHJpY3QgbW9kZSkuCglTbWFsbCB1cGRhdGVzIGluIGhldXJpc3RpY3MuCgoJKiB3aW5lLmluaTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGdyYWRlZCB0byBoYXZlIGEgZGVjZW50IG11bHRpbWVkaWEgRExMcyBjb25maWd1cmF0aW9uLgoKCSogdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JpdGVyZXMuYywgdG9vbHMvd3JjL0NIQU5HRVM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBGaXhlZCBhIGNvdW50aW5nIGJ1ZyBpbiB0aGUgd2luMzIgY291bnQgYW5kIHNvcnQgcm91dGluZS4KCS0gRml4ZWQgc29ydCBvcmRlciBvZiByZXNvdXJjZXMgKG11c3QgYmUgbmFtZSBiZWZvcmUgb3JkaW5hbCkuCgktIFNodWZmbGVkIGEgY291cGxlIG9mIGdsb2JhbCB2YXJpYWJsZXMgc28gdGhhdCBidWlsdC1pbiBkbGxzIG5vdyBjYW4KCSAgbG9hZCByZXNvdXJjZXMgdGhyb3VnaCB0aGUgcHJvcGVyIFBFIGludGVyZmFjZS4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lucmVnLmg6CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglBZGRlZCBzdXBwb3J0IGZvciBzdHJpY3QgaGFuZGxlcy4gT25seSB3b3JrcyBvbiBtYWNoaW5lcyB3aGVyZQoJc2l6ZW9mKFVJTlQpID09IHNpemVvZih2b2lkKikuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbml0aWFsaXplIHByb2Nlc3MgY3JpdGljYWwgc2VjdGlvbiBpbiB0aGUgY29ycmVjdCBwcm9jZXNzIGNvbnRleHQuCgoJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV2FybiBpZiB3cm9uZyBwcm9jZXNzIHRyaWVzIHRvIGVudGVyIGNyaXRpY2FsIHNlY3Rpb24uCglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgUmVpbml0aWFsaXplL1VuaW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbgoJKHN0aWxsIG5vdCBxdWl0ZSBjb3JyZWN0KS4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglkZWJ1Zy5oIG11c3QgYmUgbGFzdCBpbiBsaXN0IG9mIGluY2x1ZGVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZXR1cm4gMzItYml0IG1vZHVsZSBpbiBHZXRNb2R1bGVIYW5kbGUxNigpIGlmIGFwcHJvcHJpYXRlLgoKCSogbXNkb3MvaW50MmYuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCB3aGVuIHN0YXR1cyB3YXMgcmVhZCB3aXRoIGNkLXJvbSB0cmF5IG9wZW4uCgoJKiB3aW5kb3dzL2RyaXZlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgYnVnIGluIG1zZyBjb252ZXJzaW9uLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVByZXZlbnQgY3Jhc2ggd2hlbiBuTWluUmFuZ2UgPiBuTWF4UmFuZ2UuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG1pc3NpbmcgbWFuaWZlc3QgY29uc3RhbnRzIGZvciBRdWV1ZSBTdGF0dXMgZnVuY3Rpb25zIChRU18/Pz8/KS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9lZGl0LmMsIHdpbmRvd3MvbWRpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgV0lOX1JlbGVhc2VXbmRQdHIuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCU1vcmUgYXBwcm9wcmlhdGUgZGVmYXVsdCBzaXplIGZvciBmb250cyB3aXRoIGludmFsaWQgc2l6ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBTZXRDb2x1bW5XaWR0aCBmb3IgTGlzdFZpZXcgY29udHJvbC4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlnOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJQWRkZWQgbmV3IGRvY3VtZW50YXRpb24gZm9yIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCgoJKiBtaXNjL3ZlcnNpb24uYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcHJvdmVkIFZFUlNJT05fR2V0VmVyc2lvbi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFBldGVyIEJvcnRhcyA8cGV0ZXJAaWRvbmV4LnNlPgoJQWRkZWQgU3dlZGlzaCBrZXlib2FyZCBsYXlvdXQuCgoJKiBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9tZXRhZmlsZWRydi9kYy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcHNkcnYvUkVBRE1FLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJR2VuZXJhbCB0aWR5IHVwIG9mIHRoZSBNZXRhRmlsZSBkcml2ZXIgLSBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nCglnb2VzIHRocm91Z2ggdGhlIERDRnVuY3MgdGFibGUuCgoJKiBtaXNjL3Rvb2xoZWxwLmMsIGlmMTYzMi9rZXJuZWwuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBhIHN0dWIgZm9yIEdsb2JhbE1hc3RlckhhbmRsZS4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglNdWNoIG5pY2VyIHdheSB0byBzZWxlY3Qgd2luZSdzIGxvY2F0aW9uLgoJT3B0aW9uIHRvIGRpc2FibGUgY3JlYXRpb24gb2YgZGVidWdnaW5nIG91dHB1dC4KCURlYnVnZ2luZyBvdXRwdXQgaXMgbm93IGNyZWF0ZWQgaW4gZGlyZWN0b3J5IHNjcmlwdCB3YXMgc3RhcnRlZCBpbi4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgcHJvYmxlbSB3aXRoIG1hbmFnZWQgbW9kZSwgd2hlcmUgcG9wdXAgd2luZG93cyB3aXRoIGEgV1NfRExHRlJBTUUKCXN0eWxlIHdlcmUgYXBwZWFyaW5nIHdpdGggYSB0aXRsZSBiYXIuIEFjY29yZGluZyB0byB0aGUgZG9jcyBmb3IKCVdTX0RMR0ZSQU1FIGEgd2luZG93IHdpdGggdGhpcyBzdHlsZSBjYW5ub3QgaGF2ZSBhIHRpdGxlIGJhci4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgRGxsT3ZlcnJpZGVzIGZyb20gd2luZS5pbmkgYXMgZGVmYXVsdHMgYWxzbyBpbgoJbG9hZG9yZGVyLmMgKG1lcmdlZCBpbiBzb21lIE1NIGRsbHMgbGluZXMgZnJvbSBFcmljIFBvZXVjaCkuCgoJKiB3aW5kb3dzL3RpbWVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBib2d1cyBpbmZpbml0ZSBleHBpcmF0aW9uIHRpbWUuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CgktIGNvbnNvbGlkYXRlIGJvdGggY2FzZXMgb2YgIXBlbmRpbmcgaW4gV2FpdE5ldEV2ZW50CgktIHNlbGVjdCgpIHJldHVybnMgLTEgbm90IDAgb24gZXJyb3IgaW4gV2FpdE5ldEV2ZW50CgoJKiBtZW1vcnkvaGVhcC5jLCBpbmNsdWRlL2hlYXAuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIEhlYXBWYWxpZGF0ZSB0aHJlYWRzYWZlLCBhbmQgYWRkZWQgc29tZSBtYWNyb3MgdG8gdHJhY2sgY2FsbGVyRUlQCglhIGxpdHRsZSBiZXR0ZXIuCglBZGRlZCBIRUFQX3hyZWFsbG9jLgoKU2F0IEFwciAyNCAxMjowMjoxNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL2xvYWRvcmRlci5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2VsZmRsbC5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJYXV0b2NvbmYgZml4ZXMgYW5kIGNsZWFudXBzIChjaGVjayBmb3IgZGxvcGVuKCkgaW4gbGliYyB0b28pLgoKCSogb2xlL01ha2VmaWxlLmluLCBvbGUvaGdsb2JhbHN0cmVhbS5jLCBvbGUvb2xlMnN0dWJzLmMsIG9sZS9zdGdfc3RyZWFtLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBDcmVhdGVTdHJlYW1PbkhHTE9CQUwuCgoJKiBvbGUvY29tcG9iai5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTGV0IENvU2V0U3RhdGUoKSBhY2NlcHQgc3RhdGUgPT0gTlVMTC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hZGUgaW50ZXJuYWwgZm9ybWF0IG1vcmUgY29tcGF0aWJsZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMuCgoJKiB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGNlLmMsIGNvbnRyb2xzL2NvbWJvLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IGxvY2tpbmcgd2l0aCBwcm9wZXIgY2FsbHMgdG8gV0lOX1JlbGVhc2VXbmRQdHIuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURvbid0IG1hbGxvYy9mcmVlIGZvciBldmVyeSBtaXhpbmcgb3BlcmF0aW9uLCB1c2UgdGhlIHNhbWUgYnVmZmVyIG92ZXIKCWluc3RlYWQuLi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZWp5QHdwaS5lZHU+CglIRUFERVJfSW5zZXJ0SXRlbUEgYW5kIEhFQURFUl9JbnNlcnRJdGVtVyBub3cgdHJlYXQgbnVsbCBwb2ludGVycyB0bwoJdGV4dCBzdHJpbmdzIGFzIG51bGwgc3RyaW5ncywgYXMgV2luZG93cyBkb2VzLiAgRml4ZXMgd2luZSBjcmFzaCBvbgoJc3RhcnR1cCBvZiBDdXRlRlRQLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVNldCAod2hlbiByZWdpc3RyeSBsb2FkZWQpIGRhdGEgdG8gIlwwIiBhbmQgbGVuZ3RoIHRvIDIgaW4gZW1wdHkKCXN0cmluZyB2YWx1ZSBjYXNlLCBpbiBwbGFjZSBvZiBzZXR0aW5nIGRhdGEgdG8gTlVMTCBhbmQgbGVuZ3RoIHRvIDAsCglhbmQgdGhpcyBpcyB3aXRob3V0IGluaXRpYWxpemluZyBvdXRwdXQgYnVmZmVyIHBhcmFtZXRlciBvZgoJUmVnUXVlcnlWYWx1ZSouCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZGVkIFBhbm9zZSBkZWZpbmVzIGFuZCBFWFRMT0dGT05UW0F8V10uCgpUaHUgQXByIDIyIDE2OjI3OjUzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiAqLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIEFOU0kgY29tcGFiaWxsaXR5LgoKCSogbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21pZGkuYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvY2FyZXQuYywgd2luZG93cy9yZWN0LmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9sc3RyLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBjb250cm9scy91aXRvb2xzLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkIHNvbWUgaW5jbHVkZXMgb2YgMTYgYml0IEFQSS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS9vbGVvYmouaCwgaW5jbHVkZS9zaGxvYmouaCwgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzoKCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCUlDT01pemF0aW9uIG9mIHJlbWFpbmluZyBpbnRlcmZhY2VzLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGJ1ZyB3aXRoIHRvb2x0aXBzIHN0ZWFsaW5nIGZvY3VzIHdoZW5ldmVyIGEgdG9vbHRpcCB3YXMgY3JlYXRlZCwKCXNob3duLCBoaWRkZW4gb3IgdHJhY2tlZC4gVGhlIFNldFdpbmRvd1BvcyBjYWxscyBuZWVkZWQgdG8gaGF2ZSB0aGUKCVNXUF9OT0FDVElWQVRFIGZsYWcgc2V0IGFkZGl0aW9uYWxseS4KCgkqIG9iamVjdHMvY2xpcHBpbmcuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglGaXhlZCBjb29yZGluYXRlcyBjb252ZXJzaW9uIGluIE9mZnNldENsaXBSZ24uCgoJKiBpbmNsdWRlL29iamJhc2UuaDogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJQ2xlYW4gdXAgb2JqYmFzZS5oLiBNYWtlcyB0aGUgU1RETUVUSE9EIHNldCBvZiBtYWNyb3MgYXZhaWxhYmxlIHRvIHRoZSB3aW5lbGliIHVzZXIuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9oYW5kbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlU29ja2V0SGFuZGxlLEdldEhhbmRsZUNvbnRleHQsU2V0SGFuZGxlQ29udGV4dCBzdHVicyBhZGRlZC4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCBzdHVmZiB0byB0aGUgcmlnaHQgcGxhY2UuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4ZWQgc3lzY29sb3JzIGZvciB3aW4gMy4xLgoKCSogZmlsZXMvcHJvZmlsZS5jLCBpZjE2MzIva2VybmVsLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIG1pc3NpbmcgcHJvZmlsZSBLRVJORUwgcm91dGluZXMgKGNhbGwgMzItYml0IHZlcnNpb25zKS4KCgkqIGlmMTYzMi9idWlsdGluLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBCVUlMVElOX0dldEVudHJ5UG9pbnQxNiBkaWRuJ3Qgd29yayBjb3JyZWN0bHkgd2l0aCB0aGUgbmV3CgllbnRyeSB0YWJsZSBsYXlvdXQuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZCBFbmhhbmNlZCBNZXRhRmlsZSByZWNvcmQgc3RydWN0dXJlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgaW5jbHVkZS9yZXNvdXJjZS5oLCByZXNvdXJjZXMvc3lzcmVzX0VuLnJjOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglGaXJzdCBwYXRjaCBpbXBsZW1lbnRpbmcgcHJvcGVydHkgc2hlZXRzLgoKCSogcmVsYXkzMi9nZGkzMi5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEdESTMyLjEwMC0xMDQgYXJlIG9yZGluYWwtb25seSByb3V0aW5lcy4KCUFkZGVkIHN0dWJzIGZvciBzb21lIFdpbjk4IEdESTMyIHJvdXRpbmUuCglSZS1udW1iZXJlZCBhbGwgbmFtZWQgZXhwb3J0cyAobGV4aWNvZ3JhcGhpY2FsbHkpLgoKCSogZ3JhcGhpY3MvZHJpdmVyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHByb3RvdHlwZXMgKHN0dWJzKSBmb3IgR0RJMzIuMTAwLTEwNC4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gbW9yZSBjaGVja3MgZm9yIHZhbGlkIHBpZGwgZm9ybWF0cwoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGNvcnJlY3RlZCBwYXJhbWV0ZXIgY291bnQgZm9yIFNIR2V0U2V0dGluZ3MKCS0gc3R1YiBTSFZhbGlkYXRlVU5DCgoJKiBsb2FkZXIvZWxmLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJI2Vsc2UgYnJhbmNoIGNvbXBpbGUgZml4LgoKCSogaW5jbHVkZS9lbGZkbGwuaCwgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQ2hhbmdlIHdpbmUncyBkbG9wZW4gc2VhcmNoLXBhdGNoIHN0cmF0ZWd5IG5vdCB1c2luZyB0aGUgZW52aXJvbm1lbnQKCWFuZCBhZGRlZCAjaWY6cyB0byBzZXBlcmF0ZSB0aGUgY29kZSBvdXQgaWYgbGliZGwgaXNuJ3QgYXZhaWxibGUuCgoJKiBvbGUvY29tcG9iai5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIGNoZWNrIGZvciBhIE5VTEwgcG9pbnRlciBpbiBDb0ZyZWVVbnVzZWRMaWJyYXJpZXMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtc21laXNzbkBzdHVkLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW5jbHVkZSBkZWJ1Zy5oIGxhc3QgKEVSUigpIG1hY3JvIHByb2JsZW0gb24gU29sYXJpcykuCgoJKiBjb250cm9scy9jb21iby5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHNpemluZyBidWcgaW4gdGhlIGNvbWJvYm94IGNvbnRyb2wuCgoJKiB0b29scy9idWlsZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogSW50ZXJuYWwgTkUgZW50cnkgcG9pbnQgdGFibGVzIHdlcmUgYmFkIChvbmUgaHVnZSBidW5kbGUpLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUluaXRpYWxpemUgdGhlIG91dHB1dCBidWZmZXIgcGFyYW1ldGVycyB0byAwIGluIFJlZ1F1ZXJ5VmFsdWUqCglmdW5jdGlvbnMuIFRoaXMgaXMgaW1wb3J0YW50IHNwZWNpYWxseSB3aGVuIHRoZXJlJ3Mgbm8gZGF0YSB0byByZXR1cm4uCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglEbyBub3QgaW5jcmVtZW50IG1vZHVsZSByZWZDb3VudCBpZiBzZWxmIGlzIGxvYWRlZCBmcm9tIHdpdGhpbgoJRGxsRW50cnlQb2ludCBkdXJpbmcgdGhlIGF0dGFjaCBub3RpZmljYXRpb24uCgpXZWQgQXByIDIxIDE0OjI3OjM3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBwcm90ZWN0IFRSQUNFIGFnYWluc3QgTlVMTC1wdHIKCS0gcmV3cm90ZSBHZXRNZW51SXRlbUlEL0dldFN1Yk1lbnUgdG8gdXNlIE1FTlVfRmluZEl0ZW0gKGhtZW51PTB4ZmZmZiBmaXgpLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHR5cG8uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglSZWltcGxlbWVudGF0aW9uIG9mIEdldE1vZHVsZUhhbmRsZTE2IGFjY29yZGluZyB0byBob3cgd2luOTUgaGFuZGxlcwoJaXQgKHRoYW5rcyB0byBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4pLgoKCSogaWYxNjMyL2J1aWx0aW4uYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUNvcnJlY3RlZCB3cm9uZyByZXR1cm4gdmFsdWVzIG9mIGJ1aWx0LWluIGxvYWRlciB0byB3b3JrIHdpdGggdGhlCglsb2Fkb3JkZXIgc3R1ZmYuCgpNb24gQXByIDE5IDE2OjQ1OjI0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9tZXRhZmlsZWRydi9iaXRibHQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgcmVjb3JkaW5nIG9mIFN0cmV0Y2hESUJpdHMgYW5kIFNldERJQml0c1RvRGV2aWNlIGFuZAoJcGxheWJhY2sgb2YgU2V0RElCaXRzVG9EZXZpY2UuIENsZWFuZWQgdXAgUGxheU1ldGFGaWxlUmVjb3JkIGEgYml0LgoKCSogaW5jbHVkZS9lbGZkbGwuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglSZW1vdmVkIG5vbi1wb3J0YWJsZSBoYWNrcyBhbmQgcmVwbGFjZWQgdGhlbSB3aXRoIG1vcmUgZ2VuZXJhbAoJdmVyc2lvbnMuCgoJKiB3aW5kb3dzL2RjZS5jOiBQYXVsIE1pbGxhciA8cGF1bG1AYXN0cm8uZ2xhLmFjLnVrPgoJQ29kZSBhZGRlZCB0byByZS1ldmFsdWF0ZSBzdGFsZSBEQyBpbmZvcm1hdGlvbiBpbiBEQ0UgY2FjaGUuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglBdHRhY2ggbm90aWZpY2F0aW9ucyBtdXN0IGJlIHNlbmQgYWZ0ZXIgYWxsIHJlY3Vyc2l2ZSBkZXBlbmRlbmNpZXMgYXJlCglsb2FkZWQgYW5kIG5vdCBiZWZvcmUuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHR5cG8uCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHBsYXlpbmcgcG9zaXRpb24gd2hlbiByZXF1aXJlZCBieSB0cmFjayBudW1iZXIuCgoJKiB3aW4zMi9kZXZpY2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBNTURFVkxEUiBEZXZpY2VJb2N0bCg1KSBzdHViIChtc2FjbTMyIGlzIGEgYml0IGhhcHBpZXIgbm93KS4KCgkqIHdpbmUuaW5pOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU5hdGl2ZSB0b29saGVscCB3aWxsIG5vdCB3b3JrIChtaXNzaW5nIEdMT0JBTE1BU1RFUkhBTkRMRSkuCgoJKiBCVUdTLCBSRUFETUU6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXBkYXRlZC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglUZXN0IGZvciBzdGF0aWMgd2FzIHJldmVyc2VkLgoKCSogKi8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglOZXcgZGVidWcgc2NoZW1lIHdpdGggZXhwbGljaXQgZGVidWcgY2hhbm5lbHMgZGVjbGFyYXRpb24uCgpTdW4gQXByIDE4IDE0OjQ0OjI2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IFJlbW92ZWQgZXh0cmEgY2FsbCB0byBUQVNLX1N0YXJ0VGFzay4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglSZW1vdmVkIGNoZWNrIGZvciB1bmlvbiBzZW11bjsgY2xlYW5lZCB1cCBhIGJpdC4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzOgoJQWRkZWQgZW52IHB0ciB0byBuZXdfcHJvY2VzcyByZXF1ZXN0CgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL21kaS5jLCBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVudS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSB1c2UgZm9udHMvZm9udHNpemVzIGdpdmVuIGJ5IFN5c3RlbVBhcmFtZXRlcnNJbmZvCgktIGRyYXdpbmcvYWxpZ25tZW50IGZpeGVzLCB3aW45OCBzdHlsZSBmb3IgbWVudWJhcgoJLSBvd25lcmRyYXduIG1lbnVzIGFyZSB3b3JraW5nIG5vdyBmb3IgdGhlIGZpcnN0IHRpbWUKCS0gY29tcGxldGUgY29uc3RhbnRzIG1hZ2ljIGl0ZW1zCgktIHVzZSByaWdodCBvd25lciBmb3IgcG9wdXBtZW51cwoJLSBuZXc6IEdldC9TZXRNZW51SW5mbwoJLSBpbXBsZW1lbnRlZDogR2V0L1NldE1lbnVDb250ZXh0SGVscElkCgktIG1vcmUgZmxhZ3MgZm9yIEdldC9TZXRNZW51SXRlbUluZm8KCgkqIGZpbGVzL2Rvc19mcy5jOiByb2JlcnQgdyBoYWxsIDxib2JoQG4tY2FudHJlbGwuZGVtb24uY28udWs+CglNYWtlIERPU0ZTX01hdGNoTG9uZyBtYXRjaCBhIHNlYXJjaCBzdHJpbmcgZW5kaW5nIGluICcqLicgdG8gYSB6ZXJvCglleHRlbnNpb24gZmlsZSBuYW1lLCBhbGxvd2luZyBNYXRoY2FkIHRvIHJ1bi4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtZW1vcnkgZnJlZWluZy4KCgkqIHByb2dyYW1zL2NtZGxndHN0L0F0dGljL2NtZGxnci5oLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0Lmg6CglSZW5hbWVkIGNtZGxnci5oIHRvIGNtZGxndHN0LmguCgoJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzogQWRkZWQgdGltZW91dCB0byBjcml0aWNhbCBzZWN0aW9uIHdhaXRpbmcuCgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNZXJnZWQgTGludXgvRnJlZUJTRCByZWVudHJhbnQgZXJybm8gaGFuZGxlciwgYWRkZWQgU29sYXJpcy4KCVByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIFNvbGFyaXMgbG93LWxldmVsIHRocmVhZHMgKExXUHMpIGFkZGVkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVlbnRyYW50IGxpYmMgY2hlY2sgZm9yIFNvbGFyaXMgYWRkZWQuCglGaXhlZCByZWVudHJhbnQgWDExIGNoZWNrIGZvciBGcmVlQlNEIGFuZCBTb2xhcmlzLgoJQWRkZWQgY2hlY2sgZm9yIFNvbGFyaXMgbG93LWxldmVsIHRocmVhZCByb3V0aW5lcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCUZpeGVkIHRvb2xoZWxwIHJvdXRpbmVzIHVzYWdlIGluIEdldE1vZHVsZUZyb21QYXRoIChyZXBvcnRlZCBieSBCZXJ0aG8KCVN0dWx0aWVucykuCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBdXRvbWF0aWMgaW5zdGFsbCBzY3JpcHQsIHdoaWNoIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlcyBhbmQgY29tcGlsZXMKCXdpbmUgYW5kIHJlZ2FwaSwgcnVucyB0b29scy93aW5lY29uZiB0byBnZW5lcmF0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZQoJaWYgb25lIGRvZXMgbm90IGFscmVhZHkgZXhpc3QsIGFuZCB1c2VzIHJlZ2FwaSB0byBpbnN0YWxsIHRoZSBkZWZhdWx0CglyZWdpc3RyeS4KCgkqIGRvY3VtZW50YXRpb24vZ3VpLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQcm9wZXJseSBoYW5kbGluZyBjYXNlcyBsaWtlIGNhbGxpbmcgU2V0V2luZG93UG9zIHdoaWxlIHByb2Nlc3NpbmcKCVdNX05DQ1JFQVRFLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IGJ1Z3MgKHR5cG9zIGZyb20gY3V0ICYgcGFzdGUgJiBpbnZhbGlkIGhlYXAgYmxvY2sKCWZyZWVpbmcpLgoKCSogbWlzYy93c3ByaW50Zi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUJ1ZyBmaXggaW4gR2V0TGVuLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L2dsb2JhbC5jLCBtaXNjL21haW4uYywgbWlzY2VtdS9tYWluLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9idWlsdGluMzIuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJUmVvcmdhbml6YXRpb24gb2YgdGhlIGxvYWRlciB0byBjb3JyZWN0bHkgbG9hZCBhbmQgZnJlZSBsaWJyYXJpZXMgYW5kCglpbXBsZW1lbnRhdGlvbiBvZiBsb2FkIG9yZGVyIHRvIGxvYWQgZGlmZmVyZW50IHR5cGVzIG9mIGxpYnJhcmllcy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW46IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglVcGRhdGVkIGNvbW1hbmRsaW5lIGNoYW5nZXMgb2YgLWRsbCBvcHRpb24gYW5kIHdpbmUuY29uZiBlbnRyaWVzLgoKCSogd2luZS5pbmk6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglVcGRhdGVkIHRoZSBleGFtcGxlIHdpdGggdGhlIG5ldyBjb25maWd1cmF0aW9uIGVudHJpZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQnVnZml4OiBmcmVlIGxvYWRlZCBsaWJyYXJ5IG5vdCBiZWZvcmUgZXhpdC4KCgkqIGluY2x1ZGUvZWxmZGxsLmgsIGluY2x1ZGUvbG9hZG9yZGVyLmgsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL2xvYWRvcmRlci5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCU5ldyBmaWxlcyB0byBzdXBwb3J0IGxvYWQgb3JkZXIgYW5kIHBhcnRpYWwgc3R1YnMgZm9yIGVsZmRsbHMuCgoJKiBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9kaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgZm9yIHVwc2lkZS1kb3duIERJQnMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNoYW5nZWQgJ0dldERpc3BsYXlNb2RlJyB0byByZXR1cm4gdGhlIG1vZGUgcHJldmlvdXNseSBzZXQgYnkKCSdTZXREaXNwbGF5TW9kZScgKGFuZCBub3QgdGhlIGN1cnJlbnQgbW9uaXRvciBtb2RlKS4KCgkqIGluY2x1ZGUvdGFiLmgsIGRsbHMvY29tY3RsMzIvdGFiLmM6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJLUltcGxlbWVudGVkIFRDU19CVVRUT05TLCBUQ1NfRklYRURXSURUSCwgVENNX0dFVElURU1SRUNULAoJVENNX1NFVElURU1TSVpFIGFuZCBUQ01fREVMRVRFSVRFTS4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJTG9va3VwSWNvbklkRnJvbURpcmVjdG9yeUV4MTYoKSBmaXhlZDogaWYgR2V0U3lzdGVtUGFsZXR0ZUVudHJpZXMoKQoJcmV0dXJucyAwLCBpdCBpcyBpbnRlcnByZXRlZCBhcyBpZiBpdCB3ZXJlIDI1Ni4KCgkqIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CglGaXggYW1iaWd1b3VzIGVsc2Ugd2FybmluZy4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglMb2FkaW5nIGNvbG9yIHZhbHVlcyBmcm9tIHRoZSByZWdpc3RyeSBmaXhlZC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IEJyaWFuIEdlcnN0IDxiZ2Vyc3RAcXVhcmsudnBwbHVzLmNvbT4KCS0gUmVtb3ZlZCBhbGwgZmxvYXRpbmcgcG9pbnQgbWF0aC4KCS0gSW1wbGVtZW50ZWQgc3RyZXRjaGluZyBpbiBYIGFuZCBZIGRpcmVjdGlvbnMgZm9yIDgsIDE2LCBhbmQgMzIgYml0IGNvbG9yLgoJLSBJbXBsZW1lbnRlZCBzb3VyY2UgYW5kIGRlc3QgY29sb3Ita2V5aW5nIGZvciA4LCAxNiwgYW5kIDMyIGJpdCBjb2xvci4KCS0gSW1wbGVtZW50ZWQgc29tZSB0cml2aWFsIHJhc3RlciBvcGVyYXRpb25zLgoJLSBNaW5pbWl6ZWQgaW5uZXIgbG9vcHMgZm9yIG1heGltdW0gc3BlZWQuCgktIFVzZSBtZW1jcHkgd2hlbmV2ZXIgcG9zc2libGUuCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVkdWNlZCBmcmFnbWVudCBzaXplLgoJUmVvcmdhbml6ZWQgd29kT3BlbiAod2l0aCBzdXBwb3J0IGZvciBXQVZFX1FVRVJZX0ZPUk1BVCkuCglGaXhlZCBidWZmZXIgdW5kZXJydW4gcmVjb3ZlcnkuCglGaXhlZCBidWcgaW4gd29kUmVzZXQoKS93b2RDbG9zZSgpLgoKCSogb2xlL3N0b3JhZ2UzMi5jOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJU2ltcGxpZnkgcHJvcGVydHlOYW1lQ21wKCkgYW5kIGZpeCBhIHdhcm5pbmcgaW4gdGhlIHdheSBieSByZW1vdmluZwoJQ1JURExMX193Y3N1cHIoKSBjYWxscy4KCgkqIG1pc2MvZGRlbWwuYzogS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCURkZU5hbWVTZXJ2aWNlOiBleHBhbnNpb24gb2Ygc3R1YiB0byB0cmFwIHVudXNlZCBpbnN0YW5jZWlkcyBhdCBzdGFydCBvZiBydW4uCglEZGVHZXRMYXN0RXJyb3I6IGNhdGNoICdub3QgaW5pdGlhbGl6ZWQnIHNpdHVhdGlvbiBhbmQgcmV0dXJuIGNvcnJlY3QgcmVzcG9uc2UuCglEZGVGcmVlU3RyaW5nSGFuZGxlOiBjb21wbGV0ZSB0ZXN0IGZvciBlcnJvciBzZXQgYnkgcHJldmlvdXMgY2FsbCBvZgoJc29tZXRoaW5nIGFuZCBpZ25vcmUgaXQsIGFsc28gcmVsZWFzZSBoYW5kbGUgdGFibGUgbXV0ZXggb24gbm9ybWFsIGV4aXQuCglEZGVRdWVyeVN0cmluZ0EsIERkZVF1ZXJ5U3RyaW5nVywgRGRlQ3JlYXRlU3RyaW5nSGFuZGxlVzogUmVsZWFzZQoJaGFuZGxlIHRhYmxlIG11dGV4IG9uIG5vcm1hbCBleGl0LgoKCSogaW5jbHVkZS93bmV0LmgsIG1pc2MvbmV0d29yay5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRG9uJ3QgYW5ub3VuY2UgdGhlIFdOZXREaXJlY3RvcnlOb3RpZnkgY2FwYWJpbGl0eSBXTmV0R2V0Q29ubmVjdGlvbi4KCUNoYW5nZSB0aGUgcmV0dXJuIHZhbHVlIGZvciBsb2NhbCBmaWxlcy4KCgkqIHdpbmRvd3MvbW91c2UuYzogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUFkZCAid2luLmgiIHRvIGZpeCBpbXBsaWNpdCBmdW5jdGlvbiBkZWNsYXJhdGlvbiB3YXJuaW5ncy4KCgkqIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGluY2x1ZGUvY29uc29sZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbmx5IGRlY2xhcmUgY29uc29sZSAiZHJpdmVyIiBvbmNlLCB1c2UgZXh0ZXJuYWwgcmVmcyBlbHNld2hlcmUuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglXaGVuIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgaXMgcmVtb3ZlZCwgdGhlIGJhY2tncm91bmQgd2FzIG5vdAoJcHJvcGVybHkgcmVwYWludGVkLgoKCSogbG9hZGVyL3NpZ25hbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURpc2FibGUgQUMgYml0IG9uIHJlY2VpdmluZyBhbGlnbm1lbnQgZXhjZXB0aW9ucy4KCgkqIG1pc2MvbWFpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN5c3RlbVBhcmFtZXRlcnNJbmZvIFNQSV9HRVROT05DTElFTlRNRVRSSUNTOiBpbXBsZW1lbnRlZCBtZW51IHBhcnQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCVdoaWxlIGhhbmRsaW5nIHRoZSBXTV9ERUxFVEVXSU5ET1cgY2xpZW50IG1lc3NhZ2UgY2hlY2sgaWYgYSB3aW5kb3cKCWhhcyBiZWVuIGRpc2FibGVkIGFuZCBpZiBzbyBwcmV2ZW50IGFuIFNDX0NMT1NFIG1lc3NhZ2UgZnJvbSBiZWluZwoJc2VudC4KCgkqIHdpbmRvd3MvZGNlLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBhY2Nlc3MgdG8gdGhlIERDRSBsaXN0IHRocmVhZCBzYWZlIGJ5IGVuc3VyaW5nIHdlIGhhdmUgYWNxdWlyZWQKCXRoZSBXaW5kb3dzIGxvY2sgYmVmb3JlIHVzaW5nIGl0LgoKRnJpIEFwciAxNiAxNToxOToxNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVzb3VyY2VzLy5jdnNpZ25vcmU6IENoYW5nZWQgZm9yIHJlbmFtZWQgZmlsZXMKCgkqIG1pc2Mvd2luc29ja19hc3luYy5jLCBtc2Rvcy9kb3Njb25mLmMsIHdpbmRvd3MvdXNlci5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUZpeGVkIHdhcm5pbmdzLgoKCSogb2xlL25scy93YWwubmxzLCBvbGUvb2xlMm5scy5jLCByZXNvdXJjZXMvQXR0aWMvc3lzcmVzX0N6LnJjLCByZXNvdXJjZXMvQXR0aWMvc3lzcmVzX1BvLnJjLCByZXNvdXJjZXMvQXR0aWMvc3lzcmVzX1N3LnJjLCByZXNvdXJjZXMvTWFrZWZpbGUuaW4sIHJlc291cmNlcy9zeXNyZXMuYywgcmVzb3VyY2VzL3N5c3Jlc19Dcy5yYywgcmVzb3VyY2VzL3N5c3Jlc19QdC5yYywgcmVzb3VyY2VzL3N5c3Jlc19Tdi5yYywgcmVzb3VyY2VzL3N5c3Jlc19XYS5yYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbiwgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvd2lubmxzLmgsIG1pc2MvbWFpbi5jOgoJUGFibG8gU2FyYXR4YWdhIDxwYWJsby5zYXJhY2hhZ2FAcGluZy5iZT4KCUFkZGVkIHdhbG9uIGxhbmd1YWdlIHN1cHBvcnQgKEkgYWxzbyBtb3ZlZCBDeiAtPiBDcywgU3cgLT4gU3YsIGFuZCBQbwoJLT4gUHQ7IHRvIGNvbmZvcm0gdG8gc3RhbmRhcmQgbmFtZXMgZm9yIHRob3NlIGxhbmd1YWdlcykuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgcmVsYXkzMi9NYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkIC1mbm8tYnVpbHRpbiB3aGVuIGNvbXBpbGluZyB3aXRoIGdjYyBpbiByZWxheTMyLyBzdWJkaXIuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIHRvb2xzL2J1aWxkLmMsIGlmMTYzMi9idWlsdGluLmM6CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CgktIEltcGxlbWVudGVkIHByb3BlciAoInJlYWwiLCBjb21wcmVzc2VkKSBXaW4xNiBlbnRyeSB0YWJsZXMuCgktIEZpeGVkIE15QWxsb2MgKEFLQSBORV9BbGxvY2F0ZVNlZ21lbnQpLgoJLSBJbXBsZW1lbnRlZCBQYXRjaENvZGVIYW5kbGUxNi4KCgkqIHRvb2xzL0F0dGljL21ha2Vfb3MyLnNoLCB0b29scy9tYWtlX29zMi5jbWQsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgaW5jbHVkZS9zaWdfY29udGV4dC5oOgoJUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCUEgZmV3IHBhdGNoZXMgdG8gaGVscCBXaW5lIHRvIGNvbXBpbGUgb24gT1MvMi4KClRodSBBcHIgMTUgMTY6NDY6NTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L21hcHBpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGluY2x1ZGUvbWV0YWZpbGUuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL21ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUNoYW5nZSAoMzIgYml0KSBITUVUQUZJTEVzIHRvIEdESSBvYmplY3RzIChITUVUQUZJTEUxNnMgcmVtYWluIGFzCglnbG9iYWwgbWVtb3J5IGhhbmRsZXMpLiAgRml4ZWQgZGlzay1iYXNlZCBNZXRhRmlsZXMuICBCZXR0ZXIKCXNlcGFyYXRpb24gYmV0d2VlbiBNZXRhRmlsZSBwbGF5YmFjayBhbmQgdGhlIG1ldGFmaWxlZHJ2LgoKCSogbWlzYy9jcnRkbGwuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglfQ0lwb3cgYXJndW1lbnQgb3JkZXIgd2FzIGNvbmZpcm1lZCB3aXRoIFN0YXJjcmFmdCB2MS4wNS4KCgkqIGRvY3VtZW50YXRpb24va2V5Ym9hcmQ6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2xhcmlmaWVkIGEgZmV3IHBvaW50cy4KCgkqIG1zZG9zL2ludDIxLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglBZGRlZCBJT0NUTCBmdW5jdGlvbiAweDQ0MGQvMHg3Mi4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJVW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbiBwYXJ0aWFsIHN0dWIgaW1wbGVtZW50YXRpb24uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIHByb3RvIGZvciBHZXRFeGl0Q29kZVRocmVhZC4KCgkqIGluY2x1ZGUvZHJpdmVyLmgsIGluY2x1ZGUvd2luZS9rZXlib2FyZDE2Lmg6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJQWRkZWQgbWlzc2luZyB3aW5kZWYuaCBpbmNsdWRlcy4KCgkqIHdpbmRvd3MvaW5wdXQuYywgaW5jbHVkZS93aW51c2VyLmg6CglaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCVJlbGVhc2VDYXB0dXJlKCkgaXMgc3VwcG9zZWQgdG8gcmV0dXJuIGEgQk9PTCB2YWx1ZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsb2FkZXIvc2lnbmFsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZyZWVCU0QgMyBtdWx0aXRocmVhZGluZyBmaW5hbCBmaXguIERvIG5vdCB1c2UgbGliY19yLCBsaWJjIGlzIGp1c3QgYXMKCXJlZW50cmFudCBjb25jZXJuaW5nIGVycm5vLiBSZXZlcnQgdW5uZWVkZWQgRnJlZUJTRCBoYWNrIHRvCglsb2FkZXIvc2lnbmFsLmMgZnJvbSBsYXN0IHBhdGNoLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJaW5kZXggPT0gMyBjb3JyZXNwb25kcyB0byBBbHQtR3IgKyBTaGlmdC4KCgkqIG1pc2MvZGRlbWwuYzogS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCU1vcmUgb2YgRGRlQ3JlYXRlU3RyaW5nSGFuZGxlQSwgRGRlRnJlZVN0cmluZ0hBbmRsZSwgRGRlUXVlcnlTdHJpbmdBCglhbmQgRGRlQ3JlYXRlU3RyaW5nSGFuZGxlVyBhbmQgdGlkeSB1cCBvZiBSZW1vdmVIU1pOb2RlcywgYW5kCglEZGVDcmVhdGVTdHJpbmdIYW5kbGVBLgoKCSogd2luZG93cy94MTFkcnYvbWFpbi5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgdWdseSBkaXNhYmxlZCBjb250cm9scyBhbmQgYmxhY2sgYmFja2dyb3VuZCBpbiBXcml0ZSBhbmQgTG90dXMKCU5vdGVzLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGluY2x1ZGUvYnV0dG9uLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudCB0aGUgYnV0dG9uIHdpdGggYml0bWFwcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZTMyLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIElTdG9yYWdlOjpDb3B5VG8gYW5kIElTdHJlYW06OkNvcHlUby4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBBbHdheXMgcmVsZWFzZSB0aGUgV2luMTZMb2NrIGluIFRBU0tfUmVzY2hlZHVsZS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJU29sdmVkIGEgZGVhZGxvY2sgYmV0d2VlbiBnbG9iYWwgbG9jayBhbmQgd25kIGxvY2sgaW4gZXZlbnQuYy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUeXBvIHRoYXQgYnJva2UgU29sYXJpcyBjb21waWxlIGZpeGVkLgoKCSogY29udHJvbHMvZGVza3RvcC5jOiBGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUFkZCBhIFdJTl9SZWxlYXNlRGVza3RvcCBpbiBERVNLVE9QX0lzU2luZ2xlV2luZG93LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBzY2FuY29kZXMgZm9yIE51bUxvY2sgYW5kIE51bS0vLgoJRml4IE1hcFZpcnR1YWxLZXkoKSAobWFwdHlwZT0yKSB0byByZXR1cm4gcHJvcGVyIGFzY2lpIGNvZGUuCglSZXdvcmtlZCBHZXRLZXlOYW1lVGV4dCgpIGFnYWluLgoKCSogZ3JhcGhpY3MvcHNkcnYvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglMaW1pdCBsYXN0Q2hhciB0byAweGZmIGluIFBTRFJWX0dldENoYXJXaWR0aC4KCgkqIHdpbmRvd3MvdXNlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgV0lOQVBJIGZvciBSZWdpc3RlclN5c3RlbVRocmVhZC4KClN1biBBcHIgMTEgMTg6NDg6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludDEwLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkICJEaXNwbGF5IENvbWJpbmF0aW9uIiBjYWxsLgoKCSogbWlzYy9jb21tLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIGEgY3Jhc2ggZHVlIHRvIGludmFsaWQgT3BlbkNvbW0gcmV0dXJuIHZhbHVlIGZvciBidXN5IGNvbW0gcG9ydC4KCUNsZWFuZWQgdXAvZml4ZWQgc2V2ZXJhbCB0aGluZ3MuCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUVuYWJsZWQgdGhyZWFkIHNhZmVuZXNzIGZvciB3bmQgc3RydWN0dXJlIGNvZGUuCgoJKiBkZWJ1Z2dlci9kYmcueTogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgQ0xJRU5UX0RlYnVnZ2VyUmVxdWVzdCB0byBmcmVlemUvdW5mcmVlemUgdGhyZWFkcy4KCgkqIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbmV3IENMSUVOVF9EZWJ1Z2dlclJlcXVlc3Qgcm91dGluZSwgaW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IKCURFQlVHR0VSX0ZSRUVaRV9BTEwvREVCVUdHRVJfVU5GUkVFWkVfQUxMIHJlcXVlc3RzLgoJUnVuIHdpbmUgc2VydmVyIGluIHRoZSBtYWluIHdpbmUgcHJvY2Vzcy4KCUJ1Z2ZpeDogbmV2ZXIgZnJlZSBpbml0aWFsIHRocmVhZCEKCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglOb24tZnVuY3Rpb25hbCBQUk9DRVNTX1N1c3BlbmQvUmVzdW1lT3RoZXJUaHJlYWRzIHJlbW92ZWQuCgoJKiB3aW5kb3dzL3RpbWVyLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVGVhY2hlZCBUSU1FUl9HZXROZXh0RXhwaXJhdGlvbiB0aGF0IGEgdGltZXIgdGhhdCBoYXMgYWxyZWFkeSBleHBpcmVkCgkoYnV0IG5vdCBwcm9jZXNzZWQgeWV0KSBIQVMgYWxyZWFkeSBleHBpcmVkLi4uCgoJKiB3aW5lZGVmYXVsdC5yZWc6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRGVmYXVsdCB2YWx1ZXMgZm9yIHJlZ2lzdHJ5LgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNhPgoJT3B0aW1pemVkIGNvZGUgZm9yIFNldEltYWdlQml0c19YLCBtYWtpbmcgYml0bWFwIGNyZWF0aW9uIGZhc3Rlci4KCgkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglUaGUgTUVBU1VSRUlURU1TVFJVQ1QgYW5kIERSQVdJVEVNU1RSVUNUIHdlcmUgZmlsbGVkIHdyb25nLgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGxvYWRlci9zaWduYWwuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgktIFN0YXJ0ZWQgbXVsdGl0aHJlYWRpbmcgZm9yIEZyZWVCU0QgKGluY29tcGxldGUsIGJ1dCBzb21lCgkgIGFwcGxpY2F0aW9ucyBub3cgYXQgbGVhc3Qgc3RhcnQgdXAgYWdhaW4pLgoJLSBVc2UgX3RocmVhZF9zeXNfc2lnYWN0aW9uL190aHJlYWRfc3lzX3NpZ2FsdHN0YWNrLgoJLSBDUjIgb24gcGFnZWZhdWx0IGdldHMgcGFzc2VkIGluIHNjX2VyciAoc29tZSBraW5kIG9mIGtsdWRnZSBpbgoJICBGcmVlQlNEIG93bnMgZmF1bHQgaGFuZGxpbmcgd2UgY2FuIHVzZSkKCgkqIGluY2x1ZGUvc2VsZWN0b3JzLmgsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L3NlbGVjdG9yLmM6CglNYWRlIFNFTEVDVE9SX1JlYWxsb2NCbG9jayBwcmVzZXJ2ZSB0aGUgY3VycmVudCBzZWxlY3RvciBhY2Nlc3MgcmlnaHRzCgkocHJvYmxlbSByZXBvcnRlZCBieSBBbmRyZWFzIE1vaHIpLgoKCSogbWlzYy9zeXN0ZW0uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2Ugc2VydmljZXMgdGhyZWFkIGluc3RlYWQgb2YgdGltZXIgc2lnbmFscy4KCgkqIHNlcnZlci90aHJlYWQuYywgc2NoZWR1bGVyL3N5bmNocm8uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgdXNlciBBUENzIHdpdGggTlVMTCAnZnVuYycgKGp1c3Qgd2FrZSB1cCB0aGUgdGhyZWFkKS4KCgkqIGluY2x1ZGUvc2VydmljZXMuaCwgbG9hZGVyL21haW4uYywgc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvc2VydmljZXMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgJ2tlcm5lbCBzZXJ2aWNlcyB0aHJlYWQnLgoKCSogaW5jbHVkZS93aW5zcG9vbC5oLCBtaXNjL3ByaW50ZHJ2LmMsIHJlbGF5MzIvd2luc3Bvb2wuc3BlYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRkZWQgc3R1YiBmb3IgUHJpbnRlclByb3BlcnRpZXMuCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jLCBpbmNsdWRlL250ZGRrLmgsIHJlbGF5MzIvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBOdFRlcm1pbmF0ZVByb2Nlc3MgYW5kIE50RGlzcGxheVN0cmluZy4KCgkqIGxvYWRlci9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUZyZWVMaWJyYXJ5IHBhcnRpYWwgaW1wbGVtZW50YXRpb24uCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgX2Z0b2wgdGFrZSBhcmd1bWVudCBmcm9tIEZQVSBzdGFjay4gU3RhcmNyYWZ0IHYxLjA0ICgqbm90KiBCcm9vZAoJV2Fycykgbm93IHdvcmtzIHBlcmZlY3RseSB3aXRoIFdpbmUncyBjcnRkbGwuIFdyb3RlIGEgdGVzdAoJaW1wbGVtZW50YXRpb24gb2YgX0NJcG93IHRvbywgd2hpY2ggdGhvc2Ugd2hvIGRvIGhhdmUgQnJvb2QgV2FycyBjYW4KCXJlcG9ydCBvbiwgc28gaXQgY2FuIGJlIGltcGxlbWVudGVkIGNvcnJlY3RseS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIGZvciBHZXRLZXlOYW1lVGV4dCBmb3IgbmV3IGtleWJvYXJkIHN0cnVjdHVyZS4KCgkqIGRsbHMvdGFwaTMyL3Bob25lLmM6IEtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CglGaXhlZCB3YXJuaW5nLgoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBSZWFkQ2xhc3NTdGcgcHJvdG90eXBlLgoKCSogbWlzYy93c3ByaW50Zi5jOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJLSBGaXggY29tbWVudHMgYWZ0ZXIgdGhlIGJpZyByZW5hbWluZyAoeHh4eDMyeSAtLT4geHh4eHkpLgoJLSBEZWNsYXJlIHRoZSBXUFJJTlRGX0RBVEEgdW5pb24sIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBMUENWT0lEIGFuZCBXT1JELgoJICBBdm9pZCB1Z2x5IHR5cGUgY2FzdGluZywgYW5kIGZpeCBjb21waWxhdGlvbiB3YXJuaW5ncyBvZiB3c3ByaW50Zi5jCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kZGU6CglLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJU3RhdHVzIGRvY3VtZW50IGZvciBEREUvRGRlbWwuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgZXZlbnQgY2FsbGJhY2sgbWVjaGFuaXNtLgoJSW50cm9kdWN0aW9uIG9mIE1DSSB5aWVsZCBwcm9jcy4KCVVwZGF0ZWQgKHByZXBhcmV8dW5wcmVwYXJlKWhlYWRlciBmdW5jdGlvbnMgKHdhdmUsIG1pZGkpIHRvIGFsbG93Cgljb3JyZWN0IGNhbGxiYWNrIG1lY2hhbmlzbXMuCglNYWRlIG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zIHdvcmtpbmcuCglGaXJzdCB0cnkgYXQgbW1UaHJlYWRYWFggZnVuY3Rpb25zLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCAocHJlcGFyZXx1bnByZXBhcmUpaGVhZGVyIGZ1bmN0aW9ucyB0byBhbGxvdyBjb3JyZWN0IGNhbGxiYWNrCgltZWNoYW5pc21zLgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU21hbGwgZW5oYW5jZW1lbnQuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5ldyBtZXRob2QgZm9yIHN0cnVjdHVyZSBjb252ZXJzaW9uICgxNiA8LT4gMzIpLgoJTW9yZSBNQ0kgc3RydWN0dXJlcyBjb3JyZWN0bHkgbWFwcGVkLgoJSW50cm9kdWN0aW9uIG9mIE1DSSB5aWVsZCBwcm9jIGFuZCBicmVhayBmYWNpbGl0eS4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIChwcmVwYXJlfHVucHJlcGFyZSloZWFkZXIgZnVuY3Rpb25zIHRvIGFsbG93IGNvcnJlY3QgY2FsbGJhY2sKCW1lY2hhbmlzbXMuICBJbXBsZW1lbnRlZCB3YXZlT3V0IHBsYXliYWNrIGFzIGFzeW5jaHJvbm91cy4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0ZWQgaW1wbGVtZW50YXRpb24gb2YgbW1UaHJlYWRYWFggZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgZGVmaW5lcyAoTUlESSwgV0FWRSwgY2FsbGJhY2tzKS4KCVN0cnVjdHVyZXMgZm9yIG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCAocHJlcGFyZXx1bnByZXBhcmUpaGVhZGVyIGZ1bmN0aW9ucyAod2F2ZSwgbWlkaSkgdG8gYWxsb3cKCWNvcnJlY3QgY2FsbGJhY2sgbWVjaGFuaXNtcy4gQWRkZWQgd2luZSBzcGVjaWZpYyBlbnRyeSBmb3IgbW1UaHJlYWRYWFgKCWZ1bmN0aW9ucyB0aHJlYWQgc3RhcnRpbmcgcG9pbnQuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglJbnRyb2R1Y2UgU1RBVFNURzE2IC0gYSAxNiBiaXQgdmFyaWFudCBvZiBTVEFUU1RHLgoKCSogb2xlL3N0b3JhZ2UuYzogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUZpeCBJU3RvcmFnZTE2X2ZuU3RhdCgpIHRvIHVzZSBTVEFUU1RHMTYgKGl0IGlzIGEgMTYgYml0IGludGVyZmFjZSkuCgoJKiBjb250cm9scy9tZW51LmM6IFBhdWwgTWlsbGFyIDxwYXVsbUBhc3Ryby5nbGEuYWMudWs+CglGaXhlZCBtZW51IHR5cGUgc2V0dGluZyBpbiBTZXRNZW51SXRlbUluZm8zMl9jb21tb24oKS4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2VuZCBVU0lHX1BST0NFU1NfQ1JFQVRFIHNpZ25hbC4KCUJ1Z2ZpeDogR2V0UHJvY2Vzc0R3b3JkIG9mZnNldCAtOCBzaG91bGQgcmV0dXJuIHBhcmVudCBwcm9jZXNzIElELgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQWRkZWQgUmVnaXN0ZXJTeXN0ZW1UaHJlYWQgc3R1Yi4KCgkqIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWMsIGluY2x1ZGUvd2luZXJyb3IuaDoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBDb0NyZWF0ZUluc3RhbmNlRXggbWV0aG9kLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBEYXZpZCBHYXkgPGRnYXlAQ1MuQmVya2VsZXkuRURVPgoJRml4ZWQgY3Jhc2ggZHVlIHRvIGEgdmFsdWUgb2YgbmFtZSBsZW5ndGggMCwgdmFsdWUgbGVuZ3RoIDAgYXQgdGhlIGVuZAoJb2YgdGhlIHJlZ2lzdHJ5LgoKCSogd2luZG93cy93aW5wb3MuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hlY2sgaWYgcFRlbXBBY3RpdmVXaW5kb3cgaW4gV0lOUE9TX1NldFdpbmRvd1BvcyBpcyB2YWxpZCBhZnRlciB0aGUKCVFVRVVFX0xvY2suCgoJKiBtdWx0aW1lZGlhL2RwbGF5LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSB1cGRhdGVkIGJlY2F1c2Ugb2YgdGhlIHNwbGl0dGluZyBvZiBpbnRlcmZhY2UvaW1wbGVtZW50YXRpb24KCS0gdXBkYXRlZCB0byB1c2UgSUNPTV9USElTCgoJKiBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBvbGUvZ3VpZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIHVzZSB0aGUgbGF0ZXN0IElDT00gbWFjcm9zCgktIG1vdmVkIHRoZSBJRGlyZWN0UGxheUxvYmJ5IGludGVyZmFjZSB0byBkcGxvYmJ5LmgKCS0gcmVtb3ZlZCBhbGwgdGhlIGltcGxlbWVudGF0aW9uIGFzcGVjdHMgc2luY2UgdGhleSBuZWVkIHRvIGJlCglzZXBhcmF0ZQoKCSogaW5jbHVkZS9kc291bmQuaCwgbXVsdGltZWRpYS9kc291bmQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJSUNPTWlzYXRpb24gb2YgdGhlIERpcmVjdFNvdW5kIEFQSS4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gcmVvcmdhbmlzZWQgaWNvbiBleHRyYWNpbmcgZnJvbSBmaWxlcwoJLSBtYWRlIGV4dHJhY3RpbmcgZnJvbSBuZSBhbmQgaWNvIGZpbGVzIHdvcmtpbmcKCS0gSVBlcnNpc3RGaWxlIGludGVyZmFjZSBmb3IgSUV4dHJhY3RJY29uCgoJKiBtaXNjL3NoZWxsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgYnVmZmVyIG92ZXJydW4uCgoJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgb2JqZWN0cy9jdXJzb3JpY29uLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoYW5nZWQgcmVzc291cmNlIGRpciBzdHJ1Y3R1cmVzLgoJQWRhcHRlZCBGaW5kQmVzdEljY29uL0ZpbmRCZXN0Q3Vyc29yLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxvYWRpbmcgdGhlIGNvbG9yIHNjaGVtYSBmb3IgcmVnaXN0cnkuCgpTYXQgQXByIDEwIDE2OjU4OjU1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy9BdHRpYy93aW5zb2NrX2Rucy5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3dpbnNvY2suYywgbWlzYy93aW5zb2NrX2FzeW5jLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlaW1wbGVtZW50ZWQgd2luc29jayBhc3luY2hyb25vdXMgRE5TIHNlcnZpY2VzLiBObyBsb25nZXIgdXNlIGEKCWZvcmsoKWVkIHByb2Nlc3MsIGJ1dCBlaXRoZXIgYSBzZXJ2aWNlIHRocmVhZCBvciBpbmxpbmUgYmxvY2tpbmcgY2FsbHMKCWZvciBub24tdGhyZWFkaW5nIGFyY2hpdGVjdHVyZXMuIChNYWtlcyBGcmVlIEFnZW50MTYgd29yayBhZ2Fpbi4pCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9BdHRpYy9jbWRsZ3IuaCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOgoJPGV3aWxsQG5jYWwudmVyaW8uY29tPgoJLSBjb2xvciBhbmQgZm9udCBkaWFsb2dzIG5vdyBhY3R1YWxseSBkbyBzb21ldGhpbmcgaW50ZXJlc3RpbmcsCgkgIGFuZCBmb3JjZSBhIHJlZHJhdyB3aGVuIHN1Y2Nlc3NmdWwuICBCYWNrZ3JvdW5kIGNvbG9yIGlzIGFkanVzdGFibGUuCgkgIFRleHQgY29sb3IgaXMgYWxzbyBhZGp1c3RhYmxlLCBidXQgdGhlIHVzZXIgaGFzIHRvIHNldCB0aGUgQ0ZfRUZGRUNUUwoJICBmbGFnIGZpcnN0LgoJLSB0ZXh0IGlzIG91dHB1dCBsZWZ0LXJpZ2h0IGNlbnRlcmVkLCBiYXNlbGluZSwgYXQgdGhlIG1pZGRsZQoJICBvZiB0aGUgd2luZG93LCBhbmQgbW92ZXMgd2l0aCB0aGUgd2luZG93LiAgVGV4dCBmb250IGlzIGFkanVzdGFibGUuCgktIFN1Y2Nlc3MgYW5kIGZhaWx1cmUgTWVzc2FnZUJveCBjYWxscyBmb3IgQ29sb3IsIEZvbnQsIE9wZW4sCgkgIGFuZCBTYXZlIGhhdmUgYmVlbiByZW1vdmVkIG9yIHN1cHByZXNzZWQuICBUaGV5IGFubm95ZWQgbWUgYWZ0ZXIKCSAgYXdoaWxlLCBhbmQgSSBzdXNwZWN0IHRoZXkgYW5ub3llZCBvdGhlcnMsIHRvby4gIFVzZSBteSB0b29sISA6LSkKCS0gY21kbGd0c3Qgbm93IGhhcyB0aGUgZnVsbCBwYXRobmFtZSBpbiB0aGUgdXBwZXIgbGVmdCBjb3JuZXI7IHdoaWNoIG1heQoJICBhc3Npc3QgaW4gZGVidWdnaW5nIGNlcnRhaW4gcHJvYmxlbXMgLS0gb3IgaXQgbWF5IG5vdC4gOi0pCgktIHVzYWdlIGRpYWxvZyBhZGRlZAoKCSogb2xlL29sZTJubHMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb3JyZWN0ZWQgZGVidWcgb3V0cHV0LgoKCSogd2luZG93cy9kcml2ZXIuYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglCZXR0ZXIgZXJyb3IgaGFuZGxpbmcgOyBhIGZldyBidWcgZml4ZXMgOyBub3cgT3BlbkRyaXZlcjE2IGNhbiBsb2FkIDMyCgliaXQgZHJpdmVycy4KCUFkZGVkIHN0dWIgZm9yIEdldERyaXZlckZsYWdzLgoKCSogd2luZG93cy91c2VyLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4KCVN0dWJzIGZvciBDbG9zZURlc2t0b3AgYW5kIENsb3NlV2luZG93U3RhdGlvbi4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUdldE1vZHVsZUZyb21QYXRoIG5vdyBjaGVja3MgZm9yIGxvYWRlZCBtb2R1bGVzIHZpYSBmaWxlbmFtZXMgd2hpY2gKCXdlcmUgc3BlY2lmaWVkIHdpdGhvdXQgYSBwYXRoLgoKCSogbWlzYy9yZWdpc3RyeS5jLCBpbmNsdWRlL3dpbnJlZy5oOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgSEtVIGtleSBzYXZpbmcgYW5kIGxvYWRpbmcuIEFkZCBuZXcgc3VwcG9ydGVkIGRhdGEKCXR5cGUgaW4gZGVidWdfcHJpbnRfdmFsdWUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL2RvY29iai5oLCBvbGUvZ3VpZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgaW50ZXJmYWNlcyBmb3IgSU9sZUNvbW1hbmRUYXJnZXQsIElEcm9wVGFyZ2V0LCBJVmlld09iamVjdC4KCVNtYWxsIGNoYW5nZSBob3cgdG8gZ2V0IGljb25zIGZvciBsaXN0dmlldy4KCgkqIGluY2x1ZGUvc2hsb2JqLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJTExvYWRGcm9tU3RyaW5nIGFuZCBTSEdldFNldHRpbmdzIGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNIR2V0U2V0dGluZ3MgaW1wbGVtZW50ZWQuCglFeGl0V2luZG93c0RpYWxvZygpIHNpbXVsYXRlZCBieSBNZXNzYWdlYm94LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJTExvYWRGcm9tU3RyaW5nIGltcGxlbWVudGVkLgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L3BhbGV0dGUuYzoKCVJpY2hhcmQgTW9ydGltZXIgPHJlbWl0cm9tQG15LWRlamFuZXdzLmNvbT4KCUFkZGVkIG1pc3NpbmcgKklzRGFyayBlbnRyaWVzIGludG8gUEFMRVRURV9Ecml2ZXIgaW5zdGFuY2UKCWluaXRpYWxpc2F0aW9uLgoKCSogd2luZG93cy94MTFkcnYvbW91c2UuYzogQnJpYW4gR2Vyc3QgPGJnZXJzdEBxdWFyay52cHBsdXMuY29tPgoJRml4ZWQgWDExRFJWX01PVVNFX1dhcnBQb2ludGVyIGluaXRpYWwgdmFsdWUuCgoJKiBvYmplY3RzL2JpdG1hcC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJRW5zdXJlIHRoYXQgdGhlIGJpdG1hcCBpcyBwcm9wZXJseSBpbml0aWFsaXplZCB3aGVuIGNyZWF0ZWQgd2l0aCB0aGUKCUxSX0NSRUFURURJQlNFQ1RJT04gZmxhZy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIG1lc3NhZ2luZyBwcm9ibGVtIG9mIHRoZSBlZGl0IGJveCBmb3Igbm9kZSBsYWJlbCBlZGl0aW9uLgoJU3Vic3RpdHV0ZWQgV01fUEFJTlQgZm9yIEludmFsaWRhdGVSZWN0LgoJU29tZSBncmFwaGljYWwgZml4ZXMuCgoJKiBtaXNjL21haW4uYzogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQ2hlY2sgZm9yIGRyaXZlcnM9PU5VTEwgYmVmb3JlIHRyeWluZyB0byBkZWxldGUgdGhlbSBhdCBleGl0LiAgVGhpcwoJY291bGQgaGFwcGVuIGlmIHRoZSBlbXVsYXRvciBpbml0aWFsaXphdGlvbiBmYWlsZWQgZm9yIHNvbWUgcmVhc29uIGFuZAoJdGhlIGRyaXZlcnMgaGFkbid0IGJlZW4gaW5pdGlhbGl6ZWQgeWV0LgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jLCBtaXNjZW11L21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBJbml0QXBwMTYgKHVzaW5nIENhbGxvdXQpIGZvciBpbml0aWFsIHByb2Nlc3MuCgoJKiBtaXNjZW11L2luc3RyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2xlYXIgaW52YWxpZCBzZWxlY3RvcnMgYWxzbyBpbiBDYWxsVG8xNiByZWxheSBjb2RlLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYzoKCUpvc2UgTWFyY29zIEzzcGV6IENhcmF2YWNhIDxqb3NlLmxvcGV6QHVwY25ldC51cGMuZXM+CglSZXZpc2VkIFNwYW5pc2ggcmVzb3VyY2VzLgoKCSogd2luZG93cy9tZGkuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXhlZCB3aW5kb3cgbG9ja2luZyBidWcgaW4gQ2FsY0NoaWxkU2Nyb2xsLgoKCSogbXVsdGltZWRpYS90aW1lLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgZmFrZSBtdWx0aW1lZGlhIHRpbWVycy4gR3JpbSBGYW5kYW5nbyBpcyBub3cgYWJsZSB0byBzdGFydCB1cAoJd2hlbiB1bmRlciBmYXZvcmFibGUgY29uZGl0aW9ucy4gVGhlIHByZXZpZXcgbW92aWUgb24gdGhlIEJyb29kIFdhcnMKCWRpc2Mgbm93IHBsYXlzLCB0b28uCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQnVnZml4IEVudW1QcmludGVyc0E6IGxwYlByaW50ZXJzPU5VTEwgb3IgY2JCdWY9MCB3b3VsZCBjcmFzaCBXaW5lLAoJaW5zdGVhZCBvZiByZXR1cm5pbmcgdGhlIHJpZ2h0IGJ1ZmZlcnNpemUuCgpUdWUgQXByICA2IDA3OjE0OjA5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogZ2FsYmVydGUgPGdhbGJlcnRlQG5lby5yci5jb20+CglGaXhlZCBTZWFyY2hQYXRoQSByZXR1cm4gdmFsdWUuCgoJKiBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBjbGVhbi11cCBvZiB0ZXh0dXJlICdsb2FkaW5nJwoJLSBhZGRlZCBTZXRDb2xvcktleSBjYWxsYmFjayBmb3IgYWxyZWFkeSBsb2FkZWQgdGV4dHVyZXMKCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIGEgcHJvYmxlbSBwb2ludGVkIG91dCBieSBLZXZpbiBIb2xicm9vay4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+Cgljb21tY3RybC5oIG11c3QgaW5jbHVkZSBwcnNodC5oLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglXYXJuaW5nIGZpeC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIGEgbmV3IGltcGxlbWVudGF0aW9uIG9mIHRoZSBJQ09NIG1hY3JvcyB0aGF0IHVzZSBNaWNyb3NvZnQgc3R5bGUKCXZpcnR1YWwgbWV0aG9kcyB0byBpbXBsZW1lbnQgdGhlIENPTSBpbnRlcmZhY2VzIGluIEMrKy4KCgkqIG1pc2MvZGRlbWwuYzogS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCUNvcnJlY3Rpb24gb2YgTXV0ZXggaGFuZGxpbmcgaW4gRGRlSW5pdGlhbGl6ZVcgZm9yIGNhc2VzIG90aGVyIHRoYW4KCTFzdCBjYWxsLiBBZGRpdGlvbiBvZiBpbnN0YW5jZSBoYW5kbGluZyB0byBEZGVDcmVhdGVTdHJpbmdIYW5kbGVBLAoJRGRlQ3JlYXRlU3RyaW5nSGFuZGxlVywgUmVtb3ZlSFNaTm9kZXMsIEZyZWVBbmRSZW1vdmVIU1pOb2Rlcy4gIDFzdAoJY3V0IGltcGxlbWVudGF0aW9uIG9mIERkZVVuaXRpYWxpemUsIG1vdmUgb2YgaW50ZXJuYWwgc3RydWN0dXJlIGRlZnMKCWluIGZyb20gZGRlbWwuaC4gUmVtb3ZlZCBub24tQU5TSSBjb21tZW50LgoKCSogaW5jbHVkZS9kZGVtbC5oOiBLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJTW92ZWQgaW50ZXJuYWwgc3RydWN0dXJlcyB0byBkZGVtbC5jLCBhbHNvIHJlbW92ZWQgbm9uLUFOU0kgY29tbWVudHMsCglhbmQgYWRkZWQgc3BlYyBmb3IgRGRlUXVlcnlDb25mSW5mbyBhbmQgRGRlUXVlcnlDb252SW5mbzE2LgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgbWVtb3J5IGxlYWtzIGluIG1peGVyT3BlbjE2L21peGVyQ2xvc2UsCgltaWRpT3V0T3BlbjE2L21pZGlPdXRDbG9zZTE2LCB3YXZlSW5PcGVuMTYvd2F2ZUluQ2xvc2UxNiwKCW1pZGlJbk9wZW4xNi9taWRpSW5DbG9zZTE2LgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSBTYWNhcm55IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUFkZGVkIHNhbml0eSBjaGVjayBmb3Igd2hpdGVzcGFjZSBpbiBmaWxlIG5hbWVzLCB2YXJpb3VzIG90aGVyIGZpeHVwcy4KClN1biBBcHIgIDQgMTI6NDg6MjEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVdNX01PVVNFTU9WRSBpbXBsZW1lbnRhdGlvbiBidWcgZml4LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUpvc+kgTWFyY29zIEzzcGV6IDxqb3NlLmxvcGV6QHVwY25ldC51cGMuZXM+CglBZGRlZCBTcGFuaXNoIGtleWJvYXJkIGxheW91dC4KCgkqIG1pc2MvY29tbS5jOiBMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglGaXhlZCB0aGUgbW9kZW0gY29udHJvbCBwYXJ0IG9mIEVzY2FwZUNvbW1GdW5jdGlvbjE2LgoKCSogY29udHJvbHMvY29tYm8uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIGdvdG8uCgoJKiBvbGUvb2xlMm5scy5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2lubmxzLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVudW1DYWxlbmRhckluZm9BIHN0dWIuCgpTYXQgQXByICAzIDE2OjI3OjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVN1c3BlbmQgdGhlIHdpbmRvdyBsb2NrcyBiZWZvcmUgRGVmS2V5YkV2ZW50UHJvYyBhbmQKCURlZk1vdXNlRXZlbnRQcm9jLgoKCSogaW5jbHVkZS93bmFzcGkzMi5oLCBwcm9ncmFtcy92aWV3L2dsb2JhbHMuaCwgaW5jbHVkZS9hc3BpLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS93aW5hc3BpLmgsIGluY2x1ZGUvd2luaW9jdGwuaCwgaW5jbHVkZS93aW5udC5oOgoJSm9lcmcgTWF5ZXIgPGptYXllckB0ZWxlc3VuMi50ZWxlbWF0aW9uLmRlPgoJTW9yZSAjcHJhZ21hIGZpeGVzIChpZGVhIE92ZSBLYWF2ZW4sIG1pc3Rha2VzIGFyZSBtaW5lKS4KCgkqIHdpbmRvd3Mvd2luLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHNlbmRpbmcgYXRvbXMgaW4gKChDUkVBVEVTVFJVQ1QqKWxQYXJhbSktPmxwc3pOYW1lIG9mCglXTV9DUkVBVEUgbWVzc2FnZXMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBTZXRMYXN0RXJyb3IoKXMgaW4gR2V0UHJvY0FkZHJlc3MoKSBhbmQgTG9hZExpYnJhcnkoKS4KCgkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6CglDaHJpc3RpYW4gU2NobGFpbGUgPHVwOW5AcnoudW5pLWthcmxzcnVoZS5kZT4KCUltcGxlbWVudGVkIG1ha2VwYXRoLCByYW5kKCkgcmV0dXJucyBjb3JyZWN0IHJhbmdlLCBmaXhlZCBmcHV0Yy4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIG1zZG9zL2ludDIxLmM6CglNYXNrIG9mZiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGVzIGluIF9sY3JlYXQgKGJ1ZyByZXBvcnRlZCBieSBBbmRyZWFzIE1vaHIpLgoJTW92ZWQgX2xjcmVhdDE2X3VuaXEgdG8gaW50MjEuYwoKCSogbGlidGVzdC9oZWxsbzMuYywgbGlidGVzdC9oZWxsbzNyZXMucmMsIGxpYnRlc3QvaGVsbG80LmMsIGxpYnRlc3QvbmV3LmMsIGxpYnRlc3Qvcm9sZXguYywgbGlidGVzdC92YXJ0ZXN0LmMsIGxpYnRlc3Qvdm9saW5mby5jOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUNhc3RzIHRvIChTRUdQVFIpIHJlbW92ZWQuIFRoZXkgZGlkIG5vdGhpbmcgYW55d2F5LgoJSW5jbHVkZXMgYWRkZWQgb3IgcmVtb3ZlZCB3aGVyZSBuZWNlc3NhcnkuCglXaW4xNiBmdW5jdGlvbnMgcmVwbGFjZWQgd2l0aCB0aGVpciBXaW4zMiBjb3VudGVycGFydHMuIENvbW1lbnRzIGFkZGVkCgl3aGVyZSBpdCB3YXMgaW1wb3NzaWJsZS4KCUNBTExCQUNLIGFkZGVkIHdoZXJlIG5lY2Vzc2FyeS4gU29tZSBkZWNsYXJhdGlvbnMgZml4ZWQuCglDb25zdHJ1Y3RzIGxpa2UgIiNpZiBXSU5ET1dTIiBjb3JyZWN0ZWQuIFVzaW5nICIjaWZkZWYgX191bml4X18iIGluc3RlYWQuCglEbGdQcm9jIGluIGhlbGxvMyB1c2VzIEVuZERpYWxvZygpIGluc3RlYWQgb2YgRGVzdHJveVdpbmRvdygpLgoJTGlzdGJveCBlbmFibGVkIGluIGhlbGxvMy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCBGcmVuY2gga2V5Ym9hcmQuCgoJKiBsaWJ0ZXN0L2hlbGxvLmM6IEFsZXggS29yb2JrYSA8YWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdT4KCUZhbmNpZXIgdmVyc2lvbiBvZiBoZWxsby5jIGNvdXJ0ZXN5IG9mIEh1dyBEYXZpZXMuCgoJKiBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIGNvbXBpbGF0aW9uIG9mIHRoZSBDb250cm9sIHBhbmVsLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CgknUmVhbGlnbmVkJyB0aGUgbGF5b3V0IHRhYmxlIGEgYml0LiBBcHBsaWVkIHRoZSBub24tbGF0aW4tMSBzdHVmZiBhbmQKCXRoZSBkZWFkIGtleSBtYXBwaW5nIHN0dWZmIHRvIHRoZSBhY3R1YWwgbWFwcGluZyBjb2RlIHRvby4gIFByZXR0aWVkCgl1cCB0aGUgZml4bWUgbWVzc2FnZS4gQWRkZWQgYSBjaGVjayB3aGVyZSBpZiB0aGUga2V5cyBvZiB0d28gbGF5b3V0cwoJbWF0Y2ggZXhhY3RseSwgdGhlIG9uZSB3aXRoIHRoZSBiZXN0LW1hdGNoaW5nIGtleWNvZGUgb3JkZXIgaXMgY2hvc2VuLAoJc28gdGhhdCB0aGUgUVdFUlRZIGFuZCBEdm9yYWsgbGF5b3V0cyBjYW4gYmUgZGlzdGluZ3Vpc2hlZC4KCgkqIHdpbjMyL2RldmljZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIChlbXB0eSkgc3R1YiBmb3IgT3BlblZ4REhhbmRsZS4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCW1taW9PcGVuKCkgbm93IGhhbmRsZXMgY29ycmVjdGx5IE1NSU9fUEFSU0UgZmxhZy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUJhY2tncm91bmQgY29sb3IgZml4IHdoZW4gZGlzYWJsZWQgb3IgcmVhZCBvbmx5LgoKCSogd2luZG93cy93aW4uYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJVHJhbnNmZXJlZCB0aGUgd2luZG93IHN0cnVjdCBtZW1vcnkgcmVsZWFzZSBmcm9tIFdJTl9EZXN0cm95V2luZG93IHRvCglXSU5fUmVsZWFzZVduZFB0ci4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCURMR0lURU1URU1QTEFURSBzdHJ1Y3R1cmUgaGFkIG9uZSB0b28gbWFueSBtZW1iZXIuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQcmV2ZW50IGNyYXNoIGluIGRlYnVnZ2VyLgoKRnJpIEFwciAgMiAxMDozNzo0MiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jLCBpbmNsdWRlL2NvbWJvLmg6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgV2luOTUgbG9vayBhbmQgZmVlbC4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVdyb3RlIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlIFdNX1BSSU5UIG1lc3NhZ2UuCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywgbWlzYy9jYWxsYmFjay5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJU3VzcGVuZCBhbGwgd2luZG93cyBsb2NrcyBiZWZvcmUgdGhlIGNvbnRyb2wgaXMgcGFzc2VkIHRvIHRoZQoJYXBwbGljYXRpb24uCglBbHNvIGZpeGVkIHNvbWUgYnVncyBpbiBkY2UuYwoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglKb2VyZyBNYXllciA8am1heWVyQHRlbGVzdW4yLnRlbGVtYXRpb24uZGU+CgktIFJlbW92ZSBzb21lIG9sZCByYyBtYWtlIHN0dWZmCgktICJtYWtlIGNsZWFuIiBvbWl0dGVkIHNvbWUgaW5jbHVkZSBzdWJkaXJzCgoJKiByZWxheTMyL2RkcmF3LnNwZWMsIGdyYXBoaWNzL2RkcmF3LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIERsbENsYXNzRmFjdG9yeSB0byBEaXJlY3REcmF3LgoKVGh1IEFwciAgMSAxMjowNTo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTcGxpdCBvZmYga2V5c3ltL2RlYWRjaGFyIC0+IGNoYXIgbWFwcGluZywgdXNlIGl0IGluIERldGVjdExheW91dC4KCgkqIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbnRyb2xzL21lbnUuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5wb3MuaCwgaW5jbHVkZS94MTFkcnYuaDoKCUFsZXggS29yb2JrYSA8YWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdT4KCUZpeGVzIGZvciBpZ25vcmVkIFdWUl9bVkhdUkVEUkFXIGZsYWdzLCBtYWRlIG1pbmltaXphdGlvbiBpbiBtYW5hZ2VkCgltb2RlIGdvIHRocm91Z2ggd2luZG93IG1hbmFnZXIsIHNtYWxsIGJ1Z2ZpeGVzIGZvciBtZW51IGFuZCB3aW5kb3cKCWNvZGUsIGV4dGVuZGVkIGNsaXBib2FyZCBkcml2ZXIgbW9kZWwgdG8gaGFuZGxlIGZvcm1hdHMgb3RoZXIgdGhhbgoJdGV4dC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUVDX1VTRUZPTlRJTkZPIG1lYW5zIGVzLT5jaGFyX3dpZHRoLzMsIG5vdCBlcy0+Y2hhcl93aWR0aC4gVGhpcyBpcwoJdHJ1ZSBmb3IgbXVsdGlsaW5lIGNvbnRyb2xzIHRvbywgYXMgbXkgdGVzdHMgc2hvdy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGljb24gYW5kIHNtYWxsaWNvbiB2aWV3cy4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIERPU1ZNX0dldFRpbWVyIHN1cnZpdmUgRUFHQUlOIGVycm9ycy4uLgoKCSogaW5jbHVkZS9jb21tLmgsIG1pc2MvY29tbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIGFzeW5jIGNvbW0gYnVmZmVycyAoYnV0IHByb2JhYmx5IG5vdCBidWdmcmVlKSwgYW5kIGFsb25nCgl3aXRoIHRoZW0sIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFzeW5jIGV2ZW50IG5vdGlmaWNhdGlvbnMsIG1vbmcgdGhlbQoJRW5hYmxlQ29tbU5vdGlmaWNhdGlvbi4gUmVtb3ZlZCBhIHByZXZpb3VzIGhhY2sgdGhhdCB3YXMgZmFraW5nIHRoZQoJYnVmZmVycywgc2luY2Ugd2Ugbm93IGhhdmUgcmVhbCBidWZmZXJzLi4uCgoJKiBpbmNsdWRlL3dpbmUvd2ludXNlcjE2Lmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgQ05fKiBmbGFncyB1c2VkIGluIFdNX0NPTU1OT1RJRlkuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUltcGxlbWVudCB0aGUgRW51bUF0dGFjaGVkU3VyZmFjZSBtZXRob2QuCgoJKiBvbGUvb2xlMi5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIGZvciBPbGVDcmVhdGVNZW51RGVzY3JpcHRvciwgT2xlU2V0TWVudURlc2NyaXB0b3IgYW5kCglPbGVEZXN0cm95TWVudURlc2NyaXB0b3IgYWxvbmcgd2l0aCBhIGJ1bmNoIG9mIGludGVybmFsbHkgdXNlZCBtZXRob2RzCglhbmQgZGF0YSBzdHJ1Y3R1cmVzLgoKCSogb2xlL2d1aWQuYywgaW5jbHVkZS9pbml0Z3VpZC5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIGluY2x1ZGUvd3R5cGVzLmg6CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+Cglpbml0Z3VpZC5oIHNob3VsZCBvbmx5IGNvbnRhaW4gdGhlIG1hY3JvIHRoYXQgZGVmaW5lcyB0aGUgZ3VpZHMuCglBZGRlZCBvbGVjdGwuaCB0byBndWlkLmMgc28gc29tZSBuZWVkZWQgZ3VpZHMgZ2V0IGRlZmluZWQuCglNYWRlIEdVSURfTlVMTCBhbiBhY3R1YWwgZ3VpZCBzZXQgdG8gMCwwLDAuLi4KCgkqIGlmMTYzMi9nZGkuc3BlYywgb2JqZWN0cy9nZGlvYmouYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgR2RpU2lnbmFsUHJvYygpIHN0dWIuCgoJKiBtaXNjL2NhbGxiYWNrLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jLCBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS91c2VyLmgsIGxvYWRlci9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIFVTRVIzMi5Vc2VyU2lnbmFsUHJvYyB0byBDYWxsb3V0IHRhYmxlLgoJSW1wbGVtZW50ZWQgYnVpbHQtaW4gVXNlclNpZ25hbFByb2MoKS4KCURvbid0IGFubm91bmNlIFdpbjMuMS1zdHlsZSBVU0VSIGhhbmRsZXIgYW55IG1vcmUuCgoJKiB3aW4zMi9vcmRpbmFscy5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIFBST0NFU1NfQ2FsbFVzZXJTaWduYWxQcm9jKCkuCglTZW5kIFVTRVIgc2lnbmFscyBhdCB2YXJpb3VzIGFwcHJvcHJpYXRlIHBsYWNlcy4KCU1vdmVkIFtHU11ldFByb2Nlc3NEd29yZCgpIHRvIHNjaGVkdWxlci9wcm9jZXNzLmMuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBpbmNsdWRlL3NobG9iai5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWxsIDE5IEZpbGVNZW51XyogZnVuY3Rpb25zLCBzb21lIGFzIHN0dWJzLCBzb21lIGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTSENMU0lERnJvbVN0cmluZywgU3RyVG9PbGVTdHIgaW1wbGVtZW50ZWQuCglSTEJ1aWxkTGlzdE9mUGF0aHMgc3R1Yi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglEbGxHZXRWZXJzaW9uIChub3QgeWV0IGV4cG9ydGVkKS4KCVNtYWxsIGNoYW5nZSB0byBTSEFwcEJhck1lc3NhZ2UuCgoJKiByZWxheTMyL3dpbm1tLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgRHJ2Q2xvc2UsIERydkRlZkRyaXZlclByb2MsIERydk9wZW4sIERydk9wZW5BLCBEcnZTZW5kTWVzc2FnZS4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIFN0YWNrRW50ZXIoKSBhbmQgU3RhY2tMZWF2ZSgpIHN0dWJzCgoJKiBtdWx0aW1lZGlhL21jaS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0aW5nIGltcGxlbWVudGF0aW9uIG9mIE1DSSBjcmVhdG9yIHRhc2tzCglGaXhlZCBidWcgaW4gTUNJX09QRU4gaGFuZGxpbmcgKHRoYW5rcyB0byBBZGFtIGZvciByZXBvcnRpbmcgdGhpcyBvbmUpCglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgbW1UYXNrQ3JlYXRlMTYKCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGNyZWF0b3IgdGFzayB0byBNQ0kgc3RydWN0LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCVJlcGxhY2VkIDB4QzAwMCBieSBzeW1ib2xpYyBjb25zdGFudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBzbWFsbCA9PSwgIT0gbWl4dXAuCgoJKiB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFdNX05PVElGWUZPUk1BVC4KCgkqIGxvYWRlci9lbGYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAbXVkLmRlPgoJImZvbyIgd2FzIG5vdCB0cmFuc2xhdGVkIHRvICJmb28uc28iIGluIGVsZiBsb2FkZXIuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JpdG1hcC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMb2FkQml0bWFwMTYoKS9Mb2FkSW1hZ2UxNigpIGNhbGxpbmcgc2VxdWVuY2Ugc2ltcGxpZmllZC4KCgkqIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1pc2MvY2FsbGJhY2suYywgaWYxNjMyL3dwcm9jcy5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBOVUxMIE5FIHJlc291cmNlIGhhbmRsZXI7IGNhbGwgdGhlIGRlZmF1bHQgaGFuZGxlciBkaXJlY3RseS4KCVJlbW92ZWQgV1BST0NTIC8gQ2FsbGJhY2tzIHN1cHBvcnQgZm9yIFdpbmVMaWIgcmVzb3VyY2UgaGFuZGxlcnMuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgcmVsYXkzMi91dHRodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1hZGUgVW5pdmVyc2FsIFRodW5rIGxpc3QgcGVyLXByb2Nlc3MsIG5vdCBzeXN0ZW0gZ2xvYmFsLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkZGl0aW9uYWwgbWFjcm8gZGVmaW5pdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBUQ01fQURKVVNUUkVDVC4KCgkqIG1zZG9zL2ludDA5LmMsIG1zZG9zL2lvcG9ydHMuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkICJpbXBsaWNpdCBkZWNsYXJhdGlvbiIgd2FybmluZ3MuCgoJKiBncmFwaGljcy9kM2RfcHJpdmF0ZS5oOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUZpeGVkIE9wZW5HTCBkZXZpY2VzIGltcGxlbWVudGF0aW9uLgoKCSogd2luZG93cy9xdWV1ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUluIFVzZXJZaWVsZDE2LCB3aGVuIGN1cnJlbnQgdGhyZWFkIGlzIGEgMzIgYml0IG9uZSB3aGljaCBob2xkIHRoZQoJV2luMTZMb2NrLCBtdXN0IHRha2UgY2FyZSBvZiBhIExvY2tDb3VudCA+IDEuCgoJKiAqLyouYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW9yZSBjb2RlIG1vdmVkIHRvIHRoZSBYMTEgZHJpdmVyIChiaXRtYXAgYW5kIHBhbGV0dGUgYW5kIG1pc2MpLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gTWFyIDI4IDE1OjIwOjAwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW92ZSBETSogZGVmaW5lcyBmcm9tIHdpbmJhc2UuaCAtPiB3aW5nZGkuaC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJRml4ZWQgUXVlcnlJbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBJRGlyZWN0M0QgMSBhbmQgMi4KCgkqIG9sZS9ubHMvQXR0aWMvZG5rLm5sczogQXBwYXJlbnRseSBubyBsb25nZXIgbmVlZGVkLgoKCSogY29udHJvbHMvbWVudS5jLCBjb250cm9scy91aXRvb2xzLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgbWVtb3J5L2dsb2JhbC5jLCBtaXNjL2RkZW1sLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJQ2hhbmdlZCBzb21lIGRlYnVnIG1lc3NhZ2VzIGZyb20gb25lIGNoYW5uZWwgdG8gYW5vdGhlciwgdG8gY2xlYW4gdXAgYQoJYml0IHRoZSBkZWJ1ZyBjaGFubmVsIHVzYWdlLgoKCSogbG9hZGVyL21vZHVsZS5jOiBKZXNzIEhhYXMgPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglGaXhlZCBDcmVhdGVQcm9jZXNzQSBzbyBpdCBjYW4gaGFuZGxlIGNvbW1hbmRsaW5lcyB3aXRoIGFyZ3VtZW50cyBhbmQKCW5vIC5leGUuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEplc3MgSGFhcyA8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUZpeGVkIEdldE1vZHVsZUhhbmRsZTE2LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUFkZGVkIFJ1c3NpYW4ga2V5Ym9hcmQgc3VwcG9ydC4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgc3R1YiBmb3IgU2V0U3lzdGVtQ3Vyc29yLgoKCSogd2luMzIvZmlsZS5jOiBTdGVmZmVuIE1vZWxsZXIgPG1vZWxsZXJAZWJpLmFjLnVrPgoJU2V0RmlsZUF0dHJpYnV0ZXNBOiAiaW1wbGVtZW50ZWQiIHNldHRpbmcgb2YgZGlyZWN0b3J5IGZsYWcgYXMgdGVzdCBvZgoJY29tcGF0aWJpbGl0eS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglDaGFuZ2VzIGluIFgxMURSVl9LRVlCT0FSRF9EZXRlY3RMYXlvdXQgaW4gb3JkZXIgdG8gaW1wbGVtZW50IFJ1c3NpYW4KCWtleWJvYXJkIHN1cHBvcnQuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvb2xlMi5jLCBvbGUvb2xlMnN0dWJzLmMsIG9sZS9zdG9yYWdlLmMsIG9sZS92YXJpYW50LmMsIHJlbGF5MzIvb2xlMzIuc3BlYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL2lucHV0LmMsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS93aW51c2VyLmg6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFhcm9uIEJhcm5lcyA8YWFyb25iQGNvcmVsLmNhPgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJQnVuZGxlIG9mIG5ldyBzdHVicy4KCgkqIG1pc2MvY3J0ZGxsLmMsIG1pc2MvZGRlbWwuYywgb2xlL29sZTJkaXNwLmM6CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBtaXNzaW5nIFdJTkFQSXMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL25ld2Zucy5jOgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgQ3JlYXRlSW9Db21wbGV0aW9uUG9ydCBzdHViLgoKCSogd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBFVkVOVF9QZW5kaW5nKCkgdG8gZmx1c2ggWDExIG91dHB1dCBxdWV1ZSBiZWZvcmUgYmxvY2tpbmcgaW4KCU1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHMoKS4KCURvbid0IGNhbGwgRVZFTlRfV2FpdE5ldEV2ZW50IGluIE1TR19QZWVrSGFyZHdhcmVNc2cuCglQcm90ZWN0IHN5c3RlbSBxdWV1ZSBhY2Nlc3MgaW4gaGFyZHdhcmVfZXZlbnQoKS4KCgkqIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29udHJvbHMvbWVudS5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBzb21lIGJ1Z3MgaW4gdGhyZWFkIHNhZmVuZXNzIGZvciB3bmQgc3RydWN0LgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC9oZWxsbzMuYywgbGlidGVzdC9oZWxsbzNyZXMucmM6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJTWFkZSBsaWJ0ZXN0L2hlbGxvMyB3b3JrIGFnYWluLCBub3cgd2l0aCBXaW5kb3dzLWNvbXBhdGlibGUgcmVzb3VyY2UKCWxvYWRpbmcuCgoJKiBpbmNsdWRlL2ltbS5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUppdW1pbmcgTHVvIDxqaXVtaW5nX2x1b0B5YWhvby5jb20+CglNb3ZlZCBtYWNybyBERUNMQVJFX0hBTkRMRSgpIChpbiBtc2FjbS5oIGFuZCB3dHlwZXMuaCkgdG8gd2luZGVmLmgsCgl0aGVuIGRlbGV0ZWQgdGhlIGR1cGxpY2F0ZWQgdHlwZWRlZnMgKGluIGltbS5oIGFuZCBtbXN5c3RlbS5oKS4KCgkqIG1pc2MvcHJpbnRkcnYuYzogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglSZXdyb3RlIEVudW1QcmludGVyc0EsIGFkZGVkIENyaXRpY2FsU2VjdGlvbiBhcm91bmQgUmVnaXN0cnkgcmVhZHMgYW5kCglpbXBsZW1lbnRlZCBQUklOVEVSX0lORk9fMiByZXF1ZXN0LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogSm9uYXRoYW4gTmF5bG9yIDxnNGtseEBwb3AuYWdyaS5jaD4KCUFkZGVkIFN3aXNzIEdlcm1hbiBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gYWRqdXN0ZWQgcHJpbnRpbmcgb2YgcmVmY291bnRzIHRvIGJlIGVxdWFsCgktIGNsZWFuaW5nIHVwIGljb24gY2FjaGUgb24gUFJPQ0VTU19ERVRBQ0gKCS0gZml4ZWQgYXNjaWkvdW5pY29kZSB1c2UgaW4gU0gvSUxDcmVhdGVGcm9tUGF0aAoJLSBmaXhlZCBzbWFsbCBtZW1vcnkgbGVhayBpbiBzaGVsbHZpZXcKCgkqIGxvYWRlci9kb3MvZG9zdm0uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbXB0eSBET1NWTV9RdWV1ZUV2ZW50IGZvciAhTVpfU1VQUE9SVEVELgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQ2hhbmdlZCBDSE9PU0VDT0xPUltBV10uRmxhZ3MgZnJvbSBVSU5UIHRvIERXT1JELgoKCSogd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvcmVnaW9uLmgsIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIGluY2x1ZGUvdHNfeHV0aWwuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9yZWdpb24uYywgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194Zjg2dm1vZGUuYywgdHN4MTEvdHNfeHV0aWwuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUFsZXggS29yb2JrYSA8YWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdT4KCU1vdmVkIGhyZ25VcGRhdGUgZnJvbSBjbGllbnQgdG8gd2luZG93IGNvb3JkaW5hdGVzLCBtYWRlIG5vbmNsaWVudAoJcGFpbnRpbmcgZGVwZW5kIG9uIHRoZSB1cGRhdGUgcmVnaW9uLCByZXdvcmtlZCBTZXRXaW5kb3dQb3MoKSBhbmQKCVJlZHJhd1dpbmRvdygpIHRvIHNwZWVkIHVwIHVwZGF0ZSByZWdpb24gY2FsY3VsYXRpb24sIG1hZGUgLWRlc2t0b3AKCXdvcmsgcHJvcGVybHksIGFkZGVkIFdNX0NBTkNFTE1PREUgaGVyZSBhbmQgdGhlcmUsIGZpeGVkIHNldmVyYWwKCXdpbmRvdyBhY3RpdmF0aW9uIGJ1Z3MgdGhhdCBjcmVwdCBpbiBzaW5jZSB0aGUgbGFzdCB0aW1lLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEFsZXggS29yb2JrYSA8YWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdT4KCUZpeGVkIG9jY2FzaW9uYWwgbG9zcyBvZiBTZW5kTWVzc2FnZSgpIHJldHVybiB2YWx1ZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgaW5pdGlhbGlzYXRpb24gb2YgdGhlIHBpeG1hcF9kZXB0aCBmaWVsZCBpbgoJWGxpYl9EaXJlY3REcmF3Q3JlYXRlLgoKCSogbXNkb3MvaW9wb3J0cy5jOiBKZXNzIEhhYXMgPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglGaXhlZCBhIHdhcm5pbmcuCgoJKiBtc2Rvcy9pbnQyZi5jOiBKZXNzIEhhYXMgPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglBZGRlZCBzdHViIGZvciBpbnQyZiA0Yi4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIG1lbW9yeSBsZWFrIGluIHdhdmVPdXRPcGVuL3dhdmVPdXRDbG9zZS4KCgkqIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3JlIEVzY2FwZXMgZm9yIHRoZSBQb3N0U2NyaXB0IGRyaXZlci4KClNhdCBNYXIgMjcgMTY6NTY6MTMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGFwdGVkIHRvIHRoZSBpbnRlcmZhY2UvaW1wbGVtZW50YXRpb24gc2VwYXJhdGlvbi4KCU5vdyB1c2VzIElDT01fVEhJUyB0byBhY2Nlc3MgdGhlIGltcGxlbWVudGF0aW9uIHN0cnVjdHVyZXMuCglSZXBsYWNlZCAndGhpcycgd2l0aCAnVGhpcycgZm9yIElDT01fVEhJUy4KCURpcmVjdCBhY2Nlc3MgdG8gdGhlIHZpcnR1YWwgdGFibGUgaGFzIGJlZW4gZWxpbWluYXRlZCB0b28uCgoJKiBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVwZGF0ZWQgdG8gaW5jbHVkZSBhbGwgdGhlIGltcGxlbWVudGF0aW9uIGFzcGVjdHMgdGhhdCB3ZXJlIHByZXZpb3VzbHkKCWluIHRoZSBwdWJsaWMgaW5jbHVkZXMuCgoJKiBncmFwaGljcy92Z2EuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIHZpcnR1YWwgdGFibGUKCgkqIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZGRyYXcuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIGFsbCBpbXBsZW1lbnRhdGlvbiBhc3BlY3RzLgoJTW9kaWZpZWQgdG8gdXNlIHRoZSBsYXRlc3QgSUNPTSBtYWNyb3MuCglBZGRlZCB0aGUgbWFjcm9zIGZvciB1c2UgaW4gQy4KCUFkZGVkIHRoZSBtZXRob2QgcGFyYW1ldGVyIG5hbWVzICh3aGVuIEkgaGFkIHRoZW0pLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHNlcXVlbmNlIG9mIERMTF9QUk9DRVNTX0RFVEFDSCBub3RpZmljYXRpb24gY2FsbHMuCglNb3ZlZCBQRV9NT0RSRUYgZmxhZ3MgdG8gV0lORV9NT0RSRUYgbGV2ZWwuCglCZXR0ZXIgaGFuZGxpbmcgb2YgTG9hZExpYnJhcnlFeCBmbGFncy4KCVBFX0luaXRUbHMoKSBjaGFuZ2VkIHRvIHdvcmsgb25seSBvbiB0aGUgY3VycmVudCB0aHJlYWQuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIGNtZCBsaW5lIGluIG5ld19wcm9jZXNzIHJlcXVlc3QuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbCB0aHJlYWRzIGNyZWF0ZWQgd2l0aCBDcmVhdGVUaHJlYWQgYXJlIDMyLWJpdCB0aHJlYWRzLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglSZWFkaW5nIG9mIGJpbmFyeSBzdHJlYW1zIGltcGxlbWVudGVkIChTSE9wZW5SZWdTdHJlYW0pLgoKCSogbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYzoKCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIGludDI1ICYgaW50MjYgZXJyb3IgY29kZS4KCgkqIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvcXVldWUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgVXNlcllpZWxkMTYgdG8gYmUgY2FsbGVkIGZyb20gMzItYml0IHRocmVhZC4KCgkqIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJQWxiZXJ0IERlbiBIYW5uIDxhbGJlcnRkQGNvcmVsLmNhPgoJQWRkaXRpb25hbCBtYWNybyBkZWZpbml0aW9ucy4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9iaXRtYXAuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZWQge1N8R31ldEJpdG1hcEJpdHMgaW4geDExZHJ2LiAgUmVtb3ZlZCBCSVRNQVBfR2V0UGFkZGluZy4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBtZXRhZmlsZSByZWNvcmRpbmcgb2YgQ3JlYXRlUGF0dGVybkJydXNoLgoKVGh1IE1hciAyNSAxNjo0MjoyOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90b29sYmFyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCVBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2UgdGhlIEFkZEJpdG1hcCBmdW5jdGlvbi4gSW1wbGVtZW50IGZsYXQgdG9vbGJhci4gQ2hhbmdlCglDcmVhdGVUb29sYmFyRXguIEltcGxlbWVudCBwYXJ0aWFsbHkgdGhlIGhvdCBidXR0b25zIGZvciB0b29sYmFyLgoKCSogbXNkb3MvaW50MTYuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIEdldCBTaGlmdCBGbGFncyBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzaW5nIFdJTkFQSS4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCUNoYW5nZWQgc3RkbGliLmggdG8gc3RyaW5nLmguCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJQWRkZWQgc3RyaW5nLmguCgoJKiBtaXNjL2RkZW1sLmMsIG11bHRpbWVkaWEvbXN2aWRlby5jLCBvbGUvc2FmZWFycmF5LmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uYywgd2luMzIvY29uc29sZS5jOgoJRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJQ2hhbmdlZCAic3RyaW5ncy5oIiB0byAic3RyaW5nLmgiLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJUmFuZHkgV2VlbXMgPHJ3ZWVtc0Bob21lLmNvbT4KCUZpeGVkIG9mZi1ieS1vbmUgZXJyb3IgaWYgYml0Ymx0IHdpZHRoIG9yIGhlaWdodCBpcyBuZWdhdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGluY2x1ZGUvdGFiLmg6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZDoKCS0gc2hvd2luZyB0aGUgc2VsZWN0ZWQgdGFiIGFzIGhpZ2hsaWdodGVkCgktIHN1cHBvcnQgZm9yIGRyYXdpbmcgdGhlIGZvY3VzIHJlY3RhbmdsZQoJLSBiYXNpYyBrZXlib2FyZCBzdXBwb3J0CgktIHN1cHBvcnQgZm9yIGEgdGFiIHdpdGggaG9yaXpvbnRhbCBzY3JvbGxpbmcuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVGhyZWFkLXNhZmUgaW1wbGVtZW50YXRpb24gb2YgcHJvZmlsZSBmdW5jdGlvbnMgKFdpbmRvd3MgYW5kIFdpbmUpLgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIGxvYWRlci9tYWluLmMsIHdpbmRvd3MvdGltZXIuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJTWFkZSB0aGUgdGltZXIgY29kZSB0aHJlYWQgc2FmZS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHBvc3NpYmxlIGVuZGxlc3MgbG9vcC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgTEJfR0VUQ1VSU0VMIG1lc3NhZ2UgdG8gcmV0dXJuIExCX0VSUiBvbiBlbXB0eSBsaXN0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RvY2tpbmd3aW5kb3dmcmFtZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglVc2UgdGhlIG5ldyBoZWFkZXIgZm9yIENPTSBkZWZpbml0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWIgc2hlbGxfNjU0LgoKCSogaW5jbHVkZS90cmVldmlldy5oLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBUVk1fU09SVENISUxEUkVOQ0IuCglJbXBsZW1lbnRhdGlvbiBvZiBUVklfU09SVCBpbnNlcnRpb24uCglGaXggZGlzcGxheSBwcm9ibGVtIHdoZW4gVFZJRl9JTUFHRXxUVklGX1NFTEVDVEVESU1BR0Ugd2VyZSBub3Qgc2V0LgoJRml4IHByb2JsZW1zIHJlbGF0ZWQgdG8gVFZJU19FWFBBTkRFRE9OQ0UuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbS5lcGZsLmNoPgoJRml4IHByb2JsZW0gaW4gRFBBX1F1aWNrU29ydCB3aGVyZSB0aGUgc29ydCBvcmRlciB3YXMgaW52ZXJ0ZWQuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBpbmZyYXN0cnVjdHVyZSBhbmQgZGVmaW5pdGlvbnMgZm9yIGdlbmVyYWwtcHVycG9zZSBldmVudCBhbmQgSVJRCgloYW5kbGluZyBmb3IgdGhlIFdpbmUgZG9zIGJveC4gUmVtb3ZlZCB0aGUgb2Jzb2xldGUgTVpfVGljay4gQWRkZWQKCWV2ZW50IG1lc3NhZ2UgbG9vcCwgbWVzc2FnZSBoYW5kbGluZywgQ0xJL1NUSSBoYW5kbGluZywgYW5kIG1pbmltYWwKCVBJQyBzdXBwb3J0LgoKCSogbG9hZGVyL2Rvcy9kb3Ntb2QuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBoYW5kbGluZyBvZiBTSUdVU1IyIGZvciB0aGUgbmV3IGV2ZW50IGludGVycnVwdGlvbiBoYW5kbGluZywKCWJ1bXBpbmcgdXAgdGhlIHByb3RvY29sIHJldmlzaW9uLiBNYWRlIHNvbWUgZGVidWcgbWVzc2FnZXMgbm90IGJlCglvdXRwdXQgd2hlbiBpdCdzIG5vdCBuZWNlc3NhcnkuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgcG9ydCAweDYwIGZvciBpbnQgMHgwOSwgYW5kIHBvcnQgMHgyMCBmb3IgUElDIGhhbmRsaW5nLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGludCAweDA5IGFuZCBpbnQgMHgzMy4KCgkqIG1zZG9zL2ludDMzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgYSBpbnQgMHgzMyBoYW5kbGVyLCB3aXRoIGEgbWluaW1hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKCW1vdXNlIHJvdXRpbmVzLCBpbmNsdWRpbmcgY2FsbGJhY2tzLgoKCSogbXNkb3MvaW50MDkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBhIGludCAweDA5IGhhbmRsZXIsIGFuZCBhIHNjYW5jb2RlIHF1ZXVlIHRoYXQgc2ltdWxhdGVzCglJUlEgMSBpbiB0aGUgZG9zIGJveC4KCgkqIGluY2x1ZGUvZG9jb2JqLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQ3JlYXRpb24gb2YgZG9jb2JqLmguCgoJKiBvYmplY3RzL2RpYi5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFsbG93IGRlcHRoIG9mIERJQiB0byBkaWZmZXIgZnJvbSBkZXB0aCBvZiBiaXRtYXAgaW4gR2V0RElCaXRzLgoKV2VkIE1hciAyNCAxNTowNzoyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvZWRpdGxpbmUuYzogQWJvcnQgb24gaW5wdXQgZXJyb3IuCgoJKiBpbmNsdWRlL29sZWRsZy5oOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglQb3B1bGF0aW9uIG9mIG9sZWRsZy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkIElzV2luZG93KCkgY2hlY2tzIGFmdGVyIFNlbmRNZXNzYWdlKCkgcmV0dXJucy4KCgkqIG1zZG9zL2ludDEwLmM6IEplc3MgSGFhcyA8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUZpeGVkIGEgc21hbGwgYnVnIGluIGludDEwLgoKCSogY29udHJvbHMvY29tYm8uYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUNPTUJPX1NpemU6IG1haW50YWluIHRoZSBoZWlnaHQgb2YgdGhlIFJlY3RDb21ibyB3aGVuIHRoZSB3aW5kb3cgaXMKCXJlc2l6ZWQuCgoJKiBpbmNsdWRlL2hvb2suaCwgaW5jbHVkZS93aW51c2VyLmg6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRkZWQgdmFyaW91cyBkZWZpbml0aW9ucy4KCU1vdmVkIENXUFNUUlVDVCBmcm9tIGhvb2suaCB0byB3aW51c2VyLmggdG8gY29uZm9ybSB0byB0aGUgU0RLLgoKCSogaW5jbHVkZS93aW5kZWYuaDogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJQWRkZWQgYSBmZXcgZW1wdHkgbWFjcm9zLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDVVJTT1JJQ09OX0Rlc3Ryb3k6IG1pc3NpbmcgV0lOQVBJIGFkZGVkLgoKCSogbWlzYy93aW5zb2NrLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgdHJhbnNsYXRpb24gZm9yIFNPX1JDVlRJTUVPIChhcyBzZWVuIGJ5IElFNCkuCgpUdWUgTWFyIDIzIDE3OjA0OjEwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOiBDcmVhdGUgc3RhcnR1cCBpbmZvIGZvciB0aGUgaW5pdGlhbCBwcm9jZXNzLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc2VydmVyIHBpZCBhbmQgdGlkIGluIGluaXRfdGhyZWFkIHJlcXVlc3QsIGFuZCB1c2UgdGhlbSBpbgoJQ0xJRU5UX0luaXRUaHJlYWQuCgoJKiBpbmNsdWRlL2NvbXBvYmouaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd3R5cGVzLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2FudGltb25pa2VyLmMsIG9sZS9iaW5kY3R4LmMsIG9sZS9jb21wb2JqLmMsIG9sZS9jb21wb3NpdGVtb25pa2VyLmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL21vbmlrZXIuYywgb2xlL3N0b3JhZ2UzMi5jLCByZWxheTMyL29sZTMyLnNwZWM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkOgoJLSBJTW9uaWtlciBpbnRlcmZhY2UgZm9yIEZpbGVNb25pa2VyLEl0ZW1Nb25pa2VyLEFudGlNb25pa2VyIGFuZAoJICBHZW5lcmljQ29tcG9zaXRlTW9uaWtlcgoJLSBJUnVubmluZ09iamVjdFRhYmxlIGludGVyZmFjZSwgYW5kCgktIElCaW5kQ3R4IGludGVyZmFjZS4KCgkqIGdyYXBoaWNzL3BzZHJ2L2JpdG1hcC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZGVkIFN0cmV0Y2hESUJpdHMgZm9yIHRoZSBQb3N0U2NyaXB0IGRyaXZlci4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIG1pc3NpbmcgZW5kaW5nIHByYWdtYSBwYWNrLgoKCSogbWlzYy9jb21tLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0ZWQgc21hbGwgYnVnIGluIEdldENvbW1TdGF0ZTE2LiBQYXJpdHkgY2hlY2sgY2FuIGJlIGRpc2FibGVkCglldmVuIHdoZW4gYSBwYXJpdHkgYml0IGlzIHVzZWQuIFNldENvbW1TdGF0ZTE2KCkgY2FuIG92ZXJyaWRlIGJhdWRyYXRlCglzZXR0aW5nIGluIHdpbmUuY29uZi4KCk1vbiBNYXIgMjIgMTc6NDc6MzYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGNvcGUgd2l0aCBxdW90ZWQgYXJndW1lbnRzIGZvciBDcmVhdGVQcm9jZXNzKCkuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgdHlwbyBpbiBTaXplb2ZSZXNvdXJjZSgpLgoKCSogbWVtb3J5L3N0cmluZy5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+Cglsc3RyY3B5QSBjYW4ndCB1c2Ugc3RyY3B5LgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9tb2R1bGUuaCwgbWlzYy9tYWluLmMsIG1pc2NlbXUvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCAtZGxsIG9wdGlvbiBmb3Igd2luZWxpYiBwcm9ncmFtcy4gKE5vdGU6IHdpbGwgbm90IHByaW50IHdhcm5pbmdzCglvbiBmYWlsdXJlIGN1cnJlbnRseSkuCgoJKiByZWxheTMyL250ZGxsLnNwZWM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHN0cmx3ci4KCgkqIGxvYWRlci9wZV9pbWFnZS5jLCBtc2Rvcy9pbnQyMS5jOgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJQ29zbWV0aWNzLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbmV3IHN0dWJzIChtbVRhc2tYWFgsIG1tVGhyZWFkWFhYLCBtY2lFeGVjdXRlKS4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGVkIGNhbGxpbmcgbWl4ZXIgYXMgYSAzMiBiaXQgbG93IGxldmVsIGRyaXZlciAobm8gbG9uZ2VyIDE2IGJpdCkKCUFkZGVkIHN1cHBvcnQgZm9yIHlpZWxkIHByb2MgaW4gbWNpIHN0cnVjdAoJQWRkZWQgbW1UYXNrWFhYMTYgYW5kIG1tVGhyZWFkWFhYMTYgZnVuY3Rpb25zCglSZWZyZXNoZWQgaW1wbGVtZW50YXRpb24gb2YgMTYgYml0IG5hdGl2ZSAmIGFzeW5jaHJvbm91cyBNQ0kgZHJpdmVyCgljb21tYW5kICh0aHJvdWdoIG1tdGFzay50c2spLgoKCSogbXVsdGltZWRpYS9taXhlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IGJ1Z3MuIFN0YXJ0ZWQgaW1wbGVtZW50aW5nIG1peGVyTWVzc2FnZSBhcyBhIDMyIGJpdAoJZnVuY3Rpb24gKG5vIGxvbmdlciAxNiBiaXQpLgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBtY2lFeGVjdXRlLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvbWNpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHlpZWxkIHByb2MgbWVtYmVycyB0byBtY2kgc3RydWN0LgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1peGVyIHNwZWNmaWMgZXJyb3IgY29kZXMsIGZpeGVkIHR5cGUgaW4gZnVuY3Rpb24gbmFtZS4KCgkqIHdpbmRvd3MvZHJpdmVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmV0dXJuIGNvZGVzIGZvciBkZWZhdWx0IGRyaXZlciBwcm9jLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglNYWRlIExCX0dFVENVUlNFTCByZXR1cm4gZm9jdXNfaXRlbSBpZiBubyBpdGVtIGhhcyBiZWVuIHNlbGVjdGVkLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUthbGV2aSBKIEhhdXRhbmllbWkgPG9oM2ZnQG9oM3RyLmVsZS50dXQuZmk+CglBZGRlZCBGaW5uaXNoIGtleWJvYXJkIGxheW91dC4KCgkqIG1pc2MvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZ3JhcGhpY3Mvd2luZy5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS94MTFkcnYuaDoKCVZla3NsZXIgTWljaGFlbCA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkIHdpbnVzZXIxNi5oIGZyb20geDExZHJ2LmguCgoJKiBpbmNsdWRlL3dpbnNwb29sLmgsIG1pc2MvcHJpbnRkcnYuYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJSW1wbGVtZW50YXRpb24gb2YgRW51bVByaW50ZXJzQSwgaW5mbyBsZXZlbCA0IGFuZCA1LgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSBTYWNhcm55IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUNoZWNrIGlmIHRoZSBidWlsZCBpcyBzdHJpcHBlZCwgYW5kIGRpZSBpZiBpdCBpcy4KCUNoZWNrIGZvciBCYXNoIDIuMCwgYW5kIGlmIHNvIHVzZSBkaWZmZXJlbnQgU1RERVJSLT5TVERPVVQgcmVkaXJjdG9yCgkodGhhbmtzIFJ5YW4gQ3VtbWluZyEpLgoKCSogd2luZG93cy9tZGkuYzogVmVrc2xlciBNaWNoYWVsIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUZpeGVkICJyZWFjaGVkIGVuZCBvZiBub24gdm9pZC4uLiIgd2FybmluZ3MuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNZXNzYWdlQm94MzJBIC0+IE1lc3NhZ2VCb3hBCgoJKiBsb2FkZXIvbW9kdWxlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCVNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0PgoJSW1wbGVtZW50YXRpb24gZm9yIEZyZWVMaWJyYXJ5QW5kRXhpdFRocmVhZC4KCU1hZGUgR2V0QmluYXJ5VHlwZSA9IEdldEJpbmFyeVR5cGVBLgoKCSogaW5jbHVkZS90YXNrLmgsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUnVuIFdpbjMyIHByb2Nlc3NlcyBpbiB0aGVpciBvd24gdGhyZWFkcy4KCVByb2Nlc3MgZXhpdCBzZXF1ZW5jZSBhZGFwdGVkLgoKU3VuIE1hciAyMSAxOToyNjoyNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUNoYW5nZWQgcHJvY2VzcyBpbml0aWFsaXNhdGlvbiB0byB1c2UgdGhlIG5ldyBzZXJ2ZXIgcmVxdWVzdHMuCglTdGFydGVkIHRvIG1vdmUgdGhlIHByb2Nlc3MgaW5pdCB0byB0aGUgcmlnaHQgY29udGV4dCwgbm90IGZpbmlzaGVkIHlldC4KCgkqIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci9tYWluLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaDoKCUFkZGVkIG5ld19wcm9jZXNzIGFuZCBpbml0X3Byb2Nlc3MgcmVxdWVzdC4KCVNwbGl0IG91dCBwcm9jZXNzIGNyZWF0aW9uIGZyb20gdGhyZWFkIGNyZWF0aW9uLgoJQ2hhbmdlZCBzZXJ2ZXIgaW5pdGlhbGlzYXRpb24gdG8gZW5zdXJlIHRoYXQgd2UgYWx3YXlzIGhhdmUgYSBjdXJyZW50Cgl0aHJlYWQuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJT25lIHNtYWxsIGVycm9yIGNvcnJlY3RlZCBhbmQgdGhlIDEwMnRoIGtleS4uLgoKCSogbWlzYy9jb21tLmMsIGluY2x1ZGUvY29tbS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgY29tbWVycm9yIGFuZCBldmVudG1hc2sgbG9jYWwgdG8gZWFjaCBwb3J0IChmb3Igd2luMTYpLCBtYWRlIHRoZQoJd2luMTYgcm91dGluZXMgdXNlIHBvcnQgaW5kaWNlcyBpbnN0ZWFkIG9mIFVOSVggZmRzICh0aGlzIHNob3VsZCBtYWtlCglzb21lIFZpc3VhbCBCYXNpYyBzdHVmZiBhbmQgc2ltaWxhciBnYXJiYWdlIHN0YXJ0IHdvcmtpbmcpLCBtb3ZlZCBzb21lCglzdHVmZiBhcm91bmQgKHdpbjE2IHJvdXRpbmVzIGF0IHRvcCBvZiBmaWxlLCB3aW4zMiByb3V0aW5lcyBhdAoJYm90dG9tKSwgbWFkZSBhIGNvdXBsZSBvZiB3aW4zMiByb3V0aW5lcyB1c2Ugd2luMzIgaGFuZGxlcywgYW5kIGFkZGVkCglhIGZldyBoaW50cyBhcyB0byBob3cgdG8gaW1wbGVtZW50IGFzeW5jaHJvbm91cyBidWZmZXJzLCBiYXNlZCBvbgoJd2hpY2ggRW5hYmxlQ29tbU5vdGlmaWNhdGlvbiBjYW4gZXZlbnR1YWxseSBiZSBpbXBsZW1lbnRlZC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIHByb3RvdHlwZXMgb2YgYSBjb3VwbGUgb2YgY29tbSByb3V0aW5lcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgdHlwby4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUNsZWFyIHVwZGF0ZSByZWdpb24gYmVmb3JlIFdNX05DREVTVFJPWS4KCgkqIGluY2x1ZGUvaGVhcC5oLCBtZW1vcnkvaGVhcC5jLCByZWxheTMyL3V0dGh1bmsuYywgd2luZG93cy9xdWV1ZS5jOgoJR290IHJpZCBvZiBTWVNURU1fTE9DSyBtYWNyb3MuCgpTYXQgTWFyIDIwIDA3OjE4OjI2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL21haW4uYzogTm8gbG9uZ2VyIG5lZWQgdG8gZGVsZXRlIHN5c3RlbSBoZWFwIGNyaXRpY2FsIHNlY3Rpb24uCgpGcmkgTWFyIDE5IDE3OjA0OjI1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgY2hlY2sgZm9yIGRlc2t0b3AgaW4gU0hHZXRGaWxlSW5mby4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBidWdzIGluIE1DSSBtZXNzYWdlIG1hcHBpbmcgKDMyQSA9PiAxNikuCgoJKiB3aW5kb3dzL3dpbi5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgV0lOX1NlbmREZXN0cm95TXNnLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglSZW1vdmVkIGRlZmluaXRpb25zIGZvciBGSU9OUkVBRCBhbmQgRklPTkJJTy4KCgkqIHdpbmRvd3MvZHJpdmVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZXMgc29tZSByZXR1cm4gdmFsdWVzIGZvciBEZWZEcml2ZXJQcm9jLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ0ZpeGVyLnBsOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCB0aGUgY2hvcCBjb21tYW5kIHRoYXQgd2FzIHRoZXJlIHRvIGdldCByaWQgb2YgZG9zIF5NLgoJVGhlIHNjcmlwdCBub3cgcHJvY2VzcyBvbmx5IHVuaXggZmlsZSBmb3JtYXQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglIaWRlIGRpYWxvZyB3aW5kb3dzIGNyZWF0ZWQgYnkgQ3JlYXRlRGlhbG9nKiBpbiBFbmREaWFsb2cganVzdCBhcwoJV2luZG93cyBkb2VzLgoKCSogb2xlL3ZhcmlhbnQuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglTZXQgdHlwZSBvZiBkZXN0aW5hdGlvbiB2YXJpYW50IGluIFZhcmlhbnRDaGFuZ2VUeXBlRXggZnVuY3Rpb24uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUZpeGVkIERhbmlzaCBrZXlib2FyZCBsYXlvdXQuCgpUaHUgTWFyIDE4IDE3OjM5OjU4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL29sZTIuYywgb2xlL29sZWZvbnQuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy91c2VyLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZmlsZXMvZG9zX2ZzLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2ZvbnRlbmdpbmUuYywgaW5jbHVkZS93aW4uaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL3Jlc291cmNlLmMsIG1pc2MvbHpleHBhbmQuYywgbWlzYy9yZWdpc3RyeS5jLCBtc2Rvcy9pbnQxMC5jLCBtdWx0aW1lZGlhL2luaXQuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMb3RzIG9mIHdhcm5pbmcgZml4ZWQsIG9uZSBtaXNzaW5nIFdJTkFQSSBpbiBkZHJhdy5jIGFkZGVkLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRzICsvLSwgUGdVcC9QZ0Rvd24sIEhvbWUvRW5kLCBMZWZ0L1JpZ2h0LCBVcC9Eb3duLgoKCSogcmVsYXkzMi9tc3ZmdzMyLnNwZWM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbXN2ZnczMi5zcGVjIGJyb3VnaHQgdXAgdG8gZGF0ZSAoZm9yZ290IGl0IGluIGxhc3QgbXN2ZnczMiBwYXRjaCkuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIG1pc2MvdG9vbGhlbHAuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgTW9kdWxlMzIqIHN0dWJzLgoKV2VkIE1hciAxNyAxNTo1NDo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUJydW5vIEFmb25zbyA8YnJ1bm8uYWZvbnNvQGNhbW9lcy5ybmwuaXN0LnV0bC5wdD4KCUFkZGVkIFBvcnR1Z3Vlc2Uga2V5dGFibGUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJQWRkZWQgQ2FuYWRpYW4gRnJlbmNoIGtleWJvYXJkIGxheW91dC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZGVkIFVLIGtleWJvYXJkIGxheW91dC4KCgkqIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDJmLmM6Cgk8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUZpeGVkL2ltcGxlbWVudGVkIHZhcmlvdXMgaW50ZXJydXB0IGZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGluY2x1ZGUvd2luaW9jdGwuaCwgd2luMzIva2VybmVsMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4gcmVtb3ZlZCBzb21lIHVubmVjY2Vzc2FyeSBpbmNsdWRlcywgcmVtb3ZlZCBvbmUKCWRpcmVjdCBXTkQqIGFjY2VzcyBpbiBjb250cm9scy9tZW51LmMuCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBhIG1vcmUgZGVmZW5zaXZlIHZlcnNpb24gb2YgV0lOX1NlbmREZXN0cm95TXNnLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogQWxleGFuZGVyIFYuIEx1a3lhbm92IDxsYXZAbG9uZy55YXIucnU+CglJbnN0YWxsIGhlYWRlcnMgZnJvbSAkKFNSQ0RJUikuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIHRoZSBvYnNvbGV0ZSBJQ09NIG1hY3Jvcy4KCgkqIGluY2x1ZGUvdmZ3Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTW92ZWQgdGhlIEFQSXMgY2xvc2VyIHRvIHRoZSBjb3JyZXNwb25kaW5nIENPTSBpbnRlcmZhY2UsIHJlbW92ZWQgdHdvCglkdXBsaWNhdGVzIGFuZCBhZGRlZCAyLTMgbWFjcm9zIGZvciBBL1cgQVBJcy4KCgkqIG1zZG9zL2ludDE1LmM6IDxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJQWRkZWQgc29tZSBzdHVicyBmb3IgaW50MTUgZnVuY3Rpb25zLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW50ZXItdGhyZWFkIFNlbmRNZXNzYWdlKCkgYnVnZml4ZXM6CgktIEluc2VydCBuZXcgbWVzc2FnZSB0byBiZSByZWNlaXZlZCBhdCB0aGUgKmVuZCogb2YgdGhlIFNNX1BFTkRJTkdfTElTVC4KCS0gRG8gKm5vdCogcHJvY2VzcyByZWNlaXZlZCBtZXNzYWdlcyBpbiBSZXBseU1lc3NhZ2UoKS4KCS0gQ2xlYXIgdGhlIFFTX1NNUkVTVUxUIGZsYWcgb25seSBpbW1lZGlhdGVkbHkgYmVmb3JlIHdhaXRpbmcuCgoJKiBvbGUvc3RvcmFnZTMyLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJUmV0dXJuIGVycm9yIGlmIG5vdCBhIHZhbGlkIE9MRSBjb21wb3VuZCBmaWxlLgoKCSogZGxscy92ZXJzaW9uL2luc3RhbGwuYzogRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglGaXggY3Jhc2ggaWYgbHB1Q3VyRGlyTGVuIG9yIGxwdURlc3REaXJMZW49PTAuCgoJKiBtaXNjL2Nkcm9tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFrZSBjZHJvbS5jIGNvbXBpbGUgb24gRnJlZUJTRCAoRnJlZUJTRCBkb2VzIG5vdCBzZWVtIHRvIGhhdmUgKlNFRUssCglzdHJhbmdlKS4KClR1ZSBNYXIgMTYgMTY6Mjk6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQYXNzIENyZWF0ZVByb2Nlc3MoKSBTRUNVUklUWV9BVFRSSUJVVEVTIHRocm91Z2ggdG8gUFJPQ0VTU19DcmVhdGUoKS4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVBhc3MgbmV3IGFyZ3VtZW50cyAoc3VzcGVuZC9pbmhlcml0KSB0byB0aGUgc2VydmVyLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSGFuZGxlIHN1c3BlbmQvcmVzdW1lX3RocmVhZCByZXF1ZXN0cyBpbiBwaGFzZSBTVEFSVElORyBjb3JyZWN0bHkuCglTZXQgaW5pdGlhbCBzdXNwZW5kIGNvdW50IGZvciB0aHJlYWRzIGNyZWF0ZWQgd2l0aCBDUkVBVEVfU1VTUEVOREVELgoJU2V0ICdpbmhlcml0YWJsZScgZmxhZyBmb3IgcHJvY2Vzcy90aHJlYWQgaGFuZGxlcy4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB3aW4uaCBpbmNsdWRlLCBhZGRlZCBub3cgbmVjZXNzYXJ5IG90aGVyCglpbmNsdWRlcyAod2luLmggdXNlZCBvbmx5IGJ5IFVQRE9XTiBub3cpLgoKCSogbWlzYy9jb21tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJZGVidWcuaCBtdXN0IGJlIGxhc3QsIG9yIHdlIGdldCBFUlIoKSBtYWNybyBwcm9ibGVtcyBhZ2Fpbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBzbGlnaHQgYnVnIHRoYXQgd2FzIGluY2x1ZGVkIGluIHRoZSBjaGFuZ2UgZnJvbSBXTkQgcHRyIHRvCglod25kIGxhc3Qgd2Vlay4KCgkqIGxvYWRlci9tYWluLmMsIG1pc2MvY2FsbGJhY2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBpbmNsdWRlL3RyZWV2aWV3Lmg6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCBzb21lIGdyYXBoaWNhbCBwcm9ibGVtcyBvZiB0aGUgdHJlZXZpZXcgYW5kIGFkZGVkIHN1cHBvcnQgTE1CCgljbGljayBvbiArLy0gc2lnbiB0byBvcGVuIGFuZCBjbG9zZS4KCUZpeGVkIGEgYnVnIGluIGltYWdlbGlzdCB3aGVyZSB0aGUgbGFzdCBpbWFnZSBjb3VsZCBub3QgYmUgZGlzcGxheWVkLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQXZvaWQgdW5uZWNlc3NhcnkgZXJyb3IgbWVzc2FnZXMuCgoJKiB3aW5kb3dzL2hvb2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJZ25vcmUgSElXT1JEIG9mIGJvb2xlYW4gcmV0dXJuIHZhbHVlcyBvZiAxNi1iaXQgaG9vayBwcm9jZWR1cmVzLCB0bwoJbWF0Y2ggYnVnZ3kgV2luZG93cyBiZWhhdmlvdXIuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNvcnJlY3RlZCBidWcgaW4gZW51bWVyYXRpb24gZnVuY3Rpb24uCgoJKiB3aW5kb3dzL3dpbi5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgYnVnIGludHJvZHVjZWQgaW4gV0lOX0ZpbmRXaW5kb3cuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCTAgaXMgYSB2YWxpZCBpbmRleCBmb3IgYSB0YWIgaXRlbS4KCUNyZWF0ZVNvbGlkQnJ1c2ggdGFrZXMgYSBDT0xPUlJFRiBhcyBhIHBhcmFtZXRlci4KCVRhYiBjb250cm9scyB3ZXJlIGFsd2F5cyBkaXNwbGF5ZWQgaW4gdGhlIHRvcCBsZWZ0IGNvcm5lci4KCk1vbiBNYXIgMTUgMTY6MTU6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVwZGF0ZWQgdGhlIGludGVyZmFjZXMgdG8gdXNlIHRoZSBsYXRlc3QgSUNPTSBtYWNyb3MuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9NYWtlZmlsZS5pbiwgbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tY2lzdHJpbmcuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCByZWxheTMyL3dpbm1tLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIGFsbCBNQ0kgaW50ZXJuYWwgZnVuY3Rpb25zL3ZhcmlhYmxlcy9tYWNyb3MgdG8gbWNpLmMuCglDaGFuZ2VkIHNvbWUgaW50ZXJmYWNlIG5hbWVzLgoKCSogaW5jbHVkZS9kaWdpdGFsdi5oLCBtdWx0aW1lZGlhL21jaWF2aS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWtlIHVzZSBvZiBkaWdpdGFsdi5oIGZpbGUuCgoJKiBtdWx0aW1lZGlhL2luaXQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIGhvdyBsaXN0IG9mIGxvYWRhYmxlIE1DSSBkcml2ZXJzIGlzIG9idGFpbmVkLgoKCSogZG9jdW1lbnRhdGlvbi9rZXlib2FyZDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEZXNjcmliZXMgaW4gbmV3YmllIHRlcm1zIGhvdyB0byBhZGQgbmV3IGtleWJvYXJkIGxheW91dHMuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUJldHRlciBjb21tZW50cywgYW5kIGFkZGVkIEFOU0kgY29kZXBhZ2VzIGluIHRhYmxlLgoJVVMga2V5Ym9hcmQgY29udHJpYnV0ZWQgYnkgVXdlIEJvbm5lcy4KCUZyZW5jaCBrZXlib2FyZCBjb250cmlidXRlZCBieSBFcmljIFBvdWVjaC4KCUdlcm1hbiBrZXlib2FyZCBjb250cmlidXRlZCBieSBVbHJpY2ggV2VpZ2FuZC4KCURhbmlzaCBrZXlib2FyZCBjb250cmlidXRlZCBieSBCZXJ0aG8gU3R1bHRpZW5zLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9nZW5lcmljLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaDoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJLSBSZWltcGxlbWVudGF0aW9uIG9mIHRoZSBDb21tRGxnIEV4dGVuZGVkRXJyb3IgbWVjaGFuaXNtIHVzaW5nIFRMUy4KCS0gU29tZSBoZWFkZXIgaW5jbHVzaW9uIGNsZWFudXAuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbW1pby5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb3NtZXRpYyBmaXhlcy4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFrZXMgdXNlIG9mIG5ldyBDREFVRElPX1NlZWsoKSBmdW5jdGlvbi4KCgkqIG1zZG9zL2ludDJmLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVmFyaW91cyBmaXhlcyBmb3IgTVNDREVYIHRyYXBzLgoKCSogbWlzYy9jZHJvbS5jLCBpbmNsdWRlL2Nkcm9tLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbmV3IGZ1bmN0aW9uIENEQVVESU9fU2VlaygpLgoKCSogaW5jbHVkZS9kcml2ZXIuaCwgd2luZG93cy9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQmV0dGVyIDE2LzMyIGJpdCBkcml2ZXIgbWVzc2FnZXMgbWFwcGluZyBhbmQgaGFuZGxpbmcuCglCZXR0ZXIgcHJvdGVjdGlvbiBhZ2FpbnN0IGJhZCBoYW5kbGVzLgoKCSogaW5jbHVkZS9wZWV4ZS5oLCBsb2FkZXIvcmVzb3VyY2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIE1FU1NBR0VfUkVTT1VSQ0VfKiBkZWZpbmVzIGZyb20gU0RLIGhlYWRlcnMsIHVwZGF0ZWQgTG9hZE1lc3NhZ2UqCgljb2RlLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CglGaXhlZCBtYWtlIGluc3RhbGwuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBNYXIgMTQgMTc6MjU6MzMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luLmgsIGlwYy9kZGVfcHJvYy5jLCBtaXNjL3NweS5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvcHJvcGVydHkuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBncmFwaGljcy9kZHJhdy5jLCBpZjE2MzIvdGh1bmsuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCU1hZGUgYWNjZXNzIHRvIHRoZSB3bmQgc3RydWN0IHRocmVhZC1zYWZlLgoKCSogKi8qOiBKaW0gQXN0b24gPGFzdG8wMDAxQGFsZ29ucXVpbmMub24uY2E+CglSZW5hbWVkIHdpbnR5cGVzLmggdG8gd2luZGVmLmguCgoJKiBtZW1vcnkvaGVhcC5jOiBNYWtlIHRoZSBzeXN0ZW0gaGVhcCBjcml0aWNhbCBzZWN0aW9uIGdsb2JhbC4KCgkqIE1ha2UucnVsZXMuaW46CglGaXhlZCBNYWtlZmlsZSB1cC10by1kYXRlIGNoZWNrIHRvIGF2b2lkIHJlbGlua2luZyBhbGwgdGhlIG9iamVjdAoJZmlsZXMuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlaW1wbGVtZW50ZWQgc29tZSBjb2RlIHdpdGhvdXQgdXNpbmcgWDExLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgcmVsYXkzMi9kZHJhdy5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBmdW5jdGlvbnMgRGlyZWN0RHJhd0VudW1lcmF0ZVcgYW5kIERpcmVjdERyYXdFbnVtZXJhdGVFeFcuCgoJKiBpbmNsdWRlL3BlZXhlLmgsIGxvYWRlci9wZV9pbWFnZS5jOiBUaGVvZG9yZSBTLiBIZXRrZSA8dHNoQGd0ZS5uZXQ+CglBZGRlZCB0cmFjaW5nIGZvciBkZWxheWVkIGltcG9ydHMgYW5kIHJlbW92ZWQgdGhlIGZpeG1lLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFBldGVyIEdhbnRlbiA8Z2FudGVuQHVuaS1icmVtZW4uZGU+CglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgR2V0U2hvcnRQYXRoTmFtZUEvVy4KCgkqIG1pc2MvcmVnaXN0cnkuYywgd2luZS5pbmk6IE5hdGhhbiBab3JpY2ggPHdmaWxhcmRvQGZ1c2UubmV0PgoJQWxsb3cgdGhlIGZpbGUgbmFtZXMgYW5kIHBhdGhzIGZvciB0aGUgcmVnaXN0cnkgZmlsZXMgKHVzZXIucmVnIGFuZAoJc3lzdGVtLnJlZykgdG8gYmUgc3BlY2lmaWVkIGluIGEgW1JlZ2lzdHJ5XSBzZWN0aW9uIG9mIHdpbmUuaW5pIG9yCglvdGhlciBjb25maWcgZmlsZS4KCgkqIG1lbW9yeS9zdHJpbmcuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXggT2VtVG9BbnNpQnVmZiBmb3IgcmVhbCBXaW4zMSBiZWhhdmlvci4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRmlyc3QgYXR0ZW1wdCBhdCBzdXBwb3J0aW5nIGRpZmZlcmVudCBrZXlib2FyZCBsYXlvdXRzIHdpdGggdGhlaXIKCWNvcnJlY3Qgc2NhbmNvZGUgbWFwcGluZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpLy5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL1JFQURNRSwgcHJvZ3JhbXMvcmVnYXBpL3JlZ0ZpeGVyLnBsLCBwcm9ncmFtcy9yZWdhcGkvcmVnUmVzdG9yZXIucGwsIHByb2dyYW1zL3JlZ2FwaS9yZWdTZXQuc2gsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGNvbW1hbmQgbGluZSB0b29sIHRvIGFjY2VzcyB0aGUgcmVnaXN0cnkuCgoJKiByYy93aW5lcmMuYzogRml4ZWQgY29tcGlsYXRpb24uCgoJKiByYy8uY3ZzaWdub3JlOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUlnbm9yZSBnZW5lcmF0ZWQgZmlsZXMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL2xjYy5oOiBGaXhlZCBtYWtlIGRlcGVuZC4KCgkqIG9sZS9vbGUyLmMsIG9sZS9vbGVmb250LmMsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93dHlwZXMuaDoKCVBhdWwgUXVpbm4gPHBhdWxxQGxpbnV4bWFzdGVyLmh1bmdyeWNhdHMub3JnPgoJTWFueSBuZXcgZGVmaW5lcywgYW5kIHN0cnVjdHMgdG8gaGVscCBjb21waWxlIE1GQy4gQXMgd2VsbCBhcyBhIGZldwoJT0xFIGNvcnJlY3Rpb25zIGZyb20gZWFybGllci4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgR2V0TW9kdWxlSGFuZGxlMTYgb25seSBsb29rIGZvciBtb2R1bGUgbmFtZXMsIG5vdCBwYXRoIG5hbWVzLgoKCSogbXNkb3MvaW50MTAuYzogSmVzcyBIYWFzIDxkZXNtb2tlQGhvdG1haWwuY29tPgoJQWRkZWQgc29tZSBtb3JlIHZnYSB2aWRlbyBtb2Rlcy4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJUHJldmVudCBYMTEgZXJyb3JzIHdoZW4gWENyZWF0ZVdpbmRvdyBpcyBjYWxsZWQgd2l0aCB6ZXJvIHdpZHRoIG9yCgloZWlnaHQuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IENhb2xhbiBNY05hbWFyYSA8Q2FvbGFuLk1jTmFtYXJhQHVsLmllPgoJQWRkZWQgbWV0YWZpbGUgc3VwcG9ydCBmb3IgRXh0Rmxvb2RGaWxsLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglEaXJrIFRoaWVyYmFjaCA8dGhpZXJiYWNoQG1hdGhlbWF0aWsudHUtZGFybXN0YWR0LmRlPgoJUGFpbnQgZ3JheSB0ZXh0IG9uIGdyYXkgYmFja2dyb3VuZCBpbiBjaGVja2JveGVzL3JhZGlvYnV0dG9ucyBieQoJc3RpcHBsaW5nLiBBbHNvIGNoYW5nZWQgdGhlIGJydXNoIHVzZWQgaW4gdGhpcyBjYXNlIHRvIGdpdmUgYmV0dGVyCglyZWFkYWJpbGl0eSB3aXRoIFggZm9udHMuCgoJKiBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3RhcGkuaCwgbWlzYy9BdHRpYy90YXBpMzIuYywgbWlzYy9NYWtlZmlsZS5pbiwgcmVsYXkzMi90YXBpMzIuc3BlYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvYXNzaXN0ZWQuYywgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3RhcGkzMi9waG9uZS5jLCBpbmNsdWRlL2RlYnVnLmg6CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglJbXBsZW1lbnRlZCAobmVhcmx5KSBhbGwgVEFQSSBmdW5jdGlvbnMgYXMgc3R1YnMuCgoJKiBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1pc2MvY29tbS5jLCBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS93aW5iYXNlLmg6CglNaWNoYWVsIE1jQ29ybWFjayA8TWljaGFlbC5NY0Nvcm1hY2tAYWxjYXRlbC5jb20uYXU+CglCYXNpYyBzdXBwb3J0IGZvciBXSU4zMiBzZXJpYWwgY29tbXVuaWNhdGlvbnMgQVBJLgoJTW9kaWZ5IERPU0ZTX09wZW5EZXZpY2UgdG8gYWxsb3cgb3BlbmluZyBvZiBDT00gcG9ydHMuCglDaGFuZ2UgV2luMzIgY29tbSBmdW5jdGlvbnMgdG8gYWNjZXB0IGZpbGUgaGFuZGxlLgoJQWRkIGRlY2xhcmF0aW9uIG9mIENPTVNUQVQzMiBzdHJ1Y3R1cmUuCgoJKiBncmFwaGljcy92Z2EuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIHNpbGx5IFZHQS1lbXVsYXRpb24gcGFsZXR0ZSBidWcuCgoJKiBtc2Rvcy9pbnQxMC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgY291cGxlIG9mIHVnbHkgd2FybmluZ3MgKGNhdXNlZCBieSB1Z2x5IGVycm9ycykuCgoJKiBtc2Rvcy9kb3NtZW0uYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJQnVnIGZpeC4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsZ3VpZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX2VudW1pZGxpc3QuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLCBvbGUvZ3VpZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIElTaGVsbEZvbGRlciBhbmQgSUVudW1JRExpc3QgYXJlIHVzaW5nIHRoZSBuZXcgQ09NIGhlYWRlcnMKCS0gZml4ZWQgc29ydCBvcmRlciBmb3IgZm9sZGVycyBhbmQgZHJpdmVzCgoJKiBSRUFETUU6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ29ycmVjdGVkIGxvY2F0aW9uIG9mIEZBUS4KCgkqIG1zZG9zL2ludDIxLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRnVsbHkgaW1wbGVtZW50ZWQgRGlyZWN0IENvbnNvbGUgSW5wdXQuCgpTYXQgTWFyIDEzIDE4OjIwOjI3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3F1ZXVlLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaWYxNjMyL3RodW5rLmMsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIG5ld2x5IGludHJvZHVjZWQgYW5kIHNvbWUgbGVmdG92ZXIgd2FybmluZ3MuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgdGhlIHN0YW5kYXJkIG1hY3JvcyBmb3IgR2V0VGV4dEV4dGVudFBvaW50CglhbmQgR2V0VGV4dEV4dGVudFBvaW50MzIuCgoJKiBpbmNsdWRlL3Byc2h0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgc29tZSBTZW5kTWVzc2FnZTMyQSB0aGF0IGVzY2FwZWQgdGhlIHJlbmFtaW5nLgoKCSogaW5jbHVkZS9vbGUyLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJT24gd2luZG93cyBvbGUyLmggaW5jbHVkZXMgb2xlYXV0by5oIGFuZCBzb21lIHByb2dyYW1zIGRlcGVuZCBvbiB0aGlzLgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIG9sZS9vbGUyZGlzcC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVzIGluIHRoZSBTeXNBbGxvY1N0cmluZyBmdW5jdGlvbnMgcHJvdG90eXBlcy4gSXQncyBtb3N0bHkgJ2NvbnN0JwoJcHJvYmxlbXMgdGhhdCBwcmV2ZW50IHJlZ3VsYXIgY29kZSBmcm9tIGNvbXBpbGluZy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9jZHJvbSwgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9kcml2ZSwgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9mb2xkZXIsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZm9sZGVyMiwgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9oYXJkZGlzaywgaW5jbHVkZS9iaXRtYXBzL29pY19jZHJvbSwgaW5jbHVkZS9iaXRtYXBzL29pY19mbG9wcHksIGluY2x1ZGUvYml0bWFwcy9vaWNfZm9sZGVyLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2ZvbGRlcjIsIGluY2x1ZGUvYml0bWFwcy9vaWNfaGRpc2ssIGluY2x1ZGUvYml0bWFwcy9vaWNfbmV0d29yaywgaW5jbHVkZS93aW51c2VyLmg6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRmlsZSBvcGVuIGRpYWxvZyBub3cgdXNlcyBpY29ucyBpbnN0ZWFkIG9mIGJpdG1hcHMuCgoJKiBpbmNsdWRlL3Zmdy5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVwZGF0ZWQgQVZJKiBjbGFzcyBpbnRlcmZhY2UgdG8gbmV3IElDT01fIG1ldGhvZHMuCgoJKiBtdWx0aW1lZGlhL21zdmlkZW8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBkbGxzL2F2aWZpbDMyLy5jdnNpZ25vcmUsIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIHJlbGF5MzIvYXZpZmlsMzIuc3BlYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdGFydGVkIG9uIGF2aWZpbDMyIGltcGxlbWVudGF0aW9uIChvbmx5IHN0dWJzIGN1cnJlbnRseSkuCgoJKiBncmFwaGljcy9wYWludGluZy5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlaW1wbGVtZW50ZWQgRHJhd0ZvY3VzUmVjdCB3aXRob3V0IHVzaW5nIFgxMS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvaW50MTAuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIG1vZGUgc2V0dGluZyB0aGluZ3MgYXMgd2VsbCBhcyBWRVNBIGFkZGl0aW9ucyBhbmQgb3RoZXIKCXRoaW5ncy4gQ2xlYW5lZCB1cCBET1NNRU1fQmlvc0RhdGEgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgb2xlL29sZWZvbnQuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBJUGVyc2lzdFN0cmVhbSBpbnRlcmZhY2Ugb24gdGhlIE9MRSBmb250IG9iamVjdC4KCgkqIG1pc2NlbXUvZW11bGF0ZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSBmdW5jdGlvbiBCWD02IHJvdW5kIFNUMCB0byBpbnRlZ2VyLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3dpbmdkaS5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCS0gQ2hhbmdlZCBMVk1fU0VUSVRFTVBPU0lUSU9OIC0+IExWTV9TRVRJVEVNUE9TSVRJT04zMgoJICAgICAgICAgIExWTV9TRVRJVEVNUE9TSVRJT04xNiAtPiBMVk1fU0VUSVRFTVBPU0lUSU9OCgktIEFkZGVkIHNvbWUgbWlzc2luZyBzdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucyB0byB3aW5nZGkuaAoJLSBBZGRlZCBwcm9wZXIgZGVmaW5lcyBmb3IgR2V0Q2hhcldpZHRoc1hYWAoJLSBBZGRlZCBjKysgcHJvdGVjdGlvbiB0byB3aW5nZGkuaAoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGVsbC5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBtb3N0bHkgY2xlYW51cCBhZnRlciB0aGUgcmVuYW1pbmcKCS0gaW1wbGVtZW50ZWQgU0hJTENyZWF0ZUZyb21QYXRoCgktIHNtYWxsIGNoYW5nZWQgdG8gU0hHZXRGaWxlSW5mbwoKCSogaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglDaGFuZ2VkIHRoZSBETEdURU1QTEFURSBhbmQgRExHSVRFTVRFTVBMQVRFIHR5cGVzIHRvIGFkaGVyZSB0byB0aGUgQVcKCXN0cnVjdHVyZSBmb3IgY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NkZXJyLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglNb3ZlZCBlcnJvciBjb2RlcyB0byBjZGVyci5oLgoKCSogbG9hZGVyL21vZHVsZS5jOiBQZXRlciBHYW50ZW4gPGdhbnRlbkB1bmktYnJlbWVuLmRlPgoJRml4IENyZWF0ZVByb2Nlc3MgdG8gaGFuZGxlIGxwQ29tbWFuZGxpbmUgYmV0dGVyLgoKCSogd2luMzIvaW5pdC5jOiBQZXRlciBHYW50ZW4gPGdhbnRlbkB1bmktYnJlbWVuLmRlPgoJQ2hhbmdlIEdldFN0YXJ0dXBJbmZvQS9XIHRvIHJldHVybiB0aGUgcmVhbCBTdGFydHVwSW5mby4KCgkqIHdpbmRvd3MvbWRpLmM6IEd1eSBBbGJlcnRlbGxpICA8PGdhbGJlcnRlQG5lby5scnVuLmNvbT4+CglIYW5kbGUgbnVsbCB3bmRQdHIgZm9yIG1kaSB3aW5kb3cuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglGaXhlZCBhIGNvdXBsZSBvZiBtaXNzaW5nICNkZWZpbmVzIGZvciBXaW4zMiBBUEkgZnVuY3Rpb25zIHdpdGgKCUFTQ0lJL1VuaWNvZGUgdmVyc2lvbnMuCgoJKiB3aW4zMi9uZXdmbnMuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3dwcm9jcy5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi91dHRodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIFVUUmVnaXN0ZXIgYW5kIFVUVW5SZWdpc3Rlci4KCgkqIGlmMTYzMi9kZGVtbC5zcGVjLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvd2lubnQuaCwgbWlzYy9kZGVtbC5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCUFkZGVkIGNvZGVkIHN0dWJzIGZvciBEZGVRdWVyeUNvbnZJbmZvICgxNiAmIDMyIGJpdCksIERkZUFkZERhdGEgKDMyCgliaXQpLCBEZGVBYmFuZG9uVHJhbnNhY3Rpb24gKDMyIGJpdCksIERkZUltcGVyc29uYXRlQ2xpZW50ICgzMikKCURkZVNldFF1YWxpdHlPZlNlcnZpY2UsIERkZVNldFVzZXJIYW5kbGUuCglDb3JyZWN0ZWQgaGVhcCBoYW5kbGluZyBpbiBEZGVJbml0aWFsaXplVywgcmVmaW5lZCBDcmVhdGVNdXRleCBlcnJvcgoJaGFuZGxpbmcuCglHZW5lcmFsIHRpZHlpbmcuCgoJKiBpZjE2MzIvb2xlY2xpLnNwZWMsIGluY2x1ZGUvb2xlLmgsIG9sZS9vbGVjbGkuYzoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglBZGRlZCBwcm90b3R5cGVzIGZvciBPbGVRdWVyeUxpbmtGcm9tQ2xpcCwgT2xlUXVlcnlDcmVhdGVGcm9tQ2xpcCwKCU9sZUNyZWF0ZUxpbmtGcm9tQ2xpcCwgT2xlQ3JlYXRlRnJvbUNsaXAsIE9sZVF1ZXJ5VHlwZSwKCU9sZVJldmVydENsaWVudERvYywgT2xlRW51bU9iamVjdHMuCgoJKiByZWxheTMyL29sZWNsaTMyLnNwZWM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglEZWZpbml0aW9uIGZvciBPbGVDcmVhdGVMaW5rRnJvbUNsaXAgd2FzIGluY29ycmVjdC4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hc2sgb3V0IHRoZSB1cHBlciAxMiBiaXRzIGZyb20gdGhlIHJlc291cmNlaWQsIGp1c3QgbGlrZSB3aW45NSBkb2VzLgoKCSogQlVHUzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVcGRhdGVkIGJ1ZyBsaXN0IGJ5IG15IGtub3dsZWRnZSBvZiB0aGVtLgoKCSogb2xlL3N0b3JhZ2UzMi5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVN0Z0NyZWF0ZURvY2ZpbGUgYWNjZXB0cyBOVUxMIGFzIGEgZmlsZSBuYW1lLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBDYW9sYW4gTWNOYW1hcmEgPENhb2xhbi5NY05hbWFyYUB1bC5pZT4KCUFkZGVkIHN1cHBvcnQgZm9yIGFsdGVybmF0ZSBESUJCSVRCTFQgbGF5b3V0LgoKCSogZGVidWdnZXIvbXNjLmM6IFNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0PgoJQnVmZmVyIHNpemUgYnVnIGluIExvY2F0ZURlYnVnSW5mb0ZpbGUuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglJbXByb3ZlZCAiZXJyb3IiIG1lc3NhZ2UgcmVhZGFiaWxpdHkuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOiBGaXhlZCBwcm9jZXNzX3NpZ25hbGVkICh0aGFua3MgdG8gVXdlIEJvbm5lcykuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEZpeGVkIG1ha2UgZGVwZW5kCgpGcmkgTWFyIDEyIDE3OjQyOjUwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgaW5jbHVkZS9pcGFkZHJlc3MuaCwgaW5jbHVkZS91cGRvd24uaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglSZXBsYWNlZCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBXTkQgc3RydWN0dXJlIGJ5IGNvcnJlc3BvbmRpbmcgY2FsbHMgdG8KCVdpbjMyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgc29tZSBidWdzIGludHJvZHVjZWQgYnkgdGhlIGF1dG9tYXRlZCByZW5hbWluZy4KCgkqIHJlc291cmNlcy8uY3ZzaWdub3JlOiBBZGRlZCBzeXNyZXNfUnUucwoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIHRoZSBsaXN0dmlldyBjb250cm9sIHRvIGFkZCB0aGUgcmVwb3J0IHZpZXcgYW5kIGZpeCBzb21lIGJ1Z3MKCWZvciB0aGUgbGlzdCB2aWV3LgoKCSogbWlzYy9zaGVsbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdXNlIG9mIFdORCBzdHJ1Y3QuCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkICNpZmRlZiBIQVZFX1dDVFlQRV9ILgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIFdORCBzdHJ1Y3QuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNZXNzYWdlIHRyYW5zbGF0aW9uIGZvciBXTV9XSU5JTklDSEFOR0UuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJb2JtX2Nsb3NlZF85NSBzaG91bGQgbm90IGJlIGRyYXduIGludmVydGVkLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIFdORCBzdHJ1Y3QuCgoJKiBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaDoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wcm92ZWQgcGVyZm9ybWFuY2UuCgoJKiB3aW5kb3dzL2RjZS5jOiBTdGVwaGFuZSBMdXNzaWVyIDxTdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUNyZWF0ZSBhIG5ldyBEQyBpbiBHZXREQ0V4IHdoZW4gbm9uZSBhcmUgYXZhaWxhYmxlLgoKCSogb2xlL29sZTJkaXNwLmMsIG9sZS92YXJpYW50LmMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgRG9zRGF0ZVRpbWVUb1ZhcmlhbnQoKSBhbmQgU3lzQWxsb2NTdHJpbmdCeXRlTGVuKCkgZnVuY3Rpb25zLgoKCSogY29udHJvbHMvY29tYm8uYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUNoYW5nZWQgdGhlIGJ1dHRvbiBzdGF0ZSB0byAidXAiIGFzIHNvb24gYXMgaXQgaXMga25vd24gdGhhdCB0aGUKCXNlbGVjdGlvbiBoYXMgYmVlbiBjYW5jZWxsZWQsIHNvIHRoZSBidXR0b24gaXMgcmVkcmF3biBpbiB0aGUgInVwIgoJc3RhdGUuCgoJKiBtaXNjZW11L2luc3RyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW11bGF0ZSAod2VsbCwgaWdub3JlKSBtb3YgY3IwLGVheCBhbmQgbW92IGVheCxjcjAuCgpXZWQgTWFyIDEwIDE4OjAzOjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oLCBvbGUvY29tcG9iai5jLCBvbGUvZ3VpZC5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZWNsaS5jLCBvbGUvb2xlZGxnLmMsIG9sZS9vbGVvYmouYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL0F0dGljL3dpbnR5cGVzLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2ltbS5oLCBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlMnZlci5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93dHlwZXMuaDoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRkZWQgYSBsb3Qgb2YgbmV3IE9MRSBpbnRlcmZhY2VzLgoKCSogZG9jdW1lbnRhdGlvbi9sYW5ndWFnZXMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYywgcmVzb3VyY2VzL01ha2VmaWxlLmluLCByZXNvdXJjZXMvc3lzcmVzLmMsIHJlc291cmNlcy9zeXNyZXNfUnUucmM6CglBbGV4YW5kZXIgS2FuYXZpbiA8YWtAY2F2ZS5ob3Auc3R1Lm5ldmEucnU+CglBZGRlZCBzdXBwb3J0IGZvciBSdXNzaWFuIGxhbmd1YWdlLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVGVtcG9yYXJ5IGZpeDogQWN0aXZhdGUgMTYtYml0IHN5c3RlbSB0aW1lciBjYWxsYmFjayByb3V0aW5lcywgYnV0Cglza2lwIGNhbGxpbmcgdGhlbSBpZiB0aW1lciBzaWduYWwgb2NjdXJlZCB3aGlsZSBjdXJyZW50IHRocmVhZCB3YXMKCWhvbGRpbmcgdGhlIFdpbjE2TG9jayAodG8gcHJldmVudCAxNi1iaXQgc3RhY2sgY29ycnVwdGlvbikuCgoJKiBpbmNsdWRlL3N5c2xldmVsLmgsIHNjaGVkdWxlci9zeXNsZXZlbC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBfQ29uZmlybVdpbjE2TG9jayAoS0VSTkVMMzIuOTYpLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIHNvbWUgY2xlYW4gdXAgaW4gaGFuZGxpbmcgb2YgZGVwdGgKCS0gbW9yZSBkZXB0aCBjb252ZXJzaW9uIHJvdXRpbmVzIGZvciBYMTEgKDE1LCAxNiBhbmQgMzIgLT4gOCkKCgkqIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgU2VuZE1lc3NhZ2VUaW1lb3V0KCkgZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9DaGFuZ2VMb2csIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvc2VhcmNoLmM6CglNYXJjZWwgQmF1ciA8bWJhdXJAZzI2LmV0aHouY2g+CglBZGRlZCBCb3llci1Nb29yZSB0ZXh0IHNlYXJjaC4KCgkqIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgVVNFUi5EZXN0cm95SWNvbjMyIHRvIENhbGxvdXQgc3RydWN0LgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL2NvbnZlcnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRGVsZXRlZCBORV9GcmVlUEVSZXNvdXJjZSgpLgoKCSogaW5jbHVkZS91c2VyLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgd2luZG93cy91c2VyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gY3Vyc29yL2ljb24gaGFuZGxpbmcgY2hhbmdlcy4KCgkqIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgYWNjZXNzaW5nIGJvdGggTkUgYW5kIFBFIHJlc291cmNlcyB3aXRoIGJvdGggMTYtIGFuZCAzMi1iaXQgQVBJLgoJSG9vayBjdXJzb3IvaWNvbiBkZXN0cnVjdGlvbiBpbnRvIEZyZWVSZXNvdXJjZSAobGlrZSBXaW45NSkuCgoJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgb2JqZWN0cy9jdXJzb3JpY29uLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIFdpbjk1LXN0eWxlIHNoYXJlZCBjdXJzb3IvaWNvbiBjYWNoZS4KCU1lcmdlZCBORSBhbmQgUEUgcmVzb3VyY2UgaGFuZGxpbmcuCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZm9sZGVyLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2ZvbGRlcjI6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgZm9sZGVyIGJpdG1hcCBjb2xvcnMgZm9yIDhicHAuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzogQ2FvbGFuIE1jTmFtYXJhIDxDYW9sYW4uTWNOYW1hcmFAdWwuaWU+CglXaW5kb3dzIGRvZXNudCBhbGxvdyBkYXNoZWQgYW5kIGRvdHRlZCBsaW5lcyA+IDEuCgoJKiBvbGUvY29tcG9iai5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHJlZmVyZW5jZS1jb3VudGluZyBwcm9ibGVtIGluIHRoZSBleHRlcm5hbCBsb2NrIG1lY2hhbmlzbS4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgc2ltcGxlIGJ1ZyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNoZWxsVmlldyBvYmplY3RzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBpbmNsdWRlL3NoZWxsLmg6CglTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUFkZGVkIHNvbWUgZXh0cmEgQ1NJRExzLgoKCSogbG9hZGVyL21vZHVsZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQWxsb3cgbHBDb21tYW5kTGluZSA9PSBOVUxMIGluIENyZWF0ZVByb2Nlc3MoKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogVG9Bc2NpaSBzaG91bGQgbm90IGdlbmVyYXRlIEFTQ0lJIGNvZGUgd2hlbiBrZXktdXAgZmxhZyBpcyBzZXQuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQXZvaWQgdW5uZWNlc3NhcnkgR3JhcGhpY3NFeHBvc2UgZXZlbnRzLgoKCSogb2xlL3NhZmVhcnJheS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBpbmRleCBjYWxjdWxhdGlvbnMgb2YgdGhlIHVwcGVyIGFuZCBsb3dlciBib3VuZHMgb2YgYSBzYWZlYXJyYXkuCglGaXhlZCBhIHdyb25nIGluaXRpYWxpemF0aW9uIG9mIHRoZSBWVCBzaXplcyBhcnJheS4KCgkqIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSBSZWxlYXNlU3RnTWVkaXVtIG1ldGhvZC4KClR1ZSBNYXIgIDkgMTc6NDc6NTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHJlbGF5MzIvbnRkbGwuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBzb3J0ZWQgQVBJIGJ5IGdyb3VwcwoJLSBuZXcgc3R1YnM6ICBOdFF1ZXJ5RGlyZWN0b3J5RmlsZSwgIFp3UXVlcnlEaXJlY3RvcnlGaWxlCgktIGltcGwuOiBSdGxBbGxvY2F0ZUhlYXAsIFJ0bENyZWF0ZUhlYXAsIFJ0bERlc3Ryb3lIZWFwLCBSdGxGcmVlSGVhcCwKCSAgUnRsR2V0RGFjbFNlY3VyaXR5RGVzY3JpcHRvciwgUnRsR2V0U2FjbFNlY3VyaXR5RGVzY3JpcHRvcgoJLSBpbXBsLiBieSBSZXggSm9sbGlmZiAocmV4QGx2Y2FibGVtb2RlbS5jb20pOiBSdGxUaW1lVG9UaW1lRmllbGRzLAoJICBSdGxUaW1lRmllbGRzVG9UaW1lCgoJKiBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS93aW5udC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYW55IG5ldyBwcm90b3R5cGVzLgoKCSogbG9hZGVyL3Jlc291cmNlLmMsIGluY2x1ZGUvbW9kdWxlLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeCB1c2Ugb2Ygd3JvbmcgcHJvdG90eXBlIGZyb20gbnRkbGwuaC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFrZSBtb3JlIGZ1bmN0aW9ucyBqdXN0IGNhbGxpbmcgZG93biB0byBudGRsbC4KCU5ldzogR2V0U2VjdXJpdHlEZXNjcmlwdG9yU2FjbC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2FmbS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBY2NlcHQgIk5vcm1hbCIgYXMgYSB2YWxpZCBBRk0gd2VpZ2h0LgoKCSogb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmg6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJU21hcnRlciB3YXkgb2Ygc2VhcmNoaW5nIGZvciBhIGZyZWUgYmxvY2suCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBEaXJlY3RlZFlpZWxkKCkgb25seSB0byAxNi1iaXQgdGFza3MgaW4gUmVwbHlNZXNzYWdlKCkuCgoJKiBsaWJ0ZXN0L2hlbGxvNS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvcnJlY3RlZCBjYXN0IHNvIGhlbGxvNSBjb21waWxlcyBhZ2Fpbi4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IE5vcm1hbiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCURvbid0IGNvcHkgbHBzdHJGaWxlVGl0bGUgaWYgZ2l2ZW4gTlVMTCBwb2ludGVyIGZvciB0aGlzLgoJRGVscGhpIDIuMCBwYXNzZXMgTlVMTCBmb3IgbHBzdHJGaWxlVGl0bGUgdG8gR2V0T3Blbi9TYXZlRmlsZU5hbWUuCgoJKiBtaXNjL3dpbnNvY2suYywgaW5jbHVkZS93aW5zb2NrLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeCBicm9rZW4gX2NvbnZlcnRfc29ja29wdCBmb3IgSVBQUk9UT19UQ1AgY2FzZXMsIGFkZGVkIFRDUF9OT0RFTEFZLgoKCSogbXNkb3MvZHBtaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCV9fYXNtX18gZml4IGFzIHN1Z2dlc3RlZCBieSA8ZGFuaWVsQG1hdC51dGZzbS5jbD4gRGFuaWVsIFNlcnBlbGwsCglyZW1vdmVkIGFkZGl0aW9uYWwgImVheCIgZnJvbSBjbG9iYmVyIGxpc3QsIHNvIGVnY3MtY3VycmVudCBsaWtlcyBpdC4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlRmlsZU1hcHBpbmcgU2V0TGFzdEVycm9yKDApcyBvbiBuZXdseSBjcmVhdGVkIG1hcHBpbmdzLgoKU3VuIEZlYiAyOCAyMDowNToxMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnLy5jdnNpZ25vcmUsIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9nZW5lcmljLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBtaXNjL0F0dGljL2NvbW1kbGcuYywgbWlzYy9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluOgoJS2xhYXMgdmFuIEdlbmQgPEtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglDcmVhdGUgYSBuZXcgc3ViZGlyZWN0b3J5IGZvciB0aGUgY29tbW9uIGRpYWxvZyBib3ggRExMIGFuZCBtb3ZlIGFsbAoJY29kZSBmcm9tIC9taXNjL2NvbW1kbGcuYyB0byB0aGlzIGRpcmVjdG9yeS4gIEFsc28gbWFkZSBhIHN0YXJ0IGluCglkb2N1bWVudGluZyB0aGUgQVBJIGNhbGxzLgoKCSogbWlzYy93aW5zb2NrLmMsIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBpbmNsdWRlL0F0dGljL3dpbnR5cGVzLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vcmUgaW5jbHVkZSBvcHRpbWl6YXRpb25zLgoKCSogd2luZG93cy9kcml2ZXIuYywgd2luZG93cy93aW5wcm9jLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtc2Rvcy9kcG1pLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBvYmplY3RzL2RjLmMsIG9sZS9zdG9yYWdlMzIuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBhIGxvdCBvZiB3YXJuaW5ncyB1c2luZyBXSU5FX1VOVVNFRCwgY2FzdHMsIGNvbW1lbnRpbmcgb3V0IGFuZAoJYWRkaXRpb25hbCB7fS4gUmV3cm90ZSBHZXRDcmVhdGlvbk1vZGVGcm9tU1RHTSBzbyB3ZSBkb24ndCBnZXQKCSJwb3NzaWJsZSB1c2Ugb2YgdW5pbml0aWFsaXplZCB2YXJpYWJsZSIuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNQ0lfT1BFTl9EUklWRVJfUEFSTVMgLSBBZGQgd2luMzIgdmVyc2lvbiBvZiBzdHJ1Y3R1cmUuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgbXNkb3MvaW50MjEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlZCBDcmVhdGVEaXJlY3RvcnkgTGFzdEVycm9yIHJldHVybnMgdG8gbWF0Y2ggV2luMzIgKGZvdW5kIG91dCBieQoJZXhwZXJpbWVudCkuIEFkYXB0ZWQgaW50MjEgQ3JlYXRlRGlyZWN0b3J5IGNhbGwgdG8gc3RpbGwgcmV0dXJuIHRoZQoJY29ycmVjdCBET1MgZXJyb3IgY29kZXMgYWNjb3JkaW5nIHRvIFJhbHBoIEJyb3duLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgcmVsYXkzMi9kZHJhdy5zcGVjOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGZ1bmN0aW9uIERpcmVjdERyYXdFbnVtZXJhdGVFeAoJLSBhZGRlZCAob3IgY29ycmVjdGVkKSBjaGVjayBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZW51bWVyYXRpb24gZnVuY3Rpb25zCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglCZXR0ZXIgZGV0ZWN0aW9uIG9mIG9sZCAoaS5lLiBub24gT3BlbkdMIDEuMiBjb21wbGlhbnQpIHZlcnNpb24gb2YgTWVzYS4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1zbWVpc3NuQHN0dWQuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBtaXNzaW5nIDxzeXMvdHlwZXMuaD4uCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGRlZCB0aGUgYnV0dG9uIHN0YXRlcyBhcyByZXR1cm5lZCBieSBJc0RsZ0J1dHRvbkNoZWNrZWQoKS4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIHF1b3RlZCBmaWxlIG5hbWVzIGluIENyZWF0ZVByb2Nlc3MoKS4KCgkqIGZpbGVzL2ZpbGUuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2VydmVyL2ZpbGUuYywgd2luMzIvY29uc29sZS5jOgoJQ0xJRU5UX1dhaXRSZXBseTogZG9uJ3QgY2xlYXIgbGFzdCBlcnJvciBvbiBzdWNjZXNzOyBmaXhlZCBjYWxsZXJzCglhY2NvcmRpbmdseSAoYmFzZWQgb24gYSBwYXRjaCBieSBKdWVyZ2VuIFNjaG1pZWQpLgoKCSogbXNkb3MvaW50MTAuYzogSmVzcyBIYWFzIDxkZXNtb2tlQGhvdG1haWwuY29tPgoJQWRkZWQgc29tZSBzdXBwb3J0IGFuZCBzdHVicyBmb3IgVkVTQSB0byBtc2Rvcy9pbnQxMC5jLgoKCSogb2xlL2JpbmRjdHguYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9pZnMuYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9tb25pa2VyLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlMm5scy5jLCBvbGUvb2xlY2xpLmMsIG9sZS9vbGVkbGcuYywgb2xlL29sZWZvbnQuYywgb2xlL29sZW9iai5jLCBvbGUvb2xlc3ZyLmMsIG9sZS9zYWZlYXJyYXkuYywgb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UuYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvdHlwZWxpYi5jLCBvbGUvdmFyaWFudC5jLCB0b29scy9mbnQyYmRmLmMsIHdpbmRvd3MvZGlzcGxheS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5c3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBsaWJyYXJ5L3dpbmVzdHViLmMsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9zb3VuZC5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIGNvbnRyb2xzL21lbnUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW9yZSBpbmNsdWRlIG9wdGltaXNhdGlvbnMgYW5kIGZpeGVzLgoKCSogc2VydmVyL3Byb2Nlc3MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglvcGVuX29iamVjdCBzaG91bGQgcmV0dXJuIEVSUk9SX0ZJTEVfTk9UX0ZPVU5EIHdoZW4gdGhlIG5hbWVkIG9iamVjdAoJaXMgbm90IGZvdW5kLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUJldHRlciBlcnJvciBtZXNzYWdlLgoKCSogc2NoZWR1bGVyL0F0dGljL2szMm9iai5jLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvQXR0aWMvazMyb2JqLmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL3Rhc2suYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy90b29saGVscC5jOgoJVXNlIHNlcnZlciBoYW5kbGVzIGRpcmVjdGx5IGZvciBXaW4zMiBoYW5kbGVzLiBSZW1vdmVkIHVzZSBvZiBLMzJPQkouCgoJKiB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgb2xlL29sZWZvbnQuYywgb2xlL29sZW9iai5jLCBzY2hlZHVsZXIvQXR0aWMvazMyb2JqLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGxvYWRlci9uZS9jb252ZXJ0LmMsIG1pc2MvbmV0d29yay5jLCBtaXNjL3BvcnQuYywgbWlzY2VtdS9tYWluLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9kcGxheS5jLCBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbWF1eC5jLCBjb25zb2xlL3h0ZXJtLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCURhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCS0gZml4ZWQgbWlzc2luZyBzdGRsaWIuaCBhbmQgc3RyaW5nLmggaW5jbHVkZXMgZXZlcnl3aGVyZQoJLSByZW1vdmVkIGEgY291cGxlIG9mIHVubmVlZGVkIHN0ZGxpYi5oIGFuZCBzdGRpby5oIGluY2x1ZGVzCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJUHJvY2VzcyBhbmQgdGhyZWFkIGlkIG5vdyB1c2UgdGhlIHNlcnZlci1zaWRlIGlkIGluc3RlYWQgb2YgYW4KCW9iZnVzY2F0ZWQgcG9pbnRlci4KCgkqIGxpYnRlc3QvZ3VpdGVzdC5jLCBsaWJ0ZXN0L2d1aXRlc3QucmMsIGxpYnRlc3QvZ3VpdGVzdC5yaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVGhlIFdpbmRvd3MgR1VJIGJlaGF2aW91ciB0ZXN0ZXIgdXNlZCBvbiB0aGUgV2luZG93cyBjb21wdXRlci4gIEl0IHdhcwoJdXNlZCB3aXRoIEJvcmxhbmQgQysrIDQuNTIsIGJ1dCBzaG91bGQgYmUgZWFzeSB0byBhZGFwdCB0byBXaW5lbGliIGJ5Cgl3aG9ldmVyIGZlZWxzIGxpa2UgaXQ7IEkgaGF2ZW4ndCwgSSBqdXN0IHJlbGVhc2VkIHRoaXMgdXNlZnVsIHRlc3QgYXBwCglpbiBjYXNlIGl0IHdvdWxkIGJlbmVmaXQgb3RoZXIgZGV2ZWxvcGVycy4KCgkqIGRvY3VtZW50YXRpb24vZ3VpOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVRoaXMgZmlsZSBkZXRhaWxzIHRoZSByZXN1bHRzIChtZXNzYWdlIHRyYWNlcykgdGhlIEdVSSBiZWhhdmlvdXIKCXRlc3RlciBhcHAgZ2F2ZSB1bmRlciByZWFsIFdpbmRvd3MgZm9yIHZhcmlvdXMgZXZlbnRzLiBJdCB3YXMgdXNlZnVsCglmb3Igc29tZSBvZiBteSBkZWJ1Z2dpbmcgYXQgbGVhc3QsIHBlcmhhcHMgaXQgY291bGQgYmUgb2Ygc29tZSB1c2UgdG8KCW90aGVyIFdpbmUgR1VJIGRlYnVnZ2VycyBhcyB3ZWxsLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgaW5jbHVkZS93aW5ubHMuaCwgbWlzYy93aW5zb2NrLmMsIG1pc2Mvd2luc29ja19kbnMuYywgbXVsdGltZWRpYS9kc291bmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bXNtZWlzc25Ac3R1ZC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNvbWUgU29sYXJpcyBmaXhlcy4gPHJlc29sdi5oPiBuZWVkcyA8YXJwYS9uYW1lc2VyLmg+LCBzaWdfY29udGV4dC5oCgluZWVkcyB0byBkZWZpbmUgSEFORExFUl9DT05URVhULCB3Y3R5cGUuaCBkb2VzIG5vdCBsaWtlICd3c3ByaW50ZicKCWRlZmluZWQsIG1zZG9zL2RwbWkuYyBuZWVkcyAic3RhY2tmcmFtZS5oIiB0b28sIGFuZCBtdWx0aW1lZGlhL2Rzb3VuZC5jCgluZWVkcyAid2ludXNlci5oIi4KCgkqIHdpbjMyL2tlcm5lbDMyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJR2V0QmluYXJ5VHlwZVtBV10gbW92ZWQgdG8gbG9hZGVyL21vZHVsZS5jLCBtb2RpZmllZCB0byByZWNvZ25pemUgLkNPTQoJYW5kIC5QSUYgZmlsZXMuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBtaXNjZW11L21haW4uYywgbXNkb3MvZHBtaS5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIENyZWF0ZVByb2Nlc3MgY2hhbmdlcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTkUgbW9kdWxlcyBhZGFwdGVkIHRvIENyZWF0ZVByb2Nlc3MgY2hhbmdlcy4KCUxvYWRNb2R1bGUxNi9Mb2FkTGlicmFyeTE2IHJlb3JnYW5pemF0aW9uLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQcm9jZXNzIGNyZWF0aW9uIHNlcXVlbmNlIHJlb3JnYW5pemVkOgoJLSBSZW1vdmVkIGluc3RhbmNlIGRhdGEgc2VnbWVudCBmb3IgYWxsIGJ1dCBORSBtb2R1bGVzLgoJLSBDaGVjayBiaW5hcnkgdHlwZSBpbiBDcmVhdGVQcm9jZXNzIGJlZm9yZSBsb2FkaW5nIG1vZHVsZS4KCS0gVW5peCBwcm9jZXNzIGNyZWF0aW9uIG1vdmVkIGZyb20gV2luRXhlYyB0byBDcmVhdGVQcm9jZXNzLgoJLSBCdWdmaXg6IGZpbGwgaW4gdGhkYi0+dGViLmh0YXNrMTYgbWVtYmVyIGNvcnJlY3RseS4KCgkqIHdpbmRvd3MvaW5wdXQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQ29kZSB0byByZXR1cm4gZGVmYXVsdCBsYW5ndWFnZSBjb2RlIGFzIGtleWJvYXJkIGxheW91dC4KCS0gSW1wbGVtZW50ZWQgb3RoZXIgc3R1YnMgYXNzb2NpYXRlZCB3aXRoIGtleWJvYXJkIGxheW91dDoKCSAgR2V0S2V5Ym9hcmRMYXlvdXROYW1lQSwgQWN0aXZhdGVLZXlib2FyZExheW91dCwKCSAgTG9hZEtleWJvYXJkTGF5b3V0W0FXXSwgR2V0S2V5Ym9hcmRMYXlvdXRMaXN0LgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvcmVzb3VyY2UuaCwgbWlzYy9BdHRpYy9jb21tZGxnLmMsIHJlc291cmNlcy9zeXNyZXNfRW4ucmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCVByZWxpbWluYXJ5IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQcmludERsZ0Egc3R1Yi4KCgkqIG9sZS9ubHMvbmxkLm5sczogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglOb3cgY29tcGxpYW50IHRvIHRoZSBEdXRjaCBzdGFuZGFyZHMuCgoJKiB3aW5kb3dzL3dpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZJTkRfV25kUHRyIHNob3VsZCBub3Qgc2V0IEVSUk9SX0lOVkFMSURfV0lORE9XX0hBTkRMRSB3aGVuIGhXbmQ9MC4KCgkqIG1zZG9zL2Rvc21lbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgY291cGxlIG9mIGRvc21lbSBibG9jayByZXNpemUgYnVncy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBubyBtb3JlIDNEIGNhcGFiaWxpdGllcyBpZiBEaXJlY3QzRCBzdXBwb3J0IGlzIG5vdCBjb21waWxlZCBpbgoJLSBzb21lIGRlYnVnIG1lc3NhZ2VzIGNsZWFuLXVwIChyZXBsYWNlZCBmcHJpbnRmcyBieSBEVU1QcykKCgkqIG1pc2MvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdlIGdvdCBwYXNzZWQgYSBOVUxMIERpYWxlY3QgcHRyIGFuZCBhY2Nlc3NlZCBpdCB1bnByb3RlY3RlZC4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgbWFwcGluZ3Mgd2l0aCBubyBhc3NvY2lhdGVkIGZpbGUuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9wcm9jZXNzLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RyYWNlLmM6CglSZW1vdmVkIGRzdF9oYW5kbGUgaW4gZHVwbGljYXRlX2hhbmRsZSByZXF1ZXN0LgoJQWRkZWQgaW5oZXJpdCBmbGFnIGluIGNyZWF0ZV9tYXBwaW5nIHJlcXVlc3QuCgoJKiBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIG9sZS9zYWZlYXJyYXkuYywgb2xlL3ZhcmlhbnQuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHN1cHBvcnQgZm9yIGFycmF5cyBhbmQgc2FmZSBhcnJheXMgaW4gVkFSSUFOVCBkYXRhCglzdHJ1Y3R1cmVzLiBBbHNvIG1vdmVkIHRoZSBTQUZFQVJSQVkgZGVmaW5pdGlvbiAoeWV0IGFnYWluKSB0byB0aGUKCW9ial9vbGVhdXQuaCBmaWxlLgoKCSogd2luZS5pbmk6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIEZpbGVzeXN0ZW0gZG9jdW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZm9sZGVyLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2ZvbGRlcjI6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJTWFkZSBmb2xkZXIgaWNvbnMgZ3JheS15ZWxsb3cgaW5zdGVhZCBvZiBibHVlLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU9yZGVyIG9mIHNlbmQgbWVzc2FnZSBwcm9jZXNzaW5nIHdhcyBub3QgcmVzcGVjdGVkIGFuZCB0aGUgbWVzc2FnZQoJc3RhY2tlZCBsYXN0IGZpbmlzaGVkIGFmdGVyIHRoZSBtZXNzYWdlIHN0YWNrZWQgZmlyc3QuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBjaGVja3MgdG8gZ3VhcmQgYWdhaW5zdCBOVUxMIGFjdGl2ZSB3aW5kb3cuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBOb3JtYW4gU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglEb24ndCBjaGVjayBjaGlsZHJlbiBvZiBkaXNhYmxlZCBvciBpbnZpc2libGUgY29udHJvbHMgZm9yIGRpYWxvZwoJa2V5Ym9hcmQgYWNjZWxlcmF0b3JzLiBGaXhlcyBwcm9ibGVtcyB3aXRoIGRpYWxvZ3Mgd2l0aCB0YWIgYm94ZXMuCgoJKiBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgQ29UYXNrTWVtUmVhbGxvYyBBUEkuIEFsc28gY2xlYW4tdXAgYXJvdW5kIHRoYXQgQVBJCgljYWxsLgoKCSogb2xlL3N0b3JhZ2UzMi5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgbWlzc2luZyBSZWxlYXNlLgoJU1RHTV9DUkVBVEUgc2hvdWxkIHRyYW5zbGF0ZSB0byBDUkVBVEVfQUxXQVlTLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGcmkgRmViIDI2IDEyOjMzOjIxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBERVZFTE9QRVJTLUhJTlRTOiBVcGRhdGVkIGZvciBuZXcgbmFtaW5nIGNvbnZlbnRpb25zLgoKCSogKi8qOiBMYXJnZS1zY2FsZSByZW5hbWluZyBvZiBhbGwgV2luMzIgZnVuY3Rpb25zIGFuZCB0eXBlcyB0bwogCXVzZSB0aGUgc3RhbmRhcmQgV2luZG93cyBuYW1lcy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVGh1IEZlYiAyNSAxODoxMTo0MCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9tYWluLmM6IEFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCUZvciB2YXJpb3VzIHJlYXNvbnMgc29tZSBvZiBvdXIgbGlid2luZSBleGVjdXRhYmxlcyBtdXN0IGhhdmUgYSAiLiIgaW4KCXRoZWlyIGZpbGUgbmFtZXMuIFRoZSAiLiIgY2F1c2VzIHRyb3VibGUgd2hlbiB0aGUgZmlsZSBuYW1lIGlzIHVzZWQgYXMKCXRoZSBjbGFzcyBuYW1lIGZvciBhbiBYIHJlc291cmNlIGFzIHdpbmUgZG9lcyBmb3IgY29tbWFuZCBsaW5lIHBhcnNpbmcKCXVuZGVyIFguCgoJKiB3aW5kb3dzL3dpbi5jOgoJTWFrZSBHZXRXaW5kb3dMb25nKEdXTF9IV05EUEFSRU5UKSByZXR1cm4gdGhlIHNhbWUgdGhpbmcgYXMKCUdldFBhcmVudDMyOyBzdWdnZXN0ZWQgYnkgRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+LgoKCSogaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvd2ludHlwZXMuaDoKCURhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCUFkZGVkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSBvbiBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbgoJaGVhZGVyIGZpbGVzLgoKCSogZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzOiBBZGFtIHRoZSBKYXp6IEd1eSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglBZGRlZCAiVGhlIEVhc3kgV2F5IiBhbmQgIlRoZSBIYXJkIFdheSIsIGxhcmdlbHkgZmF2b3JpbmcgdGhlIGVhc3kgd2F5LAoJd2hpY2ggdXNlcyBteSBidWdfcmVwb3J0LnBsIHNjcmlwdC4KCUFkZGVkIGluZm8gb24gYSBjb21tYW5kIHRoYXQgY2FuIGJlIHJ1biBvbiBhbGwgc2hlbGxzIHRvIHByaW50IGRlYnVnCgltc2dzIHRvIGEgZmlsZSBhbmQgbm90IHRvIHh0ZXJtLgoKCSogbXNkb3MvZHBtaS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtc21laXNzbkBzdHVkLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTmVlZHMgdGhyZWFkLmggZm9yIG5vbi1MaW51eC4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglBZGRpbmcgb2YgbmV3IGZ1bmN0aW9ucyB0byBtYWtlIHRoZSB3bmQgc3RydWN0IHRocmVhZCBzYWZlLiBBZGRpbmcgb2YKCWlyZWZDb3VudCBpbiB3bmQgc3RydWN0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGNvbnNvbGUvbmN1cnNlcy5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBnZXRia2dkIGFuZCBkZWZpbmUgSEFWRV9HRVRCS0dELgoKCSogaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS93aW5lL29ial9jYWNoZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2Nvbm5lY3Rpb24uaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG9sZS9vbGVmb250LmM6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCU1hbnkgaW50ZXJmYWNlIGRlY2xhcmF0aW9ucyB0aGF0IG9yaWdpbmF0ZWQgZnJvbSBvbGVpZGwuaCwgb2FpZGwuaCBhbmQKCW9jaWRsLmggc2VwYXJhdGVkIGludG8gc29tZXdoYXQgcmVsZXZhbnQgb2JqXyogZmlsZXMuCgoJKiBmaWxlcy9kcml2ZS5jLCBvbGUvY29tcG9iai5jLCByZXNvdXJjZXMvc3lzcmVzLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJRml4ZWQgd2FybmluZyBhbmQgY29tcGlsYXRpb24gZXJyb3JzLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkIGluY2x1ZGVzIG9mIHdpbmUvKiBoZWFkZXJzLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglNYWRlIG1lc3NhZ2UgIlJlc291cmNlIG5vdCBmb3VuZCIgV0FSTi4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBpbmNsdWRlL3NobG9iai5oOgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QENPUkVMLkNBPgoJLSBVc2UgdGhlIG5ldyBDT00gZGVmaW5pdGlvbiBtYWNyb3MgaW4gdGhlIGhlYWRlci4KCS0gUHV0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgb2JqZWN0IGluIHRoZSBjb250bWVudS5jLgoJLSBNYWtlIGFwcHJvcHJpYXRlIG5hbWUgY2hhbmdlcyBpbiBjb250bWVudS5jLgoKCSogbWlzYy9yZWdpc3RyeS5jLCBpbmNsdWRlL3dpbnJlZy5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCVp5Z28gQmxheGVsbCA8enlnb2JAY29yZWwuY2E+CglNb2RpZmllcyBwYXJhbWV0ZXIgbGlzdCBvZiBhIGNvdXBsZSBvZiBmdW5jdGlvbnMgdG8gY29tcGx5IHdpdGggU0RLLgoKCSogd2luZG93cy9zY3JvbGwuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCVNjcm9sbERDMzIgbW9kaWZpZWQgdG8gcmV0dXJuIHJlY3QgaW4gbG9naWNhbCBjb29yZGluYXRlLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QENPUkVMLkNBPgoJQWRkcyBDKysgbmFtZWxlc3MgdW5pb24gc3VwcG9ydCB0byB0YWdWQVJJQU5ULgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2xlYXV0by5oOgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QENPUkVMLkNBPgoJTW92ZWQgc29tZSBkZWZpbml0aW9ucyBvdXQgb2Ygb2xlYXV0by5oIGFuZCBpbnRvIG9haWRsLmggdG8gY29uZm9ybSB0byB0aGUgU0RLLgoJUmVtb3ZlZCBhIHJlZHVuZGFudCBpbmNsdWRlLgoJQWRkZWQgc29tZSBjKysgcHJvdGVjdGlvbi4KCldlZCBGZWIgMjQgMTU6NTg6NTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hhbmdlZCBwaWRsIHN0cnVjdHVyZSB0byBtYXRjaCB0aGUgcGlkbCdzIHVzZWQgaW4gbG5rLWZpbGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCByZWFkaW5nIG9mICoubG5rLWZpbGVzLgoKCSogaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJbmV3IGZpbGUsIGluY2x1ZGluZyB0aGUgSVNoZWxsTGluayBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb2RpZmllZCBwcm9jZXNzIGNyZWF0aW9uIHNlcXVlbmNlOiBjYWxsIFBFX0NyZWF0ZU1vZHVsZSBpbiB0aGUKCWNvbnRleHQgb2YgdGhlIG5ldyBwcm9jZXNzIChpbiBUQVNLX0NhbGxUb1N0YXJ0KS4KCUNoYW5nZWQgYWxsIFBFL01vZHVsZSByb3V0aW5lcyBzbyBhcyB0byBhbHdheXMgb3BlcmF0ZSBvbiB0aGUgY3VycmVudAoJcHJvY2VzczsgYWRhcHRlZCBhbGwgY2FsbGVycy4KCgkqIG1zZG9zL2Rvc2NvbmYuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MTYuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MmEuYywgbXNkb3MvaW50ZXJydXB0cy5jLCBtc2Rvcy9pb3BvcnRzLmMsIG1zZG9zL3Z4ZC5jLCBtc2Rvcy94bXMuYywgb2xlL3N0b3JhZ2UuYywgb2xlL3R5cGVsaWIuYywgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgdG9vbHMvYnVpbGQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9pbnB1dC5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgbG9hZGVyL21haW4uYywgbWVtb3J5L2F0b20uYywgbWlzYy9sc3RyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9wdGltaXplZCBhd2F5IG1vcmUgaW5jbHVkZXMsIHJlYWRkZWQgc29tZSAjaW5jbHVkZXMgZm9yIG5lY2Vzc2FyeQoJcHJvdG90eXBlcy4KCgkqIG1zZG9zL2ludDJmLmM6IDxzbWlsQG1lY2hhdHJvbmlrYS5odT4KCUFkZGVkIGxvdy1sZXZlbCBOZXR3YXJlIGluc3RhbGxhdGlvbiBjaGVjay4KCgkqIGluY2x1ZGUvY29uc29sZS5oLCBjb25zb2xlL2ludGVyZmFjZS5jLCBjb25zb2xlL25jdXJzZXMuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkZWQgR2V0QmFja2dyb3VuZENvbG9yIGNhbGwgdG8gdGhlIGNvbnNvbGUgc3RydWN0LiBXaWxsIGJlIHVzZWQKCWxhdGVyLgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglCdWdmaXhlcyBmb3IgSU5UIDEwLzBCIChTZXRCYWNrZ3JvdW5kQ29sb3IpIHRvIHdvcmsgcHJvcGVybHkuCgkoSW50ZXJydXB0IGxpc3QgZGlkIG5vdCBoYXZlIGNvcnJlY3QuKQoKCSogd2luZG93cy9kaW5wdXQuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBzdHVicyBmb3IgdHdvIG1pc3NpbmcgbWV0aG9kcyBvZiBESW5wdXQuCgoJKiBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgYnVnLgoKCSogb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmg6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgbGFyZ2VyIGZpbGVzLgoKCSogb2JqZWN0cy9kaWIuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBidWZmZXIgb3ZlcnJ1biBwcm9ibGVtcyB3aXRoIEdldERJQml0cy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHNvbWUgU2VuZE1lc3NhZ2UgYnVncy4KCgkqIG9sZS9jb21wb2JqLmM6IFN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUZpeCBDT01fRXh0ZXJuYWxMb2NrRnJlZUxpc3QgdG8gZG8gbm90IGZhaWwgd2l0aCBhbiBlbXB0eSBsaXN0LgoKTW9uIEZlYiAyMiAxMDoyMTo1NiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9zdHJpbmcuYzoKCVp5Z28gQmxheGVsbCA8emJsYXhlbGxAZnVycnl0ZXJyb3Iub3JnPgoJSW1wbGVtZW50ZWQgc29tZSBDUlRETEwgc3RyaW5nIGZ1bmN0aW9ucy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9saW5lZGRhLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvY2FyZXQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9yZWN0LmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBpbmNsdWRlL21lbnUuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3N5c21ldHJpY3MuaCwgaW5jbHVkZS92ZncuaCwgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL2pveXN0aWNrLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2lzdHJpbmcuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1hdXguYywgbXVsdGltZWRpYS9tbWlvLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgbXVsdGltZWRpYS90aW1lLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIG1vcmUgcmVjdXJzaXZlIGluY2x1ZGUgZml4ZXMvb3B0aW1pemF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBlbGltaW5hdGVkIG9uZSBlbGVtZW50IG9mIHRoZSBwaWRsIHN0cnVjdCAoZHdTRkdBTykKCS0gY2hhbmdlZCBzb21lIHN1cGVyZmxvdXMgRklYTUUKCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGhlYWRlciB1c2VzIHRoZSBsYXN0IG1hY3JvcyBub3cKCS0gcmV3cm90ZSBJRHJvcFRhcmdldCBhY2NvcmRpbmcgdG8gdGhlIG5ldyBDT00gaGVhZGVycwoJICAod2FzIGxvY2FsIGRlY2xhcmVkIG5vdCB1c2luZyB0aGUgYWxyZWFkeSB3cml0dGVuIHByb3RvdHlwZXMpCgktIGNvcnJlY3RlZCBEcm9wIG1ldGhvZCAod3JvbmcgcGFyYW1ldGVyIGNvdW50KQoKCSogd2luZG93cy9kaW5wdXQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVcGRhdGVkIHRvIHVzZSB0aGUgbGF0ZXN0IENPTSBtYWNyb3MsIElDT01fVlRBQkxFIGFuZCBJQ09NX1RISVMuCglBZGRlZCB0aGUgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIHN0cnVjdHVyZXMuCglJIHJlbWVtYmVyZWQgZnJvbSBhbiBlbWFpbCB0aGF0IGV2ZW4gd2hlbiBhc2tlZCBmb3IgYQoJSURpcmVjdElucHV0RGV2aWNlQSB3aGF0IHdhcyByZXR1cm5lZCB3YXMgYW4gSURpcmVjdElucHV0RGV2aWNlMkEgc28gSQoJY29uc2lkZXJlZCB0aGF0IHdlIHdvdWxkIG9ubHkgaW1wbGVtZW50IHRoZSBsYXR0ZXIuIFRoZQoJSURpcmVjdElucHV0RGV2aWNlQV94eHggbWV0aG9kcyBoYXZlIGJlZW4gcmVuYW1lZCB0bwoJSURpcmVjdElucHV0RGV2aWNlMkFfeHh4LCBhbmQgd2UgYWx3YXlzIHJldHVybiBvdXIgSURpcmVjdElucHV0RGV2aWNlMkEKCWltcGxlbWVudGF0aW9uIGFzIGJlZm9yZS4KCVJlbmFtZWQgdGhlIGltcGxlbWVudGF0aW9uIHN0cnVjdHVyZXMgdG8gWHh4SW1wbC4KCgkqIGluY2x1ZGUvZGlucHV0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXNlIGxhdGVzdCBDT00gbWFjcm9zCglEZWZpbmVkIHRoZSBJRGlyZWN0SW5wdXREZXZpY2VBIGludGVyZmFjZSBpbmRlcGVuZGVudGx5IGZyb20KCUlEaXJlY3RJbnB1dERldmljZTJBLgoJUmVtb3ZlZCB0aGUgMzIgc3VmZml4IG9mIHRoZSBpbnRlcmZhY2VzLiBIb3BlZnVsbHkgdGhpcyB3aWxsIG5vdAoJY2F1c2UgYW55IHByb2JsZW0gd2l0aCB0aGUgcmVuYW1pbmcuCglNb3ZlZCB0aGUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgc3R1ZmYgdG8gZGlucHV0LmMgKHdlbGwsIHRoZQoJaW50ZXJmYWNlcyBhdCBsZWFzdCkuCgpTdW4gRmViIDIxIDE4OjM1OjI4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaDoKCUNoYW5nZWQgaW5pdGlhbCBwcm9jZXNzIGNyZWF0aW9uIHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9ucy4KCVJlbW92ZWQgYSBmZXcgdW51c2VkIGZpZWxkcyBpbiBQREIgYW5kIFRIREIuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVJlbW92ZWQgdGhyZWFkIHF1ZXVlIGZ1bmN0aW9ucy4KCUNoYW5nZWQgaW5pdGlhbCB0aHJlYWQgY3JlYXRpb24gdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb25zLgoJTW92ZWQgc2VydmVyIHN0YXJ0dXAgdG8gVEhSRUFEX0NyZWF0ZUluaXRpYWxUaHJlYWQuCgoJKiBzY2hlZHVsZXIvc3luY2hyby5jOgoJUmVtb3ZlZCB1c2Ugb2YgcGVyLXRocmVhZCB3YWl0X3N0cnVjdCwgY2xlYW5lZCB1cCBhIGJpdC4KCgkqIHNjaGVkdWxlci9rMzJvYmouYywgbWVtb3J5L3ZpcnR1YWwuYzogUmVtb3ZlZCBNRU1fTUFQUEVEX0ZJTEVfT3BzLgoKCSogaW5jbHVkZS93aW5udC5oOiBBZGRlZCBhIGZldyBleGNlcHRpb24gY29kZXMuCgoJKiB3aW5kb3dzL3dpbi5jLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvcGF0aC5oLCBpbmNsdWRlL3Byb2dyZXNzLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9yZXNvdXJjZS5oLCBpbmNsdWRlL3N0cnVjdDMyLmgsIGluY2x1ZGUvdXBkb3duLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnBvcy5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL2NvbW1kbGcuYywgbWlzYy93aW5zb2NrX2Rucy5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBpbmNsdWRlL2RkZV9hdG9tLmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kaXNwZGliLmgsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvZHNvdW5kLmgsIGNvbnRyb2xzL21lbnUuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CgktIEZpeCBoZWFkZXJzIHRvIGluY2x1ZGUgbGVzcyBvciBzbWFsbGVyIGhlYWRlciBmaWxlcy4KCS0gRml4IGhlYWRlciBhbmQgc291cmNlIGZpbGVzIHRvIGluY2x1ZGUgbWlzc2luZyBoZWFkZXIgZmlsZXMgdG8gYXZvaWQKCSAgd2FybmluZ3MgYW5kIGVycm9ycy4KCgkqIGxvYWRlci9zaWduYWwuYywgbWVtb3J5L2xkdC5jLCBtaXNjL3BvcnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlICJnIiAoZ2VuZXJhbCByZWdzKSBpbnRvICJyIiAoaGFyZHJlZ3MpIGluIGNsb25lIC8gbW9kaWZ5X2xkdCAvCgl3aW5lX3NpZ2FjdGlvbiBfX1BJQ19fIGNhc2VzLCBzaW5jZSAiZyIgd2lsbCBub3Qgd29yayB3aXRoCgktZm9taXQtZnJhbWUtcG9pbnRlciAoImciIGlzIHJlZmVyZW5jZWQgdXNpbmcgJWVzcCB3aGljaCB3YXMKCWludmFsaWRhdGVkIGJlZm9yZSkuIEJ1ZyBmb3VuZCBhbmQgKG90aGVyKSBmaXggc3VnZ2VzdGVkIGJ5Cgk8ZGFuaWVsQG1hdC51dGZzbS5jbD4gRGFuaWVsIFNlcnBlbGwuCgoJKiBvbGUvb2xlZm9udC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJcy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgbG9hZGVyL3Rhc2suYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXggcHJvYmxlbSB3aGVyZSB5b3UgbmVlZCBtb3VzZSBhY3Rpdml0eSB0byB1bmxvY2sgc29tZSAxNiBiaXRzCgl0aHJlYWQgd2l0aCBtdWx0aS10aHJlYWRlZCBhcHBzLgoKU2F0IEZlYiAyMCAxNjo0ODo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9vbGVhdXQzMi5zcGVjLCBpbmNsdWRlL0F0dGljL2ludGVyZmFjZXMuaCwgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgaW5jbHVkZS93dHlwZXMuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvZ3VpZC5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZWZvbnQuYywgb2xlL3R5cGVsaWIuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBPbGVDcmVhdGVGb250SW5kaXJlY3QgbWV0aG9kIGFuZCB0aGUgYXNzb2NpYXRlZCBDT00KCW9iamVjdC4gVGhhdCBvYmplY3Qgc3VwcG9ydHMgdGhlIElGb250IGFuZCBJRGlzcGF0Y2ggaW50ZXJmYWNlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBtaXNjL3BvcnQuYywgbWlzYy93aW5zb2NrLmMsIG1pc2Mvd2luc29ja19kbnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUHJvYmxlbXMgcmVwb3J0ZWQgYnkgRG9uYWxkIFBhZ2UsIFBSIDEwNS0xMDcuCgoJKiBjb25zb2xlL25jdXJzZXMuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglNb3JlIGNvbW1lbnRpbmcsIGJldHRlciBkZWJ1Z2dpbmcgb2YgY29sb3IgcHJvYmxlbXMsIGFuZCBzdXBwb3J0IGZvcgoJdGhlIG5ldyBUZXJtaW5hbFR5cGUgb3B0aW9uIGluIHdpbmUuaW5pLiBUaGlzIGFsbG93cyB1cyB0byBzZWxlY3QKCXdoaWNoIHRlcm1pbmFsIHR5cGUgd2UgYXJlIHJlYWxseSB1c2luZyBzbyB0aGF0IHdlIGNhbiwgZm9yIGV4YW1wbGUsCgl1c2UgaXRzIGNvbG9yIGNhcGFiaWxpdGllcy4KCgkqIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGluY2x1ZGUvY29uc29sZS5oOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglTdXBwb3J0IGZvciB0aGUgbmV3IEluaXRpYWxSb3dzIGFuZGYgSW5pdGlhbENvbHVtbnMgb3B0aW9ucyBpbiB3aW5lLmluaQoJKEdlbmVyaWMgcmVwbGFjZW1lbnQgZm9yIFh0ZXJtUmVzb2x1dGlvbiBvcHRpb24uLi4pCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUZpeCAqRFVIKiBwcm9ibGVtIGNhdXNpbmcgbG90cyBhbmQgbG90cyBvZiB1bm5lY2Vzc2FyeSBBbGxvY0NvbG9yIGVycm9ycy4KCgkqIGNvbnNvbGUveHRlcm0uYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglSZW1vdmFsIG9mIG9ic29sZXRlIFh0ZXJtUmVzb2x1dGlvbiBvcHRpb24uCgoJKiBkb2N1bWVudGF0aW9uL2NvbnNvbGUsIHdpbmUuaW5pOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5ldyB3aW5lLmNvbmYgb3B0aW9ucy4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYmFja3RyYWNrIGlzc3VlIG9uIDE2Yml0IGNvZGUuCgoJKiBkZWJ1Z2dlci9tc2MuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIExvY2F0ZURlYnVnSW5mb0ZpbGUgdG8gcmVkdWNlIHN0YWNrIGNvbnN1bXB0aW9uIChmcm9tIDEzayB0byAyayAhISkKCgkqIGRlYnVnZ2VyL2luZm8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjb21tZW50IGZvciBXaW5lIGRvY3VtZW50YXRpb24uCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgZ2V0L3NldF9oYW5kbGVfaW5mbyByZXF1ZXN0LgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRml4ZWQgZW5kLW9mLWxpbmUgYnVnIGluIFgxMURSVl9ESUJfU2V0SW1hZ2VCaXRzX1JMRTQuCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglGaXggYSBjb3VwbGUgb2YgNjRiaXQgcGxhdGZvcm0gcHJvYmxlbXMgYW5kIHNwZWVkIHVwIGNvbXBpbGF0aW9uLiBTZWUKCXRvb2xzL3dyYy9DSEFOR0VTIGZvciBkZXRhaWxzLgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbW1pb0Rlc2NlbmQ6IGRlYnVnb3V0cHV0IGVuaGFuY2VkLCBGSU5ETElTVC9GSU5EUklGRiBzaG91bGQgQ2hlY2sgdGhlCgljb3JyZWN0IGNraWQgKExJU1QvUklGRikgdG9vLiAodmVyaWZpZWQgYWdhaW5zdCBtY2lhdmkzMi5kbGwpCgoJKiBNYWtlZmlsZS5pbjogWnlnbyBCbGF4ZWxsIDx6YmxheGVsbEBmdXJyeXRlcnJvci5vcmc+CglBZGRlZCBhIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIHdpbmUuc3ltIGJlZm9yZSBpbnN0YWxsaW5nIGl0LgoKCSogaW5jbHVkZS9vbGUyLmgsIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHNvbWUgbmV3IHN0dWJzIGZvciB0aGUgT0xFIG1lbnUgZGVzY3JpcHRvciBtZXRob2RzLgoKRnJpIEZlYiAxOSAxNjo1MDoyNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9xdWV1ZS5jOiBNYXJ0aW4gV2Fsa2VyIDxtd2Fsa2VyQGNhY2kuY28udWs+CglGaXhlZCBtZXNzYWdlIGZpbHRlcmluZyBjaGVjay4KCgkqIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL250ZGxsLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaCwgb2xlL29sZW9iai5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIG1hZGUgdGhlIHNlY3VyaXR5IGZ1bmN0aW9ucyBjb25zaXN0ZW50LiBhZHZhcGkgY2FsbHMgZG93biB0byBudGRsbCBub3cKCS0gbmV3IFNldFNlY3VyaXR5RGVzY3JpcHRvckdyb3VwLCAgU2V0U2VjdXJpdHlEZXNjcmlwdG9yT3duZXIsCgkgIFNldFNlY3VyaXR5RGVzY3JpcHRvclNhY2wsIEdldFNlY3VyaXR5RGVzY3JpcHRvckRhY2wKCS0gbnQtaGVhZGVyIGNsZWFudXAKCgkqIGRsbHMvbnRkbGwvcnRsLmMsIGlmMTYzMi9idWlsdGluLmMsIG1pc2MvY3B1LmMsIHdpbjMyL2tlcm5lbDMyLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGEgZmV3IGJyb2tlbiBpbmNsdWRlcy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFJldmVydGVkIGJyb2tlbiBjbG9zZSBidXR0b24gY2hhbmdlLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy93aWRnZXRzLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUplZmYgR2FyemlrIDxqZ2FyemlrQHBvYm94LmNvbT4KCUFkZGVkIG1pc3Npbmcgc3RyaW5nLmggaW5jbHVkZS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU9ubHkgYXBwZW5kIC5kbGwgaWYgbm8gZXh0ZW5zaW9uIHlldC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglUZW1wb3JhcnkgZml4IHN1Z2dlc3RlZCBieSBVbHJpY2ggdG8gYWxsb3cgdGhlCglNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3QgbWV0aG9kIHRvIGJlIGNhbGxlZCBmcm9tIDE2IGJpdCB0aHJlYWRzLgoKCSogd2luZG93cy93aW5wcm9jLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW5pdGlhbGl6ZWQgcmV0dXJuIHZhbHVlIG9mIDE2LT4zMiBjb252ZXJzaW9uIG9mIFdNX01ESUdFVEFDVElWRSBpbgoJY2FzZSBpdCdzIHNlbnQgdG8gYSB3aW5kb3cgdGhhdCBkb2Vzbid0IGhhbmRsZSBpdCAoaS5lLiBub3QgTURJCgljbGllbnQpLgoKCSogaW5jbHVkZS9kY2UuaCwgd2luZG93cy9kY2UuYywgd2luZG93cy93aW5wb3MuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgZXh0cmEgY2hpbGQgYXJndW1lbnRzIHRvIERDRV9HZXRWaXNSZ24oKSB0byBiZSBhYmxlIHRvIGhhbmRsZQoJUEFSRU5UREMgY2xhc3Mgc3R5bGUgY29tYmluZWQgd2l0aCBDTElQQ0hJTERSRU4gd2luZG93IHN0eWxlLCB0bwoJcHJldmVudCBtaXMtcmVkcmF3cyBpbiBGcmVlIEFnZW50IDE2LWJpdC4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IExhd3NvbiBBLiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCURvbid0IGhhbmcgb24gdGhlIGxhc3QgY2hpbGQgaWYgaXQncyBub3Qgd2FudGVkLgoKCSogd2luMzIva2VybmVsMzIuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglQYXJ0aWFsIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgdW5kb2N1bWVudGVkIEtFUk5FTCByb3V0aW5lIFBLMTZGTkYsCgluZWVkZWQgYnkgV2luOTggRVhQTE9SRVIuIFRoYW5rcyB0byBVbHJpY2ggV2VpZ2FuZCBmb3IgaW5mb3JtYXRpb24uCgoJKiBtaXNjL2NvbW1kbGcuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXggcmVkcmF3IHByb2JsZW1zIGZvciBDaG9vc2VDb2xvciBkaWFsb2cuCgoJKiAqLyouYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIGEgbG90IG9mIG9jY3VyZW5jZXMgb2Ygd2luZG93cy5oIChhbmQgYWRkZWQgbmVjZXNzYXJ5IG90aGVyCglpbmNsdWRlcykuCgoJKiBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgb2xlL2NvbXBvYmouYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJU21hbGwgZml4ZXMuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglDaGFuZ2VkIHRoZSBmaXJzdCBwYXJhbWV0ZXIgZnJvbSBMUEdVSUQgKFdpbmRvd3MgaGVhZGVycykgdG8gUkVGR1VJRC4KCVRoaXMgbWFrZXMgaXQgYSAnY29uc3QgR1VJRConIHdoaWNoIG1lYW5zIERpcmVjdFNvdW5kQ3JlYXRlIG11c3Qgbm90CgljaGFuZ2UgaXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCByZWR1bmRhbnQgZGVmaW5pdGlvbnMgb2YgSXNFcXVhbElJRCBhbmQgSXNFcXVhbENMU0lEIChzZWUKCWluY2x1ZGUvd2luZS9vYmpfYmFzZS5oKQoKVGh1IEZlYiAxOCAxNzozNDoxMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy91c2VyLmMsIGluY2x1ZGUvcXVldWUuaDoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBOZXcgaW1wbGVtZW50YXRpb24gb2YgU2VuZE1lc3NhZ2UsIFJlY2VpdmVNZXNzYWdlLCBSZXBseU1lc3NhZ2UgZnVuY3Rpb25zCgkgIHRvIHN1cHBvcnQgdGhyZWFkLXNhZmVuZXNzLCBhbmQgbmVzdGVkIFNlbmRNZXNzYWdlLgoJLSBBZGRpdGlvbiBvZiBSZXBseU1lc3NhZ2UzMi4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IENvcGUgd2l0aCBOVUxMIHBEcml2ZXJEYXRhIGluIFgxMURSVl9XTkRfR2V0WFdpbmRvdy4KCgkqIG1pc2MvY29tbWRsZy5jLCByZXNvdXJjZXMvc3lzcmVzX0VuLnJjOgoJUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUFwcGxpZWQgdGhlIGNoYW5nZXMgb2YgdGhlIHJlc3VsdGluZyBjb2xvciBvZiB0aGUgY2hvb3NlIGNvbG9yIGRpYWxvZy4KCUluaXRpYWxpemUgdmFsdWVzIGluIHRoZSBjaG9vc2UgY29sb3IgZGlhbG9nLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIHJlZmVyZW5jZXMgdG8gSUNPTV9JTkhFUklUUy4KCgkqIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBidWcgd2l0aCByZWFkLW9ubHkgZmlsZXMuCgoJKiBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBzdXBlcmZsb3VzIFdJTkFQSSAobWlzbWF0Y2ggd2l0aCBwcm90b3R5cGUpIGluICpfRHJpdmVyUHJvYzMyLgoKCSogaW5jbHVkZS9kb3NleGUuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+Cglkb3NleGUuaCBkZXBlbmRzIG9uIHdpbmJhc2UuaCAoZm9yIExQU1RBUlRVUElORk8zMkEpCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIG9sZS9iaW5kY3R4LmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1vZGlmaWVkIHNvIHRoYXQgdGhleSBkbyBub3QgdXNlIHRoZSBWVEFCTEVfRlVOQyBtYWNyb3MgdGhhdCBwZXJmb3JtZWQKCWNhc3RzIG9mIGFsbCBtZXRob2RzIHB1dCBpbiB0aGUganVtcCB0YWJsZS4gSSBmaW5kIGl0IHRvbyByaXNreSB0byB1c2UKCXN1Y2ggbWFjcm9zIGJlY2F1c2Ugbm90aGluZyBndWFyYW50ZWVzIHRoYXQgeW91IGFjdHVhbGx5IHB1dCB0aGUgcmlnaHQKCW1ldGhvZCBhdCB0aGUgcmlnaHQgcGxhY2Ugb3IgdGhhdCB0aGUgcHJvdG90eXBlIGlzIHJpZ2h0LgoKCSogaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBvbGUvc3RvcmFnZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVcGRhdGVkIHRvIHVzZSB0aGUgbGF0ZXN0IENPTSBtYWNyb3MuIERlZmluZWQgbW9yZSBpbnRlcmZhY2VzIGFuZCBBUEkKCWZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL21lbnUuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9ub25jbGllbnQuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgdGhlIHB1c2hlZCBjbG9zZSBidXR0b24uCgpXZWQgRmViIDE3IDE3OjQ1OjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5c3RvcmFnZS5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaCwgb2xlL2NvbXBvYmouYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTW92ZWQgc29tZSBkZWZpbml0aW9ucyB0byB0aGVpciBwcm9wZXIgaW5jbHVkZSBmaWxlLgoKCSogaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL29ial9taXNjLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIHNvbWUgSUNPTV9JTkhFUklUIHN0dWZmIGFuZCBhZGRlZCBuZXcgcmVsYXRlZCBBUEkgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgbmV3IEFQSS4gUGFydCBvZiBpdCB3YXMgaW4gJ2luY2x1ZGUvb2JqYmFzZS5oJyBiZWZvcmUgYW5kIHBhcnQKCW9mIGl0IGlzIG5ldy4gTm93IGl0IGFsc28gY29udGFpbnMgJ1dJTkVfU3RyaW5nRnJvbUNMU0lEJy4gSXQncyBub3QKCXBlcmZlY3QgYnV0IGl0J3MgYmV0dGVyIHRoYW4gaGF2aW5nIGl0IGluICdpbmNsdWRlL29iamJhc2UuaCcuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvbnRkbGwvbnQuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIGNvbnRyb2xzL3Njcm9sbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBhIG51bWJlciBvZiB3YXJuaW5ncyBjb25jZXJuaW5nIHRoZSBtYXRjaGluZyBvZiB0aGUgcHJpbnRmCglmb3JtYXQgc3RyaW5nIGFuZCB0aGUgYXNzb2NpYXRlZCBwYXJhbWV0ZXJzIChhY3R1YWxseSBpdCdzIG1vc3RseQoJVFJBQ0UgYW5kIEZJWE1FcykuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIG11bHRpbWVkaWEvbW1pby5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbW1pb0Rlc2NlbmQ6IGZpeGVkIEZJTkRfeHh4eCwgdmVyaWZpZWQgd2l0aCBtY2lhdmkzMi5kbGwuCgltY2lMb2FkQ29tbWFuZFJlc291cmNlMzI6IHNlY29uZCBhcmcgaXMgd2lkZSBzdHJpbmcKCW1jaUdldERyaXZlckRhdGE6IHNwZWMgaGFzIGp1c3Qgb25lIGxvbmcgYXJndW1lbnQKCgkqIG9sZS9jb21wb2JqLmMsIG9sZS9pZnMuYywgb2xlL2lmcy5oLCBvbGUvc3RvcmFnZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUNoYW5nZWQgSUNPTV9USElTIGRlZmluaXRpb24uCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jLCBpbmNsdWRlL3Zlci5oOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVJlbmFtZWQgVlNfVkVSU0lPTl9JTkZPeHggc3RydWN0dXJlIHRvIFZTX1ZFUlNJT05fSU5GT19TVFJVQ1R4eC4KCVRoZSBWU19WRVJTSU9OX0lORk8gaXMgYSBzaW1wbGUgZGVmaW5lIGFuZCB3b3VsZCBjYXVzZSBjb25mdXNpb24uCglBbHNvIGNvcnJlY3RlZCB0aGUgVlNfeHhfSU5GTyBkZWZpbmVzIG5vdCB0byB1c2UgTUFLRUlOVFJFU09VUkNFMTYgZm9yIHdpbjMyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IFN0ZWZmZW4gTW9lbGxlciA8bW9lbGxlckBlYmkuYWMudWs+CgkiQ29uZmlndXJlIGZpbmlzaGVkIiBtZXNzYWdlIHN1Z2dlc3RzIHRvIGNhbGwgbWFrZSB3aGVuIG1ha2UgZGVwZW5kCgl3YXMgc3VjY2Vzc2Z1bC4KCgkqICovKjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPcHRpbWl6ZWQgaW5jbHVkZS8qLmg6IChyZWN1cnNpdmVseSkgaW5jbHVkZSBhbGwgaGVhZGVycyBuZWVkZWQgYnkKCXRoaXMgLmggZmlsZSwgYnV0IG9ubHkgdGhvc2UuIE5lY2Vzc2FyeSBmaXhlcyB0byBhIGxvdCBvZiAuYyBmaWxlcywKCXN0YXJ0ZWQgb3B0aW1pemluZyAid2luZG93cy5oIiBhd2F5IGZyb20gc29tZSBvZiB0aGVtLiBNb3ZlZAoJR2V0Q3VycmVudFRhc2sgcHJvdG90eXBlIHRvIHdpbmUvd2luYmFzZTE2LmguCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvbGlzdHZpZXcuaCwgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVByZWxpbWluYXJ5IGxpc3R2aWV3IGNvbnRyb2wgaW1wbGVtZW50YXRpb24uCgoJKiBjb250cm9scy9tZW51LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUdpdmUgdGhlIGNvbnRleHQgbWVudSBpdHMgcHJvcGVyIGJlaGF2aW91ciBhbmQgbW9kaWZ5IFRyYWNrUG9wdXBNZW51Cgl0byBjb21wbHkgd2l0aCB3aW5kb3dzIEFQSS4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglHZXRVcGRhdGVSZWN0IHNob3VsZCByZXR1cm4gY2xpZW50IGNvb3JkaW5hdGVzIHVubGVzcyB0aGUgd2luZG93IHdhcwoJY3JlYXRlZCB3aXRoIHRoZSBDU19PV05EQyBzdHlsZSBhbmQgdGhlIG1hcHBpbmcgbW9kZSBpcyBub3QgTU1fVEVYVCwKCWluIHdoaWNoIGNhc2UgdGhlIHJlc3VsdCBzaG91bGQgYmUgaW4gbG9naWNhbCBjb29yZGluYXRlcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIHRoZSBhY3R1YWwgZGVmaW5pdGlvbnMgb2YgdGhlIGludGVyZmFjZXMuCgoJKiBpbmNsdWRlL3NlcnZwcm92Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQ29udmVydGVkIHRvIHRoZSBuZXcgQ09NIGRlY2xhcmF0aW9uICdzdGFuZGFyZCcgZm9yIGJldHRlcgoJY29tcGF0aWJpbGl0eSB3aXRoIEMgY29kZSBpbXBsZW1lbnRhdGluZyB0aGF0IGludGVyZmFjZS4KCgkqIG1pc2Mvd3NwcmludGYuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCBXUFJJTlRGX0V4dHJhY3RWQVB0ciB0byB0YWtlIHRoZSBhZGRyZXNzIG9mIHRoZSB2YV9saXN0IHRvIGJlCglhYmxlIHRvIG1vZGlmeSBpdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJRGVmaW5lZCBJRHJvcFRhcmdldCBmb3IgU2hlbGxGb2xkZXIuICBJbXBsZW1lbnRlZCB0aGUgQ29uc3RydWN0b3IsCglEZXN0cnVjdG9yLCBBZGRSZWYsIFJlbGVhc2UgYW5kIFF1ZXJ5SW50ZXJmYWNlIG1ldGhvZHMuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYywgaWYxNjMyL2tlcm5lbC5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2hhbmdlIHR5cGUgb2YgbW9kZSBhcmd1bWVudCB0byBHRVRWRE1QT0lOVEVSMzJXIGZyb20gRFdPUkQgdG8gV29yZAoKTW9uIEZlYiAxNSAxNToyNDoyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCURvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJYzJtYW4gZG9lc24ndCBsaWtlIGV4dHJhIHNlbWljb2xvbnMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlc2V0dGluZyBYIGZvY3VzIHNob3VsZCBub3QgYmUgZG9uZSB3aXRoIFNldEZvY3VzMzIuIENhbGxlZAoJdGhlIHdpbmRvd2luZyAoWDExKSBkcml2ZXIncyBTZXRGb2N1cyByb3V0aW5lIGRpcmVjdGx5IGluc3RlYWQuCglUaGlzIGFwcGFyZW50bHkgZml4ZXMgYSBiaWcgaGVhcCBvZiB1c2VyIGludGVyZmFjZSBwcm9ibGVtcy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEZlYiAxNCAxNDowOTo0MiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgaW5jbHVkZS93aW51c2VyLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvcmVjdC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIHNvbWUgZnVuY3Rpb25zIHByb3RvdHlwZXMgKHdlcmUgcmV0dXJuaW5nIHZvaWQpLgoKCSogbWlzYy9tYWluLmMsIGluY2x1ZGUvd2ludXNlci5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUZpeGVkIHNvbWUgV2luZWxpYiBuYW1lcy4KCgkqIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvY29uc29sZS5oLCBpbmNsdWRlL2Rlc2t0b3AuaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb3JyZWN0ZWQgcHJvdG90eXBlcyBmdW5jKCkgLT5mdW5jKHZvaWQpLgoKCSogbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvbWlkaS5jLCBkZWJ1Z2dlci9tZW1vcnkuYzoKCUJyaWFuIEpvc2VwaCBDemFwaWdhIDxyb290QGdsYWNpZC5jb20+CglGaXhlZCBhIGZldyAjaWZkZWZzLgoKCSogd2luZG93cy9zY3JvbGwuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglKZXJvbWUgVm91aWxsb24gPHZvdWlsbG9uQGNsYXJhbmV0LmZyPgoJTWFrZSBhIGNvcnJlY3QgdXNlIG9mIGNsaXBwaW5nIHJlY3RhbmdsZXMuCgoJKiBpbmNsdWRlL2JpdG1hcHMvb2NyX2Nyb3NzOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgd2hpdGUgYm9yZGVyLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgYmV0dGVyIG91dHB1dCBmb3IgaW5kaXJlY3QgY2FsbHMuCgoJKiByZWxheTMyL3dpbm1tLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdHlwbyBpbiB3aW5tbS5zcGVjLgoKCSogaW5jbHVkZS93aW50eXBlcy5oLCBpbmNsdWRlL3dyY19yc2MuaCwgbWlzYy9sc3RyLmMsIG1pc2Mvd3NwcmludGYuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0BDT1JFTC5DQT4KCUEgZmV3IG5vbi14ODYgV2luZWxpYiBmaXhlcy4KCgkqIG1pc2NlbXUvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBwcmludCAnd2luZTogbm8gZXhlY3V0ZWFibGUgZm91bmQnIGlmIHdlIGRpZCBleGVjdXRlIHNvbWV0aGluZy4KCgkqIHByb2dyYW1zL25vdGVwYWQvKjoKCU1hcmNlbCBCYXVyIDxtYmF1ckBnMjYuZXRoei5jaD4KCS0gQWRkZWQgbmV3IElEU19OT1RTQVZFRCByZXNzb3VyY2UgKG5lZWRzIHRyYW5zbGF0aW9uIGluICoucmMpCgktIEltcHJvdmVkIHByaW50aW5nIHN1cHBvcnQgKG5vdCB5ZXQgY29tcGxldGUpCgktIEltcHJvdmVkIGZpbGUgZHJhZyBhbmQgZHJvcCAoc2hvdWxkIG5vdyB3b3JrKQoJLSBHZW5lcmFsIGNvZGUgY2xlYW51cAoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWdzIG9uIE1DSSBub3RpZmljYXRpb24gKGNhbGxiYWNrIGluZm8gYXJlIGNvcGllZCBiZWZvcmUKCWFzeW5jaHJvbm91cyByZXR1cm4pIC0gbWFrZSB1c2Ugb2YgaXQgaW4gTUNJIHdhdmUgYW5kIG1pZGkuCglJbXBsZW1lbnRlZCBtY2koU2V0fEdldClEZXZpY2VJRCgxNnwzMikgZnVuY3Rpb25zLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2luY2UgU2V0UGFyZW50IG5vdyBoaWRlcy9zaG93cywgZXhwbGljaXRseSBpbnZhbGlkYXRpbmcgRENzIGluIHRoZQoJcGFyZW50IGNoYW5nZSBvcGVyYXRpb24gc2hvdWxkIG5vIGxvbmdlciBiZSBuZWNlc3NhcnkuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBHZXJhcmQgUGF0ZWwgPEcuUGF0ZWxAV2FuYWRvby5mcj4KCUZpeCBpZiBFbmREaWFsb2cgY2FsbGVkIGluIFdNX0lOSVRESUFMT0cgKERJQUxPR19Eb0RpYWxvZ0JveCkuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNb3ZlZCBWR0EgcG9ydCBhY2Nlc3MgY2hlY2sgYXQgdGhlIGJlZ2lubmluZyBpbiBvcmRlciB0byBpbXByb3ZlCglwZXJmb3JtYW5jZSBhIGxpdHRsZSBiaXQuCgoJKiBzZXJ2ZXIvZmlsZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGZsYWcgRklMRV9GTEFHX0RFTEVURV9PTl9DTE9TRS4KCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkZWQgY29tbWVudHMuIFRoaW5rIEkndmUgZml4ZWQgSU5UIDEwLzA4IChHZXQgQ2hhcmFjdGVyIGFuZAoJQXR0cmlidXRlIGF0IEN1cnNvcikuCgoJKiBjb25zb2xlL3h0ZXJtLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIFh0ZXJtUHJvZ3JhbSBhbmQgWHRlcm1SZXNvbHV0aW9uLgoJRml4ZWQgYSB3YXJuaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9jb25zb2xlLCB3aW5lLmluaToKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJTmV3IGV4YW1wbGVzL2RvY3VtZW50YXRpb24gZm9yIGNvbnNvbGUgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKCSogbWlzYy9tYWluLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3R0eS5jLCBpbmNsdWRlL2NvbnNvbGUuaCwgaW5jbHVkZS9vcHRpb25zLmgsIGxvYWRlci9tYWluLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCU1vdmVkIGluaXRpYWxpemF0aW9uIHVudGlsIGxhdGVyLiBBbHNvIG1vdmVkIGFyb3VuZCBjb2RlIGEgYml0IHRvIGJlCgljb25zaXN0YW50LgoKCSogaW5jbHVkZS9kZWJ1Z2dlci5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHBvc3NpYmlsaXR5IHRvIGxvYWQgLnN0YWJzLy5zdGFic3RyIHNlY3Rpb25zIGZyb20gUEUgZGxscy4KCVVuZm9ydHVuYXRlbHkgbXkgc2FtcGxlcyB1c2UgY3VycmVudGx5IHR5cGVkZWZzIHdoaWNoIHdpbmUtZGJnIGRvZXMKCW5vdCB1bmRlcnN0YW5kLCBzbyBubyBhY3R1YWwgcGFyc2luZy4KCgkqIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL21zYWNtMzIvZm9ybWF0LmMsIGRsbHMvbXNhY20zMi9zdHJlYW0uYywgaW5jbHVkZS9tbXJlZy5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS9tc2FjbWRydi5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglDaGFuZ2UgYSBjb3VwbGUgb2YgbmFtZXMgdGhhdCB3b3VsZCBjb25mbGljdCBhZnRlciBhbGwgMzJbQVddIHN1ZmZpeGVzCglhcmUgcmVtb3ZlZC4gU3RydWN0dXJlcyBkZWZpbmVkIGluIGJvdGggbW1yZWcuaCBhbmQgbW1zeXN0ZW0uaCBhcmUKCXByb3RlY3RlZCB3aXRoICNpZmRlZjpzIGFzIGluIE1TJyBoZWFkZXJzLgoKCSogbWlzYy9pbW0uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCB3cm9uZyB0eXBlY2FzdHMuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL2dycGZpbGUuYzogU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglDb21waWxhdGlvbiBmaXguCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZTogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXggZm9yIFgxMSBpbmNsdWRlcyBkZXRlY3Rpb24uCgoJKiBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zdGFicy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBwb3NzaWJpbGl0eSB0byBsb2FkIC5zdGFicy8uc3RhYnN0ciBzZWN0aW9ucyBmcm9tIFBFIGRsbHMuCglVbmZvcnR1bmF0ZWx5IG15IHNhbXBsZXMgdXNlIGN1cnJlbnRseSB0eXBlZGVmcyB3aGljaCB3aW5lLWRiZyBkb2VzCglub3QgdW5kZXJzdGFuZCwgc28gbm8gYWN0dWFsIHBhcnNpbmcuCgoJKiBtdWx0aW1lZGlhL2RwbGF5LmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdGRyYXcsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZDNkLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgZGRyYXcvZDNkIGJ1Z2ZpeGVzLCB1cGRhdGVkIERpYWJsby9XQzQgZGRyYXcgc3RhdHVzLgoKCSogb2xlL29sZTJubHMuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbm5scy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBDb252ZXJ0RGVmYXVsdExvY2FsZTMyLgoKCSogd2luZG93cy9tZGkuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglXSU4zMSBMb29rIHN0aWxsIG5lZWRzIGEgY2xvc2UgYnV0dG9uIG9uIHRoZSBsZWZ0IG9mIHRoZSBtZW51IGJhci4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgU2V0V2luZG93UG9zMzIgdG8gZm9yY2UgdGhlIHVwZGF0ZSBvZiB0aGUgbm9uLWNsaWVudCBhcmVhLgoKU2F0IEZlYiAxMyAxNzo1NjoyOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2luc29jay5oOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUZpeGVkIGEgY291cGxlIG9mIGZhdWx0eSBuYW1lcyB1c2VkIGluIHdpbmUgYW5kIHR5cG9zIHNvIHRoYXQgaXQgd2lsbAoJY29tcGlsZSBhZ2FpbiBhZnRlciBjb252ZXJzaW9uIGZyb20gMzJbQVddIG5hbWluZyB0byBbQVddIG5hbWluZy4KCgkqIGlmMTYzMi9BdHRpYy9zaWduYWwuYywgaWYxNjMyL01ha2VmaWxlLmluLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL3NpZ25hbC5jLCBtaXNjZW11L2luc3RyLmMsIG1pc2NlbXUvbWFpbi5jLCBncmFwaGljcy9kZHJhdy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3ZlZCB0aGUgaWYxNjMyL3NpZ25hbC5jIHN0dWZmIGludG8gbG9hZGVyL3NpZ25hbC5jLCBhZGFwdGVkIGZ1bmN0aW9uCglwb2ludGVycyBmb3Igd2luZV9kZWJ1ZyBhbmQgSU5TVFJfRW11bGF0ZUluc3RydWN0aW9uLgoKCSogb2xlL2NvbXBvYmouYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBbGwgZ3VpZCAnUkVGeHh4JyB0eXBlcyBhbHJlYWR5IGhhdmUgYSAnY29uc3QnIGluc2lkZSB0aGVtLgoKCSogZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIG1pc2MvdmVyc2lvbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIHdhcm5pbmdzIGZpeGVkLCBvbmUgdXNlbGVzcyBWRVJTSU9OIHdhcm5pbmcgcmVtb3ZlZCAod2luZWxpYikuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZWdGbHVzaEtleTogd3JvbmcgZXJyb3IgY29kZS4KCgkqIHdpbjMyL2ZpbGUuYzogQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkcyBhIHdhcm5pbmcgbWVzc2FnZSBpZiBwZXJtaXNzaW9ucyBub3Qgc3VmZmljaWVudC4KCgkqIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCByZWxheTMyL3dpbm1tLnNwZWMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW4sIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbWlkaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBNQ0kgQVZJIGRyaXZlcgoJQWRkZWQgc29tZSBmaXhlcyBtaXhlciBmdW5jdGlvbnMKCUZpeGVkIE1DSSBzdHJpbmcgY29tcGFyaXNvbiAodGhhbmtzIHRvIExpb25lbCBVTE1FUikKCU5vIGxvbmdlciB1c2luZyAxNiBiaXQgVVNFUiBmdW5jdGlvbnMgKHVzZSB0aGVpciAzMiBiaXQgY291bnRlciBwYXJ0KQoJUmVpbmRlbnRpbmcuCglBZGRlZCBmdW5jdGlvbiBzbmRQbGF5U291bmQzMlcKCgkqIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgdGhlIGFjdHVhbCBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgdG8gdGhlIG9ial9tYXJzaGFsLmggc2tlbGV0b24KCWZpbGUuIEFsc28gZGVmaW5lZCB0aGUgYXNzb2NpYXRlZCBDIEFQSS4KCgkqIHdpbmRvd3MvcXVldWUuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglVc2UgZ2xvYmFsIHN5bmNocm9uaXphdGlvbiBvYmplY3RzLCB0byBiZSBhYmxlIHRvIHVzZSBpdCBpbiBkaWZmZXJlbnQKCXByb2Nlc3NlcyAobm90IG9ubHkgdGhlIHByb2Nlc3Mgd2hpY2ggY3JlYXRlIHRoZSBzeW5jaHJvIG9iamVjdCkuCgoJKiB3aW5kb3dzL21kaS5jOiBOb3JtYW4gU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglTZXQgaHduZEFjdGl2ZUNoaWxkIHdoZW4gbWF4aW1pemluZyBhIG1kaSBjaGlsZCB3aW5kb3cgYmVjYXVzZSBpdCBpcwoJbm90IHNldCB3aGVuIG1heGltaXppbmcgYSB3aW5kb3cgb3RoZXIgdGhhbiB0aGUgYWN0aXZlIGNoaWxkLgoKCSogY29udHJvbHMvbWVudS5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlIHRoZSBHZXRNZW51SXRlbVJlY3QgdG8gY29tcGx5IHdpdGggd2luZG93cyBBUEkuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbjoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUNyZWF0ZWQgaW5jbHVkZS9NYWtlZmlsZS5pbiB0byBzZXBhcmF0ZSBoZWFkZXIgZmlsZSBpbnN0YWxsYXRpb24gZnJvbQoJdGhlIHRvcC1sZXZlbCBNYWtlZmlsZS4KCgkqIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CgktIEZpeGVkIGEgc21hbGwgYmxvY2sgZGVwb3QgYnVnLgoJLSBJbXBsZW1lbnRlZCBjb252ZXJ0aW5nIGZyb20gc21hbGwgYmxvY2tzIHRvIGJpZyBibG9ja3MuCgktIFZhbGlkYXRlZCBmaWxlIGF0dHJpYnV0ZXMgYW5kIGZsYWdzLgoJLSBGaXhlZCBhIGJ1ZyBmb3IgbGFyZ2VyIGZpbGVzLgoKCSogcmVzb3VyY2VzLy5jdnNpZ25vcmU6IGFkZGVkIHN5c3Jlc19ObAoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBPTEUgRHJhZyBhbmQgRHJvcCB0YXJnZXQgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbSBhbmQKCXRoZSBEb0RyYWdEcm9wIGxvb3AgdG8gcGVyZm9ybSB0aGUgRG5EIG9wZXJhdGlvbi4KCgkqIHdpbmRvd3MvbWRpLmMsIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZW51Lmg6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgV0lOMzEgTG9vayBtZGkgYnV0dG9ucyBhbmQgYWxzbyBzb21lIGRlZmluZXMgZm9yIHRoZQoJbWFnaWMgbWVudSBpdGVtcy4KCgkqIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgaW5jbHVkZS93aW5jcnlwdC5oLCByZWxheTMyL2FkdmFwaTMyLnNwZWM6CglJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBlbnRyaWVzIGZvciBtb3N0IENyeXB0KiBjYWxscy4KCUFkZGVkIHN0dWIgZm9yIENyeXB0QWNxdWlyZUNvbnRleHRBLiAgVGhpcyBhbGxvd3MgV2luOTggRVhQTE9SRVIuRVhFCgl0byBnZXQgZmFydGhlci4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFuIGFwcCBsZWZ0IGp1bmsgaW4gdGhlIHVuZG8gYnVmZmVyIG9mIGFuIGVkaXQgY29udHJvbCB1cG9uIGNyZWF0aW9uLgoKCSogd2luZG93cy93aW4uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGFuZ2VkIFNldFBhcmVudDMyIHRvIGFkaGVyZSB0byBXaW5kb3dzIGJlaGF2aW91ciAobW9zdGx5KSwKCXdoaWNoIHNob3VsZCBhbHNvIGtlZXAgaXQgZnJvbSBsZWF2aW5nIGdhcmJhZ2UgYXJvdW5kLgoKCSogb2xlL2NvbXBvYmouYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgYSBzaW1wbGUgbGlua2VkIGxpc3QgKHN0YXRpYykgdGhhdCBzdG9yZXMgYW5kIGNvdW50cwoJcmVmZXJlbmNlcyB0byBDT00gb2JqZWN0cy4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNYWtlIHRoZSBSRUZ4eHggdHlwZXMgY29uc3QgZXZlbiBpbiBDLiBBbHNvIGFkZCBGTVRJRC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRG9uJ3QgY2FsbCBFVkVOVF9EdW1teU1vdGlvbk5vdGlmeSBmb3IgaGlkZGVuIHdpbmRvd3MuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXggc29tZSB0aHJlYWQtc2FmZW5lc3MgcHJvYmxlbSB3aGVuIGFjY2Vzc2luZyB0aGUgc3lzdGVtIG1lc3NhZ2UKCXF1ZXVlLgoKCSogd2luZG93cy9pbnB1dC5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgcmVsYXkzMi91c2VyMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgTWFwVmlydHVhbEtleUV4ICh0aWNrZXQgMjEpLgoJSWdub3JlIGtleWJvYXJkIGxheW91dCBmb3Igbm93LgoKCSogaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgdGhlIGFjdHVhbCBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgdG8gdGhlIG9ial9jbGllbnRzZXJ2ZXIuaAoJc2tlbGV0b24gZmlsZS4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgcmVsYXkzMi9udGRsbC5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGRvY3VtZW50ZWQgbW9zdCBvZiB0aGUgdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBpbiBudC5jCgktIGltcGxlbWVudGVkIFJ0bEdldERhY2xTZWN1cml0eURlc2NyaXB0b3IKCS0gc3R1YnMgZm9yIE50RW51bWVyYXRlS2V5LCBOdE9wZW5TeW1ib2xpY0xpbmtPYmplY3QsIE50UXVlcnlLZXkKCS0gc3R1YnMgZm9yIE50UmFpc2VFeGNlcHRpb24sIFJ0bFJhaXNlRXhjZXB0aW9uICh0aGlzIGJvdGggd2lsbCBjcmFzaCkKCkZyaSBGZWIgMTIgMTc6NDc6MDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGZpbGVzL2RyaXZlLmMsIG1pc2MvcmVnaXN0cnkuYywgd2luMzIvbmV3Zm5zLmMsIHdpbmRvd3MvdXNlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcyB0byBjb21waWxlIHdpdGggdGhlIGhlYWRlcnMgKG1vc3RseSBudC1zZWN1cml0eSkuCgoJKiBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS9udGRsbC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYWRlIG50LXJlbGF0ZWQgdHlwZXMgY29tcGF0aWJsZSwgdGhyb3cgb3V0IHdpbmUtc3BlY2lmaWMgdHlwZXMuCgoJKiB3aW5kb3dzL21vdXNlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIE1PTklUT1JfLi4uIGluc3RlYWQgb2YgREVTS1RPUF8uLi4gcm91dGluZXMgdG8gZ2V0IHNjcmVlbgoJZGltZW5zaW9uczsgdGhlc2Ugd29yayBhbHNvIHdpdGggbmF0aXZlIFVTRVIuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdNX0FDVElWQVRFIGRlZmF1bHQgcHJvY2Vzc2luZyBzaG91bGQgc2V0IHdpbmRvdyBmb2N1cy4KCVNob3VsZCBmaXggZm9jdXMgcHJvYmxlbXMgaW4gbm9uLW1hbmFnZWQgbW9kZS4KClRodSBGZWIgMTEgMTY6MzI6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9ubHMvbmxkLm5scywgcmVzb3VyY2VzL01ha2VmaWxlLmluLCByZXNvdXJjZXMvVE9ETywgcmVzb3VyY2VzL3N5c3Jlcy5jLCByZXNvdXJjZXMvc3lzcmVzX05sLnJjLCBBVVRIT1JTLCBkb2N1bWVudGF0aW9uL2xhbmd1YWdlcywgaW5jbHVkZS9hdXRob3JzLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIER1dGNoIGxhbmd1YWdlLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvc2hsb2JqLmg6CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglaeWdvIEJsYXhlbGwgPHpibGF4ZWxsQGNvcmVsLmNhPgoJTW92ZSBwcm9wZXJ0eSBzaGVldHMgZnJvbSBjb21tY3RybC5oIGludG8gaW50byBwcnNodC5oLgoKCSogZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgJ29iamJhc2UuaCcgdG8gcHJldmVudCBjb21waWxlciB3YXJuaW5ncy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQmV0dGVyIGRldGVjdGlvbiBvZiBYU2htIGVycm9ycyAoc2hvdWxkIG5vdyBydW4gb24gcmVtb3RlIGRpc3BsYXlzKS4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVzIG1peGVyR2V0SUQxNi8zMiBwcm9ibGVtcy9lcnJvcnMuCgoJKiBvbGUvb2xlb2JqLmMsIG11bHRpbWVkaWEvZHBsYXkuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglJc0VxdWFsR1VJRCBpcyBkZWZpbmVkIGluICdpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCcuIEFsbCBvdGhlcgoJZGVjbGFyYXRpb25zIG11c3Qgc3VycmVuZGVyIG9yIHByZXBhcmUgdG8gYmUgbWV0IHdpdGggZGVhZGx5IGZvcmNlIDotKQoKCSogcmVsYXkzMi9vbGUzMi5zcGVjOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIG5ldyBmdW5jdGlvbnMgKGZyb20gV2luOTgpCglBZGRlZCBjb21tZW50cyB3aXRoIHRoZSBwYXJhbWV0ZXIgdHlwZXMgZm9yIGZ1dHVyZSB1c2Ugd2l0aCBkbGxnbHVlCgoJKiBmaWxlcy9kcml2ZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTZXQgdGhlIGZsYWdzIGZvciBHZXRWb2x1bWVJbmZvcm1hdGlvbjMyQS4KCgkqIHdpbmRvd3Mvd2luLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRmluZFdpbmRvdyBmYWlsZWQgZm9yIDMyIGJpdCB3aW5kb3dzIHdpdGggc3R5bGUgIT0gV1NfQ0hJTEQuCgpXZWQgRmViIDEwIDA2OjUyOjU4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL0F0dGljL3ByaW50LmgsIGluY2x1ZGUvd2luc3Bvb2wuaCwgbWlzYy9wcmludGRydi5jLCBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmMsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcGQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgZ3JhcGhpY3MvcHNkcnYvdGV4dC5jOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBbGJlcnQgRGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglNb3ZlcyBmaWxlcyBmcm9tIHByaW50LmggdG8gd2luc3Bvb2wuaCBmb3IgYmV0dGVyIFNESyBoZWFkZXIgY29tcGxpYW5jZQoJZm9yIFdpbmVsaWIgcHJvZ3JhbXMuCgoJKiBpbmNsdWRlL2hvb2suaCwgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvdGNoYXIuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUFsYmVydCBEZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCUFkcmlhbiBUaHVyc3RvbiA8YXRodXJzdG9AY29yZWwuY2E+CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCVp5Z28gQmxheGVsbCA8enlnb2JAY29yZWwuY2E+CglNaXNjZWxsYW5lb3VzIHBhdGNoZXMgdG8gaGVhZGVyIGZpbGVzLiAgQWxsIG9mIHRoZXNlIGFyZSBzdXBwb3NlZGx5IHRoZXJlCgl0byBoZWxwIGJ1aWxkIFdpbmVsaWIgYXBwbGljYXRpb25zLgoKCSogaW5jbHVkZS93aW50eXBlcy5oOiBBbGJlcnQgRGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglBZHJpYW4gVGh1cnN0b24gPGF0aHVyc3RvQGNvcmVsLmNhPgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglaeWdvIEJsYXhlbGwgPHp5Z29iQGNvcmVsLmNhPgoJTW9yZSB0eXBlcyB3ZSBuZWVkIGZvciBjb21waWxpbmcgV2luZWxpYi9NRkMgYXBwbGljYXRpb25zLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCU1vcmUgdHlwZXMgZm9yIGNvbW1vbiBjb250cm9scy4gIE5lZWRlZCBmb3IgV2luZWxpYi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBvbGUvY29tcG9iai5jLCBvbGUvaWZzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUJldHRlciBzZXQgb2YgbWFjcm9zIGZvciBkZWZpbmluZyB0aGUgQ09NIGludGVyZmFjZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVR3byBBRFZBUEkzMiBzdHViczogSW1wZXJzb25hdGVTZWxmMzIgYW5kIEFjY2Vzc0NoZWNrMzIuIFNwZWxsaW5nIGZpeGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglGaXhlZCBkZWJ1ZyBvdXRwdXQgdG8gZm9sbG93ICctZGVidWdtc2cnIGZsYWdzLgoKVHVlIEZlYiAgOSAxNTo0OTozOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50MjAuYywgb2xlL3NhZmVhcnJheS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci90aHJlYWQuYywgd2luZG93cy93aW5oZWxwLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJQWRkZWQgbWlzc2luZyBpbmNsdWRlcyB0byBhdm9pZCB3YXJuaW5ncy9lcnJvcnMuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2x6ZXhwYW5kLmgsIGluY2x1ZGUvbnRkbGwuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS92Z2EuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luY29uLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbmUva2V5Ym9hcmQxNi5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL3NoZWxsMTYuaCwgaW5jbHVkZS93aW5lL3czMnNrcm5sLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5lL3dpbmVzb3VuZC5oLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2lubmV0d2suaCwgaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3dpbnZlci5oOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCU1vdmVkIGV2ZXJ5dGhpbmcgb3V0IG9mIHdpbmRvd3MuaC4KCgkqIGdyYXBoaWNzL3dpbmcuYywgaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL3BhbGV0dGUuaCwgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9wYWxldHRlLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCUJyYWQgUGVwZXJzIDxicmFkQGxpbnV4Y2FuYWRhLmNvbT4KCVdpbkcgZml4ZXMuCgoJKiBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdGltZXIuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLUZpeGVkIE1FU1NBR0UgZnVuY3Rpb25zIHRoYXQgd2VyZSB0aHVua2luZyBkb3duIHRvIDE2IGJpdHMgaW1wbGVtZW50YXRpb24uCglTbyBQZWVrTWVzc2FnZTMyLCBHZXRNZXNzYWdlMzIsIFBvc3RNZXNzYWdlMzIsIFBvc3RUaHJlYWRNZXNzYWdlIGFyZSBmaXhlZAoJd2l0aCB0aGlzIHBhdGNoLiBVbmljb2RlIHZlcnNpb24gb2YgdGhvc2UgZnVuY3Rpb25zIGlzIGN1cnJlbnRseSBvbmx5CgljYWxsaW5nIHRoZSBBU0NJSSB2ZXJzaW9uLgoJLUZpeGVkIHF1ZXVlIHNpZ25hbGluZyB1c2luZyBhIG5ldyBFVkVOVCBvYmplY3QgaW4gdGhlIHF1ZXVlIGZvciAzMiBiaXRzCgl0aHJlYWQuIE1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdCBoYXMgYmVlbiBmaXhlZCBhbmQgaXMgbm93IGJsb2NraW5nIG9uIHRoZQoJcmlnaHQgRVZFTlQuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJR2V0TWV0YUZpbGVCaXRzRXggc2hvdWxkIHdvcmsgaW4gYnl0ZXMgbm90IHdvcmRzLgoKCSogaW5jbHVkZS9zaGxvYmouaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglEbGxHZXRDbGFzc09iamVjdCBzaG91bGQgdGFrZSBhIFJFRkNMU0lEIG5vdCBhbiBMUENMU0lELgoKCSogb2JqZWN0cy9kaWIuYywgaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hhbmdlIGZhdWx0IGhhbmRsZXIgJ2FkZHInIGFyZ3VtZW50IHRvIExQQ1ZPSUQuCgoJKiBmaWxlcy9maWxlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBWSVJUVUFMX0hhbmRsZUZhdWx0IGlmIHJlYWQvd3JpdGUgcmV0dXJucyBFRkFVTFQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRml4IHR5cG8gdG8gbWFwIEdldFRleHRFeHRlbnRQb2ludCB0byB0aGUgY29ycmVjdCAzMkEgdmVyc2lvbi4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLCBpbmNsdWRlL3BlZXhlLmgsIGluY2x1ZGUvd2luY29uLmgsIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIHNtYWxsIGJ1Z2ZpeGVzLCBhZGRlZCBtb3JlIFBFIHJlbG9jYXRpb24gdHlwZXMgKGZvciBXaW5DRSBtb3N0bHkpLAoJc29tZSBjb25zb2xlIHByb3RvdHlwZXMsIC1kbGwgaXMgdXNlZnVsIGZvciB3aW5lbGliIHRvbywgcmVndGVzdAoJY29tcGlsZSBmaXhlZC4KCgkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglHZXRDdXJzb3JQb3MgaXMgYWN0dWFsbHkgYSBCT09MLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCU1vcmUgdHlwZXMsIEMrKyBwcm90ZWN0aW9uLCBhbmQgYSB0eXBvIGNvcnJlY3Rpb24gZm9yIG1tc3lzdGVtLmguCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IFp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJTW92ZSB0aGUgI2RlZmluZSBvZiBEVU1NWVVOSU9OTkFNRSogdG8gYmVmb3JlIHRoZXkgYXJlIHVzZWQuCglBZGQgYSBkZWZpbml0aW9uIGZvciBEVU1NWVVOSU9OTkFNRSAoYXMgb3Bwb3NlZCB0byBEVU4xLCBEVU4yLi4uKS4KCVVzZSB0aGUgY29ycmVjdCBXSU5FTElCX05BTUVfQVcgbWFjcm8gZm9yIFRWSVRFTSBhbmQgcmVsYXRlZCBuYW1lcy4KCURlZmluZSAiVFZfSVRFTSIgdG8gYWdyZWUgd2l0aCB5b3Uta25vdy13aG8ncyBkb2N1bWVudGF0aW9uLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTlVMTCBpcyBhIHZhbGlkIGFyZ3VtZW50IGFzIGhhbmRsZSBmb3IgR2V0RmlsZVZlcnNpb25JbmZvU2l6ZTMyQS4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGJ1ZmZlcmVkIGRldmljZSBhY2Nlc3MgZm9yIERJbnB1dCdzIG1vdXNlIGRyaXZlci4KCgkqIGZpbGVzL2ZpbGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglXcm9uZyBhY2Nlc3Mgb24gc2VydmVyIGhhbmRsZSB3YXMgZGVtYW5kZWQgKEdFTkVSSUNfUkVBRCBpbnN0ZWFkIG9mCglHRU5FUklDX1dSSVRFKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCZXR0ZXIgaW1wbGVtZW50YXRpb24gKHRha2VzIHN0cmluZ3Mgb3IgcmVzLWlkJ3Mgbm93KS4KCgkqIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IE5VTEwgcG9pbnRlciBjaGVjayBmb3Igb3V0cHV0IHBhcmFtZXRlcnMuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCUZpeGVkIHR3byBwb2ludGVyL2ludGVnZXIgbWlzbWF0Y2ggd2FybmluZ3MuCgoJKiBkb2N1bWVudGF0aW9uL2NvbnNvbGU6IFp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBjb25zb2xlL3h0ZXJtLmMsIHdpbjMyL2NvbnNvbGUuYzoKCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJd2luZV9vcGVucHR5IGlzIG5vdCBwcm9wZXJseSBkZWNsYXJlZCAoZWl0aGVyIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZAoJZGVjbGFyYXRpb25zKSBpbiBib3RoIHBsYWNlcyB3aGVyZSBpdCBpcyB1c2VkLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kaWIuYzoKCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJRml4IHR5cGVzIG9mIEdldERJQml0cyBmdW5jdGlvbnMgKExQU1RSIHNob3VsZCBiZSBMUFZPSUQpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBzZXZlcmFsIHByb2JsZW1zIHdpdGggU2V0RElCaXRzVG9EZXZpY2UgaWYgeFNyYyAhPSAwLgoJVGhhbmtzIHRvIElhbiBTY2htaWR0IGZvciB0aGUgbG9ncy4KCgkqIHdpbmRvd3MvbWRpLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVRoZSBzeXN0ZW1zIGJ1dHRvbnMgKG1pbmltaXplL3Jlc3RvcmUvY2xvc2UpIG5vdyBhcHBlYXIgb24gdGhlIG1lbnUKCWJhciBvZiBtZGkgYXBwbGljYXRpb24uCgoJKiBjb250cm9scy9tZW51LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBtYWdpYyBtZW51IGl0ZW1zIGlkJ3MgdXNlZCBieSB3aW5kb3dzIHdoZW4gaW5zZXJ0aW5nCgl0aGUgbWluaW1pemUvbWF4aW1pemUvY2xvc2UgYnV0dG9ucyBpbiB0aGUgbWVudSBiYXIgb2YgYW4gYXBwbGljYXRpb24uCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IEphc29uIE1jTXVsbGFuIDxqbWNjQG9udHYuY29tPgoJQWRkcyBzdXBwb3J0IGZvciBFTVJfU1RSRVRDSERJQklUUyBpbiBFTUZzLgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGltYWdlIHNpemUgYW5kIGxpbmUgc2l6ZSwgYWRkZWQgOGJpdCBjb2xvci9wYWxldHRlIGhhbmRsaW5nLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSB0aGUgSmF6eiBHdXkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJRml4ZWQgZm9ybWF0dGluZyBvZiBjb2RlCglOb3cgY2hhbmdlcyB0byBkaXJlY3Rvcnkgb2YgcHJvZ3JhbSB0byBiZSBydW4gYmVmb3JlIHN0YXJ0aW5nIHdpbmUKCgkqIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy91c2VyLmMsIGluY2x1ZGUvdXNlci5oLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gQ2xlYW5lZCB1cCB0aGUgbWVzc2FnZSBxdWV1ZSB3aGVuIGEgdGhyZWFkIGV4aXQgKGJ1dCBub3QgdGhlIHByb2Nlc3MpLgoJLSBNb2RpZmllZCBRVUVVRV9EZWxldGVNc2dRdWV1ZSB0byBleGl0IGdyYWNlZnVsbHkgKHdpdGhvdXQgY3Jhc2hpbmcgV2luZSkgaWYKCSAgcXVldWUgbGluayBsaXN0IGlzIGNvcnJ1cHRlZC4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU291bmRzIHdlcmUgY3V0IG9mZiBkdWUgdG8gaW50ZWdlciBvdmVyZmxvdy4gRml4ZWQuCgoJKiBpbmNsdWRlL3dpbmRvd3N4Lmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRkZWQgd2luZG93c3guaCBmb3IgV2luZWxpYi4KCkZyaSBGZWIgIDUgMTc6NDA6NDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5oLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6Cgk8ZXdpbGxAbmNhbC52ZXJpby5jb20+CglBZGRlZCBjb21tb24gZGlhbG9ncyB0ZXN0IHByb2dyYW0uCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbnBvcy5oLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBtYW5hZ2VtZW50IGFuZCBhbGxvY2F0aW9uIG9mIHRoZSBQRVJRVUVVRURBVEEgc3RydWN0dXJlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBhIGR1bXAgb2YgdGhlIHBhbGV0dGUgY3JlYXRpb24gZmxhZ3MKCS0gY2hhbmdlZCBwYWxldHRlIGNyZWF0aW9uIGNvZGUgaW4gdmdhLmMgdG8gcHJldmVudCB1c2VsZXNzIGVycm9yCgkgIG1lc3NhZ2UKCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4sIGZpbGVzL2RyaXZlLmMsIHdpbmUuaW5pOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIHZmYXQvd2luOTUgYXMgZGVmYXVsdC4KCgkqIGluY2x1ZGUvdmZ3LmgsIG11bHRpbWVkaWEvbXN2aWRlby5jLCBwcm9ncmFtcy9hdml0b29scy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvbXN2ZnczMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVcGRhdGVkIG1zdmlkZW8gLyB2ZncuaCwgdXNlIGJ1aWx0aW4gbXN2ZnczMi5kbGwgYnkgZGVmYXVsdCwgYWRkZWQKCWF2aWluZm8gYW5kIGF2aXBsYXkgcHJvZ3JhbXMuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29udGludWVkIGhhY2sgdG8gd2luMzIvY29uc29sZS5jLCBzbyB0aGF0IHRoZSBJREEgUHJvIERpc2Fzc2VtYmxlcgoJd29ya3MgYWdhaW4uIE5lZWRzIG11Y2ggbW9yZSB3b3JrIGhvd2V2ZXIuCgoJKiBvbGUvc3RvcmFnZTMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW5jbHVkZSBvYmpiYXNlLmggZm9yIENvVGFza01lbSogcHJvdG90eXBlcyAob3Igd2UgZ2V0IFdJTkFQSQoJcHJvYmxlbXMpLgoKCSogb2xlL3N0b3JhZ2UzMi5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgVUxPTkcgdG8gc3RhdGljIGNvbnN0IE9GRlNFVF94eC4KClRodSBGZWIgIDQgMTY6NDU6NDAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVZhcmlvdXMgbWFucGFnZSB1cGRhdGVzLCBpbmNsdWRpbmcgdGhlIGluY29ycmVjdCBzdGF0ZW1lbnQgYWJvdXQgZ2xpYmMKCWFuZCBjbG9uZSgpLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmc6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUZpeCBwb2ludGVyIHRvIHRoZSBXaW5kb3dzIERpc2Fzc2VtYmxlciAzMi4gIFRoYW5rcyB0byBIZXJiZXJ0CglSb3NtYW5pdGggPGhlcnBAd2lsZHNhdS5pZHYudW5pLWxpbnouYWMuYXQ+IGZvciBzdWdnZXN0aW5nIHRoaXMuCgoJKiBkbGxzL21zYWNtMzIvZHJpdmVyLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbm90aGVyIHVzYWdlIG9mIG5vbi1wb3J0YWJsZSBmdW5jdGlvbnMuLi4KCgkqIG1zZG9zL2Rvc21lbS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU29tZSB2YWx1ZXMgb2YgcEJpb3NEYXRhIGFkZGVkL2ZpeGVkLgoKCSogb2JqZWN0cy9wYWxldHRlLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvd2lkZ2V0cy5jLCBkZWJ1Z2dlci9kYmcueSwgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3Mvd2luZy5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL2NvbG9yLmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2Rlc2t0b3AuaCwgaW5jbHVkZS9kaXNwbGF5LmgsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgbWlzYy9tYWluLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY29sb3IuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2dkaW9iai5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBzb21lIG1vcmUgY29kZSB0byB0aGUgWDExIGRyaXZlci4KCgkqIHdpbmRvd3MvdHR5ZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L21haW4uYywgd2luZG93cy90dHlkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3R0eWRydi9tb3VzZS5jLCB3aW5kb3dzL3R0eWRydi93bmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVFRZIGRyaXZlciBjaGFuZ2VzLgoKCSogd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9kZXNrdG9wLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVgxMSBkcml2ZXIgY2hhbmdlcy4KCgkqIHRzeDExL3RzX3hmODZkZ2EuYywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIHRzeDExL3RzX3hsaWIuYywgdHN4MTEvdHNfeHBtLmMsIHRzeDExL3RzX3hyZXNvdXJjZS5jLCB0c3gxMS90c194c2htLmMsIHRzeDExL3RzX3h1dGlsLmMsIGluY2x1ZGUvdHNfeGY4NmRnYS5oLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS90c194cG0uaCwgaW5jbHVkZS90c194cmVzb3VyY2UuaCwgaW5jbHVkZS90c194c2htLmgsIGluY2x1ZGUvdHNfeHV0aWwuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVyczoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTm9uLVgxMSBjb21waWxlIGZpeCBmb3IgZ2VuZXJhdGVkIGNvZGUuCgoJKiBpbmNsdWRlL21vbml0b3IuaCwgd2luZG93cy9tdWx0aW1vbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglJbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IG1vbml0b3IgYWJzdHJhY3Rpb24uCgoJKiBncmFwaGljcy90dHlkcnYvLmN2c2lnbm9yZSwgZ3JhcGhpY3MvdHR5ZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBNYWtlZmlsZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTmV3IFRUWSBkcml2ZXIgZm9yIEdESS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgdGhlIGdyYXBoaWNzL3R0eWRydiBkaXJlY3RvcnkuCgktIERvbid0IHNlYXJjaCBmb3IgcmVlbnRyYW50IFggd2hlbiBYIGRvZXNuJ3QgZXhpc3QuCgktIEFkZGVkIGNvbmZpZyBvcHRpb25zIEhBVkVfTElCWFhQTQoJLSBBZGRlZCBjaGVja3MgaWYgdGhlIGhlYWRlciBmaWxlcyBhbHNvIGV4aXN0IGZvciBzb21lIGxpYnJhcmllcwoKVHVlIEZlYiAgMiAxNjoxNDoyMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgaW5jbHVkZS9pbnRlcmZhY2VzLmgsIG9sZS9zYWZlYXJyYXkuYywgb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UzMi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZXBsYWNlZCByZWZlcmVuY2VzIHRvIGludGVyZmFjZXMuaCBieSB3aW5lL29ial94eHguaCBoZWFkZXJzIGluc3RlYWQKCXNpbmNlIHRoZXNlIGhlYWRlcnMgYWxyZWFkeSBwcm92aWRlIHRoZSBuZWNlc3NhcnkgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL21zZG9zLmgsIG1zZG9zL0F0dGljL2Nkcm9tLmMsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pbnQyZi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIHJlZmVyZW5jZXMgdG8gb2Jzb2xldGUgbXNkb3MvY2Ryb20uYyBmaWxlLgoJTWFrZSB1c2Ugb2YgbmV3IFdpbmUgaW50ZXJuYWwgQ0QgUk9NIGludGVyZmFjZS4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdHJhY2tzIGluZGV4aW5nIGluIG1jaWNkYS5jCglNYWtlIHVzZSBvZiBuZXcgV2luZSBpbnRlcm5hbCBDRCBST00gaW50ZXJmYWNlLgoKCSogaW5jbHVkZS9jZHJvbS5oLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2Nkcm9tLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5ldyBXaW5lIGludGVybmFsIGludGVyZmFjZSBmb3IgaGFuZGxpbmcgQ0QgUm9tIChlc3BlY2lhbGx5IGF1ZGlvIENECglST00pLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3RyZWV2aWV3LmgsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJQ2hhbmdlIGEgZmV3IHR5cGVzIHRvIG1hdGNoIHlvdS1rbm93LXdobydzIGRlY2xhcmF0aW9ucy4KCUhUUkVFSVRFTSBpcyBhIHN0cnVjdCBfVFJFRUlURU0gRkFSKgoJR2V0RElCaXRzIHBhc3NlcyBhIExQVk9JRCBmb3IgdGhlIGJpdG1hcCBkYXRhLCBub3QgTFBTVFIuCglBZGp1c3RtZW50IG9mIFdpbmUgQyBjb2RlIHRvIG1hdGNoIHRoZSBuZXcgdHlwZXMgaW5jbHVkZWQuCgoJKiBtaXNjL2x6ZXhwYW5kLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIEdFVF9MWl9TVEFURSBtYWNyby4KCgkqIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBzdHVicyBmb3IgbmV3IERpcmVjdERyYXc0IGFuZCBEaXJlY3REcmF3U3VyZmFjZTQgbWV0aG9kcy4KCgkqIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy9DSEFOR0VTOgoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJRml4ZWQgd3Jvbmcgb3JkZXIgb2YgcmVzX2ljbyBhbmQgcmVzX2JtcCB3aGljaCBtdXN0IGJlIGluIFJUX3h4eCBvcmRlci4KCgkqIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCXJlc2xlbiBjb3VsZCBiZSB1c2VkIHVuaW5pdGlhbGlzZWQgaW4gR2V0RmlsZVJlc291cmNlMzIgKGZpeGVzIHNvbWUKCXN0cmFuZ2UgVmVyUXVlcnlWYWx1ZSBjcmFzaGVzKS4KCgkqIG9sZS9ubHMvc3ZlLm5sczogSmFuIEQuIDxKYW4uRGphcnZAbWJveDIwMC5zd2lwbmV0LnNlPgoJQWRkZWQgZGVmaW5pdGlvbiBmb3IgTE9DQUxFX1NHUk9VUElORywgTE9DQUxFX1NNT05HUk9VUElORyBhbmQKCUxPQ0FMRV9JSU5UTENVUlJESUdJVFMuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFByZXNlcnZlIEVBWCBpbiBVbk1hcFNMRml4QXJyYXkoKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZXMgbGl0dGxlIHBvaW50ZXIgYnVnIGluIERQQV9EZWxldGVQdHIoKS4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbWVtb3J5L3N0cmluZy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBLRVJORUwuNDM0IChVbmljb2RlVG9BbnNpKS4KCgkqIGZpbGVzL2RyaXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJR2V0RGlza0ZyZWVTcGFjZUV4MzJBIGNhbiBnZXQgbnVsbCBwb2ludGVycyBhbmQgc3RpbGwgbm90IGNyYXNoLgoKCSogZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUNsZWFyIHVwIGFyZ3MgdG8gUFNEUlZfQWR2YW5jZWRTZXR1cERpYWxvZy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglSZWR1Y2UgTUFYX0ZPTlRfU0laRSB0byAxMDAwLgoKU3VuIEphbiAzMSAxOTowNDozMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvY29uc29sZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBpbnB1dCBxdWV1ZSB0byBzZXJ2ZXItc2lkZSBjb25zb2xlIG9iamVjdCwKCXJlYWQvd3JpdGVfY29uc29sZV9pbnB1dCByZXF1ZXN0cywgYW5kIHVzZSB0aGVtIGZvcgoJUmVhZC9Xcml0ZUNvbnNvbGVJbnB1dC4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzogR2VvZmYgQ2xhcmUgPGd3Y0Byb290LmNvLnVrPgoJRml4IHRvIGFsbG93IGZvciByZWN2bXNnKCkgcmV0dXJuaW5nIGxlc3MgZGF0YSB0aGFuIGlzIG5lZWRlZC4KCgkqIGluY2x1ZGUvdG9vbGhlbHAuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglBdHRlbXB0IGF0IGZpeGluZyB0aGUgTUFYX1BBVEggbXVsdGlwbGUgZGVmaW5pdGlvbiBwcm9ibGVtLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gSmFuIDMxIDEwOjEzOjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9kaWZ5IE5FX0ZpbmRUeXBlU2VjdGlvbiBhbmQgTkVfRmluZFJlc291cmNlRnJvbVR5cGUgc28gYXMgdG8gYmUKCXVzYWJsZSBieSB0aGUgVkVSU0lPTiBjb2RlLgoKCSogaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgR2V0UmVzRGlyRW50cnlBIGZvciB1c2UgYnkgdGhlIFZFUlNJT04gY29kZS4KCgkqIG1pc2MvQXR0aWMvdmVyLmMsIG1pc2MvTWFrZWZpbGUuaW46CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgb2xkIFZFUi5ETEwgY29kZS4KCgkqIGRsbHMvdmVyc2lvbi8uY3ZzaWdub3JlLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBWRVJTSU9OLkRMTC4gQmFzZWQgb24gb2xkIG1pc2MvdmVyLmMuCgktIEFjY2Vzc2luZyBQRSB2ZXJzaW9uIGluZm8gcmVzb3VyY2VzIHNob3VsZCB3b3JrIGNvcnJlY3RseSBub3cuCgktIEZpeGVkIG1lbW9yeSBsZWFrcy4KCS0gQ2xlYW4gc2VwYXJhdGlvbiBvZiAxNi0gYW5kIDMyLWJpdCBwYXJ0cy4KCS0gTWlub3IgYnVnZml4ZXMuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZCBuZXcgc3ViZGlyZWN0b3JpZXMgZGxscy92ZXIgYW5kIGRsbHMvdmVyc2lvbi4KCgkqIGlmMTYzMi92ZXIuc3BlYywgZGxscy92ZXIvLmN2c2lnbm9yZSwgZGxscy92ZXIvTWFrZWZpbGUuaW4sIGRsbHMvdmVyL3ZlcjE2LmMsIGluY2x1ZGUvdmVyLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGF0aW9uIG9mIFZFUi5ETEwuIFRodW5rcyB1cCB0byBWRVJTSU9OLkRMTC4KCgkqIG1pc2MvbHN0ci5jOiBQYXNjYWwgQ3VvcSA8Y3VvcUB2aXNhbi5pbnJpYS5mcj4KCUlzQ2hhckFscGhhMzJBOiB1c2UgbG9vay11cCB0YWJsZSBmcm9tIG9sZTJubHMuYy4KCgkqIG9sZS9vbGUybmxzLmM6IFBhc2NhbCBDdW9xIDxjdW9xQHZpc2FuLmlucmlhLmZyPgoJTENNYXBTdHJpbmczMkE6IEltcGxlbWVudGVkIGZsYWdzIE5PUk1fSUdOT1JFTk9OU1BBQ0UgYW5kCglOT1JNX0lHTk9SRVNZTUJPTFMgaW4gc3RyaW5nIG1hcHBpbmcgbW9kZS4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUNyZWF0ZSBYIHdpbmRvdyBmb3IgY2hpbGQgd2luZG93cyByZXBhcmVudGVkIHRvIGJlIHRvcCBsZXZlbCB3aW5kb3dzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBpbmNsdWRlL3NoZWxsLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIGZvciBQYXRoUXVhbGlmeTMyW0F8V10uCgoJKiBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kZHJhdy5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglCYWJyaWFuIFZpa3RvciA8dkB1bHlzc2VzLnNjaC5ibWUuaHU+CgktIGFkZGVkIHN1cHBvcnQgZm9yIENvbG9yS2V5aW5nIGR1cmluZyBibGl0cwoJLSBtaXNjZWxsYW5lb3VzIGZpeGVzCgoJKiBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL250ZGxsLmgsIHJlbGF5MzIvbnRkbGwuc3BlYzoKCUFsZXggS29yb2JrYSA8a29yb2JrYUBnYWxheHkuYW1zLnN1bnlzYi5lZHU+CglBZGRlZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBNUlNXIGxvY2tzLgoKCSogbXNkb3MvaW50MjEuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBtaXNzaW5nIGluY2x1ZGVzICh0aGUgUFNQIGhhbmRsaW5nIHdhcyBpbmNvcnJlY3QsIGFzIHRoZQoJTVpfU1VQUE9SVEVEIGRlZmluaXRpb24gd2FzIG1pc3NpbmcpLiBBZGRlZCBhIHNpbXBsZSBoYW5kbGVyIGZvcgoJZGlyZWN0IGNvbnNvbGUgaW5wdXQsIHdoaWNoIG5lZWRzIHRvIGJlIGltcHJvdmVkLgoKCSogY29uc29sZS90dHkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTbWFsbCBmaXguCgoJKiBzY2hlZHVsZXIvc3luY2hyby5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxpc3QgaGFuZGxlcyBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIGlzIHdhaXRpbmcgZm9yIHdoZW4gcnVubmluZyB3aXRoCgktZGVidWdtc2cgK3dpbjMyLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgZm9yIEdldFNlY3VyaXR5RGVzY3JpcHRvckNvbnRyb2wuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBmb3IgR2V0VXNlck9iamVjdFNlY3VyaXR5LgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGhhbmRsaW5nIG9mIFJFR19NVUxUSV9TWiBhbmQgZml4ZWQgc21hbGwgYnVnIGluCglSZWdTZXRWYWx1ZS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUV2ZXJ5IEVNX0dFVExJTkUgc2VuZCBiZXR3ZWVuIGEgMzJXIHRvIGEgMzJBIHdpbmRvdyByZXR1cm5lZAoJaW5jb21wbGV0ZSB2YWx1ZXMgYmVmb3JlICh0aGUgZmlyc3QgMiBjaGFycyB3aGVyZSBjdXQgYXdheSkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCB0eXBvIGluIFNldFdpbmRvd1BvczMyLgoKU2F0IEphbiAzMCAxNTo1NToyOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9idWlsdGluMzIuaCwgbWlzYy9tYWluLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVuYWJsZS9kaXNhYmxlIHJlbGF5MzIgZGVidWdnaW5nIG9uIHRoZSBmbHkuIFN0YXJ0IGFwcCB3aXRoCgktZGVidWdtc2cgK3JlbGF5IG9yIHdhcm4rcmVsYXkuIFN1Z2dlc3RlZCBieSBKdWVyZ2VuIFNjaG1pZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL3dpbmVfZ2wuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBNZXNhJ3MgaGVhZGVyIGZpbGVzLgoKCSogbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgZXJyb3IgbWVzc2FnZXMuCgoJKiBtaXNjL2NvbW1kbGcuYzogQmVybmQgSGVyZCA8aGVyZEBoZXJkc29mdC5jb20+CglVc2UgcHJvcGVyIDE2LT4zMiBtZXNzYWdlIGNvbnZlcnNpb24gaW4gRklMRURMR19DYWxsV2luZG93UHJvYy4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBCZXJuZCBIZXJkIDxoZXJkQGhlcmRzb2Z0LmNvbT4KCVNldFBhcmVudCBzaG91bGQgbGluayB0aGUgd2luZG93IGF0IHRoZSBzdGFydCBvZiB0aGUgbGlzdC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJSW4gV2luZG93IFNldFdpbmRvd1BvcyB3aXRoIFNXUF9ISURFV0lORE9XIGRvZXMgbm90IHJlbW92ZQoJdGhlIGZvY3VzIGZyb20gdGhlIGZvY3VzIHdpbmRvdzsgU2hvd1dpbmRvdyB3aXRoIFNXX0hJREUgZG9lcy4KCVNvIG1vdmUgdGhlIGNvZGUgdGhhdCBkb2VzIHRoaXMgZnJvbSBTZXRXaW5kb3dQb3MgdG8gU2hvd1dpbmRvdy4KCgkqIG1lbW9yeS9zdHJpbmcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgTlVMTCBpbiBsc3RyY3B5KiAoV2luZG93cyB1c2VzIHJlYWwgZXhjZXB0aW9uIGhhbmRsZXJzKS4KCgkqIE1ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anVyYW5AY3NlLnBzdS5lZHU+CglEb24ndCBpbnN0YWxsIGluY2x1ZGUgZmlsZXMgd2hlbiAtLWRpc2FibGUtbGliIGlzIHVzZWQuCgoJKiByZWxheTMyL3dpbm1tLnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBXSU5NTSBqb3kqIC5zcGVjIGVudHJpZXMuCgoJKiBtc2Rvcy94bXMuYzogQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJWE1TIGZpeC4KCgkqIG1zZG9zL2Rvc21lbS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU3BlbGxpbmcgZml4LgoKCSogUkVBRE1FOiBBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEb2MgdXBkYXRlLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludGVycnVwdHMuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNvbWUgaW50ZXJydXB0IGVuaGFuY2VtZW50cy4KCgkqIG1zZG9zL2lvcG9ydHMuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCWltcGxlbWVudGVkIHRpbWVyIGxhdGNoaW5nCgl0cmFjZSBtZXNzYWdlIGZpeAoJdGVtcG9yYXJ5ICJmaXgiIGZvciBMaW51eCdzIGNvYXJzZSB0aW1lciByZXNvbHV0aW9uCgoJKiBpZjE2MzIvY29tcG9iai5zcGVjLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvY29tcG9iai5jLCBvbGUvb2xlMi5jLCByZWxheTMyL29sZTMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgc3RhcnR1cC1zaHV0ZG93biBtZWNoYW5pc20gZm9yIHRoZSBDT00gc3Vic3lzdGVtLgoJSW1wbGVtZW50ZWQgdGhlIENsYXNzIG9iamVjdCByZWdpc3RyYXRpb24gbWVjaGFuaXNtLgoKCSogcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlOiBBZGRlZCBGaS5zCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaCwgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIE9MRSBzdHJ1Y3R1cmVkIHN0b3JhZ2UuIFRoZSBtYWluCglmZWF0dXJlcyBvZiB0aGlzIGltcGxlbWVudGF0aW9uIGFyZToKCS0gQ2FuIG9wZW4gc3RvcmFnZXMgY3JlYXRlZCBpbiBXaW5kb3dzLgoJLSBDYW4gY3JlYXRlIG5ldyBzdG9yYWdlcyB0aGF0IHRoZSB3aW5kb3dzIGxpYnJhcmllcyBjYW4KCSAgcmVhZC4KCS0gUHJvdmlkZXMgYWxsIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNyZWF0ZS9vcGVuL3JlbW92ZSBhbmQKCSAgcmVuYW1lIHN0cmVhbXMgYW5kIHN0b3JhZ2VzIGluc2lkZSB0aGUgbWFpbiBzdG9yYWdlIG9iamVjdC4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtaXNjZW11L21haW4uYywgZ3JhcGhpY3MvZGRyYXcuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRGVmaW5lZCBSRVNUT1JFX1NJR05BTFMgYnkgZGVmYXVsdCBhbmQgY2FsbCBTSUdOQUxfRW11bGF0b3JJbml0Cgl0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciBpbnN0ZWFkLiBBZGRlZCBhIGZldyB0cmFjZXMuIEZpeGVkIHRoZQoJIk1lbW9yeSBjb3JydXB0aW9uICEiIG1lc3NhZ2UgaW4gREdBIG1vZGUuIENvbW1lbnRlZCBvdXQgYW4KCXVubmVjZXNzYXJ5IFRTWEY4NlZpZE1vZGVTZXRWaWV3UG9ydCB0aGF0IGNhdXNlZCBteSBYIHNlcnZlciB0bwoJYWN0IHVwLCByZWx5aW5nIG9uIFRTWEY4NkRHQVNldFZpZXdQb3J0IGluc3RlYWQuCgoJKiBncmFwaGljcy9wc2Rydi90ZXh0LmMsIG1zZG9zL2ludDJmLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGZpbGVzL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBtb3JlIHdhcm5pbmdzIGFuZCBidWdzIGZpeGVkLgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgaW5jbHVkZS90YWIuaDogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCVNtYWxsIHVwZGF0ZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90cmVldmlldy5oLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIFRoZSB1c3VhbCBidWdmaXhlcy4KCS0gQmV0dGVyIHVuaWNvZGUgc3VwcG9ydCAob25seSBkZWZpbmVzLCBjdXJyZW50bHkpCgktIERyYWcgJiBkcm9wIGltcGxlbWVudGVkLgoJLSBMUFNUUl9URVhUQ0FMTEJBQ0sgc2hvdWxkIHdvcmsgbm93LgoJLSBGaXJzdCBzdGFydCBhdCBjdXN0b20gZHJhdyBjb2RlLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBzdXJlIHRoYXQgdGhlIGtleXN0YXRlIHJlY2VpdmVkIGJ5IHRoZSBXTV9YQlVUVE9OVVAgYW5kCglXTV9YQlVUVE9ORE9XTiBtYXRjaGVzIHRoZSBtZXNzYWdlLiBJbiBYLCB0aGUga2V5c3RhdGUgaXMgY2hhbmdlZAoJYWZ0ZXIgdGhlIG1lc3NhZ2UgaXMgcHJvY2Vzc2VkLiAgSW4gV2luZG93cywgaXQgaXMgY2hhbmdlZCBiZWZvcmUuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJTWF0dGhldyBCZWNrZXIgPG1iZWNrZXJAZ2xhc3NjaXR5Lm5ldD4KCURvYyB1cGRhdGVzLgoKCSogd2luMzIvZmlsZS5jOiBCZXJlbmQgUmVpdHNtYSA8YmVyZW5kIGF0IGFzc2V0LWNvbnRyb2wuY29tPgoJU2V0RmlsZUF0dHJpYnV0ZXMzMkEgY2hhbmdlZCB0byBtYWtlIGZpbGUgd3JpdGVhYmxlIHdoZW4KCUZJTEVfQVRUUklCVVRFX1JFQURPTkxZIGlzIG5vdCBzZXQuCgoJKiBjb25zb2xlL2ludGVyZmFjZS5jLCBjb25zb2xlL25jdXJzZXMuYywgaW5jbHVkZS9jb25zb2xlLmgsIG1zZG9zL2ludDEwLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCVByZWxpbWluYXJ5IGNvbG9yIGNvbnNvbGUgc3VwcG9ydC4KCgkqIGRvY3VtZW50YXRpb24vbGFuZ3VhZ2VzLCBwcm9ncmFtcy9jbG9jay9DaGFuZ2VMb2csIHByb2dyYW1zL2Nsb2NrL0ZpLnJjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL0NoYW5nZUxvZywgcHJvZ3JhbXMvbm90ZXBhZC9GaS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHJlc291cmNlcy9zeXNyZXNfRmkucmM6CglKdWtrYS1QZWtrYSBJaXZvbmVuIDxqaWl2b25lbkBwb3NlaWRvbi5jcy5odXQuZmk+CglVcGRhdGVkIEZpbm5pc2ggbGFuZ3VhZ2Ugc3VwcG9ydC4KCkZyaSBKYW4gMjkgMTU6MTI6MTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBtdWx0aW1lZGlhL21zdmlkZW8uYywgb2xlL2d1aWQuYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzLy5jdnNpZ25vcmUsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uYywgcmVsYXkzMi9tc3ZmdzMyLnNwZWMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvb2xlYXV0by5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVcGRhdGVkIG1zdmlkZW8uIE5ldyBwcm9ncmFtICdpY2luZm8gWy1hYm91dF0gWy1jb25maWd1cmVdJyB0bwoJcXVlcnkgaW5zdGFsbGVkICh3aW4zMikgY29tcHJlc3NvcnMuIFN0YXJ0ZWQgb24gQVZJRklMRSBzdXBwb3J0LgoKVGh1IEphbiAyOCAxNzo1NjoxNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvYmluZGN0eC5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9tb25pa2VyLmMsIG9sZS9vbGUyLmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgRmlsZU1vbmlrZXIsIEl0ZW1Nb25pa2VyIGFuZCBCaW5kQ3R4CgljbGFzc2VzLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmw6CglORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUltcGxlbWVudGVkIHRoZSBzeW1ib2xmaWxlIGNvbW1hbmQgKGFzIG1lbnRpb25lZCBieSB0aGUgaGVscAoJY29tbWFuZCkuIFRoaXMgcmVhZHMgYSBzeW1ib2wgZmlsZSBpbiB0aGUgZm9ybWF0IGdlbmVyYXRlZCBieSBubS4KCgkqIG11bHRpbWVkaWEvZHBsYXkuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gU21hbGwgYnVnIGZpeC4KCS0gQWRkZWQgZGlyZWN0IHBsYXkgYXNjaWkgaW50ZXJmYWNlcy4KCS0gRml4ZWQgdXAgdGhlIFF1ZXJ5SW50ZXJmYWNlIGZvciBkcGxheSBhbmQgZHBsYXlsb2JieSB0byBoYW5kbGUgYWxsIGNhc2VzLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBGSUxFX1ZJRVcgc3RydWN0IGluaXRpYWxpc2F0aW9uLgoKCSogaW5jbHVkZS9kb3NleGUuaDoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIG5vbi1pMzg2IGNvbXBpbGUuCgoJKiBncmFwaGljcy92Z2EuYywgbXNkb3MvZHBtaS5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvbW1pby5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQ29tbWVudGVkIG91dCB1bnVzZWQgdmFyaWFibGVzIHRvIHByZXZlbnQgbmVlZGxlc3MgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2RkZW1sLmgsIG1pc2MvZGRlbWwuYzoKCUtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+Cgkxc3QgY3V0IGltcGxlbWVudGF0aW9uIG9mIERkZUluaXRpYWxpemUzMlcgYW5kIHN1cHBvcnRpbmcgY29kZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCU1hdHRoZXcgQmVja2VyIDxtYmVja2VyQGdsYXNzY2l0eS5uZXQ+CglEb2N1bWVudGF0aW9uIHN0YW5kYXJkaXphdGlvbnMuCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIE1hZGUgdGhlIG1lc3NhZ2UgcXVldWUgYWNjZXNzIHRvIGJlIHRocmVhZCBzYWZlLiAoVXNpbmcgdHdvIG5ldwoJICBmdW5jdGlvbnMgdG8gYWNjZXNzIHRoZSBtZXNzYWdlIHF1ZXVlLCBRVUVVRV9Mb2NrKCksIFFVRVVFX1VubG9jaygpCgkgIGluc3RlYWQgb2YgR2xvYmFsTG9jazE2KCkpLgoJLSBGaXhlZCBRVUVVRV9EdW1wUXVldWUgKHVzZWQgYnkgImluZm8gcXVldWUgPGhhbmRsZT4iIHdpdGggdGhlCgkgIHdpbmUtZGVidWdnZXIpLgoKCSogbXVsdGltZWRpYS9kc291bmQuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL3dpbmNvbi5oLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9pbW0uYywgbWlzYy9semV4cGFuZC5jLCBtc2Rvcy9pbnQyMS5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL250ZGxsL3J0bC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBhIGxvdCBvZiB3YXJuaW5ncyBmb3IgcG9zc2libGUgcHJvYmxlbXMuCgoJKiBtaXNjL2NvbW0uYzogSGVyYmVydCBSb3NtYW5pdGggPGhlcnBAd2lsZHNhdS5pZHYudW5pLWxpbnouYWMuYXQ+CglGaXhlZCB0eXBvLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSB0aGUgSmF6eiBHdXkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJRml4ZWQgdmFyaW91cyBidWdzLgoJTWFkZSBuZXdiaWUgbW9kZSBlYXNpZXIuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgR2V0SWNvbkluZm8xNiAoLnNwZWMsSUNPTklORk8gc3RydWN0IGlzIGRpZmZlcmVudCBmb3IgV2luMTYvV2luMzIpLgoKCSogY29uc29sZS9uY3Vyc2VzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3dpdGNoIG5jdXJzZXMuaC9jdXJzZXMuaCBpbmNsdWRlICh3b3JrcyBiZXR0ZXIgZm9yIEZyZWVCU0QpLgoKCSogd2luZG93cy9kcml2ZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBsb2FkaW5nIG9mIHdpbjMyIGRyaXZlcnMuCgpUdWUgSmFuIDI2IDE3OjI5OjQ5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9wcm9maWxlLmM6IERvbid0IGFib3J0IFBST0ZJTEVfR2V0U2VjdGlvbiBvbiBlbXB0eSBrZXlzLgoKCSogZGxscy9tc2FjbTMyL2ludGVybmFsLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVGVtcG9yYXJ5ICNpZiAwJ2VkIHBhcnQgZm9yIGJ1aWx0aW4gbW9kdWxlcyBpbiBNU0FDTSB0byBtYWtlIGl0Cgljb21waWxlIHdpdGggdGhlIHBhdGNoIGZvciBsb2FkYWJsZSBkcml2ZXJzLgoKCSogaW5jbHVkZS9kcml2ZXIuaCwgcmVsYXkzMi93aW5tbS5zcGVjLCB3aW5kb3dzL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIGRyaXZlcnMgaW4gV2luZS4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gdGhlIEphenogR3V5IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUEgcGVybCBzY3JpcHQgdG8gcHJvZHVjZSBhIGJ1ZyByZXBvcnQgd2l0aCBsaXR0bGUgaGFzc2xlLgoKCSogZ3JhcGhpY3MvZGlzcGRpYi5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIChkdW1teSkgRGVhdGgvUmVzdXJyZWN0aW9uIGNhbGxzIHRvIERpc3BsYXlEaWIuCgoJKiBtaXNjL2x6ZXhwYW5kLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxsb2NhdGUgYSBET1MgaGFuZGxlIGlmIHdlIG9wZW4gYSBub3JtYWwgZmlsZSB3aXRoIExaT3BlbkZpbGUxNi4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBkZXB0aCBjb252ZXJzaW9uIHJvdXRpbmVzIChvbmx5IDhicHAgLT4gMTYgYnBwIGZvciBub3cpCgktIGFkZGVkIHN1cHBvcnQgb2YgREVQVEhfRklMTCBmb3IgQmxpdHMKCS0gYWRkZWQgc29tZSBmbGFncyBpbiBHZXRDYXBzIHRvIGdldCBzb21lIGdhbWVzIHdvcmtpbmcKCgkqIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCByZWxheTMyL3VzZXIzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgR2V0SWNvbkluZm8xNiAtPiBjYWxsIHRvIEdldEljb25JbmZvMzIuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6IENvbW1lbnRlZCBvdXQgRVhFQ19TRVJWRVIKCgkqIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkzIG1pc3NpbmcgV0lOQVBJIGFkZGVkLgoKCSogZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGFuZ2VkIHNvbWUgdHJlZXZpZXcgcmVsYXRlZCBkZWZpbml0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBTSEJyb3dzZUZvckZvbGRlcigpIGRpYWxvZy4KCgkqIGRlYnVnZ2VyL21zYy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHR5cG8gaW4gdHlwZSAocmVtb3ZlZCBxdWl0ZSBhIGZldyB3YXJuaW5ncykuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgR2V0U2VjdXJpdHlEZXNjcmlwdG9yT3duZXIvR3JvdXAsIFJldmVydFRvU2VsZiBzdHVicy4KCVJldHVybiBOVUxMIGZyb20gT3BlblRocmVhZFRva2VuLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBlbmRsZXNzbHkgbG9vcCBpbiBDT05TT0xFX2dldF9pbnB1dCBhZnRlciBFT0YuCglDcmVhdGUgeHRlcm0gZXZlbiBpZiBzdGRpbiBpcyBub3QgYSB0ZXJtaW5hbGhhbmRsZS4KCVNldENvbnNvbGVDdXJzb3JQb3NpdGlvbjogT25seSBtYWtlIGNvbXBsZXggY29uc29sZSBvbiByb3cgY2hhbmdlLAoJaWdub3JlIGludGVybGluZSBwb3NpdGlvbmluZyAoc28gdGhlIGN5Z3dpbiBjbWRsaW5lIHRvb2xzIGRvIG5vdAoJY3JlYXRlIHh0ZXJtcyB1bm5lY2Vzc2FyeSkKCgkqIG1pc2MvcHJpbnRkcnYuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNYWtlIHN1cmUgRHJ2R2V0UHJpbnRlckRhdGEgcmV0dXJucyB0aGUgY29ycmVjdCBkYXRhIGlmIGNiRGF0YSA8PSAxCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gQ2hhbmdpbmcgTUVTU0FHRVFVRVVFIHN0cnVjdHVyZSBhY2NvcmRpbmcgdG8gVWxyaWNoIHByb3Bvc2l0aW9uLgoJLSBPbmUgbWVzc2FnZSBxdWV1ZSBmb3IgZXZlcnkgdGhyZWFkIG5lZWRpbmcgaXQuCgktIE1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIHF1ZXVlIGFyZSBub3cgc3RvcmVkIGluIGEgbGlua2VkIGxpc3QKCS0gTWVzc2FnZXMgYXJlIGFsbG9jYXRlZCBpbiB0aGUgc3lzdGVtIGhlYXAuCgktIE1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIHF1ZXVlIGFyZSAzMiBiaXRzIChNU0czMikuCgktIEFsbCByZWFkL3dyaXRlIG9wZXJhdGlvbnMgcmVnYXJkaW5nIG1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIHF1ZXVlIGFyZQoJICB0aHJlYWQgc2FmZS4KClN1biBKYW4gMjQgMTk6MTQ6NTggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBpbmNsdWRlL2ZsYXRzYi5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHNldmVyYWwgYnVncyBhbmQgdHlwb3MuCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVVwZGF0ZXMgYW5kIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIHJlbGF5MzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglOZXcgZHJhZyBsaXN0IGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHBvaW50ZXIgYnVncyBpbiBEUEFfSW5zZXJ0UHRyKCkgYW5kIERQQV9EZWxldGVQdHIoKS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgaW5jbHVkZS9wcm9ncmVzcy5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFdNX1tHL1NdRVRGT05UIGhhbmRsaW5nLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgV01fQ09NTUFORCBhbmQgV01fTk9USUZZIGhhbmRsaW5nLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgcmVkcmF3IGJ1ZyBmb3IgdHJhY2tpbmcgdG9vbHRpcHMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzb21lIG1lc3NhZ2VzIHRvIHRoZSByZWJhciBjb250cm9sLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogR2VvZmYgQ2xhcmUgPGd3Y0Byb290LmNvLnVrPgoJU2V2ZXJhbCBpbnRlcm5hbCBmdW5jdGlvbnMgd29uJ3QgY29tcGlsZSB3aGVuIHRoZSBjb25kaXRpb25hbAoJI2lmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykKCWNvbWVzIG91dCBmYWxzZS4gIEkgbW92ZWQgdGhlIGNvbmRpdGlvbmFscyBhcm91bmQgc28gdGhhdAoJdGhlIGZpbGUgd291bGQgYXQgbGVhc3QgY29tcGlsZS4gIE5vdCBzdXJlIGlmIGl0IGRvZXMgdGhlCglyaWdodCB0aGluZyBvbiBub24tbGludXgvRnJlZUJTRC9OZXRCU0Qgc3lzdGVtcy4KCgkqIG1pc2MvdG9vbGhlbHAuYzogR2VvZmYgQ2xhcmUgPGd3Y0Byb290LmNvLnVrPgoJTW92ZWQgcHJvY2Vzcy5oIGhpZ2hlciB1cCB0aGUgaW5jbHVkZSBsaXN0LCB0byBhdm9pZCBhIHByb2JsZW0gd2l0aAoJIkVSUiIgYmVpbmcgcmVkZWZpbmVkIGluIHN5cy9yZWdzZXQuaC4KCgkqIG1pc2MvY29tbS5jOiBHZW9mZiBDbGFyZSA8Z3djQHJvb3QuY28udWs+CglUaGUgQjU3NjAwIGFuZCBCMTE1MjAwIHN5bWJvbHMgYXJlIG5vdCBkZWZpbmVkIGluIFVuaXh3YXJlLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUNoYW5nZSBTV18/Pz8gb3B0aW9ucyBvbiBsaXN0IGJveCBzY3JvbGxpbmcgc28gdGhhdCB0aGV5IG1hdGNoIHdoYXQKCVdpbmRvd3MgZG9lcy4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCBET1MgaGFuZGxlIGFsbG9jYXRpb24gc2xpZ2h0bHksIHRvIGZpeCBwb3RlbnRpYWwgbWVtb3J5CglsZWFrcyBhbmQgbG9zdCBoYW5kbGVzLiBBbHNvIHJlbW92ZWQgc29tZSB1c2VsZXNzIGluaXQgY29kZS4KCgkqIGdyYXBoaWNzL3BzZHJ2L2FmbS5jLCBncmFwaGljcy9wc2Rydi90ZXh0LmMsIGlmMTYzMi9kdW1teS5jLCBpZjE2MzIvZ2RpLnNwZWMsIG1pc2MvcHJpbnRkcnYuYzoKCU5pY2sgSG9sbG93YXkgPE5pY2suSG9sbG93YXlAYWxmaWUuZGVtb24uY28udWs+CglJbnRlcm5hbCBQb3N0U2NyaXB0IHByaW50ZXIgZHJpdmVyIGltcHJvdmVtZW50cy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogR2VyYXJkIFBhdGVsIDxHLlBhdGVsQHdhbmFkb28uZnI+CglDaGFuZ2VkIEVESVRfRU1fQ2hhckZyb21Qb3MgdG8gcmV0dXJuIGxpbmUgbnVtYmVyLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRnJlZSB0aGUgcHJpdmF0ZSBkYXRhIHBvaW50ZXIsIFRIRU4gc2V0IGl0IHRvIE5VTEwuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzaW5nIFdJTkFQSS4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL3NhZmVhcnJheS5jLCByZWxheTMyL29sZWF1dDMyLnNwZWM6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2FmZUFycmF5IGZhbWlseSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkZWQgc3R1YiBmb3IgU2V0VGhyZWFkTG9jYWxlLgoKCSogb2JqZWN0cy90ZXh0LmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaW5pc2hlZCBHZXRUZXh0Q2hhcnNldEluZm8gcm91dGluZS4KCgkqIG9sZS9ubHMvZW51Lm5scywgb2xlL29sZTJubHMuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXhlZCBGSVhNRSBpbiBFbnVtVGltZUZvcm1hdHMzMlcKCUFkZGVkIHN1cHBvcnQgZm9yIEZPTlRTSUdOQVRVUkUgaW4gR2V0TG9jYWxlSW5mbzMyQSBhbmQgdXBkYXRlZAoJR2V0TG9jYWxlSW5mbzMyVy4KCgkqIGRvY3VtZW50YXRpb24vaW50ZXJuYWwtZGxsLCBkb2N1bWVudGF0aW9uL3NoZWxsMzIsIGRvY3VtZW50YXRpb24vd2luZS5tYW46CglQYXNjYWwgQ3VvcSA8UGFzY2FsLkN1b3FAaW5yaWEuZnI+CglGaXhlZCB0eXBvcy4KCgkqIGRlYnVnZ2VyL21zYy5jOiBTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUZpeGVkIHNvdXJjZSBsaW5lIG1hdGNoaW5nIGZvciBmdW5jdGlvbnMgaW4gREVCVUdfUHJvY2Vzc0NvZmZEZWJ1ZzsKCXNlYXJjaGluZyBmb3IgREJHIGFuZCBQREIgZmlsZXMuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6IFNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0PgoJRml4IGZvciBmaWxlcyB3aGljaCBkbyBub3QgY29udGFpbiBleHBvcnRzIChmZywgRVhFKSB0byBnZXQgcHJvY2Vzc2VkCglmb3IgZGVidWcgaW5mb3JtYXRpb24uCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvdGh1bmsuYywgdG9vbHMvYnVpbGQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgS0VSTkVMLjYyMSAoQ0JDbGllbnRUaHVua1NMRXgpLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2luZm8uYywgaW5jbHVkZS9tYWluLmgsIG1pc2MvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbGxvdyBzd2l0Y2hpbmcgb2ZmL29uIG9mIGRlYnVnbXNncyBpbiB0aGUgZGVidWdnZXIuCgoJKiBsb2FkZXIvbWFpbi5jLCBtaXNjZW11L2luc3RyLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9pbnQxNS5jLCBpbmNsdWRlL21pc2NlbXUuaDoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIEludCAweDE1LzB4YzA6IEJJT1MgLSBHRVQgQ09ORklHIGFuZCBzb21lIG90aGVyIEJJT1MKCWRhdGEuCgpTYXQgSmFuIDIzIDE0OjE1OjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9wYWludGluZy5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL2xzdHIuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgV0lOMTZfQ2FsbE1zZ0ZpbHRlcjMyLCBXSU4xNl9EaXNwYXRjaE1lc3NhZ2UzMiwKCURyYXdBbmltYXRlZFJlY3RzMTYgKHN0dWIpLCBGb3JtYXRNZXNzYWdlMTYsIFdJTjE2X0dldE1lc3NhZ2UzMiwKCVdJTjE2X1BlZWtNZXNzYWdlMzIgYW5kIFdJTjE2X1RyYW5zbGF0ZU1lc3NhZ2UzMi4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGd1aWQuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL2ludGVyZmFjZXMuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZG93cy5oLCBtaXNjL3NoZWxsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gc29tZSBmaXhlcywgY2xlYW5lZCB1cCBpbmNsdWRlcywgZml4ZWQgbGVha3MKCS0gY2xlYW4gRGxsUmVmZXJlbmNlQ291bnQsIGJldHRlciBEbGxNYWluKCkKCS0gZHluYW1pY2FsbHkgbGlua2luZyBMb29rdXBJY29uSWRGcm9tRGlyZWN0b3J5RXgzMiBhbmQKCSAgQ3JlYXRlSWNvbkZyb21SZXNvdXJjZUV4MzIgdG8gVVNFUjMyCgktIG1vdmVkIGd1aWQncyBpbnN0YW5jZXMgdG8gbmV3IGZpbGUgc2hlbGxndWlkLmMKCS0gaW1wbGVtZW50ZWQgIFNoZWxsRXhlY3V0ZUV4MzJXCgoJKiBvbGUvTWFrZWZpbGUuaW4sIG9sZS9jb21wb2JqLmMsIG9sZS9ndWlkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vdmVkIHRoZSBpbnN0YW5jZSBjcmVhdGlvbiBvZiBHVUlEJ3MgdG8gYSBuZXcgZmlsZS4KCVNpemUgb2YgY29tcG9iai5vIGdvZXMgZG93biB0byAxLzM7IHNob3VsZCBwcmV2ZW50IG1vcmUgc2lnMTEncy4KCgkqIGluY2x1ZGUvaW5pdGd1aWQuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZSB0byBpbnN0YW50aWF0ZSBHVUlEJ3MgbXMtbGlrZS4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNldCBwcml2YXRlIGRhdGEgc3RydWN0IHRvIE5VTEwgdG8gZXhwb3NlIHByb2JsZW1zIGluIG90aGVyIGNvZGUKCWJldHRlci4gRml4ZXMgdGhlIFhVbm1hcFdpbmRvdyBwcm9ibGVtcyByZXBvcnRlZCBieSByZXBsYWNpbmcgdGhlbQoJd2l0aCBOVUxMIHB0ciBkZXJlZmVyZW5jZXMuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnLW1zZ3MsIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLCBkb2N1bWVudGF0aW9uL2ludGVybmFsLWRsbCwgZG9jdW1lbnRhdGlvbi9pb3BvcnQtdHJhY2UtaGludHMsIGRvY3VtZW50YXRpb24vd2luZV9vczI6CglaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCUZpeGVkIHR5cG9zLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglET1MgcHJvZ3JhbXMgdXNlIGhhbmRsZXMgMC00IHdpdGhvdXQgb3BlbmluZy9jbG9zaW5nIGFueSBvZiB0aG9zZQoJaGFuZGxlcyBmaXJzdC4gU3BsaXQgdXAgSW5pdCBmcm9tIEFsbG9jRG9zSGFuZGxlIGFuZCBjYWxsIGl0IGZyb20KCXRoZSBET1NWTS4KCgkqIE1ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSBjb25maWd1cmUuaW4tPmNvbmZpZ3VyZSBydWxlICh3ZSBtaWdodCBub3QgaGF2ZSBhdXRvY29uZikuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCAidXNlci1mcmllbmRseSIgd2FybmluZyBmb3IgbWlzc2luZyBYLgoKCSogaW5jbHVkZS9vbGUuaDogRml4ZWQgR2V0T2JqZWN0IG1hY3JvIHByb2JsZW0uCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3QzRDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSB1cGRhdGVkIGRvY3VtZW50YXRpb24gdG8gYmUgaW4gc3luYyB3aXRoIGN1cnJlbnQgY29kZQoKCSogZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSB2YXJpb3VzIHdhcm5pbmcgYW5kIGJ1ZyBmaXhlcwoKCSogZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgbW9yZSB0ZXh0dXJlIGZvcm1hdHMgdXNpbmcgT3BlbkdMJ3MgcGFja2VkIHBpeGVsIGZvcm1hdHMKCgkqIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgaW5jbHVkZS9kM2QuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBiZXR0ZXIgc3VwcG9ydCBmb3IgRXhlY3V0ZUJ1ZmZlcnMKCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBjb3JyZWN0ZWQgYnVnIGluIFogQnVmZmVyIGFsbG9jYXRpb24KCS0gcHV0IFZJREVPTUVNT1JZIGZsYWcgZm9yIGFsbCBwcmltYXJ5IHN1cmZhY2VzCgktIHB1dCBzb21ldGhpbmcgaW4gYSBzdXJmYWNlIGFmdGVyIGEgUmVsZWFzZURDCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IE1vcnRlbiBXZWxpbmRlciA8dGVycmFAZGlrdS5kaz4KCU1pc3NpbmcgV0lOQVBJLgoKCSogY29udHJvbHMvc3RhdGljLmM6IE5pY2xhcyBLYXJsc3NvbiA8bmthcmxzc29AcmEuYWJvLmZpPgoJUmVtb3ZlZCBEVF9TSU5HTEVMSU5FIGFuZCBEVF9OT0NMSVAgc3R5bGVzIGZvciBTU19MRUZUTk9XT1JEV1JBUC4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBvcGVuZWQgZW5obWV0YWZpbGUgZm9yIG1hZ2ljIHZhbHVlcy4KCgkqIGluY2x1ZGUvZHNvdW5kLmgsIG11bHRpbWVkaWEvZHNvdW5kLmM6IFJvYiBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglGaXhlZCBkdXBsaWNhdGUgc291bmQgYnVmZmVyIGhhbmRsaW5nLiBVcGRhdGVkIHN0YXR1cy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZnVuY3Rpb25zICBsbWVtY3B5bkF0b1cgYW5kICBsbWVtY3B5bld0b0EgZm9yIGNvbnZlcnRpbmcKCVJFR19NVUxUSV9TWiAoaW5jbHVkaW5nIFwweDAwKQoJQmV0dGVyIGRlYnVnIG91dHB1dCBmb3IgUkVHX0JJTkFSWSBhbmQgUkVHX01VTFRJX1NaCglSZXdyaXR0ZW4gUmVnUXVlcnlWYWx1ZUV4MzJbQXxXXQoKCSogb2JqZWN0cy9wYWxldHRlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgQ3JlYXRlSGFsZnRvbmVQYWxldHRlLgoJRml4ZWQgMyBjcmFzaGVzICgxIHJlYWwsIDIgcG90ZW50aWFsKS4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgaWYxNjMyL3NoZWxsLnNwZWMsIGluY2x1ZGUvc2hlbGwuaCwgbWlzYy9zaGVsbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBFeHRyYWN0SWNvbkV4MTYsIGFkZGVkIHNvbWUgY29uc3RzIHRvIEV4dHJhY3RJY29uRXgqLgoKCSogb2xlL29sZTIuYywgb2xlL29sZWNsaS5jLCByZWxheTMyL29sZTMyLnNwZWMsIGluY2x1ZGUvd2luZXJyb3IuaDoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCURvRHJhZ0Ryb3AgYW5kIE9sZUlzQ3VycmVudENsaXBib2FyZCBzdHViIGltcGxlbWVudGF0aW9uLgoKCSogb2xlL3R5cGVsaWIuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBMb2FkVHlwZUxpYiBzdHViIHJldHVybiBmYWlsdXJlIGluc3RlYWQgb2Ygc3VjY2Vzcy4KCkZyaSBKYW4gMjIgMTc6MDk6NDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vYWNjZWxlcmF0b3JzLCBpbmNsdWRlL3dpbnVzZXIuaCwgbG9hZGVyL3Jlc291cmNlLmMsIHdpbmRvd3MvaW5wdXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYWNjZWxlcmF0b3IgaGFuZGxpbmcuIEFDQ0VMMTYgdXNlZCBpbnRlcm5hbCwgQUNDRUwzMiBmb3IgV2luMzIKCUFQSSwgUEVfQUNDRUwgZm9yIFBFIEFjY2VsZXJhdG9ycy4gU2VlIGRvY3VtZW50YXRpb24vYWNjZWxlcmF0b3JzLgoKVGh1IEphbiAyMSAxNDowNToxMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kZGVtbC5oLCBtaXNjL2RkZW1sLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglUaGVyZSB3ZXJlIHR3byBjb3BpZXMgb2YgdGhlIERkZUNtcFN0cmluZ0hhbmRsZXMgKEEgYW5kIFcpIGFuZCB0aGF0CglBUEkgZG9lcyBub3QgaGF2ZSAyIHZlcnNpb25zLiBSZW1vdmVkIHRoZSBleHRyYSB2ZXJzaW9uLgoKV2VkIEphbiAyMCAxNDo1NDowMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IFBhYmxvIFNhcmF0eGFnYSA8cGFibG8uc2FyYWNoYWdhQHBpbmcuYmU+CglTbWFsbCBwYXRjaC4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXaW4zMiBjb25zb2xlIG5lZWRzIFNZTkNIUk9OSVpFIGFjY2Vzcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBjb25zb2xlL25jdXJzZXMuYywgZGVidWdnZXIvc3RhYnMuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9jb25zb2xlLmgsIG1pc2MvcG9ydC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglhdXRvY29uZjogYWRkZWQgY2hlY2tzIGZvciBsaWJpby5oLCBlbGYuaCwgY3Vyc2VzLmgsbmN1cnNlcy5oIGFuZAoJZml4ZWQgaW5jbHVkZXJzLgoKCSogb2xlL29sZTJubHMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMQ01hcFN0cmluZ0E6IGlmIGRzdGxlbiBpcyBpbnN1ZmZpY2llbnQsIHJldHVybgoJRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUiAodmVyaWZpZWQpLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgc21hbGwgZml4ZXMgdG8gZW5obWV0YWZpbGVzLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBjYWxsIG93bmVyZHJhdyBmb3IgaW52YWxpZCBpdGVtcyAoZW1wdHkgZm9jdXNyZWN0cykuCglGaXhlcyBFdWRvcmEgMTZiaXQgZW1wdHkgSW5ib3ggcHJvYmxlbS4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIE5DX0RyYXdNYXhCdXR0b245NSBhbmQgTkNfRHJhd01pbkJ1dHRvbjk1IGZ1bmN0aW9ucy4gUmV3cm90ZQoJdGhlc2UgZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgbG9naWMgYXMgdGhlIE5DX0RyYXdDbG9zZUJ1dHRvbiBmdW5jdGlvbi4KCgkqIHdpbmRvd3Mvd2luLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJUmVwYXJlbnRpbmcgYSB3aW5kb3cgd2l0aCBTZXRQYXJlbnQgaW4gV2luZG93cyBzaG91bGQgY2F1c2UgdGhlIGNoaWxkCgl3aW5kb3cgYmVpbmcgcmUtcGFyZW50ZWQgdG8gYmUgbW92ZWQgdXAgdG8gdGhlIHRvcG1vc3QgaW4gdGhlIHotb3JkZXIsCglhbmQgV01fV0lORE9XUE9TQ0hBTkdJTkcgYW5kIFdNX1dJTkRPV1BPU0NIQU5HRUQgbWVzc2FnZXMgdG8gYmUgc2VudC4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglVc2UgZXh0ZXJuYWwgRGlyZWN0UGxheSBETExzIGJ5IGRlZmF1bHQuCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IHBhc3NpbmcgdGFzayBoYW5kbGVzIHRvIEdldFRocmVhZFF1ZXVlKCkgYW5kIFNldEZhc3RRdWV1ZSgpLgoKCSogd2luZG93cy91c2VyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSGFuZGxlIChjb25zb2xlKSBhcHBsaWNhdGlvbnMgdGhhdCBuZXZlciBjcmVhdGVkIGEgcXVldWUgY29ycmVjdGx5CglpbiBVU0VSX0FwcEV4aXQoKTsgY2FsbCBJbml0VGhyZWFkSW5wdXQoKSBpbiBJbml0QXBwKCkuCgoJKiB3aW5kb3dzL2hvb2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgktIEZpeGVkIGNyZWF0aW9uIG9mIG1lc3NhZ2UgcXVldWUgaW4gaG9vayBBUEkgcm91dGluZXMuCgktIFNvbWUgcHJlcGFyYXRpb25zIGZvciB0aHJlYWQtbG9jYWwgbWVzc2FnZSBxdWV1ZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoZWNrIG1vZHVsZSBuYW1lIGxlbmd0aCBpbiBNb2R1bGVOZXh0KCkuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgQ2FsbG91dCB0byBjYWxsIFJlZHJhd1dpbmRvdzMyLgoKCSogbXNkb3MvaW50MjEuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDbGVhciBET1MgZXh0ZW5kZWQgZXJyb3Igb25seSBmb3IgZnVuY3MgPj0weDJmICh0aGFua3MgdG8gRGF2ZQoJUGlja2xlcykuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVuaWZpZWQgcGFsZXR0ZSBjcmVhdGUsIGRvIGFsbG9jYXRlIGNvbG9yY2VsbHMgb24gaW5pdCBmb3IgREdBLgoKVHVlIEphbiAxOSAxNzo0ODoyNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9wcm9jZXNzLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBtZW1vcnkvdmlydHVhbC5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy92eGQuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL2szMm9iai5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9kZXZpY2UuaDoKCUhhY2tlZCBzZXJ2ZXItc2lkZSBkZXZpY2Ugc3VwcG9ydAoJQWRkZWQgdXNlciBBUENzIHN1cHBvcnQuCglNYW55IGNoYW5nZXMgdG8gdGhlIHh0ZXJtIGNvbnNvbGUgdG8gbWFrZSB1c2Ugb2YgdGhlIHNlcnZlciAobm90CglmaW5pc2hlZCB5ZXQpLgoJTW92ZWQgc29tZSBvdGhlciBzbWFsbCBzdHVmZiB0byB0aGUgc2VydmVyLgoKCSogdG9vbHMvbWFrZV9yZXF1ZXN0czogQWRkZWQgbG9uZyB0eXBlIGZvcm1hdC4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2RldmljZS5jOgoJQWRkZWQgc2VydmVyLXNpZGUgZGV2aWNlIHN1cHBvcnQgKG9ubHkgYSBoYWNrIGZvciBub3cpLgoKU3VuIEphbiAxNyAxNzo0ODo0OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQ2hhbmdlTG9nOgoJUmVjb3ZlcmVkIGxvZyBlbnRyaWVzIGZyb20gQ1ZTIG1haWxpbmcgbGlzdC4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgX2FsbG9jYV9wcm9iZSBhbmQgX2Noa3N0ayAobW9zdGx5IGRvbmUgYnkgVWxyaWNoIFdlaWdhbmQpLgoKCSogZmlsZXMvZmlsZS5jCglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBFUlJPUl9XUklURV9QUk9URUNUIHRvbyBpbiByZWFkb25seSBmYWxsYmFjayBvcGVuLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIEdldFNlY3VyaXR5RGVzY3JpcHRvckxlbmd0aCBzdHViIGZvciByZWdlZHQzMi5leGUuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZmlsZXMvTWFrZWZpbGUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCAiIiBhcm91bmQgLUQgZGVmaW5lcyBmb3IgcGF0aHMgd2l0aCBzcGFjZXMgaW4gdGhlbS4KCgkqIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDbGVhbmVkIHVwIENvbG9yS2V5IGhhbmRsaW5nLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOgoJUGF1bCBRdWlubiA8cGF1bHFAQ09SRUwuQ0E+CglNRVRBUkVDT1JEIG1lbWJlciByZFBhcmFtIHNob3VsZCBiZSByZFBhcm0gKGluIHdpbjMyIHNkaykKCWxvdHMgb2YgY2hhbmdlcyBpbiB0aGlzIHNvdXJjZSBmaWxlIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2UuCgoJKiBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3RjaGFyLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIGluY2x1ZGUvd2ludXNlci5oLCBtaXNjL3Nwb29sZXIuYywgb2JqZWN0cy9nZGlvYmouYywKCXJlbGF5MzIvZ2RpMzIuc3BlYzoKCVBhdWwgUXVpbm4gPHBhdWxxQENPUkVMLkNBPgoJRml4ZWQgYmFkIGRlZmluZXMsIGFkZGVkIGEgZmV3IHR5cGVzICduIGRlZmluZXMuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEaXNhYmxlIGJyb2tlbiBjYWxsYmFja3Mgd2hpY2ggbGVhZCB0byBjcmFzaGVzLgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgSUQgdXNhZ2UgKGFuZCByZWx5IGxlc3MgaGVhdmlseSBvbiBtdWx0aW1lZGlhL21tc3lzdGVtLmMKCWludGVybmFsIHN0cnVjdHVyZXMpLgoKCSogbWlzYy90b29saGVscC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglkZWJ1Zy5oIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGxhc3Qgc2luY2UgaXQgI3VuZGVmcyBFUlIgZm9yIFNvbGFyaXMuCgoJKiBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9tZW1vcnkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgL3UgZm9ybWF0IHRvIGRlYnVnZ2VyIGRpc3BsYXkgZm9yIFVOSUNPREUgc3RyaW5ncy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgaXJyaXRhdGluZyBGSVhNRSBsaW5lIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBtc2Rvcy9pbnQyZi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nICdcbicgaW4gRklYTUUgbWVzc2FnZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6CglSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJb2JqYmFzZS5oIG5lZWRlZCBmb3IgV0lORV9TdHJpbmdGcm9tQ0xTSUQoKSwgZml4IEMgZnVuY3Rpb24KCWRlY2xhcmF0aW9ucywgaW5zdGFsbCBhIGNvbG9ybWFwIGlmIHdlIGFyZSBub3QgbWFuYWdlZCwgcmVsZWFzZQoJYmFja2J1ZmZlcnMgaW4gREdBIG1vZGUsIGZpeCB2aWRlbyBtb2RlIHN3aXRjaGluZyBsb2dpYyB0byBhdm9pZAoJcG9zc2libGUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLgoKCSogbXNkb3MvZHBtaS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU21hbGwgZml4LgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtaXNjL2x6ZXhwYW5kLmMsIG1zZG9zL2ludDIxLmMgdnhkLmMsIG11bHRpbWVkaWEvbW1pby5jLCB3aW4zMi9rZXJuZWwzMi5jOgoJQmV0dGVyIERPUyBmaWxlIGhhbmRsZSBtYW5hZ2VtZW50LgoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglUaGlzIHNob3VsZCBoZWxwIHByZXZlbnQgZHVwbGljYXRlIHdvcmsuCgoJKiBpZjE2MzIvZ2RpLnNwZWMsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGMuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIERlYXRoKCkgYW5kIFJlc3VycmVjdGlvbigpLCB0d28gZnVuY3Rpb25zIG5lZWRlZCBieSBzb21lCglUUFdpbiAoPykgY29tbWFuZCBsaW5lIHRvb2wuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgMzItPjE2IHRyYW5zbGF0aW9uIGZvciBXTV9BQ1RJVkFURUFQUC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHViczogU2hlbGxNZXNzYWdlQm94VywgUnVuRExMX0NhbGxFbnRyeTE2LgoJSW1wbGVtZW50YXRpb24gZm9yIFNIR2V0U3BlY2lhbEZvbGRlclBhdGgzMltBfFddLgoJTWFueSBidWdmaXhlcy4KCgkqIGNvbnNvbGUveHRlcm0uYywgbWlzYy9wb3J0LmMsIHdpbjMyL2NvbnNvbGUuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQ2hhbmdlIGFsbCBXaW5lIG9wZW5wdHkoKSBpbXBsZW1lbnRhdGlvbnMgdG8gbWF0Y2ggdGhlICJzdGFuZGFyZCIgYW5kCgl0aGVuIG1ha2UgdGhlbSBib3RoIGNhbGwgdGhlIHNhbWUgY29kZSBsZWF2aW5nIHRoZSBvcHRpb24gdG8gY2hhbmdlCgl0aGF0IGNvZGUgdG8gY2FsbCB0aGUgInN0YW5kYXJkIiBvcGVucHR5KCkgYXQgYSBsYXRlciBkYXRlLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBTZXRQcm9jZXNzQWZmaW5pdHlNYXNrIHN0dWIuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHRoZSBvdGhlciB1bmlvbiBtaXN1c2UgdG9vIChvbmUgbGVzcyBtZW0gY29ycnVwdGlvbikKCVJlLWFkZGVkIFhJbnN0YWxsQ29sb3JtYXAgKG9yIG5vbiBtYW5hZ2VkIGRvZXMgbm90IGNoYW5nZSBwYWxldHRlKQoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBzY2hlZHVsZXIvc3luY2hyby5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgS0VSTkVMLjQ5NS4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzLCBkb2N1bWVudGF0aW9uL2RpcmVjdDNELCBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGJpdG1hc2sgdG8gc3RvcmUgd2hpY2ggQ29sb3JLZXkgc3RydWN0dXJlcyBhcmUgdmFsaWQKCS0gaGFuZGxlIG1hbnkgbmV3IHJlbmRlcmluZyBzdGF0ZXMsIHNvbWUgb3B0aW1pemF0aW9ucyBpbiBzdGF0ZSBjaGFuZ2VzCgktIDhiaXQgcGFsZXR0aXplZCB0ZXh0dXJlcyBub3cgc3VwcG9ydCBDb2xvcktleWluZwoJLSBzb21lIG1pc2NlbGxhbmVvdXMgYnVnIGZpeGVzIGFuZCBjb2RlIHJld3JpdGUKCgkqIGNvbnRyb2xzL21lbnUuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGxvb2sgb2YgdGhlIG1lbnUgc28gaXQgd291bGQgYmUgY29tcGxpYW50IHdpdGggV2luOTU6IG1vZGlmaWVkCgl0aGUgbW91c2UgdHJhY2tpbmcgY29kZSBzbyBpdCB3b3VsZCBjaGFuZ2UgdGhlIHNlbGVjdGlvbiBldmVyeSB0aW1lIHRoZQoJbW91c2UgbW92ZWQgb3ZlciBhIG1lbnUgaXRlbS4KCgkqIGRvY3VtZW50YXRpb24vaG93LXRvLXBvcnQ6CglNaWtlIENhc3RsZSA8ZGFsZ29kYUBzaGVsbC5ydDY2LmNvbT4KCVNtYWxsIGZpeC4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGJ1Z3M6CgktIFdoZW4gYW4gZWRpdCBjb250cm9sIGJ1ZGR5IHdhcyB1c2VkIHNpbmdsZSBkaWdpdCB2YWx1ZXMgd2VyZSBub3QKCWJlaW5nIGRpc3BsYXllZC4KCS0gQ29tbWEgdmFsdWVzIHdlcmUgbm90IGRpc3BsYXllZCBjb3JyZWN0bHkgd2hlbiB0aG91c2FuZHMgc2VwYXJhdGlvbgoJd2FzIHJlcXVlc3RlZC4KCgkqIHdpbjMyL25ld2Zucy5jOgoJVG9tIEJlY2ggPHRvbWJAaWkudWliLm5vPgoJV2hpbGUgdGhlIGRlYnVnIGV2ZW50IG1lc3NhZ2VzIGFyZSBub3QgaW1wbGVtZW50ZWQsIFdhaXRGb3JEZWJ1Z0V2ZW50CglzaG91bGQgcmV0dXJuIEZBTFNFLgoKCSogaWYxNjMyL3VzZXIuc3BlYywgb2JqZWN0cy9iaXRtYXAuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIENvcHlJbWFnZTE2LgoKCSogZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzIAoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU21hbGwgZml4LgoKCSogY29uc29sZS9nZW5lcmljLmMsIG1zZG9zL2ludDIxLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZWQgMHgwMSB0byB1c2UgZ2VuZXJpYyBjb25zb2xlLCBmaXhlZCAweDBiLgoJRml4ZWQgQ09OU09MRV9HZXRDaGFyYWN0ZXIgKHR3byBhcmdzIHN3YXBwZWQpLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBzcGVjaWZ5aW5nIG1vZHVsZSBuYW1lIGZvciBORSBkdW1teSBtb2R1bGUuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYyAKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2V0IG1vZHVsZSBuYW1lIG9mIGR1bW15IG1vZHVsZSBlcXVhbCB0byBtb2R1bGUgbmFtZSBvZiBQRSBtb2R1bGUuCgoJKiBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvdWl0b29scy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzaW5nIGluY2x1ZGUgd2luZS93aW51c2VyMTYuaCBhZGRlZC4KCgkqIGdyYXBoaWNzL3ZnYS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGUgYW4gYWN0dWFsIHByaW1hcnkgc3VyZmFjZSBmb3Igc2NyZWVuYnVmZmVyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gSmFuIDEwIDE0OjQwOjM0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9tc2Rvcy5oLCBsb2FkZXIvbWFpbi5jLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvZG9zY29uZi5jLCBtc2Rvcy9pbnQyMS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgY29uZmlnLnN5cyBwYXJzZXIuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFBhc2NhbCBDdW9xIDxQYXNjYWwuQ3VvcUBpbnJpYS5mcj4KCVNtYWxsIGNoYW5nZSBpbiBMQl9TRVRDVVJTRUwzMiBoYW5kbGluZyAodGhlIGNhcmV0IHNob3VsZCBiZSBtb3ZlZCBhcwoJd2VsbCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZmlsZXMvYXN5bmMuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbWlzYy93aW5zb2NrX2Rucy5jLCBtc2Rvcy9pbnQyMS5jLCBvbGUvY29tcG9iai5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgYXV0b2NvbmYgY2hlY2sgZm9yIHByZXNlbmNlIG9mIHN5cy9maWxlLmguCgoJKiBkbGxzL250ZGxsL3J0bC5jLCByZWxheTMyL250ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIERiZ1ByaW50LCBhZGRlZCB1bHRvYS4KCgkqIHdpbjMyL2NvbnNvbGUuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCVBlZWtDb25zb2xlSW5wdXQgJiBSZWFkQ29uc29sZUlucHV0IG5lZWQgdG8gcmV0dXJuIDAgcmVjb3JkcyByZWFkIGluCgl0aGUgY2FzZSBvZiBhbiBpbnZhbGlkIGhhbmRsZS4KCgkqIGNvbnNvbGUvbmN1cnNlcy5jLCBsb2FkZXIvbWFpbi5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglNb3JlIHZlcmJvc2UgZGVidWdnaW5nIG91dHB1dC4KCVJlbW92ZSBjb21waWxhdGlvbiB3YXJuaW5nLgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglGaXggdXAgc29tZSBpbnRlcnJ1cHQgY2FsbHMgdG8gcmV0dXJuIGF0IHRoZSBkYXRhIHRoYXQgdGhleSBhcmUgc3VwcG9zZWQKCXRvLiBBbHNvIGluY3JlYXNlIGNvbW1lbnQgdmVyYm9zaXR5IHRvIGhlbHAgZGVidWcgdGhpbmdzIGxhdGVyLgoKCSogaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBtaXNjL3ZlcnNpb24uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHN3aXRjaCAtZG9zdmVyLgoJQ2xlYW51cCBmb3IgT2FCdWlsZFZlcnNpb24oKS4KCgkqIGxpYnRlc3QvLmN2c2lnbm9yZTogQWRkZWQgdmFydGVzdCBhbmQgdm9saW5mbwoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYW55IGJ1Z2ZpeGVzLCBjb2RlIGNsZWFudXAuCglSZW1vdmVkIGEgZmV3IGdsaXRjaGVzIGZyb20gdGhlIENPTSBwYXRjaC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCU9ubHkgZGVzdHJveSB3aW5kb3cgb25jZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJLSBtb3ZlZCBkcmF3YWJsZSB0byBjb21tb24gc2luY2UgaXQgaXMgdXNlZCBieSBib3RoIERHQSBhbmQgWGxpYi4KCSAgKGZpeGVzIG9uZSBiYWQgbWVtb3J5IGNvcnJ1cHRpb24gYnVnIGluIERHQSAoU3RhckNyYWZ0IGFuZCBEaWFibG8pCgktIGFkZGVkIEJsdEZhc3Qgc2FuaXR5IGNoZWNrcy4KCgkqIHdpbmRvd3MvcXVldWUuYywgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW5pdEFwcCgpIGNhbGwgcmVtb3ZlZCBmcm9tIDMyLWJpdCBhcHBsaWNhdGlvbiBzdGFydHVwOwoJY3JlYXRlIHRhc2sgbWVzc2FnZSBxdWV1ZSBpbiBJbml0VGhyZWFkSW5wdXQoKSBpbnN0ZWFkLgoKCSogbG9hZGVyL25lL2NvbnZlcnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgYWNjZWxlcmF0b3IgdGFibGUgUEUtPk5FIHJlc291cmNlIGNvbnZlcnNpb24uCgoJKiBkZWJ1Z2dlci9lZGl0bGluZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZXN0YXJ0IHJlYWQoKSBpbiBjYXNlIG9mIEVJTlRSIGluIFRUWWdldCgpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUHRyIHJlZiB3cm9uZy4KCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvbmV3c3RydWMuaCwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9yZWFkcmVzLmMsIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvdXRpbHMuaCwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJV3JjIHZlcnNpb24gMS4wLjguIFRvb2xiYXIgcmVzb3VyY2VzIGFyZSBub3cgc3VwcG9ydGVkLiBBIGNvdXBsZSBvZgoJb3RoZXIgZml4ZXMgYXJlIGFsc28gaW5jbHVkZWQuIFNlZSBmaWxlIHRvb2xzL3dyYy9DSEFOR0VTIGZvciBkZXRhaWxzLgoKCSogb2xlL2NvbXBvYmouYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzaW5nIFdJTkFQSS4KCgkqIGluY2x1ZGUveDExZHJ2LmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG9iamVjdHMvZGMuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCBzY2hlZHVsZXIvazMyb2JqLmMsIGZpbGVzL2FzeW5jLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQWRkIG1pc3NpbmcgI2luY2x1ZGVzIGFuZCBwcm90b3R5cGVzIHRvIGVsaW1pbmF0ZSBzb21lIGltcGxpY2l0CglmdW5jdGlvbiBkZWNsYXJhdGlvbiB3YXJuaW5ncyBhbmQgJ2V4dGVybidzIGluIC5jIGZpbGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGNvbnNvbGUvbmN1cnNlcy5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoZWNrIGZvciByZXNpemV0ZXJtIGluIG5jdXJzZXMuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L3ZhcnRlc3QtV2luMzIubG9nLCBsaWJ0ZXN0L3ZhcnRlc3QuYywgbGlidGVzdC92YXJ0ZXN0LnJlYWRtZToKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU5ldyB0ZXN0IHByb2dyYW0gZm9yIFZBUklBTlQgZnVuY3Rpb25zLgoKCSogZGVidWdnZXIvbXNjLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU29tZSBkZWJ1ZyBpbmZvcm1hdGlvbiAoUERCKSB3YXMgbm90IG1hcHBlZCB3aGVuIGxvYWRpbmcgYSBtb2R1bGUsCgl3aGljaCBjYXVzZWQgYSBjb3JlIGluIHRoZSBkZWJ1Z2dlciB3aGVuIGl0IHRyaWVkIHRvIGFjY2VzcyBpdC4KCgkqIE1ha2VmaWxlLmluOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUxpbmtzIGxpYndpbmUuc28uMS4wIHRvIGxpYndpbmUuc28gaW4gV2luZSdzIG1haW4gZGlyZWN0b3J5LgoJTWFrZXMgV2luZSBjb21waWxlIHdpdGggLS1lbmFibGUtZGxsIGFnYWluLgoKU2F0IEphbiAgOSAwOToxMjo0MCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9vbGUzMi5zcGVjLCB3aW5kb3dzL2RpbnB1dC5jLCBpbmNsdWRlL3N0b3JhZ2UuaCwgaW5jbHVkZS91bmtud24uaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaCwgaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHlzdG9yYWdlLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd3R5cGVzLmgsIG1pc2Mvc2hlbGwuYywgbXVsdGltZWRpYS9kcGxheS5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBvYmplY3RzL2ZvbnQuYywgb2xlL2NvbXBvYmouYywgb2xlL2lmcy5jLCBvbGUvbW9uaWtlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZWRsZy5jLCBvbGUvb2xlb2JqLmMsIG9sZS9zdG9yYWdlLmMsIG9sZS90eXBlbGliLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvdmdhLmMsIGlmMTYzMi9jb21wb2JqLnNwZWMsIGluY2x1ZGUvY29tcG9iai5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kc291bmQuaCwgaW5jbHVkZS9pbnRlcmZhY2VzLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVvYmouaCwgaW5jbHVkZS9zZXJ2cHJvdi5oLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBtdWx0aW1hbmlhLmNvbT4KCUFkZGVkIGEgbG90IG9mIENPTSBpbnRlcmZhY2VzIGRlZmluaXRpb25zLgoJUmVzdHJ1Y3R1cmVkIENPTSBoZWFkZXIgZmlsZXMgZm9yIGJldHRlciBjb21wYXRpYmlsaXR5IGFuZCBjbGFyaXR5LgoKRnJpIEphbiAgOCAxNjozNzowMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZmlsZS5jOiBTZXQgR0VORVJJQ19SRUFEfEdFTkVSSUNfV1JJVEUgYWNjZXNzIGZvciBPRl9DUkVBVEUuCglNYWtlIEdldEZpbGVUeXBlIHdvcmsgZm9yIGFsbCBoYW5kbGUgdHlwZXMuCgoJKiB3aW4zMi9kZXZpY2UuYzogQXZvaWQgY3Jhc2ggb24gTlVMTCBkZXYtPmluZm8uCgoJKiBpbmNsdWRlL2ZsYXRzYi5oLCByZWxheTMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUFkZGVkIHN0dWJzIGFuZCBkZWZpbmVzIGZvciB0aGUgZmxhdCBzY3JvbGxiYXIgY29tbW9uIGNvbnRyb2wuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglBZGRlZCBzb21lIGRlZmluZXMgbmVlZGVkIGZvciBjdXN0b20gZHJhdydpbmcgYW5kIGRhdGV0aW1lIGNvbW1vbgoJY29udHJvbHMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IEVkZGllIENhcnBlbnRlciA8ZWNhcnBlbnRlckBpdGV4LmNvLnphPgoJRml4ZWQgYSBzbWFsbCBidWcgaW4gZnVuY3Rpb24gRXh0cmFjdEljb25FeDMyQS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUhUQVNLMTYgLT4gdGhyZWFkSUQgbWFwcGluZyBvZiBXTV9BQ1RJVkFURUFQUC4KCgkqIGZpbGVzL2ZpbGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCU1ha2UgRGVsZXRlRmlsZSBmYWlsIGZvciBlbXB0eSBwYXRoLgoKCSogbXNkb3MvaW9wb3J0cy5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeCBkdW1teV9jdHIgc3R1ZmYgdG8gd29yayBldmVuIHdpdGhvdXQgRElSRUNUX0lPX0FDQ0VTUy4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgd3JvbmcgYnVmZmVyIHdoaWNoIGNhdXNlZCBmaXh1cHMgdG8gZmFpbC4KCgkqIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgaW5jbHVkZS9kM2QuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBhbGwgdGhlIERpcmVjdDNEIGVycm9yIGNvZGVzCgktIGFkZGVkIDhiaXQgcGFsZXR0aXplZCB0ZXh0dXJlIHN1cHBvcnQKCgkqIG1zZG9zL2Nkcm9tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJaWZkZWZzIGZvciBkZWZpbmVzIG5vdCBpbiBsaW51eCAyLjAuCgoJKiByZWxheTMyL3dpbnNwb29sLnNwZWMsIG1pc2MvcHJpbnRkcnYuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHR3byBzdHVicyBmb3IgQWRkUHJpbnRlckRyaXZlci4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zbW9kLmMsIGxvYWRlci9kb3MvZG9zbW9kLmgsIGxvYWRlci9kb3MvZG9zdm0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUXVldWUgU0lHQUxSTSB0byByZWR1Y2UgdGhlICJzaWduYWwgMTQgbG9zdCIgY29tcGxhaW50cy4KCUFkZGVkIHN1cHBvcnQgZm9yIHJlcHJvZ3JhbW1pbmcgdGhlIERPUyB0aW1lciwgYW5kIHJlYWRpbmcgYmFjayB0aGUKCWN1cnJlbnQgdmFsdWUuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2luZSBoYW5ncyB3aGVuIHJlZ2lzdHJ5IChjb3JydXB0ZWQpIGhhcyBsb25lIFwgYXQgZW5kIG9mIGZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUtvc3R5YSBJdmFub3YgPGtvc3R5YUB3YXJtY2F0LmV4Y29tLnNwYi5zdT4KCVNtYWxsIHBhdGNoIHRoYXQgZW5hYmxlcyBDbGFyaW9uIGZvciBXaW5kb3dzIG5vdCB0byB0cmFwIHdoaWxlCglsb2FkaW5nLgoKCSogb2xlL3ZhcmlhbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlIHRyb3VibGVzb21lIGFzc2lnbm1lbnRzIGJ5IG1lbXNldCBmb3Igd2hvbGUgc3RydWN0LgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBoYW5kbGluZyBvZiB0aGUgJ3BhbGVudCcgZmllbGQgb2YgdGhlIENyZWF0ZVBhbGV0dGUgcHJvY2VkdXJlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGRlc2NyaXB0aW9uIGFib3V0IGluY2x1ZGluZy9leGNsdWRpbmcgZnVuY3Rpb25zIGZyb20gcmVsYXkKCXRyYWNlLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlYWQgYXQgbGVhc3QgMSBpbnB1dCByZWNvcmQgaW4gUmVhZENvbnNvbGVJbnB1dEEuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJRml4ZWQgQ3JlYXRlTWFwcGluZyB3aGVuIGEgbWFwcGluZyB3aXRoIHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMuCgpXZWQgSmFuICA2IDEwOjM3OjI5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZmlsZS5jOiBGaXhlZCBmaWxlIGRlc3RydWN0aW9uIHdoZW4gZmlsZSBoYXMgbm8gbmFtZS4KClR1ZSBKYW4gIDUgMTg6Mzg6NTkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvbWFpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdhcm5zIHVzZXIgaWYgbXVsdGlwbGUgLWRsbCBzd2l0Y2hlcyBhcmUgdXNlZCBvbiBjb21tYW5kIGxpbmUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGaXhlZCBhIGxlZnRvdmVyIEhlYXBGcmVlIGluIHRoZSB0cmFja2JhciBjb21tb24gY29udHJvbC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3RhYi5oLCBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZpeGVkIHNvbWUgcHJvYmxlbXMgd2l0aCB0aGUgdGFiIGNvbW1vbiBjb250cm9sICh3aXRoIHRoYW5rcyB0byBBbmRlcnMKCUNhcmxzc29uIDxhbmRlcnMuY2FybHNzb25AbGludXgubnU+KS4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3Byb3BzaGVldC5oLCByZWxheTMyL2NvbWN0bDMyLnNwZWM6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJQWRkZWQgYSBtaXNzaW5nIFByb3BlcnR5U2hlZXQzMkFXIGFuZCBDcmVhdGVQcm9wZXJ0eVNoZWV0UGFnZSBzdHViLAoJYW5kIHNvbWUgbWlzc2luZyBkZWZpbmVzLgoKCSogbWlzYy9tYWluLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBncmFwaGljcy92Z2EuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIE1ha2VDcml0aWNhbFNlY3Rpb25HbG9iYWwgb24gYWxsIGNyaXRpY2FsIHNlY3Rpb25zIHVzZWQgYWNyb3NzCglwcm9jZXNzIGJvdW5kYXJpZXMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIE1ha2VDcml0aWNhbFNlY3Rpb25HbG9iYWwsIENvbnZlcnRUb0dsb2JhbEhhbmRsZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW46CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gdGhlIG1hbiBwYWdlLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBhcmdzIG9mIE1aX0NyZWF0ZVByb2Nlc3MuCgoJKiBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsIHByb2dyYW1zL3Byb2dtYW4vbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgc3RyaW5nIGJ1ZyBpbiBwcm9ncmFtcy8uCgoJKiBtc2Rvcy9pb3BvcnRzLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHN0dXBpZCAiYWN0aW9uIiBlbXVsYXRpb24gZm9yIGhhcmR3YXJlIHRpbWVycyBpbiBpb3BvcnRzLmMuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFnYWluIGEgc21hbGwgRE9TQVNQSSBwYXRjaC4KCgkqIGRvY3VtZW50YXRpb24vYnVncmVwb3J0cywgZG9jdW1lbnRhdGlvbi9mb250cywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gY2hlY2sgaWYgcGFsZXR0ZSBpcyBub3QgbnVsbCB3aGVuIHNldHRpbmcgYSBwYWxldHRlCgktIGNoZWNrIGlmIHdpbmRvdyBoYW5kbGUgaXMgdmFsaWQgYmVmb3JlIGdldHRpbmcgaXRzICdkcmF3YWJsZScKCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVByZXZlbnQgY29yZSBkdW1wIHdpdGggc29tZSBUVEYgKHdoZW4gWDExIHJ1bnMgd2l0aCBhIHRydWUgdHlwZQoJc2VydmVyKS4KCgkqIHNlcnZlci9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIHN0ZG91dCBmb3IgZGVmYXVsdCBjb25zb2xlIG91dHB1dC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEphbiAgMyAxNzowMDoyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS93aW5lX2dsLmgsIG11bHRpbWVkaWEvZHNvdW5kLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3QzRCwgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0ZHJhdywgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYmVnaW5uaW5nIG9mIGltcGxlbWVudGF0aW9uIG9mIERpcmVjdDNEMiAoRFggNS4wKSBhbmQgYXNzb2NpYXRlZCBjbGFzc2VzCgktIHNvbWUgYmFzaWMgY29kZSBmb3IgRGlyZWN0M0QgYW5kIERpcmVjdDNERXhlY3V0ZUJ1ZmZlciAoRFggMy4wKQoJLSBhZGRlZCBzdHJldGNoaW5nIHRvIEJsdCBmdW5jdGlvbgoKCSogbWlzYy92ZXJzaW9uLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJ5IHRvIGF1dG9kZXRlY3QgTlQ0LgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCTAgbWVhbnMgc3VjY2VzcywgYWxsIGVsc2UgZmFpbHVyZSBmb3IgV2FpdEZvclNpbmdsZU9iamVjdC4KCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJRG8gbm90IGFkdmFuY2UgdGhlIGN1cnNvciBpbiBjZXJ0YWluIHJvdXRpbmVzLiBUaGlzIGNsZWFuZWQgdXAgdGhlCglpbXBsZW1lbnRhdGlvbiBxdWl0ZSBhIGJpdC4KCgkqIGxvYWRlci9tYWluLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJU2V0IGNvbnNvbGUgdmlkZW8gbW9kZSB3aGVuIGxvYWRpbmcgRE9TIGFwcC4gKEV2ZW50dWFsbHksIEkgd2FudCB0bwoJbWltaWMgV2luZG93cyA5eCdzIGJlaGF2aW9yIGJ5IHNldHRpbmcgdGhlIHZpZGVvIG1vZGUgb25seSB3aGVuIG5vbgoJSU5UIDIxIGNhbGxzIGFyZSB1c2VkIHRvIGFsbG93IGZvciBhcmJpdHJhcnktc2l6ZWQgY29uc29sZXMpLgoKCSogY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS94dGVybS5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglYdGVybSBkcml2ZXIgY2FuIG5vdyByZXNpemUgdGhlIHRlcm1pbmFsIHdoZW4gYSBtb2RlIGNoYW5nZSBpcwoJZGV0ZWN0ZWQuCgoJKiBjb25zb2xlL2dlbmVyaWMuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglMb25nIHN0YW5kaW5nIHNjcm9sbCBidWcgZml4ZWQhCgoJKiBjb25zb2xlL25jdXJzZXMuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2NvbnNvbGUuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCVJld3JpdGUgb2YgY29uZmlndXJhdGlvbiBzeXN0ZW0gdG8gc3VwcG9ydCAicmVndWxhciIgY3Vyc2VzIGFzIHdlbGwgYXMKCWVsaW1pbmF0aW5nIHRoZSAtLXdpdGgtbmN1cnNlcyBvcHRpb24uIE5vdywgbmN1cnNlcyBzdXBwb3J0IHdpbGwgYmUKCWJ1aWx0IGluIGlmIGEgY29tcGF0aWJsZSBsaWJyYXJ5IGlzIGRldGVjdGVkLgoKCSogaW5jbHVkZS93aW50eXBlcy5oLCB3aW5kb3dzL2RlZmRsZy5jOgoJTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXggdGhlIHJldHVybiB0eXBlIG9mIERMR1BST0MgdHlwZSBhbmQgbWFzayBvdXQgdGhlIHVuc2V0IGhpZ2h3b3JkIG9mCgl0aGUgcmV0dXJuIHdoZW4gYSAxNiBiaXQgZGlhbG9nIHByb2MgaXMgY2FsbGVkLgoKCSogaW5jbHVkZS9pbnRlcmZhY2VzLmg6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGQgaW50ZXJmYWNlIElEJ3MgZm9yIHVwY29taW5nIElUeXBlTGliIGltcGxlbWVudGF0aW9uLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnZml4IGZvciB0cmFpbGluZyBzbGFzaGVzLCByZXBldGl0aW9uIG9mICcvJyBvciAnXCcgYW5kCglTZXRMYXN0RXJyb3IoKSBpbiBHZXRGdWxsUGF0aG5hbWUuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHdpbjMyL0F0dGljL2FkdmFwaS5jLCB3aW4zMi9BdHRpYy9zZWN1cml0eS5jLCB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvaW5pdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCBBRFZBUEkzMiBmaWxlcyB0byBkbGxzL2FkdmFwaTMyLgoJQWRkZWQgc3R1YnMgZm9yIGV2ZW50bG9nIGZ1bmN0aW9ucy4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMgTlRTSENoYW5nZU5vdGlmeVJlZ2lzdGVyLCBOVFNIQ2hhbmdlTm90aWZ5RGVyZWdpc3Rlci4KCUNsZWFudXAsIHNvbWUgbW9yZSBmdW5jdGlvbnMgVU5JQ09ERSByZWFkeS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU0hDbG9uZVNwZWNpYWxJRExpc3QgaW1wbGVtZW50ZWQuCglTSEdldERhdGFGcm9tSURMaXN0QSBjb3JyZWN0ZWQuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNoZWxsX0dldENhY2hlZEltYWdlSW5kZXgzMltBfFddIGltcGxlbWVudGVkLgoKCSogbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9kcml2ZS5oOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJSW1wbGVtZW50ZWQgcmF3IGRldmljZSBhY2Nlc3MgY2FsbHMgZm9yIGlvY3RsR2VuZXJpY0Jsa0RldlJlcSgpCglhbmQgdGhlcmVmb3JlIG1vdmVkIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgaW50Mls1Nl0uYyBpbnRvIGZpbGVzL2RyaXZlLmMuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIGF1dG9tYXRpYyBDTU9TIFJBTSBjaGVja3N1bSBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgZG9jdW1lbnRhdGlvbi9hc3BpLCByZWxheTMyL3duYXNwaTMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTZW5kQVNQSTMyQ29tbWFuZDMyIGhhcyB0byBiZSBfX2NkZWNsLgoJVXBkYXRlZCBkb2N1bWVudGF0aW9uL2FzcGkgYW5kIHJldmVydGVkIGFuIEVSUiBiYWNrIHRvIFdBUk4uCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHM6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCU9mIGNvdXJzZSB3ZSB3YW50IHRoZSBsYXN0IDEwMCBsaW5lcywgbm90IHRoZSBmaXJzdCAxMDAgbGluZXMuCglVc2UgJ3RhaWwnIGluc3RlYWQgb2YgJ2hlYWQnLiBBbHNvIGZpeCB0ZXh0IGFsaWdubWVudCBmcm9tCglwcmV2aW91cyBwYXRjaC4KCgkqIG11bHRpbWVkaWEvam95c3RpY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZWFkaW5nIGpveXN0aWNrIDUgd2hlbiB3ZSBvbmx5IHN1cHBvcnQgNCBzaG91bGQgZmFpbCBpbnN0ZWFkIG9mCgloYW5nLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglQbGF5aW5nIGEgbm9uLWV4aXN0ZW50IENEIHNob3VsZCBmYWlsIGluc3RlYWQgb2YgY3Jhc2guCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgbmVjZXNzYXJ5IGNvbmZpZ3VyZSByZXJ1bnMgZm9yIE1ha2VmaWxlIGFuZCBNYWtlLnJ1bGVzCglnZW5lcmF0aW9uLgoKCSogbWlzY2VtdS9pbnN0ci5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUVtdWxhdGVzIGlucy9vdXRzIGNvcnJlY3RseSBmb3IgRE9TIHByb2dyYW1zLgoKCSogb2xlL3N0b3JhZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZmlsZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2RldmljZS5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy9jcnRkbGwuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvdnhkLmM6CglJbXBsZW1lbnRlZCBmaWxlIHNoYXJpbmcgY2hlY2tzIGluIHRoZSBzZXJ2ZXIuCglBZGRlZCBzZXQgZmlsZSB0aW1lIHNlcnZlciByZXF1ZXN0LgoJT3ZlcmFsbCBjbGVhbiB1cCBvZiB0aGUgZmlsZSBoYW5kbGluZyAoRE9TIGRldmljZSBoYW5kbGluZyBpcyBub3cKCWJyb2tlbiwgc2hvdWxkIGJlIHJlZG9uZSkuCgpTYXQgSmFuICAyIDA4OjIyOjM0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJRml4ZWQgYnVnIGluIENyZWF0ZUZpbGVNYXBwaW5nIHdoZW4gbmFtZSBpcyBub3QgTlVMTC4KCgkqIHNlcnZlci9yZXF1ZXN0LmM6IEZpeGVkIENIRUNLX1NUUklORyBkaXNwbGF5LgoKRnJpIEphbiAgMSAxOTo1MToyNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBtZW1vcnkvbG9jYWwuYzoKCVJpY2hhcmQgQSBMb3VnaCA8cmFsb3VnaC5jZWRAZG5ldC5jby51az4KCVB1dCByZXR1cm4gdmFsdWUgb2YgTG9jYWxBbGxvYyBpbiBDWCB0b28uCgoJKiBpbmNsdWRlL3BzZHJ2Lmg6IERpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglQcm90ZWN0IGFnYWluc3QgbXVsdGlwbGUgaW5jbHVkZXMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IFVzZSBwcm9wZXIgc3lzdGVtIGRpcmVjdG9yeS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6IEdvdCByaWQgb2YgQ0xJRU5UX0dldFByb2Nlc3NJbmZvLgoKCSogd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbmhlbHAuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnJlZy5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbG9hZGVyL21vZHVsZS5jLCBtaXNjL2NvbW0uYywgbWlzYy9zaGVsbC5jLCBtaXNjL3Nwb29sZXIuYywgbWlzYy9zcHkuYywgbWlzYy93aW5zb2NrLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvbGUvb2xlb2JqLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9zdGF0aWMuYywgZGVidWdnZXIvZGJnLnksIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBncmFwaGljcy9wc2Rydi9lc2NhcGUuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9kaXNwbGF5LmgsIGluY2x1ZGUvaW1hZ2VsaXN0LmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3N0b3JhZ2UuaCwgaW5jbHVkZS9zdHJ1Y3QzMi5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJTW92ZXMgbW9yZSBzdHVmZiBmcm9tIHdpbmRvd3MuaC4KCS0gaW5jbHVkZS93aW51c2VyLmggLSBpbnRlcmZhY2UgcmVsZXZhbnQgdG8gdXNlcjMyLnNwZWMKCS0gaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oIC0gdGhlIG9sZCAxNiBiaXQgaW50ZXJmYWNlIChpbnRlcm5hbCB1c2UpCgktIGluY2x1ZGUvd2luYmFzZS5oIC0gc29tZSBtaW5vciB1cGRhdGVzIHRvIGtlZXAgdGhpbmdzIGNvaGVyZW50LgoJLSBMb3Qgb2Ygb3RoZXIgZmlsZXMgbWFkZSB0byBpbmNsdWRlIHdpbmUvd2ludXNlcjE2LmgsIHdoaWNoIGlzIG5vCgkgIGxvbmdlciBpbmNsdWRlZCBmcm9tIHdpbmRvd3MuaAoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOiBGaXhlZCBDbG9zZUhhbmRsZSgpIG9uIGdsb2JhbCBoYW5kbGVzLgoKCSogUkVBRE1FLCBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMsIGRvY3VtZW50YXRpb24vd2luOTVsb29rLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQWRkIHNvbWUgaW5mb3JtYXRpb24gdG8gdGhlIG1hbiBwYWdlIGFuZCBSRUFETUUgZmlsZS4KCU1ha2UgZG9jdW1lbnRhdGlvbi93aW45NWxvb2sgc2F5IFtUd2Vhay5MYXlvdXRdIGluc3RlYWQgb2YKCVtUd2Vha3MuTGF5b3V0XS4KCUZpeCBpbmNvcnJlY3QgY29tbWFuZCBnaXZlbiBpbiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMuCglTdGFuZGFyZCBlcnJvciB3YXMgbm90IGJlaW5nIHJlZGlyZWN0ZWQsIHNvIG1vc3Qgb2YgdGhlCglvdXRwdXQgd2FzIGxvc3QuCgoJKiBvYmplY3RzL2JpdG1hcC5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCURlbHBoaSAyLjAgbmVlZHMgdG8gYWxsb2NhdGUgYSBiaXRtYXAgYmlnZ2VyIHRoYW4gNDA5NiBiaXRzIHdpZGUuCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJSW5pdGlhbGl6ZSBscGR3TmVlZGVkLgoKCSogaWYxNjMyL3Nub29wLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUluY2x1ZGUgc3R1ZmYgZXZlbiBpZiBub3Qgb24gX19pMzg2X18gZm9yIGRlYnVnIGRlZmluZXMuCgoJKiBvbGUvdmFyaWFudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbm90aGVyIC8vIGNvbW1lbnQgZml4ZWQuCgoJKiBzZXJ2ZXIvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglOZWVkIDxlcnJuby5oPiBmb3IgZXJybm8gZGVjbC4gb24gU29sYXJpcy4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUveDExZm9udC5oLCBvYmplY3RzL2ZvbnQuYzoKCURvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJSW1wbGVtZW50IFRyYW5zbGF0ZUNoYXJzZXRJbmZvLCBjaGFuZ2UgY2hhcnNldCB0eXBlIHRvIEJZVEUuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmMsIGluY2x1ZGUvY29tYm8uaDoKCUFsZXggS29yb2JrYSA8a29yb2JrYUBnYWxheHkuYW1zLnN1bnlzYi5lZHU+CglCZXR0ZXIgQ0JfU0VUQ1VSU0VMIG1lc3NhZ2UgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCU1vdmVkIE1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdCBpbXBsZW1lbnRhdGlvbiB0byBVU0VSIHJvdXRpbmVzLCB1c2luZwoJYSBub3JtYWwgV2luMzIgZXZlbnQuCgoJKiB0b29scy9tYWtlX3JlcXVlc3RzOiBTZW5kIGRlYnVnZ2luZyBvdXRwdXQgdG8gc3RkZXJyLgoKCSogZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvazMyb2JqLmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHdpbjMyL2NvbnNvbGUuYzoKCUNsZWFuZWQgdXAgYW5kIHJlbW92ZWQgc29tZSBubyBsb25nZXIgdXNlZCBjb2RlLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogVXNlIHNlcnZlciBmaWxlIG1hcHBpbmcgb2JqZWN0cy4KCgkqIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGluY2x1ZGUvc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaDoKCUFkZGVkIHNlcnZlci1zaWRlIGZpbGUgbWFwcGluZyBvYmplY3Qgc3VwcG9ydC4KCgkqIG1pc2MvY3J0ZGxsLmM6CglIYWNrZWQgc3RkaW8gZnVuY3Rpb25zIHRvIHVzZSBXaW4zMiBmaWxlIGhhbmRsZXMuIFN0aWxsIG5lZWRzIGEgcHJvcGVyCglzdGRpbyBlbXVsYXRpb24uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jOgoJVXNlIFdpbjMyIGZpbGUgaGFuZGxlcyBpbnN0ZWFkIG9mIFVuaXggb25lcy4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvZG9zZXhlLmg6CglUYWtlIGludG8gYWNjb3VudCBoYW5kbGUgaW5oZXJpdGFuY2UgZmxhZy4KClRodSBEZWMgMzEgMTU6NTU6MTkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJQ2hhbmdlZCBkYl90YXNrX3ByaW50c3ltIHRvIGFsd2F5cyBwcmludCBhIGZ1bGwgYWRkcmVzcywgbm8gbWF0dGVyCgl3aGF0IHRoZSBvcGVyYW5kIHNpemUgaXMuCgoJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzogUmUtaW1wbGVtZW50ZWQgdXNpbmcgYSByZWFsIHNlbWFwaG9yZS4KCgkqIHdpbmRvd3MvcXVldWUuYywgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9rMzJvYmouaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9zaWduYWwuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy90b29saGVscC5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9rMzJvYmouYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jOgoJUmVtb3ZlZCBjbGllbnQtc2lkZSB3YWl0IGZ1bmN0aW9uczsgYWxsIHdhaXRpbmcgaXMgbm93IGRvbmUgdGhyb3VnaAoJdGhlIHNlcnZlci4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaDoKCUFkZGVkIGNoYW5nZSBub3RpZmljYXRpb25zLgoJQWRkZWQgZ2xvYmFsIGhhbmRsZSBzdXBwb3J0LgoKV2VkIERlYyAzMCAxMjoxMTo1MiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3N5bmNocm8uYzoKCUNoYW5nZWQgc2VydmVyIHdhaXQgbG9naWMgYSBiaXQuCgoJKiB3aW4zMi9jb25zb2xlLmM6CglIYWNrcyB0byBzdXBwb3J0IHNlcnZlci1zaWRlIGNvbnNvbGUuIFNob3VsZCBiZSByZWRvbmUgcHJvcGVybHkKCXNvbWUgZGF5LgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIHdpbjMyL2ZpbGUuYywgd2luMzIvbmV3Zm5zLmM6CglSZWltcGxlbWVudGVkIFJlYWQvV3JpdGVGaWxlIHRvIHVzZSBzZXJ2ZXIgZmlsZSBkZXNjcmlwdG9ycy4KCVJlbW92ZWQgZmlsZSBwb3NpdGlvbiBoYWNrIGFzIGl0IGlzIHdyb25nIGZvciBXaW4zMiAoc2hvdWxkIGJlIHJlZG9uZQoJZm9yIFdpbjE2IG9ubHkpLgoKCSogc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvazMyb2JqLmMsIHNjaGVkdWxlci9waXBlLmM6CglBZGRlZCBhbm9ueW1vdXMgcGlwZSBzdXBwb3J0CgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzZXZlcmFsIGZpbGUgc2VydmVyIHJlcXVlc3RzCglBZGRlZCBzZXJ2ZXItc2lkZSBwaXBlcyBhbmQgY29uc29sZXMKClN1biBEZWMgMjcgMTU6Mjg6NTUgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY3J0ZGxsLmMsIG1zZG9zL2ludDIxLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2szMm9iai5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgbG9hZGVyL21haW4uYywgbWVtb3J5L3ZpcnR1YWwuYzoKCUFkZGVkIGJlZ2lubmluZ3Mgb2Ygc2VydmVyLXNpZGUgZmlsZSBoYW5kbGluZy4KCUFkZGVkIC1kZWJ1Z21zZyArc2VydmVyIHN1cHBvcnQuCglCZXR0ZXIgc2VydmVyIHJlcXVlc3QgZHVtcGluZyBmb3IgdmFyYXJncyByZXF1ZXN0cy4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJRml4ZWQgU2V0Rm9jdXMgdGhhdCB3YXMgYnJva2VuIHdoZW4gbW92ZWQgdG8geDExZHJ2LgoKCSogaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3RocmVhZC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglBZGRlZCBhZGRfcXVldWUvcmVtb3ZlX3F1ZXVlIHRvIHNlcnZlciBvYmplY3Qgb3BlcmF0aW9ucy4KCU1vdmVkIHNlbGVjdCgpIGxvb3AgZnVuY3Rpb25zIHRvIHNlbGVjdC5jLgoKU2F0IERlYyAyNiAxOTo0NzowMCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LmM6CglSZW5hbWVkIEVSUiBtYWNybyB0byBhdm9pZCBjb25mdXNpbmcgdGhlIG1ha2VfZGVidWcgc2NyaXB0LgoKCSogb2xlL3N0b3JhZ2UuYywgb2xlL3R5cGVsaWIuYywgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9zdG9yYWdlLmgsIGluY2x1ZGUvd2ludmVyc2lvbi5oLCBvbGUvY29tcG9iai5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMm5scy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB0b25zIG9mIGluY29tcGxldGUgcHJvdG90eXBlcywgYXNzaWdubWVudCdzIG9mIHBvaW50ZXIgd2l0aAoJZGlmZmVyZW50IHNpZ25lZG5lc3MsIHN1cGVyZmxvdXMgJywnIGFuZCAnOycgaW4gc3RydWN0dXJlcywgd3JvbmcKCXJldHVybi10eXBlcywgbG9zZSBvZiBkaWdpdHMgYW5kIHNvbWUgc21hbGwgZ2xpdGNoZXMuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFmb250Lmg6CglBbGV4IEtvcm9ia2EgPGtvcm9ia2FAZ2FsYXh5LmFtcy5zdW55c2IuZWR1PgoJQ2xlYW5lZCB1cCBmb250IGVuY29kaW5nIGhhbmRsaW5nLiBBZGRlZCAnSWdub3JlIycgb3B0aW9uIHRvIHRoZQoJW2ZvbnRzXSBzZWN0aW9uLiBBbHNvLCBmaWxlIHdpdGggY2FjaGVkIG1ldHJpY3Mgbm93IGhhcyB0aGUgdmFsdWUgb2YKCSRESVNQTEFZIGFwcGVuZGVkIHRvIHRoZSBmaWxlbmFtZS4KCgkqIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcmMvc3lzdGVzdC5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvcGF0aC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kc291bmQuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGVvYmouaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbmlvY3RsLmgsIG1pc2MvbWFpbi5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG9sZS9vbGUyLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2VkIC8vIGNvbW1lbnRzIHRvIC8qICovIHNvIFdJTkUgY29tcGlsZXMgd2l0aCBub24tZ2NjIGNvbXBpbGVycwoJYWdhaW4uCgoJKiB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGVidWdnZXIvZGJnLnksIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGlzcGxheS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL3BhbGV0dGUuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIG1vcmUgdGhpbmdzIHRvIHRoZSBYMTEgZHJpdmVyLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9icnVzaC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QG11bHRpbWFuaWEuY29tPgoJRml4ZWQgdGhlIHByb3RvdHlwZSBvZiBDcmVhdGVESUJQYXR0ZXJuQnJ1c2hQdAoKCSogaW5jbHVkZS93aW5kb3dzLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBtdWx0aW1hbmlhLmNvbT4KCVJlbW92ZWQgdGhlIENOX3h4eCBtYWNyb3Mgc2luY2UgdGhleSBhcmUgbm90IHVzZWQsIGRvIG5vdCBjb3JyZXNwb25kIHRvCglhbnkgV2luZG93cyBkZWZpbmUgYW5kIGNvbmZsaWN0IHdpdGggTUZDIGRlZmluZXMuCgl3aW5kb3dzLmggbXVzdCBwcm92aWRlIGFsbCB0aGUgZGVmaW5pdGlvbnMgY29udGFpbmVkIGluIHdpbmJhc2UuaAoJU29tZSBYeHgzMiBmdW5jdGlvbnMgZGlkIG5vdCBoYXZlIHRoZSBhc3NvY2lhdGVkIFh4eCBtYWNyby4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QG11bHRpbWFuaWEuY29tPgoJQWRkZWQgYSB0eXBlZGVmIGZvciBfX2ludDY0IHdoaWNoIGlzIGEgYnVpbHRpbiBWaXN1YWwgQysrIHR5cGUKCUFkZGVkIGEgdHlwZWRlZiBmb3IgUFVJTlQKCgkqIGluY2x1ZGUvb2JqYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAbXVsdGltYW5pYS5jb20+CglSRUZJSUQgd2FzIG5vdCBkZWZpbmVkLgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL3dpbnNvY2suYywgY29uZmlndXJlOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCWNvbmZpZ3VyZSBmaXJzdCBjaGVja3Mgd2hldGhlciBpdCBpcyBwb3NzaWJsZSB0byBjb21waWxlIElQWCBjb2RlIHdpdGgKCUdsaWJjIGhlYWRlcnMuIElmIGl0IGZhaWxzLCBuZXh0IGNoZWNrIGRldGVybWluZXMgd2hldGhlciBkaXJlY3QgaW5jbHVzaW9uCglvZiA8bGludXgvaXB4Lmg+IHdvcmtzLgoKCSogaW5jbHVkZS90Y2hhci5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAbXVsdGltYW5pYS5jb20+CglQcm92aWRlcyB0aGUgbWFwcGluZ3MuIE1CQ1MgYW5kIFVuaWNvZGUgZnVuY3Rpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQuCglTdGFuZGFyZCAoU0JDUykgZnVuY3Rpb25zIG1heSBleGlzdCBvciBub3QsIHdpdGggdGhlIHNhbWUgb3IgYSBkaWZmZXJlbnQKCXNlbWFudGljcy4KCgkqIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9pcGFkZHJlc3MuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglJUGFkZHJlc3MgY29tbW9uIGNvbnRyb2wgaW1wbGVtZW50YXRpb24uIEZpcnN0IHRyeTsgbmVlZHMgbW9yZSB3b3JrIHRvCglyZW1vdmUgYm9yaW5nIGJ1Z3MuCgpGcmkgRGVjIDI1IDA4OjU1OjE1IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9vbGVvYmouaCwgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgdGhlIFRFWFQgcmVkZWZpbmVkIHdhcm5pbmdzLgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglIb29rIGludG8gdGhlIChzdHViYmVkKSByZXNpemUgY29kZSBpbiBtc2RvcyBpbnQxMC4KCgkqIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGluY2x1ZGUvY29uc29sZS5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBzZWxlY3Rpb24gb2YgY29uc29sZSBtb2RlIGRyaXZlcnMgdG8gdXNlIHVzaW5nIHRoZQoJLWNvbnNvbGUgb3B0aW9uLiBDdXJyZW50bHkgInR0eSIsICJuY3Vyc2VzIiwgYW5kICJ4dGVybSIgYXJlCglzdXBwb3J0ZWQuCglBZGQgc3R1YnMgZm9yIHJlc2l6aW5nIHRoZSBzY3JlZW4gb24gbW9kZSBjaGFuZ2VzLgoKCSogaW5jbHVkZS9kZGVtbC5oLCBtaXNjL2RkZW1sLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglKZWFuLUNsYXVkZSBDb3RlIDxqZWFuLWNsYXVkZUBtYWNhZGFtaWFuLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBmb2xsb3dpbmcgRERFIEFQSXM6CglEZGVDbXBTdHJpbmdIYW5kbGVzLCBEZGVDcmVhdGVTdHJpbmdIYW5kbGUsIERkZUZyZWVTdHJpbmdIYW5kbGUsCglEZGVRdWVyeVN0cmluZywgRGRlVW5pbml0aWFsaXplLgoKVGh1IERlYyAyNCAxNjo1OToxNyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL01ha2VmaWxlLmluLCBvbGUvcGFyc2VkdC5jLCBvbGUvcGFyc2VkdC5oLCBvbGUvdmFyaWFudC5jOgoJSmVhbi1DbGF1ZGUgQ290ZSA8amVhbi1jbGF1ZGVAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBWYXJEYXRlRnJvbVN0ciBBUEkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGluY2x1ZGUvdHJhY2tiYXIuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIFRvb2x0aXAgc3VwcG9ydAoJLSBWZXJ0aWNhbCB0cmFja2JhcnMgc3VwcG9ydGVkIG5vdwoJLSBUQlNfQk9USCBzdXBwb3J0IChnb2VzIGFsb25nIHdpdGggcGFydGlhbCBjbGVhbnVwIG9mIGRyYXdpbmcgY29kZSkKCS0gVXNlIENPTUNUTDMyIGhlYXAgaW5zdGVhZCBvZiBzeXN0ZW0gaGVhcAoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIGFsbCBjbGlwcGVyJjNkIHN0dWJzLgoJU3RhcnRpbmcgQ29sb3JLZXkgc3VwcG9ydC4KCUZpeGVkIHRyYWNlIHN0YXRlbWVudCBpbiBEaXJlY3REcmF3Q3JlYXRlIGFzIGZvcm1hdHRpbmcgd2Fzbid0IGNvcnJlY3QuCglDaGFuZ2VkICJyZXR1cm4gMDsiIHRvICJyZXR1cm4gRERfT0siIG9yICJyZXR1cm4gU19PSyIgYXMgYXBwcm9wcmlhdGUuCglBZGRlZCBTdXJmYWNlRW51bSBkd0ZsYWdzLgoKCSogaW5jbHVkZS9kcGxheS5oLCBtdWx0aW1lZGlhL2RwbGF5LmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgbWFjcm9zIHRvIGhlYWRlciBmaWxlIGZvciBlYXNpZXIgZnVuY3Rpb24gY2FsbGluZy4KCUNoYW5nZWQgaW1wbGVtZW50YXRpb24gYSBsaXR0bGUgYml0LgoJQWRkZWQgc3R1YnMgZm9yIGRwbGF5My4gU3RpbGwgbmVlZCB0byBicmVhayBpbnRvIEEgYW5kIFcgdmVyc2lvbnMuCgoJKiB3aW4zMi9maWxlLmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglDcmVhdGVGaWxlMzJBIHdhcyBvbmx5IGFsbG93aW5nIGNvbnNvbGUgb3BlbnMgb24gQ09OSU4kL09VVCQuIFRoaXMKCWhhcyBiZWVuIGNoYW5nZWQgdG8gaGF2ZSBhIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyZS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEb24ndCBzZW5kIE9EQV9FTlRJUkUgZm9yIGVtcHR5IGxpc3Rib3hlcyAoTElTVEJPWF9QYWludCkuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9rZXJuZWwzMi5jOgoJSmVhbi1DbGF1ZGUgQ290ZSA8amVhbi1jbGF1ZGVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgR2V0QmluYXJ5VHlwZSBBUEkgZnVuY3Rpb24uCgoJKiBsb2FkZXIvZG9zL2Rvc21vZC5jLCBsb2FkZXIvZG9zL2Rvc21vZC5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHNvbWUgbmV3IGRvc21vZCBjb21tdW5pY2F0aW9uIHBvc3NpYmlsaXRpZXMsIGluY2x1ZGluZwoJYWN0aXZhdGluZyBhIGRvc21vZC1zcGVjaWZpYyBzZXRpdGltZXIoKSwgYW5kIHRoZSBjYXB0dXJlIG9mIHNvbWUKCWNvbW1vbiBzaWduYWxzLCB3aGljaCBpcyByZXR1cm5lZCB0byBXaW5lIChwcmV2aW91c2x5IGEgU0lHSUxMCgl3b3VsZCBqdXN0IGNhdXNlIGEgImRvc21vZCBzeW5jIGxvc3QiIHdpdGhvdXQgZXhwbGFuYXRpb24sIG5vdyBpdAoJaW52b2tlcyB0aGUgV2luZSBkZWJ1Z2dlcikuIEludm9rZXMgaW50IDA4IHVwb24gcmVjZWlwdCBvZiBkb3Ntb2QKCVNJR0FMUk0sIHRodXMgc2ltdWxhdGluZyB0aGUgRE9TIHRpbWVyLiBNYWRlIERPUyBpbnRlcnJ1cHQgY2FsbHMKCWJlIHJlcG9ydGVkIGJ5IC1kZWJ1Z21zZyArcmVsYXkgaW5zdGVhZCBvZiAtZGVidWdtc2cgK2ludC4gQW5kCglmaXhlZCBub24taTM4NiBjb21waWxhdGlvbiBvZiBkb3Ntb2QuIChBbnl0aGluZyBlbHNlPyEpCgoJKiBsb2FkZXIvbWFpbi5jLCB3aW5kb3dzL3dpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEZXNrdG9wIHdpbmRvdyBxdWV1ZSBoYW5kbGluZyBhZGFwdGVkLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy93aW5wb3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUXVldWUgaGFuZGxpbmcgYWRhcHRlZCB0byBuZXcgcXVldWUgcm91dGluZXMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvdGFzay5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBzdHViIGZvciBJbml0VGhyZWFkSW5wdXQuCglVc2UgR2V0VGhyZWFkUXVldWUvR2V0RmFzdFF1ZXVlIGluc3RlYWQgb2YgR2V0VGFza1F1ZXVlLgoKCSogbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBDYWxsb3V0IHRhYmxlIGluc3RlYWQgb2YgZGlyZWN0IEdldFByb2NBZGRyZXNzLgoJVXNlcllpZWxkIG1vdmVkIHRvIFVTRVIuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGxvdXQgdGFibGUgKGZvciBLRVJORUwtPlVTRVIgY2FsbHMpIGFkZGVkLgoJQ2FsbGJhY2tzLT5DYWxsUG9zdEFwcE1lc3NhZ2VQcm9jIHJlbW92ZWQuCgoJKiBtaXNjL2NhbGxiYWNrLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL3Rhc2suYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUhhbmRsZSBub24taGFyZHdhcmUgWCBldmVudHMgY29ycmVjdGx5IHdpdGggbmF0aXZlIFVTRVIKCShyZW1vdmVkIHJlZmVyZW5jZSB0byBNRVNTQUdFUVVFVUUgZnJvbSBLRVJORUwgY29kZSkuCglIYW5kbGUgRXhwb3NlIGV2ZW50cyB3aXRoIG5hdGl2ZSBVU0VSLgoKCSogbWlzYy9jcnRkbGwuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUJldHRlciBfdWx0b2EoKS4KCgkqIHdpbjMyL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeCBzbWFsbCBwcm9ibGVtIGluIEdldFRpbWVab25lSW5mb3JtYXRpb24oKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglMb3dlc3Qgc2NhbiBjb2RlIHNlZW1zIHRvIGJlIDEsIG5vdCB6ZXJvLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHVicyBmb3IgSURpcmVjdDNEKDIpOjpDcmVhdGVMaWdodCBhbmQgQ3JlYXRlRGV2aWNlIHRvIGF2b2lkIGNyYXNoZXMuCgoJKiBkbGxzL250ZGxsL3J0bC5jLCByZWxheTMyL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlcyBjcmFzaCB3aGVuIHJ1bm5pbmcgd2l0aG91dCBleHRlcm5hbCBzaGVsbDMyLmRsbC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vcmUgbWVzc2FnZXMgW0xCXyosRU1fKl0gdHJhbnNsYXRlZCAzMkEgZnJvbS90byAzMlcuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCURlc3QgYnVmZmVyIHdhcyBwcmludGVkIG91dCBhcyBzdHIuCgoJKiBtaXNjL3Zlci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUdldHRpbmcgc3RyaW5ncyB3aXRoIFZlclF1ZXJ5VmFsdWUzMlcgd2FzIGJyb2tlbi4gQ29tcGxldGUKCXJlY29uc3RydWN0aW9uIG9mIHRoZSBmdW5jdGlvbi4KCgkqIG1pc2MvdG9vbGhlbHAuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggbnVtYmVyIGFuZCB0eXBlIG9mIGFyZ3MgaW4gZGVidWdnaW5nIHN0YXRlbWVudHMuCgoJKiBvbGUvc3RvcmFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BtdWQuZGU+CglJU3RvcmFnZTMyIHZ0YWJsZSB3YXMgbWlzc2luZyAzIHN0dWIgZW50cmllcy4KCkZyaSBEZWMgMTggMTc6Mzg6MzkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZm9udC5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCURvY3VtZW50YXRpb24gZm9yIFRyYW5zbGF0ZUNoYXJzZXRJbmZvLgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgaWYxNjMyL3dwcm9jcy5zcGVjLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWtlIHRoZSBET1NBU1BJIHBhcnQgdXNlIHRoZSBleGNlbGxlbnQgRFBNSSBSTUNCIGltcGxlbWVudGF0aW9uIGRvbmUKCWJ5IE92ZSBLYWF2ZW4sIHdoaWNoIG1ha2VzIHRoZSBjb2RlIF9tdWNoXyBjbGVhbmVyLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJVXNlIC1sd2luZSBmb3IgbGlua2luZy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogYWx3YXlzIGNsZWFyIFFTXy4uLiBmcm9tICpib3RoKiBjaGFuZ2VCaXRzIGFuZCB3YWl0Qml0cy4KCUJ1Z2ZpeDogcXVldWUtPmhTZW5kaW5nVGFzayBpcyAqcXVldWUqIGhhbmRsZSwgbm90IHRhc2sgaGFuZGxlLgoKCSogaWYxNjMyL3N0b3JhZ2Uuc3BlYywgaW5jbHVkZS9pbnRlcmZhY2VzLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3N0b3JhZ2UuaCwgb2xlL2lmcy5jLCBvbGUvc3RvcmFnZS5jOgoJRnJhbudvaXMgR291Z2V0IDxnb3VnZXRAbWV0YWludGVncmF0aW9uLm5ldD4KCUZpcnN0IHN0ZXAgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBjYWxsIENPTSBpbnRlcmZhY2VzIGZyb20gQysrIGNvZGUgaW4KCVdpbmVsaWIuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvdHJlZXZpZXcuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglQcmVsaW1pbmFyeSB0b29sdGlwIHN1cHBvcnQuCglXTV9TRVRGT05UL0dFVEZPTlQgYWRkZWQuCglTb21lIGJ1ZyBmaXhlcy4KCVVzZSBDT01DVEwzMiBoZWFwIGluc3RlYWQgb2Ygc3lzdGVtIGhlYXAuCgoJKiBncmFwaGljcy9wYWludGluZy5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIFBvbHlsaW5lVG8uCgoJKiByZWxheTMyL250ZGxsLnNwZWM6IEFkcmlhbiBIYXJ2ZXkgPGFkcmlhbkBzZWxlY3QuY29tLmF1PgoJVGhlIFp3Li4uIEZ1bmN0aW9ucyBpbiBudGRsbC5kbGwgYXJlIGp1c3QgYWx0ZXJuYXRlIGVudHJ5Cglwb2ludHMgZm9yIHRoZSBzYW1lIGZ1bmN0aW9ucyBhcyB0aGUgTnQuLi4gZnVuY3Rpb24gb2YgdGhlCglzYW1lIG5hbWVzLiAgQ2hhbmdlZCBudGRsbC5zcGVjIHRvIG1hdGNoIHRoaXMuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlb3JnYW5pemVkIFBFIG1vZHVsZSBsb2FkaW5nIHRvIHByZXBhcmUgZm9yIGVsZi1kbGwgbG9hZGVyLgoJV0lORV9NT0RSRUYgY3JlYXRpb24gbW92ZWQgdG8gb25lIGNlbnRyYWwgbG9jYXRpb24uCglCdWdmaXg6IGNvcnJlY3RseSBzZWxlY3QgbmF0aXZlL2J1aWx0LWluIHZlcnNpb24gaWYgLkRMTAoJZXh0ZW5zaW9uIGlzIG1pc3NpbmcgaW4gTG9hZExpYnJhcnkgY2FsbC4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIGVycm9yIHZhbHVlcyBNQ0lfSU5URVJOQUwgdG8gdGhlaXIgY29ycmVjdCB2YWx1ZXMuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIHdhcm5pbmcuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBzZW5kaW5nIGRpcmVjdGx5IG1lc3NhZ2VzIHRvIERyaXZlclByb2MgYnV0IHJhdGhlciBnbyB0aHJvdWdoCglNQ0kgbGF5ZXIgKHJlcXVpcmVkIGZvciBvcGVuL2Nsb3NlKS4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBpbmNvcnJlY3QgcGF0Y2ggZm9yIE1DSV9PUEVOIGFuYyBNQ0lfQ0xPU0UgcGFyYW1ldGVycyAodGhhbmtzIHRvIFJvYmVydCBSaWdncwoJZm9yIHBvaW50aW5nIG91dCB0aGUgYnVnLCBzZWUgdGhlIGZpeCBpbiBtY2lzdHJpbmcuYykKCUZpeGVkIE1DSSBzZWVraW5nIG9uIENEIGF1ZGlvLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWJzIGZvciBXYWl0TmFtZWRQaXBlW0F8V10uCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL3NoZWxsLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIENvbnRyb2xfRmlsbENhY2hlX1J1bkRMTC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU0hHZXRGaWxlSW5mbzMyQTogZ2V0IFNIR0ZJX1NZU0lDT05JTkRFWCBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSUxBcHBlbmQgc2VlbXMgdG8gd29yayBub3cuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2tlcm5lbDMyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWJzIGZvciBXYWl0TmFtZWRQaXBlW0F8V10uCgpUdWUgRGVjIDE1IDE4OjA0OjU4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggR2V0VGVtcFBhdGgzMiBpZiBjb3VudD0wLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbWF1eC5jOgoJVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJLSBhZGQgLWxvc3NhdWRpbyBpZiBuZWVkZWQsIGFuZCBhIGNoZWNrIGZvciA8c291bmRjYXJkLmg+LCB0byBjb25maWd1cmUuaW4KCSAgKHJ1biBhdXRvY29uZiBhZnRlciB0aGlzKS4gIE5vdGUgdGhhdCB0aGUgY2hlY2sgaGFzIGJlZW4gYWx0ZXJlZCB0byBicmVhawoJICBvdXQgb2YgdGhlIEFDX0NIRUNLX0hFQURFUlMgYWZ0ZXIgdGhlIGZpcnN0IG1hdGNoIC0gdGhpcyBpcyBzbwoJICA8c3lzL3NvdW5kY2FyZC5oPiwgaWYgZm91bmQgb24gTmV0QlNEIChhIGByZWFsJyBPU1MpLCB3aWxsIG5vdCBjb25mbGljdAoJICB3aXRoIHRoZSBlbXVsYXRlZCBvc3NhdWRpby4KCS0gY2hlY2sgZm9yIDxzb3VuZGNhcmQuaD4gYWxvbmcgd2l0aCB0aGUgb3RoZXIgdHdvIGluIGEgbXV0dWFsbHktZXhjbHVzaXZlCgkgIG1hbm5lciBpbiB0aGUgdmFyaW91cyAqLmMgZmlsZXMgdGhhdCBuZWVkIGl0OyBjaGFuZ2UgaW5jbHVkZSBvZgoJICAibW1zeXN0ZW0uaCIgdG8gIm11bHRpbWVkaWEuaCIgc28gdGhpcyBsb2dpYyBpcyBhbGwgaW4gb25lIHBsYWNlCgktIGNoYW5nZSBtY2ljZGEuYyB0byBhbGxvdyBmb3IgQ0QgYXVkaW8gbWFuaXB1bGF0aW9uIG9uIE5ldEJTRC4gIFRoaXMKCSAgaW5jbHVkZXM6CgkgICogY2hhbmdpbmcgaW9jdGwoKSBjYWxscyB0byBiZSBOT04tU1BMSVQgd2l0aCBleGFjdGx5IDMgYXJnczsgb24gTmV0QlNECgkgICAgb3NzYXVkaW8sIGlvY3RsKCkgaXMgI2RlZmluZWQgdG8gYmUgX29zc19pb2N0bCBieSA8c291bmRjYXJkLmg+LCBhbmQKCSAgICBuZWl0aGVyIHNwbGl0dGluZyB3aXRoICMtZGlyZWN0aXZlcyBub3IgYSB0d28tYXJnIGlvY3RsIHdvcms7CgkgICogY2hhbmdpbmcgdGhlICNpZiBsb2dpYyB0byBhbGxvdyBib3RoIEZyZWVCU0QgYW5kIE5ldEJTRCB0byBzaGFyZSB0aGUKCSAgICBhcHByb3ByaWF0ZSBjb2RlIGJsb2NrcwoJLSBibG9jayBvdXQgTUlESSBjb2RlIGZvciBOZXRCU0QgKGluaXQuYykgYW5kL29yIG1pc3NpbmcgU05EQ1RMX01JRElfSU5GTwoJICAobWlkaS5jLCBtY2ltaWRpLmMpLiAgTmV0QlNEJ3MgT1NTIGVtdWxhdGlvbiBkb2VzIG5vdCAoeWV0KSBzdXBwb3J0IE1JREkuCglUaGFua3MgZ28gdG8gbXljcm9mdEBuZXRic2Qub3JnIGZvciB0aGUgOTklIGJ1bGsgb2YgdGhpcyB3b3JrLgoKCSogdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194dXRpbC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgaW5jbHVkZS90c194dXRpbC5oOgoJRGlyayBUaGllcmJhY2ggPHRoaWVyYmFjaEBtYXRoZW1hdGlrLnR1LWRhcm1zdGFkdC5kZT4KCVNldCB0aGUgY2xhc3MgaGludHMgZm9yIG1hbmFnZWQgd2luZG93cy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1Z2ZpeDogR2V0RnVsbFBhdGhOYW1lIHNldHMgbHBGaWxlUGFydCBvbmx5IHdoZW4gdGhlIGxhc3QgZWxlbWVudAoJZG9lcyBub3QgZW5kIHdpdGggJ1wnLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBtaXNjL2RkZW1sLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgcmVsYXkzMi9nZGkzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCBjb250cm9scy9tZW51LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgaWYxNjMyL3VzZXIuc3BlYzoKCVBhdWwgUXVpbm4gPHBhdWxxQENPUkVMLkNBPgoJTG90cyBvZiBuZXcgZGVmaW5lcyBhbmQgc3R1YnMuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CglUaGVzZSBwYXRjaGVzIGFkZCBzdXBwb3J0IGZvciAtLWVuYWJsZS1kbGwgb24gTmV0QlNELCBhbmQgbWF5IGV2ZW4gZG8gc28gZm9yCglGcmVlQlNEIGEub3V0LiAgTm93LCBOZXRCU0QgY2FuIHVzZSBsaWJ3aW5lIGFzIGEgc2hhcmVkIG9iamVjdC4gIFRoYW5rcyB0bwoJbXljcm9mdEBuZXRic2Qub3JnIGZvciBkb2luZyB0aGlzIHdvcmshCgoJKiB0b29scy93cmMvd3JpdGVyZXMuYzogVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJR2xvYmFsIGNvbnN0cnVjdG9ycyB1c2luZyBgLnNlY3Rpb24gLmN0b3JzJyBhcmUgYm9ndXMgZm9yIE5ldEJTRCdzCglhc3NlbWJsZXIuIFVzZSB0aGUgYXBwcm9wcmlhdGUgYC5zdGFicycgd2hlbiBvbiBOZXRCU0QuCgoJKiBvbGUvdmFyaWFudC5jOiBUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CglVbmRlZmluZWQgQ0hBUl9NQVggYW5kIENIQVJfTUlOICgjZGVmaW5lZCBieSBOZXRCU0QncyBzeXN0ZW0gaGVhZGVycykuCglGaXhlZCBzb21lIGNvbnN0YW50cyB0aGF0IGFyZSB0b28gYmlnIGZvciBhIHBsYWluIGBpbnQnLgoKCSogb2xlL3ZhcmlhbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgTUFYRkxPQVQgaWYgRkxUX01BWCBpc24ndCB0aGVyZS4KCgkqIGdyYXBoaWNzL3BzZHJ2L01ha2VmaWxlLmluOiBUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CglncmFwaGljcy9wc2RydiBmb3JnZXRzIHRvIHB1bGwgaW4gQERMTEZMQUdTQCwgYW5kIHNvIGlzIGNvbXBpbGVkIG5vbi1QSUMgaWYKCXVzaW5nIC0tZW5hYmxlLWRsbC4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJVmVrc2xlciBNaWNoYWVsIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCU1vdmUgZGVjbGFyYXRpb25zIGZyb20gd2luZG93cy5oIHRvIHdpbmdkaS5oIGFuZCB3aW51c2VyLmguCgpNb24gRGVjIDE0IDE4OjE1OjExIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9jb25zb2xlLmMsIGZpbGVzL01ha2VmaWxlLmluLCBmaWxlcy9hc3luYy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvYXN5bmMuaCwgaW5jbHVkZS9maWxlLmgsIGxvYWRlci9zaWduYWwuYywgbWlzYy93aW5zb2NrX2Rucy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIGFzeW5jIElPIChTSUdJTykgc3R1ZmYgZnJvbSBXSU5TT0NLIGdlbmVyaWMgdXNlYWJsZS4KCUFkZGVkIGFzeW5jIElPIHN1cHBvcnQgdG8gRklMRSBhbmQgQ09OU09MRSBvYmplY3RzLgoKCSogbWlzYy93aW5zb2NrLmM6IFN0ZXBoZW4gTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglQcmV2ZW50IHNlZ2ZhdWx0IGluIHNldHNvY2tvcHQgd2hlbiBvcHRuYW1lIGlzIFNPX0xJTkdFUiBhbmQgb3B0dmFsIGlzCgludWxsLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU29tZSBjbGVhbnVwLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTSE1hcFBJRExUb1N5c3RlbUltYWdlTGlzdEluZGV4IHRyeSdzIHRvIGRldGVybWluZSBhbmQgbG9hZCB0aGUgZXhhY3QKCWljb24gZm9yIGZpbGVzIChieSB0eXBlKSBub3cuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBIQ1JfR2V0RGVmYXVsdEljb24gKGludGVybmFsKS4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTW92ZWQgRFBNSSB3cmFwcGVyIGFsbG9jYXRpb24gY29kZSB0byBkb3NtZW0uYyB0byBSRUFMTFkgbWFrZSB0aGUKCVJNY2FsbCBzaG9ydGN1dHMgaW5kZXBlbmRlbnQgb2YgZG9zbW9kLiBTUyBoYWQgYmVlbiBsZWZ0IG91dCBvZgoJdGhlIFJFQUxNT0RFQ0FMTCBjb3B5IHJvdXRpbmVzIGZvciBzb21lIHJlYXNvbiwgZml4ZWQgbm93LiBBbHNvCgljbGVhbmVkIHVwIGEgZmV3IGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IElhbiBQaWxjaGVyIDxwaWxjaGVyQGNvbmNlbnRyaWMubmV0PgoJQWRkZWQgYWJpbGl0eSB0byBzcGVjaWZ5IFggZm9udHMgdXNlZCBmb3IgSGVsdiBhbmQgVG1zIFJtbiB0eXBlZmFjZXMKCXdpdGggRGVmYXVsdFNlcmlmIGFuZCBEZWZhdWx0U2Fuc1NlcmlmIElOSSBrZXlzLgoKCSogdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jLCB0b29scy93cmMvQ0hBTkdFUzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CgktIEFkZGVkIGEgZ2xvYmFsIGxhYmVsIGZvciBlbGYtZGxsIGxpbmtpbmcgYW5kIGEgbG9uZyB3aXRoIHRoZSByZXNvdXJjZQoJICBzaXplIGFuZCBhIGxvbmcgd2l0aCB0aGUgZGlyZWN0b3J5IHNpemUuCgktIEtpbGxlZCBhbiBhbm5veWluZyB3YXJuaW5nIHNpbmNlIHZlcnNpb24gMS4wLjAgaW4gcGFyc2VyLnkgYWJvdXQgYQoJICB2YXIgYmVpbmcgdXNlZCBiZWZvcmUgaW5pdC4KCgkqIGluY2x1ZGUvc2hsb2JqLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZHMgdGhlIElQZXJzaXN0RmlsZSBJbnRlcmZhY2UgdG8gSVNoZWxsTGlua1tXXSBhbmQgZ2F2ZSBib3RoIG93bgoJSUNsYXNzRmFjdG9yeXMuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJKFJlYWRDb25zb2xlMzJBKTogc21hbGwgYW5kIHN0dXBpZCBidWcgZml4ZWQKCShXcml0ZUNvbnNvbGVPdXRwdXQpOiBidWcgZml4ZWQgKGF0dHJpYnV0ZXMgbWF5IGNoYW5nZSB3aXRoaW4gbGluZXMpCglhbmQgZW5oYW5jZWQgc3BlZWR3aXNlIGJ5IHVzaW5nIGJ1ZmZlcmluZy4KCShDT05TT0xFX3N0cmluZ18yX0lSKTogZW5oYW5jZWQsIG5vdyBnZXRzIHNjYW5jb2RlcyBhbmQgdmlydHVhbGtleWNvZGVzCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglfdWx0b2EgaW1wbGVtZW50ZWQuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbWFsbCBoYWNrIHRvIGdldCByaWQgb2YgYW5ub3lpbmcgZXJyOnJlc291cmNlOiBtZXNzYWdlIGZvcgoJTWVzc2FnZUJveGVzLgoKCSogcmVsYXkzMi9kc291bmQuc3BlYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJRml4IG9mZi1ieS0xIGVycm9yIGluIERpcmVjdFNvdW5kIG9yZGluYWxzLiBUaGFua3MgdG8gUm9iZXJ0IFJpZ2dzIGZvcgoJdGhlIHBvaW50ZXIuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCVNhdmUgdGhlIG9yaWdpbmFsIHZpZGVvIG1vZGUgYmVmb3JlIGdvaW5nIGZ1bGxzY3JlZW4gYW5kIHJlc3RvcmUgaXQKCXdoZW4gdGhlIGxhc3QgRGlyZWN0RHJhd19SZWxlYXNlIGlzIGNhbGxlZC4gQWxzbyBmaXggYSBwcm9ibGVtIHdoZXJlCgl0aGUgdmlld3BvcnQgd2Fzbid0IHNldCB0byAwLDAuCgoJKiBjb25zb2xlL3h0ZXJtLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJTWFkZSBtb3JlIGNyb3NzLXBsYXRmb3JtIGJ5IGNoYW5naW5nIC0+X2ZpbGVubyB0byBmaWxlbm8oKS4KCgkqIHdpbmRvd3Mvd2luLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4IHRoZSBaLW9yZGVyIG9mIG1heGltaXplZC9taW5pbWl6ZWQgY2hpbGQgd2luZG93cy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglYTEZEcyBzaG91bGQgYmUgd2VsbC1mb3JtZWQgKDE0IGh5cGhlbnMpIHRvIG1hdGNoIHNjYWxhYmxlIGZvbnRzLgoJU3RvcCBzbGFudCBmaWVsZCBiZWNvbWluZyB3aWxkY2FyZGVkIHRvbyBlYXJseS4KCgkqIHdpbmRvd3MvZm9jdXMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkoRk9DVVNfU3dpdGNoRm9jdXMpIGNoZWNrIGZvciBwRm9jdXNUbyA9PSBOVUxMIGluc3RlYWQgb2YgaEZvY3VzVG89PTAuCgoJKiBvbGUvb2xlMm5scy5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUhhY2sgT0xFX0dldEZvcm1hdCogdG8gcmV0dXJuIHNvbWV0aGluZyBpZiBkYXRlbGVuID0gMC4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBXSU5BUEkncy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRnJpIERlYyAxMSAxNTowNDoxMSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGxoZWxwMzIuaCwgaW5jbHVkZS90b29saGVscC5oLCBtaXNjL3Rvb2xoZWxwLmMsIHNjaGVkdWxlci9rMzJvYmouYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVBhdHJpY2sgU3BpbmxlciA8c3Bpbmxlci5wYXRyaWNrQG1heW8uZWR1PgoJSW1wbGVtZW50ZWQgQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90LCBpbmNsdWRpbmcgdHdvIG9mIHRoZSByb3V0aW5lcwoJdXNpbmcgc25hcHNob3RzLCBQcm9jZXNzMzJGaXJzdCBhbmQgUHJvY2VzczMyTmV4dC4KCgkqIHJlbGF5MzIvb2xlYXV0MzIuc3BlYywgaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW4xNmRydi5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG9sZS9jb21wb2JqLmMsIG9sZS92YXJpYW50LmM6CglKdXN0aW4gQnJhZGZvcmQgPGp1c3RpbkB1a2Fucy5lZHU+CglNb3N0IG9mIHRoZSBjdXJyZW5jeSB2YXJpYW50IGNvbnZlcnNpb24gZnVuY3Rpb25zIGltcGxlbWVudGVkLgoJTWlub3IgYnVnZml4ZXMgYW5kIGhlYWRlciB0aWR5aW5nLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvcmFzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgcmVsYXkzMi9yYXNhcGkzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBSYXNFbnVtQ29ubmVjdGlvbnMgc3R1Yi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWdmaXggaW4gUGF0aENvbWJpbmUzMltBfFddLgoJVmlldyBtZW51IGluIGV4cGxvcmVyIGFuZCBvbiByaWdodCBtb3VzZSBidXR0b24gaXMgd29ya2luZyBub3cuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkICBJTEdldERpc3BsYXlOYW1lLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0YXJ0ZWQgaW1wbGVtZW50YXRpb24gb2YgU2hlbGxFeGVjdXRlRXgzMkEuCglTbWFsbCBjaGFuZ2VzLgoKCSogZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCBtZW51IHJlc291cmNlcyB0byByYy1maWxlLgoKCSogaW5jbHVkZS9wZV9pbWFnZS5oLCBvbGUvb2xlMm5scy5jLCB3aW4zMi9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVR3byBkZWJ1ZyBtZXNzYWdlcyBjbGFyaWZpZWQsIG9uZSB1c2VsZXNzIHByb3RvdHlwZSByZW1vdmVkLgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIG9sZS92YXJpYW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCTI5NCBtaXNzaW5nIFdJTkFQSSBhZGRlZC4KCgkqIHRvb2xzL3Rlc3RydW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJS2lsbCBzd2FwcGVkIG91dCAod2luZSkgcHJvY2Vzc2VzIHRvbyBhbmQgdHJ1bmNhdGUgZGlmZiBhZnRlciBzb21lIHh4eAoJbGluZXMuCgoJKiBvbGUvb2xlMm5scy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIFNldExhc3RFcnJvciB3aXRoIHdyb25nIHZhbHVlLgoKCSogbWlzYy9wcmludGRydi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGluY2x1ZGUvd2luZG93cy5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgQWJvcnREb2MxNiwgbW92ZSBBYm9ydERvYzMyIGFuZCBTdGFydERvYzMyVyB0bwoJbWlzYy9wcmludGRydi5jIGFuZCBmaXggYSBmZXcgY29tcGlsZSB3YXJuaW5ncy4KCgkqIHdpbjMyL29yZGluYWxzLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy91c2VyLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9udGRsbC9udC5jLCBpZjE2MzIvdHlwZWxpYi5zcGVjLCBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvaW50MjEuYywgb2xlL29sZTJubHMuYywgb2xlL3R5cGVsaWIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIGEgYnVuY2ggb2YgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBmaWxlcy9maWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgV2luMzIgc3luY2hybyB0byBGSUxFcyAodXNlZnVsIG9ubHkgZm9yIHRlcm1pbmFsIGhhbmRsZXMpLgoKVGh1IERlYyAxMCAxNjowNDo1MSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIHJlbGF5MzIvY29tY3RsMzIuc3BlYywgcmVsYXkzMi9nZGkzMi5zcGVjLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvbXByLnNwZWMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCByZWxheTMyL3RhcGkzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCByZWxheTMyL3dpbnNwb29sLnNwZWMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvdGltZS5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGlmMTYzMi9kZGVtbC5zcGVjLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgbWVtb3J5L3N0cmluZy5jLCBtaXNjL2RkZW1sLmMsIG1pc2MvbmV0d29yay5jLCBtaXNjL3ByaW50ZHJ2LmMsIG1pc2MvdGFwaTMyLmMsIGNvbnRyb2xzL2VkaXQuYywgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy9wYWludGluZy5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJU3lsdmFpbiBTdC1HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglMb3RzIG9mIG5ldyBzdHVicy4KCgkqIG1zZG9zL3Z4ZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUxldCB0aGUgU3lzdGVtX1RpbWVfU2VsZWN0b3IgY2xvY2sgdGljay4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1pc2NlbXUvaW5zdHIuYywgbXNkb3MvZG9zbWVtLmMsIGdyYXBoaWNzL2Rpc3BkaWIuYywgZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3ZnYS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIENyZWF0ZVN5c3RlbVRpbWVyIGludGVyZmFjZSBjaGFuZ2UuCgoJKiBpZjE2MzIvc3lzdGVtLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvd2luZG93cy5oLCBtaXNjL2NhbGxiYWNrLmMsIG1pc2Mvc3lzdGVtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNsZWFuZWQgdXAgQ3JlYXRlU3lzdGVtVGltZXIgaW50ZXJmYWNlIGZvciB1c2Ugd2l0aCAzMi1iaXQgY2FsbGJhY2tzLgoJKE5PVEU6IDE2LWJpdCBjYWxsYmFja3Mgc3RpbGwgZG9uJ3Qgd29yayEpCgoJKiB3aW5kb3dzL21kaS5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCS0gSGFuZGxlIFdNX01ESVJFU1RPUkUgYnkgY2FsbGluZyBXTV9TWVNDT01NQU5EIGZvcgoJdGhlIGNoaWxkIHdpbmRvdyBzbyB0aGF0IHRoZSBzeXN0ZW0gbWVudSBpcyBzZXQgY29ycmVjdGx5LgoJLSBJbiBNRElDYXNjYWRlIGFuZCBNRElUaWxlIHVzZSBXTV9NRElSRVNUT1JFIG1lc3NhZ2UKCXRvIHJlc3RvcmUgbWF4aW1pemVkIHdpbmRvdyBzbyB0aGF0IHN5c3RlbSBtZW51IGlzCgloYW5kbGVkIGNvcnJlY3RseS4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL3R5cGVsaWIuYywgb2xlL3ZhcmlhbnQuYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjOgoJSmVhbi1DbGF1ZGUgQ290ZSA8amVhbi1jbGF1ZGVAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgVkFSSUFOVCBBUElzLgoKCSogZmlsZXMvZHJpdmUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgRFJJVkVfR2V0RnJlZVNwYWNlIHRvIGhhbmRsZSBzcGFjZSA+IDQgR0J5dGUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgloYW5kbGUgVFZJRl9URVhUIGJ5IFRSRUVWSUVXX1NldEl0ZW0gYWNjb3JkaW5nIHRvIE1TIGRvY3VtZW50YXRpb24uCgliZXR0ZXIgaGFuZGxpbmcgb2YgTFBTVFJfVEVYVENBTExCQUNLMzJBCglUUkVFVklFV19HZXROZXh0fFByZXZMaXN0SXRlbSBkaWRuJ3QgZGVzY2VuZCBpbnRvIHZpc2libGUgY2hpbGQgaXRlbXMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXYXJuIGlmIHR3byAuZXhlcyBjb25mbGljdCB3aXRoIGVhY2ggb3RoZXIgYW5kIHRoZSBzZWNvbmQgZG9lcyBub3QKCWhhdmUgcmVsb2NhdGlvbiByZWNvcmRzLgoKCSogbWlzYy9jb21tZGxnLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIEdldEZpbGVUaXRsZTMyQSBub3QgZmlsbGluZyB1cCBscFRpdGxlIGlmIGxwRmlsZSBkaWRuJ3QKCWNvbnRhaW4gJy8nLCdcXCcgb3IgJzonLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglGaXhlZCBhIHBvdGVudGlhbCBjcmFzaCBpZiBhIHVzYWJsZSB2aWRlbyBtb2RlIGlzIG5vdCBkZXRlY3RlZC4KCgkqIHRvb2xzL21ha2VfYXV0aG9yczogU2NyaXB0IHRvIGdlbmVyYXRlIGF1dGhvcnMgZmlsZXMKCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglTdHVicyBmb3IgSURpcmVjdElucHV0RWZmZWN0IGFuZCBJRGlyZWN0SW5wdXREZXZpY2UyQSBtZXRob2RzLAoJYXMgd2VsbCBhcyBBZGRSZWYoKSwgR2V0Q2FwYWJpbGl0ZXMoKSwgRW51bU9iamVjdHMoKSwKCUdldFByb3BlcnR5KCksIEdldE9iamVjdEluZm8oKSwgR2V0RGV2aWNlSW5mbygpLCBJbml0aWFsaXplKCksCglhbmQgUnVuQ29udHJvbFBhbmVsKCkgZm9yIElEaXJlY3RJbnB1dERldmljZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglTZXQgd2luZG93IGZvY3VzIGluICBfY29tbW9uX0lEaXJlY3REcmF3X1NldERpc3BsYXlNb2RlKCkuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJQWNjZXB0IE1DSV9PUEVOIGFuZCBNQ0lfQ0xPU0UgbWVzc2FnZXMgaW4gTUNJQ0RBVURJT19Ecml2ZXJQcm9jMzIoKS4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIGRlZmVycmVkIEV4cG9zZSBldmVudHMgaGFuZGxpbmcuCgoJKiB3aW5kb3dzL2RjZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNsaXAgVmlzUmduIGFnYWluc3QgWCBkZXNrdG9wLgoKCSogbG9hZGVyL21vZHVsZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUxvYWRNb2R1bGUzMi9XaW5FeGVjMzIgc2hvdWxkIHJldHVybiAxNi1iaXQgaEluc3RhbmNlL2hUYXNrLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVNhbml0eSBjaGVjayBvbiBmb250IHNpemUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2luZyBwYXJlbnRoZXNlcyBhZGRlZC4KCldlZCBEZWMgIDkgMTY6Mzc6MDUgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci90YXNrLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvY29uc29sZS5jLCBpbmNsdWRlL3dpbmNvbi5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbmhhbmNlZCBXaW4zMiBDb25zb2xlIChYVEVSTSkKCS0gaW5wdXRoYW5kbGluZyBlbmhhbmNlZCAoa2V5cyBhbmQgbW91c2VjbGlja3MpCgktIHdpbjMyIHN5bmNocm9uaXphdGlvbiAocGFydGlhbCkKCS0gbG90cyBvZiBlbmhhbmNlbWVudHMgdG8gZHJhd2luZyBmdW5jdGlvbnMKCS0gc2ltcGxlL2NvbXBsZXggY29uc29sZSAoc2ltcGxlLXN0ZGluL3N0ZG91dCAtPiBjb21wbGV4LXh0ZXJtKS4KCgkqIGNvbnNvbGUvTWFrZWZpbGUuaW4sIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL2ludGVyZmFjZS5jLCBjb25zb2xlL25jdXJzZXMuYywgY29uc29sZS90dHkuYywgY29uc29sZS94dGVybS5jLCBpbmNsdWRlL2NvbnNvbGUuaDoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkIGEgZHJpdmVyIHRvIG9wZW4gdXAgYSBuZXcgeHRlcm0gd2luZG93IHdoZW5ldmVyIGNvbnNvbGUgb3V0cHV0IGlzCgluZWVkZWQuIERlcml2ZWQgZnJvbSBjb25zb2xlL3dpbjMyLmMgYnV0IHdlIGFyZSBub3QgeWV0IHJlYWR5IHRvIG1lcmdlCgl0aGUgY29kZSBjb21wbGV0ZWx5LgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvd2luZG93cy5oLCB0b29scy9mbnQyYmRmLmM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCUltcHJvdmVkIHRoZSBoYW5kbGluZyBvZiBmb250IGVuY29kaW5ncy4KCgkqIG1zZG9zL2RwbWkuYywgaW5jbHVkZS9taXNjZW11Lmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgRFBNSSBSTUNCcyB1c2luZyB0aGUgRE9TIHN1YnN5c3RlbSwgYW5kIGEgZmV3IG90aGVyCglpbXByb3ZlbWVudHMuIEFsc28sIHNvbWUgc3BlY2lhbC1jYXNlZCBzaG9ydGN1dCBwYXRocyB3aWxsIGFsbG93IHNvbWUKCWNvbW1vbiByZWFsLW1vZGUgY2FsbC9STUNCIGNvbWJpbmF0aW9ucyB0byB3b3JrIGV2ZW4gd2l0aG91dCBjYWxsaW5nIHRoZQoJRE9TIHN1YnN5c3RlbSwgdGh1cyBsZXR0aW5nIEFQSXMgbGlrZSBET1NBU1BJIHdvcmsgd2l0aG91dCBhbnkgZGlydHkgaGFja3MKCWV2ZW4gb24gcGxhdGZvcm1zIHRoYXQgY2Fubm90IHVzZSBkb3Ntb2QuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYywgb2xlL2NvbXBvYmouYywgZmlsZXMvY2hhbmdlLmMsIGxvYWRlci9tb2R1bGUuYywgbWlzYy9semV4cGFuZC5jLCBtaXNjL21haW4uYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSB1bm5lY2Vzc2FyeSAjaW5jbHVkZSBhbmQgbWVzc2FnZXMgcmVtb3ZlZC4KCgkqIG9sZS9vbGUybmxzLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNvbWUgc21hbGwgY29ycmVjdGlvbnMgdG8gRW51bVN5c3RlbUxvY2FsZXMzMkFXCgpUdWUgRGVjICA4IDE1OjA2OjM5IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS90c194Zjg2dm1vZGUuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCVRyaWVkIGFub3RoZXIga2x1ZGdlIGZvciB0aGUgWG1kLmggcHJvYmxlbS4KCgkqIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzOgoJU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglBZGRlZCBmdWxsc2NyZWVuIERHQSBzdXBwb3J0LgoKCSogbWlzYy9tYWluLmM6IFBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJRml4ZWQgZHVtbXkgZW50cmllcyBpbiBNQUlOX1BhcnNlTGFuZ3VhZ2VPcHRpb24oKS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgbXVsdGltZWRpYS9tY2ljZGEuYzoKCUJyaWFuIEdlcnN0IDxiZ2Vyc3RAcXVhcmsudnBwbHVzLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBNQ0lfQ0RBX1NUQVRVU19UWVBFX1RSQUNLLgoJRml4IGFuIG9mZi1ieS1vbmUgYnVnIHdpdGggTUNJX1NUQVRVU19MRU5HVEguCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN1cGVyZmxvdXMgV0lOQVBJIHJlbW92ZWQuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXYXJuIGFib3V0IGludmFsaWQgZW50cnlwb2ludHMgKGNyZWF0ZWQgYnkgdmlydXNlcykgd2hpY2ggcmVzdWx0IGluCglXaW5lIGNyYXNoZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZSBYMTEgcGFsZXR0ZSBvbiBEaXJlY3REcmF3U3VyZmFjZTo6U2V0UGFsZXR0ZSwgbm90IGJlZm9yZSAod2UKCW1pZ2h0IG5vdCBoYXZlIGFuIFgxMSB3aW5kb3cgeWV0KS4KCgkqIGxvYWRlci9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW92ZSBUV0VBS19Jbml0IGZyb20gVVNFUiB0byBHRElJbml0LgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaCwgbWlzYy9wcmludGRydi5jLCBtaXNjL3Nwb29sZXIuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggZm9yIFNldEFib3J0UHJvYzE2LCBzdHViIGZvciBTZXRBYm9ydFByb2MzMiBhbmQgdGlkeSB1cCBzb21lIG90aGVyCglwcmludGluZyBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2ZvY3VzLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IGluY2x1ZGVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IFgxMURSVl9FeHRUZXh0T3V0IGZvciByb3RhdGVkIHRleHQgaWYgZWl0aGVyIG9mIGxwRHgsIGJyZWFrRXh0cmEKCW9yIGNoYXJFeHRyYSBhcmUgbm9uLXplcm8uCgoJKiBpbmNsdWRlL0F0dGljL2dyYXBoaWNzLmgsIG1pc2Mvc2hlbGwuYywgd2luZG93cy9BdHRpYy9ncmFwaGljcy5jLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3Njcm9sbC5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVJlcGxhY2UgR1JBUEhfIGZ1bmN0aW9ucyB3aXRoIFdpbiBTREsgZXF1aXZhbGVudHMuCgpNb24gRGVjICA3IDE2OjIzOjQyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kb3NfZnMuYzogQWxleGFuZGVyIExhcnNzb24gPGFsbGFAbHlzYXRvci5saXUuc2U+CglSZXZlcnRlZCBwcmV2aW91cyBwYXRjaC4KCgkqIGluY2x1ZGUvZG9zZXhlLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRG9uJ3QgZGVmaW5lIE1aX1NVUFBPUlRFRCBvbiBub24taTM4NiBwbGF0Zm9ybXMuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgRFBNSV9DYWxsUk1Qcm9jIChJIHRoaW5rKS4KCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViIGZvciBOUFNHZXRQcm92aWRlckhhbmRsZUEuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBCcmlhbiBHZXJzdCA8YmdlcnN0QHF1YXJrLnZwcGx1cy5jb20+CglUaGUgc2NhbmNvZGUgV2luZG93cyBzZW5kIGZvciBleHRlbmRlZCBrZXlzIGlzIHRoZSBzY2FuY29kZSBvZiB0aGUKCXVuZXh0ZW5kZWQgZXF1aXZhbGVudCBvZiB0aGUga2V5LCBwbHVzIHRoZSBleHRlbmRlZCBmbGFnLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYSByZWFsIG1vZGUgcHJvYmxlbS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU5FX01PRFVMRS5zdGFja19zaXplIHdhcyBzZXQgdG8gYSByaWRpY3Vsb3VzbHkgc21hbGwgdmFsdWUgb2YgNS4KCVdpbmRvd3Mgc2V0cyAweDE0MDAgaW4gc3VjaCBjYXNlcyBmb3IgcHJvZ3JhbXMuCgoJKiBjb250cm9scy9zdGF0aWMuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglXZSBkb24ndCB5ZXQgd2FudCB0aGUgc3RhdGljIGNvbnRyb2wgdG8gY2FsbCBEZXN0cm95SWNvbi4KCgkqIHdpbmRvd3MvY2xhc3MuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglBZGRlZCBjYXNlIGZvciBHQ1dfQVRPTSBpbnQgR2V0Q2xhc3NMb25nMzJBLgoKCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6IEdhZWwgZGUgQ2hhbGVuZGFyIDxnYWVsQGxpbXNpLmZyPgoJU3R1YiBmb3IgV05ldE9wZW5FbnVtMzJXLgoKCSogbXVsdGltZWRpYS9kc291bmQuYywgcmVsYXkzMi9kc291bmQuc3BlYzoKCVJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglNb3JlIGdlbmVyYWwgY29kZSBjbGVhbnVwIGZvciByZWFkYWJpbGl0eS4KCUEgZmV3IG1vcmUgcGFyYW1ldGVyIHZhbGlkYXRpb24gY2hlY2tzLgoJUmV0dXJuIERTX09LIHJhdGhlciB0aGFuIDAgaW4gYSBudW1iZXIgb2YgZnVuY3Rpb25zLgoJRml4ZWQgcHJpbWFyeSBidWZmZXIgcmVmIGNvdW50IGJ1ZyBpbiBDcmVhdGVTb3VuZEJ1ZmZlcigpLgoJSGFuZGxlIDEtMyBieXRlIHNvdW5kIGZyYWdtZW50cyB0aGF0IHdvdWxkIGNhdXNlIGJ1ZmZlciBvdmVycnVucy4KCUNsZWFyIHByaW1hcnkgYnVmZmVyIHdpdGggYSBuZXV0cmFsIHZhbHVlIGluc3RlYWQgb2YgYWx3YXlzIDAKCShiZWNhdXNlIDEyOCBpcyBuZXV0cmFsIGZvciA4LWJpdCBzb3VuZCkuCglGaXggYnVnIHdpdGggbWl4aW5nIDgtYml0IHNvdW5kIGludG8gdGhlIHByaW1hcnkgYnVmZmVyLgoJQnJva2Ugb3V0IHRoZSBtYWluIGJsb2NrIGluIERTT1VORF90aHJlYWQoKSB0byBhbm90aGVyIGZ1bmN0aW9uIGZvcgoJcmVhZGFiaWxpdHkuCglIYW5kbGUgIm5vIGF1ZGlvIiBhbmQgImF1ZGlvIGJ1c3kiIGNhc2VzIHByb3Blcmx5IHdoZW4gaW5pdGlhbGl6aW5nCglkc291bmQuIFJlbmFtZSBEbGxDYW5VbmxvYWROb3coKSB0byBEU09VTkRfRGxsQ2FuVW5sb2FkTm93KCkuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSB2YXJpYWJsZXMgb3B0aW1pemVkIGludG8gcmVnaXN0ZXJzIGFjY2Vzc2libGUuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVGhlIHNwZWMgZGVmaW5pdGlvbiBmb3IgTW9uaXRvckZyb21XaW5kb3cgd2FzIHdyb25nLgoKCSogbXNkb3MvaW50MjEuYzogU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglGaWxlIGhhbmRsZSBidWcgZml4LgoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBwYXJhZ3JhcGggYWJvdXQgZGlmZmVyZW50IGRsbCB2ZXJzaW9ucyBhbmQgc3RydWN0dXJlIHNpemVzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgbWlzc2luZyBUT09MSU5GTyBzdHJ1Y3R1cmUuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIGEgaGVhcCBidWcuCgoJKiBsb2FkZXIvdGFzay5jLCBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvY2FsbGJhY2suYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQ0MS5jLCBtc2Rvcy92eGQuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2xkdC5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gU2V2ZXJhbCBrZXJuZWwuc3BlYyByZXR1cm4gdHlwZSBtaXNtYXRjaCBmaXhlcwoJLSBbR1NdZXRTZWxlY3RvckJhc2UgV2luMzJzIG9mZnNldCBzdXBwb3J0IGJ5IFVscmljaCBXZWlnYW5kICh0aGFua3Mgdi5tLiAhISkKCS0gTW92ZSBBcHBUb1dpbmUvV2luZVRvQXBwIG1hY3JvcyBhcyBXMzJTX0FQUDJXSU5FIGV0Yy4gdG8gbGR0LmgKCS0gTG9jYWxOb3RpZnkoKSBiYXNpYyBzdXBwb3J0CgktIEZpeGVzIGZvciBsb2NhbCBoZWFwIGhhbmRsaW5nIHdpdGggaGVhcCBoYW5kbGVzIGNyZWF0ZWQgYnkgVmlydHVhbCooKQoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogLW1pY3Jvc29mdC1zeW1ib2wgZW5jb2Rpbmcgd2FzIG5vdCByZWNvZ25pemVkLgoKCSogd2luZG93cy93aW4uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFdJTl9SZXNldFF1ZXVlV2luZG93cyB3b3VsZCBza2lwIHNvbWUgd2luZG93cy4KCgkqIHRvb2xzL2J1aWxkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgcmVjdXJzaXZlbHkgcmVlbnRlcmluZyBDQUxMMzJfTGFyZ2VTdGFjay4KCgkqIGluY2x1ZGUvdHR5ZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2Ly5jdnNpZ25vcmUsIHdpbmRvd3MvdHR5ZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9tb3VzZS5jLCB3aW5kb3dzL3R0eWRydi93bmQuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCB0aGUgbmV3IFRUWSBkcml2ZXIuCgoJKiBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgbW9yZSBjb2RlIHRvIHRoZSBYMTEgZHJpdmVyLgoKVGh1IERlYyAgMyAxNjoyOTo1NiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MTYuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjkuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQ2FsbCB0aGUgbmV3IGNvbnNvbGUgZHJpdmVyIGZvciBzb21lIHJvdXRpbmVzLiBUaGlzIGlzIG5vdCBjb21wbGV0ZWx5Cglkb25lIHlldCBhbmQgbW9yZSBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KCldlZCBEZWMgIDIgMTk6NTg6MDkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uc29sZS8uY3ZzaWdub3JlLCBjb25zb2xlL01ha2VmaWxlLmluLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUvdHR5LmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9jb25zb2xlLmgsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZGVkIGNvbnNvbGUgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgbG9hZGVyL21haW4uYywgb2JqZWN0cy9BdHRpYy9vZW1iaXRtYXAuYywgb2JqZWN0cy9NYWtlZmlsZS5pbiwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3Blbi5jLCBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vdmUgT0VNIHJlc291cmNlcyB0byB0aGUgeDExZHJ2LgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFsZXhhbmRlciBMYXJzc29uIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoJT3BlbmluZyBhIGZpbGUgaW4gYSBkaXJlY3Rvcnkgd2hpY2ggZG9lc24ndCBleGlzdCByZXR1cm5zCglFUlJPUl9GSUxFX05PVF9GT1VORCBpbnN0ZWFkIG9mIEVSUk9SX1BBVEhfTk9UX0ZPVU5ELgoKCSogbWVtb3J5L2F0b20uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgYXRvbXMgIiMgbm9uIG51bWJlciIgKG9yYWNsZSBjbGllbnQpLgoKVHVlIERlYyAgMSAxNjoyMzoxOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBtaXNjL2Vycm9yLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbmFtZWQgS0VSTkVMLjMyNyB0byBIYW5kbGVQYXJhbUVycm9yIChhcyBpbiAnVW5kb2MuIFdpbmRvd3MnKS4KCUZpeGVkIHdyb25nIG9yZGluYWxzL3Byb3RvdHlwZSBmb3IgTWFwUHJvY2Vzc0hhbmRsZS9HZXRNb2R1bGVGaWxlTmFtZTMyLgoJQWRkZWQgbmFtZXMgZm9yIHNvbWUgdW5kb2N1bWVudGVkIGV4cG9ydHMuCgoJKiBtZW1vcnkvZ2xvYmFsLmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBHbG9iYWxDaGFuZ2VMb2NrQ291bnQgKEtFUk5FTC4zNjUpLgoKCSogaWYxNjMyL3Rvb2xoZWxwLnNwZWMsIGluY2x1ZGUvdG9vbGhlbHAuaCwgbWVtb3J5L2hlYXAuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgTG9jYWwzMkluZm8sIHN0dWJzIGZvciBMb2NhbDMyRmlyc3QvTmV4dCAoS0VSTkVMLjQ0NC00NDYpLgoKCSogaWYxNjMyL2dkaS5zcGVjLCBvYmplY3RzL2dkaW9iai5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBHZGlGcmVlUmVzb3VyY2VzIChHREkuNjA5KS4KCgkqIGluY2x1ZGUvZHNvdW5kLmgsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJRml4ZWQgOC1iaXQgV0FWIGZvcm1hdCBoYW5kbGluZyAoaXQgaXMgdW5zaWduZWQgZGF0YSkuCglGaXhlZCBvZmYtYnktb25lIGNoZWNrcyBmb3IgYnVmZmVyIHdyYXAuCglJbmNyZW1lbnQgcmVmIGNvdW50IGZvciBwcmltYXJ5IGJ1ZmZlciBpbiBDcmVhdGVTb3VuZEJ1ZmZlcigpLgoJQWRkZWQgRFNCUE5fT0ZGU0VUU1RPUCBzdXBwb3J0IHRvIHBvc2l0aW9uIG5vdGlmaWNhdGlvbiBjb2RlLgoJTG90cyBvZiBtaW5vciBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBjaGVja3MuCglTdHVicyBmb3I6IElEaXJlY3RTb3VuZF9pbml0aWFsaXplKCksIElEaXJlY3RTb3VuZF9Db21wYWN0KCksCglhbmQgSURpcmVjdFNvdW5kX0dldFNwZWFrZXJDb25maWcoKS4KCUZpeGVkIGZyZXEgc2hpZnRpbmcgd2l0aCAxNi1iaXQgZGF0YSBwcm9ibGVtLCBmaXhlZCA4Yml0PC0+MTZiaXQKCWNvbnZlcnNpb24uCglMb3RzIG9mIHRocmVhZCBsb2NraW5nIGZvciBEaXJlY3RTb3VuZCBidWZmZXJzLgoJRGVhbGxvYyBwcmltYXJ5IGJ1ZmZlciB3aGVuIGRzb3VuZCBpcyBkZWFsbG9jYXRlZC4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHRoZSBURVhUKCkgYW5kIE1BS0VMUkVTVUxUKCkgZGVmaW5pdGlvbnMuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgY2hhbmdlLgoKCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVJldmVydCBtaXNndWlkZWQgY2hhbmdlIHRvIGluc3RhbGxfbGliIHRoYXQgYnJva2UgLWRpc2FibGUtbGliCgljb25maWd1cmUgb3B0aW9uLgoKCSogbWlzYy9tYWluLmMsIGluY2x1ZGUvd2luZG93cy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgcGFyYW1ldGVyIFNQSV9HRVREUkFHRlVMTFdJTkRPVy4KCU9uZSBtaXNzaW5nIGJyZWFrIGluIFNQSV9HRVREUkFHRlVMTFdJTkRPVy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZnVuY3Rpb25zIElMR2xvYmFsQ2xvbmUvSUxHbG9iYWxGcmVlLgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkIGEgbm90ZSBhYm91dCBXaW5QcmludGVycy4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYywgcmVsYXkzMi9vbGUzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIHN0dWJzLCBzb21lIHB0ci0+c3RyIGNvbnZlcnNpb25zLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oLCByZWxheTMyL2RkcmF3LnNwZWM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgZGVmaW5pdGlvbiBvZiBEaXJlY3REcmF3Q3JlYXRlQ2xpcHBlci4KCS0gbW9yZSB2ZXJzYXRpbGUgc3VwcG9ydCBvZiBzdXJmYWNlcyAvIGJldHRlciBzdXJmYWNlIGRlc2NyaXB0aW9uIHN1cHBvcnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGVsbC5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgd3JvbmcgcGFyYW1ldGVyIGNvdW50IGZvciBTSENoYW5nZU5vdGlmeURlcmVnaXN0ZXIsICBTSEZyZWVVbnVzZWRMaWJyYXJpZXMuCglOZXcgZnVuY3Rpb25zIFBhcnNlRmllbGQsIEdldC9TZXRJbnN0YW5jZUV4cGxvcmVyKCksIFBhdGhJc1VOQywgUGF0aElzUmVsYXRpdmUuCglTdHVicyBTSFdhaXRGb3JGaWxlVG9PcGVuLCBQYXRoRmluZE9uUGF0aC4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgY2hhbmdlcyB0byBwcmludCB0aGUgc3RyaW5ncyBpbiB0aGUgcmVsYXktdHJhY2UuCgoJKiB3aW5kb3dzL2NsYXNzLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJVGhlIGNsYXNzIG5hbWUgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIGEgZ2V0cHRyLgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbWVtb3J5L3N0YXR1cyByZWNvdmVyeSB3aGVuIGVycm9yIG9jY3VyZWQgaW4gTUlESV9tY2lPcGVuLgoJRml4ZWQgc3VwcG9ydCBmb3IgUk1JRCBmaWxlcyBpbiBNSURJX21jaU9wZW4uCglGaXhlZCBidWcgZm9yIHBsYXlpbmcgTUlESSBmaWxlcyB3aXRoIHRlbXBvIGNoYW5nZXMuIFNvdW5kIG91dHB1dCBpcwoJbm93IGNvcnJlY3QsIGJ1dCBsZW5ndGggb2YgdHJhY2tzIChhbmQgdGhlcmVmb3JlIG9mIHdob2xlIGZpbGUpIGlzIG5vdAoJY29ycmVjdC4KCUNoYW5nZWQgZXJyb3IgdmFsdWVzIChJTlRFUk5BTCA9PiBJTlZBTElEX0ZJTEUpIHdoZW4gZmlsZSBjYW5ub3QgYmUgcmVhZC4KCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1lbW9yeS9zdGF0dXMgcmVjb3Zlcnkgd2hlbiBlcnJvciBvY2N1cmVkIGluIFdBVkVfbWNpT3Blbi4KCUNoYW5nZWQgZXJyb3IgdmFsdWVzIChJTlRFUk5BTCA9PiBJTlZBTElEX0ZJTEUpIHdoZW4gZmlsZSBjYW5ub3QKCWJlIHJlYWQuCgoJKiBtdWx0aW1lZGlhL21zdmlkZW8uYywgcmVsYXkzMi9tc3ZmdzMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWJzIGZvciBNQ0lXbmRDcmVhdGVbQXxXXS4KCgkqIG1pc2MvdmVyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJVmVyUXVlcnlWYWx1ZSwgYnVnZml4OiB3ZSBjYW50IGNvbnZlcnQgYmluYXJ5IGRhdGEgd2l0aAoJSEVBUF9zdHJkdXBXdG9BIChcVmFyRmlsZUluZm9cVHJhbnNsYXRpb24pLgoKTW9uIE5vdiAzMCAxNzo0MToxNyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9hZHZhcGkzMi5zcGVjLCB3aW4zMi9hZHZhcGkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YnMgZm9yIEVudW1TZXJ2aWNlU3RhdHVzMzIsIHNtYWxsIGNoYW5nZXMuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglMb2FkIG5vdyB0aGUgZmlyc3QgaWNvbiBmcm9tIHRoZSAqLmFuaSBmaWxlIGluc3RlYWQgb2YgY3Jhc2hpbmcuCgoJKiBtaXNjZW11L21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXggd2FybmluZ3MgaW4gbWlzY2VtdS9tYWluLmMuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCS0gYWRkZWQgc29tZSBkZWZpbmVzIGFyb3VuZCB0aGUgQ29tbVBvcnQgKFBVUkdFX1hYWCBhbmQgTVNfWFhYX09OKQoJLSBhZGRlZCB0aGUgRExHVEVNUExBVEUgYW5kIERMR0lURU1URU1QTEFURSBzdHJ1Y3R1cmVzCgktIGFkZGVkIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGZvciBTdGFydFBhZ2UsRW5kUGFnZSxHZXRDb21tTWFzaywKCQlHZXRDb21tTW9kZW1TdGF0dXMgYW5kIFB1cmdDb21tLFdhaXRDb21tRXZlbnQuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBQYXVsIFF1aW5uIDxQYXVsUUBjb3JlbC5jb20+CglGaXhlZCBhY3RpdmF0aW9uL0ZvY3VzIG1lc3NhZ2Ugb3JkZXIgcHJvYmxlbSB3aGVuIGNyZWF0aW5nIGEgbmV3IEhXTkQuCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaCwgcmVsYXkzMi91c2VyMzIuc3BlYzoKCVBhdWwgUXVpbm4gPFBhdWxRQGNvcmVsLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIENoaWxkV2luZG93RnJvbVBvaW50RXggZnVuY3Rpb25zLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+CglGaXhlZCByZWdpc3RyeSBxdWVyeSBlcnJvciB2YWx1ZTogbm93IHJldHVybnMgRVJST1JfRklMRV9OT1RfRk9VTkQuCgoJKiBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9wYWxldHRlLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUdldFN5c3RlbVBhbGV0dGVFbnRyaWVzIHJldHVybnMgcGFsZXR0ZSBzaXplIGlmIGVudHJpZXM9PU5VTEwuCglVc2UgdGhpcyBpbnN0ZWFkIG9mIENPTE9SX0dldFN5c3RlbVBhbGV0dGVTaXplLgoKCSogcmVsYXkzMi9kc291bmQuc3BlYywgbXVsdGltZWRpYS9kc291bmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgY2xhc3MgZmFjdG9yeSBmb3IgZHNvdW5kLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBtaXNjL2NvbW0uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCS0gZml4ZWQgYSBtaW5pbWFsIGVycm9yIGluIEdldENvbW1NYXNrIGRlZmluaXRpb24uCgktIGFkZHMgc3R1YnMgZm9yIEdldENvbW1Nb2RlbVN0YXR1cyBhbmQgV2FpdENvbW1FdmVudC4KCgkqIGluY2x1ZGUveG1hbGxvYy5oLCBsaWJyYXJ5L3dpbmVzdHViLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlcyBmb3IgQysrIFdpbmVsaWIgY29tcGlsYXRpb24uCgoJKiBvbGUvY29tcG9iai5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUJ1Z2ZpeDogc2Vjb25kIFJlZ09wZW5LZXkgc2hvdWxkIHVzZSBDTFNJRGtleSBpbnN0ZWFkIG9mIEhLRVlfQ0xBU1NFU19ST09ULgoKRnJpIE5vdiAyNyAxNjowNjowOCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQlVHUywgZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZywgZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUZpeGVkICdtYWtlIGluc3RhbGwnIHRvIHJlYWxseSBjaGVjayBmb3IgbGlid2luZS5hIGJlZm9yZSBpbnN0YWxsaW5nCglpdC4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYzoKCVN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJQWRkZWQgYSBuZXcgY21kbGluZSBzd2l0Y2ggdG8gZGlzYWJsZSBYRjg2IERHQSBFeHRlbnNpb25zLCAtbm9kZ2EuCgoJKiBmaWxlcy9kcml2ZS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglJbXByb3ZlZCBHZXREaXNrRnJlZVNwYWNlMzJBKCkuCgpUaHUgTm92IDI2IDE2OjMyOjAwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbi5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVJlbW92ZSBpbmNsdWRlZCBjb2xvci5oLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IGNoZWNrIGZvciBlbnRyeXBvaW50IGFkZHJlc3MgKHRlc3QgYmluYXJ5IHdhcwoJaW5mZWN0ZWQgYnkgYSB2aXJ1cyB3aGljaCB1c2VzIGludmFsaWQgUEUgbG9hZGluZyBzdHVmZikuCgoJKiBncmFwaGljcy9wYWludGluZy5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdHVicyBmb3IgU3RhcnRwYWdlIGFuZCBFbmRQYWdlLgoKCSogaWYxNjMyL3RodW5rLmMsIG9iamVjdHMvZGMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IEZJWE1FIG91dHB1dHMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEtFUk5FTC42MDIgYW5kIHN0dWIgZm9yIEtFUk5FTC40OTAuCgoJKiBvbGUvb2xlMm5scy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRG8gKm5vdCogemVybyBvdXQgb3V0cHV0IGJ1ZmZlciBpbiBHZXROdW1iZXJGb3JtYXQzMltBV10uCgpXZWQgTm92IDI1IDE4OjE1OjUzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvbmxzL2dyYy5ubHMsIG9sZS9ubHMvc2t5Lm5scywgb2xlL25scy90aGEubmxzLCBvbGUvbmxzL3Ryay5ubHMsIG9sZS9vbGUybmxzLmM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCVNtYWxsIGZpeGVzLgoKCSogbG9hZGVyL25lL3Jlc291cmNlLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCAuLi5SZXNvdXJjZTE2IHJvdXRpbmVzIHRvIGxvYWRlci9yZXNvdXJjZS5jLgoJSW1wbGVtZW50ZWQgYWNjZXNzaW5nIFBFLWZpbGUgcmVzb3VyY2VzIHdpdGggMTYtYml0IHJlc291cmNlIHJvdXRpbmVzLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBsb2FkZXIvbmUvTWFrZWZpbGUuaW4sIGxvYWRlci9uZS9jb252ZXJ0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGF0aW9uIG9mIFBFLT5ORSByZXNvdXJjZSBjb252ZXJzaW9uIHJvdXRpbmVzIChLRVJORUwuNjE1LTYxOCkuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgb2xlL29sZTJkaXNwLmMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIDMgbWV0aG9kczogU3lzQWxsb2NTdHJpbmdMZW4oKSwgU3lzUmVBbGxvY1N0cmluZ0xlbigpCglhbmQgU3lzU3RyaW5nTGVuKCkuIEVuc3VyZSB0aGF0IHRoZSBCU1RSIG9iamVjdHMgd2VyZSBhbGxvY2F0ZWQKCWFjY29yZGluZyB0byB0aGUgV2luZG93cyBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hlbGwuaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vdmVkIGV4aXN0aW5nIHBhdGggLSBmdW5jdGlvbnMgdG8gc2hlbGxwYXRjaC5jLgoJTmV3OiBQYXRoUmVtb3ZlQmxhbmtzMzJBfFcsICBQYXRoTWF0Y2hTcGVjMzJBfFcsCglQYXRoU2V0RGxnSXRlbVBhdGgzMkF8Vy4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vdmVkIGV4aXN0aW5nIElTaGVsbExpbmsgY2xhc3MuIE5ldyBzdHVicyBmb3IgSVNoZWxsTGlua1cuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL2NvbG9yLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIGluY2x1ZGUveDExZm9udC5oLCBtaXNjL21haW4uYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jb2xvci5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3MvQXR0aWMvZ3JhcGhpY3MuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3VzZXIuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3Mvd2luZy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglSZW1vdmUgWF9EQ19JTkZPIGZyb20gREMgYW5kIG1ha2UgaXQgYmVoYXZlIGxpa2UgYW55IG90aGVyIFBERVZJQ0UuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy94bXMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hhbmdlZCBDVFhfU0VHX09GRl9UT19MSU4gdG8gYWxsb3cgbGluZWFyIGFkZHJlc3NlcyBpbiAzMi1iaXQKCXJlZ2lzdGVycyAodXNlZCBieSBEZXZpY2VJb0NvbnRyb2wpLiBBZGFwdGVkIGFsbCB1c2Vycy4KCgkqIGluY2x1ZGUvd2luaW9jdGwuaCwgd2luMzIvZGV2aWNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIChtb3N0KSBWV2luMzIuVnhEIERldmljZUlvQ29udHJvbCByb3V0aW5lcy4KClR1ZSBOb3YgMjQgMjA6NDc6MTcgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBTZXQgdGhlIFRFQkZfV0lOMzIgZmxhZyBpbiB0ZWIuZmxhZ3MgZm9yIDMyLWJpdCB0aHJlYWRzLgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IENhbGwgSW5pdFRocmVhZElucHV0IGluIEdldEZhc3RRdWV1ZSB3aXRoIGNvcnJlY3QgcGFyYW1ldGVyCglmb3IgMzItYml0IHF1ZXVlcy4KCgkqIHdpbjMyL2tlcm5lbDMyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBbUUZdVF9UaHVuayBzaG91bGQgY2xlYXIgSElXT1JEKEVBWCkgb24gcmV0dXJuLgoJQnVnZml4OiBoYWNrIGZvciBzdHVwaWQgVVNFUjMyIENhbGxiYWNrR2x1ZUxTIHJvdXRpbmUgaW4gQ29tbW9uMzJUaGtMUy4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQmFkIGp1bXAgZ2VuZXJhdGVkIGluIFRIVU5LX0FsbG9jTFNUaHVua2xldC4KCUJ1Z2ZpeDogRm9yZ290IHRvIGNvbnZlcnQgc2VncHRyIGluIEFsbG9jTFNUaHVua2xldENhbGxiYWNrRXguCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogRXJpYyBXYXJua2UgPGVyaWNAc25vd21vb24uY29tPgoJRG9uJ3QgbWF0Y2ggYWdhaW5zdCBTeW1ib2wgb3IgTmlsIGZvbnRzLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCVJldHVybiB0aGUgImJ1ZmZlcnMiIGFuZCAiY2FjaGVkIiBtZW1vcnkgYXMgZnJlZSBzaW5jZSBpdCBpcwoJZGVhbGxvY2F0ZWQgd2hlbiBhIHByb2dyYW0gbmVlZHMgaXQgYW55d2F5LgoKCSogd2luZG93cy9kaWFsb2cuYywgaW5jbHVkZS93aW5kb3dzLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1Z2ZpeDogU2V0RGxnSXRlbVRleHQzMiByZXR1cm5zIEJPT0wgbm90IHZvaWQuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzIEdldFVzZXJPYmplY3RJbmZvcm1hdGlvbkF8Vy4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIGxlZnQgb3ZlciAnc2hvdycgYW5kIHVzZWxlc3MgZGVhZGJlZWYgY2hlY2tpbmcgd2hpY2ggZG9lc24ndAoJd29yay4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkanVzdCBicm9rZW4gZW50cnlwb2ludCBhZGRyZXNzZXMuICh3aW45OCBub3RlcGFkLmV4ZSkKCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWE6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCBhY2NvcmRpbmcgdG8gZGV2ZWxvcG1lbnQuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTb21lIG5ldyBzdHVicyAobWlkaVN0cmVhbVhYWCBmdW5jdGlvbnMsIHNvbWUgbWNpIGZ1bmN0aW9ucywgYW5kCglzb21lIG1taW8gZnVuY3Rpb25zKS4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIE1DSSBwYXJ0IHRvIG1jaW1pZGkuYyA7IGFkZGVkIERyaXZlclByb2MuCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgTUNJIHBhcnQgdG8gbWNpd2F2ZS5jIDsgYWRkZWQgc29tZSBlcnJvciBjaGVja2luZyA7IGFkZGVkCglEcml2ZXJQcm9jCgoJKiBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1jaW1pZGkgYW5kIG1jaXdhdmUuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWcgaW4gTUNJX0lORk8gY29tbWFuZCA7IGZpeGVkIHBhdXNlL3Jlc3VtZSBjb21tYW5kcyA7IGZpeGVkCglzZWVrIGNvbW1hbmQuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGluZyB3cml0aW5nIE1DSSBwYXJ0IDsgZml4ZWQgYnVnIGluIE1DSV9JTkZPIGNvbW1hbmQuCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG1pc3Npbmcgc3R1YnMgaW4gMzIgYml0IHBhcnQuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgdXNlIG9mIG5ldyAxNi8zMiBNQ0kgbWVzc2FnZSBoYW5kbGluZyBpbiBtbXN5c3RlbS5jLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBuZXcgZnVuY3Rpb25zL3N0cnVjdHVyZXMgZGVmaW5pdGlvbnMuKEkgY291bGRuJ3QgZ2V0IGFsbAoJdGhlIG1hbmlmZXN0IGNvbnN0YW50cyB2YWx1ZXMgdGhhdCBNUyB3YXMgcmVmZXJyaW5nIHRvIGluIGl0cyBzcGVjcy4uLgoJaWYgc29tZW9uZSBoYXMgdGhlbS4uLikKCgkqIG11bHRpbWVkaWEvbWNpYW5pbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgZXJyb3IgY2hlY2tpbmcgOyBtYWRlIHVzZSBvZiBuZXcgMTYvMzIgTUNJIG1lc3NhZ2UgaGFuZGxpbmcKCWluIG1tc3lzdGVtLmMgOyBmaXhlZCBidWcgaW4gTUNJX0lORk8gY29tbWFuZC4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBlcnJvciBjaGVja2luZyA7IG1hZGUgdXNlIG9mIG5ldyAxNi8zMiBNQ0kgbWVzc2FnZQoJaGFuZGxpbmcgaW4gbW1zeXN0ZW0uYy4KCUFkZGVkIFdpbjk1IGNvbW1hbmQgdG8gaGFuZGxlIGNkLXJvbSB3aXRoIGJvdGggZGF0YSBhbmQgYXVkaW8gOyBmaXhlZAoJYnVnIGluIE1DSV9JTkZPIGNvbW1hbmQgOyBzaGFkb3dpbmcgTUNJIHN0YXR1cyBmb3IgZGV2aWNlcyB0aGF0IGNhbid0CglnZXQgY3VycmVudCBzdGF0dXMgOyBmaXhlZCBzdGF0dXMgbm90IGJlaW5nIHVwZGF0ZWQgb24gY2QgY2hhbmdlLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZhY3Rvcml6ZWQgMTYvMzIgYml0IE1DSSBmdW5jdGlvbiBieSB1c2luZyAgbWVzc2FnZSBtYXBwaW5nIGZyb20gMTYKCXRvIDMyIGJpdHMgOyBhZGRlZCBzb21lIG5ldyBwcm90b3R5cGVzIG1jaVNlbmRDb21tYW5kLCBtY2lTZW5kU3RyaW5nLAoJbWNpKFNldC9HZXQpWWllbGRQcm9jIDsgc3RhcnRlZCB3cml0aW5nIG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zIC0gbm90Cgl5ZXQgd29ya2luZy4gRml4ZWQgc29tZSBpc3N1ZXMgcmVnYXJkaW5nIGFzeW5jaHJvbm91cyBNQ0kgY29tbWFuZHMgOwoJZml4ZWQgTUNJX1NZU0lORk8gY29tbWFuZC4KCgkqIHJlc291cmNlcy9zeXNyZXNfRnIucmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBxdWlya3MuCgpTdW4gTm92IDIyIDE4OjI5OjUwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hbnkgZml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmdW5jdGlvbjogX0lMR2V0RXh0ZW5zaW9uLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZS4gSEtFWV9DTEFTU0VTX1JPT1QgaGFuZGxpbmcuCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVVwZGF0ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2hlYWRlci5oLCBpbmNsdWRlL2xpc3R2aWV3LmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3JlYmFyLmgsIGluY2x1ZGUvc3RhdHVzLmgsIGluY2x1ZGUvdG9vbGJhci5oLCBpbmNsdWRlL3Rvb2x0aXBzLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgVW5pY29kZSBzdXBwb3J0IChhdCBsZWFzdCBwYXJ0aWFsbHkpLgoKCSogb2xlL01ha2VmaWxlLmluLCBvbGUvY29tcG9iai5jLCBvbGUvb2xlb2JqLmMsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgSU9sZUFkdmlzZUhvbGVyIGludGVyZmFjZSAoc3RpbGwgYSBkdW1teSkgYW5kIGZpeGVkCglDcmVhdGVPbGVBZHZpc2VIb2xkZXIoKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIGdsb2JhbCBzdWJjbGFzc2luZyBhdG9tLCB1c2VkIGJ5IHRvb2x0aXBzIGFuZCB1cGRvd24gKG5vdCB5ZXQpLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgbGF5b3V0IGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCByZWxheTMyL2NvbWN0bDMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgSW1hZ2VMaXN0X0xvYWRJbWFnZSgpLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBDTUVNX1NFVElURU0zMkEgYW5kIG1lc3NhZ2UgZm9yd2FyZGluZyB0byBjb21ib2JveC4KCgkqIG9sZS9tb25pa2VyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdHViIGZvciBDcmVhdGVJdGVtTW9uaWtlcigpLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBzb21lIHVuZG9jdW1lbnRlZCBmdW5jdGlvbiBuYW1lcyBhbmQgaW1wbGVtZW50ZWQgRFBBX01lcmdlCglwYXJ0aWFsbHkuCgoJKiBjb250cm9scy9idXR0b24uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUVuYWJsZWQgZG91YmxlIGNsaWNrIGZvciBidXR0b25zLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBjb21tYW5kIGFuZCByZXR1cm4gY29uc3RhbnRzIHVzZWQgYnkgV01fTk9USUZZRk9STUFULgoKCSogb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvcGVuLmMsIHdpbmRvd3MvQXR0aWMvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBpbmNsdWRlL2RjLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vdmVkIERDX1NldHVwR0MgZnVuY3Rpb25zIHRvIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLgoKCSogaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcyB0byBnZXQgdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgdG8gYSBzZW5zaWJsZSB2YWx1ZS4KCVRoYW5rcyB0byBQYWJsby4KCgkqIEFOTk9VTkNFLCBERVZFTE9QRVJTLUhJTlRTLCBSRUFETUUsIGRvY3VtZW50YXRpb24vUkVBRE1FLmRvY3VtZW50YXRpb24sIGRvY3VtZW50YXRpb24vaG93LXRvLXBvcnQsIGRvY3VtZW50YXRpb24vd2luZS5tYW4sIGRvY3VtZW50YXRpb24vd2luZS50ZXhpbmZvOgoJRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglNaXNjZWxsYW5lb3VzIHNtYWxsIGZpeGVzLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGlmMTYzMi9nZGkuc3BlYywgaW5jbHVkZS93aW5kb3dzLmgsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9yZWdpb24uYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgV2luMTYgaW1wbGVtZW50YXRpb24gZm9yIEdldFJlZ2lvbkRhdGEoKS4KCgkqIG9sZS90eXBlbGliLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUVuaGFuY2VkIE9BQnVpbGRWZXJzaW9uKCkgdG8gcmV0dXJuIGRpZmZlcmVudCB2ZXJzaW9uIHZhbHVlcyBmb3IKCWRpZmZlcmVudCB3aW52ZXJzLgoKCSogbXNkb3MvaW50MjEuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgSU5UMjFfUGFyc2VGaWxlTmFtZUludG9GQ0IoKSBhbmQgc29tZSBvdGhlciB0aGluZ3MgdG8gZ2V0CglDT01NQU5ELkNPTSB3b3JraW5nLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIG1pc3NpbmcgZW50cnkgZm9yIEdldE51bWJlckZvcm1hdFcuCgoJKiBvYmplY3RzL3BhbGV0dGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGVja2luZyBmb3IgTlVMTC1wb2ludGVyLgoKCSogb2xlL25scy9mcmEubmxzLCBvbGUvbmxzL2ZyYi5ubHMsIG9sZS9ubHMvZnJjLm5scywgb2xlL25scy9mcmwubmxzOgoJUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCUJldHRlciBPTEUgc3VwcG9ydCBpbiBGcmVuY2ggbGFuZ3VhZ2VzLgoKCSogbG9hZGVyL21vZHVsZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGF0aW9uIG9mIENyZWF0ZVByb2Nlc3MzMlcuCgoJKiB3aW5kb3dzL2V2ZW50LmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCVF1ZXVpbmcgb2YgZGVmZXJyZWQgRXhwb3NlIGV2ZW50cy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMQl9HRVRURVhUOiBIYW5kbGUgcGFzc2VkIE5VTEwgYnVmZmVyLgoKCSogY29udHJvbHMvY29tYm8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDQl9HRVRURVhUOiBVc2UgbHBCdWZmZXIgaW5zdGVhZCBvZiBscFRleHQgZm9yIExCX0dFVFRFWFQzMiwgaGFuZGxlIDAKCWJ5dGUgTlVMTCBidWZmZXIuCgoJKiBvbGUvbmxzL2Zycy5ubHMsIG9sZS9ubHMvc2t5Lm5scywgb2xlL29sZTJubHMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHVybiBtZWdhIGRvdWJsZSBzd2l0Y2ggaW50byBzdGF0aWMgdGFibGUgKHJlZHVjZXMgY29tcGlsZSB0aW1lKS4KCgkqIEFVVEhPUlMsIGluY2x1ZGUvYXV0aG9ycy5oOiBBZGRlZCBSb2JlcnQgUmlnZ3MuCgoJKiBpbmNsdWRlL2QzZC5oOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJaW5jbHVkZSBkZHJhdy5oLCBxdWVzdGlvbmFibGUgZml4IGZvciBxdWVzdGlvbmFibGUgc3RydWN0L3VuaW9uCgljb25zdHJ1Y3QgaW4gTVMncyBEM0RWRUNUT1IgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglNb3JlIGZsYWdzIChEaXJlY3RYIDUuMiksIERpcmVjdFNvdW5kM0RMaXN0ZW5lciBhbmQKCURpcmVjdFNvdW5kM0RCdWZmZXIgc3RydWN0dXJlcywgaW5jbHVkZSBzb21lIHJlcXVpcmVkIGZpbGVzCgkod2luZG93cy5oLCBjb21wb2JqLmgsIGFuZCBkM2QuaCkuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJRGlyZWN0U291bmQzRExpc3RlbmVyIGFuZCBEaXJlY3RTb3VuZDNEQnVmZmVyIHN0dWJzLCBuZXcgbWl4ZXIgY29kZSwKCXByaW1hcnkgYnVmZmVyIGlzIGltcGxlbWVudGVkIGNsb3NlciB0byB3aGF0IHRoZSBTREsgZG9jcyBzcGVjaWZ5LAoJb3RoZXIgU0RLIGRvY3VtZW50ZWQgYmVoYXZpb3VyIGVuZm9yY2VkLiBDb21wbGV0ZWQgdGhlIGRldmNhcHMgbGlzdC4KCgkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicyBzdHJkYXRlLCBzdHJ0aW1lLgoKCSogbWVtb3J5L3NlbGVjdG9yLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogdHlwbyBpbiBTVW5NYXBMU19JUF9FQlBfOCBsZWFkIHRvIHN0YWNrIGNvcnJ1cHRpb24uCgoJKiBtaXNjL2NvbW0uYzogQ2xpZmYgV3JpZ2h0IDxjbGlmZkBzbmlwZTQ0NC5vcmc+CglGaXhlZCBhIG1hc2sgc2V0LCBhbmQgb3RoZXIgcGFyaXR5IHNldHRpbmcgYnVncyBmb3Igc2VyaWFsIHBvcnRzLgoKCSogaW5jbHVkZS9zaWdfY29udGV4dC5oOiBWYXN1ZGV2IE11bGNoYW5kYW5pIDx2YXN1QHRlaWwuc29mdC5uZXQ+CglBZGRlZCBCU0RJIHNpZ2NvbnRleHQgZGVmaW5pdGlvbnMuCgoJKiB3aW5kb3dzL2NsYXNzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXhlZCB0eXBvLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSBub3cgdXNlbGVzcyBSRUxBWV9TaG93RGVidWdtc2dzUmVsYXkgY2hlY2suCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgcmVsb2NhdGUgdGhlIHBvaW50ZXJzIGluIHRoZSBJTUFHRV9USFJFQURfTE9DQUxfU1RPUkFHRQoJZGlyZWN0b3J5LCBmb3IgdGhleSBzZWVtIHRvIGJlIHJlbG9jYXRlZCBieSB0aGUgc3RhbmRhcmQgcmVsb2NhdGluZwoJbWVjaGFuaXNtLiAoRXhwbGljaXRseSBjaGVja2VkIG9uZSBwcm9ncmFtIHVzaW5nIGl0KQoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hlbGwuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUGF0aEFkZEJhY2tzaGxhc2gsIFBhdGhSZW1vdmVCYWNrc2xhc2g6IGFyZ3VtZW50IGlzIG5vdCBjb25zdGFudC4KCgkqIHdpbmRvd3Mvd2luLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgd25kUHRyIGZvciBOVUxMLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglCbHRGYXN0OiBIb25vciBsUGl0Y2gsIExvY2svVW5sb2NrIHN1cmZhY2VzICh4bGliIG5lZWRzIHVubG9jayB0byBkcmF3KS4KCgkqIG1pc2Mvc3Bvb2xlci5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjZW11L21haW4uYywgTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgbG9hZGVyL21haW4uYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJVGFrZXMgcHJpbnQgc3Bvb2xlciBmdW5jdGlvbnMgb3V0IG9mIHdpbjE2ZHJ2LgoJQWxsb3dzIHRoZSBQb3N0U2NyaXB0IGRyaXZlciB0byBnbyBpbnRvIGxpYndpbmUuCgoJKiBpZjE2MzIvZ2RpLnNwZWMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9wYWxldHRlLmM6CglJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBzdHVicyBmb3IgdHdvIHVuZG9jdW1lbnRlZCBHREkgcm91dGluZXMsIFNldE1hZ2ljQ29sb3JzIGFuZAoJU2V0U29saWRCcnVzaC4gVGhpcyBhbGxvd3MgV2luOTggbmF0aXZlIFVTRVIgdG8gc3RhcnQgdXAuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCUZpeGVkIHRoZSBER0EgZGV0ZWN0aW9uIGNvZGUgaW4gZGRyYXcuIFlvdSBkb24ndCBuZWVkIHJvb3QgYWNjZXNzLAoJaGF2aW5nIHIrdyBhY2Nlc3MgdG8gL2Rldi9tZW0gaXMgZW5vdWdoLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0ZHJhdywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3Mvd2luZy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURpcmVjdERyYXcgc3RhdHVzIHVwZGF0ZWQuCglVc2UgY29vcGVyYXRpdmUgd2luZG93IGZvciBkcmF3aW5nIGluIHhsaWIgaW1wbGVtZW50YXRpb24gaWYgcG9zc2libGUuCglTbGlnaHRseSByZXN0cnVjdHVyZWQgSURpcmVjdERyYXdTdXJmYWNlOjpCbHQgc28gaXQgZG9lc24ndCBjcmFzaC4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPERhdmlkLkZhdXJlQGluc2EtbHlvbi5mcj4KCU1pY3JvIHBhdGNoIGZvciBBbHRHciBrZXkgb24gZ2VybWFuIGtleWJvYXJkcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVzIGVycm9yIGhhbmRsaW5nIChTZXRMYXN0RXJyb3IoKSBhbmQgcmV0dXJuIHZhbHVlKS4KCgkqIG9iamVjdHMvdGV4dC5jLCBpbmNsdWRlL3dpbmRvd3MuaDogR2FlbCBkZSBDaGFsZW5kYXIgPGdhZWxAbGltc2kuZnI+CglQYXJ0aWFsbHkgY29tcGxldGUgR2V0VGV4dENoYXJzZXRJbmZvIGFuZCBjb3JyZWN0cyByZXR1cm4gdmFsdWVzIGZvcgoJdGhpcyBmYW1pbHkgb2YgZnVuY3Rpb25zLgoKU3VuIE5vdiAxNSAxODoxMjoxMiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL2NvbXBvYmouYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWcgZml4LgoKCSogb2JqZWN0cy9kaWIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHJldHJpZXZhbCBvZiBpbnZhbGlkIHBhbGV0dGUgZGF0YSBpbiBHZXRESUJpdHMoKS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEpvaG4gUmljaGFyZHNvbiA8anJpY2hhcmRAemVhbGFuZC5tdi5jb20+CglBbGxvdyBTV1BfSElERVdJTkRPVyB0byBiZSBjYWxsZWQgb24gd2luZG93cyB0aGF0IGFyZSBhbHJlYWR5IGhpZGRlbgoJd2l0aG91dCB1bm1hcHBpbmcgdGhlbSBhZ2Fpbi4KCgkqIHdpbmRvd3Mvc2Nyb2xsLmM6IFBpbSBCb2xsZW4gPHBpbUBnaW1saS5pYWVodi5ubD4KCUZpeGVkIHNjcm9sbCBidWcgaW4gU2Nyb2xsV2luZG93RXgzMiB3aGljaCBjYXVzZWQgZ2FyYmFnZSBvbiBzY3JlZW4KCW91dHNpZGUgZGVza3RvcCB3aW5kb3cgd2l0aCBndHdpbi5leGUgKER1dGNoIGJhbmtpbmcgcHJvZ3JhbSkuCgoJKiBsb2FkZXIvbWFpbi5jLCBtZW1vcnkvYXRvbS5jLCBtaXNjL2RkZW1sLmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9tZXNzYWdlLmMsIGluY2x1ZGUvQXR0aWMvYXRvbS5oLCBpbmNsdWRlL2dsb2JhbC5oOgoJU21hbGwgYXRvbSBmaXhlcy4KCgkqIG9iamVjdHMvZGliLmM6IERpcmsgVGhpZXJiYWNoIDx0aGllcmJhY2hAbWF0aGVtYXRpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBidWcgaW4gU3RyZXRjaERJQml0czMyICh3cm9uZyBvcmlnaW4pLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMuCgoJKiBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvdHNfeHNobS5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hzaG0uYywgZ3JhcGhpY3MvZGRyYXcuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJU29tZSBjb3JyZWN0aW9ucyB0byB0aGUgaGFuZGxpbmcgb2Ygb2ZmLXNjcmVlbiBidWZmZXJzLgoJQ29ycmVjdGlvbiB0byB0aGUgRW51bURpc3BsYXlNb2RlcyBmdW5jdGlvbi4KCUFkZGVkIFhTaG0gc3VwcG9ydCB0byBYbGliIGRyaXZlci4KCU9wZW4gYSBEaXJlY3RYIHdpbmRvdyBldmVuIHdoZW4gdXNpbmcgdGhlIERHQSBkcml2ZXIuCgoJKiBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmgsIG1pc2Mvc2hlbGwuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2xlYW51cCwgc21hbGwgZml4ZXMsIGEgZmV3IG5ldyBzdHVicy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSGFuZGxpbmcgZm9yIGxpc3R2aWV3c3R5bGVzLCB2aWV3IG1vZGUgYnV0dG9ucyBpbiBmaWxlZGlhbG9ncwoJZW5hYmxlZCBhbmQgaGFuZGxlZC4KCU5ldyBsaXN0dmlldyBjb2x1bW5zIFNpemUsIFR5cGUsIE1vZGlmaWVkIGZvciByZXBvcnR2aWV3CgljcmVhdGVkIGFuZCBoYW5kbGVkLgoKCSogZGxscy9zaGVsbDMyL2lmX21hY3Jvcy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZSwgd3JhcHBlciBmb3IgSVNoZWxsQnJvd3NlciBjbGFzcy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUsIHNvbWUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgaWNvbiBjYWNoZS4KCUltcGxlbWVudGVkIEV4dHJhY3RJY29uRXg7IG1vdmVkIFNITWFwUElETFRvU3lzdGVtSW1hZ2VMaXN0SW5kZXgsCglTaGVsbF9HZXRJbWFnZUxpc3QgaW4gdGhpcyBmaWxlLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQ6IElMSXNFcWFsLCBJTEZpbmRDaGlsZCwgX0lMR2V0RmlsZURhdGUsIF9JTEdldEZpbGVTaXplLgoKCSogbG9hZGVyL21vZHVsZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxvYWRMaWJyYXJ5RXg6IHNob3cgYSB3YXJuaW5nIHdoZW4gY2FsbGVkIHdpdGggdW5pbXBsZW1lbnRlZCBwYXJtLgoKCSogbWlzY2VtdS9pbnN0ci5jOiBDbGVhbmVkIHVwIGEgYml0LgoKCSogbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2NlbXUvaW5zdHIuYywgdG9vbHMvYnVpbGQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2xlYW4gaW52YWxpZCBzZWxlY3RvcnMgb24gdGhlIHBvcCAleHMgZnJvbSB0aGUgU1RBQ0tGUkFNRSBpdHNlbGYKCWluc3RlYWQgb2YgdXNpbmcgbGlua2VkIGxpc3QgaGFjay4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmVkIGdldHMgbWVzc2FnZS4KCgkqIG9sZS9ubHMvdGhhLm5sczogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJQWRkZWQgVGhhaSBubHMtcmVzb3VyY2VzLgoKCSogb2xlL25scy9SRUFETUUsIG9sZS9ubHMvY3plLm5scywgb2xlL25scy9lc2UubmxzLCBvbGUvbmxzL2VzZy5ubHMsIG9sZS9ubHMvZXN0Lm5scywgb2xlL25scy9ldXEubmxzLCBvbGUvbmxzL2Zvcy5ubHMsIG9sZS9ubHMvaHJ2Lm5scywgb2xlL25scy9odW4ubmxzLCBvbGUvbmxzL2lzbC5ubHMsIG9sZS9ubHMvbm9yLm5scywgb2xlL25scy9wbGsubmxzLCBvbGUvbmxzL3B0Zy5ubHMsIG9sZS9ubHMvcm9tLm5scywgb2xlL25scy9zbHYubmxzLCBvbGUvbmxzL3N2ZS5ubHMsIG9sZS9vbGUybmxzLmMsIGluY2x1ZGUvd2lubmxzLmg6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCURpc3BsYXkgdGhlIGxhbmd1YWdlIGlkIGZvciAiWFhYIG5vdCBzdXBwb3J0ZWQgZm9yIHlvdXIgbGFuZ3VhZ2UiCgltZXNzYWdlcy4KCUFkZGVkIGFsbCBsYW5ndWFnZXMgYW5kIHN1Ymxhbmd1YWdlcyBmb3IgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBpbgoJcmVzb3VyY2VzL3N5c3Jlc19YeC4KCgkqIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzogR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY29tPgoJQWRkIHN0dWJzIGZvciBHZXRSdW5uaW5nT2JqZWN0VGFibGUzMiBhbmQgT2xlUmVnR2V0VXNlclR5cGUuCgoJKiBvbGUvbW9uaWtlci5jOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+CglFbnN1cmUgdGhhdCBDcmVhdGVGaWxlTW9uaWtlciBmdW5jdGlvbnMgZG9uJ3QgcmV0dXJuIGEgYm9ndXMgbW9uaWtlcgoJb2JqZWN0IG9uIGZhaWx1cmUuCgoJKiBpbmNsdWRlL2NsYXNzLmgsIHdpbmRvd3MvY2xhc3MuYzogR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY29tPgoJQWRkZWQgY29kZSB0byBtYW5hZ2UgQXNjaWkgYW5kIFdpZGVDaGFyIGNsYXNzIG5hbWVzLCBhbmQgdG8gcmV0dXJuIHRoZQoJbmFtZXMgaW4gdGhlIEdldENsYXNzSW5mbyBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDogQ29uc3RhbnRpbmUgU2FwdW50emFraXMgPGNzYXB1bnR6QHN0YW5mb3JkLmVkdT4KCUZpeCB0byBMaW51eCBJUFggc28gY29tcGlsZXMgb24gbm9uLWxpbnV4IHBsYXRmb3Jtcy4KCgkqIG1pc2MvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU93biBYMTEgZXJyb3JoYW5kbGVyIHRvIGxvY2F0ZSBYMTEgZXJyb3JzLiBVc2VmdWwgb25seSB3aXRoIC1zeW5jLgoKU2F0IE5vdiAxNCAxODo1OTozMCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb2xvci5oLCBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvcGFsZXR0ZS5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvcmVnaXN0cnkuYywgd2luZG93cy9kZWZ3bmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgd2FybmluZ3MsIHNvbWUgb25seSB2aXNpYmxlIHdpdGggLVdzdHJpY3QtcHJvdG90eXBlcyBvciAtcGVkYW50aWMuCgoJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgaW5jbHVkZS9kaXNwbGF5LmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCBpZjE2MzIvZGlzcGxheS5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBYMTEgbW91c2UgY3Vyc29yIGhhbmRsaW5nIHRvIHRoZSBESVNQTEFZIGRyaXZlci4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIG1pc2MvY2FsbGJhY2suYywgbWlzY2VtdS9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNvbWUgZml4ZXMgdG8gV2luZSBzdGFydHVwL3Rlcm1pbmF0aW9uIHNlcXVlbmNlIHdpdGggbmF0aXZlIFVTRVIuCglEbyBub3QgY2FsbCBidWlsdC1pbiBVU0VSIHNpZ25hbCBoYW5kbGVyIHdoZW4gdXNpbmcgbmF0aXZlIFVTRVIuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvdGFzay5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IC1kZWJ1ZyBkaWRuJ3Qgd29yayBhbnltb3JlIGFmdGVyIHRoZSBsYXN0IHN0YXJ0dXAgc2VxdWVuY2UgcGF0Y2guCgoJKiBvbGUvY29tcG9iai5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgbGlzdCBpbnNlcnRpb24gYnVnIGluIENvTG9hZExpYnJhcnkoKS4KCgkqIGlmMTYzMi93cHJvY3Muc3BlYywgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDQxLmMsIG1zZG9zL3Z4ZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzdHVicyBmb3Igc2V2ZXJhbCBWeERzIC8gaW50ZXJydXB0cy4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTaG91bGQgZ2V0IHdpbjE2ZHJ2IEFib3J0UHJvYyB3b3JraW5nLiBIb3BlZnVsbHkuCgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgR2V0S2V5Ym9hcmRMYXlvdXROYW1lMTYgdG8gd2luZG93cy9pbnB1dC5jLgoKCSogaW5jbHVkZS9pbWFnZWhscC5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludHlwZXMuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgc29tZSBkZWNsYXJhdGlvbnMgZnJvbSBpbWFnZWhscC5oIHRvIGNvbW1vbiBpbmNsdWRlIGZpbGVzLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi90aHJlYWQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGRlZCBpbXBsZW1lbnRhdGlvbnMgZm9yIEludGVybG9ja2VkRXhjaGFuZ2VBZGQoKSBhbmQKCUludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCkuCgoJKiB3aW4zMi9jb25zb2xlLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgYSBmZXcgb2YgdGhlIG1hbnkgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBtaXNjZW11L2luc3RyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW11bGF0ZSAibW92IGNyNCxlYXgiICh0b21icmFpZGVyIDMgZGVtbykuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBlbnVtZXJhdGUgRDNEIGRldmljZXMgd2UgY2FuJ3QgaGFuZGxlIGFueXdheS4KCVJldHVybiBiaXRtYXNrcyBmb3IgaGkvdHJ1ZWNvbG9yIGRlcHRocyBpbiBFbnVtRGlzcGxheU1vZGVzLgoKCSogaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvc25vb3AuaCwgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9zbm9vcC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTcGVlZCB1cCByZWxheTMyLCBzbm9vcDE2IGFuZCBzbm9vcDMyIGluY2x1ZGUvZXhjbHVkZXMgYnkgZG9pbmcgdGhlbQoJanVzdCBvbmNlIGF0IGNyZWF0aW9uIHRpbWUuCgoJKiByZWxheTMyL29sZTMyLnNwZWMsIG9sZS9jb21wb2JqLmMsIG9sZS9vbGUyLmM6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQWRkZWQgc3R1YnMgZm9yIENvUmV2b2tlQ2xhc3NPYmplY3QgYW5kIE9sZVNldENsaXBib2FyZC4KCgkqIHdpbmRvd3Mvd2luLmM6IFBlciDFbmdzdHL2bSA8cGFuZ0BtaW5kLm51PgoJRW51bVRhc2tXaW5kb3dzMTY6IEJhc2luZyB0aGUgc2VsZWN0aW9uIG9uIGEgd2luZG93J3MgdGFzayBpcyBub3Qgb25seQoJbW9yZSBzdHJhaWdodGZvcndhcmQgdGhhbiBjb21wYXJpbmcgbWVzc2FnZSBxdWV1ZXMsIGl0IGFsc28gd29ya3MKCWJldHRlciBmb3IgV2luMzIgYXBwbGljYXRpb25zLgoKCSogbWVtb3J5L2xvY2FsLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQ2hhbmdlZCBzb21lIG9mIHRoZSBtZXNzYWdlIGNsYXNzZXMuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxEYXZpZC5GYXVyZUBpbnNhLWx5b24uZnI+CglTcGVjaWFsIGNhc2UgaGFuZGxpbmcgb2YgOiBTaGlmdCArIGFycm93LCBzaGlmdCArIGhvbWUsIC4uLgoJWCByZXR1cm5zIGEgY2hhciBmb3IgaXQsIGJ1dCBXaW5kb3dzIGRvZXNuJ3QuIElnbm9yZSBYIGNoYXIuCglBbHNvIGFkZGVkIHNvbWUgZG9jdW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL3dpbnNvY2suYzoKCVN0ZXBoZW4gTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglCdWdmaXhlcyBmb3IgSVBYIGNvZGUgYW5kIHByZWxpbWluYXJ5IGdyb3VuZHdvcmsgZm9yIG90aGVyIGFkZHJlc3MKCWZhbWlseSBzdXBwb3J0LgoKCSogb2xlL2NvbXBvYmouYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkoQ29HZXRDbGFzc09iamVjdCkgb25lIG1pc3NpbmcgQ0FMTEJBQ0ssIGV4dHJlbWVseSBzaW1wbGlmaWVkIGNsc2lkCglsb29rdXAgKFJlZ2lzdHJ5IGlzIGNhc2UgaW5zZW5zaXRpdmUpLgoKCSogcmVsYXkzMi9udGRsbC5zcGVjLCB3aW4zMi9hZHZhcGkuYywgZGxscy9udGRsbC9ydGwuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViczogU2V0U2VydmljZVN0YXR1cywgUmVnaXN0ZXJTZXJ2aWNlQ3RybEhhbmRsZXJBL1csCglTdGFydFNlcnZpY2VDdHJsRGlzcGF0Y2hlcjMyQS9XLCBSdGxTeXN0ZW1UaW1lVG9Mb2NhbFRpbWUsCglSdGxUaW1lVG9UaW1lRmllbGRzLgoKCSogaW5jbHVkZS93aW5kb3dzLmgsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgZm9yIEdldE51bWJlckZvcm1hdDMyVy4KCgkqIG1pc2MvY3J0ZGxsLmM6IERhdmlkIEEuIEN1dGhiZXJ0IDxkYWN1dEBlY2UuY211LmVkdT4KCWdldHMoKSBmaXhlcy4KCgkqIG9sZS9ubHMvcnVzLm5sczogQWxleGFuZGVyIFYuIEx1a3lhbm92IDxsYXZAbG9uZy55YXIucnU+CglGaXggU0NPVU5UUlksIFNOQVRJVkVDVFJZTkFNRSwgU0FCQlJFVkRBWU5BTUUzOyBjaGFuZ2Ugc29tZSBTTU9OVEhOQU1FKgoJdG8gYmUgaW4gbm9taW5hdGl2ZSBjYXNlLgoKCSogd2luZG93cy9xdWV1ZS5jOiBQZXIgxW5nc3Ry9m0gPHBhbmdAbWluZC5udT4KCUZpeGVkIFNldE1lc3NhZ2VRdWV1ZTMyIHRvIHJldHVybiBGQUxTRSwgbm90IFRSVUUsIHdoZW4gY2FsbGVkIHdpdGgKCWFuIGludmFsaWQgc2l6ZSBwYXJhbWV0ZXIuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgR2V0Q2FwcywgY2hhbmdlZCBQbGF5IGFuZCBTdG9wIGhhbmRsaW5nCglvZiBwb3NpdGlvbnMgaW5kZXhlcywgc3VwcHJlc3NlZCB3YXJuaW5ncy4KCgkqIG1lbW9yeS9sb2NhbC5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNvcnJlY3RlZCBidWcgaW4gVFJBQ0UgZnVuY3Rpb24uCgoJKiBBVVRIT1JTLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2F1dGhvcnMuaCwgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDb3JyZWN0ZWQgYnVnIGluIERpcmVjdERyYXdTdXJmYWNlIGNyZWF0aW9uIGFuZCBoYW5kbGluZyBmb3IgZHJpdmVyCgliYXNlZCB1cG9uIFhsaWxiLgoKCSogd2luZG93cy9kaW5wdXQuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglXaW5lIGtleWJvYXJkIGFuZCBtb3VzZSBoYXZlIG5vdyB0aGVpciBvd24gVUlEcy4KCgkqIG9iamVjdHMvYnJ1c2guYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggYWxsb2NhdGlvbiBzaXplIGluIENyZWF0ZURJQlBhdHRlcm5CcnVzaCouCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBOb3YgIDggMTY6NDQ6NDEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4ZWQga2V5c3Ryb2tlIGFjY2VsZXJhdG9ycyBpbiBkaWFsb2dzIHdoaWNoIGhhdmUgY29udHJvbHMgY29udGFpbmluZwoJb3RoZXIgY29udHJvbHMgYXMgY2hpbGQgd2luZG93cy4KCgkqIGluY2x1ZGUvd2lucHJvYy5oLCBtaXNjL2NvbW1kbGcuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlczogTEJfL0NCXy9FTV8gbWVzc2FnZXMgZm9yIGdldHRpbmcvc2V0dGluZyB0ZXh0IGFuZCBhIGJ1ZyBpbgoJMTYtPjMyIGJpdCBjb252ZXJzaW9uLgoKCSogb2JqZWN0cy9kaWIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQcmV2ZW50IENyZWF0ZURJQlNlY3Rpb24gZnJvbSBzZWcgZmF1bHRpbmcgd2hlbiBvbmUgZGltZW5zaW9uIG9mCglzZWN0aW9uIGlzIDAuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5zb2NrLmgsIG1pc2Mvd2luc29jay5jOgoJU3RlcGhlbiBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCVN1cHBvcnQgZm9yIElQWCBuZXR3b3JraW5nIHZpYSB3aW5zb2NrIHVuZGVyIExpbnV4LgoKCSogcmVsYXkzMi9nZGkzMi5zcGVjLCBncmFwaGljcy9wYWludGluZy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSBzdHViIGZvciBTdGFydERvY0EgYW5kIEVuZERvYy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luMzIvY29uc29sZS5jOgoJSmFtZXMgU3V0aGVybGFuZCA8SmFtZXNTdXRoZXJsYW5kQGdteC5kZT4KCU1vcmUgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNldEN0cmxIYW5kbGVyKCkgZnVuY3Rpb24gKGFuZCB0aGUKCXJlbGF0ZWQgY29uc29sZSBmdW5jdGlvbnMpLgoKCSogb2JqZWN0cy9icnVzaC5jLCByZWxheTMyL2dkaTMyLnNwZWM6IEplZmYgSm9oYW5uIDxqam9oYW5uQGtpdmEubmV0PgoJQWRkZWQgQ3JlYXRlRElCUGF0dGVybkJydXNoUHQgKEdESTMyLjM1KSB3aXRoIG1pbm9yIGRvY3VtZW50YXRpb24KCXVwZGF0ZXMuCgoJKiBncmFwaGljcy92Z2EuYywgaW5jbHVkZS92Z2EuaCwgbXNkb3MvaW9wb3J0cy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTaW11bGF0ZSB0aGUgVkdBIHZlcnRpY2FsIHJlZnJlc2guCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIHN1cHBvcnQgb2Ygc291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWN0YW5nbGVzIGluIEJsaXQgZnVuY3Rpb24uCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBkZXZpY2UgdHlwZSBjb25zdGFudHMgYW5kIHVzZWQgdGhlbSBpbiBkZXZpY2UgZW51bWVyYXRpb24KCWZ1bmN0aW9uLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBUEkgZG9jdW1lbnRhdGlvbiBzYXlzIHRoYXQgUmVnRW51bUtleUV4LCBSZWdFbnVtVmFsdWUgYW5kCglSZWdRdWVyeUluZm9LZXkgdGFrZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlcnMgYXMgY2hhcmFjdGVycy4KCgkqIG9sZS9jb21wb2JqLmM6IEFkZGVkIG1pc3NpbmcgI2luY2x1ZGUgImNvbmZpZy5oIgoKCSogQVVUSE9SUywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYXV0aG9ycy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBvbGUvY29tcG9iai5jOgoJSnVzdGluIEJyYWRmb3JkIDxqdXN0aW5AdWthbnMuZWR1PgoJUmVwbGFjZXMgQ29DcmVhdGVHdWlkIHN0dWIgd2l0aCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBEQ0UncyBVVUlECglzcGVjaWZpY2F0aW9uLiBBbHNvIHJlbW92ZXMgc29tZSB1bm5lY2Vzc2FyeSBjb2RlIGZyb20gU3RyaW5nRnJvbUNMU0lELgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW50eXBlcy5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYW4gZXh0ZXJuICJDIiBzYWZlZ3VhcmQuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS93aW5kb3dzLmgsIHdpbmRvd3MvaW5wdXQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCS0gYWRkcyBHZXRFeGl0Q29kZVByb2Nlc3MKCS0gY29ycmVjdHMgdGhlIHJldHVybi10eXBlIG9mIEdldEtleVN0YXRlCgktIGNvcnJlY3RzIHRoZSB3aW5lbGliIGRlZmluaXRpb24gb2YgSXNEaWFsb2dNZXNzYWdlCgktIGFkZHMgd2luZWxpYiBkZWZpbml0aW9ucyBmb3IgUHJpbnREbGcKCgkqIG9iamVjdHMvY2xpcHBpbmcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUV4dFNlbGVjdENsaXBSZ24gZml4OiBSR05fRElGRiBkaWQgbm90IHdvcmsuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBuZXcgaW5wdXQgZXZlbnQgaGFuZGxpbmcuCgoJKiBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9pbnB1dC5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9pbnB1dC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVU0VSLXNpZGUgcGFydCBvZiBpbnB1dCBldmVudCBoYW5kbGluZzogY29udGFpbnMgaW1wbGVtZW50YXRpb24gb2YKCWtleWJkX2V2ZW50IGFuZCBtb3VzZV9ldmVudCwgYW5kIFVTRVItcmVsYXRlZCBjb2RlIHJlbW92ZWQgZnJvbQoJd2luZG93cy9ldmVudC5jIGFuZCB3aW5kb3dzL2tleWJvYXJkLmMuCgoJKiB3aW5kb3dzL2Rpc3BsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3R1YnMgZm9yIERJU1BMQVkuRFJWIHJlbW92ZWQgZnJvbSBrZXlib2FyZC5jLgoKCSogaWYxNjMyL21vdXNlLnNwZWMsIGluY2x1ZGUvbW91c2UuaCwgd2luZG93cy9tb3VzZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBNT1VTRS5EUlYgKGNvbnRhaW5zIHNvbWUgY29kZSB0YWtlbiBmcm9tCgl3aW5kb3dzL2V2ZW50LmMpLgoKCSogaWYxNjMyL2tleWJvYXJkLnNwZWMsIGluY2x1ZGUva2V5Ym9hcmQuaCwgd2luZG93cy9rZXlib2FyZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBLRVlCT0FSRC5EUlYgKGNvZGUgbW9zdGx5IHRha2VuIGZyb20gcHJldmlvdXMKCXdpbmRvd3Mva2V5Ym9hcmQuYykuCgoJKiBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiByZWFsbHkgKmRvKiBzd2l0Y2ggdG8gdGhlIGluaXRpYWwgdGFzaydzIHN0YWNrLgoJQ2FsbExhcmdlU3RhY2sgbWVjaGFuaXNtIHJlLWVuYWJsZWQuCgoJKiBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJTmV3IEZpbGVzLiBBZGRlZCAnZGF0ZSBhbmQgdGltZSBwaWNrZXInIGFuZCAnbW9udGggY2FsZW5kYXInIGNvbnRyb2wKCWR1bW1pZXMuIFRoZXkgYXJlIHVzZWQgYnkgT3V0bG9vayBFeHByZXNzLgoKCSogb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN0dWIgZm9yIENyZWF0ZUJpbmRDdHgoKSBhbmQgYWRkZWQgbWlzc2luZyBDb0dldENsYXNzT2JqZWN0KCkKCXRvICouc3BlYyBmaWxlLiBNYWtlcyBJbnRlcm5ldCBFeHBsb3JlciA0LjAxIGhhcHB5IDstKQoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJTGl0dGxlIGltcHJvdmVtZW50LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgcHJlbGltaW5hcnkgaGl0IHRlc3RpbmcuIE1ha2VzIHJlZ2VkaXQuZXhlIGhhcHB5IDstKQoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgZG9jdW1lbnRhdGlvbiBhbmQgZml4ZWQgdHlwb3MuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIHJlbGF5MzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBEcmF3U3RhdHVzVGV4dDMyQVcoKSBhbmQgQ3JlYXRlU3RhdHVzV2luZG93MzJBVygpLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgZGlzcGxheSBhbmQgbGF5b3V0IGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RhdGV0aW1lLmgsIGluY2x1ZGUvbW9udGhjYWwuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglOZXcgRmlsZXMuIEFkZGVkICdkYXRlIGFuZCB0aW1lIHBpY2tlcicgYW5kICdtb250aCBjYWxlbmRhcicgY29udHJvbAoJZHVtbWllcy4gVGhleSBhcmUgdXNlZCBieSBPdXRsb29rIEV4cHJlc3MuCgpTYXQgTm92ICA3IDEyOjU2OjMyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgaW5jbHVkZS93aW5kb3dzLmg6CglDaGFybGVzIFN1cHJpbiA8Y3N1cHJpbkBseW54LmRhYy5uZXUuZWR1PgoJQWRkZWQgc3R1YnMgZm9yIFNldFdpbk1ldGFGaWxlQml0cyBhbmQgR2V0RW5oTWV0YUZpbGVQYWxldHRlRW50cmllcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTdG9wIFgxMURSVl9Sb3VuZFJlY3QgY2FsbGluZyBYRHJhd0FyYyB3aXRoIC12ZSB3aWR0aC9oZWlnaHQgcGFyYW1zCgl3aGljaCBpdCBkaWQgaWYgZWl0aGVyIGVsbGlwc2UgZGltZW5zaW9uIHdhcyB6ZXJvLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglPcHRpbWl6ZSBSb3VuZFJlY3QzMiB0byBjYWxsIFJlY3RhbmdsZTMyIGlmIGVpdGhlciBlbGxpcHNlIGRpbWVuc2lvbgoJaXMgemVyby4KCgkqIHJlbGF5MzIvbXByLnNwZWMsIG1pc2MvbmV0d29yay5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3R1YiBXTmV0RW51bUNhY2hlZFBhc3N3b3Jkcy4KCgkqIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWRlIHRoaXMgZmlsZSBET1NNT0QgZnJpZW5kbHkuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVuaWZpZWQgIk5vIGltcGxlbWVudGF0aW9uIGZvci4uLiIgd2FybmluZ3MuCgoJKiB3aW4zMi9kZXZpY2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+Cgltb25vZGViZy52eGQgdXNlZCBieSBzb21lIE9yaWdpbiBwcm9ncmFtcyBpbXBsZW1lbnRlZC4KCgkqIG9iamVjdHMvYml0bWFwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGYWlsIGlmIGxlc3MgdGhlbiBvbmUgZW50aXJlIGxpbmUgcmVxdWVzdGVkIGluIEdldEJpdG1hcEJpdHMzMi4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgV01fR0VURExHQ09ERSBoYW5kbGluZyBpbiAoVW4pTWFwTXNnMzJBdG8xNi4KCgkqIGlmMTYzMi9jb21wb2JqLnNwZWMsIGluY2x1ZGUvb2xlLmgsIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUpvaG4gUmljaGFyZHNvbiA8anJpY2hhcmRAemVhbGFuZC5tdi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBDb0xvYWRMaWJyYXJ5LCBDb0ZyZWVBbGxMaWJyYXJpZXMsCglDb0ZyZWVVbnVzZWRMaWJyYXJpZXMsIENvRnJlZUxpYnJhcnkuCglGaXhlZCBtaXNzcGVsbGluZyBvZiBDb1VuaW5pdGlhbGl6ZS4KCgkqIHByb2dyYW1zL2Nsb2NrL0NoYW5nZUxvZywgcHJvZ3JhbXMvY2xvY2svbWFpbi5jOgoJUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCUZpeGVzIGZvciBvdGhlciBsYW5ndWFnZXMuCgpGcmkgTm92ICA2IDE3OjM2OjEzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEpvaG4gUmljaGFyZHNvbiA8anJpY2hhcmRAemVhbGFuZC5tdi5jb20+CglGaXggd2lkZSBjaGFyYWN0ZXIgZnVuY3Rpb25zIHRvIHJldHVybiBjaGFyYWN0ZXIgY291bnQgaW4gY2hhcmFjdGVyCglxdWFudGl0aWVzIG5vdCBieXRlIHF1YW50aXRpZXMuICBNYWtlIFJlZ1F1ZXJ5SW5mb0tleSBhbmQKCVJlZ1F1ZXJ5SW5mb0tleSBiZWhhdmUgY29ycmVjdGx5IGluIHdpbjk1IG1vZGUuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDaGFuZ2VkIG1vdXNlIGJ1dHRvbiBtYXBwaW5nIGFuZCBjaGVjayBzaXplIG9mIHJldHVybiBidWZmZXIuCgoJKiBvYmplY3RzL2NsaXBwaW5nLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglFeHRTZWxlY3RDbGlwUmduKCkgd2l0aCBSR05fQ09QWSBjb3BpZXMgdGhlIHdyb25nIHJlZ2lvbi4KCgkqIGZpbGVzL2ZpbGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYW4gZXJyb3IgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIEZJTEVfU2hhcmVEZW55LgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb2xhcmlzIHJlZGVmaW5lcyBFUlIgYW5kIENTLCBmaXhlZCBvY2N1cmFuY2VzLgoJU29sYXJpcyBoYXMgVFJBUE5PIGluIGl0cyBzaWdjb250ZXh0LCBhZGRlZCB0byBzaWdfY29udGV4dC5oCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIG11bHRpbWVkaWEvbW1pby5jLCByZWxheTMyL3dpbm1tLnNwZWMsIGlmMTYzMi9tbXN5c3RlbS5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIG1taW9TZXRCdWZmZXIgY2FsbGFibGUgZnJvbSAxNiBhbmQgMzIgYml0IGNvZGUuCgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgd3JvbmcgYXJnIHR5cGUuCgoJKiBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2dkaW9iai5jLCBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS94MTFkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW92ZWQgWDExIERJQiBzdHVmZiB0byB4MTFkcnYuCgoJKiB3aW4zMi9jb2RlX3BhZ2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRoZSBBUEkgZm9yIFdpZGVDaGFyVG9NdWx0aUJ5dGUgc2F5cyB0aGF0IHRoZSBzcmMtc3RyaW5nIGhhcyBvbmx5IHRvIGJlCgl0cmVhdGVkIGFzIE5VTEwtdGVybWluYXRlZCBpZiBzcmNsZW4gaXMgLTEuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mvd2luLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgc3VyZSBDb25maWd1cmVOb3RpZnkgaXMgcHJvY2Vzc2VkIGJlZm9yZSBFeHBvc2UsIGRlZmVycmluZyB0aGUKCUV4cG9zZSBldmVudCBpZiBuZWNlc3NhcnksIHRodXMgd29ya2luZyBhcm91bmQgYSBXTSBmbGF3IHdpdGggdmlydHVhbAoJZGVza3RvcCBzY3JvbGxpbmcgaW4gLW1hbmFnZWQgbW9kZS4KCgkqIHJlc291cmNlcy9zeXNyZXNfRnIucmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEBsZW1lbC5mcj4KCVRyYW5zbGF0ZWQgaW4gRnJlbmNoIChub3Qgc28gZ29vZCBhbnlob3cpIG1lc3NhZ2UgZm9yIHRoZSBtYXJrIG9uCglzeXN0ZW0gbWVudS4KCgkqIG1pc2MvbWFpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoYW5nZWQgdGhlIGRlZmF1bHQgZnJvbSAwIHRvIDB4NDA5IChlbmctdXMpLgoKCSogd2luZG93cy9tZGkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUd28gbWlzc2luZyBXSU5BUElzLgoKCSogaW5jbHVkZS9pbnRlcmZhY2VzLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgb25lIHdyb25nIHBhcmFtZXRlci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIC0tZGlzYWJsZS1saWIuCgpUaHUgTm92ICA1IDEwOjMzOjE4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29uc3RhbnRzIGZvciBjb250cm9scyBpbiBjb21tb24gZGlhbG9ncy4KCldlZCBOb3YgIDQgMTg6MDg6MzMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY3J0ZGxsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgc29tZSBjb21waWxlciB3YXJuaW5ncy4KClN1biBOb3YgIDEgMTk6Mjc6MjQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luaGVscC5jLCB3aW5kb3dzL3dpbnBvcy5jLCBtaXNjL2NvbW1kbGcuYywgbWlzYy9zaGVsbC5jLCBtaXNjL3dpbnNvY2suYywgbWlzY2VtdS9pbnN0ci5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvam95c3RpY2suYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL2RpYi5jLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvcGFyc2VyLmwsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvbWRpLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG1lbW9yeS9oZWFwLmM6CglKZXNwZXIgU2tvdiA8anNrb3ZAY3lnbnVzLmNvLnVrPgoJZWdjcyAnYW1iaWd1b3VzIGVsc2UnIHdhcm5pbmdzIGZpeGVzLgoKCSogaW5jbHVkZS90b29saGVscC5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJR2V0IHJpZCBvZiB0aGUgcmVkZWZpbml0aW9uIG9mIE1BWF9QQVRIIGFuZCBtb3ZlIFBST0NFU1NFTlRSWTMyCglkZWZpbml0aW9uIHRvIHRvb2xoZWxwLmguCgoJKiB3aW5kb3dzL3dpbi5jLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxpYnJhcnkvd2luZXN0dWIuYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL2NhbGxiYWNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJ1biBXaW5lbGliIGFwcGxpY2F0aW9ucyBhcyAzMi1iaXQgcHJvY2Vzc2VzIGluIHRoZSBpbml0aWFsIHRhc2suCglTaW1wbGlmaWVkL3JlbW92ZWQgc2V2ZXJhbCBzcGVjaWFsICdpZiAoX193aW5lbGliKScgY2FzZXMgaW4KCVdpbmUgbWFpbiBjb2RlIG9ic29sZXRlZCBieSB0aGF0IGNoYW5nZS4KCgkqIHdpbmRvd3MvZXZlbnQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIG1vdXNlIGRyaXZlciBjYWxsYmFjayBhbHNvIGlmIHdpbmRvd3MgYXJlIG5vdCByZWdpc3RlcmVkIHdpdGggWAoJKGlmIHVzaW5nIG5hdGl2ZSBVU0VSLkVYRSkuCgoJKiBtZW1vcnkvYXRvbS5jLCBpbmNsdWRlL2F0b20uaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBzZXBhcmF0aW9uIGJldHdlZW4gS0VSTkVMIGFuZCBVU0VSLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9tYWluLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jLCByZWxheTMyL2dkaTMyLnNwZWMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgbmV3IFdpbmUgc3RhcnR1cCBzZXF1ZW5jZSwgc2VwYXJhdGluZyBzdGFydHVwIGludG8KCUtFUk5FTC9VU0VSL0dESSByZWxhdGVkIHBhcnRzLCBhbGxvd2luZyBuYXRpdmUgcmVwbGFjZW1lbnQuCglJbXBsZW1lbnRlZCBpbml0aWFsICdrZXJuZWwnIHRhc2suCgoJKiBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIG9sZS9jb21wb2JqLmM6CglKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgSW5wcm9jU2VydmVyMzIgQ29HZXRDbGFzc09iamVjdC4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vcmUgYml0bWFwIGZpeGVzLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEZpeGVkIGNyYXNoZXMgd2l0aCBXTV9HRVRETEdDT0RFIHRyYW5zbGF0aW9uLgoKCSogcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi8uY3ZzaWdub3JlLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbi5oLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgbW92aW5nIHNvbWUgWDExIHdpbmRvdyBtYW5hZ2VtZW50IGNvZGUgdG8gd2luZG93cy94MTFkcnYuCgoJKiBpZjE2MzIvdXNlci5zcGVjLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgSXNEaWFsb2dNZXNzYWdlMTYuCgoJKiBNYWtlZmlsZS5pbjogRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglUZWxsIHBlb3BsZSB0byBpZ25vcmUgdGhlICdnZXRzJyB3YXJuaW5nLiBTb21lIHdpbGwgbGlzdGVuLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCB3aW5kb3dzL2dyYXBoaWNzLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUEgY291cGxlIG9mIHNtYWxsIGZpeGVzIHRvIG15IGJpdG1hcCBwYXRjaC4KCgkqIHJlc291cmNlcy9UT0RPLCByZXNvdXJjZXMvc3lzcmVzX0RlLnJjLCByZXNvdXJjZXMvc3lzcmVzX0VuLnJjLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWxsb3cgdGhlIHVzZXIgdG8gcHV0IGEgbWFyayBpbiB0aGUgZGVidWcgbG9nIGJ5IGFkZGluZyBhIGl0ZW0gaW4gdGhlCglTWVNNRU5VLiBUaGUgbWVzc2FnZXMgbmVlZHMgaW1wbGVtZW50YXRpb24gaW4gYWxsIG90aGVyIGxhbmd1YWdlcyB0aGFuCglFbmdsaXNoIGFuZCBHZXJtYW4uCgoJKiBmaWxlcy9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdpdmUgdGVtcGZpbGUgYSBkaWZmZXJlbnQgbmFtZSBldmVuIGlmIHRoZXkgYXJlIGNyZWF0ZWQgaW4gdGhlIHNhbWUKCXNlY29uZC4gUmVtb3ZlZCBzb21lIGZpeG1lcyBmcm9tIHRoZSBTaGFyZURlbnkgc3R1ZmYuCgoJKiBpbmNsdWRlL21kaS5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9tZGkuYywgd2luZG93cy93aW4uYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDcmVhdGVXaW5kb3dFeDMyW0FXXSBub3cgY3JlYXRlcyBhbiBNREkgY2hpbHMgd2hlbiB0aGUgV01fRVhfTURJQ0hJTEQKCWV4dGVuZGVkIHN0eWxlIGlzIHNwZWNpZmllZC4gQWxzbyBpbXBsZW1lbnRlZCBDcmVhdGVNRElXaW5kb3czMkEoKQoJY2FsbCAtIHNpbmdsZSB0aHJlYWQgb25seSAtLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVycmVkIGluIHRoZSBiaXQgbWFjcm9zIGluIHRyZWV2aWV3LmMuIFNoaWZ0Y291bnRzIHdlcmUgd3JvbmcuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiBpbXBvcnRzIHdpdGggQ2hhcmFjdGVyaXN0aWNzIDAgZmFpbCBmb3IgQm9ybGFuZAoJcHJvZ3JhbXMgKHdoaWNoIHNlZW0gdG8gaGF2ZSBhbHdheXMgY2hhcmFjdGVyaXN0aWNzIDApLiBDaGFuZ2VkIHRvIGFsZ29yaXRobQoJdG8gc29tZXRoaW5nIGEgYml0IG1vcmUgaW50ZWxsaWdlbnQuCgoJKiBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgQ29GcmVlTGlicmFyeSBzdHViLgoKCSogUkVBRE1FOiBVcGRhdGVkIEZBUSBsb2NhdGlvbi4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBTRUdQVFIgY29udmVyc2lvbiBmb3IgU1RBUlRET0MgaW4gRXNjYXBlMzIoKS4KCgkqIG9iamVjdHMvZGMuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFNldERDU3RhdGUgZGlkIG5vdCByZXNldCBjbGlwcGluZyByZWdpb24gdG8gZW1wdHkuCgoJKiB3aW4zMi9pbml0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc21hbGwgb2ZmIGJ5IG9uZSBlcnJvciBpbiBHZXRDb21wdXRlck5hbWUzMlcsIGFsd2F5cyBraWxsZWQgdGhlCglsYXN0IGNoYXJhY3RlciBvZiBhIGhvc3RuYW1lLgoKCSogb2JqZWN0cy9kaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEb24ndCBIZWFwRnJlZSgpIGNvbG9ybWFwIGlmIHdlIGRpZG4ndCBhbGxvY2F0ZSBvbmUuCgoJKiB3aW4zMi9hZHZhcGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvdXNlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS93aW50eXBlcy5oLCBtaXNjL2NydGRsbC5jLCBtaXNjL3ByaW50ZHJ2LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgcmVsYXkzMi9jcnRkbGwuc3BlYywgcmVsYXkzMi9tcHIuc3BlYywgcmVsYXkzMi9zaGVsbDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHJlbGF5MzIvd2luc3Bvb2wuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3R1YnMgZm9yIHVzZXIzMixhZHZhcGkzMiBmdW5jdGlvbnMuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvKiwgaW5jbHVkZS9udGRsbC5oLCBtaXNjL0F0dGljL250ZGxsLmMsIG1pc2MvTWFrZWZpbGUuaW4sIHJlbGF5MzIvbnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW9yZSBOdCogYW5kIFJ0bCogZnVuY3Rpb24gc3R1YnMsIG1vdmVkIG50ZGxsLmMgdG8gZGxscy9udGRsbC8uCgoJKiBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L2hlYXAuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQ2hhbmdlZCBtYW55IFdBUk4oKXMgcmVsYXRlZCB0byBpbnRlcm5hbCBXaW5lIG1lbW9yeSBmYWlsdXJlcyB0bwoJRVJSKClzLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgLnNwZWMgZW50cnkgZm9yIEtFUk5FTC5SZWdpc3RlclNlcnZpY2VQcm9jZXNzLgoKCSogaWYxNjMyL2Rpc3BsYXkuc3BlYywgd2luZG93cy9rZXlib2FyZC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgc3R1YiBmb3IgQ2hlY2tDdXJzb3IoKS4KCgkqIGluY2x1ZGUvZGlhbG9nLmgsIHdpbmRvd3MvZGVmZGxnLmM6IFRpbSBOZXdzb21lIDxudWlzYW5jZUBjbXUuZWR1PgoJRml4IGZvciBub24tbW9kYWwgZGlhbG9nIGNsb3NpbmcuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBEYXZpZCBGYXVyZSAgPGZhdXJlQGtkZS5vcmc+CglSZXdyb3RlIHRoZSB0d28gcm91dGluZXMgdXNpbmcgdGhlIHZrZXktPnNjYW5jb2RlIGFycmF5IHRvIHVzZQoJa2V5YzJ2a2V5IGZvciBlYWNoIGtleWNvZGUsIGluc3RlYWQuIE5vdCB0ZXN0ZWQuCglSZW1vdmVkIHVudXNlZCBJRGlyZWN0SW5wdXREZXZpY2VBX0dldERldmljZVN0YXRlLgoJRml4ZWQgd2FybmluZyBpbiBUUkFDRSgpIGNhbGwuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxmYXVyZUBrZGUub3JnPgoJRGVsZXRlZCB0aGUgdmtleS0+c2FuY29kZSBhcnJheSwgYmVjYXVzZSBRV0VSVFkgc3BlY2lmaWMuCglCYWNrIHRvIHVzaW5nIHRoZSBYIGtleWNvZGUgaW5zdGVhZCBhcyB0aGUgc2NhbmNvZGUuIFRlc3RlZC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJUHJpbnQgYSBtZXNzYWdlIGlmIHRoZSBQb3N0U2NyaXB0IGRyaXZlciBjYW4ndCBmaW5kIGEgUFBEIGZpbGUuCgoJKiBtc2Rvcy9pbnQxMC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIFZHQSAyNTYtY29sb3IgbW9kZSAweDEzIHVzaW5nIHRoZSBEaXNwbGF5RGliIFZHQSBlbXVsYXRpb24uCgkoRE9TIGFwcHMvZ2FtZXMgdXNpbmcgdGhpcyBtb2RlIGNvbWVzIHVwIG5vdywgYWx0aG91Z2ggeW91IGNhbid0CglyZWFsbHkgZG8gYW55dGhpbmcgd2l0aCB0aGVtICh5ZXQ/KS4pCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIG1hY3JvIFY4Nl9GTEFHLgoKCSogbXNkb3MvZG9zbWVtLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2V0IGRlZmF1bHQgdmlkZW8gbW9kZSB0byAzICg4MHgyNSBjb2xvcikuCgoJKiBsb2FkZXIvZG9zL2Rvc21vZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUlnbm9yZXMgYSBjb3VwbGUgb2Ygc2lnbmFscy4KCgkqIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9kaXNwZGliLmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL3ZnYS5oLCBtc2Rvcy9pb3BvcnRzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIFZHQS1lbXVsYXRpbmcgRGlyZWN0WCBjb2RlIGZyb20gZGlzcGRpYi5jIHRvIGEgc2VwYXJhdGUKCWZpbGUuIE1hZGUgaXQgdXNlIGEgc3lzdGVtIHRpbWVyIGFuZCB0cmFwIEkvTyBhY2Nlc3NlcyB0byB0aGUgVkdBCglEQUMgcmVnaXN0ZXJzIHRvIGFjY29tbW9kYXRlIERpc3BsYXlEaWItdXNpbmcgcHJvZ3JhbXMgdGhhdCB0cnkgdG8KCWFjY2VzcyB0aGUgVkdBIGhhcmR3YXJlIGRpcmVjdGx5LgoKCSogbWlzY2VtdS9pbnN0ci5jLCBpZjE2MzIvc2lnbmFsLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWlzYy9zeXN0ZW0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW5kaXJlY3Rpb24gZm9yIElOU1RSX0VtdWxhdGVJbnN0cnVjdGlvbiBmb3IgdXNlIGJ5IERPUyBjb2RlLgoJQWRkZWQgc3VwcG9ydCBmb3IgYSA1NUh6IHN5c3RlbSB0aW1lciwgbGV0dGluZyBET1MgYXBwcyBjYWxpYnJhdGUKCXRoZWlyIGRlbGF5IGxvb3BzIGFuZCBzdWNoLiBDYWxscyBJTlNUUl9FbXVsYXRlSW5zdHJ1Y3Rpb24gZm9yCglpbnN0cnVjdGlvbiBlbXVsYXRpb24gKHByaW5jaXBhbGx5IEkvTyBwb3J0IGFjY2VzcykuIEFkZGVkIG1hY3JvCglWODZfRkxBRy4KClNhdCBPY3QgMzEgMTI6MjA6NTYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlucHV0LmMsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIGZpeGVzLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHRoZSBGSVhNRSgpIGFuZCBtb3ZlZCBTZXRMYXN0RXJyb3IoMCkgdG8gdGhlIGVuZCAoc28gdGhhdAoJR2V0VGVtcEZpbGVOYW1lIGV0LmFsLiBjYW4ndCBvdmVyd3JpdGUgaXQpLgoKCSogbWlzYy9BdHRpYy9udGRsbC5jLCByZWxheTMyL250ZGxsLnNwZWMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxvdHMgb2Ygc3R1YnMgdG8gZ2V0IHdpbmxvZ29uLmV4ZSBmcm9tIG50My41MSBhbmQgb3RoZXIgTlQzLjUxIGFwcGxldHMKCWEgYml0IGZ1cnRoZXIuCgoJKiB3aW5kb3dzL21kaS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTURJY2hpbGQgY3JlYXRlZCB3aGVuIHRoZSBNREkgY2xpZW50IGhhcyB0aGUgTURJU19BTExDSElMRFNUWUxFUwoJc3R5bGUsIHNob3VsZCBub3QgYmUgc2hvd24gYXQgY3JlYXRpb24gbm9yIGFjdGl2YXRlZCB1bmxlc3MgdGhlCglXU19WSVNJQkxFIGZsYWcgaXMgc2V0LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IFN0ZXBoZW4gTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglCdWdmaXggZm9yIGZpeHVwX2ltcG9ydHM6IEVuYWJsZSBjaGVja2luZyBmb3IgdGVybWluYXRpbmcgaW1wb3J0CglzdHJ1Y3Qgd2l0aCBDaGFyYWN0ZXJpc3RpY3MgYml0ZmllbGQgc2V0IHRvIDAuCgoJKiB3aW5kb3dzL3dpbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRGVsYXkgbGlua2luZyBuZXdseSBjcmVhdGVkIHdpbmRvdyBpbiBsaW5rZWQgbGlzdCB1bnRpbCBhZnRlciB0aGUKCVdNX05DQ1JFQVRFIG1lc3NhZ2UuCgoJKiBmaWxlcy9maWxlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglTbWFsbCBidWcgaW4gRklMRV9JblVzZSBkb2VzIG5vdCBkbyBhIHJlbGVhc2Ugb24gZXZlcnkgYWNxdWlyZWQgZmlsZQoJcG9pbnRlci4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWxwc3pOYW1lIG9mIE5VTEwgaXMgaGFuZGxlZCAocmVtb3ZlcyBzb21lIHdhcm5pbmdzKS4KCgkqIHRvb2xzL3Rlc3RydW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTm93IGFsbG93cyBzcGVjaWZpY2F0aW9uIG9mIGEgc3RhcnQgZGlyZWN0b3J5IG9uIHRoZSBjbWRsaW5lLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldHMgcmlkIG9mIHRoZSBhcmNoLWRlcGVuZGVudCBiaXQgb3BlcmF0aW9ucyAodGVzdGVkIG9uIExpbnV4IGFuZAoJU29sYXJpcy94ODYpLgoKV2VkIE9jdCAyOCAxNDo1ODowMiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBIGRlc3QgYnVmZmVyIHdhcyBwcmludGVkIG91dCBhcyBzdHJpbmcuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvcnJlY3RlZCAyIHdyb25nIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVBhdHJpY2sgU3BpbmxlciA8c3Bpbmxlci5wYXRyaWNrQG1heW8uZWR1PgoJQWRkZWQgc3R1YnMgZm9yIFByb2Nlc3MzMkZpcnN0L1Byb2Nlc3MzMk5leHQuCgoJKiBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9yZWdpb24uYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJRnJhbudvaXMgR291Z2V0IDxnb3VnZXRAbWV0YWludGVncmF0aW9uLm5ldD4KCUZpeGVkIHNvbWUgTFBQT0lOVC9MUFNJWkUgbWlzbWF0Y2hlcyBhbmQgc29tZSBtaXNzaW5nICJjb25zdCIgaW4gdGhlCgloZWFkZXJzIHByb3RvdHlwZXMuCgoJKiBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL29lbWJpdG1hcC5jLCB3aW5kb3dzL2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgcEJpdG1hcEJpdHMgYW5kIHBDcmVhdGVCaXRtYXAgdG8gdGhlIEdESSBmdW5jdGlvbiB0YWJsZSBhbmQKCW1vdmVkIHRoZSBYMTEgZGVwZW5kZW50IHN0dWZmIG91dCBvZiBvYmplY3RzL2JpdG1hcC5jIGludG8geDExZHJ2LgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGVsbC5oLCBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgU0hHZXRTaW1wbGVJRExpc3RGcm9tUGF0aDMyQVcuCglVbmljb2RlLXNhZmU6IFBhdGhGaW5kRmlsZW5hbWUzMkFXLgoKCSogaW5jbHVkZS9zaGxvYmouaDogSnVzdGluIEJyYWRmb3JkIDxqdXN0aW5AYnVzYm95LnNwZWQudWthbnMuZWR1PgoJSUV4dHJhY3RJY29uIGhhZCBhbiBleHRyYSBjIGluIGEgc3RydWN0IGRlZmluaXRpb24uCgoJKiByZWxheTMyL2RwbGF5LnNwZWM6CglKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuc3BhbWxlc3MuY29tPgoJQWRkZWQgZW50cnkgZm9yIERpcmVjdFBsYXlFbnVtZXJhdGUuCgoJKiBvbGUvbmxzL3NreS5ubHMsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIFNsb3ZhayBubHMtcmVzb3VyY2VzLgoKCSogb2JqZWN0cy9yZWdpb24uYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBkaWZmZXJlbmNlcyBiZXR3ZWVuIFNldFJlY3RSZ24xNiBhbmQgU2V0UmVjdFJnbjMyLiBBbHNvIGEgYnVnIGZpeCBmb3IKCUNyZWF0ZVJvdW5kUmVjdFJnbi4KClR1ZSBPY3QgMjcgMTU6NDE6NTQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvdXNlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVudW1EaXNwbGF5TW9kZXMqIHJldHVybnMgYSBzdGF0aWMgbGlzdCBvZiBtb2RlcyB3aXRoIGFsbCBkZXB0aHMKCShoZWxwcyBoZXhlbjJkZW1vKSwgQ2hhbmdlRGlzcGxheVNldHRpbmdzIHJldHVybnMgdHJ1ZSBhbGwgdGhlIHRpbWUuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmgsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViIGZvciBtaWRpT3BlblN0cmVhbSAoaGVscHMgaGV4ZW4yZGVtbykuCgoJKiBvbGUvbmxzL2VuYy5ubHMsIG9sZS9ubHMvZnJjLm5scywgcmVzb3VyY2VzL3N5c3Jlc19Gci5yYzoKCVJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglTbWFsbCBwYXRjaCBmb3IgYmV0dGVyIEZyZW5jaCBzdXBwb3J0LgoKCSogbG9hZGVyL2VsZi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogbWVtb3J5IG92ZXJ3cml0ZSBidWcuCgpNb24gT2N0IDI2IDExOjA0OjEzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9lZGl0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmM6IFBhc2NhbCBDdW9xIDxwY3VvcUBlbnMtbHlvbi5mcj4KCTMyLWJpdCBjbGlwYm9hcmQgc3VwcG9ydC4KCgkqIHdpbmRvd3MvcXVldWUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXggZm9yIFFVRVVFX1NpZ25hbDogQWx3YXlzIHVzZSBQb3N0RXZlbnQgaWYgbm8gdGhyZWFkIGlzIHdhaXRpbmcKCW9uIHRoZSBxdWV1ZS4KCgkqIHdpbmRvd3MvbWRpLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4ZWQgYSBtaW5vciBwcm9ibGVtIHdpdGggdGhlIG1lbnVzIGZvciBtZGkgY2hpbGQgd2luZG93cy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBubyBsb25nZXIgbmVjZXNzYXJ5IGNvbW1lbnRlZCBvdXQgY29kZSwgZGVzdHJveSBvbGQgd2luZG93Cgl3aGVuIFNldERpc3BsYXlNb2RlIGlzIGNhbGxlZCBhZ2FpbiwgRW51bURpc3BsYXlNb2RlcyBub3cgcmV0dXJucwoJYWxsIHBvc3NpYmxlIG1vZGVzICh1c2luZyBhIHN0YXRpYyBsaXN0KS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQW5vbiBzaGFyZWQgbWFwcGluZyBmaXhlZCBmb3IgZmlsZSBzaGFyaW5nLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gT2N0IDI1IDEwOjMyOjIzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvb2xlMm5scy5jLCBpbmNsdWRlL3dpbm5scy5oOiBBbmRyZWFzIE1vaHIgPDEwMC4zMDkzNkBnZXJtYW55Lm5ldD4KCUZpeGVzIGZvciBMQU5HX05FVVRSQUwuCgoJKiBpbmNsdWRlL3Rhc2suaDoKCUFkZGVkIHNvbWUgcGFkZGluZyB0byB0aGUgUERCIGZvciBpbGwtYmVoYXZpbmcgYXBwcyAocHJvYmxlbSByZXBvcnRlZAoJYnkgQW5kcmVhcyBNb2hyKS4KCgkqIGRvY3VtZW50YXRpb24vaW9wb3J0LXRyYWNlLWhpbnRzLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIG1pc2NlbXUvaW5zdHIuYzoKCUpvbmF0aGFuIEJ1enphcmQgPGphYkBoZXgucHJlc3RlbC5jby51az4KCUFkZGVkIGEgbmV3IGRlYnVnZ2luZyBjaGFubmVsIGlvIHRvIGFsbG93IHJlYWQvd3JpdGVzIG9uIGEgcG9ydCB0byBiZQoJbG9nZ2VkIHRvIGEgZmlsZS4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPERhdmlkLkZhdXJlQGluc2EtbHlvbi5mcj4KCVJlcGxhY2VkIDB4MDAgd2l0aCAweDAxIGluIHRoZSB2a2V5LT5zYW5jb2RlIGFycmF5LCBzbyB0aGF0IG5vIGtleSBpcwoJaWdub3JlZC4gMHgwMCBpcyB1c2VkIGZvciBnZW5lcmF0ZWQga2V5IGV2ZW50cyBvbmx5LgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCURvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJQVBJIERvY3VtZW50YXRpb24gZm9yIFNlbmRNZXNzYWdlLCBHZXRUaWNrQ291bnQsIFBvc3RRdWl0TWVzc2FnZSwKCUdldE1lc3NhZ2VQb3MsIEdldE1lc3NhZ2VUaW1lLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEZWxldGUgdGhlIGZpbGVuYW1lIGZvciB0aGUgbWFwcGluZyBpbnN0YW50bHkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglNaWNoYWVsIFBvb2xlIDxwb29sZUBncmF2aXRvbi5yZXMuY211LmVkdT4KCVN0dWIgZm9yIFNIU2ltcGxlSURMaXN0RnJvbVBhdGguCgoJKiBsb2FkZXIvdGFzay5jOiBGaXhlZCBidWcgaW4gU3dpdGNoU3RhY2tUby4KClNhdCBPY3QgMjQgMTM6MDY6MTYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNoZWNrIGlmIHNjcm9sbGJhciBhbmQgcGFyZW50IGFyZSB2aXNpYmxlIGJlZm9yZSByZWRyYXcuCgoJKiBpZjE2MzIvc2hlbGwuc3BlYywgaW5jbHVkZS9zaGVsbC5oLCBtaXNjL3NoZWxsLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUthaSBNb3JpY2ggPGthaS5tb3JpY2hAZGFybXN0YWR0Lm5ldHN1cmYuZGU+CglBZGRlZCBEcmFnKjMyIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvZXZlbnQuYzogS2FpIE1vcmljaCA8a2FpLm1vcmljaEBkYXJtc3RhZHQubmV0c3VyZi5kZT4KCUFkZGVkIERyYWcmRHJvcCBmcm9tIEtERSBhcHAgdG8gMTYvMzIgYml0IFdpbmRvemUgYXBwLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEthaSBNb3JpY2ggPGthaS5tb3JpY2hAZGFybXN0YWR0Lm5ldHN1cmYuZGU+CglBZGRlZCBGSVhNRSBtZXNzYWdlIGluIFBvc3RNZXNzYWdlMzJ4IGlmIHBhcmFtZXRlcnMgYXJlIHRydW5jYXRlZAoJd2hlbiBjYWxsaW5nIFBvc3RNZXNzYWdlMTYuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzdXBwb3J0IGZvciBnbG9iYWwgaGFuZGxlcywgaW1wbGVtZW50ZWQgQ29udmVydFRvR2xvYmFsSGFuZGxlLgoJQWxsb2NhdGUgc3RhcnR1cCBkYXRhIGFuZCAxNi1iaXQgc3RhY2sgZm9yIGluaXRpYWwgcHJvY2Vzcy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS50ZXhpbmZvOiBMZWlnaCBXZWRkaW5nIDxsd2VkZGluZ0Bjb3JwbGluay5jb20uYXU+CglTbWFsbCBmaXguCgoJKiBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vRXMucmMsIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9Fcy5yYywgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY2xvY2svRXMucmMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvRXMucmMsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW46CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCUFkZGVkIFNwYW5pc2ggcmVzb3VyY2VzLgoKCSogb2xlL25scy9ldXEubmxzLCByZXNvdXJjZXMvc3lzcmVzX0VzLnJjOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglTbWFsbCBjb3JyZWN0aW9ucy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTG9hZExpYnJhcnlFeFcgc3BlYyBhZGRlZCAoZnVuY3Rpb24gd2FzIHRoZXJlKS4KCVNldFByb2Nlc3NQcmlvcml0eUJvb3N0IHN0dWIgYWRkZWQuCgoJKiBtc2Rvcy9kcG1pLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIFNvbGFyaXMuCgoJKiBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvZGlzcGRpYi5zcGVjLCBpbmNsdWRlL2Rpc3BkaWIuaCwgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2Rpc3BkaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgRGlzcGxheURpYi4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhY2sgdG8gc3VwcG9ydCBpbnRlZ2VyIGlkcyBpbiBhbGwgc3RhdGljIGNvbnRyb2xzLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQmVnaW5uaW5nIG9mIG1vdXNlIHN1cHBvcnQgaW4gRGlyZWN0SW5wdXQgKG9ubHkgInN0YW5kYXJkIiBtb3VzZQoJY29uZmlndXJhdGlvbiBzdXBwb3J0ZWQgZm9yIG5vdykuCgoJKiBpbmNsdWRlLyouaCwgZGxscy9jb21jdGwzMi8qLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgeHh4X1VucmVnaXN0ZXIoKSBmdW5jdGlvbnMgdG8gYWxsIGNvbW1vbiBjb250cm9scy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9scywgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVNvbWUgbWlub3IgaW1wcm92ZW1lbnRzIGFuZCBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgaW5jbHVkZS9yZWJhci5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIHRoZSByZWJhciBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgdHJhbnNwYXJlbnQgYW5kIHRyYWNraW5nIHRvb2x0aXBzLgoKCSogY29udHJvbHMvbWVudS5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgYSBwb3B1cCBtZW51IHNlbGVjdGlvbiBidWcuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgRHJhd0NhcHRpb24xNigpIGFuZCBEcmF3Q2FwdGlvblRlbXAxNigpLgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBEYXZpZCBGYXVyZSA8RGF2aWQuRmF1cmVAaW5zYS1seW9uLmZyPgoJRml4ZWQgd2FybmluZy4KCgkqIGdyYXBoaWNzL3BzZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9wc2Rydi9iaXRtYXAuYywgZ3JhcGhpY3MvcHNkcnYvYnJ1c2guYywgZ3JhcGhpY3MvcHNkcnYvZm9udC5jLCBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcHNkcnYuaCwgb2JqZWN0cy9kaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkcyBBcmMsIENob3JkLCBHZXRDaGFyV2lkdGgsIFBpZSwgUG9seVBvbHlnb24sIFBvbHlQb2x5bGluZSwgUm91bmRSZWN0LAoJU2V0UGl4ZWwsIGhhdGNoZWQgYnJ1c2hlcyBhbmQgYSBzdHViIGZvciBTdHJldGNoRElCaXRzIHRvIHRoZSBQb3N0U2NyaXB0Cglkcml2ZXIuCgoJKiBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW50ZXJydXB0cy5jOgoJSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgaW50MTcgYW5kIGludDE5LgoKCSogbXNkb3MvaW50MTkuYzogQ2FybCB2YW4gU2NoYWlrIDxjYXJsQGRyZWFtY29hdC5jaGUudWN0LmFjLnphPgoJU3R1YnMgZm9yIGRvcyBtb2RlIHJlYm9vdCBpbnRlcnJ1cHQuCgoJKiBtc2Rvcy9pbnQxNy5jOiBDYXJsIHZhbiBTY2hhaWsgPGNhcmxAZHJlYW1jb2F0LmNoZS51Y3QuYWMuemE+CglTb21lIHByaW50ZXIgc3R1YnMgZm9yIERPUyBhZGRlZC4KCgkqIG1zZG9zL2ludDEzLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCU1vcmUgc3R1YnMgYWRkZWQuIFRoZXNlIGNoYW5nZXMgYXJlIG9ubHkgcGFydGlhbGx5IG1pbmUsIEkganVzdCBtYWRlCgl0aGVtIGNvbXBpbGUuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglBZGRlZCBzb21lIHRyYWNlcyBhbmQgY2xlYW5lZCB1cCBhIGNvdXBsZSBvZiB0aGluZ3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgbWVtb3J5L3N0cmluZy5jLCBvbGUvb2xlMm5scy5jLCByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGFuZ2VkIHNvbWUgc3RyaW5nLXNoZWxsMzIgZnVuY3Rpb25zIHRvIDMyQVcsIHBhcmFtZXRlciBhcmUKCW9zIGRlcGVuZGluZyAzMkEgb3IgMzJXICgtd2ludmVyIG50MzUxIG9yIG50NDApLCBzb21lIG5ldyBmdW5jdGlvbnMuCglTb21lIGZpeGVzIGluIG9sZTJubHMuCglOZXcgT0xFMk5MU19DaGVja0xvY2FsZSgpIHRvIGhhbmRsZSBMb2NhbGVfVXNlcl9EZWZhdWx0IGFuZAoJTG9jYWxlX1N5c3RlbV9EZWZhdWx0LgoJU2hlbGwzMiBub3cgZHluYW1pY2x5IGxpbmtzIHRvIERQQV8qKCksIGNvbWRsZzMyIHdvcmtzIGFnYWluCgkoY29tY3RsMzIgaGVhcCBhbGxvYyBwYXRjaCBicm9rZSBpdCkuCgoJKiBpbmNsdWRlL3dpbnZlcnNpb24uaCwgbWlzYy92ZXJzaW9uLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIFZFUlNJT05fSXNPc1VuaWNvZGUoKS4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1vcmUgb2ZmLWJ5LW9uZSBlcnJvcnMgZml4ZWQuCgoJKiBpbmNsdWRlL2ZpbGUuaCwgbWlzYy9jcnRkbGwuYywgbXNkb3MvdnhkLmMsIHdpbjMyL2ZpbGUuYywgZmlsZXMvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmlsZSBzaGFyaW5nIGZpeGVzLgoKRnJpIE9jdCAyMyAxNzoyNjo0NCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jb21tZGxnLmM6IE5pY2sgSG9sbG93YXkgPGFsZmllQGFsZmllLmRlbW9uLmNvLnVrPgoJQnVnIGZpeC4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgRE9TIGVudmlyb25tZW50IHBhc3NpbmcuCgoJKiBtaXNjL21haW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTeXNtZXRyaWNzMzJXIGZvciBTUElfR0VUSUNPTlRJVExFTE9HRk9OVCByZXR1cm5zIGNvcnJlY3QgZm9udG5hbWUuCgoJKiBpbmNsdWRlL2ZvbnQuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBGT05UX0dldE9iamVjdDMyVygpLCBHZXRPYmplY3QzMlcoKS4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbjMyL29yZGluYWxzLmMsIHdpbmRvd3MvdXNlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YiBSZWdpc3RlclRhc2tMaXN0LgoJTmV3IGZ1bmN0aW9uIEVudW1EaXNwbGF5U2V0dGluZ3MzMlcoKS4KCgkqIG1pc2MvbnRkbGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3JlIHBhcmFtZXRlciBjaGVja2luZyBpbiBSbHRDb3B5U2lkLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW9yZSBtZXNzYWdlIG1hcHBpbmcgMzJBPC0tPjMyVyBmb3IgRU1fLCBDQl8sIExCXyBmb3IgVW5pY29kZS4KCgkqIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9hdmlmaWwzMi5zcGVjLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBuZXcgZGxsIGF2aWZpbDMyLmRsbC4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvZHBtaS5jLCBpbmNsdWRlL2Rvc2V4ZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXJzdCBzaG90IGF0IERQTUkgcmVhbG1vZGUgY2FsbHMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHNldmVyYWwgYnVncyB3aXRoIERMTCBpbml0aWFsaXphdGlvbi4KClRodSBPY3QgMjIgMTc6MDI6MjUgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9zeXNsZXZlbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG9yZGluYWwgZm9yIHR3byBzeXNsZXZlbCBmdW5jdGlvbnMuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbm90aGVyIG1pc3NpbmcgV0lOQVBJLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIGNvcnJlY3Rpb25zIGluIG1taW8gZGVjbGFyYXRpb25zLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVGFrZSB2aXJ0dWFsIHNpemVzIGluIGFjY291bnQgZm9yIHRoZSB0b3RhbCB2bWEgc2l6ZS4KCgkqIG9sZS9ubHMvcm9tLm5sczogRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUFkZCBzb21lIG1vcmUgTkxTIGRlZmluaXRpb25zIGZvciB0aGUgUm9tYW5pYW4gbGFuZ3VhZ2UuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgcHJvZ3JhbXMgKHF1YWtlMiBldCBhbCkgZG8gY2hlY2sgZm9yIERTQ0FQU19FTVVMRFJJVkVSIGFuZCBzdG9wCgl0byB3b3JrLiAnQWRqdXN0JyBjYXBzIGZsYWdzIGFjY29yZGluZ2x5LgoKCSogb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJUGV0ZSBSYXR6bGFmZiA8cHJhdHpsYWZmQGNmYS5oYXJ2YXJkLmVkdT4KCVN0dWIgZm9yIENvQ3JlYXRlR3VpZCgpLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBtdWx0aW1lZGlhL21jaWNkYS5jOgoJQnJpYW4gTGl0emluZ2VyIDxicmlhbkBsaXR6aW5nZXIuY29tPgoJRml4ZXMgZm9yIEZyZWVCU0QuCgoJKiBsaWJ0ZXN0Ly5jdnNpZ25vcmUsIGxpYnRlc3QvTWFrZWZpbGUuaW46CglQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQG1pbmVydmEuY2MudWl0Lm5vPgoJTWFrZSBzdXJlIGhlbGxvM3Jlcy5oIGlzIGdlbmVyYXRlZCBldmVuIGlmICdtYWtlIGRlcGVuZCcgbmV2ZXIgaGFzCgliZWVuIHJ1bi4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4ZWQgbW92aW5nIGFuZCBzaXppbmcgb2YgY2hpbGQgd2luZG93cy4KCgkqIGluY2x1ZGUvdHNfeGxpYi5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgd2luZG93cy9rZXlib2FyZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglYUXVlcnlLZXltYXAgLT4gVFNYUXVlcnlLZXltYXAgKGZpeGVzIHRoZSBYSU8gZXJyb3JzIHJlcG9ydGVkKS4KCldlZCBPY3QgMjEgMTc6MjA6NDggMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbWlzY2VtdS9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGluZGlyZWN0aW9uIGZvciBjdHhfZGVidWcgdG8gdGhlIERPUyBsb2FkZXIsIHNvIFdpbmVsaWIgd29ya3MKCWFnYWluLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdXBwb3J0IGFub24gc2hhcmVkIG1hcHBpbmdzIHVzaW5nIHRlbXBvcmFyeSBmaWxlcyAod29udCBiZSBkZWxldGVkCgl5ZXQpLgoKCSogbWlzYy9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2FzIGZyZWVpbmcgdGhlIGluY29ycmVjdCBwb2ludGVycyAtPiBjcmFzaCBpbiBtYWxsb2NzL2ZyZWVzLgoKCSogZmlsZXMvZG9zX2ZzLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGVmaW5lRG9zRGV2aWNlIHN0dWIgYWRkZWQuCgoJKiBtaXNjZW11L21haW4uYywgd2luZS5pbmk6IENoYWQgUG93ZWxsIChweHB4QHVzYS5uZXQpCglBZGRlZCBhIGRlZmF1bHQgcHJvZ3JhbSBvcHRpb24gaW4gd2luZS5jb25mIGluIHNlY3Rpb24gW3Byb2dyYW1zXSBrZXkKCURlZmF1bHQuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6IERhdmlkIEN1dGhiZXJ0IDxkYWN1dEBlY2UuY211LmVkdT4KCUJldHRlciBmaXggZm9yIHRoaXNfaXNfYV9zeW50YXhfZXJyb3IuCgoJKiBvbGUvbmxzLyoubmxzOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglBZGRlZCB0aGUgZW50cmllcyBmb3IgTE9DQUxFX1NJU082MzlMQU5HTkFNRSBhbmQKCUxPQ0FMRV9TSVNPMzE2NkNUUllOQU1FLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJVXBkYXRlZCBtYW5wYWdlLgoKCSogcmVsYXkzMi9tc2FjbTMyLnNwZWM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgd3Jvbmcgb3JkaW5hbHMuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeGVkIGEgYnVnIGluIFJlY3RJblJlZ2lvbi4KClR1ZSBPY3QgMjAgMTU6MjY6MjYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludGVycnVwdHMuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglSZW1vdmVkIGFuIGluY29ycmVjdCBlcnJvciBtZXNzYWdlLgoKCSogZmlsZXMvZHJpdmUuYzogUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUBtaW5lcnZhLmNjLnVpdC5ubz4KCU1ha2Ugc3VyZSB0aGUgYWNjZXNzIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIHVzZWQgdG8gZ2V0IGxhYmVsIGFuZCBzZXJpYWwKCW51bWJlci4KCk1vbiBPY3QgMTkgMDg6NDg6MjQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9vbGUybmxzLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEBob2wuZnI+CglGaXhlZCBidWcgb24gcGxhdGZvcm1zIHdlcmUgYnVmZmVycyByZXR1cm5lZCBieSBnZXRlbnYoKSBzaGFsbCBub3QgYmUKCWZyZWUoKSdlZC4gQWRkZWQgRnJlbmNoIChkZWZhdWx0KSBpbiBsb2NhbGUgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6IERhdmUgQ3V0aGJlcnQgPGRhY3V0QGVjZS5jbXUuZWR1PgoJQ2hhbmdlZCAidGhpcyBpcyBhIHN5bnRheCBlcnJvciIgdG8gInRoaXNfaXNfYV9zeW50YXhfZXJyb3IiIHRvIG1ha2UgYQoJY29tcGlsZS10aW1lIGVycm9yIG1lc3NhZ2UgbWFrZSBtb3JlIHNlbnNlLgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgb2ZmIGJ5IG9uZSBlcnJvciBpbiBIQU5ETEVfR2V0T2JqUHRyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gT2N0IDE4IDE0OjQ4OjMxIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRyeSB0byBpbXBsZW1lbnQgdGhlIE9GX1NIQVJFX1hYWCBvcHRpb25zLgoJTW92ZSB0aGUgbW9kZSB0cmFuc2xhdGlvbnMgdG8gZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9tYWluLmgsIG9sZS9jb21wb2JqLmMsIG9sZS9pZnMuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGUybmxzLmMsIG9sZS9vbGVzdnIuYywgb2xlL3N0b3JhZ2UuYzoKCU1hdHRoZXcgQmVja2VyIDxtYmVja2VyQGdsYXNzY2l0eS5uZXQ+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdHViIGZvciBDb1NldFN0YXRlMzIuCgoJKiBtaXNjZW11L21haW4uYzogQ2hhZCBQb3dlbGwgPHB4cHhAdXNhLm5ldD4KCUFkZGVkIGFiaWxpdHkgdG8gcmVhZCBhIHN0YXJ0dXAgcHJvZ3JhbSBmcm9tIHdpbmUuaW5pIGZpbGUuCglQdXQgaXQgaW4gc2VjdGlvbiBbcHJvZ3JhbXNdIGtleSBTdGFydHVwLgoKCSogaW5jbHVkZS90cmFja2Jhci5oLCBpbmNsdWRlL3RyZWV2aWV3LmgsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZ1cnRoZXIgaW1wcm92ZW1lbnRzLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglJbXBsZW1lbnRlZCBMb2FkQ3Vyc29yRnJvbUZpbGUsIGZpeGVkIERyYXdJY29uRXggdG8gc3VwcG9ydCBvZmZzY3JlZW4KCWRyYXdpbmcsIGZpeGVkIENVUlNPUklDT05fQ3JlYXRlRnJvbVJlc291cmNlIHRvIHN1cHBvcnQgTFJfIHNlbWFudGljcy4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmM6CglUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUZpeGVkIExvYWRJbWFnZSB0byBzdXBwb3J0IGFsbW9zdCBhbGwgTFJfIGZsYWdzLgoKCSogb2JqZWN0cy9kaWIuYzogVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXhlZCBidWcgaW4gRElCX1NldEltYWdlQml0c19STEU4IChiZWNhdXNlICdjb2xvcicgdmFyIHdhcyBXT1JELCBhbGwKCUNPTE9SRUZzIGhhZCByZWQgcGFydCB6ZXJvZWQpIHRoYXQgbWFkZSBwbGVudHkgb2YgY3lhbiBjb2xvcnMsIG1pbm9yCglidWcgZml4ZXMsIGNoYW5nZXMgdG8gc3VwcG9ydCBMUl8gZmxhZ3MuCgoJKiBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglBZGRlZCBWSVJUVUFMX01hcEZpbGVXIHRvIG1hcCBmaWxlIHRvIG1lbW9yeSBpbiBvbmUgZnVuY3Rpb24gY2FsbC4KCgkqIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgd2luZG93cy9tdWx0aW1vbi5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglNb3ZlZCBNdWx0aW1vbml0b3IgQVBJIGRlY2xhcmF0aW9ucyB0byB3aW5kb3dzLmguCgoJKiBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2RyaXZlci5oLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCByZWxheTMyL3dpbm1tLnNwZWMsIHdpbmRvd3MvZHJpdmVyLmM6CglUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUltcGxlbWVudGVkIERlZkRyaXZlclByb2MzMiBmcm9tIHdpbm1tLmRsbC4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCBpbmNsdWRlL3Njcm9sbC5oLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQWxleCBLb3JvYmthIDxrb3JvYmthQGFtcy5zdW55c2IuZWR1PgoJR290IHJpZCBvZiBmbGlja2VyaW5nIHNjcm9sbGJhciBhcnJvd3MuIE1ESSBzY3JvbGxpbmcgc3BlZWRlZCB1cCBhCgliaXQuCgoJKiBpbmNsdWRlL3dpbm5scy5oLCBvbGUvbmxzL2RldS5ubHMsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUdldExvY2FsZUluZm8zMkEgY2FuIGhhbmRsZSBsZW49MCBub3csIHNldHMgTGFzdEVycm9yIGFuZCB0b3VjaGVzCglidWZmZXIgb25seSB3aGVuIG5lY2Vzc2FyeS4KCVVwZGF0ZWQgZGV1Lm5scyBhbmQgc29tZSBMQ1RZUEVTIGluIHdpbm5scy5oLgoKCSogaWYxNjMyL3JlbGF5LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDYWxsUHJvY1tFeF0zMlcgY2FsbGVkIHdpdGggbHBQcm9jQWRkcmVzcz09TlVMTCBzaG91bGQgcmV0dXJuIHplcm8gYW5kCglub3QgY3Jhc2guCgpTYXQgT2N0IDE3IDEzOjA3OjQ4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVkdWNlZCBodWdlICgxR0IpIGhlYXAgY3JlYXRpb24gdGhhdCBjYXVzZWQgU3RhcmNyYWZ0IHRvIGZhaWwuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG11bHRpbWVkaWEvZHBsYXkuYywgd2luZG93cy9kaWFsb2cuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIFNvbGFyaXMuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDb21waWxlIGZpeCBmb3Igbm9uIE9TUyBzeXN0ZW1zLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDb21waWxlIGZpeCBmb3Igbm9uIFhGODYtREdBIHN5c3RlbXMuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L3ZvbGluZm8uYzoKCVBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAdGQub3JnLnVpdC5ubz4KCU5ldyBmaWxlIHRvIHRlc3QgRFJJVkVfR2V0TGFiZWwuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsLmNhPgoJU21hbGwsIHN1Ym9wdGltYWwsIGZpeCBmb3IgMzIgYml0IGNkYXVkaW8gb3BlbiByb3V0aW5lcy4gTmVlZHMgcHJvcGVyCgkzMmJpdCBjZGF1ZGlvIGJpdCBzdXBwb3J0IGJlZm9yZSBpdCBjYW4gYmUgcmVtb3ZlZC4uLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbC5jYT4KCUFkZGVkIGEgYnVuY2ggb2Ygc3R1YnMgZm9yIGRkcmF3IHN1ZmFjZSByb3V0aW5lcy4gQWxsIHN0dWJzIGZvcgoJc3VyZmFjZSBwcmVzZW50IG5vdy4KCUNvbW1lbnRlZCBvdXQgbWVzc2FnZSBwdW1wIGNhbGxzLiBJIGRvbid0IHNlZSBhIHJlYXNvbiBmb3IgdGhlbSBiZWluZwoJdGhlcmUuIEV2ZXJ5dGhpbmcgd29ya3MgZmluZSB3aXRoIC1kZXNrdG9wIGFuZCAtbWFuYWdlZCBzdGlsbCBoYXMKCXByb2JsZW1zLiBEaXNhZ3JlZW1lbnRzPwoKCSogb2xlL29sZTJubHMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBHZXRMb2NhbGVJbmZvMzJBIGZvciBvdGhlciBsYW5ndWFnZXMgdGhhbiBlbl91ay4KCU1hZGUgaXQgcmVjb2duaXNlIExPQ0FMRV9TWVNURU1fREVGQVVMVCwgTE9DQUxFX1NZU1RFTV9ERUZBVUxUIGFuZAoJbGFzdCBidXQgbm90IGxlYXN0IHRoZSBmaXJzdCBhcmd1bWVudCBsY2lkIHdoZXJlIGlzIGFsbCBhYm91dC4uLgoKCSogaW5jbHVkZS9zeXNsZXZlbC5oLCBtaXNjL3JlZ2lzdHJ5LmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9kc291bmQuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBtdWx0aW1lZGlhL3RpbWUuYywgd2luZG93cy9jYXJldC5jLCBkbGxzL21zYWNtMzIvYnVpbHRpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIG1vcmUgbWlzc2luZyBXSU5BUElzIChob3BlZnVsbHkgY29ycmVjdCkuCgoJKiBvbGUvb2xlMm5scy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHRoZSA9IC0+ID09IGJ1Zy4KCgkqIG1zZG9zL2ludDJmLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCVNoZWxsIHBhcmFtZXRlcnMgKGNvbmZpZy5zeXMpIGFuZCBBTlNJIHN1cHBvcnQgc3R1YnMuCgoJKiBtc2Rvcy9NYWtlZmlsZS5pbjogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgaW50MTYuYyBhbmQgaW50MjkuYy4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglNb3JlIGludGVycnVwdHMgdGhhdCBjYW4gYmUgZG9uZSBmcm9tIERPUyBtb2RlLgoKCSogbXNkb3MvaW50MjkuYzogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgaW50MjkgKEZhc3QgV3JpdGUgdG8gU2NyZWVuKSBzdXBwb3J0LgoKCSogbXNkb3MvaW50MTYuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oOgoJSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgaW50MTYgKEtleWJvYXJkKSBzdXBwb3J0LCBtb3N0bHkgc3R1YnMuCgpGcmkgT2N0IDE2IDE1OjQwOjIxIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYW55IGJ1Z2ZpeGVzLCBuZXcgc3R1YnMgU0hHZXRSZWFsSURMLCBTSFJlZ1F1ZXJ5VmFsdWUzMlcsCglTSFJlZ1F1ZXJ5VmFsdWVFeDMyVywgU3RyUmV0VG9TdHJOLCBTdHJDaHJXLCBTSEFsbG9jU2hhcmVkLAoJU0hMb2NrU2hhcmVkLCBTSFVubG9ja1NoYXJlZCwgU0hGcmVlU2hhcmVkLCBTZXRBcHBTdGFydGluZ0N1cnNvcjMyLAoJU0hMb2FkT0xFMzIsIFNoZWxsX01lcmdlTWVudXMzMiwgUGF0aEdldERyaXZlTnVtYmVyMzIsIERyaXZlVHlwZTMyLAoJU0hBYm9ydEludm9rZUNvbW1hbmQsIFNIT3V0T2ZNZW1vcnlNZXNzYWdlQm94LCBTSEZsdXNoQ2xpcGJvYXJkLgoKCSogbWlzYy9udGRsbC5jLCByZWxheTMyL250ZGxsLnNwZWM6CglEaWV0bWFyIEtsaW5nIDxkaWV0bWFyLmtsaW5nQHVzYS5uZXQ+CglBZGRlZCB1bmRvY3VtZW50ZWQgZnVuY3Rpb24gUnRsT3BlbkN1cnJlbnRVc2VyLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmMsIG1pc2Mvc2hlbGwuYywgbWlzYy92ZXIuYywgbWlzYy92ZXJzaW9uLmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGluY2x1ZGUvbmVleGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3BlZXhlLmgsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvbXNjLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZW5hbWVkIGFsbCBMUElNQUdFXyogdHlwZXMgdG8gUElNQUdFXyouCgpUaHUgT2N0IDE1IDEzOjAzOjEwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4ZWQgYW4gZXJyb3Igd2hlbiBhbiBvd25lZCB3aW5kb3cgYWN0aXZhdGVzIGl0cyBvd25lciBkdXJpbmcKCWNyZWF0aW9uLgoKCSogd2luZG93cy9kZWZkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNsb3NpbmcgYSBkaWFsb2cgdXNpbmcgdGhlIG1lbnUgYmFyICgieCIgb3IgIi0iIGJ1dHRvbiBvciB3aW5kb3dzCgltZW51KSBtdXN0IGdlbmVyYXRlIGEgV01fQ09NTUFORCtJRENBTkNFTCBtZXNzYWdlLCB1bmxpa2UgY2xvc2luZwoJbm9ybWFsIHdpbmRvd3Mgd2hlbiBEZXN0cm95V2luZG93KCkgaXMgY2FsbGVkLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bXNtZWlzc25AY2lwLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbWlzc2luZyBXSU5BUElzLgoKCSogd2luZG93cy93aW5wb3MuYywgd2luMzIvb3JkaW5hbHMuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzIFByaXZhdGVFeHRyYWN0SWNvbkV4W0FXXSwgUHJpdmF0ZUV4dHJhY3RJY29uc1csCglSZWdpc3RlclNoZWxsSG9va1dpbmRvdywgRGVyZWdpc3RlclNoZWxsSG9va1dpbmRvdywgR2V0UHJvZ21hbldpbmRvdywKCUdldFRhc2ttYW5XaW5kb3csIFNldFByb2dtYW5XaW5kb3csIFNldFNoZWxsV2luZG93RXgsCglTZXRUYXNrbWFuV2luZG93LgoKCSogcmVsYXkzMi9udGRsbC5zcGVjLCBtaXNjL250ZGxsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicyBOdFF1ZXJ5SW5mb3JtYXRpb25UaHJlYWQsIE50UXVlcnlJbmZvcm1hdGlvblRva2VuLAoJUnRsQWxsb2NhdGVBbmRJbml0aWFsaXplU2lkLCBSdGxFcXVhbFNpZCwgUnRsRnJlZVNpZC4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXhlZCBQbGF5U291bmQgdG8gc3RhcnQgaXRzIHRocmVhZCB0aGUgcmlnaHQgd2F5LgoKV2VkIE9jdCAxNCAxODo0MDozNSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jOgoJQWxleCBLb3JvYmthIDxrb3JvYmthQGFtcy5zdW55c2IuZWR1PgoJQ0JfU0VUQ1VSU0VMIGFuZCBzb21lIG90aGVyIGZpeGVzLgoKCSogd2luZG93cy9xdWV1ZS5jOiBBbGV4IEtvcm9ia2EgPGtvcm9ia2FAYW1zLnN1bnlzYi5lZHU+CglCZXR0ZXIgUVVFVUVfRmx1c2hNZXNzYWdlcygpLgoKCSogcmVsYXkzMi9nZGkzMi5zcGVjLCBvYmplY3RzL2ZvbnQuYywgaW5jbHVkZS93aW5kb3dzLmgsIGlmMTYzMi9nZGkuc3BlYzoKCU1vc2hlIFZhaW5lciA8bW9zaGV2QGVhc3liYXNlLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgR2V0T3V0bGluZVRleHRNZXRyaWNzMzJBLgoJQWRkZWQgc3RydWN0dXJlcyBmb3IgT1VUTElORVRFWFRNRVRSSUNTLgoKCSogb2JqZWN0cy9kYy5jLCBpbmNsdWRlL2dkaS5oLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG8gbm90IGNsaXAgc291cmNlIHJlY3RhbmdsZSBldmVuIGJ5IHZpc2libGUgcmVnaW9uIGZvciBiaXRibHRzLgoJQWRkZWQgZmllbGQgJ3RvdGFsRXh0ZW50JyB0byBXSU5fRENfSU5GTy4KCgkqIG1zZG9zL3Z4ZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHN0dWIgZm9yIFZNTSBQTSBBUEkgQUg9MDI2W2RlXSAobmV2ZXIgc2F5ICdzYWZlIG1vZGUnKS4KCgkqIG1lbW9yeS9oZWFwLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBMb2NhbDMyRnJlZSBjYXVzZWQgZnJlZSBoYW5kbGVzIGxpc3QgY29ycnVwdGlvbi4KCgkqIGluY2x1ZGUvZGVidWd0b29scy5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIC0tZGlzYWJsZS1kZWJ1ZyBjb25maWcgb3B0aW9uLgoKVHVlIE9jdCAxMyAxMjo1MDowNCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUB0ZC5vcmcudWl0Lm5vPgoJQWRkZWQgc3R1YnMgU0hSZWdDbG9zZUtleSgpLCBTSFJlZ09wZW5LZXlbQVddKCksIFNIUmVnUXVlcnlWYWx1ZUV4QSgpCglhbmQgRmlsZUljb25Jbml0KCkgbmVlZGVkIGJ5IFdpbjk1IGV4cGxvcmVyLgoKTW9uIE9jdCAxMiAwNzoyNTo1NCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL21lbnUuYzoKCU5vcm1hbiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUltcHJvdmluZyBrZXlib2FyZCBoYW5kbGluZywgaW5jbHVkaW5nIGFjY2VsZXJhdG9yIGtleXMgaW4gZGlhbG9nCglib3hlcy4gQWxzbyBmaXhlcyBlbnRlciBrZXkgaW4gQWdlbnQzMiBlZGl0IGJveC4KClN1biBPY3QgMTEgMTk6Mzc6MjMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY29tbWRsZy5jOiBFcmljIFBvdWVjaCAgPGVyaWMucG91ZWNoQGxlbWVsLmZyPgoJQWRkZWQgc3VwcG9ydCBpbiBmaWxlIGRpYWxvZyBib3hlcyBoYW5kbGluZyBmb3IgZmlsdGVycyBsaWtlCgkiKi50eHQ7Ki5iYXQiLgoKCSogd2luMzIva2VybmVsMzIuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIG5ldyBQRSBETEwgaW5pdGFsaXphdGlvbiBjb2RlLCB0cnlpbmcgdG8gY2FsbCB0aGUKCURsbEVudHJ5UG9pbnQgcm91dGluZXMgYWx3YXlzIGluIGNvcnJlY3Qgb3JkZXIgOi0pCglCeXBhc3Mgc25vb3Bpbmcgd2hlbiBnZXR0aW5nIGRhdGEgYnVmZmVyIGFkZHJlc3NlcyAodGh1bmsgYnVmZmVycywKCV9fR1AgaGFuZGxlcnMpIGFuZCBmb3IgMzItYml0IHJvdXRpbmVzIGRpcmVjdGx5IGNhbGxlZCBmcm9tIDE2LWJpdAoJKGR1ZSB0byBzdGFjayBhZGRyZXNzIHNpemUgcHJvYmxlbXMpLgoKCSogd2luMzIvb3JkaW5hbHMuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIENvbW1vblVuaW1wU3R1YiwgTWFwSEluc3QoTFN8U0wpX1BOLCBXMzJTX0JhY2tUbzMyLgoJU3R1YiBmb3IgSG91c2VDbGVhbkxvZ2ljYWxseURlYWRIYW5kbGVzLCBmaXhlZCBrMzJ3dnNwcmludGZBLgoKCSogdG9vbHMvYnVpbGQuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIChwYXJ0aWFsbHkpIHRoZSBLRVJORUwgVGh1bmtsZXQgQVBJIGFuZCBDYWxsYmFjayBDbGllbnQKCUFQSSAoS0VSTkVMLjU2MC01NjgsNjA0LTYxMiw2MTktNjIyKS4KCUFkZGVkIHN0dWJzIGZvciBLMjI4LCBLMjM3LCBLRVJORUwuMzY1LCBLRVJORUwuNDQ3LgoKCSogb2JqZWN0cy9iaXRtYXAuYywgaWYxNjMyL2dkaS5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTdHVicyBmb3IgQ3JlYXRlVXNlcihEaXNjYXJkYWJsZSlCaXRtYXAxNi4KCgkqIG1lbW9yeS9oZWFwLmMsIGluY2x1ZGUvd2lubnQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgSEVBUF9XSU5FX0NPREUxNlNFRyBTRUdQVFIgaGVhcHMgd2l0aCAxNi1iaXQgY29kZSBzZWdtZW50cy4KCgkqIG1lbW9yeS9nbG9iYWwuYywgaW5jbHVkZS93aW5kb3dzLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUdsb2JhbEZpeDE2IGlzIHN1cHBvc2VkIHRvIHJldHVybiBzZWxlY3RvciB0byB0aGUgbWVtb3J5IGFyZWEuCgoJKiBtc2Rvcy92eGQuYywgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvY29tbS5zcGVjLCBpZjE2MzIvd3Byb2NzLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN0dWJzIGZvciBDT01NLkRSViwgUkVCT09ULlZYRCwgVkRELlZYRC4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvc3lzbGV2ZWwuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIGVtZXJnZW5jeSBURUIgc2VsZWN0b3IgdG8gYXZvaWQgZGVidWdnZXIgY3Jhc2hlcyB3aGVuIHN0ZXBwaW5nCgl0aHJvdWdoIHJlbGF5IHN0dWJzIChvciB3aGVuIEZTIGlzIGludmFsaWQgb3RoZXJ3aXNlKS4KCgkqIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9rZXlib2FyZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNT1VTRS5EUlYgcm91dGluZXMgbW92ZWQgdG8gZXZlbnQuYy4gQ2FsbCBtb3VzZSBldmVudCBwcm9jZWR1cmUuCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIGluY2x1ZGUvZGMuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGlmMTYzMi9nZGkuc3BlYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3BhdGguYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hhbmdlZCBEQyBtZW1iZXJzIHcuaFZpc1Jnbiwgdy5oQ2xpcFJnbiwgYW1kIHcuaEdDQ2xpcFJnbiB0bwoJY29vcmRpbmF0ZXMgcmVsYXRpdmUgdG8gdGhlIGRldmljZSwgbm90IHRoZSBEQyBvcmlnaW4uIFRoaXMgaXMKCW5lY2Vzc2FyeSB0byBjb3JyZWN0bHkgaW1wbGVtZW50IEdldENsaXBSZ24xNiBhbmQgSW5xdWlyZVZpc1Jnbi4KCVNlbGVjdFZpc1JnbiBhbHNvIGV4cGVjdHMgcmVnaW9uIGluIGRldmljZS1yZWxhdGl2ZSBjb29yZGluYXRlcy4KCUFkYXB0ZWQgdGhlIHJlc3Qgb2YgV2luZSB0byB0aGlzIGNvb3JkaW5hdGUgY2hhbmdlLgoJSW1wbGVtZW50ZWQgRXh0U2VsZWN0Q2xpcFJnbi4KCgkqIHRvb2xzL3dpbmFwaS1jaGVjaywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIGZpbGVzL2Rvc19mcy5jOgoJQW5kcmVhcyBNb2hyIDwxMDAuMzA5MzZAZ2VybWFueS5uZXQ+CglTbWFsbCBmaXguCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL25lZXhlLmgsIGlmMTYzMi9rZXJuZWwuc3BlYzoKCUFuZHJlYXMgTW9ociA8MTAwLjMwOTM2QGdlcm1hbnkubmV0PgoJWWV0IGFub3RoZXIgc21hbGwgc2VsZi1sb2FkZXIgZml4LgoKCSogZmlsZXMvZHJpdmUuYzogQW5kcmVhcyBNb2hyIDwxMDAuMzA5MzZAZ2VybWFueS5uZXQ+CglGaXhlZCBzZXZlcmUgYnVnOiBTZXRDdXJyZW50RGlyZWN0b3J5MzJBIGRpZG4ndCBzZXQgcFRhc2stPmN1cmRpcgoJY29ycmVjdGx5IGR1ZSB0byBjdXJyZW50IGRyaXZlIGJlaW5nIHNldCB0b28gbGF0ZS4KCgkqIE1ha2UucnVsZXMuaW46IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXNlICQoQVMpIGluc3RlYWQgb2YgJChDQykgdG8gY29tcGlsZSAucyBmaWxlcy4KCgkqIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9idWlsdGluMzIuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL21tcmVnLmgsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGRsbHMvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RhcnRlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgTVNBQ00uRExMLCBNU0FDTTMyLkRMTCBhbmQgSU1BR0VITFAuRExMLgoKCSogaW5jbHVkZS9pbWFnZWhscC5oLCByZWxheTMyL2ltYWdlaGxwLnNwZWMsIGRsbHMvaW1hZ2VobHAvLmN2c2lnbm9yZSwgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9pbWFnZWhscC9kZWJ1Zy5jLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYywgZGxscy9pbWFnZWhscC9pbnRlZ3JpdHkuYywgZGxscy9pbWFnZWhscC9pbnRlcm5hbC5jLCBkbGxzL2ltYWdlaGxwL21vZGlmeS5jLCBkbGxzL2ltYWdlaGxwL3N5bWJvbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBJTUFHRUhMUC5ETEwuCgoJKiBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvbXNhY21kcnYuaCwgcmVsYXkzMi9tc2FjbTMyLnNwZWMsIGlmMTYzMi9tc2FjbS5zcGVjLCBkbGxzL21zYWNtMzIvLmN2c2lnbm9yZSwgZGxscy9tc2FjbTMyL01ha2VmaWxlLmluLCBkbGxzL21zYWNtMzIvYnVpbHRpbi5jLCBkbGxzL21zYWNtMzIvZHJpdmVyLmMsIGRsbHMvbXNhY20zMi9maWx0ZXIuYywgZGxscy9tc2FjbTMyL2Zvcm1hdC5jLCBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYywgZGxscy9tc2FjbTMyL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtMzIvc3RyZWFtLmMsIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FjbV9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIE1TQUNNLkRMTCBhbmQgTVNBQ00zMi5ETEwuCgoJKiB3aW4zMi9kZXZpY2UuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIHRoaW5ncyB0aGF0IHdlcmUgZWFybGllciBhZGRlZCBieSBtaXN0YWtlLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVRoZSBpbXBsZW1lbnRhdGlvbiBvZiBtbWlvV3JpdGUgaXMgbm93IGNhbGxlZCBpbnN0ZWFkIG9mIHRoZSBzdHViLgoKCSogaW5jbHVkZS9zaGVsbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnZml4ZXMsIHNoZWxsdmlldyB1c2VzIERQQSdzIG5vdywgSVNoZWxsVmlld19HZXRJdGVtT2JqZWN0IGltcGxlbWVudGVkLgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzOiBTSEdldEZpbGVJbmZvMzJXLCBSZWFkQ2FiaW5ldFN0YXRlLCBXcml0ZUNhYmluZXRTdGF0ZSwgSXNVc2VyQWRtaW4uCglJbXBsZW1lbnRlZDogU0hHZXRQYXRoRnJvbUlETGlzdDMyVy4KCUNoYW5nZWQgUGF0aENvbWJpbmUuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHJ1Y3R1cmVzIERWQVNQRUNULCBUWU1FRCwgSURMTGlzdC4KCVNoZWxsIHNwZWNpZmljIGNsaXBib2FyZCBmb3JtYXRzLgoKCSogcmVsYXkzMi93aW5zcG9vbC5zcGVjLCBtaXNjL3ByaW50ZHJ2LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgRW51bVByaW50ZXJzVy4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGZpcnN0IGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBjbGFzcyBJRExMaXN0ICJJdGVtIElEIExpc3QgTGlzdCIgKGludGVybmFsKS4KCgkqIG1pc2MvdmVyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgY2hhbmdlcyAodXNlcyBISVdPUkQvTE9XT1JEKS4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglTYXQgT2N0IDEwIDEyOjAwOjAwIDE5OTggIEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBDcmVhdGVEaWFsb2dJbmRpcmVjdFBhcmFtQW9yVy4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdD4KCURvbid0IGluc3RhbGwgb2JqZWN0IGZpbGVzIHdoZW4gLS1kaXNhYmxlLWxpYiBpcyBzZWxlY3RlZC4KCgkqIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbXNjLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQ+CglEb24ndCBwcmludCBuYW1lIGZvciAzMiBiaXQgbGliIG11bHRpcGxlIHRpbWVzLgoJQ2xlYW4gdXAgcHJpbnRpbmcgaW4gREVCVUdfUHJvY2Vzc0RlZmVycmVkRGVidWcuCgoJKiBtZW1vcnkvaGVhcC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBjb250cm9scy9jb21iby5jOgoJRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJU21hbGwgZml4ZXMuCgoJKiBmaWxlcy9kcml2ZS5jOiBQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQHRkLm9yZy51aXQubm8+CglCdWdmaXg6IENoYW5nZWQgR2V0RHJpdmVUeXBlMzJBKE5VTEwpIHRvIHVzZSBjd2QncyByb290LgoKCSogb2xlL3R5cGVsaWIuYywgb2xlL2NvbXBvYmouYywgb2xlL2lmcy5jLCBvbGUvbW9uaWtlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZTJubHMuYywgb2xlL29sZWNsaS5jLCBvbGUvb2xlc3ZyLmMsIG9sZS9zdG9yYWdlLmMsIG1pc2MvbnRkbGwuYywgbWlzYy9yZWdpc3RyeS5jOgoJTWF0dGhldyBCZWNrZXIgPG1iZWNrZXJAZ2xhc3NjaXR5Lm5ldD4KCURvY3VtZW50YXRpb24gY29ycmVjdGlvbnMvc3RhbmRhcmRpemF0aW9ucy4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaXN0cmluZy5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oOgoJRXJpYyBQb3VlY2ggIDxlcmljLnBvdWVjaEBsZW1lbC5mcj4KCVN0YXJ0ZWQgY29kaW5nIDMyIGJpdCBNQ0kgaGFuZGxpbmcuCglBZGRlZCBPcGVuL0Nsb3NlIHRvIGxvdy1sZXZlbCBNQ0kgZHJpdmVycyAoYXVkaW8sIG1pZGksIGFuaW0sIGNkYSkuCglXcm90ZSBNQ0kgTUlESSBzdXBwb3J0LgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglZZXQgYW5vdGhlciBpbXByb3ZlbWVudCB0byB0aGUgYmV6aWVyIGNvZGUuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUdldFRpY2tDb3VudHMoKSBoYXMgYSBncmFudWxhcml0eSBpbiB3aW5kb3dzIG9mIDI1IG1zZWMncy4KCUdpcm90ZWwncyBzZXJpYWwgY29tbXVuaWNhdGlvbiBhcHBlYXJzIHRvIGRlcGVuZCBvbiBpdCwgc28gSSBndWVzcwoJaXQncyBhIGZlYXR1cmUuLi4KCgkqIG1pc2MvY29tbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJVXBkYXRlIHRoZSBtb2RlbW4gc3RhdHVzIGJpdCB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBSTFNEIGxpbmUgaXMKCWFjdGl2ZSBpbiBldmVyeSBjYWxsIHRvIEdldENvbW1FcnJvcigpLiBUaGlzIGlzIG5vdCB0aGUgcHJvcGVyIHBsYWNlLAoJYnV0IHNpbmNlIHdpbmUgZG9lc24ndCBkbyBhbnkgZXZlbnQtc3R1ZmYuLi4KCUZpeGVkIHNvbWUgVFJBQ0UgY2FsbCdzIGZhY2VkIHdpdGggbm9uIHplcm8gdGVybWluYXRlZCBzdHJpbmdzLgoJUmVzdG9yZSB0aGUgdGVybWluYWwgc3RhdGUgYXQgQ2xvc2VDb21tdCB0byB0aGUgc3RhdGUgaXQgd2FzIGF0CglPcGVuQ29tbSgpLCBzbyB0aGUgbW9kZW0gd2lsbCBnbyBvZmYtaG9vay4KCgkqIGxvYWRlci9tb2R1bGUuYzogQWxleGFuZGVyIExhcnNzb24gIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoJR2V0TW9kdWxlRmlsZU5hbWUzMkEoKSByZXR1cm5zIGxvbmcgZmlsZW5hbWUgaWYgYXBwIHNldHMgb3N2ZXJzaW9uID49Cgk0LjAuIEFsc28gbW92ZWQgdGhlIGxvbmcgZmlsZW5hbWUgaGFja2VyeSB0byBHZXRMb25nUGF0aE5hbWUzMkEoKSBzbwoJaXQgY2FuIGJlIHVzZWQgYnkgd2luMzIgcHJvZ3JhbXMuCgoJKiBmaWxlcy9kb3NfZnMuYzogQWxleGFuZGVyIExhcnNzb24gPGFsbGFAbHlzYXRvci5saXUuc2U+CglHZXRMb25nUGF0aE5hbWUzMkEoKSByZXR1cm5zIGRvcyBmb3JtYXQgbG9uZyBmaWxlbmFtZSBpbnN0ZWFkIG9mIHVuaXgKCWZvcm1hdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVNtYWxsIGZpeGVzLgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFNIRmx1c2hDbGlwYm9hcmQuCgoJKiByZWxheTMyL2NvbWN0bDMyLnNwZWMsIGluY2x1ZGUvY29tbWN0cmwuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgc29tZSB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zLgoJQ2hhbmdlZCBhbGdvcml0aG0gaW4gRFBBX1F1aWNrU29ydCgpLgoJRml4ZWQgaGVhcCBjcmVhdGlvbi9kZXN0cnVjdGlvbiBhbmQgY29udHJvbCBbdW5dcmVnaXN0cmF0aW9uIGluCglDb21DdGwzMkxpYk1haW4oKS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBhIGJ1Zy4KCgkqIGluY2x1ZGUvdG9vbHRpcHMuaCwgZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHRyYWNraW5nIHN1cHBvcnQgYW5kIGZpeGVkIGxvYWRpbmcgb2YgcmVzb3VyY2Ugc3RyaW5ncy4KCUFkZGVkIHVucmVnaXN0ZXIgY29kZS4KCgkqIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9pcGFkZHJlc3MuaCwgaW5jbHVkZS9uYXRpdmVmb250LmgsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgSVBBZGRyZXNzIGFuZCBOYXRpdmVGb250IGNvbnRyb2xzLgoKCSogaW5jbHVkZS9pbWFnZWxpc3QuaCwgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTb21lIG1pbm9yIGltcHJvdmVtZW50cy4KCgkqIGluY2x1ZGUvdG9vbGJhci5oLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBkcmF3aW5nIGFuZCBwbGFjZW1lbnQgY29kZS4gRXhwbG9yZXIgc3R5bGUgY29tbW9uIGRpYWxvZ3MgYXJlCglsb29raW5nIGdvb2Qgbm93LgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBidWcgaW4gRHJhd0ljb25FeDMyKCkuCgoJKiBtaXNjL21haW4uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIEdldFN5c3RlbUluZm9ybWF0aW9uMzJbQS9XXS4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oLCBpZjE2MzIvdXNlci5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIERyYXdDYXB0aW9uWzE2LzMyXSBhbmQgRHJhd0NhcHRpb25UZW1wWzE2LzMyQS8zMlddLgoJRml4ZWQgaGFuZGxpbmcgb2YgV1NfRVhfVE9PTFdJTkRPVy4KCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJVXBkYXRlZC4KCgkqIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9rZXlib2FyZC5jLCBpbmNsdWRlL2tleWJvYXJkLmg6CglEYXZpZCBGYXVyZSA8ZmF1cmVAa2RlLm9yZz4KCUFkZGVkIEtFWUJPQVJEX1VwZGF0ZVN0YXRlLCB0byByZWFkIHRoZSBtb2RpZmllcnMgd2hlbiB0aGUgd2luZSBhcHAgaXMKCWFjdGl2YXRlZC4gVXNlcyB0aGUgbmV3IEtFWUJPQVJEX1VwZGF0ZU9uZVN0YXRlLgoJRml4ZWQgYSBwcm9ibGVtIHdpdGggbWVudSBhY2NlbGVyYXRvcnMgKEFsdC1sZXR0ZXIgZ2VuZXJhdGVzIGEgZG93bgoJYXJyb3cgZXZlbnQgd2hpY2ggYmVlcHMgaWYgbm90IGZpbHRlcmVkKS4KCVNwZWVkZWQgdXAgVG9Bc2NpaTE2LzMyKCkgYSBsaXR0bGUgYml0LgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIFdpbmUncyBkZWJ1Z2dlciB3b3JrIHNhdGlzZmFjdG9yaWx5IHdpdGggRE9TIGFwcHMuCglQZXJoYXBzIGRlcmVmZXJlbmNpbmcgd29yayBiZXR0ZXIgZm9yIFdpbjE2IGFwcHMgdG9vIG5vdywgYnV0CglpdCBhcHBlYXJzIHRoZSBkZWJ1Z2dlciBjb3JlIHdhc24ndCBkZXNpZ25lZCBmb3Igc2VnbWVudGF0aW9uLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNpbXVsYXRlcyBEUE1JIG1lbW9yeSBtYXAgYnkgY29udmVydGluZyBsb3dlci1NQiBzZWdtZW50IGJhc2UKCWFkZHJlc3NlcyBhcyBuZWNlc3NhcnkuIEltcGxlbWVudGVkIGFsbG9jYXRpbmcvZnJlZWluZyBET1MgbWVtb3J5CglibG9ja3MuIEFkZGVkIFhNUyBob29rLiAoRFBNSSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgdW50aWwKCXNvbWVvbmUgaW1wbGVtZW50cyB0aGUgcmF3IG1vZGUgc3dpdGNoIGVudHJ5IHBvaW50cyBwa3VuemlwIG5lZWRzLikKCgkqIG1zZG9zL2ludDIxLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSSB0aGluayBpdCdzIHRpbWUgdG8gcmV0aGluayB0aGUgSEZJTEUxNl9UT19IRklMRTMyIHN0cmF0ZWd5LAoJY2FuJ3Qga2VlcCB3b3JraW5nIGFyb3VuZCBmbGF3cyBpbiBpdCBsaWtlIHRoaXMgKG5vdyBzdGRpbwoJd2FzIGdldHRpbmcgY2xvc2VkIHdoZW4gcHJvZ3JhbXMgY2xvc2UgaGFuZGxlcyA+PTUpCgoJKiBtc2Rvcy94bXMuYywgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludDJmLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIGJhc2ljIFhNUyBmdW5jdGlvbnMuIHdjYi5leGUgKFdpbjE2IGRpc2Fzc2VtYmxlcikgbm93CglzZWVtcyB0byB3b3JrIGZpbmUgdW5kZXIgV2luZS4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9taXNjZW11Lmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIHNvbWUgc3lzdGVtIGRlcGVuZGVuY2llcyB0byBsb2FkZXIvZG9zL2Rvc3ZtLmMuIEltcGxlbWVudGVkCgllbnZpcm9ubWVudGFsIGFyZ3ZbMF0gcGFzc2luZyB0byBET1MgYXBwcy4gQWRkZWQgWE1TIGhvb2tzLgoKCSogZGVidWdnZXIvc3RhYnMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhIG1lbXNldCgpIHRvIHByZXZlbnQgYSBkZWJ1Z2dlciBzZWdmYXVsdCBjYXVzZWQgYnkKCXVuaW5pdGlhbGl6ZWQgcG9pbnRlcnMgaW4gdGhlIHN0YWJzIGxvb2t1cCB0YWJsZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUEgZmV3IGZpeGVzLgoKCSogcmVsYXkzMi9udGRsbC5zcGVjOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFJ0bEFsbG9jYXRlQW5kSW5pdGlhbGl6ZVNpZCBlbnRyeS4KCgkqIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcGVleGUuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdlbmVyaWMgZHluYW1pYyBkbGwgbG9hZGVyIHVzaW5nIGRsKigpIEFQSS4KCUluY2x1ZGVzOiBzdGRjYWxsLT5jZGVjbCBtYXBwaW5nIGFiaWxpdHksIHNub29waW5nLgoJKFRlc3RlZCBvbmx5IHdpdGggZ2xpZGUyeC5kbGwgLT4gbGliZ2xpZGUyeC5zbykKCgkqIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL3RpbWUuYywgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgd2luMzIgZW5oYW5jZWQgZnVuY3Rpb25hbGl0eSB0byB0aW1lciBjYWxsYmFja3MuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgYmFkIGhhY2tzIHNvIFdyaXRlQ29uc29sZU91dHB1dCB3b3JrcyBvbiB2dDEwMCBhbmQgUGVla01lc3NhZ2UKCWRvZXMgYXQgbGVhc3QgYSBiaXQgb2Yga2V5Ym9hcmQgaW5wdXQuCgoJKiByZWxheTMyL3Nub29wLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2hvdWxkIGRpc3BsYXkgYWdhaW4uCgpTYXQgT2N0IDEwIDE1OjUyOjQ2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUltcGxlbWVudGVkIERTX0NFTlRFUiBkaWFsb2cgc3R5bGUuCgoJKiBtaXNjL21haW4uYzogUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglBZGRlZCBmdW5jdGlvbiB0byBidWlsZCB0aGUgV2luZG93cyBudW1lcmljIGxhbmd1YWdlIElEIGZyb20gbGFuZ3VhZ2UsCgljb2RlLCBjaGFyc2V0IGFuZCBkaWFsZWN0IHN0cmluZ3MsIGxpa2UgdXNlZCBieSBVbml4IExBTkcgdmFyaWFibGUuCgoJKiBvbGUvb2xlMm5scy5jLCBvbGUvbmxzL1JFQURNRSwgaW5jbHVkZS93aW5ubHMuaCwgb2xlL25scy8qLm5sczoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJTW9yZSBOTFMgZGF0YS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFBldGVyIFNjaGxhaWxlIDx1ZGJ6QHJ6LnVuaS1rYXJsc3J1aGUuZGU+CglGaXhlZCBhIGxvdCBvZiBidWdzIGluIGRkcmF3LmMgdG8gbWFrZSB4bGliIHN1cHBvcnQgd29yay4KCVJ1bnMgc3VjY2Vzc2Z1bGx5IFRSMkRlbW8gYW5kIEphenogSmFja3JhYmJpdCBJSSBEZW1vIQoKCSogb2JqZWN0cy9nZGlvYmouYzogQ2xpZmYgV3JpZ2h0IDxjbGlmZkBzbmlwZTQ0NC5vcmc+CglBZGRlZCBEQyBvYmplY3QgdHlwZSB0byB0aGUgbGlzdCBvZiB2YWxpZCBvYmplY3RzIHRoYXQgY2FuIGJlIGRlbGV0ZWQKCWJ5IERlbGV0ZU9iamVjdDMyLgoKU3VuIE9jdCAgNCAxODoyMDoyOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQ2hhbmdlTG9nOgoJU3RhcnRpbmcgbmV3IGZvcm1hdCBjaGFuZ2Vsb2cgKG9sZGVyIGNoYW5nZXMgbW92ZWQgdG8KCWRvY3VtZW50YXRpb24vQ2hhbmdlTG9nLk9MRCkuCg==