MjAxMC0wNy0xMyAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCglSZWxlYXNlIDEuNC42LgoKCSogY29uZmlndXJlLmFjOiBCdW1wIExUIHZlcnNpb24gdG8gQzE3L0E2L1IwLgoKMjAwOS0xMi0xMSAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCglSZWxlYXNlIDEuNC41LgoKCSogY29uZmlndXJlLmFjOiBCdW1wIExUIHZlcnNpb24gdG8gQzE2L0E1L1IzLgoKCSogY29uZmlndXJlLmFjOiBBZGQgb3B0aW9uIC0tZGlzYWJsZS1PLWZsYWctbXVuZ2luZy4KCjIwMDktMDEtMjIgIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJUmVsZWFzZSAxLjQuNC4KCgkqIGNvbmZpZ3VyZS5hYzogQnVtcCBMVCB2ZXJzaW9uIHRvIEMxNi9BNS9SMi4KCjIwMDgtMTAtMzAgIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJKiBjb25maWd1cmUuYWM6IFJlbW92ZSBvcHRpb24gLS1lbmFibGUtZ2NjLXdhcm5pbmdzLiAgQXV0b2RldGVjdAoJdXNlZnVsIGdjYyB3YXJuaW5ncyBpbiBtYWludGFpbmVyIG1vZGUuCgoyMDA4LTA5LTE4ICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCVJlbGVhc2UgMS40LjMuCgoJKiBjb25maWd1cmUuYWM6IEJ1bXAgTFQgdmVyc2lvbiB0byBDMTYvQTUvUjEuCgoyMDA4LTA5LTE1ICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjOiBDZWhjayBmb3Igc3lzbG9nLgoKMjAwOC0wOS0wOCAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCglSZWxlYXNlIDEuNC4yLgoKMjAwOC0wOS0wMSAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCglSZWxlYXNlIDEuNC4ycmMyLgoKCSogY29uZmlndXJlLmFjOiBVcGRhdGUgc3ZuX3JldmlzaW9uIG1hY3JvLgoKMjAwOC0wOC0yMiAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogQWRkIG9wdGlvbiAtLWVuYWJsZS1obWFjLWJpbmFyeS1jaGVjay4KCShETF9MSUJTKTogQ2hlY2sgd2hldGhlciAtbGRsIGlzIHJlcXVpcmVkLgoKMjAwOC0wOC0xOSAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCglSZWxlYXNlIDEuNC4ycmMxLgoKCSogY29uZmlndXJlLmFjOiBCdW1wIExUIHZlcnNpb24gdG8gQzE2L0E1L1IwLgoKMjAwOC0wOC0xOCAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogUmVtb3ZlIHRoZSB1bnVzZWQgQlVHUyBmaWxlLgoKMjAwOC0wOC0xNSAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYyAoQUhfQk9UVE9NKTogRGVmaW5lIEdDUllfR1BHX0VSUl9OT1RfT1BFUkFUSU9OQUwuCgoyMDA4LTA3LTA1ICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogcmFuZG9tLzogTmV3LgoJKiBNYWtlZmlsZS5hbSAoRElTVF9TVUJESVJTKTogQWRkIHJhbmRvbS4KCSogY29uZmlndXJlLmFjIChBQ19DT05GSUdfRklMRVMpOiBBZGQgcmFuZG9tL01ha2VmaWxlLgoKMjAwOC0wNC0yNSAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCglSZWxlYXNlIDEuNC4xLgoKCSogY29uZmlndXJlLmFjOiBCdW1wIExUIHZlcnNpb24gdG8gQzE1L0E0L1I0LgoKMjAwOC0wNC0yMiAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogU2V0IHZlcnNpb24gdG8gMS40LjFyYzEuCgoyMDA4LTA0LTE4ICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjIChBSF9CT1RUT00pOiBBZGQgQ0FNRUxMSUFfRVhUX1NZTV9QUkVGSVguCgkoTkFNRV9PRl9ERVZfUkFORE9NKTogIFJlbW92ZSBzcGVjaWFsIGNhc2VzIGZvciBTb2xhcmlzIGV0Yy4gIFRoaXMKCW1hdGNoZXMgdGhlIGdudXBnIDEuNC45IHZlcnNpb24uCgoyMDA4LTA0LTAxICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjIChBQ19JTklUKTogRml4IHF1b3RpbmcuCgoyMDA4LTAzLTE5ICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjOiBGaXggdGhlIHRlc3RzIGZvciBVU0VfPGFsZ28+IHRvIGVpdGhlciBkZWZpbmUgb3IKCXVuZGVmIHRoZSBtYWNyb3MuICBTdWdnZXN0ZWQgYnkgRGlyayBTdG9lY2tlci4KCjIwMDgtMDMtMTggIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJKiBjb25maWd1cmUuYWM6IFRlc3QgZm9yIHVpbnRwdHJfdC4KCjIwMDgtMDItMTggIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJKiBjb25maWd1cmUuYWMgKElTX0RFVkVMT1BNRU5UX1ZFUlNJT04pOiBTZXQgZGVwZW5kaW5nIG9uIHRoZSBteV9zdm4uCgoyMDA3LTEyLTExICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjOiBXZSBhY3R1YWxseSByZXF1aXJlIGxpYmdwZy1lcnJvciAxLjQuICBSZXBvcnRlZCBieQoJVGltIE1vb25leS4KCjIwMDctMTItMTAgIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJUmVsZWFzZWQgMS40LjAuCgoJKiBjb25maWd1cmUuYWM6IFNldCBMVCB0byBDMTUvQTQvUjMuCgoyMDA3LTEyLTA1ICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjOiBBZGQgb3B0aW9uIC0tZGlzYWJsZS1wYWRsb2NrLXN1cHBvcnQuCgoyMDA3LTEyLTAzICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCVJlbGVhc2VkIDEuMy4yLgoKCSogY29uZmlndXJlLmFjOiBTZXQgTFQgdG8gQzE1L0E0L1IyLgoKCSogY29uZmlnLnN1YiwgY29uZmlnLmd1ZXNzOiBVcGRhdGUgdG8gdmVyc2lvbiAyMDA3LTExLTE5LgoKMjAwNy0xMC0zMCAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogUHJvdGVjdCBjb25maWcuaCBhZ2FpbnN0IGRvdWJsZSBpbmNsdXNpb24uCgoyMDA3LTEwLTI2ICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCVJlbGVhc2VkIDEuMy4xLgoKCSogY29uZmlndXJlLmFjOiBTZXQgTFQgdG8gQzE1L0E0L1IxLgoKMjAwNy0wOC0yMiAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIFJFQURNRTogUmV3cml0ZSB0aGUgbGljZW5zZSBkZXNjcmlwdGlvbi4KCSogY29uZmlndXJlLmFjIChVU0VfUk5EVzMyLCBVU0VfUk5EVU5JWCk6IFVubWFyayBhcyBHUEwgbW9kdWxlcy4KCjIwMDctMDgtMDggIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJKiBjb25maWd1cmUuYWM6IFVzZSAkaG9zdCBhbmQgbm90ICR0YXJnZXQuCgoyMDA3LTA3LTI2ICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogYWNpbmNsdWRlLm00IChHTlVQR19TWVNfU1lNQk9MX1VOREVSU0NPUkUpOiBGaXggYSBzeW50YXggZXJyb3IKCWluIHRoZSB0ZXN0IHByb2dyYW0gd2hpY2ggbHVya2VkIHRoZXJlIGZvciA0IHllYXJzLiAgQWRqdXN0ZWQgbmFtZQoJb2YgbGlidG9vbHMgZ2xvYmFsX3N5c3RlbV9waXBlIHZhcmlhYmxlIGFuZCBhZGQgZXh0cmEgY3V0IHN0YWdlLgoJUmVwb3J0ZWQgYnkgR3JlZ29yIFJpZXBsLgoKMjAwNy0wNi0xNSAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIGF1dG9nZW4uc2ggKEZPUkNFKTogVXNlID0gYW5kIG5vdCA9PSBpbiB0ZXN0IHRvIGJlIFBPU0lYbHkgY29ycmVjdC4KCjIwMDctMDUtMzAgIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJKiBjb25maWd1cmUuYWM6IENhbWVsbGlhIGlzIG5vIGxvbmdlciBHUEwuCgoyMDA3LTA1LTI0ICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjOiBUcnkgdG8gdXNlIC1XcG9pbnRlci1hcml0aC4KCjIwMDctMDUtMTkgIE1hcmN1cyBCcmlua21hbm4gIDxtYXJjdXNAZzEwY29kZS5kZT4KCgkqIGNvbmZpZ3VyZS5hYzogRml4IHRlc3QgZm9yIG9wdGlvbmFsIFVESVYgYW5kIFVESVZfUVJOTkQgTVBJCgltb2R1bGVzLgoKMjAwNy0wNS0wOSAgTWFyY3VzIEJyaW5rbWFubiAgPG1hcmN1c0BnMTBjb2RlLmRlPgoKCSogY29uZmlndXJlLmFjIChhY19jdl9tcGlfY29uZmlnX2RvbmUpOiBVbnVzZWQgdmFyaWFibGUgcmVtb3ZlZC4KCShhY19jdl9tcGlfbW9kX2xpc3QsIE1QSV9NT0RfTElTVF9MTywgTVBJX01PRF9MSVNUX08pOiBSZW1vdmVkLgoJKE1QSV9NT0RfQVNNX01QSUhfQUREMSwgTVBJX01PRF9BU01fTVBJSF9TVUIxLAoJTVBJX01PRF9BU01fTVBJSF9NVUwxLCBNUElfTU9EX0FTTV9NUElIX01VTDIsCglNUElfTU9EX0FTTV9NUElIX01VTDMsIE1QSV9NT0RfQVNNX01QSUhfTFNISUZULAoJTVBJX01PRF9BU01fTVBJSF9SU0hJRlQsIE1QSV9NT0RfQVNNX01QSUhfVURJViwKCU1QSV9NT0RfQVNNX01QSUhfVURJVl9RUk5ORCwgTVBJX01PRF9DX01QSUhfQUREMSwKCU1QSV9NT0RfQ19NUElIX1NVQjEsIE1QSV9NT0RfQ19NUElIX01VTDEsIE1QSV9NT0RfQ19NUElIX01VTDIsCglNUElfTU9EX0NfTVBJSF9NVUwzLCBNUElfTU9EX0NfTVBJSF9MU0hJRlQsIE1QSV9NT0RfQ19NUElIX1JTSElGVCwKCU1QSV9NT0RfQ19NUElIX1VESVYsIE1QSV9NT0RfQ19NUElIX1VESVZfUVJOTkQpOiBOZXcgYXV0b21ha2UKCXZhcmlhYmxlcy4KCjIwMDctMDUtMDQgIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJUmVsZWFzZWQgMS4zLjAuCgoJKiBjb25maWd1cmUuYWM6IFNldCBMVCB0byBDMTUvQTQvUjAuCgoJKiBjb25maWd1cmUuYWM6IFJlcXVpcmUgYXV0b21ha2UgMS4xMAoJKEFNX1BST0dfQ0NfQ19PKTogTmV3LgoKMjAwNy0wNS0wMyAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogRml4IGRldGVjdGlvbiBvZiBHUExlZCByYW5kb20gbW9kdWxlcy4KCjIwMDctMDUtMDIgIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJKiBjb25maWd1cmUuYWMgKExJQkdDUllQVF9ESUdFU1RTLCBMSUJHQ1JZUFRfQ0lQSEVSUykKCShMSUJHQ1JZUFRfUFVCS0VZX0NJUEhFUlMpOiBBY19kZWZpbmUgbGlzdHMgb2YgYWxnb3JpdGhtcy4KCShkZWZhdWx0X2NpcGhlcnMpOiBEb24ndCBtYWtlIGNhbWVsbGlhIGEgZGVmYXVsdC4KCjIwMDctMDUtMDIgIERhdmlkIFNoYXcgIDxkc2hhd0BqYWJiZXJ3b2NreS5jb20+CgoJKiBORVdTLCBjb25maWd1cmUuYWM6IEFkZCBDYW1lbGxpYS4KCjIwMDctMDQtMzAgIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJKiBSRUFETUUuYXBpY2hhbmdlczogTW92ZSB0byBkb2MvLgoJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IFJlbW92ZWQgdGhhdCBmaWxlLgoKMjAwNy0wNC0yOCAgTWFyY3VzIEJyaW5rbWFubiAgPG1hcmN1c0BnMTBjb2RlLmRlPgoKCSogY29uZmlndXJlLmFjOiBBbGxvdyB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgc2VhcmNoIGRpcmVjdG9yaWVzCgl3aXRoIC0tZW5hYmxlLW1waS1wYXRoLgoKMjAwNy0wNC0xNiAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgZm9yIHN5c2NvbmYuCgkqIGFjaW5jbHVkZS5tNCAoR05VUEdfQ0hFQ0tfTUxPQ0spOiBUcnkgdG8gdXNlIHN5c2NvbmYgdG8gZ2V0IHRoZQoJcGFnZSBzaXplIGFuZCB1c2UgZ2V0cGFnZXNpemUgb25seSB0aGVuIGlmIGF2YWlsYWJsZS4KCjIwMDctMDMtMjIgIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJKiBjb25maWd1cmUuYWM6IEFkZCBzdXBwb3J0IGZvciBFQ0MuCgoyMDA3LTAyLTIyICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogTWFrZWZpbGUuYW0gKERJU1RDSEVDS19DT05GSUdVUkVfRkxBR1MpOiBVc2UKCS0tZW5hYmxlLXJhbmRvbS1kYWVtb24uCgoJKiBjb25maWd1cmUuYWM6IE5ldyBvcHRpb24gLS1lbmFibGUtcmFuZG9tLWRhZW1vbi4KCUNyZWF0ZSB2ZXJzaW9uaW5mby5yYyBhbmQgcHJvdmlkZSB0aGUgYnVpbGQgaW5mb3JtYXRpb24uCgoyMDA3LTAyLTIxICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogTWFrZWZpbGUuYW0sIGNvbmZpZ3VyZS5hYzogSWdub3JlIHczMi1kbGwvLgoKMjAwNy0wMi0yMCAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogQnVtcCBMVCB2ZXJzaW9uIHRvIEMxNC9BMy9SMCBpbiBwcmVwYXJhdGlvbiBmb3IgYQoJcmVsZWFzZS4KCgkqIGF1dG9nZW4uc2g6IEFkZCBvcHRpb24gLS1mb3JjZS4KCSogY29uZmlndXJlLmFjOiBOZXcgb3B0aW9uIC0tZGlzYWJsZS1lbmRpYW4tY2hlY2suICBVc2UgYSByZWFsCglub2V4ZWNzdGFjayB0ZXN0IGluc3RlYWQgb2YgcmVxdWlyaW5nIGFuIG9wdGlvbi4gIEFkZCBTVk4gdmVyc2lvbgoJbWFnaWMuCgoyMDA3LTAyLTAyICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjIChGQUxMQkFDS19TT0NLTEVOX1QpOiBTcGVjaWFsIGNhc2UgZm9yIG1pbmd3MzIuCgoyMDA2LTExLTE1ICBXZXJuZXIgS29jaCAgPHdrQGcxMGNvZGUuY29tPgoKCSogYXV0b2dlbi5zaDogQWRkIGNvbnZlbmllbmNlIG9wdGlvbiAtLWJ1aWxkLWFtZDY0LgoKMjAwNi0xMC0yMCAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChzdG93aW5zdGFsbCk6IE5ldyBjb252ZW5pZW5jZSB0YXJnZXQuCgoyMDA2LTEwLTEyICBNYXJjdXMgQnJpbmttYW5uICA8bWFyY3VzQGcxMGNvZGUuZGU+CgoJKiBjb25maWd1cmUuYWMgKEZBTExCQUNLX1NPQ0tMRU5fVCk6IFRoaXJkIHRpbWUgaXMgYSBjaGFybS4KCURlZmluZSBnY3J5X3NvY2tsZW5fdCwgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggc29ja2xlbl90CglkZWZpbml0aW9ucyBieSBhdXRvY29uZi4KCjIwMDYtMTAtMTEgIE1hcmN1cyBCcmlua21hbm4gIDxtYXJjdXNAZzEwY29kZS5kZT4KCgkqIGNvbmZpZ3VyZS5hYyAoRkFMTEJBQ0tfU09DS0xFTl9UKTogUmV3cml0ZSBpbiB0ZXJtcyBvZgoJc29ja2xlbi5tNC4KCjIwMDYtMTAtMTEgIE1hcmN1cyBCcmlua21hbm4gIDxtYXJjdXNAZzEwY29kZS5kZT4KCgkqIGFjaW5jbHVkZS5tNCAoR05VUEdfRklYX0hEUl9WRVJTSU9OKTogUmVtb3ZlZC4KCSogY29uZmlndXJlLmFjOiBEbyBub3QgY2FsbCBHTlVQR19GSVhfSERSX1ZFUlNJT04uCgoyMDA2LTEwLTEwICBNYXJjdXMgQnJpbmttYW5uICA8bWFyY3VzQGcxMGNvZGUuZGU+CgoJKiBjb25maWd1cmUuYWM6IEludm9rZSBBQ19DSEVDS19TT0NLTEVOX1RZUEUuCgkoQUNfQ09ORklHX0ZJTEVTKTogQWRkIHNyYy9nY3J5cHQuaC4KCShBQ19DT05GSUdfU1JDRElSKTogQ2hhbmdlIHRvIHNyYy9saWJnY3J5cHQudmVycy4KCjIwMDYtMTAtMDIgIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJKiBhY2luY2x1ZGUubTQgKEdOVVBHX1NZU19TWU1CT0xfVU5ERVJTQ09SRSk6IFRlc3Qgb24gSE9TVCBhbmQgbm90CglUQVJHRVQuICBIYXJkd2lyZSBmb3IgbWluZ3czMi4gQWxsb3cgc2V0dGluZyB2aWEgY29tbWFuZCBsaW5lIHdoZW4KCWNyb3NzIGNvbXBpbGluZy4KCjIwMDYtMDgtMjkgIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJKiBjb25maWd1cmUuYWMgKFVTRV9TRUVEKTogTmV3LgoKMjAwNi0wNy0yNiAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogTmV3IG9wdGlvbnMgLS1lbmFibGUtbm9leGVjc3RhY2sgYW5kCgktLWRpc2FibGUtb3B0aW1pemF0aW9uLgoKMjAwNi0wNy0wNCAgTWFyY3VzIEJyaW5rbWFubiAgPG1hcmN1c0BnMTBjb2RlLmRlPgoKCSogY29uZmlndXJlLmFjOiBDYWxsIEFDX0xJQlRPT19XSU4zMl9ETEwgYW5kIEFDX0xJQlRPT0xfUkMuCgoJKiBjb25maWd1cmUuYWM6IENhbGwgZ2xfVFlQRV9TT0NLTEVOX1QgaW5zdGVhZCBvZiB0aGUgb3RoZXIKCXNvY2tsZW5fdCBjaGVja3MuCgoyMDA2LTA2LTA4ICBNYXJjdXMgQnJpbmttYW5uICA8bWFyY3VzQGcxMGNvZGUuZGU+CgoJKiBjb25maWd1cmUuYWMgKFBUSF9MSUJTKTogQWRkIC0tYWxsIHRvIHB0aC1jb25maWcgaW52b2NhdGlvbi4KCjIwMDYtMDMtMTQgIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciBmY3RubCBhbmQgZnRydW5jYXRlLgoJKEhBVkVfUFRIKTogQ2hlY2sgZm9yIEdOVSBQdGguCgkoSEFWRV9XMzJfU1lTVEVNKTogRGVmaW5lIGl0LgoJKiBhY2luY2x1ZGUubTQgKEdOVVBHX1BUSF9WRVJTSU9OX0NIRUNLKTogTmV3LiBUYWtlbiBmcm9tIEdudVBHIDEuNC4KCjIwMDUtMTItMDggIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJKiBjb25maWd1cmUuYWM6IENoYW5nZWQgdGhlIHJhbmRvbSBkZXZpY2UgbmFtZXMgZm9yIG5ldGJzZC4gIEZyb20KCUNocmlzdGlhbiBCaWVyZS4KCjIwMDUtMTEtMDIgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogTkVXUzogRG9jdW1lbnRlZCBtaW5vciBBUEkgY2hhbmdlcy4KCjIwMDUtMDktMTUgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBEZXBlbmQgb24gUkVBRE1FLlNWTiwgbm90IG9uIFJFQURNRS5DVlMuCgoyMDA1LTA2LTI1ICBNb3JpdHogU2NodWx0ZSAgPG1vcml0ekBnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogUmVtb3ZlZCBzcmMvbGliZ2NyeXB0LnBjIGZyb20gQUNfQ09ORklHX0ZJTEVTLgoKMjAwNS0wNi0xMCAgV2VybmVyIEtvY2ggIDx3a0BnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogTW92ZSBkZXRlY3Rpb24gb2YgYmFzaWMgc3R1ZmYgdG8gdGhlIHRvcC4gIEZvcgoJZXhhbXBsZSB3ZSBuZWVkIHRvIGtub3cgd2hldGhlciBnY2MgaXMgdXNlZCBiZWZvcmUgdGVzdGluZyBmb3IgaXQuCglSZXBvcnRlZCBieSBSYWxmIEZhc3NlbC4KCjIwMDUtMDQtMjMgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogYWNpbmNsdWRlLm00IChUWVBFX1NPQ0tMRU5fVCk6IE5ldyB0eXBlIGRlZmluaXRpb24gdGVzdDsKCXByb3ZpZGVkIGJ5IEFsYmVydCBDaGluLgoJKiBjb25maWd1cmUuYWM6IERvbid0IHVzZSAkKENNRCkgYXMgaXQncyBub3QgcG9ydGFibGU7IHVzZSBDTUQgaW4KCWJhY2t0aWNrcyBpbnN0ZWFkLiAgU2ltcGxlciAtbG5zbC8tbHNvY2tldCB0ZXN0LiAgVXNlCglUWVBFX1NPQ0tMRU5fVCB0ZXN0LiAgRG9uJ3QgZm9yZ2V0IHRvIHNldCBgcmFuZG9tX21vZHVsZXMnCgljb3JyZWN0bHkuCgoyMDA1LTA0LTIyICBNb3JpdHogU2NodWx0ZSAgPG1vcml0ekBnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogQWRkZWQgc3VwcG9ydCBmb3IgcGtnY29uZmlnOyBwcm92aWRlZCBieSBBbGJlcnQKCUNoaW4uCgoyMDA1LTA0LTExICBNb3JpdHogU2NodWx0ZSAgPG1vcml0ekBnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogSW50ZWdyYXRlIFdoaXJscG9vbC4KCjIwMDUtMDEtMDQgIFdlcm5lciBLb2NoICA8d2tAZzEwY29kZS5jb20+CgoJVXBkYXRlZCB0byBhdXRvbWFrZSAxLjkuCgoJKiBhY2luY2x1ZGUubTQ6IFVwZGF0ZWQgZm9yIHVzZSB3aXRoIGF1dG9tYWtlIDEuOS4KCgkqIGNvbmZpZ3VyZS5hYzogUmVxdWlyZSBsaWJncGctZXJyb3IgMS4wOyBub3QgcmVhbGx5IG5lZWRlZCBidXQKCXRoYXQgaXMgdGhlIGZpcnN0IHN0YWJsZSB2ZXJzaW9uLgoKCSogTWFrZWZpbGUuYW0gKEFDTE9DQUxfQU1GTEFHUyk6IE5ldyBmb3IgLUkgbTQuCgkoQVVUT01BS0VfT1BUSU9OUyk6IE5ldyB0byBjcmVhdGUgYSBiemlwIGFyY2hpdmUuCgoyMDA1LTAyLTAzICBNb3JpdHogU2NodWx0ZSAgPG1vcml0ekBnMTBjb2RlLmNvbT4KCgkqIFRIQU5LUzogVXBkYXRlZC4KCjIwMDQtMDgtMDkgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogVEhBTktTOiBVcGRhdGVkLgoKMjAwNC0wNy0wNCAgTW9yaXR6IFNjaHVsdGUgIDxtb3JpdHpAZzEwY29kZS5jb20+CgoJKiBUSEFOS1M6IFVwZGF0ZWQuCgoyMDA0LTA0LTIxICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzogRG9uJ3QgcHJpbnQgYSB3YXJuaW5nIGlmIEdOVSBtYWtlIHdhcyBub3QgZm91bmQuCgoyMDA0LTA1LTA3ICBNb3JpdHogU2NodWx0ZSAgPG1vcml0ekBnMTBjb2RlLmRlPgoKCSogVEhBTktTOiBVcGRhdGVkLgoKMjAwNC0wNC0wMiAgVGhvbWFzIFNjaHdpbmdlICA8c2Nod2luZ2VAbmljLW5hYy1wcm9qZWN0LmRlPgoKCSogYXV0b2dlbi5zaDogQWRkZWQgQUNMT0NBTF9GTEFHUy4KCjIwMDQtMDQtMTUgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCVJlbGVhc2VkIDEuMi4wLgoKCSogY29uZmlndXJlLmFjOiBTZXQgTFQgdG8gQzEyL0ExL1IxLgoKMjAwNC0wNC0wNiAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBjb25maWcuZ3Vlc3MsIGNvbmZpZy5zdWIsIGx0bWFpbi5zaDogVXBkYXRlZCB0byB0aG9zZSBmcm9tCglsaWJ0b29scyAxLjUuNC4KCjIwMDQtMDMtMjkgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCVJlbGVhc2VkIDEuMS45NC4KCgkqIGNvbmZpZ3VyZS5hYzogU2V0IExUIHRvIEMxMi9BMS9SMC4KCjIwMDQtMDMtMTAgIE1hcmN1cyBCcmlua21hbm4gIDxtYXJjdXNAZzEwY29kZS5kZT4KCgkqIGNvbmZpZ3VyZS5hYyAoTElCR0NSWVBUX0NPTkZJR19MSUJTX1BUSFJFQUQsCglMSUJHQ1JZUFRfQ09ORklHX0NGTEFHU19QVEhSRUFELCBMSUJHQ1JZUFRfQ09ORklHX0xJQlNfUFRILAoJTElCR0NSWVBUX0NPTkZJR19DRkxBR1NfUFRILCBoYXZlX3B0aCwgaGF2ZV9wdGhyZWFkLCBBQ19DSEVDS19QVEgsCglBQ19DSEVDS19MSUIocHRocmVhZCksIEhBVkVfUFRILCBIQVZFX1BUSFJFQUQpOiBSZW1vdmVkLgoKMjAwNC0wMy0wNiAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJUmVsZWFzZWQgMS4xLjkzLgoKCSogY29uZmlndXJlLmFjIChMSUJHQ1JZUFRfQ09ORklHX1NPTkFNRV9OVU1CRVIpOiBSZXBsYWNlZCBieQoJTElCR0NSWVBUX0NPTlBJR19BUElfVkVSU0lPTi4gIFNldCBpdCB0byAxLiAgU2V0IExUIHRvIEMxMS9BMC9SMS4KCjIwMDQtMDMtMDUgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCSogY29uZmlndXJlLmFjIChMSUJHQ1JZUFRfQ09ORklHX1NPTkFNRV9OVU1CRVIpOiBOZXcuCgoyMDA0LTAyLTIwICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLm9yZz4KCiAgICAgICAgUmVsZWFzZWQgMS4xLjkyLgoKCSogY29uZmlndXJlLmFjOiBTZXQgTFQgdG8gQzExL0EwL1IwLgoKMjAwNC0wMi0xMSAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBhdXRvZ2VuLnNoIChjaGVja192ZXJzaW9uKTogUmVtb3ZlZCBiYXNoaXNtIGFuZCBzaW1wbGlmaWVkLgoKMjAwNC0wMi0wNiAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBjb25maWd1cmUuYWM6IEFkZCByZmMyMjY4IGNpcGhlciBhbGdvcml0aG0uCgoyMDA0LTAxLTI1ICBNb3JpdHogU2NodWx0ZSAgPG1vQGcxMGNvZGUuY29tPgoKCSogVEhBTktTOiBVcGRhdGVkLgoKMjAwMy0xMi0xOSAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJUmVsZWFzZWQgMS4xLjkxLgoKCSogY29uZmlndXJlLmFjOiBCdW1iZWQgTFQgdmVyc2lvbiB0byBDMTAvQTMvUjEuCgoyMDAzLTEyLTA4ICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLm9yZz4KCgkqIE1ha2VmaWxlLmFtIChkaXN0LWhvb2spOiBEb24ndCBkaXN0cmlidXRlIHN0dWZmIGZyb20gdGhlIG5vdwoJb2Jzb2xldGUgc2NyaXB0cyBkaXIuCgkoRVhUUkFfRElTVCk6IFJlbW92ZSBSRUFETUVfYWxwaGEKCSogUkVBRE1FLWFscGhhOiBSZW1vdmVkLgoJKiBjb25maWd1cmUuYWMgKEFNX0NPTkZJR19BVVhfRElSKTogUmVtb3ZlZC4KCgkqIENPUFlJTkcuRE9DOiBSZW1vdmVkLgoJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IEFkZGVkIFJFQURNRS5DVlMgYW5kCglhdXRvZ2VuLnNoLiBSZW1vdmVkIENPUFlJTkcuRE9DLgoKMjAwMy0xMS0xNCAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJUmVsZWFzZWQgMS4xLjkwLgoKCSogY29uZmlndXJlLmFjOiBCdW1iZWQgTFQgdmVyc2lvbiB0byBDMTAvQTMvUjAuCgoJKiBjb25maWd1cmUuYWMgKGhhdmVfbGRfdmVyc2lvbl9zY3JpcHQpOiBTZXQgdGhlIGRlZmF1bHQgaW4KCWEgc2VwYXJhdGUgdGVzdC4KCShQUklOVEFCTEVfT1NfTkFNRSk6IERvbid0IGhhbmRsZSB0aGUgSHVyZCBleHRyYSwgdGhpcyBsZWFkcyB0bwoJY29uZmxpY3RzIHdpdGggQlNEIGJhc2VkIEdOVSBzeXN0ZW1zLiAgVGhlIEh1cmQgaGFzIG5vdyBhIHdvcmtpbmcKCXVuYW1lLgoKMjAwMy0xMS0wNCAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBjb25maWd1cmUuYWMgKFVTRV9TSEExKTogTWFrZSBzdXJlIGl0IGlzIGFsd2F5cyBpbmNsdWRlZC4KCShVU0VfUk1EMTYwKTogUmVtb3ZlZCB0aGlzIEFNIGNvbmRpdGlvbmFsLgoKMjAwMy0xMC0zMSAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBjb25maWd1cmUuYWM6IEJ1bWJlZCB2ZXJzaW9uIG51bWJlciB0byAxLjEuOTAtY3ZzIGZvciBmdXRoZXIKCWRldmVsb3BtZW50CgoJUmVsZWFzZWQgMS4xLjQ0LgoKCSogYWNpbmNsdWRlLm00IChBQ19DSEVDS19QVEgpOiBBZGRlZC4KCSogY29uZmlndXJlLmFjOiBVc2UgaXQgaGVyZSBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIGxpYiB0ZXN0LgoJQnVtYmVkIExUIHZlc2lvbiB0byBDOS9BMi9SMC4KCjIwMDMtMTAtMjcgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCSogY29uZmlndXJlLmFjOiBHaXZlIGEgaGludCBvbiB3aGVyZSBsaWJncGctZXJyb3IgaXMgYXZhaWxhYmxlLgoJUmVmb3JtYXR0ZWQgbG9uZyBsaW5lcy4gIERvbid0IGluY2x1ZGUgZ2NyeXB0LWRlZnMuaC4KCSgtLWVuYWJsZS1nY2Mtd2FybmluZ3MpOiBOZXcgb3B0aW9uLgoKMjAwMy0xMC0yNCAgTW9yaXR6IFNjaHVsdGUgIDxtb0BnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgZm9yIHNvY2tsZW5fdC4KCjIwMDMtMTAtMTEgIE1vcml0eiBTY2h1bHRlICA8bW9AZzEwY29kZS5jb20+CgoJKiBhY2luY2x1ZGUubTQ6IFVwZGF0ZSBBTV9QQVRIX0dQR19FUlJPUiBtYWNyby4KCjIwMDMtMDktMDQgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCVJlbGVhc2VkIDEuMS40My4KCgkqIGNvbmZpZ3VyZS5hYzogUmVxdWlyZSBsaWJncGctZXJyb3IgMC40IGR1ZSB0byB0aGUgcHJpbWUgaW50ZXJmYWNlLgoKMjAwMy0wOC0yOSAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBhY2luY2x1ZGUubTQgKEdOVVBHX1NZU19TWU1CT0xfVU5ERVJTQ09SRSk6IFJlLWltcGxlbWVudGVkLgoJKiBjb25maWd1cmUuYWM6IFVzZSBpdCBoZXJlLgoKMjAwMy0wOC0yNyAgTW9yaXR6IFNjaHVsdGUgIDxtb0BnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogU3Vic3RpdHV0ZTogTElCR0NSWVBUX0NPTkZJR19MSUJTX1BUSFJFQUQsCglMSUJHQ1JZUFRfQ09ORklHX0NGTEFHU19QVEhSRUFELCBMSUJHQ1JZUFRfQ09ORklHX0xJQlNfUFRILAoJTElCR0NSWVBUX0NPTkZJR19DRkxBR1NfUFRILCBMSUJHQ1JZUFRfVEhSRUFEX01PRFVMRVMuCgoyMDAzLTA4LTA3ICBNb3JpdHogU2NodWx0ZSAgPG1vcml0ekBnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogRmFpbCwgaWYgbGliZ3BnLWVycm9yIGNvdWxkIG5vdCBiZSBmb3VuZC4KCjIwMDMtMDctMzEgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCVJlbGVhc2VkIDEuMS40Mi4KCgkqIGNvbmZpZ3VyZS5hYzogU2V0IExUIHZlcnNpb24gdG8gNy8wLzAuCgoyMDAzLTA3LTMwICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLm9yZz4KCgkqIEFVVEhPUlMgKE1haW50YWluZXIpOiBBc3NpZ25lZCBNb3JpdHogYXMgTWFpbnRhaW5lci4KCjIwMDMtMDctMzAgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogTkVXUzogSW5jbHVkZSBtdWNoIG1vcmUgY29tcGxldGUgbGlzdCBvZiBgSW50ZXJmYWNlIGNoYW5nZXMKCXJlbGF0aXZlIHRvIHRoZSAxLjEuMTIgcmVsZWFzZScuCgoyMDAzLTA3LTE0ICBNb3JpdHogU2NodWx0ZSAgPG1vcml0ekBnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogQnVtYmVkIHZlcnNpb24gbnVtYmVyIHVwIHRvIDEuMS40Mi1jdnMuCgoyMDAzLTA3LTA5ICBNb3JpdHogU2NodWx0ZSAgPG1vcml0ekBnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogUmVpbnRyb2R1Y2UgLS1kaXNhYmxlLWFzbSwgc2luY2UgaXQgaXMgbmVlZGVkIGJ5CgltcGkvY29uZmlnLmxpbmtzLgoKMjAwMy0wNy0wNSAgTW9yaXR6IFNjaHVsdGUgIDxtb3JpdHpAZzEwY29kZS5jb20+CgoJKiBSRUFETUU6IEZldyBjaGFuZ2VzLCBtZW50aW9uIGxpYmdwZy1lcnJvci4KCjIwMDMtMDYtMTggIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjIChhdmFpbGFibGVfY2lwaGVycyk6IFJlbW92ZWQgU2VycGVudCwgaHJybS4KCjIwMDMtMDYtMTcgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogYWNpbmNsdWRlLm00OiBSZW1vdmVkIG1hY3JvIGRlZmluaXRpb25zOiBHTlVQR19DSEVDS19GQVFQUk9HLAoJR05VUEdfQ0hFQ0tfRU5ESUFOLCBHTlVQR19DSEVDS19DQUNIRSwgR05VUEdfQ0hFQ0tfUElDLAoJR05VUEdfQ0hFQ0tfRVhQT1JURFlOQU1JQywgR05VUEdfQ0hFQ0tfSVBDLCBHTlVQR19QUk9HX05NLAoJR05VUEdfU1lTX1NZTUJPTF9VTkRFUlNDT1JFLCBHTlVQR19GVU5DX01LRElSX1RBS0VTX09ORV9BUkcsCglHUEhfUFJPR19EQjJBTlkuCglBZGRlZCBtYWNybyBkZWZpbml0aW9uczogQU1fUEFUSF9HUEdfRVJST1IuCgoJKiBjb25maWd1cmUuYWM6IFVzZSBhbHRlcm5hdGl2ZSBhcHByb2FjaCBmb3IgYnVpbGRpbmcgYmFzZWQgb24KCWNvbmRpdGlvbmFsIHNvdXJjZXMsIHdoaWNoIGRvZXMgbm90IG1ha2UgYXV0b21ha2UgZWF0IGFsbCB5b3VyCgltZW1vcnksIGV0Yy4KCVJlbW92ZWQgdW51c2VkIHRlc3RzLgoJUmVuYW1lZCAtLWVuYWJsZS1zdGF0aWMtcm5kIHRvIC0tZW5hYmxlLXJhbmRvbS4KCVVzZSBBdXRvY29uZidzIEFDX0NfQklHRU5ESUFOIG1hY3JvIGluc3RlYWQgb2Ygb3VyIG93bi4KCVJlLW9yZ2FuaXplZCB0aGUgd2hvbGUgZmlsZS4KCjIwMDMtMDYtMTYgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjIChBQ19DT05GSUdfRklMRVMpOiBSZW1vdmVkIGRvYy92ZXJzaW9uLnNnbWwuCgoyMDAzLTA2LTExICBNb3JpdHogU2NodWx0ZSAgPG1vcml0ekBnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogUmVtb3ZlIC0tZW5hYmxlLWxpYmdwZy1lcnJvciBmbGFnLgoJVWUgQUNfUEFUSF9HUEdfRVJST1IuCgoyMDAzLTA2LTA5ICBNb3JpdHogU2NodWx0ZSAgPG1vcml0ekBnMTBjb2RlLmNvbT4KCgkqIE5FV1M6IE1lbnRpb24gQVBJIGNoYW5nZXMgYW5kIGxpYmdwZy1lcnJvci4KCjIwMDMtMDUtMjUgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjIChVU0VfTElCR1BHX0VSUk9SKTogSW1wbGVtZW50YXRpb24gb2YgdGhlCgktLWVuYWJsZS1saWJncGctZXJyb3Igc3dpdGNoLgoJRGVmaW5lIFVTRV9MSUJHUEdfRVJST1IgaW4gTElCR0NSWVBUX0NPTkZJR19GTEFHUywgaW4gY2FzZQoJbGliZ3BnLWVycm9yIGlzIHVzZWQuCgoyMDAzLTA1LTIyICBNb3JpdHogU2NodWx0ZSAgPG1vcml0ekBnMTBjb2RlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYyAoQUNfQ0hFQ0tfSEVBREVSUyk6IFJlbW92ZWQgdW51c2VkIGhlYWRlcnM6Cgl0ZXJtaW8uaCwgbGFuZ2luZm8uaC4KCShBQ19DSEVDS19GVU5DUyk6IFJlbW92ZWQgdW51c2VkIGZ1bmN0aW9uczogc3Ryc2VwLCBzdHJsd3IsCgl0Y2dldGF0dHIsIHNldHJsaW1pdCwgc3RyZnRpbWUsIG5sX2xhbmdpbmZvLCBzaWdhY3Rpb24sCglzaWdwcm9jbWFzaywgZm9wZW42NCwgZnN0YXQ2NC4KCjIwMDMtMDQtMjcgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogUkVBRE1FOiBEb2N1bWVudGVkIG5ldyBjb25maWd1cmUgc3dpdGNoZXMuCglNZW50aW9uIHRoZSAtLWVuYWJsZS1tYWludGFpbmVyLXN3aXRjaC4KCgkqIGNvbmZpZ3VyZS5hYzogTWVyZ2VkIHNvbWUgY29kZSBmcm9tIEdudVBHJ3MgY29uZmlndXJlLmFjIGZvcgoJZGlzYWJsaW5nIHNoYTUxMi90aWdlciBpbiBjYXNlIG5vIDY0IGRhdGEgdHlwZXMgYXJlIGF2YWlsYWJsZS4KCjIwMDMtMDQtMTcgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjOiBJbmNsdWRlIHN1cHBvcnQgZm9yIHNoYTUxMi4KCjIwMDMtMDQtMTcgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogQVVUSE9SUzogVXBkYXRlZC4KCjIwMDMtMDQtMTYgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjOiBJbXBsZW1lbnQgY29tbWFuZCBsaW5lIHN3aXRjaGVzOiAtLWVuYWJsZS1jaXBoZXJzLAoJLS1lbmFibGUtcHVia2V5LWNpcGhlcnMgYW5kIC0tZW5hYmxlLWRpZ2VzdHMuCglTZXQgQXV0b21ha2UgY29uZGl0aW9uYWxzIGFuZCBjb25maWcuaCBzeW1ib2xzIGRlcGVuZGluZyBvbiB0aGUKCXNlbGVjdGVkIGNpcGhlcnMsIHB1YmtleS1jaXBoZXJzLCBkaWdlc3RzIGFuZCByYW5kb20tbW9kdWxlcy4KCgkqIGFjaW5jbHVkZS5tNCAoTElTVF9NRU1CRVIpOiBOZXcgbWFjcm8uCgoJKiBjb25maWd1cmUuYWM6IFNpbXBsaWZpZWQsIHJlbW92ZWQgY29kZSBmb3IgcGFyc2luZwoJRVhUUkFfUFJPR1JBTVMgZnJvbSBNYWtlZmlsZS5hbS4KCjIwMDMtMDQtMDggIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjOiBNZXJnZWQgcmFuZG9tLW1vZHVsZSBzZWxlY3Rpb24gY29kZSBmcm9tIEdudVBHJ3MKCWNvbmZpZ3VyZS5hYy4KCjIwMDMtMDQtMDcgIE1vcml0eiBTY2h1bHRlICA8bW9yaXR6QGcxMGNvZGUuY29tPgoKCSogY29uZmlndXJlLmFjOiBSZW1vdmVkIGNvZGUgZm9yIGdlbmVyYXRpbmcgY29udHJ1Y3QuYy4KCVJlbW92ZSBkaWdlc3QgbW9kdWxlcyBmcm9tIHRoZSBzdGF0aWNfbW9kdWxlcyBsaXN0LCBvbmx5IGhhbmRsZQoJcmFuZG9tIG1vZHVsZSBzZWxlY3Rpb24uCgoKMjAwMy0wMy0yNCAgTW9yaXR6IFNjaHVsdGUgIDxtb3JpdHpAZzEwY29kZS5jb20+CgoJKiBORVdTOiBNZW50aW9uIG5ldyBDQkNfTUFDIGZsYWcuCgoJKiBBVVRIT1JTIChNYWludGFpbmVyKTogVXBkYXRlIGVudHJ5IGZvciBTaW1vbiBKb3NlZnNzb24uCgoyMDAzLTAzLTA0ICBNb3JpdHogU2NodWx0ZSAgPG1vcml0ekBnMTBjb2RlLmNvbT4KCgkqIFRPRE86IFJlbW92ZSBpdGVtIGFib3V0IHJlc2V0dGluZyBoYW5kbGVzLCBzaW5jZQoJZ2NyeV9jaXBoZXJfcmVzZXQgaXMgaW1wbGVtZW50ZWQgYnkgbm93LgoKCSogTkVXUzogTWVudGlvbmVkIGdjcnlfY2lwaGVyX3Jlc2V0LgoKMjAwMy0wMS0yMSAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBSRUFETUUgKENvbmZpZ3VyZSBvcHRpb25zKTogTmV3LgoJKiBjb25maWd1cmUuYWMgKGhhdmVfbGRfdmVyc2lvbl9zY3JpcHQpOiBOZXcgb3B0aW9uCgktLWVuYWJsZS1sZC12ZXJzaW9uLXNjcmlwdC4KCjIwMDMtMDEtMjAgIFNpbW9uIEpvc2Vmc3NvbiAgPGphc0BleHR1bmRvLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYyAoTU9EVUxFU19JTl9DSVBIRVIpOiBBZGQgY3JjLgoKMjAwMy0wMS0yMCAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJUmVsZWFzZWQgMS4xLjEyLgoKCSogY29uZmlndXJlLmFjIChMSUJHQ1JZUFRfTFRfUkVWSVNJT04pOiBCdW1iZWQgdXAuCgoyMDAyLTEyLTIxICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLm9yZz4KCglSZWxlYXNlZCAxLjEuMTEuCgoJKiBjb25maWd1cmUuYWMgKExJQkdDUllQVF9MVF9DVVJSRU5UOiBCdW1iZWQgdG8gNi81LzAgZHVlIHRvIGEgbmV3CglpbnRlcmZhY2UKCjIwMDItMTItMTkgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCSogY29uZmlndXJlLmFjIChoYXZlX3B0aHJlYWQpOiBDaGVjayBmb3IgcHRocmVhZHMgaW4gbGliYy4KCShoYXZlX2xkX3ZlcnNpb25fc2NyaXB0KTogTmV3LgoKMjAwMi0xMS0xMCAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBjb25maWd1cmUuYWMgKE1PRFVMRVNfSU5fQ0lQSEVSKTogQWRkIG1kNC5jLiAgQnkgU2ltb24gSm9zZWZzc29uLgoKMjAwMi0wOS0yMCAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJUmVsZWFzZWQgMS4xLjEwLgoKCSogY29uZmlndXJlLmFjIChIQVZFX0RFVl9SQU5ET01fSU9DVEwpOiBEb24ndCBjaGVjayBmb3IgaXQ7IGl0IGlzCglub3QgdXNlZC4KCShBU19DSEVDS19IRUFERVJTKTogQ2hlY2sgZm9yIHN5cy9zZWxlY3QuaC4KCSogTWFrZWZpbGUuYW0gKERJU1RfU1VCRElSUyk6IE5ldyB0byBpbmNsdWRlIHRoZSB3MzItZGxsIGRpcmVjdG9yeQoKMjAwMi0wOS0xOCAgVGltbyBTY2h1bHogIDx0c0B3aW5wdC5vcmc+CgoJKiBjb25maWd1cmUuYWM6IEFkZGVkIG1ha2VmaWxlIGZvciB0aGUgVzMyIERMTC4KCjIwMDItMDktMTcgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCSogY29uZmlndXJlLmFjOiBDaGVjayBmb3IgUHRoIGFuZCBQdGhyZWFkcy4KCjIwMDItMDgtMjMgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCVJlbGVhc2VkIDEuMS45LgoKCSogY29uZmlndXJlLmFjIChMSUJHQ1JZUFRfQ09ORklHX0NGTEFHUyk6IFJlbmFtZWQgZnJvbQoJTElCR0NSWVBUX0NGTEFHUyBhbmQgcmVtb3ZlZCB0aGUgbGlicGF0aCBiZWNhdXNlIGl0IGlzIHNldCBieSB0aGUKCWNvbmZpZyBzY3JpcHQuCgkoTElCR0NSWVBUX0xUX1JFVklTSU9OKTogU2V0IExUIHZlcnNpb24gdG8gNS80LzEuCgoyMDAyLTA2LTI1ICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLm9yZz4KCglSZWxlYXNlZCAxLjEuOC4KCgkqIGNvbmZpZ3VyZS5hYzogU2V0IExUIHZlcnNpb24gdG8gNS80LzAuCgoyMDAyLTA1LTIxICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLm9yZz4KCglSZWxlYXNlZCAxLjEuNy4KCgkqIGNvbmZpZ3VyZS5hYzogU2V0IExUIHZlcnNpb24gdG8gNC8zLzAuCgoyMDAyLTA1LTE3ICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzogUmVtb3ZlZCBhbGwgdGhlIGR5bmFtaWMgbG9hZGluZyBzdHVmZi4KCjIwMDItMDUtMTYgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCSogY29uZmlndXJlLmFjOiBSZW9yZGVyZWQgdGhlIENfQ0hFQ0tfRlVOQ1MuCgoyMDAyLTA1LTE1ICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzogQWRqdXN0ZWQgZm9yIG5ldyBNUEkgbW9kdWxlIHN0dWZmLgoKMjAwMi0wNS0xNCAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJQ2hhbmdlZCBsaWNlbnNlIHRvIHRoZSBMR1BMLgoKMjAwMi0wNS0wMiAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBqbmxpYi86IFJlbW92ZWQuCgkqIE1ha2VmaWxlLmFtIChTVUJESVJTKTogUmVtb3ZlZCBqbmxpYi4KCSogY29uZmlndXJlLmFjIChqbmxpYi9NYWtlZmlsZSk6IFJlbW92ZWQuCgoJKiBjb25maWd1cmUuYWM6IERlZmluZSBfUkVFTlRSQU5ULgoKMjAwMi0wMi0xOCAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBjb25maWd1cmUuYWMgKE1QSV9FWFRSQV9BU01fT0JKUyk6IFVzZSAubG8gc3VmZml4LgoJKEFDX0NBTk9OSUNBTF9UQVJHRVQpOiBBZGRlZC4KCjIwMDItMDItMDcgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCVJlbGVhc2VkIDEuMS42LgoKMjAwMi0wMS0yNCAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBqbmxpYi86IFJlcGxhY2VkIGJ5IGEgZnJlc2ggY29weSBmcm9tIEdudVBHIChhY3R1YWxseSB0aGUgTmV3UEcKCWRldmVsb3BtZW50IGJyYW5jaCkuICBBZGp1c3RlZCBNYWtlZmlsZS5hbSBhbmQgam5saWItY29uZmlnLmgKCWFjY29yZGluZ2x5LgoKMjAwMS0xMi0xOCAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJUmVsZWFzZWQgMS4xLjUuCgoJKiBNYWtlZmlsZS5hbSAoZGlzdC1ob29rKTogT25seSBsb29rIGluIG1waSBhbmQgc2NyaXB0cyBmb3IKCWRpc3RmaWxlczsgdGhpcyB3YXkgd2UgZG9uJ3QgaW5jbHVkZSB0aG9zZSBvZiBhIHN0YWxlICJtYWtlIGRpc3QiCglkaXJlY3RvcnkuCgoJKiBhY2luY2x1ZGUubTQgKEdOVVBHX0ZJWF9IRFJfVkVSU0lPTik6IE1ha2UgaXQgd29yayB3aXRoIHRoZSBuZXcKCWF1dG9tYWtlLgoJKiBjb25maWd1cmUuYWM6IERvbid0IGNobW9kIGRiMmFueS4KCjIwMDEtMDgtMDYgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCSogY29uZmlndXJlLmFjOiBSZW1vdmVkIGNyb3NzIGNvbXBpbGluZyBoYWNrcy4KCjIwMDEtMDgtMDMgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCVJlbGVhc2VkIDEuMS40LgoKCSogYWNpbmNsdWRlLm00IChHTlVQR19DSEVDS19UWVBFREVGKTogRGVmaW5lIEdOVSBTb3VyY2UuCgogICAgICAgIE1pZ3JhdGVkIHRvIGF1dG9jb25mIDIuNTIuCgkqIGFjaW5jbHVkZS5tNDogUmVtb3ZlZCBHTlVQR19MSU5LX0ZJTEVTIGFuZCBjb252ZXJ0ZWQuCgkqIGFjY29uZmlnLmg6IFJlbW92ZWQKCSogY29uZmlndXJlLmluOiBSZXBsYWNlZCBieS4uLgoJKiBjb25maWd1cmUuYWM6IGFuZCBtb2RpZmllZCBmb3IgdXNlIHdpdGggYXV0b2NvbmYgMi41Mi4gIFJlcGxhY2VkCglHTlVQR19MSU5LX0ZJTEVTIHdpdGggQUNfQ09ORklHX0xJTktTIGFuZCBtb3ZlZCBzb21lIGluZm9ybWF0aW9uYWwKCW1lc3NhZ2VzIHRvIHRoZSBlbmQuIFJlbW92ZWQgLS1lbmFibGUtbS1kZWJ1ZwoKCSogdGVzdHMvOiBOZXcuCgkqIE1ha2VmaWxlLmFtOiBJbmNsdWRlZCB0ZXN0cyBkaXJlY3RvcnkKCgkqIGNvbmZpZ3VyZS5pbiAoRFlOTElOS19NT0RfQ0ZMQUdTKTogVXNlIC1zaGFyZWQgd2l0aCBkZWMtb3NmLgoJUmVwb3J0ZWQgYnkgQ2hyaXMgQWRhbXMuICBNZXJnZWQgc29tZSBjYXNlcy4KCjIwMDEtMDUtMzEgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCVJlbGVhc2VkIDEuMS4zLgoKCSogY29uZmlndXJlLmluOiBVc2UgX2djcnlfIHByZWZpeCB3aGVuIGNyZWF0aW5nIHRoZSBjaXBoZXIgY29uc3RydWN0b3IuCgoJKiBhY2NvbmZpZy5oIChfR0NSWVBUX0lOX0xJQkdDUllQVCk6IERlZmluZSBpdCBoZXJlLgoKMjAwMS0wNS0yOCAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBhY2luY2x1ZGUubTQgKEdQSF9QUk9HX0RPQ0JPT0spOiBSZW1vdmVkLgoJKEdQSF9QUk9HX0RCMkFOWSk6IE5ldy4gVGFrZW4gZnJvbSBHUEguCgkqIGNvbmZpZ3VyZS5pbjogVXNlIGl0IGhlcmUuCgoyMDAwLTEyLTE5ICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLm9yZz4KCglNYWpvciBjaGFuZ2U6CglSZW1vdmVkIGFsbCBHbnVQRyBzdHVmZiBhbmQgcmVuYW1lZCB0aGlzIHBpZWNlIG9mIHNvZnR3YXJlCgl0byBnY3J5cHQuICBUaGUgZGlyZWN0b3J5IGdjcnlwdCBoYXMgYmVlbiByZW5hbWVkIHRvIHNyYy4KCjIwMDAtMTEtMTQgIFdlcm5lciBLb2NoICA8d2tAZ251cGcub3JnPgoKCVZlcnNpb24gMS4xLjIgcmVsZWFzZWQuCgoyMDAwLTExLTEzICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLm9yZz4KCgkqIGFjaW5jbHVkZS5tNCAoR05VUEdfRklYX0hEUl9WRVJTSU9OKTogVlBBVEggYnVpbGQgZml4LgoKMjAwMC0xMC0xMCAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5vcmc+CgoJKiBNYWtlZmlsZS5hbSAoZGlzdC1ob29rKTogQ3JlYXRlIHRoZSB2ZXJzaW9uIGZpbGUuCgkqIGNvbmZpZ3VyZS5pbjogU2V0IHRoZSBsaWJ0b29sIHZlcnNpb24gaGVyZSwgcmVtb3ZlZCB0aGUgbmVlZAoJZm9yIHRoZSB2ZXJzaW9uIGZpbGUuCgpNb24gU2VwIDE4IDE2OjM1OjQ1IENFU1QgMjAwMCAgV2VybmVyIEtvY2ggIDx3a0BvcGVuaXQuZGU+CgogICAgICAgICogYWNpbmNsdWRlLm00IChHTlVQR19DSEVDS19NTE9DSyk6ICBSZW1vdmVkIHRoYXQgc2lsbHkgbWtkaXIoKS4KCiAgICAgICAgKiBjb25maWd1cmUuaW46ICBDaGFuZ2VzIHRvIGFsbG93IGZvciBTb2xhcmlzIHJhbmRvbSBkZXZpY2UuCiAgICAgICAgQnkgTmlscyBFbGxtZW5yZWljaC4KICAgICAgICAoLS13aXRoLWVnZC1zb2NrZXQpOiBOZXcuCgogICAgICAgICogY29uZmlndXJlLmluIChHTlVQR19IT01FRElSKTogTmV3LgoKICAgICAgICAqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIGZzdGF0NjQgYW5kIGZvcGVuNjQKCiAgICAgICAgKiBhY2luY2x1ZGUubTQgKEdOVVBHX0NIRUNLX0ZBUVBST0cpOiBOZXcuCiAgICAgICAgKiBjb25maWd1cmUuaW46IFRlc3QgZm9yIHRoaXMuCgogICAgICAgICogY29uZmlndXJlLmluIChEWU5MSU5LX01PRF9DRkxBR1MpOiBGaXggYnkgRGF2aWQgQ2hhbXBpb24uCgpUdWUgQXVnIDIyIDE0OjMxOjE1IENFU1QgMjAwMCAgV2VybmVyIEtvY2ggIDx3a0BvcGVuaXQuZGU+CgogICAgICAgIFZlcnNpb24gMS4xLjEKCkZyaSBBdWcgMTggMTQ6Mjc6MTQgQ0VTVCAyMDAwICBXZXJuZXIgS29jaCAgPHdrQG9wZW5pdC5kZT4KCiAgKiBhZ2VudC86IE5ldy4KICAqIE1ha2VmaWxlLmFtLCBjb25maWd1cmUuaW46IFN1cHBvcnQgZm9yIHRoZSBuZXcgZGlyZWN0b3J5LgoKTW9uIEp1bCAxNyAxNjozNTo0NyBDRVNUIDIwMDAgIFdlcm5lciBLb2NoICA8d2tAPgoKICAqIGNvbmZpZ3VyZS5pbiAobWluZ3czMik6IENoYW5nZXMgdG8gYWxsb3cgZm9yIG1pbmd3MzJtc3ZjCgpGcmkgSnVsIDE0IDE5OjM4OjIzIENFU1QgMjAwMCAgV2VybmVyIEtvY2ggIDx3a0A+CgogIFRoZSBiaWcgbWVyZ2UgYmV0d2VlbiB0aGlzIG9uZSBhbmQgdGhlIHN0YWJsZSBicmFuY2ggMS4wLiAgU3RpbGwgbmVlZAogIHRvIG1lcmdlIFROQU5LUywgQVVUSE9SUyBhbmQgc3VjaC4gIEl0IHByb2JhbHkgZG9lcyBub3QgY29tcGlsZSB5ZXQuCgogICogYWNpbmNsdWRlLm00IChHTlVQR19DSEVDS19NTE9DSyk6IEZpeGVkIHN5bnRheCBlcnJvciBpbiBDIGNvZGUuCgogICogY29uZmlndXJlLmluOiBBZGQgY2hlY2sgZm9yIHRlcm1pby5oLCB3YWl0IHVuY3Rpb3NuIGFuZCBzaWdhY3Rpb24uCgogICogYWNpbmNsdWRlLm00LCBjb25maWd1cmUuaW4gKEdOVVBHX0NIRUNLX0dOVU1BS0UpOiBOZXcuCgogICogYWNpbmNsdWRlLm00IChNS0RJUl9UQUtFU19PTkVfQVJHKTogQ2hlY2sgc29tZSBoZWFkZXJzLiBCeSBHYetsIFF16XJpLgoKICAqIGNvbmZpZ3VyZS5pbiAoQU1fSU5JVF9BVVRPTUFLRSk6IFVzZSB0aGlzIG5vdy4gQnkgR2HrbC4KCiAgKiBhY2luY2x1ZGUubTQgKEdOVVBHX0NIRUNLX0VYUE9SVERZTkFNSUMpOiBSZXBsYWNlbWVudCBmb3IKICBHTlVQR19DSEVDS19SRFlOQU1JQyB3aGljaCBzaG91bGQgaGFuZGxlIGdjYyB3aXRoIG5vbiBHTlUgbGQgbmljZXIuCiAgQ29udHJpYnV0ZWQgYnkgRGF2ZSBEeWtzdHJhLgogICogY29uZmlndXJlLmluIChHTllQR19DSEVDS19SRFlOQU1JQyk6IFJlcGxhY2VkIGJ5IHRoZSBuZXcgY2hlY2suCgogICogY29uZmlndXJlLmluOiBBZGQgYSB0ZXN0IGZvciB1bmlzZ25lZCBsb25nIGxvbmcuCgogICogY29uZmlndXJlLmluIChEWU5MSU5LX01PRF9DRkxBR1MpOiBTZXQgZGlmZmVyZW50IGZvciBOZXRCU0QuCgogICogY29uZmlndXJlLmluOiBBZGQgY2hlY2sgZm9yIGNsb2NrX2dldHRpbWUKCiAgKiBjb25maWd1cmUuaW4gKEFMTF9MSU5HVUFTKTogQWRkIG5sLgogICogY29uZmlndXJlLmluIChBTExfTElOR1VBUyk6IEFkZCBFc3BlcmFudG8uCiAgKiBjb25maWd1cmUuaW4gKEFMTF9MSU5HVUFTKTogQWRkIHN2IGFuZCBqYS4KCiAgKiBjb25maWd1cmUuaW46IFVzZSAvdXNyL2xvY2FsIGZvciBDRkxBR1MgYW5kIExERkxBR1Mgd2hlbgogIHRhcmdldCBpcyBmcmVlYnNkLiAgQnkgUultaS4KCiAgKiBjb25maWd1cmUuaW46IERvIG5vdCBzZXQgZGV2ZWxvcG1lbnQgdmVyc2lvbiB3aGVuIHRoZSB2ZXJzaW9uIGhhcwogIGEgZGFzaCBpbiBpdC4gIFN1Z2dlc3RlZCBieSBEYXZlIER5a3N0cmEuCgogICogY29uZmlndXJlLmluOiBSZW1vdmVkIHN1YnN0aXR1dGlvbiBmb3IgZG9jL2dwaC9NYWtlZmlsZS4KICBEbyBhbGwgdGhlIGdjYyB3YXJuaW5nIG9ubHkgaW4gbWFpbnRhaW5lciBtb2RlLgoKICAqIGNvbmZpZ3VyZS5pbiAoZGxvcGVuKTogVXNlIENIRUNLX0ZVTkMgZm9yIGEgdGVzdCBvZiBkbG9wZW4gaW4gbGliYy4KICBTdWdnZXN0ZWQgYnkgQWxleGFuZHJlIE9saXZhLgogICgtV2FsbCk6IE1vdmVkIHRoZSBzZXR0dGluZyBvZiBnY2Mgd2FybmluZyBvcHRpb25zIG5lYXIgdG8gdGhlIGVuZAogIHNvIHRoYXQgdGVzdHMgZG9uJ3QgZ2V0IGNvbmZ1c2VkLiAgU3VnZ2VzdGVkIGJ5IFBhdWwgRC4gU21pdGguCgogICogYWNpbmNsdWRlLm00IChHTlVQR19TWVNfTk1fUEFSU0UpOiBBZGRlZCBCU0RJIHN1cHBvcnQuCiAgKEdOVVBHX0NIRUNLX1JEWU5BTUlDKTogRGl0dG8uCgogICogYWNpbmNsdWRlLm00IChHTlVQR19DSEVDS19NTE9DSyk6IENoYW5nZWQgdGhlIHdheSB0byB0ZXN0IGZvcgogIGxpYnJ0LiAgVGVzdCBzdWdnZXN0ZWQgYnkgSmVmZiBMb25nLgoKICAqIGFjaW5jbHVkZS5tNCAoR05VUEdfQ0hFQ0tfTUxPQ0spOiBEbyBsaWJydCBjaGVjayBvbmx5IHdoZW4KICB3ZSBjYW4ndCBsaW5rIGEgdGVzdCBwcm9ncmFtLiAgVGhpcyB3YXkgR05VIHN5c3RlbXMgZG9uJ3QgbmVlZAogIHRvIGxpbmsgYWdhaW5zdCBsaW5ydC4KICAoR05VUEdfQ0hFQ0tfSVBDKTogRml4ZWQgdXNlIG9mIFRSWV9DT01QSUxFIG1hY3JvLiAgRnJvbSBUaW0gTW9vbmV5LgoKICAqIGFjaW5jbHVkZS5tNCAoR05VUEdfU1lTX1NZTUJPTF9VTkRFUlNDT1JFKTogQWRkIHN1cHBvcnQgZm9yCiAgREpHUFAuCiAgKEdOVVBHX0NIRUNLX01MT0NLKTogQ2hlY2sgd2hldGhlciBtbG9jayBzaXRzIGluIGxpYnJ0LgoKICAqIGFjaW5jbHVkZS5tNCAoR05VUEdfQ0hFQ0tfUkRZTkFNSUMpOiBBZGQgTmV0QlNELiBCeSBUaG9tYXMgS2xhdXNuZXIuCgogICogYWNjb25maWcuaCAoSEFWRV9NTE9DSyk6IEFkZGVkCgpNb24gTWFyIDEzIDE5OjIyOjQ2IENFVCAyMDAwICBXZXJuZXIgS29jaCAgPHdrQG9wZW5pdC5kZT4KCgkqIGNvbmZpZ3VyZS5pbjogTm93IHVzZXMgdGhlIERvY2Jvb2sgTTRzIGZyb20gR1BILgoKTW9uIEphbiAzMSAxNzo0NjozNSBDRVQgMjAwMCAgV2VybmVyIEtvY2ggIDx3a0A+CgoJKiBNYWtlZmlsZS5hbTogUmUtYWRkZWQgdG9vbHMuIEJ5IFLpbWkuCgpNb24gSmFuIDMxIDE2OjM3OjM0IENFVCAyMDAwICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLmRlPgoKCSogY29uZmlndXJlLmluOiBDcmVhdGUgYSBzeW1saW5rIGZvciB0eXBlcy5oIGluIGdjcnlwdC8uCgpUaHUgSmFuIDI3IDE4OjAwOjQ0IENFVCAyMDAwICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLmRlPgoKCSogY29uZmlndXJlLmluIChnMTBkZWZzLmgpOiBSZXBsYWNlZCBieSBnbnVwZy1kZWZzLmgKCk1vbiBKYW4gMjQgMTM6MDQ6MjggQ0VUIDIwMDAgIFdlcm5lciBLb2NoICA8d2tAZ251cGcuZGU+CgoJKiBqbmxpYi8gOiBOZXcuCgoJKiBjb25maWd1cmUuaW46IERvIHNldCBkZXZlbG9wbWVudCB2ZXJzaW9uIHdoZW4gdGhlIHZlcnNpb24gaGFzCglhIGRhc2ggaW4gaXQuICBTdWdnZXN0ZWQgYnkgRGF2ZSBEeWtzdHJhLgoKVGh1IERlYyAgOSAxNzoyMjoyNyBDRVQgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0BnbnVwZy5kZT4KCgkqIGFjaW5jbHVkZS5tNCAoR05VUEdfRklYX0hEUl9WRVJTSU9OKTogTmV3LgoJKiBjb25maWd1cmUuaW46IENoZWNrIGFuZCBmaXggdGhlIHZlcnNpb24gbnVtYmVyIG9mIGdjcnlwdC9nY3J5cHQuaAoJc28gdGhhdCBpdCBpcyBhbHdheXMgdGhlIHNhdmUgYXMgVkVSU0lPTi4KClRodSBPY3QgMjggMTY6MTc6NDYgQ0VTVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGdudXBnLmRlPgoKCSogU3RhcnRlZCB3aXRoIGRldmVsb3BtZW50IHNlcmllcyAxLjEgb24gMTk5OS0xMC0yNgoKVHVlIE9jdCAyNiAxNDoxMDoyMSBDRVNUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAZ251cGcuZGU+CgoJKiBSRUFETUUtYWxwaGE6IE5ldwoKCSogY29uZmlndXJlLmluOiBGaXhlZCBxdW90aW5nIGluIHRlc3QgZm9yIGRldmVsb3BtZW50IHZlcnNpb24uCgoJKiBUSEFOS1M6IEFkZCBlbnRyaWVzIGZvciBNaWNoYWVsLCBCcmVubm8gYW5kIEogSG9yYWNpbyB3aG8gZGlkCgl2ZXJ5IG5pY2UgSG93dG8gZG9jdW1lbnRzIC0gSSBhcG9saWdpemUgZm9yIGZvcmdldHRpbmcgdG8gbWVudGlvbiB0aGVtCgllYXJsaWVyLgoKRnJpIFNlcCAxNyAxMjo1Njo0MiBDRVNUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoKCSogY29uZmlndXJlLmluOiBBZGQgIi1sY2FwIiB3aGVuIGNhcGFiaWxpdGllcyBhcmUgcmVxdWVzdGVkLgoJQWRkIHRoZSBjb25kaXRpb25hbCBDUk9TU19DT01QSUxJTkcuCgkqIE1ha2VmaWxlLmFtOiBEb24ndCB1c2UgY2hlY2tzIHdoZW4gQ1JPU1NfQ09NUElMSU5HLgoKCldlZCBTZXAgMTUgMTY6MjI6MTcgQ0VTVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCgkqIGNvbmZpZ3VyZS5pbiAoQUxMX0xJTkdVQVMpOiBBZGQgcHRfUFQuCgoJKiBjb25maWd1cmUuaW46IFNvbWUgdHdlYWtzIGZvciBjcm9zcyBjb21waWxpbmcgdW5kZXIgTWluZ1czMgoJKiBhY2NvbmZpZy5oIChVU0VfU1RBVElDX1JORFczMik6IE5ldy4KClR1ZSBTZXAgIDcgMTc6MDg6MTAgQ0VTVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCgkqIFZFUlNJT046IFNldCB0byAxLjAuMC4KCk1vbiBTZXAgIDYgMTk6NTk6MDggQ0VTVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCgkqIGNvbmZpZ3VyZS5pbjogQ3JlYXRlIG1ha2VmaWxlIGluIGRvYy9ncGgKCgkqIGFjaW5jbHVkZS5tNCAoR05VUEdfRlVOQ19NS0RJUl9UQUtFU19PTkVfQVJHKTogTmV3CgkqIGNvbmZpZ3VyZS5pbjogdXNlIHRoZSBhYm92ZS4KClRodSBTZXAgIDIgMTY6NDA6NTUgQ0VTVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCgkqIFZFUlNJT046IFNldCB0byAwLjkuMTEuCgpUdWUgQXVnIDMxIDE3OjIwOjQ0IENFU1QgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbjogTWlub3IgY2hhbmdlcyB0byB0aGUgT1MvMiBhbmQgTWluZ3czMiBzeXN0ZW0gbGFiZWxzLgoJQWRkIGEgcHJpbnRhYmxlIG5hbWUgZm9yIEh1cmQuCgpNb24gQXVnIDMwIDIwOjM4OjMzIENFU1QgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbjogU29tZSBzdXBwb3J0IGZvciBESkdQUCAoTWFyayBFbGJyZWNodCkKCldlZCBBdWcgIDQgMTA6MzQ6NDYgQ0VTVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCSogVkVSU0lPTjogU2V0IHRvIDAuOS4xMC4KCk1vbiBKdWwgMjYgMDk6MzQ6NDYgQ0VTVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCSogYWNpbmNsdWRlLm00IChHTlVQR19TWVNfU1lNQk9MX1VOREVSU0NPUkUpOiByZW1vdmUgaW5pdCBvZiBhY19jdl8uLi4KCgkqIE1ha2VmaWxlLmFtIChESVNDTEVBTkZJTEVTKTogTmV3CgpGcmkgSnVsIDIzIDEzOjUzOjAzIENFU1QgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIFZFUlNJT046IFNldCB0byAwLjkuOS4KCgkqIGNvbmZpZ3VyZS5pbjogUHJpbnQgYSBub3RpY2Ugd2hlbiBybmR1bml4IGlzIHVzZWQuCgpUaHUgSnVsIDE1IDEwOjE1OjM1IENFU1QgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIGFjaW5jbHVkZS5tNCAoR05VUEdfU1lTX1NZTUJPTF9VTkRFUlNDT1JFKTogRml4ZWQgbGFzdCBtb2RpZmljYXRpb24uCgpXZWQgSnVsICA3IDEzOjA4OjQwIENFU1QgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIE1ha2VmaWxlLmFtOiBTdXBwb3J0IGZvciBsaWJ0b29sLgoJKiBjb25maWd1cmUuaW46IERpdHRvLgoKVHVlIEp1biAyOSAyMTo0NDoyNSBDRVNUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBjb25maWd1cmUuaW4gKHVzZV9sb2NhbF96bGliKTogVGhlIGxvc3QgZG9sbGFyIGlzIGJhY2suCgoJKiBhY2luY2x1ZGUubTQgKEdOVVBHX1NZU19TWU1CT0xfVU5ERVJTQ09SRSk6IEFkZCBFTVggY2FzZS4KCSogY29uZmlndXJlLmluOiBBbm90aGVyIHZhcmlhbnQgb2YgdGhlIE1YIHZlbmRvciBzdHJpbmcKCgkqIGNvbmZpZ3VyZS5pbiAoLS13aXRoLWNhcGFiaWxpdGllcyk6IFNvbWUgdGVzdCBjb2RlIChSZW1pKS4KClNhdCBKdW4gMjYgMTI6MTU6NTkgQ0VTVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCSogYWNpbmNsdWRlLm00IChHTlVQR19DSEVDS19SRFlOQU1JQyk6IFN1cHBvcnQgZm9yIEhQVVggYW5kIElSSVguCgkqIGNvbmZpZ3VyZS5pbiAoSEFWRV9ETF9TSExfTE9BRCk6IE5ldyBmb3IgSFBVWCAoRGF2ZSBEeWtzdHJhKS4KCgkqIFZFUlNJT046IE5vdyAwLjkuOAoKV2VkIEp1biAxNiAyMDoxNjoyMSBDRVNUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBjb25maWd1cmUuaW46IEFkZCB0ZXN0IGZvciBkb2Nib29rLXRvLW1hbgoKVHVlIEp1biAxNSAxMjoyMTowOCBDRVNUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBhY2luY2x1ZGUubTQgKEdOVVBHX1NZU19OTV9QQVJTRSk6IFN1cHBvcnQgZm9yIHtuZXQsZnJlZX1ic2QsCgpUaHUgSnVuIDEwIDE0OjE4OjIzIENFU1QgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbiAoWkxJQixHREJNKTogQ2hlY2sgYm90aCwgaGVhZGVyIGFuZCBsaWIuCgpTYXQgSnVuICA1IDE1OjMwOjMzIENFU1QgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIHBrY2xpc3QuYyAoa2V5X3ByZXNlbnRfaW5fcGtfbGlzdCk6IE5ldyAoTWljaGFlbCkuCgpUdWUgTWF5IDI1IDE5OjUwOjMyIENFU1QgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbiAoSVNfREVWRUxPUE1FTlRfVkVSU0lPTik6IEZpeGVkIGRldGVjdGlvbi4KClN1biBNYXkgMjMgMTQ6MjA6MjIgQ0VTVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCSogYWNpbmNsdWRlLm00IChHTlVQR19TWVNfU1lNQk9MX1VOREVSU0NPUkUpOiBhc3N1bWUgeWVzIHdoZW4KCWNyb3NzLWNvbXBpbGluZy4KCk1vbiBNYXkgMTcgMjE6NTQ6NDMgQ0VTVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCSogY29uZmlndXJlLmluIChzb2NrZXQpOiBGaXggZm9yIFVuaXN5cyBieSBLYXRzdWhpcm8gS29uZG91LgoKU2F0IE1heSAgOCAxOToyODowOCBDRVNUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBORVdTOiBBZGQgYSBtYXJrZXIgbGluZSB3aGljaCBJIGZvcmdvdCB0byBkbyBmb3IgMC45LjYuCgpUaHUgTWF5ICA2IDE0OjE4OjE3IENFU1QgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIFJFQURNRTogTWlub3IgdXBkYXRlcwoKCSogVkVSU0lPTjogTm93IDAuOS42CgpUaHUgQXByICA4IDA5OjM1OjUzIENFU1QgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIGFjaW5jbHVkZS5tNCAoR05VUEdfQ0hFQ0tfUkRZTkFNSUMpOiBGaXggZm9yCgkJCQkJICAgICAgIGFtaWdhLW9wZW5ic2QgKFBldGVyIFJlaWNoKQoJKEdOVVBHX1BST0dfTk0pOiBEaXR0bwoKV2VkIEFwciAgNyAyMDo1MTozOSBDRVNUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBNYWtlZmlsZS5hbSAoZzEwZGVmcy5oKTogUmVtb3ZlZC4KCSogY29uZmlndXJlLmluIChBQ19PVVRQVVRfQ09NTUFORFMpOiBDcmVhdGUgZzEwZGVmcy5oCgpTYXQgTWFyIDIwIDEyOjU1OjMzIENFVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCSogVkVSU0lPTjogTm93IDAuOS41CgpTdW4gTWFyIDE0IDE5OjM0OjM2IENFVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCSogYWNpbmNsdWRlLm00IChBTV9TWVNfU1lNQk9MX1VOREVSU0NPUkUpOiBSZW1vdmVkIGJlY2F1c2UgaXQgaXMKCW5vdyBpbiB0aGUgbGF0ZXN0IGxpYnRvb2wuCgpUaHUgTWFyIDExIDE2OjM5OjQ2IENFVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCSogY29uZmlndXJlLmluOiBSZW1vdmVkIHRoZSBuZWVkIGZvciBsaWJ0b29sCgpNb24gTWFyICA4IDIwOjQ3OjE3IENFVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCSogY29uZmlndXJlLmluIChETFNZTV9ORUVEU19VTkRFUlNDT1JFKTogUmVwbGFjZWQuCgkqIGFjaW5jbHVkZS5pbiAoQU1fU1lTX1NZTUJPTF9VTkRFUlNDT1JFKTogTmV3LgoKCSogVkVSU0lPTjogTm93IDAuOS40CgpTdW4gRmViIDI4IDE5OjExOjAwIENFVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCSogY29uZmlndXJlLmluIChkbGQpOiBUZXN0IGRpc2FibGVkLgoKRnJpIEZlYiAyNiAxNzo1NTo0MSBDRVQgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIGVuY29kZS5jIChlbmNvZGVfc2ltcGxlKTogdGVtcG9yYXJ5IGZpeC4KCldlZCBGZWIgMjQgMTE6MDc6MjcgQ0VUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBjb25maWd1cmUuaW46IE5ldyBvcHRpb24gLS1lbmFibGUtc3RhdGljLXJuZC4KCk1vbiBGZWIgMjIgMjA6MDQ6MDAgQ0VUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBCVUdTOiBOb3cgd2UgYXNzaWduIGJ1ZyBudW1iZXJzLgoJKiBPQlVHUzogTmV3IHRvIGtlZXAgcmFjayBvIGZpeGVkIGJ1Z3MgKENWUyBvbmx5KQoKRnJpIEZlYiAxOSAxODowMTo1NCBDRVQgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIFZFUlNJT046IFJlbGVhc2VkIDAuOS4zCgpGcmkgRmViIDE5IDE1OjQ5OjE1IENFVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCSogYWNpbmNsdWRlLm00OiBSZW1vdmVkIGdldHRleHQgbWFjcm9zLgoKVHVlIEZlYiAxNiAxNDoxMDowMiBDRVQgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbiAoc29ja2V0KTogQ2hlY2sgZm9yIC1sc29ja2V0IGFuZCAtbG5zbC4KCShvc2Y0KTogRGlzYWJsZSBhbGwgd2FybmluZ3MgZm9yIERFQydzIGNjLgoJKC1XYWxsKTogQWRkIG1vcmUgd2FybmluZyBvcHRpb25zIGZvciBnY2MKClNhdCBGZWIgMTMgMTI6MDQ6NDMgQ0VUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBjb25maWd1cmUuaW46IENoYW5nZWQgZGV0ZWN0aW9uIG9mIGNvbXBpbGVyIGZsYWdzLgoJKiBpbnRsLyA6IFJlbW92ZWQgZGlyZWN0b3J5CgpXZWQgRmViIDEwIDE3OjE1OjM5IENFVCAxOTk5ICBXZXJuZXIgS29jaCAgPHdrQGlzaWwuZC5zaHV0dGxlLmRlPgoKCSogYWNpbmNsdWRlLm00IChHTlVQR19DSEVDS19SRFlOQU1JQyk6IEZpeCBmb3IgZnJlZWJzZCAyLjIKCgkqIGNvbmZpZ3VyZS5pbjogYSBsb3Qgb2YgY2hhbmdlcyB0byBhbGxvdyBzZWxlY3Rpb24gb2YgbW9kdWxlcy4KCUFkZCBzdXBwb3J0IGZvciBPUy8yLgoKCSogYWNpbmNsdWRlLm00OiBhZGQgc29tZSBtb3JlIGNhY2hpbmcKCgkqIFJFQURNRTogU3BlbGxpbmcgYW5kIGdyYW1tYXIgY29ycmVjdGlvbnMgKEpvaG4gQS4gTWFydGluKQoJKiBJTlNUQUxMOiBEaXR0by4KCldlZCBKYW4gMjAgMjE6NDA6MjEgQ0VUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBjb25maWd1cmUuaW46IC0tZW5hYmxlLW0tZ3VhcmQgaXMgbm93IGRlZmF1bHQKCldlZCBKYW4gMTMgMTI6NDk6MzYgQ0VUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBJTlNUQUxMOiBBcHBsaWVkIG5ldyBpbmZvcm1hdGlvbiBob3cgdG8gYnVpbGQgcnBtcyBieSBGYWJpbyBDb2F0dGkKCSogTWFrZWZpbGUuaW4gKGdudXBnLnNwZWMpOiBDaGFuZ2VkIHRoZSBuYW1lcy4KClR1ZSBKYW4gMTIgMTE6MTc6MTggQ0VUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBjb25maWcubGlua3MgKG02OGstYXRhcmktbWludCk6IE5ldwoKVHVlIEphbiAxMiAwOToxNzoxOSBDRVQgMTk5OSAgR2HrbCBRdelyaSA8Z3F1ZXJpQG1haWwuZG90Y29tLmZyPgoKCSogYWxsOiBGaXhlZCB0eXBvcyBhbGwgb3ZlciB0aGUgcGxhY2UKClNhdCBKYW4gIDkgMTY6MDI6MjMgQ0VUIDE5OTkgIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBjb25maWd1cmUuaW46IEFkZCBhIHdheSB0byBzdGF0aWNhbGx5IGxpbmsgcm5kdW5peAoKU3VuIEphbiAgMyAxNToyODo0NCBDRVQgMTk5OSAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIGFjaW5jbHVkZS5tNCAoR05VUEdfQ0hFQ0tfUkRZTkFNSUMpOiBOZXcuCgkqIGNvbmZpZ3VyZS5pbiAoRFlOTE9BRF9DRkxBR1MpOiBVc2UgcmVzdWx0IGZyb20gQ0hFQ0tfUkRZTkFNSUMKCldlZCBEZWMgMjMgMTM6MTg6MTQgQ0VUIDE5OTggIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBSRUFETUU6IFJlcGxhY2VkIHRoZSBjb21tYW5kIG92ZXJ2aWV3IHdpdGggYSBzaG9ydCBpbnRyby4KClNhdCBEZWMgMTIgMTg6NDA6MzIgQ0VUIDE5OTggIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBjb25maWd1cmUuaW46IEFkZCBjaGVjayBmb3IgZGxvcGVuIGluIGxpYmMgKEdyZWcgVHJveGVsKQoJYW5kIGEgbmV3IGRlZmluZQoJKiBhY2NvbmZpZy5oIChETFNZTV9ORUVEU19VTkRFUlNDT1JFKTogTmV3LgoKVGh1IERlYyAxMCAyMDoxNTozNiBDRVQgMTk5OCAgV2VybmVyIEtvY2ggIDx3a0Bpc2lsLmQuc2h1dHRsZS5kZT4KCgkqIGFjaW5jbHVkZS5tIChHTlVQR19DSEVDS19QSUMpOiBOZXcKCSogY29uZmlndXJlLmluLCBhY2luY2x1ZGUubTQ6IFJlbmFtZWQgYWxsIFdLXyB0byBHTlVQR18KClR1ZSBEZWMgIDggMTU6MDk6MjkgQ0VUIDE5OTggIFdlcm5lciBLb2NoICA8d2tAaXNpbC5kLnNodXR0bGUuZGU+CgoJKiBWRVJTSU9OOiBTZXQgdG8gMC40LjUKCldlZCBOb3YgMjUgMTI6Mzg6MjkgMTk5OCAgV2VybmVyIEtvY2ggICh3a0Bpc2lsLmQuc2h1dHRsZS5kZSkKCgkqIGNvbmZpZ3VyZS5pbiAoVVNFX1JORExJTlVYKTogTmV3LgoKRnJpIE5vdiAyMCAxOTozNDo1NyAxOTk4ICBXZXJuZXIgS29jaCAgKHdrQGlzaWwuZC5zaHV0dGxlLmRlKQoKCSogVkVSU0lPTjogUmVsZWFzZWQgMC40LjQKCgkqIGNvbmZpZ3VyZS5pbiAodHJ5X2FzbV9tb2R1bGVzKTogRm9yIG9wdGlvbiAtLWRpc2FibGUtYXNtCgpUdWUgTm92IDEwIDE5OjMyOjQwIDE5OTggIFdlcm5lciBLb2NoICAod2tAaXNpbC5kLnNodXR0bGUuZGUpCgoJKiBjb25maWd1cmUuaW4gKE1QSV9TRkxBR1MpOiBOZXcuCgpUdWUgTm92IDEwIDEzOjQ0OjUzIDE5OTggIFdlcm5lciBLb2NoICAod2tAaXNpbC5kLnNodXR0bGUuZGUpCgoJKiBBQk9VVC1OTFM6IE5ldwoJKiBjb25maWd1cmUuaW4gKEFDX1JFVklTSU9OKTogTmV3LgoKU3VuIE5vdiAgOCAxODoyMDozNSAxOTk4ICBXZXJuZXIgS29jaCAgKHdrQGlzaWwuZC5zaHV0dGxlLmRlKQoKCSogVkVSU0lPTjogU2V0IHRvIDAuNC4zCgpTdW4gT2N0IDI1IDE5OjQ5OjM3IDE5OTggIFdlcm5lciBLb2NoICAod2tAaXNpbC5kLnNodXR0bGUuZGUpCgoJKiBNYWtlZmlsZS5hbSAoZzEwZGVmcy5oKTogTmV3IG1hY3JvIEdOVVBHX0RBVEFESVIuCgpXZWQgT2N0IDIxIDE3OjI0OjI0IDE5OTggIFdlcm5lciBLb2NoICAod2tAaXNpbC5kLnNodXR0bGUuZGUpCgoJKiBjb25maWd1cmUuaW46IFJlbW92ZWQgZ2V0dGV4dCBrbHVkZ2UKCSogYWNpbmNsdWRlLm00OiBBZGQgcGF0Y2hlZCBBTV9XSVRIX05LUyBtYWNybwoKVHVlIE9jdCAyMCAxOTowMzozNiAxOTk4ICBXZXJuZXIgS29jaCAgKHdrQGlzaWwuZC5zaHV0dGxlLmRlKQoKCSogY29uZmlndXJlLmluOiBLbHVkZ2UgdG8gbWFrZSBBTV9HTlVfR0VUVEVYVCB3b3JrLAoJY2hhbmdlZCBzb21lIG1hY29ycyB0byBtb3JlIG1vZGVybiB2ZXJzaW9ucy4gQWxzbwoJY2hhbmdlZyB0aGUgYWxsIG1ha2VmaWxlcyB0byByZW1vdmUgZHVwbGljYXRlIC4uL2ludGwuCgkqIGFjaW5jbHVkZS5tNDogUmVtb3ZlZCB0aGUgZ2V0dGV4dCBzdHVmZiwgYXMgdGhpcwoJYWxyZWFkeSBjb21lcyB3aXRoIGF1dG9tYWtlIG5vdy4KCldlZCBPY3QgMTQgMTI6MTE6MzQgMTk5OCAgV2VybmVyIEtvY2ggICh3a0Bpc2lsLmQuc2h1dHRsZS5kZSkKCgkqIGNvbmZpZ3VyZS5pbiAoTkFNRV9PRl9ERVZfUkFORE9NKTogTmV3LgoJKERZTkxJTktfTU9EX0NGTEFHUyk6IE5ldy4KClRodSBPY3QgIDggMTA6NTU6MTUgMTk5OCAgV2VybmVyIEtvY2ggICh3a0Bpc2lsLmQuc2h1dHRsZS5kZSkKCgkqIE1ha2VmaWxlLmFtIChnMTBkZWZzLmgpOiBjcmVhdGVzIGluY2x1ZGUgZmlsZQoJKiBhY2NvbmZpZy5oOiBub3cgaW5jbHVkZXMgZzEwZGVmcy5oCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlZCBHMTBfTE9DQUxFRElSIGFuZCBHTlVQR19MSUIKClRodSBTZXAgMTcgMTg6NDk6NDAgMTk5OCAgV2VybmVyIEtvY2ggICh3a0Aobm9uZSkpCgoJKiBNYWtlZmlsZS5hbSAoZGlzdC1ob29rKTogTm93IGNyZWF0ZXMgUlBNIGZpbGUuCgkqIHNjcmlwdHMvZ251cGcuc3BlYzogTmV3IHRlbXBsYXRlIGZpbGUgZm9yIFJQTXMKClRodSBKdWwgMzAgMTk6MTc6MDcgMTk5OCAgV2VybmVyIEtvY2ggICh3a0Aobm9uZSkpCgoJKiBhY2luY2x1ZGUuaCAoV0tfQ0hFQ0tfSVBDKTogTmV3CgkqIGNvbmZpZ3VyZS5pbiA6IEFkZCBjaGVja3MgZm9yIFN5c1YgSVBDCgpUaHUgSnVuIDI1IDExOjE4OjQ5IDE5OTggIFdlcm5lciBLb2NoICAod2tAaXNpbC5kLnNodXR0bGUuZGUpCgoJKiBjb25maWd1cmUuaW4gKC0tZGlzYWJsZS1keW5sb2FkKTogTmV3LgoKV2VkIEp1biAxMCAwNzo0ODo1OSAxOTk4ICBXZXJuZXIgS29jaCxtb2JpbCwsLAkod2tAdG9ib2xkKQoKCSogY29uZmlndXJlLmluIChHTlVQR19MSUJESVIpOiBOZXcuCgpNb24gTWF5IDI1IDE5OjEwOjU5IDE5OTggIFdlcm5lciBLb2NoICAod2tAaXNpbC5kLnNodXR0bGUuZGUpCgoJKiByYW5kLXVuaXguYyAoZmFzdF9yYW5kb21fcG9sbCk6IGZpeGVkIHN5bnRheCBidWcuCgpNb24gTWF5IDExIDEwOjIxOjMxIDE5OTggIFdlcm5lciBLb2NoICAod2tAaXNpbC5kLnNodXR0bGUuZGUpCgoJKiBjb25maWd1cmUuaW4gKFBSSU5UQUJMRV9PU19OQU1FKTogTGludXggaXMgbm93IEdOVS9MaW51eAoKVHVlIEFwciAxNCAxOTowODowNSAxOTk4ICBXZXJuZXIgS29jaCAgKHdrQGlzaWwuZC5zaHV0dGxlLmRlKQoKCSogW2FsbCBmaWxlc106IEFwcGxpZWQgTWF0dGhldyBTa2FsYSdzIHR5cG8gYW5kIGdyYW1tYXIgZml4ZXMuCgpXZWQgTWFyICA0IDEwOjMyOjQwIDE5OTggIFdlcm5lciBLb2NoICAod2tAaXNpbC5kLnNodXR0bGUuZGUpCgoJKiBjb25maWd1cmUuaW4gKGdldHJ1c2FnZSxnZXR0aW1lb2ZkYXkpOiBOZXcgdGVzdHMuCgpGcmkgRmViIDI3IDEzOjE0OjE3IDE5OTggIFdlcm5lciBLb2NoICAod2tAaXNpbC5kLnNodXR0bGUuZGUpCgoJKiBjb25maWd1cmUuaW4gKC0tZGlzYWJsZS1tLWd1YXJkKTogTmV3LgoKVGh1IEZlYiAyNiAxNzowOToyNyAxOTk4ICBXZXJuZXIgS29jaCAgKHdrQGlzaWwuZC5zaHV0dGxlLmRlKQoKCSogY29uZmlndXJlLmluLCBhY2luY2x1ZGUubTQsIGludGwvLCBwby86IE5ldyBtYWNyb3MgdGFrZW4KCWZyb20gR05PTUUsIHN3aXRjaGVkIHRvIGF1dG9tYWtlIDEuMmYKClRodSBGZWIgMjYgMDk6MDU6NDYgMTk5OCAgV2VybmVyIEtvY2ggICh3a0Bpc2lsLmQuc2h1dHRsZS5kZSkKCgkqIGNvbmZpZ3VyZS5pbiAoZG9jL01ha2VmaWxlKTogTmV3CgpUaHUgRmViIDI2IDA3OjQwOjQ3IDE5OTggIFdlcm5lciBLb2NoICAod2tAaXNpbC5kLnNodXR0bGUuZGUpCgoJKiBjb25maWd1cmUuaW46IENoYW5nZWQgZ2V0dGV4dCBzdHVmZgoKV2VkIEZlYiAyNSAxMTo0NDoxMCAxOTk4ICBXZXJuZXIgS29jaCAgKHdrQGlzaWwuZC5zaHV0dGxlLmRlKQoKCSogY2hlY2tzLyp0ZXN0IDogcmVzdHJ1Y3R1cmVkIHRoZSBkaXJlY3RvcnkuCgpUdWUgRmViIDI0IDE1OjU5OjEyIDE5OTggIFdlcm5lciBLb2NoICAod2tAaXNpbC5kLnNodXR0bGUuZGUpCgoJKiBjb25maWd1cmUuaW46IENoYW5nZWQgdGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UgdG8gR05VUEcgYW5kCgljaG5hZ2VkIHNldmVyYWwgb3RoZXIgbmFtZXMgdG9vLgoKV2VkIEZlYiAxOCAxNzozNjo0NSAxOTk4ICBXZXJuZXIgS29jaCAgKHdrQGlzaWwuZC5zaHV0dGxlLmRlKQoKCSogTWFrZWZpbGUuYW0gKGNoZWNrcyk6IE5ldy4KClNhdCBGZWIgMTQgMTU6Mzc6NTUgMTk5OCAgV2VybmVyIEtvY2ggICh3a0Bpc2lsLmQuc2h1dHRsZS5kZSkKCgkqIGNvbmZpZ3VyZS5pbiAobXBpX2NvbmZpZ19kb25lKTogUmVtb3ZlZCBhc20gbGlua3MgY2FjaGluZy4KClNhdCBGZWIgMTQgMTQ6MDI6MjAgMTk5OCAgV2VybmVyIEtvY2ggICh3a0Bpc2lsLmQuc2h1dHRsZS5kZSkKCgkqIGNvbmZpZ3VyZS5pbiAoUFJJTlRBQkxFX09TX05BTUUpOiBOZXcuCgkqIGFjY29uZmlnLmg6IExpa2V3aXNlLgoKRnJpIEZlYiAxMyAxOTo0Mzo0MSAxOTk4ICBXZXJuZXIgS29jaCAgKHdrQGlzaWwuZC5zaHV0dGxlLmRlKQoKCSogY29uZmlndXJlLmluIDogRml4ZWQgemxpYiBzdHVmZgoJKiBNYWtlZmlsZS5hbTogTGlrZXdpc2UKCgogQ29weXJpZ2h0IDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDYsCgkgICAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgoKIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRoZSBhdXRob3IgZ2l2ZXMKIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCgogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dCBldmVuIHRoZQogaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCg==