MjAwMS0wOS0xMSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPiwgIEFsYmVydCBDaGluIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+LiAgVGltIFZhbiBIb2xkZXIgIDx0aW0udmFuLmhvbGRlckBwYW5kb3JhLmJlPgoKCSogbGlidG9vbC5tNCAobm9fdW5kZWZpbmVfZmxhZykgW3NvbGFyaXMqXTogIERvbid0IHNldCB0aGlzIGZsYWcKCWlmIEdDQyA8IDMuMCB3aXRoIG5hdGl2ZSBsZCwgd2hpY2ggaW50cm9kdWNlcyBhIGRlcGVuZGVuY3kgb24KCWxpYmdjYy5hIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgd2hpY2ggaW4gdHVybiB2aW9sYXRlcwoJLW5vLXVuZGVmaW5lZC4gIEFsc28gZGlzcGxheSBhIHByb21pbmVudCBjb25maWd1cmUgdGltZSB3YXJuaW5nIGlmCgl0aGUgYnVnZ3kgY29tYmluYXRpb24gb2YgR0NDIGFuZCBsZCBpcyBkZXRlY3RlZC4KCShBQ19MSUJUT09MX0hFQURFUl9BU1NFUlQpOiAgbGlibHRkbCBmYWxscyBmb3VsIG9mIHRoaXMgYnVnCgliZWNhdXNlIGFzc2VydCByZXF1aXJlcyBfX2VwcmludGYgZnJvbSBsaWJnY2MuYS4gIFRoaXMgbWFjcm8KCWRldGVjdHMgdGhlIGNvbWJpbmF0aW9uIG9mIEdDQyBhbmQgbGQgdGhhdCBwcm9kdWNlIHRoaXMgcHJvYmxlbSwKCWFuZCBwcmV0ZW5kcyB0aGF0IGFzc2VydC5oIGRvZXMgbm90IGV4aXN0Li4uCgkqIGxpYmx0ZGwvbHRkbC5jIChIQVZFX0FTU0VSVF9IKTogIC4uLnNvIHRoYXQgYXNzZXJ0aW9ucyBjYW4gYmUKCWRpc2FibGVkIGluIGxpYmx0ZGwuICBPdGhlcndpc2UgdGhlIGxpYnJhcnkgd291bGQgb25seSBiZSB1c2VhYmxlCgl3aGVuIGxpbmtpbmcgdXNpbmcgZ2NjLCBvciBieSBtYW51YWxseSBhZGRpbmcgbGliZ2NjLmEgdG8gdGhlIGxpbmsKCWxpbmUgb2YgdGhlIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyBsaWJsdGRsLgoJKiBsdGRsLm00IChBQ19MSUJfTFRETCk6ICBSZXF1aXJlIEFDX0xJQlRPT0xfSEVBREVSX0FTU0VSVC4KCSogZG9jL1BMQVRGT1JNUzogIFVwZGF0ZWQuCgoyMDAxLTA2LTI1ICBEYW5pZWwgSGFydmV5IDxkYW5pZWxAYW1yaXN0YXIuY29tLmF1PgoKCSogbGlidG9vbC5tNCAobHRkbGxfY21kcyk6IFskXTAgZG9lc24ndCBhcHBlYXIgdG8gdHJhbnNsYXRlIHRocm91Z2gKCXRoZSBzY3JpcHQgY29ycmVjdGx5LCBjaGFuZ2UgdG8gJCcnMAoKMjAwMS0wOS0xMSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlibHRkbC9jb25maWd1cmUuaW4gKEFDX0NPTkZJR19IRUFERVIpOiBVc2UgY29uZmlnLWguaW4gZm9yIERPUwoJY29tcGF0aWJpbGl0eS4KCgkqIGxpYnRvb2wubTQ6IEFkZCBtaXNzaW5nIE00IHF1b3RhdGlvbiB0byAkMSBvZiBBQ19ERUZVTiBjYWxscy4KCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluIChBTV9JTklUX0FVVE9NQUtFKTogQnVtcCBsaWJsdGRsIHZlcnNpb24gdG8KCTEuMi4KCSogbGlibHRkbC9NYWtlZmlsZS5hbSAobGlibHRkbF9sYV9MREZMQUdTKTogIEJ1bXAgbGlidG9vbCBsaWJyYXJ5Cgl2ZXJzaW9uIGluZm8gdG8gNDowOjEuCgoyMDAxLTA5LTEwICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTElCVE9PTF9TWVNfUEFUSF9TRVBBUkFUT1IpOiAgT29wcy4gIFdlCglyZWFsbHkgb3VnaHQgdG8gc2V0IFBBVEhfU0VQQVJBVE9SIGluIGhlcmUgc29tZXdoZXJlLgoJKEFDX1BST0dfTEQpOiBEb24ndCBmb3JnZXQgdG8gQUNfUkVRVUlSRSBpdCEgIEJlIGNhcmVmdWwgbm90IHRvCglzZXQgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IiIGZvciBQQVRIIHNwbGl0dGluZywgb3RoZXJ3aXNlCglzcGFjZXMgaW4gZGlyZWN0b3J5IG5hbWVzIHdpbGwgYmUgbG9zdC4KCShBQ19QUk9HX05NKTogRGl0dHAuCgkqIGx0bWFpbi5pbjogRGVmYXVsdCBJRlMgb25jZSwgYXQgdGhlIHN0YXJ0LgoJUmVwb3J0ZWQgYnkgQWtpbSBEZW1haWxsZSA8YWtpbUBlcGl0YS5mcj4KCjIwMDEtMDktMTAgIEJyYWQgIDxicmFkQGNvbXN0eWxlLmNvbT4KCgkqIGx0bWFpbi5pbiAoLWxjX3IpOiBTdHlsZSBpbXByb3ZlbWVudC4KCgkqIGRvYy9saWJ0b29sLnRleGk6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIGx0Y29uZmlnLgoJKiBib290c3RyYXA6IERvbid0IGJvdGhlciBjcmVhdGluZyBhbiBlbXB0eSBsdGNvbmZpZyBhbmQgdGhlbgoJcmVtb3ZpbmcgaXQuCgkqIHRlc3RzL3F1b3RlLnRlc3Q6IHMvbHRjb25maWcvXCQwLwoKMjAwMS0wOS0wOSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gQnJhZCA8YnJhZEBjb21zdHlsZS5jb20+OgoJKiBsaWJ0b29sLm00OiBVc2UgQXV0b2NvbmYgc3F1YXJlIGJyYWNrZXQgcXVvdGluZyBzdHlsZQoJY29uc2lzdGVudGx5IHRocm91Z2hvdXQuCgoyMDAxLTA5LTA3ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBib290c3RyYXA6IENsZWFudXAgYGF1dG9tNHRlJyBhbmQgYGxpYnRvb2wnIHNvIHRoYXQgd2UgZG9uJ3QKCWdldCBjYXVnaHQgYnkgc29tZXRoaW5nIGZyb20gYSBwcmV2aW91cyBidWlsZC4KCgkqIGxpYnRvb2wubTQgKGFyY2hpdmVfY21kcywgYXJjaGl2ZV9leHBzeW1fY21kcykgW3NvbGFyaXMqXTogUmV2ZXJ0CglteSAyMDAxLTA5LTA2IHBhdGNoLgoJKG5vX3VuZGVmaW5lZF9mbGFnKWkgW3NvbGFyaXMqXTogUmV2ZXJ0IEFsZXhhbmRyZSdzIDIwMDEtMDQtMTEgcGF0Y2guCgoJKiBsaWJsdGRsL2FjY29uZmlnLmg6ICBSZW1vdmVkLiAgT2Jzb2xldGVkIHdpdGggbW9kZXJuIEF1dG9tYWtlCgkoaS5lLiAxLjQgb3IgYmV0dGVyKS4KCgkqIGxpYmx0ZGwvbHRkbC5jIChmb3JlYWNoX2RpcmlucGF0aCk6IGFyZ3pfbGVuIHNob3VsZCBiZSBhIHNpemVfdC4KCVJlcG9ydGVkIGJ5IEFsYmVydCBDaGluIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoyMDAxLTA5LTA2ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChhcmNoaXZlX2NtZHMsIGFyY2hpdmVfZXhwc3ltX2NtZHMpIFtzb2xhcmlzKl06IENoYW5naW5nCglub191bmRlZmluZWRfZmxhZyBmcm9tIGAteiB0ZXh0JyB0byBgLXogZGVmcycgKHNlZSBlbnRyeSBiZWxvdyBhdAoJMjAwMS0wNC0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+KSBoYXMgYSBwcm9ibGVtLgoJd2hlbiBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkgd2l0aCBnY2MgY2FsbGluZyAvdXNyL2Njcy9iaW4vbGQgKGVnLgoJdGhlIGdjYyBzdXBwbGllZCB3aXRoIFNvbGFyaXMgOCBjb21wYW5pb24gQ0QpLCB1c2luZyB0aGUgZmxhZwoJLW5vLXVuZGVmaW5lZCwgc2hhcmVkIGxpYnJhcnkgbGlua2luZyB3aWxsIGFsd2F5cyBmYWlsIGJlY2F1c2Ugb2YKCXRoZSB1bnJlc29sdmVkIHN5bWJvbHMgZnJvbSBsaWJnY2MuYS4gIENvbnNlcXVlbnRseSB3ZSBoYXZlIHRvCglwcm92aWRlIGEgcGF0aCB0byBsaWJnY2MuYSB3aGVuIGxpbmtpbmcgc2hhcmVkIGxpYnJhcmllcyBpbgoJY29uanVuY3Rpb24gd2l0aCAtbm8tdW5kZWZpbmVkIQoKCUZyb20gTWljaGFlbCBQcnVldHQgPG1wcnVldHRAZW5nci5zZ2kuY29tPjoKCSogbGlibHRkbC9sdGRsLmMgKGZpbmRfbW9kdWxlKTogYDAnIHZhbHVlZCBhcmd1bWVudHMgdG8KCXRyeWFsbF9kbG9wZW5fbW9kdWxlKCkgbXVzdCBiZSBleHBsaWNpdGx5IGNhc3QgdG8gYXZvaWQgY29tcGlsZXIKCXdhcm5pbmdzIG9uIHNvbWUgZW52aXJvbm1lbnRzLgoKMjAwMS0wOS0wMyAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogZGVtby9NYWtlZmlsZS5hbSAoaGVsbGRsKTogIEF1dG9tYWtlIDEuNCBjYW4ndCBmaW5kIHRoZSB0YXJnZXQKCWlmIHdlIHVzZSBoZWxsZGwkKEVYRUVYVCksIGFuZCBBdXRvbWFrZSAxLjUgYmFyZnMgdW5sZXNzIHdlIGRvLgoJVXNpbmcgYm90aCB0YXJnZXRzIHRvIHRoZSBsZWZ0IG9mIHRoZSBjb2xvbiBzZWVtcyB0byB3b3JrIHRob3VnaCEKCjIwMDEtMDktMDMgIEJyYWQgIDxicmFkQGNvbXN0eWxlLmNvbT4KCgkqIGx0ZGwubTQgW0FDX0xURExfU1lTX0RMT1BFTl9ERVBMSUJTXTogVGVhY2ggbHRkbCBhYm91dCB0aGUKCWJlaGF2aW9yIG9mIE9wZW5CU0QncyBkbG9wZW4oKS4KCjIwMDEtMDktMDMgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogQnVtcGVkIHZlcnNpb24gdG8gMS40LjFhLgoKCUdOVSBsaWJ0b29sIDEuNC4xIHdhcyByZWxlYXNlZC4KCgkqIGNvbmZpZ3VyZS5pbjogQnVtcGVkIHZlcnNpb24gdG8gMS40LjEuCgkqIGNvbmZpZy5zdWIsIGNvbmZpZy5ndWVzczogIFN5bmNocm9uaXNlZCBmcm9tIGZ0cC5nbnUub3JnLgoJKiBkb2MvdGV4aW5mby50ZXg6IERpdHRvLgoJKiBORVdTOiBVcGRhdGVkLgoJKiBUT0RPOiBSZW1vdmUgZml4ZWQgYnVncy4KCgkqIGx0ZGwubTQgKEFDX0NIRUNLX1RZUEVTKTogIFRoaXMgbWFjcm8gd2FzIGludHJvZHVjZWQgaW4gQXV0b2NvbmYKCTIuNXguICBCYWNrcG9ydGVkIGEgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gKGRpcmVjdGx5IHRvIGx0ZGwubTQpCglmcm9tIEF1dG9jb25mIDIuNTAsIHNvIHRoYXQgd2UgY2FuIHN0aWxsIGJvb3RzdHJhcCB3aXRoIEF1dG9jb25mCgkyLjEzLgoKCUZyb20gTWFyaXVzIFZvbGxtZXIgPG12b0B6YWdhZGthLnBpbmcuZGU+OgoJKiBsaWJsdGRsL2x0ZGwuYyAodHJ5YWxsX2Rsb3Blbl9tb2R1bGUpOiBEb24ndCBmb3JnZXQgdG8gcHJvcG9nYXRlCgllcnJvcnMgb3ZlciByZWN1cnNlIGxldmVscy4KCjIwMDEtMDktMDMgIEJyYWQgIDxicmFkQGNvbXN0eWxlLmNvbT4KCgkqIGxpYnRvb2wubTQgW29wZW5ic2QqXTogTW9yZSBpbXByb3ZlbWVudHMgdG8gdGhlIE9wZW5CU0QgcG9ydC4KCgkqIGxpYnRvb2wubTQgKGRlcGxpYnNfY2hlY2tfbWV0aG9kKSBbYWl4Kl06IFJlbW92ZWQgcmVkdW5kYW50CglzZXR0aW5nIG9mIHRoaXMgdmFyaWFibGUuCgoyMDAxLTA5LTAyICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBBbGJlcnQgQ2hpbiA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPjoKCSogbGlidG9vbC5tNCAoX0xUX0FDX0xBTkdfQ19DT05GSUcpIFthaXg0Kl06IEJlIGNhcmVmdWwgd2l0aAoJc2hhcmVkIG5hbWVzcGFjZXMgZm9yIHN0YXRpYyBhbmQgc2hhcmVkIGxpYnMuCgkoQUNfTElCVE9PTF9ETE9QRU5fU0VMRik6IElmIGFsbCBlbHNlIGZhaWxzLCB0cnkgZGxkX2xpbmsgZnJvbSBHTlUKCURMRC4KCjIwMDEtMDktMDIgIENocmlzdG9waGVyIFBmaXN0ZXJlciA8Y3BAY2hyaXNwLmRlPgoKCSogbGlidG9vbC5tNCwgbHRtYWluLmluOiBMaW5rZXIgZmxhZyBhbmQgdmVyc2lvbiBudW1iZXJpbmcgZml4ZXMKCWZvciBkYXJ3aW4uCgoyMDAxLTA5LTAyICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJQmFja3BvcnRlZCB0aGUgZm9sbG93aW5nIHBhdGNoZXMgZnJvbSB0aGUgZGV2ZWxvcG1lbnQgYnJhbmNoOgoKCUJhc2VkIG9uIGEgcGF0Y2ggZnJvbSBNYXJpdXMgVm9sbG1lciA8bXZvQHphZ2Fka2EucGluZy5kZT46CgkqIE5FV1M6IHVwZGF0ZWQuCgkqIGx0ZGwubTQgKEFDX0xJQl9MVERMKTogQ2hlY2sgZm9yIHVuaXN0ZC5oLgoJKiBsaWJsdGRsL2x0ZGwuYzogSW5jbHVkZSB1bmlzdGQuaCBpZiBpdCBleGlzdHMuCgkoTFRETF9TRUFSQ0hQQVRIX1ZBUik6IE1hY3JvIHRvIHByZXZlbnQgaGFyZGNvZGluZwoJIkxURExfTElCUkFSWV9QQVRIIi4KCShMVERMX0FSQ0hJVkVfRVhUKTogTWFjcm8gdG8gcHJldmVudCBoYXJkY29kaW5nICIubGEiLgoJKGFyY2hpdmVfZXh0KTogSGF2ZSBvbmx5IG9uZSBjb3B5IG9mICIubGEiIGluIHRoZSByZWFkb25seQoJc2VnbWVudCBvZiB0aGUgY29tcGlsZWQgbGlicmFyeS4KCShmaW5kX2hhbmRsZV9jYWxsYmFjayk6IERvbid0IGJvdGhlciB0cnlpbmcgdG8gZGxvcGVuIHRoZSBmaWxlIGlmCglpdCBkb2Vzbid0IGV4aXN0LgoJKGZpbmRfaGFuZGxlKTogRG9uJ3QgYm90aGVyIHNlYXJjaGluZyBmb3IgZmlsZXMgaWYgbm8gc2VhcmNoX3BhdGgKCXdhcyBzdXBwbGllZC4KCShmaWxlX25vdF9mb3VuZCk6IEEgbmV3IGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBsYXN0CgllcnJvciB3YXMgZHVlIHRvIGEgZmlsZSBub3QgZm91bmQgY29uZGl0aW9uLgoJKHRyeV9kbG9wZW4pOiBSZW5hbWVkIGZyb20gbHRfZGxvcGVuKCkgYW5kIGNoYW5nZWQgdG8gaGF2ZSB0aGUKCXNhbWUgZm9vdHByaW50IGFzIHRyeWFsbF9kbG9wZW4uICBUaGlzIGludm9sdmVkIGEgbWlub3IgcmV3cml0ZSBvZgoJbXVjaCBvZiB0aGUgaW50ZXJuYWxzIG9mIHRoaXMgZnVuY3Rpb24uCgkobHRfZGxvcGVuKTogQSBuZXcgZnVuY3Rpb24gd3JhcHBlZCBhcm91bmYgdHJ5X2Rsb3BlbigpLgoJKGx0X2Rsb3BlbmV4dCk6IElmIGEgZmlsZSBhbHJlYWR5IGhhcyBhIHN1aXRhYmxlIGV4dGVuc2lvbiwgZG9uJ3QKCWJvdGhlciBhZGRpbmcgYWRkaXRpb25hbCBleHRlbnNpb25zIGFuZCB0cnlpbmcgdG8gb3BlbiB0aG9zZS4KCVRpZHkgdXAgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgdG8gcHJldmVudCBjb250aW51ZWQgc2VhcmNoaW5nIHdpdGgKCWFuIGV2ZW50dWFsIEZJTEVfTk9UX0ZPVU5EIHdoZW4gYSBnZW51aW5lIGZhaWx1cmUgZWFybGllciBpbiB0aGUKCXNlYXJjaCBwcm9jZXNzIGNvdWxkIGJlIGxlZ2l0aW1hdGVseSByZXBvcnRlZC4KCgkqIGxpYmx0ZGwvbHRkbC5jIChhcmd6X2NyZWF0ZV9zZXApOiBEb24ndCBmb3JnZXQgdG8gaW5jbHVkZSB0aGUKCXRlcm1pbmF0aW5nICdcMCcgd2hlbiBjb3VudGluZyBhcmd6X2xlbi4KCShhcmd6X2NyZWF0ZV9zZXApOiBXaGVuIGNhbm9uaWNhbGl6aW5nIGFyZ3osIGRvbid0IGZvcmdldCB0byBjb3B5Cgl0aGUgdGVybWluYXRpbmcgJ1wwJywgaW5jYXNlIGNhbm9uaWNhbGl6YXRpb24gaGFzIHNob3J0ZW5lZCBhcmd6LgoJKGFyZ3pfc3RyaW5naWZ5KTogRG9uJ3QgY292ZXJ0IHRoZSBmaW5hbCAnXDAnIHRvIGEgc2VwYXJhdG9yLgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2RsaGFuZGxlX25leHQpOiBOb3cgd2UgY2FuIGxvb3AgdGhyb3VnaCBhbGwKCWxvYWRlZCBtb2R1bGUgaGFuZGxlcyBhcyBvcmlnaW5hbGx5IGludGVuZGVkLgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2Rsc2V0ZXJyb3IpOiBPb3BzLiAgVGhpcyBuZXZlciB3b3JrZWQKCWVpdGhlciwgZHVlIHRvIGEgcGFpciBvZiB0eXBvcy4gIE5vdyBmaXhlZC4KCgkqIGxpYmx0ZGwvbHRkbC5jIChOX0VMRU1FTlRTKTogIERlbGV0ZWQuICBIb3cgY29tZSBub2JvZHkgbm90aWNlZAoJdGhlcmUgd2FzIG5vIHdheSB0aGlzIGNvdWxkIGhhdmUgZXZlciB3b3JrZWQ/CgkobHRfZGxjYWxsZXJfc2V0X2RhdGEpOiBOb3cgdGhhdCB2YWxpZCBjYWxsZXJfaWRzIG11c3QgYmUKCW5vbi16ZXJvLCBhbGxvY2F0ZSBhbiBhZGRpdGlvbiBlbnRyeSBpbiB0aGUgY2FsbGVyX2RhdGEgdmVjdG9yIGFuZAoJdXNlIGEgemVybyB2YWx1ZWQga2V5IGFzIHRoZSBlbmQgbWFya2VyLgoJKGx0X2RsY2FsbGVyX2dldF9kYXRhKTogSXRlcmF0ZSB1cCB0byB0aGUgZW5kIG1hcmtlciBpbiBvbmUgcGFzcy4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbGNhbGxlcl9yZWdpc3Rlcik6IENhbGxlciBpZHMgYXJlIGFsbG9jYXRlZAoJc3RhcnRpbmcgZnJvbSB2YWx1ZSBgMScsIHNvIHRoYXQgY2xpZW50cyBjYW4gdXNlIGEgdmFsdWUgb2YgemVybwoJdG8gaW5kaWNhdGUgdGhhdCBsaWJsdGRsIGhhcyBub3QgeWV0IGluaXRpYWxpc2VkLgoKCSogbGlibHRkbC9sdGRsLmMgKGZpbmRfZmlsZV9jYWxsYmFjayk6IEZpeCBhIG11bHRpcGxlIGZyZWUoKQoJYnVnLgoJKHRyeWFsbF9kbG9wZW5fbW9kdWxlKTogUmVtb3ZlIHNvbWUgdW51c2VkIHZhcmlhYmxlcy4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbGluc2VydHNlYXJjaGRpcik6IENhbGN1bGF0ZSB0aGUgYWRkcmVzcwoJb2YgdGhlIGVuZCBvZiB1c2VyX3NlYXJjaF9wYXRoIGNvcnJlY3RseS4KCgkqIGxpYmx0ZGwvbHRkbC5jIChycGxfYXJnel9zdHJpbmdpZnkpOiBOZXcgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24uCgkqIGx0ZGwubTQgKEFDX0xURExfRlVOQ19BUkdaKTogIFRlc3QgZm9yIGFyZ3pfc3RyaW5naWZ5IGluIGxpYmMuCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9hcmd6X2luc2VydGlub3JkZXIpOiBSZW5hbWVkIGZyb20KCWx0X2FyZ3pfaW5zZXJ0IHRvIG1ha2Ugcm9vbSBmb3IuLi4KCShsdF9hcmd6X2luc2VydCk6IFdyYXBzIGFyZ3pfaW5zZXJ0IHdpdGggbGlibHRkbCBlcnJvciBoYW5kbGluZy4KCShsdF9kbHBhdGhfaW5zZXJ0ZGlyKTogSW5zZXJ0IG5ldyBwYXRoIGVsZW1lbnRzIGludG8gYW4KCWFyZ3ppemVkIHBhdGguCgkobHRfZGxpbnNlcnRzZWFyY2hkaXIpOiBOZXcgZnVuY3Rpb24gdG8gaW5zZXJ0IG5ldyBzZWFyY2gKCWRpcmVjdG9yaWVzIGFueXdoZXJlIGludG8gdXNlcl9zZWFyY2hfcGF0aCB1c2luZyB0aGUgYWJvdmUuCgkobHRfZGxhZGRzZWFyY2hkaXIpOiBSZXdyaXR0ZW4gdG8gdXNlIGx0X2RscGF0aF9pbnNlcnRkaXIuCgkqIGxpYmx0ZGwvbHRkbC5oIChsdF9kbGluc2VydHNlYXJjaGRpcik6IFByb3RvdHlwZSBmb3IgZXhwb3J0LgoJKiBkb2MvbGlidG9vbC50ZXhpIChMaWJsdGRsIGludGVyZmFjZSk6IERvY3VtZW50IGl0LgoKMjAwMS0wOC0xOCAgQnJhZCAgPGJyYWRAY29tc3R5bGUuY29tPgoKCSogbHRtYWluLmluOiBEbyBub3QgcmVtb3ZlIC1sbSBmcm9tIGRlcGxpYnMgZm9yIE9wZW5CU0QuCgoyMDAxLTA4LTA1ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBCcmFkIDxicmFkQGNvbXN0eWxlLmNvbT46CgkqIGxpYnRvb2wubTQgKGFyY2hpdmVfY21kcykgW2RhcndpbiwgbmV3c29zLCBzeXN2NF06IFJlcGxhY2UKCTEuMyBlcmEgJGxpbmtvcHRzIHJlZmVyZW5jZXMgd2l0aCAkbGlua2VyX2ZsYWdzLgoKCUZyb20gQnJhZCA8YnJhZEBjb21zdHlsZS5jb20+OgoJKiBsaWJ0b29sLm00IFtvcGVuYnNkXTogIE9wZW5CU0QgY2FuIGJ1aWxkIG1vZHVsZXMgd2l0aG91dCBhIGBsaWInCglwcmVmaXggYW5kIHZlcnNpb24gbnVtYmVyLgoKMjAwMS0wOC0wNCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gRWRvdWFyZCBHLiBQYXJtZWxhbiA8ZWdwQGZyZWUuZnI+CgkqIGxpYnRvb2wubTQgW2Rhcndpbiwgb3BlbmJzZF06IEZpeCBxdW90aW5nIHByb2JsZW1zIHdpdGgKCXVucXVvdGVkIFtdIGV4cHJlc3Npb25zLgoKMjAwMS0wNy0yOSAgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYnRvb2wubTQ6IFByZWZlciBzaGxfbG9hZCB0byBkbG9wZW4Jb24gSFAtVVggYmVjYXVzZQoJZGxvcGVuIHdvbid0IHdvcmsgcHJvcGVybHkgd2l0aG91dCBhIHBhdGNoLgoKMjAwMS0wNy0xMiAgRGFuIE1jTmljaG9sICA8bWNuaWNob2xAYXVzdGluLmlibS5jb20+CgoJRnJvbSBhbGJlcnQgY2hpbiA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoJKiBsaWJ0b29sLm00OiBGaXggQUlYIHJ1bi10aW1lLWxpbmtpbmcgd2hlbiB1c2luZyBnY2MuCgoJRnJvbSBhbGJlcnQgY2hpbiA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoJKiBsdG1haW4uaW46IEZpeCBhIGNhc2Ugd2hlcmUgdGhlIGxvY2tmaWxlIGlzIG5vdCByZW1vdmVkLCB0aHVzCgljYXVzaW5nIGxpYnRvb2wgdG8gbG9vcCBmb3JldmVyIHdhaXRpbmcgZm9yIGl0IHRvIGJlIHJlbW92ZWQuCgoyMDAxLTA3LTA1ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSyk6ICBSZXZlcnQgdG8gMS4zLngKCXNlbWF0aWNzLCBhbmQgYWx3YXlzIGJ1aWxkIHN0YXRpYyBsaWJzIHdoZW4gdGhlIGhvc3QgbWFjaGluZQoJY2Fubm90IGJ1aWxkIHNoYXJlZCBsaWJzLiAgRXZlbiBpZiBzdGF0aWMgbGlicyB3ZXJlIGV4cGxpY2l0bHkKCWRpc2FibGVkLgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9TWVNfR0xPQkFMX1NZTUJPTF9QSVBFKSBbSFBVWF06IERlZmluZQoJbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgdG8gYmUgYSBzZWQgZXhwcmVzc2lvbgoJZm9yIG1hbmdsaW5nIHRoZSBvdXRwdXQgb2YgdGhlIHN5bWJvbCBwaXBlIGludG8gYSBicmFjZSBkZWxpbWl0ZWQKCUMgZGVjbGFyYXRpb24gb2Ygc3ltYm9sIG5hbWUgYW5kIGFkZHJlc3MuCgkqIGx0bWFpbi5pbjogVXNlIGl0IHRvIGdlbmVyYXRlIHRoZSBmb29TLmMgc3ltYm9sIG5hbWUgdG8gYWRkcmVzcwoJbWFwLgoKMjAwMS0wNi0zMCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCVBvcnRpbmcgdGVzdCBpbXByb3ZlbWVudHMgZnJvbSBtdWx0aS1sYW5ndWFnZS1icmFuY2g6CgkqIHRlc3RzL2RlZnM6IEZpbmQgYW5kIHNldCB0aGUgdmFsdWUgb2YgQ0MgcHJvYmVkIGJ5IGxpYnRvb2wubTQKCSogdGVzdHMvbGluay0yLnRlc3Q6IFVzZSBhIC5sbyB3cmFwcGVyIHNjcmlwdCwgYW5kIHRoZSB2YWx1ZSBvZgoJQ0Mgc2V0IGJ5IGRlZnMgaW5zdGVhZCBvZiBoYXJkY29kaW5nIGdjYy4KCSogdGVzdHMvbGluay50ZXN0OiBVc2UgdGhlIHZhbHVlIG9mIENDIHNldCBieSBkZWZzIGluc3RlYWQgb2YKCWhhcmRjb2RpbmcgZ2NjLgoJKiB0ZXN0cy9xdW90ZS50ZXN0OiBEaXR0by4KCSogdGVzdHMvc3VmZml4LnRlc3Q6IERpdHRvLgoKCSogbGlidG9vbC5tNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spIFthaXgqXTogQWx3YXlzIHNldAoJbHRfcHJvZ19jb21waWxlcl93bCB0byBgLVdsJy4KCVJlcG9ydGVkIGJ5IEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoyMDAxLTA2LTI5ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBUaW0gVmFuIEhvbGRlciA8dGltLnZhbi5ob2xkZXJAcGFuZG9yYS5iZT4KCSogdGVzdHMvc3VmZml4LnRlc3Q6IFR5cG8gaW4gMm5kIGZvciBsb29wLgoKCUZyb20gQnJ1bm8gSGFpYmxlIDxoYWlibGVAaWxvZy5mcj4KCSogbGlidG9vbC5tNDogIHVuZGVmaW5lIHRoZSBtNCBidWlsdGluIGBzeW1ib2xzJywgc28gdGhhdCB0aGUKCXN0cmluZyBgc3ltYm9scycgY2FuIGJlIHVzZWQgaW4gdGhlIHJlc3Qgb2YgdGhlIGNvZGUgd2l0aG91dAoJY2F1c2luZyBlcnJvcnMgd2l0aCBhdXRvY29uZi0yLjEzLgoKCUZyb20gIkdvbHViZXYgSS4gTi4iIDxnaW5AbW8ubXNrLnJ1PgoJKiB0ZXN0cy9NYWtlZmlsZS5hbSAoQ1BQTEFHUyk6IFR5cG8uIHMvQ1BQTEFHUy9DUFBGTEFHUy4KCgkqIG1kZW1vL01ha2VmaWxlLGFtIChmb28xX2xhX0xJQkFERCk6IEFkZCBsaWJzdWIubGEsIHNpbmNlIGZvbzEKCWRvZXMgdXNlIHN5bWJvbHMgZnJvbSBsaWJzdWIubGEgLS0gb25seSBwbGF0Zm9ybXMgdGhhdCBhbGxvdwoJdW5kZWZpbmVkIHN5bWJvbHMgaW4gbGlicmFyaWVzIHdlcmUgYWJsZSB0byBjb3BlIHdpdGggdGhpcwoJcHJldmlvdXNseS4KCVJlcG9ydGVkIGJ5IFJvYmVydCBDb2xsaW5zIDxyb2JlcnQuY29sbGluc0BpdGRvbWFpbi5jb20uYXU+CgoJRnJvbSAiR29sdWJldiBJLiBOLiIgPGdpbkBtby5tc2sucnU+CgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpIFtzY28zLjJ2NSpdOiBOZWVkcwoJLXdsLC1CZXhwb3J0IHRvIG1ha2Ugc2VsZiBkbG9wZW4gd29yay4KCglGcm9tIENocmlzIExlaXNobWFuIDxjaHJpc0BzaGFyaW5nYS5jb20+CgkqIGxpYnRvb2wsbTQgKF9MVF9BQ19MVENPTkZJR19IQUNLKSBbZGFyd2luXTogIENoZWFwIGhhY2sgdG8KCWhlbHAgZmFrZSBhIEMrKyBjb21waWxhdGlvbi4KCglGcm9tIEJydW5vIEhhaWJsZSA8aGFpYmxlQGlsb2cuZnI+CgkqIE5FV1M6IFVwZGF0ZWQuCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19MVENPTkZJR19IQUNLKTogIE1ha2Ugc3VyZSBhY19vYmpleHQgaXMKCXNldCB0byBgbG8nIHdoZW4gdGVzdGluZyBmb3IgY29tcGlsZXIgb3V0cHV0IHRvICoubG8gZmlsZW5hbWVzLgoKMjAwMS0wNi0yOCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gIEFsZXhhbmRlciBCbHVobSAgPEFsZXhhbmRlci5CbHVobUBXaXJlZE1pbmRzLmRlPgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxvcGVuKTogRml4IGJhZCBtZW1vcnkgaW5pdGlhbGlzYXRpb24KCWFzc3VtcHRpb25zLgoKMjAwMS0wNi0yNyAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gYnJhZEBvcGVuYnNkLm9yZzoKCSogTkVXUzogVXBkYXRlZC4KCSogbGlidG9vbC5tNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spIFtvcGVuYnNkXTogSW1wcm92ZWQgc3VwcG9ydAoJZm9yIHZhcmlvdXMgb3BlbmJzZCBwbGF0Zm9ybXMuCgkqIGx0bWFpbi5pbjogRGl0dG8sCgoyMDAxLTA1LTIwICBQZXRlciBFaXNlbnRyYXV0ICA8cGV0ZXJfZUBnbXgubmV0PgoKCSogbGlidG9vbC5tNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiBGaXggdHlwbyBpbiB2YXJpYWJsZSBuYW1lLgoKMjAwMS0wNS0yMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsaWJ0b29sLm00IChhbGxvd191bmRlZmluZWRfZmxhZykgW2FpeDQqIHwgYWl4NSpdOiBGaXggcXVvdGUKCWVycm9yLgoKCSogbHRtYWluLmluIChleGVjX2NtZCk6IE5ldyB2YXJpYWJsZS4gIERvbid0IGV4ZWMgcHJvZ3JhbXMgd2l0aGluCgl0aGUgYmlnIGBjYXNlJzsgc2V0IHRoZSB2YXJpYWJsZSBpbnN0ZWFkLCBhbmQgZXhlYyB0aGUgY21kCglhZnRlcndhcmRzLCBzbyB0aGF0IHRoZSBzaGVsbCBnZXRzIGEgY2hhbmNlIHRvIGNsZWFuIHVwIGhlcmUtZG9jCglmaWxlcy4KCSogTkVXUzogVXBkYXRlLgoKMjAwMS0wNS0xNiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBvbmUubmV0LmF1PgoKCSogbGlidG9vbC5tNCAobHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QpOiBwYXNzX2FsbCBmb3IgaHBwYSotbGludXguCgoyMDAxLTA1LTAzICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+LCBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogbHRtYWluLmluIChyZWxpbmtfY29tbWFuZCk6IEFycmFuZ2UgZm9yIHdyYXBwZXIgc2NyaXB0IHRvIHNhdmUKCW91dHB1dCB0byBhIHZhcmlhYmxlIGFuZCBkaXNwbGF5IGl0IG9ubHkgaWYgcmVsaW5raW5nIGZhaWxzLgoKMjAwMS0wNS0wMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW46IEJ1bXBlZCB2ZXJzaW9uIHRvIDEuNC4wYS4KCjIwMDEtMDQtMjUgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCUdOVSBsaWJ0b29sIDEuNCB3YXMgcmVsZWFzZWQuCgoJKiBjb25maWd1cmUuaW46IEJ1bXBlZCB2ZXJzaW9uIHRvIDEuNC4KCSogY29uZmlnLnN1YiwgY29uZmlnLmd1ZXNzOiAgU3luY2hyb25pc2VkIGZyb20gZnRwLmdudS5vcmcuCgkqIE5FV1M6IHVwZGF0ZWQuCgoyMDAxLTA0LTI0ICBQZXRlciBFaXNlbnRyYXV0ICA8cGV0ZXJfZUBnbXgubmV0PgoKCSogbGlidG9vbC5tNDogU3VwcG9ydCAkaG9zdF9vcyBhcyAvc3lzdjV1dzcqLyBmcm9tIG5ld2VyCgljb25maWcuZ3Vlc3MgaW4gYWRkaXRpb24gdG8gb2xkZXIgL3VuaXh3YXJlKi8uICBVc2UgY29tcGlsZXIKCWRyaXZlciwgbm90IGxpbmtlciwgZm9yIGxpbmtpbmcgc2hhcmVkIGxpYnJhcmllcy4KCjIwMDEtMDQtMjQgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlidG9vbC5tNCwgbHRtYWluLmluLCBsaWJsdGRsL2NvbmZpZ3VyZS5pbiwKCXRlc3RzL3F1b3RlLnRlc3Q6ICBSZW1vdmUgc3RhbGUgcmVmZXJlbmNlcyB0byBsdGNvbmZpZy4KCgkqIGx0ZGwubTQgKEFDX0NfSU5MSU5FKTogTm8gbG9uZ2VyIHJlcXVpcmVkLgoJKiBsaWJsdGRsL2x0ZGwuYyAoc3RyZHVwLCBzdHJjbXAsIHN0cmNociwgc3RycmNociwgbWVtY3B5LCB0cmltLAoJZnJlZV92YXJzKTogIFJldm9rZSBpbmxpbmUga2V5d29yZCBmcm9tIGRlY2xhcmF0aW9ucy4gIGBzdGF0aWMKCWlubGluZScgaXMgbm90IHZlcnkgcG9ydGFibGUsIGFuZCBpbiBhZGRpdGlvbiBVbml4d2FyZSA3LjEuMSdzCgljb21waWxlciBzYXlzIHlvdSBjYW4ndCBhY2Nlc3Mgc3RhdGljIHZhcmlhYmxlcyBmcm9tIGlubGluZQoJZnVuY3Rpb25zLgoJUmVwb3J0ZWQgYnkgUGV0ZXIgRWlzZW50cmF1dCAgPHBldGVyX2VAZ214Lm5ldD4KCjIwMDEtMDQtMjQgQWxiZXJ0IENoaW4tQS1Zb3VuZyA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbGlidG9vbC5tNDogSGFuZGxlIGNhc2Ugd2hlcmUgL2Jpbi9ubSAtcCBvdXRwdXRzIG11bHRpcGxlCglzeW1ib2wgdHlwZXMgKGxpa2UgdW5kZXIgSFAtVVggMTEuMDApLgoKMjAwMS0wNC0yNCAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIFRPRE86IGRlc2NyaWJlIHByb2JsZW1zIHdpdGggbGlibHRkbAoJKiBsdG1haW4uaW4gKElMRCk6IHRpZHkgdXAsIGFkZCBjb21tZW50cywgcmVtb3ZlIGRlYWQgY29kZSwKCSAgbWVyZ2UgZHVwbGljYXRlIGNvZGUKCSogbHRtYWluLmluIChJTEQpOiBkb24ndCB0b3VjaCBuZXdkZXBlbmRlbmN5X2xpYnMgYWZ0ZXIgc2NhbiBvcgoJICBkbG9wZW4gcGFzcwoJKiBsdG1haW4uaW4gKElMRCk6IGRvbid0IGRscHJlb3BlbiBkZXBlbmRlbmN5X2xpYnMgb2YgYSBkbG9wZW5lZAoJICBtb2R1bGUgKHJlbW92ZSBhYnNvbHV0ZWx5IHdyb25nIHF1aWNrIGhhY2spCgkqIGx0bWFpbi5pbiAoSUxEKTogcmVtb3ZlIHdyb25nIGNvbW1lbnRzIGFib3V0IGR1cGxpY2F0ZSByZW1vdmFsCgkqIGx0bWFpbi5pbiAoSUxEKTogYnVpbGQgYSBzdGF0aWMtb25seSBtb2R1bGUgaWYgaXQgaGFzCgkgIHN0YXRpYyBsaWJyYXJpZXMgaW4gaXRzIGRlcGVuZGVuY2llcyAoc28gdGhhdCBsaWJsdGRsIGNhbgoJICBzYWZlbHkgbG9hZCBkZXBlbmRlbmN5X2xpYnMpCgkqIGx0bWFpbi5pbiAoYXJndW1lbnQgcGFyc2luZyk6IHByZWZpeCBjb21wYXJzaW9ucyBvZiAtbCBhcmdzIHdpdGggWCwKCSAgcmVwbGFjZSAtbGMgd2l0aCBgLWZyYW1ld29yayBTeXN0ZW0nIF9hZnRlcl8gdGhlIElMRCBwYXNzZXMKCSogbHRtYWluLmluIChhcmd1bWVudCBwYXJzaW5nKTogc3VwcG9ydCBkbFtwcmVdb3BlbgoJICBmb3IgYm90aCAubyBhbmQgLmxvIGZpbGVzCgkqIGx0bWFpbi5pbiAoZGVwbGlic19jaGVjayk6IHVzZSBwb3J0YWJsZSB0ZXN0IHN5bnRheAoJKiBsdG1haW4uaW4gKGhlbHApOiBkb2N1bWVudCAtcHJlZmVyLVtub24tXXBpYyBmbGFncwoJKiBsdG1haW4uaW46IGltcHJvdmUgcmVhZGFibGl0eSBieSBhZGRpbmcgc29tZSBjb21tZW50cywKCSAgcmVuYW1lIHVuaW5zdF8qIHRvIG5vdGluc3RfKiAobW9yZSBhZGVxdWF0ZSBuYW1lKQoKMjAwMS0wNC0yNCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBkb2MvUExBVEZPUk1TOiAgTW9yZSB1cGRhdGVzIGZyb20gc3Vic2NyaWJlcnMgdG8KCWxpYnRvb2xAZ251Lm9yZy4KCglGcm9tIFRpbSBNb29uZXkgPG1vb25leUBkb2diZXJ0LmNjLm5kc3UuTm9EYWsuZWR1PgoJKiB0ZXN0cy9NYWtlZmlsZS5hbSAoVEVTVFNfRU5WSVJPTk1FTlQpOiBNYWtlIHN1cmUgdGhlICoudGVzdAoJc2NyaXB0cyBnZXQgdGhlIHNhbWUgbWFrZSB0aGF0IHdhcyB1c2VkIGluIHRoZSB0b3AgbGV2ZWwKCWRpcmVjdG9yeS4KCjIwMDEtMDQtMjMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogZG9jL1BMQVRGT1JNUzogIFVwZGF0ZWQgd2l0aCBtb3JlIHBsYXRmb3JtcyBzdWNjZXNzZnVsbHkKCXRlc3RlZCBieSBtZW1iZXJzIG9mIGxpYnRvb2xAZ251Lm9yZy4KCjIwMDEtMDQtMjMgIFBldGVyIEVpc2VudHJhdXQgIDxwZXRlcl9lQGdteC5uZXQ+CgoJKiBkb2MvUExBVEZPUk1TOiAgV2l0aCB0aGlzIHBhdGNoLCBmcmVlYnNkNC4zIHBhc3NlcyB0aGUgdGVzdAoJc3VpdGUuCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbGV4aXQpOiBRdWl0IGxvb3AgaWYgb25seSByZXNpZGVudCBtb2R1bGVzCglhcmUgbGVmdC4KCjIwMDEtMDQtMjMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogZG9jL1BMQVRGT1JNUzogIFdpdGggdGhpcyBwYXRjaCwgbXkgU29sYXJpcyBib3hlcyBub3cgcGFzcyB0aGUKCXRlc3Qgc3VpdGUsICBZYXkhCglGcm9tIEFsYmVydCBDaGluLUEtWW91bmcgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCSogbHRtYWluLmluOiAgYHRlc3QgLUwnIGlzIG5vdCBwb3J0YWJsZSwgYW5kIGluZmFjdCBicmVha3MgdW5pbnN0YWxsCgltb2RlIG9uIFNvbGFyaXMuICBGYWxsYmFjayB0byBgdGVzdCAtaCcgYW5kIGZpbmFsbHkgYHRlc3QgLWYnLAoJYnV0IGJlIGNhcmVmdWwgbm90IHRvIGxldCB0aGUgZmFpbHVyZSBzdGF0dXMgY2F1c2UgbGlidG9vbCB0bwoJc3RvcC4KCglGcm9tIFNpbW9uIFNwZXJvIDxzZXNAaWJpYmxpby5vcmc+CgkqIGx0ZGwubTQgKEFDX0xURExfRExTWU1fVVNDT1JFKTogIEFkZCAkTElCQUREX0RMIHdoaWxlCgljaGVja2luZyBmb3IgZGxzeW0gXy4KCglGcm9tIFNpbW9uIFNwZXJvIDxzZXNAaWJpYmxpby5vcmc+CgkqIGxpYnRvb2wubTQgKGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kKSBbZGFyd2luXTogU2V0IGl0IQoKCSogVE9ETzogTWFrZSBhIG5vdGUgdG8gdW5kbyB0aGlzIGxhdGVyLgoJRnJvbSBDaHJpc3RvcGggUGZpc3RlcmVyIDxjcEBjaHJpc3AuZGU+CgkqIGxpYnRvb2wubTQ6IFVzZSAkKCkgZXhlY3V0aW9uIHN1YnN0aXR1dGlvbiBxdW90YXRpb24gdG8gd29yawoJYXJvdW5kIHpzaCBidWlsdGluIGVjaG8gXCBlc2NhcGUgcmVtb3ZhbC4KCjIwMDEtMDQtMjIgIFBldGVyIEVpc2VudHJhdXQgIDxwZXRlcl9lQGdteC5uZXQ+CgoJKiBib290c3RyYXA6IEFsbG93IG92ZXJyaWRpbmcgdGhlIGxvY2F0aW9uIGFjbG9jYWwsIGF1dG9tYWtlLAoJYXV0b2NvbmYsIGF1dG9oZWFkZXIgZnJvbSB0aGUgZW52aXJvbm1lbnQuCgoJKiBkZW1vL01ha2VmaWxlLmFtOiBBdXRvbWFrZSAxLjRlIGRvZXMgbm90IGFsbG93IGArPScgYXNzaWdubWVudHMKCWlmIHRoZSB2YXJpYWJsZSB3YXMgbm90IHNldCB3aXRoIGA9JyBlYXJsaWVyLiAgYCs9JyB3YXMgbm90IHVzZWZ1bAoJaGVyZSBhbnl3YXkuCgoyMDAxLTA0LTIyICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0ZGwubTQgKEFDX0NIRUNLX0hFQURFUlMpOiBVVzcgaGFzIHN5cy9kbC5oLCBzbyB3ZSBtdXN0CgljaGVjayBmb3IgdGhhdCBoZXJlLgoJKiBsaWJsdGRsL2x0ZGwuYyAoSEFWRV9TWVNfRExfSCk6ICBJbmNsdWRlIGl0IGlmIG5lY2Vzc2FyeSBmb3IKCXRoZSBkbG9wZW4gbG9hZGVyLgoJUmVwb3J0ZWQgYnkgTWF0dGhldyBTY2hhbGl0IDxtc2NoYWxpdEBwYWNiZWxsLm5ldD4KCgkqIGxpYnRvb2wubTQgKEFDX0RFUExJQlNfQ0hFQ0tfTUVUSE9EKTogIFVzZSBwYXNzX2FsbCBmb3IKCXZhcmlvdXMgcmVsZWFzZXMgb2YgVW5peFdhcmUgYW5kIE9wZW5TZXJ2ZXIgdGhhdCBzdXBwb3J0IGl0LgoJUmVwb3J0ZWQgYnkgTWF0dGhldyBTY2hhbGl0IDxtc2NoYWxpdEBwYWNiZWxsLm5ldD4KCgkqIGRvYy9QTEFURk9STVM6ICBVcGRhdGVkIHdpdGggdmFyaW91cyBwbGF0Zm9ybXMgc3VjY2Vzc2Z1bGx5Cgl0ZXN0ZWQgYnkgbWVtYmVycyBvZiBsaWJ0b29sQGdudS5vcmcuCgoyMDAxLTA0LTIxICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIFRPRE86ICBwcm9wb3NlIHBrZy1jb25maWcgbWVyZ2UuCgoyMDAxLTA0LTIxICBOaWNrIEh1ZHNvbiAgPHNrcmxsQG5ldGJzZC5vcmc+CgoJKiBsdG1haW4uaW46IENvcnJlY3QgYW4gZXJyb3IgaW4geWVzdGVyZGF5J3MgcGF0Y2guCgoyMDAxLTA0LTIwICBOaWNrIEh1ZHNvbiAgPHNrcmxsQG5ldGJzZC5vcmc+CgoJKiBsaWJ0b29sLm00OiBJbXByb3ZlIE5ldEJTRCBzdXBwb3J0LgoJKiBsdG1haW4uaW46IGRpdHRvLgoKMjAwMS0wNC0xOSAgRGFuIE1jTmljaG9sIDxtY25pY2hvbEBhdXN0aW4uaWJtLmNvbT4KCgkqIGxpYnRvb2wubTQ6IEJ1aWxkIHN0YW5kYXJkIHNoYXJlZCBsaWJyYXJpZXMgb24gQUlYIFBPV0VSCgltb3JlIGxpa2UgQUlYIGRvZXMsIHdpdGggYSBzaGFyZWQgb2JqZWN0IGFyY2hpdmVkIGludG8gbGliPHh4eD4uYS4KCU9uIEFJWCAtYmV4cGFsbCBmbGFnIGRvZXMgc3RyYW5nZSB0aGluZ3MuLi4gRG9uJ3QgdXNlIGl0LgoJRml4IHF1b3RlcyBhcm91bmQgLWJlcm9rIGZsYWcuICBBZGQgc3VwcG9ydCBmb3IgQUlYIDUuCglBZGQgc3VwcG9ydCBmb3IgcnVuIHRpbWUgbGlua2luZyBvbiBBSVggUE9XRVIuIChzaG91bGQgd29yawoJb24gQUlYIDQuMiBhbmQgdXApLiAgVHVybiB0aGlzIGZlYXR1cmUgb24gYnkgYWRkaW5nIC1icnRsIGZsYWcKCXRvIExEX0ZMQUdTLiAgQWRkIHN1cHBvcnQgZm9yIEFJWCBvbiBJQTY0LiBOb3RlOiBBSVggb24gSUE2NAoJdXNlcyBhIFNZU1YgdHlwZSBsaW5rZXIuICBBZGQgYSBjb21tZW50IHRlbGxpbmcgd2hhdCB0byBkbyBpZiB0aGUKCVRPQyBzdGFydHMgZ2V0dGluZyB0b28gbGFyZ2Ugb24gQUlYLgoJKiBORVdTOiBtZW50aW9uIGFpeDUgc3VwcG9ydC4KCjIwMDEtMDQtMTggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogVE9ETzogQWRkIC1MLSBmbGFnLgoKMjAwMS0wNC0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsaWJ0b29sLm00IChub191bmRlZmluZWRfZmxhZykgW1NvbGFyaXMgbGRdOiBDaGFuZ2UgdG8gLXpkZWZzLgoKMjAwMS0wNC0xMSAgT3NzYW1hIE90aG1hbiAgPG9zc2FtYUB1Y2kuZWR1PgoKCSogQVVUSE9SUzogQWRkZWQgbXlzZWxmIHRvIHRoZSBsaXN0IG9mIG1haW50YWluZXJzLgoKMjAwMS0wNC0wOCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJ0b29sLm00IChoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBvc2Y0L29zZjUpOiBVc2UgJHt3bH0KCXRvIHBhc3MgLXJwYXRoIHdoZW4gY29tcGlsaW5nIHdpdGggZ2NjLgoJUmVwb3J0ZWQgYnkgVGltIE1vb25leSA8bW9vbmV5QGRvZ2JlcnQuY2MubmRzdS5Ob0Rhay5lZHU+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoc3lzX3NobF9vcGVuKTogQ2FjaGUgYSBoYW5kbGUgZm9yIHRoZSBgc2VsZicKCW1vZHVsZSwgc2luY2UgSFBVWCBhZGRzIG1vZHVsZSBzeW1ib2xzIGludG8gdGhlIGBzZWxmJyBwb29sIGlmCglpdCBpcyBvcGVuZWQgbGF0ZXIuICBSZXR1cm4gdGhlIGNhY2hlZCBwb2ludGVyIGlmIHRoZSBjYWxsZXIKCXN1YnNlcXVlbnRseSB0cmllcyB0byBvcGVuIGBzZWxmJy4KCShzeXNfc2hsX3N5bSk6IERpYWdub3NlIE5VTEwgbW9kdWxlcy4KCglGcm9tIFBldGVyIEVpc2VudHJhdXQgIDxwZXRlcl9lQGdteC5uZXQ+CgkqIGx0bWFpbi5pbiAoY2xlYW4sdW5pbnN0YWxsKTogdGVzdCAtZSBpcyBub3QgcG9ydGFibGUuICBXZWxsLAoJbmVpdGhlciBpcyAtTCwgYnV0IEknbSBob3BpbmcgdGhhdCByZWRpcmVjdGluZyBlcnJvciBtZXNzYWdlcwoJdG8gL2Rldi9udWxsIGFuZCByZWx5aW5nIG9uIG5vbi16ZXJvIGV4aXQgc3RhdHVzIHdpbGwgd29yayBva2F5CglvbiB0aGUgZmV3IGhvc3RzIHRoYXQgZG9uJ3Qgc3VwcG9ydCAtTC4KCjIwMDEtMDQtMDggIE5pY2sgSHVkc29uICA8c2tybGxAbmV0YnNkLm9yZz4KCgkqIGx0bWFpbi5pbjogSW1wcm92ZSBjaGVjayBmb3IgdmFsaWQgLXZlcnNpb24taW5mbyBwYXJhbWV0ZXIuCgoyMDAxLTA0LTA4ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCglGcm9tIE5pY2sgSHVkc29uICA8c2tybGxAbmV0YnNkLm9yZz4KCSogZG9jL01ha2VmaWxlLmFtIChsaWJ0b29sX1RFWElORk9TKTogQWRkIGZkbC50ZXhpIHNvIHRoYXQgaXQKCWlzIGluY2x1ZGVkIGluIHRoZSBkaXN0cmlidXRpb24uCgoyMDAxLTA0LTA3ICBQZXRlciBFaXNlbnRyYXV0ICA8cGV0ZXJfZUBnbXgubmV0PgoKCSogbHRtYWluLmluIChjbGVhbix1bmluc3RhbGwpOiBEbyBub3QgZXJyb3IgaWYgdGhlIGZpbGUgZG9lc24ndAoJZXhpc3QgYW5kICdybSAtZicgd2FzIHVzZWQuICBFeGl0IHdpdGggc3RhdHVzIDEgb24gZXJyb3IuCgoyMDAxLTA0LTA2ICBOaWNrIEh1ZHNvbiAgPHNrcmxsQG5ldGJzZC5vcmc+CgoJKiBsdG1haW4uaW46IEltcGxlbWVudCBhIG5ldyBkZXBsaWJzX2NoZWNrX21ldGhvZCBjYWxsZWQKCW1hdGNoX3BhdHRlcm4gdGhhdCBkb2VzIHBhdHRlcm4gbWF0Y2hpbmcgb24gZmlsZW5hbWVzLi4uCgkqIGxpYnRvb2wubTQ6IC4uLnVzZSBpdCB3aXRoIE5ldEJTRAoKMjAwMS0wNC0wNSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChNdWx0aXBsZSBkZXBlbmRlbmNpZXMpOiBBIG5vdGUgYWJvdXQgdGhlCglwcm9ibGVtcyBJJ3ZlIHJlaW50cm9kdWNlZCBieSByZXZlcnRpbmcgdGhlIG15IHBhdGNoIG9mIDIwMDEtMDMtMzEuCgoJRnJvbSBFZHdhcmQgTGVlIDx0YWlsYmVydEB5YWhvby5jb20+CgkqIGxpYnRvb2wubTQ6IFR5cG9zLgoKCSogdGVzdHMvTWFrZWZpbGUuYW0gKFRFU1RTKTogRGVsZXRlIHJlZmVyZW5jZXMgdG8gZGVwZGVtby1kdXBzLnRlc3QuCgkqIHRlc3RzL2RlcGRlbW8tZHVwcy50ZXN0OiAgUmVtb3ZlZCwgYXMgcGFydCBvZiB0aGUgcGF0Y2gKCXJldmVyc2lvbiBiZWxvdy4KCSogbHRtYWluLmluOiBSZXZlcnQgbXkgY2hhbmdlIGZyb20gMjAwMS0wMy0zMS4gIEFsdGhvdWdoIGl0Cgl3YXMgdGVjaG5pY2FsbHkgY29ycmVjdCwgaXQgb3BlbnMgYSB3aG9sZSBjYW4gb2Ygd29ybXMgd2UgZG9uJ3QKCXdhbnQgdG8gZGVhbCB3aXRoIHJpZ2h0IG5vdy4KCglGcm9tIEFobWVkIE1hc3VkIDxtYXN1ZEBnb29nZ3VuLmNvbT4KCSogbGlibHRkbC9sdGRsLmMgKHN5c19zaGxfb3Blbik6ICBSZXR1cm4gYSBOVUxMIG1vZHVsZSBoYW5kbGUKCWZvciBzZWxmIG9wZW5pbmcuCgkoc3lzX3NobF9jbG9zZSk6ICBCZSBjYXJlZnVsIG5vdCB0byBjbG9zZSBhIE5VTEwgbW9kdWxlIGhhbmRsZS4KCShzeXNfc2hsX3N5bSk6ICBBbGxvdyBzaGxfZmluZHN5bSgpIHRvIG9wZW4gTlVMTCBtb2R1bGVzLCBidXQKCWRpc2NhcmQgdGhlIG1vZGlmaWVkIG1vZHVsZSBhZGRyZXNzIGl0IHJldHVybnMuCgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxvcGVuKTogIFdoZW4gcmVhZGluZyB0aGUgLmxhIGZpbGUsCglyZWFsbG9jYXRlIHRoZSBsaW5lIGJ1ZmZlciBzaXplIGlmIHRoZSBsaW5lIG92ZXJmbG93cyB0aGUKCW9yaWdpbmFsIGJ1ZmZlci4KCVJlcG9ydGVkIGJ5IE5pY2sgSHVkc29uIDxza3JsbEBuZXRic2Qub3JnPgoKCSogTkVXUyAoMS4zZCkgUmVtb3ZlZCBib2d1cyBsdGNvbmZpZyByZWZlcmVuY2UuCgoyMDAxLTA0LTAzICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19MVENPTkZJR19IQUNLKTogIFJlbW92ZSB0aGUgc3B1cmlvdXMKCWBkbmwnIGZyb20gdGhlIGhlbHAgdGV4dCBvZiAtLXdpdGgtcGljLgoJUmVwb3J0ZWQgYnkgc3RlZmFuIDxzdGVmYW5AbGtjYy5vcmc+CgoyMDAxLTA0LTAyICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogYnVtcGVkIHZlcnNpb24gdG8gMS4zZS4KCglHTlUgbGlidG9vbCAxLjNkIHdhcyByZWxlYXNlZC4KCgkqIE5FV1M6IGluc2VydGVkIHRvZGF5cyBkYXRlLgoKMjAwMS0wNC0wMSAgQ2hyaXN0b3BoIFBmaXN0ZXJlciAgPGNwQGNocmlzcC5kZT4KCgkqIGxpYnRvb2wubTQ6IEZpeGVkIHN1cHBvcnQgZm9yIERhcndpbiBhbmQgUmhhcHNvZHkuIE5vdyBjb3JyZWN0bHkKCWhhcmRjb2RlcyB0aGUgbGlicmFyeSBwYXRoIGFuZCBhZGRzIHZlcnNpb25pbmcuIE90aGVyIHNtYWxsCglmaXhlcy4KCSogbHRtYWluLmluOiBGaXhlZCBzcGVjaWFsIGNhc2VzIGZvciBsaWJjIGFuZCBsaWJtIG9uIFJoYXBzb2R5IGFuZAoJRGFyd2luLiBPbmUgb2YgdGhlbSB3YXMgbWlzcGxhY2VkLiBBZGRlZCB2ZXJzaW9uX3R5cGUgY2FzZSBmb3IKCVJoYXBzb2R5IGFuZCBEYXJ3aW4sIG5hbWVkICJkYXJ3aW4iLgoKMjAwMS0wMy0zMSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdG1haW4uaW46IFJlbW92ZSB0aGUgY29kZSBmb3Igc3RyaXBwaW5nIGR1cGxpY2F0ZSBkZXBsaWJzCglmcm9tIGxpYnRvb2wgbGluayBsaW5lcyAtLSBkdXBsaWNhdGVzIGFyZSBzb210aW1lcyBuZWNlc3NhcnkKCXRvIHNhdGlzZnkgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMsIGFuZCBuZXZlciBjYXVzZSBsaW5rIHRvCglmYWlsIGV2ZW4gaWYgdGhleSBhcmUgc3B1cmlvdXMuCgkqIHRlc3RzL2RlcGRlbW8tZHVwcy50ZXN0OiBOZXcgZmlsZS4gIE1ha2Ugc3VyZSB0aGlzIGJ1ZyBkb2Vzbid0CgljcmVlcCBiYWNrIGluIGFnYWluIQoJKiB0ZXN0cy9NYWtlZmlsZS5hbSAoVEVTVFMpOiBVc2UgdGhlIG5ldyB0ZXN0IGFib3ZlLgoKMjAwMS0wMy0yOSAgRWR3YXJkIE0uIExlZSAgPHRhaWxiZXJ0QHlhaG9vLmNvbT4KCgkqIGxpYnRvb2xpemUuaW46IENoZWNrIGNvbmZpZ3VyZS5hYyBhbmQgcHJlZmVyIGNvbmZpZ3VyZS5hYyB0bwoJY29uZmlndXJlLmluLgoKCSogbGlidG9vbGl6ZS5pbjogY2hhbmdlIHJlY29tbWVuZGF0aW9uIGZyb20gQU1fUFJPR19MSUJUT09MIHRvCglBQ19QUk9HX0xJQlRPT0wuCgoJKiBsaWJ0b29sLm00OiBHZW5lcmF0ZSBkbGwvaW1wb3J0IGxpYnJhcmllcyBmb3IgY3lnd2luIGFjY29yZGluZwoJdG8gdGhlIGZvbGxvd2luZzogbGliRk9PLmEgKHN0YXRpYyBsaWIpLCBsaWJGT08uZGxsLmEgKGltcG9ydAoJbGliKSwgY3lnRk9PLXZlcnNpb24uZGxsIChkbGwpLiAgVXBkYXRlIHBvc3RpbnN0YWxsX2NtZHMgYW5kCglwb3N0dW5pbnN0YWxsX2NtZHMgdG8gcmVmbGVjdCB0aGlzLgoJKiBsdG1haW4uaW46IEdlbmVyYXRlIGluc3RhbGxlZCAubGEgZmlsZXMgd2l0aCBkbG5hbWVzIHNldCB0bwoJLi4vYmluL2N5Z0ZPTy12ZXJzaW9uLmRsbCBmb3Igbm9ybWFsIGRsbHMuIGRsbHMgZm9yIG1vZHVsZXMKCXJlbWFpbiB3aXRoIHRoZSAubGEgZmlsZS4KCgkqIGxpYmx0ZGwvbHRkbC5jOiAgVXNlIHdpbmRvd3MgcGF0aHMgd2hpbGUgY2FsbGluZyBMb2FkTGlicmFyeS4KCjIwMDEtMDMtMTYgIEFsYmVydCBDaGluICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbGlidG9vbC5tNCAoc2F2ZV9DUFBGTEFHUyk6IEZpeCB0eXBvLgoKMjAwMS0wMy0xMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsaWJ0b29sLm00IChsdF9jdl9jb21waWxlcl9jX28pOiBDYWNoZSBpdC4KCShsdF9jdl9jb21waWxlcl9vX2xvKTogTGlrZXdpc2UuCgoyMDAxLTAzLTA5ICBQZXRlciBFaXNlbnRyYXV0ICA8cGV0ZXJfZUBnbXgubmV0PgoKCSogbHRtYWluLmluIChjbGVhbik6IEF1dG9tYXRpY2FsbHkgcmVtb3ZlICRvYmpkaXIgKHVzdWFsbHkgJy5saWJzJykuCgoyMDAxLTAzLTA4ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluIChsaWJyYXJ5X25hbWVzX3NwZWMpOiBVbmRvIGxhdGluLTEgc3BhY2VzIEkgcGFzdGVkCglpbiB5ZXN0ZXJkYXkgYnkgbWlzdGFrZS4KCjIwMDEtMDMtMDcgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCUZyb20gVG9yIExpbGxxdmlzdCA8dG1sQGlraS5maT4KCSogbGlidG9vbC5tNCAoZXhwb3J0X3N5bWJvbHMpOiBPbiBXaW5kb3dzLCBpZiB0aGUgZXhwb3J0X3N5bWJvbHMKCWZpbGUgKHdoaWNoIGhhcyBiZWVuIHBhc3NlZCB0byBsaWJ0b29sIHdpdGggdGhlIC1leHBvcnQtc3ltYm9scwoJY29tbWFuZCBsaW5lIHN3aXRjaCkgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSwgdXNlIGl0IGFzIGlzLgoKCSogbGlidG9vbC5tNCAobGlicmFyeV9uYW1lc19zcGVjKTogVXNpbmcgbTQgcXVvdGVzIGNvcnJlY3RseSB0aGlzCgl0aW1lIGFyb3VuZCEKCglGcm9tIFRvciBMaWxscXZpc3QgPHRtbEBpa2kuZmk+CgkqIGxpYnRvb2wubTQgKGxpYnJhcnlfbmFtZXNfc3BlYyk6IFVzZSBhbiBhcHByb3ByaWF0ZSBmaWxlbmFtZQoJcHJlZml4IGZvciBkbGxzIC0tIGxpYiBmb3IgbWluZ3c7IGN5ZyBmb3IgY3lnd2luOyBwdyBmb3IgcHczMi4KCjIwMDEtMDMtMDYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbGlidG9vbC5tNCAoY2FuX2J1aWxkX3NoYXJlZCkgW0FJWCA0LlswMV0sIEdDQ106IEdDQyB1cCB0bwoJMi45NiBjYW4ndCBidWlsZCBzaGFyZWQgbGlicmFyaWVzIHJlbGlhYmx5LiAgRGlzYWJsZSB0aGVtLgoKCSogbHRtYWluLmluOiBXaGVuIGRyb3BwaW5nIGRlcGVuZGVuY2llcyBvZiBhIC1uby11bmRlZmluZWQKCWxpYnJhcnksIGdpdmUgdXAgb24gYnVpbGRpbmcgYSBzaGFyZWQgbGlicmFyeS4KCjIwMDEtMDMtMDUgIEFraW0gRGVtYWlsbGUgIDxha2ltQGVwaXRhLmZyPgoKCSogbHRtYWluLnNoOiBEb24ndCBxdW90ZSB0aGUgYXJndW1lbnQgb2YgY2FzZS9lc2FjIGFuZAoJYXNzaWdubWVudHMuCgkqIGxpYnRvb2wubTQ6IExpa2V3aXNlLgoKMjAwMS0wMy0wMyAgTWFya3VzIEYuWC5KLiBPYmVyaHVtZXIgPG1hcmt1c0BvYmVyaHVtZXIuY29tPiwKCSAgICBBbGV4YW5kcmUgT2xpdmEgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbGlidG9vbC5tNDogQWRkZWQgZXhwbGljaXQgcmV0dXJuIHR5cGUgdG8gYWxsIEMgZnVuY3Rpb25zLgoKMjAwMS0wMi0yMiAgR2FyeSBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBORVdTOiBVcGRhdGVkLgoJKiBkb2MvbGlidG9vbC50ZXhpIChUaHJlYWQgU2FmZXR5IGluIGxpYmx0ZGwpOiBOZXcgbm9kZSBkZXNjcmliaW5nCgl0aGUgIGFwcGxpY2F0aW9uIHRoZSBuZXcgTVQgQVBJLgoJKiBsaWJsdGRsL2x0ZGwuaDogUHJvdG90eXBlcy4KCSogbGlibHRkbC9sdGRsLmM6IFVzZSB0aGVzZSBmdW5jdGlvbnMgdGhyb3VnaG91dCB0aGUgcmVzdCBvZgoJdGhlIGZpbGUgdG8gcHJvdmlkZSB0aHJlYWQgbG9ja2luZy4KCShsdF9kbG11dGV4X3JlZ2lzdGVyKTogTmV3IGZ1bmN0aW9uIHRvIHNldCBjYWxsYmFja3MgZm9yCgltdWx0aS10aHJlYWRlZCBjYWxscyBpbnRvIGxpYmx0ZGwuCgkobHRfZGxfbXV0ZXhfbG9jayk6IFR5cGUgb2YgYSBsb2NraW5nIGNhbGxiYWNrIGZ1bmN0aW9uLgoJKGx0X2RsX211dGV4X2xvY2spOiBUeXBlIG9mIGFuIHVubG9ja2luZyBjYWxsYmFjayBmdW5jdGlvbi4KCShsdF9kbF9tdXRleF9zZXRlcnJvcik6IFR5cGUgb2YgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBzYXZlIHRoZQoJbGFzdCBsaWJsdGRsIGVycm9yIG1lc3NhZ2UgaW4gdGhyZWFkIGxvY2FsIHN0b3JhZ2UuCgkobHRfZGxfbXV0ZXhfZ2V0ZXJyb3IpOiBUeXBlIG9mIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcmV0cmlldmUKCXRoZSBsYXN0IHNhdmVkIGVycm9yIG1lc3NhZ2UgZnJvbSB0aHJlYWQgbG9jYWwgc3RvcmFnZS4KCjIwMDEtMDItMjAgIEdhcnkgVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2RsY2FsbGVyX3JlZ2lzdGVyKTogZG9udCBzZXQgYW4gdW5zaWduZWQKCXR5cGUgdG8gYSBuZWdhdGl2ZSBudW1iZXIuCglSZXBvcnRlZCBieSBHdWVudGVyIE1pbGxhaG4gPEd1ZW50ZXIuTWlsbGFobkBJbmZvcm1hdGlrLlRVLUNvdHRidXMuREU+CgoyMDAxLTAyLTA1ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCglGcm9tIE5pY2sgSHVkc29uIDxza3JsbEBuZXRic2Qub3JnPgoJKiBsdGRsLm00IChBQ19MVERMX1NZU19ETE9QRU5fREVQTElCUyk6IG5ldGJzZCogaXMgYWJsZSB0bwoJYXV0b21hdGljYWxseSBsb2FkIG1vZHVsZSBkZXBsaWJzIHdpdGhvdXQgYXNzaXN0YW5jZSBmcm9tCglsaWJsdGRsLgoKMjAwMS0wMi0wMiAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuYyAobG9hZF9kZXBsaWJzKTogTWFrZSBzdXJlIHRoZSBkZXBjb3VudCBpcyByZXNldCwKCWV2ZW4gd2hlbiBkZXBsaWJzIGFyZSBub3QgdXNlZCBiZWNhdXNlIG9mIHRoZSBwYXRjaCBiZWxvdy4KCgkqIGx0ZGwubTQgKEFDX0xURExfU1lTX0RMT1BFTl9ERVBMSUJTKTogSWYgd2Uga25vdyB0aGF0IHRoZSBob3N0CglhcmNoaXRlY3R1cmUgYXV0b21hdGljYWxseSBsb2FkcyBkZXBsaWJzLCB0aGVuLi4uCgkqIGxpYmx0ZGwvbHRkbC5jIChsb2FkX2RlcGxpYnMpOiAuLi5kb24ndCBtYW51YWxseSBsb2FkIGVhY2ggb25lLgoKMjAwMS0wMS0zMSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBUT0RPOiAgVXBkYXRlZC4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsb2FkX2RlcGxpYnMpOiBJZiBsb2FkaW5nIGEgZGVwbGliIGZhaWxzLAoJZG9uJ3Qgc3dlYXQgLS0gaXQgbWF5IGJlIGEgbGliIHRoYXQgaXMgYWxyZWFkeSBzdGF0aWNhbGx5IGxpbmtlZAoJaW50byB0aGUgbG9hZGluZyBhcHBsaWNhdGlvbi4KCgkqIGxpYmx0ZGwvbHRkbC5jOiBDbGVhbiB1cCB0aGUgc2hhZG93aW5nIG9mIHRoZSBnbG9iYWwgaGFuZGxlcwoJdmFyaWFibGUuCgkoTFRfRExSRVNJREVOVF9GTEFHUyk6IEFkZCBleHRyYSBwYXJlbnMgdG8gc2F0aXNmeSAtV2FsbC4KCShsb2FkX2RlcGxpYnMpOiAgQ2FzdCBpc3NwYWNlKCkgYXJndW1lbnQgdG8gYW4gaW50IHRvIHNhdGlzZnkKCS1XYWxsLgoKMjAwMS0wMS0zMCAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAcmljYXJkby11cy5jb20+CgoJKiBBVVRIT1JTOiBhZGRlZCBteXNlbGYgdG8gdGhlIGxpc3Qgb2YgbWFpbnRhaW5lcnMuCgoyMDAxLTAxLTI4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW0gKENMRUFORklMRVMpOiBDbGVhbiBjb25kaXRpb25hbGx5LWJ1aWx0CglsaWJyYXJpZXMuCgoyMDAxLTAxLTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGxpYnRvb2wubTQgKGxkX3NobGlicykgW2FpeDQqXTogRGlzYWJsZSBvbiB1bmtub3duIENQVSB0eXBlcy4KCjIwMDEtMDEtMDcgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogTkVXUzogVXBkYXRlZC4KCSogZG9jL2xpYnRvb2wudGV4aSAoVXNlciBkZWZpbmVkIG1vZHVsZSBkYXRhKTogVXBkYXRlZC4KCSogbGlibHRkbC9sdGRsLmMgKGx0X2RsaGFuZGxlX25leHQpOiBOZXcgZnVuY3Rpb24uCgkqIGxpYmx0ZGwvbHRkbC5oIChsdF9kbGhhbmRsZV9uZXh0KTogUHJvdG90eXBlcy4KCjIwMDEtMDEtMDUgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogTkVXUzogVXBkYXRlZC4KCSogZG9jL2xpYnRvb2wudGV4aSAoVXNlciBkZWZpbmVkIG1vZHVsZSBkYXRhKTogIERvY3VtZW50IGl0IGFsbC4KCSogbHRkbC5tNDogIENoZWNrIGZvciBtZW1jcHksIG9yIGVsc2UgYmNvcHkuCgkqIGx0ZGwuYyAobHRfY2FsbGVyX2RhdGEpOiBOZXcgdHlwZS4KCShsdF9kbF9oYW5kbGVfc3RydWN0KTogQWRkIGFuIGx0X2NhbGxlcl9kYXRhIGZpZWxkLgoJKGx0X2RsY2FsbGVyX3JlZ2lzdGVyLCBsdF9kbGNhbGxlcl9zZXRfZGF0YSwKCWx0X2RsY2FsbGVyX2dldF9kYXRhKTogTmV3IGZ1bmN0aW9ucy4KCShycGxfbWVtY3B5KTogQSBtaW5pbWFsIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uLgoJKHJwbF9yZWFsbG9jKTogQSByZWFsbG9jIGltcGxlbWVudGVkIHdpdGggbHRfZGxtYWxsb2MgYW5kCglsdF9kbGZyZWUuCgkoTFRfRExNQUxMT0MsIExUX0RMRlJFRSwgTFRfRExSRUFMTE9DLCBMVF9ETE1FTV9SRUFTU0lHTik6CglOZXcgbWVtb3J5IGhhbmRsaW5nIGNvbnZlbmllbmNlIG1hY3Jvcy4gIFVzZSB0aGVtCglhcHByb3ByaWF0ZWx5IHRocm91Z2hvdXQgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlLgoJKiBsdGRsLmggKGx0X2RsY2FsbGVyX3JlZ2lzdGVyLCBsdF9kbGNhbGxlcl9zZXRfZGF0YSwKCWx0X2RsY2FsbGVyX2dldF9kYXRhKTogUHJvdG90eXBlZC4KCjIwMDEtMDEtMDQgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9sdGRsLmg6ICBmb3JtYXR0aW5nIGNoYW5nZS4KCjIwMDAtMTItMjMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCUZyb20gdnZ2QHZzdS5ydToKCSogZG9jL2ZkbC50ZXhpIChHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UpOiBjb250YWluZWQgQGJ5ZQoJY29tbWFuZCB3aGljaCBwcmV2ZW50ZWQgcGFydCBvZiBkb2N1bWVudCB0byBiZSBnZW5lcmF0ZWQgKGluZGljZXMsCglldGMpLgoJKiBkb2MvbGlidG9vbC50ZXhpIChEbHByZW9wZW5pbmcpOiB0aGUgQGRlZnR5cGV2YXIgZGlkIG5vdCBjb250YWluCglhIHNwYWNlIGFmdGVyIGEgdHlwZS4KCjIwMDAtMTItMjIgIEFraW0gRGVtYWlsbGUgIDxha2ltQGVwaXRhLmZyPgoKCSogbGlidG9vbC5tNDogcy9bIFx0XSokLy8KCjIwMDAtMTItMjIgIEFuZWVzaCBLdW1hciBLLlYgIDxrdmFuZWVzaEBob3RtYWlsLmNvbT4KCgkqIGxpYnRvb2wubTQgKE9TRi8xKTogIFJldmVydCBteSBwYXRjaCBvZiAyMDAwLTEyLTE2LgoKMjAwMC0xMi0yMCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxleGl0KTogV2FzIGNoZWNraW5nIGZvciByZXNpZGVuY3kgb2YgdGhlCgl3cm9uZyBtb2R1bGUuCglSZXBvcnRlZCBieSBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUByaWNhcmRvLXVzLmNvbT4KCgkqIGx0bWFpbi5pbiAoZGxwcmVmaWxlcyk6IE5vdyB0aGF0IGAyMDAwLTEyLTE1IFV0ei1Vd2UgSGF1cycgcGF0Y2gKCWJlbG93IGNhbiBkZXRlY3QgcHJlb3BlbmVkIGxpYnJhcnkgZGVwbGlicyBjb3JyZWN0bHkgaW4gbGlibHRkbCwKCXdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgbGlidG9vbCBsaWJyYXJ5IGRlcGxpYnMgYXJlIGFsc28gcHJlbG9hZGVkCglpbnRvIHRoZSBiaW5hcnkgZm9yIHRoYXQgcGhhc2UgdG8gd29yay4KCjIwMDAtMTItMTYgIEFuZWVzaCBLdW1hciBLLlYgIDxrdmFuZWVzaEBob3RtYWlsLmNvbT4KCgkqIGxpYnRvb2wubTQgKE9TRi8xKTogQ2hhbmdlIHRoZSB3YXkgdG8gcGFzcyBsaW5rZXIgZmxhZ3MgdGhyb3VnaAoJY29tcGlsZXIgb24gYSBUcnU2NCBtYWNoaW5lLgoKMjAwMC0xMi0xNiAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJ0b29sLm00IChzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMpOiBVc2UgdGVzdCBpbnN0ZWFkIG9mCglgWycuCgkoYXJjaGl2ZV9jbWRzKTogQW5kIGFub3RoZXIgb25lLgoKCSogbGlidG9vbC5tNCAoZGFyd2luKik6IEZpeGVkIGEgcGFpciBvZiBzdHVwaWQgdHlwb3MgSSBtYWRlIGluIHRoZQoJbGFzdCBwYXRjaC4KCgkqIGxpYnRvb2wubTQgKEFDX0RFUExJQlNfQ0hFQ0tfTUVUSE9EKTogIG1vdmVkIHJvZ3VlIHNldHRpbmdzIGZyb20KCXNlcXVlbnQsIG5jciBhbmQgbmV3b3M2IGJhY2sgaW50byBoZXJlIGZyb20gb3RoZXIgbWFjcm9zLgoKMjAwMC0xMi0xNiAgIFdpbGZyZWRvIFNhbmNoZXogIDx3c2FuY2hlekBhcHBsZS5jb20+CgoJKiBsaWJ0b29sLm00OiAoZHlsZC9kYXJ3aW4qKSBNdWNoIGltcHJvdmVkIHBvcnQuCgkqIGx0bWFpbi5pbjogKGR5bGQvZGFyd2luKikgTXVjaCBpbXByb3ZlZCBwb3J0LgoKMjAwMC0xMi0xNiAgU2FzY2hhIFNjaHVtYW5uIDxzYXNjaGFAc2NodW1hbm4uY3g+CgoJKiBsaWJ0b29sLm00OiBBY2NlcHQgZGFyd2luIGFzIGFuIGFsaWFzIGZvciByaGFwc29keS4KCSogbHRtYWluLmluOiBkaXR0by4KCgkqIGxpYnRvb2wubTQgKEFDX0RFUExJQlNfQ0hFQ0tfTUVUSE9EKTogVXNlIHRoZSBIUFVYIDEwLjIwCgltZXRob2RzIHRvIGNoZWNrIGZvciBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvbiBIUFVYIDExLgoKMjAwMC0xMi0xNiAgTmljayBIdWRzb24gIDxza3JsbEBuZXRic2Qub3JnPgoKCSogbGlidG9vbC5tNCAobmV0YnNkKiwgZGVwbGlic19jaGVja19tZXRob2QpOiBFbmFibGUgSUxEIHN1cHBvcnQKCWZvciBOZXRCU0QgYS5vdXQuCgoyMDAwLTEyLTE1ICBBa2ltIERlbWFpbGxlICA8YWtpbUBlcGl0YS5mcj4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX0dMT0JBTF9TWU1CT0xfUElQRSk6IFJlbmFtZQoJYGFjX2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUnIGFzIGBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlJy4KCVNpbWlsYXJseSB3aXRoIGBsdF9jdl9nbG9iYWxfc3ltYm9sX3RvX2NkZWNsCgkoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiBTaW1pbGFybHkgd2l0aCBgYWNfY3ZfcHJvZ19jY19waWMnLAoJYGFjX2N2X3Byb2dfY2Nfc2hsaWInLCBgYWNfY3ZfcHJvZ19jY193bCcsIGBhY19jdl9wcm9nX2NjX3N0YXRpYycsCglgYWNfY3ZfcHJvZ19jY19ub19idWlsdGluJywgYGFjX2N2X3Byb2dfY2NfY2FuX2J1aWxkX3NoYXJlZCcsCglgYWNfY3ZfcHJvZ19jY19zdGF0aWNfd29ya3MnLCBgYWNfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGMnLgoJKEFDX1BBVEhfVE9PTF9QUkVGSVgpOiBTaW1pbGFybHkgd2l0aCBgYWNfY3ZfcGF0aF9NQUdJQ19DTUQnCgkoQUNfUFJPR19MRCkgPGFjX2N2X3BhdGhfTEQ+OiBMaWtld2lzZS4KCShBQ19QUk9HX0xEX0dOVSkgPGFjX2N2X3Byb2dfZ251X2xkPjogTGlrZXdpc2UuCgkoQUNfUFJPR19OTSkgPGFjX2N2X3BhdGhfTk0+OiBMaWtld2lzZS4KCjIwMDAtMTItMTUgIFV0ei1Vd2UgSGF1cyAgPGhhdXNAbWFpbC5tYXRoLnVuaS1tYWdkZWJ1cmcuZGU+CgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxvcGVuKTogQ2hhbmdlZCAiZGxfZGVwZW5kZW5jeV9saWJzIiBrZXl3b3JkCgl0byAiZGVwZW5kZW5jeV9saWJzIi4KCjIwMDAtMTItMTQgIFRvZCBNaWxhbSAgPHRtaWxhbUB0cmFjbGFicy5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxleGl0KTogUmVzZXQgdGhlIGxvYWRlcnMgdmFsdWUgdG8gemVybyB3aGVuCgl0aGUgbGFzdCBtb2R1bGUgaGFzIGJlZW4gdW5sb2FkZWQuCgoyMDAwLTEyLTE0ICBNaWNoYWVsIFNjaG1pdHogIDxtc2NobWl0ekBpbmFtZS5jb20+CgoJKiBsaWJ0b29sLm00OiBQb3J0IHRvICotc25pLXN5c3Y0IChSZWxpYW50IFVuaXgpCgkqIFJFQURNRTogYWRkZWQgUmVsaWFudCBVbml4IHRvIGh0ZSBsaXN0IG9mIHN1cHBvcnRlZCBwbGF0Zm9ybXMKCSogZG9jL1BMQVRGT1JNUzogYWRkZWQgbm90ZSBvbiB0ZXN0cyBvbiBSZWxpYW50IFVuaXgKCjIwMDAtMTItMTQgIE1hc2FoaXJvIE5vYm9yaSAgPG5vYm9yaUBzcy50aXRlY2guYWMuanA+CgoJKiBSRUFETUU6ICBVcGRhdGVkLgoJKiBORVdTOiBVcGRhdGVkLgoJKiBsaWJ0b29sLm00OiAgTmV3IHBvcnQgdG8gTkVXUy1PUyBSZWxlYXNlIDYuCgoyMDAwLTEyLTE0ICBOaWNrIEh1ZHNvbiAgPHNrcmxsQG5ldGJzZC5vcmc+CgoJKiBsaWJ0b29sLm00IChoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjKTogIFJlbW92ZSBsaW5rZXIKCXNwZWNpZmljYXRpb24gZm9yIG5ldGJzZC4KCjIwMDAtMTItMTQgIEFraW0gRGVtYWlsbGUgIDxha2ltQGVwaXRhLmZyPgoKCSogbGlidG9vbC5tNDogIERvbid0IGRlcGVuZCBvbiBBdXRvY29uZiBpbnRlcm5hbHM6CglzL2FjX2N2X3Byb2dfZ2NjL0dDQy8uCgoyMDAwLTEyLTE0ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX0dMT0JBTF9TWU1CT0xfUElQRSk6IERvbid0IGVtcHR5CglvdXQgYWNfY3ZfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBpbnNpZGUgdGhlIGxvb3AsIGluY2FzZSB3ZQoJbmVlZCB0byBnbyBhcm91bmQgYWdhaW4gYW5kIHRyeSB3aXRoIHVuZGVyc2NvcmUgcHJlZml4LgoJKF9MVF9BQ19UUllfRExPUEVOX1NFTEYpOiBPbiBzb21lIGhvc3RzIChjeWd3aW4gZm9yIGluc3RhbmNlKQoJc2VsZiBkbGNsb3NpbmcgdW5sb2FkcyB0aGUgbWFpbiBwcm9ncmFtIGFuZCBjYXVzZXMgYSBTSUdTRUdWLiAgU28KCWRvbid0IGRvIGl0IGZvciBub3cuCgoyMDAwLTEyLTA1ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCglPaCBNeSEgQ3lnd2luIHN1cHBvcnQgaGFzIGJpdHJvdHRlZCB3aGlsZSBJIHdhcyBsb29raW5nIHRoZSBvdGhlcgoJd2F5LiAgVGhpcyBzaG91bGQgZml4IGl0IHNvbWU6CgkqIGxpYnRvb2wubTQgKGV4dHJhY3RfZXhwc3ltc19jbWRzKTogVGhlcmUgaXMgYSBxdW90aW5nIHByb2JsZW0KCXdpdGggYXV0b2NvbmYtMi4xMyB0aGF0IHByZXZlbnRzIFskXTAgZnJvbSBleHBhbmRpbmcuICBVc2Ugc2hlbGwKCXF1b3RlcyBpbnN0ZWFkIHRvIGRlbGF5IGV2YWwgb2YgJDAuCgkoaW1wZ2VuLmMpIFRoZSAnIyAnIHNlcXVlbmNlIHN0cmlwcGVkIGJ5IHNlZCB3b3JrcyBhZ2Fpbi4KCjIwMDAtMTItMDEgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogZG9jL2xpYnRvb2wudGV4aSAoTGlibHRkbCBpbnRlcmZhY2UpOiAgQWRkIGRvY3VtZW50YXRpb24uCgkqIGxpYmx0ZGwvbHRkbC5oIChsdF9kbG1ha2VyZXNpZGVudCwgbHRfZGxpc3Jlc2lkZW50KTogIEFkZAoJcHJvdG90eXBlcy4KCShMVF9ETEVSUk9SX0NMT1NFX1JFU0lERU5UX01PRFVMRSk6IE5ldyBlcnJvciBzdGF0dXMuCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG1ha2VyZXNpZGVudCwgbHRfZGxpc3Jlc2lkZW50KTogIEFsbG93CgltYWtpbmcgYW5kIHRlc3Rpbmcgb2YgcmVzaWRlbnQgbW9kdWxlIHN0YXR1cywgd2hpY2ggcHJldmVudHMgYQoJbW9kdWxlIGZyb20gYmVpbmcgbHRfZGxjbG9zZWQuCgkobHRfZGxvcGVuKTogIElmIGx0X2Rsb3BlbigpaW5nIHNlbGYsIG1ha2UgdGhlIG1vZHVsZSByZXNpZGVudC4KCShsdF9kbGNsb3NlKTogIFJldHVybiBhbiBlcnJvciBpZiB0aGUgbW9kdWxlIGlzIHJlc2lkZW50LgoKCSogbGlidG9vbC5tNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiBNb3ZlIHRoZSB0ZXN0cyBmb3IgZGxvcGVuCglmcm9tIGhlcmUuLi4KCShBQ19MSUJUT09MX0RMT1BFTl9TRUxGKTogLi4udG8gaGVyZS4KCShfTFRfQUNfQ0hFQ0tfRExGQ04pOiAgRmFjdG9yIG91dCByZXBlYXRlZCBjb2RlIGZvciBkbGZjbi5oCgkoX0xUX0FDX1RSWV9ETE9QRU5fU0VMRik6IEZhY3RvciBvdXQgcmVwZWF0ZWQgY29kZSBmb3IKCWNoZWNraW5nIGRsb3BlbiBzdGF0dXMuCgkqIGx0ZGwubTQgKEFDX0xJQl9MVERMKTogIFVzZSBfTFRfQUNfQ0hFQ0tfRExGQ04uCglkbG9wZW4gY29tcGlsZSB0aW1lIGNoZWNraW5nLiAgVXNlIF9MVF9BQ19DSEVDS19ETEZDTi4KCShBQ19MVERMX0RMU1lNX1VTQ09SRSk6ICBVc2UgX0xUX0FDX1RSWV9ETE9QRU5fU0VMRi4KCjIwMDAtMTEtMjkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9sdGRsLmggKGx0X2RsaGFuZGxlKTogUmVuYW1lIHRoZSB3cmFwcGVkIHN0cnVjdHVyZQoJdG8gcHJldmVudCBuYW1lY2xhc2ggd2hlbiB1c2VkIGZyb20gQysrLgoJKiBsaWJsdGRsL2x0ZGwuYzogRml4ZWQgYWxsIHJlZmVyZW5jZXMuCgoyMDAwLTExLTI1ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW4pOiAgQ2hhbmdlIHRoZSBkZWZhdWx0IHNlYXJjaCBvcmRlcgoJZm9yIG1vZHVsZXMuICBJZiB0aGUgbmFtZWQgbW9kdWxlIGhhcyBubyBkaXJlY3RvcnkgY29tcG9uZW50LAoJYWx3YXlzIHN0YXJ0IHRoZSBzZWFyY2ggd2l0aCB0aGUgdXNlcl9zZWFyY2hfcGF0aCBkaXJlY3RvcmllcywKCWFuZCB0aGVuIGZhbGwgYmFjayBvbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkgb25seSBpZiB0aGF0IGZhaWxzLgoKMjAwMC0xMS0yMCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChsaWJsdGRsX2xhX0xERkxBR1MpOiBpbmNyZW1lbnQgdGhlIHZlcnNpb24KCW51bWJlciB0byByZWZsZWN0IHRoZSBicmVha2FnZSBvZiBiaW5hcnkgY29tcGF0aWJpbGl0eS4KCSogZG9jL2xpYnRvb2wudGV4aSAoTGlibHRkbCBpbnRlcmZhY2UpOiAgRG9jdW1lbnQKCUxUX05PTl9QT1NJWF9OQU1FU1BBQ0UuCgkqIGxpYmx0ZGwvbHRkbC5oIChMVF9QT1NJWF9OQU1FU1BBQ0UpOiAgRGVsZXRlZC4gIFRoZSBkZWZhdWx0IGlzCglub3cgdG8gdXNlIHRoaXMgbmFtZXNwYWNlLCBzbyB0aGUgY3BwIG1hY3JvIGlzIG5vIGxvbmdlcgoJbmVjZXNzYXJ5LgoKMjAwMC0xMS0yMCAgTW9ydGVuIEVyaWtzZW4gIDxtb3J0ZW5lQHNpbS5ubz4KCgkqIGx0ZGwubTQgKEFDX0xJQl9MVERMLCBBQ19MVERMX1NZTUJPTF9VU0NPUkUpOiBCcmVhayBhIGNpcmN1bGFyCglkZXBlbmRlbmN5IGJldHdlZW4gQUNfTFRETF9TWU1CT0xfVVNDT1JFIGFuZCBBQ19MVERMX0RMU1lNX1VTQ09SRS4KCjIwMDAtMTEtMjAgIFBhdWwgQmVycmV2b2V0cyAgPHBhdWxAc3dpLmNvbT4KCgkqIGx0bWFpbi5pbjogU29tZSB2ZXJzaW9ucyBvZiBleHByIHJlc3BvbmQgd2l0aCAiMCIgaWYgYQoJcmVnZXhwIGZhaWxzIHRvIG1hdGNoLgoKMjAwMC0xMS0xOSAgUGF1bCBCZXJyZXZvZXRzICA8cGF1bEBzd2kuY29tPgoKCSogbGlidG9vbC5tNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiBRdW90ZSB0aGUgJCBpbiAkIywgJDIgYW5kCgkkMyBpbiB2YXJpYWJsZSAnYXJjaGl2ZV9leHBzeW1fY21kcycgZm9yIGN5Z3dpbi4KCjIwMDAtMTEtMTkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRkbC5jOiBSZWxlZ2F0ZSBub24tUE9TSVgtY29tcGxpYW50IHN5bWJvbHMgKGUuZy4gdGhvc2UKCWVuZGluZyBpbiBgYF90JycpIHRvIGRlcHJlY2F0ZWQgI2RlZmluZSBjb21wYXRpYmlsaXR5IG1hY3Jvcy4KCUFsc28gZWFzZSB1cCBvbiB0aGUgbmFtZXNwYWNlIHBvbGx1dGlvbiwgc28gdGhhdCBvbmx5IGBgbHRfJycKCWFuZCBgYExUXycnIHByZWZpeGVzIGFyZSB0YWtlbiBmcm9tIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgoJKiBsdGRsLmg6IGRpdHRvLgoKMjAwMC0xMS0xNyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGRsLmM6IFJlZm9ybWF0dGVkLgoJKiBsdGRsLmg6IGRpdHRvLgoKMjAwMC0xMS0xMSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGRsLm00IChBQ19MVERMX1NZTUJPTF9VU0NPUkUpOiBVc2UgJGFjX2V4dCBmb3IgY29uZnRlc3QKCXNvdXJjZWZpbGUuCgkqIGxpYnRvb2wubTQ6IFVzZSAkYWNfZXh0IGFuZCAkYWNfb2JqZXh0IHJlc3BlY3RpdmVseSBmb3IgY29uZnRlc3QKCXNvdXJjZXMgYW5kIG9iamVjdHMuCglSZXBvcnRlZCBieSBDYXJsbyBXb29kIDxjYXJsb0BhbGlub2UuY29tPgoKCSogZG9jL2ZkbC50ZXhpOiBOZXcgZmlsZS4gIFRoZSBsaWNlbnNlIGZvciBkaXN0cmlidXRpbmcgdGhlCglsaWJ0b29sIG1hbnVhbC4KCSogZG9jL2xpYnRvb2wudGV4aTogUmVmZXJlbmNlIHRoZSBuZXcgbGljZW5zZS4KCjIwMDAtMTAtMzEgIE1vcnRlbiBFcmlrc2VuICA8bW9ydGVuZUBzaW0ubm8+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSyk6IFF1b3RlIGFyZ3VtZW50IHRvIGF2b2lkCgllcnJvciBvdXRwdXQgZnJvbSBjeWdwYXRoIHdoZW4gJHNyY2RpciBpcyBlbXB0eS4KCjIwMDAtMTAtMzEgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogYm9vdHN0cmFwOiAgcm0gTWFrZWZpbGVzIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcCBkdXJpbmcKCWNvbmZpZ3VyZSB3aGVuIGxpYnRvb2wubTQgaXMgbmV3ZXIgdGhhbiBNYWtlZmlsZS4KCjIwMDAtMTAtMzEgIEFraW0gRGVtYWlsbGUgIDxha2ltQGVwaXRhLmZyPgoKCSogbGlidG9vbC5tNDogQWRqdXN0IHRoZSBjb3B5cmlnaHQgbm90aWNlLgoJUXVvdGUgYWxsIHRoZSBtYWNybyBuYW1lcyB3aGVuIGRlZmluZWQuCglTb21lIG1pbm9yIGZvcm1hdHRpbmcgY2hhbmdlcy4KCShBTV9QUk9HX0xJQlRPT0wsIEFNX0VOQUJMRV9TSEFSRUQsIEFNX0VOQUJMRV9TVEFUSUMpCgkoQU1fRElTQUJMRV9TSEFSRUQsIEFNX0RJU0FCTEVfU1RBVElDLCBBTV9QUk9HX0xELCBBTV9QUk9HX05NKToKCURvbid0IHVzZSBpbmRpciB3aGVuIHVzZWxlc3MuICBEb24ndCBhZGQgdHJhaWxpbmcgYGRubCcgZWl0aGVyLgoKMjAwMC0xMC0zMCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBkb2MvbGlidG9vbC50ZXhpOiAgQ29ycmVjdGVkIGFub3RoZXIgYXR0YWNrIG9mIENSTEYgbGluZQoJZW5kaW5ncy4KCjIwMDAtMTAtMzAgIE9zc2FtYSBPdGhtYW4gIDxvc3NhbWFAZGViaWFuLm9yZz4KCgkqIGxpYnRvb2wubTQgKGFyY2hpdmVfZXhwc3ltX2NtZHMpOiBGaXggdHlwbyB3aGVyZSBsaW5lIHdhcyBicm9rZW4KCWluIHRoZSBtaWRkbGUgb2YgYW4gZXhwcmVzc2lvbi4KCjIwMDAtMTAtMzAgIEFuZWVzaCBLdW1hciBLLlYgPGt2YW5lZXNoQGhvdG1haWwuY29tPgoKCSogbGlidG9vbC5tNCAoYXJjaGl2ZV9leHBzeW1fY21kcyk6ICBTdXBwb3J0IGZvciAtZXhwb3J0LXN5bWJvbAoJb3B0aW9uIG9uIFRydTY0LgoJKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMpOiBGaXhlZCBjeHggdGhyb3dpbmcgZXJyb3Igd2hpbGUgdXNpbmcKCWxpYnRvb2wuICBEb25lIGJ5IHBhc3NpbmcgLXJwYXRoIGRpcmVjdGx0eSB0byB0aGUgY29tcGlsZXIuCgoyMDAwLTEwLTI3ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUByaWNhcmRvLXVzLmNvbT4KCgkqIGRvY3MvbGlidG9vbC50ZXhpOiBBZGRlZCBwb2ludGVycyB0byBkb2N1bWVudGF0aW9uCglvZiBIZXdsZXR0LVBhY2thcmQsIENvbXBhcSBUcnU2NCBhbmQgSUJNIEFJWCBzeXN0ZW1zLgoKMjAwMC0xMC0wMiAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJRnJvbSBCcnVjZSBLb3JiIDxia29yYkBjcnV6aW8uY29tPgoJKiBsdG1haW4uaW4gKGV4ZWN1dGVfZGxmaWxlcyk6IFJlZHVjZSBvYmZ1c2NhdGlvbi4KCjIwMDAtMDktMzAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbGlidG9vbC5tNCBbbmV0YnNkKl0gKGRlcGxpYnNfY2hlY2tfbWV0aG9kLCBmaWxlX21hZ2ljX2NtZCwKCWZpbGVfbWFnaWNfdGVzdF9maWxlKTogUmVtb3ZlZCBpbmFwcHJvcHJpYXRlIGR1cGxpY2F0ZQoJZGVmaW5pdGlvbnM7IHRoZXNlIHZhcmlhYmxlcyBhcmUgc2V0IGluIEFDX0RFUExJQlNfQ0hFQ0tfTUVUSE9ELgoKCSogbGlidG9vbC5tNCAobHRfY3ZfZmlsZV9tYWdpY19jbWQpOiBEb24ndCB1c2UgJyR7TUFHSUNfQ01EfScgb3IKCScke09CSkRVTVB9JzsgU29sYXJpcycgL2Jpbi9zaCBsb3NlcyB3aXRoIGB9JyBpbiBjYWNoZSBmaWxlcy4KCShhY19jdl9wYXRoX01BR0lDX0NNRCk6IFJlbmFtZWQgdG8gbHRfY3ZfcGF0aF9NQUdJQ19DTUQuCgoyMDAwLTA5LTI4ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYnRvb2wubTQgKE1BR0lDX0NNRCk6IERvbid0IHVzZSBNQUdJQywgc2luY2UgQlNEIHZlcnNpb25zIG9mCgl0aGUgZmlsZSBjb21tYW5kIHVzZSB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGhvbGQgdGhlCglsb2NhdGlvbiBvZiB0aGUgbWFnaWMgZGF0YWJhc2UuCglSZXBvcnRlZCBieSBNYXJjIEVzcGllIDxNYXJjLkVzcGllQGxpYWZhLmp1c3NpZXUuZnI+CgoyMDAwLTA5LTE5ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGRvYy9QTEFURk9STVM6IFVwZGF0ZWQuCgkqIGRlbW8vY29uZmlndXJlLmluOiAgUmV2ZXJ0IHRvIHRoZSBgbGlidG9vbCAtLWZlYXR1cmVzJyB0ZXN0LgoJKiBNYWtlZmlsZS5hbSAobGlidG9vbCk6ICBUaGlzIG5lZWRzIHRvIHJlcnVuIGNvbmZpZ3VyZSBub3cgdGhhdAoJbGlidG9vbCBpcyBnZW5lcmF0ZWQgZW50aXJlbHkgYnkgQUNfUFJPR19MSUJUT09MIGFnYWluLgoJKGx0Y29uZmlnKTogUmVtb3ZlZC4KCShsdG1haW4uc2gpOiAgSXMgbm93IHJlZ2VuZXJhdGVkIHdoZW4gbHRtYWluLmluIGNoYW5nZXMuCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19MVENPTkZJR19IQUNLKTogTm93IGRvZXMgYWxsIG9mIHRoZSB3b3JrIGZvcgoJZ2VuZXJhdGluZyBsaWJ0b29sIGltbWVkaWF0ZWx5IGluIGNvbmZpZ3VyZS5pbiwgcmF0aGVyIHRoYW4KCWRlZmVycmluZyBwYXJ0IG9mIHRoZSBjcmVhdGlvbiB1bnRpbCBjb25maWcuc3RhdHVzIHJ1bnMuCgoyMDAwLTA5LTE3ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGJvb3RzdHJhcDogIEJhY2tlZCBvdXQgeWVzdGVyZGF5cyBwYXRjaCB3aGljaCBpcyBubyBsb25nZXIKCW5lY2Vzc2FyeS4KCSogTWFrZWZpbGUuYW0gKGxpYnRvb2wpOiBSZXdvcmtlZCBydWxlIGZvciByZWdlbmVyYXRpb24gb2YgbGlidG9vbCwKCW5vdyB0aGF0IGl0IGlzIGJ1aWx0IGVudGlyZWx5IHdpdGhpbmcgY29uZmlnLnN0YXR1cy4KCShsaWJ0b29saXplKTogVGlkaWVkIGZvciBvcnRob2dvbmFsaXR5IHdpdGggdGhlIG90aGVyIGdlbmVyYXRpb24KCXJ1bGVzLgoJKGx0Y29uZmlnKTogIFRoaXMgaXMgbm93IGdlbmVyYXRlZCBieSBBQ19QUk9HX0xJQlRPT0wsIGNhbGxlZCBmcm9tCgltYWtlIGJ5IHJ1bm5pbmcgY29uZmlnLnN0YXR1cyAtLXJlY2hlY2suCgkobHRtYWluLnNoKTogTW92ZWQgcHJpbWFyeSBnZW5lcmF0aW9uIG9mIHRoaXMgZmlsZSBpbnRvIGhlcmUuLi4KCSogY29uZmlndXJlLmluIChBQ19PVVRQVVQpOiAuLi5pbnN0ZWFkIG9mIGhlcmUuCgkqIGxpYnRvb2wubTQgKEFDX09VVFBVVF9DT01NQU5EUyk6ICBXcml0ZSB0aGUgY29uZmlnIHRvIGx0Y29uZmlnCgl3aGVyZSBpdCBjYW4gYmUgcmV1c2VkLCByYXRoZXIgdGhhbiBkaXJlY3RseSB0byBsaWJ0b29sLgoJKiBkZW1vL2NvbmZpZ3VyZS5pbjogIGxpYnRvb2wgaXMgbm8gbG9uZ2VyIHByZXNlbnQgaW1tZWRpYXRlbHkKCWFmdGVyIEFDX0xJQlRPT0xfTTQgaGFzIGNvbXBsZXRlZCwgc28gdGhlIHRlc3RzIG5vdyBncmVwIHRocm91Z2gKCWx0Y29uZmlnIGluc3RlYWQgLS0gd2hpY2ggKndpbGwqIGJlIHByZXNlbnQuCgoyMDAwLTA5LTE2ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIFRPRE86IFJlbW92ZWQgdGhlIGl0ZW0gZGVzY3JpYmluZyB0aGUgY2hhbmdlIGJlbG93LCBhbmQgYWRkZWQgYQoJc2ltaWxhciBpdGVtIHRvIHJlbWluZCB1cyB0byBjaGFuZ2UgdGhlIGx0ZGwubTQgbWFjcm9zIGFnYWluIHdoZW4KCV9MVF9BQ19MVENPTkZJR19IQUNLIGlzIGRpdmlkZWQgaW50byBwcm9wZXIgbWFjcm9zLgoJKiBsdGRsLm00IChBQ19MVERMX1NOQVJGX0NPTkZJRyk6ICBSZW1vdmVkLiAgTm8gbG9uZ2V0IHJlcXVpcmVkCglub3cgdGhhdCBsdGNvbmZpZyBoYXMgbWlncmF0ZWQgdG8gbGlidG9vbC5tNC4KCShBQ19MVERMX1NITElCRVhUKTogUmVxdWlyZSBfTFRfQUNfTFRDT05GSUdfSEFDSy4KCShBQ19MVERMX1NITElCUEFUSCk6IGRpdHRvLgoJKEFDX0xURExfU1lTU0VBUkNIUEFUSCk6IGRpdHRvLgoKCSogbHRkbC5tNCAoQUNfTFRETF9ETFBSRU9QRU4pOiBSZXF1aXJlIHRoZSBsaWJ0b29sLm00IHN5bWJvbF9waXBlCgltYWNyby4KCShBQ19MVERMX1NZTUJPTF9VU0NPUkUpOiBkaXR0by4KCShBQ19MVERMX0dMT0JBTF9TWU1CT0xfUElQRSk6IFJlbW92ZWQsIHNpbmNlIGl0IGlzIGEgZHVwbGljYXRlCglvZi4uLgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEUpOiAuLi50aGlzIG5ldwoJbWFjcm8sIGV4dHJhY3RlZCBmcm9tIF9MVF9BQ19MVENPTkZJR19IQUNLLgoKCSogbHRkbC5tNCAoY2hhbmdlcXVvdGUpOiBBbiBhdWRpdCBvZiBjaGFuZ2VxdW90ZSBhbmQgbTQKCXF1b3RlIHVzYWdlIC0tIGFsbCBjaGFuZ2VxdW90ZXMgaGF2ZSBiZWVuIHJlbW92ZWQsIGFuZCBzb21lCglsYXRlbnQgdW5xdW90ZWQgYFsnIGFuZCBgXScgYnVncyBoYXZlIGJlZW4gZml4ZWQuCgoJKiBjb25maWd1cmUuaW4gKEFDX09VVFBVVCk6IGx0bWFpbi5zaCBtdXN0IGJlIGdlbmVyYXRlZCBpbiB0aGUKCXNvdXJjZSB0cmVlIHNpbmNlIHRoaXMgaXMgd2hlcmUgaXQgd291bGQgYmUgZm91bmQgaW4gYSBmcmVzaGx5Cgl1bnJvbGxlZCB0YXJiYWxsLgoKCSogY29uZmlndXJlLmluOiBSZXBsYWNlIGBkbmwnIGNvbW1lbnRzIHdpdGggYCMnIGNvbW1lbnRzIGZvcgoJbW9yZSBjb25mb3JtaXR5IHdpdGggY3ZzIGF1dG9jb25mLgoJUmVtb3ZlZCBlbWFjcyBoYWNrLWxvY2FsLXZhcmlhYmxlcywgc2luY2UgdGhlcmUgaXMgbm93IGEKCXByb3BlciBBdXRvY29uZiBtYWpvciBtb2RlLgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiBjaGFuZ2VxdW90ZSgpcy4KCgkqIGJvb3RzdHJhcCAobHRjb25maWcpOiBXaGVuIGJvb3RzdHJhcHBpbmcgbGlidG9vbCB3aXRoIGEKCXN0b2NrIGF1dG9tYWtlIChpLmUuIHdpdGhvdXQgdGhlIFJFQURNRSBwYXRjaCBhcHBsaWVkKSwKCXJlZmVyZW5jZXMgdG8gbHRjb25maWcgYXJlIG1hbnVhbGx5IHJlbW92ZWQgZnJvbSB0aGUgZ2VuZXJhdGVkCglNYWtlZmlsZS5pbiBmaWxlcy4KCjIwMDAtMDktMTUgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogZG9jL2xpYnRvb2wudGV4aTogUmVtb3ZlcyByZWZlcmVuY2VzIHRvIGx0Y29uZmlnLCBhbmQgYSBzbWFsbAoJYW1vdW50IG9mIHRpZHlpbmcgdXAgdG8gY29tcGVuc2F0ZS4KCjIwMDAtMDktMTUgIE5pY2sgSHVkc29uICA8c2tybGxAbmV0YnNkLm9yZz4KCgkqIGxpYnRvb2wubTQgKG5ldGJzZCk6IEltcHJvdmVkIHN1cHBvcnQuCgoyMDAwLTA5LTE1ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0bWFpbi5pbiAodmVyc2lvbl90eXBlKTogVXNlICItaWZhY2UiIGFzIHRoZSB3aW5kb3dzCgl2ZXJzaW9uaW5nIHNjaGVtZSwgd2hlcmUgaWZhY2UgaXMgdGhlIG51bWJlciBvZiB0aGUgb2xkZXN0CglpbnRlcmZhY2Ugc3VwcG9ydGVkLgoKMjAwMC0wOS0xNCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJRnJvbSBQYXVsIFNva29sb3Zza3kgPFBhdWwuU29rb2xvdnNreUB0ZWNobm9sb2dpc3QuY29tPgoJKiBsaWJ0b29sLm00IChwdzMyKTogSW5pdGlhbCBzdXBwb3J0IGZvciBwdzMyLCBhc3N1bWluZyB0aGF0CglsaWJ0b29sJ3MgYmVoYXZpb3VyIGluIHRoaXMgZW52aXJvbm1lbnQgaXMgaWRlbnRpY2FsIHRvIHVuZGVyCgljeWd3aW4uCgkqIGx0bWFpbi5pbiAocHczMik6IGRpdHRvLgoJKiBORVdTOiBVcGRhdGVkLgoKCSogbGlidG9vbC5tNCAoY2hhbmdlcXVvdGUpOiBBbiBhdWRpdCBvZiBjaGFuZ2VxdW90ZSBhbmQgbTQKCXF1b3RlIHVzYWdlIC0tIGFsbCBjaGFuZ2VxdW90ZXMgKGV4Y2VwdCBhIGZldyB3aXRoIG5vbi1uZXN0aW5nCglzcXVhcmUgYnJhY2tldHMpIGhhdmUgYmVlbiByZW1vdmVkLgoKCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiAgVGhlIGJvb3RzdHJhcCBzY3JpcHQgc2hvdWxkIGJlCglkaXN0cmlidXRlZCB3aXRoIGxpYnRvb2wuCgoyMDAwLTA5LTEzICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCglsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSyk6IE9oIG1hbiEgIFRoaXJkIHRpbWUgbHVja3kuCglJIGp1c3QgZGlzY292ZXJlZCB0aGF0ICcmJyBuZWVkcyB0byBiZSBlc2NhcGVkIGluc2lkZQoJQUNfVFJZX0VWQUwuCgoyMDAwLTA5LTEyICBNaWNoYWVsIE1hdHogIDxtYXR6QGlmaC5kZT4KCgkqIGx0bWFpbi5pbjogIEJlIGNhcmVmdWwgYWJvdXQgZmlsZW5hbWVzIHdpdGggbXVsdGlwbGUgYC4ncyBpbgoJdGhlbSB3aGVuIGNhbGN1bGF0aW5nIGZpbGUgZXh0ZW5zaW9ucy4KCVJlcG9ydGVkIGJ5IEpvZWwgUmVlZCA8anJlZWRAc3VwcG9ydC5kZGl3b3JsZC5jb20+CgoyMDAwLTA5LTEyICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCglsaWJ0b29sLm00IChBQ19QUk9HX0xJQlRPT0wpOiAgUmVtb3ZlZCwgYXMgaXQgd2FzIHRyaWdnZXJpbmcgYQoJYnVnIGluIEF1dG9jb25mLTIuMTMgQUNfUkVRVUlSRSBpbXBsZW1lbnRhdGlvbiB3aGljaCBpbnNlcnRlZAoJc29tZSBvZiB0aGUgZXhwYW5kZWQgdGVzdHMgdG9vIGVhcmx5IGluIHRoZSBnZW5lcmFhdGVkIGNvbmZpZ3VyZS4KCShfQUNfUFJPR19MSUJUT09MKTogcmVuYW1lZCB0byBBQ19QUk9HX0xJQlRPT0wsIGFuZCBkZWZpbmVzCglpdHNlbGYgdG8gYW4gZW1wdHkgZXhwYW5zaW9uIHRvIHByZXZlbnQgbXVsdGlwbGUgZXhwYW5zaW9ucy4KCWNvbmZpZ3VyZS5pbiAoQUNfTElCVE9PTF9TRVRVUCk6IFJlcGxhY2VkIGJ5IGEgY2FsbCB0bwoJQUNfUFJPR19MSUJUT09MIG5vdyB0aGF0IHRoZSBBQ19SRVFVSVJFIGJ1ZyBoYXMgYmVlbiB3b3JrZWQKCWFyb3VuZC4KCjIwMDAtMDktMDkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCWxpYnRvb2wubTQgKF9MVF9BQ19MVENPTkZJR19IQUNLKTogRm9yZ290IHRvIGVzY2FwZSB0aGUKCXJlZGlyZWN0aW9ucyBpbnNpZGUgQUNfVFJZX0VWQUwgaW4gdGhlIG5lZWRfbGMgdGVzdHMuIERvaCEKCglsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSyk6IEZvcmdvdCB0byByZWRpcmVjdCB0aGUKCW91dHB1dCBvZiBncmVwIHRvIC9kZXYvbnVsbCBpbiB0aGUgbmVlZF9sYyB0ZXN0cy4KCgljb25maWd1cmUuaW4gKEFDX1BST0dfTElCVE9PTCk6ICBVc2luZyB0aGlzIGluIGxpYnRvb2xzIG93bgoJY29uZmlndXJlLmluIGludGVyYWN0cyBiYWRseSB3aXRoIHRoZSBBQ19QUk9WSURFIGNhbGxzIGFuZAoJcmVzdWx0cyBpbiBzZXZlcmFsIHRlc3RzIGJlaW5nIGluc2VydGVkIGludG8gY29uZmlndXJlIHRvbwoJZWFybHkuICBVc2UgQUNfTElCVE9PTF9TRVRVUCBpbnN0ZWFkLgoKMjAwMC0wOS0wOCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJbGlidG9vbC5tNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiBUaGUgbHRjb25maWcuaW4gY29kZSBJCglwb3J0ZWQgZnJvbSBsdGNvbmZpZy5pbiB3YXMgaW5jb21wbGV0ZSAtLSB0aGlzIGlzIGEgYmFja3BvcnQKCW9mIHRoZSBtaXNzaW5nIGNvZGUgdGFrZW4gZnJvbSB0aGUgbXVsdGktbGFuZ3VhZ2UgYnJhbmNoLgoKMjAwMC0wOS0wNyAgUGF2ZWwgUm9za2luICA8cHJvc2tpbkBnbnUub3JnPgoKCSogbGlidG9vbC5tNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiAgRml4ZWQgaW5jb3JyZWN0IHVzZSBvZgoJY2hhbmdlcXVvdGUKCjIwMDAtMDktMDcgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogTkVXUzogIFVwZGF0ZWQuCgkqIFRPRE86ICBBZGQgYSByZW1pbmRlciB0byBnZXQgcmlkIG9mIGx0Y29uZmlnIGluIG1sYi4KCSogUkVBRE1FOiBVbnRpbCB0aGluZ3MgZXZlbiBvdXQsIEkgaGF2ZSBhZGRlZCBhIG5vdGUgYW5kIGEKCXBhdGNoIHRvIG1ha2UgdGhlIGluc3RhbGxlZCBhdXRvbWFrZSBjb29wZXJhdGUgd2l0aCB0aGUgbmV3CglsdGNvbmZpZyBmcmVlIGxpYnRvb2wuCgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSyk6IHdpdGhfZ2NjIGlzIG9ubHkgdXNlZnVsIGluCglsdG1haW4uc2ggYXMgaXQgaGFzIG5vdCB5ZXQgYmVlbiBzZXQgaW4gbGlidG9vbC5tNC4gIFVzZQoJJGFjX2N2X3Byb2dfZ2NjIGluc3RlYWQuCgoJKiBkb2MvUExBVEZPUk1TOiBVcGRhdGVkLgoKCSogY29uZmlndXJlLmluIChBQ19QUk9HX0FXSyk6IFJlbW92ZWQgLS0gbm8gbG9uZ2VyIHJlcXVpcmVkIGJ5Cgl0aGUgYnVpbGQgcHJvY2Vzcy4KCSogbGluZW5vOiBkaXR0by4KCgkqIGxpYnRvb2xpemUuaW4gKGZpbGVzKTogRG9uJ3QgdHJ5IHRvIGluc3RhbGwgbHRjb25maWcgLS0gaXQKCWRvZXNuJ3QgZXhpc3QhIQoJKiBib290c3RyYXA6IEZha2UgYW4gbHRjb25maWcgaW5jYXNlIHRoZSBpbnN0YWxsZWQgYXV0b21ha2UKCWNhbGxzIGFuIGluc3RhbGxlZCBsaWJ0b29saXplIChhcyBwYXJ0IG9mIGl0cyAtLWFkZC1taXNzaW5nCglwcm9jZXNzKSB3aGljaCB0aGlua3MgbHRjb25maWcgc2hvdWxkIGJlIHRoZXJlLgoKCSogbGlidG9vbC5tNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiBEZWxldGVkIGEgdml0YWwgYDs7JwoJdGVybWluYXRvciBmcm9tIGEgY2FzZSBzdGF0ZW1lbnQgYnkgbWlzdGFrZS4KCgkqIE1ha2VmaWxlLmFtIChsdG1haW4uc2gpOiAgTWFrZSB0aGlzIGRlcGVuZCBvbiBUU0RFUFMgYWdhaW4KCXNvIHRoYXQgdGhlIENoYW5nZWxvZyB0aW1lc3RhbXAgaXMgdXNlZCBmb3IgbHRtYWluLnNoIGF0IGBtYWtlCglkaXN0JyB0aW1lLgoKMjAwMC0wOS0wNiAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJbGlidG9vbC5tNCBub3cgY29udGFpbnMgYSB2ZXJzaW9uIG9mIHRoZSBjb2RlIHRoYXQgdXNlZCB0byBydW4KCWZyb20gbHRjb25maWcsIHNvIHRoYXQgbHRtYWluLnNoIGFuZCB0aGVuIGxpYnRvb2wgYXJlCglnZW5lcmF0ZWQgYXQgY29uZmlndXJlIHRpbWUuCgoJKiBNYWtlZmlsZS5hbTogIERvbid0IGdlbmVyYXRlIGx0bWFpbi5zaCBvciBsdGNvbmZpZyBhbnltb3JlLgoJKiBib290c3RyYXA6IGx0Y29uZmlnIGlzIG5vIG1vcmUhCgkqIGNvbmZpZ3VyZS5pbjogQ2FsbCBBQ19QUk9HX0xJQlRPT0wgZGlyZWN0bHkuCgkoQUNfT1VUUFVUKTogR2VuZXJhdGUgdG1haW4uc2guCgkqIGxpYnRvb2wubTQ6IERvbid0IGJ1aWxkIGFuIGFyZ3VtZW50IGxpc3QgZm9yIGx0Y29uZmlnLgoJKF9MVF9BQ19MVENPTkZJR19IQUNLKTogIFJlZmFjdG9yaW5nIG9mIHRoZSBmb3JtZXIgY29udGVudHMgb2YKCWx0Y29uZmlnLmluIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBtNCBtYWNyb3MgZnJvbSBhdXRvY29uZi4KCSogbHRtYWluLmluOiBEb24ndCBkbyBhIHZlcnNpb24gY2hlY2sgYWdhaW5zdCBsdGNvbmZpZy4KCSogdGVzdHMvYXNzaWduLnRlc3Q6IFJlbW92ZSByZWZlcmVuY2UgdG8gbHRjb25maWcuCgkqIHRlc3RzL2hhcmRjb2RlLnRlc3Q6IGRpdHRvLgoJKiB0ZXN0cy9zaC50ZXN0OiBkaXR0by4KCjIwMDAtMDktMDUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZGVwZGVtby9tYWluLmM6IFN1cHBvcnQgLWFsdC4KCSogdGVzdHMvYnVpbGQtcmVsaW5rMi50ZXN0OiBUcnkgaXQuCgoJKiBsdGNvbmZpZy5pbjogUmVtb3ZlZCBhbGwgcmVmZXJlbmNlcyB0byB3aGF0IHVzZWQgdG8gYmUKCWhhcmRjb2RlX2ludG9fbGlicz1hbGwuICAyMDAwLTA5LTAzJ3MgcGF0Y2ggd2FzIHdyb25nLgoJKiBsdG1haW4uaW46IExpa2V3aXNlLgoJKiB0ZXN0cy9idWlsZC1yZWxpbmsudGVzdCwgdGVzdHMvYnVpbGQtcmVsaW5rMi50ZXN0OiBBZGp1c3QuCgkqIG1kZW1vL01ha2VmaWxlLmFtIChsaWJfTFRMSUJSQVJJRVMpOiBNb3ZlIGxpYnN1Yi5sYSBiZWZvcmUKCWxpYmZvbzIubGEsIHNvIHRoYXQgdGhleSdyZSBpbnN0YWxsZWQgaW4gdGhlIHJpZ2h0IG9yZGVyLgoKMjAwMC0wOS0wNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiB0ZXN0cy9kcnlydW4udGVzdDogQnVpbGQgbGlic3ViLmxhIGFsb25nIHdpdGggdGhlIG9iamVjdCBmaWxlcywKCXNpbmNlIGl0IGlzIG5lZWRlZCBieSBsaWJmb28yLmxhLgoKCSogbWRlbW8vTWFrZWZpbGUuYW06IE1hcmsgb25seSBsaWJmb28yIGFzIC1uby11bmRlZmluZWQuCglFeHBsaWNpdGx5IGxpbmsgaXQgd2l0aCBsaWJzdWIubGEuCgoJKiBsdGNvbmZpZy5pbiAobmVlZF9sYyk6IFByZXNlcnZlIGFsbG93X3VuZGVmaW5lZF9mbGFnLgoKCSogdGVzdHMvKi50ZXN0IChDT05GSUdfU0lURSk6IFVsdHJpeCdzIC9iaW4vc2ggZmFpbHMgb24KCWAuIC9kZXYvbnVsbCcuICBTZXQgQ09ORklHX1NJVEUgdG8gL2Rldi9udWxsL2NvbmZpZy9zaXRlLCB0byBtYWtlCglzdXJlIHdlIHBpY2sgYSBub24tZXhpc3RlbnQgZmlsZS4KCgkqIE1ha2VmaWxlLmFtIChsaWJ0b29sLCBjbGlidG9vbCk6IFBhc3MgQ09ORklHX1NIRUxMIGFsb25nIHdpdGgKCUVDSE8gZG93biB0byBsdGNvbmZpZy4KCgkqIGx0Y29uZmlnLmluIChoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBleHBvcnRfZHluYW1pY19mbGFnX3NwZWMpOgoJVXNlICR7d2x9LCBub3QgJHt3bGFyY30uCgoJKiBsdG1haW4uaW4gKGNvbXBpbGUsIG5lZWRfbG9jayk6IERvbid0IGNyZWF0ZSBub3IgcmVtb3ZlIGxvY2sKCWZpbGVzIGluIGRyeSBydW5zLgoKCSogbGlibHRkbC9sdGRsLmMgKGxvYWRfZGVwbGlicyk6IERvbid0IGFwcGVuZCBzaGxpYl9leHQ7IHVzZQoJbHRfZGxvcGVuZXh0KCkgaW5zdGVhZC4KCgkqIGx0bWFpbi5pbiAobGluayAtc3RhdGljKTogRG9uJ3QgYWRkICRsaW5rX3N0YXRpY19mbGFnOyBvbmx5CgktYWxsLXN0YXRpYyBzaG91bGQgZG8gdGhhdC4KCSogbWRlbW8vY29uZmlndXJlLmluOiBSZXZlcnQgcGFydCBvZiB0aGUgcHJldmlvdXMgZGVsdGEuCgoJKiBtZGVtby9jb25maWd1cmUuaW46IERvbid0IHVzZSAtc3RhdGljIG9uIEFJWDQuMS4KCSogbWRlbW8vTWFrZWZpbGUuYW06IExpa2V3aXNlLgoKMjAwMC0wOS0wMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsdGNvbmZpZy5pbjogR2V0IHJpZCBvZiBoYXJkY29kZV9pbnRvX2xpYnM9YWxsOyB1c2UKCWhhcmRjb2RlX2ludG9fbGlicz15ZXMgJiYgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIT15ZXMKCWluc3RlYWQuCglbRnJlZUJTRCAzLlswMV1dIChzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgpOiBTZXQgdG8gbm8uCgkqIGx0bWFpbi5pbjogTGlrZXdpc2UuCgkqIHRlc3RzL2J1aWxkLXJlbGluay50ZXN0LCB0ZXN0cy9idWlsZC1yZWxpbmsyLnRlc3Q6IEFkanVzdC4KCgkqIGxpYnRvb2wubTQ6IEZpeCB0eXBvIEkgaW50cm9kdWNlZCBpbiB5ZXN0ZXJkYXkncyBwYXRjaC4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW4pOiBTZXQgZGxuYW1lIGZyb20gbGlicmFyeV9uYW1lcyBpZgoJZGxuYW1lIGlzIGVtcHR5LgoKCSogbHRkbC5tNCAoSEFWRV9MSUJETCk6IExvb2sgZm9yIGRsb3BlbiBpbiAtbHN2bGQuCgkqIGx0Y29uZmlnLmluOiBMaWtld2lzZS4KCgkqIHRlc3RzL21kZW1vLWV4ZWMudGVzdDogTW9kaWZ5IGZhaWx1cmUgbWVzc2FnZS4KCgkqIGx0bWFpbi5pbiAobmV3ZGxwcmVmaWxlcyk6IFVzZSBkbG5hbWUgaWYgaXQncyBhdmFpbGFibGUgYW5kCglvbGRfbGlicmFyeSBpc24ndDsgdXNlIGxpbmtsaWIgb25seSBpZiBkbG5hbWUgaXMgbm90IGF2YWlsYWJsZS4KCgkqIGx0Y29uZmlnLmluIChlbmFibGVfZGxvcGVuKTogU2V0IHRvIG5vIHdoZW4gbHRfY3ZfZGxvcGVuIGlzIG5vLgoKCSogbGlidG9vbC5tNDogRG9uJ3QgcXVvdGUgQ09ORklHX1NIRUxMIG5vciBPUklHSU5BTF9DT05GSUdfU0hFTEwuCglRdW90ZSAkQCBwcm9wZXJseSBzbyB0aGF0IHRoZSBzaGVsbCBleHBhbmRzIGl0LCBub3QgbTQuCgoJKiBsaWJ0b29sLm00OiBEb24ndCBxdW90ZSBTSEVMTCB3aGVuIGByZS1leGVjJ2luZywgc28gdGhhdCBTSEVMTAoJY2FuIGJlIGAvcGF0aC90by9zaGVsbCAteCcuCgoJKiB0ZXN0cy9xdW90ZS50ZXN0OiBNb3ZlIHRoZSBtYXRjaCB0ZXN0IG91dCBvZiBjYXNlIHN0YXRlbWVudHMsIHRvCgl3b3JrIGFyb3VuZCBidWcgaW4gL2Jpbi9zaCBvZiBzZXZlcmFsIE9Tcy4KCgkqIGx0bWFpbi5pbiAodmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmspOiBBdHRlbXB0IHRvIHVuc2V0IHRoZW0KCWluc3RlYWQgb2Ygc2V0dGluZyB0aGVtIHRvIGFuIGVtcHR5IHN0cmluZy4KCjIwMDAtMDktMDIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbHRjb25maWcuaW4gW3dpdGhfZ251X2xkXSAoYXJjaGl2ZV9jbWRzLCBhcmNoaXZlX2V4cHN5bV9jbWRzKQoJPHNvbGFyaXMqLCBzeXN2NSosIGJlb3MqPjogVXNlIGNvbXBpbGVyX2ZsYWdzIGluc3RlYWQgb2YgbGlua2VyCglmbGFncy4KCVJlcG9ydGVkIGJ5IEFsZXggSG9ybmJ5IDxhbGV4QGFudmlsLmNvLnVrPgoKMjAwMC0wOS0wMiAgTWFrb3RvIElzaGlzb25lICA8aXNoaXNvbmVAc3JhLmNvLmpwPgoKCSogbGlidG9vbC5tNCAobHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QsIGZyZWVic2QpOiBGaXggdHlwbywKCWFkZCBzdXBwb3J0IGZvciBjb21wYWN0IGZvcm1hdCBsaWJyYXJ5LgoKMjAwMC0wOS0wMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsdGRsLm00OiBPb3BzLCBJIGhhZCBmb3Jnb3R0ZW4gdG8gY29tbWl0IHRoaXMgcGFydCBvZiBTeWQgUG9saydzCglwYXRjaCBmcm9tIDIwMDAtMDYtMTcuCgoyMDAwLTA5LTAyICBUb20gS2Fjdmluc2t5ICA8dGprQGFtcy5vcmc+LCBUaW0gTW9vbmV5IDxtb29uZXlAZG9nYmVydC5jYy5uZHN1Lk5vRGFrLmVkdT4KCgkqIGxpYnRvb2wubTQ6IElnbm9yZSBUcnU2NCdzIG5tJ3MgY29tcGxhaW50LgoKMjAwMC0wOS0wMiAgUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCgkqIGx0Y29uZmlnLmluOiBvbmx5IGxvYWQgJGNhY2hlX2ZpbGUgaWYgaXQncyBhIHJlZ3VsYXIgZmlsZQoKMjAwMC0wOS0wMiAgQXNzYXIgV2VzdGVybHVuZCAgPGFzc2FyQHNpY3Muc2U+CgoJKiBsdGNvbmZpZy5pbjogQWRkIGJhY2sgcmFubGliIGNhbGxzIGZvciBzdGF0aWMgbGlicmFyaWVzIGlmIHRoZXJlCglpcyBhIHJhbmxpYi4KCjIwMDAtMDgtMzEgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCU1vdmUgdGhlIGVjaG8gZGV0ZWN0aW9uIGNvZGUgdG8gYSBtYWNybyBpbiBsaWJ0b29sLm00LiAgVGhlIGNvZGUKCWF0IHRoZSB0b3Agb2ZsdGNvbmZpZy5pbiBpcyB1Z2x5LCBidXQgd2lsbCBnbyBhd2F5IHdoZW4gdGhlIHJlc3QKCW9mIGx0Y29uZmlnIGlzIG1pZ3JhdGVkLgoKCSogTWFrZWZpbGUuYW0gKGxpYnRvb2wpOiAgUGFzcyB0aGUgdmFsdWUgb2YgJEVDSE8gdG8gbHRjb25maWcgYXMKCWFuIGVudmlyb25tZW50IHZhcmlhYmxlLgoJKiBsaWJ0b29sLm00IChfTFRfQUNfUFJPR19FQ0hPX0JBQ0tTTEFTSCk6IFF1b3RlIHRoZSBFQ0hPIHZhbHVlCgljb3JyZWN0bHkgc28gdGhhdCBpdCBpbnNlcnRzIHRoZSBjb3JyZWN0IGNvZGUgaW50byBjb25maWd1cmUuaW4KCXN1aXRhYmx5IHF1b3RlZCBmb3IgTTQgZXhwYW5zaW9uLiAgVGhpcyBjb2RlIG5lZWRzIHRvIGJlIG5lYXIKCXRoZSB0b3Agb2YgY29uZmlndXJlLmluIGFzIGl0IGNhbGxzIGl0c2VsZiByZWN1cnNpdmVseSwgc28gSQoJYW0gdXNpbmcgQUNfRElWRVJTSU9OX05PVElDRSAob3Igc2ltcGx5IE5PVElDRSBvbiBDVlMKCUF1dG9jb25mKS4gIFRoZSB2YWx1ZSBvZiBFQ0hPIGlzIGFsc28gc3Vic3RpdHVlZCBpbnRvIHRoZQoJTWFrZWZpbGUgdG8gYmUgdXNlZCB3aGVuIE1ha2UgY2FsbHMgbHRjb25maWcgdG8gZ2VuZXJhdGUKCWxpYnRvb2wsIHNvIGFub3RoZXIgbGF5ZXIgb2YgcXVvdGF0aW9uIGlzIHJlcXVpcmVkIGZvciB0aGUKCU1ha2VmaWxlLgoJKEFDX0xJQlRPT0xfU0VUVVApOiAgVXNlIGl0LgoJKiBsdGNvbmZpZy5pbjogQWNjZXB0IGEgdmFsdWUgZm9yIEVDSE8gZnJvbSB0aGUgZW52aXJvbm1lbnQsIGFuZAoJY2FyZWZ1bGx5IHN1YnN0aXR1ZSBmb3IgJDAgaWYgaXQgaXMgcHJlc2VudCBpbiB0aGUgRUNITyB2YWx1ZS4KCUJlY2F1c2UgRUNITyB3YXMgcXVvdGVkIGZvciBNYWtlLCB3aGVuIGx0Y29uZmlnIGlzIGNhbGxlZCBieQoJY29uZmlndXJlLCBpdCBpcyBvdmVycXVvdGVkLCBhbmQgb25lIGxheWVyIG9mIHF1b3RlcyBtdXN0IGJlCglzdHJpcHBlZC4KCjIwMDAtMDgtMjcgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW4gKHdpdGhfZ2NjKTogIE1ha2UgdGhlIHZhbHVlIG9mIHRoaXMgb3B0aW9uCglhdmFpbGFibGUgdG8gdGhlIGdlbmVyYXRlZCBsaWJ0b29sIHNjcmlwdC4KCSogbHRtYWluLmluIChjb21waWxlX2NvbW1hbmQsIGZpbmFsaXplX2NvbW1hbmQpOiAgVGhlIG5hdGl2ZSBDCglhbmQgQysrIGNvbXBpbGVycyBvbiBJUklYIHJlcXVpcmUgdGhlIC1MQU5HOnN0ZCBpbiBvcmRlciB0byB0bwoJY29tcGlsZSBjb3JyZWN0bHkuICAgVGhlIHNhbWUgb3B0aW9ucyBzaG91bGQgX25vdF8gYmUgcGFzc2VkCgl0aHJvdWdoIHRvIGdjYyBvbiBJUklYLCBvciBhdCBhbGwgb24gb3RoZXIgYXJjaGl0ZWN0dXJlcyBmb3IKCWJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IChhbW9uZyBvdGhlcnMpLgoJUmVwb3J0ZWQgYnkgQm9iIEZyaWVzZW5oYWhuIDxiZnJpZXNlbkBzaW1wbGUuZGFsbGFzLnR4LnVzPgoJUmVwb3J0ZWQgYnkgQWxiZXJ0IENoaW4tQS1Zb3VuZyA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKMjAwMC0wOC0yNiAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAob2xkX3JlbG9hZF9mbGFnKTogdHlwby4KCjIwMDAtMDgtMDEgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluIChzaHRvb2wpOiBVc2UgZWNob3xncmVwIGluc3RlYWQgb2YgZXhwciwgYXMgaW4gdGhlCglvcmlnaW5hbCBwYXRjaC4KCjIwMDAtMDgtMDEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbHRjb25maWcuaW4gKG5lZWRfbGMpOiBGaXggdGVzdCBtZXNzYWdlLgoKMjAwMC0wNy0yNCAgTW9jaGEgIDxuZXRic2RfYWxwaGFAeWFob28uY29tPgoKCSogbHRjb25maWcuaW4gKE5ldEJTRCwgZGVwbGlic19jaGVja19tZXRob2QpOiBVc2UgZmlsZV9tYWdpYy4KCShOZXRCU0QsIGZpbGVfbWFnaWNfY21kLCBmaWxlX21hZ2ljX3Rlc3RfZmlsZSk6IFNldC4KCjIwMDAtMDctMjQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPiwgRGF2aWQgS2FlbGJsaW5nICA8ZHJrQG9yY2hpZXR0YS5odWRzb24uc2dpLmNvbT4KCgkqIGx0bWFpbi5pbiAoaXJpeCwgbWFqb3IpOiBQcmVwZW5kIGEgYC4nLgoJKiBsdGNvbmZpZy5pbiAoaXJpeCwgc29uYW1lX3NwZWMsIGxpYnJhcnlfbmFtZXNfc3BlYyk6IEFkanVzdC4KCjIwMDAtMDctMjQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPiwgUmFsZiBTLiBFbmdlbHNjaGFsbCAgPHJzZUBlbmdlbHNjaGFsbC5jb20+CgoJKiBsdG1haW4uaW46IFN1cHBvcnQgR05VIHNodG9vbCdzIGluc3RhbGwuCgoyMDAwLTA3LTI0ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChsaW5rb3B0cyk6IERvbid0IHNldCBmb3IgdGVzdC4KCjIwMDAtMDctMjQgIE5pY2sgSHVkc29uIDxza3JsbEBuZXRic2Qub3JnPgoKCSogbHRjb25maWcuaW4gKGxpbmtvcHRzKTogUmVwbGFjZSB3aXRoIGxpbmtlcl9mbGFncy4KCgkqIGx0bWFpbi5pbiAoSUxEKTogRml4IGFkZGl0aW9uIG9mIGRlcGxpYnMgaW4gcmVsaW5rIGNhc2UuCgoyMDAwLTA3LTE4ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBsdGNvbmZpZy5pbjogQ2hlY2sgaWYgLWxjIGlzIG5lY2Vzc2FyeSBmb3IgYnVpbGRpbmcgc2hhcmVkCglsaWJyYXJ5LiBTZXQgYnVpbGRfbGlidG9vbF9uZWVkX2xjIHRvIGluZGljYXRlIGl0LgoJKiBsdG1haW4uaW46IEFkZCAtbGMgd2hlbiBidWlsZGluZyBzaGFyZWQgbGlicmFyeSBvbmx5IGlmCgluZWNlc3NhcnkuCgoyMDAwLTA3LTEwICBNbyBEZUpvbmcgIDxtZGVqb25nQHJlZGhhdC5jb20+CgoJKiBsaWJ0b29sLm00IChBQ19QUk9HX05NKTogRml4IG1hY3JvIHNvIHRoYXQgaXQKCWZpbmRzIGEgY3Jvc3MgTk0gb24gdGhlIFBBVEguCgoyMDAwLTA3LTEwICBLZW4gQmxvY2sgPGJsb2NrQHprMy5kZWMuY29tPgoKCSogbGlibHRkbC9sdGRsLmg6IEFsc28gY2hlY2sgZm9yIF9fY3BsdXNwbHVzLCBfX1NURENfXyBpcyBub3QKCWJ5IENvbXBhcSBDKysgY29tcGlsZXIKCjIwMDAtMDctMTAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluICh3bGFyYywgbmV0YnNkLCBhb3V0KTogU2V0IHRvIGVtcHR5LgoJKGhhcmRjb2RlX2R5bmFtaWNfZmxhZ19zcGVjLCBleHBvcnRfZHluYW1pY19mbGFnX3NwZWMpOiBVc2UgaXQuCgoJKiBsdGNvbmZpZy5pbiAoZHluYW1pY19saW5rZXIsIGxpbnV4LCBwb3dlcnBjKTogRG8gbm90IGRpc2FibGUKCXNoYXJlZCBsaWJyYXJpZXMganVzdCBiZWNhdXNlIG9mIE1rTGludXguCgoJKiBsaWJ0b29sLm00IChsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCwgZnJlZWJzZCk6IERvIG5vdCBkZXBlbmQKCW9uICR2ZXJzaW9uX3R5cGU7IGNoZWNrIGZvciBFTEYgc3VwcG9ydCBhcyBpbiBvdGhlciBCU0RzLgoKMjAwMC0wNi0xNyAgU3lkIFBvbGsgIDxzcG9sa0ByZWRoYXQuY29tPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9TRVRVUCk6IERvIG5vdCBnZW5lcmF0ZSBhIGxpYnRvb2wgYmFzZWQKCW9uIHRhcmdldDsgdXNlIGhvc3QgaW5zdGVhZC4KCjIwMDAtMDUtMzAgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW4gKE9SSUdJTkFMX0NPTkZJR19TSEVMTCk6IFByZXZlbnQgbG9zc2FnZSB3aGVuCgl0aGUgZWNobyBwcm9iaW5nIGNvZGUgZmFsbHMgaW50byB0aGlzIGJyYW5jaCB3aXRob3V0IHNldHRpbmcKCXRoaXMgdmFyaWFibGUuCgoJKiBsdGNvbmZpZy5pbiAobmV0YnNkKik6IGFyY2hpdmVfY21kcyBhbmQgYXJjaGl2ZV9leHBzeW1fY21kcwoJd2VyZSByZXZlcnNlZCB3aXRoIHJlc3BlY3QgdG8gZGVmaW5pdGlvbiBvZiBfX0VMRl9fLgoJRnJvbSBLZWlzdWtlIElub3VlIDxrZWlzdWtlQGNzbC5zb255LmNvLmpwPgoKMjAwMC0wNS0yOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJ0b29sLm00IChuZXRic2QqKTogVXNlIC1MIG9wdGlvbiB0byBmaWxlX21hZ2ljX2NtZCBhcyBmb3IKCWZyZWVic2QgKGJlbG93KS4KCSogbGlidG9vbC5tNCAobmV0YnNkIEVMRik6IHN1cHBvcnQgZmlsZV9tYWdpYy4KCUZyb20gRGFuIFdpbnNoaXAgPGRhbndAaGVsaXhjb2RlLmNvbT4uCgoyMDAwLTA1LTI5ICBTdGV2ZW4gTS4gU2NodWx0eiA8c21zQG1vZS4yYnNkLmNvbT4KCgkqIGxpYnRvb2wubTQgKGJzZGk0Kik6IEFkZCAtTCBvcHRpb24gdG8gYnNkaTQncyBmaWxlX21hZ2ljX2NtZAoJY29tbWFuZC4gIFVuZGVyIEJTRC9PUyA0LjEgc2V2ZXJhbCBsaWJyYXJpZXMgYXJlIG5vdyBzeW1saW5rcwoJcmF0aGVyIHRoYW4gcmVndWxhciBmaWxlcy4gIEFkZGluZyAtTCB0ZWxscyB0aGUgZmlsZSBwcm9ncmFtCgl0byBmb2xsb3cgdGhlIHN5bWxpbmsuCgoyMDAwLTA1LTI5ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYnRvb2wubTQgKGkqODYtKi1mcmVlYnNkKik6IEZvcmdvdCB0byBjaGFuZ2VxdW90ZSgsKS4KCgkqIE5FV1M6IFVwZGF0ZWQuCgkqIGxpYnRvb2wubTQgKGkqODYtKi1mcmVlYnNkKik6IFN1cHBvcnQgYS5vdXQgc2hhcmVkIGxpYnMuCglGcm9tIDxzdXp1a2lzQGZpbGUucGh5cy50b2hva3UuYWMuanA+CgoyMDAwLTA1LTI5ICBGcmVkIEZpc2ggIDxmbmZAYmUuY29tPgoKCVN1cHBvcnQgQVI9bXdsZCBBUl9GTEFHUz0nLXhtbCAtbycgZm9yIFBQQyBCZW9zLgoJKiBsdGNvbmZpZyAob2xkX0FSX0ZMQUdTKTogQWRkLgoJKG9sZF9hcmNoaXZlX2NtZHMpOiBVc2UgQVJfRkxBR1MgcmF0aGVyIHRoYW4gaGFyZGNvZGluZyAiY3J1Ii4KCShhcmNoaXZlX2NtZHMpOiBVc2UgQVJfRkxBR1MgcmF0aGVyIHRoYW4gaGFyZGNvZGluZyAiY3J1Ii4KCShBUl9GTEFHUyk6IERlZmF1bHQgdG8gImNydSIgaWYgbm90IHNldC4KCjIwMDAtMDUtMjkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW4gKGVjaG8pOiBUaGUgZm9sbG93aW5nIGNvZGUgYWN0dWFsbHkgcHJpbnRzIHRoZQoJZG91YmxlIHF1b3RlcyAtLSBzbyBJIHJlbW92ZWQgdGhlbToKCSAgICBlY2hvPSdwcmludGYgIiVzXG4iJyAvYmluL2tzaCAtYyAnJGVjaG8gXFx0JwoJRnJvbSBUdXVra2EgVG9pdm9uZW4gPHR1dG9pdm9uQG1haWwuc3R1ZGVudC5vdWx1LmZpPgoKCSogTkVXUzogVXBkYXRlZC4KCjIwMDAtMDUtMjkgIEJlcm5oYXJkIFJvc2Vua3JhZW56ZXIgPGJlcm9AcmVkaGF0LmRlPgoKCSogbGlidG9vbC5tNDogYWRkaW5nIGlhNjQgYXMgc3VwcG9ydGVkIGxpbnV4IHBsYXRmb3JtCgoyMDAwLTA1LTI5ICBNaWNoYWVsIE1hdHogIDxtYXR6QGlmaC5kZT4KCgkqIGx0bWFpbi5pbjogZml4IHF1b3RpbmcgZm9yICR2YXJfdmFsdWUuCgoJKiBsdGNvbmZpZy5pbjogY2hlY2sgZm9yIGRsZmNuLmg6IGluY2x1ZGUgcmV0dXJuIHZhbHVlCgl0byBtYWtlIC1XYWxsIGluIENGTEFHUyB3b3JrLgoKMjAwMC0wNS0yNyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBSRUFETUUtYWxwaGE6IG5vdGUgbmV3IGxvY2F0aW9uIG9mIGNvbmZpZy4oZ3Vlc3N8c3ViKS4KCjIwMDAtMDUtMjcgIENoYWQgQ3VubmluZ2hhbSAgPGNjdW5uaW5nQG1hdGgub2hpby1zdGF0ZS5lZHU+CgoJKiBsdGNvbmZpZy5pbiAocmhhcHNvZHkqKTogTmV3IFBvcnQuCgkqIGx0bWFpbi5pbiAocmhhcHNvZHkqKTogZGl0dG8uCgoyMDAwLTA1LTI3ICBDaHJpcyBMYXR0bmVyICA8c2FicmVAc2t5bGFiLm9yZz4KCgkqIGx0Y29uZmlnLmluICgqLXNlcXVlbnQtc3lzdjQpOiBOZXcgUG9ydC4KCjIwMDAtMDUtMTcgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRtYWluLmluOiBjeWd3aW4tMS4xLjAgYW5kIGhpZ2hlciBubyBsb25nZXIgZ3JvayBiYWNrc2xhc2ggcGF0aAoJc2VwYXJhdG9ycy4KCjIwMDAtMDUtMTQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbGlidG9vbC5tNCAoQUNfTElCTFRETF9DT05WRU5JRU5DRSwgQUNfTElCTFRETF9JTlNUQUxMQUJMRSk6CglQaWNrIExJQkxUTEQgZnJvbSB0b3BfYnVpbGRkaXIgYW5kIElOQ0xUREwgZnJvbSB0b3Bfc3JjZGlyLgoJKiBtZGVtby9jb25maWd1cmUuaW46IFJlbW92ZSBjb21tZW50cyBvbgoJQUNfTElCTFRMRF9DT05WRU5JRU5DRS4KCgkqIGxpYnRvb2wubTQgKF9BQ19QUk9HX0xJQlRPT0wpOiBSZW5hbWVkIGZyb20uLi4KCShBQ19QUk9HX0xJQlRPT0wpOiBKdXN0IEFDX1JFUVVJUkUoX0FDX1BST0dfTElCVE9PTCksIHRvIGF2b2lkCgllZmZlY3RzIG9mIG11bHRpcGxlIHJ1bnMuCgoyMDAwLTA1LTExICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogTkVXUzogdXBkYXRlCgkqIGRvYy9saWJ0b29sLnRleGkgKGxpYmx0ZGwpOiByZW5hbWUgbHRfKGZpbmR8bmV4dHxhZGR8cmVtb3ZlKV9kbGxvYWRlcgoJICB0byBsdF9kbGxvYWRlcl8qCgkqIGxpYmx0ZGwvbHRkbC5jOiBkaXR0bwoJKiBsaWJsdGRsL2x0ZGwuaDogZGl0dG8sIGFkZCBkZWNsYXJhdGlvbiBvZiBsdF9kbGxvYWRlcl8oZmluZHxyZW1vdmUpCgoyMDAwLTA1LTA2ICBQYXZlbCBSb3NraW4gIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jOiBUeXBvLgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9TRVRVUCk6IENWUyBhdXRvY29uZiBubyBsb25nZXIgc2V0cwoJdGFyZ2V0IHRvICJOT05FIiwgYnV0IHRvIGFuIGVtcHR5IHN0cmluZy4KCjIwMDAtMDUtMDUgIFBhdWwgU29rb2xvdnNreSAgPFBhdWwuU29rb2xvdnNreUB0ZWNobm9sb2dpc3QuY29tPgoKCSogbHRkbC5jOiBzdXBwb3J0IGx0X2Rsb3BlbigwKSBmb3Igd2luMzIKCjIwMDAtMDUtMDMgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChsaWJsdGRsKTogZml4IHR5cG9zLAoJICBJTkNMVERMIHN0YXJ0cyB3aXRoIHRvcF9zcmNkaXIsIHJlcGxhY2UgTlVMTCB3aXRoIEBjb2Rle05VTEx9CgoJKiBsdG1haW4uaW4gKElMRCk6IHNlYXJjaCBpbiBuZXdsaWJfc2VhcmNoX3BhdGgsIHRvbwoKCSogbHRtYWluLmluIChJTEQpOiBmaXggYnVncyBpbiBjb252IHBhc3MsIGV4cGFuZCBjb252ZW5pZW5jZQoJICBsaWJzIHRvIGRlcGxpYnMgYW5kIGxpbmsgdGhlbSBsYXRlciBvbgoKCSogbHRtYWluLmluIChJTEQpOiBkb24ndCBhbGxvdyBjb252ZW5pZW5jZSBsaWJzIHRvIGJlCgkgICAtZGxvcGVuL3ByZW9wZW4nZWQKCgkqIGx0bWFpbi5pbiAoSUxEKTogaXQncyBub3QgcmVxdWlyZWQgdG8gbGluayBhbGwgZGVwbGlicwoJICBpbiBmYXN0LWluc3RhbGwgbW9kZQoKCSogbHRtYWluLmluIChJTEQpOiBpZiBoYXJkY29kZV9pbnRvX2xpYnM9YWxsLCBvbmx5IHJlbGluawoJICBhIGxpYnJhcnkgaWYgaXQgaXMgbGlua2VkIGFnYWluc3QgdW5pbnN0YWxsZWQgbGlidG9vbCBsaWJyYXJpZXMsCgkgIHJlbmFtZSBsaW5rX2FnYWluc3RfbGlidG9vbF9saWJzIHRvIHVuaW5zdF9kZXBsaWJzCgoJKiBsdG1haW4uaW4gKElMRCk6IHRpZHkgdXAsIGFkZCBzb21lIGNvbW1lbnRzCgoyMDAwLTA1LTAzICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBsaWJ0b29sLm00IChocHV4MTAuMjAqKTogdXNlIGZpbGVfbWFnaWMgZm9yCglpbnRlci1saWJyYXJ5IGRlcGVuZGVuY3kgdHJhY2tpbmcuCgoyMDAwLTA1LTAyICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIEFVVEhPUlM6ICBVcGRhdGUgbXkgZW1haWwgYWRkcmVzcy4KCSogY29tbWl0OiBkaXR0by4KCjIwMDAtMDQtMTEgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiB1cGRhdGUKCSogbGlidG9vbC5tNDogYWRkIEFDX0xJQlRPT0xfUElDTU9ERQoJKiBsdGNvbmZpZy5pbjogbW92ZSBwaWNfbW9kZSBjaGVja3MgdG8gbHRtYWluLmluCgkqIGx0bWFpbi5pbjogYWRkIC1wcmVmZXItcGljIGFuZCAtcHJlZmVyLW5vbi1waWMKCjIwMDAtMDMtMjkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluICh0bXBkaXIpOiBEbyBub3QgYWNjZXB0IGFuIGV4aXN0aW5nIGRpcmVjdG9yeSwgYW5kCglmb3JjZSBpdHMgbW9kZSB0byA3MDAsIGZvciBzZWN1cml0eSByZWFzb25zLgoJUmVwb3J0ZWQgYnkgSm9zZXBoIFMuIE15ZXJzIDxqc20yOEBjYW0uYWMudWs+CgoyMDAwLTAzLTI3ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogTkVXUzogcmVmb3JtYXR0aW5nCgoJKiBsdG1haW4uaW4gKElMRCk6IGFkZCBleHRyYSBjb252ZW5pZW5jZSBsaWJyYXJ5IHNjYW5uaW5nIHBhc3MKCgkqIGx0bWFpbi5pbiAoSUxEKTogYWNjZXB0IC1SIGZsYWdzIGZvciBsaWJyYXJpZXMsIHRvbwoKCSogbHRtYWluLmluIChJTEQpOiBjb3JyZWNsdHkgbWVyZ2UgdGhlIGRscHJlb3BlbmVkIGxpYnJhcmllcwoJICB3aXRoIGRlcGxpYnMKCgkqIGx0bWFpbi5pbiAoaW5zdGFsbCBtb2RlKTogcmVtb3ZlIGRpcmVjdG9yaWVzIGZyb20gZmlsZW5hbWVzCgkgIGJlZm9yZSByZWxpbmtpbmcgKHJlcG9ydGVkIGJ5IEVscm9uZCA8RWxyb25kQFd1bmRlci1OZXR0Lm9yZz4pCgoJKiBkb2MvbGlidG9vbC50ZXhpIChsaWJsdGRsKTogcmVuYW1lIExpYnJhcnkgLT4gTGVzc2VyLAoJICBjbGFyaWZ5IGV4Y2VwdGlvbiBjbGF1c2UKCSogbGlibHRkbC9sdGRsLmMsIGxpYmx0ZGwuaCAoTGljZW5zZSk6IGRpdHRvCgoyMDAwLTAzLTIxICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluICh2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayk6IFNldCB0byBgUEFUSAoJJHNobGlicGF0aF92YXIgJHJ1bnBhdGhfdmFyJy4gIElmIHdpdGhfZ2NjLCBhZGQgZ2NjLXJlbGF0ZWQKCWVudmlyb25tZW50IHZhcmlhYmxlcy4gIEFkZCBpdCB0byB0aGUgY29uZmlndXJhdGlvbiBzZWN0aW9uLgoJKiBsdG1haW4uaW4gKHJlbGlua19jb21tYW5kKTogRXhwYW5kIHRob3NlIHZhcmlhYmxlcy4KCjIwMDAtMDMtMTQgIENocmlzdG9waGVyIEEuIEtuaWdodCAgPGNocmlza25AY3J0LmNvbT4KCgkqIGx0Y29uZmlnLmluOiBhZGRlZCBtYWluKCkgZGVmaW5pdGlvbiBpbiBjb21waWxlCgljaGVjayBmb3IgaGVhZGVyIGBkbGZjbi5oJyB0byBmaXggbGluayBlcnJvcnMKCXdoZW4gYnVpbHQgd2l0aCBTdW4gV29ya3Nob3AgUHJvIENDIDQuMiAoYW5kIHBlcmhhcHMKCW90aGVycykuCgoyMDAwLTAyLTAzICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9maW5kX2RsaGFuZGxlKTogRGVsZXRlZC4gIFRoaXMgd2FzIEIuUy4KCWZhciBjbGVhbmVyIHRvIHVzZSBsdF9kbGZvcmVhY2ggYW5kIGx0X2RsZ2V0aW5mby4KCSogbGlibHRkbC9sdGRsLmg6ICBQcm90b3R5cGUgZGVsZXRlZC4KCSogZG9jL2xpYnRvb2wudGV4aTogRG9jdW1lbnRhdGlvbiBkZWxldGVkLgoJKiBORVdTOiBhbm5vbmNlbWVudCBkZWxldGVkLgoKMjAwMC0wMi0yMyAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIGx0bWFpbi5pbjogcmVtb3ZlIGR1cGxpY2F0ZXMgZnJvbSBkZXBsaWJzLCBoYW5kbGUKCSAgaW50ZXJkZXBlbmRlbnQgbGlicmFyaWVzIChlLmcuIC1sYSAtbGIgLWxhKSwKCSAgdGhpcyByZXF1aXJlcyBhZGRpbmcgZGVwbGlicyBpbiByZXZlcnNlIG9yZGVyCgoJKiBsdG1haW4uaW46IGxpbmsgZGxwcmVvcGVuZWQgbGlicmFyaWVzIGJlZm9yZSBvdGhlciBsaWJyYXJpZXMKCSAgKHJlcG9ydGVkIGJ5IFBhdmVsIFJvc2tpbikKCSogbWRlbW8vTWFrZWZpbGUuYW06IGJ1aWxkIGFuZCBsaW5rIGxpYnN1Yi5sYQoJKiBtZGVtby9zdWIuYzogbmV3IGZpbGUgdXNlZCBieSBib3RoIGRsb3BlbmVkIG1vZHVsZXMKCSogbWRlbW8vZm9vKjogdXNlIHN1YigpIGRlZmluZWQgaW4gbGlic3ViCgkqIHRlc3RzL2RyeXJ1bi50ZXN0OiBidWlsZCBsaWJzdWIubGEKCgkqIG1kZW1vL01ha2VmaWxlLmFtOiBhbHdheXMgbGluayBtZGVtby5zdGF0aWMgd2l0aCAtc3RhdGljCgkqIG1kZW1vL2NvbmZpZ3VyZS5pbjogZGl0dG8KCgkqIGx0bWFpbi5pbjogZml4IGRsb3Blbi9kbHByZW9wZW5pbmcgb2Ygb2JqZWN0cwoKCSogbHRtYWluLmluIChJTEQpOiBmaXggbWlzcGxhY2VkIGBjb250aW51ZScgaW4gLVIqIGFyZ3VtZW50IGhhbmRsZXIKCgkqIGx0bWFpbi5pbjogbWVyZ2UgZHVwbGljYXRlZCBjb2RlIG9mIGNsZWFuIGFuZCB1bmluc3RhbGwgbW9kZQoKCSogbGlidG9vbC5tNDogcmVjb2duaXplIHBvd2VycGMqbGludXgqIChyZXBvcnRlZCBieQoJICBEaXJrIEEuIE11ZWxsZXIgPGRtdWVsbEBnbXgubmV0PikKCjIwMDAtMDItMjMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW4gKG9sZF9NQUdJQywgb2xkX1NUUklQLCBvbGRfcmVsb2FkX2ZsYWcsCglvbGRfZGVwbGlic19jaGVja19tZXRob2QsIG9sZF9maWxlX21hZ2ljX2NtZCk6ICBOZXcgdmFyaWFiZXMuCglUcmVhdCB0aGVzZSBhcyBvbGRfQ0MgZXRjLgoJKFNUUklQLCBNQUdJQyk6IENyZWF0ZSBhbmQgc2V0IHRoZXNlIHZhcmlhYmxlcyBpbiB0aGUgZ2VuZXJhdGVkCglsaWJ0b29sIHNjcmlwdC4KCVJlcG9ydGVkIGJ5IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9zaW5AZ2VvY2l0aWVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogRHVlIHRvIGEgYnVnIGluIGF1dG9jb25mLTIuMTMgaW1wbGVtZW50YXRpb24gb2YKCUFDX1NVQlNULCBgQUNfU1VCU1QoRklMRSknIGNhbiBuZXZlciB3b3JrLiAgVXNlIE1BR0lDIGFzIHRoZQoJaG9sZGVyIG9mIHRoZSBjb21tYW5kIHRvIHJ1biBpbiBmaWxlX21hZ2ljX2NtZCBpbnN0ZWFkLgoJKiBsdGNvbmZpZy5pbjogcy9GSUxFL01BR0lDL2cuCgkqIGxpYnRvb2wubTQgKEFDX1BST0dfTElCVE9PTCk6IHNldCBNQUdJQyBpbiB0aGUgZW52aXJvbm1lbnQgd2hlbgoJY2FsbGluZyBsdGNvbmZpZy4KCShBQ19QQVRIX01BR0lDKTogIHJlbmFtZWQgZnJvbSBBQ19QQVRIX0ZJTEUuCgkoQUNfUEFUSF9UT09MX1BSRUZJWCk6ICBzL0ZJTEUvTUFHSUMvZy4gIEFsc28gc2V0IGZpbGVfbWFnaWNfY21kCgl0byAnJHtNQUdJQ30nIHNvIHRoYXQgbWFrZSBjYW4gZ3JvayBpdC4KCSogTWFrZWZpbGUuYW0gKGxpYnRvb2wpOgoJKGNsaWJ0b29sKTogZGl0dG8uCgoyMDAwLTAyLTIxICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9maW5kX2RsaGFuZGxlKTogTmV3IGZ1bmN0aW9uLgoJKHRyeWFsbF9kbG9wZW4pOiBVc2UgaXQuCgkqIGxpYmx0ZGwvbHRkbC5oOiAgUHJvdG90eXBlIGl0LgoJKiBkb2MvbGlidG9vbC50ZXhpOiBEb2N1bWVudCBpdC4KCSogTkVXUzogdXBkYXRlZC4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbGluaXQpOiByZW1vdmVkIHVudXNlZCB2YXJpYWJsZSwgYGxvYWRlcicuCgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfcmVtb3ZlX2RsbG9hZGVyKTogdHlwbywgcy89Lz09L2cuCgoyMDAwLTAyLTAzICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5oIChsdF9kbGxvYWRlcl9kYXRhX3QpOiAgTmV3IHR5cGUgZm9yIGxvYWRlcgoJaW5zdGFuY2UgZGF0YS4KCShsdF91c2VyX2RsbG9hZGVyKTogTmV3IGx0X2RsbG9hZGVyX2RhdGFfdCBmaWVsZC4KCShsdF9tb2R1bGVfb3Blbl90KTogQWRkIGx0X2RsbG9hZGVyX2RhdGFfdCBwYXJhbWV0ZXIuCgkobHRfbW9kdWxlX2Nsb3NlX3QpOiBBZGQgbHRfZGxsb2FkZXJfZGF0YV90IHBhcmFtZXRlci4KCShsdF9maW5kX3N5bV90KTogQWRkIGx0X2RsbG9hZGVyX2RhdGFfdCBwYXJhbWV0ZXIuCgkobHRfZGxsb2FkZXJfZXhpdF90KTogQWRkIGx0X2RsbG9hZGVyX2RhdGFfdCBwYXJhbWV0ZXIuCgkqIGxpYmx0ZGwvbHRkbC5jOiAgQSBzcHJpbmtsaW5nIG9mIC8qQVJHU1VTRUQqLyBtYXJrZXJzIHRvCglyZWFzc3VyZSBsaW50IHRoYXQgdGhlIHVudXNlZCBhcmd1bWVudHMgYXJlIGludGVudGlvbmFsLgoJKGx0X2RsbG9hZGVyX3QpOiBOZXcgbHRfZGxsb2FkZXJfZGF0YV90IGZpZWxkLgoJKGx0X2RsbG9hZGVyX2RhdGEpOiBOZXcgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBjb250ZW50cyBvZiB0aGUKCWRsbG9hZGVyX2RhdGEgZmllbGQuCgkoc3lzX2RsX29wZW4pOiBUYWtlIGFuIGFkZGl0aW9uYWwgbHRfZGxsb2FkZXJfZGF0YV90IGFyZ3VtZW50LgoJKHN5c19kbF9jbG9zZSk6IERpdHRvLgoJKHN5c19kbF9zeW0pOiBEaXR0by4KCShzeXNfZGwpOiBJbml0aWFsaXNlIGx0X2RsbG9hZGVyX2RhdGFfdCBmaWVsZC4KCShzeXNfc2hsX29wZW4sIHN5c19zaGxfY2xvc2UsIHN5c19zaGxfc3ltLCBzeXNfc2hsKTogQXMgYWJvdmUuCgkoc3lzX3dsbF9vcGVuLCBzeXNfd2xsX2Nsb3NlLCBzeXNfd2xsX3N5bSwgc3lzX3dsbCk6IEFzIGFib3ZlLgoJKHN5c19iZWRsX29wZW4sIHN5c19iZWRsX2Nsb3NlLCBzeXNfYmVkbF9zeW0sIHN5c19iZWRsKTogQXMKCWFib3ZlLgoJKHN5c19kbGRfb3Blbiwgc3lzX2RsZF9jbG9zZSwgc3lzX2RsZF9zeW0sIHN5c19kbGQpOiBBcyBhYm92ZS4KCShwcmVzeW1faW5pdCwgcHJlc3ltX2V4aXQsIHByZXN5bV9vcGVuLCBwcmVzeW1fY2xvc2UsIHByZXN5bV9zeW0sCglwcmVzeW0pOiBBcyBhYm92ZS4KCShsdF9kbGluaXQpOiBDYWxsIHByZXN5bV9pbml0IHdpdGggYWRkaXRpb25hbCBhcmd1bWVudC4KCShsdF9kbGV4aXQpOiBDYWxsIGRsbG9hZGVyX2V4aXQgbWV0aG9kIHdpdGggYWRkaXRpb25hbCBhcmd1bWVudC4KCSh0cnlhbGxfZGxvcGVuKTogQ2FsbCBtb2R1bGVfb3BlbiBtZXRob2Qgd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50LgoJKGx0X2RsY2xvc2UpOiBDYWxsIG1vZHVsZV9jbG9zZSBtZXRob2Qgd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50LgoJKGx0X2Rsc3ltKTogQ2FsbCBmaW5kX3N5bSBtZXRob2Qgd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50LgoJKGx0X2FkZF9kbGxvYWRlcik6IEluaXRpYWxpc2UgZGxsb2FkZXJfZGF0YSBmaWVsZC4KCShsdF9yZW1vdmVfZGxsb2FkZXIpOiBDYWxsIGRsbG9hZGVyX2V4aXQgbWV0aG9kIHdpdGggYWRkaXRpb25hbAoJYXJndW1lbnQuCgoJKiBsaWJsdGRsL2x0ZGwuYyAoZmluZF9maWxlKTogUHJldmVudCBlYXJseSByZWxlYXNlIG9mIG1lbW9yeQoJaW4gZmlsZW5hbWUvKnBkaXIuCglGcm9tIEpvbiBMZWljaHRlciA8am9uQHN5bWFzLmNvbT4KCgkoc3lzX3dsbF9pbml0KTogRGVsZXRlZC4gIE5vIGxvbmdlciByZXF1aXJlZC4gIEFuZCB0aGlzIHRpbWUsCgl3aXRoIGZlZWxpbmchCgkoc3lzX3dsbF9leGl0KTogRGl0dG8uCgoyMDAwLTAyLTAyICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIE5FV1M6IHVwZGF0ZWQuCgkqIGRvYy9saWJ0b29sLnRleGkgKExpYmx0ZGwgaW50ZXJmYWNlKTogTW92ZWQgdXNlciBkZWZpbmVkIG1vZHVsZQoJbG9hZGVyIGRvY3VtZW50YXRpb24gZnJvbSBoZXJlLi4uCgkoTW9kdWxlIGxvYWRlcnMgZm9yIGxpYmx0ZGwpIC4uLnRvIGhlcmUsIGFuZCB1cGRhdGVkIHRoZSB0ZXh0IGFuZAoJYWRkZWQgZXhhbXBsZXMuCgkqIGx0ZGwubTQgKEFDX0NIRUNLX0ZVTkNTKTogY2hlY2sgc3RyY21wIGZvciBsdF9maW5kX2RsbG9hZGVyLgoJKiBsaWJsdGRsL2x0ZGwuaDogUmVmb3JtYXR0ZWQgYW5kIGNvbW1lbnRlZCBmb3IgcmVhZGFiaWxpdHkuCgkoc3RydWN0IGx0X3VzZXJfZGxsb2FkZXIpOiBOZXcgZGF0YSB0eXBlIGZvciBwYXNzaW5nCglpbml0aWFsaXNhdGlvbiBwb2ludGVycyB0byBsdF9hZGRfZGxsb2FkZXIuCgkoTFRETF9FUlJPUl9JTlZBTElEX0xPQURFUik6ICBOZXcgZXJyb3IgbWVzc2FnZSB3aGVuIG5vbiBsb2FkZXIKCWhhbmRsZXMgYXJlIHBhc3NlZCB0byB0aGUgdXNlciBsb2FkZXIgQVBJLgoJKExURExfRVJST1JfSU5JVF9MT0FERVIpOiBOZXcgZXJyb3Igd2hlbiBsb2FkZXIgaW5pdGlhbGlzYXRpb24KCWZhaWxzLgoJKExURExfRVJST1JfUkVNT1ZFX0xPQURFUik6IE5ldyBlcnJvciB3aGVuIGxvYWRlciByZW1vdmFsIGZhaWxzLgoJKGx0X21vZHVsZV9vcGVuX3QpOiByZW5hbWVkIGZyb20gbHRfbGliX29wZW5fdC4KCShsdF9tb2R1bGVfY2xvc2VfdCk6IHJlbmFtZWQgZnJvbSBsdF9saWJfY2xvc2VfdC4KCShsdF9kbGxvYWRlcl9leGl0X3QpOiByZW5hbWVkIGZyb20gbHRfZGxsb2FkZXJfZXhpdF90LgoJKiBsaWJsdGRsL2x0ZGwuYzogUmVvcmRlcmVkIGJ1aWx0aW4gbG9hZGVycyBzbyB0aGF0IHRoZSAiZGxkIgoJbG9hZGVyIG5vIGxvbmdlciBvY2N1cnMgYmVmb3JlICJkbG9wZW4iIG9uIHNvbWUgcGxhdGZvcm1zIGFuZAoJYWZ0ZXIgaXQgb24gb3RoZXJzLgoJKGx0X2RsbG9hZGVyX3QpOiBNb3ZlZCBoZXJlIGZyb20gbHRkbC5oLCBhZGRlZCBhIGZpZWxkLAoJImxvYWRlcl9uYW1lIiwgZm9yIGlkZW50aWZ5aW5nIHRoZSBsb2FkZXIsIGFuZCByZW5hbWVkIGZyb20KCWx0X2RsdHlwZV90LiAgUmVuYW1lZCB0eXBlIHZhcmlhYmxlcyB0byBsb2FkZXIgSUZGIG9mIHR5cGUKCWx0X2RsbG9hZGVyX3QuCgkobHRfbW9kdWxlX3QpOiBSZW5hbWVkIGZyb20gbHRfc3lzaGFuZGxlLiBSZW5hbWVkIGhhbmRsZSB2YXJpYWJsZXMKCXRvIG1vZHVsZSBJRkYgb2YgdHlwZSBsdF9tb2R1bGVfdC4KCShMVERMX1RZUEVfVE9QKTogRGVsZXRlZC4gIE5vIGxvbmdlciByZXF1aXJlZC4KCShzeXNfZGwpOiBJbml0aWFsaXNlZCBhcyBhIHN0cnVjdCBsdF91c2VyX2RsbG9hZGVyLgoJKHN5c19kbF9pbml0KTogRGVsZXRlZC4gIE5vIGxvbmdlciByZXF1aXJlZC4KCShzeXNfZGxfZXhpdCk6IERpdHRvLgoJKHN5c19zaGwpOiBJbml0aWFsaXNlZCBhcyBhIHN0cnVjdCBsdF91c2VyX2RsbG9hZGVyLgoJKHN5c19zaGxfaW5pdCk6IERlbGV0ZWQuICBObyBsb25nZXIgcmVxdWlyZWQuCgkoc3lzX3NobF9leGl0KTogRGl0dG8uCgkoc3lzX3dsbCk6IEluaXRpYWxpc2VkIGFzIGEgc3RydWN0IGx0X3VzZXJfZGxsb2FkZXIuCgkoc3lzX3dsbF9pbml0KTogRGVsZXRlZC4gIE5vIGxvbmdlciByZXF1aXJlZC4KCShzeXNfd2xsX2V4aXQpOiBEaXR0by4KCShzeXNfYmVkbCk6IEluaXRpYWxpc2VkIGFzIGEgc3RydWN0IGx0X3VzZXJfZGxsb2FkZXIuCgkoc3lzX2JlZGxfaW5pdCk6IERlbGV0ZWQuICBObyBsb25nZXIgcmVxdWlyZWQuCgkoc3lzX2JlZGxfZXhpdCk6IERpdHRvLgoJKHN5c19kbGQpOiBJbml0aWFsaXNlZCBhcyBhIHN0cnVjdCBsdF91c2VyX2RsbG9hZGVyLgoJKHN5c19kbGRfaW5pdCk6IERlbGV0ZWQuICBObyBsb25nZXIgcmVxdWlyZWQuCgkoc3lzX2RsZF9leGl0KTogRGl0dG8uCgkoc3lzX3ByZXN5bSk6IEluaXRpYWxpc2VkIGFzIGEgc3RydWN0IGx0X3VzZXJfZGxsb2FkZXIuCgkobHRfbW9kX2luaXRfdCk6IE1vdmVkIHRvIGhlcmUgZnJvbSBsdGRsLmguCgkobHRfZGxpbml0KTogQWRkIGJ1aWx0aW4gbG9hZGVycyB1c2luZyB0aGUgdXNlciBsb2FkZXIgQVBJLgoJKGx0X2RsZXhpdCk6IFVucmVnaXN0ZXIgYW5kIGZyZWUgYWxsIGxvYWRlcnMuCgkobHRfYWRkX2RsbG9hZGVyKTogTmV3IGZ1bmN0aW9uIHRvIGFkZCBhIG5ldyBtb2R1bGUgbG9hZGVyIGFmdGVyIHRoZQoJbG9hZGVyIHNwZWNpZmllZCBpbiB0aGUgYXJndW1lbnQuCgkobHRfcmVtb3ZlX2RsbG9hZGVyKTogTmV3IGZ1bmN0aW9uIHRvIHJlbW92ZSBhIG1vZHVsZSBsb2FkZXIuCgkobHRfbmV4dF9kbGxvYWRlcik6IE5ldyBmdW5jdGlvbiBmb3IgaXRlcmF0aW5nIG92ZXIgbW9kdWxlIGxvYWRlcnMuCgkobHRfZGxsb2FkZXJfbmFtZSk6IEFjY2Vzc29yIGZ1bmN0aW9uIGZvciBuYW1lIG9mIGRsbG9hZGVyLgoJKGx0X2ZpbmRfZGxsb2FkZXIpOiBOZXcgZnVuY3Rpb24gdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIGEgcmVnaXN0ZXJlZAoJbW9kdWxlIGxvYWRlci4KCShzdHJjbXApOiBzdGF0aWMgaW1wbGVtZW50YXRpb24gaW5jYXNlIHRoZSBob3N0IGhhcyBub25lLgoJKGx0X2RsZ2V0dHlwZXMsIGx0X2Rsc2V0dHlwZXMpOiBSZW1vdmVkLgoKMjAwMC0wMi0wMiAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIGxpYmx0ZGwvbHRkbC5jOiByZXBsYWNlIE5VTEwgd2l0aCAwLCByZW1vdmUgdW51c2VkIHN5c3RlbQoJICBhbmQgYXBwX3ByaXZhdGUgcG9pbnRlcnMgZnJvbSBsdF9kbGhhbmRsZV90CgkqIGxpYmx0ZGwvbHRkbC5jIChwcmVzeW1fYWRkX2xpc3QpOiBuZXcgcHJlbG9hZGVkIHN5bWJvbHMKCSAgZG9uJ3QgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgZW5kCgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxnZXRkYXRhLCBsdF9kbHNldGRhdGEpOiByZW1vdmVkCgkqIGxpYmx0ZGwvbHRkbC5oOiBkaXR0bwoJKiBkb2MvbGlidG9vbC50ZXhpIChsaWJsdGRsIGludGVyZmFjZSk6IGRpdHRvCgoyMDAwLTAyLTAxICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbHRtYWluLmluOiBzdXBwb3J0IC1kbG9wZW4vZGxwcmVvcGVuIGZvciBsaWJyYXJpZXMKCSogTkVXUzogdXBkYXRlZAoJKiBUT0RPOiB1cGRhdGVkCgkqIGx0bWFpbi5pbjogcmVuYW1lIGRsb3BlbiB0byBkbG9wZW5fc3VwcG9ydAoJKiBsdGNvbmZpZy5pbjogZGl0dG8KCSogZG9jL2xpYnRvb2wudGV4aTogZGl0dG8KCgkqIGx0bWFpbi5pbjogY2hlY2sgd2hldGhlciBsaWJyYXJpZXMgYXJlIG1vdmVkIG91dCBvZiAkbGliZGlyLAoJICByZXBsYWNlIC5hIGFuZCAubGliIHdpdGggLiRsaWJleHQsIC5vIGFuZCAub2JqIHdpdGggLiRvYmpleHQKCjIwMDAtMDEtMzEgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9sdGRsLmggKGx0X2RscmVhbGxvYyk6IHJlbW92ZWQgZGVjbGFyYXRpb24uCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbHJlYWxsb2MpOiByZW1vdmVkIGRlZmluaXRpb24uCgkobHRfZGxhZGRlcnJvcik6IEluc3RlYWQgb2YgY2FsbGluZyBsdF9kbHJlYWxsb2MsIHVzZSBsdF9kbG1hbGxvYywKCWFuZCBsdF9kbGZyZWUuCgoyMDAwLTAxLTMwICBPc3NhbWEgT3RobWFuICA8b3NzYW1hQGRlYmlhbi5vcmc+CgoJKiBsaWJ0b29sLm00IChsdF9jdl9jY19uZWVkc19iZWxmKTogU2V0IHRoZSB0ZXN0IGxhbmd1YWdlIHRvIEMKCXByaW9yIHRvIGV4ZWN1dGluZyB0aGUgdGVzdCB0aGF0IGNoZWNrcyBpZiB0aGUgQyBjb21waWxlciBuZWVkcwoJIi1iZWxmLiIKCVJlcG9ydGVkIGJ5IENocmlzIEJ1dGxlciA8Y2hyaXNiQHNhbmR5LmZvcmNlOS5jby51az4KCjIwMDAtMDEtMjggIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlidG9vbC5tNCAoQUNfREVQTElCU19DSEVDS19NRVRIT0QpOiAgVXNlIGNoYW5nZXF1b3RlIHRvCglwcm90ZWN0IGBbJyBhbmQgYF0nIGluIGRlcGxpYnNfY2hlY2tfbWV0aG9kLgoKCSogbGlibHRkbC9sdGRsLmggKGx0X2RscmVhbGxvYyk6IEFkZGVkIGRlY2xhcmF0aW9uLgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxyZWFsbG9jKTogQWRkZWQgZGVmYXVsdCBkZWZpbml0aW9uLgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2Rsc2V0ZXJyb3IpOiBDYXRjaCBlcnJvcmNvZGVzIGJlbG93IDAgYXMKCWludmFsaWQuCgkqIGxpYmx0ZGwvbHRkbC5oIChMVERMX0VSUk9SKTogQWRkZWQgbWlzc2luZyAnXycgaW4gSyZSCglkZWZpbml0aW9uLgoKCSogbGlibHRkbC9sdGRsLmggKGx0ZGxfZXJyb3JfdGFibGUpOiBBZGRlZCBtaXNzaW5nIGVycm9yIGNvZGUsIGFuZAoJZml4ZWQgdHlwbyBpbiBhbm90aGVyIGNvZGUuCgkqIGRvYy9saWJ0b29sLnRleGkgKExpYmx0ZGwgaW50ZXJmYWNlKTogQWRkZWQgbWlzc2luZyBAZW5kCgljbGF1c2UuCgoyMDAwLTAxLTI3ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbHRjb25maWcuaW46IE9vcHMsIHJlcGxhY2UgdGhlIHJlbWFpbmluZyAkb2JqZGlyJ3MKCgkqIGx0bWFpbi5pbjogbWVyZ2UgbGlicmFyeSBsaW5raW5nIGNvZGUgb2YgcHJvZ3JhbXMgYW5kIGxpYnJhcmllcywKCSAgc29tZSBjbGVhbnVwcwoKMjAwMC0wMS0yNyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBORVdTOiBVcGRhdGVkLgoJKiBkb2MvbGlidG9vbC50ZXhpIChMaWJsdGRsIGludGVyZmFjZSk6IERvY3VtZW50IG5ldyBlbnRyeQoJcG9pbnRzLgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxhZGRlcnJvcik6IE5ldyBmdW5jdGlvbiB0byBhZGQgYSB1c2VyCglkZWZpbmVkIGVycm9yIG1lc3NhZ2UgdG8gdGhlIHRhYmxlcyB1c2VkIGJ5IGx0X2RsZXJyb3IoKS4KCShsdF9kbHNldGVycm9yKTogIE5ldyBmdW5jdGlvbiB0byBhbGxvdyBzZXR0aW5nIG9mIGxhc3RfZXJyb3IgYnkKCXVzZXIgbW9kdWxlcy4KCShsdGRsX2Vycm9yX3N0cmluZ3MpOiBOZXcgcHJlcHJvY2Vzc29yIGdlbmVyYXRlZCB0YWJsZSBvZiBpbnRlcm5hbAoJZXJyb3IgZGlhZ25vc3RpYyBzdHJpbmdzLgoJKHVzZXJfZXJyb3Jfc3RyaW5ncyk6IE5ldyBpbnRlcm5hbCBsaXN0IG9mIHJlZ2lzdGVyZWQgdXNlciBlcnJvcgoJZGlhZ25vc3RpYyBzdHJpbmdzLgoJKHRocm91Z2hvdXQhKTogVXNlIGVycm9yIG1lc3NhZ2VzIGZyb20gbHRkbF9lcnJvcl9zdHJpbmdzLgoJKiBsaWJsdGRsL2x0ZGwuaCAobHRkbF9lcnJvcl90YWJsZSk6IE5ldyBtYWNybyB0byB0YWJ1bGF0ZQoJaW50ZXJuYWwgZGlhZ25vc3RpYyBlcnJvciBzdHJpbmdzIGFsb25nc2lkZSBlbnVtIGtleXMuCgoJKiBORVdTOiBVcGRhdGVkLgoJKiBkb2MvbGlidG9vbC50ZXhpIChMaWJsdGRsIGludGVyZmFjZSk6IERvY3VtZW50IG5ldyBlbnRyeQoJcG9pbnRzLgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGx0eXBlX3QpOiAgVXNlIG5ldyB0eXBlIGRlZmluaXRpb25zIGZvcgoJZXhpc3RpbmcgZmllbGRzLgoJKGx0X2RsYWRkdHlwZSk6IE5ldyBmdW5jdGlvbiB0byBhZGQgYSBuZXcgbHRkbCBkeW5hbWljIGxvYWRlcgoJdHlwZSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0IG9mIHZhbGlkIHR5cGVzLi4KCShsdF9kbGdldHR5cGVzKTogTmV3IGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgY29tcGxldGUgbGlzdCBvZiBsdGRsCglkeW5hbWljIGxvYWRlciB0eXBlcy4KCShsdF9kbHNldHR5cGVzKTogTmV3IGZ1bmN0aW9uIHRvIHJlcGxhY2UgdGhlIGxpc3Qgb2YgbHRkbCBkeW5hbWljCglsb2FkZXIgdHlwZXMgZW50aXJlbHkgLS0gZS5nLiB0byBwcmVwZW5kIGEgbmV3IHR5cGUgdG8gdGhlCglleGlzdGluZyBsaXN0LgoJKHN5c19kbF9vcGVuLCBzeXNfZGxfY2xvc2UsIHN5c19kbF9zeW0pOiBXb3JrIHdpdGggbHRfc3lzaGFuZGxlLgoJKHN5c19zaGxfb3Blbiwgc3lzX3NobF9jbG9zZSwgc3lzX3NobF9zeW0pOiBkaXR0by4KCShzeXNfZGxkX29wZW4sIHN5c19kbGRfY2xvc2UsIHN5c19kbGRfc3ltKTogZGl0dG8uCgkoc3lzX3dsbF9vcGVuLCBzeXNfd2xsX2Nsb3NlLCBzeXNfd2xsX3N5bSk6IGRpdHRvLgoJKHN5c19iZWRsX29wZW4sIHN5c19iZWRsX2Nsb3NlLCBzeXNfYmVkbF9zeW0pOiBkaXR0by4KCShwcmVzeW1fb3BlbiwgcHJlc3ltX2Nsb3NlLCBwcmVzeW1fc3ltKTogZGl0dG8uCgkodHJ5YWxsX2Rsb3Blbik6IENhbGwgbHRfbGliX29wZW5fdCBmdW5jdGlvbnMgbHRfc3lzaGFuZGxlCgljb21wYXRpYmx5LgoJKGx0X2RsY2xvc2UpOiBDYWxsIGx0X2xpYl9jbG9zZV90IGZ1bmN0aW9ucyBsdF9zeXNoYW5kbGUKCWNvbXBhdGlibHkuCgkobHRfZGxzeW0pOiBDYWxsIGx0X2ZpbmRfc3ltX3QgZnVuY3Rpb25zIGx0X3N5c2hhbmRsZSBjb21wYXRpYmx5LgoJKGx0X2RsdHlwZV90KTogbW92ZWQgdHlwZSBkZWNsYXJhdGlvbiBmcm9tIGhlcmUuLi4KCSogbGlibHRkbC9sdGRsLmggKGx0X2RsdHlwZV90KTogLi4udG8gaGVyZS4KCShsdF9zeXNoYW5kbGUpOiBuZXcgdHlwZSBmb3IgbG93IGxldmVsIHN5c3RlbSBoYW5kbGVzIHBhc3NlZCBieQoJbG9hZGVyIGZ1bmN0aW9ucwoJKGx0X21vZF9pbml0X3QpOiAgTmV3IHR5cGUgZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRpbmcgdGhlCglpbml0aWFsaXNhdGlvbiBmb3IgYW4gbHRkbCBkeW5hbWljIGxvYWRlci4KCShsdF9tb2RfZXhpdF90KTogVHlwZSBvZiBleGl0IGZ1bmN0aW9ucyBmb3IgdGhlIHNhbWUuCgkobHRfbGliX29wZW5fdCk6IFR5cGUgb2YgbG9hZGVyIGZ1bmN0aW9ucyBmb3IgdGhlIHNhbWUuCgkobHRfbGliX2Nsb3NlX3QpOiBUeXBlIG9mIHVubG9hZGVyIGZ1bmN0aW9ucyBmb3IgdGhlIHNhbWUuCgkobHRfZmluZF9zeW1fdCk6IFR5cGUgb2Ygc3ltYm9sIHJlc29sdmVyIGZ1bmN0aW9ucyBmb3IgdGhlIHNhbWUuCgoJKiBsaWJsdGRsL2x0ZGwuYyAoc3lzX2RsX2luaXQsIHN5c19kbF9leGl0LCBzeXNfZGxfb3BlbiwKCXN5c19kbF9jbG9zZSwgc3lzX2RsX3N5bSk6ICBQcmVwcm9jZXNzIHRoZXNlIGF3YXkgb24gY3lnd2luIHRvCglhdm9pZCBzcHVyaW91cyBlcnJvciBtZXNzYWdlcy4KCjIwMDAtMDEtMjQgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJZml4IHNldmVyZSBidWdzIHJlcG9ydGVkIGJ5IEVscm9uZCA8RWxyb25kQFd1bmRlci1OZXR0Lm9yZz4KCgkqIGx0Y29uZmlnLmluOiByZXBsYWNlICRvYmpkaXIgd2l0aCAkb3V0cHV0X29iamRpcgoKCSogbHRtYWluLmluOiBjaGFuZ2UgdG8gdGhlIGJ1aWxkZGlyIGJlZm9yZSByZWxpbmtpbmcgcHJvZ3JhbXMKCgkqIGx0bWFpbi5pbiwgbHRjb25maWcuaW4sIGxpYnRvb2wubTQsIGx0ZGwubTQ6CgkgIHJlbW92ZSB1bm5lc3Nhcnkgc3BhY2VzIGZyb20gbGluZSBlbmRpbmdzCgoyMDAwLTAxLTE5ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbHRtYWluLmluOiByZXdyaXRlIG9mIHRoZSBJTEQgY29kZSwgbWVyZ2UgbGlua2luZyBjb2RlIGZvcgoJICBwcm9ncmFtcywgbGlicmFyaWVzIGFuZCBvYmplY3RzLCBhbGxvdyBsaW5raW5nIG9mIHNoYXJlZCBsaWJyYXJpZXMKCSAgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzL29iamVjdHMgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdAoJICBidXQgcHJpbnQgYSB3YXJuaW5nLCBmaXggc29tZSB0eXBvcwoKCSogcGFydGlhbGx5IHJldmVydCBteSBwcmV2aW91cyBjaGFuZ2UgYW5kCgkgIHVwZGF0ZSBvbmx5IGNvcHlyaWdodCBub3RpY2VzIG9mIGZpbGVzIHRoYXQgd2VyZSBhY3R1YWxseSBtb2RpZmllZAoKCSogTkVXUzogdXBkYXRlCgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtOiB2ZXJzaW9uIG51bWJlciB3YXMgd3JvbmcKCgkqIGxpYmx0ZGwvbHRkbC5jICh0cnlhbGxfZGxvcGVuKTogcmV2ZXJ0IEdhcnkncyBjaGFuZ2UKCSAgc2luY2UgaXQgYnJlYWtzIGRscHJlb3BlbmluZwoJKiBsdGRsLm00OiBkaXR0bwoKCSogbGlibHRkbC9sdGRsLmMgKHN5c19zZWFyY2hfcGF0aCk6IHNlYXJjaCBpbiB0aGUgc3lzdGVtIGRlZmF1bHQKCSAgbGlicmFyeSBzZWFyY2ggcGF0aCwgdG9vCgkqIGx0ZGwubTQgKEFDX0xURExfU1lTU0VBUkNIUEFUSCk6IGV4dHJhY3QgdGhlIHBhdGgKCgkqIGxpYmx0ZGwvbHRkbC5jIChmaW5kX21vZHVsZSk6IHJlbW92ZSBib2d1cyBmaWxlX25vdF9mb3VuZF9lcnJvcgoKCSogbGlibHRkbC9sdGRsLmMgKGxvYWRfZGVwbGlicyk6IGltcGxlbWVudCBsb2FkaW5nIG9mIGRlcGVuZGVuY3kKCSAgbGlicmFyaWVzCgkqIGxpYmx0ZGwvbHRkbC5jICh1bmxvYWRfZGVwbGlicyk6IGltcGxlbWVudCB1bmxvYWRpbmcgb2YgZGVwZW5kZW5jeQoJICBsaWJyYXJpZXMKCSogbGlibHRkbC9sdGRsLmMgKGx0X2RsZXhpdCk6IGNvcnJlY3RseSBjbG9zZSBhbGwgbW9kdWxlcyBhbmQKCSAgdGhlaXIgZGVwZW5kZW5jaWVzCgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxmb3JlYWNoKTogbmV3IGZ1bmN0aW9uCgkqIGxpYmx0ZGwvbHRkbC5oOiBkaXR0bwoJKiBkb2MvbGlidG9vbC50ZXhpICh1c2luZyBsaWJsdGRsKTogZG9jdW1lbnQgaXQKCgkqIGxpYnRvb2wubTQ6IHJlZm9ybWF0dGluZywgb25seSBhZGQgLUkkdG9wc3JjX2Rpci9saWJsdGRsIHRvCgkgIElOQ0xUREwKCgkqIGxpYnRvb2xpemUuaW46IHJlZm9ybWF0dGluZwoJKiBsdGNvbmZpZy5pbjogcmVmb3JtYXR0aW5nCgkqIGx0bWFpbi5pbjogcmVmb3JtYXR0aW5nCgoJKiBtZGVtby9jb25maWd1cmUuaW46IEFDX1NVQlNUIElOQ0xUREwKCSogbWRlbW8vTWFrZWZpbGUuYW06IHVzZSBJTkNMVERMCgoJKiB0ZXN0cy9NYWtlZmlsZS5hbTogcmVleHBvcnQgT0JKRVhUIGFuZCBFWEVFWFQKCSogdGVzdHMvZHJ5cnVuLnRlc3Q6IHVzZSB0aGVtIGZvciBidWlsZGluZyBtYWluLm9iaiBhbmQgbWRlbW8uZXhlCgoyMDAwLTAxLTE3ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jICh0cnlhbGxfZGxvcGVuKTogQWJvcnQgd2l0aAoJZmlsZV9ub3RfZm91bmRfZXJyb3IgYmVmb3JlIHRyeWluZyBhbGwgbGliX29wZW4oKSBtZXRob2RzCglpZiB0aGUgZmlsZSB0byBiZSBkbG9wZW5lZCBkb2Vzbid0IGV4aXN0LgoJKiBsdGRsLm00IChBQ19IQVZFX0hFQURFUlMpOiBhZGQgdW5pc3RkLmguCgoyMDAwLTAxLTE2ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChmaW5kX2ZpbGUpOiBtZW1vcnkgZXJyb3IgZml4ZWQuCgoyMDAwLTAxLTE0ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluIChVc2FnZSk6IE5vdyBpdCBtYXRjaGVzIHRoZSBjb2RlIQoJUmVwb3J0ZWQgYnkgSm9uIExlaWNodGVyIDxqb25Ac3ltYXMuY29tPgoKCSogUkVBRE1FOiAgU29tZSBub3RlcyBhYm91dCBsaWJ0b29sIHJlbGVhc2UgbnVtYmVycy4KCgkqIG1kZW1vL1JFQURNRTogRXhwbGFpbiB0aGUgZGVsaWJlcmF0ZSBpbmNvbXBsZXRlbmVzcyBvZiB0aGUKCVdpbmRvd3MgcG9ydC4KCSogbWRlbW8vY29uZmlndXJlLmluOiBVc2UgQUNfTElCVE9PTF9XSU4zMl9ETEwuCgkqIG1kZW1vL01ha2VmaWxlLmFtIChMREZMQUdTKTogIEFkZCAtbm8tdW5kZWZpbmVkLgoKCSogbGlibHRkbC9sdGRsLmggKExURExfU1RNVF9TVEFSVCwgTFRETF9TVE1UX0VORCk6ICBNYWNyb3MgZm9yCgl3cmFwcGluZyBvdGhlciBtYWNyb3MgdG8gbWFrZSBhIHBvcnRhYmxlIGNvbXBvdW5kIHN0YXRlbWVudCBmcm9tCgltdWx0aXBsZSBDIHN0YXRlbWVudHMgaW4gdGhlIGV4cGFuc2lvbi4KCShMVERMX1NFVF9QUkVMT0FERURfU1lNQk9MUyk6IFVzZSB0aGUgYWJvdmUgbWFjcm9zIHRvIGFkZCBhbgoJZXh0ZXJuIGRlY2xhcmF0aW9uIGZvciBsdF9wcmVsb2FkZWRfc3ltYm9scywgdG8gcmVtb3ZlCglkZXBlbmRlbmN5IG9uIHVuZGVmaW5lZCBzeW1ib2wgZnJvbSBsaWJsdGRsLmRsbCBvbiBjeWd3aW4gKGFuZAoJb3RoZXIgLW5vLXVuZGVmaW5lZCBhcmNoaXRlY3R1cmVzKS4KCSogbGlibHRkbC9sdGRsLmMgKGx0X3ByZWxvYWRlZF9zeW1ib2xzKTogTm8gbG9uZ2VyIGRlZmluZWQgaGVyZS4KCgkqIGxpYnRvb2wsbTQgKEFDX0xJQlRPT0xfU0VUVVApOiAgVGhlIHJlc3VsdCBvZiBsdF9jdl9uZWVkX2RsbG1haW4KCXdhcyBzZXQgdG8gdGhlIG9wcG9zaXRlIG9mIHdoYXQgaXQgc2hvdWxkIGJlLgoJKiBjb25maWd1cmUuaW4gKEFDX0xJQlRPT0xfV0lOMzJfRExMKTogIENhbGwgdG8gdGhpcyBtYWNybyBpcwoJcmVxdWlyZWQgZm9yIGxpYnRvb2wgY29uZmlndXJ5IHRvIHRlc3QgbHRfY3ZfbmVlZF9kbGxtYWluIG9uCglXaW5kb3dzLgoKCSogbHRjb25maWcuaW4gKG9wdF9jciwgbWluZ3cqKTogcmVwbGFjZSB1bmVzY2FwZWQgPyB3aXRoIGNvcnJlY3RseQoJZXNjYXBlZCBhbmQgcG9ydGFibGUgXHswLDFcfSBpbiBzZWQgZXhwcmVzc2lvbi4KCUZyb20gSm9uIExlaWNodGVyIDxqb25Ac3ltYXMuY29tPgoKMjAwMC0wMS0xMyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJMVERMX0NPTlZFTklFTkNFKTogQWRkIC1JJHt0b3Bfc3JjZGlyfS9saWJsdGRsCgl0byBkZWZhdWx0IElOQ0xUREwgZm9yIFZQQVRILgoJKEFDX0xJQkxURExfSU5TVEFMTEFCTEUpOiBkaXR0by4KCVJlcG9ydGVkIGJ5IFRvbSBUcm9tZXkgPHRyb21leUBjeWdudXMuY29tPgoKMjAwMC0wMS0xMiAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIHVwZGF0ZSBhbGwgY29weXJpZ2h0IG5vdGljZXMgdG8gMjAwMAoKCSogZG9jL2xpYnRvb2wudGV4aSAodXNpbmcgbGlibHRkbCk6IGRvY3VtZW50IG5ldyBsdF9kbGluZm8gc3RydWN0LAoJICByZXBsYWNlIE5VTEwgd2l0aCBAY29kZXtOVUxMfSwgZG9jdW1lbnQgbHRfZGxzZXRkYXRhKCksCgkgIGx0X2RsZ2V0ZGF0YSgpIGFuZCBsdF9kbGdldGluZm8oKQoJKiBsaWJsdGRsL01ha2VmaWxlLmFtOiBpbmNyZW1lbnQgaW50ZXJmYWNlIHZlcnNpb24gbnVtYmVyCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBzZXQgdmVyc2lvbiBudW1iZXIgdG8gMS4xCgkqIGxpYmx0ZGwvbHRkbC5jOiBtYWtlIHNvbWUgdmFyaWFibGVzIHB1YmxpYyBieSBtb3ZpbmcgdGhlbQoJICB0byB0aGUgaW5mbyBzdHJ1Y3QsIGFkZCBzdXBwb3J0IGZvciBhcHBsaWNhdGlvbiBzcGVjaWZpYyBkYXRhCgkgIHdpdGhpbiBtb2R1bGUgaGFuZGxlcywgbmV3IGx0X2Rsc2V0ZGF0YSgpLCBsdF9kbGdldGRhdGEoKSBhbmQKCSAgbHRfZGxnZXRpbmZvKCkgZnVuY3Rpb25zLAoJICBmaXggbWVtb3J5IGxlYWtzLCBtaW5vciBjbGVhbnVwcwoJKiBsaWJsdGRsL2x0ZGwuaDogZGl0dG8KCSogbWRlbW8vbWFpbi5jOiBkZW1vbnN0cmF0ZSB1c2Ugb2YgbHRfZGxnZXRpbmZvLAoJICBpbXByb3ZlZCBoYW5kbGluZyBvZiBlcnJvcnMKCgkqIGx0Y29uZmlnLmluOiBzZXQgaGFyZGNvZGVfaW50b19saWJzID0geWVzIGZvciBHTlUvSHVyZCwgTGludXgKCSAgYW5kIFNvbGFyaXMsIG9ubHkgaGFyZGNvZGUgKmFsbCogcnVuLXBhdGhzIGlmIGhhcmRjb2RlX2ludG9fbGlicwoJICBpcyBzZXQgdG8gJ2FsbCcsIG90aGVyd2lzZSBoYXJkY29kZSBvbmx5IHVzZXItc3BlY2lmaWVkIHJwYXRocwoJICBpbnRvIGxpYnJhcmllcwoJKiBsdG1haW4uaW46IG1pbm9yIGNsZWFudXBzLCB3ZSBkb24ndCBuZWVkIHRvIGFkZCB1c2VyLXNwZWNpZmllZAoJICBycGF0aHMgdG8gY29tcGlsZV9ycGF0aCwgZmluYWxpemVfcnBhdGggaXMgc3VmZmljaWVudAoKCSogbHRjb25maWcuaW46IHRyYW5zZm9ybSBsaW51eCogLT4gKmxpbnV4LWdudSogX2FmdGVyXyBob3N0X29zIGhhcwoJICBiZWVuIHNldCEgKHJlcG9ydGVkIGJ5IEJydW5vIEhhaWJsZSA8aGFpYmxlQGlsb2cuZnI+KQoKCSogY29uZmlndXJlLmluOiBBQ19TVUJTVCByZWxvYWRfZmxhZywgZGVwbGlic19jaGVja19tZXRob2QKCSAgYW5kIGZpbGVfbWFnaWNfY21kCgoJKiBSRUFETUU6IHVzZSAnbGlidG9vbCAtLXZlcnNpb24nIGluc3RlYWQgb2YgJ2x0Y29uZmlnIC0tdmVyc2lvbicKCSAgKHN1Z2dlc3RlZCBieSBGcmFuY2lvcyBQaW5hcmQgPHBpbmFyZEBpcm8udW1vbnRyZWFsLmNhPgoKMjAwMC0wMS0xMCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuaCAoTFRETF9ESVJTRVBfQ0hBUik6IExlYXZlIHVuZGVmaW5lZCB3aGVuCglub3QgY29tcGlsaW5nIGZvciBhIFdpbmRvd3MgdGFyZ2V0LgoJKiBsaWJsdGRsL2x0ZGwuYyAoY2Fub25pY2FsaXplX3BhdGgpOiBOZXcgZnVuY3Rpb24gdG8KCWVuc3VyZSBpbnRlcm5hbCBwYXRocyB1c2UgJy8nIGRpcmVjdG9yeSBzZXBhcmF0b3JzLgoJKGZpbmRfZmlsZSk6IHVzZSBjYW5vbmljYWxpemVfcGF0aC4gIE1lbW9yeSBtYW5hZ2VtZW50CgljaGFuZ2VkIHRvIGNvcGUuCgkobHRfZGxvcGVuKTogZGl0dG8uCgkoZnJlZV92YXJzKTogUmVtb3ZlZCBgZGlyJyBhbmQgYG5hbWUnLCB3aGljaCBhcmUgbm93IGhhbmRsZWQKCWludGVybmFsbHkuCgoJKiBsaWJsdGRsL2x0ZGwuaCAoTFRETF9ESVJTRVBfQ0hBUik6IERlZmluZSB0byAnLycgb3IgJ1xcJywKCWFzIHN1aXRhYmxlIGZvciB0aGUgdGFyZ2V0IGhvc3QuCgkoTFRETF9QQVRIU0VQX0NIQVIpOiBTaW1pbGFybHkgd2l0aCAnOicgb3IgJzsnLgoJKiBsaWJsdGRsL2x0ZGwuYzogVXNlIExURExfRElSU0VQX0NIQVIgYW5kIExURExfUEFUSFNFUF9DSEFSCglpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgdGhyb3VnaG91dC4KCVJlcG9ydGVkIGJ5IEpvbiBMZWljaHRlciA8am9uQHN5bWFzLmNvbT4KCjE5OTktMTItMTggIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluOiBPb3BzLCBgbGFyZ2FyZycgLT4gYGxhc3RhcmcnLgoKCSogbHRtYWluLmluICgtV2MsIC1YY29tcGlsZXIpOiBJbXBsZW1lbnRlZCBpbiBjb21waWxlIG1vZGUuCgoJKiBsdG1haW4uaW4gKC1YY29tcGlsZXIsIC1YbGlua2VyKTogQWRkIHRvIGNvbXBpbGVfY29tbWFuZCBhbmQKCWZpbmFsaXplX2NvbW1hbmQuCgkoLVdjLCAtV2wpOiBMaWtld2lzZS4KCgkqIHRlc3RzL3F1b3RlLnRlc3Q6IEFkanVzdCBxdW90aW5nIHN0eWxlIG9mIC1XbC4KCgkqIGx0bWFpbi5pbjogT29wcywgYGVjaG8nIC0+IGAkZWNobycuCgoJKiBsdG1haW4uaW4gKC1XbCwgLVdjKTogTWFrZSBjb21tYXMgYXJndW1lbnQgc2VwYXJhdG9ycywganVzdCBsaWtlCglpbiBnY2MuCgoJKiBsdG1haW4uaW4gKGxpYnRvb2xfYXJncyk6IEdldCBhbGwgYXJndW1lbnRzIHByb3Blcmx5IGVuY2xvc2VkIGluCglxdW90ZXMgYW5kIGJhY2tzbGFzaC1wcm90ZWN0ZWQgd2hlbiBuZWVkZWQuCgoxOTk5LTEyLTE2ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGx0ZGwubTQ6IFJlbmFtZWQgZnJvbS4uLgoJKiBsaWJsdGRsL2x0ZGwubTQ6IHRoYXQgbm8gbG9uZ2VyIGV4aXN0cy4KCSogY29uZmlndXJlLmluIChBQ0lOQ0xVREVfTTRfTElTVCk6IFJlbW92ZWQgbGlibHRkbC9hY2luY2x1ZGUubTQuCgkqIE1ha2VmaWxlLmFtIChhY2xvY2FsX21hY3Jvcyk6IEFkZGVkIGx0ZGwubTQuCgkobGlibHRkbC9hY2luY2x1ZGUubTQpOiBDb25jYXRlbmF0ZSBsaWJ0b29sLm00IGFuZCBsdGRsLm00LgoJKiBib290c3RyYXA6IExpa2V3aXNlLgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChBQ0xPQ0FMKTogUmVtb3ZlIHRoZSBkZWZpbml0aW9uLiAgUmVseWluZwoJdXBvbiAtSSBtYXkgbGVhZCB0byBkdXBsaWNhdGVzLgoJKiBkb2MvbGlidG9vbC50ZXhpOiBTdWdnZXN0IGFwcGVuZGluZyBsdGRsLm00IHRvIGFjaW5jbHVkZS5tNC4KCSogbGlidG9vbGl6ZS5pbjogQ2hlY2sgQUNfTElCX0xUREwgdmVyc2lvbiBudW1iZXIgaW4gYWNsb2NhbC5tNC4KCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluICh3aXRoX2F1eGRpcik6IERvIG5vdCB1c2UgaXQgYXMgdGhlCglhcmd1bWVudCBvZiBBQ19DT05GSUdfQVVYX0RJUiwgYXV0b21ha2UgcmVxdWlyZXMgYSBsaXRlcmFsIGhlcmUuCglVc2UgQUNfQ09ORklHX0FVWF9ESVJTL0RJUl9ERUZBVUxUIGluc3RlYWQuCgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChBQ0xPQ0FMKTogRGVmaW5lIHdpdGggYC1JIC4nLCBhcyBpbgoJYm9vdHN0cmFwLgoKMTk5OS0xMi0xNSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBwYXRoIHRvIGF1eGlsaWFyeSBmaWxlcyBjYW4gYmUgc3BlY2lmaWVkCgkgIHVzaW5nIC0td2l0aC1hdXhkaXIgKGlkZWEgYnkgSG93YXJkIENodSA8aHljQGhpZ2hsYW5kc3VuLmNvbT4pCgoJKiBsdG1haW4uaW46IGRvbid0IHJlbW92ZSBtdWx0aXBsZSBvY2N1cmVuY2VzIGZyb20gZGVwZW5kZW5jeV9saWJzCgkgIG9mIGEgbGlicmFyeSwgb3RoZXJ3aXNlIG1hbnkgZGVwZW5kZW5jaWVzIHdvdWxkIGdldCBsb3N0CgoJKiBib290c3RyYXA6IHVzZSAiYWNsb2NhbCAtSSAuIiBpbnN0ZWFkIG9mIGFkZGluZyB0aGUgY29udGVudHMKCSAgb2YgbHRkbC5tNCB0byBhY2luY2x1ZGUubTQKCjE5OTktMTItMTMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogTkVXUzogdXBkYXRlZC4KCSogbGlibHRkbC9NYWtlZmlsZS5hbTogVXNlIC1uby11bmRlZmluZWQgZm9yIGRsbCBjb21wbGlhbmNlLgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogVXNlIEFDX0xJQlRPT0xfV0lOMzJfRExMIGZvciBkbGwKCWNvbXBsaWFuY2UuCgkqIGxpYmx0ZGwvbHRkbC5jOiBEZWZpbmUgYW5kIHVzZSBMVERMX0dMT0JBTF9EQVRBIHRvIGNvcnJlY3RseQoJZXhwb3J0IGdsb2JhbCBkYXRhIHN5bWJvbHMgZnJvbSBsaWJ0bGRsLmRsbC4KCSogbGlibHRkbC9sdGRsLmg6IERlZmluZSBhbmQgdXNlIExURExfU0NPUEUgdG8gZGVjbGFyZSBkYXRhCglzeW1ib2xzIGFzIGRsbGV4cG9ydCwgZGxsaW1wb3J0IG9yIHBsYWluIG9ybmFyeSBleHRlcm4gZGVwZW5kaW5nCglpbiB0aGUgY29udGV4dCBpbiB3aGljaCBpdCBpcyB1c2VkLgoKCSogZG9jL2xpYnRvb2wudGV4aSAoRGlzdHJpYnV0aW5nIGxpYmx0ZGwpOiBkb2N1bWVudCB1c2Ugb2YKCWx0ZGwubTQuCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBSZW1vdmVkIGhlYWRlciBjaGVja3MsIGFzIHRoZXkgYXJlCiAgICAgICAgYXV0b21hdGljYWxseSBwZXJmb3JtZWQgYnkgQUNfTElCX0xUREwuCgkqIGxpYmx0ZGwvbHRkbC5tNDogQWRkZWQgaGVhZGVyIGNoZWNrcyBmcm9tIGNvbmZpZ3VyZS5pbiwgc28gdGhhdAoJQUNfTElCX0xUREwgaXMgc3VmZmljaWVudCB0byBjb21waWxlIGx0ZGwuYy4KCVJlcG9ydGVkIGJ5IFN0ZXBoYW4gS3Vsb3cgPGNvb2xvQGtkZS5vcmc+LgoKCSogbHRjb25maWcuaW4gKGx0ZGxsX29iaik6IGZpeGVkIHR5cG86IG9iamRpciAtPiAkb2JqZGlyCgoxOTk5LTEyLTEyICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluIChjeWd3aW4qLCBtaW5ndyosIGV4cG9ydF9zeW1ib2xzX2NtZHMpOiBrZWVwIGFueQoJREFUQSB0YWdzIGFzc29jaWF0ZWQgd2l0aCBzeW1ib2xzIGJ5IHJlY2VudCBkbGx0b29sLgoJKGN5Z3dpbiosIG1pbmd3KiwgYXJjaGl2ZV9leHBzeW1fY21kcyk6IEhvbm9yIGFueSBEQVRBIHRhZ3MKCWZvdW5kIGluIHRoZSBzeW1ib2wgbGlzdC4KCVJlcG9ydGVkIGJ5IEpvbiBMZWljaHRlciA8am9uQHN5bWFzLmNvbT4uCgoxOTk5LTEyLTEwICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCglGcm9tIFN0ZXBoYW4gS3Vsb3cgPGNvb2xvQGtkZS5vcmc+CgkqIGxpYmx0ZGwvbHRkbC5tNDogIEFkZCBhcmcgMyB0byBBQ19ERUZJTkUncyB0byBzYXZlIHRoZSB1c2VyCglmcm9tIGhhdmluZyB0byBoYWNrIGFjY29uZmlnLmguCgoxOTk5LTEyLTA2ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIE5FV1M6IFVwZGF0ZWQuCgkqIFRPRE86IE5vdGUgc29tZSBjbGVhbnVwcyB0aGF0IGFyZSBub3cgbmVlZGVkLgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogVXNlIHRoZSBuZXcgbWFjcm9pc2VkIHRlc3RzLgoJKiBsaWJsdGRsL2x0ZGwubTQ6IE5ldyBmaWxlLCBtYWNyb2lzZWQgdGVzdHMgZm9ybWVybHkgaW4KCWxpYmx0ZGwvY29uZmlndXJlLmluLgoJUmVwb3J0ZWQgYnkgU3RlcGhhbiBLdWxvdyA8Y29vbG9Aa2RlLm9yZz4uCgoJRnJvbSBUaW0gTW9vbmV5ICA8bW9vbmV5QGRvZ2JlcnQuY2MubmRzdS5Ob0Rhay5lZHU+CgkqIGx0Y29uZmlnLmluOiAgc3BsaXQgb2ZmIHRoZSBvc2YzIHNlY3Rpb24sIHNvIHRoYXQgdGhlIG9zZjQgYW5kCglvc2Y1IHNlY3Rpb25zIGNhbiBhZGQgYC1tc3ltJyB0byBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBsaW5rZXIKCWZvciBzaGFyZWQgbGlicy4KCjE5OTktMTItMDMgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGFjX2NvbXBpbGUpOiBVc2UgJGFjX2V4dCBpbnN0ZWFkIG9mIC5jLgoJKGFjX2xpbmspOiBMaWtld2lzZS4KCShkbGZjbi5oLCBhY190cnkpOiBEbyBub3QgYWRkIGZpbGVuYW1lLCBpdCBpcyBhbHJlYWR5IGluCglhY19jb21waWxlLgoJUmVwb3J0ZWQgYnkgU3RlcGhhbmUgQ29udmVyc3kgPFN0ZXBoYW5lLkNvbnZlcnN5QGxyaS5mcj4KCgkqIGx0Y29uZmlnLmluIChsaW51eC1nbnUqKTogRGlzYWJsZSBoYXJkY29kZV9pbnRvX2xpYnMgdW50aWwgaXQKCXdvcmtzIHRvZ2V0aGVyIHdpdGggZmFzdF9pbnN0YWxsLgoKCSogbGlidG9vbC5tNDogVXNlIGhvc3Qgd2hlbiAtLXRhcmdldCBpcyBub3Qgc3BlY2lmaWVkLgoKCSogY29uZmlndXJlLmluOiBBQ19TVUJTVCB2YXJpYWJsZXMgdGhhdCBhcmUgdXNlZCBieSBsdGNvbmZpZyB0bwoJYnVpbGQgbGlidG9vbC4KCgkqIGx0Y29uZmlnLmluIChpcml4NiopOiBEbyBub3Qgb3ZlcnJpZGUgZGVwbGlic19jaGVja19tZXRob2QKCWhlcmUuCgoJKiBsaWJ0b29sLm00OiBEbyBub3QgQUNfU1VCU1QgYW55dGhpbmcgb3RoZXIgdGhhbiBMSUJUT09MLgoKMTk5OS0xMS0yMCAgTWljaGFlbCBGb3JzdGVyICA8ZW1haWxAbWljaGFlbC1mb3JzdGVyLmRlPgoKCSogbHRjb25maWcuaW4gKGxpbnV4LWdudSopOiBTZXQgaGFyZGNvZGVfaW50b19saWJzPXllcy4KCjE5OTktMTEtMjkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW46ICBCZSBmcmllbmRsaWVyIHRvIEMrKyBjb21waWxlcnMgd2hlbiB0ZXN0aW5nCglmb3IgZGxvcGVuIHN1cHBvcnQuCglSZXBvcnRlZCBieSBTdGVwaGFuIEt1bG93IDxjb29sb0BpdG0ubXUtbHVlYmVjay5kZT4KCjE5OTktMTEtMjYgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlidG9vbC5tNDogIGJldHRlciB1c2Ugb2YgJHRhcmdldCBpbnN0ZWFkIG9mICRob3N0IHRvIHN1cHBvcnQKCWNyb3NzIGNvbXBpbGF0aW9uLgoJUmVwb3J0ZWQgYnkgU2FtIExhdGluZ2EgPHNsb3VrZW5AZGV2b2x1dGlvbi5jb20+CgoxOTk5LTExLTE2ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogY29uZmlndXJlLmluOiBnZW5lcmF0ZSBsdGNvbmZpZyBhbmQgbHRtYWluLnNoIGJlZm9yZSBjb25maWd1cmluZwoJICBsaWJsdGRsCgoxOTk5LTExLTA0ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIHRlc3RzL3NoLnRlc3Q6IE5ldyB0ZXN0IHRvIGRldGVjdCB1c2VzIG9mIHF1b3RlcyB3aXRoaW4KCWJhY2t0aWNrcyB3aXRoaW4gcXVvdGVzLgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluOiBGaXggZGV0ZWN0ZWQgZXJyb3JzLiAgTWFyayBmYWxzZQoJcG9zaXRpdmVzIHdpdGggYSBjb21tZW50IHRoYXQgZGlzYWJsZXMgdGhlIGRldGVjdG9yLgoJUmVwb3J0ZWQgYnkgQWtpbSBEZW1haWxsZSA8YWtpbUBlcGl0YS5mcj4KCgkqIGNvbmZpZ3VyZS5pbjogTW92ZSBsdGNvbmZpZyBhbmQgbHRtYWluLnNoIGdlbmVyYXRpb24gYmFjay4uLgoJKiBNYWtlZmlsZS5hbTogaGVyZS4KCjE5OTktMTEtMDIgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiB1cGRhdGVkCgkqIFRIQU5LUzogYWRkZWQgT2xseSBCZXR0cyBhbmQgUGF2ZWwgUm9za2luCgkqIGRvYy9saWJ0b29sLnRleGk6IGZpeCB0eXBvCgoJKiBmaXggbWFqb3IgYnVncyB3aGljaCByZW5kZXJlZCBsaWJ0b29sIHZpcnR1YWxseQoJICB1bnVzYWJsZSAoaS5lLiBub3QgcG9ydGFibGUpOgoJKiBsdGNvbmZpZy5pbjogZG9uJ3QgaGFyZGNvZGUgc3lzdGVtIGRlcGVuZGVudCB2YXJpYWJsZXMgaW4gbHRjb25maWchIQoJICBidXQgc2V0IHNhbmUgZGVmYXVsdHMKCSogTWFrZWZpbGUuYW06IHBhc3MgdmFyaWFibGVzIGZyb20gQUNfTElCVE9PTF9TRVRVUCB0byBsdGNvbmZpZwoJKiBsaWJ0b29sLm00OiBkaXR0bywgZml4IHR5cG8gaW4gQUNfUFJPR19MRF9SRUxPQURfRkxBRwoKCSogbHRjb25maWcuaW46IHVzZSBvbGRfZGVwbGlicyBmb3IgYXJjaGl2ZXMsIHRvbwoJICByZW1vdmUgc2Vjb25kIG9jY3VyZW5jZSBvZiBzeXN2NQoJKiBsdG1haW4uaW46IGZpeCB0eXBvLCBmaXggdGhlIHNlY29uZCBvY2N1cmVuY2Ugb2YgLURQSUMsIHRvbwoKCSogbGlibHRkbC9NYWtlZmlsZS5hbTogaW5jcmVtZW50IHZlcnNpb24gbnVtYmVyLCBmaXggdHlwbwoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxzeW0pOiBkb24ndCByZXBvcnQgYW4gZXJyb3IgaWYgdGhlCgkgIGxpYmx0ZGwtc3R5bGUgc3ltYm9sIG5hbWUgd2Fzbid0IGZvdW5kCgoxOTk5LTExLTAyICBXb2xmZ2FuZyBSYXBwIDx1bHJpc0Bibi11bG0uZGU+CgoJKiBsdGNvbmZpZy5pbjogYWRkIHN1cHBvcnQgZm9yIFVuaXh3YXJlIChzeXN2NC4ydXcyKikKCjE5OTktMTAtMjkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRtYWluLmluOiAgRGFtbml0ISAgQ3lnd2luIGN2cyBjb21taXR0ZWQgYWxsIHRoZQoJZG9zIGxpbmUgZW5kaW5ncy4KCjE5OTktMTAtMjggIFN0ZXBoYW5lIENvbnZlcnN5ICA8U3RlcGhhbmUuQ29udmVyc3lAbHJpLmZyPgoKCSogbHRtYWluLmluICgtRFBJQyk6ICBjaGFuZ2VkIHRoZSBvcmRlciBvZiBwaWMgZmxhZ3MgYSBsaXR0bGUgdG8KCXByZXZlbnQgdXBzZXR0aW5nIHRoZSBzZ2kgYysrIGNvbXBpbGVyLgoKMTk5OS0xMC0yOCAgT2xseSBCZXR0cyAgPG9sbHlAbXVzY2F0LmNvLnVrPgoKCSogbHRjb25maWcuaW4gKG9wdF9jcik6ICBIYW5kbGUgY3JsZiBzZXF1ZW5jZXMgb3V0cHV0IGJ5IHRoZQoJbWluZ3cgdG9vbGNoYWluLgoKCSogbGlidG9vbC5tNDogIFRoaXJkIHRpbWUgbHVja3ksIHdpdGggVG9yJ3MgcGF0Y2guCgoxOTk5LTEwLTE5ICBUb3IgTGlsbHF2aXN0ICA8dG1sQGlraS5maT4KCgkqIGxpYnRvb2wubTQ6ICB0aGVzZSB3YXMgYSBtaXNzaW5nIGAqJyBpbiB0aGUgLW1uby1jeWd3aW4KCW1hdGNoLgoJKiBsdGNvbmZpZy5pbiAoY3lnd2luLCBsdGRsbF9vYmopOiBmaXhlZCBhIHF1b3RpbmcgZXJyb3IuCgkoZXhwb3J0X3N5bWJvbHNfY21kcyk6IGFkZGVkIG1pc3NpbmcgY29zbWV0aWMgbmV3bGluZS4KCjE5OTktMTAtMTggIFRvciBMaWxscXZpc3QgIDx0bWxAaWtpLmZpPgoKCSogbGlidG9vbC5tNDogdGVzdCBjb21tYW5kIHVzZWQgPT0gd2hpY2ggc2hvdWxkIGJlID0uCglTdXBwb3J0IC1tbm8tY3lnd2luIGZsYWcgZm9yIGJ1aWxkaW5nIG1pbmd3MzIgZGxscy4KCSogbHRjb25maWcuaW4gKGZpbGVfbWFnaWNfY21kKTogYWRkIG1pc3NpbmcgcXVvdGVzLgoJKGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogYW5kIGhlcmUuCgoxOTk5LTEwLTE2ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW4pOiBEbyBub3Qgc2VhcmNoIHBhdGhzIHdoZW4gdGhlCglzcGVjaWZpZWQgbGlicmFyeSBpcyBub3QganVzdCBhIGJhc2VuYW1lLgoKMTk5OS0xMC0xMCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJ0b29sLm00IChBQ19QQVRIX0ZJTEUpOiBuZXcgbWFjcm8gcmVwbGFjZXMKCUFDX1BBVEhfVE9PTF9HUkVQX09VVFBVVC4KCShBQ19QQVRIX1RPT0xfUFJFRklYKTogbmV3IG1hY3JvIHJlcGxhY2VzCglBQ19QQVRIX1BST0dfR1JFUF9PVVRQVVQuCgkoQUNfTERfUkVMT0FEX0ZMQUcpOiAgbWlncmF0ZWQgZnJvbSBsdGNvbmZpZy5pbi4KCShBQ19ERVBMSUJTX0NIRUNLX01FVEhPRCk6IGRpdHRvLgoJKiBsdGNvbmZpZy5pbiAocmVsb2FkX2ZsYWcpOiBtb3ZlZCB0byBsaWJ0b29sLm00LgoJKGRlcGxic19jaGVja19tZXRob2QpOiBkaXR0by4KCjE5OTktMTAtMDcgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlidG9vbC5tNCAoQUNfUEFUSF9QUk9HX1ZFUlNJT05fR1JFUCk6IHJlbW92ZWQgaW4gZmF2b3VyIG9mIHRoZQoJbW9yZSBnZW5lcmFsIEFDX1BBVEhfUFJPR19HUkVQX09VVFBVVC4KCShBQ19QQVRIX1RPT0xfVkVSU0lPTl9HUkVQKTogcmVtb3ZlZCBpbiBmYXZvdXIgb2YgdGhlIG1vcmUgZ2VuZXJhbAoJQUNfUEFUSF9UT09MX0dSRVBfT1VUUFVULgoJKEFDX1BST0dfTElCVE9PTCk6ICBTZWFyY2ggZm9yIGEgd29ya2luZyBmaW5kIHByb2dyYW0gaW4gdGhlCgl1c2VyJ3MgUEFUSCB1c2luZyB0aGUgbmV3IG1hY3Jvcy4KCjE5OTktMTAtMDYgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogTkVXUzogdXBkdGFlZC4KICAgICAgICAqIGx0Y29uZmlnLmluOiBBY2NlcHQgb3NmNS4KICAgICAgICBSZXBvcnRlZCBieSBTYXNjaGEgU2NodW1hbm4gPHNhc2NoYUBzY2h1bWFubi5jeD4KCjE5OTktMTAtMDQgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRtYWluLmluICgtbm8taW5zdGFsbCk6ICBUaGlzIGRvZXNuJ3Qgd29yayBvbiB3aW4zMiBzaW5jZQoJdGhlIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXMgaXMgbm90IGVuY29kZWQgaW4gdGhlIGJpbmFyeSwKCWFuZCBkbGxzIG5vdCBpbiAkUEFUSCB3b24ndCBiZSBmb3VuZC4gIEZhbGwgYmFjayB0byAtbm8tZmFzdC1pbnN0YWxsCglpbnN0ZWFkLgoKCSogbHRtYWluLmluICgtbm8tZmFzdC1pbnN0YWxsKTogIFdyYXBwZXIgc2NyaXB0IHVzZWQgdG8gYWRkIHRoZQoJZXhlZXh0IG9uIGFnYWluIHdoZW4gbmFtaW5nIHRoZSB3cmFwcGVkIGV4ZWN1dGFibGUuCgoxOTk5LTEwLTAzICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluOiAgU2V0ICRGSUxFIHRvIEBGSUxFQCBmb3Igc3Vic3RpdHV0aW9uIHdpdGgKCXRoZSB2YWx1ZSBmb3VuZCBpbiBsaWJ0b29sLm00IGF0IGNvbmZpZ3VyZSB0aW1lLgoJKiBsaWJ0b29sLm00IChBQ19QQVRIX1RPT0xfR1JFUF9WRVJTSU9OKTogIE5ldyBtYWNybywgY29tYmluZXMKCUFDX1BBVEhfUFJPRyBhbmQgQUNfQ0hFQ0tfVE9PTCB3aXRoIGEgdGVzdCB3aGljaCBncmVwcyB0aGUKCW91dHB1dCBvZiAkYWNfZGlyLyR7YWNfcHJlZml4fTx0b29sPiAtLXZlcnNpb24gZm9yIGEKCWdpdmVuIHJlZ2V4LgoJKEFDX1BBVEhfUFJPR19HUkVQX1ZFUlNJT04pOiAgTmV3IG1hY3JvIHVzZWQgYnkgdGhlIGFib3ZlLgoJKEFDX0xJQlRPT0xfU0VUVVApOiBVc2UgdGhlIG5ldyBtYWNyb3MgdG8gc2VhcmNoIHRoZSBQQVRICglbc3RhcnRpbmcgYXQgL3Vzci9iaW5dIGZvciBhIGZpbGUgcHJvZ3JhbSB3aGljaCBhY2NlcHRzCgktLXZlcnNpb24gYW5kIGhhcyAiZmlsZSIgaW4gaXRzIC0tdmVyc2lvbiBvdXRwdXQuCgoxOTk5LTEwLTAzICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogTkVXUzogbmV3IC1uby1pbnN0YWxsIGZsYWcKCSogY29uZmlndXJlLmluOiBmaXggdHlwbwoJKiBkb2MvbGlidG9vbC50ZXhpKExpbmsgbW9kZSk6IGRvY3VtZW50IC1uby1pbnN0YWxsIGZsYWcsCgkgIGNvcnJlY3QgLW5vLWZhc3QtaW5zdGFsbCBkb2NzCgkqIGxpYnRvb2wubTQ6IGNoZWNrIGZvciAiZmlsZSIgY29tbWFuZAoJKiBsdGNvbmZpZy5pbjogZG9uJ3QgaGFyZGNvZGUgL3Vzci9iaW4vZmlsZSwgcmVtb3ZlIHNlY29uZAoJICBkZWZpbml0aW9uIG9mIHN5c3Y1LCByZXBsYWNlIGxpbmtvcHRzIC0+IGxpbmtlcl9mbGFncwoJKiBsdG1haW4uaW46IGFkZCBuZXcgLW5vLWluc3RhbGwgZmxhZywgcHJpbnQgaGVscCBmb3IgLW5vLWluc3RhbGwKCSAgYW5kIC1uby1mYXN0LWluc3RhbGwgZmxhZ3MKCjE5OTktMTAtMDMgIE9sbHkgQmV0dHMgPG9sbHlAbXVzY2F0LmNvLnVrPgoKCSogbHRtYWluLmluOiBhbHdheXMgY3JlYXRlIG91dHB1dF9vYmpkaXIKCjE5OTktMTAtMDMgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogbGlibHRkbC9NYWtlZmlsZS5hbTogZG9uJ3QgcHJlc2VydmUgZmlsZSBhdHRyaWJ1dGVzIHdoZW4KCSAgaW5zdGFsbGluZyB0aGUgbGlibHRkbCBzb3VyY2VzCgoxOTk5LTEwLTAxICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfT1VUUFVUX0NPTU1BTkRTKTogZ2VuZXJhdGUgbHRtYWluLnNoCgkqIE1ha2VmaWxlLmFtIChsdG1haW4uc2ggbHRjb25maWcpOiByZW1vdmVkLiAgQXV0b21ha2UgaW5zZXJ0cyB0aGUKCXJ1bGVzIHRvIGF1dG9tYXRpY2FsbHkgY2FsbCBjb25maWcuc3RhdHVzLgoKCSogbGlidG9vbC5tNDogYmUgc3VyZSB0byBBQ19TVUJTVCB2YWx1ZXMgbm8gbG9uZ2VyIHRlc3RlZCBpbgoJbHRjb25maWcuaW4uCgkqIGx0Y29uZmlnLmluOiByZXBsYWNlZCBzZXZlcmFsIG9mIHRoZSBzaW1wbGUgZmVhdHVyZSB0ZXN0cyB3aXRoCglzdWJzdGl0dXRpb25zIGZyb20gY29uZmlnLnN0YXR1cy4KCSogTWFrZWZpbGUuYW0gKGx0Y29uZmlnKTogZ2VuZXJhdGUgbHRjb25maWcgd2l0aCBjb25maWcuc3RhdHVzLgoJKiBjb25maWd1cmUuaW4gKEFDX09VVFBVVCk6IGdlbmVyYXRlIGx0Y29uZmlnIHdpdGggY29uZmlnLnN0YXR1cy4KCjE5OTktMDktMzAgIERvbmFsZCBBbmRlcnNvbiAgPGRkYUB3b3JsZC5zdGQuY29tPgoKCSogbHRjb25maWcuaW4gKHNjbzMuMnY1KTogdXNlIHBhc3NfYWxsIGRlcGxpYnNfY2hlY2tfbWV0aG9kCglmb3IgU0NPMy4yLgoKMTk5OS0wOS0yOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAod2hvbGUtYXJjaGl2ZS1mbGFnLXNwZWMpOiAgSSBoYWQgYmVlbgoJd29uZGVyaW5nIHdoeSBteSBmaWxlIHN5c3RlbSB3YXMgZmlsbGluZyB1cCB3aXRoIGVtcHR5CglmaWxlcyBuYW1lZCBgNzEnLi4uIHNlZW1zIEkgZm9yZ290IHRvIGhvbGQgaW4gdGhlCglzaGlmdCBrZXkgd2hlbiByZWRpcmVjdGluZyBzdGRlcnIsIDI+JjEuICBEb2ghCgoxOTk5LTA5LTI5ICBWYWRpbSAgPHZhZGltQG9sbHkucnU+CgoJKiBsdGNvbmZpZy5pbiAoc3lzdik6ICBNb3JlIFVXNyBzdXBwb3J0LgoKMTk5OS0wOS0yOCAgQWxiZXJ0IENoZW5nICA8YWNoZW5nQG5jc2EudWl1Yy5lZHU+CgoJKiBsdG1haW4uaW4gKHNobGlicGF0aF92YXIpOiBlbnN1cmUgdGhlIHZhcmlhYmxlIGlzIG5vbi1lbXB0eSBiZWZvcmUKCWV4cG9ydGluZyBpdC4KCjE5OTktMDktMjcgIE1hbmZyZWQgV2VpY2hlbCAgPHdlaWNoZWxAZ2xvYmFsLm5hY2FtYXIuZGU+CgoJKiBsdGNvbmZpZy5pbiAoc3lzdjUpOiBBZGRlZCBzdXBwb3J0IHJlcXVpcmVkIGZvciBzaGFyZWQKCWxpYnJhcnkgbGlua2luZyBvbiBTQ08gVVc3LgoKMTk5OS0wOS0yMiAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAod2hvbGUtYXJjaGl2ZS1mbGFnLXNwZWMpOiB0ZXN0IHdoZXRoZXIgdGhlCgl2ZXJzaW9uIG9mIEdOVSBsZCBiZWluZyB1c2VkIHVuZGVyc3RhbmRzIC0td2hvbGUtYXJjaGl2ZQoJYmVmb3JlIHVzaW5nIGl0LgoKMTk5OS0wOS0xOSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIGx0bWFpbi5pbjogZG9uJ3QgaWdub3JlIGNvbnZlbmllbmNlIGxpYnJhcmllcyBmb3Igb2JqZWN0cy9hcmNoaXZlcwoJICAodGVtcG9yYXJ5IGhhY2spCgoxOTk5LTA5LTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChDRFBBVEgpOiBTZXQgdG8gYDonIGluc3RlYWQgb2YgZW1wdHkuCgkqIGx0bWFpbi5pbiAoQ0RQQVRIKTogTGlrZXdpc2UuCglSZXBvcnRlZCBieSBHcmVnIE1jR2FyeSA8Z2ttQGVuZy5hc2NlbmQuY29tPgoKMTk5OS0wOC0yNCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAobHRkbGwuYywgaW1wZ2VuLmMpOiBQcmV2ZW50IHRoZSBzaGVsbCBmcm9tCglleHBhbmRpbmcgdmFyaWFibGVzICYgYmFja3NsYXNoIGVzY2FwZXMgd2hlbiB3cml0aW5nIHRoZXNlCglmaWxlcyB0byB0aGUgbGlidG9vbCBzY3JpcHQuCgoxOTk5LTA4LTI0ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogTkVXUzogbWVudGlvbiBmaXhlcwoJKiBkb2MvUExBVEZPUk1TOiBHTlUvSHVyZCB1cGRhdGUKCSogZGVwZGVtbzogbWFrZSB1c2Ugb2YgdmFyaWFibGVzCgkqIGx0Y29uZmlnLmluOiB1c2UgQ0MgLUUgd2hlbiBjaGVja2luZyBmb3IgRUxGIHN1cHBvcnQKCSAgb24gTmV0QlNEIChyZXBvcnRlZCBieSBUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+KSwKCSAgcmVwbGFjZSBhbGwgb2NjdXJlbmNlcyBvZiAnbGlua29wdHMnIHdpdGggJ2xpbmtlcl9mbGFncycKCSogbHRtYWluLmluOiBtb3ZlIGx0ZGxsLmMgYW5kIGltcGdlbi5jIHRvIGx0Y29uZmlnLmluIGFuZAoJICBvbmx5IGFkZCB0aGVtIHRvIHRoZSBsaWJ0b29sIHNjcmlwdCBpZiBpdCdzIG5lY2Vzc2FyeQoKMTk5OS0wOC0yNCAgQm95ZCBHZXJiZXIgIDxnZXJiZXJiQHplbmV6LmNvbT4KCgkqIGx0Y29uZmlnLmluOiBhZGQgc3VwcG9ydCBmb3IgVW5peFdhcmUgNy5YLlgKCSogZG9jL1BMQVRGT1JNUzogYWRkIG5ldyBwbGF0Zm9ybXMKCjE5OTktMDgtMjQgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogZG9jL2xpYnRvb2wudGV4aTogZG9jdW1lbnQgdXNlIG9mIG5vaW5zdF9MVExJQlJBUklFUyBmb3IKCSAgY29udmVuaWVuY2UgbGlicmFyaWVzCgoJKiBsdGNvbmZpZy5pbjogY2hlY2sgZm9yIGZyZWVic2RlbGYzLCBub3QganVzdCBmcmVlYnNkMy4KCVNldCBoYXJkY29kZV9pbnRvX2xpYnM9eWVzIGZvciBGcmVlQlNEIDMuMCBhbmQgMy4xCgoJKiBsdG1haW4uaW46IGVuYWJsZSB3b3JrYXJvdW5kIGZvciBmcmVlYnNkZWxmMy4wCgoxOTk5LTA4LTI0ICBCZXJ0IERyaWVodWlzICA8YmVydF9kcmllaHVpc0BubC5jb21wdXdhcmUuY29tPgoKCSogbHRjb25maWcuaW46IGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyBpcyAtcmR5bmFtaWMgb24gQlNEL09TCgoxOTk5LTA4LTA3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYmx0ZGwvQ09QWUlORy5MSUI6IFVwZGF0ZSB0byB2ZXJzaW9uIDIuMS4KCSogbGlibHRkbC9sdGRsLmgsIGxpYmx0ZGwvbHRkbC5jOiBVcGRhdGUgRlNGIGFkZHJlc3MuCgoxOTk5LTA4LTAzICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYnRvb2wubTQgKG1pbmd3KiwgQUNfUFJPR19MRCk6IHVzZSB0ciBmb3IgY2FycmlhZ2UgcmV0dXJuCglzdHJpcHBpbmcuCgkqIGx0Y29uZmlnLmluOiBkaXR0by4KCUZyb20gT2xseSBCZXR0cyA8b2xseUBtdXNjYXQuY28udWs+CgoxOTk5LTA4LTAyICBPbGx5IEJldHRzICA8b2xseUBtdXNjYXQuY28udWs+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChDb21waWxlIG1vZGUpOiB0eXBvIGNvcnJlY3Rpb24uCgkoTGluayBtb2RlKTogYW5kIGFub3RoZXIuCgkoUmVsZWFzZSBudW1iZXJzKTogIGFuZCBhbm90aGVyLgoJKERpc3RyaWJ1dGluZyBsaWJsdGRsKTogYW5kIGFub3RoZXIuCgkoVGVzdCBkZXNjcmlwdGlvbnMpOiBhbmQgYW5vdGhlci4KCShsaWJ0b29sIHNjcmlwdCBjb250ZW50cyk6IGFuZCBvbmUgbW9yZS4KCgkqIGxpYnRvb2wubTQgKEFDX1BST0dfTEQpOiBzdHJpcCBjYXJyaWFnZSByZXR1cm5zIGZyb20gdGhlCglvdXRwdXQgb2YgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQuCgkqIGx0Y29uZmlnLmluOiBkaXR0by4KCjE5OTktMDctMzAgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogbHRtYWluLmluOiBFbnN1cmUgdGhhdCBnY2Mgb24gSFBzVVggdXNlcyAtZlBJQywgb3IgZWxzZQoJaW5pdGlhbGlzZWQgc3RydWN0dXJlcyBhcmUgc29tZXRpbWVzIGVtaXR0ZWQgaW4gdGhlIGNvZGUgc2VjdGlvbi4KCjE5OTktMDctMzAgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogbHRjb25maWcuaW46ICBSZWFkIGxpbmUgYXQgYSB0aW1lIHRvIGF2b2lkIHRva2VuaXNhdGlvbiBieQoJc2hlbGwuCgoxOTk5LTA3LTI5ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0bWFpbi5pbjogRml4IGNyZWF0aW9uIG9mIHJlbGF0aXZlIGxpbmtzIHRvIG9iamVjdCBmaWxlcyBpbgoJc3ViLWRpcnMuCgoxOTk5LTA3LTI5ICBPbGx5IEJldHRzICA8b2xseUBtdXNjYXQuY28udWs+CgoJKiBsdGNvbmZpZy5pbihjeWd3aW4gbWluZ3czMiwgYXJjaGl2ZV9leHBzeW1fY21kcyk6IE9ubHkgY29tcGlsZQoJYW5kIGxpbmsgbHRkbGwuYyBpZiB0aGUgbGlidG9vbC5tNCBtYWNyb3MgZGlzY292ZXJlZCB0aGF0IGl0IGlzCglyZXF1aXJlZC4KCjE5OTktMDctMjYgIE9sbHkgQmV0dHMgIDxvbGx5QG11c2NhdC5jby51az4KCgkqIGxpYnRvb2wubTQoY3lnd2luIG1pbmd3MzIsIEFDX0xJQlRPT0xfU0VUVVApOiBPb3BzLiAgRml4IHNvbWUKCXR5cG9zIG1hZGUgYnkgRXZpbCBHYXJ5IHdoaWxlIChtaXMpYXBwbHlpbmcgbXkgcGF0Y2ggOi0pLgoKCSogbGlidG9vbC5tNChjeWd3aW4gbWluZ3czMiwgQUNfTElCVE9PTF9TRVRVUCk6ICBPbiBzZWNvbmQKCXRob3VnaHRzLCBvbmx5IHByb2JlIGZvciAtbWRsbCB2cyAtZGxsIG9uIG1pbmd3LCBhbmQgcmV2ZXJ0IHRvCgl0aGUgb2xkIGAtV2wsLS1kbGwgLW5vc3RhcnRmaWxlcycgb24gY3lnd2luLgoKMTk5OS0wNy0yNCAgRXJleiBaYWRvayAgPGV6a0Bjcy5jb2x1bWJpYS5lZHU+CgoJKiBkb2MvUExBVEZPUk1TIChpKjg2LSpvcGVuYnNkMi41KTogIE5ldyBwbGF0Zm9ybS4KCVNsaWdodCByZW9yZGVyaW5nIG9mIG90aGVyIGJzZCBlbnRyaWVzLgoKMTk5OS0wNy0yNCAgT2xseSBCZXR0cyAgPG9sbHlAbXVzY2F0LmNvLnVrPgoKCSogTkVXUzogTm90ZSBuZXcgdXNlciB2aXNpYmxlIGNoYW5nZXMuCgkqIGxpYnRvb2wubTQgKG1pbmd3MzIsIEFDX0xJQlRPT0xfU0VUVVApOiBwcm9iZSBmb3IgLW1kbGwgdnMgLWRsbAoJdW5kZXIgY3lnd2luL21pbmd3LgoJcHJvYmUgd2hldGhlciB0aGUgY3lnd2luL21pbmd3IGxpYnJhcnkgc3VwcGxpZXMgYSBzdHViIERsbE1haW4KCShidXQgdGhpcyBpbmZvcm1hdGlvbiBpc24ndCB5ZXQgdXNlZCkuCgkqIGx0Y29uZmlnLmluIChtaW5ndzMyLCBleHRyYWN0X2V4cHN5bXNfY21kcyk6IGlmIEhPU1RfQ0MgaXMgc2V0LAoJdXNlIHRoYXQgdG8gYnVpbGQgaW1wZ2VuIHNvIHdlIGNhbiB1c2UgaXQgd2hlbiBjcm9zcy1jb21waWxpbmcuCgl1c2UgY29ycmVjdCBlbnRyeSBwb2ludHMgZm9yIG1pbmd3IHNvIHN0YXRpYyBDKysgY29uc3RydWN0b3JzIGdldAoJY2FsbGVkIGZvciBjb2RlIGluIHRoZSBETEwuCgkqIGx0bWFpbi5pbiAoaW1wZ2VuLmMpOiBkZWZpbmUgT19CSU5BUlkgdG8gMCBpZiBpdCBpcyBub3QgaW4gdGhlCglzeXN0ZW0gaGVhZGVycy4KCjE5OTktMDctMjQgIEJlcnQgRHJpZWh1aXMgPGJlcnRfZHJpZWh1aXNAY29tcHV3YXJlLmNvbT4KCgkqIGx0Y29uZmlnLmluOiAgVXBkYXRlZCBic2RpNCBzb25hbWUgc3BlY3MgdG8gYmUgbW9yZSBsaWtlCglsaW51eCBhcyBkaXNjdXNzZWQgb24gdGhlIGJzZGkgbWFpbGluZyBsaXN0LgoKMTk5OS0wNy0yMCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBjb25maWd1cmUuaW4gKEFDX1BST0dfUkFOTElCKTogIE5vIGxvbmdlciByZXF1aXJlZCBhcyB3ZSBub3cgdXNlCglBQ19DSEVDS19UT09MIGluIEFDX0xJQlRPT0xfU0VUVVAuCgkqIGxpYnRvb2wubTQgKEFDX1BST0dfTElCVE9PTCk6ICBQYXNzIHRoZSAkYnVpbGQgdmFyaWFibGUgdG8KCWx0Y29uZmlnLgoJKEFDX1BST0dfUkFOTElCKTogcmVwbGFjZWQgd2l0aCBBQ19DSEVDS19UT09MLgoJKiBsdGNvbmZpZy5pbiAoYnVpbGQpOiBuZXcgdmFyaWFibGUgdG8gaG9sZCB0aGUgYnVpbGQgdHJpcGxldAoJd2hpY2ggaXMgbm93IGNoZWNrZWQgZm9yIHVubGVzcyAtLW5vLXZlcmlmeSBpcyBzcGVjaWZpZWQuCgkoLS1idWlsZCk6IG5ldyBhcmd1bWVudCB0byBzZXQgdGhlIGJ1aWxkIHRyaXBsZXQuCgkocmFubGliKTogUHJlZmVyICR7aG9zdF9hbGlhc30tcmFubGliWy5leGVdIGlmICRidWlsZCBpcyBkaWZmZXJlbnQKCXRvICRob3N0LgoJKiBkb2MvbGlidG9vbC50ZXhpIChJbnZva2luZyBsdGNvbmZpZyk6IERvY3VtZW50IC0tYnVpbGQgb3B0aW9uLgoJKiBORVdTOiBOb3RlIC0tYnVpbGQgb3B0aW9uLgoKMTk5OS0wNy0xOSAgRXJleiBaYWRvayAgPGV6a0Bjcy5jb2x1bWJpYS5lZHU+CgoJKiBkb2MvUExBVEZPUk1TOiBVcGRhdGVkIG1vc3RseSAqYnNkIHBsYXRmb3Jtcy4KCjE5OTktMDctMTkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogZG9jL2xpYnRvb2wudGV4aSAoUG9ydGluZyBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyk6IFR5cG9zCglSZXBvcnRlZCBieSBQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQGh1bmdyeS5jb20+CgoxOTk5LTA3LTE3ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogTkVXUywgVE9ETzogdXBkYXRlZCAocGljIGZsYWdzKQoJKiBsaWJ0b29sLm00IChBQ19QUk9HX0xJQlRPT0wpOiBhZGRlZCAtLXdpdGgtcGljIGZsYWcKCSogbHRjb25maWcuaW46IG5ldyBwaWNfbW9kZSB2YXJpYWJsZSBhbmQgLS1wcmVmZXJbLW5vbl0tcGljIGZsYWdzLAoJICBmaXhlZCB0aGUgc3RyaXAgY2hlY2sgKHJlcG9ydGVkIGJ5IEtlaXRoIEJvc3RpYyA8Ym9zdGljQGJvc3RpYy5jb20+KQoJKiBsdG1haW4uaW4gKGNvbXBpbGUgbW9kZSk6IGJ1aWxkIG9ubHkgUElDL25vbi1QSUMgY29kZSBkZXBlbmRpbmcKCSAgb24gcGljX21vZGUKCSogbGlibHRkbC9SRUFETUU6IGRvY3VtZW50IHRoZSBzdXBwb3J0ZWQgZGxvcGVuIGludGVyZmFjZXMKCSogZG9jL2xpYnRvb2wudGV4aSAodGVzdHMpOiBkb2N1bWVudGVkIG5ldyB0ZXN0cwoJKiB0ZXN0cy9NYWtlZmlsZS5hbTogYWRkZWQgbmV3IHRlc3RzCgkqIHRlc3RzL2RlbW8tcGljLnRlc3Q6IG5ldyB0ZXN0IHRvIHRlc3QgLS13aXRoLXBpYwoJKiB0ZXN0cy9kZW1vLW5vcGljLnRlc3Q6IG5ldyB0ZXN0IHRvIHRlc3QgLS13aXRob3V0LXBpYwoJKiB0ZXN0cy9idWlsZC1yZWxpbmsyLnRlc3Q6IHZhcmlhbnQgb2YgYnVpbGQtcmVsaW5rLnRlc3QgdGhhdAoJICB1c2VzIGRlcGRlbW8KCjE5OTktMDctMDkgIE9sbHkgQmV0dHMgIDxvbGx5QG11c2NhdC5jby51az4KCgkqIGRvYy9saWJ0b29sLnRleGkgKEMrKyBMaWJyYXJpZXMpOiAgZml4ZWQgYSB0eXBvLgoKMTk5OS0wNy0wNiAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBSRUFETUUtYWxwaGE6ICBpbXByb3ZlZCB0aGUgcmVsZWFzZSBpbnN0cnVjdGlvbnMgdG8gbWVudGlvbgoJYWN0dWFsIGxpc3QgYWRkcmVzc2VzIGZvciBhbm5vdW5jZW1lbnRzLCBhbmQgdXJscyBmb3IgdXBsb2FkCglsb2NhdGlvbnMuCgoxOTk5LTA3LTAzICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogZG9jL1BMQVRGT1JNUzogMS4zYiBwYXNzZXMgYWxsIHRlc3RzIG9uIGN5Z3dpbgoKMTk5OS0wNy0wMyAgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIGx0Y29uZmlnLmluOiBmaW5pc2hfY21kcyBmb3IgRnJlZUJTRCByZW1vdmVkCgkqIGRlcGRlbW8vbDMvTWFrZWZpbGUuYW06IGluc3RhbGwgbGlibDMubGEgaW50byBhbiBleHRyYSBkaXJlY3RvcnkKCjE5OTktMDctMDIgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogY29uZmlndXJlLmluOiBidW1wZWQgdmVyc2lvbiB0byAxLjNjLgoKCUdOVSBsaWJ0b29sIDEuM2Igd2FzIHJlbGVhc2VkLgoKCSogTkVXUzogaW5zZXJ0ZWQgdG9kYXlzIGRhdGUuCgoxOTk5LTA3LTAyICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGRvYy9QTEFURk9STVM6IFRlc3RlZCBvbiBhcyBtYW55IHBsYXRmb3JtcyBhcyBwb3NzaWJsZSBmb3IgbWUuCgoxOTk5LTA3LTAxICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogTkVXUzogdXBkYXRlZAoJKiBkb2MvUExBVEZPUk1TOiB1cGRhdGVkCgkqIGNoYW5nZWQgbXkgZW1haWwgYWRkcmVzcwoKMTk5OS0wNi0zMCAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIGRlbW8vZm9vLmg6IHVzZSBMVF9QQVJBTVMgaW5zdGVhZCBvZiBMVERMX1BBUkFNUyAodGhpcyBpcyBub3QgbGlibHRkbCkKCSogdGVzdHMvYnVpbGQtcmVsaW5rLnRlc3Q6IGFsc28gY2hlY2sgZm9yIGhhcmRjb2RlX2ludG9fbGlicyA9IHllcywKCSAgaWYgc2V0LCB3ZSBuZWVkIHRvIHJlbGluayBhdCBpbnN0YWxsLXRpbWUKCjE5OTktMDYtMjkgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiBtZW50aW9uIC1uby1mYXN0LWluc3RhbGwsIHJlbmFtZSBkdW1teSB0byBmb3JjZQoJKiBkb2MvUExBVEZPUk1TOiAxLjNiIHBhc3NlcyBhbGwgdGVzdHMgb24gR05VL0xpbnV4LAoJICBGcmVlQlNEICgyLjIuNiBhbmQgMy4xKQoJKiBkb2MvbGlidG9vbC50ZXhpOiBpdCdzIHBvc3NpYmxlIHRvIGxpbmsgbGlidG9vbCBsaWJyYXJpZXMKCSAgdXNpbmcgLUwgYW5kIC1sLCBiZXR0ZXIgZG9jdW1lbnRhdGlvbiBvZiB1bmluc3RhbGwgYW5kIGNsZWFuIG1vZGUsCgkgIHJlbmFtZSBkdW1teSB0byBmb3JjZSwgZG9jdW1lbnRlZCAtbm8tZmFzdC1pbnN0YWxsLAoJICBBQ19MSUJMVERMXyogbXVzdCBiZSBjYWxsZWQgYmVmb3JlIEFDX1BST0dfTElCVE9PTCwKCSAgZG9jdW1lbnRlZCBoYXJkY29kZV9pbnRvX2xpYnMgYW5kIHN0cmlwbGliL29sZF9zdHJpcGxpYiwKCSogbHRjb25maWcuaW46IHNlYXJjaCBmb3Igc3RyaXAgcHJvZ3JhbSwgYWRkZWQgaGFyZGNvZGVfaW50b19saWJzCgkgIGFuZCBzdHJpcGxpYi9vbGRfc3RyaXBsaWIgdmFyaWFibGVzLCBzZXQgc3RyaXAgY29tbWFuZHMgZm9yIEdOVSBzdHJpcCwKCSAgb24gRnJlZUJTRCA+PSAzLjIgc2V0IGhhcmRjb2RlX2ludG9fbGlicyB0byB5ZXMsCgkgIGZhc3QtaW5zdGFsbCBtb2RlIGRvZXNuJ3Qgd29yayBpZiBoYXJkY29kZV9pbnRvX2xpYnMgPSB5ZXMKCSogbHRtYWluLmluOiByZWltcGxlbWVudGVkIGhhcmRjb2RpbmcgaW50byBsaWJyYXJpZXM6CgkgIG5ldyByZWxpbmsgbW9kZSwgcHJlc2VydmUgYWxsIGxpYnRvb2wgYXJncywgcmVsaW5rIGxpYnJhcmllcwoJICB3aGVuIGluc3RhbGxpbmcgaWYgbmVjZXNzYXJ5CgkgIGFkZGVkIC1uby1mYXN0LWluc3RhbGwgZmxhZywgcmVtb3ZlZCB1bm5lY2Vzc2FyeSBgZGxuYW1lJwoJICBpbml0aWFsaXphdGlvbiwgdXNlIHN0cmlwbGliL29sZF9zdHJpcGxpYiBmb3Igc3RyaXBwaW5nIGxpYnJhcmllcywKCSAgZGxuYW1lIGlzIGFsd2F5cyBzb25hbWUgb3IgaW4gbGlicmFyeV9uYW1lcyBzbyB3ZSBkb24ndCBuZWVkCgkgIHRvIGhhbmRsZSBkaWZmZXJlbnQgZmlsZSBuYW1lcwoKMTk5OS0wNi0yOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAoZnJlZWJzZCosIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCk6IFNldCB0byB5ZXMKCXVwIHRvIHJlbGVhc2UgMy4xLCBhbmQgdG8gbm8gZnJvbSAzLjIgb24uCglSZXBvcnRlZCBieSBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKMTk5OS0wNi0yOSAgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4sIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGZyZWVic2QqLCBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgpOiBTZXQgdG8KCXllczsgdGVzdGVkIG9uIDMuMS1FTEYgYnkgUGF2ZWwgYW5kIG9uIDIuMi42IGJ5IEFsZXhhbmRyZS4KCjE5OTktMDYtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGxpbnV4LWdudSosIGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogVXNlIHBhc3NfYWxsIG9uCglhbHBoYSwgeDg2IGFuZCBzcGFyYyBhcmNoaXRlY3R1cmVzIGJ5IG5vdywgcmV2ZXJ0aW5nIHRvIGZpbGVfbWFnaWMKCWF0IGxlYXN0IG9uIEFSTSwgd2hlcmUgaXQgYnJlYWtzLgoKMTk5OS0wNi0yMyAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIE5FV1M6IHVwZGF0ZWQKCSogUkVBRE1FOiBhZGRlZCBHTlUgSHVyZCB0byB0aGUgc3VwcG9ydGVkIHBsYXRmb3JtcwoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCBgLWRscHJlb3BlbiBkdW1teScKCSAgaW5zdGVhZCBvZiBgLWRsb3BlbiBkdW1teScKCSogbGlibHRkbC9sdGRsLmMgKHN0cmNocik6IGZpeGVkIHR5cG8gKG1pc3Npbmcgc3RhcikKCjE5OTktMDYtMjMgIFN0ZXBoYW4gS3Vsb3cgPGNvb2xvQGl0bS5tdS1sdWViZWNrLmRlPgoKCSogbGlibHRkbC9sdGRsLmMgKHN0cnJjaHIpOiBmaXhlZCB0eXBvIChtaXNzaW5nIHN0YXIpCgkqIGxpYmx0ZGwvbHRkbC5jICh0cmltKTogdXNlIGBjb25zdCcgdG8gc2lsZW5jZSAtV3dyaXRlLXN0cmluZ3MKCjE5OTktMDYtMjMgIE9sbHkgQmV0dHMgIDxvbGx5QG11c2NhdC5jby51az4KCgkqIGx0bWFpbi5pbiAobHRkbGwuYyk6IFN1cHBvcnQgZm9yIGNyb3NzY29tcGlsaW5nIGZyb20gbGludXggdG8KCW1pbmd3MzIuCgoxOTk5LTA2LTIzICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIGV4cG9ydF9zeW1ib2xzX2NtZHMpOiBJZiB0aGVyZSBpcyBhbHJlYWR5CglhbiBleHRyYWN0ZWQgYW5kIGNvbXBpbGVkIGx0ZGxsLmMsIHRoZW4gZG9uJ3QgZGVsZXRlLCByZWV4dHJhY3QKCWFuZCByZWNvbXBpbGUuCgkoY3lnd2luLCBhcmNoaXZlX2V4cHN5bV9jbWRzKTogTWFrZSBzdXJlIHRoZSBsdGRsbCBzb3VyY2UgaGFzIGJlZW4KCWV4dHJhY3RlZCBhbmQgY29tcGlsZWQgYmVmb3JlIHJlZmVyZW5jaW5nIHRoZSBvYmplY3QsIHNpbmNlIHRoZXJlCglhcmUgcGF0aHMgdGhyb3VnaCB0aGUgY29kZSB3aGljaCBydW4gYXJjaGl2ZV9leHBzeW1fY21kcyB3aXRob3V0CglydW5uaW5nIGV4cG9ydF9zeW1ib2xzX2NtZHMuCgoxOTk5LTA2LTIwICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluOiAgbW92ZWQgdGhlIHRlc3QgZm9yIE5NIGFmdGVyIHRoZSB0ZXN0IGZvcgoJbm9fYnVpbHRpbl9mbGFnLgoKMTk5OS0wNi0yMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbjogVXNlIHNlZCAnJHEnIGluc3RlYWQgb2Ygc2VkICIiIGZvciBjb3B5aW5nIGx0bWFpbiwKCWp1c3QgaW4gY2FzZSBzb21lIHNlZCBkb2VzIG5vdCBzdXBwb3J0IGFuIGVtcHR5IGNvbW1hbmQuCgoJKiBsdGNvbmZpZy5pbiAobGlua19zdGF0aWNfZmxhZywgYWNfY3ZfcHJvZ19jY19zdGF0aWMpOiBVc2UgdGhlCglsYXR0ZXIgaW4gdGhlIHRlc3QuCgoxOTk5LTA2LTE4ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbHRjb25maWcuaW4gKGJzZGk0LCBkZXBsaWJzX2NoZWNrX21ldGhvZCk6IHVzZSBhIGxlc3MgcmVzdHJpY3RpdmUKCSAgcmVnZXggKHJlcG9ydGVkIGJ5IENocmlzIFAuIFJvc3MgPGNyb3NzQGVuZy51cy51dS5uZXQ+KQoJKiBsdG1haW4uaW46IHN1cHBvcnQgYC1kbG9wZW4gZHVtbXknLCBkZWZpbmUgbHRfcHJlbG9hZGVkX3N5bWJvbHMKCSAgaWYgZGxzZWxmICE9IG5vCgkqIGRvYy9saWJ0b29sLnRleGkgKENvbXBpbGUgYW5kIExpbmsgbW9kZSk6IGRvY3VtZW50IGl0LAoJICBkb2N1bWVudGVkIHRoZSAtV2MsIC1XbCBmbGFncywgbGlidG9vbCBkb2VzIGFsc28gc3VwcG9ydCBub24gQwoJICBzb3VyY2UgY29kZQoKMTk5OS0wNi0xOCAgVGV1biBCdXJnZXJzICA8YnVyZ2Vyc0BlY24ubmw+CgoJKiBsdGNvbmZpZy5pbjogQ1IvTEYgZml4IGZvciBicm9rZW4gREpHUFAgYmFzaAoJKiBsdG1haW4uaW46IENSL0xGIGZpeCBmb3IgREpHUFAKCjE5OTktMDYtMTggIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRtYWluLmluIChvdXRwdXRuYW1lKTogV2hlbiBnZW5lcmF0aW5nIHRoZSBleGVjdXRhYmxlIHdyYXBwZXIKCXNjcmlwdCwgJG91dHB1dG5hbWUgYWxyZWFkeSBoYXMgdGhlICRleGVleHQgc3VmZml4LCBzbyB3ZSBuZWVkbid0CglhZGQgaXQgYWdhaW4uCgoxOTk5LTA2LTE2ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluIChhY19jdl9saWJfZGxfZGxvcGVuKTogbWlzc2luZyAieCIgaW4gdGVzdAoJY29tcGFyaXNvbiBjb3JyZWN0ZWQuCgoJKiBsaWJsdGRsL2x0ZGwuYyAoc3lzX3dsbF9vcGVuKTogbGlibHRkbCBleHBlY3RzIHRoaXMgZnVuY3Rpb24gdG8KCWZhaWwgaWYgaXQgaXMgdW5hYmxlIHRvIHBoeXNpY2FsbHkgbG9hZCB0aGUgbGlicmFyeS4gIFNhZGx5LAoJTG9hZExpYnJhcnkgd2lsbCBzZWFyY2ggdGhlIGxvYWRlZCBsaWJyYXJpZXMgZm9yIGEgbWF0Y2ggYW5kCglyZXR1cm4gb25lIG9mIHRoZW0gaWYgdGhlIHBhdGggc2VhcmNoIGxvYWQgZmFpbHMuICBTaW11bGF0ZSBhCglmYWlsdXJlIGluIHRoaXMgY2FzZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvdGhlciBBUElzLgoJQWxzbywgTG9hZExpYnJhcnkgdGFrZXMgdGhlIGxpYmVydHkgb2YgYWRkaW5nIGAuZGxsJyB0byBsaWJyYXJ5CgluYW1lcyBwYXNzZWQgd2l0aG91dCBhbiBleHRlbnNpb24sIHdlIG5vdyBhZGQgYSB0cmFpbGluZyBgLicgdG8KCXByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZy4KCjE5OTktMDYtMTUgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9sdGRsLmMgKHN5c193bGxfY2xvc2UpOiBTdHJhbmdlbHkgZW5vdWdoLCBNaWNyb3NvZnQgaGF2ZQoJZGVjaWRlZCB0aGF0IExvYWRMaWJyYXJ5IHJldHVybnMgYDAnIGZvciBzdWNjZXNzLCB5ZXQgRnJlZUxpYnJhcnkKCXJldHVybnMgYDAnIGZvciBmYWlsdXJlISAgVGhlIEZyZWVMaWJyYXJ5IGNhbGwgdXNlZCB0byBpbnRlcnByZXQKCWAwJyBhcyBzdWNjZXNzIGZvciBib3RoIGZ1bmN0aW9ucy4KCjE5OTktMDYtMTQgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIGx0Y29uZmlnLmluOiB1c2UgZXZhbCB3aGVuIHNldHRpbmcgaGF2ZV9kbGZjbl9oLCByZWZvcm1hdHRpbmcKCjE5OTktMDYtMTIgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIGx0bWFpbi5pbjogc3RvcmUgb2xkIGFyY2hpdmVzIGluIGRlcGxpYnMgYW5kIG9sZF9kZXBsaWJzLAoJICByZXRhaW4gdGhlIG9yZGVyIG9mIGRlcGVuZGVuY3kgbGlicmFyaWVzIChldmVuIG9sZCBhcmNoaXZlcyksCgkgIGRldGVybWluaW5nIHRoZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBkaWRuJ3Qgd29yayBkdWUgdG8gYSB0eXBvLAoJICBhZGQgdGhlIGxpYnJhcnkgc2VhcmNoIHBhdGhzIG9mIGFsbCBkZXBlbmRlbmN5IGxpYnJhcmllcyB3aGVuCgkgIGxpbmtpbmcgYSBsaWJyYXJ5IChmaXhlcyBJUklYIDUuMiBidWcpCgoxOTk5LTA2LTEwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluOiBSZXZlcnRlZCBKdW5lIDYncyBwYXRjaCBmb3IgbmV3IEdOVSBsZCBvdXRwdXQsIGl0CglpcyBubyBsb25nZXIgbmVlZGVkLCBhcyBsZCByZXZlcnRlZCB0byB0aGUgb3JpZ2luYWwgZm9ybWF0LgoJKiBORVdTOiBMaWtld2lzZS4KCgkqIGx0Y29uZmlnLmluOiBXaGVuIHRlc3Rpbmcgc2VsZi1kbG9wZW5pbmcsIHRlc3Qgd2hldGhlciBkbGNsb3NlCgljcmFzaGVzLiAgT24gRnJlZUJTRCAzLjEsIGl0IGRvZXMuICA6LSgKCSogbGlibHRkbC9jb25maWd1cmUuaW46IExpa2V3aXNlLgoJKiBORVdTOiBOb3RlIHdvcmstYXJvdW5kLgoJUmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCjE5OTktMDYtMDkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW4gKGV4ZWV4dCk6IGF1dG9jb25mJ3MgQUNfRVhFRVhUIHVzZXMgIm5vIiB0byBpbmRpY2F0ZQoJbm8gZXh0ZW5zaW9uLCBhbmQgd2UgbXVzdCBkbyB0aGUgc2FtZSBpbiBvcmRlciB0byBzaGFyZSB0aGUgY2FjaGUKCXZhbHVlLiBBbHNvIHdlIG11c3QgaWdub3JlIGNvbmZ0ZXN0LmVyciB3aGljaCBIUHNVWCAoYXQgbGVhc3QpCglmaWxscyB3aXRoIGdyYXR1aXRvdXMgd2FybmluZ3MuCgkob2JqZXh0KTogZm9yIGNvbnNpc3RlbmN5LCBkbyB0aGUgc2FtZSBhcyBhYm92ZS4KCVJlcG9ydGVkIGJ5IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoxOTk5LTA2LTA5ICBQYXZlbCBSb3NraW4gIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIGx0Y29uZmlnLmluIChleGVleHQpOiBVc2UgcXVvdGVzIGluIHRoZSB0ZXN0LCB0byBwcmV2ZW50IGEKCWZhaWx1cmUgaW4gc2gudGVzdC4KCjE5OTktMDYtMDkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW46IFJlb3JkZXJlZCB0ZXN0cyB0byBiZSBtb3JlIGxpa2UgY29uZmlndXJlLmluJ3MKCXJlY29tbWVuZGVkIG9yZGVyIChwcm9ncmFtcyBmaXJzdCwgdGhlbiBsaWJyYXJpZXMsIGV0Yy4pLgoJUGVyZm9ybWVkIGEgbWFudWFsIGBgY29uc3RhbnQgZm9sZGluZyBwYXNzJycgKGVnOiBzL2V2YWwgInRlc3QKCVwiZWNobyAnJCcneydsdF9jdl9kbG9wZW4nK3NldH0nYFwiICE9IHNldC90ZXN0CgkiJHtsdF9jdl9kbG9wZW4rc2V0fSIgIT0gc2V0LykuCglzL3Rlc3QgIiR7Zm9vK3NldH0iID0gInNldCIvdGVzdCAiWCR7Zm9vK3NldH0iID0gWHNldC9nCgoJKiBsdGNvbmZpZy5pbiAobGlua19zdGF0aWNfZmxhZyk6IEFjY2VwdCwgaW4gb3JkZXIgb2YgZGVjcmVhc2luZwoJcHJlZmVyZW5jZTogdGhlIGNhY2hlZCB2YWx1ZTsgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBjdXJyZW50Cglob3N0LiAgQWxzbyB0ZXN0IHRoYXQgdGhlIGNvbXBpbGVyIGFjY2VwdHMgdGhlIGZsYWcsIGFuZCBjYWNoZQoJdGhhdCByZXN1bHQgdG9vLgoKCSogbHRjb25maWcuaW4gKHBpY19mbGFnKTogQWNjZXB0LCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nCglwcmVmZXJlbmNlOiAgdGhlIGNhY2hlZCB2YWx1ZTsgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBjdXJyZW50Cglob3N0LiAgQWxzbyB0ZXN0IHRoYXQgdGhlIGNvbXBpbGVyIGFjY2VwdHMgdGhlIGZsYWcsIGFuZCBjYWNoZQoJdGhhdCByZXN1bHQgdG9vLgoKMTk5OS0wNi0wOCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAoTE5fUyk6IEFjY2VwdCwgaW4gb3JkZXIgb2YgZGVjcmVhc2luZyBwcmVmZXJlbmNlOgoJdGhlIGNhY2hlZCB2YWx1ZTsgYW4gZW52aXJvbm1lbnQgc2V0dGluZzsgYGBsbiAtcycnIGlmIGl0IHdvcmtzOwoJYGBsbicnIGlmIGBgbG4gLXMnJyBkb2Vzbid0IGFwcGVhciB0byB3b3JrLgoKCSogbHRjb25maWcuaW4gKG9iamV4dCk6IEFjY2VwdCwgaW4gb3JkZXIgb2YgZGVjcmVhc2luZyBwcmVmZXJlbmNlOgoJdGhlIGNhY2hlZCB2YWx1ZTsgdGhlIHJlc3VsdCBvZiBhIHRlc3Qgb2JqZWN0IGNvbXBpbGF0aW9uLgoKCSogbHRjb25maWcuaW4gKFJBTkxJQik6IEFjY2VwdCwgaW4gb3JkZXIgb2YgZGVjcmVhc2luZyBwcmVmZXJlbmNlOgoJdGhlIGNhY2hlZCB2YWx1ZTsgYW4gZW52aXJvbm1lbnQgc2V0dGluZzsgdGhlIGZpcnN0IGZpbGUgY2FsbGVkCglgYHJhbmxpYicnIGluIHRoZSB1c2VyJ3MgcGF0aC4KCgkqIGx0bWFpbi5pbiAoZXhlZXh0KTogVXNlICRleGVleHQgd2hlbiB3b3JraW5nIG91dCB0aGUgbmFtZXMgb2YKCXByb2dyYW1zIChidXQgbm90IHRoZSB3cmFwcGVyIHNjcmlwdCBpdHNlbGYgZHVlIHRvIGEgc3R1cGlkaXR5IGluCgl3aW4zMiB3aGljaCBoYXJkd2lyZXMgdGhlIC5leGUgZXh0ZW5zaW9uIHRvIHRoZSBiaW5hcnkgbG9hZGVyISkuCgkqIGx0Y29uZmlnLmluIChleGVleHQpOiBOb3cgdGhhdCB0aGUgd3JhcHBlciBzY3JpcHQgdHJpZXMgdG8gbW92ZQoJZXhlY3V0YWJsZXMsIHdlIG5lZWQgdG8ga25vdyB3aGV0aGVyIHRoZXkgaGF2ZSBhbiBleHRlbnNpb24gKGFsYQoJQUNfRVhFRVhUKS4gIFNpbmNlIHdlIGNhbid0IHJlbHkgb24gQUNfRVhFRVhUIGhhdmluZyBiZWVuIGNhbGxlZAoJaW4gY29uZmlndXJlLmluLCB3ZSBtdXN0IGJlIGFibGUgdG8gY2hlY2sgZm9yIG91cnNlbHZlcywgdGhvdWdoIHdlCgljYW4gbG9vayBmb3IgYSBjYWNoZWQgcmVzdWx0IGluY2FzZSBBQ19FWEVFWFQgd2FzIGNhbGxlZC4KCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIHBpY19mbGFnKTogIEZvcmNlIHNlcGFyYXRlIGNvbXBpbGF0aW9uIG9mCglvYmplY3RzIGZvciBkbGxzIHZzLiBvYmplY3RzIGZvciBzdGF0aWMgYXJjaGl2ZXMuICBVc2luZyBhIGNwcAoJbWFjcm8gYWxzbyBhbGxvd3MgdXMgdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHdlIG5lZWQgdG8gdXNlCglkbGxleHBvcnQvaW1wb3J0IGRlY2xhcmF0aW9ucy4KCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIG5lZWRfdmVyc2lvbik6IFNldCB0byBubywgb3RoZXJ3aXNlIG1vZHVsZQoJZGxsJ3MgZW5kIHVwIHdpdGggbWlnaHR5IGxvbmcgbmFtZXMhCgoxOTk5LTA2LTA2ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluOiBTdXBwb3J0IG5ldyBHTlUgbGQgLS1oZWxwIG91dHB1dCBmb3JtYXQuCgkqIE5FV1M6ICBMaWtld2lzZS4KCVJlcG9ydGVkIGJ5IEdh62wgUXXpcmkgPGdhZWxAYmFvdWxlLmR5bmRucy5vcmc+IGFuZAoJSC5KLiBMdSA8aGpsQHZhcmVzZWFyY2guY29tPi4KCjE5OTktMDYtMDUgIE1hcmsgS2V0dGVuaXMgIDxrZXR0ZW5pc0BnbnUub3JnPgoKCSogbHRjb25maWcuaW46IFVwZGF0ZSBzdXBwb3J0IGZvciB0aGUgSHVyZC4gIE1ha2Ugc3VyZSB0aGF0IHRoZQoJc29uYW1lIGluY2x1ZGVzIHRoZSBtYWpvciB2ZXJzaW9uIG51bWJlciBhbmQgY3JlYXRlIHRoZQlyaWdodAoJbGlua3MuICBBbGxvdyBzaGFyZWQgb2JqZWN0cyB3aXRob3V0IHRoZSBgbGliJyBwcmVmaXggYW5kIHdpdGhvdXQKCXZlcnNpb24gaW5mb3JtYXRpb24uCgoxOTk5LTA2LTAyIE5pY2sgUmFzbXVzc2VuIDxuaWNrQGppdmUub3JnPgoKCSogbHRtYWluLmluIChsaW5rKTogdXNlICIkbm9ub3B0IiBhcyB0aGUgY29tcGlsZXIgZm9yCgkgIGNvbXBpbGUvZmluYWxpemVfY29tbWFuZAoKMTk5OS0wNS0yNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBUT0RPOiBSZW1vdmUgdGhlIHNob3J0IGxpc3Qgb2YgcGVvcGxlIGludGVyZXN0ZWQgaW4gQysrCgljb25zdHJ1Y3RvcnM7IGl0J3Mgbm90IG1lYW5pbmdmdWwsIHNpbmNlIHRoZXJlIGFyZSBzbyBtYW55IG1vcmUKCXBlb3BsZSByZXF1ZXN0aW5nIHRoaXMgZmVhdHVyZSwgYW5kIHdlIGp1c3QgY2FuJ3QgbWFpbnRhaW4gaXQKCWFjY3VyYXRlLgoKMTk5OS0wNS0yNyAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBsdGNvbmZpZy5pbiAoR05VIEh1cmQsIGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogVXNlIHBhc3NfYWxsLgoKMTk5OS0wNS0yNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+LCBPbGx5IEJldHRzICA8b2xseUBtdXNjYXQuY28udWs+CgoJKiBsdG1haW4uaW46IEV4cGFuZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgd2hlbiBjcmVhdGluZyByZWxvYWRhYmxlCglvYmplY3RzLgoJKiBORVdTOiBEaXR0by4KCjE5OTktMDUtMjcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogTkVXUzogTWVudGlvbiB0aGUgdHdvIGJ1Z2ZpeGVzIGJlbG93LgoKCSogbHRtYWluLmluOiBPbmx5IGNyZWF0ZSBkaXJlY3RvcnkgaW50byB3aGljaCB0byBleHRyYWN0Cgljb252ZW5pZW5jZSBsaWJyYXJpZXMgd2hlbiAkY29udmVuaWVuY2UgaXMgbm90IGVtcHR5LiAgSXQgd291bGQKCWFsd2F5cyBiZSBjcmVhdGVkIG9uIHN5c3RlbXMgdGhhdCBkaWQgbm90IHN1cHBvcnQKCXdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLgoKCSogbHRjb25maWcuaW4gKGV4cG9ydF9zeW1ib2xzX2NtZHMpOiBBZGQgJGNvbnZlbmllbmNlLgoJKGN5Z3dpbiwgZXhwb3J0X3N5bWJvbHNfY21kcyk6IERpdHRvLgoJKiBsdG1haW4uaW46IEdlbmVyYXRlIGV4cG9ydCBzeW1ib2wgbGlzdCBiZWZvcmUgZXhwYW5kaW5nCgljb252ZW5pZW5jZSBsaWJyYXJpZXMsIHRvIGF2b2lkIHBhc3Npbmcgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMgdG8KCSROTS4KCVJlcG9ydGVkIGJ5IEdvZG1hciBCYWNrIDxnYmFja0Bjcy51dGFoLmVkdT4KCjE5OTktMDUtMjcgIERhdmlkIEpvbmVzICA8am9uZXNAbW9zYWlkLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChMVERMX0JJTkRfRkxBR1MpOiBSZW1vdmUgQklORF9WRVJCT1NFLCB0byBhdm9pZAoJcHJpbnRpbmcgZXJyb3IgbWVzc2FnZXMuCgoxOTk5LTA1LTI2ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCglHTlUgbGlidG9vbCAxLjMuMiB3YXMgcmVsZWFzZWQuCgoxOTk5LTA1LTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIE5FV1M6IExpc3QgZml4ZWQgcHJvYmxlbXMuCgkqIGRvYy9QTEFURk9STVM6IFRlc3RlZCBmb3IgMS4zLjIuCgoJKiBjb25maWcuZ3Vlc3M6IFN5bmNoIHdpdGggR05VIGNvbW1vbi4KCgkqIGx0bWFpbi5pbjogUmV2ZXJ0IHRvIHN0cmlwcGluZyAuZXhlIG9uIGFsbCBwbGF0Zm9ybXMuCgkqIFRPRE86IE5vdGUgYWJvdXQgdGhpcyBwcm9ibGVtLiAgRGVtbyBpcyBmaXhlZCBvbiB3aW4zMi4gIFN1cHBvcnQKCWBlbXB0eScgY29udmVuaWVuY2UgbGlicmFyaWVzLgoKCSogbHRjb25maWcuaW4gKHNvbGFyaXMqLCBsZF9zaGxpYnMpOiBEbyBub3QgZW5hYmxlIHNoYXJlZAoJbGlicmFyaWVzIHdpdGggR05VIGxkIDIuOC4qLCBpdCdzIGJyb2tlbi4gIEVtaXQgYSB3YXJuaW5nCglzdWdnZXN0aW5nIGFuIHVwZ3JhZGUuCglSZXBvcnRlZCBieSBCcmlhbiBGb3JkIDxmb3JkQHZzcy5mc2kuY29tPiBhbmQgUm9uYWxkIFBpam5hY2tlcgoJPFJvbmFsZC5QaWpuYWNrZXJAYmVzdC5tcy5waGlsaXBzLmNvbT4KCjE5OTktMDUtMjUgIEZyYW5rIENoLiBFaWdsZXIgPGZjaGVAY3lnbnVzLmNvbT4KCgkqIGx0bWFpbi5pbjogZmlsZV9tYWdpYyBjaGVjayB3b3VsZCBub3QgYXZvaWQgY3ljbGljIGxpbmtzLgoKMTk5OS0wNS0yNSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkZXBkZW1vL21haW4uYywgZGVwZGVtby9sMS9sMS5jLCBkZXBkZW1vL2wyL2wyLmM6IEsmUi1pemUuCgkqIGRlcGRlbW8vbDMvbDMuYywgZGVwZGVtby9sNC9sNC5jOiBMaWtld2lzZS4KCgkqIGx0bWFpbi5pbjogUmVtb3ZlIG9iamVjdCBmaWxlcyBiZWZvcmUgd3JpdGluZyB0byB0aGVtLCB0byBhdm9pZAoJY2lyY3VsYXIgbGlua3MuCglSZXBvcnRlZCBieSBSb24gTydIYXJhIDxyb25vQHNlbnR1bnkuY29tLmF1PgoKMTk5OS0wNS0yNCBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogTkVXUzogc3VwcG9ydCBmb3IgaW5zdGFsbGluZyBzdHJpcHBlZCBsaWJyYXJpZXMgdXNpbmcgR05VIHN0cmlwCgkqIGx0Y29uZmlnLmluOiBzZXQgZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwgb24gRnJlZUJTRCwKCSAgTGludXggYW5kIFNvbGFyaXMgc2luY2Ugbm8gb25lIGNhbiByZXByb2R1Y2UgdGhlIGZhbW91cyBkZXBsaWJzCgkgIGJ1ZwoJKiBsdG1haW4uaW46IHByZXNlcnZlICRDQyAocmVwb3J0ZWQgYnkgVG9tIFRyb21leSksCgkgIHN0cmlwIGxpYnJhcmllcyB1c2luZyBHTlUgc3RyaXAgaWYgaXQncyBhdmFpbGFibGUgYW5kIHRoZQoJICAtcyBmbGFnIHdhcyBwYXNzZWQgdG8gImluc3RhbGwiCgoxOTk5LTA1LTIzICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGRvYy9QTEFURk9STVM6IFJlbGVhc2UgMS4zLjEgcGFzc2VzIG9uIEdOVSBIdXJkL3g4Ni4KCVJlcG9ydGVkIGJ5IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoxOTk5LTA1LTIzIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBsdG1haW4uaW46IHN0cmlwIG9mZiB0aGUgLmV4ZSBzdWZmaXggb25seSBvbiAqV2luCgkgIChSZXBvcnRlZCBieSBNYXR0aGV3IEQuIExhbmdzdG9uIDxsYW5nc3RvbkBTTEFDLlN0YW5mb3JkLkVEVT4pCgoxOTk5LTA1LTIyIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiB1cGRhdGVkCgkqIFRPRE86IC1XYywgLVdsLCBpbXBsZW1lbnRlZAoJKiBBVVRIT1JTOiBjaGFuZ2VkIG15IGVtYWlsIGFkZHJlc3MKCSogZG9jL2xpYnRvb2wudGV4aTogZml4ICJ3aWVyZCIgdHlwbyA6KQoJKiBsdG1haW4uaW46IGxpbmtpbmcgYWdhaW5zdCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgd2FzIGJyb2tlbiwKCSAgaW1wbGVtZW50ZWQgdGhlICItV2MsIiAiLVdsLCIgIi1YY29tcGlsZXIiICItWGxpbmtlciIgZmxhZyBmb3IKCSAgY29tcGlsZXIgYW5kIGxpbmtlci1zcGVjaWZpYyBmbGFncywKCSAgYWRkIC1sYyBiZWZvcmUgd2UgZG8gdGhlIGRlcGxpYnMgY2hlY2sKCSogbHRjb25maWcuaW46IGxpbmtvcHRzIC0+IGNvbXBpbGVyX2ZsYWdzIGZvciAkQ0MgYW5kIGxpbmtlcl9mbGFncwoJICBmb3IgJExELCBsaW5rX2FsbF9kZXBsaWJzPXllcyBvbiBJUklYCgoxOTk5LTA1LTIyICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIE5FV1M6IGluc2VydCB0b2RheXMgZGF0ZSBhbG9uZ3NpZGUgMS4zLjEgcmVsZWFzZS4KCSogTWFrZWZpbGUuaW46IHVzZSBnbnUgbm90IGduaXRzIHJ1bGVzCgkqIGNvbmZpZy5ndWVzczogc3luY2ggd2l0aCBnbnUgY29tbW9uICYgYXBwbHkgVGFrYWJhdGFrZS1zYW4ncwoJTUlQUyAqMDAwIHBhdGNoLgoJKiBjb25maWcuc3ViOiBzeW5jaCB3aXRoIGdudSBjb21tb24uCgoxOTk5LTA1LTIyICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhc2V5LmN5Z251cy5jb20+CgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbiAoZGxlcnJvcik6IEZpeCB0eXBvIGluIGRsb3BlbiBmb3VuZCBpbiAtbGRsCgl0ZXN0LgoKMTk5OS0wNS0yMSAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IERvbid0IGRpc3RyaWJ1dGUgaW5zdHV0aWxzLgoJKGluc3RhbGwtZGF0YS1ob29rKTogdXNlIGxpYmx0ZGwvTWFrZWZpbGUuYW0ncyBsb2NhbC1pbnN0YWxsIGZpbGVzCglydWxlLgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChsb2NhbC1pbnN0YWxsLWZpbGVzKTogIE5ldyBydWxlIHRvIGluc3RhbGwKCWxpYmx0ZGwgd2l0aG91dCBjcmVhdGluZyBsaW5rcyBvciBtb2RlIDc3NyBkaXJlY3Rvcmllcy4KCSogaW5zdHV0aWwvKjogZGVsZXRlZC4KCjE5OTktMDUtMjEgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogZG9jL1BMQVRGT1JNUzogVXBkYXRlZCB0byAxLjMuMSBmb3IgYWxsIHBsYXRmb3JtcyBJJ3ZlIGdvdC4KCUFkZGVkIHNwYXJjLXVua25vd24tbGludXgtZ251LgoKMTk5OS0wNS0yMSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBkZW1vL2Zvby5oOiBzL1BBUkFNUy9MVERMX1BBUkFNUy9nCgkqIGxpYmx0ZGwvbHRkbC5oOiBkaXR0by4KCSogbGlibHRkbC9sdGRsLmM6IGRpdHRvLgoKCSogZGVtby9mb28uaDogcy9fX1AvUEFSQU1TL2cKCSogbGlibHRkbC9sdGRsLmg6IGRpdHRvLgoJKiBsaWJsdGRsL2x0ZGwuYzogZGl0dG8uCglSZXBvcnRlZCBieSBBa2ltIERlbWFpbGxlIDxkZW1haWxsZUBpbmYuZW5zdC5mcj4KCjE5OTktMDUtMjAgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogTkVXUzogVXBkYXRlZCBkb2NzLgoJKiBUT0RPOiBSZWNvbW1lbmQgbGlidG9vbC5tNCB0byBiZSBpbnNlcnRlZCBpbiBhY2luY2x1ZGUubTQuIEFJWAoJNC4zLjIuMCBubyBsb25nZXIgZmFpbHMgb24gc3RhdGljIGRsb3BlbmluZy4gIEdOVSBETEQgbm8gbG9uZ2VyCgloYXMgdG8gc3VwcG9ydCAubGEgZmlsZXMsIHNpbmNlIGxpYmx0ZGwgYWxyZWFkeSBkb2VzLiAgQ29udmVuaWVuY2UKCWxpYnJhcmllcyBhbmQgcmVsb2FkYWJsZSBvYmplY3RzIHNob3VsZCBiZSB0ZXN0ZWQgaW4gdGhlCgl0ZXN0c3VpdGUuICBXZSBjb3VsZCBzdXBwb3J0IHNvbWUgYW1vdW50IG9mIGNvbnRyb2wgb24gdGhlIHNvbmFtZQoJb2YgbGlicmFyaWVzLgoJKiBkb2MvbGlidG9vbC50ZXhpOiBOb3RlcyBhYm91dCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgYW5kCglhdXRvbWFrZS4gIERvY3VtZW50ZWQgSU5DTFRETC4KCjE5OTktMDUtMjAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBjZGVtby9tYWluLmM6ICJXZWxjb21lIF90b18gLi4uIgoJKiBtZGVtby9tYWluLmM6IGRpdHRvCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBzdXBwb3J0IG11bHRpcGxlIGRsb3BlbmluZyBtZWNoYW5pc21zCgkgIGF0IG9uY2UKCSogbGlibHRkbC9sdGRsLmM6IHByZWZpeCBzeXN0ZW0gZGVwZW5kZW50IGZ1bmN0aW9ucyB3aXRoICJzeXNfIgoJICB0byBhdm9pZCBzeW1ib2wgY29uZmxpY3RzIChsaWJkbGQgZGlkbid0IHdvcmspCgkqIGxpYnRvb2wubTQgKEFDX0xJQkxURExfKik6IHNldCBJTkNMVERMIHRvIHRoZSBwYXRoIG9mIGx0ZGwuaAoJKiBsdGNvbmZpZy5pbjogY2hlY2sgZm9yIGRsb3BlbiB3aXRoIC1sZGwgZmlyc3QKCjE5OTktMDUtMTkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogTkVXUzogQWRkZWQgMS4zLjEgbmV3cyBpdGVtcy4KCSogZG9jL1BMQVRGT1JNUzogdXBkYXRlZCB0aGUgYm94ZXMgSSBoYXZlIGFjY2VzcyB0bywgdG8gMS4zLjEKCWluIHByZXBhcmF0aW9uIGZvciB0aGUgbmV4dCByZWxlYXNlLgoKMTk5OS0wNS0xOCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAoY3lnd2luKiwgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMpOiBkbGx0b29sIGNob2tlcwoJb24gdGhpcywgc28gbGVhdmUgaXQgdW5zZXQgaW4gdGhpcyBjYXNlIHNvIHRoYXQgdGhlIGx0bWFpbiBjb2RlCglrbm93cyBpdCBoYXMgdG8gdW5wYWNrIGNvbnZlbmllbmNlIGFyY2hpdmVzIGJ5IGl0c2VsZi4KCjE5OTktMDUtMTcgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRtYWluLmluOiBEbyBub3QgZXhpdCB3aGVuIGFuIHVua25vd24gbGlicmFyeSBuYW1lIGlzIHBhc3NlZAoJcGFzc2VkIGluLCBzaW1wbHkgd2FybiBhbmQgY29udGludWUgc2luY2Ugc29tZSBjb21waWxlcnMgcmVxdWlyZQoJLUxBTkc6KiBsaWtlIG9wdGlvbnMgdG8gd29yay4KCVJlcG9ydGVkIGJ5IEFkYW0gQy4gUG93ZWxsLCBJViA8YWRhbS5wb3dlbGxAbmlzdC5nb3Y+CgoxOTk5LTA1LTE3ICBKaXJvIFRha2FiYXRha2UgIDxqaXJvQGRpbi5vci5qcD4KCgkqIGx0Y29uZmlnLmluOiBwb3J0IHRvIE5FQyBVWC80ODAwLgoJKiBORVdTOiB1cGRhdGVkLgoKMTk5OS0wNS0xNyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAoYmVvcyosIGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogc2V0IHRvIHBhc3NfYWxsLiAgQmVPUwoJaXMgUElDIGJ5IGRlZmF1bHQuCglSZXBvcnRlZCBieSAiU2hhd24gVCAuIEFtdW5kc29uIiA8YW11bmRzb25AZ2ltcC5vcmc+CgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogRml4IHRlc3QgZmFpbHVyZXMgb24gQUlYIDQuMy4yIGJ5IGNoZWNraW5nCglmb3IgZGxvcGVuICp3aXRoKiAtbGRsIGZpcnN0LgoJUmVwb3J0ZWQgYnkgR3JlZyBXb29sZWRnZSA8aWM1MDM1JXRzczFjcnMuYW1ncmVldGluZ3MuY29tQHJvc2UuYW1ncmVldGluZ3MuY29tPgoKCSogZGVtby9mb28uaDogRG9uJ3Qgc2V0IGFueSBkZWNsc3BlY3MgdW50aWwgd2UgaGF2ZSBmdWxsIGRsbAoJc3VwcG9ydC4KCjE5OTktMDUtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKHNvbGFyaXMyLjYsIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjKTogRG8gbm90IHVzZQoJLVdsIGZvciBhbGxleHRyYWN0LgoKMTk5OS0wNS0xNCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBpbnN0dXRpbC9jaG1vZDogTmV3IHNjcmlwdCB0byBhdm9pZCBjaG1vZCdpbmcgZmlsZXMgd2hpbGUKCWluc3RhbGxpbmcgbGlibHRkbCdzIHNvdXJjZXMuCgkqIGluc3R1dGlsL2xuOiBOZXcgc2NyaXB0IHRvIGF2b2lkIGhhcmQtbGlua2luZyBsaWJsdGRsJ3Mgc291cmNlcwoJaW4gdGhlIGluc3RhbGwgdHJlZS4KCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBEaXN0IHRoZW0uCgkoaW5zdGFsLWRhdGEtaG9vayk6IEFkZCBzcmNkaXIvaW5zdHV0aWwgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUKCVBBVEggYmVmb3JlIGluc3RhbGxpbmcgbGlibHRkbCdzIHNvdXJjZXMuCgoxOTk5LTA1LTA5ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIFRPRE86IHVwZGF0ZWQuCgoxOTk5LTA1LTA2ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChpbnN0YWxsLWRhdGEtaG9vayk6ICBtYWtlIHN1cmUgdGhlIGluc3RhbGwgZGlyZWN0b3J5CglpcyBub3QgbGVmdCB3b3JsZCB3cml0YWJsZS4KCVJlcG9ydGVkIGJ5IEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmNzLnVuaS1kb3J0bXVuZC5kZT4KCjE5OTktMDQtMzAgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlidG9vbC5tNDogVXNlIGlmZWxzZSBpbnN0ZWFkIG9mIGlmLgoJUmVwb3J0ZWQgYnkgRGF2aWQgTWF6aWVyZXMgPGRtQGFtc3RlcmRhbS5sY3MubWl0LmVkdT4KCjE5OTktMDQtMjkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCUdOVSBMaWJ0b29sIDEuMyB3YXMgcmVsZWFzZWQuCgoJKiBORVdTOiBTdW1tYXJpemUgbmV3cyBmcm9tIDEuMiB0byAxLjMuCgoJKiBsdG1haW4uaW46IFNhdmUgZXhpdCBzdGF0dXMgb2YgbGlua19jb21tYW5kIGJlZm9yZSByZW1vdmluZwoJc3ltYm9sIHRhYmxlIG9iamVjdCBmaWxlLgoKMTk5OS0wNC0yOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBkb2MvUExBVEZPUk1TOiB1cGRhdGVkIG15IGhwdXgtMTAuMjAgYW5kIGN5Z3dpbiBib3ggZW50cmllcy4KCjE5OTktMDQtMjkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogTkVXUzogSW1wcm92ZWQgc3VwcG9ydCBmb3IgRFUgYW5kIElSSVggdG9vLgoKCSogY29uZmlnLnN1YiwgY29uZmlnLmd1ZXNzOiBVcGRhdGVkIGZyb20gR05VIGNvbW1vbi4KCgkqIG1kZW1vL2NvbmZpZ3VyZS5pbjogTW92ZSBBQ19MSUJMVERMX0NPTlZFTklFTkNFIGJlZm9yZQoJQU1fUFJPR19MSUJUT09MLCBhcyBzdWdnZXN0ZWQgYnkgYXV0b2NvbmYuCgoJKiBkb2MvbGlidG9vbC50ZXhpIChEaXN0cmlidXRpbmcgbGlibHRkbCk6IERvY3VtZW50IHRoYXQgLXN0YXRpYwoJbWF5IGNhdXNlIHRoZSBzYW1lIHByb2JsZW1zIG9uIGxpYmx0ZGwgYXMgLWFsbC1zdGF0aWMuCgkqIFRPRE86IFdlIG1pZ2h0IHdhbnQgdG8gZml4IHRoaXMgaW4gdGhlIGZ1dHVyZS4KCgkqIGRvYy9saWJ0b29sLnRleGk6IENsZWFyIHVwIG92ZXJmdWxsIGhib3guCgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChsdGRsLmxvKTogQWRkIGRlcGVuZGVuY2llcy4KCSogbGlibHRkbC9jb25maWd1cmUuaW46IENsZWFuIHVwIHNvbWUgZHVwbGljYXRlIGRlZmluZXMuICBFbmFibGUKCXN1cHBvcnQgZm9yIG11bHRpcGxlIGRsb3BlbmluZyBtZWNoYW5pc21zLgoJKiBsaWJsdGRsL2FjY29uZmlnLmg6IE5ldyBmaWxlLiAgQWRkICN1bmRlZnMgZm9yIGRlZmluZXMgdGhhdAoJd291bGQgYmUgZHVwbGljYXRlZC4KCjE5OTktMDQtMjkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlidG9vbC5tNCAoY3lnd2luKnxtaW5ndyosIERMTFRPT0wsIE9CSkRVTVAsIEFTKTogT25seSBleHBhbmQgdGhlCgljb2RlIHRoYXQgbWFrZXMgdGhlc2UgY29uZmlndXJlIHRpbWUgY2hlY2tzIG9uIGhvc3RzIHRoYXQgbmVlZCB0aGUKCXRvb2xzICphbmQqIGlmIHRoZSBBQ19MSUJUT09MX1dJTjMyX0RMTCBtYWNybyBpcyB1c2VkLgoKMTk5OS0wNC0yOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKG5saXN0LCBTWU1GSUxFKTogVXNlIG91dHB1dG5hbWUgaW5zdGVhZCBvZiBvdXRwdXQgZm9yCgluYW1lcyB3aXRoaW4gb3V0cHV0X29iamRpci4KCjE5OTktMDQtMjggIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlidG9vbC5tNCAoQUNfRU5BQkxFX1NIQVJFRCwgQUNfRU5BQkxFX1NUQVRJQywKCUFDX0VOQUJMRV9GQVNUX0lOU1RBTEwpOiBEbyBub3QgY2FsbCBBQ19CRUZPUkUgaGVyZSwgdGhleSdyZQoJQUNfUkVRVUlSRWQgYnkgQUNfTElCVE9PTF9TRVRVUC4KCShBQ19ESVNBQkxFX1NIQVJFRCwgQUNfRElTQUJMRV9TVEFUSUMsIEFDX0RJU0FCTEVfRkFTVF9JTlNUQUxMKToKCUNhbGwgQUNfQkVGT1JFIGhlcmUsIGFuZCBub3cgd2l0aCB0d28gYXJndW1lbnRzLCBzaW5jZSB0aGVzZSBkbwoJY2hhbmdlIHRoZSBkZWZhdWx0LgoJKEFDX0xJQkxURExfQ09OVkVOSUVOQ0UsIEFDX0xJQkxURExfSU5TVEFMTEFCTEUpOiBGaXggY2FsbHMgdG8KCUFDX0JFRk9SRS4KCjE5OTktMDQtMjggIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlidG9vbC5tNCAobHRjb25maWdfZW5hYmxlX3dpbjMyX2RsbCk6IHBhc3MgLS1lbmFibGUtd2luMzItZGxsIHRvCglsdGNvbmZpZyBpZiB0aGlzIGlzIHNldC4KCShBQ19MSUJUT09MX1dJTjMyX0RMTCk6IE5ldyBtYWNybyByZXF1aXJlZCBmb3IgbGlidG9vbCB0byBhdHRlbXB0CglhIGRsbCBidWlsZCBvbiB3aW4zMiBob3N0cy4KCSogbHRjb25maWcuaW4gKC0tZW5hYmxlLXdpbjMyLWRsbCk6IG5ldyBmbGFnIGZvciB0aGUgY2xpLgoJKGN5Z3dpbip8bWluZ3cqfG9zMiosIGx0Y29uZmlnX2VuYWJsZV93aW4zMl9kbGwpOiBpZiB0aGlzIGlzIG5vdCBzZXQKCXRvIHllcywgdGhlbiBkbyBub3QgYXR0ZW1wdCB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzLgoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCBBQ19MSUJUT09MX1dJTjMyX0RMTC4KCSogTkVXUzogbm90ZWQgbmV3IG1hY3JvLgoKMTk5OS0wNC0yNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX0RMT1BFTiwgQUNfRU5BQkxFX1NIQVJFRCwKCUFDX0VOQUJMRV9TVEFUSUMsIEFDX0VOQUJMRV9GQVNUX0lOU1RBTEwsIEFDX0xJQkxURExfQ09OVkVOSUVOQ0UsCglBQ19MSUJMVERMX0lOU1RBTExBQkxFKTogV2FybiBpZiB0aGV5IGFwcGVhciBhZnRlcgoJQUNfUFJPR19MSUJUT09MLiAgQUNfTElCVE9PTF9TRVRVUCwgYWN0dWFsbHkuCgkoQUNfTElCVE9PTF9TRVRVUCk6IENoZWNrIHdoZXRoZXIgRExPUEVOIHN1cHBvcnQgaXMgdG8gYmUgZW5hYmxlZAoJYXQgYXV0b2NvbmYgdGltZSwgbm90IGNvbmZpZ3VyZSB0aW1lLiAgU2ltcGxpZnkgY29kZSBhbmQKCWltcHJvdmUgKD8pIGhlbHAgbWVzc2FnZSBhYm91dCAtLWRpc2FibGUtbGlidG9vbC1sb2NrLgoKMTk5OS0wNC0yNyBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIE5FV1M6IG5ldyBjbGVhbiBtb2RlCgkqIFRIQU5LUzogYWRkZWQgT3NzYW1hIE90aG1hbgoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudGVkIHRoZSBuZXcgYGNsZWFuJyBtb2RlCgkqIGx0Y29uZmlnLmluOiBzZXQgbmVlZF92ZXJzaW9uPW5vIG9uIE9TRiAocmVwb3J0ZWQgYnkKCSAgTWFyY3VzIFN1bmRiZXJnIDxtYWNrYW5Ac3RhY2tlbi5rdGguc2U+KQoJKiBsdG1haW4uaW46IGFsbG93IGFic29sdXRlIG5vbi1leGlzdGFudCAtTCBwYXRocywKCSAgYWx3YXlzIHVzZSBvdXRwdXRfb2JqZGlyIGluc3RlYWQgb2Ygb2JqZGlyIGZvciB0ZW1wb3JhcnkgZmlsZXMsCgkgIGRlbGV0ZSBnZW5lcmF0ZWQgdGVtcG9yYXJ5IHN5bWJvbCBsaXN0cywKCSAgZG9uJ3QgYWRkIC5sYSB0d2ljZSBpbiB0aGUgcHNldWRvLWxpYnJhcnkgaGVhZGVyLAoJICBpbXBsZW1lbnRlZCBhbmQgZG9jdW1lbnRlZCBjbGVhbiBtb2RlIChkZWxldGVzIGxpYnJhcmllcywKCSAgcHJvZ3JhbXMgYW5kIG9iamVjdCBmaWxlcyBhbmQgdGhlIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGVtKSwKCSAgaWYgYnVpbGRfbGlidG9vbF9saWJzPW5vIGFuZCBubyBzdGF0aWMgbGlicmFyeSBpcyBhdmFpbGFibGUsCgkgIHRyeSB0byBsaW5rIHRoZSBwcm9ncmFtIGFnYWluc3QgdGhlIHNoYXJlZCBsaWJyYXJ5LAoJICBkb24ndCBhZGQgYSBzdGF0aWNhbGx5IGxpbmtlZCBsaWJyYXJ5IHRvIHRoZSBkZXBlbmRlbmN5X2xpYnMKCSogbHRtYWluLmluIChoZWxwIHVuaW5zdGFsbCk6IGFkZGVkIGEgbWlzc2luZyBiYWNrc2xhc2gKCSAgYWZ0ZXIgZWNobyAocmVwb3J0ZWQgYnkgT3NzYW1hIE90aG1hbikKCjE5OTktMDQtMjcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluIChvbGRfYXJjaGl2ZV9jbWRzKTogSXRlcmF0ZSBvbiBvbGRvYmpzIHRvIGZpbmQgb3V0Cgl3aGljaCBsaW5rcyB0byBvYmplY3QgZmlsZXMgd2UgbXVzdCBjcmVhdGUuICBEbyBub3QgdGVzdCBmb3IgZW1wdHkKCXBpY19mbGFnIHRvIGNyZWF0ZSBzdWNoIGxpbmtzLiAgVXNlIG9iamV4dCB3aGVuIHNlYXJjaGluZyBmb3IKCW9iamVjdCBmaWxlcyBleHRyYWN0ZWQgZnJvbSBjb252ZW5pZW5jZSBsaWJyYXJ5LgoKCSogbHRjb25maWcuaW4gKGNvbXBpbGVyX2Nfbyk6IE1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgZG9lcyBub3QKCWNyZWF0ZSB0ZW1wb3JhcmllcyBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2hlbiBvdXRwdXQgc2hvdWxkIGdvCgllbHNld2hlcmUuICBXZSBtdXN0IHBlcmZvcm0gbG9ja2luZyBpZiBpdCBkb2VzLgoKMTk5OS0wNC0yNyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdG1haW4uaW4gKG9sZF9hcmNoaXZlX2NtZHMpOiBFbnN1cmUgdGhhdCB0aGVyZSBhcmUgYWx3YXlzIC5vCglvYmplY3RzIGF2YWlsYWJsZSBiZWZvcmUgcnVubmluZyBvbGRfYXJjaGl2ZV9jbWRzLgoKMTk5OS0wNC0yNiAgRXJleiBaYWRvayAgPGV6a0Bjcy5jb2x1bWJpYS5lZHU+CgoJKiBkb2MvUExBVEZPUk1TOiBVcGRhdGVzIGZvciBuZXRic2QgMS4zLjMgYW5kIDEuNC4KCjE5OTktMDQtMjYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGFpeDQuWzAxXSwgYWx3YXlzX2V4cG9ydF9zeW1ib2xzKTogVGhlIGNhc2UgcGF0dGVybgoJd291bGQgbmV2ZXIgbWF0Y2g7IGZpeGVkLgoJUmVwb3J0ZWQgYnkgU3RlcGhhbiBLdWxvdyA8Y29vbG9AaXRtLm11LWx1ZWJlY2suZGU+CgoxOTk5LTA0LTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYnRvb2wubTQgKE9CSkRVTVApOiBQYXNzIGl0IHRvIGx0Y29uZmlnLgoJKiBjb25maWd1cmUuaW46IEFDX1NVQlNUIERMTFRPT0wsIE9CSkRVTVAgYW5kIEFTLgoJKiBNYWtlZmlsZS5hbSAobGlidG9vbCwgY2xpYnRvb2wpOiBQYXNzIHRoZW0gdG8gbHRjb25maWcuCgoxOTk5LTA0LTI1ICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUBjeWdudXMuY29tPgoKCSogbGlidG9vbC5tNCAoY3lnd2luKik6IExvb2sgZm9yIHRhcmdldCBvYmpkdW1wIHRvb2wuCgkqIGx0Y29uZmlnLmluIChjeWd3aW4qLCBmaWxlX21hZ2ljX2NtZCk6IFVzZSBhdXRvY29uZi1sb2NhdGVkIHRhcmdldAoJb2JqZHVtcCB0b29sLiAgVHJhY2sgT0JKRFVNUCBsaWtlIERMTFRPT0wgYW5kIEFTLgoKCSogbHRjb25maWcuaW4gKGN5Z3dpbiosIGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogQWNjZXB0CgkiYXJjaGl0ZWN0dXJlOiBpMzg2IiBhcyBvcHRpb25hbCBzdWZmaXgsIGZvciBpdCBpcyBwcmludGVkIG9uIGEKCXNlcGFyYXRlIGxpbmUgc29tZXRpbWVzLgoKCSogbHRtYWluLmluIChjeWd3aW4qLCBsdGRsbC5jKTogV3JhcCBEbGxNYWluIGRlY2xhcmF0aW9uIGluIGV4dGVybiAiQyIuCgoJKiBsdG1haW4uaW4gKGRlcGxpYnNfY2hlY2tfbWV0aG9kPWZpbGVfbWFnaWMpOiBSZWRpcmVjdCBzdGRlcnIgdG8KCS9kZXYvbnVsbCwgdG8gc3VwcHJlc3MgZXJyb3IgbWVzc2FnZXMgZnJvbSB0YXJnZXQgb2JqZHVtcC4KCjE5OTktMDQtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGlyaXgqLCBzb25hbWVfc3BlYywgbGlicmFyeV9uYW1lc19zcGVjKTogTWlzc2luZwoJZG90cyBiZWZvcmUgJHZlcnN1ZmZpeCBhbmQgJG1ham9yLgoKCSogbHRjb25maWcuaW4gKHNvbGFyaXMqLCB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyk6IFVzZSAtegoJYWxsZXh0cmFjdC9kZWZhdWx0ZXh0cmFjdCBmcm9tIFNvbGFyaXMgMi42IG9uLgoJUmVwb3J0ZWQgYnkgQnJpYW4gRm9yZCA8Zm9yZEB2c3MuZnNpLmNvbT4KCgkqIGx0Y29uZmlnLmluIChiZW9zKiwgYWxsb3dfdW5kZWZpbmVkX2ZsYWcpOiBEbyBub3QgYnVpbGQgc2hhcmVkCglsaWJyYXJpZXMgd2l0aCB1bmRlZmluZWQgc3ltYm9scy4KCgkqIGx0Y29uZmlnLmluIChhaXg0KiwgYWxsb3dfdW5kZWZpbmVkX2ZsYWcpOiBTZXQgdG8gLWJlcm9rLgoJKGFpeDQqLCBzaGFyZWRfZmxhZyk6IFNldCB0byAtc2hhcmVkIG9yICR7d2x9LWJNOlNSRS4KCShhaXg0KiwgYXJjaGl2ZV9jbWRzKTogVXNlIC1iZXhwYWxsLgoJKGFpeDQqLCBhcmNoaXZlX2NtZHMsIGFyY2hpdmVfZXhwc3ltX2NtZHMpOiBVc2Ugc2hhcmVkX2ZsYWcgYW5kCglhbGxvd191bmRlZmluZWRfZmxhZy4KCShhaXg0KiwgYWx3YXlzX2V4cG9ydF9zeW1ib2xzKTogU2V0IHRvIHllcyB1cCB0byBBSVggNC4xLiosCgliZWNhdXNlIC1iZXhwYWxsIGlzIHN1cHBvcnRlZCBmcm9tIDQuMiBvbi4KCVJlcG9ydGVkIGJ5IEdyZWcgV29vbGVkZ2UKCTxpYzUwMzUldHNzMWNycy5hbWdyZWV0aW5ncy5jb21Acm9zZS5hbWdyZWV0aW5ncy5jb20+CgoJKiBsdGNvbmZpZy5pbiAoaHB1eCosIGhhcmRjb2RlX21pbnVzX0wpOiBTZXQgdG8geWVzLgoJKGhwdXgqLCBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjKTogRG8gbm90IHVzZSArcyBieSBkZWZhdWx0LgoJKGhwdXgqLCBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgpOiBTZXQgdG8gbm8uCgoJKiBsdGNvbmZpZy5pbiAoaXJpeCosIG9zZiosIGFyY2hpdmVfY21kcyk6IFdyaXRlIHNvX2xvY2F0aW9ucwoJd2l0aGluIG9iamRpci4KCgkqIGx0Y29uZmlnLmluIChpcml4Kiwgc29uYW1lX3NwZWMpOiBBcHBlbmQgJG1ham9yLgoJKGlyaXgqLCBsaWJyYXJ5X25hbWVzX3NwZWMpOiBBZGQgbmV3IHNvbmFtZS4KCVJlcG9ydGVkIGJ5IERhdmlkIEthZWxibGluZyA8ZHJrQHNnaS5jb20+CgoJKiBsdGNvbmZpZy5pbiAoaXJpeCosIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjKTogL3Vzci9sb2NhbC9saWIKCWlzIG5vdCBzZWFyY2hlZCBieSBkZWZhdWx0LiAgL3Vzci9saWIgaXMgc2VhcmNoZWQgYmVmb3JlIC9saWIuCgkqIGx0Y29uZmlnLmluIChpcml4Kiwgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjKTogL3Vzci9saWIgaXMKCXNlYXJjaGVkIGJlZm9yZSAvbGliLgoKCSogbHRjb25maWcuaW4gKGlyaXg1KiwgbmVlZF9saWJfcHJlZml4LCBuZWVkX3ZlcnNpb24pOiBTZXQgdG8gbm8sCglieSB1bmlmeWluZyB3aXRoIGlyaXg2Ki4KCgkqIGx0Y29uZmlnLmluIChpcml4Kiwgb3NmKiwgZGVwbGlic19jaGVja19tZXRob2QpOiBVc2UgcGFzc19hbGwuCgoJKiBsdGNvbmZpZy5pbiAob2xkX0xERkxBR1MsIG9sZF9MSUJTKTogU2F2ZSBhbmQgd3JpdGUgdG8gY29tbWVudHMKCWluIG91dHB1dCBmaWxlLgoKCSogbHRtYWluLmluIChwcmVmZXJfc3RhdGljX2xpYnMpOiBOZXcgdmFyaWFibGUsIHNldCB0byBubyBieQoJZGVmYXVsdCwgYnV0IHNldCB0byB5ZXMgYnkgLXN0YXRpYyBhbmQgLWFsbC1zdGF0aWMuICBVc2VkIGluc3RlYWQKCW9mIGJ1aWxkX2xpYnRvb2xfbGlicyB0byBkZWNpZGUgd2hldGhlciB0byB1c2UgYSBzaGFyZWQgb3Igc3RhdGljCgl2ZXJzaW9uIG9mIGEgbGlicmFyeSwgd2hlbiBib3RoIHZlcnNpb25zIGFyZSBhdmFpbGFibGUuCgoxOTk5LTA0LTI1ICBCb3lkIEx5bm4gR2VyYmVyICA8Z2VyYmVyYkB6ZW5lei5jb20+CgoJKiBsdGNvbmZpZy5pbiAoc2NvMy4ydjUqKTogVXNlIExEX1JVTl9QQVRIIGZvciBoYXJkLWNvZGluZy4KCjE5OTktMDQtMjUgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKHVuaW5zdGFsbC1sb2NhbCk6IFJlbW92ZSBpbnN0YWxsZWQgbGlibHRkbCB0cmVlLgoKMTk5OS0wNC0yNSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkZW1vL01ha2VmaWxlLmFtIChoYy1kaXJlY3QsIGhjLWxpYmZsYWcsIGhjLWxpYnBhdGgsIGhjLW1pbnVzbCk6CglBZGRlZCBDRkxBR1MgdG8gbGluayBjb21tYW5kczsgU0NPIE9TUiBuZWVkcyBpdCBmb3IgLWJlbGYuCgoJKiBUT0RPOiAtV2wgYW5kIC1XYyBvcHRpb25zLgoKMTk5OS0wNC0xMiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsaWJsdGRsL2x0ZGwuYzogUmVtb3ZlIHRyaXZpYWwgd2FybmluZ3MuCgoxOTk5LTA0LTIyICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUBjeWdudXMuY29tPgoKCSogbHRjb25maWcuaW46IENvcnJlY3Qgc2VkIGV4cHJlc3Npb24gdGhhdCBleHRyYWN0cyBzeW1ib2xzCglmcm9tIGN5Z3dpbiBkZWYgZmlsZXMuICBJZ25vcmUgZGVtYW5nbGVkIEMrKyBuYW1lcywgaWYgYW55LgoKMTk5OS0wNC0xMiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMuY2E+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoc2hsX2Nsb3NlKTogc2hsX3Qgd2FzIGNvcnJlY3QgaGVyZS4uLgoJKHNobF9zeW0pOiAuLi4gYnV0IHdlIGhhdmUgdG8gcGFzcyB0aGUgaGFuZGxlIGJ5IHJlZmVyZW5jZSBoZXJlLgoKMTk5OS0wNC0xMiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChJbnZva2luZyBsdGNvbmZpZyk6IERvY3VtZW50IGVudmlyb25tZW50Cgl2YXJpYWJsZXMgdXNlZC4KCgkqIGRvYy9saWJ0b29sLnRleGkgKEludm9raW5nIGx0Y29uZmlnKTogRG9jdW1lbnQgLS1jYWNoZS1maWxlLgoKCSogZG9jL2xpYnRvb2wudGV4aSAoSW52b2tpbmcgbHRjb25maWcpOiBEb2N1bWVudAoJLS1kaXNhYmxlLWZhc3QtaW5zdGFsbCwgLS1lbmFibGUtZGxvcGVuLCAtLXdpdGgtZ251LWxkIGFuZAoJLS1kaXNhYmxlLWxvY2suCgoxOTk5LTA0LTExIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbGlibHRkbC9jb25maWd1cmUuaW46IGNoZWNrIGZvciBzaGxfbG9hZCBpbiBsaWJkbGQKCSogbGlibHRkbC9sdGRsLmMgKHNobF9jbG9zZSwgc2hsX3N5bSk6IHVzZSAoc2hsX3QgKikgaW5zdGVhZCBvZiBzaGxfdAoJKiBsdGNvbmZpZy5pbiAoY2hlY2sgZm9yIGdjYyk6IHJlbW92ZWQgYSBib2d1cyBsaW5lLAoJICBjaGVjayBmb3Igc2hsX2xvYWQgaW4gbGliZGxkCgkqIGx0bWFpbi5pbjogYWRkZWQgYSB3YXJuaW5nIHRvIHRoZSBoZWFkZXIgb2YgdGhlIC5sYSBmaWxlCgkgIHRvIHdhcm4gdXNlcnMgYWdhaW5zdCBkZWxldGluZyB0aGUgZmlsZSwKCSAgbGluayBzaGFyZWQgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzIGlmCgkgIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09IHBhc3NfYWxsCgoxOTk5LTA0LTEwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYnRvb2wubTQgKEFDX1BST0dfTEQsIEFDX1BST0dfTk0pOiBXaGVuIGxvb2tpbmcgZm9yIHByb2dyYW1zLAoJdHJ5ICRhY19leGVleHQgdG9vLCBzbyB0aGF0IHRoZXkncmUgZm91bmQgb24gREpHUFAvTVMtRE9TLgoJKiBsdGNvbmZpZy5pbjogTGlrZXdpc2UuCglSZXBvcnRlZCBieSBSb2JlcnQgUy4gTWFpZXIgPHJzbUBtYXRoLmFyaXpvbmEuZWR1PgoKCSogbHRjb25maWcuaW4gKFVzYWdlKTogUmVtb3ZlZCAtLWVuYWJsZS1kbG9wZW4tc2VsZi4KCVJlcG9ydGVkIGJ5IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBsdGNvbmZpZy5pbjogTW92ZWQgc3lzdjQgYmVmb3JlIHN5c3Y0LiouCgkoc3ltY29kZSk6IEJyaWFuJ3Mgb3ZlcnJpZGVyIGlzIHNwZWNpZmljIHRvIHN5c3Y0LCBub3Qgc3lzdjQqLgoKMTk5OS0wNC0wOSBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIE5FV1MsIFJFQURNRTogTW90b3JvbGEgU3lzdGVtIFYgNCBzdXBwb3J0CgkqIGRvYy9QTEFURk9STVM6IGFkZGVkIG1rODgtbW90b3JvbGEtc3lzdjQKCSogbHRjb25maWcuaW46IGluc3RhbGxlZCBwYXRjaCBmcm9tIEJyaWFuIEZvcmQgPGZvcmRAdnNzLmZzaS5jb20+CgkgIHRvIHN1cHBvcnQgbWs4OC1tb3Rvcm9sYS1zeXN2NAoKCSogZG9jL2xpYnRvb2wudGV4aTogc29tZSBjbGVhbnVwcyBpbiB0aGUgbGlibHRkbCBkb2N1bWVudGF0aW9uCgoxOTk5LTA0LTA3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluICgtLWZhbGxiYWNrLWVjaG8pOiBEbyBub3QgcHV0IGFuIGlubGluZSBkb2N1bWVudCBhbmQKCWFuIGV4ZWMgaW4gdGhlIHNhbWUgaWYgY29uc3RydWN0OyBvdGhlcndpc2UgdGhlIGlubGluZSBkb2N1bWVudAoJbWF5IG5vdCBiZSByZW1vdmVkLgoJKiBsdG1haW4uaW4gKC0tZmFsbGJhY2stZWNobyk6IExpa2V3aXNlLgoJUmVwb3J0ZWQgYnkgSm9obiBEYXZpZCBBbmdsaW4gPGRhdmUuYW5nbGluQG5yYy5jYT4KCgkqIGRyeXJ1bi50ZXN0OiBJdCB3b3VsZCBzdGlsbCBmYWlsIGF0IHJhbmRvbSB0aW1lcywgYmVjYXVzZSBgY3AnCglhbmQgYG12JyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gcHJlc2VydmUgdGhlIHRpbWVzdGFtcHMgb2YgdGhlCglpbnN0YWxsZWQgZmlsZXMuICBJbnN0ZWFkIG9mIHByZXNlcnZpbmcgdGhlbSwganVzdCByZW1vdmUgdGhlbQoJYmVmb3JlIHRoZSBkcnkgdW5pbnN0YWxsIHRlc3QuICBSZWRpcmVjdCBkcnktcnVuIG91dHB1dCB0byBzdGRlcnIsCglzbyB0aGF0IGl0IGNhbiBiZSBlYXNpbHkgc2VwYXJhdGVkIGZyb20gdGhlIHJlZ3VsYXIgb3V0cHV0LgoKMTk5OS0wNC0wNyBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIE5FV1M6IHN1cHBvcnQgZm9yIG1vdmVkIGxpYnJhcmllcwoJKiBsaWJ0b29sLm00OiBhbm90aGVyIERKR1BQIGZpeAoKMTk5OS0wNC0wNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkb2MvUExBVEZPUk1TOiBVcGRhdGVkIHRvIDEuMyBmb3IgYWxsIHBsYXRmb3JtcyBJJ3ZlIGdvdC4gIEknbGwKCW1ha2Ugc3VyZSAxLjMgd29uJ3QgYmUgcmVsZWFzZWQgdW5sZXNzIGl0IHBhc3NlcyBhbGwgdGVzdHMgb24KCXRob3NlIHBsYXRmb3Jtcy4KCgkqIGRvYy9saWJ0b29sLnRleGkgKENvbXBpbGUgbW9kZSk6IERvY3VtZW50IHBvdGVudGlhbCBwcm9ibGVtIGFuZAoJd29yay1hcm91bmQgZm9yIGAtYyAtbyBkaXIvZm9vLmxvJy4KCgkqIHRlc3RzL2RyeXJ1bi50ZXN0OiBUaGUgY29uc3RhbnQgbW9kaWZpY2F0aW9ucyBvZiBsaWJ0b29sIHdvdWxkCgljYXVzZSBtYWluLm8gdG8gYmUgdXBkYXRlZCBhdCB0aGUgd3JvbmcgdGltZTsgdGhlIG5ldyBhcHByb2FjaCBpcwoJdG8gbW9kaWZ5IHRoZSBsaWJ0b29sIHNjcmlwdCBzbyB0aGF0IGl0IGVuYWJsZXMgZHJ5IHJ1biBkZXBlbmRpbmcKCW9uIHdoZXRoZXIgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IG9yIG5vdC4gIEkndmUgYWxzbyBtb3ZlZAoJYGFmdGVyJyBhbmQgYGJlZm9yZScgdG8gYSBkaXJlY3RvcnkgZGVlcCB3aXRoaW4gJG9iamRpciwgaW5zdGVhZAoJb2YgY3JlYXRpbmcgaXQgaW4gLi4vdGVzdHMuCgkqIHRlc3RzL01ha2VmaWxlLmFtIChDTEVBTkZJTEVTKTogUmVtb3ZlZC4KCjE5OTktMDQtMDYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogdGVzdHMvZHJ5cnVuLnRlc3Q6IFdlIGNhbm5vdCByZWx5IG9uIHNldHRpbmcgTElCVE9PTCwgYmVjYXVzZQoJYXV0b21ha2UgbWF5IHVzZSBzdWItbWFrZXMsIGFuZCB0aGUgc2V0dGluZyB3aWxsIG5vdCBiZSBwcm9wYWdhdGVkCgl0byB0aGVtIG9uIHNvbWUgbWFrZXMuICBJbnN0ZWFkLCBjcmVhdGUgYSBkcnkgdmVyc2lvbiBvZiBsaWJ0b29sCglhbmQgc3dpdGNoIGJldHdlZW4gaXQgYW5kIHRoZSBvcmlnaW5hbCBvbmUgYmVmb3JlIGFuZCBhZnRlciBkcnkKCXJ1bnMuCgkqIHRlc3RzL01ha2VmaWxlLmFtIChDTEVBTkZJTEVTKTogQWRkZWQgbGlidG9vbC0qLCBjcmVhdGVkIGJ5CglkcnlydW4udGVzdC4KCgkqIHRlc3RzL2RyeXJ1bi50ZXN0OiBVc2UgY21wIGluc3RlYWQgb2YgZGlmZi4KCShiZWZvcmUsIGFmdGVyKTogQ3JlYXRlIHRoZW0gd2l0aGluIC4uL3Rlc3RzLgoJKGxpYnRvb2wpOiBTZXQgdG8gYC9iaW4vc2ggLi9saWJ0b29sJyBieSBkZWZhdWx0LCBidXQgdXNlIExJQlRPT0wsCglTSEVMTCBhbmQgdG9wX2J1aWxkZGlyIGZyb20gdGhlIGVudmlyb25tZW50IGlmIGF2YWlsYWJsZS4gIEZvciBkcnkKCXJ1bnMsIHVzZSAiJGxpYnRvb2wgLW4iLgoJKiB0ZXN0cy9NYWtlZmlsZS5hbSAoQ0xFQU5GSUxFUyk6IEFkZGVkIGJlZm9yZSBhbmQgYWZ0ZXIuCgkqIGx0bWFpbi5pbjogRG8gbm90IGNyZWF0ZSBsaW5rcyB0byBvYmplY3QgZmlsZXMgaW4gZHJ5IHJ1bnMuCgoxOTk5LTA0LTA2IFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbHRtYWluLmluOiBhZGRlZCBhIG1pc3NpbmcgbGluZSBvZiB0aGUgSUxEIHBhdGNoCgoJKiBORVdTOiBpbXByb3ZlZCBESkdQUCBzdXBwb3J0CgkqIGRvYy9saWJ0b29sLnRleGk6IHJlbW92ZWQgaGFyZGNvZGVfaW50b19saWJzIGRvY3VtZW50YXRpb24KCSogbGlidG9vbC5tNDogc29tZSBESkdQUCBmaXhlcwoJKiBsdGNvbmZpZy5pbjogZGl0dG8sIHJldmVydGVkIG9uZSBvZiBteSBwcmV2aW91cyBwYXRjaGVzOiB3ZSBuZWVkCgkgIHRvIGNoZWNrIGZvciBOTSwgcmVtb3ZlZCB0aGUgaGFyZGNvZGVfaW50b19saWJzIHN1cHBvcnQgc2luY2UKCSAgbm8gcGxhdGZvcm0gc2VlbXMgdG8gc3VwcG9ydCBpdAoJKiBsdG1haW4uaW46IHNvbWUgREpHUFAgZml4ZXMsIHJlbW92ZWQgdGhlIGhhcmRjb2RlX2ludG9fbGlicyBzdXBwb3J0CgoxOTk5LTA0LTA1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChuZXRic2QqLCBHTlUgbGQpOiBTdXBwb3J0IGEub3V0IHNoYXJlZCBsaWJyYXJpZXMKCgkqIE1ha2VmaWxlLmFtIChDVlMpOiBhbGxvdyBjb21tYW5kLWxpbmUgb3ZlcnJpZGluZyBvZiBjdnMKCgkqIGx0Y29uZmlnLmluIChleGNsdWRlX2V4cHN5bXMpOiBFeGNsdWRlIF9HTE9CQUxfT0ZGU0VUX1RBQkxFXyBieQoJZGVmYXVsdCwgYXMgbW9zdCBhLm91dCBwbGF0Zm9ybXMgdXNlIGl0LCBhbmQgZW5kIHVwIGluIHRyb3VibGUgaWYKCXdlIHByZWxvYWQgaXQsIHNvIGl0J3Mgc2FmZXIgdG8gcnVsZSBpdCBvdXQgYnkgZGVmYXVsdCwgYW5kCglzcGVjaWFsIGNhc2UgaXRzIHJlbW92YWwgZnJvbSBleGNsdWRlX2V4cHN5bXMgaWYgc29tZW9uZSBldmVyCgljb21wbGFpbnMuCgoxOTk5LTA0LTA1IFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogZG9jL2xpYnRvb2wudGV4aTogcmVvcmRlciB0ZXN0cyB0byByZWZsZWN0IGV4ZWN1dGlvbiBvcmRlciwKCSAgZG9jdW1lbnRlZCBkcnlydW4udGVzdCBhbmQgZGVwZGVtbyoKCSogbHRtYWluLmluIChsdF9wcmVsb2FkZWRfc3ltYm9scyk6IGRyeS1ydW4gbW9kZSBidWdmaXgKCSogdGVzdHMvZHJ5cnVuLnRlc3Q6IG5ldyB0ZXN0IHRvIGNoZWNrIHdoZXRoZXIgdGhlIGRyeS1ydW4KCSAgbW9kZSB3b3JrcyBwcm9wZXJseQoKCSogZGVtby9ydW4udGVzdDogcmVtb3ZlZCB0aGUgdW5uZWNlc3NhcnkgdGVzdAoJKiBkZW1vL01ha2VmaWxlLmFtOiBkaXR0bwoJKiBsdG1haW4uaW46IHNldCB0aGUgRExMIHNlYXJjaCBwYXRoIG9uIGN5Z3dpbixtaW5ndyBhbmQgb3MyCgoxOTk5LTA0LTA0ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChzdW5vczQqLCBHTlUgbGQpOiAtQnN0YXRpYyBpcyBub3QgZW5vdWdoIGZvcgoJZGVwbGlicy50ZXN0IHRvIHdvcmsgd2l0aCBHTlUgbGQ7IC1Cc2hhcmVhYmxlIGlzIG5lZWRlZCBoZXJlLgoKCSogbHRjb25maWcuaW4gKGxkX3NobGlicywgYW1pZ2FvcyopOiBEaXNhYmxlIHNoYXJlZCBsaWJzIHdpdGgKCW5hdGl2ZSBsZCB0b28uCgoJKiBsdGNvbmZpZy5pbiAoc3Vub3M0KiwgR05VIGxkKTogUmVvcmRlcmVkLgoKCSogbHRjb25maWcuaW4gKGFyY2hpdmVfY21kcywgc3Vub3M0Kik6IFJldmVydCB0byAtQnN0YXRpYzsgdGhlCgluYXRpdmUgbGlua2VyIGRvZXNuJ3QgZXZlbiBzdXBwb3J0IC1Cc2hhcmVhYmxlLCBvbmx5IEdOVSBsZCBkb2VzLgoJRG8gbm90IHVzZSBgZ2NjIC1zaGFyZWQnIGluIGFyY2hpdmVfY21kcywgaXQgYnJlYWtzIGRlcGxpYnMudGVzdC4KCgkqIGx0Y29uZmlnLmluOiBpZiBsZF9zaGxpYnM9bm8sIHNldCBjYW5fYnVpbGRfc2hhcmVkPW5vIHRvbywKCW90aGVyd2lzZSBpdCB3aWxsIGp1c3QgYmUgZGlzcmVnYXJkZWQuICBUaGlzIHdvdWxkIGNhdXNlCgluZXRic2QvbTY4ayB3aXRoIEdOVSBsZCBhLm91dCwgYW5kIGNlcnRhaW5seSBtYW55IG90aGVyIHBsYXRmb3JtcywKCXRvIGluY29ycmVjdGx5IGJlbGlldmUgdGhhdCBzaGFyZWQgbGlicmFyaWVzIHdlcmUgc3VwcG9ydGVkLCB3aGlsZQoJYXJjaGl2ZV9jbWRzIHdhcyBlbXB0eSwgY2F1c2luZyBzaGFyZWQgbGlicmFyaWVzIG5vdCB0byBiZSBjcmVhdGVkCgoxOTk5LTA0LTAzICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIE5FV1M6IGltcHJvdmVkIHN1cHBvcnQgZm9yIEFJWCBhbmQgSFAvVVgKCjE5OTktMDQtMDMgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBORVdTOiB1cGRhdGVkCgkqIGxpYnRvb2wubTQ6IGNoZWNrIGZvciBtYWluIGluIGxpYm0gaW5zdGVhZCBvZiBjb3MKCSogbHRtYWluLmluOiBjb3NtZXRpYyBmaXhlcywgZG9uJ3QgdHJ5IHRvIGxpbmsgbGlicmFyaWVzIG9ubHkgb25jZQoJICAoYWx0aG91Z2ggaXQncyBub3QgbmVjZXNzYXJ5IG9uIG1hbnkgcGxhdGZvcm1zIGFuZCBsb29rcyB1Z2x5Li4uKSwKCjE5OTktMDQtMDIgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluIChjb252ZW5pZW5jZSk6IGZpeGVkIHJhY2UgY29uZGl0aW9uIHdoZW4gbW9yZSB0aGFuIG9uZQoJbGlicmFyeSB3YXMgbGlua2VkIHdpdGggdGhlIHNhbWUgY29udmVuaWVuY2UgbGlicmFyeSBieQoJdW5pcXVpZnlpbmcgdGhlIGV4dHJhY3QgZGlyZWN0b3J5LiAgSXQgaXMgbm93IG5hbWVkIGFmdGVyIHRoZSBuZXcKCWxpYnJhcnkgKmFuZCogdGhlIG9sZCBvbmUsIGFuZCBsaXZlcyBpbiB0aGUgb2JqZGlyIG9mIHRoZSBuZXcgb25lLgoKCSogbHRtYWluLmluICgtTCopOiBkbyBub3QgYWJvcnQganVzdCBiZWNhdXNlIGEgZGlyZWN0b3J5IHNwZWNpZmllZAoJd2l0aCAtTCBkb2VzIG5vdCBleGlzdDsganVzdCB3YXJuIGFuZCBkaXNjYXJkIGl0CgoJKiBkZXBkZW1vL2wxL01ha2VmaWxlLmFtIChBVVRPTUFLRV9PUFRJT05TKTogbm8tZGVwZW5kZW5jaWVzCgkqIGRlcGRlbW8vbDIvTWFrZWZpbGUuYW0gKEFVVE9NQUtFX09QVElPTlMpOiBkaXR0bwoJKiBkZXBkZW1vL2wzL01ha2VmaWxlLmFtIChBVVRPTUFLRV9PUFRJT05TKTogZGl0dG8KCSogZGVwZGVtby9sNC9NYWtlZmlsZS5hbSAoQVVUT01BS0VfT1BUSU9OUyk6IGRpdHRvCgoJKiBsdGNvbmZpZy5pbiAoYXJjaGl2ZV9jbWRzLCBzdW5vczQqKTogd2hlcmUgd2UgdXNlZCAtQnN0YXRpYywgd2UKCXNob3VsZCBoYXZlIGJlZW4gdXNpbmcgLUJzaGFyZWFibGUKCgkqIGRlbW8vTWFrZWZpbGUuYW0gKENMRUFORklMRVMpOiBjbGVhbiBFWFRSQV8qIGZyb20gZGVwbGlicy1jaGVjawoKCSogbGlidG9vbC5tNCAoTERGTEFHUywgTElCUyk6IHBhc3MgdGhlbSB0byBsdGNvbmZpZywgZm9yIHRoZSB0ZXN0cwoJdGhhdCBpbnZvbHZlIGxpbmtpbmcKCSogTWFrZWZpbGUuYW0gKExERkxBR1MsIExJQlMsIGxpYnRvb2wsIGNsaWJ0b29sKTogZGl0dG8KCSogdGVzdHMvTWFrZWZpbGUuYW0gKENGTEFHUywgQ1BQRkxBR1MsIExERkxBR1MsIExJQlMpOiBzZXQKCShMREZMQUdTLCBMSUJTLCBURVNUU19FTlZJUk9OTUVOVCk6IHBhc3MgdGhlbSBkb3duCgoxOTk5LTA0LTAyICBFcmV6IFphZG9rICA8ZXprQGNzLmNvbHVtYmlhLmVkdT4KCgkqIGRvYy9QTEFURk9STVM6IDEuMmYgb2sgb24gdmFyaW91cyB2ZXJzaW9ucyBvZiBocHV4IGNjCgoxOTk5LTA0LTAyICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChsaW5rX2FsbF9kZXBsaWJzKTogc2V0IHRvIHVua25vd24gYnkgZGVmYXVsdAoJKiBsdG1haW4uaW46IHRlc3QgIT0gbm8sIG5vdCA9IHllcwoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCB1bmtub3duCgoxOTk5LTA0LTAxIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogZG9jL2xpYnRvb2wudGV4aTogZG9jdW1lbnRlZCBkZXBsaWJzLnRlc3QKCgkqIGRlbW8vTWFrZWZpbGUuYW06IG1vdmVkIHRlc3RzdWl0ZSBzcGVjaWZpYyBkZWNsYXJhdGlvbnMgdG8gdGhlIGVuZCwKCSAgdGhlIGRlcGxpYnMgY2hlY2sgaXMgbm93IG9wdGlvbmFsCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiByZWFkIGxpYnRvb2wgLS1jb25maWcgb25seSBvbmNlLAoJICBtZXJnZWQgQUNfU1lTX1NZTUJPTF9VTkRFUlNDT1JFK0FDX1NZU19OTV9QQVJTRSBmcm9tIGxpYnRvb2wubTQKCSogbGlidG9vbC5tNDogQUNfU1lTX1NZTUJPTF9VTkRFUlNDT1JFK0FDX1NZU19OTV9QQVJTRSB3ZXJlIG5vdAoJICB1c2VkLCBsdF9kbG9wZW4gYW5kIHNpbGVudCBtYXkgYmUgZW1wdHksIEFDX1NZU19MSUJUT09MX0NZR1dJTgoJICBubyBsb25nZXIgbmVjZXNzYXJ5CgkqIGx0Y29uZmlnLmluOiBOTSBpcyBhbHJlYWR5IGNoZWNrZWQgaW4gbGlidG9vbC5tNCwKCSogbHRtYWluLmluOiBhbHdheXMgbGluayBhbGwgc3RhdGljIGRlcGVuZGVuY3lfbGlicwoJKiB0ZXN0cy9NYWtlZmlsZS5hbTogYWRkZWQgZGVwbGlicy50ZXN0CgkqIHRlc3RzL2RlbW8tZXhlYy50ZXN0LCBkZW1vLWluc3QudGVzdDogcmVtb3ZlZCBoZWxsMAoJKiB0ZXN0cy9kZXBsaWJzLnRlc3Q6IG5ldyB0ZXN0IHRvIHRlc3QgdGhlIGRlcGxpYnNfY2hlY2tfbWV0aG9kCgoxOTk5LTAzLTMxIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbHRtYWluLmluOiBhbHdheXMgbGluayBhIGxpYnJhcnkgYmVmb3JlIGl0cyBkZXBlbmRlbmN5IGxpYnMKCSogbWRlbW8vTWFrZWZpbGUuYW06IHRlc3QgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4CgoxOTk5LTAzLTMwIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogZG9jL2xpYnRvb2wudGV4aTogZml4ZWQgYSB0eXBvCgkqIGxpYnRvb2xpemUuaW46IGFkZCB0aGUgbGlidG9vbCBzY3JpcHRzIHRvIGxpYmx0ZGwudGFyLmd6CgkqIGxpYnRvb2wubTQ6IGRvbid0IEFDX1NVQlNUKFVTRV9TWU1CT0xfVU5ERVJTQ09SRSksCgkgIEFDX0NIRUNLX0xJQk0gc2V0cyBMSUJNLCBBQ19MSUJMVERMX0lOU1RBTExBQkxFIGRvZXNuJ3Qgd29yawoJICB3aGVuIGxpYmx0ZGwgaXMgYWxyZWFkeSBpbnN0YWxsZWQKCSogKmRlbW8vTWFrZWZpbGUuYW06IHVzZSBMSUJNCgkqICpkZW1vL2NvbmZpZ3VyZS5pbjogQUNfU1VCU1QgTElCTQoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogdXNlIGFjX2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZSBpbnN0ZWFkIG9mCgkgIFVTRV9TWU1CT0xfVU5ERVJTQ09SRQoJKiBsdGNvbmZpZy5pbjogYWRkZWQgbGlua19hbGxfZGVwbGlicyB2YXJpYWJsZQoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCBpdAoJKiBsdG1haW4uaW46IGFsd2F5cyBzZWFyY2ggZm9yIGxpYm5hbWUubGEgLSBkb24ndCBldmFsIGxpYm5hbWVfc3BlYywKCSAgd2hlbiBsaW5raW5nIGxpYnJhcmllcyBhZ2FpbnN0IHN0YXRpYyBvbmVzIGp1c3QgcHJpbnQgYSB3YXJuaW5nCgkgIGFuZCBhZGQgdGhlbSB0byBkZXBlbmRlbmN5X2xpYnMsIGFkZCAtbGMgYmVmb3JlIGRlcGxpYnMsCgkgIGFsd2F5cyBsaW5rIGFsbCBkZXBlbmRlbmNpZXMgb2YgYSBzdGF0aWMgbGlicmFyeSBvciBpZgoJICBsaW5rX2FsbF9kZXBsaWJzIGlzIHllcywgaGFyZGNvZGUgbGlicmFyeSBwYXRocyBpZgoJICBoYXJkY29kZV9pbnRvX2xpYnMgaXMgbm8sIGRvbid0IGxpbmsgYWdhaW5zdCBkZXBlbmRlbmN5X2xpYnMKCSAgdGhhdCBhbHJlYWR5IGFyZSBkZXBsaWJzCgoxOTk5LTAzLTMwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChhaXg0KiwgY29sbGVjdDJuYW1lKTogbWFrZSBzdXJlIGNvbGxlY3QyIGV4aXN0cwoJYmVmb3JlIHJ1bm5pbmcgc3RyaW5nIG9uIGl0LCB0byBhdm9pZCBlcnJvcnMgb24gb2xkIGdjY3MKCVJlcG9ydGVkIGJ5IEVyZXogWmFkb2sgPGV6a0Bjcy5jb2x1bWJpYS5lZHU+CgoJKiBsdGNvbmZpZy5pbiAoYWl4NCosIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMpOiB1bmxlc3Mgd2UncmUKCXVzaW5nIGdjYyB3aXRoIG9sZCBjb2xsZWN0MiwgdXNlIC1iIGxpYnBhdGggdG8gaGFyZGNvZGUgdGhlCglsaWJyYXJ5IHNlYXJjaCBwYXRoCgoJKiBsdG1haW4uaW4sIGx0Y29uZmlnLmluOiByZXZlcnRlZCBtb3N0IG9mIHRoZSBxdW90aW5nIGNoYW5nZXMKCWZyb20gMTk5OS0wMy0yNTsgR2FyeSdzIGRlbGF5X3ZhcmlhYmxlX3N1YnN0IHBhdGNoIGZyb20gMTk5OS0wMi0xOQoJb2J2aWF0ZXMgaXQuICBLZWVwIG9ubHkgcXVvdGluZyBvZiAkUEFUSCwgZm9yIHVuaWZvcm1pdHkgd2l0aAoJb3RoZXIgc3lzdGVtcyB0aGF0IGFscmVhZHkgZGlkIGl0CgoxOTk5LTAzLTI5ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxhZGRzZWFyY2hkaXIpOiBGb3Jnb3QgdG8gbWFsbG9jYXRlIHRoZQoJZXh0cmEgYnl0ZSBvZiBtZW1vcnkgZm9yIHRoZSB0ZW1pbmF0aW5nIE5VTCwgYW5kIGZvcmdvdCB0bwoJc3RyY3B5IHRoZSBvcmlnaW5hbCBwYXRoIGluIHRvIHRoZSBuZXcgbWVtb3J5IGJlZm9yZSBhcHBlbmRpbmcKCXRoZSBuZXcgcGF0aCBjb21wb25vbmVudC4KCjE5OTktMDMtMjcgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBORVdTOiB1cGRhdGVkCgkqIFJFQURNRTogdXBkYXRlZCAoQmVPUyBzdXBwb3J0LCBubyBsb25nZXIgc2hhcmVkIGxpYnJhcmllcwoJICBzdXBwb3J0IGZvciBBbWlnYU9TKSwgY2xlYW51cHMsIHdlIGhhdmUgbm93IHR3byBtYWlsaW5nIGxpc3RzCgkqIFJFQU1ERS1hbHBoYTogYXV0b2dlbiAtPiBib290c3RyYXAsIHdlIGhhdmUgbm93IHR3byBtYWlsaW5nIGxpc3RzCgkqIFRIQU5LUzogYWRkZWQgWGF2aWVyIFBpYW5ldAoJKiBkb2MvUExBVEZPUk1TOiBCZU9TIHdvcmtzCgkqIGRvYy9saWJ0b29sLnRleGk6IHdlIGhhdmUgbm93IHRvIHR3byBtYWlsaW5nIGxpc3RzLAoJICB1cGRhdGVkIC1kbG9wZW4gc2VsZiBkb2N1bWVudGF0aW9uLCBkb2N1bWVudGVkIGxpYmx0ZGwncyBsaWNlbnNlLAoJICBwdXQgZWFjaCBhdXRob3IgaW4gYSBzZXBhcmF0ZSBsaW5lLAoJICBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBvbiB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcyBhcmUKCSAgbm93IHN1cHBvcnRlZCwgY2xlYW51cHMgYW5kIG1pbm9yIGNvcnJlY3Rpb25zCgkqIGxpYmx0ZGwvQ09QWUlORy5MSUI6IG5ldyBmaWxlCgkqIGxpYmx0ZGwvbHRkbC5bY2hdOiBhZGRlZCBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgTEdQTCBsaWNlbnNlCgkqIGxpYnRvb2wuc3BlYzogcmVtb3ZlZCwgaXQgd2FzIG91dGRhdGVkCgkqIE1ha2VmaWxlLmFtOiByZW1vdmVkIGxpYnRvb2wuc3BlYwoJKiBsdG1haW4uaW46IHVzZSBUTVBESVIgd2hlbiBwb3NzaWJsZSwgY3JlYXRlIGEgc3ViZGlyZWN0b3J5CgkgIGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LCBhZGRlZCAtZXhwb3J0LXN5bWJvbHMtcmVnZXggdG8gdGhlIGhlbHAsCgoxOTk5LTAzLTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGRlbW8vTWFrZWZpbGUuYW06IGNyZWF0ZSBhIHN0YXRpYyBsaWJyYXJ5LCBsaW5rIHR3byBsaWJ0b29sCglhcmNoaXZlcyB3aXRoIGl0LCB0aGVuIGxpbmsgdGhlIHByb2dyYW0gaGVsbDAgd2l0aCBib3RoCgkqIGRlbW8vaGVsbDEuYywgZGVtby9oZWxsMi5jOiBkdW1teSBmaWxlcyB1c2VkIHRvIGNyZWF0ZSB0aGUKCWxpYnRvb2wgYXJjaGl2ZXMgd2l0aG91dCBpbnRyb2R1Y2luZyBzeW1ib2wgY29uZmxpY3RzCgkqIHRlc3RzL2RlbW8tZXhlYy50ZXN0LCB0ZXN0cy9kZW1vLWluc3QudGVzdDogcnVuIHRoZSBuZXcgcHJvZ3JhbQoJKiBsdGNvbmZpZy5pbiAoaXJpeDUqLCBpcml4NiosIGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogcGFzc19hbGwKCgkqIGx0bWFpbi5pbiAoJFBBVEgpOiBpbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgUEFUSCwgYmV0dGVyIHByZXZlbnQKCWl0cyBleHBhbnNpb24gdGhlIGZpcnN0IHRpbWUgKl9jbWRzIHZhcmlhYmxlcyBhcmUgZXZhbCdlZC4gIE1vZGlmeQoJJHNob3cgd2l0aGluIGxvb3BzIHRoYXQgZXZhbCB0aGVtIHNvIGFzIHRvIGV4cGFuZCB2YXJpYWJsZXMKCSogbHRjb25maWcuaW4gKCpfY21kcyk6IHF1b3RlICQgc28gdGhhdCB0aGV5J3JlIG5vdCBleHBhbmRlZCBieQoJdGhlIGZpcnN0IGV2YWwKCjE5OTktMDMtMjUgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRtYWluLmluICgkUEFUSCk6ICBFeHBhbmQgYW55IHRpbGRlcyBpbiB0aGUgdXNlcnMgcGF0aCB0byB0aGUKCWNvbnRlbnRzIG9mICRIT01FIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggKl9jbWRzIHNwbGl0dGluZyBhbmQKCWV2YWx1YXRpb24uCgoxOTk5LTAzLTI0IFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogVE9ETzogc3VwcG9ydCAtZGxvcGVuIGZvciBsaWJyYXJpZXMKCSogZG9jL1BMQVRGT1JNUzogRXJleiBaYWRvayByZXBvcnRlZCB0aGF0IGxpYnRvb2wgd29ya3Mgb24gYnNkaSA0LjAuMQoJKiBkb2MvbGlidG9vbC50ZXhpIChsaWJsdGRsKTogbGlibHRkbCBzdXBwb3J0cyBCZU9TCgkqIGxpYmx0ZGwvbHRkbC5jOiBzaGxpYl9leHQgd2FzIGRlY2xhcmVkIGV2ZW4gaWYgTFRETF9TSExJQl9FWFQKCSAgZGlkbid0IGV4aXN0LCBwYXJ0aWFsbHkgcmV2ZXJ0ZWQgbXkgcHJldmlvdXMgcGF0Y2g6IEJlT1Mgd2lsbAoJICBhdXRvbWF0aWNhbGx5IHNlYXJjaCBpbiBBRERPTl9QQVRICgkqIGx0bWFpbi5pbjogZG9uJ3QgYWxsb3cgcmVsYXRpdmUgcnVuLXBhdGhzLCBmaXhlZCBhIHR5cG8gaW4gYSB3YXJuaW5nLAoJICBpZ25vcmUgLWRsb3BlbiBzZWxmIGZvciBsaWJyYXJpZXMgYW5kIG9iamVjdHMsCgkgIG9ubHkgYWNjZXB0IC1MIHBhdGhzIHRoYXQgZXhpc3QsIG1pbm9yIGNsZWFudXBzLAoJICBidWdmaXg6IGFkZCAtbGMgZm9yIG5vcm1hbCBsaWJyYXJpZXMsIG5vdCBjb252ZW5pY2VuY2UgbGlicmFyaWVzCgkgIHJlbW92ZWQgb2ZmZW5zaXZlIHdhcm5pbmdzL2NvbW1lbnRzCgoxOTk5LTAzLTI0ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChsZF9zaGxpYnMsIGFtaWdhb3MqKTogZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzCgoxOTk5LTAzLTIzICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiB0aGUgc2VkIGV4cHJlc3Npb24gZm9yIGZpbmRpbmcgdGhlIHNoYXJlZAoJbGlicmFyeSBleHRlbnNpb24gdXNlZCB0byB0aGluayB0aGUgLiBpbiBbLl0gZm9yIHRoZSBjeWd3aW4KCXNoYXJlZF9saWJyYXJ5X25hbWVzX3NwZWMgd2FzIHRoZSBzdGFydCBvZiB0aGUgZXh0ZW5zaW9uISEgIFdlIG5vdwoJcmVtb3ZlIGFueXRoaW5nIGluIHNxdWFyZSBicmFja2V0cyAoYXNzdW1pbmcgdGhhdCB0aGUgc3F1YXJlCglicmFja2V0cyBkZWxpbWl0IGEgc2VkIG9yIGV4cHIgZXhwcmVzc2lvbiB3aGljaCBpcyBub3QgcGFydCBvZiB0aGUKCWV4dGVuc2lvbikgYmVmb3JlIGxvb2tpbmcgZm9yIHRoZSBleHRlbnNpb24uCgoJKiBUT0RPIChjeWd3aW4pOiAgZm9vZCBmb3IgdGhvdWdodCByZTogbXV0dWFsbHkgZGVwZW5kYW50IGRsbHMuCgoxOTk5LTAzLTIxICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIHRlc3RzL2J1aWxkLXJlbGluay50ZXN0OiBpZiB3ZSByZWxpbmsgYW5kIGhhdmUgaGFyZGNvZGVfZGlyZWN0LAoJcmVtb3ZpbmcgYW4gdW5pbnN0YWxsZWQgbGlicmFyeSBicmVha3MgYW4gdW5pbnN0YWxsZWQgcHJvZ3JhbQoKCSogZG9jL2xpYnRvb2wudGV4aTogZG9jdW1lbnRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKCSogVE9ETzogcmVtb3ZlZCBlbnRyeSBhYm91dCBpdAoKCSogdGVzdHMvKi11bnN0LnRlc3Q6IGlmIGRpcmVjdG9yeSBpcyBub3QgY29uZmlndXJlZCwgc2tpcCBpdAoJKiB0ZXN0cy9kZW1vLnRlc3QsIHRlc3RzL21kZW1vLnRlc3Q6IHVudXNlZCwgcmVtb3ZlZAoJKiB0ZXN0cy9kZXBkZW1vLnRlc3Q6IGRpdHRvCgoxOTk5LTAzLTIwIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogZG9jL2xpYnRvb2wudGV4aSAobGluayBtb2RlKTogZG9jdW1lbnRhdGlvbiBmb3IgLW1vZHVsZSB1cGRhdGVkCgkqIGx0Y29uZmlnLmluOiBmYXN0LWluc3RhbGwgbW9kZSBkb2Vzbid0IHdvcmsgZm9yCgkgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKCSogbHRtYWluLmluOiBidWdmaXg6ICItZGxvcGVuIHNlbGYgWy1hbGxdLXN0YXRpYyIgd291bGRuJ3QgdXNlCgkgIGRsb3Blbl9zZWxmX3N0YXRpYywgYXV0b21hdGljYWxseSBlbmFibGUgLWV4cG9ydC1keW5hbWljIHdoZW4KCSAgdXNpbmcgIi1kbG9wZW4gc2VsZiIsCWFsd2F5cyBtYWtlIHJ1bi1wYXRocyBhYnNvbHV0ZSwKCSAgaWdub3JlIC1sYyBvbmx5IG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IGhhdmUgc3VjaCBhIGxpYnJhcnksCgkgIGNsZWFudXBzIGluIHRoZSBJTEQgY29kZSwgZmluZCBldmVuIGluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcwoJICB0aGF0IHdlcmUgbW92ZWQsIGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBETEwtaW1wb3J0IGxpYnJhcnkgd2UgbmVlZAoJICB0byBzZXQgbGlibmFtZSwgaW1wcm92ZWQgaGFyZGNvZGluZyBvZiBzaGxpYnBhdGggZm9yIGxpYnJhcmllcywKCSAgZG9uJ3QgZ2VuZXJhdGUgYW4gaW5zdGFsbGFibGUgcHNldWRvLWxpYnJhcnkgZm9yIGNvbnZlbmllbmNlCgkgIGxpYnJhcmllcywgYnVnZml4OiBleHBvcnRfc3ltYm9scyB3b3VsZCBiZSByZW1vdmVkIGltbWVkaWF0ZWx5CgkgIGJlZm9yZSBpdCBpcyB1c2VkCgoxOTk5LTAzLTE5IFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogdXNlIHRoZSBzYW1lIGhlYWRlciBpbiBhbGwgY29uZmlndXJlLmluJ3MgYW5kIE1ha2VmaWxlLmFtJ3MKCSogTkVXUzogaW1wcm92ZWQgc3VwcG9ydCBmb3IgQmVPUyBhbmQgQ3lnd2luCgkqIFRPRE86IElMRCBicmFuY2ggd2FzIG1lcmdlZCwgYWxsIGludGVybmFsIHZhcmlhYmxlcyBhbmQgbWFjcm9zCgkgIGFyZSBub3cgZG9jdW1lbnRlZAoJKiBkZW1vL01ha2VmaWxlLmFtOiB1c2UgJChMSUJTKSBpbnN0ZWFkIG9mIC1sbQoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudGVkIG5ldyB2YXJpYWJsZSBoYXJkY29kZV9pbnRvX2xpYnMKCSAgYW5kIHRocmVhZF9zYWZlX2ZsYWdfc3BlYywgcmVuYW1lZCBhbGwgQU1fRU5BQkxFL0RJU0FCTEVfKiBtYWNyb3MKCSAgdG8gQUNfKiwgZG9jdW1lbnRlZCBBQ19ESVNBQkxFX0ZBU1RfSU5TVEFMTCBhbmQgQUNfTElCVE9PTF9ETE9QRU4KCSogbGlibHRkbC9sdGRsLmM6IGFkZGVkIHR3byBuZXcgZXJyb3IgbWVzc2FnZXMgKGNhbm5vdF9vcGVuX2Vycm9yLAoJICBjYW5ub3RfY2xvc2VfZXJyb3IpLCB1c2UgdGhlbSB3aGVyZSBhcHByb3JpYXRlLAoJICBCZU9TIHN1cHBvcnQgKHRoYW5rcyB0byBYYXZpZXIgUGlhbmV0KSwgb24gQmVPUyBzZWFyY2ggbW9kdWxlcwoJICBhZGRpdGlvbmFsbHkgaW4gQURET05fUEFUSAoJKiBsaWJ0b29sLm00OiByZXdyb3RlIEFDX0NIRUNLX0xJQk06IEJlT1MgYW5kIEN5Z3dpbiBkb24ndCBoYXZlCgkgIGxpYm0gYW5kICotbmNyLXN5c3Y0LjMqIHJlcXVpcmVzIGxpYm13CgkqIGx0Y29uZmlnLmluOiBkb24ndCBjaGVjayBmb3IgTG9hZExpYnJhcnksIGhhcmRjb2RlIGRsb3BlbgoJICBjb25maWd1cmF0aW9uIGZvciBCZU9TIGFuZCBDeWd3aW4KCSogbHRtYWluLmluOiBmaXggc291cmNpbmcgb2YgLmxhIGZpbGVzIG9uIFNvbGFyaXMKCSAgKHBhdGNoIGJ5IFJhamEgUiBIYXJpbmF0aCkKCjE5OTktMDMtMTkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKHN1bm9zNCosIHdpdGhfZ251X2xkLCBoYXJkY29kZV9taW51c19MKTogcmVtb3ZlLAl3ZQoJaGF2ZSAtcnBhdGgKCShhaXg0Kiwgd2l0aG91dF9nbnVfbGQsIGhhcmRjb2RlX3NobGlicGF0aF92YXIpOiB1bnN1cHBvcnRlZCBpcwoJZGVmYXVsdAoJKGhwdXg5KiwgaHB1eDEwKiwgaHB1eDExKiwgYXJjaGl2ZV9jbWRzKTogZHJvcCArcywgdW5uZWVkZWQgaGVyZQoJKGhwdXg5KiwgaHB1eDEwKiwgaHB1eDExKiwgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyk6IGFkZCArcwoJYmVmb3JlICtiCgkoaHB1eDkqLCBocHV4MTAqLCBocHV4MTEqLCBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgpOiBzaW5jZSArcwoJYXBwZWFycyBiZWZvcmUgK2IsIHNldCBpdCB0byB5ZXMKCShoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCBoYXJkY29kZV9hY3Rpb24pOiBkbyBub3QgdXNlCglzaGxpYnBhdGhfdmFyIHRvIHNwZWNpZnkgdGhlIGNvbXBpbGUtdGltZSBzZWFyY2ggcGF0aDsgaXQgbG9zZXMsCglhbmQgd2UgbWF5IGVuZCB1cCBsaW5raW5nIHdpdGggcHJlLWluc3RhbGxlZCBvbGRlciB2ZXJzaW9ucyBvZgoJbGlicmFyaWVzIGluc3RlYWQgb2YgeWV0LXRvLWJlLWluc3RhbGxlZCBvbmVzCgkoKiwgaGFyZGNvZGVfZGlyZWN0LCBoYXJkY29kZV9taW51c19MKTogcmVtb3ZlIGVudHJpZXMgdGhhdCBzZXQKCXRoZW0gdG8gbm8sIHRoYXQgaXMgZGVmYXVsdAoKCSogZGVtby9NYWtlZmlsZS5hbSAoaGMtZGlyZWN0LCBoYy1saWJwYXRoLCBoYy1taW51c0wpOiBsaW5rIHdpdGgKCSQkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgaWYgYXZhaWxhYmxlLCB3aXRoIGxpYmRpcj0kKGxpYmRpciksCgl0byBtYWtlIHN1cmUgdGhlIGhhcmRjb2RlXyogdmFyaWFibGVzIHdpbGwgcHJvZHVjZSB0aGUgZXhwZWN0ZWQKCXJlc3VsdHMgZXZlbiBpbiB0aGUgcHJlc2VuY2Ugb2YgYSBoYXJkY29kaW5nIGZsYWc7IGRlcGVuZCBvbgoJbGliaGVsbG8ubGEgaGF2aW5nIGJlZW4gaW5zdGFsbGVkIGFscmVhZHkKCShoYy1saWJmbGFnKTogbGluayB3aXRoIHRoZSBpbnN0YWxsZWQgbGlicmFyeSwgYnV0IHRyeSB0bwoJaGFyZC1jb2RlIHRoZSB1bmluc3RhbGxlZCBvbmUKCSogZG9jL2xpYnRvb2wudGV4aTogZG9jdW1lbnQgdGhlIGNoYW5nZXMKCgkqIHRlc3RzLyoudGVzdDogd2hlbiBhIHRlc3QgZmFpbHMsIHNraXAgdGVzdHMgdGhhdCBkZXBlbmQgb24gaXQuCglJZiBhIGNlcnRhaW4gY29uZmlndXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLCBza2lwIGFsbCBpdHMgdGVzdHMuCgoJKiBkb2MvbGlidG9vbC50ZXhpOiByZW9yZGVyIHRlc3RzIHRvIHJlZmxlY3QgZXhlY3V0aW9uIG9yZGVyCgoJKiB0ZXN0cy9ub2luc3QtbGluay50ZXN0OiBuZXcgdGVzdAoJKiB0ZXN0cy9NYWtlZmlsZS5hbSAoVEVTVFMpOiBhZGRlZCBub2luc3QtbGluay50ZXN0CgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50IGl0CgoxOTk5LTAzLTE5ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0bWFpbi5pbiAoZGVwZW5kZW5jeV9saWJzKTogVGhlcmUgaXMgbm8gcmVhc29uIHRvIGluZmVyIHRoYXQKCXRoZSBwc2V1ZG8gbGlicmFyeSBpcyBpbnZhbGlkIGlmIGRlcGVuZGVuY3lfbGlicz0nJyBhdAoJaW5zdGFsbC10aW1lLCBvciBlbHNlIGxpYmx0ZGwvbGlibHRkbC5sYSBpcyBpbnZhbGlkISEKCjE5OTktMDMtMTggIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbWVyZ2VkIG15IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGNvZGUgZnJvbSB0aGUgSUxEIGJyYW5jaDoKCSogTkVXUzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdyBzdXBwb3J0ZWQKCSogY29uZmlndXJlLmluOiBhZGQgdGhlIGRlcGRlbW8gc3ViZGlyZWN0b3J5CgkqIGRlcGRlbW8vKjogbmV3IGRlbW8gdG8gZGVtb25zdHJhdGUgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMKCSogdGVzdHMvZGVwZGVtbyo6IG5ldyB0ZXN0cyBmb3IgZGVwZGVtbwoJKiBsdGNvbmZpZy5pbjogYWRkZWQgaGFyZGNvZGVfaW50b19saWJzICh3aGV0aGVyIGxpYnJhcnkgcGF0aHMKCSAgc2hvdWxkIGJlIGhhcmRjb2RlZCBpbnRvIHRoZSBsaWJyYXJpZXMpLAoJICBpdCBjdXJyZW50bHkgZGVmYXVsdHMgdG8gJ25vJwoJKiBsdG1haW4uaW46IG5ldyBpbnRlcm5hbCAncmVsaW5rJyBtb2RlIHRvIHJlbGluayBsaWJyYXJpZXMKCSAgb24gcGxhdGZvcm1zIHdpdGggaGFyZGNvZGVfaW50b19saWJzPXllcywgc2F2ZSBjb21tYW5kIGxpbmUKCSAgYXJndW1lbnRzIGluIGxpYnRvb2xfYXJncywgYWNjZXB0IHJlbGF0aXZlIC1MIGRpcmVjdG9yaWVzLAoJICBpZ25vcmUgLWxtIG9uIEJlT1MgYW5kIEN5Z3dpbiwgYWx3YXlzIGlnbm9yZSAtbGMsCgkgIGhhbmRsZSAtbCwgLUwgYW5kIC5sYSBhcmd1bWVudHMgbGF0ZXIsIGFsd2F5cyBtYWtlIHRoZSBsaWJyYXJ5CgkgIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgKC1ycGF0aCkgYWJzb2x1dGUsIGluIHJlbGluayBtb2RlIGRvbid0CgkgIGRlbGV0ZSB0aGUgbm90LXJlbGlua2VkIGxpYnJhcnkgYW5kIGV4aXQgaW1tZWRpYXRlbHkgYWZ0ZXIgcmVsaW5raW5nLAoJICB0cnkgdG8gZmluZCBhbHJlYWR5LWluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcyB0aGF0IHdlcmUgc3BlY2lmaWVkCgkgIHVzaW5nIC1sLCBzdXBwb3J0IGhhcmRjb2Rpbmcgb2YgbGlicmFyeSBwYXRocyBpbnRvIGxpYnJhcmllcyB0b28sCgkgIGV4cG9ydCBzaGxpYnBhdGggYmVmb3JlIGxpbmtpbmcgbGlicmFyaWVzLCBhbmQgYSBsb3Qgb2Ygb3RoZXIKCSAgYmlnIGNoYW5nZXMgdGhhdCBJIGRvbid0IHdhbnQgdG8gZGVzY3JpYmUgaGVyZS4uLiBwbGVhc2UgcmVhZAoJICB0aGUgc291cmNlLgoKCSogbWVyZ2VkIEdhcnkncyBXaW4zMiBjb2RlIGZyb20gdGhlIElMRCBicmFuY2g6CgkqIE5FV1M6IFdpbjMyIERMTHMgYXJlIG5vdyBzdXBwb3J0ZWQKCSogVE9ETzogcmVtb3ZlZCAuYSBsaWJyYXJ5IG5hbWVzcGFjZSBjbGFzaCBmb3Igd2luMzIuICBJdCBpcwoJICBub3cgcmVzb2x2ZWQuCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIGxpYnJhcnlfbmFtZXNfc3BlYyk6ICByZW1vdmVkICRsaWJuYW1lLmEuCgkgIENyZWF0aW5nIGEgZGxsIHdpdGggbGlidG9vbCBubyBsb25nZXIgY3JlYXRlcyBhbiBpbXBvcnQgbGlicmFyeS4KCSogbHRjb25maWcuaW4gKGV4dHJhY3RfZXhwc3ltc19jbWRzKTogQ3JlYXRlICRvYmpkaXIgaWYgaXQgZG9lcwoJICBub3QgZXhpc3QgLS0gaS5lLiB3ZSBuZWVkIHRvIGdlbmVyYXRlIGltcG9ydCBhbiBpbXBvcnQgbGlicmFyeQoJICBpbiBhIGRpcmVjdG9yeSB3aGljaCBoYXMgbm8gbGlicyBvZiBpdHMgb3duLgoJKiBkb2MvbGlidG9vbC50ZXhpIChvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcywKCSAgZXh0cmFjdF9leHBzeW1zX2NtZHMpOiBkb2N1bWVudGVkIHRoZXNlIG5ldyB2YXJpYWJsZXMuCgkqIGx0Y29uZmlnLmluIChleHRyYWN0X2V4cHN5bXNfY21kcyk6IE5ldyB2YXJpYWJsZS4gIENvbW1hbmRzIHRvCgkgIGV4dHJhY3QgdGhlIGV4cG9ydGVkIHN5bWJvbCBsaXN0IGZyb20gYSBkbGwuCgkgIChvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyk6IE5ldyB2YXJpYWJsZS4gIENvbW1hbmRzIHRvIGJ1aWxkCgkgIGFuIG9sZCBhcmNoaXZlIGZyb20gdGhlIGV4dHJhY3RlZCBleHBzeW1zIGxpc3QuCgkqIGx0bWFpbi5pbjogcnVuIHRoZSBjbWRzIGluIGV4dHJhY3RfZXhwc3ltc19jbWRzIGFuZAoJICBvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyBhcyBuZWNlc3NhcnkuCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMpOiBubyBsb25nZXIKCSAgcmVxdWlyZWQuCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCk6IEknbSBub3QgZXZlbgoJICBzdXJlIHdoZXRoZXIgd2luMzIgaG9ub3VycyB0aGUgcnVucGF0aCBhdCBhbGwgd2hlbiBzZWFyY2hpbmcgZm9yCgkgIGEgZGxsIHRvIGxvYWQhICBBbnl3YXksIHdoZW4gc2V0IHRvIHllcyB0aGlzIHByZXZlbnRzIGEgZ3JhdHVpdG91cwoJICB3YXJuaW5nLgoJKiBsdG1haW4uaW4gKGRlcGxpYik6IFRoZSBjeWd3aW4gZW52aXJvbm1lbnQgZG9lc24ndCBhY3R1YWxseSBoYXZlCgkgIC1sbSwgYW5kIGFsdGhvdWdoIHRoZSBsaW5rZXIgZmFrZXMgaGF2aW5nIG9uZSwgc3BlY2lmaXlpbmcgaXQgdG8KCSAgbGlidG9vbCB3aWxsIGJyZWFrIElMRCwgc28gd2UgaWdub3JlIGl0IHdoZW4gZ2VuZXJhdGluZwoJICBkZXBlbmRlbmNpZXMuCgoxOTk5LTAzLTE3ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGRvYy9QTEFURk9STVM6IFRoYW5rcyB0byBBbGV4YW5kcmVzIGNoYW5nZXMgYmVsb3csIGJvdGggbXkKCWhwIGJveGVzIHBhc3MgdGhlIGVudGlyZSB0ZXN0IHN1aXRlLgoKMTk5OS0wMy0xNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAoaHB1eCosIGhhcmRjb2RlX21pbnVzX0wpOiBzaG91bGQgYmUgbm8sIHdlIGhhdmUgK2IKCShocHV4KiwgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcik6IHNldCB0byBjb2xvbgoKMTk5OS0wMy0xNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkb2MvUExBVEZPUk1TOiBlZ2NzIGlzIGdjYzsgdXBkYXRlcyBmcm9tIEVyZXogWmFkb2sKCjE5OTktMDMtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluIChkZXBsaWJzLCBiZW9zKik6IGRvbid0IGFwcGVuZCAtbGMKCVJlcG9ydGVkIGJ5IFhhdmllciBQaWFuZXQgPHhhdmllckB4aW5nby5jb20+CgoJKiB0ZXN0cy9idWlsZC1yZWxpbmsudGVzdCAoaGFyZGNvZGVfYWN0aW9uKTogd2hlbiBzZXQgdG8gcmVsaW5rLAoJc2tpcCB0aGUgdGVzdCB3aXRoIGx0LWhlbGwKCgkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogYWRkIG1rc3RhbXAKCVJlcG9ydGVkIGJ5IFhhdmllciBQaWFuZXQgPHhhdmllckB4aW5nby5jb20+CgoJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IGFkZCBDaGFuZ2VMb2cuMAoKMTk5OS0wMy0xNiAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBkb2MvbGlidG9vbC50ZXhpOiBzb21lIG1pbm9yIGNvcnJlY3Rpb25zIHRvIHRoZSAiLWRsb3BlbiBzZWxmIgoJICBkb2N1bWVudGF0aW9uCgkqIHRlc3RzL01ha2VmaWxlLmFtOiBzb3J0ZWQgYnkgbmFtZSwgYWRkZWQgYXNzaWduLnRlc3QKCSogQ2hhbmdlTG9nOiBzdGFydGVkIG5ldyBmaWxlCgoJKiBsdGNvbmZpZy5pbjogc29tZSBjb3NtZXRpY2FsIGNoYW5nZXMKCSogbHRtYWluLmluOiBkaXR0bwoKQ29udGludWVkIGluIENoYW5nZUxvZy4wCgoJJFJldmlzaW9uJCAkRGF0ZSQK