LyoKICogUmFkaW8gUmVzb3VyY2UgQ29udHJvbCBUZWNobmljYWwgU3BlY2lmaWNhdGlvbiBBU04uMSBtb2R1bGUuCiAqIDNHUFAgMjUuMzMxIChUUyAxMjUgMzMxKSAoRVRTSSByZWYgUlRTL1RTR1ItMDIyNTMzMXY3MTApIFsyMDA2LTA2XQogKiBFeHRyYWN0ZWQgYW5kIHZlcmlmaWVkIGJ5IExldiBXYWxraW4gPHZsbUBsaW9uZXQuaW5mbz4KICoKICogRE8gTk9UIFJFRElTVFJJQlVURS4gT2J0YWluIHlvdXIgb3duIGNvcHkgb2YgM0dQUCBSUkMgc3BlY2lmaWNhdGlvbgogKiBpZiB5b3UgbmVlZCB0byBjcmVhdGUgcHJvZHVjdHMgYmFzZWQgb24gdGhpcyBSUkMgQVNOLjEgbW9kdWxlLgogKgogKiBUaGUgRVRTSSBoYXMgZ3JhbnRlZCBtZSB0aGUgcmlnaHQgdG8gcmVwcm9kdWNlIHRoaXMgQVNOLjEgUlJDCiAqIChSYWRpbyBSZXNvdXJjZSBDb250cm9sKSBtb2R1bGUgcHJvdmlkZWQgdGhhdCBJIGluc2VydCB0aGUgZm9sbG93aW5nCiAqIHBhcmFncmFwaDoKICoKICogM0dQUCh0bSkgVFNzIGFuZCBUUnMgYXJlIHRoZSBwcm9wZXJ0eSBvZiBBUklCLCBBVElTLCBFVFNJLCBDQ1NBLCBUVEEgYW5kIFRUQwogKiB3aG8gam9pbnRseSBvd24gdGhlIGNvcHlyaWdodCBpbiB0aGVtLiBUaGV5IGFyZSBzdWJqZWN0IHRvIGZ1cnRoZXIKICogbW9kaWZpY2F0aW9ucyBhbmQgYXJlIHRoZXJlZm9yZSBwcm92aWRlZCB0byB5b3UgImFzIGlzIiBmb3IgaW5mb3JtYXRpb24KICogcHVycG9zZXMgb25seS4gRnVydGhlciB1c2UgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4KICovCgpDbGFzcy1kZWZpbml0aW9ucyBERUZJTklUSU9OUyBBVVRPTUFUSUMgVEFHUyA6Oj0KCkJFR0lOCgpJTVBPUlRTCgoJQWN0aXZlU2V0VXBkYXRlLAoJQWN0aXZlU2V0VXBkYXRlQ29tcGxldGUsCglBY3RpdmVTZXRVcGRhdGVGYWlsdXJlLAkKCUFzc2lzdGFuY2VEYXRhRGVsaXZlcnksCglDZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4sCglDZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU5GYWlsdXJlLAoJQ2VsbFVwZGF0ZSwKCUNlbGxVcGRhdGVDb25maXJtLUNDQ0gsCglDZWxsVXBkYXRlQ29uZmlybSwKCUNvdW50ZXJDaGVjaywKCUNvdW50ZXJDaGVja1Jlc3BvbnNlLAoJRG93bmxpbmtEaXJlY3RUcmFuc2ZlciwKCUhhbmRvdmVyVG9VVFJBTkNvbXBsZXRlLAoJSW5pdGlhbERpcmVjdFRyYW5zZmVyLAoJSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdFUkFOSXUsCglIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLAoJSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUNETUEyMDAwLAoJSGFuZG92ZXJGcm9tVVRSQU5GYWlsdXJlLAoJTUJNU0FjY2Vzc0luZm9ybWF0aW9uLAoJTUJNU0NvbW1vblBUTVJCSW5mb3JtYXRpb24sCglNQk1TQ3VycmVudENlbGxQVE1SQkluZm9ybWF0aW9uLAoJTUJNU0dlbmVyYWxJbmZvcm1hdGlvbiwKCU1CTVNNb2RpZmljYXRpb25SZXF1ZXN0LAoJTUJNU01vZGlmaWVkU2VydmljZXNJbmZvcm1hdGlvbiwKCU1CTVNOZWlnaGJvdXJpbmdDZWxsUFRNUkJJbmZvcm1hdGlvbiwKCU1CTVNTY2hlZHVsaW5nSW5mb3JtYXRpb24sCglNQk1TVW5tb2RpZmllZFNlcnZpY2VzSW5mb3JtYXRpb24sCglNZWFzdXJlbWVudENvbnRyb2wsCglNZWFzdXJlbWVudENvbnRyb2xGYWlsdXJlLAoJTWVhc3VyZW1lbnRSZXBvcnQsCglQYWdpbmdUeXBlMSwKCVBhZ2luZ1R5cGUyLAoJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLAoJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUsCglQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25GYWlsdXJlLAoJUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbiwKCVBVU0NIQ2FwYWNpdHlSZXF1ZXN0LAoJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24sCglSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkNvbXBsZXRlLAoJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb25GYWlsdXJlLAoJUmFkaW9CZWFyZXJSZWxlYXNlLAoJUmFkaW9CZWFyZXJSZWxlYXNlQ29tcGxldGUsCglSYWRpb0JlYXJlclJlbGVhc2VGYWlsdXJlLAoJUmFkaW9CZWFyZXJTZXR1cCwKCVJhZGlvQmVhcmVyU2V0dXBDb21wbGV0ZSwKCVJhZGlvQmVhcmVyU2V0dXBGYWlsdXJlLAoJUlJDQ29ubmVjdGlvblJlamVjdCwKCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLAoJUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSCwKCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlQ29tcGxldGUsCglSUkNDb25uZWN0aW9uUmVxdWVzdCwKCVJSQ0Nvbm5lY3Rpb25TZXR1cCwKCVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLAoJUlJDU3RhdHVzLAoJU2VjdXJpdHlNb2RlQ29tbWFuZCwKCVNlY3VyaXR5TW9kZUNvbXBsZXRlLAoJU2VjdXJpdHlNb2RlRmFpbHVyZSwKCVNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZSwKCVNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZUluZGljYXRpb24sCglTeXN0ZW1JbmZvcm1hdGlvbi1CQ0gsCglTeXN0ZW1JbmZvcm1hdGlvbi1GQUNILAoJU3lzdGVtSW5mb3JtYXRpb25DaGFuZ2VJbmRpY2F0aW9uLAoJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbiwKCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZSwKCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25GYWlsdXJlLAoJVHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sLAoJVHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sRmFpbHVyZSwKCVVFQ2FwYWJpbGl0eUVucXVpcnksCglVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbiwKCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uQ29uZmlybSwKCVVwbGlua0RpcmVjdFRyYW5zZmVyLAoJVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbCwKCVVSQVVwZGF0ZSwKCVVSQVVwZGF0ZUNvbmZpcm0sCglVUkFVcGRhdGVDb25maXJtLUNDQ0gsCglVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb24sCglVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb25Db25maXJtLAoJVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uRmFpbHVyZQpGUk9NIFBEVS1kZWZpbml0aW9ucwoKLS0gVXNlciBFcXVpcG1lbnQgSUVzIDoKCUludGVncml0eUNoZWNrSW5mbwpGUk9NIEluZm9ybWF0aW9uRWxlbWVudHM7CgotLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIERvd25saW5rIERDQ0ggbWVzc2FnZXMKLS0KLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKREwtRENDSC1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7CglpbnRlZ3JpdHlDaGVja0luZm8JCUludGVncml0eUNoZWNrSW5mbwkJT1BUSU9OQUwsCgltZXNzYWdlCQkJCQlETC1EQ0NILU1lc3NhZ2VUeXBlCn0KCkRMLURDQ0gtTWVzc2FnZVR5cGUgOjo9IENIT0lDRSB7CglhY3RpdmVTZXRVcGRhdGUJCQkJCQlBY3RpdmVTZXRVcGRhdGUsCglhc3Npc3RhbmNlRGF0YURlbGl2ZXJ5CQkJCUFzc2lzdGFuY2VEYXRhRGVsaXZlcnksCgljZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4gCQkJQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOLAoJY2VsbFVwZGF0ZUNvbmZpcm0JCQkJCUNlbGxVcGRhdGVDb25maXJtLAoJY291bnRlckNoZWNrCQkJCQkJQ291bnRlckNoZWNrLAoJZG93bmxpbmtEaXJlY3RUcmFuc2ZlcgkJCQlEb3dubGlua0RpcmVjdFRyYW5zZmVyLAoJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTQkJSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTSwKCWhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1DRE1BMjAwMAlIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtQ0RNQTIwMDAsCgltZWFzdXJlbWVudENvbnRyb2wJCQkJCU1lYXN1cmVtZW50Q29udHJvbCwKCXBhZ2luZ1R5cGUyCQkJCQkJCVBhZ2luZ1R5cGUyLAoJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24sCglwaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uCQlQaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLAoJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24JCQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbiwKCXJhZGlvQmVhcmVyUmVsZWFzZQkJCQkJUmFkaW9CZWFyZXJSZWxlYXNlLAoJcmFkaW9CZWFyZXJTZXR1cAkJCQkJUmFkaW9CZWFyZXJTZXR1cCwKCXJyY0Nvbm5lY3Rpb25SZWxlYXNlCQkJCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLAoJc2VjdXJpdHlNb2RlQ29tbWFuZAkJCQkJU2VjdXJpdHlNb2RlQ29tbWFuZCwKCXNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZQkJCVNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZSwKCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24JCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24sCgl0cmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvbkNvbnRyb2wJVHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sLAoJdWVDYXBhYmlsaXR5RW5xdWlyeQkJCQkJVUVDYXBhYmlsaXR5RW5xdWlyeSwKCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uQ29uZmlybQkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb25Db25maXJtLAoJdXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbAkJVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbCwKCXVyYVVwZGF0ZUNvbmZpcm0JCQkJCVVSQVVwZGF0ZUNvbmZpcm0sCgl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb24JCQlVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb24sCgloYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR0VSQU5JdQlIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR0VSQU5JdSwKCW1ibXNNb2RpZmllZFNlcnZpY2VzSW5mb3JtYXRpb24JCU1CTVNNb2RpZmllZFNlcnZpY2VzSW5mb3JtYXRpb24sCglzcGFyZTUJCQkJCQkJCU5VTEwsCglzcGFyZTQJCQkJCQkJCU5VTEwsCglzcGFyZTMJCQkJCQkJCU5VTEwsCglzcGFyZTIJCQkJCQkJCU5VTEwsCglzcGFyZTEJCQkJCQkJCU5VTEwKfQoKLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBVcGxpbmsgRENDSCBtZXNzYWdlcwotLQotLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpVTC1EQ0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKCWludGVncml0eUNoZWNrSW5mbwkJSW50ZWdyaXR5Q2hlY2tJbmZvCQlPUFRJT05BTCwKCW1lc3NhZ2UJCQkJCVVMLURDQ0gtTWVzc2FnZVR5cGUKfQoKVUwtRENDSC1NZXNzYWdlVHlwZSA6Oj0gQ0hPSUNFIHsKCWFjdGl2ZVNldFVwZGF0ZUNvbXBsZXRlCQkJCUFjdGl2ZVNldFVwZGF0ZUNvbXBsZXRlLAoJYWN0aXZlU2V0VXBkYXRlRmFpbHVyZQkJCQlBY3RpdmVTZXRVcGRhdGVGYWlsdXJlLAoJY2VsbENoYW5nZU9yZGVyRnJvbVVUUkFORmFpbHVyZSAJQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFORmFpbHVyZSwKCWNvdW50ZXJDaGVja1Jlc3BvbnNlCQkJCUNvdW50ZXJDaGVja1Jlc3BvbnNlLAoJaGFuZG92ZXJUb1VUUkFOQ29tcGxldGUJCQkJSGFuZG92ZXJUb1VUUkFOQ29tcGxldGUsCglpbml0aWFsRGlyZWN0VHJhbnNmZXIJCQkJSW5pdGlhbERpcmVjdFRyYW5zZmVyLAoJaGFuZG92ZXJGcm9tVVRSQU5GYWlsdXJlCQkJSGFuZG92ZXJGcm9tVVRSQU5GYWlsdXJlLAoJbWVhc3VyZW1lbnRDb250cm9sRmFpbHVyZQkJCU1lYXN1cmVtZW50Q29udHJvbEZhaWx1cmUsCgltZWFzdXJlbWVudFJlcG9ydAkJCQkJTWVhc3VyZW1lbnRSZXBvcnQsCglwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZQoJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUsCglwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25GYWlsdXJlCgkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25GYWlsdXJlLAoJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkNvbXBsZXRlLAoJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb25GYWlsdXJlCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uRmFpbHVyZSwKCXJhZGlvQmVhcmVyUmVsZWFzZUNvbXBsZXRlCQkJUmFkaW9CZWFyZXJSZWxlYXNlQ29tcGxldGUsCglyYWRpb0JlYXJlclJlbGVhc2VGYWlsdXJlCQkJUmFkaW9CZWFyZXJSZWxlYXNlRmFpbHVyZSwKCXJhZGlvQmVhcmVyU2V0dXBDb21wbGV0ZQkJCVJhZGlvQmVhcmVyU2V0dXBDb21wbGV0ZSwKCXJhZGlvQmVhcmVyU2V0dXBGYWlsdXJlCQkJCVJhZGlvQmVhcmVyU2V0dXBGYWlsdXJlLAoJcnJjQ29ubmVjdGlvblJlbGVhc2VDb21wbGV0ZQkJUlJDQ29ubmVjdGlvblJlbGVhc2VDb21wbGV0ZSwKCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlCQkJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUsCglycmNTdGF0dXMJCQkJCQkJUlJDU3RhdHVzLAoJc2VjdXJpdHlNb2RlQ29tcGxldGUJCQkJU2VjdXJpdHlNb2RlQ29tcGxldGUsCglzZWN1cml0eU1vZGVGYWlsdXJlCQkJCQlTZWN1cml0eU1vZGVGYWlsdXJlLAoJc2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlSW5kaWNhdGlvbgoJCQkJCQkJCQkJU2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlSW5kaWNhdGlvbiwKCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZQoJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbkNvbXBsZXRlLAoJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbkZhaWx1cmUKCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25GYWlsdXJlLAoJdHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sRmFpbHVyZQoJCQkJCQkJCQkJVHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sRmFpbHVyZSwKCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uCQkJCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLAoJdXBsaW5rRGlyZWN0VHJhbnNmZXIJCQkJVXBsaW5rRGlyZWN0VHJhbnNmZXIsCgl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb25Db25maXJtCQlVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb25Db25maXJtLAoJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uRmFpbHVyZQkJVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uRmFpbHVyZSwKCW1ibXNNb2RpZmljYXRpb25SZXF1ZXN0CQkJCU1CTVNNb2RpZmljYXRpb25SZXF1ZXN0LAoJc3BhcmUxCQkJCQkJCQlOVUxMCn0KCi0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gRG93bmxpbmsgQ0NDSCBtZXNzYWdlcwotLQotLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpETC1DQ0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKCWludGVncml0eUNoZWNrSW5mbwkJSW50ZWdyaXR5Q2hlY2tJbmZvCQlPUFRJT05BTCwKCW1lc3NhZ2UJCQkJCURMLUNDQ0gtTWVzc2FnZVR5cGUKfQoKREwtQ0NDSC1NZXNzYWdlVHlwZSA6Oj0gQ0hPSUNFIHsJCgljZWxsVXBkYXRlQ29uZmlybQkJCQkJQ2VsbFVwZGF0ZUNvbmZpcm0tQ0NDSCwKCXJyY0Nvbm5lY3Rpb25SZWplY3QJCQkJCVJSQ0Nvbm5lY3Rpb25SZWplY3QsCglycmNDb25uZWN0aW9uUmVsZWFzZQkJCQlSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILAoJcnJjQ29ubmVjdGlvblNldHVwCQkJCQlSUkNDb25uZWN0aW9uU2V0dXAsCgl1cmFVcGRhdGVDb25maXJtCQkJCQlVUkFVcGRhdGVDb25maXJtLUNDQ0gsCglzcGFyZTMJCQkJCQkJCU5VTEwsCglzcGFyZTIJCQkJCQkJCU5VTEwsCglzcGFyZTEJCQkJCQkJCU5VTEwKfQoKLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBVcGxpbmsgQ0NDSCBtZXNzYWdlcwotLQotLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpVTC1DQ0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKCWludGVncml0eUNoZWNrSW5mbwkJSW50ZWdyaXR5Q2hlY2tJbmZvCQlPUFRJT05BTCwKCW1lc3NhZ2UJCQkJCVVMLUNDQ0gtTWVzc2FnZVR5cGUKfQoKVUwtQ0NDSC1NZXNzYWdlVHlwZSA6Oj0gQ0hPSUNFIHsKCWNlbGxVcGRhdGUJCQkJCQkJQ2VsbFVwZGF0ZSwKCXJyY0Nvbm5lY3Rpb25SZXF1ZXN0CQkJCVJSQ0Nvbm5lY3Rpb25SZXF1ZXN0LAoJdXJhVXBkYXRlCQkJCQkJCVVSQVVwZGF0ZSwKCXNwYXJlCQkJCQkJCQlOVUxMCn0KCi0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUENDSCBtZXNzYWdlcwotLQotLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpQQ0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKCW1lc3NhZ2UJCQkJUENDSC1NZXNzYWdlVHlwZQp9CgpQQ0NILU1lc3NhZ2VUeXBlIDo6PSBDSE9JQ0UgewoJcGFnaW5nVHlwZTEJCQkJCQkJUGFnaW5nVHlwZTEsCglzcGFyZQkJCQkJCQkJTlVMTAp9CgotLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIERvd25saW5rIFNIQ0NIIG1lc3NhZ2VzCi0tCi0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkRMLVNIQ0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKCW1lc3NhZ2UJCQkJCURMLVNIQ0NILU1lc3NhZ2VUeXBlCn0KCkRMLVNIQ0NILU1lc3NhZ2VUeXBlIDo6PSBDSE9JQ0UgewoJcGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbgkJUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbiwKCXNwYXJlCQkJCQkJCQlOVUxMCn0KCi0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gVXBsaW5rIFNIQ0NIIG1lc3NhZ2VzCi0tCi0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClVMLVNIQ0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKCW1lc3NhZ2UJCQkJCVVMLVNIQ0NILU1lc3NhZ2VUeXBlCn0KClVMLVNIQ0NILU1lc3NhZ2VUeXBlIDo6PSBDSE9JQ0UgewoJcHVzY2hDYXBhY2l0eVJlcXVlc3QJCQkJUFVTQ0hDYXBhY2l0eVJlcXVlc3QsCglzcGFyZQkJCQkJCQkJTlVMTAp9CgoKLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBCQ0NIIG1lc3NhZ2VzIHNlbnQgb24gRkFDSAotLQotLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpCQ0NILUZBQ0gtTWVzc2FnZSA6Oj0gU0VRVUVOQ0UgewoJbWVzc2FnZQkJCQlCQ0NILUZBQ0gtTWVzc2FnZVR5cGUKfQoKQkNDSC1GQUNILU1lc3NhZ2VUeXBlIDo6PSBDSE9JQ0UgewoJc3lzdGVtSW5mb3JtYXRpb24JCQkJCVN5c3RlbUluZm9ybWF0aW9uLUZBQ0gsCglzeXN0ZW1JbmZvcm1hdGlvbkNoYW5nZUluZGljYXRpb24JU3lzdGVtSW5mb3JtYXRpb25DaGFuZ2VJbmRpY2F0aW9uLAoJc3BhcmUyCQkJCQkJCQlOVUxMLAoJc3BhcmUxCQkJCQkJCQlOVUxMCn0KCi0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gQkNDSCBtZXNzYWdlcyBzZW50IG9uIEJDSAotLQotLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpCQ0NILUJDSC1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7CgltZXNzYWdlCQkJCVN5c3RlbUluZm9ybWF0aW9uLUJDSAp9CgotLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIE1DQ0ggbWVzc2FnZXMKLS0KLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUNDSC1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7CgltZXNzYWdlCQkJCU1DQ0gtTWVzc2FnZVR5cGUKfQoKTUNDSC1NZXNzYWdlVHlwZSA6Oj0gQ0hPSUNFIHsKCW1ibXNBY2Nlc3NJbmZvcm1hdGlvbgkJCQlNQk1TQWNjZXNzSW5mb3JtYXRpb24sCgltYm1zQ29tbW9uUFRNUkJJbmZvcm1hdGlvbgkJCU1CTVNDb21tb25QVE1SQkluZm9ybWF0aW9uLAoJbWJtc0N1cnJlbnRDZWxsUFRNUkJJbmZvcm1hdGlvbgkJTUJNU0N1cnJlbnRDZWxsUFRNUkJJbmZvcm1hdGlvbiwKCW1ibXNHZW5lcmFsSW5mb3JtYXRpb24JCQkJTUJNU0dlbmVyYWxJbmZvcm1hdGlvbiwKCW1ibXNNb2RpZmllZFNlcnZpY2VzSW5mb3JtYXRpb24JCU1CTVNNb2RpZmllZFNlcnZpY2VzSW5mb3JtYXRpb24sCgltYm1zTmVpZ2hib3VyaW5nQ2VsbFBUTVJCSW5mb3JtYXRpb24KCQkJCQkJCQkJCU1CTVNOZWlnaGJvdXJpbmdDZWxsUFRNUkJJbmZvcm1hdGlvbiwKCW1ibXNVbm1vZGlmaWVkU2VydmljZXNJbmZvcm1hdGlvbglNQk1TVW5tb2RpZmllZFNlcnZpY2VzSW5mb3JtYXRpb24sCglzcGFyZTkJCQkJCQkJCU5VTEwsCglzcGFyZTgJCQkJCQkJCU5VTEwsCglzcGFyZTcJCQkJCQkJCU5VTEwsCglzcGFyZTYJCQkJCQkJCU5VTEwsCglzcGFyZTUJCQkJCQkJCU5VTEwsCglzcGFyZTQJCQkJCQkJCU5VTEwsCglzcGFyZTMJCQkJCQkJCU5VTEwsCglzcGFyZTIJCQkJCQkJCU5VTEwsCglzcGFyZTEJCQkJCQkJCU5VTEwKfQoKLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNU0NIIG1lc3NhZ2VzCi0tCi0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCk1TQ0gtTWVzc2FnZSA6Oj0gU0VRVUVOQ0UgewoJbWVzc2FnZQkJCQlNU0NILU1lc3NhZ2VUeXBlCn0KCk1TQ0gtTWVzc2FnZVR5cGUgOjo9IENIT0lDRSB7CgltYm1zU2NoZWR1bGluZ0luZm9ybWF0aW9uCQkJTUJNU1NjaGVkdWxpbmdJbmZvcm1hdGlvbiwKCXNwYXJlMwkJCQkJCQkJTlVMTCwKCXNwYXJlMgkJCQkJCQkJTlVMTCwKCXNwYXJlMQkJCQkJCQkJTlVMTAp9CgpFTkQKCi0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gVEFCVUxBUjogVGhlIG1lc3NhZ2UgdHlwZSBhbmQgaW50ZWdyaXR5IGNoZWNrIGluZm8gYXJlIG5vdAotLSB2aXNpYmxlIGluIHRoaXMgbW9kdWxlIGFzIHRoZXkgYXJlIGRlZmluZWQgaW4gdGhlIGNsYXNzIG1vZHVsZS4gCi0tIEFsc28sIGFsbCBGREQvVEREIHNwZWNpZmljIGNob2ljZXMgaGF2ZSB0aGUgRkREIG9wdGlvbiBmaXJzdCAKLS0gYW5kIFRERCBzZWNvbmQsIGp1c3QgZm9yIGNvbnNpc3RlbmN5LgotLQotLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpQRFUtZGVmaW5pdGlvbnMgREVGSU5JVElPTlMgQVVUT01BVElDIFRBR1MgOjo9CgpCRUdJTgoKLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBJRSBwYXJhbWV0ZXIgdHlwZXMgZnJvbSBvdGhlciBtb2R1bGVzCi0tCi0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCklNUE9SVFMKCi0tIENvcmUgTmV0d29yayBJRXMgOgoJQ04tRG9tYWluSWRlbnRpdHksCglDTi1JbmZvcm1hdGlvbkluZm8sCglDTi1JbmZvcm1hdGlvbkluZm8tcjYsCglDTi1JbmZvcm1hdGlvbkluZm9GdWxsLAoJTkFTLU1lc3NhZ2UsCglQYWdpbmdSZWNvcmRUeXBlSUQsCglQTE1OLUlkZW50aXR5LAotLSBVVFJBTiBNb2JpbGl0eSBJRXMgOgoJQ2VsbElkZW50aXR5LAoJQ2VsbElkZW50aXR5LVBlclJMLUxpc3QsCglVUkEtSWRlbnRpdHksCi0tIFVzZXIgRXF1aXBtZW50IElFcyA6CglVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wLXI3LAoJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY3eHlleHQsCglVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QyLAoJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0LWV4dCwKCUFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yLAoJQWN0aXZhdGlvblRpbWUsCglDLVJOVEksCglDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQsCglDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQsCglDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQtZXh0LAoJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI1LAoJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI3LWV4dCwKCUNlbGxVcGRhdGVDYXVzZSwKCUNlbGxVcGRhdGVDYXVzZS1leHQsCglDaXBoZXJpbmdBbGdvcml0aG0sCglDaXBoZXJpbmdNb2RlSW5mbywKCURlbGF5UmVzdHJpY3Rpb25GbGFnLAoJRFNDSC1STlRJLAoJRS1STlRJLAoJRXN0YWJsaXNobWVudENhdXNlLAoJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCglGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyclRySWQsCglHcm91cFJlbGVhc2VJbmZvcm1hdGlvbiwKCUgtUk5USSwKCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlLAoJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWludGVyUkFULAoJSW5pdGlhbFVFLUlkZW50aXR5LAoJSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvLAoJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvLAoJTi0zMDgsCglQYWdpbmdDYXVzZSwKCVBhZ2luZ1JlY29yZExpc3QsCglQYWdpbmdSZWNvcmQyTGlzdC1yNSwKCVByb3RvY29sRXJyb3JJbmRpY2F0b3IsCglQcm90b2NvbEVycm9ySW5kaWNhdG9yV2l0aE1vcmVJbmZvLAoJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdCwKCVJiLXRpbWVyLWluZGljYXRvciwKCVJlZGlyZWN0aW9uSW5mbywKCVJlZGlyZWN0aW9uSW5mby1yNiwKCVJlamVjdGlvbkNhdXNlLAoJUmVsZWFzZUNhdXNlLAoJUkYtQ2FwYWJpbGl0eUNvbXAsCglSUkMtU3RhdGVJbmRpY2F0b3IsCglSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJU2VjdXJpdHlDYXBhYmlsaXR5LAoJU1RBUlQtVmFsdWUsCglTVEFSVExpc3QsCglTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcS12NTkwZXh0LAoJVS1STlRJLAoJVS1STlRJLVNob3J0LAoJVUUtQ2FwYWJpbGl0eUNvbnRhaW5lci1JRXMsCglVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHksCglVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM3MGV4dCwKCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0LAoJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQsCglVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNnMGV4dCwKCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NGIwZXh0LAoJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQsCglVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dCwKCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjUwZXh0LAoJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2ODBleHQsCglVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wLAoJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcC1leHQsCglVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wMiwKCURMLVBoeXNDaENhcGFiaWxpdHlGREQtdjM4MGV4dCwKCVVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMsCglVRS1Db25uVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQsCglVRS1Db25uVGltZXJzQW5kQ29uc3RhbnRzLXI1LAoJVUUtU2VjdXJpdHlJbmZvcm1hdGlvbiwKCVVFLVNlY3VyaXR5SW5mb3JtYXRpb24yLAoJVVJBLVVwZGF0ZUNhdXNlLAoJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQsCglXYWl0VGltZSwKLS0gUmFkaW8gQmVhcmVyIElFcyA6CglEZWZhdWx0Q29uZmlnSWRlbnRpdHksCglEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjQsCglEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjUsCglEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYsCglEZWZhdWx0Q29uZmlnTW9kZSwKCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLAoJREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUsCglQRENQLVJPSEMtVGFyZ2V0TW9kZSwKCVByZWRlZmluZWRDb25maWdJZGVudGl0eSwKCVByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0LAoJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3RDb21wLAoJUHJlZGVmaW5lZENvbmZpZ1NldFdpdGhEaWZmZXJlbnRWYWx1ZVRhZywKCVJBQi1JbmZvLAoJUkFCLUluZm8tcjYsCglSQUItSW5mby1Qb3N0LAoJUkFCLUluZm9ybWF0aW9uTGlzdCwKCVJBQi1JbmZvcm1hdGlvbkxpc3QtcjYsCglSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QsCglSQUItSW5mb3JtYXRpb25TZXR1cExpc3QsCglSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjQsCglSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUsCglSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYtZXh0LAoJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2LAoJUkItQWN0aXZhdGlvblRpbWVJbmZvTGlzdCwKCVJCLUNPVU5ULUMtSW5mb3JtYXRpb25MaXN0LAoJUkItQ09VTlQtQy1NU0ItSW5mb3JtYXRpb25MaXN0LAoJUkItSWRlbnRpdHlMaXN0LAoJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QsCglSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNSwKCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI2LAoJUkItSW5mb3JtYXRpb25DaGFuZ2VkTGlzdC1yNiwKCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LAoJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjQsCglSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNSwKCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI2LAoJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdCwKCVJCLVBEQ1BDb250ZXh0UmVsb2NhdGlvbkxpc3QsCglTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCglTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUsCglTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYsCglTUkItSW5mb3JtYXRpb25TZXR1cExpc3QyLAoJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0Mi1yNiwKCVVMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLAotLSBUcmFuc3BvcnQgQ2hhbm5lbCBJRXM6CglDUENILVNldElELAoJREwtQWRkUmVjb25mVHJhbnNDaEluZm8yTGlzdCwKCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCwKCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNCwKCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNSwKCURMLUNvbW1vblRyYW5zQ2hJbmZvLAoJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQsCglETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LAoJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNSwKCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0LAoJUG93ZXJPZmZzZXRJbmZvU2hvcnQsCglURkMtU3Vic2V0LAoJVEZDUy1JZGVudGl0eSwKCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCwKCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNiwKCVVMLUNvbW1vblRyYW5zQ2hJbmZvLAoJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQsCglVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LAoJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNiwKLS0gUGh5c2ljYWwgQ2hhbm5lbCBJRXMgOgoJQWxwaGEsCglCRUFDT04tUEwtRXN0LAoJQ0NUckNILVBvd2VyQ29udHJvbEluZm8sCglDQ1RyQ0gtUG93ZXJDb250cm9sSW5mby1yNCwKCUNDVHJDSC1Qb3dlckNvbnRyb2xJbmZvLXI1LAoJQ0NUckNILVBvd2VyQ29udHJvbEluZm8tcjcsCglDb25zdGFudFZhbHVlLAoJQ29uc3RhbnRWYWx1ZVRkZCwKCUNQQ0gtU2V0SW5mbywKCURIUy1TeW5jLAoJREwtQ29tbW9uSW5mb3JtYXRpb24sCglETC1Db21tb25JbmZvcm1hdGlvbi1yNCwKCURMLUNvbW1vbkluZm9ybWF0aW9uLXI1LAoJREwtQ29tbW9uSW5mb3JtYXRpb24tcjYsCglETC1Db21tb25JbmZvcm1hdGlvbi1yNywKCURMLUNvbW1vbkluZm9ybWF0aW9uUG9zdCwKCURMLUhTUERTQ0gtSW5mb3JtYXRpb24sCglETC1IU1BEU0NILUluZm9ybWF0aW9uLXI2LAoJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNywKCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdCwKCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNCwKCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNSwKCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNWJpcywKCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNiwKCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNywKCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdFBvc3RGREQsCglETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQsCglETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQtTENSLXI0LAoJREwtUERTQ0gtSW5mb3JtYXRpb24sCglETC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0LAoJRFBDLU1vZGUsCglEUENILUNvbXByZXNzZWRNb2RlU3RhdHVzSW5mbywKCUR5bmFtaWNQZXJzaXN0ZW5jZUxldmVsLAoJRS1EQ0gtUmVjb25maWd1cmF0aW9uSW5mbywKCUVYVC1VTC1UaW1pbmdBZHZhbmNlLAoJRnJlcXVlbmN5SW5mbywKCUZyZXF1ZW5jeUluZm9GREQsCglGcmVxdWVuY3lJbmZvVERELAoJSEFSUS1QcmVhbWJsZS1Nb2RlLAoJSFMtU0lDSC1Qb3dlci1Db250cm9sLUluZm8tVEREMzg0LAoJSFMtU0lDSC1Qb3dlci1Db250cm9sLUluZm8tVERENzY4LAoJTWF4QWxsb3dlZFVMLVRYLVBvd2VyLAoJT3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQtcjQsCglQRFNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvLAoJUERTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mby1yNCwKCVBEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjcsCglQRFNDSC1JZGVudGl0eSwKCVByaW1hcnlDUElDSC1JbmZvLAoJUHJpbWFyeUNDUENILVRYLVBvd2VyLAoJUFVTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mbywKCVBVU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjQsCglQVVNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvLXI3LAoJUFVTQ0gtSWRlbnRpdHksCglQVVNDSC1TeXNJbmZvTGlzdC1IQ1ItcjUsCglQRFNDSC1TeXNJbmZvTGlzdC1IQ1ItcjUsCglSTC1BZGRpdGlvbkluZm9ybWF0aW9uTGlzdCwKCVJMLUFkZGl0aW9uSW5mb3JtYXRpb25MaXN0LXI2LAoJUkwtUmVtb3ZhbEluZm9ybWF0aW9uTGlzdCwKCVNlcnZpbmctSFNEU0NILUNlbGxJbmZvcm1hdGlvbiwKCVNwZWNpYWxCdXJzdFNjaGVkdWxpbmcsCglTU0RULUluZm9ybWF0aW9uLAoJU1NEVC1JbmZvcm1hdGlvbi1yNCwKCVRGQy1Db250cm9sRHVyYXRpb24sCglTU0RULVVMLAoJVGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kLAoJVGltZXNsb3RMaXN0LAoJVGltZXNsb3RMaXN0LXI0LAoJVFgtRGl2ZXJzaXR5TW9kZSwKCVVMLUNoYW5uZWxSZXF1aXJlbWVudCwKCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNCwKCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNSwKCVVMLUNoYW5uZWxSZXF1aXJlbWVudFdpdGhDUENILVNldElELAoJVUwtQ2hhbm5lbFJlcXVpcmVtZW50V2l0aENQQ0gtU2V0SUQtcjQsCglVTC1DaGFubmVsUmVxdWlyZW1lbnRXaXRoQ1BDSC1TZXRJRC1yNSwKCVVMLURQQ0gtSW5mbywKCVVMLURQQ0gtSW5mby1yNCwKCVVMLURQQ0gtSW5mby1yNSwKCVVMLURQQ0gtSW5mby1yNiwKCVVMLURQQ0gtSW5mby1yNywKCVVMLURQQ0gtSW5mb1Bvc3RGREQsCglVTC1EUENILUluZm9Qb3N0VERELAoJVUwtRFBDSC1JbmZvUG9zdFRERC1MQ1ItcjQsCglVTC1FRENILUluZm9ybWF0aW9uLXI2LAoJVUwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNCwKCVVMLVRpbWluZ0FkdmFuY2UsCglVTC1UaW1pbmdBZHZhbmNlQ29udHJvbCwKCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI0LAoJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjcsCglVTC1UaW1pbmdBZHZhbmNlLVZIQ1IsCi0tIE1lYXN1cmVtZW50IElFcyA6CglBZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0LAoJRGVsdGFSU0NQLAoJRnJlcXVlbmN5LUJhbmQsCglFdmVudFJlc3VsdHMsCglJbnRlci1GcmVxRXZlbnRDcml0ZXJpYUxpc3QtdjU5MGV4dCwKCUludHJhLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0LAoJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUsCglJbnRyYUZyZXFFdmVudC0xZC1yNSwKCUludHJhRnJlcUNlbGxJRCwKCUludGVyRnJlcUV2ZW50UmVzdWx0cy1MQ1ItcjQtZXh0LAoJSW50ZXJSQVRDZWxsSW5mb0luZGljYXRpb24sCglJbnRlclJBVC1UYXJnZXRDZWxsRGVzY3JpcHRpb24sCglNZWFzdXJlZFJlc3VsdHMsCglNZWFzdXJlZFJlc3VsdHMtdjM5MGV4dCwKCU1lYXN1cmVkUmVzdWx0cy12NTkwZXh0LAoJTWVhc3VyZWRSZXN1bHRzTGlzdCwKCU1lYXN1cmVkUmVzdWx0c0xpc3QtTENSLXI0LWV4dCwKCU1lYXN1cmVkUmVzdWx0c09uUkFDSCwKCU1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcSwKCU1lYXN1cmVtZW50Q29tbWFuZCwKCU1lYXN1cmVtZW50Q29tbWFuZC1yNCwKCU1lYXN1cmVtZW50Q29tbWFuZC1yNiwKCU1lYXN1cmVtZW50SWRlbnRpdHksCglNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUsCglQcmltYXJ5Q0NQQ0gtUlNDUCwKCVNGTi1PZmZzZXQtVmFsaWRpdHksCglUaW1lc2xvdExpc3RXaXRoSVNDUCwKCVRyYWZmaWNWb2x1bWVNZWFzdXJlZFJlc3VsdHNMaXN0LAoJVUUtUG9zaXRpb25pbmctR1BTLUFzc2lzdGFuY2VEYXRhLAoJVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtdjM5MGV4dCwKCVVFLVBvc2l0aW9uaW5nLU1lYXN1cmVtZW50LXY3eHlleHQsCglVRS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YSwKCVVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLXI0ZXh0LAoJVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtVUVCLAoJVmVsb2NpdHlFc3RpbWF0ZSwKCVVFLUludGVybmFsTWVhc3VyZWRSZXN1bHRzLXI3LAotLSBPdGhlciBJRXMgOgoJQkNDSC1Nb2RpZmljYXRpb25JbmZvLAoJQ0RNQTIwMDAtTWVzc2FnZUxpc3QsCglHU00tVGFyZ2V0Q2VsbEluZm9MaXN0LAoJR0VSQU5JdS1NZXNzYWdlTGlzdCwKCUdFUkFOLVN5c3RlbUluZm9ybWF0aW9uLAoJR1NNLU1lc3NhZ2VMaXN0LAoJSW50ZXJSQVQtQ2hhbmdlRmFpbHVyZUNhdXNlLAoJSW50ZXJSQVQtSE8tRmFpbHVyZUNhdXNlLAoJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdCwKCUludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NTkwZXh0LAoJSW50ZXJSQVQtVUUtU2VjdXJpdHlDYXBMaXN0LAoJSW50cmFEb21haW5OYXNOb2RlU2VsZWN0b3IsCglQcm90b2NvbEVycm9yTW9yZUluZm9ybWF0aW9uLAoJUnBsbW4tSW5mb3JtYXRpb24sCglScGxtbi1JbmZvcm1hdGlvbi1yNCwKCVNlZ0NvdW50LAoJU2VnbWVudEluZGV4LAoJU0ZOLVByaW1lLAoJU0lCLURhdGEtZml4ZWQsCglTSUItRGF0YS12YXJpYWJsZSwKCVNJQi1UeXBlLAotLSBNQk1TIElFczoKCU1CTVMtQ2VsbEdyb3VwSWRlbnRpdHktcjYsCglNQk1TLUNvbW1vblJCSW5mb3JtYXRpb25MaXN0LXI2LAoJTUJNUy1DdXJyZW50Q2VsbC1TQ0NQQ0hMaXN0LXI2LAoJTUJNUy1Kb2luZWRJbmZvcm1hdGlvbi1yNiwKCU1CTVMtTUlDSENvbmZpZ3VyYXRpb25JbmZvLXI2LAoJTUJNUy1NSUNIQ29uZmlndXJhdGlvbkluZm8tcjcsCglNQk1TLU1vZGlmZWRTZXJ2aWNlTGlzdC1yNiwKCU1CTVMtTVNDSC1Db25maWd1cmF0aW9uSW5mby1yNiwKCU1CTVMtTmVpZ2hib3VyaW5nQ2VsbFNDQ1BDSExpc3QtcjYsCglNQk1TLU51bWJlck9mTmVpZ2hib3VyQ2VsbHMtcjYsCglNQk1TLVBoeUNoSW5mb3JtYXRpb25MaXN0LXI2LAoJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2LAoJTUJNUy1QcmVmZXJyZWRGcmVxUmVxdWVzdC1yNiwKCU1CTVMtUHJlZmVycmVkRnJlcXVlbmN5TGlzdC1yNiwKCU1CTVMtUFRNQWN0aXZhdGlvblRpbWUtcjYsCglNQk1TLVNlcnZpY2VBY2Nlc3NJbmZvTGlzdC1yNiwKCU1CTVMtU2VydmljZUlkZW50aXR5LXI2LAoJTUJNUy1TZXJ2aWNlU2NoZWR1bGluZ0luZm9MaXN0LXI2LAoJTUJNUy1TSUJUeXBlNS1TQ0NQQ0hMaXN0LXI2LAoJTUJNUy1UaW1lcnNBbmRDb3VudGVycy1yNiwKCU1CTVMtVHJhbnNwQ2hJbmZvRm9yRWFjaENDVHJDaC1yNiwKCU1CTVMtVHJhbnNwQ2hJbmZvRm9yRWFjaFRyQ2gtcjYsCglNQk1TLVVubW9kaWZpZWRTZXJ2aWNlTGlzdC1yNgpGUk9NIEluZm9ybWF0aW9uRWxlbWVudHMKCgltYXhTSUJwZXJNc2csCgltYXhVUk5USS1Hcm91cApGUk9NIENvbnN0YW50LWRlZmluaXRpb25zOwoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIEFDVElWRSBTRVQgVVBEQVRFIChGREQgb25seSkKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpBY3RpdmVTZXRVcGRhdGUgOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCWFjdGl2ZVNldFVwZGF0ZS1yMwkJCQlBY3RpdmVTZXRVcGRhdGUtcjMtSUVzLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQlhY3RpdmVTZXRVcGRhdGUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCWFjdGl2ZVNldFVwZGF0ZS12NGIwZXh0CQlBY3RpdmVTZXRVcGRhdGUtdjRiMGV4dC1JRXMsCgkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJYWN0aXZlU2V0VXBkYXRlLXY1OTBleHQJCQlBY3RpdmVTZXRVcGRhdGUtdjU5MGV4dC1JRXMsCgkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQlhY3RpdmVTZXRVcGRhdGUtdjY5MGV4dAkJCUFjdGl2ZVNldFVwZGF0ZS12NjkwZXh0LUlFcywKCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30gT1BUSU9OQUwKCQkJCQl9CU9QVElPTkFMCgkJCQl9CU9QVElPTkFMCgkJCX0gT1BUSU9OQUwKCQl9IE9QVElPTkFMCgl9LAoJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgewoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCXI2CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQlhY3RpdmVTZXRVcGRhdGUtcjYJCQkJQWN0aXZlU2V0VXBkYXRlLXI2LUlFcywKCQkJCWFjdGl2ZVNldFVwZGF0ZS1yNi1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQl9LAoJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KCQl9Cgl9Cn0KCkFjdGl2ZVNldFVwZGF0ZS1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAoJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCgkJZHVtbXkyCQkJCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAoJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCW5ld1UtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJLS0gZHVtbXkzIGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15MwkJCQkJCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJCXJsLUFkZGl0aW9uSW5mb3JtYXRpb25MaXN0CQlSTC1BZGRpdGlvbkluZm9ybWF0aW9uTGlzdAkJCU9QVElPTkFMLAoJCXJsLVJlbW92YWxJbmZvcm1hdGlvbkxpc3QJCVJMLVJlbW92YWxJbmZvcm1hdGlvbkxpc3QJCQlPUFRJT05BTCwKCQl0eC1EaXZlcnNpdHlNb2RlCQkJCVRYLURpdmVyc2l0eU1vZGUJCQkJCU9QVElPTkFMLAoJCS0tIGR1bW15NCBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQlkdW1teTQJCQkJCQkJU1NEVC1JbmZvcm1hdGlvbgkJCQkJT1BUSU9OQUwKfQoKQWN0aXZlU2V0VXBkYXRlLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCQlTU0RULVVMCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgb3JkZXIgb2YgdGhlIFJMcyBpbiBJRSBjZWxsLWlkLVBlclJMLUxpc3QgaXMgdGhlIHNhbWUgYXMKCQktLSBpbiBJRSBSTC1BZGRpdGlvbkluZm9ybWF0aW9uTGlzdCBpbmNsdWRlZCBpbiB0aGlzIG1lc3NhZ2UKCQljZWxsLWlkLVBlclJMLUxpc3QJCQkJCUNlbGxJZGVudGl0eS1QZXJSTC1MaXN0CQkJCU9QVElPTkFMCn0KCkFjdGl2ZVNldFVwZGF0ZS12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlkcGMtTW9kZQkJCQkJCQlEUEMtTW9kZSwKCQlkbC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CQlETC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CQkJT1BUSU9OQUwKfQoKQWN0aXZlU2V0VXBkYXRlLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJcHJpbWFyeS1wbG1uLUlkZW50aXR5CQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTAp9CgpBY3RpdmVTZXRVcGRhdGUtcjYtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlhY3RpdmF0aW9uVGltZQkJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJbmV3VS1STlRJCQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3SC1STlRJCQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCQlybC1BZGRpdGlvbkluZm9ybWF0aW9uTGlzdAkJCVJMLUFkZGl0aW9uSW5mb3JtYXRpb25MaXN0LXI2CQlPUFRJT05BTCwKCQlybC1SZW1vdmFsSW5mb3JtYXRpb25MaXN0CQkJUkwtUmVtb3ZhbEluZm9ybWF0aW9uTGlzdAkJCU9QVElPTkFMLAoJCXR4LURpdmVyc2l0eU1vZGUJCQkJCVRYLURpdmVyc2l0eU1vZGUJCQkJCU9QVElPTkFMLAoJCWRwYy1Nb2RlCQkJCQkJCURQQy1Nb2RlCQkJCQkJCU9QVElPTkFMLAoJCXNlcnZpbmctSFNEU0NILUNlbGxJbmZvcm1hdGlvbgkJU2VydmluZy1IU0RTQ0gtQ2VsbEluZm9ybWF0aW9uCQlPUFRJT05BTCwKCQllLWRjaC1SZWNvbmZpZ3VyYXRpb25JbmZvCQkJRS1EQ0gtUmVjb25maWd1cmF0aW9uSW5mbwkJCU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBBQ1RJVkUgU0VUIFVQREFURSBDT01QTEVURSAoRkREIG9ubHkpCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKQWN0aXZlU2V0VXBkYXRlQ29tcGxldGUgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJZHVtbXkJCQkJCQlJbnRlZ3JpdHlQcm90QWN0aXZhdGlvbkluZm8JCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQktLSBkdW1teTIgYW5kIGR1bW15MyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAoJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15MgkJCQkJCVJCLUFjdGl2YXRpb25UaW1lSW5mb0xpc3QJCQlPUFRJT05BTCwKCQlkdW1teTMJCQkJCQlVTC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCWFjdGl2ZVNldFVwZGF0ZUNvbXBsZXRlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIEFDVElWRSBTRVQgVVBEQVRFIEZBSUxVUkUgKEZERCBvbmx5KQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkFjdGl2ZVNldFVwZGF0ZUZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyciwKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJYWN0aXZlU2V0VXBkYXRlRmFpbHVyZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKCX0JT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIEFzc2lzdGFuY2UgRGF0YSBEZWxpdmVyeQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkFzc2lzdGFuY2VEYXRhRGVsaXZlcnkgOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCWFzc2lzdGFuY2VEYXRhRGVsaXZlcnktcjMJCUFzc2lzdGFuY2VEYXRhRGVsaXZlcnktcjMtSUVzLAoJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJYXNzaXN0YW5jZURhdGFEZWxpdmVyeS12M2EwZXh0CUFzc2lzdGFuY2VEYXRhRGVsaXZlcnktdjNhMGV4dCwKCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQkJYXNzaXN0YW5jZURhdGFEZWxpdmVyeS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsgCgkJCQkJYXNzaXN0YW5jZURhdGFEZWxpdmVyeS12NGIwZXh0CgkJCQkJCQkJCQkJCQlBc3Npc3RhbmNlRGF0YURlbGl2ZXJ5LXY0YjBleHQtSUVzLAoJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJT1BUSU9OQUwKCQkJCX0JT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKCX0sCglsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KCX0KfQoKQXNzaXN0YW5jZURhdGFEZWxpdmVyeS1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCS0tIE1lYXN1cmVtZW50IEluZm9ybWF0aW9uIEVsZW1lbnRzCgl1ZS1wb3NpdGlvbmluZy1HUFMtQXNzaXN0YW5jZURhdGEJCQlVRS1Qb3NpdGlvbmluZy1HUFMtQXNzaXN0YW5jZURhdGEJCQkJT1BUSU9OQUwsCgl1ZS1wb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1VRUIJCVVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLVVFQgkJCU9QVElPTkFMCn0KCkFzc2lzdGFuY2VEYXRhRGVsaXZlcnktdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgewoJc2ZuLU9mZnNldC1WYWxpZGl0eQkJCQkJU0ZOLU9mZnNldC1WYWxpZGl0eQkJT1BUSU9OQUwKfQoKQXNzaXN0YW5jZURhdGFEZWxpdmVyeS12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJdWUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtcjRleHQJVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtcjRleHQJT1BUSU9OQUwKfQoKIC0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBDRUxMIENIQU5HRSBPUkRFUiBGUk9NIFVUUkFOCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOIDo6PSBDSE9JQ0UgewoJcjMJCQkJCQkJCVNFUVVFTkNFIHsKCQljZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4tSUVzCQlDZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4tcjMtSUVzLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQljZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQljZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4tdjU5MGV4dAlDZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4tdjU5MGV4dC1JRXMsCgkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAoJCQl9CU9QVElPTkFMCgkJfQlPUFRJT05BTAoJfSwKCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJfQp9CgpDZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCS0tIHRoZSBJRSByYWItSW5mb3JtYXRpb25MaXN0IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLiBUaGUgSUUgbWF5IGJlIHVzZWQgaW4gYSBsYXRlcgoJCS0tIHZlcnNpb24gb2YgdGhlIHByb3RvY29sIGFuZCBoZW5jZSBpdCBpcyBub3QgY2hhbmdlZCBpbnRvIGEgZHVtbXkKCQlyYWItSW5mb3JtYXRpb25MaXN0CQkJCVJBQi1JbmZvcm1hdGlvbkxpc3QJCQkJCU9QVElPTkFMLAoJCWludGVyUkFULVRhcmdldENlbGxEZXNjcmlwdGlvbglJbnRlclJBVC1UYXJnZXRDZWxsRGVzY3JpcHRpb24KfQoKQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CQkKCQlnZXJhbi1TeXN0ZW1JbmZvVHlwZQkJCQlDSE9JQ0UJewkJCgkJCXNJCQkJCQkJCQkJR0VSQU4tU3lzdGVtSW5mb3JtYXRpb24sCgkJCXBTSQkJCQkJCQkJCUdFUkFOLVN5c3RlbUluZm9ybWF0aW9uCgkJfQkJT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIENFTEwgQ0hBTkdFIE9SREVSIEZST00gVVRSQU4gRkFJTFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTkZhaWx1cmUgOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCWNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTkZhaWx1cmUtcjMKCQkJCQkJCQkJCUNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTkZhaWx1cmUtcjMtSUVzLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQljZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU5GYWlsdXJlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCgkJfQlPUFRJT05BTAoJfSwKCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgaXQKCS0tIHNob3VsZCBiZSBpZ25vcmVkLgoJZHVtbXkJCQkJCQkJU0VRVUVOQ0UgewoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9Cgl9Cn0KCkNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTkZhaWx1cmUtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWludGVyUkFULUNoYW5nZUZhaWx1cmVDYXVzZQkJSW50ZXJSQVQtQ2hhbmdlRmFpbHVyZUNhdXNlCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBDRUxMIFVQREFURQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkNlbGxVcGRhdGUgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXUtUk5USQkJCQkJCQlVLVJOVEksCgkJc3RhcnRMaXN0CQlTVEFSVExpc3QsCgkJYW0tUkxDLUVycm9ySW5kaWNhdGlvblJiMi0zb3I0CQlCT09MRUFOLAoJCWFtLVJMQy1FcnJvckluZGljYXRpb25SYjVvckFib3ZlCUJPT0xFQU4sCgkJY2VsbFVwZGF0ZUNhdXNlCQkJCQlDZWxsVXBkYXRlQ2F1c2UsCgkJLS0gVEFCVUxBUjogUlJDIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIgaXMgbmVzdGVkIGluIEZhaWx1cmVDYXVzZVdpdGhQcm90RXJyVHJJZAoJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnJUcklkCQkJT1BUSU9OQUwsCgkJcmItdGltZXItaW5kaWNhdG9yCQkJCVJiLXRpbWVyLWluZGljYXRvciwKCS0tIE1lYXN1cmVtZW50IElFcwoJCW1lYXN1cmVkUmVzdWx0c09uUkFDSAkJCU1lYXN1cmVkUmVzdWx0c09uUkFDSAkJCQlPUFRJT05BTCwKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJY2VsbFVwZGF0ZS1yMy1hZGQtZXh0CQkJQklUIFNUUklORwlPUFRJT05BTCwKCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwlTRVFVRU5DRSB7CgkJCQljZWxsVXBkYXRlLXY1OTBleHQJQ2VsbFVwZGF0ZS12NTkwZXh0LCAKCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQljZWxsVXBkYXRlLXY2OTBleHQJCQkJQ2VsbFVwZGF0ZS12NjkwZXh0LUlFcywKCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCWNlbGxVcGRhdGUtdjd4eWV4dAkJCQlDZWxsVXBkYXRlLXY3eHlleHQtSUVzLAoJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAoJCQkJCX0JCU9QVElPTkFMCgkJCQl9CQlPUFRJT05BTAoJCQl9CQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKQ2VsbFVwZGF0ZS12NTkwZXh0IDo6PSBTRVFVRU5DRSB7Cgllc3RhYmxpc2htZW50Q2F1c2UJCQkJRXN0YWJsaXNobWVudENhdXNlCU9QVElPTkFMCn0KCkNlbGxVcGRhdGUtdjY5MGV4dC1JRXMgOjo9CQkJU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJY2VsbFVwZGF0ZUNhdXNlLWV4dAkJCQlDZWxsVXBkYXRlQ2F1c2UtZXh0CQkJCQlPUFRJT05BTCwKCQl0cmFmZmljVm9sdW1lSW5kaWNhdG9yCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwsCgktLSBNZWFzdXJlbWVudCBJRXMKCQltZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEJTWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxCQlPUFRJT05BTCwKCQlyZWNvbmZpZ3VyYXRpb25TdGF0dXNJbmRpY2F0b3IJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwKfQoKQ2VsbFVwZGF0ZS12N3h5ZXh0LUlFcyA6Oj0JCQlTRVFVRU5DRSB7CgktLSBDYWxsIFR5cGUgSUUKCQljc0NhbGxUeXBlCQkJCQkJRU5VTUVSQVRFRCB7IHNwZWVjaCwgdmlkZW8sIG90aGVyLCBzcGFyZSB9CU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBDRUxMIFVQREFURSBDT05GSVJNCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKQ2VsbFVwZGF0ZUNvbmZpcm0gOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCWNlbGxVcGRhdGVDb25maXJtLXIzCQkJQ2VsbFVwZGF0ZUNvbmZpcm0tcjMtSUVzLAoJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjNhMGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjNhMGV4dCwKCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjMtYWRkLWV4dAlCSVQgU1RSSU5HCU9QVElPTkFMLAoJCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY0YjBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY0YjBleHQtSUVzLAoJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQlTRVFVRU5DRSB7CgkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1OTBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1OTBleHQtSUVzLAoJCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjVkMGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjVkMGV4dC1JRXMsCgkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMsCgkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30gT1BUSU9OQUwKCQkJCQkJCX0JCU9QVElPTkFMCgkJCQkJCX0JCU9QVElPTkFMCgkJCQkJfQkJT1BUSU9OQUwKCQkJCX0JCU9QVElPTkFMCgkJCX0JCU9QVElPTkFMCgkJfQkJT1BUSU9OQUwKCX0sCglsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKCQkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCWNlbGxVcGRhdGVDb25maXJtLXI0CQkJQ2VsbFVwZGF0ZUNvbmZpcm0tcjQtSUVzLAoJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CgkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjQtYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgewoJCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NTkwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NTkwZXh0LUlFcywKCQkJCQkJdjVkME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCVNFUVVFTkNFIHsKCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQtSUVzLAoJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY2OTBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY2OTBleHQtSUVzLAoJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQkJfQlPUFRJT05BTAoJCQkJCQl9CU9QVElPTkFMCgkJCQkJfQlPUFRJT05BTAoJCQkJfQlPUFRJT05BTAoJCQl9LAoJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKCQkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjUJCQlDZWxsVXBkYXRlQ29uZmlybS1yNS1JRXMsCgkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKCQkJCQljZWxsVXBkYXRlQ29uZmlybS1yNS1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCXY1ZDBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQlTRVFVRU5DRSB7CgkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQtSUVzLAoJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NjkwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NjkwZXh0LUlFcywKCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQl9CU9QVElPTkFMCgkJCQkJfQlPUFRJT05BTAoJCQkJfSwKCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQkJCXI2CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXI2CQkJQ2VsbFVwZGF0ZUNvbmZpcm0tcjYtSUVzLAoJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNwoJCQkJCQljZWxsVXBkYXRlQ29uZmlybS1yNi1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQl9LAoJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQkJCQlyNwkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjcJCQlDZWxsVXBkYXRlQ29uZmlybS1yNy1JRXMsCgkJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtOAoJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjctYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQl9LAoJCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9Cn0KCkNlbGxVcGRhdGVDb25maXJtLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAoJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKCQlybGMtUmUtZXN0YWJsaXNoSW5kaWNhdG9yUmIyLTNvcjQJCUJPT0xFQU4sCgkJcmxjLVJlLWVzdGFibGlzaEluZGljYXRvclJiNW9yQWJvdmUJCUJPT0xFQU4sCgktLSBDTiBpbmZvcm1hdGlvbiBlbGVtZW50cwoJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlyYi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQkJT1BUSU9OQUwsCgkJcmItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQkJT1BUSU9OQUwsCgkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCgkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAoJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCgkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQltb2RlU3BlY2lmaWNUcmFuc0NoSW5mbwkJCUNIT0lDRSB7CgkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAoJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCgkJCQlkdW1teQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9LAoJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCgkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJCU9QVElPTkFMLAoJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9LAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCQlPUFRJT05BTAp9CgpDZWxsVXBkYXRlQ29uZmlybS12M2EwZXh0IDo6PSBTRVFVRU5DRSB7CgktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyCgktLSBpcyB1bnNwZWNpZmllZAoJbmV3LURTQ0gtUk5USQkJCQlEU0NILVJOVEkJCQkJCQkJCU9QVElPTkFMCn0KCkNlbGxVcGRhdGVDb25maXJtLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCQlTU0RULVVMCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgb3JkZXIgb2YgdGhlIFJMcyBpbiBJRSBjZWxsLWlkLVBlclJMLUxpc3QgaXMgdGhlIHNhbWUgYXMKCQktLSBpbiBJRSBETC1JbmZvcm1hdGlvblBlclJMLUxpc3QgaW5jbHVkZWQgaW4gdGhpcyBtZXNzYWdlCgkJY2VsbC1pZC1QZXJSTC1MaXN0CQkJCQlDZWxsSWRlbnRpdHktUGVyUkwtTGlzdAkJCQlPUFRJT05BTAp9CgpDZWxsVXBkYXRlQ29uZmlybS12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlkbC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CURMLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJCU9QVElPTkFMCn0KCkNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQtSUVzIDo6PQlTRVFVRU5DRSB7CgktLVJhZGlvIEJlYXJlciBJRXMKCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMCn0KQ2VsbFVwZGF0ZUNvbmZpcm0tcjQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAoJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgkJcmxjLVJlLWVzdGFibGlzaEluZGljYXRvclJiMi0zb3I0CQlCT09MRUFOLAoJCXJsYy1SZS1lc3RhYmxpc2hJbmRpY2F0b3JSYjVvckFib3ZlCUJPT0xFQU4sCgktLSBDTiBpbmZvcm1hdGlvbiBlbGVtZW50cwoJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlyYi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQkJT1BUSU9OQUwsCgkJcmItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI0CQlPUFRJT05BTCwKCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCQlPUFRJT05BTCwKCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCgktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCW1vZGVTcGVjaWZpY1RyYW5zQ2hJbmZvCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCgkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAoJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJTlVMTAoJCX0sCgkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjQJCU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNAkJCU9QVElPTkFMLAoJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9LAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjQJCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjQJCQlPUFRJT05BTAp9CgpDZWxsVXBkYXRlQ29uZmlybS1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCgkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAoJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCgkJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAoJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAoJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKCQlybGMtUmUtZXN0YWJsaXNoSW5kaWNhdG9yUmIyLTNvcjQJCUJPT0xFQU4sCgkJcmxjLVJlLWVzdGFibGlzaEluZGljYXRvclJiNW9yQWJvdmUJQk9PTEVBTiwKCS0tIENOIGluZm9ybWF0aW9uIGVsZW1lbnRzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCgktLSBVVFJBTiBtb2JpbGl0eSBJRXMKCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCXJiLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCQlPUFRJT05BTCwKCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjUJCU9QVElPTkFMLAoJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNQkJT1BUSU9OQUwsCgkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCgktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCW1vZGVTcGVjaWZpY1RyYW5zQ2hJbmZvCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCgkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAoJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJTlVMTAoJCX0sCgkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI1CQkJT1BUSU9OQUwsCgkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CgkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJTlVMTAoJCX0sCgkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCgkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNQkJCQlPUFRJT05BTCwKCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNQkJCU9QVElPTkFMCn0KCkNlbGxVcGRhdGVDb25maXJtLXI2LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCgkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAoJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCgkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCgkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAoJCXJsYy1SZS1lc3RhYmxpc2hJbmRpY2F0b3JSYjItM29yNAkJQk9PTEVBTiwKCQlybGMtUmUtZXN0YWJsaXNoSW5kaWNhdG9yUmI1b3JBYm92ZQkJQk9PTEVBTiwKCS0tIENOIGluZm9ybWF0aW9uIGVsZW1lbnRzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJCU9QVElPTkFMLAoJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNgkJT1BUSU9OQUwsCgkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI2CQlPUFRJT05BTCwKCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMLAoJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCgkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCgkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjYJCQkJCQlPUFRJT05BTCwKCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCgkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYJCQlPUFRJT05BTCwKCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAoJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI2CQkJT1BUSU9OQUwsCgktLSBNQk1TIElFcwoJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAp9CgpDZWxsVXBkYXRlQ29uZmlybS12NjkwZXh0LUlFcyA6Oj0JU0VRVUVOQ0UgewoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCXByaW1hcnktcGxtbi1JZGVudGl0eQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJLS0gVGhlIElFIGhhcnEtUHJlYW1ibGUtTW9kZSBzaG91bGQgbm90IGJlIHVzZWQgaW4gdGhlIHIzIGFuZCByNCB2ZXJzaW9ucyBvZiB0aGUgbWVzc2FnZQoJCS0tIElmIGluY2x1ZGVkIGluIHRoZSByMyBvciByNCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLCB0aGUgVUUgc2hvdWxkIGlnbm9yZSB0aGUgSUUKCQloYXJxLVByZWFtYmxlLU1vZGUJCQkJSEFSUS1QcmVhbWJsZS1Nb2RlCQkJCQlPUFRJT05BTCwKCQliZWFjb25QTEVzdAkJCQkJCUJFQUNPTi1QTC1Fc3QJCQkJCQlPUFRJT05BTCwKCQlwb3N0VmVyaWZpY2F0aW9uUGVyaW9kCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwsCgkJZGhzLXN5bmMJCQkJCQlESFMtU3luYwkJCQkJCQlPUFRJT05BTCwKCS0tIE1CTVMgSUVzCgkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCn0KCkNlbGxVcGRhdGVDb25maXJtLXI3LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCgkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAoJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCgkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCgkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAoJCXJsYy1SZS1lc3RhYmxpc2hJbmRpY2F0b3JSYjItM29yNAkJQk9PTEVBTiwKCQlybGMtUmUtZXN0YWJsaXNoSW5kaWNhdG9yUmI1b3JBYm92ZQkJQk9PTEVBTiwKCS0tIENOIGluZm9ybWF0aW9uIGVsZW1lbnRzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJCU9QVElPTkFMLAoJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNgkJT1BUSU9OQUwsCgkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI2CQlPUFRJT05BTCwKCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMLAoJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCgkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCgkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjcJCQkJCQlPUFRJT05BTCwKCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCgkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjcJCQlPUFRJT05BTCwKCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI3CQkJCU9QVElPTkFMLAoJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI3CQkJT1BUSU9OQUwsCgktLSBNQk1TIElFcwoJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gQ0VMTCBVUERBVEUgQ09ORklSTSBmb3IgQ0NDSAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkNlbGxVcGRhdGVDb25maXJtLUNDQ0ggOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCQl1LVJOVEkJCQkJCQlVLVJOVEksCgkJLS0gVGhlIHJlc3Qgb2YgdGhlIG1lc3NhZ2UgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgc2VudCBvbiBEQ0NILgoJCQljZWxsVXBkYXRlQ29uZmlybS1yMwkJCQlDZWxsVXBkYXRlQ29uZmlybS1yMy1JRXMsCgkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJCWNlbGxVcGRhdGVDb25maXJtLUNDQ0gtcjMtYWRkLWV4dAkJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCgkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjRiMGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjRiMGV4dC1JRXMsCgkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NTkwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NTkwZXh0LUlFcywKCQkJCQkJdjVkME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCVNFUVVFTkNFIHsKCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQtSUVzLAoJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY2OTBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY2OTBleHQtSUVzLAoJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9IE9QVElPTkFMCgkJCQkJCQl9CU9QVElPTkFMCgkJCQkJCX0JT1BUSU9OQUwKCQkJCQl9CU9QVElPTkFMCgkJCQl9CU9QVElPTkFMCgkJCX0JT1BUSU9OQUwKCX0sCglsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CgkJdS1STlRJCQkJCQkJCVUtUk5USSwKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJLS0gVGhlIHJlc3Qgb2YgdGhlIG1lc3NhZ2UgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgc2VudCBvbiBEQ0NILgoJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjQJCQlDZWxsVXBkYXRlQ29uZmlybS1yNC1JRXMsCgkJCQl2NGQwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CgkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tQ0NDSC1yNC1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1OTBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1OTBleHQtSUVzLAoJCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjVkMGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjVkMGV4dC1JRXMsCgkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMsCgkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCQkJCQl9CU9QVElPTkFMCgkJCQkJCX0JT1BUSU9OQUwKCQkJCQl9CU9QVElPTkFMCgkJCQl9CU9QVElPTkFMCgkJCX0sCgkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQkJcjUJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQljZWxsVXBkYXRlQ29uZmlybS1yNQkJCUNlbGxVcGRhdGVDb25maXJtLXI1LUlFcywKCQkJCQljZWxsVXBkYXRlQ29uZmlybS1DQ0NILXI1LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCXY1ZDBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQlTRVFVRU5DRSB7CgkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQtSUVzLAoJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NjkwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NjkwZXh0LUlFcywKCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQl9CU9QVElPTkFMCgkJCQkJfQlPUFRJT05BTAoJCQkJfSwJCQoJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjYJCQlDZWxsVXBkYXRlQ29uZmlybS1yNi1JRXMsCgkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXI2LWFkZC1leHQJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCX0sCgkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQkJCXI3CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCQljZWxsVXBkYXRlQ29uZmlybS1yNwkJCUNlbGxVcGRhdGVDb25maXJtLXI3LUlFcywKCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXI3LWFkZC1leHQJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQkJfSwKCQkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gQ09VTlRFUiBDSEVDSwotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkNvdW50ZXJDaGVjayA6Oj0gQ0hPSUNFIHsKCXIzCQkJCQkJCQlTRVFVRU5DRSB7CgkJY291bnRlckNoZWNrLXIzCQkJCQlDb3VudGVyQ2hlY2stcjMtSUVzLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQljb3VudGVyQ2hlY2stcjMtYWRkLWV4dAkJQklUIFNUUklORwlPUFRJT05BTCwKCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7fQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKCX0sCglsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KCX0KfQoKQ291bnRlckNoZWNrLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlyYi1DT1VOVC1DLU1TQi1JbmZvcm1hdGlvbkxpc3QJUkItQ09VTlQtQy1NU0ItSW5mb3JtYXRpb25MaXN0Cn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBDT1VOVEVSIENIRUNLIFJFU1BPTlNFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKQ291bnRlckNoZWNrUmVzcG9uc2UgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJcmItQ09VTlQtQy1JbmZvcm1hdGlvbkxpc3QJCVJCLUNPVU5ULUMtSW5mb3JtYXRpb25MaXN0CQkJT1BUSU9OQUwsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCWNvdW50ZXJDaGVja1Jlc3BvbnNlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIERPV05MSU5LIERJUkVDVCBUUkFOU0ZFUgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkRvd25saW5rRGlyZWN0VHJhbnNmZXIgOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCWRvd25saW5rRGlyZWN0VHJhbnNmZXItcjMJCURvd25saW5rRGlyZWN0VHJhbnNmZXItcjMtSUVzLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQlkb3dubGlua0RpcmVjdFRyYW5zZmVyLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCgkJfQlPUFRJT05BTAoJfSwKCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJfQp9CgpEb3dubGlua0RpcmVjdFRyYW5zZmVyLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1Eb21haW5JZGVudGl0eQkJCQlDTi1Eb21haW5JZGVudGl0eSwKCQluYXMtTWVzc2FnZQkJCQkJCU5BUy1NZXNzYWdlCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBIQU5ET1ZFUiBUTyBVVFJBTiBDT01NQU5ECi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKCkhhbmRvdmVyVG9VVFJBTkNvbW1hbmQgOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCWhhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjMJCUhhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjMtSUVzLAoJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9IE9QVElPTkFMCgl9LAoJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJaGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNAkJSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNC1JRXMsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCX0sCgkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQloYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI1CQlIYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI1LUlFcywKCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQl9LAoJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKCQkJCXI2CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJaGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNgkJSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNi1JRXMsCgkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCQl9LAoJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQkJcjcJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJaGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNwkJSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNy1JRXMsCgkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCX0sCgkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CgkJCQl9CgkJCX0KCQl9Cgl9Cn0KCkhhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQluZXctVS1STlRJCQkJCQkJVS1STlRJLVNob3J0LAoJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJZHVtbXkJCQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQljaXBoZXJpbmdBbGdvcml0aG0JCQkJQ2lwaGVyaW5nQWxnb3JpdGhtCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgoJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgewoJCQkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCgkJCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdAkJCU9QVElPTkFMLAoJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mbywKCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAoJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mbywKCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAoJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8sCgkJCQltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CgkJCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLAoJCQkJCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQkJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24gT1BUSU9OQUwsCgkJCQkJCWR1bW15MgkJCQkJCQlDUENILVNldEluZm8JCU9QVElPTkFMCgkJCQkJfSwKCQkJCQl0ZGQJCQkJCQkJCU5VTEwKCQkJCX0sCgkJCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLAoJCQkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QsCgkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCgkJCX0sCgkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgewotLSBBbGwgSUVzIHRoYXQgaW5jbHVkZSBhbiBGREQvVEREIGNob2ljZSBhcmUgc3BsaXQgaW4gdHdvIElFcyBmb3IgdGhpcyBtZXNzYWdlLAotLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCi0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CgkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCgkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgewoJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eQoJCQkJCX0KCQkJCX0sCgkJCQlyYWItSW5mbwkJCQkJCVJBQi1JbmZvLVBvc3QJCU9QVElPTkFMLAoJCQkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCQkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mb1Bvc3RGREQsCgkJCQkJCWRsLUNvbW1vbkluZm9ybWF0aW9uUG9zdAkJREwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0LAoJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdFBvc3RGREQsCgkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9GREQKCQkJCQl9LAoJCQkJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0VERELAoJCQkJCQlkbC1Db21tb25JbmZvcm1hdGlvblBvc3QJCURMLUNvbW1vbkluZm9ybWF0aW9uUG9zdCwKCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTAkJCQlETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQsCgkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCgkJCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgp9CgpIYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USS1TaG9ydCwKCQljaXBoZXJpbmdBbGdvcml0aG0JCQkJQ2lwaGVyaW5nQWxnb3JpdGhtCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgoJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgewoJCQkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCgkJCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNAkJCU9QVElPTkFMLAoJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNCwKCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAoJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNCwKCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0LAoJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjQsCgkJCQltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CgkJCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLAoJCQkJCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQkJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24gT1BUSU9OQUwsCgkJCQkJCWR1bW15MgkJCQkJCQlDUENILVNldEluZm8JCU9QVElPTkFMCgkJCQkJfSwKCQkJCQl0ZGQJCQkJCQkJCU5VTEwKCQkJCX0sCgkJCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0LAoJCQkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjQsCgkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCgkJCX0sCgkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgewotLSBBbGwgSUVzIHRoYXQgaW5jbHVkZSBhbiBGREQvVEREIGNob2ljZSBhcmUgc3BsaXQgaW4gdHdvIElFcyBmb3IgdGhpcyBtZXNzYWdlLAotLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCi0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CgkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCgkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgewoJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eS1yNAoJCQkJCX0KCQkJCX0sCgkJCQlyYWItSW5mbwkJCQkJCVJBQi1JbmZvLVBvc3QJCU9QVElPTkFMLAoJCQkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCQkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mb1Bvc3RGREQsCgkJCQkJCWRsLUNvbW1vbkluZm9ybWF0aW9uUG9zdAkJREwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0LAoJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdFBvc3RGREQsCgkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9GREQKCQkJCQl9LAoJCQkJCXRkZAkJCQkJCQkJQ0hPSUNFIHsKCQkJCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvUG9zdFRERCwKCQkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0VERELAoJCQkJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mb1RERCwKCQkJCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgoJCQkJCQl9LAoJCQkJCQl0ZGQxMjgJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0VERELUxDUi1yNCwKCQkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0VERELUxDUi1yNCwKCQkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCgkJCQkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgp9CgpIYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI1LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USS1TaG9ydCwKCQljaXBoZXJpbmdBbGdvcml0aG0JCQkJQ2lwaGVyaW5nQWxnb3JpdGhtCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgoJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgewoJCQkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUsCgkJCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNQkJCU9QVElPTkFMLAoJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNCwKCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAoJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNCwKCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1LAoJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjUsCgkJCQltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CgkJCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLAoJCQkJCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQkJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24gT1BUSU9OQUwsCgkJCQkJCWR1bW15MgkJCQkJCQlDUENILVNldEluZm8JCU9QVElPTkFMCgkJCQkJfSwKCQkJCQl0ZGQJCQkJCQkJCU5VTEwKCQkJCX0sCgkJCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0LAoJCQkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjUsCgkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCgkJCX0sCgkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgewotLSBBbGwgSUVzIHRoYXQgaW5jbHVkZSBhbiBGREQvVEREIGNob2ljZSBhcmUgc3BsaXQgaW4gdHdvIElFcyBmb3IgdGhpcyBtZXNzYWdlLAotLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCi0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CgkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCgkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgewoJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eS1yNQoJCQkJCX0KCQkJCX0sCgkJCQlyYWItSW5mbwkJCQkJCVJBQi1JbmZvLVBvc3QJCU9QVElPTkFMLAoJCQkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCQkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mb1Bvc3RGREQsCgkJCQkJCWRsLUNvbW1vbkluZm9ybWF0aW9uUG9zdAkJREwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0LAoJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdFBvc3RGREQsCgkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9GREQKCQkJCQl9LAoJCQkJCXRkZAkJCQkJCQkJQ0hPSUNFIHsKCQkJCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvUG9zdFRERCwKCQkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0VERELAoJCQkJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mb1RERCwKCQkJCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgoJCQkJCQl9LAoJCQkJCQl0ZGQxMjgJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0VERELUxDUi1yNCwKCQkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0VERELUxDUi1yNCwKCQkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCgkJCQkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgp9CgpIYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI2LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USS1TaG9ydCwKCQljaXBoZXJpbmdBbGdvcml0aG0JCQkJQ2lwaGVyaW5nQWxnb3JpdGhtCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgoJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgewoJCQkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYsCgkJCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNgkJT1BUSU9OQUwsCgkJCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0LAoJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYsCgkJCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0LAoJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUsCgkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNiwKCQkJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMLAoJCQkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYJCU9QVElPTkFMLAoJCQkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNiwKCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI2LAoJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwoJCQl9LAoJCQlwcmVjb25maWd1cmF0aW9uCQkJCVNFUVVFTkNFIHsKCQkJCS0tIEFsbCBJRXMgdGhhdCBpbmNsdWRlIGFuIEZERC9UREQgY2hvaWNlIGFyZSBzcGxpdCBpbiB0d28gSUVzIGZvciB0aGlzIG1lc3NhZ2UsCgkJCQktLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCgkJCQktLSBGREQvVEREIGNob2ljZSBpbiB0aGlzIGxldmVsIGlzIHN1ZmZpY2llbnQuCgkJCQlwcmVDb25maWdNb2RlCQkJCQlDSE9JQ0UgewoJCQkJCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAoJCQkJCWRlZmF1bHRDb25maWcJCQkJCVNFUVVFTkNFIHsKCQkJCQkJZGVmYXVsdENvbmZpZ01vZGUJCQkJRGVmYXVsdENvbmZpZ01vZGUsCgkJCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYKCQkJCQl9CgkJCQl9LAoJCQkJcmFiLUluZm8JCQkJCQlSQUItSW5mby1Qb3N0CQlPUFRJT05BTCwKCQkJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKCQkJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0RkRELAoJCQkJCQlkbC1Db21tb25JbmZvcm1hdGlvblBvc3QJCURMLUNvbW1vbkluZm9ybWF0aW9uUG9zdCwKCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3RQb3N0RkRELAoJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvRkRECgkJCQkJfSwKCQkJCQl0ZGQJCQkJCQkJCUNIT0lDRSB7CgkJCQkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mb1Bvc3RUREQsCgkJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERCwKCQkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCgkJCQkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKCQkJCQkJfSwKCQkJCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvUG9zdFRERC1MQ1ItcjQsCgkJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERC1MQ1ItcjQsCgkJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvVERELAoJCQkJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQl9LAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIKfQoKSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNy1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEktU2hvcnQsCgkJY2lwaGVyaW5nQWxnb3JpdGhtCQkJCUNpcGhlcmluZ0FsZ29yaXRobQkJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJLS0gU3BlY2lmaWNhdGlvbiBtb2RlIGluZm9ybWF0aW9uCgkJc3BlY2lmaWNhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKCQkJY29tcGxldGUJCQkJCQlTRVFVRU5DRSB7CgkJCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNiwKCQkJCXJhYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2CQlPUFRJT05BTCwKCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQsCgkJCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNiwKCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQsCgkJCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNSwKCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI3LAoJCQkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNCwKCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI3LAoJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwoJCQl9LAoJCQlwcmVjb25maWd1cmF0aW9uCQkJCVNFUVVFTkNFIHsKCQkJCS0tIEFsbCBJRXMgdGhhdCBpbmNsdWRlIGFuIEZERC9UREQgY2hvaWNlIGFyZSBzcGxpdCBpbiB0d28gSUVzIGZvciB0aGlzIG1lc3NhZ2UsCgkJCQktLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCgkJCQktLSBGREQvVEREIGNob2ljZSBpbiB0aGlzIGxldmVsIGlzIHN1ZmZpY2llbnQuCgkJCQlwcmVDb25maWdNb2RlCQkJCQlDSE9JQ0UgewoJCQkJCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAoJCQkJCWRlZmF1bHRDb25maWcJCQkJCVNFUVVFTkNFIHsKCQkJCQkJZGVmYXVsdENvbmZpZ01vZGUJCQkJRGVmYXVsdENvbmZpZ01vZGUsCgkJCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYKCQkJCQl9CgkJCQl9LAoJCQkJcmFiLUluZm8JCQkJCQlSQUItSW5mby1Qb3N0CQlPUFRJT05BTCwKCQkJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKCQkJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0RkRELAoJCQkJCQlkbC1Db21tb25JbmZvcm1hdGlvblBvc3QJCURMLUNvbW1vbkluZm9ybWF0aW9uUG9zdCwKCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3RQb3N0RkRELAoJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvRkRECgkJCQkJfSwKCQkJCQl0ZGQJCQkJCQkJCUNIT0lDRSB7CgkJCQkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mb1Bvc3RUREQsCgkJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERCwKCQkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCgkJCQkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKCQkJCQkJfSwKCQkJCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI3LAoJCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTAkJCQlETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQtTENSLXI0LAoJCQkJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mb1RERCwKCQkJCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgoJCQkJCQl9LAoJCQkJCQl0ZGQ3NjgJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjcsCgkJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNywKCQkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCgkJCQkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gSEFORE9WRVIgVE8gVVRSQU4gQ09NUExFVEUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpIYW5kb3ZlclRvVVRSQU5Db21wbGV0ZSA6Oj0gU0VRVUVOQ0UgewoJLS1UQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJLS0gVEFCVUxBUjogc3RhcnRMaXN0IGlzIGNvbmRpdGlvbmFsIG9uIGhpc3RvcnkuCgkJc3RhcnRMaXN0CQkJCQkJU1RBUlRMaXN0CQkJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCWNvdW50LUMtQWN0aXZhdGlvblRpbWUJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQloYW5kb3ZlclRvVVRSQU5Db21wbGV0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCU9QVElPTkFMLAoJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQl9CU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBJTklUSUFMIERJUkVDVCBUUkFOU0ZFUgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkluaXRpYWxEaXJlY3RUcmFuc2ZlciA6Oj0gU0VRVUVOQ0UgewoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCWNuLURvbWFpbklkZW50aXR5CQkJCUNOLURvbWFpbklkZW50aXR5LAoJCWludHJhRG9tYWluTmFzTm9kZVNlbGVjdG9yCQlJbnRyYURvbWFpbk5hc05vZGVTZWxlY3RvciwKCQluYXMtTWVzc2FnZQkJCQkJCU5BUy1NZXNzYWdlLAoJLS0gTWVhc3VyZW1lbnQgSUVzCgkJbWVhc3VyZWRSZXN1bHRzT25SQUNICQkJTWVhc3VyZWRSZXN1bHRzT25SQUNICQkJCU9QVElPTkFMLAoJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQlpbml0aWFsRGlyZWN0VHJhbnNmZXItdjNhMGV4dAlJbml0aWFsRGlyZWN0VHJhbnNmZXItdjNhMGV4dCwKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJaW5pdGlhbERpcmVjdFRyYW5zZmVyLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCgkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJaW5pdGlhbERpcmVjdFRyYW5zZmVyLXY1OTBleHQJSW5pdGlhbERpcmVjdFRyYW5zZmVyLXY1OTBleHQsCgkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQlpbml0aWFsRGlyZWN0VHJhbnNmZXItdjY5MGV4dAlJbml0aWFsRGlyZWN0VHJhbnNmZXItdjY5MGV4dC1JRXMsCgkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCX0JCU9QVElPTkFMCgkJCQl9CQlPUFRJT05BTAoJCQl9CQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKSW5pdGlhbERpcmVjdFRyYW5zZmVyLXYzYTBleHQgOjo9IFNFUVVFTkNFIHsKCS0tIHN0YXJ0LXZhbHVlIHNoYWxsIGFsd2F5cyBiZSBpbmNsdWRlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHByb3RvY29sCglzdGFydC1WYWx1ZQkJCQkJCVNUQVJULVZhbHVlCQkJCQkJCU9QVElPTkFMCn0KSW5pdGlhbERpcmVjdFRyYW5zZmVyLXY1OTBleHQgOjo9IFNFUVVFTkNFIHsKCWVzdGFibGlzaG1lbnRDYXVzZQkJRXN0YWJsaXNobWVudENhdXNlCU9QVElPTkFMCn0KCkluaXRpYWxEaXJlY3RUcmFuc2Zlci12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCXBsbW4tSWRlbnRpdHkJCQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIE1lYXN1cmVtZW50IElFcwoJCW1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcQlNZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEJCU9QVElPTkFMLAoJLS0gTUJNUyBJRXMKCQltYm1zLUpvaW5lZEluZm9ybWF0aW9uCQkJTUJNUy1Kb2luZWRJbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBIQU5ET1ZFUiBGUk9NIFVUUkFOIENPTU1BTkQKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNIDo6PSBDSE9JQ0UgewoJcjMJCQkJCQkJCVNFUVVFTkNFIHsKCQloYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLXIzCgkJCQkJCQkJCQlIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLXIzLUlFcywKCQktLSBVVFJBTiBzaG91bGQgbm90IGluY2x1ZGUgdGhlIElFIGxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zIHdoZW4gaXQgc2V0cyB0aGUgSUUgCgkJLS0gZ3NtLW1lc3NhZ2UgaW5jbHVkZWQgaW4gaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTS1yMyB0byBzaW5nbGUtR1NNLU1lc3NhZ2UuIFRoZSBVRQoJCS0tIGJlaGF2aW91ciB1cG9uIHJlY2VpdmluZyBhIG1lc3NhZ2Ugd2l0aCB0aGlzIGNvbWJpbmF0aW9uIG9mIElFIHZhbHVlcyBpcyB1bnNwZWNpZmllZC4KCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCU9QVElPTkFMLAoJCQktLSBVVFJBTiBtYXkgYXBwbHkgdGhlIHIzIHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UgdG8gcGVyZm9ybSBQUyBoYW5kb3ZlcgoJCQktLSBmb3IgYSBzaW5nbGUgUkFCIG9ubHkKCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTS12NjkwZXh0CUhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tdjY5MGV4dC1JRXMsCgkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAoJCQl9CU9QVElPTkFMCgkJfQlPUFRJT05BTAoJfSwKCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTS1yNgkJSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTS1yNi1JRXMsCgkJCQloYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLXI2LWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCgkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAoJCQl9LAoJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KCQl9Cgl9Cn0KCkhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCXRvSGFuZG92ZXJSQUItSW5mbwkJCQlSQUItSW5mbwkJCQkJCQlPUFRJT05BTCwKCS0tIE1lYXN1cmVtZW50IElFcwoJCWZyZXF1ZW5jeS1iYW5kCQkJCQlGcmVxdWVuY3ktQmFuZCwKCS0tIE90aGVyIElFcwoJCWdzbS1tZXNzYWdlCQkJCQkJQ0hPSUNFIHsKCQkJLS0gSW4gdGhlIHNpbmdsZS1HU00tTWVzc2FnZSBjYXNlIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHk6CgkJCS0tIDE+IHRoZSBHU00gbWVzc2FnZSBkaXJlY3RseSBmb2xsb3dzIHRoZSBiYXNpYyBwcm9kdWN0aW9uOyB0aGUgZmluYWwgcGFkZGluZyB0aGF0CgkJCS0tICAgIHJlc3VsdHMgd2hlbiBQRVIgZW5jb2RpbmcgdGhlIGFic3RyYWN0IHN5bnRheCB2YWx1ZSBpcyByZW1vdmVkIHByaW9yIHRvIGFwcGVuZGluZyAKCQkJLS0gICAgdGhlIEdTTSBtZXNzYWdlLgoJCQktLSAyPiB0aGUgUlJDIG1lc3NhZ2UgZXhjbHVkaW5nIHRoZSBHU00gcGFydCwgZG9lcyBub3QgY29udGFpbiBhIGxlbmd0aCBkZXRlcm1pbmFudDsgCgkJCS0tICAgIHRoZXJlIGlzIG5vIGV4cGxpY2l0IHBhcmFtZXRlciBpbmRpY2F0aW5nIHRoZSBzaXplIG9mIHRoZSBpbmNsdWRlZCBHU00gbWVzc2FnZS4KCQkJLS0gMz4gZGVwZW5kaW5nIG9uIG5lZWQsIGZpbmFsIHBhZGRpbmcgKGFsbCDSMNNzKSBpcyBhZGRlZCB0byBlbnN1cmUgdGhlIGZpbmFsIHJlc3VsdAoJCQktLSAgICBjb21wcmlzZXMgYSBmdWxsIG51bWJlciBvZiBvY3RldHMKCQkJc2luZ2xlLUdTTS1NZXNzYWdlCQkJCVNFUVVFTkNFIHt9LAoJCQlnc20tTWVzc2FnZUxpc3QJCQkJCVNFUVVFTkNFIHsKCQkJCWdzbS1NZXNzYWdlcwkJCQkJR1NNLU1lc3NhZ2VMaXN0CgkJCX0KCQl9Cn0KCkhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tcjYtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQl0b0hhbmRvdmVyUkFCLUluZm8JCQkJUkFCLUluZm9ybWF0aW9uTGlzdC1yNgkJCQlPUFRJT05BTCwKCS0tIE1lYXN1cmVtZW50IElFcwoJCWZyZXF1ZW5jeS1iYW5kCQkJCQlGcmVxdWVuY3ktQmFuZCwKCS0tIE90aGVyIElFcwoJCWdzbS1tZXNzYWdlCQkJCQkJQ0hPSUNFIHsKCQkJLS0gSW4gdGhlIHNpbmdsZS1HU00tTWVzc2FnZSBjYXNlIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHk6CgkJCS0tIDE+IHRoZSBHU00gbWVzc2FnZSBkaXJlY3RseSBmb2xsb3dzIHRoZSBiYXNpYyBwcm9kdWN0aW9uOyB0aGUgZmluYWwgcGFkZGluZyB0aGF0CgkJCS0tICAgIHJlc3VsdHMgd2hlbiBQRVIgZW5jb2RpbmcgdGhlIGFic3RyYWN0IHN5bnRheCB2YWx1ZSBpcyByZW1vdmVkIHByaW9yIHRvIGFwcGVuZGluZyAKCQkJLS0gICAgdGhlIEdTTSBtZXNzYWdlLgoJCQktLSAyPiB0aGUgUlJDIG1lc3NhZ2UgZXhjbHVkaW5nIHRoZSBHU00gcGFydCwgZG9lcyBub3QgY29udGFpbiBhIGxlbmd0aCBkZXRlcm1pbmFudDsgCgkJCS0tICAgIHRoZXJlIGlzIG5vIGV4cGxpY2l0IHBhcmFtZXRlciBpbmRpY2F0aW5nIHRoZSBzaXplIG9mIHRoZSBpbmNsdWRlZCBHU00gbWVzc2FnZS4KCQkJLS0gMz4gZGVwZW5kaW5nIG9uIG5lZWQsIGZpbmFsIHBhZGRpbmcgKGFsbCDSMNNzKSBpcyBhZGRlZCB0byBlbnN1cmUgdGhlIGZpbmFsIHJlc3VsdAoJCQktLSAgICBjb21wcmlzZXMgYSBmdWxsIG51bWJlciBvZiBvY3RldHMKCQkJc2luZ2xlLUdTTS1NZXNzYWdlCQkJCVNFUVVFTkNFIHt9LAoJCQlnc20tTWVzc2FnZUxpc3QJCQkJCVNFUVVFTkNFIHsKCQkJCWdzbS1NZXNzYWdlcwkJCQkJR1NNLU1lc3NhZ2VMaXN0CgkJCX0KCQl9LAoJCWdlcmFuLVN5c3RlbUluZm9UeXBlCQkJCUNIT0lDRQl7CQkKCQkJc0kJCQkJCQkJCQlHRVJBTi1TeXN0ZW1JbmZvcm1hdGlvbiwKCQkJcFNJCQkJCQkJCQkJR0VSQU4tU3lzdGVtSW5mb3JtYXRpb24KCQl9CQlPUFRJT05BTAp9CgpIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgkJZ2VyYW4tU3lzdGVtSW5mb1R5cGUJCQkJQ0hPSUNFCXsJCQoJCQlzSQkJCQkJCQkJCUdFUkFOLVN5c3RlbUluZm9ybWF0aW9uLAoJCQlwU0kJCQkJCQkJCQlHRVJBTi1TeXN0ZW1JbmZvcm1hdGlvbgoJCX0JCU9QVElPTkFMCn0KCkhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HRVJBTkl1IDo6PSBTRVFVRU5DRSB7CglycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdFUkFOSXUJQ0hPSUNFIHsKCQlyNQkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdFUkFOSXUtcjUKCQkJCQkJCQkJCQlIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR0VSQU5JdS1yNS1JRXMsCgkJCS0tIFVUUkFOIHNob3VsZCBub3QgaW5jbHVkZSB0aGUgSUUgbm9uQ3JpdGljYWxFeHRlbnNpb25zIHdoZW4gaXQgc2V0cwoJCQktLSB0aGUgSUUgZ2VyYW5JdS1tZXNzYWdlIGluY2x1ZGVkIGluIGhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HRVJBTkl1LXI1IHRvIAoJCQktLSBzaW5nbGUtR0VSQU5JdS1NZXNzYWdlCgkJCS0tIFRoZSBVRSBiZWhhdmlvdXIgdXBvbiByZWNlaXZpbmcgYSBtZXNzYWdlIGluY2x1ZGluZyB0aGlzIGNvbWJpbmF0aW9uIG9mIElFIHZhbHVlcyBpcwoJCQktLSBub3Qgc3BlY2lmaWVkCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCgkJfSwKCQlsYXRlci10aGFuLXI1CQkJCQlTRVFVRU5DRSB7CgkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJCX0KCX0KfQoKSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdFUkFOSXUtcjUtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCS0tIE1lYXN1cmVtZW50IElFcwoJCWZyZXF1ZW5jeS1CYW5kCQkJCQlGcmVxdWVuY3ktQmFuZCwKCS0tIE90aGVyIElFcwoJCWdlcmFuSXUtTWVzc2FnZQkJCQkJCUNIT0lDRSB7CgkJCS0tIEluIHRoZSBzaW5nbGUtR0VSQU5JdS1NZXNzYWdlIGNhc2UgdGhlIGZvbGxvd2luZyBydWxlcyBhcHBseToKCQkJLS0gMT4gdGhlIEdFUkFOIEl1IG1lc3NhZ2UgZGlyZWN0bHkgZm9sbG93cyB0aGUgYmFzaWMgcHJvZHVjdGlvbjsgdGhlIGZpbmFsIHBhZGRpbmcgdGhhdAoJCQktLSAgICByZXN1bHRzIHdoZW4gUEVSIGVuY29kaW5nIHRoZSBhYnN0cmFjdCBzeW50YXggdmFsdWUgaXMgcmVtb3ZlZCBwcmlvciB0byBhcHBlbmRpbmcgCgkJCS0tICAgIHRoZSBHRVJBTiBJdSBtZXNzYWdlLgoJCQktLSAyPiB0aGUgUlJDIG1lc3NhZ2UgZXhjbHVkaW5nIHRoZSBHRVJBTiBJdSBwYXJ0IGRvZXMgbm90IGNvbnRhaW4gYSBsZW5ndGggZGV0ZXJtaW5hbnQ7IAotLSAgICB0aGVyZSBpcyBubyBleHBsaWNpdCBwYXJhbWV0ZXIgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUgaW5jbHVkZWQgR0VSQU4gSXUKLS0gICAgbWVzc2FnZS4KCQkJLS0gMz4gZGVwZW5kaW5nIG9uIG5lZWQsIGZpbmFsIHBhZGRpbmcgKGFsbCDSMNNzKSBpcyBhZGRlZCB0byBlbnN1cmUgdGhlIGZpbmFsIHJlc3VsdAoJCQktLSAgICBjb21wcmlzZXMgYSBmdWxsIG51bWJlciBvZiBvY3RldHMuCgkJCXNpbmdsZS1HRVJBTkl1LU1lc3NhZ2UJCQlTRVFVRU5DRSB7fSwKCQkJZ2VyYW5JdS1NZXNzYWdlTGlzdAkJCQlTRVFVRU5DRSB7CgkJCQlnZXJhbkl1LU1lc3NhZ2VzCQkJCUdFUkFOSXUtTWVzc2FnZUxpc3QKCQkJfQoJCX0KfQoKSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUNETUEyMDAwIDo6PSBDSE9JQ0UgewoJcjMJCQkJCQkJCVNFUVVFTkNFIHsKCQloYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtQ0RNQTIwMDAtcjMKCQkJCQkJCQkJCUhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1DRE1BMjAwMC1yMy1JRXMsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucyAKCQkJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUNETUEyMDAwLXIzLWFkZC1leHQJCQoJCQkJCQkJCQkJCQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKCX0sCglsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KCX0KfQoKSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUNETUEyMDAwLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQl0b0hhbmRvdmVyUkFCLUluZm8JCQkJUkFCLUluZm8JCQkJCQkJT1BUSU9OQUwsCgktLSBPdGhlciBJRXMKCQljZG1hMjAwMC1NZXNzYWdlTGlzdAkJCUNETUEyMDAwLU1lc3NhZ2VMaXN0Cn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBIQU5ET1ZFUiBGUk9NIFVUUkFOIEZBSUxVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpIYW5kb3ZlckZyb21VVFJBTkZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgktLSBPdGhlciBJRXMKCQlpbnRlclJBVC1ITy1GYWlsdXJlQ2F1c2UJCUludGVyUkFULUhPLUZhaWx1cmVDYXVzZQkJCU9QVElPTkFMLAoJCS0tIEluIGNhc2UgdGhlIGludGVyUkFUTWVzc2FnZSB0byBiZSB0cmFuc2ZlcnJlZCBpcyBmb3IgR0VSQU4gSXUgbW9kZSwgdGhlCgkJLS0gbWVzc2FnZSBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSBIYW5kb3ZlckZyb21VdHJhbkZhaWx1cmUtdjU5MGV4dC1JRXMKCQktLSBub24tY3JpdGljYWwgZXh0ZW5zaW9uIGNvbnRhaW5lci4KCQlpbnRlclJBVE1lc3NhZ2UJCQkJCUNIT0lDRSB7CgkJCWdzbQkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJZ3NtLU1lc3NhZ2VMaXN0CQkJCQkJR1NNLU1lc3NhZ2VMaXN0CgkJCX0sCgkJCWNkbWEyMDAwCQkJCQkJCVNFUVVFTkNFIHsKCQkJCWNkbWEyMDAwLU1lc3NhZ2VMaXN0CQkJCUNETUEyMDAwLU1lc3NhZ2VMaXN0CgkJCX0KCQl9CQkJCU9QVElPTkFMLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQloYW5kb3ZlckZyb21VVFJBTkZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwlPUFRJT05BTCwKCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJaGFuZG92ZXJGcm9tVVRSQU5GYWlsdXJlLXY1OTBleHQJSGFuZG92ZXJGcm9tVXRyYW5GYWlsdXJlLXY1OTBleHQtSUVzLAoJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCX0JT1BUSU9OQUwKCQl9CU9QVElPTkFMCn0KCkhhbmRvdmVyRnJvbVV0cmFuRmFpbHVyZS12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJZ2VyYW5JdS1NZXNzYWdlTGlzdAkJCQkJCUdFUkFOSXUtTWVzc2FnZUxpc3QJCQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gSU5URVIgUkFUIEhBTkRPVkVSIElORk8KLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpJbnRlclJBVEhhbmRvdmVySW5mbyA6Oj0gU0VRVUVOQ0UgewoJLS0gVGhpcyBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggNDQuMDE4CglwcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdAkJQ0hPSUNFIHsKCQlhYnNlbnQJCQkJCQkJTlVMTCwKCQlwcmVzZW50CQkJCQkJCVByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0Cgl9LAoJdUUtU2VjdXJpdHlJbmZvcm1hdGlvbgkJCUNIT0lDRSB7CgkJYWJzZW50CQkJCQkJCU5VTEwsCgkJcHJlc2VudAkJCQkJCQlVRS1TZWN1cml0eUluZm9ybWF0aW9uCgl9LAoJdWUtQ2FwYWJpbGl0eUNvbnRhaW5lcgkJCUNIT0lDRSB7CgkJYWJzZW50CQkJCQkJCU5VTEwsCgkJLS0gcHJlc2VudCBpcyBhbiBvY3RldCBhbGlnbmVkIHN0cmluZyBjb250YWluaW5nIElFIFVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUluZm8KCQlwcmVzZW50CQkJCQkJCU9DVEVUIFNUUklORyAoU0laRSAoMC4uNjMpKQoJfSwKCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCgl2MzkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlDSE9JQ0UgewoJCWFic2VudAkJCQkJCQlOVUxMLAoJCXByZXNlbnQJCQkJCQkJU0VRVUVOQ0UgewoJCQlpbnRlclJBVEhhbmRvdmVySW5mby12MzkwZXh0CUludGVyUkFUSGFuZG92ZXJJbmZvLXYzOTBleHQtSUVzLAoJCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSAgewoJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjNhMGV4dAlJbnRlclJBVEhhbmRvdmVySW5mby12M2EwZXh0LUlFcywKCQkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjNkMGV4dCAJSW50ZXJSQVRIYW5kb3ZlckluZm8tdjNkMGV4dC1JRXMsCgkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tcjMtYWRkLWV4dAkJQklUIFNUUklORwoJCQkJCQkJCShDT05UQUlOSU5HIEludGVyUkFUSGFuZG92ZXJJbmZvLXIzLWFkZC1leHQtSUVzKQlPUFRJT05BTCwKCQkJCQl2M2cwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQlpbnRlclJBVEhhbmRvdmVySW5mby12M2cwZXh0CUludGVyUkFUSGFuZG92ZXJJbmZvLXYzZzBleHQtSUVzLAoJCQkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQlpbnRlclJBVEhhbmRvdmVySW5mby12NGIwZXh0CUludGVyUkFUSGFuZG92ZXJJbmZvLXY0YjBleHQtSUVzLAoJCQkJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJCWludGVyUkFUSGFuZG92ZXJJbmZvLXY0ZDBleHQJSW50ZXJSQVRIYW5kb3ZlckluZm8tdjRkMGV4dC1JRXMsCgkJCQkJCQkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCgkJCQkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJCQlpbnRlclJBVEhhbmRvdmVySW5mby12NTkwZXh0CgkJCQkJCQkJCQkJCQkJCQlJbnRlclJBVEhhbmRvdmVySW5mby12NTkwZXh0LUlFcywKCQkJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjY5MGV4dAoJCQkJCQkJCQkJCQkJCQkJSW50ZXJSQVRIYW5kb3ZlckluZm8tdjY5MGV4dC1JRXMsCgkJCQkJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQkJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjd4eWV4dAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJSW50ZXJSQVRIYW5kb3ZlckluZm8tdjd4eWV4dC1JRXMsCgkJCQkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKCQkJCQkJCQkJCX0JT1BUSU9OQUwKCQkJCQkJCQkJfQlPUFRJT05BTAoJCQkJCQkJCX0JT1BUSU9OQUwKCQkJCQkJCX0JT1BUSU9OQUwKCQkJCQkJfQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0JT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0KCX0KfQoKSW50ZXJSQVRIYW5kb3ZlckluZm8tdjM5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0CQlPUFRJT05BTCwKCQlkbC1QaHlzQ2hDYXBhYmlsaXR5RkRELXYzODBleHQJCURMLVBoeXNDaENhcGFiaWxpdHlGREQtdjM4MGV4dAp9CgpJbnRlclJBVEhhbmRvdmVySW5mby12M2EwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQJCU9QVElPTkFMCn0KCkludGVyUkFUSGFuZG92ZXJJbmZvLXYzZDBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQl1RVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaW50ZXJSQVQJCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAkJT1BUSU9OQUwKfQoKSW50ZXJSQVRIYW5kb3ZlckluZm8tdjNnMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2cwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2cwZXh0CQlPUFRJT05BTAp9CgpJbnRlclJBVEhhbmRvdmVySW5mby1yMy1hZGQtZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJCWludGVyUkFUSGFuZG92ZXJJbmZvLXY2OTBleHQxCQlJbnRlclJBVEhhbmRvdmVySW5mby12NjkwZXh0MS1JRXMsCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAp9CgpJbnRlclJBVEhhbmRvdmVySW5mby12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJYWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IJCUFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yCn0KCkludGVyUkFUSGFuZG92ZXJJbmZvLXY0ZDBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCXRkZDEyOC1SRi1DYXBhYmlsaXR5CQkJCVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QJCU9QVElPTkFMCn0KCkludGVyUkFUSGFuZG92ZXJJbmZvLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlwcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdENvbXAJCVByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0Q29tcAkJCU9QVElPTkFMLAoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAJCQlPUFRJT05BTAp9CgpJbnRlclJBVEhhbmRvdmVySW5mby12NjkwZXh0MS1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjUwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY1MGV4dAlPUFRJT05BTAp9CgpJbnRlclJBVEhhbmRvdmVySW5mby12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJdWUtU2VjdXJpdHlJbmZvcm1hdGlvbjIJCQkJVUUtU2VjdXJpdHlJbmZvcm1hdGlvbjIJCQkJCU9QVElPTkFMLAoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAtZXh0CQlPUFRJT05BTCwKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wMgkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcDIKfQoKSW50ZXJSQVRIYW5kb3ZlckluZm8tdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dAkJT1BUSU9OQUwsCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcC1yNwkJCU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNRUFTVVJFTUVOVCBDT05UUk9MCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTWVhc3VyZW1lbnRDb250cm9sIDo6PSBDSE9JQ0UgewoJLS0gVGhlIFJlbC00IGZ1bmN0aW9uYWxpdHkgb2YgVUUgUG9zaXRpb25pbmcgT1RET0EgQXNzaXN0YW5jZURhdGEgVEREIGlzIG9ubHkgYXZhaWxhYmxlCgktLSBpbiB0aGUgbGF0ZXItdGhhbi1yMyBicmFuY2ggb2YgdGhpcyBtZXNzYWdlIChpLmUuIHRocm91Z2ggdGhlIHVzZSBvZiB0aGUgSUUKCS0tIHVlLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLXI0KQoJcjMJCQkJCQkJCVNFUVVFTkNFIHsKCQltZWFzdXJlbWVudENvbnRyb2wtcjMJCQlNZWFzdXJlbWVudENvbnRyb2wtcjMtSUVzLAoJCXYzOTBub25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJbWVhc3VyZW1lbnRDb250cm9sLXYzOTBleHQJCU1lYXN1cmVtZW50Q29udHJvbC12MzkwZXh0LAoJCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJbWVhc3VyZW1lbnRDb250cm9sLXYzYTBleHQJCQlNZWFzdXJlbWVudENvbnRyb2wtdjNhMGV4dCwKCQkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCgkJCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFewoJCQkJCQktLSBUaGUgY29udGVudCBvZiB0aGUgdjRiMCBub24tY3JpdGljYWwgZXh0ZW5zaW9uIGhhcyBiZWVuIHJlbW92ZWQuIElmIHNlbnQgCgkJCQkJCS0tIHRvIGEgVUUgb2YgQVMgcmVsZWFzZSA0LCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkLiBBIFVFIG9mIEFTIAoJCQkJCQktLSByZWxlYXNlIDUgb253YXJkIHNoYWxsIGNvbXBseSB3aXRoIHRoZSB2NGIwIGFuZCBsYXRlciBleHRlbnNpb25zIGluIHRoaXMgCgkJCQkJCS0tIGJyYW5jaCBvZiB0aGUgbWVzc2FnZS4KCQkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXY1OTBleHQJCU1lYXN1cmVtZW50Q29udHJvbC12NTkwZXh0LUlFcywKCQkJCQkJCXY1YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJCQltZWFzdXJlbWVudENvbnRyb2wtdjViMGV4dAkJTWVhc3VyZW1lbnRDb250cm9sLXY1YjBleHQtSUVzLAoJCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXY3eHlleHQJCU1lYXN1cmVtZW50Q29udHJvbC12N3h5ZXh0LUlFcywKCQkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCQkJCQkJfQkJCQkJCU9QVElPTkFMCgkJCQkJCQl9CQkJCQkJT1BUSU9OQUwKCQkJCQkJfQkJCQkJCU9QVElPTkFMCgkJCQkJfQkJCQkJCU9QVElPTkFMCgkJCQl9CQkJCQkJT1BUSU9OQUwKCQkJfQkJCQkJCU9QVElPTkFMCgkJfQkJCQkJCU9QVElPTkFMCgl9LAoJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgewoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQltZWFzdXJlbWVudENvbnRyb2wtcjQJCQlNZWFzdXJlbWVudENvbnRyb2wtcjQtSUVzLAoJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNQoJCQkJCW1lYXN1cmVtZW50Q29udHJvbC1yNC1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRXsKCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXY1OTBleHQJCU1lYXN1cmVtZW50Q29udHJvbC12NTkwZXh0LUlFcywKCQkJCQkJdjViME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXY1YjBleHQJCU1lYXN1cmVtZW50Q29udHJvbC12NWIwZXh0LUlFcywKCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJCQltZWFzdXJlbWVudENvbnRyb2wtdjd4eWV4dAkJTWVhc3VyZW1lbnRDb250cm9sLXY3eHlleHQtSUVzLAoJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQkJfQlPUFRJT05BTAoJCQkJCQl9CU9QVElPTkFMCgkJCQkJfQlPUFRJT05BTAoJCQkJfQlPUFRJT05BTAoJCQl9LAoJCQlsYXRlci10aGFuLXI0CQkJCQlTRVFVRU5DRSB7CgkJCQktLSBNb3N0IHNpZ25pZmljYW50IHBhcnQgb2YgIlJSQyB0cmFuc2FjdGlvbiBpZGVudGlmaWVyIiAoTVNQKSwKCQkJCS0tICJSUkMgdHJhbnNhY3Rpb24gaWRlbnRpZmllciIgPSBycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLU1TUCAqIDQgKyAKCQkJCS0tIHJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIKCQkJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXItTVNQCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXI2CQkJTWVhc3VyZW1lbnRDb250cm9sLXI2LUlFcywKCQkJCQkJdjZhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXY2YTBleHQJCU1lYXN1cmVtZW50Q29udHJvbC12NmEwZXh0LUlFcywKCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJCQltZWFzdXJlbWVudENvbnRyb2wtdjd4eWV4dAkJTWVhc3VyZW1lbnRDb250cm9sLXY3eHlleHQtSUVzLAoJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQkJfQlPUFRJT05BTAoJCQkJCQl9CU9QVElPTkFMCgkJCQkJfSwKCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KCQkJCX0KCQkJfQoJCX0KCX0KfQoKTWVhc3VyZW1lbnRDb250cm9sLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCS0tIE1lYXN1cmVtZW50IElFcwoJCW1lYXN1cmVtZW50SWRlbnRpdHkJCU1lYXN1cmVtZW50SWRlbnRpdHksCgkJLS0gVEFCVUxBUjogVGhlIG1lYXN1cmVtZW50IHR5cGUgaXMgaW5jbHVkZWQgaW4gTWVhc3VyZW1lbnRDb21tYW5kLgoJCW1lYXN1cmVtZW50Q29tbWFuZAkJCQlNZWFzdXJlbWVudENvbW1hbmQsCgkJbWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQlNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlPUFRJT05BTCwKCQlhZGRpdGlvbmFsTWVhc3VyZW1lbnRMaXN0CQlBZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0CQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZHBjaC1Db21wcmVzc2VkTW9kZVN0YXR1c0luZm8JRFBDSC1Db21wcmVzc2VkTW9kZVN0YXR1c0luZm8JCU9QVElPTkFMCn0KCk1lYXN1cmVtZW50Q29udHJvbC12MzkwZXh0IDo6PSBTRVFVRU5DRSB7CgkJdWUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtdjM5MGV4dAkJVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtdjM5MGV4dAlPUFRJT05BTAp9CgpNZWFzdXJlbWVudENvbnRyb2wtdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgewoJc2ZuLU9mZnNldC1WYWxpZGl0eQkJCQlTRk4tT2Zmc2V0LVZhbGlkaXR5CQlPUFRJT05BTAp9CgpNZWFzdXJlbWVudENvbnRyb2wtcjQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBNZWFzdXJlbWVudCBJRXMKCQltZWFzdXJlbWVudElkZW50aXR5CQlNZWFzdXJlbWVudElkZW50aXR5LAoJCS0tIFRBQlVMQVI6IFRoZSBtZWFzdXJlbWVudCB0eXBlIGlzIGluY2x1ZGVkIGluIG1lYXN1cmVtZW50Q29tbWFuZC4KCQltZWFzdXJlbWVudENvbW1hbmQJCQkJTWVhc3VyZW1lbnRDb21tYW5kLXI0LAoJCW1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJTWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJT1BUSU9OQUwsCgkJYWRkaXRpb25hbE1lYXN1cmVtZW50TGlzdAkJQWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJT1BUSU9OQUwsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWRwY2gtQ29tcHJlc3NlZE1vZGVTdGF0dXNJbmZvCURQQ0gtQ29tcHJlc3NlZE1vZGVTdGF0dXNJbmZvCQlPUFRJT05BTAp9CgpNZWFzdXJlbWVudENvbnRyb2wtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCW1lYXN1cmVtZW50Q29tbWFuZC12NTkwZXh0IAkJCUNIT0lDRSB7CgkJLS0gdGhlIGNob2ljZSDSaW50cmEtZnJlcXVlbmN50yBzaGFsbCBiZSB1c2VkIGZvciB0aGUgY2FzZSBvZiBpbnRyYS1mcmVxdWVuY3kgbWVhc3VyZW1lbnQsCgkJLS0gYXMgd2VsbCBhcyB3aGVuIGludHJhLWZyZXF1ZW5jeSBldmVudHMgYXJlIGNvbmZpZ3VyZWQgZm9yIGludGVyLWZyZXF1ZW5jeSBtZWFzdXJlbWVudAoJCWludHJhLWZyZXF1ZW5jeQkJCQkJCUludHJhLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0LAoJCWludGVyLWZyZXF1ZW5jeQkJCQkJCUludGVyLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0Cgl9CQlPUFRJT05BTCwKCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1CQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS0xYi1yNQlPUFRJT05BTCwKCWludHJhRnJlcUV2ZW50LTFkLXI1CQkJCQlJbnRyYUZyZXFFdmVudC0xZC1yNQkJCQlPUFRJT05BTCwKCS0tIG1vc3Qgc2lnbmlmaWNhbnQgcGFydCBvZiAiUlJDIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIiIChNU1ApLAoJLS0gIlJSQyB0cmFuc2FjdGlvbiBpZGVudGlmaWVyIiA9IHJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXItTVNQLXY1OTBleHQgKiA0ICsgCgktLSBycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCglycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLU1TUC12NTkwZXh0CVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIKfQoKTWVhc3VyZW1lbnRDb250cm9sLXY1YjBleHQtSUVzIDo6PSAJU0VRVUVOQ0UgewoJaW50ZXJSQVRDZWxsSW5mb0luZGljYXRpb24JCQlJbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbgkJCU9QVElPTkFMCn0KCk1lYXN1cmVtZW50Q29udHJvbC1yNi1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIE1lYXN1cmVtZW50IElFcwoJCW1lYXN1cmVtZW50SWRlbnRpdHkJCU1lYXN1cmVtZW50SWRlbnRpdHksCgkJLS0gVEFCVUxBUjogVGhlIG1lYXN1cmVtZW50IHR5cGUgaXMgaW5jbHVkZWQgaW4gbWVhc3VyZW1lbnRDb21tYW5kLgoJCW1lYXN1cmVtZW50Q29tbWFuZAkJCQlNZWFzdXJlbWVudENvbW1hbmQtcjYsCgkJbWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQlNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlPUFRJT05BTCwKCQlhZGRpdGlvbmFsTWVhc3VyZW1lbnRMaXN0CQlBZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0CQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZHBjaC1Db21wcmVzc2VkTW9kZVN0YXR1c0luZm8JRFBDSC1Db21wcmVzc2VkTW9kZVN0YXR1c0luZm8JCU9QVElPTkFMCn0KCk1lYXN1cmVtZW50Q29udHJvbC12NmEwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1CU9QVElPTkFMCn0KCk1lYXN1cmVtZW50Q29udHJvbC12N3h5ZXh0LUlFcyA6Oj0JU0VRVUVOQ0UgewoJdWUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtdjd4eWV4dAkJVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtdjd4eWV4dAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTUVBU1VSRU1FTlQgQ09OVFJPTCBGQUlMVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTWVhc3VyZW1lbnRDb250cm9sRmFpbHVyZSA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQltZWFzdXJlbWVudENvbnRyb2xGYWlsdXJlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQltZWFzdXJlbWVudENvbnRyb2xGYWlsdXJlLXY1OTBleHQJCU1lYXN1cmVtZW50Q29udHJvbEZhaWx1cmUtdjU5MGV4dC1JRXMsCgkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKTWVhc3VyZW1lbnRDb250cm9sRmFpbHVyZS12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gbW9zdCBzaWduaWZpY2FudCBwYXJ0IG9mICJSUkMgdHJhbnNhY3Rpb24gaWRlbnRpZmllciIgKE1TUCksCgktLSAiUlJDIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIiID0gcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllci1NU1AtdjU5MGV4dCAqIDQgKyAKCS0tIHJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIKCS0tIElmIHRoZSBycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLU1TUC12NTkwZXh0IHdhcyBub3QgcmVjZWl2ZWQgaW4gdGhlIE1FQVNVUkVNRU5UIENPTlRST0wgCgktLSBtZXNzYWdlLCB0aGVuIHRoZSBycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLU1TUC12NTkwZXh0IHNoYWxsIGJlIHNldCB0byB6ZXJvCglycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLU1TUC12NTkwZXh0CVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIE1FQVNVUkVNRU5UIFJFUE9SVAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCk1lYXN1cmVtZW50UmVwb3J0IDo6PSBTRVFVRU5DRSB7CgktLSBNZWFzdXJlbWVudCBJRXMKCQltZWFzdXJlbWVudElkZW50aXR5CQlNZWFzdXJlbWVudElkZW50aXR5LAoJCW1lYXN1cmVkUmVzdWx0cwkJCQkJTWVhc3VyZWRSZXN1bHRzCQkJCQkJT1BUSU9OQUwsCgkJbWVhc3VyZWRSZXN1bHRzT25SQUNICQkJTWVhc3VyZWRSZXN1bHRzT25SQUNICQkJCU9QVElPTkFMLAoJCWFkZGl0aW9uYWxNZWFzdXJlZFJlc3VsdHMJCU1lYXN1cmVkUmVzdWx0c0xpc3QJCQkJCU9QVElPTkFMLAoJCWV2ZW50UmVzdWx0cwkJCQkJRXZlbnRSZXN1bHRzCQkJCQkJT1BUSU9OQUwsCgktLSBOb24tY3JpdGljYWwgZXh0ZW5zaW9ucwoJCXYzOTBub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCW1lYXN1cmVtZW50UmVwb3J0LXYzOTBleHQJCU1lYXN1cmVtZW50UmVwb3J0LXYzOTBleHQsCgkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJCW1lYXN1cmVtZW50UmVwb3J0LXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCW1lYXN1cmVtZW50UmVwb3J0LXY0YjBleHQJCU1lYXN1cmVtZW50UmVwb3J0LXY0YjBleHQtSUVzLAoJCQkJCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi1SZWw0IGluZm9ybWF0aW9uCgkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwlTRVFVRU5DRSB7CgkJCQkJCW1lYXN1cmVtZW50UmVwb3J0LXY1OTBleHQJCU1lYXN1cmVtZW50UmVwb3J0LXY1OTBleHQtSUVzLAoJCQkJCQl2NWIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQltZWFzdXJlbWVudFJlcG9ydC12NWIwZXh0CQlNZWFzdXJlbWVudFJlcG9ydC12NWIwZXh0LUlFcywKCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJCQkJbWVhc3VyZW1lbnRSZXBvcnQtdjY5MGV4dAkJTWVhc3VyZW1lbnRSZXBvcnQtdjY5MGV4dC1JRXMsCgkJCQkJCQkJCgkJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJCQltZWFzdXJlbWVudFJlcG9ydC12N3h5ZXh0CQlNZWFzdXJlbWVudFJlcG9ydC12N3h5ZXh0LUlFcywKCQkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJT1BUSU9OQUwKCQkJCQkJCQl9CQlPUFRJT05BTAoJCQkJCQkJfQkJT1BUSU9OQUwKCQkJCQkJfQkJT1BUSU9OQUwKCQkJCQl9CQlPUFRJT05BTAoJCQkJfQkJT1BUSU9OQUwKCQkJfQkJT1BUSU9OQUwKCQl9CQlPUFRJT05BTAp9CgpNZWFzdXJlbWVudFJlcG9ydC12MzkwZXh0IDo6PSBTRVFVRU5DRSB7CgkJbWVhc3VyZWRSZXN1bHRzLXYzOTBleHQJCQlNZWFzdXJlZFJlc3VsdHMtdjM5MGV4dAkJCQlPUFRJT05BTAp9CgpNZWFzdXJlbWVudFJlcG9ydC12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJaW50ZXJGcmVxRXZlbnRSZXN1bHRzLUxDUgkJSW50ZXJGcmVxRXZlbnRSZXN1bHRzLUxDUi1yNC1leHQJCU9QVElPTkFMLAoJLS0gYWRkaXRpb25hbE1lYXN1cmVkUmVzdWx0cy1MQ1Igc2hhbGwgY29udGFpbiBtZWFzdXJlbWVudCByZXN1bHRzIGFuZCBhZGRpdGlvbmFsIG1lYXN1cmVtZW50CgktLSByZXN1bHRzIGxpc3QuCglhZGRpdGlvbmFsTWVhc3VyZWRSZXN1bHRzLUxDUglNZWFzdXJlZFJlc3VsdHNMaXN0LUxDUi1yNC1leHQJCQlPUFRJT05BTCwKCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbi4gSXQgc2hvdWxkIG5vdCBiZSBzZW50IGFuZAoJLS0gaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCglkdW1teQkJCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJCU9QVElPTkFMCn0KCk1lYXN1cmVtZW50UmVwb3J0LXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgltZWFzdXJlZFJlc3VsdHMtdjU5MGV4dAkJCQlNZWFzdXJlZFJlc3VsdHMtdjU5MGV4dAkJCQlPUFRJT05BTAp9CgpNZWFzdXJlbWVudFJlcG9ydC12NWIwZXh0LUlFcyA6Oj0gCVNFUVVFTkNFIHsKCWludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uCQkJSW50ZXJSQVRDZWxsSW5mb0luZGljYXRpb24JCQlPUFRJT05BTAp9CgpNZWFzdXJlbWVudFJlcG9ydC12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJbWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxCQlNZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEJCU9QVElPTkFMCn0KCk1lYXN1cmVtZW50UmVwb3J0LXY3eHlleHQtSUVzIDo6PSBTRVFVRU5DRSB7Cgl2ZWxvY2l0eUVzdGltYXRlCQkJCQlWZWxvY2l0eUVzdGltYXRlCQkJCQlPUFRJT05BTCwKCXVlLUludGVybmFsTWVhc3VyZWRSZXN1bHRzCQkJVUUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMtcjcJCU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBQQUdJTkcgVFlQRSAxCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKUGFnaW5nVHlwZTEgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXBhZ2luZ1JlY29yZExpc3QJCQkJUGFnaW5nUmVjb3JkTGlzdAkJCQkJT1BUSU9OQUwsCgktLSBPdGhlciBJRXMKCQliY2NoLU1vZGlmaWNhdGlvbkluZm8JCQlCQ0NILU1vZGlmaWNhdGlvbkluZm8JCQkJT1BUSU9OQUwsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCXBhZ2luZ1R5cGUxLXIzLWFkZC1leHQJCQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJcGFnaW5nVHlwZTEtdjU5MGV4dAkJCQlQYWdpbmdUeXBlMS12NTkwZXh0LUlFcywKCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQl9CU9QVElPTkFMCgkJfQlPUFRJT05BTAp9CgpQYWdpbmdUeXBlMS12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcGFnaW5nUmVjb3JkMkxpc3QJCQkJUGFnaW5nUmVjb3JkMkxpc3QtcjUJCQkJT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFBBR0lORyBUWVBFIDIKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpQYWdpbmdUeXBlMiA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQlwYWdpbmdDYXVzZQkJCQkJCVBhZ2luZ0NhdXNlLAoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCWNuLURvbWFpbklkZW50aXR5CQkJCUNOLURvbWFpbklkZW50aXR5LAoJCXBhZ2luZ1JlY29yZFR5cGVJRAkJCQlQYWdpbmdSZWNvcmRUeXBlSUQsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCXBhZ2luZ1R5cGUyLXIzLWFkZC1leHQJCQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJfQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUEhZU0lDQUwgQ0hBTk5FTCBSRUNPTkZJR1VSQVRJT04KLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24gOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yMwoJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXIzLUlFcywKCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjNhMGV4dAkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXYzYTBleHQsCgkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yMy1hZGQtZXh0CQkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJCVNFUVVFTkNFIHsKCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjRiMGV4dAoJCQkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjRiMGV4dC1JRXMsCgkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCQlTRVFVRU5DRSB7CgkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NTkwZXh0CgkJCQkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dC1JRXMsCgkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0CQkKCQkJCQkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dC1JRXMsCgkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJCVNFUVVFTkNFIHt9IE9QVElPTkFMCgkJCQkJCX0JT1BUSU9OQUwKCQkJCQl9CU9QVElPTkFMCgkJCQl9CU9QVElPTkFMCgkJCX0JT1BUSU9OQUwKCQl9CU9QVElPTkFMCgl9LAoJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgewoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI0CgkJCQkJCQkJCQkJCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNC1JRXMsCgkJCQl2NGQwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CgkJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI0LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dAoJCQkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dC1JRXMsCgkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0CQkKCQkJCQkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dC1JRXMsCgkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQkJfQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0JT1BUSU9OQUwKCQkJfSwKCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNQoJCQkJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI1LUlFcywKCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNgoJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNS1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0CQkKCQkJCQkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dC1JRXMsCgkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0sCgkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKCQkJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjYKCQkJCQkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjYtSUVzLAoJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNwoJCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjYtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCX0sCgkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQkJCXI3CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjcKCQkJCQkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjctSUVzLAoJCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTgKCQkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNy1hZGQtZXh0CUJJVCBTVFJJTkcJT1BUSU9OQUwsCgkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQkJfSwKCQkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQp9CgpQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCgkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAoJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCgkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJLS0gTm90ZTogdGhlIHJlZmVyZW5jZSB0byBDUENIIGluIHRoZSBlbGVtZW50IG5hbWUgYmVsb3cgaXMgaW5jb3JyZWN0LiBUaGUgbmFtZSBpcyBub3QKCQktLSBjaGFuZ2VkIHRvIGtlZXAgaXQgYWxpZ25lZCB3aXRoIFI5OS4KCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnRXaXRoQ1BDSC1TZXRJRAkJT1BUSU9OQUwsCgkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9LAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCQlPUFRJT05BTAp9CgpQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgewoJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91cgoJLS0gaXMgdW5zcGVjaWZpZWQKCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTAp9CgpQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJZHVtbXkJCQkJCQkJCVNTRFQtVUwJCQkJCQkJCU9QVElPTkFMLAoJCS0tIFRoZSBvcmRlciBvZiB0aGUgUkxzIGluIElFIGNlbGwtaWQtUGVyUkwtTGlzdCBpcyB0aGUgc2FtZSBhcwoJCS0tIGluIElFIERMLUluZm9ybWF0aW9uUGVyUkwtTGlzdCBpbmNsdWRlZCBpbiB0aGlzIG1lc3NhZ2UKCQljZWxsLWlkLVBlclJMLUxpc3QJCQkJCUNlbGxJZGVudGl0eS1QZXJSTC1MaXN0CQkJCU9QVElPTkFMCn0KClBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlkbC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CURMLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJCU9QVElPTkFMCn0KClBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCgkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAoJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCgkJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAoJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAoJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJCS0tIE5vdGU6IHRoZSByZWZlcmVuY2UgdG8gQ1BDSCBpbiB0aGUgZWxlbWVudCBuYW1lIGJlbG93IGlzIGluY29ycmVjdC4gVGhlIG5hbWUgaXMgbm90CgkJLS0gY2hhbmdlZCB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCBSOTkuCgkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50V2l0aENQQ0gtU2V0SUQtcjQJT1BUSU9OQUwsCgkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9LAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjQJCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjQJCQlPUFRJT05BTAp9CgpQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjUtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAoJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCgktLSBVVFJBTiBtb2JpbGl0eSBJRXMKCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJCS0tIE5vdGU6IHRoZSByZWZlcmVuY2UgdG8gQ1BDSCBpbiB0aGUgZWxlbWVudCBuYW1lIGJlbG93IGlzIGluY29ycmVjdC4gVGhlIG5hbWUgaXMgbm90CgkJLS0gY2hhbmdlZCB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCBSOTkuCgkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50V2l0aENQQ0gtU2V0SUQtcjUJT1BUSU9OQUwsCgkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9LAoJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjUJCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjUJCQlPUFRJT05BTAp9CgpQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjYtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQlkZWxheVJlc3RyaWN0aW9uRmxhZwkJCURlbGF5UmVzdHJpY3Rpb25GbGFnCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwKCQktLSBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAoJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAoJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvLXI2CQkJCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNgkJCQkJCU9QVElPTkFMLAoJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMLAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjYJCQlPUFRJT05BTCwKCS0tIE1CTVMgSUVzCgkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCn0KClBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBFcXVpcG1lbnQgSUVzCgkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZyAJCQkJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJcHJpbWFyeS1wbG1uLUlkZW50aXR5CQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQktLSBUaGUgSUUgaGFycS1QcmVhbWJsZS1Nb2RlIHNob3VsZCBub3QgYmUgdXNlZCBpbiB0aGUgcjMgYW5kIHI0IHZlcnNpb25zIG9mIHRoZSBtZXNzYWdlCgkJLS0gSWYgaW5jbHVkZWQgaW4gdGhlIHIzIG9yIHI0IHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UsIHRoZSBVRSBzaG91bGQgaWdub3JlIHRoZSBJRQoJCWhhcnEtUHJlYW1ibGUtTW9kZQkJCQlIQVJRLVByZWFtYmxlLU1vZGUJCQkJCU9QVElPTkFMLAoJCWJlYWNvblBMRXN0CQkJCQkJQkVBQ09OLVBMLUVzdAkJCQkJCU9QVElPTkFMLAoJCXBvc3RWZXJpZmljYXRpb25QZXJpb2QJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTCwKCQlkaHMtc3luYwkJCQkJCURIUy1TeW5jCQkJCQkJCU9QVElPTkFMLAoJCXRpbWluZ01haW50YWluZWRTeW5jaEluZAkJVGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQkJT1BUSU9OQUwsCgktLSBNQk1TIElFcwoJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAp9CgpQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjctSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQlkZWxheVJlc3RyaWN0aW9uRmxhZwkJCURlbGF5UmVzdHJpY3Rpb25GbGFnCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwKCQktLSBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAoJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAoJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvLXI2CQkJCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNwkJCQkJCU9QVElPTkFMLAoJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNwkJCU9QVElPTkFMLAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjcJCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjcJCQlPUFRJT05BTCwKCS0tIE1CTVMgSUVzCgkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCn0KCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUEhZU0lDQUwgQ0hBTk5FTCBSRUNPTkZJR1VSQVRJT04gQ09NUExFVEUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZSA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQl1bC1JbnRlZ1Byb3RBY3RpdmF0aW9uSW5mbwkJSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvCQkJT1BUSU9OQUwsCgkJLS0gVEFCVUxBUjogVUwtVGltaW5nQWR2YW5jZSBpcyBhcHBsaWNhYmxlIGZvciBUREQgbW9kZSBvbmx5LgoJCXVsLVRpbWluZ0FkdmFuY2UJCQkJVUwtVGltaW5nQWR2YW5jZQkJCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJY291bnQtQy1BY3RpdmF0aW9uVGltZQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAoJCS0tIGl0IHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRoZSByZWNlaXZlci4KCQlkdW1teQkJCQkJCQlSQi1BY3RpdmF0aW9uVGltZUluZm9MaXN0CQkJT1BUSU9OQUwsCgkJdWwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JVUwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUtdjd4eWV4dAoJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS12N3h5ZXh0LUlFcywKCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQl9CU9QVElPTkFMCgkJfQlPUFRJT05BTAp9CgpQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS12N3h5ZXh0LUlFcyA6Oj0JU0VRVUVOQ0UgewoJCWV4dC11bC1UaW1pbmdBZHZhbmNlCQkJRVhULVVMLVRpbWluZ0FkdmFuY2UJCQkJT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFBIWVNJQ0FMIENIQU5ORUwgUkVDT05GSUdVUkFUSU9OIEZBSUxVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25GYWlsdXJlIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQkJT1BUSU9OQUwsCgkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyciwKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uRmFpbHVyZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJfQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUEhZU0lDQUwgU0hBUkVEIENIQU5ORUwgQUxMT0NBVElPTiAoVEREIG9ubHkpCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbiA6Oj0gQ0hPSUNFIHsKCXIzCQkJCQkJCQlTRVFVRU5DRSB7CgkJcGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi1yMwoJCQkJCQkJCQkJUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi1yMy1JRXMsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCXBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCgkJfQlPUFRJT05BTAoJfSwKCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKCQlkc2NoLVJOVEkJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKCQkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCXBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tcjQKCQkJCQkJCQkJCQkJUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi1yNC1JRXMsCgkJCQl2NGQwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKCQkJCQlwaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLXI0LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJcGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi12NjkwZXh0CgkJCQkJCQkJCQkJCQkJUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi12NjkwZXh0LUlFcywKCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJcGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi12N3h5ZXh0CgkJCQkJCQkJCQkJCQkJUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi12N3h5ZXh0LUlFcywKCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQl9CQlPUFRJT05BTAoJCQkJCX0JCU9QVElPTkFMCgkJCQl9CQlPUFRJT05BTAoJCQl9LAoJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KCQl9Cgl9Cn0KClBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCWRzY2gtUk5USQkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQl1bC1UaW1pbmdBZHZhbmNlCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sCQkJCU9QVElPTkFMLAoJCXB1c2NoLUNhcGFjaXR5QWxsb2NhdGlvbkluZm8JUFVTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mbwkJT1BUSU9OQUwsCgkJcGRzY2gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mbwlQRFNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvCQlPUFRJT05BTCwKCQktLSBUQUJVTEFSOiBJZiBjb25maXJtUmVxdWVzdCBpcyBub3QgcHJlc2VudCwgdGhlIGRlZmF1bHQgdmFsdWUgIk5vIENvbmZpcm0iCgkJLS0gc2hhbGwgYmUgdXNlZCBhcyBzcGVjaWZpZWQgaW4gMTAuMi4yNS4JCQoJCWNvbmZpcm1SZXF1ZXN0CQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCQljb25maXJtUERTQ0gsIGNvbmZpcm1QVVNDSCB9CU9QVElPTkFMLAoJCXRyYWZmaWNWb2x1bWVSZXBvcnRSZXF1ZXN0CQlJTlRFR0VSICgwLi4yNTUpCQkJCQlPUFRJT05BTCwJCgkJaXNjcFRpbWVzbG90TGlzdAkJCQkJVGltZXNsb3RMaXN0CQkJCQkJT1BUSU9OQUwsCgkJcmVxdWVzdFBDQ1BDSFJTQ1AJCQkJCUJPT0xFQU4KfQoKUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi1yNC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFRBQlVMQVI6IEludGVncml0eSBwcm90ZWN0aW9uIHNoYWxsIG5vdCBiZSBwZXJmb3JtZWQgb24gdGhpcyBtZXNzYWdlLgoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQl1bC1UaW1pbmdBZHZhbmNlCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI0CQkJT1BUSU9OQUwsCgkJcHVzY2gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mbwlQVVNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvLXI0CQlPUFRJT05BTCwKCQlwZHNjaC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvCVBEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjQJCU9QVElPTkFMLAoJCS0tIFRBQlVMQVI6IElmIGNvbmZpcm1SZXF1ZXN0IGlzIG5vdCBwcmVzZW50LCB0aGUgZGVmYXVsdCB2YWx1ZSAiTm8gQ29uZmlybSIKCQktLSBzaGFsbCBiZSB1c2VkIGFzIHNwZWNpZmllZCBpbiAxMC4yLjI1LgkJCgkJY29uZmlybVJlcXVlc3QJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJCWNvbmZpcm1QRFNDSCwgY29uZmlybVBVU0NIIH0JT1BUSU9OQUwsCgkJdHJhZmZpY1ZvbHVtZVJlcG9ydFJlcXVlc3QJCUlOVEVHRVIgKDAuLjI1NSkJCQkJCU9QVElPTkFMLAoJCWlzY3BUaW1lc2xvdExpc3QJCQkJVGltZXNsb3RMaXN0LXI0CQkJCQkJT1BUSU9OQUwsCgkJcmVxdWVzdFBDQ1BDSFJTQ1AJCQkJQk9PTEVBTgp9CgpQaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBQaHlzaWNhbCBDaGFubmVsIElFcwoJCWJlYWNvblBMRXN0CQkJCQkJQkVBQ09OLVBMLUVzdAkJCQkJCU9QVElPTkFMCn0KClBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQl1bC1UaW1pbmdBZHZhbmNlCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI3CQkJT1BUSU9OQUwsCgkJcHVzY2gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mbwlQVVNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvLXI3CQlPUFRJT05BTCwKCQlwZHNjaC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvCVBEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjcJCU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBQVVNDSCBDQVBBQ0lUWSBSRVFVRVNUIChUREQgb25seSkKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpQVVNDSENhcGFjaXR5UmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJZHNjaC1STlRJCQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAoJLS0gTWVhc3VyZW1lbnQgSUVzCgkJdHJhZmZpY1ZvbHVtZQkJCQkJVHJhZmZpY1ZvbHVtZU1lYXN1cmVkUmVzdWx0c0xpc3QJT1BUSU9OQUwsCgkJdGltZXNsb3RMaXN0V2l0aElTQ1AJCQlUaW1lc2xvdExpc3RXaXRoSVNDUAkJCQlPUFRJT05BTCwKCQlwcmltYXJ5Q0NQQ0gtUlNDUAkJCQlQcmltYXJ5Q0NQQ0gtUlNDUAkJCQkJT1BUSU9OQUwsCgkJYWxsb2NhdGlvbkNvbmZpcm1hdGlvbgkJCUNIT0lDRSB7CgkJCXBkc2NoQ29uZmlybWF0aW9uCQkJCVBEU0NILUlkZW50aXR5LAoJCQlwdXNjaENvbmZpcm1hdGlvbgkJCQlQVVNDSC1JZGVudGl0eQoJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAoJCXByb3RvY29sRXJyb3JJbmRpY2F0b3IJCQlQcm90b2NvbEVycm9ySW5kaWNhdG9yV2l0aE1vcmVJbmZvLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQlwdXNjaENhcGFjaXR5UmVxdWVzdC1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJcHVzY2hDYXBhY2l0eVJlcXVlc3QtdjU5MGV4dAlQVVNDSENhcGFjaXR5UmVxdWVzdC12NTkwZXh0LAoJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKCQkJfQkJT1BUSU9OQUwKCQl9CU9QVElPTkFMCn0KClBVU0NIQ2FwYWNpdHlSZXF1ZXN0LXY1OTBleHQgOjo9IFNFUVVFTkNFIHsKCXByaW1hcnlDQ1BDSC1SU0NQLWRlbHRhCQkJCURlbHRhUlNDUAkJCU9QVElPTkFMCn0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJBRElPIEJFQVJFUiBSRUNPTkZJR1VSQVRJT04KLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbiA6Oj0gQ0hPSUNFIHsKCXIzCQkJCQkJCQlTRVFVRU5DRSB7CgkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjMJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjMtSUVzLAoJCS0tIFByZWZpeCAidjNhbyIgaXMgdXNlZCAoaW4gb25lIGluc3RhbmNlKSB0byBrZWVwIGFsaWdubWVudCB3aXRoIFI5OQoJCXYzYW9Ob25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjNhMGV4dAlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12M2EwZXh0LAoJCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjRiMGV4dAkKCQkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY0YjBleHQtSUVzLAoJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1OTBleHQJCgkJCQkJCQkJCQkJCQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dC1JRXMsCgkJCQkJCXY1ZDBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjVkMGV4dAoJCQkJCQkJCQkJCQkJCQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NWQwZXh0LUlFcywKCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NjkwZXh0CgkJCQkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY2OTBleHQtSUVzLAoJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9IE9QVElPTkFMCgkJCQkJCQl9CU9QVElPTkFMCgkJCQkJCX0JT1BUSU9OQUwKCQkJCQl9CU9QVElPTkFMCgkJCQl9CU9QVElPTkFMCgkJCX0JT1BUSU9OQUwKCQl9CU9QVElPTkFMCgl9LAoJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgewoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNAlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNC1JRXMsCgkJCQl2NGQwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CgkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dAkKCQkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1OTBleHQtSUVzLAoJCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1ZDBleHQKCQkJCQkJCQkJCQkJCQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjVkMGV4dC1JRXMsCgkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dAoJCQkJCQkJCQkJCQkJCQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcywKCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQkJCX0JT1BUSU9OQUwKCQkJCQkJfQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0JT1BUSU9OQUwKCQkJfSwKCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQlyNQkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjUtSUVzLAoJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC02CgkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjUtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJdjVkME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCQlTRVFVRU5DRSB7CgkJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1ZDBleHQJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjVkMGV4dC1JRXMsCgkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NjkwZXh0CgkJCQkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY2OTBleHQtSUVzLAoJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQl9CU9QVElPTkFMCgkJCQkJfQlPUFRJT05BTAoJCQkJfSwKCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQkJCXI2CQkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNgkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjYtSUVzLAoJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNwoJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNi1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCX0sCgkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQkJCXI3CQkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjcJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI3LUlFcywKCQkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC04IAkJCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjctYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCQkJCX0sCgkJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KfQoKUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCgkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAoJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCgkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAoJCS0tIE5PVEU6IElFIHJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0IHNob3VsZCBiZSBvcHRpb25hbCBpbiBsYXRlciB2ZXJzaW9ucwoJCS0tIG9mIHRoaXMgbWVzc2FnZQoJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdCwKCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCQlPUFRJT05BTCwKCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcwoJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCgkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCgkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCgkJZHVtbXkJCQkJCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCgkJCQlkdW1teTIJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QJT1BUSU9OQUwKCQkJfSwKCQkJdGRkCQkJCQkJCQlOVUxMCgkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCgkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mbzJMaXN0CQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQJCQkJT1BUSU9OQUwsCgkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CgkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJTlVMTAoJCX0sCgkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKCQktLSBOT1RFOiBJRSBkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QgaXMgb3B0aW9uYWwgaW4gbGF0ZXIgdmVyc2lvbnMKCQktLSBvZiB0aGlzIG1lc3NhZ2UKCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdAp9CgpSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12M2EwZXh0IDo6PSBTRVFVRU5DRSB7CgktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyCgktLSBpcyB1bnNwZWNpZmllZAoJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMCn0KClJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCQlTU0RULVVMCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgb3JkZXIgb2YgdGhlIFJMcyBpbiBJRSBjZWxsLWlkLVBlclJMLUxpc3QgaXMgdGhlIHNhbWUgYXMKCQktLSBpbiBJRSBETC1JbmZvcm1hdGlvblBlclJMLUxpc3QgaW5jbHVkZWQgaW4gdGhpcyBtZXNzYWdlCgkJY2VsbC1pZC1QZXJSTC1MaXN0CQkJCQlDZWxsSWRlbnRpdHktUGVyUkwtTGlzdAkJCQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlkbC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CURMLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJCU9QVElPTkFMCn0KClJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1ZDBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLVJhZGlvIEJlYXJlciBJRXMKCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMCn0KClJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCgkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQKCQktLSB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCgkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAoJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCgkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAoJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNAkJT1BUSU9OQUwsCgkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCgktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCS0tICdkdW1teScsICdkdW1teTEnIGFuZCAnZHVtbXkyJyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAoJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCUNIT0lDRSB7CgkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAoJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJTlVMTAoJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAoJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0CQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjQJCQlPUFRJT05BTCwKCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKCQkJfSwKCQkJdGRkCQkJCQkJCQlOVUxMCgkJfSwKCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0CQkJCU9QVElPTkFMLAoJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI0IAkJT1BUSU9OQUwKfQoKUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjUtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZCAKCQktLSB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCgkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCgkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgoJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgewoJCQktLSBSYWRpbyBiZWFyZXIgSUVzCgkJCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAoJCQkJcmItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI1CQlPUFRJT05BTCwKCQkJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNQkJT1BUSU9OQUwsCgkJCQlyYi1QRENQQ29udGV4dFJlbG9jYXRpb25MaXN0CVJCLVBEQ1BDb250ZXh0UmVsb2NhdGlvbkxpc3QJCU9QVElPTkFMLAoJCQktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgkJCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCQkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlCgkJCQktLSBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCUNIT0lDRSB7CgkJCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKCQkJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCgkJCQkJfSwKCQkJCQl0ZGQJCQkJCQkJCU5VTEwKCQkJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAoJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQkJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAoJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMCgkJCX0sCgkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgewoJCQktLSBBbGwgSUVzIHRoYXQgaW5jbHVkZSBhbiBGREQvVEREIGNob2ljZSBhcmUgc3BsaXQgaW4gdHdvIElFcyBmb3IgdGhpcyBtZXNzYWdlLAoJCQktLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCgkJCS0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CgkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCgkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgewoJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eS1yNQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI1CQkJT1BUSU9OQUwsCgkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CgkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJTlVMTAoJCX0sCgkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCgkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNQkJCQlPUFRJT05BTCwKCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNSAJCU9QVElPTkFMCn0KClJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI2LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCgkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZwkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCgkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBTcGVjaWZpY2F0aW9uIG1vZGUgaW5mb3JtYXRpb24KCQlzcGVjaWZpY2F0aW9uTW9kZQkJCQlDSE9JQ0UgewoJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKCQkJLS0gUmFkaW8gYmVhcmVyIElFcwoJCQkJcmFiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKCQkJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNgkJT1BUSU9OQUwsCgkJCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYJCU9QVElPTkFMLAoJCQkJcmItUERDUENvbnRleHRSZWxvY2F0aW9uTGlzdAlSQi1QRENQQ29udGV4dFJlbG9jYXRpb25MaXN0CQlPUFRJT05BTCwKCQkJCXBkY3AtUk9IQy1UYXJnZXRNb2RlCQkJUERDUC1ST0hDLVRhcmdldE1vZGUJCQkJT1BUSU9OQUwsCgkJCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcwoJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQkJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAoJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAoJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQkJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAoJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMCgkJCX0sCgkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgewoJCQktLSBBbGwgSUVzIHRoYXQgaW5jbHVkZSBhbiBGREQvVEREIGNob2ljZSBhcmUgc3BsaXQgaW4gdHdvIElFcyBmb3IgdGhpcyBtZXNzYWdlLAoJCQktLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCgkJCS0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CgkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCgkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgewoJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eS1yNgoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjYJCQkJCQlPUFRJT05BTCwKCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCgkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYJCQlPUFRJT05BTCwKCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAoJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI2CQkJT1BUSU9OQUwsCgktLSBNQk1TIElFcwoJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBFcXVpcG1lbnQgSUVzCgkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZwkJCQlPUFRJT05BTCwKCS0tIENvcmUgbmV0d29yayBJRXMKCQlwcmltYXJ5LXBsbW4tSWRlbnRpdHkJCQlQTE1OLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCS0tIFRoZSBJRSBoYXJxLVByZWFtYmxlLU1vZGUgc2hvdWxkIG5vdCBiZSB1c2VkIGluIHRoZSByMyBhbmQgcjQgdmVyc2lvbnMgb2YgdGhlIG1lc3NhZ2UKCQktLSBJZiBpbmNsdWRlZCBpbiB0aGUgcjMgb3IgcjQgdmVyc2lvbiBvZiB0aGUgbWVzc2FnZSwgdGhlIFVFIHNob3VsZCBpZ25vcmUgdGhlIElFCgkJaGFycS1QcmVhbWJsZS1Nb2RlCQkJCUhBUlEtUHJlYW1ibGUtTW9kZQkJCQkJT1BUSU9OQUwsCgkJYmVhY29uUExFc3QJCQkJCQlCRUFDT04tUEwtRXN0CQkJCQkJT1BUSU9OQUwsCgkJcG9zdFZlcmlmaWNhdGlvblBlcmlvZAkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMLAoJCWRocy1zeW5jCQkJCQkJREhTLVN5bmMJCQkJCQkJT1BUSU9OQUwsCgkJdGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQlUaW1pbmdNYWludGFpbmVkU3luY2hJbmQJCQlPUFRJT05BTCwKCS0tIE1CTVMgSUVzCgkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCn0KClJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI3LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCgkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZwkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCgkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBTcGVjaWZpY2F0aW9uIG1vZGUgaW5mb3JtYXRpb24KCQlzcGVjaWZpY2F0aW9uTW9kZQkJCQlDSE9JQ0UgewoJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKCQkJLS0gUmFkaW8gYmVhcmVyIElFcwoJCQkJcmFiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKCQkJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNgkJT1BUSU9OQUwsCgkJCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYJCU9QVElPTkFMLAoJCQkJcmItUERDUENvbnRleHRSZWxvY2F0aW9uTGlzdAlSQi1QRENQQ29udGV4dFJlbG9jYXRpb25MaXN0CQlPUFRJT05BTCwKCQkJCXBkY3AtUk9IQy1UYXJnZXRNb2RlCQkJUERDUC1ST0hDLVRhcmdldE1vZGUJCQkJT1BUSU9OQUwsCgkJCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcwoJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQkJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAoJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAoJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQkJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAoJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMCgkJCX0sCgkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgewoJCQktLSBBbGwgSUVzIHRoYXQgaW5jbHVkZSBhbiBGREQvVEREIGNob2ljZSBhcmUgc3BsaXQgaW4gdHdvIElFcyBmb3IgdGhpcyBtZXNzYWdlLAoJCQktLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCgkJCS0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CgkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCgkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgewoJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eS1yNgoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjcJCQkJCQlPUFRJT05BTCwKCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCgkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjcJCQlPUFRJT05BTCwKCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI3CQkJCU9QVElPTkFMLAoJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI3CQkJT1BUSU9OQUwsCgktLSBNQk1TIElFcwoJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUkFESU8gQkVBUkVSIFJFQ09ORklHVVJBVElPTiBDT01QTEVURQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uQ29tcGxldGUgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJdWwtSW50ZWdQcm90QWN0aXZhdGlvbkluZm8JCUludGVncml0eVByb3RBY3RpdmF0aW9uSW5mbwkJCU9QVElPTkFMLAoJCS0tIFRBQlVMQVI6IFVMLVRpbWluZ0FkdmFuY2UgaXMgYXBwbGljYWJsZSBmb3IgVEREIG1vZGUgb25seS4KCQl1bC1UaW1pbmdBZHZhbmNlCQkJCVVMLVRpbWluZ0FkdmFuY2UJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCWNvdW50LUMtQWN0aXZhdGlvblRpbWUJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKCQktLSBpdCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIuCgkJZHVtbXkJCQkJCQkJUkItQWN0aXZhdGlvblRpbWVJbmZvTGlzdAkJCU9QVElPTkFMLAoJCXVsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCVVMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS12N3h5ZXh0CgkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uQ29tcGxldGUtdjd4eWV4dC1JRXMsCgkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAoJCQl9CU9QVElPTkFMCgkJfQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkNvbXBsZXRlLXY3eHlleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgkJZXh0LXVsLVRpbWluZ0FkdmFuY2UJCQlFWFQtVUwtVGltaW5nQWR2YW5jZQkJCQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUkFESU8gQkVBUkVSIFJFQ09ORklHVVJBVElPTiBGQUlMVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb25GYWlsdXJlIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJcG90ZW50aWFsbHlTdWNjZXNmdWxCZWFyZXJMaXN0CVJCLUlkZW50aXR5TGlzdAkJCQkJCU9QVElPTkFMLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCgkJfQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUkFESU8gQkVBUkVSIFJFTEVBU0UKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSYWRpb0JlYXJlclJlbGVhc2UgOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCXJhZGlvQmVhcmVyUmVsZWFzZS1yMwkJCVJhZGlvQmVhcmVyUmVsZWFzZS1yMy1JRXMsCgkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQlyYWRpb0JlYXJlclJlbGVhc2UtdjNhMGV4dAkJUmFkaW9CZWFyZXJSZWxlYXNlLXYzYTBleHQsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCXJhZGlvQmVhcmVyUmVsZWFzZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtdjRiMGV4dAkJUmFkaW9CZWFyZXJSZWxlYXNlLXY0YjBleHQtSUVzLAoJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXY1OTBleHQJCVJhZGlvQmVhcmVyUmVsZWFzZS12NTkwZXh0LUlFcywKCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXY2OTBleHQJCVJhZGlvQmVhcmVyUmVsZWFzZS12NjkwZXh0LUlFcywKCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9IE9QVElPTkFMCgkJCQkJCX0JCU9QVElPTkFMCgkJCQkJfQlPUFRJT05BTAoJCQkJfQlPUFRJT05BTAoJCQl9CU9QVElPTkFMCgkJfQlPUFRJT05BTAoJfSwKCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXI0CQkJUmFkaW9CZWFyZXJSZWxlYXNlLXI0LUlFcywKCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtdjU5MGV4dAkJUmFkaW9CZWFyZXJSZWxlYXNlLXY1OTBleHQtSUVzLAoJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtdjY5MGV4dAkJUmFkaW9CZWFyZXJSZWxlYXNlLXY2OTBleHQtSUVzLAoJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCQkJCX0JT1BUSU9OQUwKCQkJCQl9CU9QVElPTkFMCgkJCQl9CU9QVElPTkFMCgkJCX0sCgkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQkJcjUJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtcjUJCQlSYWRpb0JlYXJlclJlbGVhc2UtcjUtSUVzLAoJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC02CgkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXI1LWFkZC1leHQJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtdjY5MGV4dAkJUmFkaW9CZWFyZXJSZWxlYXNlLXY2OTBleHQtSUVzLAoJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQl9CU9QVElPTkFMCgkJCQl9LAoJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXI2CQkJUmFkaW9CZWFyZXJSZWxlYXNlLXI2LUlFcywKCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTcKCQkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXI2LWFkZC1leHQJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCX0sCgkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQkJCXI3CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtcjcJCQlSYWRpb0JlYXJlclJlbGVhc2UtcjctSUVzLAoJCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTgKCQkJCQkJCXJhZGlvQmVhcmVyUmVsZWFzZS1yNy1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCQkJCX0sCgkJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KfQoKUmFkaW9CZWFyZXJSZWxlYXNlLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAoJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKCQlzaWduYWxsaW5nQ29ubmVjdGlvblJlbEluZGljYXRpb24JQ04tRG9tYWluSWRlbnRpdHkJCSAgICAgCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAoJCXJiLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QsCgkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCgkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAoJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCgkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQlkdW1teQkJCQkJCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAoJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvMkxpc3QJCU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudAkJCQlPUFRJT05BTCwKCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKCQkJfSwKCQkJdGRkCQkJCQkJCU5VTEwKCQl9LAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclJlbGVhc2UtdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgewoJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91cgoJLS0gaXMgdW5zcGVjaWZpZWQKCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclJlbGVhc2UtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJZHVtbXkJCQkJCQkJCVNTRFQtVUwJCQkJCQkJCU9QVElPTkFMLAoJCS0tIFRoZSBvcmRlciBvZiB0aGUgUkxzIGluIElFIGNlbGwtaWQtUGVyUkwtTGlzdCBpcyB0aGUgc2FtZSBhcwoJCS0tICBpbiBJRSBETC1JbmZvcm1hdGlvblBlclJMLUxpc3QgaW5jbHVkZWQgaW4gdGhpcyBtZXNzYWdlCgkJY2VsbC1pZC1QZXJSTC1MaXN0CQkJCQlDZWxsSWRlbnRpdHktUGVyUkwtTGlzdAkJCQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclJlbGVhc2UtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZGwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAlETC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclJlbGVhc2UtcjQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAoJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCgkJc2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxJbmRpY2F0aW9uCUNOLURvbWFpbklkZW50aXR5CQkJCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAoJCXJiLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QsCgkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCgkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAoJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCgkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQlkdW1teQkJCQkJCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNAkJT1BUSU9OQUwsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI0CQkJT1BUSU9OQUwsCgkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CgkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQlOVUxMCgkJfSwKCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0CQkJCU9QVElPTkFMLAoJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI0CQkJT1BUSU9OQUwKfQoKUmFkaW9CZWFyZXJSZWxlYXNlLXI1LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCgkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAoJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCgkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCgkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAoJCXNpZ25hbGxpbmdDb25uZWN0aW9uUmVsSW5kaWNhdGlvbglDTi1Eb21haW5JZGVudGl0eQkJICAgICAJT1BUSU9OQUwsCgktLSBVVFJBTiBtb2JpbGl0eSBJRXMKCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCXJhYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkFCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQkJT1BUSU9OQUwsCgkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdCwKCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjUJCU9QVElPTkFMLAoJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMLAoJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCgkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQlkdW1teQkJCQkJCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAoJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjUJCQlPUFRJT05BTCwKCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKCQkJfSwKCQkJdGRkCQkJCQkJCU5VTEwKCQl9LAoJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjUJCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjUJCQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclJlbGVhc2UtdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIENvcmUgbmV0d29yayBJRXMKCQlwcmltYXJ5LXBsbW4tSWRlbnRpdHkJCQlQTE1OLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCS0tIFRoZSBJRSBoYXJxLVByZWFtYmxlLU1vZGUgc2hvdWxkIG5vdCBiZSB1c2VkIGluIHRoZSByMyBhbmQgcjQgdmVyc2lvbnMgb2YgdGhlIG1lc3NhZ2UKCQktLSBJZiBpbmNsdWRlZCBpbiB0aGUgcjMgb3IgcjQgdmVyc2lvbiBvZiB0aGUgbWVzc2FnZSwgdGhlIFVFIHNob3VsZCBpZ25vcmUgdGhlIElFCgkJaGFycS1QcmVhbWJsZS1Nb2RlCQkJCUhBUlEtUHJlYW1ibGUtTW9kZQkJCQkJT1BUSU9OQUwsCgkJYmVhY29uUExFc3QJCQkJCQlCRUFDT04tUEwtRXN0CQkJCQkJT1BUSU9OQUwsCgkJcG9zdFZlcmlmaWNhdGlvblBlcmlvZAkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMLAoJCWRocy1zeW5jCQkJCQkJREhTLVN5bmMJCQkJCQkJT1BUSU9OQUwsCgkJdGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQlUaW1pbmdNYWludGFpbmVkU3luY2hJbmQJCQlPUFRJT05BTCwKCS0tIE1CTVMgSUVzCgkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMLAoJCW1ibXMtUkItTGlzdFJlbGVhc2VkVG9DaGFuZ2VUcmFuc2Zlck1vZGUKCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclJlbGVhc2UtcjYtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCgkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKCQlzaWduYWxsaW5nQ29ubmVjdGlvblJlbEluZGljYXRpb24JQ04tRG9tYWluSWRlbnRpdHkJCQkJT1BUSU9OQUwsCgktLSBVVFJBTiBtb2JpbGl0eSBJRXMKCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCXJhYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkFCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQkJT1BUSU9OQUwsCgkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdCwKCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjYJCU9QVElPTkFMLAoJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNgkJT1BUSU9OQUwsCgkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCgktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAoJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAoJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNgkJCQkJCU9QVElPTkFMLAoJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMLAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjYJCQlPUFRJT05BTCwKCS0tIE1CTVMgSUVzCgkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMLAoJCW1ibXMtUkItTGlzdFJlbGVhc2VkVG9DaGFuZ2VUcmFuc2Zlck1vZGUKCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclJlbGVhc2UtcjctSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCgkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKCQlzaWduYWxsaW5nQ29ubmVjdGlvblJlbEluZGljYXRpb24JQ04tRG9tYWluSWRlbnRpdHkJCQkJT1BUSU9OQUwsCgktLSBVVFJBTiBtb2JpbGl0eSBJRXMKCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCXJhYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkFCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQkJT1BUSU9OQUwsCgkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdCwKCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjYJCU9QVElPTkFMLAoJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNgkJT1BUSU9OQUwsCgkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCgktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAoJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAoJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNwkJCQkJCU9QVElPTkFMLAoJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNwkJCU9QVElPTkFMLAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjcJCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjcJCQlPUFRJT05BTCwKCS0tIE1CTVMgSUVzCgkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMLAoJCW1ibXMtUkItTGlzdFJlbGVhc2VkVG9DaGFuZ2VUcmFuc2Zlck1vZGUKCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUkFESU8gQkVBUkVSIFJFTEVBU0UgQ09NUExFVEUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSYWRpb0JlYXJlclJlbGVhc2VDb21wbGV0ZSA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQl1bC1JbnRlZ1Byb3RBY3RpdmF0aW9uSW5mbwkJSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvCQkJT1BUSU9OQUwsCgkJLS0gVEFCVUxBUjogVUwtVGltaW5nQWR2YW5jZSBpcyBhcHBsaWNhYmxlIGZvciBUREQgbW9kZSBvbmx5LgoJCXVsLVRpbWluZ0FkdmFuY2UJCQkJVUwtVGltaW5nQWR2YW5jZQkJCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJY291bnQtQy1BY3RpdmF0aW9uVGltZQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAoJCS0tIGl0IHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRoZSByZWNlaXZlci4KCQlkdW1teQkJCQkJCQlSQi1BY3RpdmF0aW9uVGltZUluZm9MaXN0CQkJT1BUSU9OQUwsCgkJdWwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JVUwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQlyYWRpb0JlYXJlclJlbGVhc2VDb21wbGV0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJcmFkaW9CZWFyZXJSZWxlYXNlQ29tcGxldGUtdjd4eWV4dAoJCQkJCQkJCQkJCQlSYWRpb0JlYXJlclJlbGVhc2VDb21wbGV0ZS12N3h5ZXh0LUlFcywKCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQl9CU9QVElPTkFMCgkJfQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclJlbGVhc2VDb21wbGV0ZS12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJCWV4dC11bC1UaW1pbmdBZHZhbmNlCQkJRVhULVVMLVRpbWluZ0FkdmFuY2UJCQkJT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJBRElPIEJFQVJFUiBSRUxFQVNFIEZBSUxVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSYWRpb0JlYXJlclJlbGVhc2VGYWlsdXJlIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJcG90ZW50aWFsbHlTdWNjZXNmdWxCZWFyZXJMaXN0CVJCLUlkZW50aXR5TGlzdAkJCQkJCU9QVElPTkFMLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQlyYWRpb0JlYXJlclJlbGVhc2VGYWlsdXJlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQl9CU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSQURJTyBCRUFSRVIgU0VUVVAKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSYWRpb0JlYXJlclNldHVwIDo6PSBDSE9JQ0UgewoJcjMJCQkJCQkJCVNFUVVFTkNFIHsKCQlyYWRpb0JlYXJlclNldHVwLXIzCQkJCVJhZGlvQmVhcmVyU2V0dXAtcjMtSUVzLAoJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJcmFkaW9CZWFyZXJTZXR1cC12M2EwZXh0CQlSYWRpb0JlYXJlclNldHVwLXYzYTBleHQsCgkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJCXJhZGlvQmVhcmVyU2V0dXAtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJcmFkaW9CZWFyZXJTZXR1cC12NGIwZXh0CQlSYWRpb0JlYXJlclNldHVwLXY0YjBleHQtSUVzLAoJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC12NTkwZXh0CQlSYWRpb0JlYXJlclNldHVwLXY1OTBleHQtSUVzLAoJCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC12NWQwZXh0CQlSYWRpb0JlYXJlclNldHVwLXY1ZDBleHQtSUVzLAoJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJCXJhZGlvQmVhcmVyU2V0dXAtdjY5MGV4dAkJUmFkaW9CZWFyZXJTZXR1cC12NjkwZXh0LUlFcywKCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fSBPUFRJT05BTAoJCQkJCQkJfQlPUFRJT05BTAoJCQkJCQl9CU9QVElPTkFMCgkJCQkJfQlPUFRJT05BTAoJCQkJfQlPUFRJT05BTAoJCQl9CU9QVElPTkFMCgkJfQlPUFRJT05BTAoJfSwKCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJcmFkaW9CZWFyZXJTZXR1cC1yNAkJCQlSYWRpb0JlYXJlclNldHVwLXI0LUlFcywKCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKCQkJCQlyYWRpb0JlYXJlclNldHVwLXI0LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC12NTkwZXh0CQlSYWRpb0JlYXJlclNldHVwLXY1OTBleHQtSUVzLAoJCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC12NWQwZXh0CQlSYWRpb0JlYXJlclNldHVwLXY1ZDBleHQtSUVzLAoJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJCXJhZGlvQmVhcmVyU2V0dXAtdjY5MGV4dAkJUmFkaW9CZWFyZXJTZXR1cC12NjkwZXh0LUlFcywKCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQkJCX0JT1BUSU9OQUwKCQkJCQkJfQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0JT1BUSU9OQUwKCQkJfSwKCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCXJhZGlvQmVhcmVyU2V0dXAtcjUJCQkJUmFkaW9CZWFyZXJTZXR1cC1yNS1JRXMsCgkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKCQkJCQlyYWRpb0JlYXJlclNldHVwLXI1LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCXY1ZDBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQlTRVFVRU5DRSB7CgkJCQkJCXJhZGlvQmVhcmVyU2V0dXAtdjVkMGV4dAkJUmFkaW9CZWFyZXJTZXR1cC12NWQwZXh0LUlFcywKCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC12NjkwZXh0CQlSYWRpb0JlYXJlclNldHVwLXY2OTBleHQtSUVzLAoJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCQkJCX0JT1BUSU9OQUwKCQkJCQl9CU9QVElPTkFMCgkJCQl9LAoJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC1yNgkJCQlSYWRpb0JlYXJlclNldHVwLXI2LUlFcywKCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTcKCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC1yNi1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCQkJfSwKCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKCQkJCQkJcjcJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJCXJhZGlvQmVhcmVyU2V0dXAtcjcJCQkJUmFkaW9CZWFyZXJTZXR1cC1yNy1JRXMsCgkJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtOAoJCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC1yNy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQl9LAoJCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9Cn0KClJhZGlvQmVhcmVyU2V0dXAtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCgkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAoJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCgkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdAkJCU9QVElPTkFMLAoJCXJhYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0CQkJT1BUSU9OQUwsCgkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCgkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAoJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCgkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQlkdW1teQkJCQkJCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAoJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudAkJCQlPUFRJT05BTCwKCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKCQkJfSwKCQkJdGRkCQkJCQkJCQlOVUxMCgkJfSwKCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAoJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQkJT1BUSU9OQUwKfQoKUmFkaW9CZWFyZXJTZXR1cC12M2EwZXh0IDo6PSBTRVFVRU5DRSB7CgktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyCgktLSBpcyB1bnNwZWNpZmllZAoJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMCn0KClJhZGlvQmVhcmVyU2V0dXAtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJZHVtbXkJCQkJCQkJCVNTRFQtVUwJCQkJCQkJCU9QVElPTkFMLAoJCS0tIFRoZSBvcmRlciBvZiB0aGUgUkxzIGluIElFIGNlbGwtaWQtUGVyUkwtTGlzdCBpcyB0aGUgc2FtZSBhcwoJCS0tIGluIElFIERMLUluZm9ybWF0aW9uUGVyUkwtTGlzdCBpbmNsdWRlZCBpbiB0aGlzIG1lc3NhZ2UKCQljZWxsLWlkLVBlclJMLUxpc3QJCQkJCUNlbGxJZGVudGl0eS1QZXJSTC1MaXN0CQkJCU9QVElPTkFMCn0KClJhZGlvQmVhcmVyU2V0dXAtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZGwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAlETC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclNldHVwLXY1ZDBleHQtSUVzIDo6PQlTRVFVRU5DRSB7CgktLVJhZGlvIEJlYXJlciBJRXMKCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMCn0KClJhZGlvQmVhcmVyU2V0dXAtcjQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAoJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgktLSBVVFJBTiBtb2JpbGl0eSBJRXMKCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCXNyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0CQkJT1BUSU9OQUwsCgkJcmFiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjQJCQlPUFRJT05BTCwKCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCQlPUFRJT05BTCwKCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCgktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCS0tICdkdW1teScsICdkdW1teTEnIGFuZCAnZHVtbXkyJyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAoJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCUNIT0lDRSB7CgkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAoJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJTlVMTAoJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAoJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0CQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjQJCQlPUFRJT05BTCwKCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKCQkJfSwKCQkJdGRkCQkJCQkJCQlOVUxMCgkJfSwKCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0CQkJCU9QVElPTkFMLAoJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI0CQkJT1BUSU9OQUwKfQoKUmFkaW9CZWFyZXJTZXR1cC1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCgkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAoJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCgkJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAoJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAoJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUJCQlPUFRJT05BTCwKCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNQkJCU9QVElPTkFMLAoJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNQkJT1BUSU9OQUwsCgkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCgktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCS0tICdkdW1teScsICdkdW1teTEnIGFuZCAnZHVtbXkyJyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAoJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCUNIT0lDRSB7CgkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAoJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJTlVMTAoJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAoJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCgkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNQkJCU9QVElPTkFMLAoJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9LAoJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjUJCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjUJCQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclNldHVwLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJcHJpbWFyeS1wbG1uLUlkZW50aXR5CQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQktLSBUaGUgSUUgaGFycS1QcmVhbWJsZS1Nb2RlIHNob3VsZCBub3QgYmUgdXNlZCBpbiB0aGUgcjMgYW5kIHI0IHZlcnNpb25zIG9mIHRoZSBtZXNzYWdlCgkJLS0gSWYgaW5jbHVkZWQgaW4gdGhlIHIzIG9yIHI0IHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UsIHRoZSBVRSBzaG91bGQgaWdub3JlIHRoZSBJRQoJCWhhcnEtUHJlYW1ibGUtTW9kZQkJCQlIQVJRLVByZWFtYmxlLU1vZGUJCQkJCU9QVElPTkFMLAoJCWJlYWNvblBMRXN0CQkJCQkJQkVBQ09OLVBMLUVzdAkJCQkJCU9QVElPTkFMLAoJCXBvc3RWZXJpZmljYXRpb25QZXJpb2QJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTCwKCQlkaHMtc3luYwkJCQkJCURIUy1TeW5jCQkJCQkJCU9QVElPTkFMLAoJCXRpbWluZ01haW50YWluZWRTeW5jaEluZAkJVGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJcmFiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYtZXh0CQlPUFRJT05BTCwKCS0tIE1CTVMgSUVzCgkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCn0KClJhZGlvQmVhcmVyU2V0dXAtcjYtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCgkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgktLSBVVFJBTiBtb2JpbGl0eSBJRXMKCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8tcjYJCQkJT1BUSU9OQUwsCgkJc3BlY2lmaWNhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKCQkJY29tcGxldGUJCQkJCQlTRVFVRU5DRSB7CgkJCS0tIFJhZGlvIGJlYXJlciBJRXMKCQkJCXNyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2CQkJT1BUSU9OQUwsCgkJCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNgkJCU9QVElPTkFMLAoJCQkJcmFiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKCQkJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNgkJT1BUSU9OQUwsCgkJCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYJCU9QVElPTkFMLAoJCQkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCgkJCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMLAoJCQktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTAoJCQl9LAoJCQlwcmVjb25maWd1cmF0aW9uCQkJCVNFUVVFTkNFIHsKCQkJCXJhYi1JbmZvCQkJCQkJUkFCLUluZm8tcjYsCgkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYsCgkJCQlyYi1JbmZvcm1hdGlvbkNoYW5nZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkNoYW5nZWRMaXN0LXI2CQlPUFRJT05BTCwKCQkJCXBvd2VyT2Zmc2V0SW5mb1Nob3J0CQkJUG93ZXJPZmZzZXRJbmZvU2hvcnQKCQkJfQoJCX0sCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjYJCQkJCQlPUFRJT05BTCwKCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCgkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYJCQlPUFRJT05BTCwKCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAoJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI2CQkJT1BUSU9OQUwsCgktLSBNQk1TIElFcwoJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAp9CgpSYWRpb0JlYXJlclNldHVwLXI3LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCgkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAoJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCgkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCgkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvLXI2CQkJCU9QVElPTkFMLAoJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgewoJCQktLSBSYWRpbyBiZWFyZXIgSUVzCgkJCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNgkJCU9QVElPTkFMLAoJCQkJcmFiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYJCQlPUFRJT05BTCwKCQkJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNgkJT1BUSU9OQUwsCgkJCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYJCU9QVElPTkFMLAoJCQkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCgkJCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMLAoJCQktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTAoJCQl9LAoJCQlwcmVjb25maWd1cmF0aW9uCQkJCVNFUVVFTkNFIHsKCQkJCXJhYi1JbmZvCQkJCQkJUkFCLUluZm8tcjYsCgkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYsCgkJCQlyYi1JbmZvcm1hdGlvbkNoYW5nZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkNoYW5nZWRMaXN0LXI2CQlPUFRJT05BTCwKCQkJCXBvd2VyT2Zmc2V0SW5mb1Nob3J0CQkJUG93ZXJPZmZzZXRJbmZvU2hvcnQKCQkJfQoJCX0sCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjcJCQkJCQlPUFRJT05BTCwKCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCgkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjcJCQlPUFRJT05BTCwKCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI3CQkJCU9QVElPTkFMLAoJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI3CQkJT1BUSU9OQUwsCgktLSBNQk1TIElFcwoJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUkFESU8gQkVBUkVSIFNFVFVQIENPTVBMRVRFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKUmFkaW9CZWFyZXJTZXR1cENvbXBsZXRlIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCXVsLUludGVnUHJvdEFjdGl2YXRpb25JbmZvCQlJbnRlZ3JpdHlQcm90QWN0aXZhdGlvbkluZm8JCQlPUFRJT05BTCwKCQktLSBUQUJVTEFSOiBVTC1UaW1pbmdBZHZhbmNlIGlzIGFwcGxpY2FibGUgZm9yIFRERCBtb2RlIG9ubHkuCgkJdWwtVGltaW5nQWR2YW5jZQkJCQlVTC1UaW1pbmdBZHZhbmNlCQkJCQlPUFRJT05BTCwKCQlzdGFydC1WYWx1ZQkJCQlTVEFSVC1WYWx1ZQkJCQkJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCWNvdW50LUMtQWN0aXZhdGlvblRpbWUJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKCQktLSBpdCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIuCgkJZHVtbXkJCQkJCQkJUkItQWN0aXZhdGlvblRpbWVJbmZvTGlzdAkJCU9QVElPTkFMLAoJCXVsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCVVMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJcmFkaW9CZWFyZXJTZXR1cENvbXBsZXRlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQlyYWRpb0JlYXJlclNldHVwQ29tcGxldGUtdjd4eWV4dAoJCQkJCQkJCQkJCQlSYWRpb0JlYXJlclNldHVwQ29tcGxldGUtdjd4eWV4dC1JRXMsCgkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKUmFkaW9CZWFyZXJTZXR1cENvbXBsZXRlLXY3eHlleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgkJZXh0LXVsLVRpbWluZ0FkdmFuY2UJCQlFWFQtVUwtVGltaW5nQWR2YW5jZQkJCQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUkFESU8gQkVBUkVSIFNFVFVQIEZBSUxVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSYWRpb0JlYXJlclNldHVwRmFpbHVyZSA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCXBvdGVudGlhbGx5U3VjY2VzZnVsQmVhcmVyTGlzdAlSQi1JZGVudGl0eUxpc3QJCQkJCQlPUFRJT05BTCwKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJcmFkaW9CZWFyZXJTZXR1cEZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJSQyBDT05ORUNUSU9OIFJFSkVDVAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJSQ0Nvbm5lY3Rpb25SZWplY3QgOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCXJyY0Nvbm5lY3Rpb25SZWplY3QtcjMJCQlSUkNDb25uZWN0aW9uUmVqZWN0LXIzLUlFcywKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJcnJjQ29ubmVjdGlvblJlamVjdC1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCXJyY0Nvbm5lY3Rpb25SZWplY3QtdjY5MGV4dAkJUlJDQ29ubmVjdGlvblJlamVjdC12NjkwZXh0LUlFcywKCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTCAKCQkJfQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKCX0sCglsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CgkJaW5pdGlhbFVFLUlkZW50aXR5CQkJCUluaXRpYWxVRS1JZGVudGl0eSwKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJfQp9CgpSUkNDb25uZWN0aW9uUmVqZWN0LXIzLUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbml0aWFsVUUtSWRlbnRpdHkJCQkJSW5pdGlhbFVFLUlkZW50aXR5LAoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJcmVqZWN0aW9uQ2F1c2UJCQkJCVJlamVjdGlvbkNhdXNlLAoJCXdhaXRUaW1lCQkJCQkJV2FpdFRpbWUsCgkJcmVkaXJlY3Rpb25JbmZvCQkJCQlSZWRpcmVjdGlvbkluZm8JCQkJCQlPUFRJT05BTAp9CgpSUkNDb25uZWN0aW9uUmVqZWN0LXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CglyZWRpcmVjdGlvbkluZm8tdjY5MGV4dAkJCQlHU00tVGFyZ2V0Q2VsbEluZm9MaXN0CQkJT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJSQyBDT05ORUNUSU9OIFJFTEVBU0UKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSUkNDb25uZWN0aW9uUmVsZWFzZSA6Oj0gQ0hPSUNFIHsKCXIzCQkJCQkJCQlTRVFVRU5DRSB7CgkJcnJjQ29ubmVjdGlvblJlbGVhc2UtcjMJCQlSUkNDb25uZWN0aW9uUmVsZWFzZS1yMy1JRXMsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeyAKCQkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLXY2OTBleHQJUlJDQ29ubmVjdGlvblJlbGVhc2UtdjY5MGV4dC1JRXMsCgkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwgCgkJCX0JT1BUSU9OQUwKCQl9CU9QVElPTkFMCgl9LAoJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgewoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQlycmNDb25uZWN0aW9uUmVsZWFzZS1yNAkJCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLXI0LUlFcywKCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKCQkJCQlycmNDb25uZWN0aW9uUmVsZWFzZS1yNC1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQlycmNDb25uZWN0aW9uUmVsZWFzZS12NjkwZXh0CgkJCQkJCQkJCQkJCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLXY2OTBleHQtSUVzLAoJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQl9CU9QVElPTkFMCgkJCQl9CU9QVElPTkFMCgkJCX0sCgkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJCX0KCX0KfQoKUlJDQ29ubmVjdGlvblJlbGVhc2UtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCS0tIG4tMzA4IGlzIGNvbmRpdGlvbmFsIG9uIHRoZSBVRSBzdGF0ZQoJCW4tMzA4CQkJCQkJCU4tMzA4CQkJCQkJCQlPUFRJT05BTCwKCQlyZWxlYXNlQ2F1c2UJCQkJCVJlbGVhc2VDYXVzZSwKCQlycGxtbi1pbmZvcm1hdGlvbgkJCQlScGxtbi1JbmZvcm1hdGlvbgkJCQkJT1BUSU9OQUwKfQoKUlJDQ29ubmVjdGlvblJlbGVhc2UtcjQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQktLSBuLTMwOCBpcyBjb25kaXRpb25hbCBvbiB0aGUgVUUgc3RhdGUuCgkJbi0zMDgJCQkJCQkJTi0zMDgJCQkJCQkJCU9QVElPTkFMLAoJCXJlbGVhc2VDYXVzZQkJCQkJUmVsZWFzZUNhdXNlLAoJCXJwbG1uLWluZm9ybWF0aW9uCQkJCVJwbG1uLUluZm9ybWF0aW9uLXI0CQkJCU9QVElPTkFMCn0KClJSQ0Nvbm5lY3Rpb25SZWxlYXNlLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CglyZWRpcmVjdGlvbkluZm8tdjY5MGV4dAkJCQlSZWRpcmVjdGlvbkluZm8tcjYJT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJSQyBDT05ORUNUSU9OIFJFTEVBU0UgZm9yIENDQ0gKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NIIDo6PSBDSE9JQ0UgewoJcjMJCQkJCQkJCVNFUVVFTkNFIHsKCQlycmNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXIzCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtcjMtSUVzLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQlycmNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7IAoJCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtdjY5MGV4dAlSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXY2OTBleHQtSUVzLAoJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKCX0sCglsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CgkJdS1STlRJCQkJCQkJCVUtUk5USSwKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC1yNAlSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXI0LUlFcywKCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKCQkJCQlycmNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXI0LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsgCgkJCQkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLXY2OTBleHQJUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC12NjkwZXh0LUlFcywKCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCQkJfQlPUFRJT05BTAoJCQkJfQkJT1BUSU9OQUwKCQkJfSwKCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHsKCQkJCS0tIFRBQlVMQVI6IENIT0lDRSBJZGVudGl0eVR5cGUgKFUtUk5USSwgR3JvdXBJZGVudGl0eSkgaXMgcmVwbGFjZWQgd2l0aCB0aGUgCgkJCQktLSBvcHRpb25hbCBlbGVtZW50IGdyb3VwSWRlbnRpdHksIHNpbmNlIHRoZSBVLVJOVEkgaXMgbWFuZGF0b3J5IGluIEFTTi4xLgoJCQkJLS0gSW4gY2FzZSBDSE9JQ0UgSWRlbnRpdHlUeXBlIGlzIGVxdWFsIHRvIEdyb3VwSWRlbnRpdHkgdGhlIHZhbHVlIG9mIHRoZSBVLVJOVEkgCgkJCQktLSBzaGFsbCBiZSBpZ25vcmVkIGJ5IGEgVUUgY29tcGx5aW5nIHdpdGggdGhpcyB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLgoJCQkJZ3JvdXBJZGVudGl0eQkJU0VRVUVOQ0UgKCBTSVpFICgxIC4uIG1heFVSTlRJLUdyb3VwKSApIE9GCgkJCQkJCQkJCQkJR3JvdXBSZWxlYXNlSW5mb3JtYXRpb24JCU9QVElPTkFMLAoJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQkJcjUJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC1yNQlSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXI1LUlFcywKCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKCQkJCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC1yNS1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeyAKCQkJCQkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLXY2OTBleHQJUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC12NjkwZXh0LUlFcywKCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCgkJCQkJCX0JT1BUSU9OQUwKCQkJCQl9LAoJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJCQkJfQoJCQl9CgkJfQoJfQp9CgpSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXIzLUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJdS1STlRJCQkJCQkJCVUtUk5USSwKCS0tIFRoZSByZXN0IG9mIHRoZSBtZXNzYWdlIGlzIGlkZW50aWNhbCB0byB0aGUgb25lIHNlbnQgb24gRENDSC4KCQlycmNDb25uZWN0aW9uUmVsZWFzZQkJCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLXIzLUlFcwp9CgpSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXI0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVGhlIHJlc3Qgb2YgdGhlIG1lc3NhZ2UgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgc2VudCBvbiBEQ0NILgoJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlCQkJUlJDQ29ubmVjdGlvblJlbGVhc2UtcjQtSUVzCn0KCi0tIFRoZSBSNSBhbmQgUjQgc2VxdWVuY2Ugb2YgSUVzIGFyZSBpZGVudGljYWwgaW4gdGhpcyBtZXNzYWdlClJSQ0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtcjUtSUVzIDo6PSBSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXI0LUlFcwoKLS0gVGhlIFI2IG5vbi1jcml0aWNhbCBleHRlbnNpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgc2VudCBvbiBEQ0NILgpSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXY2OTBleHQtSUVzIDo6PSBSUkNDb25uZWN0aW9uUmVsZWFzZS12NjkwZXh0LUlFcwoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJSQyBDT05ORUNUSU9OIFJFTEVBU0UgQ09NUExFVEUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSUkNDb25uZWN0aW9uUmVsZWFzZUNvbXBsZXRlIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWVycm9ySW5kaWNhdGlvbgkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIJCQkJT1BUSU9OQUwsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlQ29tcGxldGUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJSQyBDT05ORUNUSU9OIFJFUVVFU1QKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSUkNDb25uZWN0aW9uUmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewoJLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbml0aWFsVUUtSWRlbnRpdHkJCQkJSW5pdGlhbFVFLUlkZW50aXR5LAoJCWVzdGFibGlzaG1lbnRDYXVzZQkJCQlFc3RhYmxpc2htZW50Q2F1c2UsCgkJLS0gcHJvdG9jb2xFcnJvckluZGljYXRvciBpcyBNRCwgYnV0IGZvciBjb21wYWN0bmVzcyByZWFzb25zIG5vIGRlZmF1bHQgdmFsdWUKCQktLSBoYXMgYmVlbiBhc3NpZ25lZCB0byBpdC4KCQlwcm90b2NvbEVycm9ySW5kaWNhdG9yCQkJUHJvdG9jb2xFcnJvckluZGljYXRvciwKCS0tIE1lYXN1cmVtZW50IElFcwoJCW1lYXN1cmVkUmVzdWx0c09uUkFDSAkJCU1lYXN1cmVkUmVzdWx0c09uUkFDSAkJCQlPUFRJT05BTCwKCS0tCU5vbiBjcml0aWNhbCBFeHRlbnNpb25zCgkJdjNkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJclJDQ29ubmVjdGlvblJlcXVlc3QtdjNkMGV4dCAJUlJDQ29ubmVjdGlvblJlcXVlc3QtdjNkMGV4dC1JRXMsCgkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCgkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQlycmNDb25uZWN0aW9uUmVxdWVzdC12NGIwZXh0CQlSUkNDb25uZWN0aW9uUmVxdWVzdC12NGIwZXh0LUlFcywKCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJcnJjQ29ubmVjdGlvblJlcXVlc3QtdjU5MGV4dAkJUlJDQ29ubmVjdGlvblJlcXVlc3QtdjU5MGV4dC1JRXMsCgkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJcnJjQ29ubmVjdGlvblJlcXVlc3QtdjY5MGV4dAlSUkNDb25uZWN0aW9uUmVxdWVzdC12NjkwZXh0LUlFcywKCQkJCQkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCgkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0JT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0gCU9QVElPTkFMCn0KClJSQ0Nvbm5lY3Rpb25SZXF1ZXN0LXYzZDBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQl1RVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZQkJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWlkbGUJCU9QVElPTkFMCn0KClJSQ0Nvbm5lY3Rpb25SZXF1ZXN0LXY0YjBleHQtSUVzIDo6PSAJU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJYWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IJCQlBY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvcgp9CgpSUkNDb25uZWN0aW9uUmVxdWVzdC12NTkwZXh0LUlFcyA6Oj0gCVNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXByZWRlZmluZWRDb25maWdTdGF0dXNJbmZvCQkJQk9PTEVBTgp9CgpSUkNDb25uZWN0aW9uUmVxdWVzdC12NjkwZXh0LUlFcyA6Oj0JU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJdWVDYXBhYmlsaXR5SW5kaWNhdGlvbgkJCQlFTlVNRVJBVEVEIHsgaHNkY2gsIGhzZGNoLWVkY2ggfQlPUFRJT05BTCwKCS0tIE1lYXN1cmVtZW50IElFcwoJCW1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcQkJTWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxCQkJT1BUSU9OQUwsCgkJZG9tYWluSW5kaWNhdG9yIAkJCQkJQ0hPSUNFIHsKCQkJY3MtZG9tYWluCQkJCQkJCVNFUVVFTkNFIHsKCQkJCWNzQ2FsbFR5cGUJCQkJCQkJRU5VTUVSQVRFRCB7c3BlZWNoLCB2aWRlbywgb3RoZXIsIHNwYXJlIH0KCQkJfSwKCQkJcHMtZG9tYWluIAkJCQkJCQlOVUxMCgkJfQp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUlJDIENPTk5FQ1RJT04gU0VUVVAKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSUkNDb25uZWN0aW9uU2V0dXAgOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCXJyY0Nvbm5lY3Rpb25TZXR1cC1yMwkJCVJSQ0Nvbm5lY3Rpb25TZXR1cC1yMy1JRXMsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCXJyY0Nvbm5lY3Rpb25TZXR1cC1yMy1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7IAoJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY0YjBleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12NGIwZXh0LUlFcywKCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsgCgkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY1OTBleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12NTkwZXh0LUlFcywKCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC12NjkwZXh0CQlSUkNDb25uZWN0aW9uU2V0dXAtdjY5MGV4dC1JRXMsCgkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC12N3h5ZXh0CQlSUkNDb25uZWN0aW9uU2V0dXAtdjd4eWV4dC1JRXMsCgkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQkJfQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0JT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKCX0sCglsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CgkJaW5pdGlhbFVFLUlkZW50aXR5CQkJCUluaXRpYWxVRS1JZGVudGl0eSwKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJcnJjQ29ubmVjdGlvblNldHVwLXI0CQkJUlJDQ29ubmVjdGlvblNldHVwLXI0LUlFcywKCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtcjQtYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7IAoJCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtdjU5MGV4dAkJUlJDQ29ubmVjdGlvblNldHVwLXY1OTBleHQtSUVzLAoJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtdjY5MGV4dAkJUlJDQ29ubmVjdGlvblNldHVwLXY2OTBleHQtSUVzLAoJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC12N3h5ZXh0CQlSUkNDb25uZWN0aW9uU2V0dXAtdjd4eWV4dC1JRXMsCgkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCQkJCQl9CU9QVElPTkFMCgkJCQkJCX0JT1BUSU9OQUwKCQkJCQl9CU9QVElPTkFMCgkJCQl9CU9QVElPTkFMCgkJCX0sCgkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQkJQ0hPSUNFIHsKCQkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXI1CQkJUlJDQ29ubmVjdGlvblNldHVwLXI1LUlFcywKCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNgoJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC1yNS1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY2OTBleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12NjkwZXh0LUlFcywKCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY3eHlleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12N3h5ZXh0LUlFcywKCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQl9CU9QVElPTkFMCgkJCQkJfQlPUFRJT05BTAoJCQkJfSwKCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQkJCXI2CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC1yNgkJCVJSQ0Nvbm5lY3Rpb25TZXR1cC1yNi1JRXMsCgkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC03CgkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC1yNi1hZGQtZXh0CUJJVCBTVFJJTkcJCQkJCU9QVElPTkFMLAoJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtdjd4eWV4dAkJUlJDQ29ubmVjdGlvblNldHVwLXY3eHlleHQtSUVzLAoJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCU9QVElPTkFMCgkJCQkJCX0JT1BUSU9OQUwKCQkJCQl9LAoJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgewoJCQkJCQlyNwkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXI3CQkJUlJDQ29ubmVjdGlvblNldHVwLXI3LUlFcywKCQkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC04CgkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtcjctYWRkLWV4dAlCSVQgU1RSSU5HCQkJCQlPUFRJT05BTCwKCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQlPUFRJT05BTAoJCQkJCQl9LAoJCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9Cn0KClJSQ0Nvbm5lY3Rpb25TZXR1cC1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFRBQlVMQVI6IEludGVncml0eSBwcm90ZWN0aW9uIHNoYWxsIG5vdCBiZSBwZXJmb3JtZWQgb24gdGhpcyBtZXNzYWdlLgoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJaW5pdGlhbFVFLUlkZW50aXR5CQkJCUluaXRpYWxVRS1JZGVudGl0eSwKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEksCgkJbmV3LWMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQsCgkJLS0gVEFCVUxBUjogSWYgY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50IGlzIG5vdCBwcmVzZW50LCB0aGUgZGVmYXVsdCB2YWx1ZQoJCS0tIGRlZmluZWQgaW4gMTAuMy4zLjIgc2hhbGwgYmUgdXNlZC4KCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQJCUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudAkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCXNyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0MiwKCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcwoJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCgkJLS0gTk9URTogdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0IHNob3VsZCBiZSBvcHRpb25hbCBpbiBsYXRlciB2ZXJzaW9ucyBvZgoJCS0tIHRoaXMgbWVzc2FnZQoJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAoJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCgkJLS0gTk9URTogZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0IHNob3VsZCBiZSBvcHRpb25hbCBpbiBsYXRlciB2ZXJzaW9ucwoJCS0tIG9mIHRoaXMgbWVzc2FnZQoJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudAkJCQlPUFRJT05BTCwKCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAoJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQkJT1BUSU9OQUwKfQoKUlJDQ29ubmVjdGlvblNldHVwLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgkJY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI0LWV4dAlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQtZXh0CU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQlkdW1teQkJCQkJCQkJU1NEVC1VTAkJCQkJCQkJT1BUSU9OQUwsCgkJLS0gVGhlIG9yZGVyIG9mIHRoZSBSTHMgaW4gSUUgY2VsbC1pZC1QZXJSTC1MaXN0IGlzIHRoZSBzYW1lIGFzCgkJLS0gaW4gSUUgREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0IGluY2x1ZGVkIGluIHRoaXMgbWVzc2FnZQoJCWNlbGwtaWQtUGVyUkwtTGlzdAkJCQkJQ2VsbElkZW50aXR5LVBlclJMLUxpc3QJCQkJT1BUSU9OQUwKfQoKUlJDQ29ubmVjdGlvblNldHVwLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlzeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcQkJU3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXEtdjU5MGV4dAkJT1BUSU9OQUwsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWRsLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJREwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAkJT1BUSU9OQUwKfQoKUlJDQ29ubmVjdGlvblNldHVwLXI0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCgkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USSwKCQluZXctYy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAoJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudCwKCQktLSBUQUJVTEFSOiBJZiBjYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQgaXMgbm90IHByZXNlbnQsIHRoZSBkZWZhdWx0IHZhbHVlCgkJLS0gZGVmaW5lZCBpbiAxMC4zLjMuMiBzaGFsbCBiZSB1c2VkLgoJCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudAkJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI0CQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdDIsCgktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNAkJT1BUSU9OQUwsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI0CQkJT1BUSU9OQUwsCgkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNAkJCQlPUFRJT05BTCwKCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNAkJCU9QVElPTkFMCn0KClJSQ0Nvbm5lY3Rpb25TZXR1cC1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFRBQlVMQVI6IEludGVncml0eSBwcm90ZWN0aW9uIHNoYWxsIG5vdCBiZSBwZXJmb3JtZWQgb24gdGhpcyBtZXNzYWdlLgoJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEksCgkJbmV3LWMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQsCgkJLS0gVEFCVUxBUjogSWYgY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50IGlzIG5vdCBwcmVzZW50LCB0aGUgZGVmYXVsdCB2YWx1ZQoJCS0tIGRlZmluZWQgaW4gMTAuMy4zLjIgc2hhbGwgYmUgdXNlZC4KCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQJCUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNQkJT1BUSU9OQUwsCgktLSBTcGVjaWZpY2F0aW9uIG1vZGUgaW5mb3JtYXRpb24KCQlzcGVjaWZpY2F0aW9uTW9kZQkJCQlDSE9JQ0UgewoJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKCQkJCS0tIFJhZGlvIGJlYXJlciBJRXMKCQkJCXNyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0MiwKCQkJCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcwoJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgkJCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjQJCU9QVElPTkFMCgkJCX0sCgkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgewoJCQkJLS0gQWxsIElFcyB0aGF0IGluY2x1ZGUgYW4gRkREL1RERCBjaG9pY2UgYXJlIHNwbGl0IGluIHR3byBJRXMgZm9yIHRoaXMgbWVzc2FnZSwKCQkJCS0tIG9uZSBmb3IgdGhlIEZERCBvbmx5IGVsZW1lbnRzIGFuZCBvbmUgZm9yIHRoZSBUREQgb25seSBlbGVtZW50cywgc28gdGhhdCBvbmUKCQkJCS0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CgkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCgkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgewoJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eS1yNQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI0CQkJT1BUSU9OQUwsCgkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNAkJCQlPUFRJT05BTCwKCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNWJpcwkJT1BUSU9OQUwKfQoKUlJDQ29ubmVjdGlvblNldHVwLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBQaHlzaWNhbCBDaGFubmVsIElFcwoJCWJlYWNvblBMRXN0CQkJCQkJQkVBQ09OLVBMLUVzdAkJCQkJCU9QVElPTkFMLAoJCXBvc3RWZXJpZmljYXRpb25QZXJpb2QJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTAp9CgpSUkNDb25uZWN0aW9uU2V0dXAtcjYtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJLAoJCW5ldy1jLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCgkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50LAoJCS0tIFRBQlVMQVI6IElmIGNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudCBpcyBub3QgcHJlc2VudCwgdGhlIGRlZmF1bHQgdmFsdWUKCQktLSBkZWZpbmVkIGluIDEwLjMuMy4yIHNoYWxsIGJlIHVzZWQuCgkJY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50CQlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjUJCU9QVElPTkFMLAoJLS0gU3BlY2lmaWNhdGlvbiBtb2RlIGluZm9ybWF0aW9uCgkJc3BlY2lmaWNhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKCQkJY29tcGxldGUJCQkJCQlTRVFVRU5DRSB7CgkJCQktLSBSYWRpbyBiZWFyZXIgSUVzCgkJCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdDItcjYsCgkJCQktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCgkJCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMCgkJCX0sCgkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgewoJCQkJLS0gQWxsIElFcyB0aGF0IGluY2x1ZGUgYW4gRkREL1RERCBjaG9pY2UgYXJlIHNwbGl0IGluIHR3byBJRXMgZm9yIHRoaXMgbWVzc2FnZSwKCQkJCS0tIG9uZSBmb3IgdGhlIEZERCBvbmx5IGVsZW1lbnRzIGFuZCBvbmUgZm9yIHRoZSBUREQgb25seSBlbGVtZW50cywgc28gdGhhdCBvbmUKCQkJCS0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CgkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCgkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgewoJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eS1yNgoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjYJCQkJCQlPUFRJT05BTCwKCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCgkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYJCQlPUFRJT05BTCwKCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAoJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI2CQkJT1BUSU9OQUwKfQoKUlJDQ29ubmVjdGlvblNldHVwLXI3LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCgkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USSwKCQluZXctYy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAoJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudCwKCQktLSBUQUJVTEFSOiBJZiBjYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQgaXMgbm90IHByZXNlbnQsIHRoZSBkZWZhdWx0IHZhbHVlCgkJLS0gZGVmaW5lZCBpbiAxMC4zLjMuMiBzaGFsbCBiZSB1c2VkLgoJCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudAkJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI1CQlPUFRJT05BTCwKCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgoJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgewoJCQkJLS0gUmFkaW8gYmVhcmVyIElFcwoJCQkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QyLXI2LAoJCQkJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCgkJCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAoJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTAoJCQl9LAoJCQlwcmVjb25maWd1cmF0aW9uCQkJCVNFUVVFTkNFIHsKCQkJCS0tIEFsbCBJRXMgdGhhdCBpbmNsdWRlIGFuIEZERC9UREQgY2hvaWNlIGFyZSBzcGxpdCBpbiB0d28gSUVzIGZvciB0aGlzIG1lc3NhZ2UsCgkJCQktLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCgkJCQktLSBGREQvVEREIGNob2ljZSBpbiB0aGlzIGxldmVsIGlzIHN1ZmZpY2llbnQuCgkJCQlwcmVDb25maWdNb2RlCQkJCQlDSE9JQ0UgewoJCQkJCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAoJCQkJCWRlZmF1bHRDb25maWcJCQkJCVNFUVVFTkNFIHsKCQkJCQkJZGVmYXVsdENvbmZpZ01vZGUJCQkJRGVmYXVsdENvbmZpZ01vZGUsCgkJCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYKCQkJCQl9CgkJCQl9CgkJCX0KCQl9LAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI3CQkJCQkJT1BUSU9OQUwsCgkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAoJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uLXI3CQkJT1BUSU9OQUwsCgkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNwkJCQlPUFRJT05BTCwKCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNwkJCU9QVElPTkFMCn0KClJSQ0Nvbm5lY3Rpb25TZXR1cC12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNy1leHQJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI3LWV4dAkJT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJSQyBDT05ORUNUSU9OIFNFVFVQIENPTVBMRVRFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUgOjo9IFNFUVVFTkNFIHsKCS0tIFRBQlVMQVI6IEludGVncml0eSBwcm90ZWN0aW9uIHNoYWxsIG5vdCBiZSBwZXJmb3JtZWQgb24gdGhpcyBtZXNzYWdlLgoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQlzdGFydExpc3QJCQkJCQlTVEFSVExpc3QsCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJCQlPUFRJT05BTCwKCS0tCU90aGVyIElFcwoJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eQkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdAlPUFRJT05BTCwKCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCgkJdjM3ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJcnJjQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjM3MGV4dAlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12MzcwZXh0LAoJCQl2MzgwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJcnJjQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjM4MGV4dAlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12MzgwZXh0LUlFcywKCQkJCS0tIFJlc2VydmVkIGZvciBmdXR1cmUgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbgoJCQkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQlycmNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12M2EwZXh0CVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXYzYTBleHQtSUVzLAoJCQkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwQ29tcGxldGUtcjMtYWRkLWV4dAkJQklUIFNUUklORwoJCQkJCQkJCShDT05UQUlOSU5HIFJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXIzLWFkZC1leHQtSUVzKQlPUFRJT05BTCwKCQkJCQkJdjNnME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXYzZzBleHQJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjNnMGV4dC1JRXMsCgkJCQkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY0YjBleHQKCQkJCQkJCQkJCQkJCQkJCVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY0YjBleHQtSUVzLAoJCQkJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY1OTBleHQKCQkJCQkJCQkJCQkJCQkJCVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY1OTBleHQtSUVzLAoJCQkJCQkJCQl2NWMwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjVjMGV4dAoJCQkJCQkJCQkJCQkJCQkJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjVjMGV4dC1JRXMsCgkJCQkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY2OTBleHQKCQkJCQkJCQkJCQkJCQkJCVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY2OTBleHQtSUVzLAoJCQkJCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJCQkJCQkJcnJjQ29uZWN0aW9uU2V0dXBDb21wbGV0ZS12N3h5ZXh0CgkJCQkJCQkJCQkJCQkJCQlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12N3h5ZXh0LUlFcywKCQkJCQkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQkJCQkJCQl9CQlPUFRJT05BTAoJCQkJCQkJCQkJfQkJT1BUSU9OQUwKCQkJCQkJCQkJfQkJT1BUSU9OQUwKCQkJCQkJCQl9CQlPUFRJT05BTAoJCQkJCQkJfQkJT1BUSU9OQUwKCQkJCQkJfQkJT1BUSU9OQUwKCQkJCQl9CQlPUFRJT05BTAoJCQkJfQkJT1BUSU9OQUwKCQkJfQkJT1BUSU9OQUwKCQl9CQlPUFRJT05BTAp9CgpSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12MzcwZXh0IDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM3MGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM3MGV4dAlPUFRJT05BTAp9CgpSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12MzgwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzODBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzODBleHQJCU9QVElPTkFMLAoJCWRsLVBoeXNDaENhcGFiaWxpdHlGREQtdjM4MGV4dAkJREwtUGh5c0NoQ2FwYWJpbGl0eUZERC12MzgwZXh0Cn0KClJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXYzYTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNhMGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNhMGV4dAlPUFRJT05BTAp9CgpSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12M2cwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzZzBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzZzBleHQJT1BUSU9OQUwKfQoKUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtcjMtYWRkLWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQlycmNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NjUwZXh0CQlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NjUwZXh0LUlFcwlPUFRJT05BTCwKCQl2NjgwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHsKCQkJcnJjQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjY4MGV4dAkJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjY4MGV4dC1JRXMsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJfQkJT1BUSU9OQUwKfQoKUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NGIwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjRiMGV4dAkJT1BUSU9OQUwKfQoKUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NTkwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dAkJT1BUSU9OQUwsCgktLSBPdGhlciBJRXMKCQl1ZS1SQVRTcGVjaWZpY0NhcGFiaWxpdHktdjU5MGV4dAkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQJT1BUSU9OQUwKfQoKUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjVjMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NWMwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dAkJT1BUSU9OQUwKfQoKUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjY1MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjUwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY1MGV4dAp9CgpSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NjgwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2ODBleHQJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjgwZXh0Cn0KClJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQl1ZUNhcGFiaWxpdHlDb250YWluZXIJCQkJQklUIFNUUklORwoJCQkJCQkJCQkJCQkoQ09OVEFJTklORyBVRS1DYXBhYmlsaXR5Q29udGFpbmVyLUlFcykJT1BUSU9OQUwKfQoKUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dAkJT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJSQyBGQUlMVVJFIElORk8KLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSUkMtRmFpbHVyZUluZm8gOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJCQkJU0VRVUVOQ0UgewoJCXJSQy1GYWlsdXJlSW5mby1yMwkJCQkJCQlSUkMtRmFpbHVyZUluZm8tcjMtSUVzLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQlycmMtRmFpbHVyZUluZm8tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCgkJfQlPUFRJT05BTAoJfSwKCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQkJCQlTRVFVRU5DRSB7fQp9CgpSUkMtRmFpbHVyZUluZm8tcjMtSUVzIDo6PQkJU0VRVUVOQ0UgewoJLS0gTm9uLVJSQyBJRXMKCQlmYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgkJCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUlJDIFNUQVRVUwotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJSQ1N0YXR1cyA6Oj0gU0VRVUVOQ0UgewoJLS0gT3RoZXIgSUVzCgkJLS0gVEFCVUxBUjogSWRlbnRpZmljYXRpb24gb2YgcmVjZWl2ZWQgbWVzc2FnZSBpcyBuZXN0ZWQgaW4KCQktLSBQcm90b2NvbEVycm9yTW9yZUluZm9ybWF0aW9uCgkJcHJvdG9jb2xFcnJvckluZm9ybWF0aW9uCQlQcm90b2NvbEVycm9yTW9yZUluZm9ybWF0aW9uLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQlycmNTdGF0dXMtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFNFQ1VSSVRZIE1PREUgQ09NTUFORAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClNlY3VyaXR5TW9kZUNvbW1hbmQgOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCXNlY3VyaXR5TW9kZUNvbW1hbmQtcjMJCQlTZWN1cml0eU1vZGVDb21tYW5kLXIzLUlFcywKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJc2VjdXJpdHlNb2RlQ29tbWFuZC1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJfQlPUFRJT05BTAoJfSwKCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJfQp9CgpTZWN1cml0eU1vZGVDb21tYW5kLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgewotLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBhbHdheXMgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJc2VjdXJpdHlDYXBhYmlsaXR5CQkJCVNlY3VyaXR5Q2FwYWJpbGl0eSwKCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCgkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1Eb21haW5JZGVudGl0eQkJCQlDTi1Eb21haW5JZGVudGl0eSwKCS0tIE90aGVyIElFcwoJCXVlLVN5c3RlbVNwZWNpZmljU2VjdXJpdHlDYXAJSW50ZXJSQVQtVUUtU2VjdXJpdHlDYXBMaXN0CQkJT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFNFQ1VSSVRZIE1PREUgQ09NUExFVEUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpTZWN1cml0eU1vZGVDb21wbGV0ZSA6Oj0gU0VRVUVOQ0UgewotLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBhbHdheXMgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KCgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCXVsLUludGVnUHJvdEFjdGl2YXRpb25JbmZvCQlJbnRlZ3JpdHlQcm90QWN0aXZhdGlvbkluZm8JCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlyYi1VTC1DaXBoQWN0aXZhdGlvblRpbWVJbmZvCVJCLUFjdGl2YXRpb25UaW1lSW5mb0xpc3QJCQlPUFRJT05BTCwKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJc2VjdXJpdHlNb2RlQ29tcGxldGUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFNFQ1VSSVRZIE1PREUgRkFJTFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClNlY3VyaXR5TW9kZUZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyciwKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJc2VjdXJpdHlNb2RlRmFpbHVyZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJfQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gU0lHTkFMTElORyBDT05ORUNUSU9OIFJFTEVBU0UKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpTaWduYWxsaW5nQ29ubmVjdGlvblJlbGVhc2UgOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCXNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZS1yMwlTaWduYWxsaW5nQ29ubmVjdGlvblJlbGVhc2UtcjMtSUVzLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQlzaWduYWxsaW5nQ29ubmVjdGlvblJlbGVhc2UtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKCX0sCglsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KCX0KfQoKU2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1Eb21haW5JZGVudGl0eQkJCQlDTi1Eb21haW5JZGVudGl0eQp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gU0lHTkFMTElORyBDT05ORUNUSU9OIFJFTEVBU0UgSU5ESUNBVElPTgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZUluZGljYXRpb24gOjo9IFNFUVVFTkNFIHsKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1Eb21haW5JZGVudGl0eQkJCQlDTi1Eb21haW5JZGVudGl0eSwKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJc2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlSW5kaWNhdGlvbi1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJfQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gU1lTVEVNIElORk9STUFUSU9OIGZvciBCQ0gKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpTeXN0ZW1JbmZvcm1hdGlvbi1CQ0ggOjo9IFNFUVVFTkNFIHsKCS0tIE90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnRzCgkJc2ZuLVByaW1lCQkJCQkJU0ZOLVByaW1lLAoJCXBheWxvYWQgCQkJCQkJQ0hPSUNFIHsKCQkJbm9TZWdtZW50CQkJCQkJTlVMTCwKCQkJZmlyc3RTZWdtZW50CQkJCQlGaXJzdFNlZ21lbnQsCgkJCXN1YnNlcXVlbnRTZWdtZW50CQkJCVN1YnNlcXVlbnRTZWdtZW50LAoJCQlsYXN0U2VnbWVudFNob3J0CQkJCQkJTGFzdFNlZ21lbnRTaG9ydCwKCQkJbGFzdEFuZEZpcnN0CQkJCQlTRVFVRU5DRSB7CgkJCQlsYXN0U2VnbWVudFNob3J0CQkJCUxhc3RTZWdtZW50U2hvcnQsCgkJCQlmaXJzdFNlZ21lbnQJCQkJCUZpcnN0U2VnbWVudFNob3J0CgkJCX0sCgkJCWxhc3RBbmRDb21wbGV0ZQkJCQkJU0VRVUVOQ0UgewoJCQkJbGFzdFNlZ21lbnRTaG9ydAkJCQlMYXN0U2VnbWVudFNob3J0LAoJCQkJY29tcGxldGVTSUItTGlzdAkJCQlDb21wbGV0ZVNJQi1MaXN0CgkJCX0sCgkJCWxhc3RBbmRDb21wbGV0ZUFuZEZpcnN0CQkJU0VRVUVOQ0UgewoJCQkJbGFzdFNlZ21lbnRTaG9ydAkJCQlMYXN0U2VnbWVudFNob3J0LAoJCQkJY29tcGxldGVTSUItTGlzdAkJCQlDb21wbGV0ZVNJQi1MaXN0LAoJCQkJZmlyc3RTZWdtZW50CQkJCQlGaXJzdFNlZ21lbnRTaG9ydAoJCQl9LAoJCQljb21wbGV0ZVNJQi1MaXN0CQkJCUNvbXBsZXRlU0lCLUxpc3QsCgkJCWNvbXBsZXRlQW5kRmlyc3QJCQkJU0VRVUVOQ0UgewoJCQkJY29tcGxldGVTSUItTGlzdAkJCQlDb21wbGV0ZVNJQi1MaXN0LAoJCQkJZmlyc3RTZWdtZW50CQkJCQlGaXJzdFNlZ21lbnRTaG9ydAoJCQl9LAoJCQljb21wbGV0ZVNJQgkJCQkJCUNvbXBsZXRlU0lCLAoJCQlsYXN0U2VnbWVudAkJCQkJCUxhc3RTZWdtZW50LAoJCQlzcGFyZTUJCQkJCQkJTlVMTCwKCQkJc3BhcmU0CQkJCQkJCU5VTEwsCgkJCXNwYXJlMwkJCQkJCQlOVUxMLAoJCQlzcGFyZTIJCQkJCQkJTlVMTCwKCQkJc3BhcmUxCQkJCQkJCU5VTEwKCQl9Cn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBTWVNURU0gSU5GT1JNQVRJT04gZm9yIEZBQ0gKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpTeXN0ZW1JbmZvcm1hdGlvbi1GQUNIIDo6PSBTRVFVRU5DRSB7CgktLSBPdGhlciBpbmZvcm1hdGlvbiBlbGVtZW50cwoJCXBheWxvYWQgCQkJCQkJQ0hPSUNFIHsKCQkJbm9TZWdtZW50CQkJCQkJTlVMTCwKCQkJZmlyc3RTZWdtZW50CQkJCQlGaXJzdFNlZ21lbnQsCgkJCXN1YnNlcXVlbnRTZWdtZW50CQkJCVN1YnNlcXVlbnRTZWdtZW50LAoJCQlsYXN0U2VnbWVudFNob3J0CQkJCUxhc3RTZWdtZW50U2hvcnQsCgkJCWxhc3RBbmRGaXJzdAkJCQkJU0VRVUVOQ0UgewoJCQkJbGFzdFNlZ21lbnRTaG9ydAkJCQlMYXN0U2VnbWVudFNob3J0LAoJCQkJZmlyc3RTZWdtZW50CQkJCQlGaXJzdFNlZ21lbnRTaG9ydAoJCQl9LAoJCQlsYXN0QW5kQ29tcGxldGUJCQkJCVNFUVVFTkNFIHsKCQkJCWxhc3RTZWdtZW50U2hvcnQJCQkJTGFzdFNlZ21lbnRTaG9ydCwKCQkJCWNvbXBsZXRlU0lCLUxpc3QJCQkJQ29tcGxldGVTSUItTGlzdAoJCQl9LAoJCQlsYXN0QW5kQ29tcGxldGVBbmRGaXJzdAkJCVNFUVVFTkNFIHsKCQkJCWxhc3RTZWdtZW50U2hvcnQJCQkJTGFzdFNlZ21lbnRTaG9ydCwKCQkJCWNvbXBsZXRlU0lCLUxpc3QJCQkJQ29tcGxldGVTSUItTGlzdCwKCQkJCWZpcnN0U2VnbWVudAkJCQkJRmlyc3RTZWdtZW50U2hvcnQKCQkJfSwKCQkJY29tcGxldGVTSUItTGlzdAkJCQlDb21wbGV0ZVNJQi1MaXN0LAoJCQljb21wbGV0ZUFuZEZpcnN0CQkJCVNFUVVFTkNFIHsKCQkJCWNvbXBsZXRlU0lCLUxpc3QJCQkJQ29tcGxldGVTSUItTGlzdCwKCQkJCWZpcnN0U2VnbWVudAkJCQkJRmlyc3RTZWdtZW50U2hvcnQKCQkJfSwKCQkJY29tcGxldGVTSUIJCQkJCQlDb21wbGV0ZVNJQiwKCQkJbGFzdFNlZ21lbnQJCQkJCQlMYXN0U2VnbWVudCwKCQkJc3BhcmU1CQkJCQkJCU5VTEwsCgkJCXNwYXJlNAkJCQkJCQlOVUxMLAoJCQlzcGFyZTMJCQkJCQkJTlVMTCwKCQkJc3BhcmUyCQkJCQkJCU5VTEwsCgkJCXNwYXJlMQkJCQkJCQlOVUxMCgkJfQp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gRmlyc3Qgc2VnbWVudAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkZpcnN0U2VnbWVudCA6Oj0JCQkJCVNFUVVFTkNFIHsKCS0tIE90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnRzCgkJc2liLVR5cGUJCQkJCQlTSUItVHlwZSwKCQlzZWctQ291bnQJCQkJCQlTZWdDb3VudCwKCQlzaWItRGF0YS1maXhlZAkJCQkJU0lCLURhdGEtZml4ZWQKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIEZpcnN0IHNlZ21lbnQgKHNob3J0KQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkZpcnN0U2VnbWVudFNob3J0IDo6PQkJCQlTRVFVRU5DRSB7CgktLSBPdGhlciBpbmZvcm1hdGlvbiBlbGVtZW50cwoJCXNpYi1UeXBlCQkJCQkJU0lCLVR5cGUsCgkJc2VnLUNvdW50CQkJCQkJU2VnQ291bnQsCgkJc2liLURhdGEtdmFyaWFibGUJCQkJU0lCLURhdGEtdmFyaWFibGUKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFN1YnNlcXVlbnQgc2VnbWVudAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClN1YnNlcXVlbnRTZWdtZW50IDo6PQkJCQlTRVFVRU5DRSB7CgktLSBPdGhlciBpbmZvcm1hdGlvbiBlbGVtZW50cwoJCXNpYi1UeXBlCQkJCQkJU0lCLVR5cGUsCgkJc2VnbWVudEluZGV4CQkJCQlTZWdtZW50SW5kZXgsCgkJc2liLURhdGEtZml4ZWQJCQkJCVNJQi1EYXRhLWZpeGVkCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBMYXN0IHNlZ21lbnQKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpMYXN0U2VnbWVudCA6Oj0JCQkJCQlTRVFVRU5DRSB7CgktLSBPdGhlciBpbmZvcm1hdGlvbiBlbGVtZW50cwoJCXNpYi1UeXBlCQkJCQkJU0lCLVR5cGUsCgkJc2VnbWVudEluZGV4CQkJCQlTZWdtZW50SW5kZXgsCgkJLS0gRm9yIHNpYi1EYXRhLWZpeGVkLCBpbiBjYXNlIHRoZSBTSUIgZGF0YSBpcyBsZXNzIHRoYW4gMjIyIGJpdHMsIHBhZGRpbmcKCQktLSBzaGFsbCBiZSB1c2VkLiBUaGUgc2FtZSBwYWRkaW5nIGJpdHMgc2hhbGwgYmUgdXNlZCBhcyBkZWZpbmVkIGluIGNsYXVzZSAxMi4xCgkJc2liLURhdGEtZml4ZWQJCQkJCVNJQi1EYXRhLWZpeGVkCn0KCkxhc3RTZWdtZW50U2hvcnQgOjo9CQkJCQkJU0VRVUVOQ0UgewoJLS0gT3RoZXIgaW5mb3JtYXRpb24gZWxlbWVudHMKCQlzaWItVHlwZQkJCQkJCVNJQi1UeXBlLAoJCXNlZ21lbnRJbmRleAkJCQkJU2VnbWVudEluZGV4LAoJCXNpYi1EYXRhLXZhcmlhYmxlCQkJCVNJQi1EYXRhLXZhcmlhYmxlCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBDb21wbGV0ZSBTSUIKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpDb21wbGV0ZVNJQi1MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U0lCcGVyTXNnKSkgT0YKCQkJCQkJCQkJCUNvbXBsZXRlU0lCc2hvcnQKCkNvbXBsZXRlU0lCIDo6PQkJCQkJCVNFUVVFTkNFIHsKCS0tIE90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnRzCgkJc2liLVR5cGUJCQkJCQlTSUItVHlwZSwKCQktLSBGb3Igc2liLURhdGEtZml4ZWQsIGluIGNhc2UgdGhlIFNJQiBkYXRhIGlzIGxlc3MgdGhhbiAyMjYgYml0cywgcGFkZGluZwoJCS0tIHNoYWxsIGJlIHVzZWQuIFRoZSBzYW1lIHBhZGRpbmcgYml0cyBzaGFsbCBiZSB1c2VkIGFzIGRlZmluZWQgaW4gY2xhdXNlIDEyLjEKCQlzaWItRGF0YS1maXhlZAkJCQkJQklUIFNUUklORyAoU0laRSAoMjI2KSkKfQoKQ29tcGxldGVTSUJzaG9ydCA6Oj0JCQkJCQlTRVFVRU5DRSB7CgktLSBPdGhlciBpbmZvcm1hdGlvbiBlbGVtZW50cwoJCXNpYi1UeXBlCQkJCQkJU0lCLVR5cGUsCgkJc2liLURhdGEtdmFyaWFibGUJCQkJU0lCLURhdGEtdmFyaWFibGUKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFNZU1RFTSBJTkZPUk1BVElPTiBDSEFOR0UgSU5ESUNBVElPTgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClN5c3RlbUluZm9ybWF0aW9uQ2hhbmdlSW5kaWNhdGlvbiA6Oj0gCVNFUVVFTkNFIHsKCS0tIE90aGVyIElFcwoJCWJjY2gtTW9kaWZpY2F0aW9uSW5mbwkJCQlCQ0NILU1vZGlmaWNhdGlvbkluZm8sCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQlzeXN0ZW1JbmZvcm1hdGlvbkNoYW5nZUluZGljYXRpb24tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQogCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBUUkFOU1BPUlQgQ0hBTk5FTCBSRUNPTkZJR1VSQVRJT04KLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uIDo6PSBDSE9JQ0UgewoJcjMJCQkJCQkJCVNFUVVFTkNFIHsKCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXIzCgkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXIzLUlFcywKCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjNhMGV4dAoJCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjNhMGV4dCwKCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NGIwZXh0CQoJCQkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NGIwZXh0LUlFcywKCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dAkKCQkJCQkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY1OTBleHQtSUVzLAoJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY2OTBleHQJCgkJCQkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcywKCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQl9CQlPUFRJT05BTAoJCQkJCX0JCU9QVElPTkFMCgkJCQl9CQlPUFRJT05BTAoJCQl9CQlPUFRJT05BTAoJCX0JCU9QVElPTkFMCgl9LAoJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgewoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI0CgkJCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjQtSUVzLAoJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNQoJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY1OTBleHQJCgkJCQkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY1OTBleHQtSUVzLAoJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY2OTBleHQJCgkJCQkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcywKCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQl9CU9QVElPTkFMCgkJCQkJfQlPUFRJT05BTAoJCQkJfQlPUFRJT05BTAoJCQl9LAoJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKCQkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNQoJCQkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNS1JRXMsCgkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKCQkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI1LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0CQoJCQkJCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dC1JRXMsCgkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0sCgkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKCQkJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI2CgkJCQkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNi1JRXMsCgkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC03CgkJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjYtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCX0sCgkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQkJCXI3CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI3CgkJCQkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNy1JRXMsCgkJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtOAoJCQkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNy1hZGQtZXh0CQlCSVQgU1RSSU5HCU9QVElPTkFMLAoJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCQkJCX0sCgkJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KfQoKVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCgkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCgktLSBVVFJBTiBtb2JpbGl0eSBJRXMKCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcwoJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCgkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQlkdW1teQkJCQkJCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAoJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJCU9QVElPTkFMLAoJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJTlVMTAoJCX0sCgkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJCU9QVElPTkFMCn0KClRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgewoJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQKCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTAp9CgpUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCQlTU0RULVVMCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgb3JkZXIgb2YgdGhlIFJMcyBpbiBJRSBjZWxsLWlkLVBlclJMLUxpc3QgaXMgdGhlIHNhbWUgYXMKCQktLSBpbiBJRSBETC1JbmZvcm1hdGlvblBlclJMLUxpc3QgaW5jbHVkZWQgaW4gdGhpcyBtZXNzYWdlCgkJY2VsbC1pZC1QZXJSTC1MaXN0CQkJCQlDZWxsSWRlbnRpdHktUGVyUkwtTGlzdAkJCQlPUFRJT05BTAp9CgpUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWRsLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJREwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAkJT1BUSU9OQUwKfQoKVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCgkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAoJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCgkJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAoJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAoJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAoJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCgkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCS0tICdkdW1teScsICdkdW1teTEnIGFuZCAnZHVtbXkyJyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAoJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCUNIT0lDRSB7CgkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAoJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJTlVMTAoJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAoJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjQJCU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNAkJCU9QVElPTkFMLAoJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJTlVMTAoJCX0sCgkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNAkJCQlPUFRJT05BTCwKCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNAkJCU9QVElPTkFMCn0KClRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjUtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAoJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCgktLSBVVFJBTiBtb2JpbGl0eSBJRXMKCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMLAoJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCgkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCS0tICdkdW1teScsICdkdW1teTEnIGFuZCAnZHVtbXkyJyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAoJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCUNIT0lDRSB7CgkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAoJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJTlVMTAoJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAoJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNQkJCU9QVElPTkFMLAoJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAoJCQl9LAoJCQl0ZGQJCQkJCQkJTlVMTAoJCX0sCgkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCgkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNQkJCQlPUFRJT05BTCwKCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNQkJCU9QVElPTkFMCn0KClRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgRXF1aXBtZW50IElFcwoJCWRlbGF5UmVzdHJpY3Rpb25GbGFnCQkJRGVsYXlSZXN0cmljdGlvbkZsYWcJCQkJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJcHJpbWFyeS1wbG1uLUlkZW50aXR5CQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQktLSBUaGUgSUUgaGFycS1QcmVhbWJsZS1Nb2RlIHNob3VsZCBub3QgYmUgdXNlZCBpbiB0aGUgcjMgYW5kIHI0IHZlcnNpb25zIG9mIHRoZSBtZXNzYWdlCgkJLS0gSWYgaW5jbHVkZWQgaW4gdGhlIHIzIG9yIHI0IHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UsIHRoZSBVRSBzaG91bGQgaWdub3JlIHRoZSBJRQoJCWhhcnEtUHJlYW1ibGUtTW9kZQkJCQlIQVJRLVByZWFtYmxlLU1vZGUJCQkJCU9QVElPTkFMLAoJCWJlYWNvblBMRXN0CQkJCQkJQkVBQ09OLVBMLUVzdAkJCQkJCU9QVElPTkFMLAoJCXBvc3RWZXJpZmljYXRpb25QZXJpb2QJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTCwKCQlkaHMtc3luYwkJCQkJCURIUy1TeW5jCQkJCQkJCU9QVElPTkFMLAoJCXRpbWluZ01haW50YWluZWRTeW5jaEluZAkJVGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQkJT1BUSU9OQUwsCgktLSBNQk1TIElFcwoJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAp9CgpUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI2LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCgkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZwkJCQlPUFRJT05BTCwKCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCgkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCgktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNgkJCQkJCU9QVElPTkFMLAoJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMLAoJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCgkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjYJCQlPUFRJT05BTCwKCS0tIE1CTVMgSUVzCgkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCn0KClRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjctSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCQlkZWxheVJlc3RyaWN0aW9uRmxhZwkJCURlbGF5UmVzdHJpY3Rpb25GbGFnCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwKCQktLSBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAoJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAoJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvLXI2CQkJCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcwoJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAoJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI3CQkJCQkJT1BUSU9OQUwsCgkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAoJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uLXI3CQkJT1BUSU9OQUwsCgkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNwkJCQlPUFRJT05BTCwKCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNwkJCU9QVElPTkFMLAoJLS0gTUJNUyBJRXMKCQltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFRSQU5TUE9SVCBDSEFOTkVMIFJFQ09ORklHVVJBVElPTiBDT01QTEVURQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZSA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQl1bC1JbnRlZ1Byb3RBY3RpdmF0aW9uSW5mbwkJSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvCQkJT1BUSU9OQUwsCgkJLS0gVEFCVUxBUjogVUwtVGltaW5nQWR2YW5jZSBpcyBhcHBsaWNhYmxlIGZvciBUREQgbW9kZSBvbmx5LgoJCXVsLVRpbWluZ0FkdmFuY2UJCQkJVUwtVGltaW5nQWR2YW5jZQkJCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJY291bnQtQy1BY3RpdmF0aW9uVGltZQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCgkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAoJCS0tIGl0IHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRoZSByZWNlaXZlci4KCQlkdW1teQkJCQkJCQlSQi1BY3RpdmF0aW9uVGltZUluZm9MaXN0CQkJT1BUSU9OQUwsCgkJdWwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JVUwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS12N3h5ZXh0CgkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUtdjd4eWV4dC1JRXMsCgkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbkNvbXBsZXRlLXY3eHlleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgkJZXh0LXVsLVRpbWluZ0FkdmFuY2UJCQlFWFQtVUwtVGltaW5nQWR2YW5jZQkJCQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gVFJBTlNQT1JUIENIQU5ORUwgUkVDT05GSUdVUkFUSU9OIEZBSUxVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uRmFpbHVyZSA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbkZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFRSQU5TUE9SVCBGT1JNQVQgQ09NQklOQVRJT04gQ09OVFJPTCBpbiBBTSBvciBVTSBSTEMgbW9kZQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClRyYW5zcG9ydEZvcm1hdENvbWJpbmF0aW9uQ29udHJvbCA6Oj0gU0VRVUVOQ0UgewoJCS0tIHJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIgaXMgYWx3YXlzIGluY2x1ZGVkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCQlPUFRJT05BTCwKCQltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCQlmZGQJCQkJCQkJCQlOVUxMLAoJCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5CU9QVElPTkFMCgkJCX0JCgkJfSwKCQlkcGNoLVRGQ1MtSW5VcGxpbmsJCQkJCVRGQy1TdWJzZXQsCgkJYWN0aXZhdGlvblRpbWVGb3JURkNTdWJzZXQJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCXRmYy1Db250cm9sRHVyYXRpb24JCQkJCVRGQy1Db250cm9sRHVyYXRpb24JCQkJCU9QVElPTkFMLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJdHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJfQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gVFJBTlNQT1JUIEZPUk1BVCBDT01CSU5BVElPTiBDT05UUk9MIEZBSUxVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpUcmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvbkNvbnRyb2xGYWlsdXJlIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQl0cmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvbkNvbnRyb2xGYWlsdXJlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQl9CU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBVRSBDQVBBQklMSVRZIEVOUVVJUlkKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpVRUNhcGFiaWxpdHlFbnF1aXJ5IDo6PSBDSE9JQ0UgewoJcjMJCQkJCQkJCVNFUVVFTkNFIHsKCQl1ZUNhcGFiaWxpdHlFbnF1aXJ5LXIzCQkJVUVDYXBhYmlsaXR5RW5xdWlyeS1yMy1JRXMsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCXVlQ2FwYWJpbGl0eUVucXVpcnktcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsgCgkJCQl1ZUNhcGFiaWxpdHlFbnF1aXJ5LXY0YjBleHQJCVVFQ2FwYWJpbGl0eUVucXVpcnktdjRiMGV4dC1JRXMsCgkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJdWVDYXBhYmlsaXR5RW5xdWlyeS12NTkwZXh0CQlVRUNhcGFiaWxpdHlFbnF1aXJ5LXY1OTBleHQtSUVzLAoJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJdWVDYXBhYmlsaXR5RW5xdWlyeS12N3h5ZXh0CQlVRUNhcGFiaWxpdHlFbnF1aXJ5LXY3eHlleHQtSUVzLAoJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQl9CU9QVElPTkFMCgkJCQl9CU9QVElPTkFMCgkJCX0JT1BUSU9OQUwKCQl9CU9QVElPTkFMCgl9LAoJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgewoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9Cgl9Cn0KClVFQ2FwYWJpbGl0eUVucXVpcnktcjMtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudAkJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50Cn0KClVFQ2FwYWJpbGl0eUVucXVpcnktdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQtZXh0CUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNC1leHQKfQoKVUVDYXBhYmlsaXR5RW5xdWlyeS12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJCXN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxCQlTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcS12NTkwZXh0Cn0KClVFQ2FwYWJpbGl0eUVucXVpcnktdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjctZXh0CQlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjctZXh0CQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gVUUgQ0FQQUJJTElUWSBJTkZPUk1BVElPTgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQkJT1BUSU9OQUwsCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJCQlPUFRJT05BTCwKCS0tIE90aGVyIElFcwoJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eQkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdAkJT1BUSU9OQUwsCgkJdjM3ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjM3MGV4dAlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12MzcwZXh0LAoJCQl2MzgwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjM4MGV4dAkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjM4MGV4dC1JRXMsCgkJCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXYzYTBleHQJCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXYzYTBleHQtSUVzLAoJCQkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tcjMtYWRkLWV4dAkJQklUIFNUUklORwoJCQkJCQkJCQkoQ09OVEFJTklORyBVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi1yMy1hZGQtZXh0LUlFcykJT1BUSU9OQUwsCgkJCQkJCS0tIFJlc2VydmVkIGZvciBmdXR1cmUgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbgoJCQkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjRiMGV4dAkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjRiMGV4dCwKCQkJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjU5MGV4dAkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjU5MGV4dCwKCQkJCQkJCQl2NWMwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQkJCQl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NWMwZXh0CgkJCQkJCQkJCQkJCQkJCQkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjVjMGV4dCwKCQkJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJCQkJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY2OTBleHQKCQkJCQkJCQkJCQkJCQkJCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY2OTBleHQtSUVzLAoJCQkJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJCQkJCQl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12N3h5ZXh0CgkJCQkJCQkJCQkJCQkJCQlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12N3h5ZXh0LUlFcywKCQkJCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQkJCQkJCX0JCU9QVElPTkFMCgkJCQkJCQkJCX0JCU9QVElPTkFMCgkJCQkJCQkJfQkJT1BUSU9OQUwKCQkJCQkJCX0JCU9QVElPTkFMCgkJCQkJCX0JCU9QVElPTkFMCgkJCQkJfQkJT1BUSU9OQUwKCQkJCX0JCU9QVElPTkFMCgkJCX0JCU9QVElPTkFMCgkJfQkJT1BUSU9OQUwKfQoKVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjM3MGV4dCA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzNzBleHQJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzcwZXh0CQlPUFRJT05BTAp9CgpVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12MzgwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzODBleHQJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0CQlPUFRJT05BTCwKCQlkbC1QaHlzQ2hDYXBhYmlsaXR5RkRELXYzODBleHQJCQlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXYzODBleHQKfQoKVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjNhMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2EwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNhMGV4dAkJT1BUSU9OQUwKfQoKVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tcjMtYWRkLWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NjUwZXh0CQlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NjUwZXh0LUlFcwkJT1BUSU9OQUwsCgkJdjY4ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjY4MGV4dAkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjY4MGV4dC1JRXMsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQl9CQlPUFRJT05BTAp9CgpVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NGIwZXh0IDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjRiMGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY0YjBleHQJCU9QVElPTkFMCn0KClVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY1OTBleHQgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2cwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNnMGV4dAkJT1BUSU9OQUwsCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NTkwZXh0CQlPUFRJT05BTCwKCS0tIE90aGVyIElFcwoJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eS12NTkwZXh0CUludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NTkwZXh0CU9QVElPTkFMCn0KClVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY1YzBleHQgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NWMwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dAkJT1BUSU9OQUwKfQoKVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjY1MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY1MGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2NTBleHQKfQoKVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjY4MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjgwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY4MGV4dAp9CgpVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJdWVDYXBhYmlsaXR5Q29udGFpbmVyCQkJCUJJVCBTVFJJTkcKCQkJCQkJCQkJCQkJKENPTlRBSU5JTkcgVUUtQ2FwYWJpbGl0eUNvbnRhaW5lci1JRXMpCU9QVElPTkFMCn0KClVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY3eHlleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY3eHlleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY3eHlleHQJCU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBVRSBDQVBBQklMSVRZIElORk9STUFUSU9OIENPTkZJUk0KLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0gOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uQ29uZmlybS1yMwoJCQkJCQkJCQkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb25Db25maXJtLXIzLUlFcywKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uQ29uZmlybS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJfQlPUFRJT05BTAoJfSwKCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJfQp9CgpVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBVUExJTksgRElSRUNUIFRSQU5TRkVSCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKVXBsaW5rRGlyZWN0VHJhbnNmZXIgOjo9IFNFUVVFTkNFIHsKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1Eb21haW5JZGVudGl0eQkJCQlDTi1Eb21haW5JZGVudGl0eSwKCQluYXMtTWVzc2FnZQkJCQkJCU5BUy1NZXNzYWdlLAoJLS0gTWVhc3VyZW1lbnQgSUVzCgkJbWVhc3VyZWRSZXN1bHRzT25SQUNICQkJTWVhc3VyZWRSZXN1bHRzT25SQUNICQkJCU9QVElPTkFMLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJdXBsaW5rRGlyZWN0VHJhbnNmZXItcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQl1cGxpbmtEaXJlY3RUcmFuc2Zlci12NjkwZXh0CQlVcGxpbmtEaXJlY3RUcmFuc2Zlci12NjkwZXh0LUlFcywKCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKVXBsaW5rRGlyZWN0VHJhbnNmZXItdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIE1lYXN1cmVtZW50IElFcwoJbWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxCQlNZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEJCQkJT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFVQTElOSyBQSFlTSUNBTCBDSEFOTkVMIENPTlRST0wKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sIDo6PSBDSE9JQ0UgewoJcjMJCQkJCQkJCVNFUVVFTkNFIHsKCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXIzCVVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjMtSUVzLAoJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKCQkJdXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJdXBsaW5rUHlzaWNhbENoYW5uZWxDb250cm9sLXY0YjBleHQJCVVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtdjRiMGV4dC1JRXMsCgkJCQktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tcmVsZWFzZSA0IGluZm9ybWF0aW9uCgkJCQlub25jcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCU9QVElPTkFMCgkJCX0JT1BUSU9OQUwKCQl9CU9QVElPTkFMCgl9LAoJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgewoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI0CVVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjQtSUVzLAoJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNQoJCQkJCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXY2OTBleHQJVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC12NjkwZXh0LUlFcywKCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKCQkJCQl9CU9QVElPTkFMCgkJCQl9CU9QVElPTkFMCgkJCX0sCgkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCUNIT0lDRSB7CgkJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjUJVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC1yNS1JRXMsCgkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKCQkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI1LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJdXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC12NjkwZXh0CVVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtdjY5MGV4dC1JRXMsCgkJCQkJCXY2YTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFewoJCQkJCQkJdXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC12NmEwZXh0CgkJCQkJCQkJCQkJCQkJCQlVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXY2YTBleHQtSUVzLAoJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30gT1BUSU9OQUwKCQkJCQkJfQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0sCgkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKCQkJCQlyNwkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI3CVVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjctSUVzLAoJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtOAoJCQkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI3LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCQl9LAoJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJCQkJfQoJCQl9CgkJfQoJfQp9CgpVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwgCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWNjVHJDSC1Qb3dlckNvbnRyb2xJbmZvCQkJQ0NUckNILVBvd2VyQ29udHJvbEluZm8JCQkJT1BUSU9OQUwsCgkJdGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wJCQkJT1BUSU9OQUwsCgkJYWxwaGEJCQkJCQkJQWxwaGEJCQkJCQkJCU9QVElPTkFMLAoJCXNwZWNpYWxCdXJzdFNjaGVkdWxpbmcJCQlTcGVjaWFsQnVyc3RTY2hlZHVsaW5nCQkJCU9QVElPTkFMLAoJCXByYWNoLUNvbnN0YW50VmFsdWUJCQkJQ29uc3RhbnRWYWx1ZVRkZAkJCQkJT1BUSU9OQUwsCgkJcHVzY2gtQ29uc3RhbnRWYWx1ZQkJCQlDb25zdGFudFZhbHVlVGRkCQkJCQlPUFRJT05BTAp9CgpVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBJbiBjYXNlIG9mIFRERCwgb3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQgaXMgaW5jbHVkZWQgaW5zdGVhZCBvZiBJRQoJLS0gdXAtSVBETC1QYXJhbWV0ZXJzIGluIHVwLU9URE9BLUFzc2lzdGFuY2VEYXRhCglvcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERAlPcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERC1yNAlPUFRJT05BTAp9CgpVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQljY1RyQ0gtUG93ZXJDb250cm9sSW5mbwkJCUNDVHJDSC1Qb3dlckNvbnRyb2xJbmZvLXI0CQkJT1BUSU9OQUwsCgkJc3BlY2lhbEJ1cnN0U2NoZWR1bGluZwkJCVNwZWNpYWxCdXJzdFNjaGVkdWxpbmcJCQkJT1BUSU9OQUwsCgkJdGRkT3B0aW9uCQkJCQkJQ0hPSUNFIHsKCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKCQkJCXRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI0CU9QVElPTkFMLAoJCQkJYWxwaGEJCQkJCQkJQWxwaGEJCQkJCQlPUFRJT05BTCwKCQkJCXByYWNoLUNvbnN0YW50VmFsdWUJCQkJQ29uc3RhbnRWYWx1ZVRkZAkJCU9QVElPTkFMLAoJCQkJcHVzY2gtQ29uc3RhbnRWYWx1ZQkJCQlDb25zdGFudFZhbHVlVGRkCQkJT1BUSU9OQUwsCgkJCQlvcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERAlPcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERC1yNAlPUFRJT05BTAoJCQl9LAoJCQl0ZGQxMjgJCQkJCQkJU0VRVUVOQ0UgewoJCQkJdWwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycwlVTC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzLXI0CU9QVElPTkFMCgkJCX0KCQl9Cn0KClVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjUtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWNjVHJDSC1Qb3dlckNvbnRyb2xJbmZvCQkJQ0NUckNILVBvd2VyQ29udHJvbEluZm8tcjUJCQlPUFRJT05BTCwKCQlzcGVjaWFsQnVyc3RTY2hlZHVsaW5nCQkJU3BlY2lhbEJ1cnN0U2NoZWR1bGluZwkJCQlPUFRJT05BTCwKCQl0ZGRPcHRpb24JCQkJCQlDSE9JQ0UgewoJCQl0ZGQzODQJCQkJCQkJU0VRVUVOQ0UgewoJCQkJdGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjQJT1BUSU9OQUwsCgkJCQlhbHBoYQkJCQkJCQlBbHBoYQkJCQkJCU9QVElPTkFMLAoJCQkJcHJhY2gtQ29uc3RhbnRWYWx1ZQkJCQlDb25zdGFudFZhbHVlVGRkCQkJT1BUSU9OQUwsCgkJCQlwdXNjaC1Db25zdGFudFZhbHVlCQkJCUNvbnN0YW50VmFsdWVUZGQJCQlPUFRJT05BTCwKCQkJCW9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERECU9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERELXI0CU9QVElPTkFMLAoJCQkJaHMtU0lDSC1Qb3dlckNvbnRyb2wJCQlIUy1TSUNILVBvd2VyLUNvbnRyb2wtSW5mby1UREQzODQJT1BUSU9OQUwKCQkJfSwKCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKCQkJCXVsLVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMJVUwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNAlPUFRJT05BTAoJCQl9CgkJfQp9CgpVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBQaHlzaWNhbCBDaGFubmVsIElFcwoJCWJlYWNvblBMRXN0CQkJCQkJQkVBQ09OLVBMLUVzdAkJCQkJCU9QVElPTkFMCn0KClVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtdjZhMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFBoeXNpY2FsIENoYW5uZWwgSUVzCgkJZGVzaXJlZC1IUy1TSUNILVBvd2VyTGV2ZWwJCUlOVEVHRVIgKC0xMjAuLi01OCkJCQkJCU9QVElPTkFMLAoJCXRwYy1TdGVwLVNpemUJCQkJCUVOVU1FUkFURUQgeyBzMSwgczIsIHMzICwgc3BhcmUxIH0JT1BUSU9OQUwKfQoKVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC1yNy1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJY2NUckNILVBvd2VyQ29udHJvbEluZm8JCQlDQ1RyQ0gtUG93ZXJDb250cm9sSW5mby1yNwkJCU9QVElPTkFMLAoJCXNwZWNpYWxCdXJzdFNjaGVkdWxpbmcJCQlTcGVjaWFsQnVyc3RTY2hlZHVsaW5nCQkJCU9QVElPTkFMLAoJCXRkZE9wdGlvbgkJCQkJCUNIT0lDRSB7CgkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CgkJCQl0aW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbC1yNAlPUFRJT05BTCwKCQkJCWFscGhhCQkJCQkJCUFscGhhCQkJCQkJT1BUSU9OQUwsCgkJCQlwcmFjaC1Db25zdGFudFZhbHVlCQkJCUNvbnN0YW50VmFsdWVUZGQJCQlPUFRJT05BTCwKCQkJCXB1c2NoLUNvbnN0YW50VmFsdWUJCQkJQ29uc3RhbnRWYWx1ZVRkZAkJCU9QVElPTkFMLAoJCQkJb3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQJT3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQtcjQJT1BUSU9OQUwsCgkJCQlocy1TSUNILVBvd2VyQ29udHJvbAkJCUhTLVNJQ0gtUG93ZXItQ29udHJvbC1JbmZvLVRERDM4NAlPUFRJT05BTAoJCQl9LAoJCQl0ZGQ3NjgJCQkJCQkJU0VRVUVOQ0UgewoJCQkJdGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjcJT1BUSU9OQUwsCgkJCQlhbHBoYQkJCQkJCQlBbHBoYQkJCQkJCU9QVElPTkFMLAoJCQkJcHJhY2gtQ29uc3RhbnRWYWx1ZQkJCQlDb25zdGFudFZhbHVlVGRkCQkJT1BUSU9OQUwsCgkJCQlwdXNjaC1Db25zdGFudFZhbHVlCQkJCUNvbnN0YW50VmFsdWVUZGQJCQlPUFRJT05BTCwKCQkJCW9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERECU9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERELXI0CU9QVElPTkFMLAoJCQkJaHMtU0lDSC1Qb3dlckNvbnRyb2wJCQlIUy1TSUNILVBvd2VyLUNvbnRyb2wtSW5mby1UREQ3NjgJT1BUSU9OQUwKCQkJfSwKCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKCQkJCXVsLVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMJVUwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNAlPUFRJT05BTCwKCQkJCWRlc2lyZWQtSFMtU0lDSC1Qb3dlckxldmVsCQlJTlRFR0VSICgtMTIwLi4tNTgpCQkJCU9QVElPTkFMLAoJCQkJdHBjLVN0ZXAtU2l6ZQkJCQkJRU5VTUVSQVRFRCB7IHMxLCBzMiwgczMgLCBzcGFyZTEgfQlPUFRJT05BTAoJCQl9CgkJfQp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gVVJBIFVQREFURQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClVSQVVwZGF0ZSA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJdS1STlRJCQkJCQkJCVUtUk5USSwKCQl1cmEtVXBkYXRlQ2F1c2UJCQkJCVVSQS1VcGRhdGVDYXVzZSwKCQlwcm90b2NvbEVycm9ySW5kaWNhdG9yCQkJUHJvdG9jb2xFcnJvckluZGljYXRvcldpdGhNb3JlSW5mbywKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCXVyYVVwZGF0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJfQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gVVJBIFVQREFURSBDT05GSVJNCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKVVJBVXBkYXRlQ29uZmlybSA6Oj0gQ0hPSUNFIHsKCXIzCQkJCQkJCQlTRVFVRU5DRSB7CgkJdXJhVXBkYXRlQ29uZmlybS1yMwkJCQlVUkFVcGRhdGVDb25maXJtLXIzLUlFcywKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCXVyYVVwZGF0ZUNvbmZpcm0tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCXVyYVVwZGF0ZUNvbmZpcm0tdjY5MGV4dAkJCVVSQVVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMsCgkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKCX0sCglsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKCQkJcjUJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCXVyYVVwZGF0ZUNvbmZpcm0tcjUJCQkJVVJBVXBkYXRlQ29uZmlybS1yNS1JRXMsCgkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJdXJhVXBkYXRlQ29uZmlybS12NjkwZXh0CQkJVVJBVXBkYXRlQ29uZmlybS12NjkwZXh0LUlFcywKCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJCX0JT1BUSU9OQUwKCQkJfSwKCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CgkJfQoJfQp9CgpVUkFVcGRhdGVDb25maXJtLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwgCgkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCgktLSBDTiBpbmZvcm1hdGlvbiBlbGVtZW50cwoJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwKfQoKVVJBVXBkYXRlQ29uZmlybS1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCgkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCgkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAoJLS0gQ04gaW5mb3JtYXRpb24gZWxlbWVudHMKCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwKfQoKVVJBVXBkYXRlQ29uZmlybS12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCXByaW1hcnktcGxtbi1JZGVudGl0eQkJCQlQTE1OLUlkZW50aXR5CQkJCQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gVVJBIFVQREFURSBDT05GSVJNIGZvciBDQ0NICi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKVVJBVXBkYXRlQ29uZmlybS1DQ0NIIDo6PSBDSE9JQ0UgewoJcjMJCQkJCQkJCVNFUVVFTkNFIHsKCQl1cmFVcGRhdGVDb25maXJtLUNDQ0gtcjMJCVVSQVVwZGF0ZUNvbmZpcm0tQ0NDSC1yMy1JRXMsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQl1cmFVcGRhdGVDb25maXJtLUNDQ0gtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCXVyYVVwZGF0ZUNvbmZpcm0tdjY5MGV4dAkJCVVSQVVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMsCgkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKCX0sCglsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CgkJdS1STlRJCQkJCQkJCVUtUk5USSwKCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAoJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQoJfQp9CgpVUkFVcGRhdGVDb25maXJtLUNDQ0gtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQl1LVJOVEkJCQkJCQkJVS1STlRJLAoJLS0gVGhlIHJlc3Qgb2YgdGhlIG1lc3NhZ2UgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgc2VudCBvbiBEQ0NILgoJCXVyYVVwZGF0ZUNvbmZpcm0JCQkJVVJBVXBkYXRlQ29uZmlybS1yMy1JRXMKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFVUUkFOIE1PQklMSVRZIElORk9STUFUSU9OCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uIDo6PSBDSE9JQ0UgewoJcjMJCQkJCQkJCVNFUVVFTkNFIHsKCQl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb24tcjMJCVVUUkFOTW9iaWxpdHlJbmZvcm1hdGlvbi1yMy1JRXMsCgkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb24tdjNhMGV4dAlVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb24tdjNhMGV4dC1JRXMsCgkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCQl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb24tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCXV0cmFuTW9iaWxpdHlJbmZvcm1hdGlvbi12NjkwZXh0CVV0cmFuTW9iaWxpdHlJbmZvcm1hdGlvbi12NjkwZXh0LUlFcywKCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCQl9CQlPUFRJT05BTAoJCQl9CQlPUFRJT05BTAoJCX0JCU9QVElPTkFMCgl9LAoJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgewoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCgkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb24tcjUJCVVUUkFOTW9iaWxpdHlJbmZvcm1hdGlvbi1yNS1JRXMsCgkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uLXY2OTBleHQJVXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uLXY2OTBleHQtSUVzLAoJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJfQlPUFRJT05BTAoJCQl9LAoJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KCQl9Cgl9Cn0KClVUUkFOTW9iaWxpdHlJbmZvcm1hdGlvbi1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsIAoJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCgkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAoJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCXVlLUNvbm5UaW1lcnNBbmRDb25zdGFudHMJCVVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMJCQlPUFRJT05BTCwKCS0tIENOIGluZm9ybWF0aW9uIGVsZW1lbnRzCgkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mb0Z1bGwJCQkJT1BUSU9OQUwsCgktLSBVVFJBTiBtb2JpbGl0eSBJRXMKCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCn0KClVUUkFOTW9iaWxpdHlJbmZvcm1hdGlvbi12M2EwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJdWUtQ29ublRpbWVyc0FuZENvbnN0YW50cy12M2EwZXh0CQlVRS1Db25uVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQKfQoKVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uLXI1LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCgkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJdWUtQ29ublRpbWVyc0FuZENvbnN0YW50cwkJVUUtQ29ublRpbWVyc0FuZENvbnN0YW50cy1yNQkJT1BUSU9OQUwsCgktLSBDTiBpbmZvcm1hdGlvbiBlbGVtZW50cwoJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm9GdWxsCQkJCU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTAp9CgpVdHJhbk1vYmlsaXR5SW5mb3JtYXRpb24tdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIENvcmUgbmV0d29yayBJRXMKCQlwcmltYXJ5LXBsbW4tSWRlbnRpdHkJCQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBVVFJBTiBNT0JJTElUWSBJTkZPUk1BVElPTiBDT05GSVJNCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uQ29uZmlybSA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwgCgkJdWwtSW50ZWdQcm90QWN0aXZhdGlvbkluZm8JCUludGVncml0eVByb3RBY3RpdmF0aW9uSW5mbwkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCWNvdW50LUMtQWN0aXZhdGlvblRpbWUJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKCQktLSBpdCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIuCgkJZHVtbXkJCQkJCQkJUkItQWN0aXZhdGlvblRpbWVJbmZvTGlzdAkJCU9QVElPTkFMLAoJCXVsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCVVMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCgkJCXV0cmFuTW9iaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFVUUkFOIE1PQklMSVRZIElORk9STUFUSU9OIEZBSUxVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb25GYWlsdXJlIDo6PSBTRVFVRU5DRSB7CgktLSBVRSBpbmZvcm1hdGlvbiBlbGVtZW50cwoJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsIAoJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCgkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb25GYWlsdXJlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKCQl9CU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIEFDQ0VTUyBJTkZPUk1BVElPTgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCk1CTVNBY2Nlc3NJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgewoJLS0gQWNjZXNzIEluZm9ybWF0aW9uIElFcwoJCW1ibXMtU2VydmljZUFjY2Vzc0luZm9MaXN0CQlNQk1TLVNlcnZpY2VBY2Nlc3NJbmZvTGlzdC1yNiwKCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIENPTU1PTiBQVE0gUkIgSU5GT1JNQVRJT04KLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpNQk1TQ29tbW9uUFRNUkJJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgewoJLS0gQ29tbW9uIFBUTSBSQiBJbmZvcm1hdGlvbiBJRXMKCQltYm1zLUNvbW1vblJCSW5mb3JtYXRpb25MaXN0CU1CTVMtQ29tbW9uUkJJbmZvcm1hdGlvbkxpc3QtcjYsCgkJbWJtcy1UcmFuc3BDaEluZm9Gb3JFYWNoVHJDaAlNQk1TLVRyYW5zcENoSW5mb0ZvckVhY2hUckNoLXI2LAoJCW1ibXMtVHJhbnNwQ2hJbmZvRm9yRWFjaENDVHJDaAlNQk1TLVRyYW5zcENoSW5mb0ZvckVhY2hDQ1RyQ2gtcjYJT1BUSU9OQUwsCgkJbWJtcy1QaHlDaEluZm9ybWF0aW9uTGlzdAkJTUJNUy1QaHlDaEluZm9ybWF0aW9uTGlzdC1yNiwKCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIENVUlJFTlQgQ0VMTCBQVE0gUkIgSU5GT1JNQVRJT04KLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpNQk1TQ3VycmVudENlbGxQVE1SQkluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CgktLSBDdXJyZW50IENlbGwgUFRNIFJCIEluZm9ybWF0aW9uIElFcwoJCW1ibXMtQ3VycmVudENlbGwtU0NDUENITGlzdAkJTUJNUy1DdXJyZW50Q2VsbC1TQ0NQQ0hMaXN0LXI2CQlPUFRJT05BTCwKCQltYm1zLVNJQlR5cGU1LVNDQ1BDSExpc3QJCU1CTVMtU0lCVHlwZTUtU0NDUENITGlzdC1yNgkJCU9QVElPTkFMLAoJLS0gTm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMKCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIE1CTVMgR0VORVJBTCBJTkZPUk1BVElPTgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCk1CTVNHZW5lcmFsSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKCS0tIE1CTVMgR2VuZXJhbCBJbmZvcm1hdGlvbiBJRXMKCQltYm1zLVByZWZlcnJlZEZyZXF1ZW5jeUluZm8JCU1CTVMtUHJlZmVycmVkRnJlcXVlbmN5TGlzdC1yNgkJT1BUSU9OQUwsCgkJbWJtcy1UaW1lcnNBbmRDb3VudGVycwkJCU1CTVMtVGltZXJzQW5kQ291bnRlcnMtcjYsCgkJbWljaENvbmZpZ3VyYXRpb25JbmZvCQkJTUJNUy1NSUNIQ29uZmlndXJhdGlvbkluZm8tcjYsCgkJY2VsbEdyb3VwSWRlbnRpdHkJCQkJTUJNUy1DZWxsR3JvdXBJZGVudGl0eS1yNiwKCQltc2NoRGVmYXVsdENvbmZpZ3VyYXRpb25JbmZvCU1CTVMtTVNDSC1Db25maWd1cmF0aW9uSW5mby1yNgkJT1BUSU9OQUwsCgktLSBOb24gY3JpdGljYWwgZXh0ZW5zaW9ucwoJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJbWJtc0dlbmVyQWxJbmZvcm1hdGlvbi12N3h5ZXh0CU1CTVNHZW5lcmFsSW5mb3JtYXRpb24tdjd4eWV4dC1JRXMsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCX0KfQoKTUJNU0dlbmVyYWxJbmZvcm1hdGlvbi12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJCW1ibXNNSUNIQ29uZmlndXJhdGlvbi12N3h5ZXh0CU1CTVMtTUlDSENvbmZpZ3VyYXRpb25JbmZvLXI3CQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTUJNUyBNT0RJRklDQVRJT04gUkVRVUVTVAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCk1CTVNNb2RpZmljYXRpb25SZXF1ZXN0IDo6PSBTRVFVRU5DRSB7CgktLSBNQk1TIE1vZGlmaWNhdGlvbiBSZXF1ZXN0IElFcwoJCW1ibXMtUHJlZmVycmVkRnJlcVJlcXVlc3QJCU1CTVMtU2VydmljZUlkZW50aXR5LXI2CQkJCU9QVElPTkFMLAoJCXJiLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCQlPUFRJT05BTCwKCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIE1PRElGSUVEIFNFUlZJQ0VTIElORk9STUFUSU9OCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUJNU01vZGlmaWVkU2VydmljZXNJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgewoJLS0gTUJNUyBNb2RpZmllZCBTZXJ2aWNlcyBJbmZvcm1hdGlvbiBJRXMKCQltb2RpZmVkU2VydmljZUxpc3QJCQkJTUJNUy1Nb2RpZmVkU2VydmljZUxpc3QtcjYJCQlPUFRJT05BTCwKCQltYm1zLVJlYWNxdWlyZU1DQ0gJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwsCgkJbWJtcy1EeW5hbWljUGVyc2lzdGVuY2VMZXZlbAlEeW5hbWljUGVyc2lzdGVuY2VMZXZlbAkJCQlPUFRJT05BTCwKCQllbmRPZk1vZGlmaWVkTUNDSEluZm9ybWF0aW9uCUlOVEVHRVIgKDEuLjE2KQkJCQkJCU9QVElPTkFMLAoJCW1ibXNOdW1iZXJPZk5laWdoYm91ckNlbGxzCQlNQk1TLU51bWJlck9mTmVpZ2hib3VyQ2VsbHMtcjYsCgkJbWJtcy1BbGxVbm1vZGlmaWVkUFRNU2VydmljZXMJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwsCgkJbWJtcy1QVE1BY3RpdmF0aW9uVGltZQkJCU1CTVMtUFRNQWN0aXZhdGlvblRpbWUtcjYJCQlPUFRJT05BTCwKCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIE5FSUdIQk9VUklORyBDRUxMIFBUTSBSQiBJTkZPUk1BVElPTgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCk1CTVNOZWlnaGJvdXJpbmdDZWxsUFRNUkJJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgewoJLS0gTUJNUyBOZWlnaGJvdXJpbmcgQ2VsbCBQVE0gUkIgSW5mb3JtYXRpb24gSUVzCgkJbmVpZ2hib3VyaW5nQ2VsbElkZW50aXR5CQlJbnRyYUZyZXFDZWxsSUQsCgkJbmVpZ2hib3VyaW5nQ2VsbFNDQ1BDSExpc3QJCU1CTVMtTmVpZ2hib3VyaW5nQ2VsbFNDQ1BDSExpc3QtcjYsCgktLSBOb24gY3JpdGljYWwgZXh0ZW5zaW9ucwoJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTUJNUyBTQ0hFRFVMSU5HIElORk9STUFUSU9OCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUJNU1NjaGVkdWxpbmdJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgewoJLS0gTUJNUyBTY2hlZHVsaW5nIEluZm9ybWF0aW9uIElFcwoJCXNlcnZpY2VTY2hlZHVsaW5nSW5mb0xpc3QJCU1CTVMtU2VydmljZVNjaGVkdWxpbmdJbmZvTGlzdC1yNiwKCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFVOTU9ESUZJRUQgU0VSVklDRVMgSU5GT1JNQVRJT04KLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpNQk1TVW5tb2RpZmllZFNlcnZpY2VzSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKCS0tIE1CTVMgVW5tb2RpZmllZCBTZXJ2aWNlcyBJbmZvcm1hdGlvbiBJRXMKCQl1bm1vZGlmaWVkU2VydmljZUxpc3QJCQlNQk1TLVVubW9kaWZpZWRTZXJ2aWNlTGlzdC1yNgkJT1BUSU9OQUwsCgktLSBOb24gY3JpdGljYWwgZXh0ZW5zaW9ucwoJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAp9CgpFTkQKCkluZm9ybWF0aW9uRWxlbWVudHMgREVGSU5JVElPTlMgQVVUT01BVElDIFRBR1MgOjo9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gICAgIENPUkUgTkVUV09SSyBJTkZPUk1BVElPTiBFTEVNRU5UUyAoMTAuMy4xKQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkJFR0lOCgpJTVBPUlRTCgoJaGlQRFNDSGlkZW50aXRpZXMsCgloaVBVU0NIaWRlbnRpdGllcywKCWhpUk0sCgltYXhBQywKCW1heEFkZGl0aW9uYWxNZWFzLAoJbWF4QVNDLAoJbWF4QVNDbWFwLAoJbWF4QVNDcGVyc2lzdCwKCW1heENDVHJDSCwKCW1heENlbGxNZWFzLAoJbWF4Q2VsbE1lYXMtMSwKCW1heENOZG9tYWlucywKCW1heENQQ0hzZXRzLAoJbWF4RFBDSC1ETGNoYW4sCgltYXhEUERDSC1VTCwKCW1heERSQUNjbGFzc2VzLAoJbWF4RS1EQ0hNQUNkRmxvdywKCW1heEUtRENITUFDZEZsb3ctMSwKCW1heEZBQ0hQQ0gsCgltYXhGcmVxLAoJbWF4RnJlcUJhbmRzRkRELAoJbWF4RnJlcUJhbmRzRkRELWV4dCwKCW1heEZyZXFCYW5kc1RERCwKCW1heEZyZXFCYW5kc0dTTSwKCW1heEdFUkFOLVNJLAoJbWF4SFByb2Nlc3NlcywKCW1heEhTRFNDSFRCSW5kZXgsCgltYXhIU0RTQ0hUQkluZGV4LXRkZDM4NCwKCW1heEhTU0NDSHMsCgltYXhJbnRlclN5c01lc3NhZ2VzLAoJbWF4TG9DSHBlclJMQywKCW1heE1BQy1kLVBEVXNpemVzLAoJbWF4TUJNUy1Db21tb25DQ1RyQ2gsCgltYXhNQk1TLUNvbW1vblBoeUNoLAoJbWF4TUJNUy1Db21tb25SQiwKCW1heE1CTVMtQ29tbW9uVHJDaCwKCW1heE1CTVMtRnJlcSwKCW1heE1CTVMtTDFDUCwKCW1heE1CTVNzZXJ2Q291bnQsCgltYXhNQk1Tc2Vydk1vZGlmLAoJbWF4TUJNU3NlcnZTY2hlZCwKCW1heE1CTVNzZXJ2VW5tb2RpZiwKCW1heE1CTVNUcmFuc21pcywKCW1heE1lYXNFdmVudCwKCW1heE1lYXNJbnRlcnZhbHMsCgltYXhNZWFzUGFyRXZlbnQsCgltYXhOdW1DRE1BMjAwMEZyZXFzLAoJbWF4TnVtRkRERnJlcXMsCgltYXhOdW1HU01GcmVxUmFuZ2VzLAoJbWF4R1NNVGFyZ2V0Q2VsbHMsCgltYXhOdW1URERGcmVxcywKCW1heE90aGVyUkFULAoJbWF4T3RoZXJSQVQtMTYsCgltYXhQYWdlMSwKCW1heFBDUENILUFQc2lnLAoJbWF4UENQQ0gtQVBzdWJDaCwKCW1heFBDUENILUNEc2lnLAoJbWF4UENQQ0gtQ0RzdWJDaCwKCW1heFBDUENILVNGLAoJbWF4UENQQ0hzLAoJbWF4UERDUEFsZ29UeXBlLAoJbWF4UERTQ0gsCgltYXhQRFNDSC1URkNJZ3JvdXBzLAoJbWF4UFJBQ0gsCgltYXhQUkFDSC1GUEFDSCwKCW1heFByZWRlZkNvbmZpZywKCW1heFBVU0NILAoJbWF4UXVldWVJRHMsCgltYXhSQUJzZXR1cCwKCW1heFJBVCwKCW1heFJCLAoJbWF4UkJhbGxSQUJzLAoJbWF4UkJwZXJUckNoLAoJbWF4UkJNdXhPcHRpb25zLAoJbWF4UkJwZXJSQUIsCgltYXhSZXBvcnRlZEdTTUNlbGxzLAoJbWF4UkxDUERVc2l6ZVBlckxvZ0NoYW4sCgltYXhTUkJzZXR1cCwKCW1heFJMLAoJbWF4UkwtMSwKCW1heEVEQ0hSTCwKCW1heFJPSEMtUGFja2V0U2l6ZXMtcjQsCgltYXhST0hDLVByb2ZpbGUtcjQsCgltYXhTQ0NQQ0gsCgltYXhTYXQsCgltYXhTSUIsCgltYXhTSUItRkFDSCwKCW1heFN5c3RlbUNhcGFiaWxpdHksCgltYXhURiwKCW1heFRGLUNQQ0gsCgltYXhURkMsCgltYXhURkNzdWIsCgltYXhURkNJLTItQ29tYnMsCgltYXhUR1BTLAoJbWF4VHJDSCwKCW1heFRyQ0hwcmVjb25mLAoJbWF4VFMsCgltYXhUUy0xLAoJbWF4VFMtMiwKCW1heFRTLUxDUiwKCW1heFRTLUxDUi0xLAoJbWF4VVJBLAoJbWF4VVJOVEktR3JvdXAKRlJPTSBDb25zdGFudC1kZWZpbml0aW9uczsKCkFuc2ktNDEtSUROTlMgOjo9CQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE0KSkKCkNOLURvbWFpbklkZW50aXR5IDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWNzLWRvbWFpbiwKCQkJCQkJCQkJCXBzLWRvbWFpbiB9CgpDTi1Eb21haW5JbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7Cgljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCgljbi1Eb21haW5TcGVjaWZpY05BUy1JbmZvCQkJTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUAp9CgpDTi1Eb21haW5JbmZvcm1hdGlvbkZ1bGwgOjo9CQlTRVFVRU5DRSB7Cgljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCgljbi1Eb21haW5TcGVjaWZpY05BUy1JbmZvCQkJTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUCwKCWNuLURSWC1DeWNsZUxlbmd0aENvZWZmCQkJCUNOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50Cn0KCkNOLURvbWFpbkluZm9ybWF0aW9uTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDTmRvbWFpbnMpKSBPRgoJCQkJCQkJCQkJQ04tRG9tYWluSW5mb3JtYXRpb24KCkNOLURvbWFpbkluZm9ybWF0aW9uTGlzdEZ1bGwgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDTmRvbWFpbnMpKSBPRgoJCQkJCQkJCQkJQ04tRG9tYWluSW5mb3JtYXRpb25GdWxsCgpDTi1Eb21haW5TeXNJbmZvIDo6PQkJCQlTRVFVRU5DRSB7Cgljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCgljbi1UeXBlCQkJCQkJCQlDSE9JQ0UgewoJCWdzbS1NQVAJCQkJCQkJCU5BUy1TeXN0ZW1JbmZvcm1hdGlvbkdTTS1NQVAsCgkJYW5zaS00MQkJCQkJCQkJTkFTLVN5c3RlbUluZm9ybWF0aW9uQU5TSS00MQoJfSwKCWNuLURSWC1DeWNsZUxlbmd0aENvZWZmCQkJCUNOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50Cn0KCkNOLURvbWFpblN5c0luZm9MaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDTmRvbWFpbnMpKSBPRgoJCQkJCQkJCQkJQ04tRG9tYWluU3lzSW5mbwoKQ04tSW5mb3JtYXRpb25JbmZvIDo6PSAJCQkJU0VRVUVOQ0UgewoJcGxtbi1JZGVudGl0eQkJCQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCWNuLUNvbW1vbkdTTS1NQVAtTkFTLVN5c0luZm8JCU5BUy1TeXN0ZW1JbmZvcm1hdGlvbkdTTS1NQVAJCU9QVElPTkFMLAoJY24tRG9tYWluSW5mb3JtYXRpb25MaXN0CQkJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0CQkJT1BUSU9OQUwKfQoKQ04tSW5mb3JtYXRpb25JbmZvLXI2IDo6PSAJCQlTRVFVRU5DRSB7CglwbG1uLUlkZW50aXR5CQkJCQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJY24tQ29tbW9uR1NNLU1BUC1OQVMtU3lzSW5mbwkJTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUAkJT1BUSU9OQUwsCgljbi1Eb21haW5JbmZvcm1hdGlvbkxpc3QJCQlDTi1Eb21haW5JbmZvcm1hdGlvbkxpc3QJCQlPUFRJT05BTCwKCXByaW1hcnktcGxtbi1JZGVudGl0eQkJCQlQTE1OLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwKfQoKQ04tSW5mb3JtYXRpb25JbmZvRnVsbCA6Oj0gCQkJU0VRVUVOQ0UgewoJcGxtbi1JZGVudGl0eQkJCQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCWNuLUNvbW1vbkdTTS1NQVAtTkFTLVN5c0luZm8JCU5BUy1TeXN0ZW1JbmZvcm1hdGlvbkdTTS1NQVAJCU9QVElPTkFMLAoJY24tRG9tYWluSW5mb3JtYXRpb25MaXN0RnVsbAkJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0RnVsbAkJT1BUSU9OQUwKfQoKRGlnaXQgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjkpCgpHc20tbWFwLUlETk5TIDo6PQkJCQkJCQlTRVFVRU5DRSB7Cglyb3V0aW5nYmFzaXMJCQkJCQkJCQlDSE9JQ0UgewoJCWxvY2FsUFRNU0kJCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlyb3V0aW5ncGFyYW1ldGVyCQkJCQkJCQlSb3V0aW5nUGFyYW1ldGVyCgkJfSwKCQl0TVNJb2ZzYW1lUExNTgkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcm91dGluZ3BhcmFtZXRlcgkJCQkJCQkJUm91dGluZ1BhcmFtZXRlcgoJCX0sCgkJdE1TSW9mZGlmZmVyZW50UExNTgkJCQkJCQkJU0VRVUVOQ0UgewoJCQlyb3V0aW5ncGFyYW1ldGVyCQkJCQkJCQlSb3V0aW5nUGFyYW1ldGVyCgkJfSwKCQlpTVNJcmVzcG9uc2V0b3BhZ2luZwkJCQkJCQlTRVFVRU5DRSB7CgkJCXJvdXRpbmdwYXJhbWV0ZXIJCQkJCQkJCVJvdXRpbmdQYXJhbWV0ZXIKCQl9LAoJCWlNU0ljYXVzZVVFaW5pdGlhdGVkRXZlbnQJCQkJCQlTRVFVRU5DRSB7CgkJCXJvdXRpbmdwYXJhbWV0ZXIJCQkJCQkJCVJvdXRpbmdQYXJhbWV0ZXIKCQl9LAoJCWlNRUkJCQkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcm91dGluZ3BhcmFtZXRlcgkJCQkJCQkJUm91dGluZ1BhcmFtZXRlcgoJCX0sCgkJc3BhcmUyCQkJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXJvdXRpbmdwYXJhbWV0ZXIJCQkJCQkJCVJvdXRpbmdQYXJhbWV0ZXIKCQl9LAoJCXNwYXJlMQkJCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlyb3V0aW5ncGFyYW1ldGVyCQkJCQkJCQlSb3V0aW5nUGFyYW1ldGVyCgkJfQoJfSwKCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKCS0tIGl0IHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRoZSByZWNlaXZlci4KCWR1bW15CQkJCQkJCQkJQk9PTEVBTgp9CgpJTUVJIDo6PQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMTUpKSBPRgoJCQkJCQkJCQkJSU1FSS1EaWdpdAoKSU1FSS1EaWdpdCA6Oj0JCQkJCQlJTlRFR0VSICgwLi4xNSkKCklNU0ktR1NNLU1BUCA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICg2Li4yMSkpIE9GCgkJCQkJCQkJCQlEaWdpdAoKSW50cmFEb21haW5OYXNOb2RlU2VsZWN0b3IgOjo9CQkJCQlTRVFVRU5DRSB7Cgl2ZXJzaW9uCQkJCQkJCQkJCQlDSE9JQ0UgewoJCXJlbGVhc2U5OQkJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWNuLVR5cGUJCQkJCQkJCQkJCUNIT0lDRSB7CgkJCQlnc20tTWFwLUlETk5TCQkJCQkJCQkJR3NtLW1hcC1JRE5OUywKCQkJCWFuc2ktNDEtSUROTlMJCQkJCQkJCQlBbnNpLTQxLUlETk5TCgkJCX0KCQl9LAoJCWxhdGVyCQkJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWZ1dHVyZWNvZGluZwkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE1KSkKCQl9Cgl9Cn0KCkxBSSA6Oj0JCQkJCQkJCVNFUVVFTkNFIHsKCXBsbW4tSWRlbnRpdHkJCQkJCQlQTE1OLUlkZW50aXR5LAoJbGFjCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKQp9CgpNQ0MgOjo9CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMykpIE9GCgkJCQkJCQkJCQlEaWdpdAoKTU5DIDo6PQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDIuLjMpKSBPRgoJCQkJCQkJCQkJRGlnaXQKCk11bHRpcGxlUExNTi1MaXN0LXI2IDo6PQkJCVNFUVVFTkNFIHsKCW1pYlBMTU4tSWRlbnRpdHkJCQkJCUJPT0xFQU4sCgltdWx0aXBsZVBMTU5zCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjUpKSBPRgoJCQkJCQkJCQkJCVBMTU4tSWRlbnRpdHlXaXRoT3B0aW9uYWxNQ0MtcjYKfQoKTkFTLU1lc3NhZ2UgOjo9CQkJCQkJT0NURVQgU1RSSU5HIChTSVpFICgxLi40MDk1KSkKCk5BUy1TeW5jaHJvbmlzYXRpb24tSW5kaWNhdG9yIDo6PQlCSVQgU1RSSU5HKFNJWkUoNCkpCgpOQVMtU3lzdGVtSW5mb3JtYXRpb25HU00tTUFQIDo6PSAJT0NURVQgU1RSSU5HIChTSVpFICgxLi44KSkKClAtVE1TSS1HU00tTUFQIDo6PQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKQoKUGFnaW5nUmVjb3JkVHlwZUlEIDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWltc2ktR1NNLU1BUCwKCQkJCQkJCQkJCXRtc2ktR1NNLU1BUC1QLVRNU0ksCgkJCQkJCQkJCQlpbXNpLURTLTQxLAoJCQkJCQkJCQkJdG1zaS1EUy00MSB9CgpQTE1OLUlkZW50aXR5IDo6PQkJCQkJU0VRVUVOQ0UgewoJbWNjCQkJCQkJCQkJTUNDLAoJbW5jCQkJCQkJCQkJTU5DCn0KClBMTU4tSWRlbnRpdHlXaXRoT3B0aW9uYWxNQ0MtcjYgOjo9CVNFUVVFTkNFIHsKCW1jYwkJCQkJCQkJCU1DQwkJCQkJCU9QVElPTkFMLAoJbW5jCQkJCQkJCQkJTU5DCn0KClBMTU4tVHlwZSA6Oj0JCQkJCQlDSE9JQ0UgewoJZ3NtLU1BUAkJCQkJCQkJU0VRVUVOQ0UgewoJCXBsbW4tSWRlbnRpdHkJCQkJCQlQTE1OLUlkZW50aXR5Cgl9LAoJYW5zaS00MQkJCQkJCQlTRVFVRU5DRSB7CgkJcC1SRVYJCQkJCQkJUC1SRVYsCgkJbWluLVAtUkVWCQkJCQkJTWluLVAtUkVWLAoJCXNpZAkJCQkJCQkJU0lELAoJCW5pZAkJCQkJCQkJTklECgl9LAoJZ3NtLU1BUC1hbmQtQU5TSS00MQkJCQlTRVFVRU5DRSB7CgkJcGxtbi1JZGVudGl0eQkJCQkJUExNTi1JZGVudGl0eSwKCQlwLVJFVgkJCQkJCQlQLVJFViwKCQltaW4tUC1SRVYJCQkJCQlNaW4tUC1SRVYsCgkJc2lkCQkJCQkJCQlTSUQsCgkJbmlkCQkJCQkJCQlOSUQKCX0sCglzcGFyZQkJCQkJCQlOVUxMCn0KClJBQi1JZGVudGl0eSA6Oj0JCQkJCUNIT0lDRSB7Cglnc20tTUFQLVJBQi1JZGVudGl0eQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCglhbnNpLTQxLVJBQi1JZGVudGl0eQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSkKfQoKUkFJIDo6PQkJCQkJCQkJU0VRVUVOQ0UgewoJbGFpCQkJCQkJCQkJTEFJLAoJcmFjCQkJCQkJCQkJUm91dGluZ0FyZWFDb2RlCn0KClJvdXRpbmdBcmVhQ29kZSA6Oj0JCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKQoKUm91dGluZ1BhcmFtZXRlciA6Oj0JCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTApKQoKVE1TSS1HU00tTUFQIDo6PQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tICAgICBVVFJBTiBNT0JJTElUWSBJTkZPUk1BVElPTiBFTEVNRU5UUyAoMTAuMy4yKQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkFjY2Vzc0NsYXNzQmFycmVkIDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWJhcnJlZCwgbm90QmFycmVkIH0KCkFjY2Vzc0NsYXNzQmFycmVkTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAobWF4QUMpKSBPRgoJCQkJCQkJCQkJQWNjZXNzQ2xhc3NCYXJyZWQKCkFsbG93ZWRJbmRpY2F0b3IgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJYWxsb3dlZCwgbm90QWxsb3dlZCB9CgpDZWxsQWNjZXNzUmVzdHJpY3Rpb24gOjo9CQkJU0VRVUVOQ0UgewoJY2VsbEJhcnJlZAkJCQkJCQlDZWxsQmFycmVkLAoJY2VsbFJlc2VydmVkRm9yT3BlcmF0b3JVc2UJCQlSZXNlcnZlZEluZGljYXRvciwKCWNlbGxSZXNlcnZhdGlvbkV4dGVuc2lvbgkJCVJlc2VydmVkSW5kaWNhdG9yLAoJLS0gTk9URTogSUUgYWNjZXNzQ2xhc3NCYXJyZWRMaXN0IHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaWYgdGhlIElFIENlbGxBY2Nlc3NSZXN0cmljdGlvbgoJLS0gaXMgaW5jbHVkZWQgaW4gdGhlIElFIFN5c0luZm9UeXBlNAoJYWNjZXNzQ2xhc3NCYXJyZWRMaXN0CQkJCUFjY2Vzc0NsYXNzQmFycmVkTGlzdAkJCQlPUFRJT05BTAp9CgpDZWxsQmFycmVkIDo6PQkJCQkJCUNIT0lDRSB7CgliYXJyZWQJCQkJCQkJCVNFUVVFTkNFIHsKCQlpbnRyYUZyZXFDZWxsUmVzZWxlY3Rpb25JbmQJCQlBbGxvd2VkSW5kaWNhdG9yLAoJCXQtQmFycmVkCQkJCQkJCVQtQmFycmVkCgl9LAoJbm90QmFycmVkCQkJCQkJCU5VTEwKfQoKQ2VsbElkZW50aXR5IDo6PQkJCQkJQklUIFNUUklORyAoU0laRSAoMjgpKQoKQ2VsbElkZW50aXR5LVBlclJMLUxpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YgQ2VsbElkZW50aXR5CgpDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTMtNCA6Oj0JU0VRVUVOQ0UgewoJbWFwcGluZ0luZm8JCQkJCQkJTWFwcGluZ0luZm8JCQkJCQkJT1BUSU9OQUwsCgljZWxsU2VsZWN0UXVhbGl0eU1lYXN1cmUJCQlDSE9JQ0UgewoJCWNwaWNoLUVjLU4wCQkJCQkJCVNFUVVFTkNFIHsKCQkJLS0gRGVmYXVsdCB2YWx1ZSBmb3IgcS1IWVNULTItUyBpcyBxLUhZU1QtMS1TCgkJCXEtSFlTVC0yLVMJCQkJCQkJUS1IeXN0LVMJCQkJCU9QVElPTkFMCgkJCS0tIERlZmF1bHQgdmFsdWUgZm9yIHEtSFlTVC0yLVMgaXMgcS1IWVNULTEtUwoJCX0sCgkJY3BpY2gtUlNDUAkJCQkJCQlOVUxMCgl9LAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXMtSW50cmFzZWFyY2gJCQkJCQlTLVNlYXJjaFF1YWwJCQkJT1BUSU9OQUwsCgkJCXMtSW50ZXJzZWFyY2gJCQkJCQlTLVNlYXJjaFF1YWwJCQkJT1BUSU9OQUwsCgkJCXMtU2VhcmNoSENTCQkJCQkJCVMtU2VhcmNoUlhMRVYJCQkJT1BUSU9OQUwsCgkJCXJhdC1MaXN0CQkJCQkJCVJBVC1GREQtSW5mb0xpc3QJCQlPUFRJT05BTCwKCQkJcS1RdWFsTWluCQkJCQkJCVEtUXVhbE1pbiwKCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXMtSW50cmFzZWFyY2gJCQkJCQlTLVNlYXJjaFJYTEVWCQkJCU9QVElPTkFMLAoJCQlzLUludGVyc2VhcmNoCQkJCQkJUy1TZWFyY2hSWExFVgkJCQlPUFRJT05BTCwKCQkJcy1TZWFyY2hIQ1MJCQkJCQkJUy1TZWFyY2hSWExFVgkJCQlPUFRJT05BTCwKCQkJcmF0LUxpc3QJCQkJCQkJUkFULVRERC1JbmZvTGlzdAkJCU9QVElPTkFMLAoJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4KCQl9Cgl9LAkKCXEtSHlzdC1sLVMJCQkJCQkJUS1IeXN0LVMsCgl0LVJlc2VsZWN0aW9uLVMJCQkJCQlULVJlc2VsZWN0aW9uLVMsCgloY3MtU2VydmluZ0NlbGxJbmZvcm1hdGlvbgkJCUhDUy1TZXJ2aW5nQ2VsbEluZm9ybWF0aW9uCQkJT1BUSU9OQUwsCgltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCn0KCkRvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25Gb3JTaGFyZWROZXR3b3JrLXY2NzBleHQgOjo9IENIT0lDRSB7CgkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0aWN0aW9uTGlzdAkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvbkxpc3QtdjY3MGV4dCwKCQlkb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RpY3Rpb25QYXJhbWV0ZXJzRm9yQWxsCQlEb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uUGFyYW0tdjY3MGV4dAp9CgpEb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uTGlzdC12NjcwZXh0IDo6PSBTRVFVRU5DRSB7CgkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtZXRlcnNGb3JPcGVyYXRvcjEKCQkJCQkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQJT1BUSU9OQUwsCgkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtZXRlcnNGb3JPcGVyYXRvcjIKCQkJCQkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQJT1BUSU9OQUwsCgkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtZXRlcnNGb3JPcGVyYXRvcjMKCQkJCQkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQJT1BUSU9OQUwsCgkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtZXRlcnNGb3JPcGVyYXRvcjQKCQkJCQkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQJT1BUSU9OQUwsCgkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtZXRlcnNGb3JPcGVyYXRvcjUKCQkJCQkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQJT1BUSU9OQUwKfQoKRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQgOjo9IFNFUVVFTkNFIHsJCQoJCWNTRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvbgkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvbi12NjcwZXh0LAoJCXBTRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvbgkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvbi12NjcwZXh0Cn0KCkRvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb24tdjY3MGV4dCA6Oj0gQ0hPSUNFIHsKCQlub1Jlc3RyaWN0aW9uCQlOVUxMLAoJCXJlc3RyaWN0aW9uCQkJU0VRVUVOQ0UgewoJCQlkb21haW5TcGVjZmljQWNjZXNzQ2xhc3NCYXJyZWRMaXN0CQlBY2Nlc3NDbGFzc0JhcnJlZExpc3QJT1BUSU9OQUwKCQl9Cn0KCk1hcFBhcmFtZXRlciA6Oj0JCQkJCUlOVEVHRVIgKDAuLjk5KQoKTWFwcGluZyA6Oj0JCQkJCQkJU0VRVUVOQ0UgewoJcmF0CQkJCQkJCQkJUkFULAoJbWFwcGluZ0Z1bmN0aW9uUGFyYW1ldGVyTGlzdAkJTWFwcGluZ0Z1bmN0aW9uUGFyYW1ldGVyTGlzdAp9CgpNYXBwaW5nLUxDUi1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKCW1hcHBpbmdGdW5jdGlvblBhcmFtZXRlckxpc3QJCU1hcHBpbmdGdW5jdGlvblBhcmFtZXRlckxpc3QKfQoKTWFwcGluZ0Z1bmN0aW9uUGFyYW1ldGVyIDo6PQkJU0VRVUVOQ0UgewoJZnVuY3Rpb25UeXBlCQkJCQkJTWFwcGluZ0Z1bmN0aW9uVHlwZSwKCW1hcFBhcmFtZXRlcjEJCQkJCQlNYXBQYXJhbWV0ZXIJCQkJCQlPUFRJT05BTCwKCW1hcFBhcmFtZXRlcjIJCQkJCQlNYXBQYXJhbWV0ZXIsCgktLSBUaGUgcHJlc2VuY2Ugb2YgdXBwZXJMaW1pdCBpcyBjb25kaXRpb25hbCBvbiB0aGUgbnVtYmVyIG9mIHJlcGV0aXRpb24KCXVwcGVyTGltaXQJCQkJCQkJVXBwZXJMaW1pdAkJCQkJCQlPUFRJT05BTAp9CgpNYXBwaW5nRnVuY3Rpb25QYXJhbWV0ZXJMaXN0IDo6PSAJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNJbnRlcnZhbHMpKSBPRgoJCQkJCQkJCQkJTWFwcGluZ0Z1bmN0aW9uUGFyYW1ldGVyCgpNYXBwaW5nRnVuY3Rpb25UeXBlIDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWxpbmVhciwKCQkJCQkJCQkJCWZ1bmN0aW9uVHlwZTIsCgkJCQkJCQkJCQlmdW5jdGlvblR5cGUzLAoJCQkJCQkJCQkJZnVuY3Rpb25UeXBlNCB9CgotLSBJbiBNYXBwaW5nSW5mbyBsaXN0LCBtYXBwaW5nIGZvciBGREQgYW5kIDMuODRNY3BzIFRERCBpcyBkZWZpbmVkLgotLSBGb3IgMS4yOE1jcHMgVERELCBNYXBwaW5nLUxDUi1yNCBpcyB1c2VkIGluc3RlYWQuCk1hcHBpbmdJbmZvIDo6PQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQVQpKSBPRgoJCQkJCQkJCQkJTWFwcGluZwoKLS0gQWN0dWFsIHZhbHVlIFEtSHlzdC1TID0gSUUgdmFsdWUgKiAyClEtSHlzdC1TIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjIwKQoKUS1IeXN0LVMtRmluZSA6Oj0gSU5URUdFUiAoMC4uNDApCgpSQVQgOjo9CQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXV0cmEtRkRELAoJCQkJCQkJCQkJdXRyYS1UREQsCgkJCQkJCQkJCQlnc20sCgkJCQkJCQkJCQljZG1hMjAwMCB9CgpSQVQtRkRELUluZm8gOjo9CQkJCQlTRVFVRU5DRSB7CglyYXQtSWRlbnRpZmllcgkJCQkJCVJBVC1JZGVudGlmaWVyLAoJcy1TZWFyY2hSQVQJCQkJCQkJUy1TZWFyY2hRdWFsLAoJcy1IQ1MtUkFUCQkJCQkJCVMtU2VhcmNoUlhMRVYJCQkJCQkJT1BUSU9OQUwsCglzLUxpbWl0LVNlYXJjaFJBVAkJCQkJUy1TZWFyY2hRdWFsCn0KClJBVC1GREQtSW5mb0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhPdGhlclJBVCkpIE9GCgkJCQkJCQkJCQlSQVQtRkRELUluZm8KClJBVC1JZGVudGlmaWVyIDo6PQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlnc20sIGNkbWEyMDAwIH0KClJBVC1UREQtSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKCXJhdC1JZGVudGlmaWVyCQkJCQkJUkFULUlkZW50aWZpZXIsCglzLVNlYXJjaFJBVAkJCQkJCQlTLVNlYXJjaFJYTEVWLAoJcy1IQ1MtUkFUCQkJCQkJCVMtU2VhcmNoUlhMRVYJCQkJCQlPUFRJT05BTCwKCXMtTGltaXQtU2VhcmNoUkFUCQkJCQlTLVNlYXJjaFJYTEVWCn0KClJBVC1UREQtSW5mb0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhPdGhlclJBVCkpIE9GCgkJCQkJCQkJCQlSQVQtVERELUluZm8KClJlc2VydmVkSW5kaWNhdG9yIDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXJlc2VydmVkLAoJCQkJCQkJCQkJbm90UmVzZXJ2ZWQgfQoKLS0gQWN0dWFsIHZhbHVlIFMtU2VhcmNoUXVhbCA9IElFIHZhbHVlICogMgpTLVNlYXJjaFF1YWwgOjo9CQkJCQkJSU5URUdFUiAoLTE2Li4xMCkKCi0tIEFjdHVhbCB2YWx1ZSBTLVNlYXJjaFJYTEVWID0gKElFIHZhbHVlICogMikgKyAxClMtU2VhcmNoUlhMRVYgOjo9CQkJCQkJSU5URUdFUiAoLTUzLi40NSkKCi0tIEFjdHVhbCB2YWx1ZSBTY2FsaW5nRmFjdG9yID0gSUUgdmFsdWUgKiAwLjEKU3BlZWREZXBlbmRlbnRTY2FsaW5nRmFjdG9yIDo6PQkJSU5URUdFUiAoMC4uMTApCgpULUJhcnJlZCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXMxMCwgczIwLCBzNDAsIHM4MCwKCQkJCQkJCQkJCXMxNjAsIHMzMjAsIHM2NDAsIHMxMjgwIH0KClQtUmVzZWxlY3Rpb24tUyA6Oj0JCQkJCUlOVEVHRVIgKDAuLjMxKQoKLS0gQWN0dWFsIHZhbHVlIFQtUmVzZWxlY3Rpb24tUy1GaW5lID0gSUUgdmFsdWUgKiAwLjIKVC1SZXNlbGVjdGlvbi1TLUZpbmUgOjo9CQkJSU5URUdFUiAoMC4uMzEpCgotLSBBY3R1YWwgdmFsdWUgU2NhbGluZ0ZhY3RvciA9IElFIHZhbHVlICogMC4yNQpUcmVzZWxlY3Rpb25TY2FsaW5nRmFjdG9yIDo6PQkJSU5URUdFUiAoNC4uMTkpCgotLSBGb3IgVXBwZXJMaW1pdCwgdGhlIHVzZWQgcmFuZ2UgZGVwZW5kcyBvbiB0aGUgUkFUIHVzZWQuClVwcGVyTGltaXQgOjo9CQkJCQkJSU5URUdFUiAoMS4uOTEpCgpVUkEtSWRlbnRpdHkgOjo9CQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpCgpVUkEtSWRlbnRpdHlMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VVJBKSkgT0YKCQkJCQkJCQkJCVVSQS1JZGVudGl0eQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tICAgICBVU0VSIEVRVUlQTUVOVCBJTkZPUk1BVElPTiBFTEVNRU5UUyAoMTAuMy4zKQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yIDo6PQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXJlbC00LCByZWwtNSwgcmVsLTYsIHJlbC03LAoJCQkJCQkJCQkJc3BhcmUxMiwgc3BhcmUxMSwgc3BhcmUxMCwgc3BhcmU5LCBzcGFyZTgsCgkJCQkJCQkJCQlzcGFyZTcsCXNwYXJlNiwJc3BhcmU1LCBzcGFyZTQsIHNwYXJlMywKCQkJCQkJCQkJCXNwYXJlMiwgc3BhcmUxIH0KCi0tIFRBQlVMQVIgOiBmb3IgQWN0aXZhdGlvblRpbWUsIHZhbHVlICdub3cnIGFsd2F5cyBhcHBlYXIgYXMgZGVmYXVsdCwgYW5kIGlzIGVuY29kZWQKLS0gYnkgYWJzZW5jZSBvZiB0aGUgZmllbGQKQWN0aXZhdGlvblRpbWUgOjo9CQkJCQlJTlRFR0VSICgwLi4yNTUpCgpCYWNrb2ZmQ29udHJvbFBhcmFtcyA6Oj0JCQlTRVFVRU5DRSB7CgluLUFQLVJldHJhbnNNYXgJCQkJCQlOLUFQLVJldHJhbnNNYXgsCgluLUFjY2Vzc0ZhaWxzCQkJCQkJTi1BY2Nlc3NGYWlscywKCW5mLUJPLU5vQUlDSAkJCQkJCU5GLUJPLU5vQUlDSCwKCW5zLUJPLUJ1c3kJCQkJCQkJTlMtQk8tQnVzeSwKCW5mLUJPLUFsbEJ1c3kJCQkJCQlORi1CTy1BbGxCdXN5LAoJbmYtQk8tTWlzbWF0Y2gJCQkJCQlORi1CTy1NaXNtYXRjaCwKCXQtQ1BDSAkJCQkJCQkJVC1DUENICn0KCkMtUk5USSA6Oj0JCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKQoKQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50IDo6PQkJU0VRVUVOQ0UgewoJdWUtUmFkaW9DYXBhYmlsaXR5RkREVXBkYXRlUmVxdWlyZW1lbnQJQk9PTEVBTiwKCS0tIHVlLVJhZGlvQ2FwYWJpbGl0eVRERFVwZGF0ZVJlcXVpcmVtZW50IGlzIGZvciAzLjg0TWNwcyBUREQgdXBkYXRlIHJlcXVpcmVtZW50Cgl1ZS1SYWRpb0NhcGFiaWxpdHlURERVcGRhdGVSZXF1aXJlbWVudAlCT09MRUFOLAoJc3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXFMaXN0CQlTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcUxpc3QJCU9QVElPTkFMCn0KCkNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNC1leHQgOjo9IFNFUVVFTkNFIHsKCXVlLVJhZGlvQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LVRERDEyOAlCT09MRUFOCn0KCkNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNCA6Oj0JU0VRVUVOQ0UgewoJdWUtUmFkaW9DYXBhYmlsaXR5RkREVXBkYXRlUmVxdWlyZW1lbnQtRkRECUJPT0xFQU4sCgl1ZS1SYWRpb0NhcGFiaWxpdHlURERVcGRhdGVSZXF1aXJlbWVudC1UREQzODQJQk9PTEVBTiwKCXVlLVJhZGlvQ2FwYWJpbGl0eVRERFVwZGF0ZVJlcXVpcmVtZW50LVRERDEyOAlCT09MRUFOLAoJc3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXFMaXN0CQlTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcUxpc3QJCU9QVElPTkFMCn0KCkNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNy1leHQgOjo9IFNFUVVFTkNFIHsKCXVlLVJhZGlvQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LVRERDc2OAlCT09MRUFOCn0KCi0tIElmIHRoZSBJRSBDZWxsVXBkYXRlQ2F1c2UgaGFzIHRoZSB2YWx1ZSAnY2VsbFVwZGF0ZUNhdXNlLWV4dCcsIHRoZSBhY3R1YWwgdmFsdWUgaXMKLS0gZGVmaW5lZCBpbiB0aGUgSUUgQ2VsbFVwZGF0ZUNhdXNlLWV4dC4KQ2VsbFVwZGF0ZUNhdXNlIDo6PQkJCQkJRU5VTUVSQVRFRCB7IAoJCQkJCQkJCQkJY2VsbFJlc2VsZWN0aW9uLAoJCQkJCQkJCQkJcGVyaW9kaWNhbENlbGxVcGRhdGUsCgkJCQkJCQkJCQl1cGxpbmtEYXRhVHJhbnNtaXNzaW9uLAoJCQkJCQkJCQkJdXRyYW4tcGFnaW5nUmVzcG9uc2UsCgkJCQkJCQkJCQlyZS1lbnRlcmVkU2VydmljZUFyZWEsCgkJCQkJCQkJCQlyYWRpb2xpbmtGYWlsdXJlLAoJCQkJCQkJCQkJcmxjLXVucmVjb3ZlcmFibGVFcnJvciwKCQkJCQkJCQkJCWNlbGxVcGRhdGVDYXVzZS1leHQgfQoKLS0gVGhlIElFIENlbGxVcGRhdGVDYXVzZS1leHQgc2hhbGwgYmUgcHJlc2VudCwgaWYgdGhlIElFIENlbGxVcGRhdGVDYXVzZSBoYXMgdGhlCi0tIHZhbHVlICdjZWxsVXBkYXRlQ2F1c2UtZXh0Jy4KQ2VsbFVwZGF0ZUNhdXNlLWV4dCA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQltYm1zLVJlY2VwdGlvbiwKCQkJCQkJCQkJCW1ibXMtUFRQLVJCLVJlcXVlc3QsIHNwYXJlMiwgc3BhcmUxIH0KCkNoaXBSYXRlQ2FwYWJpbGl0eSA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQltY3BzMy04NCwgbWNwczEtMjggfQoKQ2hpcFJhdGVDYXBhYmlsaXR5LXI3IDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCW1jcHMzLTg0LCBtY3BzNy02OCwgbWNwczEtMjggfQoKQ2lwaGVyaW5nQWxnb3JpdGhtIDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXVlYTAsIHVlYTEgfQoKQ2lwaGVyaW5nTW9kZUNvbW1hbmQgOjo9CQkJQ0hPSUNFIHsKCXN0YXJ0UmVzdGFydAkJCQkJCUNpcGhlcmluZ0FsZ29yaXRobSwKCWR1bW15CQkJCQkJTlVMTAp9CgpDaXBoZXJpbmdNb2RlSW5mbyA6Oj0JCQkJU0VRVUVOQ0UgewoJLS0gVEFCVUxBUjogVGhlIGNpcGhlcmluZyBhbGdvcml0aG0gaXMgaW5jbHVkZWQgaW4gdGhlIENpcGhlcmluZ01vZGVDb21tYW5kLgoJY2lwaGVyaW5nTW9kZUNvbW1hbmQJCQkJQ2lwaGVyaW5nTW9kZUNvbW1hbmQsCglhY3RpdmF0aW9uVGltZUZvckRQQ0gJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKCXJiLURMLUNpcGhBY3RpdmF0aW9uVGltZUluZm8JCVJCLUFjdGl2YXRpb25UaW1lSW5mb0xpc3QJCQlPUFRJT05BTAp9CgpDTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudCA6Oj0JSU5URUdFUiAoNi4uOSkKCkNOLVBhZ2VkVUUtSWRlbnRpdHkgOjo9CQkJCUNIT0lDRSB7CglpbXNpLUdTTS1NQVAJCQkJCQlJTVNJLUdTTS1NQVAsCgl0bXNpLUdTTS1NQVAJCQkJCQlUTVNJLUdTTS1NQVAsCglwLVRNU0ktR1NNLU1BUAkJCQkJCVAtVE1TSS1HU00tTUFQLAoJaW1zaS1EUy00MQkJCQkJCQlJTVNJLURTLTQxLAoJdG1zaS1EUy00MQkJCQkJCQlUTVNJLURTLTQxLAoJc3BhcmUzCQkJCQkJCQlOVUxMLAoJc3BhcmUyCQkJCQkJCQlOVUxMLAoJc3BhcmUxCQkJCQkJCQlOVUxMCn0KCkNvbXByZXNzZWRNb2RlTWVhc0NhcGFiaWxpdHkgOjo9IAlTRVFVRU5DRSB7CglmZGQtTWVhc3VyZW1lbnRzCQkJCQlCT09MRUFOLAoJLS0gVEFCVUxBUjogVGhlIElFcyB0ZGQtTWVhc3VyZW1lbnRzLCBnc20tTWVhc3VyZW1lbnRzIGFuZCBtdWx0aUNhcnJpZXJNZWFzdXJlbWVudHMKCS0tIGFyZSBtYWRlIG9wdGlvbmFsIHNpbmNlIHRoZXkgYXJlIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGFub3RoZXIgaW5mb3JtYXRpb24gZWxlbWVudC4KCS0tIFRoZWlyIGFic2VuY2UgY29ycmVzcG9uZHMgdG8gdGhlIGNhc2Ugd2hlcmUgdGhlIGNvbmRpdGlvbiBpcyBub3QgdHJ1ZS4KCXRkZC1NZWFzdXJlbWVudHMJCQkJCUJPT0xFQU4JCQkJCQkJCU9QVElPTkFMLAoJZ3NtLU1lYXN1cmVtZW50cwkJCQkJR1NNLU1lYXN1cmVtZW50cwkJCQkJT1BUSU9OQUwsCgltdWx0aUNhcnJpZXJNZWFzdXJlbWVudHMJCQlCT09MRUFOCQkJCQkJCQlPUFRJT05BTAp9CgpDb21wcmVzc2VkTW9kZU1lYXNDYXBhYmlsaXR5LUxDUi1yNCA6Oj0JU0VRVUVOQ0UgewoJdGRkMTI4LU1lYXN1cmVtZW50cwkJCQkJCUJPT0xFQU4JCQkJCQkJT1BUSU9OQUwKfQoKQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGRERMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzRkREKSkgT0YKCQkJCQkJCQkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiRkRECgpDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERExpc3QyIDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzRkREKSkgT0YKCQkJCQkJCQkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiRkREMgoKQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGRERMaXN0LWV4dCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXFCYW5kc0ZERCkpIE9GCgkJCQkJCQkJCQkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGREQtZXh0CgpDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERCA6Oj0JCVNFUVVFTkNFIHsKCXJhZGlvRnJlcXVlbmN5QmFuZEZERAkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRGREQJT1BUSU9OQUwsCglkbC1NZWFzdXJlbWVudHNGREQJCQkJCUJPT0xFQU4sCgl1bC1NZWFzdXJlbWVudHNGREQJCQkJCUJPT0xFQU4KfQoKQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGREQyIDo6PQkJU0VRVUVOQ0UgewoJLS0gVUUgbWF5IG9taXQgYm90aCBJRXMgaWYgdGhpcyBJRSBpbmRpY2F0ZXMgdGhlIGNvbXByZXNzZWQgbW9kZSBjYXBhYmlsaXR5IHdpdGhpbiB0aGUgc2FtZQoJLS0gZnJlcXVlbmN5IGJhbmQuIE90aGVyd2lzZSwgdGhlIFVFIHNoYWxsIGluY2x1ZGUgZWl0aGVyIG9uZSBvZiB0aGUgZm9sbG93aW5nIE9QVElPTkFMIElFcy4KCXJhZGlvRnJlcXVlbmN5QmFuZEZERAkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRGREQJT1BUSU9OQUwsCglyYWRpb0ZyZXF1ZW5jeUJhbmRGREQyCQkJCVJhZGlvRnJlcXVlbmN5QmFuZEZERDIJT1BUSU9OQUwsCglkbC1NZWFzdXJlbWVudHNGREQJCQkJCUJPT0xFQU4sCgl1bC1NZWFzdXJlbWVudHNGREQJCQkJCUJPT0xFQU4KfQoKQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGREQtZXh0IDo6PQkJU0VRVUVOQ0UgewoJcmFkaW9GcmVxdWVuY3lCYW5kRkREMgkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRGREQyLAoJZGwtTWVhc3VyZW1lbnRzRkRECQkJCQlCT09MRUFOLAoJdWwtTWVhc3VyZW1lbnRzRkRECQkJCQlCT09MRUFOCn0KCkNvbXByZXNzZWRNb2RlTWVhc0NhcGFiVERETGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXFCYW5kc1RERCkpIE9GCgkJCQkJCQkJCQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYlRERAoKQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJUREQgOjo9CQlTRVFVRU5DRSB7CglyYWRpb0ZyZXF1ZW5jeUJhbmRUREQJCQkJUmFkaW9GcmVxdWVuY3lCYW5kVERELAoJZGwtTWVhc3VyZW1lbnRzVERECQkJCQlCT09MRUFOLAoJdWwtTWVhc3VyZW1lbnRzVERECQkJCQlCT09MRUFOCn0KCkNvbXByZXNzZWRNb2RlTWVhc0NhcGFiR1NNTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXFCYW5kc0dTTSkpIE9GCgkJCQkJCQkJCQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkdTTQoKQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJHU00gOjo9CQlTRVFVRU5DRSB7CglyYWRpb0ZyZXF1ZW5jeUJhbmRHU00JCQkJUmFkaW9GcmVxdWVuY3lCYW5kR1NNLAoJZGwtTWVhc3VyZW1lbnRzR1NNCQkJCQlCT09MRUFOLAoJdWwtTWVhc3VyZW1lbnRzR1NNCQkJCQlCT09MRUFOCn0KCkNvbXByZXNzZWRNb2RlTWVhc0NhcGFiTUMgOjo9CQlTRVFVRU5DRSB7CglkbC1NZWFzdXJlbWVudHNNQwkJCQkJQk9PTEVBTiwKCXVsLU1lYXN1cmVtZW50c01DCQkJCQlCT09MRUFOCn0KCkNQQ0gtUGFyYW1ldGVycyA6Oj0JCQkJCVNFUVVFTkNFIHsKCWluaXRpYWxQcmlvcml0eURlbGF5TGlzdAkJCUluaXRpYWxQcmlvcml0eURlbGF5TGlzdAkJCU9QVElPTkFMLAoJYmFja29mZkNvbnRyb2xQYXJhbXMJCQkJQmFja29mZkNvbnRyb2xQYXJhbXMsCgktLSBUQUJVTEFSOiBUUEMgc3RlcCBzaXplIG5lc3RlZCBpbnNpZGUgUG93ZXJDb250cm9sQWxnb3JpdGhtCglwb3dlckNvbnRyb2xBbGdvcml0aG0JCQkJUG93ZXJDb250cm9sQWxnb3JpdGhtLAoJZGwtRFBDQ0gtQkVSCQkJCQkJREwtRFBDQ0gtQkVSCn0KCkRMLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZyA6Oj0JRU5VTUVSQVRFRHtrYnBzMzIsIGticHM2NCwga2JwczEyOCwga2JwczM4NH0KCkRMLURQQ0NILUJFUiA6Oj0JCQkJCUlOVEVHRVIgKDAuLjYzKQoKREwtUGh5c0NoQ2FwYWJpbGl0eUZERCA6Oj0JCQlTRVFVRU5DRSB7CgktLSBUaGUgSUUg0m1heE5vRFBDSC1QRFNDSC1Db2Rlc9Mgb25seSBnaXZlcyBpbmZvcm1hdGlvbiBvbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgRFBDSCBDb2Rlcy4KCW1heE5vRFBDSC1QRFNDSC1Db2RlcwkJCQlJTlRFR0VSICgxLi44KSwKCW1heE5vUGh5c0NoQml0c1JlY2VpdmVkCQkJCU1heE5vUGh5c0NoQml0c1JlY2VpdmVkLAoJc3VwcG9ydEZvclNGLTUxMgkJCQkJQk9PTEVBTiwKCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgoJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCglkdW1teQkJCQkJCQkJQk9PTEVBTiwKCWR1bW15MgkJCQkJCQkJU2ltdWx0YW5lb3VzU0NDUENILURQQ0gtUmVjZXB0aW9uCn0KCkRMLVBoeXNDaENhcGFiaWxpdHlGREQtdjM4MGV4dCA6Oj0JCQlTRVFVRU5DRSB7CgktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJZHVtbXkJCQkJCQkJCQkJU3VwcG9ydE9mRGVkaWNhdGVkUGlsb3RzRm9yQ2hFc3RpbWF0aW9uCQlPUFRJT05BTAp9CgpTdXBwb3J0T2ZEZWRpY2F0ZWRQaWxvdHNGb3JDaEVzdGltYXRpb24gOjo9CQkJRU5VTUVSQVRFRCB7IHRydWUgfQoKREwtUGh5c0NoQ2FwYWJpbGl0eVRERCA6Oj0JCQlTRVFVRU5DRSB7CgltYXhUUy1QZXJGcmFtZQkJCQkJCU1heFRTLVBlckZyYW1lLAoJbWF4UGh5c0NoUGVyRnJhbWUJCQkJCU1heFBoeXNDaFBlckZyYW1lLAoJbWluaW11bVNGCQkJCQkJCU1pbmltdW1TRi1ETCwKCXN1cHBvcnRPZlBEU0NICQkJCQkJQk9PTEVBTiwKCW1heFBoeXNDaFBlclRTCQkJCQkJTWF4UGh5c0NoUGVyVFMJCn0KCkRMLVBoeXNDaENhcGFiaWxpdHlUREQtTENSLXI0IDo6PQlTRVFVRU5DRSB7CgltYXhUUy1QZXJTdWJGcmFtZQkJCQkJTWF4VFMtUGVyU3ViRnJhbWUtcjQsCgltYXhQaHlzQ2hQZXJGcmFtZQkJCQkJTWF4UGh5c0NoUGVyU3ViRnJhbWUtcjQsCgltaW5pbXVtU0YJCQkJCQkJTWluaW11bVNGLURMLAoJc3VwcG9ydE9mUERTQ0gJCQkJCQlCT09MRUFOLAoJbWF4UGh5c0NoUGVyVFMJCQkJCQlNYXhQaHlzQ2hQZXJUUywKCXN1cHBvcnRPZjhQU0sJCQkJCQlCT09MRUFOCn0KCkRMLVBoeXNDaENhcGFiaWxpdHlUREQtNzY4IDo6PQkJU0VRVUVOQ0UgewoJbWF4VFMtUGVyRnJhbWUJCQkJCQlNYXhUUy1QZXJGcmFtZSwKCW1heFBoeXNDaFBlckZyYW1lCQkJCQlNYXhQaHlzQ2hQZXJGcmFtZS03NjgsCgltaW5pbXVtU0YJCQkJCQkJTWluaW11bVNGLURMLTc2OCwKCXN1cHBvcnRPZlBEU0NICQkJCQkJQk9PTEVBTiwKCW1heFBoeXNDaFBlclRTCQkJCQkJTWF4UGh5c0NoUGVyVFMtNzY4Cn0KCkRMLVRyYW5zQ2hDYXBhYmlsaXR5IDo6PQkJCVNFUVVFTkNFIHsKCW1heE5vQml0c1JlY2VpdmVkCQkJCQlNYXhOb0JpdHMsCgltYXhDb252Q29kZUJpdHNSZWNlaXZlZAkJCQlNYXhOb0JpdHMsCgl0dXJib0RlY29kaW5nU3VwcG9ydAkJCQlUdXJib1N1cHBvcnQsCgltYXhTaW11bHRhbmVvdXNUcmFuc0NocwkJCQlNYXhTaW11bHRhbmVvdXNUcmFuc0Noc0RMLAoJbWF4U2ltdWx0YW5lb3VzQ0NUckNILUNvdW50CQkJTWF4U2ltdWx0YW5lb3VzQ0NUckNILUNvdW50LAoJbWF4UmVjZWl2ZWRUcmFuc3BvcnRCbG9ja3MJCQlNYXhUcmFuc3BvcnRCbG9ja3NETCwKCW1heE51bWJlck9mVEZDCQkJCQkJTWF4TnVtYmVyT2ZURkMtREwsCgltYXhOdW1iZXJPZlRGCQkJCQkJTWF4TnVtYmVyT2ZURgp9CgpEUkFDLVN5c0luZm8gOjo9CQkJCQlTRVFVRU5DRSB7Cgl0cmFuc21pc3Npb25Qcm9iYWJpbGl0eQkJCQlUcmFuc21pc3Npb25Qcm9iYWJpbGl0eSwKCW1heGltdW1CaXRSYXRlCQkJCQkJTWF4aW11bUJpdFJhdGUKfQoKRFJBQy1TeXNJbmZvTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heERSQUNjbGFzc2VzKSkgT0YKCQkJCQkJCQkJCURSQUMtU3lzSW5mbwoKRFNDSC1STlRJIDo6PQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSkKCkRlbGF5UmVzdHJpY3Rpb25GbGFnIDo6PQkJCUVOVU1FUkFURUQgeyB0cnVlIH0KCkUtUk5USSA6Oj0JCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKQoKRVNOLURTLTQxIDo6PQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMyKSkKCkVzdGFibGlzaG1lbnRDYXVzZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlvcmlnaW5hdGluZ0NvbnZlcnNhdGlvbmFsQ2FsbCwKCQkJCQkJCQkJCW9yaWdpbmF0aW5nU3RyZWFtaW5nQ2FsbCwgCgkJCQkJCQkJCQlvcmlnaW5hdGluZ0ludGVyYWN0aXZlQ2FsbCwKCQkJCQkJCQkJCW9yaWdpbmF0aW5nQmFja2dyb3VuZENhbGwsCgkJCQkJCQkJCQlvcmlnaW5hdGluZ1N1YnNjcmliZWRUcmFmZmljQ2FsbCwKCQkJCQkJCQkJCXRlcm1pbmF0aW5nQ29udmVyc2F0aW9uYWxDYWxsLAoJCQkJCQkJCQkJdGVybWluYXRpbmdTdHJlYW1pbmdDYWxsLAoJCQkJCQkJCQkJdGVybWluYXRpbmdJbnRlcmFjdGl2ZUNhbGwsCgkJCQkJCQkJCQl0ZXJtaW5hdGluZ0JhY2tncm91bmRDYWxsLAoJCQkJCQkJCQkJZW1lcmdlbmN5Q2FsbCwKCQkJCQkJCQkJCWludGVyUkFULUNlbGxSZXNlbGVjdGlvbiwKCQkJCQkJCQkJCWludGVyUkFULUNlbGxDaGFuZ2VPcmRlciwKCQkJCQkJCQkJCXJlZ2lzdHJhdGlvbiwKCQkJCQkJCQkJCWRldGFjaCwKCQkJCQkJCQkJCW9yaWdpbmF0aW5nSGlnaFByaW9yaXR5U2lnbmFsbGluZywKCQkJCQkJCQkJCW9yaWdpbmF0aW5nTG93UHJpb3JpdHlTaWduYWxsaW5nLAoJCQkJCQkJCQkJY2FsbFJlLWVzdGFibGlzaG1lbnQsCgkJCQkJCQkJCQl0ZXJtaW5hdGluZ0hpZ2hQcmlvcml0eVNpZ25hbGxpbmcsCgkJCQkJCQkJCQl0ZXJtaW5hdGluZ0xvd1ByaW9yaXR5U2lnbmFsbGluZywKCQkJCQkJCQkJCXRlcm1pbmF0aW5nQ2F1c2VVbmtub3duLAoJCQkJCQkJCQkJbWJtcy1SZWNlcHRpb24sCgkJCQkJCQkJCQltYm1zLVBUUC1SQi1SZXF1ZXN0LAoJCQkJCQkJCQkJc3BhcmUxMCwKCQkJCQkJCQkJCXNwYXJlOSwKCQkJCQkJCQkJCXNwYXJlOCwKCQkJCQkJCQkJCXNwYXJlNywKCQkJCQkJCQkJCXNwYXJlNiwKCQkJCQkJCQkJCXNwYXJlNSwKCQkJCQkJCQkJCXNwYXJlNCwKCQkJCQkJCQkJCXNwYXJlMywKCQkJCQkJCQkJCXNwYXJlMiwKCQkJCQkJCQkJCXNwYXJlMSB9CgpGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyciA6Oj0JCQlDSE9JQ0UgewoJY29uZmlndXJhdGlvblVuc3VwcG9ydGVkCQkJTlVMTCwKCXBoeXNpY2FsQ2hhbm5lbEZhaWx1cmUJCQkJTlVMTCwKCWluY29tcGF0aWJsZVNpbXVsdGFuZW91c1JlY29uZmlndXJhdGlvbgoJCQkJCQkJCQkJTlVMTCwKCWNvbXByZXNzZWRNb2RlUnVudGltZUVycm9yCQkJVEdQU0ksCglwcm90b2NvbEVycm9yCQkJCQkJUHJvdG9jb2xFcnJvckluZm9ybWF0aW9uLAoJY2VsbFVwZGF0ZU9jY3VycmVkCQkJCQlOVUxMLAoJaW52YWxpZENvbmZpZ3VyYXRpb24JCQkJTlVMTCwKCWNvbmZpZ3VyYXRpb25JbmNvbXBsZXRlCQkJCU5VTEwsCgl1bnN1cHBvcnRlZE1lYXN1cmVtZW50CQkJCU5VTEwsCgltYm1zU2Vzc2lvbkFscmVhZHlSZWNlaXZlZENvcnJlY3RseQlOVUxMLAoJbG93ZXJQcmlvcml0eU1CTVNTZXJ2aWNlCQkJTlVMTCwKCXNwYXJlNQkJCQkJCQkJTlVMTCwKCXNwYXJlNAkJCQkJCQkJTlVMTCwKCXNwYXJlMwkJCQkJCQkJTlVMTCwKCXNwYXJlMgkJCQkJCQkJTlVMTCwKCXNwYXJlMQkJCQkJCQkJTlVMTAp9CgpGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyclRySWQgOjo9CQlTRVFVRU5DRSB7CgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwgCgkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgp9CgpHcm91cElkZW50aXR5V2l0aFJlbGVhc2VJbmZvcm1hdGlvbiA6Oj0JCVNFUVVFTkNFIHsKCQlycmMtQ29ubmVjdGlvblJlbGVhc2VJbmZvcm1hdGlvbgkJUlJDLUNvbm5lY3Rpb25SZWxlYXNlSW5mb3JtYXRpb24sCgkJZ3JvdXBSZWxlYXNlSW5mb3JtYXRpb24JCQkJCUdyb3VwUmVsZWFzZUluZm9ybWF0aW9uCgl9CgpHcm91cFJlbGVhc2VJbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7Cgl1Uk5USS1Hcm91cAkJCQkJCQlVLVJOVEktR3JvdXAKfQoKR1NNLU1lYXN1cmVtZW50cyA6Oj0JCQkJU0VRVUVOQ0UgewoJZ3NtOTAwCQkJCQkJCQlCT09MRUFOLAoJZGNzMTgwMAkJCQkJCQkJQk9PTEVBTiwKCWdzbTE5MDAJCQkJCQkJCUJPT0xFQU4KfQoKSC1STlRJIDo6PQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpCgpIU0RTQ0gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnkgOjo9CQlJTlRFR0VSICgxLi42NCkKClVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlIDo6PSBCSVQgU1RSSU5HIChTSVpFICg0KSkKClVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVCA6Oj0gQklUIFNUUklORyAoU0laRSAoOCkpCgoKSU1TSS1hbmQtRVNOLURTLTQxIDo6PQkJCQlTRVFVRU5DRSB7CglpbXNpLURTLTQxCQkJCQkJCUlNU0ktRFMtNDEsCgllc24tRFMtNDEJCQkJCQkJRVNOLURTLTQxCn0KCklNU0ktRFMtNDEgOjo9CQkJCQkJT0NURVQgU1RSSU5HIChTSVpFICg1Li43KSkKCkluaXRpYWxQcmlvcml0eURlbGF5TGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhBU0MpKSBPRgoJCQkJCQkJCQkJTlMtSVAKCkluaXRpYWxVRS1JZGVudGl0eSA6Oj0JCQkJQ0hPSUNFIHsKCWltc2kJCQkJCQkJCUlNU0ktR1NNLU1BUCwKCXRtc2ktYW5kLUxBSQkJCQkJCVRNU0ktYW5kLUxBSS1HU00tTUFQLAoJcC1UTVNJLWFuZC1SQUkJCQkJCQlQLVRNU0ktYW5kLVJBSS1HU00tTUFQLAoJaW1laQkJCQkJCQkJSU1FSSwKCWVzbi1EUy00MQkJCQkJCQlFU04tRFMtNDEsCglpbXNpLURTLTQxCQkJCQkJCUlNU0ktRFMtNDEsCglpbXNpLWFuZC1FU04tRFMtNDEJCQkJCUlNU0ktYW5kLUVTTi1EUy00MSwKCXRtc2ktRFMtNDEJCQkJCQkJVE1TSS1EUy00MQp9CgpJbnRlZ3JpdHlDaGVja0luZm8gOjo9CQkJCVNFUVVFTkNFIHsKCW1lc3NhZ2VBdXRoZW50aWNhdGlvbkNvZGUJCQlNZXNzYWdlQXV0aGVudGljYXRpb25Db2RlLAoJcnJjLU1lc3NhZ2VTZXF1ZW5jZU51bWJlcgkJCVJSQy1NZXNzYWdlU2VxdWVuY2VOdW1iZXIKfQoKSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvIDo6PQkJU0VRVUVOQ0UgewoJcnJjLU1lc3NhZ2VTZXF1ZW5jZU51bWJlckxpc3QJCVJSQy1NZXNzYWdlU2VxdWVuY2VOdW1iZXJMaXN0Cn0KCkludGVncml0eVByb3RlY3Rpb25BbGdvcml0aG0gOjo9CUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdWlhMSB9CgoKSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVDb21tYW5kIDo6PSAJQ0hPSUNFIHsKCXN0YXJ0SW50ZWdyaXR5UHJvdGVjdGlvbgkJCVNFUVVFTkNFIHsKCQlpbnRlZ3JpdHlQcm90SW5pdE51bWJlcgkJCQlJbnRlZ3JpdHlQcm90SW5pdE51bWJlcgoJfSwKCW1vZGlmeQkJCQkJCQkJU0VRVUVOQ0UgewoJCWRsLUludGVncml0eVByb3RBY3RpdmF0aW9uSW5mbwkJSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvCgl9Cn0KCkludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbyA6Oj0JCVNFUVVFTkNFIHsKCS0tIFRBQlVMQVI6IERMIGludGVncml0eSBwcm90ZWN0aW9uIGFjdGl2YXRpb24gaW5mbyBhbmQgSW50ZWdyaXR5CgktLSBwcm90ZWN0aW9uIGludGlhbGlzYXRpb24gbnVtYmVyIGhhdmUgYmVlbiBuZXN0ZWQgaW5zaWRlIAoJLS0gSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVDb21tYW5kLgoJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVDb21tYW5kCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUNvbW1hbmQsCglpbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtCQlJbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtCQlPUFRJT05BTAkKfQoKSW50ZWdyaXR5UHJvdEluaXROdW1iZXIgOjo9CQkJQklUIFNUUklORyAoU0laRSAoMzIpKQoKLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgpNYXhIY0NvbnRleHRTcGFjZSA6Oj0JCQkJCUVOVU1FUkFURUQJewoJCQkJCQkJCQkJCWR1bW15LCBieTEwMjQsIGJ5MjA0OCwgYnk0MDk2LCAKCQkJCQkJCQkJCQlieTgxOTIgfQoKTWF4SGNDb250ZXh0U3BhY2UtcjUtZXh0IDo6PQkJCUVOVU1FUkFURUQJewoJCQkJCQkJCQkJCWJ5MTYzODQsIGJ5MzI3NjgsIGJ5NjU1MzYsIGJ5MTMxMDcyIH0KCgpNYXhST0hDLUNvbnRleHRTZXNzaW9ucy1yNCA6Oj0JCUVOVU1FUkFURUQJewoJCQkJCQkJCQkJCXMyLCBzNCwgczgsIHMxMiwgczE2LCBzMjQsIHMzMiwgczQ4LAoJCQkJCQkJCQkJCXM2NCwgczEyOCwgczI1NiwgczUxMiwgczEwMjQsIHMxNjM4NCB9CgpNYXhpbXVtQU0tRW50aXR5TnVtYmVyUkxDLUNhcCA6Oj0JRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlkdW1teSwgYW00LCBhbTUsIGFtNiwgCgkJCQkJCQkJCQlhbTgsIGFtMTYsIGFtMzAgfQoKLS0gQWN0dWFsIHZhbHVlIE1heGltdW1CaXRSYXRlID0gSUUgdmFsdWUgKiAxNgpNYXhpbXVtQml0UmF0ZSA6Oj0JCQkJCUlOVEVHRVIgKDAuLjMyKQoKTWF4aW11bVJMQy1XaW5kb3dTaXplIDo6PQkJCUVOVU1FUkFURUQgeyBtd3MyMDQ3LCBtd3M0MDk1IH0KCk1heE5vRFBEQ0gtQml0c1RyYW5zbWl0dGVkIDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQliNjAwLCBiMTIwMCwgYjI0MDAsIGI0ODAwLCAKCQkJCQkJCQkJCWI5NjAwLCBiMTkyMDAsIGIyODgwMCwgYjM4NDAwLAoJCQkJCQkJCQkJYjQ4MDAwLCBiNTc2MDAgfQoKTWF4Tm9CaXRzIDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJYjY0MCwgYjEyODAsIGIyNTYwLCBiMzg0MCwgYjUxMjAsCgkJCQkJCQkJCQliNjQwMCwgYjc2ODAsIGI4OTYwLCBiMTAyNDAsCgkJCQkJCQkJCQliMjA0ODAsIGI0MDk2MCwgYjgxOTIwLCBiMTYzODQwIH0KCk1heE5vUGh5c0NoQml0c1JlY2VpdmVkIDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZHVtbXksIGIxMjAwLCBiMjQwMCwgYjM2MDAsIAoJCQkJCQkJCQkJYjQ4MDAsIGI3MjAwLCBiOTYwMCwgYjE0NDAwLCAKCQkJCQkJCQkJCWIxOTIwMCwgYjI4ODAwLCBiMzg0MDAsIGI0ODAwMCwgCgkJCQkJCQkJCQliNTc2MDAsIGI2NzIwMCwgYjc2ODAwIH0KCk1heE5vU0NDUENILVJMIDo6PQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlybDEgfQoKTWF4TnVtYmVyT2ZURiA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdGYzMiwgdGY2NCwgdGYxMjgsIHRmMjU2LAoJCQkJCQkJCQkJdGY1MTIsIHRmMTAyNCB9CgpNYXhOdW1iZXJPZlRGQy1ETCA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl0ZmMxNiwgdGZjMzIsIHRmYzQ4LCB0ZmM2NCwgdGZjOTYsIAoJCQkJCQkJCQkJdGZjMTI4LCB0ZmMyNTYsIHRmYzUxMiwgdGZjMTAyNCB9CgpNYXhOdW1iZXJPZlRGQy1VTCA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlkdW1teTEsIGR1bW15MiwgdGZjMTYsIHRmYzMyLCB0ZmM0OCwgdGZjNjQsIAoJCQkJCQkJCQkJdGZjOTYsIHRmYzEyOCwgdGZjMjU2LCB0ZmM1MTIsIHRmYzEwMjQgfQoKLS0gdGhlIHZhbHVlcyAxIMk0IGZvciBNYXhQaHlzQ2hQZXJGcmFtZSBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbCAKTWF4UGh5c0NoUGVyRnJhbWUgOjo9CQkJCUlOVEVHRVIgKDEuLjIyNCkKCk1heFBoeXNDaFBlckZyYW1lLTc2OCA6Oj0JCQlJTlRFR0VSICgxLi40NDgpCgpNYXhQaHlzQ2hQZXJTdWJGcmFtZS1yNCA6Oj0JCQlJTlRFR0VSICgxLi45NikKCk1heFBoeXNDaFBlclRpbWVzbG90IDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdHMxLCB0czIgfQoKLS0gdGhlIHZhbHVlcyAxIMk0IGZvciBNYXhQaHlzQ2hQZXJUUyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbCAKTWF4UGh5c0NoUGVyVFMgOjo9CQkJCQlJTlRFR0VSICgxLi4xNikKCk1heFBoeXNDaFBlclRTLTc2OCA6Oj0JCQkJSU5URUdFUiAoMS4uMzIpCgpNYXhTaW11bHRhbmVvdXNDQ1RyQ0gtQ291bnQgOjo9CQlJTlRFR0VSICgxLi44KQoKTWF4U2ltdWx0YW5lb3VzVHJhbnNDaHNETCA6Oj0JCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZTQsIGU4LCBlMTYsIGUzMiB9CgpNYXhTaW11bHRhbmVvdXNUcmFuc0Noc1VMIDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlkdW1teSwgZTQsIGU4LCBlMTYsIGUzMiB9CgpNYXhUcmFuc3BvcnRCbG9ja3NETCA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXRiNCwgdGI4LCB0YjE2LCB0YjMyLCB0YjQ4LAoJCQkJCQkJCQkJdGI2NCwgdGI5NiwgdGIxMjgsIHRiMjU2LCB0YjUxMiB9CgpNYXhUcmFuc3BvcnRCbG9ja3NVTCA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWR1bW15LCB0YjQsIHRiOCwgdGIxNiwgdGIzMiwgdGI0OCwKCQkJCQkJCQkJCXRiNjQsIHRiOTYsIHRiMTI4LCB0YjI1NiwgdGI1MTIgfQoKTWF4VFMtUGVyRnJhbWUgOjo9CQkJCQlJTlRFR0VSICgxLi4xNCkKCk1heFRTLVBlclN1YkZyYW1lLXI0IDo6PQkJCUlOVEVHRVIgKDEuLjYpCgotLSBUQUJVTEFSOiBNZWFzdXJlbWVudENhcGFiaWxpdHkgY29udGFpbnMgZGVwZW5kZW5jaWVzIHRvIFVFLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LAotLSB0aGUgY29uZGl0aW9uYWwgZmllbGRzIGhhdmUgYmVlbiBsZWZ0IG1hbmRhdG9yeSBmb3Igbm93LgpNZWFzdXJlbWVudENhcGFiaWxpdHkgOjo9CQkJU0VRVUVOQ0UgewoJZG93bmxpbmtDb21wcmVzc2VkTW9kZQkJCQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYmlsaXR5LAoJdXBsaW5rQ29tcHJlc3NlZE1vZGUJCQkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJpbGl0eQkKfQoKTWVhc3VyZW1lbnRDYXBhYmlsaXR5RXh0IDo6PSAJCVNFUVVFTkNFewoJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGRERMaXN0CQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERExpc3QsCgljb21wcmVzc2VkTW9kZU1lYXNDYXBhYlRERExpc3QJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiVERETGlzdAlPUFRJT05BTCwKCWNvbXByZXNzZWRNb2RlTWVhc0NhcGFiR1NNTGlzdAkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJHU01MaXN0CU9QVElPTkFMLAoJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJNQwkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiTUMJCU9QVElPTkFMCn0KCk1lYXN1cmVtZW50Q2FwYWJpbGl0eUV4dDIgOjo9IAkJU0VRVUVOQ0V7Cgljb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERExpc3QJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiRkRETGlzdDIsCgljb21wcmVzc2VkTW9kZU1lYXNDYXBhYlRERExpc3QJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiVERETGlzdAlPUFRJT05BTCwKCWNvbXByZXNzZWRNb2RlTWVhc0NhcGFiR1NNTGlzdAkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJHU01MaXN0CU9QVElPTkFMLAoJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJNQwkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiTUMJCU9QVElPTkFMCn0KCgpNZWFzdXJlbWVudENhcGFiaWxpdHktcjQtZXh0IDo6PQlTRVFVRU5DRSB7Cglkb3dubGlua0NvbXByZXNzZWRNb2RlLUxDUgkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiaWxpdHktTENSLXI0LAoJdXBsaW5rQ29tcHJlc3NlZE1vZGUtTENSCQkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJpbGl0eS1MQ1ItcjQKfQoKTWVzc2FnZUF1dGhlbnRpY2F0aW9uQ29kZSA6Oj0JCUJJVCBTVFJJTkcgKFNJWkUgKDMyKSkKCk1pbmltdW1TRi1ETCA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJc2YxLCBzZjE2IH0KCk1pbmltdW1TRi1ETC03NjggOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJc2YxLCBzZjMyIH0KCk1pbmltdW1TRi1VTCA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJc2YxLCBzZjIsIHNmNCwgc2Y4LCBkdW1teSB9CgpNdWx0aU1vZGVDYXBhYmlsaXR5IDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXRkZCwgZmRkLCBmZGQtdGRkIH0KCk11bHRpUkFULUNhcGFiaWxpdHkgOjo9CQkJCVNFUVVFTkNFIHsKCXN1cHBvcnRPZkdTTQkJCQkJCUJPT0xFQU4sCglzdXBwb3J0T2ZNdWx0aWNhcnJpZXIJCQkJQk9PTEVBTgp9IAoKTXVsdGlNb2RlUkFULUNhcGFiaWxpdHktdjU5MGV4dCA6Oj0JU0VRVUVOQ0UgewoJc3VwcG9ydE9mVVRSQU4tVG9HRVJBTi1OQUNDCQkJQk9PTEVBTgp9CgpNdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eS12NjgwZXh0IDo6PQlTRVFVRU5DRSB7CglzdXBwb3J0T2ZIYW5kb3ZlclRvR0FOCQkJCUVOVU1FUkFURUQgeyBkb2VzU3VwcG9ydEhhbmRvdmVyVG9HQU4gfQkJT1BUSU9OQUwKfQoKTi0zMDAgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjcpCgpOLTMwMSA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uNykKCk4tMzAyIDo6PQkJCQkJCQlJTlRFR0VSICgwLi43KQoKTi0zMDQgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjcpCgpOLTMwOCA6Oj0JCQkJCQkJSU5URUdFUiAoMS4uOCkKCk4tMzEwIDo6PQkJCQkJCQlJTlRFR0VSICgwLi43KQoKTi0zMTIgOjo9CQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJczEsIHM1MCwgczEwMCwgczIwMCwgczQwMCwKCQkJCQkJCQkJCXM2MDAsIHM4MDAsIHMxMDAwIH0KCk4tMzEyZXh0IDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJczIsIHM0LCBzMTAsIHMyMCB9CgpOLTMxMi1yNSA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlzMSwgczIsIHM0LCBzMTAsIHMyMCwKCQkJCQkJCQkJCXM1MCwgczEwMCwgczIwMCwgczQwMCwKCQkJCQkJCQkJCXM2MDAsIHM4MDAsIHMxMDAwIH0KCk4tMzEzIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXMxLCBzMiwgczQsIHMxMCwgczIwLAoJCQkJCQkJCQkJIHM1MCwgczEwMCwgczIwMCB9CgpOLTMxNSA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlzMSwgczUwLCBzMTAwLCBzMjAwLCBzNDAwLAoJCQkJCQkJCQkJczYwMCwgczgwMCwgczEwMDAgfQoKTi0zMTVleHQgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlzMiwgczQsIHMxMCwgczIwIH0KCk4tMzE1LXI1IDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXMxLCBzMiwgczQsIHMxMCwgczIwLAoJCQkJCQkJCQkJczUwLCBzMTAwLCBzMjAwLCBzNDAwLAoJCQkJCQkJCQkJczYwMCwgczgwMCwgczEwMDAgfQoKCk4tQWNjZXNzRmFpbHMgOjo9CQkJCQlJTlRFR0VSICgxLi42NCkKCk4tQVAtUmV0cmFuc01heCA6Oj0JCQkJCUlOVEVHRVIgKDEuLjY0KQoKTmV0d29ya0Fzc2lzdGVkR1BTLVN1cHBvcnRlZCA6Oj0JRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQluZXR3b3JrQmFzZWQsIAoJCQkJCQkJCQkJdWUtQmFzZWQsCgkJCQkJCQkJCQlib3RoTmV0d29ya0FuZFVFLUJhc2VkLAoJCQkJCQkJCQkJbm9OZXR3b3JrQXNzaXN0ZWRHUFMgfQoKTkYtQk8tQWxsQnVzeSA6Oj0JCQkJCUlOVEVHRVIgKDAuLjMxKQoKTkYtQk8tTm9BSUNIIDo6PQkJCQkJSU5URUdFUiAoMC4uMzEpCgpORi1CTy1NaXNtYXRjaCA6Oj0JCQkJCUlOVEVHRVIgKDAuLjEyNykKCk5TLUJPLUJ1c3kgOjo9CQkJCQkJSU5URUdFUiAoMC4uNjMpCgpOUy1JUCA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uMjgpCgpQLVRNU0ktYW5kLVJBSS1HU00tTUFQIDo6PQkJCVNFUVVFTkNFIHsKCXAtVE1TSQkJCQkJCQkJUC1UTVNJLUdTTS1NQVAsCglyYWkJCQkJCQkJCQlSQUkKfQoKUGFnaW5nQ2F1c2UgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl0ZXJtaW5hdGluZ0NvbnZlcnNhdGlvbmFsQ2FsbCwKCQkJCQkJCQkJCXRlcm1pbmF0aW5nU3RyZWFtaW5nQ2FsbCwKCQkJCQkJCQkJCXRlcm1pbmF0aW5nSW50ZXJhY3RpdmVDYWxsLAoJCQkJCQkJCQkJdGVybWluYXRpbmdCYWNrZ3JvdW5kQ2FsbCwKCQkJCQkJCQkJCXRlcm1pbmF0aW5nSGlnaFByaW9yaXR5U2lnbmFsbGluZywKCQkJCQkJCQkJCXRlcm1pbmF0aW5nTG93UHJpb3JpdHlTaWduYWxsaW5nLAoJCQkJCQkJCQkJdGVybWluYXRpbmdDYXVzZVVua25vd24sCgkJCQkJCQkJCQlzcGFyZQogfQoKUGFnaW5nUmVjb3JkIDo6PQkJCQkJQ0hPSUNFIHsKCWNuLUlkZW50aXR5CQkJCQkJCVNFUVVFTkNFIHsKCQlwYWdpbmdDYXVzZQkJCQkJCQlQYWdpbmdDYXVzZSwKCQljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCgkJY24tcGFnZWRVRS1JZGVudGl0eQkJCQkJQ04tUGFnZWRVRS1JZGVudGl0eQoJfSwKCXV0cmFuLUlkZW50aXR5CQkJCQkJU0VRVUVOQ0UgewoJCXUtUk5USQkJCQkJCQkJVS1STlRJLAoJCWNuLU9yaWdpbmF0ZWRQYWdlLWNvbm5lY3RlZE1vZGUtVUUJU0VRVUVOQ0UgewoJCQlwYWdpbmdDYXVzZQkJCQkJCQlQYWdpbmdDYXVzZSwKCQkJY24tRG9tYWluSWRlbnRpdHkJCQkJCUNOLURvbWFpbklkZW50aXR5LAoJCQlwYWdpbmdSZWNvcmRUeXBlSUQJCQkJCVBhZ2luZ1JlY29yZFR5cGVJRAoJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCgl9Cn0KClBhZ2luZ1JlY29yZDItcjUgOjo9CQkJCUNIT0lDRSB7Cgl1dHJhbi1TaW5nbGVVRS1JZGVudGl0eQkJCQlTRVFVRU5DRSB7CgkJdS1STlRJCQkJCQkJCQlVLVJOVEksCgkJY24tT3JpZ2luYXRlZFBhZ2UtY29ubmVjdGVkTW9kZS1VRQlTRVFVRU5DRSB7CgkJCXBhZ2luZ0NhdXNlCQkJCQkJCVBhZ2luZ0NhdXNlLAoJCQljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCgkJCXBhZ2luZ1JlY29yZFR5cGVJRAkJCQkJUGFnaW5nUmVjb3JkVHlwZUlECgkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCgkJcnJjLUNvbm5lY3Rpb25SZWxlYXNlSW5mb3JtYXRpb24JCVJSQy1Db25uZWN0aW9uUmVsZWFzZUluZm9ybWF0aW9uCgl9LAoJdXRyYW4tR3JvdXBJZGVudGl0eQkJCQkJCVNFUVVFTkNFICggU0laRSAoMSAuLiBtYXhVUk5USS1Hcm91cCkgKSBPRgoJCQkJCQkJCQkJCQlHcm91cElkZW50aXR5V2l0aFJlbGVhc2VJbmZvcm1hdGlvbgp9CgpQYWdpbmdSZWNvcmRMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UGFnZTEpKSBPRgoJCQkJCQkJCQkJUGFnaW5nUmVjb3JkCgpQYWdpbmdSZWNvcmQyTGlzdC1yNSA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UGFnZTEpKSBPRgoJCQkJCQkJCQkJUGFnaW5nUmVjb3JkMi1yNQoKUERDUC1DYXBhYmlsaXR5IDo6PQkJCQkJU0VRVUVOQ0UgewoJbG9zc2xlc3NTUk5TLVJlbG9jYXRpb25TdXBwb3J0CQlCT09MRUFOLAoJLS0gSWYgcHJlc2VudCwgdGhlICJtYXhIY0NvbnRleHRTcGFjZSIgaW4gdGhlIElFICJQRENQLUNhcGFiaWxpdHktcjUtZXh0IiBvdmVycmlkZXMgdGhlCgktLSAic3VwcG9ydGVkIiB2YWx1ZSBpbiB0aGlzIElFLiBUaGUgdmFsdWUgaW4gdGhpcyBJRSBtYXkgYmUgdXNlZCBieSBhIHByZS1SRUwtNSBVVFJBTi4KCXN1cHBvcnRGb3JSZmMyNTA3CQkJCQlDSE9JQ0UgewoJCW5vdFN1cHBvcnRlZAkJCQkJCU5VTEwsCgkJc3VwcG9ydGVkCQkJCQkJCU1heEhjQ29udGV4dFNwYWNlCgl9Cn0KClBEQ1AtQ2FwYWJpbGl0eS1yNC1leHQgOjo9CQkJU0VRVUVOQ0UgewoJc3VwcG9ydEZvclJmYzMwOTUJCQkJQ0hPSUNFIHsKCQlub3RTdXBwb3J0ZWQJCQkJCQlOVUxMLAoJCXN1cHBvcnRlZAkJCQkJCQlTRVFVRU5DRSB7CgkJCW1heFJPSEMtQ29udGV4dFNlc3Npb25zCQkJCU1heFJPSEMtQ29udGV4dFNlc3Npb25zLXI0CURFRkFVTFQgczE2LAoJCQlyZXZlcnNlQ29tcHJlc3Npb25EZXB0aAkJCQlJTlRFR0VSICgwLi42NTUzNSkJCQlERUZBVUxUIDAKCQl9Cgl9Cn0KClBEQ1AtQ2FwYWJpbGl0eS1yNS1leHQgOjo9CQkJU0VRVUVOQ0UgewoJc3VwcG9ydEZvclJmYzMwOTVDb250ZXh0UmVsb2NhdGlvbgkJQk9PTEVBTiwKCW1heEhjQ29udGV4dFNwYWNlCQkJCQkJTWF4SGNDb250ZXh0U3BhY2UtcjUtZXh0CU9QVElPTkFMCn0KClBEQ1AtQ2FwYWJpbGl0eS1yNS1leHQyIDo6PQkJCVNFUVVFTkNFIHsKCWxvc3NsZXNzRExSTEMtUERVU2l6ZUNoYW5nZQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMCn0KClBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHkgOjo9CQlTRVFVRU5DRSB7CgkJZmRkUGh5c0NoQ2FwYWJpbGl0eQkJCQkJU0VRVUVOQ0UgewoJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELAoJCQl1cGxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJCVVMLVBoeXNDaENhcGFiaWxpdHlGREQKCQl9CQkJCQkJCQkJCQlPUFRJT05BTCwKCQktLSB0ZGRQaHlzQ2hDYXBhYmlsaXR5IGRlc2NyaWJlcyB0aGUgMy44NE1jcHMgVEREIHBoeXNpY2FsIGNoYW5uZWwgY2FwYWJpbGl0eQoJCXRkZFBoeXNDaENhcGFiaWxpdHkJCQkJCVNFUVVFTkNFIHsKCQkJZG93bmxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJREwtUGh5c0NoQ2FwYWJpbGl0eVRERCwKCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5VERECgkJfQkJCQkJCQkJCQkJT1BUSU9OQUwKfQoKUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1yNyA6Oj0JCVNFUVVFTkNFIHsKCQlmZGRQaHlzQ2hDYXBhYmlsaXR5CQkJCQlTRVFVRU5DRSB7CgkJCWRvd25saW5rUGh5c0NoQ2FwYWJpbGl0eQkJCURMLVBoeXNDaENhcGFiaWxpdHlGREQsCgkJCXVwbGlua1BoeXNDaENhcGFiaWxpdHkJCQkJVUwtUGh5c0NoQ2FwYWJpbGl0eUZERAoJCX0JCQkJCQkJCQkJCU9QVElPTkFMLAoJCS0tIHRkZFBoeXNDaENhcGFiaWxpdHkgZGVzY3JpYmVzIHRoZSAzLjg0TWNwcyBUREQgcGh5c2ljYWwgY2hhbm5lbCBjYXBhYmlsaXR5CgkJdGRkUGh5c0NoQ2FwYWJpbGl0eQkJCQkJU0VRVUVOQ0UgewoJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5VERELAoJCQl1cGxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJCVVMLVBoeXNDaENhcGFiaWxpdHlUREQKCQl9CQkJCQkJCQkJCQlPUFRJT05BTCwKCQktLSB0ZGRQaHlzaWNhbENoYUNhcGFiaWxpdHktNzY4IGRlc2NyaWJlcyB0aGUgNy42OCBUREQgcGh5c2ljYWwgY2hhbm5lbCBjYXBhYmlsaXR5CgkJdGRkUGh5c0NoQ2FwYWJpbGl0eS03NjgJCQkJU0VRVUVOQ0UgewoJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5VERELTc2OCwKCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5VERECgkJfQp9CgotLSBQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LUxDUi1yNCBkZXNjcmliZXMgdGhlIDEuMjhNY3BzIFRERCBwaHlzaWNhbCBjaGFubmVsIGNhcGFiaWxpdHkKUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CgkJdGRkMTI4LVBoeXNDaENhcGFiaWxpdHkJCQkJCVNFUVVFTkNFIHsKCQkJZG93bmxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJREwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjQsCgkJCXVwbGlua1BoeXNDaENhcGFiaWxpdHkJCQkJVUwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjQKCQl9CQkJCQkJCQkJCQlPUFRJT05BTAp9CgotLSBQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LWhzcGRzY2gtcjUgZGVzY3JpYmVzIHRoZSBIUy1QRFNDSCBwaHlzaWNhbCBjaGFubmVsIGNhcGFiaWxpdHkKUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1oc3Bkc2NoLXI1IDo6PQkJU0VRVUVOQ0UgewoJZmRkLWhzcGRzY2gJCQkJCQkJCQkJQ0hPSUNFIHsKCQlzdXBwb3J0ZWQJCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQloc2RzY2gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnkJCQkJCUhTRFNDSC1waHlzaWNhbC1sYXllci1jYXRlZ29yeSwKCQkJLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCgkJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgoJCQlkdW1teQkJCQkJCQkJCQkJQk9PTEVBTiwKCQkJZHVtbXkyCQkJCQkJCQkJCQlCT09MRUFOCgkJfSwKCQl1bnN1cHBvcnRlZAkJCQkJCQkJCQlOVUxMCgl9LAoJdGRkMzg0LWhzcGRzY2gJCQkJCQkJCQlDSE9JQ0UgewoJCXN1cHBvcnRlZAkJCQkJCQkJCQlIU0RTQ0gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnksCgkJdW5zdXBwb3J0ZWQJCQkJCQkJCQkJTlVMTAoJfSwKCXRkZDEyOC1oc3Bkc2NoCQkJCQkJCQkJQ0hPSUNFIHsKCQlzdXBwb3J0ZWQJCQkJCQkJCQkJSFNEU0NILXBoeXNpY2FsLWxheWVyLWNhdGVnb3J5LAoJCXVuc3VwcG9ydGVkCQkJCQkJCQkJCU5VTEwKCX0KfQoKUE5CU0NILUFsbG9jYXRpb24tcjQgOjo9CQkJCVNFUVVFTkNFIHsKCQludW1iZXJPZlJlcGV0aXRpb25zUGVyU0ZOUGVyaW9kCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJCWMyLCBjMywgYzQsIGM1LCBjNiwgYzcsIGM4LCBjOSwgYzEwLAoJCQkJCQkJCQkJCWMxMiwgYzE0LCBjMTYsIGMxOCwgYzIwLCBjMjQsIGMyOCwgYzMyLAoJCQkJCQkJCQkJCWMzNiwgYzQwLCBjNDgsIGM1NiwgYzY0LCBjNzIsIGM4MCAgfQp9CgpQcm90b2NvbEVycm9yQ2F1c2UgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJYXNuMS1WaW9sYXRpb25PckVuY29kaW5nRXJyb3IsCgkJCQkJCQkJCQltZXNzYWdlVHlwZU5vbmV4aXN0ZW50LAoJCQkJCQkJCQkJbWVzc2FnZU5vdENvbXBhdGlibGVXaXRoUmVjZWl2ZXJTdGF0ZSwKCQkJCQkJCQkJCWllLVZhbHVlTm90Q29tcHJlaGVuZGVkLAoJCQkJCQkJCQkJaW5mb3JtYXRpb25FbGVtZW50TWlzc2luZywKCQkJCQkJCQkJCW1lc3NhZ2VFeHRlbnNpb25Ob3RDb21wcmVoZW5kZWQsCgkJCQkJCQkJCQlzcGFyZTIsIHNwYXJlMSB9CgpQcm90b2NvbEVycm9ySW5kaWNhdG9yIDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbm9FcnJvciwgZXJyb3JPY2N1cnJlZCB9CgpQcm90b2NvbEVycm9ySW5kaWNhdG9yV2l0aE1vcmVJbmZvIDo6PSAKCQkJCQkJCQkJQ0hPSUNFIHsKCW5vRXJyb3IJCQkJCQkJCU5VTEwsCgllcnJvck9jY3VycmVkCQkJCQkJU0VRVUVOQ0UgewkJCgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsIAoJCXByb3RvY29sRXJyb3JJbmZvcm1hdGlvbgkJCVByb3RvY29sRXJyb3JJbmZvcm1hdGlvbgoJfQp9CgpQcm90b2NvbEVycm9yTW9yZUluZm9ybWF0aW9uIDo6PQlTRVFVRU5DRSB7CglkaWFnbm9zdGljc1R5cGUJCQkJCQlDSE9JQ0UgewoJCXR5cGUxCQkJCQkJCQlDSE9JQ0UgewoJCQlhc24xLVZpb2xhdGlvbk9yRW5jb2RpbmdFcnJvcgkJTlVMTCwKCQkJbWVzc2FnZVR5cGVOb25leGlzdGVudAkJCQlOVUxMLAoJCQltZXNzYWdlTm90Q29tcGF0aWJsZVdpdGhSZWNlaXZlclN0YXRlCgkJCQkJCQkJCQkJCUlkZW50aWZpY2F0aW9uT2ZSZWNlaXZlZE1lc3NhZ2UsCgkJCWllLVZhbHVlTm90Q29tcHJlaGVuZGVkCQkJCUlkZW50aWZpY2F0aW9uT2ZSZWNlaXZlZE1lc3NhZ2UsCgkJCWNvbmRpdGlvbmFsSW5mb3JtYXRpb25FbGVtZW50RXJyb3IJSWRlbnRpZmljYXRpb25PZlJlY2VpdmVkTWVzc2FnZSwKCQkJbWVzc2FnZUV4dGVuc2lvbk5vdENvbXByZWhlbmRlZAkJSWRlbnRpZmljYXRpb25PZlJlY2VpdmVkTWVzc2FnZSwKCQkJc3BhcmUxCQkJCQkJCQlOVUxMLCAKCQkJc3BhcmUyCQkJCQkJCQlOVUxMIAoJCX0sCgkJc3BhcmUJCQkJCQkJCU5VTEwKCX0KfQoKUmFkaW9GcmVxdWVuY3lCYW5kRkREIDo6PQkJCUVOVU1FUkFURUQgewoJLS0gZmRkMjEwMCwgZmRkMTkwMCwgZmRkMTgwMCBjb3JyZXNwb25kIHRvIEJhbmQgSSwgQmFuZCBJSSBhbmQgQmFuZCBJSUkgcmVzcGVjdGl2ZWx5CgkJCQkJCQkJCQlmZGQyMTAwLAoJCQkJCQkJCQkJZmRkMTkwMCwKCQkJCQkJCQkJCWZkZDE4MDAsIAoJCQkJCQkJCQkJYmFuZFZJLCAKCQkJCQkJCQkJCWJhbmRJViwKCQkJCQkJCQkJCWJhbmRWLAoJCQkJCQkJCQkJYmFuZFZJSSwKCQkJCQkJCQkJCWV4dGVuc2lvbi1pbmRpY2F0b3IgfQoKUmFkaW9GcmVxdWVuY3lCYW5kRkREMiA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWJhbmRWSUlJLAoJCQkJCQkJCQkJYmFuZElYLAoJCQkJCQkJCQkJYmFuZFgsCgkJCQkJCQkJCQliYW5kWEksCgkJCQkJCQkJCQliYW5kWElJLAoJCQkJCQkJCQkJYmFuZFhJSUksCgkJCQkJCQkJCQliYW5kWElWLAoJCQkJCQkJCQkJYmFuZFhWLAoJCQkJCQkJCQkJYmFuZFhWSSwKCQkJCQkJCQkJCWJhbmRYVklJLCAKCQkJCQkJCQkJCWJhbmRYVklJSSwKCQkJCQkJCQkJCWJhbmRYSVgsCgkJCQkJCQkJCQliYW5kWFgsCgkJCQkJCQkJCQliYW5kWFhJLAoJCQkJCQkJCQkJYmFuZFhYSUksCgkJCQkJCQkJCQlleHRlbnNpb24taW5kaWNhdG9yIH0KClJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QgOjo9CQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWEsIGIsIGMsIGFiLCBhYywgYmMsIGFiYywgc3BhcmUgfQoKUmFkaW9GcmVxdWVuY3lCYW5kVEREIDo6PQkJCUVOVU1FUkFURUQge2EsIGIsIGMsIHNwYXJlfQoKUmFkaW9GcmVxdWVuY3lCYW5kR1NNIDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZ3NtNDUwLAoJCQkJCQkJCQkJZ3NtNDgwLAoJCQkJCQkJCQkJZ3NtODUwLAoJCQkJCQkJCQkJZ3NtOTAwUCwKCQkJCQkJCQkJCWdzbTkwMEUsCgkJCQkJCQkJCQlnc20xODAwLAoJCQkJCQkJCQkJZ3NtMTkwMCwKCQkJCQkJCQkJCXNwYXJlOSwgc3BhcmU4LCBzcGFyZTcsIHNwYXJlNiwgc3BhcmU1LAoJCQkJCQkJCQkJc3BhcmU0LCBzcGFyZTMsIHNwYXJlMiwgc3BhcmUxfQoKUmItdGltZXItaW5kaWNhdG9yIDo6PQkJCQlTRVFVRU5DRSB7Cgl0MzE0LWV4cGlyZWQJCQkJCQlCT09MRUFOLAoJdDMxNS1leHBpcmVkCQkJCQkJQk9PTEVBTiB9CgpSZS1Fc3RhYmxpc2htZW50VGltZXIgOjo9CQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl1c2VUMzE0LCB1c2VUMzE1Cn0KClJlZGlyZWN0aW9uSW5mbyA6Oj0JCQkJCUNIT0lDRSB7CglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbywKCWludGVyUkFUSW5mbwkJCQkJCUludGVyUkFUSW5mbwp9CgpSZWRpcmVjdGlvbkluZm8tcjYgOjo9CQkJCUNIT0lDRSB7CglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbywKCWludGVyUkFUSW5mbwkJCQkJCUludGVyUkFUSW5mby1yNgp9CgpSZWplY3Rpb25DYXVzZSA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJY29uZ2VzdGlvbiwKCQkJCQkJCQkJCXVuc3BlY2lmaWVkIH0KClJlbGVhc2VDYXVzZSA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbm9ybWFsRXZlbnQsCgkJCQkJCQkJCQl1bnNwZWNpZmllZCwKCQkJCQkJCQkJCXByZS1lbXB0aXZlUmVsZWFzZSwKCQkJCQkJCQkJCWNvbmdlc3Rpb24sCgkJCQkJCQkJCQlyZS1lc3RhYmxpc2htZW50UmVqZWN0LAoJCQkJCQkJCQkJZGlyZWN0ZWRzaWduYWxsaW5nY29ubmVjdGlvbnJlLWVzdGFibGlzaG1lbnQsCgkJCQkJCQkJCQl1c2VySW5hY3Rpdml0eSwKCQkJCQkJCQkJCXNwYXJlIH0KClJGLUNhcGFiaWxpdHkgOjo9CQkJCQlTRVFVRU5DRSB7CgkJZmRkUkYtQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CgkJCXVlLVBvd2VyQ2xhc3MJCQkJCVVFLVBvd2VyQ2xhc3MsCgkJCXR4UnhGcmVxdWVuY3lTZXBhcmF0aW9uCQkJVHhSeEZyZXF1ZW5jeVNlcGFyYXRpb24KCQl9CQkJCQkJCQkJT1BUSU9OQUwsCgkJdGRkUkYtQ2FwYWJpbGl0eQkJCQkJCQlTRVFVRU5DRSB7CgkJCXVlLVBvd2VyQ2xhc3MJCQkJVUUtUG93ZXJDbGFzcywKCQkJcmFkaW9GcmVxdWVuY3lURERCYW5kTGlzdAlSYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0LAoJCQljaGlwUmF0ZUNhcGFiaWxpdHkJCQlDaGlwUmF0ZUNhcGFiaWxpdHkKCQl9CQkJCQkJCQkJT1BUSU9OQUwKfQoKUkYtQ2FwYWJpbGl0eS1yNC1leHQgOjo9CQkJCVNFUVVFTkNFIHsKCQl0ZGRSRi1DYXBhYmlsaXR5CQkJCQkJCVNFUVVFTkNFIHsKCQkJdWUtUG93ZXJDbGFzcwkJCQlVRS1Qb3dlckNsYXNzLAoJCQlyYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0CVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QsCgkJCWNoaXBSYXRlQ2FwYWJpbGl0eQkJCUNoaXBSYXRlQ2FwYWJpbGl0eQoJCX0JCQkJCQkJCQlPUFRJT05BTAp9CgpSRi1DYXBhYmlsaXR5LXI3IDo6PQkJCQlTRVFVRU5DRSB7CgkJZmRkUkYtQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CgkJCXVlLVBvd2VyQ2xhc3MJCQkJCVVFLVBvd2VyQ2xhc3MsCgkJCXR4UnhGcmVxdWVuY3lTZXBhcmF0aW9uCQkJVHhSeEZyZXF1ZW5jeVNlcGFyYXRpb24KCQl9CQkJCQkJCQkJT1BUSU9OQUwsCgkJdGRkUkYtQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CgkJCXVlLVBvd2VyQ2xhc3MJCQkJCVVFLVBvd2VyQ2xhc3MsCgkJCXJhZGlvRnJlcXVlbmN5VEREQmFuZExpc3QJCVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QsCgkJCWNoaXBSYXRlQ2FwYWJpbGl0eQkJCQlDaGlwUmF0ZUNhcGFiaWxpdHktcjcKCQl9CU9QVElPTkFMCn0KClJMQy1DYXBhYmlsaXR5IDo6PQkJCQkJU0VRVUVOQ0UgewoJLS0gSWYgcHJlc2VudCwgdGhlICJ0b3RhbFJMQy1BTS1CdWZmZXJTaXplIiBpbiB0aGUgSUUgIlJMQy1DYXBhYmlsaXR5LXI1LWV4dCIgb3ZlcnJpZGVzIHRoZQoJLS0gY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGlzIElFLiBUaGUgdmFsdWUgaW4gdGhpcyBJRSBtYXkgYmUgdXNlZCBieSBhIHByZS1SRUwtNSBVVFJBTi4KCXRvdGFsUkxDLUFNLUJ1ZmZlclNpemUJCQkJVG90YWxSTEMtQU0tQnVmZmVyU2l6ZSwKCW1heGltdW1STEMtV2luZG93U2l6ZQkJCQlNYXhpbXVtUkxDLVdpbmRvd1NpemUsCgltYXhpbXVtQU0tRW50aXR5TnVtYmVyCQkJCU1heGltdW1BTS1FbnRpdHlOdW1iZXJSTEMtQ2FwCn0KClJMQy1DYXBhYmlsaXR5LXI1LWV4dCA6Oj0JCQkJCVNFUVVFTkNFIHsKCXRvdGFsUkxDLUFNLUJ1ZmZlclNpemUJCQkJVG90YWxSTEMtQU0tQnVmZmVyU2l6ZS1yNS1leHQJCU9QVElPTkFMCn0KClJSQy1Db25uZWN0aW9uUmVsZWFzZUluZm9ybWF0aW9uIDo6PQlDSE9JQ0UgewoJbm9SZWxlYXNlCQkJCQkJCQlOVUxMLAoJcmVsZWFzZQkJCQkJCQkJCVNFUVVFTkNFIHsKCQlyZWxlYXNlQ2F1c2UJCQkJCQkJUmVsZWFzZUNhdXNlCgl9Cn0KClJSQy1NZXNzYWdlU2VxdWVuY2VOdW1iZXIgOjo9CQlJTlRFR0VSICgwLi4xNSkKCgpSUkMtTWVzc2FnZVNlcXVlbmNlTnVtYmVyTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDQuLjUpKSBPRgoJCQkJCQkJCQkJUlJDLU1lc3NhZ2VTZXF1ZW5jZU51bWJlcgoKUlJDLVN0YXRlSW5kaWNhdG9yIDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWNlbGwtRENILCBjZWxsLUZBQ0gsIGNlbGwtUENILCB1cmEtUENIIH0KClJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIgOjo9CQlJTlRFR0VSICgwLi4zKQoKUy1STlRJIDo6PQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyMCkpCgpTLVJOVEktMiA6Oj0JCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxMCkpCgpTZWN1cml0eUNhcGFiaWxpdHkgOjo9CQkJCVNFUVVFTkNFIHsKCWNpcGhlcmluZ0FsZ29yaXRobUNhcAkJCQlCSVQgU1RSSU5HIHsKCQkJCQkJCQkJCS0tIEZvciBlYWNoIGJpdCB2YWx1ZSDSMNMgbWVhbnMgZmFsc2UvIG5vdCBzdXBwb3J0ZWQKCQkJCQkJCQkJCQlzcGFyZTE1KDApLAoJCQkJCQkJCQkJCXNwYXJlMTQoMSksCgkJCQkJCQkJCQkJc3BhcmUxMygyKSwKCQkJCQkJCQkJCQlzcGFyZTEyKDMpLAoJCQkJCQkJCQkJCXNwYXJlMTEoNCksCgkJCQkJCQkJCQkJc3BhcmUxMCg1KSwKCQkJCQkJCQkJCQlzcGFyZTkoNiksCgkJCQkJCQkJCQkJc3BhcmU4KDcpLAoJCQkJCQkJCQkJCXNwYXJlNyg4KSwKCQkJCQkJCQkJCQlzcGFyZTYoOSksCgkJCQkJCQkJCQkJc3BhcmU1KDEwKSwKCQkJCQkJCQkJCQlzcGFyZTQoMTEpLAoJCQkJCQkJCQkJCXNwYXJlMygxMiksCgkJCQkJCQkJCQkJc3BhcmUyKDEzKSwKCQkJCQkJCQkJCQl1ZWExKDE0KSwKCQkJCQkJCQkJCQl1ZWEwKDE1KQoJCQkJCQkJCQkJCX0JKFNJWkUgKDE2KSksCglpbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtQ2FwCQlCSVQgU1RSSU5HIHsKCQkJCQkJCQkJCS0tIEZvciBlYWNoIGJpdCB2YWx1ZSDSMNMgbWVhbnMgZmFsc2UvIG5vdCBzdXBwb3J0ZWQKCQkJCQkJCQkJCQlzcGFyZTE1KDApLAoJCQkJCQkJCQkJCXNwYXJlMTQoMSksCgkJCQkJCQkJCQkJc3BhcmUxMygyKSwKCQkJCQkJCQkJCQlzcGFyZTEyKDMpLAoJCQkJCQkJCQkJCXNwYXJlMTEoNCksCgkJCQkJCQkJCQkJc3BhcmUxMCg1KSwKCQkJCQkJCQkJCQlzcGFyZTkoNiksCgkJCQkJCQkJCQkJc3BhcmU4KDcpLAoJCQkJCQkJCQkJCXNwYXJlNyg4KSwKCQkJCQkJCQkJCQlzcGFyZTYoOSksCgkJCQkJCQkJCQkJc3BhcmU1KDEwKSwKCQkJCQkJCQkJCQlzcGFyZTQoMTEpLAoJCQkJCQkJCQkJCXNwYXJlMygxMiksCgkJCQkJCQkJCQkJc3BhcmUyKDEzKSwKCQkJCQkJCQkJCQl1aWExKDE0KSwKCQkJCQkJCQkJCQlzcGFyZTAoMTUpCgkJCQkJCQkJCQkgCX0gCSAoU0laRSAoMTYpKQp9CgpTZXJ2aW5nLUhTRFNDSC1DZWxsSW5mb3JtYXRpb24gOjo9CQlTRVFVRU5DRSB7CglkZWx0YUFDSwkJCQkJCURlbHRhQUNLCQkJCQlPUFRJT05BTCwKCWRlbHRhTkFDSwkJCQkJCURlbHRhTkFDSwkJCQkJT1BUSU9OQUwsCgloYXJxLVByZWFtYmxlLU1vZGUJCQkJSEFSUS1QcmVhbWJsZS1Nb2RlLAoJcHJpbWFyeUNQSUNILUluZm8JCQkJUHJpbWFyeUNQSUNILUluZm8JCQlPUFRJT05BTCwKCWRsLWhzcGRzY2gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTCwKCWhhcnFJbmZvCQkJCQkJSEFSUS1JbmZvIAkJCQkJT1BUSU9OQUwsCgltYWMtaHNSZXNldEluZGljYXRvcgkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQlPUFRJT05BTCAKfQoKU2ltdWx0YW5lb3VzU0NDUENILURQQ0gtUmVjZXB0aW9uIDo6PSBDSE9JQ0UgewoJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKCXN1cHBvcnRlZAkJCQkJCQlTRVFVRU5DRSB7CgkJbWF4Tm9TQ0NQQ0gtUkwJCQkJCQlNYXhOb1NDQ1BDSC1STCwKCQktLSBzaW11bHRhbmVvdXNTQ0NQQ0gtRFBDSC1EUERDSC1SZWNlcHRpb24gaXMgYXBwbGljYWJsZSBvbmx5IGlmIAoJCS0tIHRoZSBJRSBTdXBwb3J0IG9mIFBEU0NIID0gVFJVRQoJCS0tIE5vdGU6IHRoZSByZWZlcmVuY2UgdG8gRFBEQ0ggaW4gdGhlIGVsZW1lbnQgbmFtZSBiZWxvdyBpcyBpbmNvcnJlY3QgKHNlZSB0YWJ1bGFyKS4gVGhlIAoJCS0tIG5hbWUgaXMgbm90IGNoYW5nZWQsIHRvIGtlZXAgaXQgYWxpZ25lZCB3aXRoIFI5OS4KCQlzaW11bHRhbmVvdXNTQ0NQQ0gtRFBDSC1EUERDSC1SZWNlcHRpb24JCUJPT0xFQU4KCX0KfQoKU1JOQy1JZGVudGl0eSA6Oj0JCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEyKSkKCgpTVEFSVC1WYWx1ZSA6Oj0JCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyMCkpCgpTVEFSVExpc3QgOjo9CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENOZG9tYWlucykpIE9GCgkJCQkJCQkJCQlTVEFSVFNpbmdsZQoKU1RBUlRTaW5nbGUgOjo9CQkJCQkJU0VRVUVOQ0UgewoJY24tRG9tYWluSWRlbnRpdHkJCQkJCUNOLURvbWFpbklkZW50aXR5LAoJc3RhcnQtVmFsdWUJCQkJCQkJU1RBUlQtVmFsdWUJCQkKfQoKQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI1IDo6PQlTRVFVRU5DRSB7Cgl1ZS1SYWRpb0NhcGFiaWxpdHlGRERVcGRhdGVSZXF1aXJlbWVudC1GREQJQk9PTEVBTiwKCXVlLVJhZGlvQ2FwYWJpbGl0eVRERFVwZGF0ZVJlcXVpcmVtZW50LVRERDM4NAlCT09MRUFOLAoJdWUtUmFkaW9DYXBhYmlsaXR5VEREVXBkYXRlUmVxdWlyZW1lbnQtVEREMTI4CUJPT0xFQU4sCglzeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcUxpc3QJCVN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxTGlzdC1yNQkJT1BUSU9OQUwKfQoKU3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXEgOjo9CQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWdzbSB9CgpTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcS12NTkwZXh0IDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlnZXJhbkl1IH0KClN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxLXI1IDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlnc20sIGdlcmFuSXUgfQoKU3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXFMaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4U3lzdGVtQ2FwYWJpbGl0eSkpIE9GIAoJCQkJCQkJCQkJU3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXEKClN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxTGlzdC1yNSA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFN5c3RlbUNhcGFiaWxpdHkpKSBPRiAKCQkJCQkJCQkJCVN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxLXI1CgpULTMwMCA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQltczEwMCwgbXMyMDAsIG1zNDAwLCBtczYwMCwgbXM4MDAsCgkJCQkJCQkJCQltczEwMDAsIG1zMTIwMCwgbXMxNDAwLCBtczE2MDAsCgkJCQkJCQkJCQltczE4MDAsIG1zMjAwMCwgbXMzMDAwLCBtczQwMDAsCgkJCQkJCQkJCQltczYwMDAsIG1zODAwMCB9CgpULTMwMSA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQltczEwMCwgbXMyMDAsIG1zNDAwLCBtczYwMCwgbXM4MDAsCgkJCQkJCQkJCQltczEwMDAsIG1zMTIwMCwgbXMxNDAwLCBtczE2MDAsCgkJCQkJCQkJCQltczE4MDAsIG1zMjAwMCwgbXMzMDAwLCBtczQwMDAsCgkJCQkJCQkJCQltczYwMDAsIG1zODAwMCwgc3BhcmUgfQoKVC0zMDIgOjo9CQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbXMxMDAsIG1zMjAwLCBtczQwMCwgbXM2MDAsIG1zODAwLAoJCQkJCQkJCQkJbXMxMDAwLCBtczEyMDAsIG1zMTQwMCwgbXMxNjAwLAoJCQkJCQkJCQkJbXMxODAwLCBtczIwMDAsIG1zMzAwMCwgbXM0MDAwLAoJCQkJCQkJCQkJbXM2MDAwLCBtczgwMDAsIHNwYXJlIH0KClQtMzA0IDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCW1zMTAwLCBtczIwMCwgbXM0MDAsIAoJCQkJCQkJCQkJbXMxMDAwLCBtczIwMDAsIHNwYXJlMywgc3BhcmUyLCBzcGFyZTEgfQoKVC0zMDUgOjo9CQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbm9VcGRhdGUsIG01LCBtMTAsIG0zMCwKCQkJCQkJCQkJCW02MCwgbTEyMCwgbTM2MCwgbTcyMCB9CgpULTMwNyA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlzNSwgczEwLCBzMTUsIHMyMCwKCQkJCQkJCQkJCXMzMCwgczQwLCBzNTAsIHNwYXJlIH0KClQtMzA4IDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCW1zNDAsIG1zODAsIG1zMTYwLCBtczMyMCB9CgpULTMwOSA6Oj0JCQkJCQkJSU5URUdFUiAoMS4uOCkKClQtMzEwIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCW1zNDAsIG1zODAsIG1zMTIwLCBtczE2MCwKCQkJCQkJCQkJCW1zMjAwLCBtczI0MCwgbXMyODAsIG1zMzIwIH0KClQtMzExIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCW1zMjUwLCBtczUwMCwgbXM3NTAsIG1zMTAwMCwKCQkJCQkJCQkJCW1zMTI1MCwgbXMxNTAwLCBtczE3NTAsIG1zMjAwMCB9CgotLSBUaGUgdmFsdWUgMCBmb3IgVC0zMTIgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uClQtMzEyIDo6PQkJCQkJCQlJTlRFR0VSICgwLi4xNSkKClQtMzEzIDo6PQkJCQkJCQlJTlRFR0VSICgwLi4xNSkKClQtMzE0IDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXMwLCBzMiwgczQsIHM2LCBzOCwKCQkJCQkJCQkJCXMxMiwgczE2LCBzMjAgfQoKVC0zMTUgOjo9CQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJczAsIHMxMCwgczMwLCBzNjAsIHMxODAsCgkJCQkJCQkJCQlzNjAwLCBzMTIwMCwgczE4MDAgfQoKVC0zMTYgOjo9CQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJczAsIHMxMCwgczIwLCBzMzAsIHM0MCwKCQkJCQkJCQkJCXM1MCwgcy1pbmYsIHNwYXJlIH0KCi0tIEFsbCB0aGUgdmFsdWVzIGFyZSBjaGFuZ2VkIHRvICJpbmZpbml0eSIgaW4gUmVsLTUKVC0zMTcgOjo9CQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJaW5maW5pdHkwLCAgaW5maW5pdHkxLCAgaW5maW5pdHkyLCBpbmZpbml0eTMsIGluZmluaXR5NCwKCQkJCQkJCQkJCWluZmluaXR5NSwgaW5maW5pdHk2LCBpbmZpbml0eTd9CgpULTMxOCA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQltczI1MCwgbXM1MDAsIG1zNzUwLCBtczEwMDAsIG1zMTI1MCwgbXMxNTAwLAoJCQkJCQkJCQkJbXMxNzUwLCBtczIwMDAsIG1zMzAwMCwgbXM0MDAwLCBtczYwMDAsIG1zODAwMCwKCQkJCQkJCQkJCW1zMTAwMDAsIG1zMTIwMDAsIG1zMTYwMDAgfQoKVC1DUENIIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWN0MCwgY3QxIH0KClRNU0ktYW5kLUxBSS1HU00tTUFQIDo6PQkJCVNFUVVFTkNFIHsKCXRtc2kJCQkJCQkJCVRNU0ktR1NNLU1BUCwKCWxhaQkJCQkJCQkJCUxBSQp9CgpUTVNJLURTLTQxIDo6PQkJCQkJCU9DVEVUIFNUUklORyAoU0laRSAoMi4uMTcpKQoKVG90YWxSTEMtQU0tQnVmZmVyU2l6ZSA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWR1bW15LCBrYjEwLCBrYjUwLCBrYjEwMCwKCQkJCQkJCQkJCWtiMTUwLCBrYjUwMCwga2IxMDAwLCBzcGFyZSB9CgpUb3RhbFJMQy1BTS1CdWZmZXJTaXplLXI1LWV4dCA6Oj0JRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlrYjIwMCwga2IzMDAsIGtiNDAwLCBrYjc1MCB9CgotLSBBY3R1YWwgdmFsdWUgVHJhbnNtaXNzaW9uUHJvYmFiaWxpdHkgPSBJRSB2YWx1ZSAqIDAuMTI1ClRyYW5zbWlzc2lvblByb2JhYmlsaXR5IDo6PQkJCUlOVEVHRVIgKDEuLjgpCgpUcmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eSA6Oj0JCVNFUVVFTkNFIHsKCWRsLVRyYW5zQ2hDYXBhYmlsaXR5CQkJCURMLVRyYW5zQ2hDYXBhYmlsaXR5LAoJdWwtVHJhbnNDaENhcGFiaWxpdHkJCQkJVUwtVHJhbnNDaENhcGFiaWxpdHkJCn0KClR1cmJvU3VwcG9ydCA6Oj0JCQkJCUNIT0lDRSB7Cglub3RTdXBwb3J0ZWQJCQkJCQlOVUxMLAoJc3VwcG9ydGVkCQkJCQkJCU1heE5vQml0cwp9CgotLSBWYWx1ZXMgZGVmaW5lZCBhcyBzcGFyZSBzaGFsbCBub3QgYmUgc2VudCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHByb3RvY29sLiBJZiBhIHNwYXJlIHZhbHVlIGlzCi0tIHJlY2VpdmVkLCBpdCBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgJ2RlZmF1bHQtUnhUWC1zcGFyYXRpb24nLgpUeFJ4RnJlcXVlbmN5U2VwYXJhdGlvbiA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWRlZmF1bHQtVHhSeC1zZXBhcmF0aW9uLCBzcGFyZTIsIHNwYXJlMSB9CgpVLVJOVEkgOjo9CQkJCQkJCVNFUVVFTkNFIHsKCXNybmMtSWRlbnRpdHkJCQkJCQlTUk5DLUlkZW50aXR5LAoJcy1STlRJCQkJCQkJCQlTLVJOVEkKfQoKVS1STlRJLUdyb3VwIDo6PQkJCQkJQ0hPSUNFIHsKLS0gVEFCVUxBUjogbm90IGZvbGxvd2luZyB0aGUgdGFidWxhciBzdHJpY3RseSwgYnV0IHRoaXMgd2lsbCBtb3N0IGxpa2VseSBzYXZlIGJpdHMKCWFsbAkJCQkJCQkJCU5VTEwsCgl1LVJOVEktQml0TWFza0luZGV4LWIxCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMxKSksCgl1LVJOVEktQml0TWFza0luZGV4LWIyCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMwKSksCgl1LVJOVEktQml0TWFza0luZGV4LWIzCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI5KSksCgl1LVJOVEktQml0TWFza0luZGV4LWI0CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI4KSksCgl1LVJOVEktQml0TWFza0luZGV4LWI1CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI3KSksCgl1LVJOVEktQml0TWFza0luZGV4LWI2CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI2KSksCgl1LVJOVEktQml0TWFza0luZGV4LWI3CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI1KSksCgl1LVJOVEktQml0TWFza0luZGV4LWI4CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI0KSksCgl1LVJOVEktQml0TWFza0luZGV4LWI5CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIzKSksCgl1LVJOVEktQml0TWFza0luZGV4LWIxMAkJCQlCSVQgU1RSSU5HIChTSVpFICgyMikpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMTEJCQkJQklUIFNUUklORyAoU0laRSAoMjEpKSwKCXUtUk5USS1CaXRNYXNrSW5kZXgtYjEyCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIwKSksCgl1LVJOVEktQml0TWFza0luZGV4LWIxMwkJCQlCSVQgU1RSSU5HIChTSVpFICgxOSkpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMTQJCQkJQklUIFNUUklORyAoU0laRSAoMTgpKSwKCXUtUk5USS1CaXRNYXNrSW5kZXgtYjE1CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE3KSksCgl1LVJOVEktQml0TWFza0luZGV4LWIxNgkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMTcJCQkJQklUIFNUUklORyAoU0laRSAoMTUpKSwKCXUtUk5USS1CaXRNYXNrSW5kZXgtYjE4CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE0KSksCgl1LVJOVEktQml0TWFza0luZGV4LWIxOQkJCQlCSVQgU1RSSU5HIChTSVpFICgxMykpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMjAJCQkJQklUIFNUUklORyAoU0laRSAoMTIpKSwKCXUtUk5USS1CaXRNYXNrSW5kZXgtYjIxCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDExKSksCgl1LVJOVEktQml0TWFza0luZGV4LWIyMgkJCQlCSVQgU1RSSU5HIChTSVpFICgxMCkpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMjMJCQkJQklUIFNUUklORyAoU0laRSAoOSkpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMjQJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMjUJCQkJQklUIFNUUklORyAoU0laRSAoNykpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMjYJCQkJQklUIFNUUklORyAoU0laRSAoNikpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMjcJCQkJQklUIFNUUklORyAoU0laRSAoNSkpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMjgJCQkJQklUIFNUUklORyAoU0laRSAoNCkpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMjkJCQkJQklUIFNUUklORyAoU0laRSAoMykpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMzAJCQkJQklUIFNUUklORyAoU0laRSAoMikpLAoJdS1STlRJLUJpdE1hc2tJbmRleC1iMzEJCQkJQklUIFNUUklORyAoU0laRSAoMSkpCn0KClUtUk5USS1TaG9ydCA6Oj0JCQkJCVNFUVVFTkNFIHsKCXNybmMtSWRlbnRpdHkJCQkJCQlTUk5DLUlkZW50aXR5LAoJcy1STlRJLTIJCQkJCQkJUy1STlRJLTIKfQoKVUUtQ2FwYWJpbGl0eUNvbnRhaW5lci1JRXMgOjo9IAkJCVNFUVVFTkNFIHsKLS0gQ29udGFpbmVyIGZvciB0cmFuc3BhcmVudCB0cmFuc2ZlciBvZiBjYXBhYmlsaXR5IGluZm9ybWF0aW9uIG5vdCByZWxhdGVkIHRvCi0tIGZlYXR1cmVzIGZvciB3aGljaCBlYXJseSBpbXBsZW1lbnRhdGlvbiBpcyBkZXNpcmVkCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2OTBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2OTBleHQsCgkJdWUtUkFUU3BlY2lmaWNDYXBhYmlsaXR5LXY2OTBleHQJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2OTBleHQJT1BUSU9OQUwsCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAp9CgpVRS1Db25uVGltZXJzQW5kQ29uc3RhbnRzIDo6PQkJU0VRVUVOQ0UgewotLSBPcHRpb25hbCBpcyB1c2VkIGFsc28gZm9yIHBhcmFtZXRlcnMgZm9yIHdoaWNoIHRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBsYXN0IG9uZSByZWFkIGluIFNJQjEKLS0gdC0zMDEgYW5kIG4tMzAxIHNob3VsZCBub3QgYmUgdXNlZCBieSB0aGUgVUUgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCgl0LTMwMQkJCQkJCQkJVC0zMDEJCQkJCQkJCURFRkFVTFQgbXMyMDAwLAoJbi0zMDEJCQkJCQkJCU4tMzAxCQkJCQkJCQlERUZBVUxUIDIsCgl0LTMwMgkJCQkJCQkJVC0zMDIJCQkJCQkJCURFRkFVTFQgbXM0MDAwLAoJbi0zMDIJCQkJCQkJCU4tMzAyCQkJCQkJCQlERUZBVUxUIDMsCgl0LTMwNAkJCQkJCQkJVC0zMDQJCQkJCQkJCURFRkFVTFQgbXMyMDAwLAoJbi0zMDQJCQkJCQkJCU4tMzA0CQkJCQkJCQlERUZBVUxUIDIsCgl0LTMwNQkJCQkJCQkJVC0zMDUJCQkJCQkJCURFRkFVTFQgbTMwLAoJdC0zMDcJCQkJCQkJCVQtMzA3CQkJCQkJCQlERUZBVUxUIHMzMCwKCXQtMzA4CQkJCQkJCQlULTMwOAkJCQkJCQkJREVGQVVMVCBtczE2MCwKCXQtMzA5CQkJCQkJCQlULTMwOQkJCQkJCQkJREVGQVVMVCA1LAoJdC0zMTAJCQkJCQkJCVQtMzEwCQkJCQkJCQlERUZBVUxUIG1zMTYwLAoJbi0zMTAJCQkJCQkJCU4tMzEwCQkJCQkJCQlERUZBVUxUIDQsCgl0LTMxMQkJCQkJCQkJVC0zMTEJCQkJCQkJCURFRkFVTFQgbXMyMDAwLAoJdC0zMTIJCQkJCQkJCVQtMzEyCQkJCQkJCQlERUZBVUxUIDEsCgktLSBuLTMxMiBzaGFsbCBiZSBpZ25vcmVkIGlmIG4tMzEyIGluIFVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dCBpcyBwcmVzZW50LCBhbmQgdGhlCgktLSB2YWx1ZSBvZiB0aGF0IGVsZW1lbnQgc2hhbGwgYmUgdXNlZCBpbnN0ZWFkLgoJbi0zMTIJCQkJCQkJCU4tMzEyCQkJCQkJCQlERUZBVUxUIHMxLAoJdC0zMTMJCQkJCQkJCVQtMzEzCQkJCQkJCQlERUZBVUxUIDMsCgluLTMxMwkJCQkJCQkJTi0zMTMJCQkJCQkJCURFRkFVTFQgczIwLAoJdC0zMTQJCQkJCQkJCVQtMzE0CQkJCQkJCQlERUZBVUxUIHMxMiwKCXQtMzE1CQkJCQkJCQlULTMxNQkJCQkJCQkJREVGQVVMVCBzMTgwLAoJLS0gbi0zMTUgc2hhbGwgYmUgaWdub3JlZCBpZiBuLTMxNSBpbiBVRS1Db25uVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQgaXMgcHJlc2VudCwgYW5kIHRoZQoJLS0gdmFsdWUgb2YgdGhhdCBlbGVtZW50IHNoYWxsIGJlIHVzZWQgaW5zdGVhZC4KCW4tMzE1CQkJCQkJCQlOLTMxNQkJCQkJCQkJREVGQVVMVCBzMSwKCXQtMzE2CQkJCQkJCQlULTMxNgkJCQkJCQkJREVGQVVMVCBzMzAsCgl0LTMxNwkJCQkJCQkJVC0zMTcJCQkJCQkJCURFRkFVTFQgaW5maW5pdHk0Cn0KClVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dCA6Oj0JCVNFUVVFTkNFIHsKCW4tMzEyCQkJCQkJCQlOLTMxMmV4dAkJCQkJCQkJT1BUSU9OQUwsCgluLTMxNQkJCQkJCQkJTi0zMTVleHQJCQkJCQkJCU9QVElPTkFMCn0KClVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMtcjUgOjo9CQlTRVFVRU5DRSB7Ci0tIE9wdGlvbmFsIGlzIHVzZWQgYWxzbyBmb3IgcGFyYW1ldGVycyBmb3Igd2hpY2ggdGhlIGRlZmF1bHQgdmFsdWUgaXMgdGhlIGxhc3Qgb25lIHJlYWQgaW4gU0lCMQotLSB0LTMwMSBhbmQgbi0zMDEgc2hvdWxkIG5vdCBiZSB1c2VkIGJ5IHRoZSBVRSBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KCXQtMzAxCQkJCQkJCQlULTMwMQkJCQkJCQkJREVGQVVMVCBtczIwMDAsCgluLTMwMQkJCQkJCQkJTi0zMDEJCQkJCQkJCURFRkFVTFQgMiwKCXQtMzAyCQkJCQkJCQlULTMwMgkJCQkJCQkJREVGQVVMVCBtczQwMDAsCgluLTMwMgkJCQkJCQkJTi0zMDIJCQkJCQkJCURFRkFVTFQgMywKCXQtMzA0CQkJCQkJCQlULTMwNAkJCQkJCQkJREVGQVVMVCBtczIwMDAsCgluLTMwNAkJCQkJCQkJTi0zMDQJCQkJCQkJCURFRkFVTFQgMiwKCXQtMzA1CQkJCQkJCQlULTMwNQkJCQkJCQkJREVGQVVMVCBtMzAsCgl0LTMwNwkJCQkJCQkJVC0zMDcJCQkJCQkJCURFRkFVTFQgczMwLAoJdC0zMDgJCQkJCQkJCVQtMzA4CQkJCQkJCQlERUZBVUxUIG1zMTYwLAoJdC0zMDkJCQkJCQkJCVQtMzA5CQkJCQkJCQlERUZBVUxUIDUsCgl0LTMxMAkJCQkJCQkJVC0zMTAJCQkJCQkJCURFRkFVTFQgbXMxNjAsCgluLTMxMAkJCQkJCQkJTi0zMTAJCQkJCQkJCURFRkFVTFQgNCwKCXQtMzExCQkJCQkJCQlULTMxMQkJCQkJCQkJREVGQVVMVCBtczIwMDAsCgl0LTMxMgkJCQkJCQkJVC0zMTIJCQkJCQkJCURFRkFVTFQgMSwKCW4tMzEyCQkJCQkJCQlOLTMxMi1yNQkJCQkJCQlERUZBVUxUIHMxLAoJdC0zMTMJCQkJCQkJCVQtMzEzCQkJCQkJCQlERUZBVUxUIDMsCgluLTMxMwkJCQkJCQkJTi0zMTMJCQkJCQkJCURFRkFVTFQgczIwLAoJdC0zMTQJCQkJCQkJCVQtMzE0CQkJCQkJCQlERUZBVUxUIHMxMiwKCXQtMzE1CQkJCQkJCQlULTMxNQkJCQkJCQkJREVGQVVMVCBzMTgwLAoJbi0zMTUJCQkJCQkJCU4tMzE1LXI1CQkJCQkJCURFRkFVTFQgczEsCgl0LTMxNgkJCQkJCQkJVC0zMTYJCQkJCQkJCURFRkFVTFQgczMwLAoJdC0zMTcJCQkJCQkJCVQtMzE3CQkJCQkJCQlERUZBVUxUIGluZmluaXR5NAp9CgpVRS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzIDo6PQkJU0VRVUVOQ0UgewoJdC0zMDAJCQkJCQkJCVQtMzAwLAoJbi0zMDAJCQkJCQkJCU4tMzAwLAoJdC0zMTIJCQkJCQkJCVQtMzEyLAoJLS0gbi0zMTIgc2hhbGwgYmUgaWdub3JlZCBpZiBuLTMxMiBpbiBVRS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQgaXMgcHJlc2VudCwgYW5kIHRoZQoJLS0gdmFsdWUgb2YgdGhhdCBlbGVtZW50IHNoYWxsIGJlIHVzZWQgaW5zdGVhZC4KCW4tMzEyCQkJCQkJCQlOLTMxMgkKfQoKVUUtSWRsZVRpbWVyc0FuZENvbnN0YW50cy12M2EwZXh0IDo6PQkJU0VRVUVOQ0UgewoJbi0zMTIJCQkJCQkJCU4tMzEyZXh0CQkJCQkJCQlPUFRJT05BTAp9CgpVRS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eSA6Oj0JCVNFUVVFTkNFIHsKCW11bHRpUkFULUNhcGFiaWxpdHlMaXN0CQkJCU11bHRpUkFULUNhcGFiaWxpdHksCgltdWx0aU1vZGVDYXBhYmlsaXR5CQkJCQlNdWx0aU1vZGVDYXBhYmlsaXR5Cn0KClVFLVBvd2VyQ2xhc3MgOjo9CQkJCQlJTlRFR0VSICgxLi40KQoKVUUtUG93ZXJDbGFzc0V4dCA6Oj0JCQkJRU5VTUVSQVRFRCB7Y2xhc3MxLCBjbGFzczIsIGNsYXNzMywgY2xhc3M0LAoJCQkJCQkJCQkJIHNwYXJlNCwgc3BhcmUzLCBzcGFyZTIsIHNwYXJlMSB9CgpVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkgOjo9CQlTRVFVRU5DRSB7CgktLSBVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkgaXMgY29tcGF0aWJsZSB3aXRoIFI5OSwgYWx0aG91Z2ggYWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IgCgktLSBpcyByZW1vdmVkIGZyb20gdGhpcyBJRSwgc2luY2UgaXRzIGVuY29kaW5nIGRpZCBub3QgZG9lcyBpbiBiaXRzLiBUaGUgCgktLSBhY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciBpcyBwcm92aWRlZCBpbiB0aGUgcmVsZXZhbnQgUkVMLTQgZXh0ZW5zaW9uIElFcy4KCXBkY3AtQ2FwYWJpbGl0eQkJCQkJCVBEQ1AtQ2FwYWJpbGl0eSwKCXJsYy1DYXBhYmlsaXR5CQkJCQkJUkxDLUNhcGFiaWxpdHksCgl0cmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eQkJCVRyYW5zcG9ydENoYW5uZWxDYXBhYmlsaXR5LAoJcmYtQ2FwYWJpbGl0eQkJCQkJCVJGLUNhcGFiaWxpdHksCglwaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5CQkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eSwKCXVlLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5CQkJVUUtTXVsdGlNb2RlUkFULUNhcGFiaWxpdHksCglzZWN1cml0eUNhcGFiaWxpdHkJCQkJCVNlY3VyaXR5Q2FwYWJpbGl0eSwKCXVlLXBvc2l0aW9uaW5nLUNhcGFiaWxpdHkJCQlVRS1Qb3NpdGlvbmluZy1DYXBhYmlsaXR5LAoJbWVhc3VyZW1lbnRDYXBhYmlsaXR5CQkJCU1lYXN1cmVtZW50Q2FwYWJpbGl0eQkJT1BUSU9OQUwKfQoKVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5SW5mbyA6Oj0JCVNFUVVFTkNFIHsKCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQkJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eSwKCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzcwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzcwZXh0Cn0KClVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzcwZXh0IDo6PQlTRVFVRU5DRSB7Cgl1ZS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QJCVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdAp9CgpVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM4MGV4dCA6Oj0JU0VRVUVOQ0UgewoJdWUtUG9zaXRpb25pbmdDYXBhYmlsaXR5RXh0LXYzODAJCVVFLVBvc2l0aW9uaW5nQ2FwYWJpbGl0eUV4dC12MzgwCn0KClVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2EwZXh0IDo6PQlTRVFVRU5DRSB7Cgl1ZS1Qb3NpdGlvbmluZ0NhcGFiaWxpdHlFeHQtdjNhMAkJVUUtUG9zaXRpb25pbmdDYXBhYmlsaXR5RXh0LXYzYTAKfQoKVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzZzBleHQgOjo9CVNFUVVFTkNFIHsKCXVlLVBvc2l0aW9uaW5nQ2FwYWJpbGl0eUV4dC12M2cwCQlVRS1Qb3NpdGlvbmluZ0NhcGFiaWxpdHlFeHQtdjNnMAp9CgpVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY1MGV4dCA6Oj0JU0VRVUVOQ0UgewoJdWUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0MgkJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0MiwKCS0tIFRoaXMgSUUgc2hhbGwgYmUgaW5jbHVkZWQgaWYgdGhlIFVFIGFsc28gc3VwcG9ydHMgQmFuZCBJLVZJSQoJdWUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0LWV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QtZXh0CU9QVElPTkFMCn0KClVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjkwZXh0IDo6PSBTRVFVRU5DRSB7CgkJcGh5c2ljYWxjaGFubmVsY2FwYWJpbGl0eS1lZGNoCVBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktZWRjaC1yNiwKCQktLSBUQUJVTEFSOiBkZXZpY2VUeXBlIGlzIE1EIGluIHRhYnVsYXIgZGVzY3JpcHRpb24KCQktLSBEZWZhdWx0IHZhbHVlIGlzICdkb2VzQmVuZWZpdEZyb21CYXR0ZXJ5Q29uc3VtcHRpb25PcHRpbWlzYXRpb24nCgkJZGV2aWNlVHlwZQkJRU5VTUVSQVRFRCB7IGRvZXNOb3RCZW5lZml0RnJvbUJhdHRlcnlDb25zdW1wdGlvbk9wdGltaXNhdGlvbiB9CU9QVElPTkFMCn0KClVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12N3h5ZXh0IDo6PQkJU0VRVUVOQ0UgewoJcmYtQ2FwYWJpbGl0eQkJCQkJCQkJUkYtQ2FwYWJpbGl0eS1yNwkJCQlPUFRJT05BTCwKCXBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktcjcJCQkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1yNwlPUFRJT05BTAp9CgpVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QyIDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzRkREKSkgT0YKCQkJCQkJCQkJCQlVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERDIKClVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkREMiA6Oj0JU0VRVUVOQ0UgewoJcmFkaW9GcmVxdWVuY3lCYW5kRkREMgkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRGREQyLAoJZmRkUkYtQ2FwYWJpbGl0eQkJCQkJU0VRVUVOQ0UgewoJCXVlLVBvd2VyQ2xhc3MJCQkJCQlVRS1Qb3dlckNsYXNzRXh0LAoJCXR4UnhGcmVxdWVuY3lTZXBhcmF0aW9uCQkJCVR4UnhGcmVxdWVuY3lTZXBhcmF0aW9uCgl9CQlPUFRJT05BTCwKCW1lYXN1cmVtZW50Q2FwYWJpbGl0eTIJCQkJTWVhc3VyZW1lbnRDYXBhYmlsaXR5RXh0Mgp9CgoKVUUtUG9zaXRpb25pbmdDYXBhYmlsaXR5RXh0LXYzODAgOjo9CVNFUVVFTkNFIHsKCXJ4LXR4LVRpbWVEaWZmZXJlbmNlVHlwZTJDYXBhYmxlCQlCT09MRUFOCn0KClVFLVBvc2l0aW9uaW5nQ2FwYWJpbGl0eUV4dC12M2EwIDo6PQlTRVFVRU5DRSB7Cgl2YWxpZGl0eS1DZWxsUENILVVyYVBDSAkJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQp9CgpVRS1Qb3NpdGlvbmluZ0NhcGFiaWxpdHlFeHQtdjNnMCA6Oj0JU0VRVUVOQ0UgewoJc2ZuLXNmblR5cGUyQ2FwYWJpbGl0eQkJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9Cn0KClVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXFCYW5kc0ZERCkpIE9GCgkJCQkJCQkJCQkJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGREQKClVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdC1leHQgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxQmFuZHNGREQpKSBPRiAKCQkJCQkJCQkJCVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRELWV4dAoKVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGREQgOjo9CVNFUVVFTkNFewoJcmFkaW9GcmVxdWVuY3lCYW5kRkRECQkJCVJhZGlvRnJlcXVlbmN5QmFuZEZERCwKCWZkZFJGLUNhcGFiaWxpdHkJCQkJCVNFUVVFTkNFIHsKCQl1ZS1Qb3dlckNsYXNzCQkJCQkJVUUtUG93ZXJDbGFzc0V4dCwKCQl0eFJ4RnJlcXVlbmN5U2VwYXJhdGlvbgkJCQlUeFJ4RnJlcXVlbmN5U2VwYXJhdGlvbgoJfQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKCW1lYXN1cmVtZW50Q2FwYWJpbGl0eQkJCQlNZWFzdXJlbWVudENhcGFiaWxpdHlFeHQKfQoKVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGREQtZXh0IDo6PSBTRVFVRU5DRSB7CglyYWRpb0ZyZXF1ZW5jeUJhbmRGREQJCQkJUmFkaW9GcmVxdWVuY3lCYW5kRkRELAoJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGRERMaXN0LWV4dAlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERExpc3QtZXh0Cn0KClVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NGIwZXh0IDo6PQlTRVFVRU5DRSB7CglwZGNwLUNhcGFiaWxpdHktcjQtZXh0CQkJCVBEQ1AtQ2FwYWJpbGl0eS1yNC1leHQsCgl0ZGQtQ2FwYWJpbGl0eUV4dAkJCQkJU0VRVUVOQ0UgewoJCXJmLUNhcGFiaWxpdHkJCQkJCQlSRi1DYXBhYmlsaXR5LXI0LWV4dCwKCQlwaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LUxDUgkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1MQ1ItcjQsCgkJbWVhc3VyZW1lbnRDYXBhYmlsaXR5LXI0LWV4dAkJTWVhc3VyZW1lbnRDYXBhYmlsaXR5LXI0LWV4dAoJfQkJCQkJCQkJCQkJT1BUSU9OQUwsCgktLSBJRSAiIEFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yIiBpcyBub3QgbmVlZGVkIGluIFJSQyBDT05ORUNUSU9OIFNFVFVQIENPTVBMRVRFCglhY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvcgkJCQlBY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciAJT1BUSU9OQUwKfQoKVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcCA6Oj0gU0VRVUVOQ0UgewoJdG90YWxBTS1STENNZW1vcnlFeGNlZWRzMTBrQgkJCUJPT0xFQU4sCglyZi1DYXBhYmlsaXR5Q29tcAkJCQkJCVJGLUNhcGFiaWxpdHlDb21wCn0KClVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAtZXh0IDo6PSBTRVFVRU5DRSB7CglyZi1DYXBhYmlsaXR5RkREQ29tcAkJCQlSRi1DYXBhYkJhbmRMaXN0RkREQ29tcC1leHQKfQoKVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcC1yNyA6Oj0gU0VRVUVOQ0UgewoJdG90YWxBTS1STENNZW1vcnlFeGNlZWRzMTBrQgkJCUJPT0xFQU4sCglyZi1DYXBhYmlsaXR5Q29tcAkJCQkJCVJGLUNhcGFiaWxpdHlDb21wLXI3Cn0KClVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAyIDo6PQkJU0VRVUVOQ0UgewoJZmRkUGh5c2ljYWxDaGFubmVsQ2FwYWItaHNwZHNjaC1lZGNoCVNFUVVFTkNFIHsKCQlkbC1DYXBhYmlsaXR5V2l0aFNpbXVsdGFuZW91c0hTLURTQ0hDb25maWcKCQkJCQkJCQkJCQkJREwtQ2FwYWJpbGl0eVdpdGhTaW11bHRhbmVvdXNIUy1EU0NIQ29uZmlnCU9QVElPTkFMLAoJCXBoeXNpY2FsQ2hhbm5lbENhcGFiQ29tcC1oc3Bkc2NoLXI2CQlIU0RTQ0gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnksCgkJcGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1lZGNoLXI2CQlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LWVkY2gtcjYKCX0JCU9QVElPTkFMCn0KClJGLUNhcGFiaWxpdHlDb21wIDo6PSBTRVFVRU5DRSB7CglmZGQgCQkJCQlDSE9JQ0UgewoJCW5vdFN1cHBvcnRlZAkJCQkJTlVMTCwKCQlzdXBwb3J0ZWQJCQkJCQlSRi1DYXBhYkJhbmRMaXN0RkREQ29tcAoJfSwKCXRkZDM4NC1SRi1DYXBhYmlsaXR5CUNIT0lDRSB7CgkJbm90U3VwcG9ydGVkCQkJCQlOVUxMLAoJCXN1cHBvcnRlZAkJCQkJCVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QKCX0sCgl0ZGQxMjgtUkYtQ2FwYWJpbGl0eQlDSE9JQ0UgewoJCW5vdFN1cHBvcnRlZAkJCQkJTlVMTCwKCQlzdXBwb3J0ZWQJCQkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0Cgl9Cn0KClJGLUNhcGFiaWxpdHlDb21wLXI3IDo6PSBTRVFVRU5DRSB7CglmZGQgCQkJCQlDSE9JQ0UgewoJCW5vdFN1cHBvcnRlZAkJCQkJTlVMTCwKCQlzdXBwb3J0ZWQJCQkJCQlSRi1DYXBhYkJhbmRMaXN0RkREQ29tcAoJfSwKCXRkZDM4NC1SRi1DYXBhYmlsaXR5CUNIT0lDRSB7CgkJbm90U3VwcG9ydGVkCQkJCQlOVUxMLAoJCXN1cHBvcnRlZAkJCQkJCVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QKCX0sCgl0ZGQ3NjgtUkYtQ2FwYWJpbGl0eQlDSE9JQ0UJewoJCW5vdFN1cHBvcnRlZAkJCQkJTlVMTCwKCQlzdXBwb3J0ZWQJCQkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0Cgl9LAoJdGRkMTI4LVJGLUNhcGFiaWxpdHkJQ0hPSUNFIHsKCQlub3RTdXBwb3J0ZWQJCQkJCU5VTEwsCgkJc3VwcG9ydGVkCQkJCQkJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdAoJfQp9CgotLSBOT1RFOiBUaGlzIElFIGRlZmluZXMgdGhlIHN1cHBvcnRlZCBUWC9SWCBmcmVxdWVuY3kgc2VwYXJhdGlvbiBmb3IgdGhlIHJlc3BlY3RpdmUgc3VwcG9ydGVkCi0tIGZyZXF1ZW5jeSBiYW5kLiBWYWx1ZXMgZGVmaW5lZCBhcyBzcGFyZSBzaGFsbCBub3QgYmUgc2VudCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHByb3RvY29sLgotLSBJZiBhIHNwYXJlIHZhbHVlIGlzIHJlY2VpdmVkLCBpdCBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgJ2RlZmF1bHQtUnhUWC1zcGFyYXRpb24nLgpSRi1DYXBhYkJhbmRGRERDb21wIDo6PQkJCQlFTlVNRVJBVEVEIHsgbm90U3VwcG9ydGVkLAoJCQkJCQkJCQkJZGVmYXVsdC1UeFJ4LXNlcGFyYXRpb24sIHNwYXJlMiwgc3BhcmUxIH0KClJGLUNhcGFiQmFuZExpc3RGRERDb21wIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxQmFuZHNGREQpKSBPRgoJLS0gVGhlIGZpcnN0IGVudHJ5IGNvcnJlc3BvbmRzIHdpdGggdGhlIGZpcnN0IHZhbHVlIG9mIElFIFJhZGlvRnJlcXVlbmN5QmFuZEZERCwKCS0tIGZkZDIxMDAsIGFuZCBzbyBvbi4gTm8gbW9yZSB0aGFuIHNldmVuIGVudHJpZXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoaXMgSUUuIFRoZQoJLS0gOCd0aCBlbnRyeSwgaWYgcHJlc2VudCwgc2hhbGwgYmUgaWdub3JlZC4KCS0tIEFuIGV4dGVuc2lvbiBvZiB0aGlzIElFIG1heSBiZSBwcm92aWRlZCB1c2luZyB0aGUgSUUgJ1JGLUNhcGFiQmFuZExpc3RGRERDb21wLWV4dCcuCglSRi1DYXBhYkJhbmRGRERDb21wCgpSRi1DYXBhYkJhbmRMaXN0RkREQ29tcC1leHQgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzRkRELWV4dCkpIE9GCgktLSBUaGUgZmlyc3QgZW50cnkgY29ycmVzcG9uZHMgd2l0aCB0aGUgZmlyc3QgdmFsdWUgb2YgSUUgUmFkaW9GcmVxdWVuY3lCYW5kRkREMiwKCS0tIGJhbmRWSUlJLCBhbmQgc28gb24uCglSRi1DYXBhYkJhbmRGRERDb21wCgpVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dCA6Oj0JU0VRVUVOQ0UgewoJZGwtQ2FwYWJpbGl0eVdpdGhTaW11bHRhbmVvdXNIUy1EU0NIQ29uZmlnCURMLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZwlPUFRJT05BTCwKCXBkY3AtQ2FwYWJpbGl0eS1yNS1leHQJCQkJUERDUC1DYXBhYmlsaXR5LXI1LWV4dCwKCXJsYy1DYXBhYmlsaXR5LXI1LWV4dAkJCQlSTEMtQ2FwYWJpbGl0eS1yNS1leHQsCglwaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5CQkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1oc3Bkc2NoLXI1LAoJbXVsdGlNb2RlUkFULUNhcGFiaWxpdHktdjU5MGV4dAkJTXVsdGlNb2RlUkFULUNhcGFiaWxpdHktdjU5MGV4dAp9CgpVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dCA6Oj0gU0VRVUVOQ0UgewoJcGRjcC1DYXBhYmlsaXR5LXI1LWV4dDIJCQkJUERDUC1DYXBhYmlsaXR5LXI1LWV4dDIKfQoKVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2ODBleHQgOjo9IFNFUVVFTkNFIHsKCW11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LXY2ODBleHQJCU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LXY2ODBleHQKfQoKVUwtUGh5c0NoQ2FwYWJpbGl0eUZERCA6Oj0JCQlTRVFVRU5DRSB7CgltYXhOb0RQRENILUJpdHNUcmFuc21pdHRlZAkJCU1heE5vRFBEQ0gtQml0c1RyYW5zbWl0dGVkLAoJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAoJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgoJZHVtbXkJCQkJCQkJCUJPT0xFQU4JCn0KClVMLVBoeXNDaENhcGFiaWxpdHlGREQtcjYgOjo9CQkJU0VRVUVOQ0UgewoJbWF4Tm9EUERDSC1CaXRzVHJhbnNtaXR0ZWQJCQkJTWF4Tm9EUERDSC1CaXRzVHJhbnNtaXR0ZWQsCglwaHlzaWNhbGNoYW5uZWxjYXBhYmlsaXR5LWVkY2gJCQlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LWVkY2gtcjYKfQoKVUwtUGh5c0NoQ2FwYWJpbGl0eVRERCA6Oj0JCQlTRVFVRU5DRSB7CgltYXhUUy1QZXJGcmFtZQkJCQkJCU1heFRTLVBlckZyYW1lLAoJbWF4UGh5c0NoUGVyVGltZXNsb3QJCQkJTWF4UGh5c0NoUGVyVGltZXNsb3QsCgltaW5pbXVtU0YJCQkJCQkJTWluaW11bVNGLVVMLAoJc3VwcG9ydE9mUFVTQ0gJCQkJCQlCT09MRUFOCQp9CgpVTC1QaHlzQ2hDYXBhYmlsaXR5VERELUxDUi1yNCA6Oj0JU0VRVUVOQ0UgewoJbWF4VFMtUGVyU3ViRnJhbWUJCQkJCU1heFRTLVBlclN1YkZyYW1lLXI0LAoJbWF4UGh5c0NoUGVyVGltZXNsb3QJCQkJTWF4UGh5c0NoUGVyVGltZXNsb3QsCgltaW5pbXVtU0YJCQkJCQkJTWluaW11bVNGLVVMLAoJc3VwcG9ydE9mUFVTQ0gJCQkJCQlCT09MRUFOLAoJc3VwcG9ydE9mOFBTSwkJCQkJCUJPT0xFQU4KfQoKUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1lZGNoLXI2IDo6PQlTRVFVRU5DRSB7CglmZGQtZWRjaAkJCQkJCQkJQ0hPSUNFIHsKCQlzdXBwb3J0ZWQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJZWRjaC1QaHlzaWNhbExheWVyQ2F0ZWdvcnkJCQkJSU5URUdFUiAoMS4uMTYpCgkJfSwKCQl1bnN1cHBvcnRlZAkJCQkJCQkJTlVMTAoJfQp9CgpVTC1UcmFuc0NoQ2FwYWJpbGl0eSA6Oj0JCQlTRVFVRU5DRSB7CgltYXhOb0JpdHNUcmFuc21pdHRlZAkJCQlNYXhOb0JpdHMsCgltYXhDb252Q29kZUJpdHNUcmFuc21pdHRlZAkJCU1heE5vQml0cywKCXR1cmJvRW5jb2RpbmdTdXBwb3J0CQkJCVR1cmJvU3VwcG9ydCwKCW1heFNpbXVsdGFuZW91c1RyYW5zQ2hzCQkJCU1heFNpbXVsdGFuZW91c1RyYW5zQ2hzVUwsCgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCU5VTEwsCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQltYXhTaW11bHRhbmVvdXNDQ1RyQ0gtQ291bnQJCQlNYXhTaW11bHRhbmVvdXNDQ1RyQ0gtQ291bnQKCQl9Cgl9LAoJbWF4VHJhbnNtaXR0ZWRCbG9ja3MJCQkJTWF4VHJhbnNwb3J0QmxvY2tzVUwsCgltYXhOdW1iZXJPZlRGQwkJCQkJCU1heE51bWJlck9mVEZDLVVMLAoJbWF4TnVtYmVyT2ZURgkJCQkJCU1heE51bWJlck9mVEYKfQoKVUUtUG9zaXRpb25pbmctQ2FwYWJpbGl0eSA6Oj0JCVNFUVVFTkNFIHsKCXN0YW5kYWxvbmVMb2NNZXRob2RzU3VwcG9ydGVkCQkJQk9PTEVBTiwKCXVlLUJhc2VkT1RET0EtU3VwcG9ydGVkCQkJCQlCT09MRUFOLAoJbmV0d29ya0Fzc2lzdGVkR1BTLVN1cHBvcnRlZAkJCU5ldHdvcmtBc3Npc3RlZEdQUy1TdXBwb3J0ZWQsCglzdXBwb3J0Rm9yVUUtR1BTLVRpbWluZ09mQ2VsbEZyYW1lcwkJQk9PTEVBTiwKCXN1cHBvcnRGb3JJUERMCQkJCQkJCUJPT0xFQU4KfQoKVUUtU2VjdXJpdHlJbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7CglzdGFydC1DUwkJCQkJCQlTVEFSVC1WYWx1ZQp9CgpVRS1TZWN1cml0eUluZm9ybWF0aW9uMiA6Oj0JCQlTRVFVRU5DRSB7CglzdGFydC1QUwkJCQkJCQlTVEFSVC1WYWx1ZQp9CgpVUkEtVXBkYXRlQ2F1c2UgOjo9CQkJCQlFTlVNRVJBVEVEIHsgCgkJCQkJCQkJCQljaGFuZ2VPZlVSQSwgCgkJCQkJCQkJCQlwZXJpb2RpY1VSQVVwZGF0ZSwgCgkJCQkJCQkJCQlkdW1teSwKCQkJCQkJCQkJCXNwYXJlMSB9CgpVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudCA6Oj0gSU5URUdFUiAoMy4uOSkKCldhaXRUaW1lIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjE1KQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tICAgICBSQURJTyBCRUFSRVIgSU5GT1JNQVRJT04gRUxFTUVOVFMgKDEwLjMuNCkKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpBbGdvcml0aG1TcGVjaWZpY0luZm8gOjo9CQkJQ0hPSUNFIHsKCXJmYzI1MDctSW5mbwkJCQkJCVJGQzI1MDctSW5mbwp9CgpBbGdvcml0aG1TcGVjaWZpY0luZm8tcjQgOjo9CQlDSE9JQ0UgewoJcmZjMjUwNy1JbmZvCQkJCQkJUkZDMjUwNy1JbmZvLAoJcmZjMzA5NS1JbmZvCQkJCQkJUkZDMzA5NS1JbmZvLXI0Cn0KCkNJRC1JbmNsdXNpb25JbmZvLXI0IDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJcGRjcC1IZWFkZXIsCgkJCQkJCQkJCQlyZmMzMDk1LVBhY2tldEZvcm1hdCB9CgotLSBVcHBlciBsaW1pdCBvZiBDT1VOVC1DIGlzIDJeMzIgLSAxCkNPVU5ULUMgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjQyOTQ5NjcyOTUpCgotLSBVcHBlciBsaW1pdCBvZiBDT1VOVC1DLU1TQiBpcyAyXjI1IC0gMQpDT1VOVC1DLU1TQiA6Oj0JCQkJCQlJTlRFR0VSICgwLi4zMzU1NDQzMSkKCkRlZmF1bHRDb25maWdJZGVudGl0eSA6Oj0JCQlJTlRFR0VSICgwLi4xMCkKCkRlZmF1bHRDb25maWdJZGVudGl0eS1yNCA6Oj0JCUlOVEVHRVIgKDAuLjEyKQoKRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI1IDo6PQkJSU5URUdFUiAoMC4uMTMpCgotLSBEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYgdmFsdWVzIDIzLi4zMSBhcmUgc3BhcmUgYW5kIHNoYWxsIG5vdCBiZSB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiAKLS0gdGhlIHByb3RvY29sCkRlZmF1bHRDb25maWdJZGVudGl0eS1yNiA6Oj0JCUlOVEVHRVIgKDAuLjMxKQoKRGVmYXVsdENvbmZpZ01vZGUgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZmRkLAoJCQkJCQkJCQkJdGRkIH0KCkRESSA6Oj0JCQkJCQkJCUlOVEVHRVIgKDAuLjYyKQoKREwtQU0tUkxDLU1vZGUgOjo9CQkJCQlTRVFVRU5DRSB7CglpblNlcXVlbmNlRGVsaXZlcnkJCQkJCUJPT0xFQU4sCglyZWNlaXZpbmdXaW5kb3dTaXplCQkJCQlSZWNlaXZpbmdXaW5kb3dTaXplLAoJZGwtUkxDLVN0YXR1c0luZm8JCQkJCURMLVJMQy1TdGF0dXNJbmZvCn0KCkRMLUFNLVJMQy1Nb2RlLXI1IDo6PQkJCQkJU0VRVUVOQ0UgewoJZGwtUkxDLVBEVS1zaXplCQkJCQkJT2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTEsCglpblNlcXVlbmNlRGVsaXZlcnkJCQkJCUJPT0xFQU4sCglyZWNlaXZpbmdXaW5kb3dTaXplCQkJCQlSZWNlaXZpbmdXaW5kb3dTaXplLAoJZGwtUkxDLVN0YXR1c0luZm8JCQkJCURMLVJMQy1TdGF0dXNJbmZvCn0KCkRMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvIDo6PQkJU0VRVUVOQ0UgewoJckItV2l0aFBEQ1AtSW5mb0xpc3QJCQkJCVJCLVdpdGhQRENQLUluZm9MaXN0CU9QVElPTkFMCn0KCkRMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1IDo6PQlTRVFVRU5DRSB7CglyYi1XaXRoUERDUC1JbmZvTGlzdAkJCQkJUkItV2l0aFBEQ1AtSW5mb0xpc3QJCQlPUFRJT05BTCwKCXJiLVBEQ1BDb250ZXh0UmVsb2NhdGlvbkxpc3QJCQlSQi1QRENQQ29udGV4dFJlbG9jYXRpb25MaXN0CU9QVElPTkFMCn0KCkRMLUxvZ2ljYWxDaGFubmVsTWFwcGluZyA6Oj0JCVNFUVVFTkNFIHsKCS0tIFRBQlVMQVI6IERMLVRyYW5zcG9ydENoYW5uZWxUeXBlIGNvbnRhaW5zIFRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSBhcyB3ZWxsLgoJZGwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJREwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUsCglsb2dpY2FsQ2hhbm5lbElkZW50aXR5CQkJCUxvZ2ljYWxDaGFubmVsSWRlbnRpdHkJCQkJT1BUSU9OQUwKfQoKREwtTG9naWNhbENoYW5uZWxNYXBwaW5nLXI1IDo6PQkJU0VRVUVOQ0UgewoJLS0gVEFCVUxBUjogREwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUgY29udGFpbnMgVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5IGFzIHdlbGwuCglkbC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlETC1UcmFuc3BvcnRDaGFubmVsVHlwZS1yNSwKCWxvZ2ljYWxDaGFubmVsSWRlbnRpdHkJCQkJTG9naWNhbENoYW5uZWxJZGVudGl0eQkJCQlPUFRJT05BTAp9CgpETC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TG9DSHBlclJMQykpIE9GCgkJCQkJCQkJCQlETC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmcKCkRMLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0xpc3QtcjUgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhMb0NIcGVyUkxDKSkgT0YKCQkJCQkJCQkJCURMLUxvZ2ljYWxDaGFubmVsTWFwcGluZy1yNQoKREwtUmVjZXB0aW9uLVdpbmRvdy1TaXplLXI2IDo6PQkJRU5VTUVSQVRFRCB7IHNpemUzMiwgc2l6ZTQ4LCBzaXplNjQsIHNpemU4MCwgc2l6ZTk2LCBzaXplMTEyIH0KCkRMLVJGQzMwOTUtcjQgOjo9CQkJCQlTRVFVRU5DRSB7CgljaWQtSW5jbHVzaW9uSW5mbwkJCQkJQ0lELUluY2x1c2lvbkluZm8tcjQsCgltYXgtQ0lECQkJCQkJCQlJTlRFR0VSICgxLi4xNjM4MykJCQkJCURFRkFVTFQgMTUsCglyZXZlcnNlRGVjb21wcmVzc2lvbkRlcHRoCQkJSU5URUdFUiAoMC4uNjU1MzUpCQkJCQlERUZBVUxUIDAKfQoKREwtUkxDLU1vZGUgOjo9CQkJCQkJQ0hPSUNFIHsKCWRsLUFNLVJMQy1Nb2RlCQkJCQkJREwtQU0tUkxDLU1vZGUsCglkbC1VTS1STEMtTW9kZQkJCQkJCU5VTEwsCglkbC1UTS1STEMtTW9kZQkJCQkJCURMLVRNLVJMQy1Nb2RlCn0KCkRMLVJMQy1Nb2RlLXI1IDo6PQkJCQkJQ0hPSUNFIHsKCWRsLUFNLVJMQy1Nb2RlCQkJCQkJREwtQU0tUkxDLU1vZGUtcjUsCglkbC1VTS1STEMtTW9kZQkJCQkJCURMLVVNLVJMQy1Nb2RlLXI1LAoJZGwtVE0tUkxDLU1vZGUJCQkJCQlETC1UTS1STEMtTW9kZQp9CgpETC1STEMtTW9kZS1yNiA6Oj0JCQkJCUNIT0lDRSB7CglkbC1BTS1STEMtTW9kZQkJCQkJCURMLUFNLVJMQy1Nb2RlLXI1LAoJZGwtVU0tUkxDLU1vZGUJCQkJCQlETC1VTS1STEMtTW9kZS1yNiwKCWRsLVRNLVJMQy1Nb2RlCQkJCQkJREwtVE0tUkxDLU1vZGUKfQoKREwtUkxDLVN0YXR1c0luZm8gOjo9CQkJCVNFUVVFTkNFIHsKCXRpbWVyU3RhdHVzUHJvaGliaXQJCQkJCVRpbWVyU3RhdHVzUHJvaGliaXQJCQkJCU9QVElPTkFMLAoJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQgbm90IGJlIHNlbnQgCgktLSBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCWR1bW15CQkJCQkJCVRpbWVyRVBDCQkJCQkJCU9QVElPTkFMLAoJbWlzc2luZ1BEVS1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCgl0aW1lclN0YXR1c1BlcmlvZGljCQkJCQlUaW1lclN0YXR1c1BlcmlvZGljCQkJCQlPUFRJT05BTAp9CgpETC1UTS1STEMtTW9kZSA6Oj0JCQkJCVNFUVVFTkNFIHsKCXNlZ21lbnRhdGlvbkluZGljYXRpb24JCQkJCUJPT0xFQU4KfQoKREwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUgOjo9CQkJQ0hPSUNFIHsKCWRjaAkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKCWZhY2gJCQkJCQkJCU5VTEwsCgktLSBUaGUgY2hvaWNlINJkc2No0yBzaG91bGQgbm90IGJlIHVzZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAoJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZC4KCWRzY2gJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKCS0tIFRoZSBjaG9pY2Ug0mRjaC1hbmQtZHNjaNMgc2hvdWxkIG5vdCBiZSB1c2VkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFCgktLSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKCWRjaC1hbmQtZHNjaAkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eURDSGFuZERTQ0gKfQoKREwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUtcjUgOjo9CQkJQ0hPSUNFIHsKCWRjaAkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKCWZhY2gJCQkJCQkJCU5VTEwsCgktLSBUaGUgY2hvaWNlINJkc2No0yBzaG91bGQgbm90IGJlIHVzZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAoJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZC4KCWRzY2gJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKCS0tIFRoZSBjaG9pY2Ug0mRjaC1hbmQtZHNjaNMgc2hvdWxkIG5vdCBiZSB1c2VkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIAoJLS0gYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCglkY2gtYW5kLWRzY2gJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHlEQ0hhbmREU0NILAoJaHNkc2NoCQkJCQkJCQlNQUMtZC1GbG93SWRlbnRpdHksCglkY2gtYW5kLWhzZHNjaAkJCQkJCU1BQy1kLUZsb3dJZGVudGl0eURDSGFuZEhTRFNDSAp9CgpETC1VTS1STEMtTEktc2l6ZSA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJc2l6ZTcsIHNpemUxNSB9CgpETC1VTS1STEMtTW9kZS1yNSA6Oj0JCQkJCVNFUVVFTkNFIHsKCWRsLVVNLVJMQy1MSS1zaXplCQkJCQlETC1VTS1STEMtTEktc2l6ZQp9CgpETC1VTS1STEMtTW9kZS1yNiA6Oj0JCQkJU0VRVUVOQ0UgewoJZGwtVU0tUkxDLUxJLXNpemUJCQkJCURMLVVNLVJMQy1MSS1zaXplLAoJZGwtUmVjZXB0aW9uLVdpbmRvdy1TaXplCQkJREwtUmVjZXB0aW9uLVdpbmRvdy1TaXplLXI2CQkJT1BUSU9OQUwKfQoKRXhwZWN0UmVvcmRlcmluZyA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlyZW9yZGVyaW5nTm90RXhwZWN0ZWQsCgkJCQkJCQkJCQlyZW9yZGVyaW5nRXhwZWN0ZWQgfQoKRXhwbGljaXREaXNjYXJkIDo6PQkJCQkJU0VRVUVOQ0UgewoJdGltZXJNUlcJCQkJCQkJVGltZXJNUlcsCgl0aW1lckRpc2NhcmQJCQkJCQlUaW1lckRpc2NhcmQsCgltYXhNUlcJCQkJCQkJCU1heE1SVwp9CgpIZWFkZXJDb21wcmVzc2lvbkluZm8gOjo9CQkJU0VRVUVOQ0UgewoJYWxnb3JpdGhtU3BlY2lmaWNJbmZvCQkJCUFsZ29yaXRobVNwZWNpZmljSW5mbwp9CgpIZWFkZXJDb21wcmVzc2lvbkluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEQ1BBbGdvVHlwZSkpIE9GCgkJCQkJCQkJCQlIZWFkZXJDb21wcmVzc2lvbkluZm8KCkhlYWRlckNvbXByZXNzaW9uSW5mby1yNCA6Oj0JCVNFUVVFTkNFIHsKCWFsZ29yaXRobVNwZWNpZmljSW5mbwkJCQlBbGdvcml0aG1TcGVjaWZpY0luZm8tcjQKfQoKSGVhZGVyQ29tcHJlc3Npb25JbmZvTGlzdC1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEQ1BBbGdvVHlwZSkpIE9GCgkJCQkJCQkJCQlIZWFkZXJDb21wcmVzc2lvbkluZm8tcjQKCkxvZ2ljYWxDaGFubmVsSWRlbnRpdHkgOjo9CQkJSU5URUdFUiAoMS4uMTUpCgpMb3NzbGVzc1NSTlMtUmVsb2NTdXBwb3J0IDo6PQkJQ0hPSUNFIHsKCXN1cHBvcnRlZAkJCQkJCQlNYXhQRENQLVNOLVdpbmRvd1NpemUsCglub3RTdXBwb3J0ZWQJCQkJCQlOVUxMCn0KCk1BQy1kLUhGTi1pbml0aWFsLXZhbHVlIDo6PQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI0KSkKCk1BQy1Mb2dpY2FsQ2hhbm5lbFByaW9yaXR5IDo6PSAJCUlOVEVHRVIgKDEuLjgpCgpNYXhEQVQgOjo9CQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZGF0MSwgZGF0MiwgZGF0MywgZGF0NCwgZGF0NSwgZGF0NiwKCQkJCQkJCQkJCWRhdDcsIGRhdDgsIGRhdDksIGRhdDEwLCBkYXQxNSwgZGF0MjAsCgkJCQkJCQkJCQlkYXQyNSwgZGF0MzAsIGRhdDM1LCBkYXQ0MCB9CgpNYXhEQVQtUmV0cmFuc21pc3Npb25zIDo6PQkJCVNFUVVFTkNFIHsKCW1heERBVAkJCQkJCQkJTWF4REFULAoJdGltZXJNUlcJCQkJCQkJVGltZXJNUlcsCgltYXhNUlcJCQkJCQkJCU1heE1SVwp9CgpNYXhNUlcgOjo9CQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbW0xLCBtbTQsIG1tNiwgbW04LCBtbTEyLCBtbTE2LAoJCQkJCQkJCQkJbW0yNCwgbW0zMiB9CgpNYXhQRENQLVNOLVdpbmRvd1NpemUgOjo9CQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlzbjI1NSwgc242NTUzNSB9CgpNYXhSU1QgOjo9CQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJcnN0MSwgcnN0NCwgcnN0NiwgcnN0OCwgcnN0MTIsCgkJCQkJCQkJCQlyc3QxNiwgcnN0MjQsIHJzdDMyIH0KCk5vRXhwbGljaXREaXNjYXJkIDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWR0MTAsIGR0MjAsIGR0MzAsIGR0NDAsIGR0NTAsCgkJCQkJCQkJCQlkdDYwLCBkdDcwLCBkdDgwLCBkdDkwLCBkdDEwMCB9CgpQRENQLUluZm8gOjo9CQkJCQkJU0VRVUVOQ0UgewoJbG9zc2xlc3NTUk5TLVJlbG9jU3VwcG9ydAkJCUxvc3NsZXNzU1JOUy1SZWxvY1N1cHBvcnQJCQlPUFRJT05BTCwKCS0tIFRBQlVMQVI6IHBkY3AtUERVLUhlYWRlciBpcyBNRCBpbiB0aGUgdGFidWxhciBmb3JtYXQgYW5kIGl0IGNhbiBiZSBlbmNvZGVkCgktLSBpbiBvbmUgYml0LCBzbyB0aGUgT1BUSU9OQUwgaXMgcmVtb3ZlZCBmb3IgY29tcGFjdG5lc3MuCglwZGNwLVBEVS1IZWFkZXIJCQkJCQlQRENQLVBEVS1IZWFkZXIsCgloZWFkZXJDb21wcmVzc2lvbkluZm9MaXN0CQkJSGVhZGVyQ29tcHJlc3Npb25JbmZvTGlzdAkJCU9QVElPTkFMCn0KClBEQ1AtSW5mby1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKCWxvc3NsZXNzU1JOUy1SZWxvY1N1cHBvcnQJCQlMb3NzbGVzc1NSTlMtUmVsb2NTdXBwb3J0CQkJT1BUSU9OQUwsCgktLSBUQUJVTEFSOiBwZGNwLVBEVS1IZWFkZXIgaXMgTUQgaW4gdGhlIHRhYnVsYXIgZm9ybWF0IGFuZCBpdCBjYW4gYmUgZW5jb2RlZAoJLS0gaW4gb25lIGJpdCwgc28gdGhlIE9QVElPTkFMIGlzIHJlbW92ZWQgZm9yIGNvbXBhY3RuZXNzLgoJcGRjcC1QRFUtSGVhZGVyCQkJCQkJUERDUC1QRFUtSGVhZGVyLAoJaGVhZGVyQ29tcHJlc3Npb25JbmZvTGlzdAkJCUhlYWRlckNvbXByZXNzaW9uSW5mb0xpc3QtcjQJCU9QVElPTkFMCn0KClBEQ1AtSW5mb1JlY29uZmlnIDo6PQkJCQlTRVFVRU5DRSB7CglwZGNwLUluZm8JCQkJCQkJUERDUC1JbmZvLAoJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAoJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQuCglkdW1teQkJCQkJCQkJSU5URUdFUiAoMC4uNjU1MzUpCn0KClBEQ1AtSW5mb1JlY29uZmlnLXI0IDo6PQkJCVNFUVVFTkNFIHsKCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm8tcjQKfQoKUERDUC1QRFUtSGVhZGVyIDo6PQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlwcmVzZW50LCBhYnNlbnQgfQoKUERDUC1ST0hDLVRhcmdldE1vZGUgOjo9CQkJRU5VTUVSQVRFRCB7IG8tTW9kZSwgci1Nb2RlIH0KClBEQ1AtU04tSW5mbyA6Oj0JCQkJCUlOVEVHRVIgKDAuLjY1NTM1KQoKUG9sbC1QRFUgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlwZHUxLCBwZHUyLCBwZHU0LCBwZHU4LCBwZHUxNiwgCgkJCQkJCQkJCQlwZHUzMiwgcGR1NjQsIHBkdTEyOCB9CgpQb2xsLVNEVSA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXNkdTEsIHNkdTQsIHNkdTE2LCBzZHU2NCB9CgpQb2xsaW5nSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7Cgl0aW1lclBvbGxQcm9oaWJpdAkJCQkJVGltZXJQb2xsUHJvaGliaXQJCQkJCU9QVElPTkFMLAoJdGltZXJQb2xsCQkJCQkJCVRpbWVyUG9sbAkJCQkJCQlPUFRJT05BTCwKCXBvbGwtUERVCQkJCQkJCVBvbGwtUERVCQkJCQkJCU9QVElPTkFMLAoJcG9sbC1TRFUJCQkJCQkJUG9sbC1TRFUJCQkJCQkJT1BUSU9OQUwsCglsYXN0VHJhbnNtaXNzaW9uUERVLVBvbGwJCQlCT09MRUFOLAoJbGFzdFJldHJhbnNtaXNzaW9uUERVLVBvbGwJCQlCT09MRUFOLAoJcG9sbFdpbmRvdwkJCQkJCQlQb2xsV2luZG93CQkJCQkJCU9QVElPTkFMLAoJdGltZXJQb2xsUGVyaW9kaWMJCQkJCVRpbWVyUG9sbFBlcmlvZGljCQkJCQlPUFRJT05BTAp9CgpQb2xsV2luZG93IDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJcHc1MCwgcHc2MCwgcHc3MCwgcHc4MCwgcHc4NSwgCgkJCQkJCQkJCQlwdzkwLCBwdzk1LCBwdzk5IH0KClByZWRlZmluZWRDb25maWdJZGVudGl0eSA6Oj0JCUlOVEVHRVIgKDAuLjE1KQoKUHJlZGVmaW5lZENvbmZpZ1ZhbHVlVGFnIDo6PQkJSU5URUdFUiAoMC4uMTUpCgpQcmVkZWZpbmVkUkItQ29uZmlndXJhdGlvbiA6Oj0JCVNFUVVFTkNFIHsKCXJlLUVzdGFibGlzaG1lbnRUaW1lcgkJCQlSZS1Fc3RhYmxpc2htZW50VGltZXIsCglzcmItSW5mb3JtYXRpb25MaXN0CQkJCQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCglyYi1JbmZvcm1hdGlvbkxpc3QJCQkJCVJCLUluZm9ybWF0aW9uU2V0dXBMaXN0Cn0KClByZURlZlJhZGlvQ29uZmlndXJhdGlvbiA6Oj0JCVNFUVVFTkNFIHsKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlwcmVkZWZpbmVkUkItQ29uZmlndXJhdGlvbgkJCVByZWRlZmluZWRSQi1Db25maWd1cmF0aW9uLAoJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCgkJcHJlRGVmVHJhbnNDaENvbmZpZ3VyYXRpb24JCQlQcmVEZWZUcmFuc0NoQ29uZmlndXJhdGlvbiwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJcHJlRGVmUGh5Q2hDb25maWd1cmF0aW9uCQkJUHJlRGVmUGh5Q2hDb25maWd1cmF0aW9uCn0KClByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAobWF4UHJlZGVmQ29uZmlnKSkgT0YKCQkJCQkJCQkJCQlQcmVkZWZpbmVkQ29uZmlnU3RhdHVzSW5mbwoKUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0luZm8gOjo9CQlDSE9JQ0UgewoJc3RvcmVkV2l0aFZhbHVlVGFnU2FtZUFzUHJldml1cwkJTlVMTCwKCW90aGVyCQkJCQkJCQlDSE9JQ0UgewoJCW5vdFN0b3JlZAkJCQkJCQlOVUxMLAoJCXN0b3JlZFdpdGhEaWZmZXJlbnRWYWx1ZVRhZwkJCVByZWRlZmluZWRDb25maWdWYWx1ZVRhZwoJfQp9CgpQcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdENvbXAgOjo9IFNFUVVFTkNFIHsKCXNldHNXaXRoRGlmZmVyZW50VmFsdWVUYWcJCQlQcmVkZWZpbmVkQ29uZmlnU2V0c1dpdGhEaWZmZXJlbnRWYWx1ZVRhZywKCW90aGVyRW50cmllcwkJCQkJCVByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0VmFyU3oJCQkJT1BUSU9OQUwKfQoKUHJlZGVmaW5lZENvbmZpZ1NldHNXaXRoRGlmZmVyZW50VmFsdWVUYWcgOjo9IFNFUVVFTkNFIChTSVpFICgxLi4yKSkgT0YKCQkJCQkJCQkJCQkJUHJlZGVmaW5lZENvbmZpZ1NldFdpdGhEaWZmZXJlbnRWYWx1ZVRhZwoKUHJlZGVmaW5lZENvbmZpZ1NldFdpdGhEaWZmZXJlbnRWYWx1ZVRhZyA6Oj0gU0VRVUVOQ0UgewoJc3RhcnRQb3NpdGlvbgkJCQkJCQkJSU5URUdFUiAoMC4uMTApCQlERUZBVUxUIDAsCgktLSBudW1iZXJPZkVudHJpZXMJCQkJCQkJSU5URUdFUiAoNi4uMTYpLAoJLS0gbnVtYmVyT2ZFbnRyaWVzIGlzIGNvdmVyZWQgYnkgdGhlIHNpemUgb2YgdGhlIGxpc3QgaW4gSUUgUHJlZGVmaW5lZENvbmZpZ1ZhbHVlVGFnTGlzdAoJdmFsdWVUYWdMaXN0CQkJCQkJCQlQcmVkZWZpbmVkQ29uZmlnVmFsdWVUYWdMaXN0Cn0KCgpQcmVkZWZpbmVkQ29uZmlnVmFsdWVUYWdMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFByZWRlZkNvbmZpZykpIE9GCgkJCQkJCQkJCQkJUHJlZGVmaW5lZENvbmZpZ1ZhbHVlVGFnCgpQcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdFZhclN6IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFByZWRlZkNvbmZpZykpIE9GCgkJCQkJCQkJCQkJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0luZm8KClJBQi1JbmZvIDo6PQkJCQkJCVNFUVVFTkNFIHsKCXJhYi1JZGVudGl0eQkJCQkJCVJBQi1JZGVudGl0eSwKCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKCW5hcy1TeW5jaHJvbmlzYXRpb24tSW5kaWNhdG9yCQlOQVMtU3luY2hyb25pc2F0aW9uLUluZGljYXRvcglPUFRJT05BTCwKCXJlLUVzdGFibGlzaG1lbnRUaW1lcgkJCQlSZS1Fc3RhYmxpc2htZW50VGltZXIKfQoKUkFCLUluZm8tcjYtZXh0IDo6PQkJCQkJU0VRVUVOQ0UgewoJbWJtcy1TZXNzaW9uSWRlbnRpdHkJCQkJTUJNUy1TZXNzaW9uSWRlbnRpdHkJCQkJT1BUSU9OQUwKfQoKUkFCLUluZm8tcjYgOjo9CQkJCQkJU0VRVUVOQ0UgewoJcmFiLUlkZW50aXR5CQkJCQkJUkFCLUlkZW50aXR5LAoJbWJtcy1TZXNzaW9uSWRlbnRpdHkJCQkJTUJNUy1TZXNzaW9uSWRlbnRpdHkJCQkJT1BUSU9OQUwsCgljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCgluYXMtU3luY2hyb25pc2F0aW9uLUluZGljYXRvcgkJTkFTLVN5bmNocm9uaXNhdGlvbi1JbmRpY2F0b3IJCU9QVElPTkFMLAoJcmUtRXN0YWJsaXNobWVudFRpbWVyCQkJCVJlLUVzdGFibGlzaG1lbnRUaW1lcgp9CgpSQUItSW5mb3JtYXRpb25MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkFCc2V0dXApKSBPRgoJCQkJCQkJCQkJUkFCLUluZm8KClJBQi1JbmZvcm1hdGlvbkxpc3QtcjYgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJBQnNldHVwKSkgT0YKCQkJCQkJCQkJCVJBQi1JbmZvLXI2CgpSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QgOjo9IAlTRVFVRU5DRSAoU0laRSAoMS4uIG1heFJBQnNldHVwKSkgT0YKCQkJCQkJCQkJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnCgpSQUItSW5mb3JtYXRpb25SZWNvbmZpZyA6Oj0JCQlTRVFVRU5DRSB7CglyYWItSWRlbnRpdHkJCQkJCQlSQUItSWRlbnRpdHksCgljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCgluYXMtU3luY2hyb25pc2F0aW9uLUluZGljYXRvcgkJTkFTLVN5bmNocm9uaXNhdGlvbi1JbmRpY2F0b3IKfQoKUkFCLUluZm8tUG9zdCA6Oj0JCQkJCQlTRVFVRU5DRSB7CglyYWItSWRlbnRpdHkJCQkJCQlSQUItSWRlbnRpdHksCgljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCgluYXMtU3luY2hyb25pc2F0aW9uLUluZGljYXRvcgkJTkFTLVN5bmNocm9uaXNhdGlvbi1JbmRpY2F0b3IJT1BUSU9OQUwKfQoKUkFCLUluZm9ybWF0aW9uU2V0dXAgOjo9CQkJU0VRVUVOQ0UgewoJcmFiLUluZm8JCQkJCQkJUkFCLUluZm8sCglyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJCQlSQi1JbmZvcm1hdGlvblNldHVwTGlzdAp9CgpSQUItSW5mb3JtYXRpb25TZXR1cC1yNCA6Oj0JCQlTRVFVRU5DRSB7CglyYWItSW5mbwkJCQkJCQlSQUItSW5mbywKCXJiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQkJCVJCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI0Cn0KClJBQi1JbmZvcm1hdGlvblNldHVwLXI1IDo6PQkJCVNFUVVFTkNFIHsKCXJhYi1JbmZvCQkJCQkJCVJBQi1JbmZvLAoJcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCQkJUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUKfQoKUkFCLUluZm9ybWF0aW9uU2V0dXAtcjYtZXh0IDo6PQkJU0VRVUVOQ0UgewoJcmFiLUluZm8tcjYtZXh0CQkJCQkJUkFCLUluZm8tcjYtZXh0Cn0KClJBQi1JbmZvcm1hdGlvblNldHVwLXI2IDo6PQkJCVNFUVVFTkNFIHsKCXJhYi1JbmZvCQkJCQkJCVJBQi1JbmZvLXI2LAoJcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCQkJUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYKfQoKUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJBQnNldHVwKSkgT0YKCQkJCQkJCQkJCVJBQi1JbmZvcm1hdGlvblNldHVwCgpSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjQgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkFCc2V0dXApKSBPRgoJCQkJCQkJCQkJUkFCLUluZm9ybWF0aW9uU2V0dXAtcjQKClJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNSA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQUJzZXR1cCkpIE9GCgkJCQkJCQkJCQlSQUItSW5mb3JtYXRpb25TZXR1cC1yNQoKUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJBQnNldHVwKSkgT0YKCQkJCQkJCQkJCVJBQi1JbmZvcm1hdGlvblNldHVwLXI2CgotLSBUaGUgSUUgJ1JBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNi1leHQnIHByb3ZpZGVzIGVsZW1lbnRzIG9mIGV4dGVuc2lvbiBpbmZvcm1hdGlvbiwgd2hpY2gKLS0gYXJlIGFkZGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHRoZSBJRSAnUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0Ly1yNC8tcjUnLgpSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYtZXh0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkFCc2V0dXApKSBPRgoJCQkJCQkJCQkJUkFCLUluZm9ybWF0aW9uU2V0dXAtcjYtZXh0CgpSQi1BY3RpdmF0aW9uVGltZUluZm8gOjo9CQkJU0VRVUVOQ0UgewoJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCglybGMtU2VxdWVuY2VOdW1iZXIJCQkJCVJMQy1TZXF1ZW5jZU51bWJlcgp9CQoKUkItQWN0aXZhdGlvblRpbWVJbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQikpIE9GCgkJCQkJCQkJCQlSQi1BY3RpdmF0aW9uVGltZUluZm8KClJCLUNPVU5ULUMtSW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgewoJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCgljb3VudC1DLVVMCQkJCQkJCUNPVU5ULUMsCgljb3VudC1DLURMCQkJCQkJCUNPVU5ULUMKfQoKUkItQ09VTlQtQy1JbmZvcm1hdGlvbkxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJhbGxSQUJzKSkgT0YKCQkJCQkJCQkJCVJCLUNPVU5ULUMtSW5mb3JtYXRpb24KClJCLUNPVU5ULUMtTVNCLUluZm9ybWF0aW9uIDo6PQkJU0VRVUVOQ0UgewoJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCgljb3VudC1DLU1TQi1VTAkJCQkJCUNPVU5ULUMtTVNCLAoJY291bnQtQy1NU0ItREwJCQkJCQlDT1VOVC1DLU1TQgp9CgpSQi1DT1VOVC1DLU1TQi1JbmZvcm1hdGlvbkxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQmFsbFJBQnMpKSBPRgoJCQkJCQkJCQkJUkItQ09VTlQtQy1NU0ItSW5mb3JtYXRpb24KClJCLUlkZW50aXR5IDo6PQkJCQkJCUlOVEVHRVIgKDEuLjMyKQoKUkItSWRlbnRpdHlMaXN0IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKCQkJCQkJCQkJCVJCLUlkZW50aXR5CgpSQi1JbmZvcm1hdGlvbkFmZmVjdGVkIDo6PQkJCVNFUVVFTkNFIHsKCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAoJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mbwp9CgpSQi1JbmZvcm1hdGlvbkFmZmVjdGVkLXI1IDo6PQkJU0VRVUVOQ0UgewoJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCglyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvLXI1Cn0KClJCLUluZm9ybWF0aW9uQWZmZWN0ZWQtcjYgOjo9CQlTRVFVRU5DRSB7CglyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKCXJiLU1hcHBpbmdJbmZvCQkJCQkJUkItTWFwcGluZ0luZm8tcjYKfQoKUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QgOjo9IAkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWQKClJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI1IDo6PSAJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWQtcjUKClJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI2IDo6PSAJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWQtcjYKClJCLUluZm9ybWF0aW9uQ2hhbmdlZC1yNiA6Oj0JCVNFUVVFTkNFIHsKCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAoJcmItQ2hhbmdlCQkJCQkJCUNIT0lDRSB7CgkJcmVsZWFzZQkJCQkJCQkJTlVMTCwKCQlyZS1tYXBUb0RlZmF1bHRSYgkJCQkJUkItSWRlbnRpdHkKCX0KfQoKUkItSW5mb3JtYXRpb25DaGFuZ2VkTGlzdC1yNiA6Oj0gCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgoJCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uQ2hhbmdlZC1yNgoKUkItSW5mb3JtYXRpb25SZWNvbmZpZyA6Oj0JCQlTRVFVRU5DRSB7CglyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm9SZWNvbmZpZwkJCQkJT1BUSU9OQUwsCglwZGNwLVNOLUluZm8JCQkJCQlQRENQLVNOLUluZm8JCQkJCQlPUFRJT05BTCwKCXJsYy1JbmZvCQkJCQkJCVJMQy1JbmZvCQkJCQkJCU9QVElPTkFMLAoJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mbwkJCQkJCU9QVElPTkFMLAoJcmItU3RvcENvbnRpbnVlCQkJCQkJUkItU3RvcENvbnRpbnVlCQkJCQkJT1BUSU9OQUwKfQoKUkItSW5mb3JtYXRpb25SZWNvbmZpZy1yNCA6Oj0JCVNFUVVFTkNFIHsKCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAoJcGRjcC1JbmZvCQkJCQkJCVBEQ1AtSW5mb1JlY29uZmlnLXI0CQkJCU9QVElPTkFMLAoJcGRjcC1TTi1JbmZvCQkJCQkJUERDUC1TTi1JbmZvCQkJCQkJT1BUSU9OQUwsCglybGMtSW5mbwkJCQkJCQlSTEMtSW5mbwkJCQkJCQlPUFRJT05BTCwKCXJiLU1hcHBpbmdJbmZvCQkJCQkJUkItTWFwcGluZ0luZm8JCQkJCQlPUFRJT05BTCwKCXJiLVN0b3BDb250aW51ZQkJCQkJCVJCLVN0b3BDb250aW51ZQkJCQkJCU9QVElPTkFMCn0KClJCLUluZm9ybWF0aW9uUmVjb25maWctcjUgOjo9CQlTRVFVRU5DRSB7CglyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm9SZWNvbmZpZy1yNAkJCQlPUFRJT05BTCwKCXBkY3AtU04tSW5mbwkJCQkJCVBEQ1AtU04tSW5mbwkJCQkJCU9QVElPTkFMLAoJcmxjLUluZm8JCQkJCQkJUkxDLUluZm8tcjUJCQkJCQkJT1BUSU9OQUwsCglyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvLXI1CQkJCQlPUFRJT05BTCwKCXJiLVN0b3BDb250aW51ZQkJCQkJCVJCLVN0b3BDb250aW51ZQkJCQkJCU9QVElPTkFMCn0KClJCLUluZm9ybWF0aW9uUmVjb25maWctcjYgOjo9CQlTRVFVRU5DRSB7CglyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm9SZWNvbmZpZy1yNAkJCQlPUFRJT05BTCwKCXBkY3AtU04tSW5mbwkJCQkJCVBEQ1AtU04tSW5mbwkJCQkJCU9QVElPTkFMLAoJcmxjLUluZm8JCQkJCQkJUkxDLUluZm8tcjYJCQkJCQkJT1BUSU9OQUwsCglyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvLXI2CQkJCQlPUFRJT05BTCwKCXJiLVN0b3BDb250aW51ZQkJCQkJCVJCLVN0b3BDb250aW51ZQkJCQkJCU9QVElPTkFMCn0KClJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0IDo6PSAJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQikpIE9GCgkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvblJlY29uZmlnCgpSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNCA6Oj0gCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQikpIE9GCgkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvblJlY29uZmlnLXI0CgpSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNSA6Oj0gCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQikpIE9GCgkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvblJlY29uZmlnLXI1CgpSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNiA6Oj0gCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQikpIE9GCgkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvblJlY29uZmlnLXI2CgpSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKCQkJCQkJCQkJCVJCLUlkZW50aXR5CgpSQi1JbmZvcm1hdGlvblNldHVwIDo6PQkJCQlTRVFVRU5DRSB7CglyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm8JCQkJCQkJT1BUSU9OQUwsCglybGMtSW5mb0Nob2ljZQkJCQkJCVJMQy1JbmZvQ2hvaWNlLAoJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mbwp9CgpSQi1JbmZvcm1hdGlvblNldHVwLXI0IDo6PQkJCVNFUVVFTkNFIHsKCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAoJcGRjcC1JbmZvCQkJCQkJCVBEQ1AtSW5mby1yNAkJCQkJCU9QVElPTkFMLAoJcmxjLUluZm9DaG9pY2UJCQkJCQlSTEMtSW5mb0Nob2ljZSwKCXJiLU1hcHBpbmdJbmZvCQkJCQkJUkItTWFwcGluZ0luZm8KfQoKUkItSW5mb3JtYXRpb25TZXR1cC1yNSA6Oj0JCQlTRVFVRU5DRSB7CglyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm8tcjQJCQkJCQlPUFRJT05BTCwKCXJsYy1JbmZvQ2hvaWNlCQkJCQkJUkxDLUluZm9DaG9pY2UtcjUsCglyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvLXI1Cn0KClJCLUluZm9ybWF0aW9uU2V0dXAtcjYgOjo9CQkJU0VRVUVOQ0UgewoJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCglwZGNwLUluZm8JCQkJCQkJUERDUC1JbmZvLXI0CQkJCQkJT1BUSU9OQUwsCglybGMtSW5mb0Nob2ljZQkJCQkJCVJMQy1JbmZvQ2hvaWNlLXI2LAoJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mby1yNgp9CgpSQi1JbmZvcm1hdGlvblNldHVwTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJwZXJSQUIpKSBPRgoJCQkJCQkJCQkJUkItSW5mb3JtYXRpb25TZXR1cAoKUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjQgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJwZXJSQUIpKSBPRgoJCQkJCQkJCQkJUkItSW5mb3JtYXRpb25TZXR1cC1yNAoKUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJwZXJSQUIpKSBPRgoJCQkJCQkJCQkJUkItSW5mb3JtYXRpb25TZXR1cC1yNQoKUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJwZXJSQUIpKSBPRgoJCQkJCQkJCQkJUkItSW5mb3JtYXRpb25TZXR1cC1yNgoKUkItTWFwcGluZ0luZm8gOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJNdXhPcHRpb25zKSkgT0YKCQkJCQkJCQkJCVJCLU1hcHBpbmdPcHRpb24KClJCLU1hcHBpbmdJbmZvLXI1IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCTXV4T3B0aW9ucykpIE9GCgkJCQkJCQkJCQlSQi1NYXBwaW5nT3B0aW9uLXI1CgpSQi1NYXBwaW5nSW5mby1yNiA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQk11eE9wdGlvbnMpKSBPRgoJCQkJCQkJCQkJUkItTWFwcGluZ09wdGlvbi1yNgoKUkItTWFwcGluZ09wdGlvbiA6Oj0gCQkJCVNFUVVFTkNFIHsKCXVsLUxvZ2ljYWxDaGFubmVsTWFwcGluZ3MJCQlVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdzCQkJT1BUSU9OQUwsCglkbC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0CQlETC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0CQlPUFRJT05BTAp9CgpSQi1NYXBwaW5nT3B0aW9uLXI1IDo6PSAJCQkJU0VRVUVOQ0UgewoJdWwtTG9naWNhbENoYW5uZWxNYXBwaW5ncwkJCVVMLUxvZ2ljYWxDaGFubmVsTWFwcGluZ3MJCQlPUFRJT05BTCwKCWRsLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0xpc3QJCURMLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0xpc3QtcjUJCU9QVElPTkFMCn0KClJCLU1hcHBpbmdPcHRpb24tcjYgOjo9IAkJCQlTRVFVRU5DRSB7Cgl1bC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdzCQkJVUwtTG9naWNhbENoYW5uZWxNYXBwaW5ncy1yNgkJT1BUSU9OQUwsCglkbC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0CQlETC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0LXI1CQlPUFRJT05BTAp9CgpSQi1QRENQQ29udGV4dFJlbG9jYXRpb24gOjo9CQkJU0VRVUVOQ0UgewoJcmItSWRlbnRpdHkJCQkJCQkJCVJCLUlkZW50aXR5LAoJZGwtUkZDMzA5NS1Db250ZXh0LVJlbG9jYXRpb24JCQlCT09MRUFOLAoJdWwtUkZDMzA5NS1Db250ZXh0LVJlbG9jYXRpb24JCQlCT09MRUFOCn0KClJCLVBEQ1BDb250ZXh0UmVsb2NhdGlvbkxpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCYWxsUkFCcykpIE9GCgkJCQkJCQkJCQkJUkItUERDUENvbnRleHRSZWxvY2F0aW9uCgpSQi1TdG9wQ29udGludWUgOjo9CQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXN0b3BSQiwgY29udGludWVSQiB9CgpSQi1XaXRoUERDUC1JbmZvIDo6PQkJCQlTRVFVRU5DRSB7CglyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKCXBkY3AtU04tSW5mbwkJCQkJCVBEQ1AtU04tSW5mbwp9CgpSQi1XaXRoUERDUC1JbmZvTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJhbGxSQUJzKSkgT0YKCQkJCQkJCQkJCVJCLVdpdGhQRENQLUluZm8KClJlY2VpdmluZ1dpbmRvd1NpemUgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJcncxLCBydzgsIHJ3MTYsIHJ3MzIsIHJ3NjQsIHJ3MTI4LCBydzI1NiwKCQkJCQkJCQkJCXJ3NTEyLCBydzc2OCwgcncxMDI0LCBydzE1MzYsIHJ3MjA0NywgCgkJCQkJCQkJCQlydzI1NjAsIHJ3MzA3MiwgcnczNTg0LCBydzQwOTUgfQoKUkZDMjUwNy1JbmZvIDo6PQkJCQkJU0VRVUVOQ0UgewoJZi1NQVgtUEVSSU9ECQkJCQkJSU5URUdFUiAoMS4uNjU1MzUpCQkJCQlERUZBVUxUIDI1NiwKCWYtTUFYLVRJTUUJCQkJCQkJSU5URUdFUiAoMS4uMjU1KQkJCQkJREVGQVVMVCA1LAoJbWF4LUhFQURFUgkJCQkJCQlJTlRFR0VSICg2MC4uNjU1MzUpCQkJCQlERUZBVUxUIDE2OCwKCXRjcC1TUEFDRQkJCQkJCQlJTlRFR0VSICgzLi4yNTUpCQkJCQlERUZBVUxUIDE1LAoJbm9uLVRDUC1TUEFDRQkJCQkJCUlOVEVHRVIgKDMuLjY1NTM1KQkJCQkJREVGQVVMVCAxNSwKCS0tIFRBQlVMQVI6IGV4cGVjdFJlb3JkZXJpbmcgaGFzIG9ubHkgdHdvIHBvc3NpYmxlIHZhbHVlcywgc28gdXNpbmcgT3B0aW9uYWwgb3IgRGVmYXVsdAoJLS0gd291bGQgYmUgd2FzdGVmdWwKCWV4cGVjdFJlb3JkZXJpbmcJCQkJCUV4cGVjdFJlb3JkZXJpbmcKfQoKUkZDMzA5NS1JbmZvLXI0IDo6PQkJCQlTRVFVRU5DRSB7Cglyb2hjUHJvZmlsZUxpc3QJCQkJCQlST0hDLVByb2ZpbGVMaXN0LXI0LAoJdWwtUkZDMzA5NQkJCQkJCQlVTC1SRkMzMDk1LXI0CQkJCQkJT1BUSU9OQUwsCglkbC1SRkMzMDk1CQkJCQkJCURMLVJGQzMwOTUtcjQJCQkJCQlPUFRJT05BTAp9CgpSTEMtSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7Cgl1bC1STEMtTW9kZQkJCQkJCQlVTC1STEMtTW9kZQkJCQkJCQlPUFRJT05BTCwKCWRsLVJMQy1Nb2RlCQkJCQkJCURMLVJMQy1Nb2RlCQkJCQkJCU9QVElPTkFMCn0KClJMQy1JbmZvLXI1IDo6PQkJCQkJCVNFUVVFTkNFIHsKCXVsLVJMQy1Nb2RlCQkJCQkJCVVMLVJMQy1Nb2RlCQkJCQkJCU9QVElPTkFMLAoJZGwtUkxDLU1vZGUJCQkJCQkJREwtUkxDLU1vZGUtcjUJCQkJCQlPUFRJT05BTCwKCXJsYy1PbmVTaWRlZFJlRXN0CQkJCQlCT09MRUFOCn0KClJMQy1JbmZvLXI2IDo6PQkJCQkJCVNFUVVFTkNFIHsKCXVsLVJMQy1Nb2RlCQkJCQkJCVVMLVJMQy1Nb2RlCQkJCQkJCU9QVElPTkFMLAoJZGwtUkxDLU1vZGUJCQkJCQkJREwtUkxDLU1vZGUtcjYJCQkJCQlPUFRJT05BTCwKCXJsYy1PbmVTaWRlZFJlRXN0CQkJCQlCT09MRUFOLAoJYWx0RS1iaXRJbnRlcnByZXRhdGlvbgkJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTAp9CgpSTEMtSW5mby1NQ0NILXI2IDo6PQkJCQlTRVFVRU5DRSB7CglkbC1VTS1STEMtTEktc2l6ZQkJCQkJREwtVU0tUkxDLUxJLXNpemUsCglkbC1VTS1STEMtT3V0T1NlcURlbGl2ZXJ5LUluZm8JCVVNLVJMQy1PdXRPU2VxRGVsaXZlcnktSW5mby1yNgkJT1BUSU9OQUwKfQoKUkxDLUluZm8tTVNDSC1yNiA6Oj0JCQkJU0VRVUVOQ0UgewoJZGwtVU0tUkxDLUxJLXNpemUJCQkJCURMLVVNLVJMQy1MSS1zaXplCn0KClJMQy1JbmZvLU1UQ0gtcjYgOjo9CQkJCVNFUVVFTkNFIHsKCWRsLVVNLVJMQy1MSS1zaXplCQkJCQlETC1VTS1STEMtTEktc2l6ZSwKCWRsLVVNLVJMQy1EdXBsQXZvaWQtUmVvcmQtSW5mbwkJVU0tUkxDLUR1cGxBdm9pZC1SZW9yZC1JbmZvLXI2CQlPUFRJT05BTAp9CgpSTEMtSW5mb0Nob2ljZSA6Oj0JCQkJCUNIT0lDRSB7CglybGMtSW5mbwkJCQkJCQlSTEMtSW5mbywKCXNhbWUtYXMtUkIJCQkJCQkJUkItSWRlbnRpdHkKfQoKUkxDLUluZm9DaG9pY2UtcjUgOjo9CQkJCUNIT0lDRSB7CglybGMtSW5mbwkJCQkJCQlSTEMtSW5mby1yNSwKCXNhbWUtYXMtUkIJCQkJCQkJUkItSWRlbnRpdHkKfQoKUkxDLUluZm9DaG9pY2UtcjYgOjo9CQkJCUNIT0lDRSB7CglybGMtSW5mbwkJCQkJCQlSTEMtSW5mby1yNiwKCXNhbWUtYXMtUkIJCQkJCQkJUkItSWRlbnRpdHkKfQoKUkxDLVBEVS1TaXplIDo6PQkJCQkJT2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTEKClJMQy1QRFUtU2l6ZUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTENQRFVzaXplUGVyTG9nQ2hhbikpIE9GCgkJCQkJCQkJCQlSTEMtUERVLVNpemUKClJMQy1TZXF1ZW5jZU51bWJlciA6Oj0JCQkJSU5URUdFUiAoMC4uNDA5NSkKClJMQy1TaXplSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKCXJsYy1TaXplSW5kZXgJCQkJCQlJTlRFR0VSICgxLi5tYXhURikKfQoKUkxDLVNpemVFeHBsaWNpdExpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUJKDEuLm1heFRGKSkJT0YKCQkJCQkJCQkJCVJMQy1TaXplSW5mbwoKUk9IQy1Qcm9maWxlLXI0IDo6PQkJCQkJSU5URUdFUiAoMS4uMykKClJPSEMtUHJvZmlsZUxpc3QtcjQgOjo9CQkJCVNFUVVFTkNFIChTSVpFCSgxLi5tYXhST0hDLVByb2ZpbGUtcjQpKQlPRgoJCQkJCQkJCQkJUk9IQy1Qcm9maWxlLXI0CgpST0hDLVBhY2tldFNpemUtcjQgOjo9CQkJCUlOVEVHRVIgKDIuLjE1MDApCgpST0hDLVBhY2tldFNpemVMaXN0LXI0IDo6PQkJCVNFUVVFTkNFIChTSVpFCSgxLi5tYXhST0hDLVBhY2tldFNpemVzLXI0KSkJT0YKCQkJCQkJCQkJCVJPSEMtUGFja2V0U2l6ZS1yNAoKU1JCLUluZm9ybWF0aW9uU2V0dXAgOjo9CQkJU0VRVUVOQ0UgewoJLS0gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHJiLUlkZW50aXR5IGlzIHRoZSBzbWFsbGVzdCB2YWx1ZSBub3QgdXNlZCB5ZXQuCglyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eQkJCQkJCQlPUFRJT05BTCwKCXJsYy1JbmZvQ2hvaWNlCQkJCQkJUkxDLUluZm9DaG9pY2UsCglyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvCn0KClNSQi1JbmZvcm1hdGlvblNldHVwLXI1IDo6PQkJCVNFUVVFTkNFIHsKCS0tIFRoZSBkZWZhdWx0IHZhbHVlIGZvciByYi1JZGVudGl0eSBpcyB0aGUgc21hbGxlc3QgdmFsdWUgbm90IHVzZWQgeWV0LgoJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHkJCQkJCQkJT1BUSU9OQUwsCglybGMtSW5mb0Nob2ljZQkJCQkJCVJMQy1JbmZvQ2hvaWNlLXI1LAoJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mby1yNQp9CgpTUkItSW5mb3JtYXRpb25TZXR1cC1yNiA6Oj0JCQlTRVFVRU5DRSB7CgktLSBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgcmItSWRlbnRpdHkgaXMgdGhlIHNtYWxsZXN0IHZhbHVlIG5vdCB1c2VkIHlldC4KCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5CQkJCQkJCU9QVElPTkFMLAoJcmxjLUluZm9DaG9pY2UJCQkJCQlSTEMtSW5mb0Nob2ljZS1yNiwKCXJiLU1hcHBpbmdJbmZvCQkJCQkJUkItTWFwcGluZ0luZm8tcjYKfQoKU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNSQnNldHVwKSkgT0YKCQkJCQkJCQkJCVNSQi1JbmZvcm1hdGlvblNldHVwCgpTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U1JCc2V0dXApKSBPRgoJCQkJCQkJCQkJU1JCLUluZm9ybWF0aW9uU2V0dXAtcjUKClNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNiA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTUkJzZXR1cCkpIE9GCgkJCQkJCQkJCQlTUkItSW5mb3JtYXRpb25TZXR1cC1yNgoKU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0MiA6Oj0JCVNFUVVFTkNFIChTSVpFICgzLi40KSkgT0YKCQkJCQkJCQkJCVNSQi1JbmZvcm1hdGlvblNldHVwCgpTUkItSW5mb3JtYXRpb25TZXR1cExpc3QyLXI2IDo6PQlTRVFVRU5DRSAoU0laRSAoMy4uNCkpIE9GCgkJCQkJCQkJCQlTUkItSW5mb3JtYXRpb25TZXR1cC1yNgoKVGltZXJEQVItcjYgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQltczQwLCBtczgwLCBtczEyMCwgbXMxNjAsIG1zMjQwLCBtczMyMCwgbXM0ODAsIG1zNjQwLAoJCQkJCQkJCQkJbXM5NjAsIG1zMTI4MCwgbXMxOTIwLCBtczI1NjAsIG1zMzg0MCwgbXM1MTIwIH0KClRpbWVyRGlzY2FyZCA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdGQwLTEsIHRkMC0yNSwgdGQwLTUsIHRkMC03NSwKCQkJCQkJCQkJCXRkMSwgdGQxLTI1LCB0ZDEtNSwgdGQxLTc1LAoJCQkJCQkJCQkJdGQyLCB0ZDItNSwgdGQzLCB0ZDMtNSwgdGQ0LAoJCQkJCQkJCQkJdGQ0LTUsIHRkNSwgdGQ3LTUgfQoKVGltZXJFUEMgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl0ZTUwLCB0ZTYwLCB0ZTcwLCB0ZTgwLCB0ZTkwLAoJCQkJCQkJCQkJdGUxMDAsIHRlMTIwLCB0ZTE0MCwgdGUxNjAsIHRlMTgwLAoJCQkJCQkJCQkJdGUyMDAsIHRlMzAwLCB0ZTQwMCwgdGU1MDAsIHRlNzAwLAoJCQkJCQkJCQkJdGU5MDAgfQoKVGltZXJNUlcgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl0ZTUwLCB0ZTYwLCB0ZTcwLCB0ZTgwLCB0ZTkwLCB0ZTEwMCwgCgkJCQkJCQkJCQl0ZTEyMCwgdGUxNDAsIHRlMTYwLCB0ZTE4MCwgdGUyMDAsIAoJCQkJCQkJCQkJdGUzMDAsIHRlNDAwLCB0ZTUwMCwgdGU3MDAsIHRlOTAwIH0KClRpbWVyT1NELXI2IDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbXM0MCwgbXM4MCwgbXMxMjAsIG1zMTYwLCBtczI0MCwgbXMzMjAsIG1zNDgwLCBtczY0MCwKCQkJCQkJCQkJCW1zOTYwLCBtczEyODAsIG1zMTkyMCwgbXMyNTYwLCBtczM4NDAsIG1zNTEyMCB9CgpUaW1lclBvbGwgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl0cDEwLCB0cDIwLCB0cDMwLCB0cDQwLCB0cDUwLAoJCQkJCQkJCQkJdHA2MCwgdHA3MCwgdHA4MCwgdHA5MCwgdHAxMDAsCgkJCQkJCQkJCQl0cDExMCwgdHAxMjAsIHRwMTMwLCB0cDE0MCwgdHAxNTAsCgkJCQkJCQkJCQl0cDE2MCwgdHAxNzAsIHRwMTgwLCB0cDE5MCwgdHAyMDAsCgkJCQkJCQkJCQl0cDIxMCwgdHAyMjAsIHRwMjMwLCB0cDI0MCwgdHAyNTAsCgkJCQkJCQkJCQl0cDI2MCwgdHAyNzAsIHRwMjgwLCB0cDI5MCwgdHAzMDAsCgkJCQkJCQkJCQl0cDMxMCwgdHAzMjAsIHRwMzMwLCB0cDM0MCwgdHAzNTAsCgkJCQkJCQkJCQl0cDM2MCwgdHAzNzAsIHRwMzgwLCB0cDM5MCwgdHA0MDAsCgkJCQkJCQkJCQl0cDQxMCwgdHA0MjAsIHRwNDMwLCB0cDQ0MCwgdHA0NTAsCgkJCQkJCQkJCQl0cDQ2MCwgdHA0NzAsIHRwNDgwLCB0cDQ5MCwgdHA1MDAsCgkJCQkJCQkJCQl0cDUxMCwgdHA1MjAsIHRwNTMwLCB0cDU0MCwgdHA1NTAsCgkJCQkJCQkJCQl0cDYwMCwgdHA2NTAsIHRwNzAwLCB0cDc1MCwgdHA4MDAsCgkJCQkJCQkJCQl0cDg1MCwgdHA5MDAsIHRwOTUwLCB0cDEwMDAgfQoKVGltZXJQb2xsUGVyaW9kaWMgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdHBlcjEwMCwgdHBlcjIwMCwgdHBlcjMwMCwgdHBlcjQwMCwKCQkJCQkJCQkJCXRwZXI1MDAsIHRwZXI3NTAsIHRwZXIxMDAwLCB0cGVyMjAwMCB9CgpUaW1lclBvbGxQcm9oaWJpdCA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl0cHAxMCwgdHBwMjAsIHRwcDMwLCB0cHA0MCwgdHBwNTAsCgkJCQkJCQkJCQl0cHA2MCwgdHBwNzAsIHRwcDgwLCB0cHA5MCwgdHBwMTAwLAoJCQkJCQkJCQkJdHBwMTEwLCB0cHAxMjAsIHRwcDEzMCwgdHBwMTQwLCB0cHAxNTAsCgkJCQkJCQkJCQl0cHAxNjAsIHRwcDE3MCwgdHBwMTgwLCB0cHAxOTAsIHRwcDIwMCwKCQkJCQkJCQkJCXRwcDIxMCwgdHBwMjIwLCB0cHAyMzAsIHRwcDI0MCwgdHBwMjUwLAoJCQkJCQkJCQkJdHBwMjYwLCB0cHAyNzAsIHRwcDI4MCwgdHBwMjkwLCB0cHAzMDAsCgkJCQkJCQkJCQl0cHAzMTAsIHRwcDMyMCwgdHBwMzMwLCB0cHAzNDAsIHRwcDM1MCwKCQkJCQkJCQkJCXRwcDM2MCwgdHBwMzcwLCB0cHAzODAsIHRwcDM5MCwgdHBwNDAwLAoJCQkJCQkJCQkJdHBwNDEwLCB0cHA0MjAsIHRwcDQzMCwgdHBwNDQwLCB0cHA0NTAsCgkJCQkJCQkJCQl0cHA0NjAsIHRwcDQ3MCwgdHBwNDgwLCB0cHA0OTAsIHRwcDUwMCwKCQkJCQkJCQkJCXRwcDUxMCwgdHBwNTIwLCB0cHA1MzAsIHRwcDU0MCwgdHBwNTUwLAoJCQkJCQkJCQkJdHBwNjAwLCB0cHA2NTAsIHRwcDcwMCwgdHBwNzUwLCB0cHA4MDAsCgkJCQkJCQkJCQl0cHA4NTAsIHRwcDkwMCwgdHBwOTUwLCB0cHAxMDAwIH0KClRpbWVyUlNUIDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdHI1MCwgdHIxMDAsIHRyMTUwLCB0cjIwMCwgdHIyNTAsIHRyMzAwLCAKCQkJCQkJCQkJCXRyMzUwLCB0cjQwMCwgdHI0NTAsIHRyNTAwLCB0cjU1MCwKCQkJCQkJCQkJCXRyNjAwLCB0cjcwMCwgdHI4MDAsIHRyOTAwLCB0cjEwMDAgfQoKVGltZXJTdGF0dXNQZXJpb2RpYyA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl0c3AxMDAsIHRzcDIwMCwJdHNwMzAwLCB0c3A0MDAsIHRzcDUwMCwKCQkJCQkJCQkJCXRzcDc1MCwgdHNwMTAwMCwgdHNwMjAwMCB9CgpUaW1lclN0YXR1c1Byb2hpYml0IDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXRzcDEwLHRzcDIwLHRzcDMwLHRzcDQwLHRzcDUwLAoJCQkJCQkJCQkJdHNwNjAsdHNwNzAsdHNwODAsdHNwOTAsdHNwMTAwLAoJCQkJCQkJCQkJdHNwMTEwLHRzcDEyMCx0c3AxMzAsdHNwMTQwLHRzcDE1MCwKCQkJCQkJCQkJCXRzcDE2MCx0c3AxNzAsdHNwMTgwLHRzcDE5MCx0c3AyMDAsCgkJCQkJCQkJCQl0c3AyMTAsdHNwMjIwLHRzcDIzMCx0c3AyNDAsdHNwMjUwLAoJCQkJCQkJCQkJdHNwMjYwLHRzcDI3MCx0c3AyODAsdHNwMjkwLHRzcDMwMCwKCQkJCQkJCQkJCXRzcDMxMCx0c3AzMjAsdHNwMzMwLHRzcDM0MCx0c3AzNTAsCgkJCQkJCQkJCQl0c3AzNjAsdHNwMzcwLHRzcDM4MCx0c3AzOTAsdHNwNDAwLAoJCQkJCQkJCQkJdHNwNDEwLHRzcDQyMCx0c3A0MzAsdHNwNDQwLHRzcDQ1MCwKCQkJCQkJCQkJCXRzcDQ2MCx0c3A0NzAsdHNwNDgwLHRzcDQ5MCx0c3A1MDAsCgkJCQkJCQkJCQl0c3A1MTAsdHNwNTIwLHRzcDUzMCx0c3A1NDAsdHNwNTUwLAoJCQkJCQkJCQkJdHNwNjAwLHRzcDY1MCx0c3A3MDAsdHNwNzUwLHRzcDgwMCwKCQkJCQkJCQkJCXRzcDg1MCx0c3A5MDAsdHNwOTUwLHRzcDEwMDAgfQoKVHJhbnNtaXNzaW9uUkxDLURpc2NhcmQgOjo9CQkJQ0hPSUNFIHsKCXRpbWVyQmFzZWRFeHBsaWNpdAkJCQkJRXhwbGljaXREaXNjYXJkLAoJdGltZXJCYXNlZE5vRXhwbGljaXQJCQkJTm9FeHBsaWNpdERpc2NhcmQsCgltYXhEQVQtUmV0cmFuc21pc3Npb25zCQkJCU1heERBVC1SZXRyYW5zbWlzc2lvbnMsCglub0Rpc2NhcmQJCQkJCQkJTWF4REFUCn0KClRyYW5zbWlzc2lvbldpbmRvd1NpemUgOjo9CQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl0dzEsIHR3OCwgdHcxNiwgdHczMiwgdHc2NCwgdHcxMjgsIHR3MjU2LAoJCQkJCQkJCQkJdHc1MTIsIHR3NzY4LCB0dzEwMjQsIHR3MTUzNiwgdHcyMDQ3LCAKCQkJCQkJCQkJCXR3MjU2MCwgdHczMDcyLCB0dzM1ODQsIHR3NDA5NSB9CgpVTC1BTS1STEMtTW9kZSA6Oj0JCQkJCVNFUVVFTkNFIHsKCXRyYW5zbWlzc2lvblJMQy1EaXNjYXJkCQkJCVRyYW5zbWlzc2lvblJMQy1EaXNjYXJkLAoJdHJhbnNtaXNzaW9uV2luZG93U2l6ZQkJCQlUcmFuc21pc3Npb25XaW5kb3dTaXplLAoJdGltZXJSU1QJCQkJCQkJVGltZXJSU1QsCgltYXgtUlNUCQkJCQkJCQlNYXhSU1QsCglwb2xsaW5nSW5mbwkJCQkJCQlQb2xsaW5nSW5mbwkJCQkJCQlPUFRJT05BTAp9CgpVTC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbyA6Oj0JCVNFUVVFTkNFIHsKCXJCLVdpdGhQRENQLUluZm9MaXN0CQkJCQlSQi1XaXRoUERDUC1JbmZvTGlzdCAJT1BUSU9OQUwsCglzdGFydExpc3QJCQkJCQkJCVNUQVJUTGlzdAp9CgpVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmcgOjo9CQlTRVFVRU5DRSB7CgktLSBUQUJVTEFSOiBVTC1UcmFuc3BvcnRDaGFubmVsVHlwZSBjb250YWlucyBUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkgYXMgd2VsbC4KCXVsLVRyYW5zcG9ydENoYW5uZWxUeXBlCQkJCVVMLVRyYW5zcG9ydENoYW5uZWxUeXBlLAoJbG9naWNhbENoYW5uZWxJZGVudGl0eQkJCQlMb2dpY2FsQ2hhbm5lbElkZW50aXR5CQkJCU9QVElPTkFMLAoJcmxjLVNpemVMaXN0CQkJCQkJQ0hPSUNFIHsKCQlhbGxTaXplcwkJCQkJCQlOVUxMLAoJCWNvbmZpZ3VyZWQJCQkJCQkJTlVMTCwKCQlleHBsaWNpdExpc3QJCQkJCQlSTEMtU2l6ZUV4cGxpY2l0TGlzdAoJfSwKCW1hYy1Mb2dpY2FsQ2hhbm5lbFByaW9yaXR5CQkJTUFDLUxvZ2ljYWxDaGFubmVsUHJpb3JpdHkKfQoKVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nLXI2IDo6PQkJU0VRVUVOQ0UgewoJdWwtVHJDSC1UeXBlCQkJCQkJQ0hPSUNFIHsKCQlkY2gtcmFjaC11c2NoCQkJCQkJU0VRVUVOQ0UgewoJCQktLSBUQUJVTEFSOiBVTC1UcmFuc3BvcnRDaGFubmVsVHlwZSBjb250YWlucyBUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkgYXMgd2VsbC4KCQkJdWwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJVUwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUsCgkJCWxvZ2ljYWxDaGFubmVsSWRlbnRpdHkJCQkJTG9naWNhbENoYW5uZWxJZGVudGl0eQkJCQlPUFRJT05BTCwKCQkJcmxjLVNpemVMaXN0CQkJCQkJQ0hPSUNFIHsKCQkJCWFsbFNpemVzCQkJCQkJCU5VTEwsCgkJCQljb25maWd1cmVkCQkJCQkJCU5VTEwsCgkJCQlleHBsaWNpdExpc3QJCQkJCQlSTEMtU2l6ZUV4cGxpY2l0TGlzdAoJCQl9CgkJfSwKCQllLWRjaAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlsb2dpY2FsQ2hhbm5lbElkZW50aXR5CQkJCUxvZ2ljYWxDaGFubmVsSWRlbnRpdHksCgkJCWUtRENILU1BQy1kLUZsb3dJZGVudGl0eQkJCUUtRENILU1BQy1kLUZsb3dJZGVudGl0eSwKCQkJZGRpCQkJCQkJCQkJRERJLAoJCQlybGMtUERVLVNpemVMaXN0CQkJCQlSTEMtUERVLVNpemVMaXN0LAoJCQlpbmNsdWRlSW5TY2hlZHVsaW5nSW5mbwkJCQlCT09MRUFOCgkJfQoJfSwKCW1hYy1Mb2dpY2FsQ2hhbm5lbFByaW9yaXR5CQkJTUFDLUxvZ2ljYWxDaGFubmVsUHJpb3JpdHkKfQoKVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nTGlzdCA6Oj0JU0VRVUVOQ0UgewoJLS0gcmxjLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0luZGljYXRvciBzaGFsbCBiZSBzZXQgdG8gVFJVRSBpbiB0aGlzIHZlcnNpb24KCS0tIG9mIHRoZSBzcGVjaWZpY2F0aW9uCglybGMtTG9naWNhbENoYW5uZWxNYXBwaW5nSW5kaWNhdG9yCUJPT0xFQU4sCgl1bC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmcJCQlTRVFVRU5DRSAoU0laRSAobWF4TG9DSHBlclJMQykpIE9GCgkJCQkJCQkJCQlVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmcKfQoKVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nTGlzdC1yNiA6Oj0JU0VRVUVOQ0UgewoJLS0gcmxjLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0luZGljYXRvciBzaGFsbCBiZSBzZXQgdG8gVFJVRSBpbiB0aGlzIHZlcnNpb24KCS0tIG9mIHRoZSBzcGVjaWZpY2F0aW9uCglybGMtTG9naWNhbENoYW5uZWxNYXBwaW5nSW5kaWNhdG9yCUJPT0xFQU4sCgl1bC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmcJCQlTRVFVRU5DRSAoU0laRSAobWF4TG9DSHBlclJMQykpIE9GCgkJCQkJCQkJCQkJVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nLXI2Cn0KClVMLUxvZ2ljYWxDaGFubmVsTWFwcGluZ3MgOjo9CQlDSE9JQ0UgewoJb25lTG9naWNhbENoYW5uZWwJCQkJCVVMLUxvZ2ljYWxDaGFubmVsTWFwcGluZywKCXR3b0xvZ2ljYWxDaGFubmVscwkJCQkJVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nTGlzdAp9CgpVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdzLXI2IDo6PQlDSE9JQ0UgewoJb25lTG9naWNhbENoYW5uZWwJCQkJCVVMLUxvZ2ljYWxDaGFubmVsTWFwcGluZy1yNiwKCXR3b0xvZ2ljYWxDaGFubmVscwkJCQkJVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nTGlzdC1yNgp9CgpVTC1SRkMzMDk1LXI0IDo6PQkJCQkJU0VRVUVOQ0UgewoJY2lkLUluY2x1c2lvbkluZm8JCQkJCUNJRC1JbmNsdXNpb25JbmZvLXI0LAoJbWF4LUNJRAkJCQkJCQkJSU5URUdFUiAoMS4uMTYzODMpCQkJCQlERUZBVUxUIDE1LAoJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAoJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgoJZHVtbXkJCQkJCQkJCVJPSEMtUGFja2V0U2l6ZUxpc3QtcjQKfQoKVUwtUkxDLU1vZGUgOjo9CQkJCQkJQ0hPSUNFIHsKCXVsLUFNLVJMQy1Nb2RlCQkJCQkJVUwtQU0tUkxDLU1vZGUsCgl1bC1VTS1STEMtTW9kZQkJCQkJCVVMLVVNLVJMQy1Nb2RlLAoJdWwtVE0tUkxDLU1vZGUJCQkJCQlVTC1UTS1STEMtTW9kZSwKCXNwYXJlCQkJCQkJCQlOVUxMCn0KClVMLVRNLVJMQy1Nb2RlIDo6PQkJCQkJU0VRVUVOQ0UgewoJdHJhbnNtaXNzaW9uUkxDLURpc2NhcmQJCQkJVHJhbnNtaXNzaW9uUkxDLURpc2NhcmQJCQkJT1BUSU9OQUwsCglzZWdtZW50YXRpb25JbmRpY2F0aW9uCQkJCUJPT0xFQU4KfQoKVUwtVU0tUkxDLU1vZGUgOjo9CQkJCQlTRVFVRU5DRSB7Cgl0cmFuc21pc3Npb25STEMtRGlzY2FyZAkJCQlUcmFuc21pc3Npb25STEMtRGlzY2FyZAkJCQlPUFRJT05BTAp9CgpVTC1UcmFuc3BvcnRDaGFubmVsVHlwZSA6Oj0JCQlDSE9JQ0UgewoJZGNoCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAoJcmFjaAkJCQkJCQkJTlVMTCwKCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKCS0tIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KCWR1bW15CQkJCQkJCQlOVUxMLAoJdXNjaAkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5Cn0KClVNLVJMQy1EdXBsQXZvaWQtUmVvcmQtSW5mby1yNiA6Oj0JU0VRVUVOQ0UgewoJdGltZXItREFSCQkJCQkJCVRpbWVyREFSLXI2LAoJd2lkb3dTaXplLURBUgkJCQkJCVdpbmRvd1NpemVEQVItcjYKfQoKVU0tUkxDLU91dE9TZXFEZWxpdmVyeS1JbmZvLXI2IDo6PQlTRVFVRU5DRSB7Cgl0aW1lci1PU0QJCQkJCQkJVGltZXJPU0QtcjYJCQkJCQkJT1BUSU9OQUwsCgl3aW5kb3dTaXplLU9TRAkJCQkJCVdpbmRvd1NpemVPU0QtcjYKfQoKV2luZG93U2l6ZURBUi1yNiA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl3czQsIHdzOCwgd3MxNiwgd3MzMiwgd3M0MCwgd3M0OCwKCQkJCQkJCQkJCXdzNTYsIHdzNjQgfQoKV2luZG93U2l6ZU9TRC1yNiA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl3czgsIHdzMTYsIHdzMzIsIHdzNDAsIHdzNDgsCgkJCQkJCQkJCQl3czU2LCB3czY0IH0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSAgICAgVFJBTlNQT1JUIENIQU5ORUwgSU5GT1JNQVRJT04gRUxFTUVOVFMgKDEwLjMuNSkKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpBZGRPclJlY29uZk1BQy1kRmxvdyA6Oj0JCQlTRVFVRU5DRSB7CgltYWMtaHMtQWRkUmVjb25mUXVldWUtTGlzdAkJCQkJTUFDLWhzLUFkZFJlY29uZlF1ZXVlLUxpc3QJT1BUSU9OQUwsCgltYWMtaHMtRGVsUXVldWUtTGlzdAkJCQkJCU1BQy1ocy1EZWxRdWV1ZS1MaXN0CU9QVElPTkFMCn0KCkFsbG93ZWRURkMtTGlzdCA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkMpKSBPRgoJCQkJCQkJCQkJVEZDLVZhbHVlCgpBbGxvd2VkVEZJLUxpc3QgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEYpKSBPRgoJCQkJCQkJCQkJSU5URUdFUiAoMC4uMzEpCgpCaXRNb2RlUkxDLVNpemVJbmZvIDo6PQkJCQlDSE9JQ0UgewoJc2l6ZVR5cGUxCQkJCQkJCUlOVEVHRVIgKDAuLjEyNyksCgktLSBBY3R1YWwgdmFsdWUgc2l6ZVR5cGUyID0gKHBhcnQxICogOCkgKyAxMjggKyBwYXJ0MgoJc2l6ZVR5cGUyCQkJCQkJCVNFUVVFTkNFIHsKCQlwYXJ0MQkJCQkJCQkJSU5URUdFUiAoMC4uMTUpLAoJCXBhcnQyCQkJCQkJCQlJTlRFR0VSICgxLi43KQkJCQkJT1BUSU9OQUwKCX0sCgktLSBBY3R1YWwgdmFsdWUgc2l6ZVR5cGUzID0gKHBhcnQxICogMTYpICsgMjU2ICsgcGFydDIKCXNpemVUeXBlMwkJCQkJCQlTRVFVRU5DRSB7CgkJcGFydDEJCQkJCQkJCUlOVEVHRVIgKDAuLjQ3KSwKCQlwYXJ0MgkJCQkJCQkJSU5URUdFUiAoMS4uMTUpCQkJCQlPUFRJT05BTAoJfSwKCS0tIEFjdHVhbCB2YWx1ZSBzaXplVHlwZTQgPSAocGFydDEgKiA2NCkgKyAxMDI0ICsgcGFydDIKCXNpemVUeXBlNAkJCQkJCQlTRVFVRU5DRSB7CgkJcGFydDEJCQkJCQkJCUlOVEVHRVIgKDAuLjYyKSwKCQlwYXJ0MgkJCQkJCQkJSU5URUdFUiAoMS4uNjMpCQkJCQlPUFRJT05BTAoJfQp9CgotLSBBY3R1YWwgdmFsdWUgQkxFUi1RdWFsaXR5VmFsdWUgPSBJRSB2YWx1ZSAqIDAuMQpCTEVSLVF1YWxpdHlWYWx1ZSA6Oj0JCQkJSU5URUdFUiAoLTYzLi4wKQoKQ2hhbm5lbENvZGluZ1R5cGUgOjo9CQkJCUNIT0lDRSB7IAoJLS0gbm9Db2RpbmcgaXMgb25seSB1c2VkIGZvciBUREQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAoJLS0gb3RoZXJ3aXNlIGl0IHNob3VsZCBiZSBpZ25vcmVkCglub0NvZGluZwkJCQkJCQlOVUxMLAoJY29udm9sdXRpb25hbAkJCQkJCUNvZGluZ1JhdGUsCgl0dXJibwkJCQkJCQkJTlVMTCAKfQoKQ29kaW5nUmF0ZSA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWhhbGYsCgkJCQkJCQkJCQl0aGlyZCB9CgpDb21tb25EeW5hbWljVEYtSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CglybGMtU2l6ZQkJCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJb2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTIJCQlPY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMgoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQljb21tb25UREQtQ2hvaWNlCQkJCQlDSE9JQ0UgewoJCQkJYml0TW9kZVJMQy1TaXplSW5mbwkJCQkJQml0TW9kZVJMQy1TaXplSW5mbywKCQkJCW9jdGV0TW9kZVJMQy1TaXplSW5mb1R5cGUxCQkJT2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTEKCQkJfQoJCX0KCX0sCgludW1iZXJPZlRiU2l6ZUxpc3QJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGKSkgT0YJCQoJCQkJCQkJCQkJCU51bWJlck9mVHJhbnNwb3J0QmxvY2tzLAoJbG9naWNhbENoYW5uZWxMaXN0CQkJCUxvZ2ljYWxDaGFubmVsTGlzdAp9CgpDb21tb25EeW5hbWljVEYtSW5mby1EeW5hbWljVFRJIDo6PQlTRVFVRU5DRSB7Cgljb21tb25UREQtQ2hvaWNlCQkJCQlDSE9JQ0UgewoJCWJpdE1vZGVSTEMtU2l6ZUluZm8JCQkJCUJpdE1vZGVSTEMtU2l6ZUluZm8sCgkJb2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTEJCQlPY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMQoJfSwKCW51bWJlck9mVGJTaXplQW5kVFRJTGlzdAkJCU51bWJlck9mVGJTaXplQW5kVFRJTGlzdCwKCWxvZ2ljYWxDaGFubmVsTGlzdAkJCQkJTG9naWNhbENoYW5uZWxMaXN0Cn0KCkNvbW1vbkR5bmFtaWNURi1JbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURikpIE9GCgkJCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mbwoKQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LUR5bmFtaWNUVEkgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhURikpIE9GCgkJCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mby1EeW5hbWljVFRJCgpDb21tb25UcmFuc0NoVEZTIDo6PQkJCQlTRVFVRU5DRSB7Cgl0dGkJCQkJCQkJCQlDSE9JQ0UgewoJCXR0aTEwCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCgkJdHRpMjAJCQkJCQkJCUNvbW1vbkR5bmFtaWNURi1JbmZvTGlzdCwKCQl0dGk0MAkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LAoJCXR0aTgwCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCgkJZHluYW1pYwkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LUR5bmFtaWNUVEkKCX0sCglzZW1pc3RhdGljVEYtSW5mb3JtYXRpb24JCQlTZW1pc3RhdGljVEYtSW5mb3JtYXRpb24KfQoKQ29tbW9uVHJhbnNDaFRGUy1MQ1IgOjo9CQkJCVNFUVVFTkNFIHsKCXR0aQkJCQkJCQkJCUNIT0lDRSB7CgkJdHRpNQkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LAoJCXR0aTEwCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCgkJdHRpMjAJCQkJCQkJCUNvbW1vbkR5bmFtaWNURi1JbmZvTGlzdCwKCQl0dGk0MAkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LAoJCXR0aTgwCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCgkJZHluYW1pYwkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LUR5bmFtaWNUVEkKCX0sCglzZW1pc3RhdGljVEYtSW5mb3JtYXRpb24JCQlTZW1pc3RhdGljVEYtSW5mb3JtYXRpb24KfQoKQ1BDSC1TZXRJRCA6Oj0JCQkJCQlJTlRFR0VSICgxLi5tYXhDUENIc2V0cykKCkNSQy1TaXplIDo6PQkJCQkJCUVOVU1FUkFURUQgeyAKCQkJCQkJCQkJCWNyYzAsIGNyYzgsIGNyYzEyLCBjcmMxNiwgY3JjMjQgfQoKRGVkaWNhdGVkRHluYW1pY1RGLUluZm8gOjo9CQkJU0VRVUVOQ0UgewoJcmxjLVNpemUJCQkJCQkJQ0hPSUNFIHsKCQliaXRNb2RlCQkJCQkJCQlCaXRNb2RlUkxDLVNpemVJbmZvLAoJCW9jdGV0TW9kZVR5cGUxCQkJCQkJT2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTEKCX0sCgludW1iZXJPZlRiU2l6ZUxpc3QJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGKSkgT0YJCQkJCQkJCQkJTnVtYmVyT2ZUcmFuc3BvcnRCbG9ja3MsCglsb2dpY2FsQ2hhbm5lbExpc3QJCQkJTG9naWNhbENoYW5uZWxMaXN0IAp9CgpEZWRpY2F0ZWREeW5hbWljVEYtSW5mby1EeW5hbWljVFRJIDo6PSBTRVFVRU5DRSB7CglybGMtU2l6ZQkJCQkJCQlDSE9JQ0UgewoJCWJpdE1vZGUJCQkJCQkJCUJpdE1vZGVSTEMtU2l6ZUluZm8sCgkJb2N0ZXRNb2RlVHlwZTEJCQkJCQlPY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMQoJfSwKCW51bWJlck9mVGJTaXplQW5kVFRJTGlzdAkJCU51bWJlck9mVGJTaXplQW5kVFRJTGlzdCwKCWxvZ2ljYWxDaGFubmVsTGlzdAkJCQlMb2dpY2FsQ2hhbm5lbExpc3QgCn0KCkRlZGljYXRlZER5bmFtaWNURi1JbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURikpIE9GCgkJCQkJCQkJCQlEZWRpY2F0ZWREeW5hbWljVEYtSW5mbwoKRGVkaWNhdGVkRHluYW1pY1RGLUluZm9MaXN0LUR5bmFtaWNUVEkgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhURikpIE9GCgkJCQkJCQkJCQlEZWRpY2F0ZWREeW5hbWljVEYtSW5mby1EeW5hbWljVFRJCgpEZWRpY2F0ZWRUcmFuc0NoVEZTIDo6PQkJCQlTRVFVRU5DRSB7Cgl0dGkJCQkJCQkJCQlDSE9JQ0UgewoJCXR0aTEwCQkJCQkJCQlEZWRpY2F0ZWREeW5hbWljVEYtSW5mb0xpc3QsCgkJdHRpMjAJCQkJCQkJCURlZGljYXRlZER5bmFtaWNURi1JbmZvTGlzdCwKCQl0dGk0MAkJCQkJCQkJRGVkaWNhdGVkRHluYW1pY1RGLUluZm9MaXN0LAoJCXR0aTgwCQkJCQkJCQlEZWRpY2F0ZWREeW5hbWljVEYtSW5mb0xpc3QsCgkJZHluYW1pYwkJCQkJCQkJRGVkaWNhdGVkRHluYW1pY1RGLUluZm9MaXN0LUR5bmFtaWNUVEkKCX0sCglzZW1pc3RhdGljVEYtSW5mb3JtYXRpb24JCQlTZW1pc3RhdGljVEYtSW5mb3JtYXRpb24KfQoKLS0gVGhlIG1heGltdW0gYWxsb3dlZCBzaXplIG9mIERMLUFkZFJlY29uZlRyYW5zQ2hJbmZvMkxpc3Qgc2VxdWVuY2UgaXMgMTYKREwtQWRkUmVjb25mVHJhbnNDaEluZm8yTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0hwcmVjb25mKSkgT0YKCQkJCQkJCQkJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbjIKCi0tIFRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBvZiBETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3Qgc2VxdWVuY2UgaXMgMTYKREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0hwcmVjb25mKSkgT0YKCQkJCQkJCQkJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbgoKLS0gVGhlIG1heGltdW0gYWxsb3dlZCBzaXplIG9mIERMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNCBzZXF1ZW5jZSBpcyAxNgpETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIcHJlY29uZikpIE9GCgkJCQkJCQkJCQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24tcjQKCi0tIFRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBvZiBETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUgc2VxdWVuY2UgaXMgMTYKREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSHByZWNvbmYpKSBPRgoJCQkJCQkJCQkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9ybWF0aW9uLXI1CgotLSBBU04uMSBmb3IgSUUgIkFkZGVkIG9yIFJlY29uZmlndXJlZCBETCBUckNIIGluZm9ybWF0aW9uIiAKLS0gaW4gY2FzZSBvZiBtZXNzYWdlcyBvdGhlciB0aGFuOiBSYWRpbyBCZWFyZXIgUmVsZWFzZSBtZXNzYWdlIGFuZCAKLS0gUmFkaW8gQmVhcmVyIFJlY29uZmlndXJhdGlvbiBtZXNzYWdlCkRMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbiA6Oj0gCVNFUVVFTkNFIHsKCWRsLVRyYW5zcG9ydENoYW5uZWxUeXBlCQkJCURMLVRyQ0gtVHlwZSwKCWRsLXRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKCXRmcy1TaWduYWxsaW5nTW9kZQkJCQkJQ0hPSUNFIHsKCQlleHBsaWNpdC1jb25maWcJCQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQsCgkJc2FtZUFzVUxUckNICQkJCQkJVUwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5Cgl9LAoJZGNoLVF1YWxpdHlUYXJnZXQJCQkJCVF1YWxpdHlUYXJnZXQJCQkJCQlPUFRJT05BTCwKCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkIAoJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJZHVtbXkJCQkJCQkJCVRNLVNpZ25hbGxpbmdJbmZvCQkJCQlPUFRJT05BTAp9CgpETC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24tcjQgOjo9IAlTRVFVRU5DRSB7CglkbC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlETC1UckNILVR5cGUsCglkbC10cmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCgl0ZnMtU2lnbmFsbGluZ01vZGUJCQkJCUNIT0lDRSB7CgkJZXhwbGljaXQtY29uZmlnCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0LAoJCXNhbWVBc1VMVHJDSAkJCQkJCVVMLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQoJfSwKCWRjaC1RdWFsaXR5VGFyZ2V0CQkJCQlRdWFsaXR5VGFyZ2V0CQkJCQkJT1BUSU9OQUwKfQoKREwtQWRkUmVjb25mVHJhbnNDaEluZm9ybWF0aW9uLXI1IDo6PSAJU0VRVUVOQ0UgewoJZGwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJREwtVHJDSC1UeXBlSWQxLXI1LAoJdGZzLVNpZ25hbGxpbmdNb2RlCQkJCQlDSE9JQ0UgewoJCWV4cGxpY2l0LWNvbmZpZwkJCQkJCVRyYW5zcG9ydEZvcm1hdFNldCwKCQlzYW1lQXNVTFRyQ0gJCQkJCQlVTC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCgkJaHNkc2NoCQkJCQkJCQlIU0RTQ0gtSW5mbwoJfSwKCWRjaC1RdWFsaXR5VGFyZ2V0CQkJCQlRdWFsaXR5VGFyZ2V0CQkJCQkJT1BUSU9OQUwKfQoKLS0gQVNOLjEgZm9yIElFICJBZGRlZCBvciBSZWNvbmZpZ3VyZWQgREwgVHJDSCBpbmZvcm1hdGlvbiIgCi0tIGluIGNhc2Ugb2YgUmFkaW8gQmVhcmVyIFJlbGVhc2UgbWVzc2FnZSBhbmQgCi0tIFJhZGlvIEJlYXJlciBSZWNvbmZpZ3VyYXRpb24gbWVzc2FnZQpETC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24yIDo6PSBTRVFVRU5DRSB7CglkbC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlETC1UckNILVR5cGUsCgl0cmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCgl0ZnMtU2lnbmFsbGluZ01vZGUJCQkJCUNIT0lDRSB7CgkJZXhwbGljaXQtY29uZmlnCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0LAoJCXNhbWVBc1VMVHJDSAkJCQkJCVVMLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQoJfSwKCXF1YWxpdHlUYXJnZXQJCQkJCQlRdWFsaXR5VGFyZ2V0CQkJCQkJT1BUSU9OQUwKfQoKREwtQ29tbW9uVHJhbnNDaEluZm8gOjo9CQkJU0VRVUVOQ0UgewoJc2NjcGNoLVRGQ1MJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwsCgktLSBtb2RlU3BlY2lmaWNJbmZvIHNob3VsZCBiZSBvcHRpb25hbC4gQSBuZXcgdmVyc2lvbiBvZiB0aGlzIElFIHNob3VsZCBiZSBkZWZpbmVkIAoJLS0gdG8gYmUgdXNlZCBpbiBsYXRlciB2ZXJzaW9ucyBvZiBtZXNzYWdlcyB1c2luZyB0aGlzIElFCgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJZGwtUGFyYW1ldGVycwkJCQkJCUNIT0lDRSB7CgkJCQlkbC1EQ0gtVEZDUwkJCQkJCQlURkNTLAoJCQkJc2FtZUFzVUwJCQkJCQkJTlVMTAoJCQl9CQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWluZGl2aWR1YWxETC1DQ1RyQ0gtSW5mb0xpc3QJCUluZGl2aWR1YWxETC1DQ1RyQ0gtSW5mb0xpc3QKCQkJCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCgkJfQoJfQp9CgpETC1Db21tb25UcmFuc0NoSW5mby1yNCA6Oj0JCQlTRVFVRU5DRSB7CglzY2NwY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlkbC1QYXJhbWV0ZXJzCQkJCQkJQ0hPSUNFIHsKCQkJCWRsLURDSC1URkNTCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQl0ZmNzCQkJCQkJCQlURkNTCQkJCU9QVElPTkFMCgkJCQl9LAoJCQkJc2FtZUFzVUwJCQkJCQkJTlVMTAoJCQl9CQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWluZGl2aWR1YWxETC1DQ1RyQ0gtSW5mb0xpc3QJCUluZGl2aWR1YWxETC1DQ1RyQ0gtSW5mb0xpc3QKCQkJCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCgkJfQoJfQlPUFRJT05BTAp9CgpETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgoJCQkJCQkJCQkJREwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CgpETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCgkJCQkJCQkJCQlETC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHktcjUJCgpETC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkgOjo9IAkJU0VRVUVOQ0UgewoJZGwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJREwtVHJDSC1UeXBlLAoJZGwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5Cn0KCkRMLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eS1yNSA6Oj0gCQlTRVFVRU5DRSB7CglkbC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlETC1UckNILVR5cGVJZDItcjUKfQoKLS0gVGhlIGNob2ljZSDSZHNjaNMgc2hvdWxkIG5vdCBiZSB1c2VkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZApETC1UckNILVR5cGUgOjo9CQkJCQlFTlVNRVJBVEVEIHtkY2gsIGRzY2h9CgpETC1UckNILVR5cGVJZDEtcjUgOjo9CQkJCUNIT0lDRSB7CglkY2gJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCgktLSBUaGUgY2hvaWNlINJkc2No0yBzaG91bGQgbm90IGJlIHVzZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAoJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZC4KCWRzY2gJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKCWhzZHNjaAkJCQkJCQkJTlVMTAp9CgpETC1UckNILVR5cGVJZDItcjUgOjo9CQkJCUNIT0lDRSB7CglkY2gJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCgktLSBUaGUgY2hvaWNlINJkc2No0yBzaG91bGQgbm90IGJlIHVzZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAoJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZC4KCWRzY2gJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKCWhzZHNjaAkJCQkJCQkJTUFDLWQtRmxvd0lkZW50aXR5Cn0KCkRSQUMtQ2xhc3NJZGVudGl0eSA6Oj0JCQkJSU5URUdFUiAoMS4ubWF4RFJBQ2NsYXNzZXMpCgpEUkFDLVN0YXRpY0luZm9ybWF0aW9uIDo6PQkJCVNFUVVFTkNFIHsKCXRyYW5zbWlzc2lvblRpbWVWYWxpZGl0eQkJCVRyYW5zbWlzc2lvblRpbWVWYWxpZGl0eSwKCXRpbWVEdXJhdGlvbkJlZm9yZVJldHJ5CQkJCVRpbWVEdXJhdGlvbkJlZm9yZVJldHJ5LAoJZHJhYy1DbGFzc0lkZW50aXR5CQkJCQlEUkFDLUNsYXNzSWRlbnRpdHkKfQoKRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GIAoJCQkJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbgoKRS1EQ0gtQWRkUmVjb25mLU1BQy1kLUZsb3cgOjo9CQlTRVFVRU5DRSB7CgltYWMtZC1GbG93SWRlbnRpdHkJCQkJCUUtRENILU1BQy1kLUZsb3dJZGVudGl0eSwKCW1hYy1kLUZsb3dQb3dlck9mZnNldAkJCQlFLURDSC1NQUMtZC1GbG93UG93ZXJPZmZzZXQJCQlPUFRJT05BTCwKCW1hYy1kLUZsb3dNYXhSZXRyYW5zCQkJCUUtRENILU1BQy1kLUZsb3dNYXhSZXRyYW5zCQkJT1BUSU9OQUwsCgltYWMtZC1GbG93TXVsdGlwbGV4aW5nTGlzdAkJCUUtRENILU1BQy1kLUZsb3dNdWx0aXBsZXhpbmdMaXN0CU9QVElPTkFMLAoJdHJhbnNtaXNzaW9uR3JhbnRUeXBlCQkJCUNIT0lDRSB7CgkJbm9uLVNjaGVkdWxlZFRyYW5zR3JhbnRJbmZvCQkJU0VRVUVOQ0UgewoJCQltYXhNQUMtZS1QRFVDb250ZW50cwkJCQlJTlRFR0VSICgxLi4xOTk4MiksCgkJCW1zMi1Ob25TY2hlZFRyYW5zbUdyYW50SEFSUUFsbG9jCUJJVCBTVFJJTkcgKFNJWkUgKDgpKQkJT1BUSU9OQUwKCQl9LAoJCXNjaGVkdWxlZFRyYW5zbWlzc2lvbkdyYW50SW5mbwkJTlVMTAoJfQlPUFRJT05BTAp9CgpFLURDSC1BZGRSZWNvbmYtTUFDLWQtRmxvd0xpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhFLURDSE1BQ2RGbG93KSkgT0YKCQkJCQkJCUUtRENILUFkZFJlY29uZi1NQUMtZC1GbG93CgpFLURDSC1NQUMtZC1GbG93SWRlbnRpdHkgOjo9CQlJTlRFR0VSICgwLi5tYXhFLURDSE1BQ2RGbG93LTEpCgpFLURDSC1NQUMtZC1GbG93TWF4UmV0cmFucyA6Oj0JCUlOVEVHRVIgKDAuLjE1KQoKRS1EQ0gtTUFDLWQtRmxvd011bHRpcGxleGluZ0xpc3QgOjo9IEJJVCBTVFJJTkcgKFNJWkUgKG1heEUtRENITUFDZEZsb3cpKQoKRS1EQ0gtTUFDLWQtRmxvd1Bvd2VyT2Zmc2V0IDo6PQkJSU5URUdFUiAoMC4uNikKCkUtRENILVRUSSA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsgdHRpMiwgdHRpMTAgfQoKRXhwbGljaXRURkNTLUNvbmZpZ3VyYXRpb24gOjo9CQlDSE9JQ0UgewoJY29tcGxldGUJCQkJCQkJVEZDUy1SZWNvbmZBZGQsCglhZGRpdGlvbgkJCQkJCQlURkNTLVJlY29uZkFkZCwKCXJlbW92YWwJCQkJCQkJCVRGQ1MtUmVtb3ZhbExpc3QsCglyZXBsYWNlbWVudAkJCQkJCQlTRVFVRU5DRSB7CgkJdGZjc1JlbW92YWwJCQkJCQkJVEZDUy1SZW1vdmFsTGlzdCwKCQl0ZmNzQWRkCQkJCQkJCQlURkNTLVJlY29uZkFkZAoJfQp9CgpHYWluRmFjdG9yIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjE1KQoKR2FpbkZhY3RvckluZm9ybWF0aW9uIDo6PQkJCUNIT0lDRSB7CglzaWduYWxsZWRHYWluRmFjdG9ycwkJCQlTaWduYWxsZWRHYWluRmFjdG9ycywKCWNvbXB1dGVkR2FpbkZhY3RvcnMJCQkJCVJlZmVyZW5jZVRGQy1JRAp9CgpIU0RTQ0gtSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CgloYXJxSW5mbwkJCQkJCQlIQVJRLUluZm8gCQkJCU9QVElPTkFMLAoJYWRkT3JSZWNvbmZNQUMtZEZsb3cJCQkJQWRkT3JSZWNvbmZNQUMtZEZsb3cJT1BUSU9OQUwKfQoKSEFSUS1JbmZvIDo6PQkJCQkJCVNFUVVFTkNFIHsKCW51bWJlck9mUHJvY2Vzc2VzCQkJCQlJTlRFR0VSICgxLi44KSwKCW1lbW9yeVBhcnRpdGlvbmluZwkJCQkJQ0hPSUNFIHsKCQlpbXBsaWNpdAkJCQkJCQlOVUxMLAoJCWV4cGxpY2l0CQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIUHJvY2Vzc2VzKSkgT0YKCQkJCQkJCQkJCQkJSEFSUU1lbW9yeVNpemUKCX0KfQoKSEFSUU1lbW9yeVNpemUgOjo9IAkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlobXM4MDAsIGhtczE2MDAsIGhtczI0MDAsIGhtczMyMDAsIGhtczQwMDAsCgkJCQkJCQkJCQlobXM0ODAwLCBobXM1NjAwLCBobXM2NDAwLCBobXM3MjAwLCBobXM4MDAwLAoJCQkJCQkJCQkJaG1zODgwMCwgaG1zOTYwMCwgaG1zMTA0MDAsIGhtczExMjAwLCBobXMxMjAwMCwKCQkJCQkJCQkJCWhtczEyODAwLCBobXMxMzYwMCwgaG1zMTQ0MDAsIGhtczE1MjAwLCBobXMxNjAwMCwKCQkJCQkJCQkJCWhtczE3NjAwLCBobXMxOTIwMCwgaG1zMjA4MDAsIGhtczIyNDAwLCBobXMyNDAwMCwKCQkJCQkJCQkJCWhtczI1NjAwLCBobXMyNzIwMCwgaG1zMjg4MDAsIGhtczMwNDAwLCBobXMzMjAwMCwKCQkJCQkJCQkJCWhtczM2MDAwLCBobXM0MDAwMCwgaG1zNDQwMDAsIGhtczQ4MDAwLCBobXM1MjAwMCwKCQkJCQkJCQkJCWhtczU2MDAwLCBobXM2MDAwMCwgaG1zNjQwMDAsIGhtczY4MDAwLCBobXM3MjAwMCwKCQkJCQkJCQkJCWhtczc2MDAwLCBobXM4MDAwMCwgaG1zODgwMDAsIGhtczk2MDAwLCBobXMxMDQwMDAsCgkJCQkJCQkJCQlobXMxMTIwMDAsIGhtczEyMDAwMCwgaG1zMTI4MDAwLCBobXMxMzYwMDAsIGhtczE0NDAwMCwKCQkJCQkJCQkJCWhtczE1MjAwMCwgaG1zMTYwMDAwLCBobXMxNzYwMDAsIGhtczE5MjAwMCwgaG1zMjA4MDAwLAoJCQkJCQkJCQkJaG1zMjI0MDAwLCBobXMyNDAwMDAsIGhtczI1NjAwMCwgaG1zMjcyMDAwLCBobXMyODgwMDAsCgkJCQkJCQkJCQlobXMzMDQwMDAgfQoKSW5kaXZpZHVhbERMLUNDVHJDSC1JbmZvIDo6PQkJU0VRVUVOQ0UgewoJZGwtVEZDUy1JZGVudGl0eQkJCQkJVEZDUy1JZGVudGl0eSwKCXRmY3MtU2lnbmFsbGluZ01vZGUJCQkJCUNIT0lDRSB7CgkJZXhwbGljaXQtY29uZmlnCQkJCQkJVEZDUywKCQlzYW1lQXNVTAkJCQkJCQlURkNTLUlkZW50aXR5Cgl9Cn0KCkluZGl2aWR1YWxETC1DQ1RyQ0gtSW5mb0xpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgoJCQkJCQkJCQkJSW5kaXZpZHVhbERMLUNDVHJDSC1JbmZvCgpJbmRpdmlkdWFsVUwtQ0NUckNILUluZm8gOjo9CQlTRVFVRU5DRSB7Cgl1bC1URkNTLUlkZW50aXR5CQkJCQlURkNTLUlkZW50aXR5LAoJdWwtVEZDUwkJCQkJCQkJVEZDUyAsCgl0ZmMtU3Vic2V0CQkJCQkJCVRGQy1TdWJzZXQKfQoKSW5kaXZpZHVhbFVMLUNDVHJDSC1JbmZvTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENDVHJDSCkpIE9GCgkJCQkJCQkJCQlJbmRpdmlkdWFsVUwtQ0NUckNILUluZm8KCkxvZ2ljYWxDaGFubmVsQnlSQiA6Oj0JCQkJU0VRVUVOQ0UgewoJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCQoJbG9nQ2hPZlJiCQkJCQkJCUlOVEVHRVIgKDAuLjEpCQkJCQkJT1BUSU9OQUwKfQoKTG9naWNhbENoYW5uZWxMaXN0IDo6PQkJCQlDSE9JQ0UgewoJCWFsbFNpemVzCQkJCQkJCU5VTEwsCgkJY29uZmlndXJlZAkJCQkJCQlOVUxMLAoJCWV4cGxpY2l0TGlzdAkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi4xNSkpIE9GCgkJCQkJCQkJCQkJCUxvZ2ljYWxDaGFubmVsQnlSQgkJCQkKfQoKTUFDLWQtRmxvd0lkZW50aXR5RENIYW5kSFNEU0NIIDo6PQlTRVFVRU5DRSB7CglkY2gtdHJhbnNwb3J0LWNoLWlkCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKCWhzZHNjaC1tYWMtZC1mbG93LWlkCQkJTUFDLWQtRmxvd0lkZW50aXR5Cn0KCk1BQy1kLUZsb3dJZGVudGl0eSA6Oj0JCQkJSU5URUdFUiAoMC4uNykKCk1BQy1kLVBEVS1TaXplSW5mby1MaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFKDEuLiBtYXhNQUMtZC1QRFVzaXplcykpIE9GCgkJCQkJCQkJCQlNQUMtZC1QRFVzaXplSW5mbwoKLS1NQUMtZC1QZHUgc2l6ZXMgbmVlZCB0byBiZSBkZWZpbmVkCk1BQy1kLVBEVXNpemVJbmZvIDo6PQkJCQlTRVFVRU5DRXsKCW1hYy1kLVBEVS1TaXplCQkJCQkJSU5URUdFUiAoMS4uNTAwMCksCgltYWMtZC1QRFUtSW5kZXgJCQkJCQlJTlRFR0VSKDAuLjcpCn0KCk1BQy1ocy1BZGRSZWNvbmZRdWV1ZS1MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSgxLi5tYXhRdWV1ZUlEcykpIE9GCgkJCQkJCQkJCQlNQUMtaHMtQWRkUmVjb25mUXVldWUKCk1BQy1ocy1BZGRSZWNvbmZRdWV1ZSA6Oj0JCQlTRVFVRU5DRSB7CgltYWMtaHNRdWV1ZUlkCQkJCQkJSU5URUdFUigwLi43KSwKCW1hYy1kRmxvd0lkCQkJCQkJCU1BQy1kLUZsb3dJZGVudGl0eSwKCXJlb3JkZXJpbmdSZWxlYXNlVGltZXIJCQkJVDEtUmVsZWFzZVRpbWVyLAoJbWFjLWhzV2luZG93U2l6ZQkJCQkJTUFDLWhzLVdpbmRvd1NpemUsCgltYWMtZC1QRFUtU2l6ZUluZm8tTGlzdAkJCQlNQUMtZC1QRFUtU2l6ZUluZm8tTGlzdAkJCQlPUFRJT05BTAp9CgpNQUMtaHMtRGVsUXVldWUtTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUoMS4ubWF4UXVldWVJRHMpKSBPRgoJCQkJCQkJCQkJTUFDLWhzLURlbFF1ZXVlCgpNQUMtaHMtRGVsUXVldWUgOjo9CQkJCQlTRVFVRU5DRSB7CgltYWMtaHNRdWV1ZUlkCQkJCQkJSU5URUdFUigwLi43KQp9CgpNQUMtaHMtV2luZG93U2l6ZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQltd3M0LCBtd3M2LCBtd3M4LCBtd3MxMiwgbXdzMTYsIG13czI0LCBtd3MzMiB9CgpOdW1iZXJPZlRiU2l6ZUFuZFRUSUxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEYpKSBPRiBTRVFVRU5DRSB7CgkJbnVtYmVyT2ZUcmFuc3BvcnRCbG9ja3MJCQkJTnVtYmVyT2ZUcmFuc3BvcnRCbG9ja3MsCgkJdHJhbnNtaXNzaW9uVGltZUludGVydmFsCQkJVHJhbnNtaXNzaW9uVGltZUludGVydmFsCn0KCk1lc3NUeXBlIDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sIH0KCk5vbi1hbGxvd2VkVEZDLUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkMpKSBPRgoJCQkJCQkJCQkJVEZDLVZhbHVlCgpOdW1iZXJPZlRyYW5zcG9ydEJsb2NrcyA6Oj0JCQlDSE9JQ0UgewoJemVybwkJCQkJCQkJTlVMTCwKCW9uZQkJCQkJCQkJCU5VTEwsCglzbWFsbAkJCQkJCQkJSU5URUdFUiAoMi4uMTcpLAoJbGFyZ2UJCQkJCQkJCUlOVEVHRVIgKDE4Li41MTIpCn0KCk9jdGV0TW9kZVJMQy1TaXplSW5mb1R5cGUxIDo6PQkJQ0hPSUNFIHsKCS0tIEFjdHVhbCBzaXplID0gKDggKiBzaXplVHlwZTEpICsgMTYKCXNpemVUeXBlMQkJCQkJCQlJTlRFR0VSICgwLi4zMSksCglzaXplVHlwZTIJCQkJCQkJU0VRVUVOQ0UgewoJCS0tIEFjdHVhbCBzaXplID0gKDMyICogcGFydDEpICsgMjcyICsgKHBhcnQyICogOCkKCQlwYXJ0MQkJCQkJCQkJSU5URUdFUiAoMC4uMjMpLAoJCXBhcnQyCQkJCQkJCQlJTlRFR0VSICgxLi4zKQkJCQkJT1BUSU9OQUwKCX0sCglzaXplVHlwZTMJCQkJCQkJU0VRVUVOQ0UgewoJCS0tIEFjdHVhbCBzaXplID0gKDY0ICogcGFydDEpICsgMTA0MCArIChwYXJ0MiAqIDgpCgkJcGFydDEJCQkJCQkJCUlOVEVHRVIgKDAuLjYxKSwKCQlwYXJ0MgkJCQkJCQkJSU5URUdFUiAoMS4uNykJCQkJCU9QVElPTkFMCgl9Cn0KCk9jdGV0TW9kZVJMQy1TaXplSW5mb1R5cGUyIDo6PQkJQ0hPSUNFIHsKCS0tIEFjdHVhbCBzaXplID0gKHNpemVUeXBlMSAqIDgpICsgNDgKCXNpemVUeXBlMQkJCQkJCQlJTlRFR0VSICgwLi4zMSksCgktLSBBY3R1YWwgc2l6ZSA9IChzaXplVHlwZTIgKiAxNikgKyAzMTIKCXNpemVUeXBlMgkJCQkJCQlJTlRFR0VSICgwLi42MyksCgktLSBBY3R1YWwgc2l6ZSA9IChzaXplVHlwZTMgKjY0KSArIDEzODQKCXNpemVUeXBlMwkJCQkJCQlJTlRFR0VSICgwLi41NikKfQoKUG93ZXJPZmZzZXRJbmZvU2hvcnQgOjo9CQkJU0VRVUVOQ0UgewoJcmVmZXJlbmNlVEZDCQkJCQkJVEZDLVZhbHVlLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWdhaW5GYWN0b3JCZXRhQwkJCQkJCUdhaW5GYWN0b3IKCQl9LAoJCXRkZAkJCQkJCQkJCU5VTEwKCX0sCglnYWluRmFjdG9yQmV0YUQJCQkJCQlHYWluRmFjdG9yCn0KClBvd2VyT2Zmc2V0SW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgewoJZ2FpbkZhY3RvckluZm9ybWF0aW9uCQkJCUdhaW5GYWN0b3JJbmZvcm1hdGlvbiwKCS0tIFBvd2VyT2Zmc2V0UHAtbSBpcyBhbHdheXMgYWJzZW50IGluIFRERAoJcG93ZXJPZmZzZXRQcC1tCQkJCQkJUG93ZXJPZmZzZXRQcC1tCQkJCQkJT1BUSU9OQUwKfQoKUG93ZXJPZmZzZXRQcC1tIDo6PQkJCQkJSU5URUdFUiAoLTUuLjEwKQoKUHJlRGVmVHJhbnNDaENvbmZpZ3VyYXRpb24gOjo9CQlTRVFVRU5DRSB7Cgl1bC1Db21tb25UcmFuc0NoSW5mbwkJCQlVTC1Db21tb25UcmFuc0NoSW5mbywKCXVsLUFkZFJlY29uZlRyQ2hJbmZvTGlzdAkJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCwKCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLAoJZGwtVHJDaEluZm9MaXN0CQkJCQkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0Cn0JCgpRdWFsaXR5VGFyZ2V0IDo6PQkJCQkJU0VRVUVOQ0UgewoJYmxlci1RdWFsaXR5VmFsdWUJCQkJCUJMRVItUXVhbGl0eVZhbHVlCn0KClJhdGVNYXRjaGluZ0F0dHJpYnV0ZSA6Oj0JCQlJTlRFR0VSICgxLi5oaVJNKQoKClJlZmVyZW5jZVRGQy1JRCA6Oj0JCQkJCUlOVEVHRVIgKDAuLjMpCgpSZXN0cmljdGVkVHJDaEluZm8gOjo9CQkJCVNFUVVFTkNFIHsKCXVsLVRyYW5zcG9ydENoYW5uZWxUeXBlCQkJCVVMLVRyQ0gtVHlwZSwKCXJlc3RyaWN0ZWRUckNoSWRlbnRpdHkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAoJYWxsb3dlZFRGSS1MaXN0CQkJCQkJQWxsb3dlZFRGSS1MaXN0CQkJCQkJT1BUSU9OQUwKfQoKUmVzdHJpY3RlZFRyQ2hJbmZvTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCgkJCQkJCQkJCQlSZXN0cmljdGVkVHJDaEluZm8KClNlbWlzdGF0aWNURi1JbmZvcm1hdGlvbiA6Oj0JCVNFUVVFTkNFIHsKCS0tIFRBQlVMQVI6IFRyYW5zbWlzc2lvbiB0aW1lIGludGVydmFsIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBJRSBDb21tb25UcmFuc0NoVEZTLgoJY2hhbm5lbENvZGluZ1R5cGUJCQkJCUNoYW5uZWxDb2RpbmdUeXBlLAoJcmF0ZU1hdGNoaW5nQXR0cmlidXRlCQkJCVJhdGVNYXRjaGluZ0F0dHJpYnV0ZSwKCWNyYy1TaXplCQkJCQkJCUNSQy1TaXplCn0KClNpZ25hbGxlZEdhaW5GYWN0b3JzIDo6PQkJCVNFUVVFTkNFIHsKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlnYWluRmFjdG9yQmV0YUMJCQkJCQlHYWluRmFjdG9yCgkJfSwKCQl0ZGQJCQkJCQkJCQlOVUxMCgl9LAoJZ2FpbkZhY3RvckJldGFECQkJCQkJR2FpbkZhY3RvciwKCXJlZmVyZW5jZVRGQy1JRAkJCQkJCVJlZmVyZW5jZVRGQy1JRAkJCQkJCU9QVElPTkFMCn0KClNwbGl0VEZDSS1TaWduYWxsaW5nIDo6PQkJCVNFUVVFTkNFIHsKCXNwbGl0VHlwZQkJCQkJCQlTcGxpdFR5cGUJCQkJCQlPUFRJT05BTCwKCXRmY2ktRmllbGQyLUxlbmd0aAkJCQkJSU5URUdFUiAoMS4uMTApCQkJCQlPUFRJT05BTCwKCXRmY2ktRmllbGQxLUluZm9ybWF0aW9uCQkJCUV4cGxpY2l0VEZDUy1Db25maWd1cmF0aW9uCQlPUFRJT05BTCwKCXRmY2ktRmllbGQyLUluZm9ybWF0aW9uCQkJCVRGQ0ktRmllbGQyLUluZm9ybWF0aW9uCQkJT1BUSU9OQUwKfQoKU3BsaXRUeXBlIDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJaGFyZFNwbGl0LCBsb2dpY2FsU3BsaXQgfQoKVDEtUmVsZWFzZVRpbWVyIDo6PQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlydDEwLCBydDIwLCBydDMwLCBydDQwLCBydDUwLAoJCQkJCQkJCQkJcnQ2MCwgcnQ3MCwgcnQ4MCwgcnQ5MCwgcnQxMDAsCgkJCQkJCQkJCQlydDEyMCwgcnQxNDAsIHJ0MTYwLCBydDIwMCwgcnQzMDAsCgkJCQkJCQkJCQlydDQwMCB9CgpURkMtU3Vic2V0IDo6PQkJCQkJCUNIT0lDRSB7CgltaW5pbXVtQWxsb3dlZFRGQy1OdW1iZXIJCQlURkMtVmFsdWUsCglhbGxvd2VkVEZDLUxpc3QJCQkJCQlBbGxvd2VkVEZDLUxpc3QsCglub24tYWxsb3dlZFRGQy1MaXN0CQkJCQlOb24tYWxsb3dlZFRGQy1MaXN0LAoJcmVzdHJpY3RlZFRyQ2hJbmZvTGlzdAkJCQlSZXN0cmljdGVkVHJDaEluZm9MaXN0LAoJZnVsbFRGQ1MJCQkJCQkJTlVMTAp9CgpURkMtU3Vic2V0TGlzdCA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi4gbWF4VEZDc3ViKSkgT0YgU0VRVUVOQ0UgewoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlOVUxMLAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eQkJCQlPUFRJT05BTAoJCX0KCX0sCgl0ZmMtU3Vic2V0CQkJCQkJCVRGQy1TdWJzZXQKfQoKVEZDLVZhbHVlIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjEwMjMpCgpURkNJLUZpZWxkMi1JbmZvcm1hdGlvbiA6Oj0JCQlDSE9JQ0UgewoJdGZjaS1SYW5nZQkJCQkJCQlURkNJLVJhbmdlTGlzdCwKCWV4cGxpY2l0LWNvbmZpZwkJCQkJCUV4cGxpY2l0VEZDUy1Db25maWd1cmF0aW9uCn0KClRGQ0ktUmFuZ2UgOjo9CQkJCQkJU0VRVUVOQ0UgewoJbWF4VEZDSUZpZWxkMlZhbHVlCQkJCQlJTlRFR0VSICgxLi4xMDIzKSwKCXRmY3MtSW5mb0ZvckRTQ0gJCQkJCVRGQ1MtSW5mb0ZvckRTQ0gKfQoKVEZDSS1SYW5nZUxpc3QgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UERTQ0gtVEZDSWdyb3VwcykpIE9GCgkJCQkJCQkJCQlURkNJLVJhbmdlCgpURkNTIDo6PQkJCQkJCQlDSE9JQ0UgewoJbm9ybWFsVEZDSS1TaWduYWxsaW5nCQkJCUV4cGxpY2l0VEZDUy1Db25maWd1cmF0aW9uLAoJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KCWR1bW15CQkJCQkJCQlTcGxpdFRGQ0ktU2lnbmFsbGluZwp9CgpURkNTLUlkZW50aXR5IDo6PQkJCQkJU0VRVUVOQ0UgewoJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCglzaGFyZWRDaGFubmVsSW5kaWNhdG9yCQkJCUJPT0xFQU4KfQoKVEZDUy1JZGVudGl0eVBsYWluIDo6PQkJCQlJTlRFR0VSICgxLi44KQoKVEZDUy1JbmZvRm9yRFNDSCA6Oj0JCQkJQ0hPSUNFIHsKCWN0ZmMyYml0CQkJCQkJCUlOVEVHRVIgKDAuLjMpLAoJY3RmYzRiaXQJCQkJCQkJSU5URUdFUiAoMC4uMTUpLAoJY3RmYzZiaXQJCQkJCQkJSU5URUdFUiAoMC4uNjMpLAoJY3RmYzhiaXQJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKCWN0ZmMxMmJpdAkJCQkJCQlJTlRFR0VSICgwLi40MDk1KSwKCWN0ZmMxNmJpdAkJCQkJCQlJTlRFR0VSICgwLi42NTUzNSksCgljdGZjMjRiaXQJCQkJCQkJSU5URUdFUiAoMC4uMTY3NzcyMTUpCn0KClRGQ1MtUmVjb25mQWRkIDo6PQkJCQkJU0VRVUVOQ0V7CgljdGZjU2l6ZQkJCQkJCQlDSE9JQ0V7CgkJY3RmYzJCaXQJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGQykpIE9GIFNFUVVFTkNFIHsKCQkJY3RmYzIJCQkJCQkJCUlOVEVHRVIgKDAuLjMpLAoJCQlwb3dlck9mZnNldEluZm9ybWF0aW9uCQkJCVBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQlPUFRJT05BTAoJCX0sCgkJY3RmYzRCaXQJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGQykpIE9GIFNFUVVFTkNFIHsKCQkJY3RmYzQgCQkJCQkJCQlJTlRFR0VSICgwLi4xNSksCgkJCXBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQkJUG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCU9QVElPTkFMCgkJfSwKCQljdGZjNkJpdAkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEZDKSkgT0YgU0VRVUVOQ0UgewoJCQljdGZjNgkJCQkJCQkJSU5URUdFUiAoMC4uNjMpLAoJCQlwb3dlck9mZnNldEluZm9ybWF0aW9uCQkJCVBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQlPUFRJT05BTAoJCX0sCgkJY3RmYzhCaXQJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGQykpIE9GIFNFUVVFTkNFIHsKCQkJY3RmYzgJCQkJCQkJCUlOVEVHRVIgKDAuLjI1NSksCgkJCXBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQkJUG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCU9QVElPTkFMCgkJfSwKCQljdGZjMTJCaXQJCQkJCQkJU0VRVUVOQ0UgKFNJWkUoMS4ubWF4VEZDKSkgT0YgU0VRVUVOQ0UgewoJCQljdGZjMTIJCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpLAogCQkJcG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCQlQb3dlck9mZnNldEluZm9ybWF0aW9uCQkJT1BUSU9OQUwKCQl9LAoJCWN0ZmMxNkJpdAkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEZDKSkgT0YgU0VRVUVOQ0UgewoJCQljdGZjMTYJCQkJCQkJCUlOVEVHRVIoMC4uNjU1MzUpLAoJCQlwb3dlck9mZnNldEluZm9ybWF0aW9uCQkJCVBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQlPUFRJT05BTAoJCX0sCgkJY3RmYzI0Qml0CQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkMpKSBPRiBTRVFVRU5DRSB7CgkJCWN0ZmMyNAkJCQkJCQkJSU5URUdFUigwLi4xNjc3NzIxNSksCgkJCXBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQkJUG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCU9QVElPTkFMCgkJfQoJfQp9CgpURkNTLVJlbW92YWwgOjo9CQkJCQlTRVFVRU5DRSB7Cgl0ZmNpCQkJCQkJCQlJTlRFR0VSICgwLi4xMDIzKQp9CgpURkNTLVJlbW92YWxMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEZDKSkgT0YKCQkJCQkJCQkJCVRGQ1MtUmVtb3ZhbAoKVGltZUR1cmF0aW9uQmVmb3JlUmV0cnkgOjo9CQkJSU5URUdFUiAoMS4uMjU2KQoKVE0tU2lnbmFsbGluZ0luZm8gOjo9CQkJCVNFUVVFTkNFIHsKCW1lc3NUeXBlCQkJCQkJCU1lc3NUeXBlLAoJdG0tU2lnbmFsbGluZ01vZGUJCQkJCUNIT0lDRSB7CgkJbW9kZTEJCQkJCQkJCU5VTEwsCgkJbW9kZTIJCQkJCQkJCVNFUVVFTkNFIHsKCQkJLS0gaW4gdWwtY29udHJvbGxlZFRyQ2hMaXN0LCBUckNILVR5cGUgaXMgYWx3YXlzIERDSAoJCQl1bC1jb250cm9sbGVkVHJDaExpc3QJCQkJVUwtQ29udHJvbGxlZFRyQ2hMaXN0CgkJfQoJfQp9CgpUcmFuc21pc3Npb25UaW1lSW50ZXJ2YWwgOjo9CQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXR0aTEwLCB0dGkyMCwgdHRpNDAsIHR0aTgwIH0KClRyYW5zbWlzc2lvblRpbWVWYWxpZGl0eSA6Oj0JCUlOVEVHRVIgKDEuLjI1NikKClRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSA6Oj0JCUlOVEVHRVIgKDEuLjMyKQoKVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5RENIYW5kRFNDSCA6Oj0JU0VRVUVOQ0UgewoJZGNoLXRyYW5zcG9ydC1jaC1pZAkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCglkc2NoLXRyYW5zcG9ydC1jaC1pZAkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQp9CgoKVHJhbnNwb3J0Rm9ybWF0U2V0IDo6PQkJCQlDSE9JQ0UgewoJZGVkaWNhdGVkVHJhbnNDaFRGUwkJCQkJRGVkaWNhdGVkVHJhbnNDaFRGUywKCWNvbW1vblRyYW5zQ2hURlMJCQkJCUNvbW1vblRyYW5zQ2hURlMKfQoKVHJhbnNwb3J0Rm9ybWF0U2V0LUxDUiA6Oj0JCQkJQ0hPSUNFIHsKCWRlZGljYXRlZFRyYW5zQ2hURlMJCQkJCURlZGljYXRlZFRyYW5zQ2hURlMsCgljb21tb25UcmFuc0NoVEZTLUxDUgkJCQlDb21tb25UcmFuc0NoVEZTLUxDUgp9CgotLSBUaGUgbWF4aW11bSBhbGxvd2VkIHNpemUgb2YgVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0IHNlcXVlbmNlIGlzIDE2ClVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIcHJlY29uZikpIE9GCgkJCQkJCQkJCQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24KCi0tIFRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBvZiBVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYgc2VxdWVuY2UgaXMgMzIKVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCgkJCQkJCQkJCQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24tcjYKClVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgewoJdWwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJVUwtVHJDSC1UeXBlLAoJdHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAoJdHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQKfQoKVUwtQWRkUmVjb25mVHJhbnNDaEluZm9ybWF0aW9uLXI2IDo6PSBDSE9JQ0UgewoJZGNoLXVzY2gJCQkJCQkJU0VRVUVOQ0UgewoJCXVsLVRyYW5zcG9ydENoYW5uZWxUeXBlCQkJCVVMLVRyQ0gtVHlwZSwKCQl0cmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCgkJdHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQKCX0sCgllLWRjaAkJCQkJCQkJU0VRVUVOQ0UgewoJCXR0aQkJCQkJCQkJCUUtRENILVRUSSwKCQloYXJxLUluZm8JCQkJCQkJRU5VTUVSQVRFRCB7IHJ2MCwgcnZ0YWJsZSB9LAoJCWFkZFJlY29uZi1NQUMtZC1GbG93TGlzdAkJCUUtRENILUFkZFJlY29uZi1NQUMtZC1GbG93TGlzdAlPUFRJT05BTAoJfQp9CgpVTC1Db21tb25UcmFuc0NoSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CgktLSBUQUJVTEFSOiB0ZmMtc3Vic2V0IGlzIGFwcGxpY2FibGUgdG8gRkREIG9ubHksIFRERCBzcGVjaWZpZXMgdGZjLXN1YnNldCBpbiBpbmRpdmlkdWFsIAoJLS0gQ0NUckNIIEluZm8uCgl0ZmMtU3Vic2V0CQkJCQkJCVRGQy1TdWJzZXQJCQkJCQkJT1BUSU9OQUwsCglwcmFjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXVsLVRGQ1MJCQkJCQkJVEZDUwoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoKCQkJaW5kaXZpZHVhbFVMLUNDVHJDSC1JbmZvTGlzdAkJSW5kaXZpZHVhbFVMLUNDVHJDSC1JbmZvTGlzdAoJCQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKCQl9Cgl9CQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKfQoKVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQgOjo9CQkJU0VRVUVOQ0UgewoJLS0gVEFCVUxBUjogdGZjLXN1YnNldCBpcyBhcHBsaWNhYmxlIHRvIEZERCBvbmx5LCBUREQgc3BlY2lmaWVzIHRmYy1zdWJzZXQgaW4gaW5kaXZpZHVhbCAKCS0tIENDVHJDSCBJbmZvLgoJdGZjLVN1YnNldAkJCQkJCQlURkMtU3Vic2V0CQkJCQkJCU9QVElPTkFMLAoJcHJhY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQl1bC1URkNTCQkJCQkJCQlURkNTCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWluZGl2aWR1YWxVTC1DQ1RyQ0gtSW5mb0xpc3QJCUluZGl2aWR1YWxVTC1DQ1RyQ0gtSW5mb0xpc3QJCU9QVElPTkFMCgkJfQoJfQkJCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAoJdGZjLVN1YnNldExpc3QJCQkJCQlURkMtU3Vic2V0TGlzdAkJCQkJCU9QVElPTkFMCn0KCi0tIEluIFVMLUNvbnRyb2xsZWRUckNoTGlzdCwgVHJDSC1UeXBlIGlzIGFsd2F5cyBEQ0gKVUwtQ29udHJvbGxlZFRyQ2hMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQoKVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKCQkJCQkJCQkJCVVMLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQoKVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNiA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgoJCQkJCQkJCQkJVUwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LXI2CgpVTC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkgOjo9CQlTRVFVRU5DRSB7Cgl1bC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlVTC1UckNILVR5cGUsCgl1bC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKfQoKVUwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LXI2IDo6PQlDSE9JQ0UgewoJZGNoLXVzY2gJCQkJCQkJU0VRVUVOQ0UgewoJCXVsLVRyYW5zcG9ydENoYW5uZWxUeXBlCQkJCVVMLVRyQ0gtVHlwZSwKCQl1bC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKCX0sCgllLWRjaAkJCQkJCQkJRS1EQ0gtTUFDLWQtRmxvd0lkZW50aXR5Cn0KClVMLVRyQ0gtVHlwZSA6Oj0JCQkJCUVOVU1FUkFURUQge2RjaCwgdXNjaH0KClVTQ0gtVHJhbnNwb3J0Q2hhbm5lbHNJbmZvIDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgoJCQkJCQkJCQkJU0VRVUVOQ0UgewoJdXNjaC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCgl1c2NoLVRGUwkJCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0Cn0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tICAgICBQSFlTSUNBTCBDSEFOTkVMIElORk9STUFUSU9OIEVMRU1FTlRTICgxMC4zLjYpCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKQUNLLU5BQ0stcmVwZXRpdGlvbkZhY3RvciA6Oj0JCUlOVEVHRVIoMS4uNCkKCkFDLVRvLUFTQy1NYXBwaW5nIDo6PQkJCQlJTlRFR0VSICgwLi43KQoKQUMtVG8tQVNDLU1hcHBpbmdUYWJsZSA6Oj0JCQlTRVFVRU5DRSAoU0laRSAobWF4QVNDbWFwKSkgT0YKCQkJCQkJCQkJCUFDLVRvLUFTQy1NYXBwaW5nCgpBY2Nlc3NTZXJ2aWNlQ2xhc3MtRkREIDo6PQkJCVNFUVVFTkNFIHsKCWF2YWlsYWJsZVNpZ25hdHVyZVN0YXJ0SW5kZXgJCUlOVEVHRVIgKDAuLjE1KSwKCWF2YWlsYWJsZVNpZ25hdHVyZUVuZEluZGV4CQkJSU5URUdFUiAoMC4uMTUpLAoKCWFzc2lnbmVkU3ViQ2hhbm5lbE51bWJlcgkJCUJJVCBTVFJJTkcgewoJCQkJCQkJCQkJCWIzKDApLAoJCQkJCQkJCQkJCWIyKDEpLAoJCQkJCQkJCQkJCWIxKDIpLAoJCQkJCQkJCQkJCWIwKDMpCgkJCQkJCQkJCQkJfQkgKFNJWkUoNCkpCn0KCkFjY2Vzc1NlcnZpY2VDbGFzcy1UREQgOjo9CQkJU0VRVUVOQ0UgewoJY2hhbm5lbGlzYXRpb25Db2RlSW5kaWNlcwkJCUJJVCBTVFJJTkcJewoJCQkJCQkJCQkJCWNoQ29kZUluZGV4NygwKSwKCQkJCQkJCQkJCQljaENvZGVJbmRleDYoMSksCgkJCQkJCQkJCQkJY2hDb2RlSW5kZXg1KDIpLAoJCQkJCQkJCQkJCWNoQ29kZUluZGV4NCgzKSwKCQkJCQkJCQkJCQljaENvZGVJbmRleDMoNCksCgkJCQkJCQkJCQkJY2hDb2RlSW5kZXgyKDUpLAoJCQkJCQkJCQkJCWNoQ29kZUluZGV4MSg2KSwKCQkJCQkJCQkJCQljaENvZGVJbmRleDAoNykKCQkJCQkJCQkJCQl9IChTSVpFKDgpKQkJCQlPUFRJT05BTCwKCXN1YmNoYW5uZWxTaXplCQkJCQkJQ0hPSUNFIHsKCQlzaXplMQkJCQkJCQkJTlVMTCwKCQlzaXplMgkJCQkJCQkJU0VRVUVOQ0UgewoJCQktLSBzdWJjaDAgbWVhbnMgYml0c3RyaW5nICcwMScgaW4gdGhlIHRhYnVsYXIsIHN1YmNoMSBtZWFucyBiaXRzcmluZyAnMTAnCgkJCXN1YmNoYW5uZWxzCQkJCQkJCUVOVU1FUkFURUQJeyBzdWJjaDAsIHN1YmNoMSB9CU9QVElPTkFMCgkJfSwKCQlzaXplNAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlzdWJjaGFubmVscwkJCQkJCQlCSVQgU1RSSU5HCXsKCQkJCQkJCQkJCQkJCXN1YkNoMygwKSwgCgkJCQkJCQkJCQkJCQlzdWJDaDIoMSksIAoJCQkJCQkJCQkJCQkJc3ViQ2gxKDIpLCAKCQkJCQkJCQkJCQkJCXN1YkNoMCgzKSAKCQkJCQkJCQkJCQkJCX0gKFNJWkUoNCkpCQlPUFRJT05BTAoJCX0sCgkJc2l6ZTgJCQkJCQkJCVNFUVVFTkNFIHsKCQkJc3ViY2hhbm5lbHMJCQkJCQkJQklUIFNUUklORwl7CgkJCQkJCQkJCQkJCQlzdWJDaDcoMCksIAoJCQkJCQkJCQkJCQkJc3ViQ2g2KDEpLCAKCQkJCQkJCQkJCQkJCXN1YkNoNSgyKSwgCgkJCQkJCQkJCQkJCQlzdWJDaDQoMyksIAoJCQkJCQkJCQkJCQkJc3ViQ2gzKDQpLCAKCQkJCQkJCQkJCQkJCXN1YkNoMig1KSwgCgkJCQkJCQkJCQkJCQlzdWJDaDEoNiksIAoJCQkJCQkJCQkJCQkJc3ViQ2gwKDcpIAoJCQkJCQkJCQkJCQkJfSAoU0laRSg4KSkJCU9QVElPTkFMCgkJfQoJfQp9CgpBY2Nlc3NTZXJ2aWNlQ2xhc3MtVERELXI3IDo6PQkJCVNFUVVFTkNFIHsKCWNoYW5uZWxpc2F0aW9uQ29kZUluZGljZXMJCQlCSVQgU1RSSU5HCXsKCQkJCQkJCQkJCQljaENvZGVJbmRleDE1KDApLAoJCQkJCQkJCQkJCWNoQ29kZUluZGV4MTQoMSksCgkJCQkJCQkJCQkJY2hDb2RlSW5kZXgxMygyKSwKCQkJCQkJCQkJCQljaENvZGVJbmRleDEyKDMpLAoJCQkJCQkJCQkJCWNoQ29kZUluZGV4MTEoNCksCgkJCQkJCQkJCQkJY2hDb2RlSW5kZXgxMCg1KSwKCQkJCQkJCQkJCQljaENvZGVJbmRleDkoNiksCgkJCQkJCQkJCQkJY2hDb2RlSW5kZXg4KDcpLAoJCQkJCQkJCQkJCWNoQ29kZUluZGV4Nyg4KSwKCQkJCQkJCQkJCQljaENvZGVJbmRleDYoOSksCgkJCQkJCQkJCQkJY2hDb2RlSW5kZXg1KDEwKSwKCQkJCQkJCQkJCQljaENvZGVJbmRleDQoMTEpLAoJCQkJCQkJCQkJCWNoQ29kZUluZGV4MygxMiksCgkJCQkJCQkJCQkJY2hDb2RlSW5kZXgyKDEzKSwKCQkJCQkJCQkJCQljaENvZGVJbmRleDEoMTQpLAoJCQkJCQkJCQkJCWNoQ29kZUluZGV4MCgxNSkKCQkJCQkJCQkJCQl9IChTSVpFKDE2KSkJCQkJT1BUSU9OQUwsCglzdWJjaGFubmVsU2l6ZQkJCQkJCUNIT0lDRSB7CgkJc2l6ZTEJCQkJCQkJCU5VTEwsCgkJc2l6ZTIJCQkJCQkJCVNFUVVFTkNFIHsKCQkJLS0gc3ViY2gwIG1lYW5zIGJpdHN0cmluZyAnMDEnIGluIHRoZSB0YWJ1bGFyLCBzdWJjaDEgbWVhbnMgYml0c3JpbmcgJzEwJwoJCQlzdWJjaGFubmVscwkJCQkJCQlFTlVNRVJBVEVECXsgc3ViY2gwLCBzdWJjaDEgfQlPUFRJT05BTAoJCX0sCgkJc2l6ZTQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJc3ViY2hhbm5lbHMJCQkJCQkJQklUIFNUUklORwl7CgkJCQkJCQkJCQkJCQlzdWJDaDMoMCksIAoJCQkJCQkJCQkJCQkJc3ViQ2gyKDEpLCAKCQkJCQkJCQkJCQkJCXN1YkNoMSgyKSwgCgkJCQkJCQkJCQkJCQlzdWJDaDAoMykgCgkJCQkJCQkJCQkJCQl9IChTSVpFKDQpKQkJT1BUSU9OQUwKCQl9LAoJCXNpemU4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCXN1YmNoYW5uZWxzCQkJCQkJCUJJVCBTVFJJTkcJewoJCQkJCQkJCQkJCQkJc3ViQ2g3KDApLCAKCQkJCQkJCQkJCQkJCXN1YkNoNigxKSwgCgkJCQkJCQkJCQkJCQlzdWJDaDUoMiksIAoJCQkJCQkJCQkJCQkJc3ViQ2g0KDMpLCAKCQkJCQkJCQkJCQkJCXN1YkNoMyg0KSwgCgkJCQkJCQkJCQkJCQlzdWJDaDIoNSksIAoJCQkJCQkJCQkJCQkJc3ViQ2gxKDYpLCAKCQkJCQkJCQkJCQkJCXN1YkNoMCg3KSAKCQkJCQkJCQkJCQkJCX0gKFNJWkUoOCkpCQlPUFRJT05BTAoJCX0sCgkJc2l6ZTE2CQkJCQkJCQlTRVFVRU5DRSB7CgkJCXN1YmNoYW5uZWxzCQkJCQkJCUJJVCBTVFJJTkcJewoJCQkJCQkJCQkJCQkJc3ViQ2gxNSgwKSwgCgkJCQkJCQkJCQkJCQlzdWJDaDE0KDEpLCAKCQkJCQkJCQkJCQkJCXN1YkNoMTMoMiksIAoJCQkJCQkJCQkJCQkJc3ViQ2gxMigzKSwgCgkJCQkJCQkJCQkJCQlzdWJDaDExKDQpLCAKCQkJCQkJCQkJCQkJCXN1YkNoMTAoNSksIAoJCQkJCQkJCQkJCQkJc3ViQ2g5KDYpLCAKCQkJCQkJCQkJCQkJCXN1YkNoOCg3KSwKCQkJCQkJCQkJCQkJCXN1YkNoNyg4KSwKCQkJCQkJCQkJCQkJCXN1YkNoNig5KSwKCQkJCQkJCQkJCQkJCXN1YkNoNSgxMCksCgkJCQkJCQkJCQkJCQlzdWJDaDQoMTEpLAoJCQkJCQkJCQkJCQkJc3ViQ2gzKDEyKSwKCQkJCQkJCQkJCQkJCXN1YkNoMigxMyksCgkJCQkJCQkJCQkJCQlzdWJDaDEoMTQpLAoJCQkJCQkJCQkJCQkJc3ViQ2gwKDE1KSAKCQkJCQkJCQkJCQkJCX0gKFNJWkUoMTYpKQkJT1BUSU9OQUwKCQl9Cgl9Cn0KCkFjY2Vzc1NlcnZpY2VDbGFzcy1UREQtTENSLXI0IDo6PQlTRVFVRU5DRSB7CglhdmFpbGFibGVTWU5DLVVsQ29kZXNJbmRpY3MJCSAgICBCSVQgU1RSSU5HIHsKCQkJCQkJCQkJCQlzdWxDb2RlSW5kZXg3KDApLAoJCQkJCQkJCQkJCXN1bENvZGVJbmRleDYoMSksCgkJCQkJCQkJCQkJc3VsQ29kZUluZGV4NSgyKSwKCQkJCQkJCQkJCQlzdWxDb2RlSW5kZXg0KDMpLAoJCQkJCQkJCQkJCXN1bENvZGVJbmRleDMoNCksCgkJCQkJCQkJCQkJc3VsQ29kZUluZGV4Mig1KSwKCQkJCQkJCQkJCQlzdWxDb2RlSW5kZXgxKDYpLAoJCQkJCQkJCQkJCXN1bENvZGVJbmRleDAoNykKCQkJCQkJCQkJCQl9IChTSVpFKDgpKSAgICAgICAgICAgICAgIE9QVElPTkFMLAoJc3ViY2hhbm5lbFNpemUJCQkJCQlDSE9JQ0UgewoJCXNpemUxCQkJCQkJCQlOVUxMLAoJCXNpemUyCQkJCQkJCQlTRVFVRU5DRSB7CgkJCS0tIHN1YmNoMCBtZWFucyBiaXRzdHJpbmcgJzAxJyBpbiB0aGUgdGFidWxhciwgc3ViY2gxIG1lYW5zIGJpdHNyaW5nICcxMCcuCgkJCXN1YmNoYW5uZWxzCQkJCQkJCUVOVU1FUkFURUQJeyBzdWJjaDAsIHN1YmNoMSB9CU9QVElPTkFMCgkJfSwKCQlzaXplNAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlzdWJjaGFubmVscwkJCQkJCQlCSVQgU1RSSU5HCXsKCQkJCQkJCQkJCQkJCXN1YkNoMygwKSwgCgkJCQkJCQkJCQkJCQlzdWJDaDIoMSksIAoJCQkJCQkJCQkJCQkJc3ViQ2gxKDIpLCAKCQkJCQkJCQkJCQkJCXN1YkNoMCgzKSAKCQkJCQkJCQkJCQkJCX0gKFNJWkUoNCkpCQkJT1BUSU9OQUwKCQl9LAoJCXNpemU4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCXN1YmNoYW5uZWxzCQkJCQkJCUJJVCBTVFJJTkcJewoJCQkJCQkJCQkJCQkJc3ViQ2g3KDApLCAKCQkJCQkJCQkJCQkJCXN1YkNoNigxKSwgCgkJCQkJCQkJCQkJCQlzdWJDaDUoMiksIAoJCQkJCQkJCQkJCQkJc3ViQ2g0KDMpLCAKCQkJCQkJCQkJCQkJCXN1YkNoMyg0KSwgCgkJCQkJCQkJCQkJCQlzdWJDaDIoNSksIAoJCQkJCQkJCQkJCQkJc3ViQ2gxKDYpLCAKCQkJCQkJCQkJCQkJCXN1YkNoMCg3KSAKCQkJCQkJCQkJCQkJCX0gKFNJWkUoOCkpCQkJT1BUSU9OQUwKCQl9Cgl9CgkKfQoKQWRkaXRpb25hbFBSQUNILVRGLWFuZC1URkNTLUNDQ0gtSUVzIDo6PSBTRVFVRU5DRSB7Cglwb3dlck9mZnNldEluZm9ybWF0aW9uCQkJCVBvd2VyT2Zmc2V0SW5mb3JtYXRpb24sCglkeW5hbWljVEZJbmZvcm1hdGlvbkNDQ0gJCQlEeW5hbWljVEZJbmZvcm1hdGlvbkNDQ0gKfQoKQWRkaXRpb25hbFBSQUNILVRGLWFuZC1URkNTLUNDQ0ggOjo9CVNFUVVFTkNFIHsKCWFkZGl0aW9uYWxQUkFDSC1URi1hbmQtVEZDUy1DQ0NILUlFcwlBZGRpdGlvbmFsUFJBQ0gtVEYtYW5kLVRGQ1MtQ0NDSC1JRXMJT1BUSU9OQUwKfQoKLS0gVGhlIG9yZGVyIGlzIHRoZSBzYW1lIGFzIGluIHRoZSBQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QKQWRkaXRpb25hbFBSQUNILVRGLWFuZC1URkNTLUNDQ0gtTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBSQUNIKSkgT0YKCQkJCQkJCQkJCUFkZGl0aW9uYWxQUkFDSC1URi1hbmQtVEZDUy1DQ0NICgpBSUNILUluZm8gOjo9CQkJCQkJU0VRVUVOQ0UgewoJY2hhbm5lbGlzYXRpb25Db2RlMjU2CQkJCUNoYW5uZWxpc2F0aW9uQ29kZTI1NiwKCXN0dGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTiwKCWFpY2gtVHJhbnNtaXNzaW9uVGltaW5nCQkJCUFJQ0gtVHJhbnNtaXNzaW9uVGltaW5nCn0KCkFJQ0gtUG93ZXJPZmZzZXQgOjo9CQkJCUlOVEVHRVIgKC0yMi4uNSkKCkFJQ0gtVHJhbnNtaXNzaW9uVGltaW5nIDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZTAsIGUxIH0KCkFsbG9jYXRpb25QZXJpb2RJbmZvIDo6PQkJCVNFUVVFTkNFIHsKCWFsbG9jYXRpb25BY3RpdmF0aW9uVGltZQkJCUlOVEVHRVIgKDAuLjI1NSksCglhbGxvY2F0aW9uRHVyYXRpb24JCQkJCUlOVEVHRVIgKDEuLjI1NikKfQoKLS0gQWN0dWFsIHZhbHVlIEFscGhhID0gSUUgdmFsdWUgKiAwLjEyNQpBbHBoYSA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uOCkKCkFQLUFJQ0gtQ2hhbm5lbGlzYXRpb25Db2RlIDo6PQkJSU5URUdFUiAoMC4uMjU1KQoKQVAtUHJlYW1ibGVTY3JhbWJsaW5nQ29kZSA6Oj0JCUlOVEVHRVIgKDAuLjc5KQoKQVAtU2lnbmF0dXJlIDo6PQkJCQkJSU5URUdFUiAoMC4uMTUpCgpBUC1TaWduYXR1cmUtVkNBTSA6Oj0JCQkJU0VRVUVOQ0UgewoJYXAtU2lnbmF0dXJlCQkJCQkJQVAtU2lnbmF0dXJlLAoJYXZhaWxhYmxlQVAtU3ViY2hhbm5lbExpc3QJCQlBdmFpbGFibGVBUC1TdWJjaGFubmVsTGlzdCBPUFRJT05BTAp9CgpBUC1TdWJjaGFubmVsIDo6PQkJCQkJSU5URUdFUiAoMC4uMTEpCgpBU0NTZXR0aW5nLUZERCA6Oj0JCQkJCQlTRVFVRU5DRSB7CgktLSBUQUJVTEFSOiBhY2Nlc3NTZXJ2aWNlQ2xhc3MtRkREIGlzIE1EIGluIHRhYnVsYXIgZGVzY3JpcHRpb24KCS0tIERlZmF1bHQgdmFsdWUgaXMgcHJldmlvdXMgQVNDCgktLSBJZiB0aGlzIGlzIHRoZSBmaXJzdCBBU0MsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGFsbCBhdmFpbGFibGUgc2lnbmF0dXJlIGFuZCBzdWItY2hhbm5lbHMKCWFjY2Vzc1NlcnZpY2VDbGFzcy1GREQJCQkJCUFjY2Vzc1NlcnZpY2VDbGFzcy1GREQJT1BUSU9OQUwKfQoKQVNDU2V0dGluZy1UREQgOjo9CQkJCQkJU0VRVUVOQ0UgewoJLS0gVEFCVUxBUjogYWNjZXNzU2VydmljZUNsYXNzLVRERCBpcyBNRCBpbiB0YWJ1bGFyIGRlc2NyaXB0aW9uCgktLSBEZWZhdWx0IHZhbHVlIGlzIHByZXZpb3VzIEFTQwoJLS0gSWYgdGhpcyBpcyB0aGUgZmlyc3QgQVNDLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBhbGwgYXZhaWxhYmxlIGNoYW5uZWxpc2F0aW9uIGNvZGVzIGFuZAoJLS0gYWxsIGF2YWlsYWJsZSBzdWItY2hhbm5lbHMgd2l0aCBzdWJjaGFubmVsU2l6ZT1zaXplMS4KCWFjY2Vzc1NlcnZpY2VDbGFzcy1UREQJCQkJCUFjY2Vzc1NlcnZpY2VDbGFzcy1UREQJT1BUSU9OQUwKfQoKQVNDU2V0dGluZy1UREQtcjcgOjo9CQkJCQkJU0VRVUVOQ0UgewoJLS0gVEFCVUxBUjogYWNjZXNzU2VydmljZUNsYXNzLVRERCBpcyBNRCBpbiB0YWJ1bGFyIGRlc2NyaXB0aW9uCgktLSBEZWZhdWx0IHZhbHVlIGlzIHByZXZpb3VzIEFTQwoJLS0gSWYgdGhpcyBpcyB0aGUgZmlyc3QgQVNDLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBhbGwgYXZhaWxhYmxlIGNoYW5uZWxpc2F0aW9uIGNvZGVzIGFuZAoJLS0gYWxsIGF2YWlsYWJsZSBzdWItY2hhbm5lbHMgd2l0aCBzdWJjaGFubmVsU2l6ZT1zaXplMS4KCWFjY2Vzc1NlcnZpY2VDbGFzcy1UREQJCQkJCQlBY2Nlc3NTZXJ2aWNlQ2xhc3MtVERELXI3CU9QVElPTkFMCn0KCkFTQ1NldHRpbmctVERELUxDUi1yNCA6Oj0JCQkJCQlTRVFVRU5DRSB7CgktLSBUQUJVTEFSOiBhY2Nlc3NTZXJ2aWNlQ2xhc3MtVERELUxDUiBpcyBNRCBpbiB0YWJ1bGFyIGRlc2NyaXB0aW9uCgktLSBEZWZhdWx0IHZhbHVlIGlzIHByZXZpb3VzIEFTQwoJLS0gSWYgdGhpcyBpcyB0aGUgZmlyc3QgQVNDLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBhbGwgYXZhaWxhYmxlIFNZTkNfVUwgY29kZXMgYW5kCgktLSBhbGwgYXZhaWxhYmxlIHN1Yi1jaGFubmVscyB3aXRoIHN1YmNoYW5uZWxTaXplPXNpemUxLiAKCWFjY2Vzc1NlcnZpY2VDbGFzcy1UREQtTENSCQkJCQlBY2Nlc3NTZXJ2aWNlQ2xhc3MtVERELUxDUi1yNCAgCU9QVElPTkFMCn0KCkF2YWlsYWJsZUFQLVNpZ25hdHVyZS1WQ0FNTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBDUENILUFQc2lnKSkgT0YKCQkJCQkJCQkJCUFQLVNpZ25hdHVyZS1WQ0FNCgpBdmFpbGFibGVBUC1TaWduYXR1cmVMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBDUENILUFQc2lnKSkgT0YKCQkJCQkJCQkJCUFQLVNpZ25hdHVyZQoKQXZhaWxhYmxlQVAtU3ViY2hhbm5lbExpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UENQQ0gtQVBzdWJDaCkpIE9GCgkJCQkJCQkJCQlBUC1TdWJjaGFubmVsCgpBdmFpbGFibGVNaW5pbXVtU0YtTGlzdFZDQU0gOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UENQQ0gtU0YpKSBPRgoJCQkJCQkJCQkJQXZhaWxhYmxlTWluaW11bVNGLVZDQU0KCkF2YWlsYWJsZU1pbmltdW1TRi1WQ0FNIDo6PQkJCVNFUVVFTkNFIHsKCW1pbmltdW1TcHJlYWRpbmdGYWN0b3IJCQkJTWluaW11bVNwcmVhZGluZ0ZhY3RvciwKCW5mLU1heAkJCQkJCQkJTkYtTWF4LAoJbWF4QXZhaWxhYmxlUENQQ0gtTnVtYmVyCQkJTWF4QXZhaWxhYmxlUENQQ0gtTnVtYmVyLAoJYXZhaWxhYmxlQVAtU2lnbmF0dXJlLVZDQU1MaXN0CQlBdmFpbGFibGVBUC1TaWduYXR1cmUtVkNBTUxpc3QKfQoKQXZhaWxhYmxlU2lnbmF0dXJlcyA6Oj0JCQlCSVQgU1RSSU5HIHsKCQkJCQkJCQkJc2lnbmF0dXJlMTUoMCksCgkJCQkJCQkJCXNpZ25hdHVyZTE0KDEpLAoJCQkJCQkJCQlzaWduYXR1cmUxMygyKSwKCQkJCQkJCQkJc2lnbmF0dXJlMTIoMyksCgkJCQkJCQkJCXNpZ25hdHVyZTExKDQpLAoJCQkJCQkJCQlzaWduYXR1cmUxMCg1KSwKCQkJCQkJCQkJc2lnbmF0dXJlOSg2KSwKCQkJCQkJCQkJc2lnbmF0dXJlOCg3KSwKCQkJCQkJCQkJc2lnbmF0dXJlNyg4KSwKCQkJCQkJCQkJc2lnbmF0dXJlNig5KSwKCQkJCQkJCQkJc2lnbmF0dXJlNSgxMCksCgkJCQkJCQkJCXNpZ25hdHVyZTQoMTEpLAoJCQkJCQkJCQlzaWduYXR1cmUzKDEyKSwKCQkJCQkJCQkJc2lnbmF0dXJlMigxMyksCgkJCQkJCQkJCXNpZ25hdHVyZTEoMTQpLAoJCQkJCQkJCQlzaWduYXR1cmUwKDE1KQoJCQkJCQkJCQl9CSAoU0laRSgxNikpCgpBdmFpbGFibGVTdWJDaGFubmVsTnVtYmVycyA6Oj0JCUJJVCBTVFJJTkcgewoJCQkJCQkJCQkJc3ViQ2gxMSgwKSwKCQkJCQkJCQkJCXN1YkNoMTAoMSksCgkJCQkJCQkJCSAJc3ViQ2g5KDIpLAoJCQkJCQkJCQkgCXN1YkNoOCgzKSwKCQkJCQkJCQkJIAlzdWJDaDcoNCksCgkJCQkJCQkJCSAJc3ViQ2g2KDUpLAoJCQkJCQkJCQkgCXN1YkNoNSg2KSwKCQkJCQkJCQkJIAlzdWJDaDQoNyksCgkJCQkJCQkJCSAJc3ViQ2gzKDgpLAoJCQkJCQkJCQkgCXN1YkNoMig5KSwKCQkJCQkJCQkJIAlzdWJDaDEoMTApLAoJCQkJCQkJCQkgCXN1YkNoMCgxMSkKCQkJCQkJCQkJCX0gCSAoU0laRSgxMikpCgpCRUFDT04tUEwtRXN0IDo6PQkJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQoKQnVyc3RUeXBlIDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdHlwZTEsIHR5cGUyIH0KCi0tIEFjdHVhbCB2YWx1ZSBCbGVyLVRhcmdldCA9IElFIHZhbHVlICogMC4wNQpCbGVyLVRhcmdldCA6Oj0JCQkJCQlJTlRFR0VSICgtNjMuLjApCgpDQ1RyQ0gtUG93ZXJDb250cm9sSW5mbyA6Oj0JCQlTRVFVRU5DRSB7Cgl0ZmNzLUlkZW50aXR5CQkJCQkJVEZDUy1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCn0KCkNDVHJDSC1Qb3dlckNvbnRyb2xJbmZvLXI0IDo6PQkJU0VRVUVOQ0UgewoJdGZjcy1JZGVudGl0eQkJCQkJCVRGQ1MtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mby1yNAp9CgpDQ1RyQ0gtUG93ZXJDb250cm9sSW5mby1yNSA6Oj0JCVNFUVVFTkNFIHsKCXRmY3MtSWRlbnRpdHkJCQkJCQlURkNTLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgl1bC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlVTC1EUENILVBvd2VyQ29udHJvbEluZm8tcjUKfQoKQ0NUckNILVBvd2VyQ29udHJvbEluZm8tcjcgOjo9CQlTRVFVRU5DRSB7Cgl0ZmNzLUlkZW50aXR5CQkJCQkJVEZDUy1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI3Cn0KCkNELUFjY2Vzc1Nsb3RTdWJjaGFubmVsIDo6PQkJCUlOVEVHRVIgKDAuLjExKQoKQ0QtQWNjZXNzU2xvdFN1YmNoYW5uZWxMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBDUENILUNEc3ViQ2gpKSBPRgoJCQkJCQkJCQkJQ0QtQWNjZXNzU2xvdFN1YmNoYW5uZWwKCkNELUNBLUlDSC1DaGFubmVsaXNhdGlvbkNvZGUgOjo9CUlOVEVHRVIgKDAuLjI1NSkKCkNELVByZWFtYmxlU2NyYW1ibGluZ0NvZGUgOjo9CQlJTlRFR0VSICgwLi43OSkKCkNELVNpZ25hdHVyZUNvZGUgOjo9CQkJCUlOVEVHRVIgKDAuLjE1KQoKQ0QtU2lnbmF0dXJlQ29kZUxpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBDUENILUNEc2lnKSkgT0YKCQkJCQkJCQkJCUNELVNpZ25hdHVyZUNvZGUKCkNlbGxBbmRDaGFubmVsSWRlbnRpdHkgOjo9CQkJU0VRVUVOQ0UgewoJLS0gYnVyc3RUeXBlIG1heSBiZSBzZXQgdG8gZWl0aGVyIHZhbHVlIGFuZCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIgZm9yIDEuMjggTWNwcyBUREQuCglidXJzdFR5cGUJCQkJCQkJQnVyc3RUeXBlLAoJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nLAoJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIsCgljZWxsUGFyYW1ldGVyc0lECQkJCQlDZWxsUGFyYW1ldGVyc0lECgl9CgpDZWxsUGFyYW1ldGVyc0lEIDo6PQkJCQlJTlRFR0VSICgwLi4xMjcpCgpDZm50YXJnZXRzZm5mcmFtZW9mZnNldCA6Oj0JCQkJSU5URUdFUigwLi4yNTUpCgpDaGFubmVsQXNzaWdubWVudEFjdGl2ZSA6Oj0JCQlDSE9JQ0UgewoJbm90QWN0aXZlCQkJCQkJCU5VTEwsCglpc0FjdGl2ZQkJCQkJCQlBdmFpbGFibGVNaW5pbXVtU0YtTGlzdFZDQU0KfQoKQ2hhbm5lbGlzYXRpb25Db2RlMjU2IDo6PQkJCUlOVEVHRVIgKDAuLjI1NSkKCkNoYW5uZWxSZXFQYXJhbXNGb3JVQ1NNIDo6PQkJCVNFUVVFTkNFIHsKCWF2YWlsYWJsZUFQLVNpZ25hdHVyZUxpc3QJCQlBdmFpbGFibGVBUC1TaWduYXR1cmVMaXN0LAoJYXZhaWxhYmxlQVAtU3ViY2hhbm5lbExpc3QJCQlBdmFpbGFibGVBUC1TdWJjaGFubmVsTGlzdAkJCU9QVElPTkFMCn0KCkNsb3NlZExvb3BUaW1pbmdBZGpNb2RlIDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJc2xvdDEsIHNsb3QyIH0KCkNvZGVOdW1iZXJEU0NIIDo6PQkJCQkJSU5URUdFUiAoMC4uMjU1KQoKQ29kZVJhbmdlIDo6PQkJCQkJCVNFUVVFTkNFIHsKCXBkc2NoLUNvZGVNYXBMaXN0CQkJCQlQRFNDSC1Db2RlTWFwTGlzdAp9CgpDb2RlV29yZFNldCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWxvbmdDV1MsCgkJCQkJCQkJCQltZWRpdW1DV1MsCgkJCQkJCQkJCQlzaG9ydENXUywKCQkJCQkJCQkJCXNzZHRPZmYgfQoKQ29tbW9uVGltZXNsb3RJbmZvIDo6PQkJCQlTRVFVRU5DRSB7CgktLSBUQUJVTEFSOiBzZWNvbmRJbnRlcmxlYXZpbmdNb2RlIGlzIE1ELCBidXQgc2luY2UgaXQgY2FuIGJlIGVuY29kZWQgaW4gYSBzaW5nbGUKCS0tIGJpdCBpdCBpcyBub3QgZGVmaW5lZCBhcyBPUFRJT05BTC4KCXNlY29uZEludGVybGVhdmluZ01vZGUJCQkJU2Vjb25kSW50ZXJsZWF2aW5nTW9kZSwKCXRmY2ktQ29kaW5nCQkJCQkJCVRGQ0ktQ29kaW5nCQkJCQkJCU9QVElPTkFMLAoJcHVuY3R1cmluZ0xpbWl0CQkJCQkJUHVuY3R1cmluZ0xpbWl0LAoJcmVwZXRpdGlvblBlcmlvZEFuZExlbmd0aAkJCVJlcGV0aXRpb25QZXJpb2RBbmRMZW5ndGgJCQlPUFRJT05BTAp9CgpDb21tb25UaW1lc2xvdEluZm9TQ0NQQ0ggOjo9CQlTRVFVRU5DRSB7CgktLSBUQUJVTEFSOiBzZWNvbmRJbnRlcmxlYXZpbmdNb2RlIGlzIE1ELCBidXQgc2luY2UgaXQgY2FuIGJlIGVuY29kZWQgaW4gYSBzaW5nbGUKCS0tIGJpdCBpdCBpcyBub3QgZGVmaW5lZCBhcyBPUFRJT05BTC4KCXNlY29uZEludGVybGVhdmluZ01vZGUJCQkJU2Vjb25kSW50ZXJsZWF2aW5nTW9kZSwKCXRmY2ktQ29kaW5nCQkJCQkJCVRGQ0ktQ29kaW5nCQkJCQkJCU9QVElPTkFMLAoJcHVuY3R1cmluZ0xpbWl0CQkJCQkJUHVuY3R1cmluZ0xpbWl0LAoJcmVwZXRpdGlvblBlcmlvZExlbmd0aEFuZE9mZnNldAkJUmVwZXRpdGlvblBlcmlvZExlbmd0aEFuZE9mZnNldAkJT1BUSU9OQUwKfQoKQ29uc3RhbnRWYWx1ZSA6Oj0JCQkJCUlOVEVHRVIgKC0zNS4uLTEwKQoKQ29uc3RhbnRWYWx1ZVRkZCA6Oj0JCQkJSU5URUdFUiAoLTM1Li4xMCkKCkNQQ0gtUGVyc2lzdGVuY2VMZXZlbHMgOjo9CQkJU0VRVUVOQ0UgewoJY3BjaC1TZXRJRAkJCQkJCQlDUENILVNldElELAoJZHluYW1pY1BlcnNpc3RlbmNlTGV2ZWxURi1MaXN0CQlEeW5hbWljUGVyc2lzdGVuY2VMZXZlbFRGLUxpc3QJCn0KCkNQQ0gtUGVyc2lzdGVuY2VMZXZlbHNMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENQQ0hzZXRzKSkgT0YKCQkJCQkJCQkJCUNQQ0gtUGVyc2lzdGVuY2VMZXZlbHMKCkNQQ0gtU2V0SW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKCWNwY2gtU2V0SUQJCQkJCQkJQ1BDSC1TZXRJRCwKCXRyYW5zcG9ydEZvcm1hdFNldAkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0LAoJdGZjcwkJCQkJCQkJVEZDUywKCWFwLVByZWFtYmxlU2NyYW1ibGluZ0NvZGUJCQlBUC1QcmVhbWJsZVNjcmFtYmxpbmdDb2RlLAoJYXAtQUlDSC1DaGFubmVsaXNhdGlvbkNvZGUJCQlBUC1BSUNILUNoYW5uZWxpc2F0aW9uQ29kZSwKCWNkLVByZWFtYmxlU2NyYW1ibGluZ0NvZGUJCQlDRC1QcmVhbWJsZVNjcmFtYmxpbmdDb2RlLAoJY2QtQ0EtSUNILUNoYW5uZWxpc2F0aW9uQ29kZQkJQ0QtQ0EtSUNILUNoYW5uZWxpc2F0aW9uQ29kZSwKCWNkLUFjY2Vzc1Nsb3RTdWJjaGFubmVsTGlzdAkJCUNELUFjY2Vzc1Nsb3RTdWJjaGFubmVsTGlzdAkJCU9QVElPTkFMLAoJY2QtU2lnbmF0dXJlQ29kZUxpc3QJCQkJQ0QtU2lnbmF0dXJlQ29kZUxpc3QJCQkJT1BUSU9OQUwsCglkZWx0YVBwLW0JCQkJCQkJRGVsdGFQcC1tLAoJdWwtRFBDQ0gtU2xvdEZvcm1hdAkJCQkJVUwtRFBDQ0gtU2xvdEZvcm1hdCwKCW4tU3RhcnRNZXNzYWdlCQkJCQkJTi1TdGFydE1lc3NhZ2UsCgluLUVPVAkJCQkJCQkJTi1FT1QsCgktLSBUQUJVTEFSOiBWQ0FNIGluZm8gaGFzIGJlZW4gbmVzdGVkIGluc2lkZSBDaGFubmVsQXNzaWdubWVudEFjdGl2ZSwKCS0tIHdoaWNoIGluIHR1cm4gaXMgbWFuZGF0b3J5IHNpbmNlIGl0J3Mgb25seSBhIGJpbmFyeSBjaG9pY2UuCgljaGFubmVsQXNzaWdubWVudEFjdGl2ZQkJCQlDaGFubmVsQXNzaWdubWVudEFjdGl2ZSwKCWNwY2gtU3RhdHVzSW5kaWNhdGlvbk1vZGUJCQlDUENILVN0YXR1c0luZGljYXRpb25Nb2RlLAoJcGNwY2gtQ2hhbm5lbEluZm9MaXN0CQkJCVBDUENILUNoYW5uZWxJbmZvTGlzdAp9CgpDUENILVNldEluZm9MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q1BDSHNldHMpKSBPRgoJCQkJCQkJCQkJQ1BDSC1TZXRJbmZvCgpDUENILVN0YXR1c0luZGljYXRpb25Nb2RlIDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlwYS1tb2RlLAoJCQkJCQkJCQkJcGFtc2YtbW9kZSB9CgpDUUktUmVwZXRpdGlvbkZhY3RvciA6Oj0JCQlJTlRFR0VSKDEuLjQpCgpDU0lDSC1Qb3dlck9mZnNldCA6Oj0JCQkJSU5URUdFUiAoLTEwLi41KQoKLS0gRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVGREQgYW5kIERlZmF1bHREUENILU9mZnNldFZhbHVlVEREIGNvcnJlc3BvbmRzIHRvIAotLSBJRSAiRGVmYXVsdCBEUENIIE9mZnNldCBWYWx1ZSIgZGVwZW5kaW5nIG9uIHRoZSBtb2RlLgotLSBBY3R1YWwgdmFsdWUgRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVGREQgPSBJRSB2YWx1ZSAqIDUxMiAKRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVGREQgOjo9CQlJTlRFR0VSICgwLi41OTkpCgpEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZVRERCA6Oj0JCUlOVEVHRVIgKDAuLjcpCgpEZWx0YVBwLW0gOjo9CQkJCQkJSU5URUdFUiAoLTEwLi4xMCkKCkRlbHRhQ1FJIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjgpCgpEZWx0YU5BQ0sgOjo9CQkJCQkJSU5URUdFUiAoMC4uOCkKCkRlbHRhQUNLIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjgpCgotLSBBY3R1YWwgdmFsdWUgRGVsdGFTSVIgPSBJRSB2YWx1ZSAqIDAuMQpEZWx0YVNJUiA6Oj0JCQkJCQlJTlRFR0VSICgwLi4zMCkKCkRIUy1TeW5jIDo6PQkJCQkJCUlOVEVHRVIgKC0yMC4uMTApCgpETC1DQ1RyQ2ggOjo9CQkJCQkJU0VRVUVOQ0UgewoJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCgl0aW1lSW5mbwkJCQkJCQlUaW1lSW5mbywKCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCQkJCQlPUFRJT05BTCwKCWRsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCURvd25saW5rVGltZXNsb3RzQ29kZXMJCQkJT1BUSU9OQUwsCgl1bC1DQ1RyQ2hUUENMaXN0CQkJCQlVTC1DQ1RyQ2hUUENMaXN0CQkJCQlPUFRJT05BTAkKfQoKREwtQ0NUckNoLXI0IDo6PQkJCQkJU0VRVUVOQ0UgewoJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCgl0aW1lSW5mbwkJCQkJCQlUaW1lSW5mbywKCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCQkJCQlPUFRJT05BTCwKCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgewoJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlkbC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzCU9QVElPTkFMCgkJfSwKCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKCQkJZGwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQJT1BUSU9OQUwKCQl9Cgl9LAoJdWwtQ0NUckNoVFBDTGlzdAkJCQkJVUwtQ0NUckNoVFBDTGlzdAkJT1BUSU9OQUwKfQoKREwtQ0NUckNoLXI3IDo6PQkJCQkJU0VRVUVOQ0UgewoJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCgl0aW1lSW5mbwkJCQkJCQlUaW1lSW5mbywKCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCQkJCQlPUFRJT05BTCwKCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgewoJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlkbC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzCU9QVElPTkFMCgkJfSwKCQl0ZGQ3NjgJCQkJCQkJCVNFUVVFTkNFIHsKCQkJZGwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1WSENSCQlPUFRJT05BTAoJCX0sCgkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCWRsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCURvd25saW5rVGltZXNsb3RzQ29kZXMtTENSLXI0CU9QVElPTkFMCgkJfQoJfSwKCXVsLUNDVHJDaFRQQ0xpc3QJCQkJCVVMLUNDVHJDaFRQQ0xpc3QJCU9QVElPTkFMCn0KCkRMLUNDVHJDaExpc3QgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q0NUckNIKSkgT0YKCQkJCQkJCQkJCURMLUNDVHJDaAoKREwtQ0NUckNoTGlzdC1yNyA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENDVHJDSCkpIE9GCgkJCQkJCQkJCQlETC1DQ1RyQ2gtcjcKCkRMLUNDVHJDaExpc3QtcjQgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgoJCQkJCQkJCQkJREwtQ0NUckNoLXI0CgpETC1DQ1RyQ2hMaXN0VG9SZW1vdmUgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENDVHJDSCkpIE9GCgkJCQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4KCkRMLUNDVHJDaFRQQ0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgwLi5tYXhDQ1RyQ0gpKSBPRgoJCQkJCQkJCQkJCVRGQ1MtSWRlbnRpdHkKCkRMLUNoYW5uZWxpc2F0aW9uQ29kZSA6Oj0JCQlTRVFVRU5DRSB7CglzZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCQlPUFRJT05BTCwKCXNmLUFuZENvZGVOdW1iZXIJCQkJCVNGNTEyLUFuZENvZGVOdW1iZXIsCglzY3JhbWJsaW5nQ29kZUNoYW5nZQkJCQlTY3JhbWJsaW5nQ29kZUNoYW5nZQkJCQlPUFRJT05BTAp9CgpETC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heERQQ0gtRExjaGFuKSkgT0YKCQkJCQkJCQkJCURMLUNoYW5uZWxpc2F0aW9uQ29kZQoKREwtQ29tbW9uSW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgewoJZGwtRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1EUENILUluZm9Db21tb24JCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlkZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZQkJCQlEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZUZERAlPUFRJT05BTCwKCQkJZHBjaC1Db21wcmVzc2VkTW9kZUluZm8JCQkJRFBDSC1Db21wcmVzc2VkTW9kZUluZm8JCU9QVElPTkFMLAoJCQl0eC1EaXZlcnNpdHlNb2RlCQkJCQlUWC1EaXZlcnNpdHlNb2RlCQkJT1BUSU9OQUwsCgkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQkJZHVtbXkJCQkJCQkJCVNTRFQtSW5mb3JtYXRpb24JCQlPUFRJT05BTAoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlkZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZQkJCQlEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZVRERAlPUFRJT05BTAoJCX0KCX0KfQoKREwtQ29tbW9uSW5mb3JtYXRpb24tcjQgOjo9CQkJU0VRVUVOQ0UgewoJZGwtRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1EUENILUluZm9Db21tb24tcjQJCU9QVElPTkFMLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWRlZmF1bHREUENILU9mZnNldFZhbHVlCQkJCURlZmF1bHREUENILU9mZnNldFZhbHVlRkRECU9QVElPTkFMLAoJCQlkcGNoLUNvbXByZXNzZWRNb2RlSW5mbwkJCQlEUENILUNvbXByZXNzZWRNb2RlSW5mbwkJT1BUSU9OQUwsCgkJCXR4LURpdmVyc2l0eU1vZGUJCQkJCVRYLURpdmVyc2l0eU1vZGUJCQlPUFRJT05BTCwKCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCQlkdW1teQkJCQkJCQkJU1NEVC1JbmZvcm1hdGlvbi1yNAkJCU9QVElPTkFMCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgewoJCQkJdGRkMzg0CQkJCQkJCQlOVUxMLAoJCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJdHN0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCgkJCQl9CgkJCX0sCgkJCWRlZmF1bHREUENILU9mZnNldFZhbHVlCQkJCURlZmF1bHREUENILU9mZnNldFZhbHVlVERECU9QVElPTkFMCgkJfQoJfQp9CgoKREwtQ29tbW9uSW5mb3JtYXRpb24tcjUgOjo9CQkJU0VRVUVOQ0UgewoJZGwtRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1EUENILUluZm9Db21tb24tcjQJCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlkZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZQkJCQlEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZUZERAlPUFRJT05BTCwKCQkJZHBjaC1Db21wcmVzc2VkTW9kZUluZm8JCQkJRFBDSC1Db21wcmVzc2VkTW9kZUluZm8JCU9QVElPTkFMLAoJCQl0eC1EaXZlcnNpdHlNb2RlCQkJCQlUWC1EaXZlcnNpdHlNb2RlCQkJT1BUSU9OQUwsCgkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQkJZHVtbXkJCQkJCQkJCVNTRFQtSW5mb3JtYXRpb24tcjQJCQlPUFRJT05BTAoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKCQkJCXRkZDM4NAkJCQkJCQkJTlVMTCwKCQkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCXRzdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgoJCQkJfQoJCQl9LAoJCQlkZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZQkJCQlEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZVRERAlPUFRJT05BTAoJCX0KCX0sCgltYWMtaHNSZXNldEluZGljYXRvcgkJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJT1BUSU9OQUwKfQoKREwtQ29tbW9uSW5mb3JtYXRpb24tcjYgOjo9CQkJU0VRVUVOQ0UgewoJZGwtZHBjaEluZm9Db21tb24JCQkJCUNIT0lDRSB7CgkJZGwtRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1EUENILUluZm9Db21tb24tcjYsCgkJZGwtRkRQQ0gtSW5mb0NvbW1vbgkJCQkJREwtRkRQQ0gtSW5mb0NvbW1vbi1yNgoJfQkJCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWRlZmF1bHREUENILU9mZnNldFZhbHVlCQkJCURlZmF1bHREUENILU9mZnNldFZhbHVlRkRECU9QVElPTkFMLAoJCQlkcGNoLUNvbXByZXNzZWRNb2RlSW5mbwkJCQlEUENILUNvbXByZXNzZWRNb2RlSW5mbwkJT1BUSU9OQUwsCgkJCXR4LURpdmVyc2l0eU1vZGUJCQkJCVRYLURpdmVyc2l0eU1vZGUJCQlPUFRJT05BTAoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKCQkJCXRkZDM4NAkJCQkJCQkJTlVMTCwKCQkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCXRzdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgoJCQkJfQoJCQl9LAoJCQlkZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZQkJCQlEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZVRERAlPUFRJT05BTAoJCX0KCX0sCgltYWMtaHNSZXNldEluZGljYXRvcgkJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJT1BUSU9OQUwsCglwb3N0VmVyaWZpY2F0aW9uUGVyaW9kCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQlPUFRJT05BTAp9CgpETC1Db21tb25JbmZvcm1hdGlvbi1yNyA6Oj0JCQlTRVFVRU5DRSB7CglkbC1kcGNoSW5mb0NvbW1vbgkJCQkJQ0hPSUNFIHsKCQlkbC1EUENILUluZm9Db21tb24JCQkJCURMLURQQ0gtSW5mb0NvbW1vbi1yNiwKCQlkbC1GRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1GRFBDSC1JbmZvQ29tbW9uLXI2Cgl9CQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJZGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWUJCQkJRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVGREQJT1BUSU9OQUwsCgkJCWRwY2gtQ29tcHJlc3NlZE1vZGVJbmZvCQkJCURQQ0gtQ29tcHJlc3NlZE1vZGVJbmZvCQlPUFRJT05BTCwKCQkJdHgtRGl2ZXJzaXR5TW9kZQkJCQkJVFgtRGl2ZXJzaXR5TW9kZQkJCU9QVElPTkFMCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgewoJCQkJdGRkMzg0CQkJCQkJCQlOVUxMLAoJCQkJdGRkNzY4CQkJCQkJCQlOVUxMLAoJCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJdHN0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCgkJCQl9CgkJCX0sCgkJCWRlZmF1bHREUENILU9mZnNldFZhbHVlCQkJCURlZmF1bHREUENILU9mZnNldFZhbHVlVERECU9QVElPTkFMCgkJfQoJfSwKCW1hYy1oc1Jlc2V0SW5kaWNhdG9yCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQlPUFRJT05BTCwKCXBvc3RWZXJpZmljYXRpb25QZXJpb2QJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCU9QVElPTkFMCn0KCkRMLUNvbW1vbkluZm9ybWF0aW9uUG9zdCA6Oj0JCVNFUVVFTkNFIHsKCWRsLURQQ0gtSW5mb0NvbW1vbgkJCQkJREwtRFBDSC1JbmZvQ29tbW9uUG9zdAp9CgpETC1Db21tb25JbmZvcm1hdGlvblByZWRlZiA6Oj0JCVNFUVVFTkNFIHsKCWRsLURQQ0gtSW5mb0NvbW1vbgkJCQkJREwtRFBDSC1JbmZvQ29tbW9uUHJlZGVmCU9QVElPTkFMCn0KCkRMLUNvbXByZXNzZWRNb2RlTWV0aG9kIDo6PQkJCUVOVU1FUkFURUQgewoJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KCQkJCQkJCQkJCWR1bW15LCBzZi0yLAoJCQkJCQkJCQkJaGlnaGVyTGF5ZXJTY2hlZHVsaW5nIH0KCkRMLURQQ0gtSW5mb0NvbW1vbiA6Oj0JCQkJU0VRVUVOQ0UgewoJY2ZuSGFuZGxpbmcJCQkJCQkJQ0hPSUNFIHsKCQltYWludGFpbgkJCQkJCQlOVUxMLAoJCWluaXRpYWxpc2UJCQkJCQkJU0VRVUVOQ0UgewoJCQktLSBJRSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KCQkJLS0gVGhlIElFIHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQKCQkJZHVtbXkJCQkJCQkJCUNmbnRhcmdldHNmbmZyYW1lb2Zmc2V0CQkJCU9QVElPTkFMCgkJfQoJfSwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkIAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlkbC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlETC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlPUFRJT05BTCwKCQkJcG93ZXJPZmZzZXRQaWxvdC1wZHBkY2gJCQkJUG93ZXJPZmZzZXRQaWxvdC1wZHBkY2gsCgkJCWRsLXJhdGUtbWF0Y2hpbmctcmVzdHJpY3Rpb24JCURsLXJhdGUtbWF0Y2hpbmctcmVzdHJpY3Rpb24JCU9QVElPTkFMLAoJCQktLSBUQUJVTEFSOiBUaGUgbnVtYmVyIG9mIHBpbG90IGJpdHMgaXMgbmVzdGVkIGluc2lkZSB0aGUgc3ByZWFkaW5nIGZhY3Rvci4KCQkJc3ByZWFkaW5nRmFjdG9yQW5kUGlsb3QJCQkJU0Y1MTItQW5kUGlsb3QsCgkJCXBvc2l0aW9uRml4ZWRPckZsZXhpYmxlCQkJCVBvc2l0aW9uRml4ZWRPckZsZXhpYmxlLAoJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4KCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJZGwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJREwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJT1BUSU9OQUwKCQl9Cgl9Cn0KCkRMLURQQ0gtSW5mb0NvbW1vbi1yNCA6Oj0JCQlTRVFVRU5DRSB7CgljZm5IYW5kbGluZwkJCQkJCQlDSE9JQ0UgewoJCW1haW50YWluCQkJCQkJCU5VTEwsCgkJaW5pdGlhbGlzZQkJCQkJCQlTRVFVRU5DRSB7CgkJCS0tIElFIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgoJCQktLSBUaGUgSUUgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZAoJCQlkdW1teQkJCQkJCQkJQ2ZudGFyZ2V0c2ZuZnJhbWVvZmZzZXQJCQkJT1BUSU9OQUwKCQl9Cgl9LAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQgCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWRsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCURMLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCU9QVElPTkFMLAoJCQlwb3dlck9mZnNldFBpbG90LXBkcGRjaAkJCQlQb3dlck9mZnNldFBpbG90LXBkcGRjaCwKCQkJZGwtcmF0ZS1tYXRjaGluZy1yZXN0cmljdGlvbgkJRGwtcmF0ZS1tYXRjaGluZy1yZXN0cmljdGlvbgkJT1BUSU9OQUwsCgkJCS0tIFRBQlVMQVI6IFRoZSBudW1iZXIgb2YgcGlsb3QgYml0cyBpcyBuZXN0ZWQgaW5zaWRlIHRoZSBzcHJlYWRpbmcgZmFjdG9yLgoJCQlzcHJlYWRpbmdGYWN0b3JBbmRQaWxvdAkJCQlTRjUxMi1BbmRQaWxvdCwKCQkJcG9zaXRpb25GaXhlZE9yRmxleGlibGUJCQkJUG9zaXRpb25GaXhlZE9yRmxleGlibGUsCgkJCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTgoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlkbC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlETC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlPUFRJT05BTAoJCX0KCX0sCi0tIFRoZSBJRSBtYWMtZC1IRk4taW5pdGlhbC12YWx1ZSBzaG91bGQgYmUgYWJzZW50IGluIHRoZSBSUkNDb25uZWN0aW9uU2V0dXAtcjQtSUVzIG9yIAotLSBSUkNDb25uZWN0aW9uU2V0dXAtcjUtSUVzIG9yIEhhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjQtSUVzIG9yIEhhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjUtSUVzIGFuZAotLSBpZiB0aGUgSUUgaXMgaW5jbHVkZWQsIHRoZSBnZW5lcmFsIGVycm9yIGhhbmRsaW5nIGZvciBjb25kaXRpb25hbCBJRXMgYXBwbGllcy4KCW1hYy1kLUhGTi1pbml0aWFsLXZhbHVlCQkJCU1BQy1kLUhGTi1pbml0aWFsLXZhbHVlCQkJCU9QVElPTkFMCgp9CgpETC1EUENILUluZm9Db21tb24tcjYgOjo9CQkJCVNFUVVFTkNFIHsKCWNmbkhhbmRsaW5nCQkJCQkJCQlDSE9JQ0UgewoJCW1haW50YWluCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXRpbWluZ21haW50YWluZWRzeW5jaGluZAkJCQlUaW1pbmdNYWludGFpbmVkU3luY2hJbmQJCQlPUFRJT05BTAoJCX0sCgkJaW5pdGlhbGlzZQkJCQkJCQkJTlVMTAoJfSwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCQlDSE9JQ0UgewoJCWZkZCAJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWRsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCQlETC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlPUFRJT05BTCwKCQkJcG93ZXJPZmZzZXRQaWxvdC1wZHBkY2gJCQkJCVBvd2VyT2Zmc2V0UGlsb3QtcGRwZGNoLAoJCQlkbC1yYXRlLW1hdGNoaW5nLXJlc3RyaWN0aW9uCQkJRGwtcmF0ZS1tYXRjaGluZy1yZXN0cmljdGlvbgkJT1BUSU9OQUwsCgkJCS0tIFRBQlVMQVI6IFRoZSBudW1iZXIgb2YgcGlsb3QgYml0cyBpcyBuZXN0ZWQgaW5zaWRlIHRoZSBzcHJlYWRpbmcgZmFjdG9yLgoJCQlzcHJlYWRpbmdGYWN0b3JBbmRQaWxvdAkJCQkJU0Y1MTItQW5kUGlsb3QsCgkJCXBvc2l0aW9uRml4ZWRPckZsZXhpYmxlCQkJCQlQb3NpdGlvbkZpeGVkT3JGbGV4aWJsZSwKCQkJdGZjaS1FeGlzdGVuY2UJCQkJCQkJQk9PTEVBTgoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlkbC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlETC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlPUFRJT05BTAoJCX0KCX0sCgktLSBUaGUgSUUgbWFjLWQtSEZOLWluaXRpYWwtdmFsdWUgc2hvdWxkIGJlIGFic2VudCBpbiB0aGUgUlJDQ29ubmVjdGlvblNldHVwIGFuZCB0aGUKCS0tIEhhbmRvdmVyVG9VVFJBTkNvbW1hbmQgbWVzc2FnZXMuIElmIHRoZSBJRSBpcyBpbmNsdWRlZCwgdGhlIGdlbmVyYWwgZXJyb3IgaGFuZGxpbmcKCS0tIGZvciBjb25kaXRpb25hbCBJRXMgYXBwbGllcy4KCW1hYy1kLUhGTi1pbml0aWFsLXZhbHVlCQkJCU1BQy1kLUhGTi1pbml0aWFsLXZhbHVlCQkJCU9QVElPTkFMCn0KCkRMLURQQ0gtSW5mb0NvbW1vblBvc3QgOjo9CQkJU0VRVUVOQ0UgewoJZGwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJREwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJCU9QVElPTkFMCn0KCkRMLURQQ0gtSW5mb0NvbW1vblByZWRlZiA6Oj0JCVNFUVVFTkNFIHsKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQktLSBUQUJVTEFSOiBUaGUgbnVtYmVyIG9mIHBpbG90IGJpdHMgaXMgbmVzdGVkIGluc2lkZSB0aGUgc3ByZWFkaW5nIGZhY3Rvci4KCQkJc3ByZWFkaW5nRmFjdG9yQW5kUGlsb3QJCQkJU0Y1MTItQW5kUGlsb3QsCgkJCXBvc2l0aW9uRml4ZWRPckZsZXhpYmxlCQkJCVBvc2l0aW9uRml4ZWRPckZsZXhpYmxlLAoJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4KCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8KCQl9Cgl9Cn0KCkRMLURQQ0gtSW5mb1BlclJMIDo6PQkJCQlDSE9JQ0UgewoJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCXBDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QJCQlQQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0LAoJCWRwY2gtRnJhbWVPZmZzZXQJCQkJCURQQ0gtRnJhbWVPZmZzZXQsCgkJc2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQkJU2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQlPUFRJT05BTCwKCQlkbC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CQkJREwtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdCwKCQl0cGMtQ29tYmluYXRpb25JbmRleAkJCQlUUEMtQ29tYmluYXRpb25JbmRleCwKCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQlkdW1teQkJCQkJCQkJU1NEVC1DZWxsSWRlbnRpdHkJCQkJT1BUSU9OQUwsCgkJY2xvc2VkTG9vcFRpbWluZ0Fkak1vZGUJCQkJQ2xvc2VkTG9vcFRpbWluZ0Fkak1vZGUJCQlPUFRJT05BTAoJfSwKCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQlkbC1DQ1RyQ2hMaXN0VG9Fc3RhYmxpc2gJCQlETC1DQ1RyQ2hMaXN0CQkJCQlPUFRJT05BTCwKCQlkbC1DQ1RyQ2hMaXN0VG9SZW1vdmUJCQkJREwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJT1BUSU9OQUwKCX0KfQoKREwtRFBDSC1JbmZvUGVyUkwtcjQgOjo9CQkJQ0hPSUNFIHsKCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQlwQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0CQkJUENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdCwKCQlkcGNoLUZyYW1lT2Zmc2V0CQkJCQlEUENILUZyYW1lT2Zmc2V0LAoJCXNlY29uZGFyeUNQSUNILUluZm8JCQkJCVNlY29uZGFyeUNQSUNILUluZm8JCQkJT1BUSU9OQUwsCgkJZGwtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCURMLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QsCgkJdHBjLUNvbWJpbmF0aW9uSW5kZXgJCQkJVFBDLUNvbWJpbmF0aW9uSW5kZXgsCgkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJZHVtbXkJCQkJCQkJCVNTRFQtQ2VsbElkZW50aXR5CQkJCU9QVElPTkFMLAoJCWNsb3NlZExvb3BUaW1pbmdBZGpNb2RlCQkJCUNsb3NlZExvb3BUaW1pbmdBZGpNb2RlCQkJT1BUSU9OQUwKCX0sCgl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJZGwtQ0NUckNoTGlzdFRvRXN0YWJsaXNoCQkJREwtQ0NUckNoTGlzdC1yNAkJCQlPUFRJT05BTCwKCQlkbC1DQ1RyQ2hMaXN0VG9SZW1vdmUJCQkJREwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJT1BUSU9OQUwKCX0KfQoKREwtRFBDSC1JbmZvUGVyUkwtcjUgOjo9CQkJQ0hPSUNFIHsKCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQlwQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0CQkJUENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdCwKCQlkcGNoLUZyYW1lT2Zmc2V0CQkJCQlEUENILUZyYW1lT2Zmc2V0LAoJCXNlY29uZGFyeUNQSUNILUluZm8JCQkJCVNlY29uZGFyeUNQSUNILUluZm8JCQkJT1BUSU9OQUwsCgkJZGwtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCURMLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QsCgkJdHBjLUNvbWJpbmF0aW9uSW5kZXgJCQkJVFBDLUNvbWJpbmF0aW9uSW5kZXgsCgkJcG93ZXJPZmZzZXRUUEMtcGRwZGNoCQkJCVBvd2VyT2Zmc2V0VFBDLXBkcGRjaAkJCU9QVElPTkFMLAoJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCQlTU0RULUNlbGxJZGVudGl0eQkJCQlPUFRJT05BTCwKCQljbG9zZWRMb29wVGltaW5nQWRqTW9kZQkJCQlDbG9zZWRMb29wVGltaW5nQWRqTW9kZQkJCU9QVElPTkFMCgl9LAoJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCWRsLUNDVHJDaExpc3RUb0VzdGFibGlzaAkJCURMLUNDVHJDaExpc3QtcjQJCQkJT1BUSU9OQUwsCgkJZGwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJCURMLUNDVHJDaExpc3RUb1JlbW92ZQkJCU9QVElPTkFMCgl9Cn0KCkRMLURQQ0gtSW5mb1BlclJMLXI2IDo6PQkJCUNIT0lDRSB7CglmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJcENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdAkJCVBDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QsCgkJZHBjaC1GcmFtZU9mZnNldAkJCQkJRFBDSC1GcmFtZU9mZnNldCwKCQlzZWNvbmRhcnlDUElDSC1JbmZvCQkJCQlTZWNvbmRhcnlDUElDSC1JbmZvCQkJCU9QVElPTkFMLAoJCWRsLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQlETC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LAoJCXRwYy1Db21iaW5hdGlvbkluZGV4CQkJCVRQQy1Db21iaW5hdGlvbkluZGV4LAoJCXBvd2VyT2Zmc2V0VFBDLXBkcGRjaAkJCQlQb3dlck9mZnNldFRQQy1wZHBkY2gJCQlPUFRJT05BTCwKCQljbG9zZWRMb29wVGltaW5nQWRqTW9kZQkJCQlDbG9zZWRMb29wVGltaW5nQWRqTW9kZQkJCU9QVElPTkFMCgl9LAoJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCWRsLUNDVHJDaExpc3RUb0VzdGFibGlzaAkJCURMLUNDVHJDaExpc3QtcjQJCQkJT1BUSU9OQUwsCgkJZGwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJCURMLUNDVHJDaExpc3RUb1JlbW92ZQkJCU9QVElPTkFMCgl9Cn0KCkRMLURQQ0gtSW5mb1BlclJMLXI3IDo6PQkJCUNIT0lDRSB7CglmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJcENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdAkJCVBDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QsCgkJZHBjaC1GcmFtZU9mZnNldAkJCQkJRFBDSC1GcmFtZU9mZnNldCwKCQlzZWNvbmRhcnlDUElDSC1JbmZvCQkJCQlTZWNvbmRhcnlDUElDSC1JbmZvCQkJCU9QVElPTkFMLAoJCWRsLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQlETC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LAoJCXRwYy1Db21iaW5hdGlvbkluZGV4CQkJCVRQQy1Db21iaW5hdGlvbkluZGV4LAoJCXBvd2VyT2Zmc2V0VFBDLXBkcGRjaAkJCQlQb3dlck9mZnNldFRQQy1wZHBkY2gJCQlPUFRJT05BTCwKCQljbG9zZWRMb29wVGltaW5nQWRqTW9kZQkJCQlDbG9zZWRMb29wVGltaW5nQWRqTW9kZQkJCU9QVElPTkFMCgl9LAoJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCWRsLUNDVHJDaExpc3RUb0VzdGFibGlzaAkJCURMLUNDVHJDaExpc3QtcjcJCQkJT1BUSU9OQUwsCgkJZGwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJCURMLUNDVHJDaExpc3RUb1JlbW92ZQkJCU9QVElPTkFMCgl9Cn0KCkRMLUZEUENILUluZm9QZXJSTC1yNiA6Oj0JCQlTRVFVRU5DRSB7CglwQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0CQkJUENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdCwKCWZkcGNoLUZyYW1lT2Zmc2V0CQkJCQlEUENILUZyYW1lT2Zmc2V0LAoJc2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQkJU2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQlPUFRJT05BTCwKCXNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJCVNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJT1BUSU9OQUwsCglkbC1DaGFubmVsaXNhdGlvbkNvZGUJCQkJSU5URUdFUiAoMC4uMjU1KSwKCXRwYy1Db21iaW5hdGlvbkluZGV4CQkJCVRQQy1Db21iaW5hdGlvbkluZGV4Cn0KCkRMLURQQ0gtSW5mb1BlclJMLVBvc3RGREQgOjo9CQkJCQkJCQlTRVFVRU5DRSB7CgkJcENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdAkJCQlQQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0LAoJCWRsLUNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJREwtQ2hhbm5lbGlzYXRpb25Db2RlLAoJCXRwYy1Db21iaW5hdGlvbkluZGV4CQkJCQlUUEMtQ29tYmluYXRpb25JbmRleAp9CgpETC1EUENILUluZm9QZXJSTC1Qb3N0VEREIDo6PQkJCQlTRVFVRU5DRSB7CglkbC1EUENILVRpbWVzbG90c0NvZGVzCQkJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcwp9CgpETC1EUENILUluZm9QZXJSTC1Qb3N0VERELUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKCWRsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQKfQoKREwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvIDo6PQkJCVNFUVVFTkNFIHsKCW1vZGVTcGVjaWZpY0luZm8JCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWRwYy1Nb2RlCQkJCQkJCQlEUEMtTW9kZQoJCX0sCgkJdGRkCQkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdHBjLVN0ZXBTaXplVERECQkJCQkJCVRQQy1TdGVwU2l6ZVRERAkJCU9QVElPTkFMCgkJfQoJfQp9CgpETC1GRFBDSC1JbmZvQ29tbW9uLXI2IDo6PQkJCVNFUVVFTkNFIHsKCWNmbkhhbmRsaW5nCQkJCQkJCUNIT0lDRSB7CgkJbWFpbnRhaW4JCQkJCQkJU0VRVUVOQ0UgewoJCQl0aW1pbmdtYWludGFpbmVkc3luY2hpbmQJCQlUaW1pbmdNYWludGFpbmVkU3luY2hJbmQJCQlPUFRJT05BTAoJCX0sCgkJaW5pdGlhbGlzZQkJCQkJCQlOVUxMCgl9LAoJZGwtRkRQQ0gtUG93ZXJDb250cm9sSW5mbwkJCURMLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCU9QVElPTkFMLAotLSBBY3R1YWwgdmFsdWUgZGwtRkRQQ0gtVFBDY29tbWFuZEVycm9yUmF0ZSA9IElFIHZhbHVlICogMC4wMQotLSBkbC1GRFBDSC1UUENjb21tYW5kRXJyb3JSYXRlIHZhbHVlcyAxMS4uMTYgYXJlIHNwYXJlIGFuZCBzaGFsbCBub3QgYmUgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgCi0tIHRoZSBwcm90b2NvbAoJZGwtRkRQQ0gtVFBDY29tbWFuZEVycm9yUmF0ZQkJSU5URUdFUiAoMS4uMTYpCQlPUFRJT05BTAp9CgpETC1GcmFtZVR5cGUgOjo9CQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWRsLUZyYW1lVHlwZUEsIGRsLUZyYW1lVHlwZUIgfQoKREwtSFNQRFNDSC1JbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7Cglocy1zY2NoLUluZm8JCQkJCUhTLVNDQ0gtSW5mbwlPUFRJT05BTCwKCW1lYXN1cmVtZW50LWZlZWRiYWNrLUluZm8JCU1lYXN1cmVtZW50LUZlZWRiYWNrLUluZm8JT1BUSU9OQUwsCgltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7Cgl0ZGQJCQkJCQkJCUNIT0lDRXsKCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKCQkJCWRsLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbglETC1IU1BEU0NILVRTLUNvbmZpZ3VyYXRpb24JICAJT1BUSU9OQUwKCQkJfSwKCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKCQkJCWhzLVBEU0NILU1pZGFtYmxlLUNvbmZpZ3VyYXRpb24tdGRkMTI4CgkJCQkJCUhTLVBEU0NILU1pZGFtYmxlLUNvbmZpZ3VyYXRpb24tVEREMTI4CQkJCU9QVElPTkFMCgkJCX0KCQl9LAoJCWZkZAkJCQkJCQlOVUxMCgl9Cn0KCkRMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYgOjo9CVNFUVVFTkNFIHsKCWhzLXNjY2gtSW5mbwkJCQkJSFMtU0NDSC1JbmZvLXI2CQkJCQkJCU9QVElPTkFMLAoJbWVhc3VyZW1lbnQtZmVlZGJhY2stSW5mbwkJTWVhc3VyZW1lbnQtRmVlZGJhY2stSW5mbwkJCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKCQl0ZGQJCQkJCQkJCUNIT0lDRSB7CgkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CgkJCQlkbC1IU1BEU0NILVRTLUNvbmZpZ3VyYXRpb24JCURMLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbglPUFRJT05BTAoJCQl9LAoJCQl0ZGQxMjgJCQkJCQkJU0VRVUVOQ0UgewoJCQkJaHMtUERTQ0gtTWlkYW1ibGUtQ29uZmlndXJhdGlvbi10ZGQxMjgKCQkJCQkJSFMtUERTQ0gtTWlkYW1ibGUtQ29uZmlndXJhdGlvbi1UREQxMjgJCQkJT1BUSU9OQUwKCQkJfQoJCX0sCgkJZmRkCQkJCQkJCU5VTEwKCX0KfQoKREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNyA6Oj0JU0VRVUVOQ0UgewoJaHMtc2NjaC1JbmZvCQkJCQlIUy1TQ0NILUluZm8tcjcJCQkJCQkJT1BUSU9OQUwsCgltZWFzdXJlbWVudC1mZWVkYmFjay1JbmZvCQlNZWFzdXJlbWVudC1GZWVkYmFjay1JbmZvCQkJCU9QVElPTkFMLAoJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCXRkZAkJCQkJCQkJQ0hPSUNFIHsKCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKCQkJCWRsLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbgkJREwtSFNQRFNDSC1UUy1Db25maWd1cmF0aW9uCU9QVElPTkFMCgkJCX0sCgkJCXRkZDc2OAkJCQkJCQlTRVFVRU5DRSB7CgkJCQlkbC1IU1BEU0NILVRTLUNvbmZpZ3VyYXRpb24JCURMLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbi1WSENSCU9QVElPTkFMCgkJCX0sCgkJCXRkZDEyOAkJCQkJCQlTRVFVRU5DRSB7CgkJCQlocy1QRFNDSC1NaWRhbWJsZS1Db25maWd1cmF0aW9uLXRkZDEyOAoJCQkJCQlIUy1QRFNDSC1NaWRhbWJsZS1Db25maWd1cmF0aW9uLVRERDEyOAkJCQkJCU9QVElPTkFMCgkJCX0KCQl9LAoJCWZkZAkJCQkJCQlOVUxMCgl9Cn0KCi0tIFRoZSBJRSAnREwtSFNQRFNDSC1UUy1Db25maWd1cmF0aW9uJyBhcHBsaWVzIHRvIHRkZC0zODQgUkVMLTUgb253YXJkCkRMLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbiA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUy0xKSkgT0YKCQkJCQkJCQkJCVNFUVVFTkNFIHsKCXRpbWVzbG90CQkJCQkJCQlUaW1lc2xvdE51bWJlciwKCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1ETAp9CgotLSBUaGUgSUUgJ0RMLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbi1WSENSJyBhcHBsaWVzIHRvIHRkZC03NjggUkVMLTcgb253YXJkCkRMLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbi1WSENSIDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtMSkpIE9GCgkJCQkJCQkJCQlTRVFVRU5DRSB7Cgl0aW1lc2xvdAkJCQkJCQkJVGltZXNsb3ROdW1iZXIsCgltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtREwtVkhDUgp9CgpETC1JbmZvcm1hdGlvblBlclJMIDo6PQkJCQlTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAoJCQktLSBkdW1teTEgYW5kIGR1bW15IDIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAoJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQkJZHVtbXkxCQkJCQkJCQlQRFNDSC1TSE8tRENILUluZm8JCQlPUFRJT05BTCwKCQkJZHVtbXkyCQkJCQkJCQlQRFNDSC1Db2RlTWFwcGluZwkJCU9QVElPTkFMCgkJfSwKCQl0ZGQJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mbwoJfSwKCWRsLURQQ0gtSW5mb1BlclJMCQkJCQlETC1EUENILUluZm9QZXJSTAkJCQkJT1BUSU9OQUwsCgktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJZHVtbXkJCQkJCQkJCVNDQ1BDSC1JbmZvRm9yRkFDSAkJCQkJT1BUSU9OQUwKfQoKREwtSW5mb3JtYXRpb25QZXJSTC1yNCA6Oj0JCQlTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAoJCQktLSBkdW1teTEgYW5kIGR1bW15IDIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAoJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQkJZHVtbXkxCQkJCQkJCQlQRFNDSC1TSE8tRENILUluZm8JCQlPUFRJT05BTCwKCQkJZHVtbXkyCQkJCQkJCQlQRFNDSC1Db2RlTWFwcGluZwkJCU9QVElPTkFMCgkJfSwKCQl0ZGQJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1yNAoJfSwKCWRsLURQQ0gtSW5mb1BlclJMCQkJCQlETC1EUENILUluZm9QZXJSTC1yNAkJCQlPUFRJT05BTCwKCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCglkdW1teQkJCQkJCQkJU0NDUENILUluZm9Gb3JGQUNILXI0CQkJCU9QVElPTkFMLAoJY2VsbC1pZAkJCQkJCQkJQ2VsbElkZW50aXR5CQkJCQkJT1BUSU9OQUwKfQoKREwtSW5mb3JtYXRpb25QZXJSTC1yNSA6Oj0JCQlTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAoJCQktLSBkdW1teTEgYW5kIGR1bW15IDIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAoJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQkJZHVtbXkxCQkJCQkJCQlQRFNDSC1TSE8tRENILUluZm8JCQlPUFRJT05BTCwKCQkJZHVtbXkyCQkJCQkJCQlQRFNDSC1Db2RlTWFwcGluZwkJCU9QVElPTkFMLAoJCQlzZXJ2aW5nSFNEU0NILVJMLWluZGljYXRvcgkJCUJPT0xFQU4KCQl9LAoJCXRkZAkJCQkJCQkJCVByaW1hcnlDQ1BDSC1JbmZvLXI0Cgl9LAoJZGwtRFBDSC1JbmZvUGVyUkwJCQkJCURMLURQQ0gtSW5mb1BlclJMLXI1CQkJCU9QVElPTkFMLAoJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCWR1bW15CQkJCQkJCQlTQ0NQQ0gtSW5mb0ZvckZBQ0gtcjQJCQkJT1BUSU9OQUwsCgljZWxsLWlkCQkJCQkJCQlDZWxsSWRlbnRpdHkJCQkJCQlPUFRJT05BTAp9CgpETC1JbmZvcm1hdGlvblBlclJMLXI1YmlzIDo6PQkJU0VRVUVOQ0UgewoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKCQkJLS0gZHVtbXkxIGFuZCBkdW1teSAyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgdGhleSBzaG91bGQKCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCgkJCWR1bW15MQkJCQkJCQkJUERTQ0gtU0hPLURDSC1JbmZvCQkJT1BUSU9OQUwsCgkJCWR1bW15MgkJCQkJCQkJUERTQ0gtQ29kZU1hcHBpbmcJCQlPUFRJT05BTAoJCX0sCgkJdGRkCQkJCQkJCQkJUHJpbWFyeUNDUENILUluZm8tcjQKCX0sCglkbC1EUENILUluZm9QZXJSTAkJCQkJREwtRFBDSC1JbmZvUGVyUkwtcjUJCQkJT1BUSU9OQUwsCgktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJZHVtbXkJCQkJCQkJCVNDQ1BDSC1JbmZvRm9yRkFDSC1yNAkJCQlPUFRJT05BTCwKCWNlbGwtaWQJCQkJCQkJCUNlbGxJZGVudGl0eQkJCQkJCU9QVElPTkFMCn0KCkRMLUluZm9ybWF0aW9uUGVyUkwtcjYgOjo9CQkJU0VRVUVOQ0UgewoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKCQkJc2VydmluZ0hTRFNDSC1STC1pbmRpY2F0b3IJCQlCT09MRUFOLAoJCQlzZXJ2aW5nRURDSC1STC1pbmRpY2F0b3IJCQlCT09MRUFOCgkJfSwKCQl0ZGQJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1yNAoJfSwKCWRsLWRwY2hJbmZvCQkJCQkJCUNIT0lDRSB7CgkJZGwtRFBDSC1JbmZvUGVyUkwJCQkJCURMLURQQ0gtSW5mb1BlclJMLXI2LAoJCWRsLUZEUENILUluZm9QZXJSTAkJCQkJREwtRkRQQ0gtSW5mb1BlclJMLXI2Cgl9CQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCgllLUFHQ0gtSW5mb3JtYXRpb24JCQkJCUUtQUdDSC1JbmZvcm1hdGlvbgkJCQkJT1BUSU9OQUwsCgllLUhJQ0gtSW5mbwkJCQkJCQlDSE9JQ0UJewoJCWUtSElDSC1JbmZvcm1hdGlvbgkJCQkJRS1ISUNILUluZm9ybWF0aW9uLAoJCXJlbGVhc2VJbmRpY2F0b3IJCQkJCU5VTEwKCX0JT1BUSU9OQUwsCgllLVJHQ0gtSW5mbwkJCQkJCQlDSE9JQ0UJewoJCWUtUkdDSC1JbmZvcm1hdGlvbgkJCQkJRS1SR0NILUluZm9ybWF0aW9uLAoJCXJlbGVhc2VJbmRpY2F0b3IJCQkJCU5VTEwKCX0JT1BUSU9OQUwsCgljZWxsLWlkCQkJCQkJCQlDZWxsSWRlbnRpdHkJCQkJCQlPUFRJT05BTAp9CgpETC1JbmZvcm1hdGlvblBlclJMLXI3IDo6PQkJCVNFUVVFTkNFIHsKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCgkJCXNlcnZpbmdIU0RTQ0gtUkwtaW5kaWNhdG9yCQkJQk9PTEVBTiwKCQkJc2VydmluZ0VEQ0gtUkwtaW5kaWNhdG9yCQkJQk9PTEVBTgoJCX0sCgkJdGRkCQkJCQkJCQkJUHJpbWFyeUNDUENILUluZm8tcjcKCX0sCglkbC1kcGNoSW5mbwkJCQkJCQlDSE9JQ0UgewoJCWRsLURQQ0gtSW5mb1BlclJMCQkJCQlETC1EUENILUluZm9QZXJSTC1yNywKCQlkbC1GRFBDSC1JbmZvUGVyUkwJCQkJCURMLUZEUENILUluZm9QZXJSTC1yNgoJfQkJCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAoJZS1BR0NILUluZm9ybWF0aW9uCQkJCQlFLUFHQ0gtSW5mb3JtYXRpb24JCQkJCU9QVElPTkFMLAoJZS1ISUNILUluZm8JCQkJCQkJQ0hPSUNFCXsKCQllLUhJQ0gtSW5mb3JtYXRpb24JCQkJCUUtSElDSC1JbmZvcm1hdGlvbiwKCQlyZWxlYXNlSW5kaWNhdG9yCQkJCQlOVUxMCgl9CU9QVElPTkFMLAoJZS1SR0NILUluZm8JCQkJCQkJQ0hPSUNFCXsKCQllLVJHQ0gtSW5mb3JtYXRpb24JCQkJCUUtUkdDSC1JbmZvcm1hdGlvbiwKCQlyZWxlYXNlSW5kaWNhdG9yCQkJCQlOVUxMCgl9CU9QVElPTkFMLAoJY2VsbC1pZAkJCQkJCQkJQ2VsbElkZW50aXR5CQkJCQkJT1BUSU9OQUwKfQoKREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKCQkJCQkJCQkJCURMLUluZm9ybWF0aW9uUGVyUkwKCkRMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTCkpIE9GCgkJCQkJCQkJCQlETC1JbmZvcm1hdGlvblBlclJMLXI0CgpETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjUgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgoJCQkJCQkJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1yNQoKREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI2IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKCQkJCQkJCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtcjYKCkRMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNWJpcyA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTCkpIE9GCgkJCQkJCQkJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1yNWJpcwoKREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI3IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKCQkJCQkJCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtcjcKCkRMLUluZm9ybWF0aW9uUGVyUkwtTGlzdFBvc3RGREQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTCkpIE9GCgkJCQkJCQkJCQlETC1JbmZvcm1hdGlvblBlclJMLVBvc3RGREQKCkRMLUluZm9ybWF0aW9uUGVyUkwtUG9zdEZERCA6Oj0JCVNFUVVFTkNFIHsKCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAoJZGwtRFBDSC1JbmZvUGVyUkwJCQkJCURMLURQQ0gtSW5mb1BlclJMLVBvc3RGREQKfQoKREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0VEREIDo6PQkJU0VRVUVOQ0UgewoJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvUG9zdCwKCWRsLURQQ0gtSW5mb1BlclJMCQkJCQlETC1EUENILUluZm9QZXJSTC1Qb3N0VERECn0KCkRMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERC1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKCXByaW1hcnlDQ1BDSC1JbmZvCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mb1Bvc3RUREQtTENSLXI0LAoJZGwtRFBDSC1JbmZvUGVyUkwJCQkJCURMLURQQ0gtSW5mb1BlclJMLVBvc3RUREQtTENSLXI0Cn0KCkRMLVBEU0NILUluZm9ybWF0aW9uIDo6PQkJCVNFUVVFTkNFIHsKCS0tIGR1bW15MSBhbmQgZHVtbXkgMiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJZHVtbXkxCQkJCQkJCQlQRFNDSC1TSE8tRENILUluZm8JCQkJCU9QVElPTkFMLAoJZHVtbXkyCQkJCQkJCQlQRFNDSC1Db2RlTWFwcGluZwkJCQkJT1BUSU9OQUwKfQoKRGwtcmF0ZS1tYXRjaGluZy1yZXN0cmljdGlvbiA6Oj0JU0VRVUVOQ0UgewoJcmVzdHJpY3RlZFRyQ0gtSW5mb0xpc3QJCQkJUmVzdHJpY3RlZFRyQ0gtSW5mb0xpc3QJCQkJT1BUSU9OQUwKfQoKREwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwgOjo9CQlTRVFVRU5DRSB7CgkJcG93ZXJPZmZzZXRUUEMtcGRwZGNoCQkJCVBvd2VyT2Zmc2V0VFBDLXBkcGRjaAkJCU9QVElPTkFMCn0KCi0tIE5PVEU6IFRoZSByYWRpbyBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGxpc3QgaGF2ZSBhIG9uZS10by1vbmUgbWFwcGluZyB3aXRoIHRoZSAKLS0gcmFkaW8gbGlua3MgaW4gdGhlIG1lc3NhZ2UuCkRMLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTCkpIE9GCgkJCQkJCQkJCQlETC1UUEMtUG93ZXJPZmZzZXRQZXJSTAoKREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlIDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQljYzE2LTEsIGNjMTYtMiwgY2MxNi0zLCBjYzE2LTQsCgkJCQkJCQkJCQljYzE2LTUsIGNjMTYtNiwgY2MxNi03LCBjYzE2LTgsCgkJCQkJCQkJCQljYzE2LTksIGNjMTYtMTAsIGNjMTYtMTEsIGNjMTYtMTIsCgkJCQkJCQkJCQljYzE2LTEzLCBjYzE2LTE0LCBjYzE2LTE1LCBjYzE2LTE2IH0KCkRMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZS1WSENSIDo6PQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWNjMzItMSwgY2MzMi0yLCBjYzMyLTMsIGNjMzItNCwKCQkJCQkJCQkJCWNjMTMyLTUsIGNjMzItNiwgY2MzMi03LCBjYzMyLTgsCgkJCQkJCQkJCQljYzMyLTksIGNjMzItMTAsIGNjMzItMTEsIGNjMzItMTIsCgkJCQkJCQkJCQljYzMyLTEzLCBjYzMyLTE0LCBjYzMyLTE1LCBjYzMyLTE2LAoJCQkJCQkJCQkJY2MzMi0xNywgY2MzMi0xOCwgY2MzMi0xOSwgY2MzMi0yMCwKCQkJCQkJCQkJCWNjMzItMjEsIGNjMzItMjIsIGNjMzItMjMsIGNjMzItMjQsCgkJCQkJCQkJCQljYzMyLTI1LCBjYzMyLTI2LCBjYzMyLTI3LCBjYzMyLTI4LAoJCQkJCQkJCQkJY2MzMi0yOSwgY2MzMi0zMCwgY2MzMi0zMSwgY2MzMi0zMiB9CgpETC1UUy1DaGFubmVsaXNhdGlvbkNvZGVzU2hvcnQgOjo9CVNFUVVFTkNFIHsKCWNvZGVzUmVwcmVzZW50YXRpb24JCQkJCUNIT0lDRSB7CgkJY29uc2VjdXRpdmUJCQkJCQkJU0VRVUVOQ0UgewoJCQlmaXJzdENoYW5uZWxpc2F0aW9uQ29kZQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUsCgkJCWxhc3RDaGFubmVsaXNhdGlvbkNvZGUJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlCgkJfSwKCQliaXRtYXAJCQkJCQkJCUJJVCBTVFJJTkcgewoJCQkJCQkJCQkJCQljaENvZGUxNi1TRjE2KDApLAoJCQkJCQkJCQkJCQljaENvZGUxNS1TRjE2KDEpLAoJCQkJCQkJCQkJCQljaENvZGUxNC1TRjE2KDIpLAoJCQkJCQkJCQkJCQljaENvZGUxMy1TRjE2KDMpLAoJCQkJCQkJCQkJCQljaENvZGUxMi1TRjE2KDQpLAoJCQkJCQkJCQkJCQljaENvZGUxMS1TRjE2KDUpLAoJCQkJCQkJCQkJCQljaENvZGUxMC1TRjE2KDYpLAoJCQkJCQkJCQkJCQljaENvZGU5LVNGMTYoNyksCgkJCQkJCQkJCQkJCWNoQ29kZTgtU0YxNig4KSwKCQkJCQkJCQkJCQkJY2hDb2RlNy1TRjE2KDkpLAoJCQkJCQkJCQkJCQljaENvZGU2LVNGMTYoMTApLAoJCQkJCQkJCQkJCQljaENvZGU1LVNGMTYoMTEpLAoJCQkJCQkJCQkJCQljaENvZGU0LVNGMTYoMTIpLAoJCQkJCQkJCQkJCQljaENvZGUzLVNGMTYoMTMpLAoJCQkJCQkJCQkJCQljaENvZGUyLVNGMTYoMTQpLAoJCQkJCQkJCQkJCQljaENvZGUxLVNGMTYoMTUpCgkJCQkJCQkJCQkJCX0gCShTSVpFICgxNikpCgl9Cn0KCkRMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydC1WSENSIDo6PQlTRVFVRU5DRSB7Cgljb2Rlc1JlcHJlc2VudGF0aW9uCQkJCQlDSE9JQ0UgewoJCWNvbnNlY3V0aXZlCQkJCQkJCVNFUVVFTkNFIHsKCQkJZmlyc3RDaGFubmVsaXNhdGlvbkNvZGUJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLVZIQ1IsCgkJCWxhc3RDaGFubmVsaXNhdGlvbkNvZGUJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLVZIQ1IKCQl9LAoJCWJpdG1hcAkJCQkJCQkJQklUIFNUUklORyB7CgkJCQkJCQkJCQkJCWNoQ29kZTMyLVNGMzIoMCksCgkJCQkJCQkJCQkJCWNoQ29kZTMxLVNGMzIoMSksCgkJCQkJCQkJCQkJCWNoQ29kZTMwLVNGMzIoMiksCgkJCQkJCQkJCQkJCWNoQ29kZTI5LVNGMzIoMyksCgkJCQkJCQkJCQkJCWNoQ29kZTI4LVNGMzIoNCksCgkJCQkJCQkJCQkJCWNoQ29kZTI3LVNGMzIoNSksCgkJCQkJCQkJCQkJCWNoQ29kZTI2LVNGMzIoNiksCgkJCQkJCQkJCQkJCWNoQ29kZTI1LVNGMzIoNyksCgkJCQkJCQkJCQkJCWNoQ29kZTI0LVNGMzIoOCksCgkJCQkJCQkJCQkJCWNoQ29kZTIzLVNGMzIoOSksCgkJCQkJCQkJCQkJCWNoQ29kZTIyLVNGMzIoMTApLAoJCQkJCQkJCQkJCQljaENvZGUyMS1TRjMyKDExKSwKCQkJCQkJCQkJCQkJY2hDb2RlMjAtU0YzMigxMiksCgkJCQkJCQkJCQkJCWNoQ29kZTE5LVNGMzIoMTMpLAoJCQkJCQkJCQkJCQljaENvZGUxOC1TRjMyKDE0KSwKCQkJCQkJCQkJCQkJY2hDb2RlMTctU0YzMigxNSksCgkJCQkJCQkJCQkJCWNoQ29kZTE2LVNGMzIoMTYpLAoJCQkJCQkJCQkJCQljaENvZGUxNS1TRjMyKDE3KSwKCQkJCQkJCQkJCQkJY2hDb2RlMTQtU0YzMigxOCksCgkJCQkJCQkJCQkJCWNoQ29kZTEzLVNGMzIoMTkpLAoJCQkJCQkJCQkJCQljaENvZGUxMi1TRjMyKDIwKSwKCQkJCQkJCQkJCQkJY2hDb2RlMTEtU0YzMigyMSksCgkJCQkJCQkJCQkJCWNoQ29kZTEwLVNGMzIoMjIpLAoJCQkJCQkJCQkJCQljaENvZGU5LVNGMzIoMjMpLAoJCQkJCQkJCQkJCQljaENvZGU4LVNGMzIoMjQpLAoJCQkJCQkJCQkJCQljaENvZGU3LVNGMzIoMjUpLAoJCQkJCQkJCQkJCQljaENvZGU2LVNGMzIoMjYpLAoJCQkJCQkJCQkJCQljaENvZGU1LVNGMzIoMjcpLAoJCQkJCQkJCQkJCQljaENvZGU0LVNGMzIoMjgpLAoJCQkJCQkJCQkJCQljaENvZGUzLVNGMzIoMjkpLAoJCQkJCQkJCQkJCQljaENvZGUyLVNGMzIoMzApLAoJCQkJCQkJCQkJCQljaENvZGUxLVNGMzIoMzEpCgkJCQkJCQkJCQkJCX0gCShTSVpFICgzMikpCgl9Cn0KCkRvd25saW5rQWRkaXRpb25hbFRpbWVzbG90cyA6Oj0JCVNFUVVFTkNFIHsKCXBhcmFtZXRlcnMJCQkJCQkJQ0hPSUNFIHsKCQlzYW1lQXNMYXN0CQkJCQkJCVNFUVVFTkNFIHsKCQkJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlcgoJCX0sCgkJbmV3UGFyYW1ldGVycwkJCQkJCVNFUVVFTkNFIHsKCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLAoJCQlkbC1UUy1DaGFubmVsaXNhdGlvbkNvZGVzU2hvcnQJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydAoJCX0KCX0KfQoKRG93bmxpbmtBZGRpdGlvbmFsVGltZXNsb3RzLVZIQ1IgOjo9IFNFUVVFTkNFIHsKCXBhcmFtZXRlcnMJCQkJCQkJQ0hPSUNFIHsKCQlzYW1lQXNMYXN0CQkJCQkJCVNFUVVFTkNFIHsKCQkJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlcgoJCX0sCgkJbmV3UGFyYW1ldGVycwkJCQkJCVNFUVVFTkNFIHsKCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLVZIQ1IsCgkJCWRsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydAkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0LVZIQ1IKCQl9Cgl9Cn0KCkRvd25saW5rQWRkaXRpb25hbFRpbWVzbG90cy1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKCXBhcmFtZXRlcnMJCQkJCQkJQ0hPSUNFIHsKCQlzYW1lQXNMYXN0CQkJCQkJCVNFUVVFTkNFIHsKCQkJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlci1MQ1ItcjQKCQl9LAoJCW5ld1BhcmFtZXRlcnMJCQkJCQlTRVFVRU5DRSB7CgkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mby1MQ1ItcjQsCgkJCWRsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydAkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0CgkJfQoJfQp9CgpEb3dubGlua1RpbWVzbG90c0NvZGVzIDo6PQkJU0VRVUVOQ0UgewoJZmlyc3RJbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mbywKCWRsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydAkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0LAoJbW9yZVRpbWVzbG90cwkJCQkJCUNIT0lDRSB7CgkJbm9Nb3JlCQkJCQkJCQlOVUxMLAoJCWFkZGl0aW9uYWxUaW1lc2xvdHMJCQkJCUNIT0lDRSB7CgkJCWNvbnNlY3V0aXZlCQkJCQkJCUlOVEVHRVIgKDEuLm1heFRTLTEpLAoJCQl0aW1lc2xvdExpc3QJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtMSkpIE9GCgkJCQkJCQkJCQkJCQlEb3dubGlua0FkZGl0aW9uYWxUaW1lc2xvdHMKCQl9Cgl9Cn0KCkRvd25saW5rVGltZXNsb3RzQ29kZXMtVkhDUiA6Oj0JCVNFUVVFTkNFIHsKCWZpcnN0SW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tVkhDUiwKCWRsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydAkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0LAoJbW9yZVRpbWVzbG90cwkJCQkJCUNIT0lDRSB7CgkJbm9Nb3JlCQkJCQkJCQlOVUxMLAoJCWFkZGl0aW9uYWxUaW1lc2xvdHMJCQkJCUNIT0lDRSB7CgkJCWNvbnNlY3V0aXZlCQkJCQkJCUlOVEVHRVIgKDEuLm1heFRTLTEpLAoJCQl0aW1lc2xvdExpc3QJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtMSkpIE9GCgkJCQkJCQkJCQkJCQlEb3dubGlua0FkZGl0aW9uYWxUaW1lc2xvdHMtVkhDUgoJCX0KCX0KfQoKRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKCWZpcnN0SW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0LAoJZGwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0CQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGVzU2hvcnQsCgltb3JlVGltZXNsb3RzCQkJCQkJQ0hPSUNFIHsKCQlub01vcmUJCQkJCQkJCU5VTEwsCgkJYWRkaXRpb25hbFRpbWVzbG90cwkJCQkJQ0hPSUNFIHsKCQkJY29uc2VjdXRpdmUJCQkJCQkJSU5URUdFUiAoMS4ubWF4VFMtTENSLTEpLAoJCQl0aW1lc2xvdExpc3QJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtTENSLTEpKSBPRgoJCQkJCQkJCQkJCQkJRG93bmxpbmtBZGRpdGlvbmFsVGltZXNsb3RzLUxDUi1yNAoJCX0KCX0KfQoKRFBDLU1vZGUgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlzaW5nbGVUUEMsCgkJCQkJCQkJCQl0cGNUcmlwbGV0SW5Tb2Z0IH0JCgotLSBBY3R1YWwgdmFsdWUgRFBDQ0gtUG93ZXJPZmZzZXQgPSBJRSB2YWx1ZSAqIDIKRFBDQ0gtUG93ZXJPZmZzZXQgOjo9CQkJCUlOVEVHRVIgKC04Mi4uLTMpCgotLSBBY3R1YWwgdmFsdWUgRFBDQ0gtUG93ZXJPZmZzZXQyID0gMiArIChJRSB2YWx1ZSAqIDQpCkRQQ0NILVBvd2VyT2Zmc2V0MiA6Oj0JCQkJSU5URUdFUiAoLTI4Li4tMTMpCgpEUENILUNvbXByZXNzZWRNb2RlSW5mbyA6Oj0JCQlTRVFVRU5DRSB7Cgl0Z3AtU2VxdWVuY2VMaXN0CQkJCQlUR1AtU2VxdWVuY2VMaXN0Cn0KCkRQQ0gtQ29tcHJlc3NlZE1vZGVTdGF0dXNJbmZvIDo6PQlTRVFVRU5DRSB7Cgl0Z3BzLVJlY29uZmlndXJhdGlvbi1DRk4JCQlUR1BTLVJlY29uZmlndXJhdGlvbi1DRk4sCgl0Z3AtU2VxdWVuY2VTaG9ydExpc3QJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUR1BTKSkgT0YKCQkJCQkJCQkJCQlUR1AtU2VxdWVuY2VTaG9ydAp9CgotLSBBY3R1YWwgdmFsdWUgRFBDSC1GcmFtZU9mZnNldCA9IElFIHZhbHVlICogMjU2CkRQQ0gtRnJhbWVPZmZzZXQ6Oj0JCQkJCUlOVEVHRVIgKDAuLjE0OSkKCkRTQ0gtTWFwcGluZyA6Oj0JCQkJCVNFUVVFTkNFIHsKCW1heFRGQ0ktRmllbGQyVmFsdWUJCQkJCU1heFRGQ0ktRmllbGQyVmFsdWUsCglzcHJlYWRpbmdGYWN0b3IJCQkJCQlTRi1QRFNDSCwKCWNvZGVOdW1iZXIJCQkJCQkJQ29kZU51bWJlckRTQ0gsCgltdWx0aUNvZGVJbmZvCQkJCQkJTXVsdGlDb2RlSW5mbwp9CgpEU0NILU1hcHBpbmdMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UERTQ0gtVEZDSWdyb3VwcykpIE9GCgkJCQkJCQkJCQlEU0NILU1hcHBpbmcKCkRTQ0gtUmFkaW9MaW5rSWRlbnRpZmllciA6Oj0JCUlOVEVHRVIgKDAuLjUxMSkKCkRTQ0gtVHJhbnNwb3J0Q2hhbm5lbHNJbmZvIDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgoJCQkJCQkJCQkJU0VRVUVOQ0UgewoJZHNjaC10cmFuc3BvcnQtY2hhbm5lbC1pZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKCWRzY2gtVEZTCQkJCQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQKfQpEdXJhdGlvblRpbWVJbmZvIDo6PQkJCQlJTlRFR0VSICgxLi40MDk2KQoKRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWwgOjo9CQkJSU5URUdFUiAoMS4uOCkKCkR5bmFtaWNQZXJzaXN0ZW5jZUxldmVsTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQUkFDSCkpIE9GCgkJCQkJCQkJCQlEeW5hbWljUGVyc2lzdGVuY2VMZXZlbAoKRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWxURi1MaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEYtQ1BDSCkpIE9GCgkJCQkJCQkJCQlEeW5hbWljUGVyc2lzdGVuY2VMZXZlbAoKRHluYW1pY1RGSW5mb3JtYXRpb25DQ0NIIDo6PQkJU0VRVUVOQ0UgewoJb2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTIJCQlPY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMgp9CgpFLUFHQ0gtQ2hhbm5lbGlzYXRpb25Db2RlIDo6PQkJSU5URUdFUiAoMC4uMjU1KQoKRS1BR0NILUluZm9ybWF0aW9uIDo6PQkJCQlTRVFVRU5DRSB7CgllLUFHQ0gtQ2hhbm5lbGlzYXRpb25Db2RlCQkJRS1BR0NILUNoYW5uZWxpc2F0aW9uQ29kZQp9CgpFLURDSC1NaW5pbXVtU2V0LUUtVEZDSSA6Oj0JCQlJTlRFR0VSICgwLi4xMjcpCgpFLURDSC1SZWNvbmZpZ3VyYXRpb25JbmZvIDo6PQlTRVFVRU5DRSB7CgllLURDSC1STC1JbmZvTmV3U2VydmluZ0NlbGwJCQlFLURDSC1STC1JbmZvTmV3U2VydmluZ0NlbGwJCQkJT1BUSU9OQUwsCgllLURDSC1STC1JbmZvT3RoZXJDZWxsTGlzdAkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhFRENIUkwpKSBPRgoJCQkJCQkJCQkJCUUtRENILVJMLUluZm9PdGhlckNlbGwJCQkJT1BUSU9OQUwKfQoKRS1EQ0gtUkwtSW5mb05ld1NlcnZpbmdDZWxsIDo6PQkJU0VRVUVOQ0UgewoJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAoJZS1BR0NILUluZm9ybWF0aW9uCQkJCQlFLUFHQ0gtSW5mb3JtYXRpb24sCglzZXJ2aW5nR3JhbnQJCQkJCQlTRVFVRU5DRSB7CgkJdmFsdWUJCQkJCQkJCUlOVEVHRVIgKDAuLjM4KQkJCQkJCU9QVElPTkFMLAoJCXByaW1hcnktU2Vjb25kYXJ5LUdyYW50U2VsZWN0b3IJCUVOVU1FUkFURUQgeyBwcmltYXJ5LCBzZWNvbmRhcnkgfQoJfQlPUFRJT05BTCwKCWUtRFBDQ0gtRFBDQ0gtUG93ZXJPZmZzZXQJCQlFLURQQ0NILURQQ0NILVBvd2VyT2Zmc2V0CQkJCU9QVElPTkFMLAoJcmVmZXJlbmNlLUUtVEZDSXMJCQkJCUUtRFBEQ0gtUmVmZXJlbmNlLUUtVEZDSUxpc3QJCQlPUFRJT05BTCwKCXBvd2VyT2Zmc2V0Rm9yU2NoZWRJbmZvCQkJCUlOVEVHRVIgKDAuLjYpCQkJCQkJCU9QVElPTkFMLAoJdGhyZWVJbmRleFN0ZXBUaHJlc2hvbGQJCQkJSU5URUdFUiAoMC4uMzcpCQkJCQkJCU9QVElPTkFMLAoJdHdvSW5kZXhTdGVwVGhyZXNob2xkCQkJCUlOVEVHRVIgKDAuLjM3KQkJCQkJCQlPUFRJT05BTCwKCWUtSElDSC1JbmZvcm1hdGlvbgkJCQkJRS1ISUNILUluZm9ybWF0aW9uCQlPUFRJT05BTCwKCWUtUkdDSC1JbmZvCQkJCQkJCUNIT0lDRQl7CgkJZS1SR0NILUluZm9ybWF0aW9uCQkJCQlFLVJHQ0gtSW5mb3JtYXRpb24sCgkJcmVsZWFzZUluZGljYXRvcgkJCQkJTlVMTAoJfQlPUFRJT05BTAp9CgpFLURDSC1STC1JbmZvT3RoZXJDZWxsIDo6PQkJCVNFUVVFTkNFIHsKCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKCWUtSElDSC1JbmZvCQkJCQkJCUNIT0lDRSB7CgkJZS1ISUNILUluZm9ybWF0aW9uCQkJCQlFLUhJQ0gtSW5mb3JtYXRpb24sCgkJcmVsZWFzZUluZGljYXRvcgkJCQkJTlVMTAoJfQlPUFRJT05BTCwKCWUtUkdDSC1JbmZvCQkJCQkJCUNIT0lDRSB7CgkJZS1SR0NILUluZm9ybWF0aW9uCQkJCQlFLVJHQ0gtSW5mb3JtYXRpb24sCgkJcmVsZWFzZUluZGljYXRvcgkJCQkJTlVMTAoJfQlPUFRJT05BTAp9CgpFLURQQ0NILUluZm8gOjo9CQkJCQlTRVFVRU5DRSB7CgllLURQQ0NILURQQ0NILVBvd2VyT2Zmc2V0CQkJRS1EUENDSC1EUENDSC1Qb3dlck9mZnNldCwKCWhhcHB5Qml0LURlbGF5Q29uZGl0aW9uCQkJCUhhcHB5Qml0LURlbGF5Q29uZGl0aW9uCn0KCkUtRFBDQ0gtRFBDQ0gtUG93ZXJPZmZzZXQgOjo9CQlJTlRFR0VSICgwLi44KQoKRS1EUERDSC1JbmZvIDo6PQkJCQkJU0VRVUVOQ0UgewoJZS1URkNJLVRhYmxlSW5kZXgJCQkJCUUtVEZDSS1UYWJsZUluZGV4LAoJZS1EQ0gtTWluaW11bVNldC1FLVRGQ0kJCQkJRS1EQ0gtTWluaW11bVNldC1FLVRGQ0kJCQkJT1BUSU9OQUwsCglyZWZlcmVuY2UtRS1URkNJcwkJCQkJRS1EUERDSC1SZWZlcmVuY2UtRS1URkNJTGlzdCwKCW1heENoYW5uZWxpc2F0aW9uQ29kZXMJCQkJRS1EUERDSC1NYXhDaGFubmVsaXNhdGlvbkNvZGVzLAoJcGwtTm9uTWF4CQkJCQkJCUUtRFBEQ0gtUEwtTm9uTWF4LAoJc2NoZWR1bGluZ0luZm9Db25maWd1cmF0aW9uCQkJRS1EUERDSC1TY2hlZHVsaW5nSW5mb0NvbmZpZ3VyYXRpb24sCgl0aHJlZUluZGV4U3RlcFRocmVzaG9sZAkJCQlJTlRFR0VSICgwLi4zNykJCQkJCQlPUFRJT05BTCwKCXR3b0luZGV4U3RlcFRocmVzaG9sZAkJCQlJTlRFR0VSICgwLi4zNykJCQkJCQlPUFRJT05BTAp9CgpFLURQRENILVBlcmlvZGljeU9mU2NoZWRJbmZvIDo6PQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWV2ZXJ5RURDSFRUSSwgbXM0LCBtczEwLCBtczIwLCBtczUwLCBtczEwMCwgbXMyMDAsIG1zNTAwLAoJCQkJCQkJCQkJbXMxMDAwIH0KCi0tIFRoZSBhY3R1YWwgdmFsdWUgb2YgRS1EUERDSC1QTC1Ob25NYXggaXM6IElFIHZhbHVlICogMC4wNApFLURQRENILVBMLU5vbk1heCA6Oj0JCQkJSU5URUdFUiAoMTEuLjI1KQoKRS1EUERDSC1SZWZlcmVuY2UtRS1URkNJIDo6PQkJU0VRVUVOQ0UgewoJcmVmZXJlbmNlLUUtVEZDSQkJCQkJSU5URUdFUiAoMC4uMTI3KSwKCXJlZmVyZW5jZS1FLVRGQ0ktUE8JCQkJCUlOVEVHRVIgKDAuLjI5KQp9CgpFLURQRENILVJlZmVyZW5jZS1FLVRGQ0lMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4uOCkpIE9GIEUtRFBEQ0gtUmVmZXJlbmNlLUUtVEZDSQoKRS1EUERDSC1TY2hlZHVsaW5nSW5mb0NvbmZpZ3VyYXRpb24gOjo9IFNFUVVFTkNFIHsKCXBlcmlvZGljaXR5T2ZTY2hlZEluZm8tTm9HcmFudAkJRS1EUERDSC1QZXJpb2RpY3lPZlNjaGVkSW5mbwkJT1BUSU9OQUwsCglwZXJpb2RpY2l0eU9mU2NoZWRJbmZvLUdyYW50CQlFLURQRENILVBlcmlvZGljeU9mU2NoZWRJbmZvCQlPUFRJT05BTCwKCXBvd2VyT2Zmc2V0Rm9yU2NoZWRJbmZvCQkJCUlOVEVHRVIgKDAuLjYpCn0KCkUtRFBEQ0gtU2NoZWR1bGluZ1RyYW5zbUNvbmZpZ3VyYXRpb24gOjo9IFNFUVVFTkNFIHsKCW1zMi1TY2hlZFRyYW5zbUdyYW50SEFSUUFsbG9jCQlCSVQgU1RSSU5HIChTSVpFICg4KSkJCQkJT1BUSU9OQUwsCglzZXJ2aW5nR3JhbnQJCQkJCQlTRVFVRU5DRSB7CgkJdmFsdWUJCQkJCQkJCUlOVEVHRVIgKDAuLjM4KSwKCQlwcmltYXJ5LVNlY29uZGFyeS1HcmFudFNlbGVjdG9yCQlFTlVNRVJBVEVEIHsgcHJpbWFyeSwgc2Vjb25kYXJ5IH0KCX0JCU9QVElPTkFMCn0KCkUtRFBEQ0gtTWF4Q2hhbm5lbGlzYXRpb25Db2RlcyA6Oj0JRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlzZjI1Niwgc2YxMjgsIHNmNjQsIHNmMzIsIHNmMTYsIHNmOCwgc2Y0LCBzZjR4Miwgc2YyeDIsIHNmNHgyLWFuZC1zZjJ4MiB9CgpFLUhJQ0gtQ2hhbm5lbGlzYXRpb25Db2RlIDo6PQkJSU5URUdFUiAoMC4uMTI3KQoKRS1ISUNILUluZm9ybWF0aW9uIDo6PQkJCQlTRVFVRU5DRSB7CgljaGFubmVsaXNhdGlvbkNvZGUJCQkJCUUtSElDSC1DaGFubmVsaXNhdGlvbkNvZGUsCglzaWduYXR1cmVTZXF1ZW5jZQkJCQkJRS1ISUNILVJHQ0gtU2lnbmF0dXJlU2VxdWVuY2UKfQoKRS1ISUNILVJHQ0gtU2lnbmF0dXJlU2VxdWVuY2UgOjo9CUlOVEVHRVIgKDAuLjM5KQoKRS1SR0NILUNvbWJpbmF0aW9uSW5kZXggOjo9CQkJSU5URUdFUiAoMC4uNSkKCkUtUkdDSC1JbmZvcm1hdGlvbiA6Oj0JCQkJU0VRVUVOQ0UgewoJc2lnbmF0dXJlU2VxdWVuY2UJCQkJCUUtSElDSC1SR0NILVNpZ25hdHVyZVNlcXVlbmNlLAoJcmctQ29tYmluYXRpb25JbmRleAkJCQkJRS1SR0NILUNvbWJpbmF0aW9uSW5kZXgKfQoKRS1URkNJLVRhYmxlSW5kZXggOjo9CQkJCUlOVEVHRVIgKDAuLjEpCgpFWFQtVUwtVGltaW5nQWR2YW5jZSA6Oj0JCQlTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CgkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKCQkJZXgtdWwtVGltaW5nQWR2YW5jZQkJCUlOVEVHRVIgKDAuLjI1NSkKCQl9LAoJCXRkZDc2OAkJCQkJCQlTRVFVRU5DRSB7CgkJCWV4LXVsLVRpbWluZ0FkdmFuY2UJCQlJTlRFR0VSICgwLi41MTEpCgkJfQoJfQp9CgpGQUNILVBDSC1JbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7Cgl0cmFuc3BvcnRGb3JtYXRTZXQJCQkJCVRyYW5zcG9ydEZvcm1hdFNldCwKCXRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKCWN0Y2gtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgp9CgpGQUNILVBDSC1JbmZvcm1hdGlvbkxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RkFDSFBDSCkpIE9GCgkJCQkJCQkJCQlGQUNILVBDSC1JbmZvcm1hdGlvbgoKRmVlZGJhY2stY3ljbGUgOjo9CQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWZjMCwgZmMyLCBmYzQsIGZjOCwgZmMxMCwgZmMyMCwgZmM0MCwgZmM4MCwgZmMxNjB9CgpGUEFDSC1JbmZvLXI0IDo6PQkJCQkJCVNFUVVFTkNFIHsKCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLUxDUi1yNCwKCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJVERELUZQQUNILUNDb2RlMTYtcjQsCgltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1MQ1ItcjQsCiAgICB3aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaS1MQ1IKfQoKRnJlcXVlbmN5SW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJRnJlcXVlbmN5SW5mb0ZERCwKCQl0ZGQJCQkJCQkJCQlGcmVxdWVuY3lJbmZvVERECX0KfQoKRnJlcXVlbmN5SW5mb0ZERCA6Oj0JCQkJU0VRVUVOQ0UgewoJdWFyZmNuLVVMCQkJCQkJCVVBUkZDTgkJCQlPUFRJT05BTCwKCXVhcmZjbi1ETAkJCQkJCQlVQVJGQ04KfQoKRnJlcXVlbmN5SW5mb1RERCA6Oj0JCQkJU0VRVUVOQ0UgewoJdWFyZmNuLU50CQkJCQkJCVVBUkZDTgp9CgpIYXBweUJpdC1EZWxheUNvbmRpdGlvbiA6Oj0JCQlFTlVNRVJBVEVEIHsgCgkJCQkJCQkJCQltczIsIG1zMTAsIG1zMjAsIG1zNTAsIG1zMTAwLCBtczIwMCwgbXM1MDAsIG1zMTAwMCB9CgpIQVJRLVByZWFtYmxlLU1vZGUgOjo9CQkJCUlOVEVHRVIgKDAuLjEpCgpIUy1DaGFubmVsaXNhdGlvbkNvZGUtTENSIDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQljYzE2LTEsIGNjMTYtMiwgY2MxNi0zLCBjYzE2LTQsCgkJCQkJCQkJCQljYzE2LTUsIGNjMTYtNiwgY2MxNi03LCBjYzE2LTgsCgkJCQkJCQkJCQljYzE2LTksIGNjMTYtMTAsIGNjMTYtMTEsIGNjMTYtMTIsCgkJCQkJCQkJCQljYzE2LTEzLCBjYzE2LTE0LCBjYzE2LTE1LCBjYzE2LTE2IH0KCkhTLVBEU0NILU1pZGFtYmxlLUNvbmZpZ3VyYXRpb24tVEREMTI4IDo6PQlTRVFVRU5DRSB7CgltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRXsKCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAoJCWNvbW1vbk1pZGFtYmxlCQkJCQkJTlVMTCwKCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCUlOVEVHRVIgKDAuLjE1KQogICAgfSwKCS0tIEFjdHVhbCB2YWx1ZSBtaWRhbWJsZUNvbmZpZ3VyYXRpb24gPSBJRSB2YWx1ZSAqIDIKCW1pZGFtYmxlQ29uZmlndXJhdGlvbgkJCQlJTlRFR0VSICgxLi44KQp9CgpIUy1TQ0NILUluZm8gOjo9CQkJCQlTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJaFMtU0NDSENoYW5uZWxpc2F0aW9uQ29kZUluZm8JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIU1NDQ0hzKSkgT0YKCQkJCQkJCQkJCQkJCUhTLVNDQ0gtQ29kZXMsCgkJCWRsLVNjcmFtYmxpbmdDb2RlCQkJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJT1BUSU9OQUwKCQl9LAoJCXRkZAkJCQkJCQkJCUNIT0lDRSB7CgkJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgewogICAgICAgICAgICAgICAgbmFjay1hY2stcG93ZXItb2Zmc2V0ICAgICAgCQkgICBJTlRFR0VSICgtNy4uOCksIAogICAgICAgICAgICAgICAgaHMtU0lDSC1Qb3dlckNvbnRyb2wtSW5mbyAgCQkgICBIUy1TSUNILVBvd2VyLUNvbnRyb2wtSW5mby1UREQzODQsCgkJCQloUy1TQ0NILVNldENvbmZpZ3VyYXRpb24gCQkgICBTRVFVRU5DRSAoU0laRSAoMS4ubWF4SFNTQ0NIcykpIE9GCgkJCQkJCUhTLVNDQ0gtVEREMzg0CgkJCQl9LAoJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIU1NDQ0hzKSkgT0YKCQkJCQkJCQkJCQkJCUhTLVNDQ0gtVEREMTI4CgkJfQoJfQp9CgpIUy1TQ0NILUluZm8tcjYgOjo9CQkJCQlTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJaFMtU0NDSENoYW5uZWxpc2F0aW9uQ29kZUluZm8JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIU1NDQ0hzKSkgT0YKCQkJCQkJCQkJCQkJCUhTLVNDQ0gtQ29kZXMsCgkJCWRsLVNjcmFtYmxpbmdDb2RlCQkJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCU9QVElPTkFMCgkJfSwKCQl0ZGQJCQkJCQkJCQlDSE9JQ0UgewoJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCW5hY2stYWNrLXBvd2VyLW9mZnNldAkJCQlJTlRFR0VSICgtNy4uOCksIAoJCQkJaHMtU0lDSC1Qb3dlckNvbnRyb2wtSW5mbwkJCUhTLVNJQ0gtUG93ZXItQ29udHJvbC1JbmZvLVRERDM4NCwKCQkJCWRocy1zeW5jCQkJCQkJCURIUy1TeW5jCQkJCQlPUFRJT05BTCwKCQkJCWJsZXItdGFyZ2V0CQkJCQkJCUJsZXItVGFyZ2V0LAoJCQkJaFMtU0NDSC1TZXRDb25maWd1cmF0aW9uCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEhTU0NDSHMpKSBPRgoJCQkJCQkJCQkJCQkJCUhTLVNDQ0gtVEREMzg0LXI2CgkJCQl9LAoJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIU1NDQ0hzKSkgT0YKCQkJCQkJCQkJCQkJCUhTLVNDQ0gtVEREMTI4CgkJfQoJfQp9CgpIUy1TQ0NILUluZm8tcjcgOjo9CQkJCQlTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJaFMtU0NDSENoYW5uZWxpc2F0aW9uQ29kZUluZm8JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIU1NDQ0hzKSkgT0YKCQkJCQkJCQkJCQkJCUhTLVNDQ0gtQ29kZXMsCgkJCWRsLVNjcmFtYmxpbmdDb2RlCQkJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCU9QVElPTkFMCgkJfSwKCQl0ZGQJCQkJCQkJCQlDSE9JQ0UgewoJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCW5hY2stYWNrLXBvd2VyLW9mZnNldAkJCQlJTlRFR0VSICgtNy4uOCksIAoJCQkJaHMtU0lDSC1Qb3dlckNvbnRyb2wtSW5mbwkJCUhTLVNJQ0gtUG93ZXItQ29udHJvbC1JbmZvLVRERDM4NCwKCQkJCWRocy1zeW5jCQkJCQkJCURIUy1TeW5jCQkJCQlPUFRJT05BTCwKCQkJCWhTLVNDQ0gtU2V0Q29uZmlndXJhdGlvbgkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIU1NDQ0hzKSkgT0YKCQkJCQkJCQkJCQkJCQlIUy1TQ0NILVRERDM4NC1yNgoJCQkJfSwKCQkJdGRkNzY4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQluYWNrLWFjay1wb3dlci1vZmZzZXQJCQkJSU5URUdFUiAoLTcuLjgpLCAKCQkJCWhzLVNJQ0gtUG93ZXJDb250cm9sLUluZm8JCQlIUy1TSUNILVBvd2VyLUNvbnRyb2wtSW5mby1UREQ3NjgsCgkJCQlkaHMtc3luYwkJCQkJCQlESFMtU3luYwkJCQkJT1BUSU9OQUwsCgkJCQlibGVyLXRhcmdldAkJCQkJCQlCbGVyLVRhcmdldCwKCQkJCWhTLVNDQ0gtU2V0Q29uZmlndXJhdGlvbgkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIU1NDQ0hzKSkgT0YKCQkJCQkJCQkJCQkJCQlIUy1TQ0NILVRERDc2OAoJCQkJfSwKCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SFNTQ0NIcykpIE9GCgkJCQkJCQkJCQkJCQlIUy1TQ0NILVRERDEyOAoJCX0KCX0KfQoKSFMtU0NDSC1Db2RlcyA6Oj0JCQkJCUlOVEVHRVIgKDAuLjEyNykKCkhTLVNDQ0gtVEREMTI4IDo6PQkJCQlTRVFVRU5DRSB7Cgl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLUxDUi1yNCwKCWZpcnN0Q2hhbm5lbGlzYXRpb25Db2RlCQkJCUhTLUNoYW5uZWxpc2F0aW9uQ29kZS1MQ1IsCglzZWNvbmRDaGFubmVsaXNhdGlvbkNvZGUJCQlIUy1DaGFubmVsaXNhdGlvbkNvZGUtTENSLAoJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgewoJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCgkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAoJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJSU5URUdFUigwLi4xNSkKCX0sCgktLSBBY3R1YWwgdmFsdWUgbWlkYW1ibGVDb25maWd1cmF0aW9uID0gSUUgdmFsdWUgKiAyCgltaWRhbWJsZUNvbmZpZ3VyYXRpb24JCQkJSU5URUdFUiAoMS4uOCksCglibGVyLXRhcmdldAkJCQkJCQlCbGVyLVRhcmdldCwKCWhzLXNpY2gtY29uZmlndXJhdGlvbgkJCQlIUy1TSUNILUNvbmZpZ3VyYXRpb24tVEREMTI4Cn0KCkhTLVNJQ0gtQ29uZmlndXJhdGlvbi1UREQxMjggOjo9CVNFUVVFTkNFIHsKCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0LAoJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlIUy1DaGFubmVsaXNhdGlvbkNvZGUtTENSLAoJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgewoJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCgkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CgkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZwoJCX0KCX0sCgktLSBBY3R1YWwgdmFsdWUgbWlkYW1ibGVDb25maWd1cmF0aW9uID0gSUUgdmFsdWUgKiAyCgltaWRhbWJsZUNvbmZpZ3VyYXRpb24JCQkJSU5URUdFUiAoMS4uOCksCgluYWNrLWFjay1wb3dlci1vZmZzZXQJCQkJSU5URUdFUiAoLTcuLjgpLAoJcG93ZXItbGV2ZWwtSFNTSUNICQkJCQlJTlRFR0VSICgtMTIwLi4tNTgpLAoJdHBjLXN0ZXAtc2l6ZQkJCQkJCUVOVU1FUkFURUQgeyBzMSwgczIsIHMzICwgc3BhcmUxfQp9CgoKCkhTLVNDQ0gtVEREMzg0IDo6PQkJCQlTRVFVRU5DRSB7Cgl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLAoJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUsCgltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCgkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CgkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZwoJCX0KCX0sCgltaWRhbWJsZWNvbmZpZ3VyYXRpb24JCQkJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCglibGVyLXRhcmdldAkJCQkJCQlCbGVyLVRhcmdldCwKCWhzLXNpY2gtY29uZmlndXJhdGlvbgkJCQlIUy1TSUNILUNvbmZpZ3VyYXRpb24tVEREMzg0Cn0KCkhTLVNDQ0gtVEREMzg0LXI2IDo6PQkJCQlTRVFVRU5DRSB7Cgl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLAoJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUsCgltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCgkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CgkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZwoJCX0KCX0sCgltaWRhbWJsZWNvbmZpZ3VyYXRpb24JCQkJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCglocy1zaWNoLWNvbmZpZ3VyYXRpb24JCQkJSFMtU0lDSC1Db25maWd1cmF0aW9uLVRERDM4NAp9CgpIUy1TQ0NILVRERDc2OCA6Oj0JCQkJU0VRVUVOQ0UgewoJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlciwKCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLVZIQ1IsCgltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCgkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CgkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZwoJCX0KCX0sCgltaWRhbWJsZWNvbmZpZ3VyYXRpb24JCQkJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCglocy1zaWNoLWNvbmZpZ3VyYXRpb24JCQkJSFMtU0lDSC1Db25maWd1cmF0aW9uLVRERDc2OAp9CgpIUy1TSUNILUNvbmZpZ3VyYXRpb24tVEREMzg0IDo6PQlTRVFVRU5DRSB7Cgl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLAoJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUsCgltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nCgkJfQoJfSwKCW1pZGFtYmxlY29uZmlndXJhdGlvbgkJCQlNaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUxYW5kMwp9CgpIUy1TSUNILUNvbmZpZ3VyYXRpb24tVERENzY4IDo6PQlTRVFVRU5DRSB7Cgl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLAoJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUtVkhDUiwKCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAoJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgewoJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdExvbmcKCQl9Cgl9LAoJbWlkYW1ibGVjb25maWd1cmF0aW9uCQkJCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzCn0KCkhTLVNJQ0gtUG93ZXItQ29udHJvbC1JbmZvLVRERDM4NCA6Oj0gU0VRVUVOQ0UgewoJLS0gQWN0dWFsIHZhbHVlIHVsLXRhcmdldC1TSVIgPSBJRSB2YWx1ZSAqIDAuNQoJdWwtdGFyZ2V0LVNJUgkJCQkJCUlOVEVHRVIgKC0yMi4uNDApLAogICAgaHMtc2ljaC1Db25zdGFudFZhbHVlCQkJICAgIENvbnN0YW50VmFsdWUKfQoKSFMtU0lDSC1Qb3dlci1Db250cm9sLUluZm8tVERENzY4IDo6PSBTRVFVRU5DRSB7CgktLSBBY3R1YWwgdmFsdWUgdWwtdGFyZ2V0LVNJUiA9IElFIHZhbHVlICogMC41Cgl1bC10YXJnZXQtU0lSCQkJCQkJSU5URUdFUiAoLTIyLi40MCksCglocy1zaWNoLUNvbnN0YW50VmFsdWUJCQkJQ29uc3RhbnRWYWx1ZQp9CgpJbmRpdmlkdWFsVGltZXNsb3RJbmZvIDo6PQkJCVNFUVVFTkNFIHsKCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXIsCgl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4sCgltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQp9CgpJbmRpdmlkdWFsVGltZXNsb3RJbmZvLVZIQ1IgOjo9CQkJU0VRVUVOQ0UgewoJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlciwKCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTiwKCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtVkhDUgkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1WSENSCn0KCkluZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0IDo6PQlTRVFVRU5DRSB7Cgl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLUxDUi1yNCwKCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTiwKCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLUxDUi1yNCwKCW1vZHVsYXRpb24JCQkJCQkJRU5VTUVSQVRFRCB7IG1vZC1RUFNLLCBtb2QtOFBTSyB9LAoJc3MtVFBDLVN5bWJvbHMJCQkJCQlFTlVNRVJBVEVEIHsgemVybywgb25lLCBzaXh0ZWVuT3ZlclNGIH0sCglhZGRpdGlvbmFsU1MtVFBDLVN5bWJvbHMJCQlJTlRFR0VSKDEuLjE1KQkJT1BUSU9OQUwKfQoKSW5kaXZpZHVhbFRpbWVzbG90SW5mby1MQ1ItcjQtZXh0IDo6PQkJU0VRVUVOQ0UgewotLSB0aW1lc2xvdE51bWJlciBhbmQgdGZjaS1FeGlzdGVuY2UgaXMgdGFrZW4gZnJvbSBJbmRpdmlkdWFsVGltZXNsb3RJbmZvLgotLSBtaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlIGluIEluZGl2aWR1YWxUaW1lc2xvdEluZm8gc2hhbGwgYmUgaWdub3JlZC4KCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLUxDUi1yNCwKCW1vZHVsYXRpb24JCQkJCQkJRU5VTUVSQVRFRCB7IG1vZC1RUFNLLCBtb2QtOFBTSyB9LAoJc3MtVFBDLVN5bWJvbHMJCQkJCQlFTlVNRVJBVEVEIHsgemVybywgb25lLCBzaXh0ZWVuT3ZlclNGIH0KfQoKSW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZSA6Oj0JCVNFUVVFTkNFIHsKCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLAoJdWwtVGltZXNsb3RJbnRlcmZlcmVuY2UJCQkJVERELVVMLUludGVyZmVyZW5jZQp9CgpJbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTKSkgT0YKCQkJCQkJCQkJCUluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2UKCklUUCA6Oj0JCQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbW9kZTAsIG1vZGUxIH0KCk5pZGVudGlmeUFib3J0IDo6PQlJTlRFR0VSICgxLi4xMjgpCgpNYXhBbGxvd2VkVUwtVFgtUG93ZXIgOjo9CQkJSU5URUdFUiAoLTUwLi4zMykKCk1heEF2YWlsYWJsZVBDUENILU51bWJlciA6Oj0JCUlOVEVHRVIgKDEuLjY0KQpNYXhQb3dlckluY3JlYXNlLXI0IDo6PQkJCQlJTlRFR0VSICgwLi4zKQoKTWF4VEZDSS1GaWVsZDJWYWx1ZSA6Oj0JCQkJSU5URUdFUiAoMS4uMTAyMykKCk1lYXN1cmVtZW50LUZlZWRiYWNrLUluZm8gOjo9CQlTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCW1lYXN1cmVtZW50UG93ZXJPZmZzZXQJCQlNZWFzdXJlbWVudFBvd2VyT2Zmc2V0LAoJCQlmZWVkYmFjay1jeWNsZQkJCQkJRmVlZGJhY2stY3ljbGUsCgkJCWNxaS1SZXBldGl0aW9uRmFjdG9yCQkJQ1FJLVJlcGV0aXRpb25GYWN0b3IsCgkJCWRlbHRhQ1FJCQkJCQkJRGVsdGFDUUkKCQl9LAoJCXRkZAkJCQkJCQkJTlVMTAoJfQp9CgoKTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMgOjo9IEVOVU1FUkFURUQge21zNCwgbXM4LCBtczE2fQoKTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMiA6Oj0JCUVOVU1FUkFURUQge21zMywgbXM2fQoKTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMi1WSENSIDo6PQkJRU5VTUVSQVRFRCB7bXM0LCBtczh9CgpNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlIDo6PQkJU0VRVUVOQ0UgewoJYnVyc3RUeXBlCQkJCQkJCUNIT0lDRSB7CQoJCXR5cGUxCQkJCQkJCQlTRVFVRU5DRSB7CgkJCW1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzLAoJCQltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAoJCQkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAoJCQkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CgkJCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nCgkJCQl9CgkJCX0KCQl9LAoJCXR5cGUyCQkJCQkJCQlTRVFVRU5DRSB7CgkJCW1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTIJCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTIsCgkJCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKCQkJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCgkJCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCgkJCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKCQkJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdFNob3J0CgkJCQl9CgkJCX0KCQl9LAoJCXR5cGUzCQkJCQkJCQlTRVFVRU5DRSB7CgkJCW1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzLAoJCQltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAoJCQkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CgkJCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nCgkJCQl9CgkJCX0KCQl9Cgl9Cn0KCk1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtVkhDUiA6Oj0JU0VRVUVOQ0UgewoJYnVyc3RUeXBlCQkJCQkJCUNIT0lDRSB7CgkJdHlwZTEJCQkJCQkJCVNFUVVFTkNFIHsKCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCgkJCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKCQkJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCgkJCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCgkJCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKCQkJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdExvbmcKCQkJCX0KCQkJfQoJCX0sCgkJdHlwZTIJCQkJCQkJCVNFUVVFTkNFIHsKCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMgkJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMi1WSENSLAoJCQltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAoJCQkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAoJCQkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CgkJCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRTaG9ydC1WSENSCgkJCQl9CgkJCX0KCQl9LAoJCXR5cGUzCQkJCQkJCQlTRVFVRU5DRSB7CgkJCW1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzLAoJCQltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAoJCQkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CgkJCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nCgkJCQl9CgkJCX0KCQl9Cgl9Cn0KCk1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtREwgOjo9CQlTRVFVRU5DRSB7CglidXJzdFR5cGUJCQkJCQkJQ0hPSUNFIHsJCgkJdHlwZTEJCQkJCQkJCVNFUVVFTkNFIHsKCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCgkJCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKCQkJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCgkJCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCgkJCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKCQkJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdExvbmcKCQkJCX0KCQkJfQoJCX0sCgkJdHlwZTIJCQkJCQkJCVNFUVVFTkNFIHsKCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMgkJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMiwKCQkJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgewoJCQkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKCQkJCWNvbW1vbk1pZGFtYmxlCQkJCQkJTlVMTCwKCQkJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgewoJCQkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0U2hvcnQKCQkJCX0KCQkJfQoJCX0KCX0KfQoKTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1ETC1WSENSIDo6PSBTRVFVRU5DRSB7CglidXJzdFR5cGUJCQkJCQkJQ0hPSUNFIHsJCgkJdHlwZTEJCQkJCQkJCVNFUVVFTkNFIHsKCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCgkJCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKCQkJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCgkJCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCgkJCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKCQkJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdExvbmcKCQkJCX0KCQkJfQoJCX0sCgkJdHlwZTIJCQkJCQkJCVNFUVVFTkNFIHsKCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMgkJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMi1WSENSLAoJCQltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAoJCQkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAoJCQkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CgkJCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRTaG9ydC1WSENSCgkJCQl9CgkJCX0KCQl9Cgl9Cn0KCk1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtTENSLXI0IDo6PQlTRVFVRU5DRSB7CgltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CgkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCgkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CgkJCW1pZGFtYmxlU2hpZnQJCQkJCQlJTlRFR0VSICgwLi4xNSkKCQl9Cgl9LAoJLS0gQWN0dWFsIHZhbHVlIG1pZGFtYmxlQ29uZmlndXJhdGlvbiA9IElFIHZhbHVlICogMgoJbWlkYW1ibGVDb25maWd1cmF0aW9uCQkJCUlOVEVHRVIgKDEuLjgpCn0KCk1pZGFtYmxlU2hpZnRMb25nIDo6PQkJCQlJTlRFR0VSICgwLi4xNSkKCgpNaWRhbWJsZVNoaWZ0U2hvcnQgOjo9CQkJCUlOVEVHRVIgKDAuLjUpCgpNaWRhbWJsZVNoaWZ0U2hvcnQtVkhDUiA6Oj0JCQlJTlRFR0VSICgwLi43KQoKTWluaW11bVNwcmVhZGluZ0ZhY3RvciA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXNmNCwgc2Y4LCBzZjE2LCBzZjMyLAoJCQkJCQkJCQkJc2Y2NCwgc2YxMjgsIHNmMjU2IH0KCk11bHRpQ29kZUluZm8gOjo9CQkJCQlJTlRFR0VSICgxLi4xNikKCgpOLUVPVCA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uNykKCk4tR0FQIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWYyLCBmNCwgZjggfQoKTi1QQ0ggOjo9CQkJCQkJCUlOVEVHRVIgKDEuLjgpCgpOLVN0YXJ0TWVzc2FnZSA6Oj0JCQkJCUlOVEVHRVIgKDEuLjgpCgpOQjAxIDo6PQkJCQkJCQlJTlRFR0VSICgwLi41MCkKCk5GLU1heCA6Oj0JCQkJCQkJSU5URUdFUiAoMS4uNjQpCgpOdW1iZXJPZkRQRENIIDo6PQkJCQkJSU5URUdFUiAoMS4ubWF4RFBEQ0gtVUwpCgpOdW1iZXJPZkZCSS1CaXRzIDo6PQkJCQlJTlRFR0VSICgxLi4yKQoKT3Blbkxvb3BQb3dlckNvbnRyb2wtVEREIDo6PQkJU0VRVUVOQ0UgewoJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlciwKCS0tIGFscGhhLCBwcmFjaC1Db25zdGFudFZhbHVlLCBkcGNoLUNvbnN0YW50VmFsdWUgYW5kIHB1c2NoLUNvbnN0YW50VmFsdWUKCS0tIHNoYWxsIGJlIGlnbm9yZWQgaW4gMS4yOE1jcHMgVEREIG1vZGUuCglhbHBoYQkJCQkJCQkJQWxwaGEJCQkJCQlPUFRJT05BTCwKCXByYWNoLUNvbnN0YW50VmFsdWUJCQkJCUNvbnN0YW50VmFsdWVUZGQsCglkcGNoLUNvbnN0YW50VmFsdWUJCQkJCUNvbnN0YW50VmFsdWVUZGQsCglwdXNjaC1Db25zdGFudFZhbHVlCQkJCQlDb25zdGFudFZhbHVlVGRkCQkJT1BUSU9OQUwKfQoKT3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQtcjQgOjo9CVNFUVVFTkNFIHsKCWlwZGwtYWxwaGEJCQkJCQkJQWxwaGEsCgltYXhQb3dlckluY3JlYXNlCQkJCQlNYXhQb3dlckluY3JlYXNlLXI0Cn0KClBhZ2luZ0luZGljYXRvckxlbmd0aCA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXBpNCwgcGk4LCBwaTE2IH0KClBDLVByZWFtYmxlIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjcpCgpQQ1AtTGVuZ3RoIDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJYXMwLCBhczggfQoKUENQQ0gtQ2hhbm5lbEluZm8gOjo9CQkJCVNFUVVFTkNFIHsKCXBjcGNoLVVMLVNjcmFtYmxpbmdDb2RlCQkJCUlOVEVHRVIgKDAuLjc5KSwKCXBjcGNoLURMLUNoYW5uZWxpc2F0aW9uQ29kZQkJCUlOVEVHRVIgKDAuLjUxMSksCglwY3BjaC1ETC1TY3JhbWJsaW5nQ29kZQkJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCQlPUFRJT05BTCwKCXBjcC1MZW5ndGgJCQkJCQkJUENQLUxlbmd0aCwKCXVjc20tSW5mbwkJCQkJCQlVQ1NNLUluZm8JCQkJCQkJT1BUSU9OQUwKfQoKUENQQ0gtQ2hhbm5lbEluZm9MaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQQ1BDSHMpKSBPRgoJCQkJCQkJCQkJUENQQ0gtQ2hhbm5lbEluZm8KClBDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QgOjo9CQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCW1heUJlVXNlZCwKCQkJCQkJCQkJCXNoYWxsTm90QmVVc2VkIH0KClBEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8gOjo9CVNFUVVFTkNFIHsKCS0tIHBkc2NoLVBvd2VyQ29udHJvbEluZm8gaXMgY29uZGl0aW9uYWwgb24gbmV3LWNvbmZpZ3VyYXRpb24gYnJhbmNoIGJlbG93LCBpZiB0aGlzCgktLSBzZWxlY3RlZCB0aGUgSUUgaXMgT1BUSU9OQUwgb3RoZXJ3aXNlIGl0IHNob3VsZCBub3QgYmUgc2VudAoJcGRzY2gtUG93ZXJDb250cm9sSW5mbwkJCQlQRFNDSC1Qb3dlckNvbnRyb2xJbmZvCQkJCU9QVElPTkFMLAoJcGRzY2gtQWxsb2NhdGlvblBlcmlvZEluZm8JCQlBbGxvY2F0aW9uUGVyaW9kSW5mbywKCWNvbmZpZ3VyYXRpb24JCQkJCQlDSE9JQ0UgewoJCW9sZC1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CgkJCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAoJCQlwZHNjaC1JZGVudGl0eQkJCQkJCVBEU0NILUlkZW50aXR5CgkJfSwKCQluZXctQ29uZmlndXJhdGlvbgkJCQkJU0VRVUVOQ0UgewoJCQlwZHNjaC1JbmZvCQkJCQkJCVBEU0NILUluZm8sCgkJCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHkJCQkJT1BUSU9OQUwKCQl9Cgl9Cn0KClBEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjQgOjo9CVNFUVVFTkNFIHsKCXBkc2NoLUFsbG9jYXRpb25QZXJpb2RJbmZvCQkJQWxsb2NhdGlvblBlcmlvZEluZm8sCgljb25maWd1cmF0aW9uCQkJCQkJQ0hPSUNFIHsKCQlvbGQtQ29uZmlndXJhdGlvbgkJCQkJU0VRVUVOQ0UgewoJCQl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKCQkJcGRzY2gtSWRlbnRpdHkJCQkJCQlQRFNDSC1JZGVudGl0eQoJCX0sCgkJbmV3LUNvbmZpZ3VyYXRpb24JCQkJCVNFUVVFTkNFIHsKCQkJcGRzY2gtSW5mbwkJCQkJCQlQRFNDSC1JbmZvLXI0LAoJCQlwZHNjaC1JZGVudGl0eQkJCQkJCVBEU0NILUlkZW50aXR5CQkJCU9QVElPTkFMLAoJCQlwZHNjaC1Qb3dlckNvbnRyb2xJbmZvCQkJCVBEU0NILVBvd2VyQ29udHJvbEluZm8JCU9QVElPTkFMCgkJfQoJfQp9CgpQRFNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvLXI3IDo6PQlTRVFVRU5DRSB7CglwZHNjaC1BbGxvY2F0aW9uUGVyaW9kSW5mbwkJCUFsbG9jYXRpb25QZXJpb2RJbmZvLAoJY29uZmlndXJhdGlvbgkJCQkJCUNIT0lDRSB7CgkJb2xkLUNvbmZpZ3VyYXRpb24JCQkJCVNFUVVFTkNFIHsKCQkJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCgkJCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHkKCQl9LAoJCW5ldy1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CgkJCXBkc2NoLUluZm8JCQkJCQkJUERTQ0gtSW5mby1yNywKCQkJcGRzY2gtSWRlbnRpdHkJCQkJCQlQRFNDSC1JZGVudGl0eQkJCQlPUFRJT05BTCwKCQkJcGRzY2gtUG93ZXJDb250cm9sSW5mbwkJCQlQRFNDSC1Qb3dlckNvbnRyb2xJbmZvCQlPUFRJT05BTAoJCX0KCX0KfQoKUERTQ0gtQ29kZUluZm8gOjo9CQkJCQlTRVFVRU5DRSB7CglzcHJlYWRpbmdGYWN0b3IJCQkJCQlTRi1QRFNDSCwKCWNvZGVOdW1iZXIJCQkJCQkJQ29kZU51bWJlckRTQ0gsCgltdWx0aUNvZGVJbmZvCQkJCQkJTXVsdGlDb2RlSW5mbwp9CgpQRFNDSC1Db2RlSW5mb0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkNJLTItQ29tYnMpKSBPRgoJCQkJCQkJCQkJUERTQ0gtQ29kZUluZm8KClBEU0NILUNvZGVNYXAgOjo9CQkJCQlTRVFVRU5DRSB7CglzcHJlYWRpbmdGYWN0b3IJCQkJCQlTRi1QRFNDSCwKCW11bHRpQ29kZUluZm8JCQkJCQlNdWx0aUNvZGVJbmZvLAoJY29kZU51bWJlclN0YXJ0CQkJCQkJQ29kZU51bWJlckRTQ0gsCgljb2RlTnVtYmVyU3RvcAkJCQkJCUNvZGVOdW1iZXJEU0NICn0KClBEU0NILUNvZGVNYXBMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UERTQ0gtVEZDSWdyb3VwcykpIE9GCgkJCQkJCQkJCQlQRFNDSC1Db2RlTWFwCgpQRFNDSC1Db2RlTWFwcGluZyA6Oj0JCQkJU0VRVUVOQ0UgewoJZGwtU2NyYW1ibGluZ0NvZGUJCQkJCVNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJCU9QVElPTkFMLAoJc2lnbmFsbGluZ01ldGhvZAkJCQkJQ0hPSUNFIHsKCQljb2RlUmFuZ2UJCQkJCQkJQ29kZVJhbmdlLAoJCXRmY2ktUmFuZ2UJCQkJCQkJRFNDSC1NYXBwaW5nTGlzdCwKCQlleHBsaWNpdC1jb25maWcJCQkJCQlQRFNDSC1Db2RlSW5mb0xpc3QsCgkJcmVwbGFjZQkJCQkJCQkJUmVwbGFjZWRQRFNDSC1Db2RlSW5mb0xpc3QKCX0KfQkKClBEU0NILUlkZW50aXR5IDo6PQkJCQkJSU5URUdFUiAoMS4uaGlQRFNDSGlkZW50aXRpZXMpCgogClBEU0NILUluZm8gOjo9CQkJCQkJU0VRVUVOQ0UgewoJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCgljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCglwZHNjaC1UaW1lc2xvdHNDb2RlcwkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzCQkJCU9QVElPTkFMCn0KClBEU0NILUluZm8tcjQgOjo9CQkJCQkJU0VRVUVOQ0UgewoJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCgljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCgl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcGRzY2gtVGltZXNsb3RzQ29kZXMJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2RlcwkJT1BUSU9OQUwKCQl9LAoJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlwZHNjaC1UaW1lc2xvdHNDb2RlcwkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNAlPUFRJT05BTAoJCX0KCX0KfQoKUERTQ0gtSW5mby1yNyA6Oj0JCQkJCQlTRVFVRU5DRSB7Cgl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCQkJCQlPUFRJT05BTCwKCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgewoJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlwZHNjaC1UaW1lc2xvdHNDb2RlcwkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzCQlPUFRJT05BTAoJCX0sCgkJdGRkNzY4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCXBkc2NoLVRpbWVzbG90c0NvZGVzCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMtVkhDUgkJT1BUSU9OQUwKCQl9LAoJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlwZHNjaC1UaW1lc2xvdHNDb2RlcwkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNAlPUFRJT05BTAoJCX0KCX0KfQoKUERTQ0gtSW5mby1MQ1ItcjQgOjo9CQkJCVNFUVVFTkNFIHsKCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAoJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAoJcGRzY2gtVGltZXNsb3RzQ29kZXMJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQJCU9QVElPTkFMCn0KClBEU0NILVBvd2VyQ29udHJvbEluZm8gOjo9CQkJU0VRVUVOQ0UgewoJdHBjLVN0ZXBTaXplVERECQkJCQkJVFBDLVN0ZXBTaXplVERECQkJCQkJT1BUSU9OQUwsCgl1bC1DQ1RyQ2hUUENMaXN0CQkJCQlVTC1DQ1RyQ2hUUENMaXN0CQkJCQlPUFRJT05BTAp9CgpQRFNDSC1TSE8tRENILUluZm8gOjo9CQkJCVNFUVVFTkNFIHsKCWRzY2gtUmFkaW9MaW5rSWRlbnRpZmllcgkJCURTQ0gtUmFkaW9MaW5rSWRlbnRpZmllciwKCXJsLUlkZW50aWZpZXJMaXN0CQkJCQlSTC1JZGVudGlmaWVyTGlzdAkJCQkJT1BUSU9OQUwKfQoKUERTQ0gtU3lzSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHksCglwZHNjaC1JbmZvCQkJCQkJCVBEU0NILUluZm8sCglkc2NoLVRGUwkJCQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQJCQkJCU9QVElPTkFMLAoJZHNjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMCn0KClBEU0NILVN5c0luZm8tcjcgOjo9CQkJCVNFUVVFTkNFIHsKCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHksCglwZHNjaC1JbmZvCQkJCQkJCVBEU0NILUluZm8tcjcsCglkc2NoLVRyYW5zcG9ydENoYW5uZWxzSW5mbwkJCURTQ0gtVHJhbnNwb3J0Q2hhbm5lbHNJbmZvCQkJT1BUSU9OQUwsCglkc2NoLVRGQ1MJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwKfQoKUERTQ0gtU3lzSW5mby1IQ1ItcjUgOjo9CQkJCQlTRVFVRU5DRSB7CglwZHNjaC1JZGVudGl0eQkJCQkJCVBEU0NILUlkZW50aXR5LAoJcGRzY2gtSW5mbwkJCQkJCQlQRFNDSC1JbmZvLAoJZHNjaC1UcmFuc3BvcnRDaGFubmVsc0luZm8JCQlEU0NILVRyYW5zcG9ydENoYW5uZWxzSW5mbwkJCU9QVElPTkFMLAoJZHNjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMCn0KClBEU0NILVN5c0luZm8tTENSLXI0IDo6PQkJCVNFUVVFTkNFIHsKCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHksCglwZHNjaC1JbmZvCQkJCQkJCVBEU0NILUluZm8tTENSLXI0LAoJZHNjaC1URlMJCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlPUFRJT05BTCwKCWRzY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTAp9CgpQRFNDSC1TeXNJbmZvTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NIKSkgT0YKCQkJCQkJCQkJCVBEU0NILVN5c0luZm8KClBEU0NILVN5c0luZm9MaXN0LXI3IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQRFNDSCkpIE9GIFBEU0NILVN5c0luZm8tcjcKClBEU0NILVN5c0luZm9MaXN0LUhDUi1yNSA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UERTQ0gpKSBPRiBQRFNDSC1TeXNJbmZvLUhDUi1yNQoKUERTQ0gtU3lzSW5mb0xpc3QtTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NIKSkgT0YKCQkJCQkJCQkJCVBEU0NILVN5c0luZm8tTENSLXI0CgpQRFNDSC1TeXNJbmZvTGlzdC1TRk4gOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NIKSkgT0YKCQkJCQkJCQkJCVNFUVVFTkNFIHsKCXBkc2NoLVN5c0luZm8JCQkJCQkJUERTQ0gtU3lzSW5mbywKCXNmbi1UaW1lSW5mbwkJCQkJCQlTRk4tVGltZUluZm8JCQkJCU9QVElPTkFMCn0KClBEU0NILVN5c0luZm9MaXN0LVNGTi1IQ1ItcjUgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NIKSkgT0YKCQkJCQkJCQkJCVNFUVVFTkNFIHsKCXBkc2NoLVN5c0luZm8JCQkJCQkJUERTQ0gtU3lzSW5mby1IQ1ItcjUsCglzZm4tVGltZUluZm8JCQkJCQkJU0ZOLVRpbWVJbmZvCQkJCQlPUFRJT05BTAp9CgpQRFNDSC1TeXNJbmZvTGlzdC1TRk4tTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UERTQ0gpKSBPRgoJCQkJCQkJCQkJU0VRVUVOQ0UgewoJcGRzY2gtU3lzSW5mbwkJCQkJCQlQRFNDSC1TeXNJbmZvLUxDUi1yNCwKCXNmbi1UaW1lSW5mbwkJCQkJCQlTRk4tVGltZUluZm8JCQkJCU9QVElPTkFMCn0KClBlcnNpc3RlbmNlU2NhbGluZ0ZhY3RvciA6Oj0JCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJcHNmMC05LCBwc2YwLTgsIHBzZjAtNywgcHNmMC02LAoJCQkJCQkJCQkJcHNmMC01LCBwc2YwLTQsIHBzZjAtMywgcHNmMC0yIH0KClBlcnNpc3RlbmNlU2NhbGluZ0ZhY3Rvckxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhBU0NwZXJzaXN0KSkgT0YKCQkJCQkJCQkJCVBlcnNpc3RlbmNlU2NhbGluZ0ZhY3RvcgoKUEktQ291bnRQZXJGcmFtZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQllMTgsIGUzNiwgZTcyLCBlMTQ0IH0KClBpY2hDaGFubmVsaXNhdGlvbkNvZGVMaXN0LUxDUi1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLjIpKSBPRgoJCQkJCQkJCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZQoKUElDSC1JbmZvIDo6PQkJCQkJCUNIT0lDRSB7CglmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJY2hhbm5lbGlzYXRpb25Db2RlMjU2CQkJCUNoYW5uZWxpc2F0aW9uQ29kZTI1NiwKCQlwaS1Db3VudFBlckZyYW1lCQkJCQlQSS1Db3VudFBlckZyYW1lLAoJCXN0dGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgoJfSwKCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQljaGFubmVsaXNhdGlvbkNvZGUJCQkJCVRERC1QSUNILUNDb2RlCQkJCQlPUFRJT05BTCwKCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlcgkJCQkJT1BUSU9OQUwsCgkJbWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQkJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUsCgkJcmVwZXRpdGlvblBlcmlvZExlbmd0aE9mZnNldAkJUmVwUGVyTGVuZ3RoT2Zmc2V0LVBJQ0gJCQlPUFRJT05BTCwKCQlwYWdpbmdJbmRpY2F0b3JMZW5ndGgJCQkJUGFnaW5nSW5kaWNhdG9yTGVuZ3RoCQkJREVGQVVMVCBwaTQsCgkJbi1HQVAJCQkJCQkJCU4tR0FQCQkJCQkJCURFRkFVTFQgZjQsCgkJbi1QQ0gJCQkJCQkJCU4tUENICQkJCQkJCURFRkFVTFQgMgoJfQkKfQoKUElDSC1JbmZvLXI3IDo6PQkJCQkJQ0hPSUNFIHsKCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQljaGFubmVsaXNhdGlvbkNvZGUyNTYJCQkJQ2hhbm5lbGlzYXRpb25Db2RlMjU2LAoJCXBpLUNvdW50UGVyRnJhbWUJCQkJCVBJLUNvdW50UGVyRnJhbWUsCgkJc3R0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCgl9LAoJdGRkMzg0CQkJCQkJCQkJU0VRVUVOQ0UgewoJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJVERELVBJQ0gtQ0NvZGUJCQkJCU9QVElPTkFMLAoJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyCQkJCQlPUFRJT05BTCwKCQltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZSwKCQlyZXBldGl0aW9uUGVyaW9kTGVuZ3RoT2Zmc2V0CQlSZXBQZXJMZW5ndGhPZmZzZXQtUElDSAkJCU9QVElPTkFMLAoJCXBhZ2luZ0luZGljYXRvckxlbmd0aAkJCQlQYWdpbmdJbmRpY2F0b3JMZW5ndGgJCQlERUZBVUxUIHBpNCwKCQluLUdBUAkJCQkJCQkJTi1HQVAJCQkJCQkJREVGQVVMVCBmNCwKCQluLVBDSAkJCQkJCQkJTi1QQ0gJCQkJCQkJREVGQVVMVCAyCgl9LAoJdGRkNzY4CQkJCQkJCQkJU0VRVUVOQ0UgewoJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJVERENzY4LVBJQ0gtQ0NvZGUJCQkJT1BUSU9OQUwsCgkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIJCQkJCU9QVElPTkFMLAoJCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLAoJCXJlcGV0aXRpb25QZXJpb2RMZW5ndGhPZmZzZXQJCVJlcFBlckxlbmd0aE9mZnNldC1QSUNICQkJT1BUSU9OQUwsCgkJcGFnaW5nSW5kaWNhdG9yTGVuZ3RoCQkJCVBhZ2luZ0luZGljYXRvckxlbmd0aAkJCURFRkFVTFQgcGk0LAoJCW4tR0FQCQkJCQkJCQlOLUdBUAkJCQkJCQlERUZBVUxUIGY0LAoJCW4tUENICQkJCQkJCQlOLVBDSAkJCQkJCQlERUZBVUxUIDIKCX0KfQoKUElDSC1JbmZvLUxDUi1yNCA6Oj0JCQkJU0VRVUVOQ0UgewoJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0CQkJCU9QVElPTkFMLAoJcGljaENoYW5uZWxpc2F0aW9uQ29kZUxpc3QtTENSLXI0CVBpY2hDaGFubmVsaXNhdGlvbkNvZGVMaXN0LUxDUi1yNCwKCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLUxDUi1yNCwKCXJlcGV0aXRpb25QZXJpb2RMZW5ndGhPZmZzZXQJCVJlcFBlckxlbmd0aE9mZnNldC1QSUNICQkJCU9QVElPTkFMLAoJcGFnaW5nSW5kaWNhdG9yTGVuZ3RoCQkJCVBhZ2luZ0luZGljYXRvckxlbmd0aAkJCURFRkFVTFQgcGk0LAoJbi1HQVAJCQkJCQkJCU4tR0FQCQkJCQkJCURFRkFVTFQgZjQsCgluLVBDSAkJCQkJCQkJTi1QQ0gJCQkJCQkJREVGQVVMVCAyCn0KClBJQ0gtUG93ZXJPZmZzZXQgOjo9CQkJCUlOVEVHRVIgKC0xMC4uNSkKClBpbG90Qml0czEyOCA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJcGI0LCBwYjggfQoKUGlsb3RCaXRzMjU2IDo6PQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlwYjIsIHBiNCwgcGI4IH0KCgktLSBBY3R1YWwgbWVhc3VyZW1lbnQgcG93ZXIgb2Zmc2V0IHZhbHVlID0gSUUgdmFsdWUgKiAwLjUKTWVhc3VyZW1lbnRQb3dlck9mZnNldCA6Oj0JCQlJTlRFR0VSICgtMTIuLjI2KQoKUExDQ0gtSW5mbwkJOjo9CQkJCQlTRVFVRU5DRSB7CglwbGNjaFNlcXVlbmNlTnVtYmVyCQkJCUlOVEVHRVIoMS4uMTcpLAoJdGltZXNsb3ROdW1iZXIJCQkJCVRpbWVzbG90TnVtYmVyLUxDUi1yNCwKCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUsCgl0cGNDb21tYW5kVGFyZ2V0UmF0ZQkJCVRQQy1Db21tYW5kVGFyZ2V0UmF0ZQp9CgpQb3NpdGlvbkZpeGVkT3JGbGV4aWJsZSA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWZpeGVkLAoJCQkJCQkJCQkJZmxleGlibGUgfQoKUG93ZXJDb250cm9sQWxnb3JpdGhtIDo6PQkJCUNIT0lDRSB7CglhbGdvcml0aG0xCQkJCQkJCVRQQy1TdGVwU2l6ZUZERCwKCWFsZ29yaXRobTIJCQkJCQkJTlVMTAp9CgpQb3dlck9mZnNldFBpbG90LXBkcGRjaCA6Oj0JCQlJTlRFR0VSICgwLi4yNCkKClBvd2VyT2Zmc2V0VFBDLXBkcGRjaCA6Oj0JCQlJTlRFR0VSICgwLi4yNCkKClBvd2VyUmFtcFN0ZXAgOjo9CQkJCQlJTlRFR0VSICgxLi44KQoKUFJBQ0gtQ2hhbkNvZGVzLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4uNCkpIE9GCgkJCQkJCQkJCQlUREQtUFJBQ0gtQ0NvZGUtTENSLXI0CgpQUkFDSC1EZWZpbml0aW9uLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSB7Cgl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlci1QUkFDSC1MQ1ItcjQsCglwcmFjaC1DaGFuQ29kZXMtTENSCQkJCQlQUkFDSC1DaGFuQ29kZXMtTENSLXI0LAoJbWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQkJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtTENSLXI0LAoJZnBhY2gtSW5mbwkJCQkJCQlGUEFDSC1JbmZvLXI0Cn0KClBSQUNILU1pZGFtYmxlIDo6PQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlkaXJlY3QsCgkJCQkJCQkJCQlkaXJlY3QtSW52ZXJ0ZWQgfQoKUFJBQ0gtUGFydGl0aW9uaW5nIDo6PQkJCQlDSE9JQ0UgewoJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEFTQykpIE9GCgktLSBUQUJVTEFSOiBJZiBvbmx5ICJOdW1BU0MrMSIgKHdpdGgsIE51bUFTQysxIDwgbWF4QVNDKSBBU0NTZXR0aW5nLUZERCBhcmUgbGlzdGVkLCAKCS0tIHRoZSByZW1haW5pbmcgKE51bUFTQysyIHRocm91Z2ggbWF4QVNDKSBBU0NzIGFyZSB1bnNwZWNpZmllZC4KCQkJCQkJCQkJCQlBU0NTZXR0aW5nLUZERCwKCXRkZAkJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhBU0MpKSBPRgoJLS0gVEFCVUxBUjogSWYgb25seSAiTnVtQVNDKzEiICh3aXRoLCBOdW1BU0MrMSA8IG1heEFTQykgQVNDU2V0dGluZy1UREQgYXJlIGxpc3RlZCwgCgktLSB0aGUgcmVtYWluaW5nIChOdW1BU0MrMiB0aHJvdWdoIG1heEFTQykgQVNDcyBhcmUgdW5zcGVjaWZpZWQuCgkJCQkJCQkJCQkJQVNDU2V0dGluZy1UREQKfQkKClBSQUNILVBhcnRpdGlvbmluZy1yNyA6Oj0JCQlDSE9JQ0UgewoJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEFTQykpIE9GCgktLSBUQUJVTEFSOiBJZiBvbmx5ICJOdW1BU0MrMSIgKHdpdGgsIE51bUFTQysxIDwgbWF4QVNDKSBBU0NTZXR0aW5nLUZERCBhcmUgbGlzdGVkLAoJLS0gdGhlIHJlbWFpbmluZyAoTnVtQVNDKzIgdGhyb3VnaCBtYXhBU0MpIEFTQ3MgYXJlIHVuc3BlY2lmaWVkLgoJCQkJCQkJCQkJCUFTQ1NldHRpbmctRkRELAoJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEFTQykpIE9GCgktLSBUQUJVTEFSOiBJZiBvbmx5ICJOdW1BU0MrMSIgKHdpdGgsIE51bUFTQysxIDwgbWF4QVNDKSBBU0NTZXR0aW5nLVRERCBhcmUgbGlzdGVkLAoJLS0gdGhlIHJlbWFpbmluZyAoTnVtQVNDKzIgdGhyb3VnaCBtYXhBU0MpIEFTQ3MgYXJlIHVuc3BlY2lmaWVkLgoJCQkJCQkJCQkJCUFTQ1NldHRpbmctVERELXI3Cn0KClBSQUNILVBhcnRpdGlvbmluZy1MQ1ItcjQgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4QVNDKSkgT0YKCS0tIFRBQlVMQVI6IElmIG9ubHkgIk51bUFTQysxIiAod2l0aCwgTnVtQVNDKzEgPCBtYXhBU0MpIEFTQ1NldHRpbmctVERELUxDUi1yNCBhcmUgbGlzdGVkLCAKCS0tIHRoZSByZW1haW5pbmcgKE51bUFTQysyIHRocm91Z2ggbWF4QVNDKSBBU0NzIGFyZSB1bnNwZWNpZmllZC4KCQkJCQkJCQkJCQlBU0NTZXR0aW5nLVRERC1MQ1ItcjQKClBSQUNILVBvd2VyT2Zmc2V0IDo6PQkJCQlTRVFVRU5DRSB7Cglwb3dlclJhbXBTdGVwCQkJCQkJUG93ZXJSYW1wU3RlcCwKCXByZWFtYmxlUmV0cmFuc01heAkJCQkJUHJlYW1ibGVSZXRyYW5zTWF4Cn0KClBSQUNILVJBQ0gtSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlhdmFpbGFibGVTaWduYXR1cmVzCQkJCQlBdmFpbGFibGVTaWduYXR1cmVzLAoJCQlhdmFpbGFibGVTRgkJCQkJCQlTRi1QUkFDSCwKCQkJcHJlYW1ibGVTY3JhbWJsaW5nQ29kZVdvcmROdW1iZXIJUHJlYW1ibGVTY3JhbWJsaW5nQ29kZVdvcmROdW1iZXIsCgkJCXB1bmN0dXJpbmdMaW1pdAkJCQkJCVB1bmN0dXJpbmdMaW1pdCwKCQkJYXZhaWxhYmxlU3ViQ2hhbm5lbE51bWJlcnMJCQlBdmFpbGFibGVTdWJDaGFubmVsTnVtYmVycwoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlciwKCQkJY2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCQlUREQtUFJBQ0gtQ0NvZGVMaXN0LAoJCQlwcmFjaC1NaWRhbWJsZQkJCQkJCVBSQUNILU1pZGFtYmxlCgkJfQoJfQp9CgpQUkFDSC1SQUNILUluZm8tcjcgOjo9CQkJCVNFUVVFTkNFIHsKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlhdmFpbGFibGVTaWduYXR1cmVzCQkJCQlBdmFpbGFibGVTaWduYXR1cmVzLAoJCQlhdmFpbGFibGVTRgkJCQkJCQlTRi1QUkFDSCwKCQkJcHJlYW1ibGVTY3JhbWJsaW5nQ29kZVdvcmROdW1iZXIJUHJlYW1ibGVTY3JhbWJsaW5nQ29kZVdvcmROdW1iZXIsCgkJCXB1bmN0dXJpbmdMaW1pdAkJCQkJCVB1bmN0dXJpbmdMaW1pdCwKCQkJYXZhaWxhYmxlU3ViQ2hhbm5lbE51bWJlcnMJCQlBdmFpbGFibGVTdWJDaGFubmVsTnVtYmVycwoJCX0sCgkJdGRkMzg0CQkJCQkJCQkJU0VRVUVOQ0UgewoJCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlciwKCQkJY2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCQlUREQtUFJBQ0gtQ0NvZGVMaXN0LAoJCQlwcmFjaC1NaWRhbWJsZQkJCQkJCVBSQUNILU1pZGFtYmxlCgkJfSwKCQl0ZGQ3NjgJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLAoJCQljaGFubmVsaXNhdGlvbkNvZGVMaXN0CQkJCVRERDc2OC1QUkFDSC1DQ29kZUxpc3QsCgkJCXByYWNoLU1pZGFtYmxlCQkJCQkJUFJBQ0gtTWlkYW1ibGUKCQl9Cgl9Cn0KClBSQUNILVJBQ0gtSW5mby1MQ1ItcjQgOjo9CQkJU0VRVUVOQ0UgewoJc3luYy1VTC1JbmZvCQkJCQkJU1lOQy1VTC1JbmZvLXI0LAoJcHJhY2gtRGVmaW5pdGlvbkxpc3QJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBSQUNILUZQQUNIKSkgT0YKCQkJCQkJCQkJCQlQUkFDSC1EZWZpbml0aW9uLUxDUi1yNAp9CgpQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7CglwcmFjaC1SQUNILUluZm8JCQkJCQlQUkFDSC1SQUNILUluZm8sCgl0cmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCglyYWNoLVRyYW5zcG9ydEZvcm1hdFNldAkJCQlUcmFuc3BvcnRGb3JtYXRTZXQJCQkJCU9QVElPTkFMLAoJcmFjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMLAoJcHJhY2gtUGFydGl0aW9uaW5nCQkJCQlQUkFDSC1QYXJ0aXRpb25pbmcJCQkJCU9QVElPTkFMLAoJcGVyc2lzdGVuY2VTY2FsaW5nRmFjdG9yTGlzdAkJUGVyc2lzdGVuY2VTY2FsaW5nRmFjdG9yTGlzdAkJT1BUSU9OQUwsCglhYy1Uby1BU0MtTWFwcGluZ1RhYmxlCQkJCUFDLVRvLUFTQy1NYXBwaW5nVGFibGUJCQkJT1BUSU9OQUwsCgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcHJpbWFyeUNQSUNILVRYLVBvd2VyCQkJCVByaW1hcnlDUElDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCgkJCWNvbnN0YW50VmFsdWUJCQkJCQlDb25zdGFudFZhbHVlCQkJCU9QVElPTkFMLAoJCQlwcmFjaC1Qb3dlck9mZnNldAkJCQkJUFJBQ0gtUG93ZXJPZmZzZXQJCQlPUFRJT05BTCwKCQkJcmFjaC1UcmFuc21pc3Npb25QYXJhbWV0ZXJzCQkJUkFDSC1UcmFuc21pc3Npb25QYXJhbWV0ZXJzCU9QVElPTkFMLAoJCQlhaWNoLUluZm8JCQkJCQkJQUlDSC1JbmZvCQkJCQlPUFRJT05BTAoJCX0sCgkJdGRkCQkJCQkJCQkJTlVMTAoJfQkKfQoKUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb24tcjcgOjo9CQlTRVFVRU5DRSB7CglwcmFjaC1SQUNILUluZm8JCQkJCQlQUkFDSC1SQUNILUluZm8tcjcsCgl0cmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCglyYWNoLVRyYW5zcG9ydEZvcm1hdFNldAkJCQlUcmFuc3BvcnRGb3JtYXRTZXQJCQkJCU9QVElPTkFMLAoJcmFjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMLAoJcHJhY2gtUGFydGl0aW9uaW5nCQkJCQlQUkFDSC1QYXJ0aXRpb25pbmctcjcJCQkJT1BUSU9OQUwsCglwZXJzaXN0ZW5jZVNjYWxpbmdGYWN0b3JMaXN0CQlQZXJzaXN0ZW5jZVNjYWxpbmdGYWN0b3JMaXN0CQlPUFRJT05BTCwKCWFjLVRvLUFTQy1NYXBwaW5nVGFibGUJCQkJQUMtVG8tQVNDLU1hcHBpbmdUYWJsZQkJCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlwcmltYXJ5Q1BJQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNQSUNILVRYLVBvd2VyCQlPUFRJT05BTCwKCQkJY29uc3RhbnRWYWx1ZQkJCQkJCUNvbnN0YW50VmFsdWUJCQkJT1BUSU9OQUwsCgkJCXByYWNoLVBvd2VyT2Zmc2V0CQkJCQlQUkFDSC1Qb3dlck9mZnNldAkJCU9QVElPTkFMLAoJCQlyYWNoLVRyYW5zbWlzc2lvblBhcmFtZXRlcnMJCQlSQUNILVRyYW5zbWlzc2lvblBhcmFtZXRlcnMJT1BUSU9OQUwsCgkJCWFpY2gtSW5mbwkJCQkJCQlBSUNILUluZm8JCQkJCU9QVElPTkFMCgkJfSwKCQl0ZGQJCQkJCQkJCQlOVUxMCgl9Cn0KClBSQUNILVN5c3RlbUluZm9ybWF0aW9uLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgewoJcHJhY2gtUkFDSC1JbmZvLUxDUgkJCQkJUFJBQ0gtUkFDSC1JbmZvLUxDUi1yNCwKCXJhY2gtVHJhbnNwb3J0Rm9ybWF0U2V0LUxDUgkJCVRyYW5zcG9ydEZvcm1hdFNldC1MQ1IJCQlPUFRJT05BTCwKCXByYWNoLVBhcnRpdGlvbmluZy1MQ1IJCQkJUFJBQ0gtUGFydGl0aW9uaW5nLUxDUi1yNAkJT1BUSU9OQUwKfQoKUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBSQUNIKSkgT0YKCQkJCQkJCQkJCVBSQUNILVN5c3RlbUluZm9ybWF0aW9uCgpQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtcjcgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhQUkFDSCkpIE9GCgkJCQkJCQkJCQlQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbi1yNwoKUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBSQUNIKSkgT0YKCQkJCQkJCQkJCQlQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbi1MQ1ItcjQKClByZWFtYmxlUmV0cmFuc01heCA6Oj0JCQkJSU5URUdFUiAoMS4uNjQpCgpQcmVhbWJsZVNjcmFtYmxpbmdDb2RlV29yZE51bWJlciA6Oj0JSU5URUdFUiAoMC4uMTUpCgpQcmVEZWZQaHlDaENvbmZpZ3VyYXRpb24gOjo9CQlTRVFVRU5DRSB7Cgl1bC1EUENILUluZm9QcmVkZWYJCQkJCVVMLURQQ0gtSW5mb1ByZWRlZiwKCWRsLUNvbW1vbkluZm9ybWF0aW9uUHJlZGVmCQkJREwtQ29tbW9uSW5mb3JtYXRpb25QcmVkZWYJT1BUSU9OQUwKfQoKUHJpbWFyeUNDUENILUluZm8gOjo9CQkJCUNIT0lDRSB7CglmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJdHgtRGl2ZXJzaXR5SW5kaWNhdG9yCQkJCUJPT0xFQU4KCX0sCgl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJLS0gc3luY0Nhc2Ugc2hvdWxkIGJlIGlnbm9yZWQgZm9yIDEuMjhNY3BzIFRERCBtb2RlCgkJc3luY0Nhc2UgCQkJCQkJCUNIT0lDRSB7CgkJCXN5bmNDYXNlMQkJCQkJCQlTRVFVRU5DRSB7CgkJCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlcgkJCQkJCgkJCX0sCgkJCXN5bmNDYXNlMgkJCQkJCQlTRVFVRU5DRSB7CgkJCQl0aW1lc2xvdFN5bmMyCQkJCQkJVGltZXNsb3RTeW5jMgoJCQl9CgkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCgkJY2VsbFBhcmFtZXRlcnNJRAkJCQkJQ2VsbFBhcmFtZXRlcnNJRAkJCQlPUFRJT05BTCwKCQlzY3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KCX0KfQoKUHJpbWFyeUNDUENILUluZm8tcjQgOjo9CQkJQ0hPSUNFIHsKCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQl0eC1EaXZlcnNpdHlJbmRpY2F0b3IJCQkJQk9PTEVBTgoJfSwKCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKCQkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQlzeW5jQ2FzZSAJCQkJCQkJQ0hPSUNFIHsKCQkJCQlzeW5jQ2FzZTEJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlcgoJCQkJCX0sCgkJCQkJc3luY0Nhc2UyCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJdGltZXNsb3RTeW5jMgkJCQkJCVRpbWVzbG90U3luYzIKCQkJCQl9CgkJCQl9CQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKCQkJfSwKCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQl0c3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KCQkJfQoJCX0sCgkJY2VsbFBhcmFtZXRlcnNJRAkJCQkJQ2VsbFBhcmFtZXRlcnNJRAkJCQlPUFRJT05BTCwKCQlzY3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KCX0KfQoKUHJpbWFyeUNDUENILUluZm8tcjcgOjo9CQkJQ0hPSUNFIHsKCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQl0eC1EaXZlcnNpdHlJbmRpY2F0b3IJCQkJQk9PTEVBTgoJfSwKCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKCQkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQlzeW5jQ2FzZSAJCQkJCQkJQ0hPSUNFIHsKCQkJCQlzeW5jQ2FzZTEJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlcgoJCQkJCX0sCgkJCQkJc3luY0Nhc2UyCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJdGltZXNsb3RTeW5jMgkJCQkJCVRpbWVzbG90U3luYzIKCQkJCQl9CgkJCQl9CQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKCQkJfSwKCQkJdGRkNzY4IAkJCQkJCVNFUVVFTkNFIHsKCQkJCXN5bmNDYXNlIAkJCQkJCUNIT0lDRSB7CgkJCQkJc3luY0Nhc2UxCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQl0aW1lc2xvdAkJCQkJCVRpbWVzbG90TnVtYmVyCgkJCQkJfSwKCQkJCQlzeW5jQ2FzZTIJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQl0aW1lc2xvdFN5bmMyCQkJCQkJVGltZXNsb3RTeW5jMgoJCQkJCX0KCQkJCX0JCQkJCQkJCQkJCQkJCQlPUFRJT05BTAoJCQl9LAoJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCXRzdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgoJCQl9CgkJfSwKCQljZWxsUGFyYW1ldGVyc0lECQkJCQlDZWxsUGFyYW1ldGVyc0lECQkJCU9QVElPTkFMLAoJCXNjdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgoJfQp9CgpQcmltYXJ5Q0NQQ0gtSW5mby1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7Cgl0c3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4sCgljZWxsUGFyYW1ldGVyc0lECQkJCQlDZWxsUGFyYW1ldGVyc0lECQkJCU9QVElPTkFMLAoJc2N0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCn0KCi0tIEZvciAxLjI4TWNwcyBUREQsIHRoZSBmb2xsb3dpbmcgSUUgaW5jbHVkZXMgZWxlbWVudHMgZm9yIHRoZSBQQ0NQQ0ggSW5mbyBhZGRpdGlvbmFsIHRvIHRob3NlCi0tIGluIFByaW1hcnlDQ1BDSC1JbmZvClByaW1hcnlDQ1BDSC1JbmZvLUxDUi1yNC1leHQgOjo9CVNFUVVFTkNFIHsKCXRzdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgp9CgpQcmltYXJ5Q0NQQ0gtSW5mb1Bvc3QgOjo9CQkJU0VRVUVOQ0UgewoJc3luY0Nhc2UgCQkJCQkJCUNIT0lDRSB7CgkJc3luY0Nhc2UxCQkJCQkJCVNFUVVFTkNFIHsKCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIJCQkJCQoJCX0sCgkJc3luY0Nhc2UyCQkJCQkJCVNFUVVFTkNFIHsKCQkJdGltZXNsb3RTeW5jMgkJCQkJCVRpbWVzbG90U3luYzIKCQl9Cgl9LAoJY2VsbFBhcmFtZXRlcnNJRAkJCQkJQ2VsbFBhcmFtZXRlcnNJRCwKCXNjdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgp9CgpQcmltYXJ5Q0NQQ0gtSW5mb1Bvc3RUREQtTENSLXI0IDo6PQlTRVFVRU5DRSB7Cgl0c3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4sCgljZWxsUGFyYW1ldGVyc0lECQkJCQlDZWxsUGFyYW1ldGVyc0lELAoJc2N0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCn0KClByaW1hcnlDQ1BDSC1UWC1Qb3dlciA6Oj0JCQlJTlRFR0VSICg2Li40MykKClByaW1hcnlDUElDSC1JbmZvIDo6PQkJCQlTRVFVRU5DRSB7CglwcmltYXJ5U2NyYW1ibGluZ0NvZGUJCQkJUHJpbWFyeVNjcmFtYmxpbmdDb2RlCn0KClByaW1hcnlDUElDSC1UWC1Qb3dlciA6Oj0JCQlJTlRFR0VSICgtMTAuLjUwKQoKUHJpbWFyeVNjcmFtYmxpbmdDb2RlIDo6PQkJCUlOVEVHRVIgKDAuLjUxMSkKClB1bmN0dXJpbmdMaW1pdCA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJcGwwLTQwLCBwbDAtNDQsIHBsMC00OCwgcGwwLTUyLCBwbDAtNTYsCgkJCQkJCQkJCQlwbDAtNjAsIHBsMC02NCwgcGwwLTY4LCBwbDAtNzIsIHBsMC03NiwKCQkJCQkJCQkJCXBsMC04MCwgcGwwLTg0LCBwbDAtODgsIHBsMC05MiwgcGwwLTk2LCBwbDEgfQoKUFVTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mbyA6Oj0JU0VRVUVOQ0UgewoJcHVzY2gtQWxsb2NhdGlvbgkJCQkJQ0hPSUNFIHsKCQlwdXNjaC1BbGxvY2F0aW9uUGVuZGluZwkJCQlOVUxMLAoJCXB1c2NoLUFsbG9jYXRpb25Bc3NpZ25tZW50CQkJU0VRVUVOQ0UgewoJCQlwdXNjaC1BbGxvY2F0aW9uUGVyaW9kSW5mbwkJCUFsbG9jYXRpb25QZXJpb2RJbmZvLAoJCQlwdXNjaC1Qb3dlckNvbnRyb2xJbmZvCQkJCVVMLVRhcmdldFNJUgkJCQlPUFRJT05BTCwKCQkJY29uZmlndXJhdGlvbgkJCQkJCUNIT0lDRSB7CgkJCQlvbGQtQ29uZmlndXJhdGlvbgkJCQkJU0VRVUVOQ0UgewoJCQkJCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCURFRkFVTFQgMSwKCQkJCQlwdXNjaC1JZGVudGl0eQkJCQkJCVBVU0NILUlkZW50aXR5CgkJCQl9LAoJCQkJbmV3LUNvbmZpZ3VyYXRpb24JCQkJCVNFUVVFTkNFIHsKCQkJCQlwdXNjaC1JbmZvCQkJCQkJCVBVU0NILUluZm8sCgkJCQkJcHVzY2gtSWRlbnRpdHkJCQkJCQlQVVNDSC1JZGVudGl0eQkJT1BUSU9OQUwKCQkJCX0KCQkJfQoJCX0KCX0KfQoKUFVTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mby1yNCA6Oj0JU0VRVUVOQ0UgewoJcHVzY2gtQWxsb2NhdGlvbgkJCQkJQ0hPSUNFIHsKCQlwdXNjaC1BbGxvY2F0aW9uUGVuZGluZwkJCQlOVUxMLAoJCXB1c2NoLUFsbG9jYXRpb25Bc3NpZ25tZW50CQkJU0VRVUVOQ0UgewoJCQlwdXNjaC1BbGxvY2F0aW9uUGVyaW9kSW5mbwkJCUFsbG9jYXRpb25QZXJpb2RJbmZvLAoJCQlwdXNjaC1Qb3dlckNvbnRyb2xJbmZvCQkJCVBVU0NILVBvd2VyQ29udHJvbEluZm8tcjQJT1BUSU9OQUwsCgkJCWNvbmZpZ3VyYXRpb24JCQkJCQlDSE9JQ0UgewoJCQkJb2xkLUNvbmZpZ3VyYXRpb24JCQkJCVNFUVVFTkNFIHsKCQkJCQl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQlERUZBVUxUIDEsCgkJCQkJcHVzY2gtSWRlbnRpdHkJCQkJCQlQVVNDSC1JZGVudGl0eQoJCQkJfSwKCQkJCW5ldy1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CgkJCQkJcHVzY2gtSW5mbwkJCQkJCQlQVVNDSC1JbmZvLXI0LAoJCQkJCXB1c2NoLUlkZW50aXR5CQkJCQkJUFVTQ0gtSWRlbnRpdHkJCU9QVElPTkFMCgkJCQl9CgkJCX0KCQl9Cgl9Cn0KClBVU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjcgOjo9CVNFUVVFTkNFIHsKCXB1c2NoLUFsbG9jYXRpb24JCQkJCUNIT0lDRSB7CgkJcHVzY2gtQWxsb2NhdGlvblBlbmRpbmcJCQkJTlVMTCwKCQlwdXNjaC1BbGxvY2F0aW9uQXNzaWdubWVudAkJCVNFUVVFTkNFIHsKCQkJcHVzY2gtQWxsb2NhdGlvblBlcmlvZEluZm8JCQlBbGxvY2F0aW9uUGVyaW9kSW5mbywKCQkJcHVzY2gtUG93ZXJDb250cm9sSW5mbwkJCQlQVVNDSC1Qb3dlckNvbnRyb2xJbmZvLXI3CU9QVElPTkFMLAoJCQljb25maWd1cmF0aW9uCQkJCQkJQ0hPSUNFIHsKCQkJCW9sZC1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CgkJCQkJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJREVGQVVMVCAxLAoJCQkJCXB1c2NoLUlkZW50aXR5CQkJCQkJUFVTQ0gtSWRlbnRpdHkKCQkJCX0sCgkJCQluZXctQ29uZmlndXJhdGlvbgkJCQkJU0VRVUVOQ0UgewoJCQkJCXB1c2NoLUluZm8JCQkJCQkJUFVTQ0gtSW5mby1WSENSLAoJCQkJCXB1c2NoLUlkZW50aXR5CQkJCQkJUFVTQ0gtSWRlbnRpdHkJCU9QVElPTkFMCgkJCQl9CgkJCX0KCQl9Cgl9Cn0KClBVU0NILUlkZW50aXR5IDo6PQkJCQkJSU5URUdFUiAoMS4uaGlQVVNDSGlkZW50aXRpZXMpCgpQVVNDSC1JbmZvIDo6PQkJCQkJCVNFUVVFTkNFIHsKCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAoJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAoJcHVzY2gtVGltZXNsb3RzQ29kZXMJCQkJVXBsaW5rVGltZXNsb3RzQ29kZXMJCQkJT1BUSU9OQUwKfQoKUFVTQ0gtSW5mby1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAoJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAoJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CgkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCXB1c2NoLVRpbWVzbG90c0NvZGVzCQkJCVVwbGlua1RpbWVzbG90c0NvZGVzCQlPUFRJT05BTAoJCX0sCgkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCXB1c2NoLVRpbWVzbG90c0NvZGVzCQkJCVVwbGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNAlPUFRJT05BTAoJCX0KCX0KfQoKUFVTQ0gtSW5mby1WSENSIDo6PQkJCQkJU0VRVUVOQ0UgewoJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCgljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCglwdXNjaC1UaW1lc2xvdHNDb2Rlcy1WSENSCQkJVXBsaW5rVGltZXNsb3RzQ29kZXMtVkhDUgkJCU9QVElPTkFMCn0KClBVU0NILUluZm8tTENSLXI0IDo6PQkJCQlTRVFVRU5DRSB7Cgl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKCgljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCglwdXNjaC1UaW1lc2xvdHNDb2RlcwkJCQlVcGxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQJCQlPUFRJT05BTAp9CgpQVVNDSC1Qb3dlckNvbnRyb2xJbmZvLXI0IDo6PQkJU0VRVUVOQ0UgewoJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtUFVTQ0hkZXMgZm9yIDEuMjhNY3BzIFRERAoJLS0gQWN0dWFsIHZhbHVlIFBSWC1QVVNDSGRlcyA9ICh2YWx1ZSBvZiBJRSAidWwtVGFyZ2V0U0lSIiDQIDEyMCkKCXVsLVRhcmdldFNJUgkJCQkJCVVMLVRhcmdldFNJUiwKCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgewoJCXRkZDM4NAkJCQkJCQkJTlVMTCwKCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdHBjLVN0ZXBTaXplCQkJCQkJVFBDLVN0ZXBTaXplVERECQkJCU9QVElPTkFMCgkJfQoJfQp9CgpQVVNDSC1Qb3dlckNvbnRyb2xJbmZvLXI3IDo6PQkJU0VRVUVOQ0UgewoJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtUFVTQ0hkZXMgZm9yIDEuMjhNY3BzIFRERAoJLS0gQWN0dWFsIHZhbHVlIFBSWC1QVVNDSGRlcyA9ICh2YWx1ZSBvZiBJRSAidWwtVGFyZ2V0U0lSIiDQIDEyMCkKCXVsLVRhcmdldFNJUgkJCQkJCVVMLVRhcmdldFNJUiwKCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgewoJCXRkZDM4NAkJCQkJCQkJTlVMTCwKCQl0ZGQ3NjgJCQkJCQkJCU5VTEwsCgkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCXRwYy1TdGVwU2l6ZQkJCQkJCVRQQy1TdGVwU2l6ZVRERAkJCQlPUFRJT05BTAoJCX0KCX0KfQoKUFVTQ0gtU3lzSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKCXB1c2NoLUlkZW50aXR5CQkJCQkJUFVTQ0gtSWRlbnRpdHksCglwdXNjaC1JbmZvCQkJCQkJCVBVU0NILUluZm8sCgl1c2NoLVRGUwkJCQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQJCQkJCU9QVElPTkFMLAoJdXNjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMCn0KClBVU0NILVN5c0luZm8tVkhDUiA6Oj0JCQkJCVNFUVVFTkNFIHsKCXB1c2NoLUlkZW50aXR5CQkJCQkJUFVTQ0gtSWRlbnRpdHksCglwdXNjaC1JbmZvLVZIQ1IJCQkJCQlQVVNDSC1JbmZvLVZIQ1IsCgl1c2NoLVRyYW5zcG9ydENoYW5uZWxzSW5mbwkJCVVTQ0gtVHJhbnNwb3J0Q2hhbm5lbHNJbmZvCQkJT1BUSU9OQUwsCgl1c2NoLVRGQ1MJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwKfQoKUFVTQ0gtU3lzSW5mby1IQ1ItcjUgOjo9CQkJCQlTRVFVRU5DRSB7CglwdXNjaC1JZGVudGl0eQkJCQkJCVBVU0NILUlkZW50aXR5LAoJcHVzY2gtSW5mbwkJCQkJCQlQVVNDSC1JbmZvLAoJdXNjaC1UcmFuc3BvcnRDaGFubmVsc0luZm8JCQlVU0NILVRyYW5zcG9ydENoYW5uZWxzSW5mbwkJCU9QVElPTkFMLAoJdXNjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMCn0KClBVU0NILVN5c0luZm8tTENSLXI0IDo6PQkJCVNFUVVFTkNFIHsKCXB1c2NoLUlkZW50aXR5CQkJCQkJUFVTQ0gtSWRlbnRpdHksCglwdXNjaC1JbmZvCQkJCQkJCVBVU0NILUluZm8tTENSLXI0LAoJdXNjaC1URlMJCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlPUFRJT05BTCwKCXVzY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTAp9CgpQVVNDSC1TeXNJbmZvTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBVU0NIKSkgT0YKCQkJCQkJCQkJCVBVU0NILVN5c0luZm8KClBVU0NILVN5c0luZm9MaXN0LUhDUi1yNSA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UFVTQ0gpKSBPRiBQVVNDSC1TeXNJbmZvLUhDUi1yNQoKUFVTQ0gtU3lzSW5mb0xpc3QtTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBVU0NIKSkgT0YKCQkJCQkJCQkJCVBVU0NILVN5c0luZm8tTENSLXI0CgpQVVNDSC1TeXNJbmZvTGlzdC1TRk4gOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBVU0NIKSkgT0YKCQkJCQkJCQkJCVNFUVVFTkNFIHsKCXB1c2NoLVN5c0luZm8JCQkJCQkJUFVTQ0gtU3lzSW5mbywKCXNmbi1UaW1lSW5mbwkJCQkJCQlTRk4tVGltZUluZm8JCQkJCU9QVElPTkFMCn0KClBVU0NILVN5c0luZm9MaXN0LVNGTi1IQ1ItcjUgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBVU0NIKSkgT0YKCQkJCQkJCQkJCVNFUVVFTkNFIHsKCXB1c2NoLVN5c0luZm8JCQkJCQkJUFVTQ0gtU3lzSW5mby1IQ1ItcjUsCglzZm4tVGltZUluZm8JCQkJCQkJU0ZOLVRpbWVJbmZvCQkJCQlPUFRJT05BTAp9CgpQVVNDSC1TeXNJbmZvTGlzdC1TRk4tTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBVU0NIKSkgT0YKCQkJCQkJCQkJCVNFUVVFTkNFIHsKCXB1c2NoLVN5c0luZm8JCQkJCQkJUFVTQ0gtU3lzSW5mby1MQ1ItcjQsCglzZm4tVGltZUluZm8JCQkJCQkJU0ZOLVRpbWVJbmZvCQkJCQlPUFRJT05BTAp9CgpQVVNDSC1TeXNJbmZvTGlzdC1TRk4tVkhDUiA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQVVNDSCkpIE9GCgkJCQkJCQkJCQlTRVFVRU5DRSB7CglwdXNjaC1TeXNJbmZvLVZIQ1IJCQkJCQlQVVNDSC1TeXNJbmZvLVZIQ1IsCglzZm4tVGltZUluZm8JCQkJCQkJU0ZOLVRpbWVJbmZvCQkJCQlPUFRJT05BTAp9CgpSQUNILVRyYW5zbWlzc2lvblBhcmFtZXRlcnMgOjo9CQlTRVFVRU5DRSB7CgltbWF4CQkJCQkJCQlJTlRFR0VSICgxLi4zMiksCgluYjAxTWluCQkJCQkJCQlOQjAxLAoJbmIwMU1heAkJCQkJCQkJTkIwMQp9CgpSZWR1Y2VkU2NyYW1ibGluZ0NvZGVOdW1iZXIgOjo9CQlJTlRFR0VSICgwLi44MTkxKQoKUmVwZXRpdGlvblBlcmlvZEFuZExlbmd0aCA6Oj0JCUNIT0lDRSB7CglyZXBldGl0aW9uUGVyaW9kMQkJCQkJTlVMTCwKCS0tIHJlcGV0aXRpb25QZXJpb2QyIGNvdWxkIGp1c3QgYXMgd2VsbCBiZSBOVUxMIGFsc28uCglyZXBldGl0aW9uUGVyaW9kMgkJCQkJSU5URUdFUiAoMS4uMSksCglyZXBldGl0aW9uUGVyaW9kNAkJCQkJSU5URUdFUiAoMS4uMyksCglyZXBldGl0aW9uUGVyaW9kOAkJCQkJSU5URUdFUiAoMS4uNyksCglyZXBldGl0aW9uUGVyaW9kMTYJCQkJCUlOVEVHRVIgKDEuLjE1KSwKCXJlcGV0aXRpb25QZXJpb2QzMgkJCQkJSU5URUdFUiAoMS4uMzEpLAoJcmVwZXRpdGlvblBlcmlvZDY0CQkJCQlJTlRFR0VSICgxLi42MykKfQoKUmVwZXRpdGlvblBlcmlvZExlbmd0aEFuZE9mZnNldCA6Oj0gQ0hPSUNFIHsKCXJlcGV0aXRpb25QZXJpb2QxCQkJCQlOVUxMLAoJcmVwZXRpdGlvblBlcmlvZDIJCQkJCVNFUVVFTkNFIHsKCQlsZW5ndGgJCQkJCQkJCU5VTEwsCgkJb2Zmc2V0CQkJCQkJCQlJTlRFR0VSICgwLi4xKQoJfSwKCXJlcGV0aXRpb25QZXJpb2Q0CQkJCQlTRVFVRU5DRSB7CgkJbGVuZ3RoCQkJCQkJCQlJTlRFR0VSICgxLi4zKSwKCQlvZmZzZXQJCQkJCQkJCUlOVEVHRVIgKDAuLjMpCgl9LAoJcmVwZXRpdGlvblBlcmlvZDgJCQkJCVNFUVVFTkNFIHsKCQlsZW5ndGgJCQkJCQkJCUlOVEVHRVIgKDEuLjcpLAoJCW9mZnNldAkJCQkJCQkJSU5URUdFUiAoMC4uNykKCX0sCglyZXBldGl0aW9uUGVyaW9kMTYJCQkJCVNFUVVFTkNFIHsKCQlsZW5ndGgJCQkJCQkJCUlOVEVHRVIgKDEuLjE1KSwKCQlvZmZzZXQJCQkJCQkJCUlOVEVHRVIgKDAuLjE1KQoJfSwKCXJlcGV0aXRpb25QZXJpb2QzMgkJCQkJU0VRVUVOQ0UgewoJCWxlbmd0aAkJCQkJCQkJSU5URUdFUiAoMS4uMzEpLAoJCW9mZnNldAkJCQkJCQkJSU5URUdFUiAoMC4uMzEpCgl9LAoJcmVwZXRpdGlvblBlcmlvZDY0CQkJCQlTRVFVRU5DRSB7CgkJbGVuZ3RoCQkJCQkJCQlJTlRFR0VSICgxLi42MyksCgkJb2Zmc2V0CQkJCQkJCQlJTlRFR0VSICgwLi42MykKCX0KfQoKUmVwbGFjZWRQRFNDSC1Db2RlSW5mbyA6Oj0JCQlTRVFVRU5DRSB7Cgl0ZmNpLUZpZWxkMgkJCQkJCQlNYXhURkNJLUZpZWxkMlZhbHVlLAoJc3ByZWFkaW5nRmFjdG9yCQkJCQkJU0YtUERTQ0gsCgljb2RlTnVtYmVyCQkJCQkJCUNvZGVOdW1iZXJEU0NILAoJbXVsdGlDb2RlSW5mbwkJCQkJCU11bHRpQ29kZUluZm8KfQoKUmVwbGFjZWRQRFNDSC1Db2RlSW5mb0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEZDSS0yLUNvbWJzKSkgT0YKCQkJCQkJCQkJCVJlcGxhY2VkUERTQ0gtQ29kZUluZm8KClJlcFBlckxlbmd0aE9mZnNldC1QSUNIIDo6PQkJCUNIT0lDRSB7CglycHA0LTIJCQkJCQkJCUlOVEVHRVIgKDAuLjMpLCAKCXJwcDgtMgkJCQkJCQkJSU5URUdFUiAoMC4uNyksIAoJcnBwOC00CQkJCQkJCQlJTlRFR0VSICgwLi43KSwKCXJwcDE2LTIJCQkJCQkJCUlOVEVHRVIgKDAuLjE1KSwgCglycHAxNi00CQkJCQkJCQlJTlRFR0VSICgwLi4xNSksIAoJcnBwMzItMgkJCQkJCQkJSU5URUdFUiAoMC4uMzEpLCAKCXJwcDMyLTQJCQkJCQkJCUlOVEVHRVIgKDAuLjMxKSwgCglycHA2NC0yCQkJCQkJCQlJTlRFR0VSICgwLi42MyksIAoJcnBwNjQtNAkJCQkJCQkJSU5URUdFUiAoMC4uNjMpCn0KClJlcFBlckxlbmd0aE9mZnNldC1NSUNIIDo6PQkJCUNIT0lDRSB7CglycHA0LTIJCQkJCQkJCUlOVEVHRVIgKDAuLjMpLAoJcnBwOC0yCQkJCQkJCQlJTlRFR0VSICgwLi43KSwKCXJwcDgtNAkJCQkJCQkJSU5URUdFUiAoMC4uNyksCglycHAxNi0yCQkJCQkJCQlJTlRFR0VSICgwLi4xNSksCglycHAxNi00CQkJCQkJCQlJTlRFR0VSICgwLi4xNSksCglycHAzMi0yCQkJCQkJCQlJTlRFR0VSICgwLi4zMSksCglycHAzMi00CQkJCQkJCQlJTlRFR0VSICgwLi4zMSksCglycHA2NC0yCQkJCQkJCQlJTlRFR0VSICgwLi42MyksCglycHA2NC00CQkJCQkJCQlJTlRFR0VSICgwLi42MykKfQoKUmVzdHJpY3RlZFRyQ0ggOjo9CQkJCQlTRVFVRU5DRSB7CglkbC1yZXN0cmljdGVkVHJDaC1UeXBlCQkJCURMLVRyQ0gtVHlwZSwKCXJlc3RyaWN0ZWRETC1UckNILUlkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAoJYWxsb3dlZFRGSUxpc3QJCQkJCQlBbGxvd2VkVEZJLUxpc3QKfQoKUmVzdHJpY3RlZFRyQ0gtSW5mb0xpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUoMS4ubWF4VHJDSCkpIE9GCgkJCQkJCQkJCQlSZXN0cmljdGVkVHJDSAoKUkwtQWRkaXRpb25JbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7CglwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCglkbC1EUENILUluZm9QZXJSTAkJCQkJREwtRFBDSC1JbmZvUGVyUkwsCgktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbgoJLS0gYW5kIHRoZSBJRXMgc2hvdWxkIGJlIGlnbm9yZWQuCglkdW1teQkJCQkJCQkJQk9PTEVBTiwKCWR1bW15MgkJCQkJCQkJU0NDUENILUluZm9Gb3JGQUNICQkJCQlPUFRJT05BTAp9CgpSTC1BZGRpdGlvbkluZm9ybWF0aW9uLXI2IDo6PQkJU0VRVUVOQ0UgewoJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAoJY2VsbC1JZAkJCQkJCQkJQ2VsbElkZW50aXR5CQkJCQkJT1BUSU9OQUwsCglkbC1kcGNoSW5mbwkJCQkJCQlDSE9JQ0UgewoJCWRsLURQQ0gtSW5mb1BlclJMCQkJCQlETC1EUENILUluZm9QZXJSTC1yNSwKCQlkbC1GRFBDSC1JbmZvUGVyUkwJCQkJCURMLUZEUENILUluZm9QZXJSTC1yNgoJfSwKCWUtSElDSC1JbmZvcm1hdGlvbgkJCQkJRS1ISUNILUluZm9ybWF0aW9uCQkJCQlPUFRJT05BTCwKCWUtUkdDSC1JbmZvcm1hdGlvbgkJCQkJRS1SR0NILUluZm9ybWF0aW9uCQkJCQlPUFRJT05BTAp9CgpSTC1BZGRpdGlvbkluZm9ybWF0aW9uTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTC0xKSkgT0YKCQkJCQkJCQkJCVJMLUFkZGl0aW9uSW5mb3JtYXRpb24KClJMLUFkZGl0aW9uSW5mb3JtYXRpb25MaXN0LXI2IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwtMSkpIE9GCgkJCQkJCQkJCQlSTC1BZGRpdGlvbkluZm9ybWF0aW9uLXI2CgpSTC1JZGVudGlmaWVyTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKCQkJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvCgpSTC1SZW1vdmFsSW5mb3JtYXRpb25MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKCQkJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvCgpSUFAgOjo9CQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCW1vZGUwLCBtb2RlMSB9CgpTLUZpZWxkIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWUxYml0LCBlMmJpdHMgfQoKU0NDUENILUNoYW5uZWxpc2F0aW9uQ29kZSA6Oj0JCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAoJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAoJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAoJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiB9CgpTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlLVZIQ1IgOjo9CUVOVU1FUkFURUQgewoJCQkJCQkJCQkJY2MzMi0xLCBjYzMyLTIsIGNjMzItMywgY2MzMi00LAoJCQkJCQkJCQkJY2MzMi01LCBjYzMyLTYsIGNjMzItNywgY2MzMi04LAoJCQkJCQkJCQkJY2MzMi05LCBjYzMyLTEwLCBjYzMyLTExLCBjYzMyLTEyLAoJCQkJCQkJCQkJY2MzMi0xMywgY2MzMi0xNCwgY2MzMi0xNSwgY2MzMi0xNiwKCQkJCQkJCQkJCWNjMzItMTcsIGNjMzItMTgsIGNjMzItMTksIGNjMzItMjAsCgkJCQkJCQkJCQljYzMyLTIxLCBjYzMyLTIyLCBjYzMyLTIzLCBjYzMyLTI0LAoJCQkJCQkJCQkJY2MzMi0yNSwgY2MzMi0yNiwgY2MzMi0yNywgY2MzMi0yOCwKCQkJCQkJCQkJCWNjMzItMjksIGNjMzItMzAsIGNjMzItMzEsIGNjMzItMzIgfQoKU0NDUENILUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi4xNikpIE9GCgkJCQkJCQkJCQlTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlCgpTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdC1WSENSIDo6PSBTRVFVRU5DRSAoU0laRSAoMS4uMzIpKSBPRgoJCQkJCQkJCQkJU0NDUENILUNoYW5uZWxpc2F0aW9uQ29kZS1WSENSCgpTQ0NQQ0gtSW5mb0ZvckZBQ0ggOjo9CQkJCVNFUVVFTkNFIHsKCXNlY29uZGFyeUNDUENILUluZm8JCQkJCVNlY29uZGFyeUNDUENILUluZm8sCgl0ZmNzCQkJCQkJCQlURkNTLAoJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlmYWNoLVBDSC1JbmZvcm1hdGlvbkxpc3QJCQlGQUNILVBDSC1JbmZvcm1hdGlvbkxpc3QsCgkJCXNpYi1SZWZlcmVuY2VMaXN0RkFDSAkJCQlTSUItUmVmZXJlbmNlTGlzdEZBQ0gKCQl9LAoJCXRkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlmYWNoLVBDSC1JbmZvcm1hdGlvbkxpc3QJCQlGQUNILVBDSC1JbmZvcm1hdGlvbkxpc3QKCQl9Cgl9Cn0KClNDQ1BDSC1JbmZvRm9yRkFDSC1yNCA6Oj0JCQkJU0VRVUVOQ0UgewoJc2Vjb25kYXJ5Q0NQQ0gtSW5mbwkJCQkJU2Vjb25kYXJ5Q0NQQ0gtSW5mby1yNCwKCXRmY3MJCQkJCQkJCVRGQ1MsCglmYWNoLVBDSC1JbmZvcm1hdGlvbkxpc3QJCQlGQUNILVBDSC1JbmZvcm1hdGlvbkxpc3QsCgltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXNpYi1SZWZlcmVuY2VMaXN0RkFDSAkJCVNJQi1SZWZlcmVuY2VMaXN0RkFDSAoJCX0sCgkJdGRkCQkJCQkJCQlOVUxMCgl9Cn0KClNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbiA6Oj0JCVNFUVVFTkNFIHsKCXNlY29uZGFyeUNDUENILUluZm8JCQkJCVNlY29uZGFyeUNDUENILUluZm8sCgl0ZmNzCQkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTCwKCWZhY2gtUENILUluZm9ybWF0aW9uTGlzdAkJCUZBQ0gtUENILUluZm9ybWF0aW9uTGlzdAkJCU9QVElPTkFMLAoJcGljaC1JbmZvCQkJCQkJCVBJQ0gtSW5mbwkJCQkJCQlPUFRJT05BTAp9CgpTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tTENSLXI0LWV4dCA6Oj0JU0VRVUVOQ0UgewoJc2Vjb25kYXJ5Q0NQQ0gtTENSLUV4dGVuc2lvbnMJU2Vjb25kYXJ5Q0NQQ0gtSW5mby1MQ1ItcjQtZXh0LAoJLS0gcGljaC1JbmZvIGluIHRoZSBTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24gSUUgc2hhbGwgYmUgYWJzZW50LAoJLS0gYW5kIGluc3RlYWQgdGhlIGZvbGxvd2luZyB1c2VkLgoJcGljaC1JbmZvCQkJCQkJUElDSC1JbmZvLUxDUi1yNAkJCQkJCU9QVElPTkFMCn0KClNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbi1yNyA6Oj0JCVNFUVVFTkNFIHsKCXNlY29uZGFyeUNDUENILUluZm8JCQkJCVNlY29uZGFyeUNDUENILUluZm8tcjcsCgl0ZmNzCQkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTCwKCWZhY2gtUENILUluZm9ybWF0aW9uTGlzdAkJCUZBQ0gtUENILUluZm9ybWF0aW9uTGlzdAkJCU9QVElPTkFMLAoJcGljaC1JbmZvCQkJCQkJCVBJQ0gtSW5mby1yNwkJCQkJCU9QVElPTkFMCn0KClNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhTQ0NQQ0gpKSBPRgoJCQkJCQkJCQkJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uCgpTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LXI3IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U0NDUENIKSkgT0YKCQkJCQkJCQkJCVNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbi1yNwoKLS0gU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQtZXh0IGluY2x1ZGVzIGVsZW1lbnRzIGFkZGl0aW9uYWwgdG8gdGhvc2UgaW4KLS0gU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdCBmb3IgdGhlIDEuMjhNY3BzIFRERC4gVGhlIG9yZGVyIG9mIHRoZSBJRXMKLS0gaW5kaWNhdGVzIHdoaWNoIFNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbi1MQ1ItcjQtZXh0IElFIGV4dGVuZHMgd2hpY2gKLS0gU0NDUENILVN5c3RlbUluZm9ybWF0aW9uIElFLgpTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNC1leHQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhTQ0NQQ0gpKSBPRgoJCQkJCQkJCQkJCQlTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tTENSLXI0LWV4dAoKLS0gVGhlIFNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbi1NQk1TLXI2IGlzIHVzZWQgZm9yIGFuIFMtQ0NQQ0ggZGVkaWNhdGVkIGZvciBNQk1TIHB1cnBvc2VzLgpTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tTUJNUy1yNiA6Oj0gU0VRVUVOQ0UgewoJc2Vjb25kYXJ5Q0NQQ0hJbmZvLU1CTVMJCQkJU2Vjb25kYXJ5Q0NQQ0hJbmZvLU1CTVMtcjYsCgl0cmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvblNldAkJVEZDUywKCWZhY2hDYXJyeWluZ01DQ0gJCQkJCVNFUVVFTkNFIHsKCQltY2NoLXRyYW5zcG9ydEZvcm1hdFNldAkJCQlUcmFuc3BvcnRGb3JtYXRTZXQsCgkJbWNjaC1Db25maWd1cmF0aW9uSW5mbwkJCQlNQk1TLU1DQ0gtQ29uZmlndXJhdGlvbkluZm8tcjYKCX0sCglmYWNoQ2FycnlpbmdNVENILUxpc3QJCQkJTUJNUy1GQUNIQ2FycnlpbmdNVENILUxpc3QJCQlPUFRJT05BTCwKCS0tIElmIHNjaGVkdWxpbmdJbmZvcm1hdGlvbiBpcyBwcm92aWRlZAoJZmFjaENhcnJ5aW5nTVNDSAkJCQkJU0VRVUVOQ0UgewoJCW1zY2gtdHJhbnNwb3J0Rm9ybWF0U2V0CQkJCVRyYW5zcG9ydEZvcm1hdFNldCwKCQltc2NoLUNvbmZpZ3VyYXRpb25JbmZvCQkJCU1CTVMtTVNDSC1Db25maWd1cmF0aW9uSW5mby1yNgoJfQkJT1BUSU9OQUwKfQoKLS0gVGhlIFNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbi1NQk1TLXI3IGlzIHVzZWQgZm9yIGFuIFMtQ0NQQ0ggZGVkaWNhdGVkIGZvciBNQk1TIHB1cnBvc2VzLgpTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tTUJNUy1yNyA6Oj0gU0VRVUVOQ0UgewoJc2Vjb25kYXJ5Q0NQQ0hJbmZvLU1CTVMJCQkJU2Vjb25kYXJ5Q0NQQ0hJbmZvLU1CTVMtcjcsCgl0cmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvblNldAkJVEZDUywKCWZhY2hDYXJyeWluZ01DQ0gJCQkJCVNFUVVFTkNFIHsKCQltY2NoLXRyYW5zcG9ydEZvcm1hdFNldAkJCQlUcmFuc3BvcnRGb3JtYXRTZXQsCgkJbWNjaC1Db25maWd1cmF0aW9uSW5mbwkJCQlNQk1TLU1DQ0gtQ29uZmlndXJhdGlvbkluZm8tcjYKCX0sCglmYWNoQ2FycnlpbmdNVENILUxpc3QJCQkJTUJNUy1GQUNIQ2FycnlpbmdNVENILUxpc3QJCQlPUFRJT05BTCwKCS0tIElmIHNjaGVkdWxpbmdJbmZvcm1hdGlvbiBpcyBwcm92aWRlZAoJZmFjaENhcnJ5aW5nTVNDSAkJCQkJU0VRVUVOQ0UgewoJCW1zY2gtdHJhbnNwb3J0Rm9ybWF0U2V0CQkJCVRyYW5zcG9ydEZvcm1hdFNldCwKCQltc2NoLUNvbmZpZ3VyYXRpb25JbmZvCQkJCU1CTVMtTVNDSC1Db25maWd1cmF0aW9uSW5mby1yNgoJfQkJT1BUSU9OQUwKfQoKU2NyYW1ibGluZ0NvZGVDaGFuZ2UgOjo9CQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQljb2RlQ2hhbmdlLCBub0NvZGVDaGFuZ2UgfQoKU2NyYW1ibGluZ0NvZGVUeXBlIDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXNob3J0U0MsCgkJCQkJCQkJCQlsb25nU0MgfQoKU2Vjb25kYXJ5Q0NQQ0gtSW5mbyA6Oj0JCQkJU0VRVUVOQ0UgewoJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQktLSBkdW1teTEgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBzaG91bGQgYmUgaWdub3JlZC4KCQkJZHVtbXkxCQkJCQkJCVBDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QsCgkJCS0tIGR1bW15MiBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24uICBJdCBzaG91bGQgbm90CgkJCS0tIGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCQlkdW1teTIJCQkJCQkJU2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQlPUFRJT05BTCwKCQkJc2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCU9QVElPTkFMLAoJCQlzdHRkLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKCQkJc2YtQW5kQ29kZU51bWJlcgkJCQlTRjI1Ni1BbmRDb2RlTnVtYmVyLAoJCQlwaWxvdFN5bWJvbEV4aXN0ZW5jZQkJCUJPT0xFQU4sCgkJCXRmY2ktRXhpc3RlbmNlCQkJCQlCT09MRUFOLAoJCQlwb3NpdGlvbkZpeGVkT3JGbGV4aWJsZQkJCVBvc2l0aW9uRml4ZWRPckZsZXhpYmxlLAoJCQl0aW1pbmdPZmZzZXQJCQkJCVRpbWluZ09mZnNldAkJCQkJREVGQVVMVCAwCgkJfSwKCQl0ZGQgCQkJCQkJCVNFUVVFTkNFIHsKCQkJLS0gVEFCVUxBUjogdGhlIG9mZnNldCBpcyBpbmNsdWRlZCBpbiBDb21tb25UaW1lc2xvdEluZm9TQ0NQQ0gKCQkJY29tbW9uVGltZXNsb3RJbmZvCQkJCUNvbW1vblRpbWVzbG90SW5mb1NDQ1BDSCwKCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8sCgkJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQlTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAoJCX0KCX0KfQoKU2Vjb25kYXJ5Q0NQQ0gtSW5mby1yNCA6Oj0JCVNFUVVFTkNFIHsKCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJc2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCU9QVElPTkFMLAoJCQlzdHRkLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKCQkJc2YtQW5kQ29kZU51bWJlcgkJCQlTRjI1Ni1BbmRDb2RlTnVtYmVyLAoJCQlwaWxvdFN5bWJvbEV4aXN0ZW5jZQkJCUJPT0xFQU4sCgkJCXRmY2ktRXhpc3RlbmNlCQkJCQlCT09MRUFOLAoJCQlwb3NpdGlvbkZpeGVkT3JGbGV4aWJsZQkJCVBvc2l0aW9uRml4ZWRPckZsZXhpYmxlLAoJCQl0aW1pbmdPZmZzZXQJCQkJCVRpbWluZ09mZnNldAkJCQkJREVGQVVMVCAwCgkJfSwKCQl0ZGQgCQkJCQkJCVNFUVVFTkNFIHsKCQkJLS0gVEFCVUxBUjogdGhlIG9mZnNldCBpcyBpbmNsdWRlZCBpbiBDb21tb25UaW1lc2xvdEluZm9TQ0NQQ0gKCQkJY29tbW9uVGltZXNsb3RJbmZvCQkJCUNvbW1vblRpbWVzbG90SW5mb1NDQ1BDSCwKCQkJdGRkT3B0aW9uCQkJCQkJQ0hPSUNFIHsKCQkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8KCQkJCX0sCgkJCQl0ZGQxMjgJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLUxDUi1yNAoJCQkJfQoJCQl9LAoJCQljaGFubmVsaXNhdGlvbkNvZGUJCQkJU0NDUENILUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QKCQl9Cgl9Cn0KClNlY29uZGFyeUNDUENILUluZm8tcjcgOjo9CQlTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQlPUFRJT05BTCwKCQkJc3R0ZC1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCgkJCXNmLUFuZENvZGVOdW1iZXIJCQkJU0YyNTYtQW5kQ29kZU51bWJlciwKCQkJcGlsb3RTeW1ib2xFeGlzdGVuY2UJCQlCT09MRUFOLAoJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJQk9PTEVBTiwKCQkJcG9zaXRpb25GaXhlZE9yRmxleGlibGUJCQlQb3NpdGlvbkZpeGVkT3JGbGV4aWJsZSwKCQkJdGltaW5nT2Zmc2V0CQkJCQlUaW1pbmdPZmZzZXQJCQkJCURFRkFVTFQgMAoJCX0sCgkJdGRkIAkJCQkJCQlTRVFVRU5DRSB7CgkJCS0tIFRBQlVMQVI6IHRoZSBvZmZzZXQgaXMgaW5jbHVkZWQgaW4gQ29tbW9uVGltZXNsb3RJbmZvU0NDUENICgkJCWNvbW1vblRpbWVzbG90SW5mbwkJCQlDb21tb25UaW1lc2xvdEluZm9TQ0NQQ0gsCgkJCXRkZE9wdGlvbgkJCQkJCUNIT0lDRSB7CgkJCQl0ZGQzODQJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLAoJCQkJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQlTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAoJCQkJfSwKCQkJCXRkZDc2OAkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tVkhDUiwKCQkJCQljaGFubmVsaXNhdGlvbkNvZGUJCQkJU0NDUENILUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QtVkhDUgoJCQkJfSwKCQkJCXRkZDEyOAkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0LAoJCQkJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQlTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAoJCQkJfQoJCQl9CgkJfQoJfQp9CgpTZWNvbmRhcnlDQ1BDSC1JbmZvLUxDUi1yNC1leHQgOjo9CVNFUVVFTkNFIHsKCWluZGl2aWR1YWxUaW1lc2xvdExDUi1FeHQJCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLUxDUi1yNC1leHQKfQoKU2Vjb25kYXJ5Q0NQQ0hJbmZvLU1CTVMtcjYgOjo9CQlTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQlPUFRJT05BTCwKCQkJc3R0ZC1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCgkJCXNmLUFuZENvZGVOdW1iZXIJCQkJU0YyNTYtQW5kQ29kZU51bWJlciwKCQkJdGltaW5nT2Zmc2V0CQkJCQlUaW1pbmdPZmZzZXQJCQkJCURFRkFVTFQgMAoJCX0sCgkJdGRkMzg0CQkJCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMsCgkJdGRkMTI4CQkJCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMtTENSLXI0Cgl9Cn0KClNlY29uZGFyeUNDUENISW5mby1NQk1TLXI3IDo6PQkJU0VRVUVOQ0UgewoJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlzZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCVNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJT1BUSU9OQUwsCgkJCXN0dGQtSW5kaWNhdG9yCQkJCQlCT09MRUFOLAoJCQlzZi1BbmRDb2RlTnVtYmVyCQkJCVNGMjU2LUFuZENvZGVOdW1iZXIsCgkJCXRpbWluZ09mZnNldAkJCQkJVGltaW5nT2Zmc2V0CQkJCQlERUZBVUxUIDAKCQl9LAoJCXRkZDM4NAkJCQkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzLAoJCXRkZDc2OAkJCQkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzLVZIQ1IsCgkJdGRkMTI4CQkJCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMtTENSLXI0Cgl9Cn0KClNlY29uZGFyeUNQSUNILUluZm8gOjo9CQkJCVNFUVVFTkNFIHsKCXNlY29uZGFyeURMLVNjcmFtYmxpbmdDb2RlCQkJU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQkJT1BUSU9OQUwsCgljaGFubmVsaXNhdGlvbkNvZGUJCQkJCUNoYW5uZWxpc2F0aW9uQ29kZTI1Ngp9CgpTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZSA6Oj0JCQlJTlRFR0VSICgxLi4xNSkKClNlY29uZEludGVybGVhdmluZ01vZGUgOjo9CQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlmcmFtZVJlbGF0ZWQsIHRpbWVzbG90UmVsYXRlZCB9CgotLSBTRjI1Ni1BbmRDb2RlTnVtYmVyIGVuY29kZXMgYm90aCAiU3ByZWFkaW5nIGZhY3RvciIgYW5kICJDb2RlIE51bWJlciIKU0YyNTYtQW5kQ29kZU51bWJlciA6Oj0JCQkJQ0hPSUNFIHsKCXNmNAkJCQkJCQkJCUlOVEVHRVIgKDAuLjMpLAoJc2Y4CQkJCQkJCQkJSU5URUdFUiAoMC4uNyksCglzZjE2CQkJCQkJCQlJTlRFR0VSICgwLi4xNSksCglzZjMyCQkJCQkJCQlJTlRFR0VSICgwLi4zMSksCglzZjY0CQkJCQkJCQlJTlRFR0VSICgwLi42MyksCglzZjEyOAkJCQkJCQkJSU5URUdFUiAoMC4uMTI3KSwKCXNmMjU2CQkJCQkJCQlJTlRFR0VSICgwLi4yNTUpCn0KCi0tIFNGNTEyLUFuZENvZGVOdW1iZXIgZW5jb2RlcyBib3RoICJTcHJlYWRpbmcgZmFjdG9yIiBhbmQgIkNvZGUgTnVtYmVyIgpTRjUxMi1BbmRDb2RlTnVtYmVyIDo6PQkJCQlDSE9JQ0UgewoJc2Y0CQkJCQkJCQkJSU5URUdFUiAoMC4uMyksCglzZjgJCQkJCQkJCQlJTlRFR0VSICgwLi43KSwKCXNmMTYJCQkJCQkJCUlOVEVHRVIgKDAuLjE1KSwKCXNmMzIJCQkJCQkJCUlOVEVHRVIgKDAuLjMxKSwKCXNmNjQJCQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKCXNmMTI4CQkJCQkJCQlJTlRFR0VSICgwLi4xMjcpLAoJc2YyNTYJCQkJCQkJCUlOVEVHRVIgKDAuLjI1NSksCglzZjUxMgkJCQkJCQkJSU5URUdFUiAoMC4uNTExKQp9CgotLSBTRjUxMi1BbmRQaWxvdCBlbmNvZGVzIGJvdGggIlNwcmVhZGluZyBmYWN0b3IiIGFuZCAiTnVtYmVyIG9mIGJpdHMgZm9yIFBpbG90IGJpdHMiClNGNTEyLUFuZFBpbG90IDo6PQkJCQkJQ0hPSUNFIHsKCXNmZDQJCQkJCQkJCU5VTEwsIAoJc2ZkOAkJCQkJCQkJTlVMTCwgCglzZmQxNgkJCQkJCQkJTlVMTCwgCglzZmQzMgkJCQkJCQkJTlVMTCwKCXNmZDY0CQkJCQkJCQlOVUxMLCAKCXNmZDEyOAkJCQkJCQkJUGlsb3RCaXRzMTI4LCAKCXNmZDI1NgkJCQkJCQkJUGlsb3RCaXRzMjU2LCAKCXNmZDUxMgkJCQkJCQkJTlVMTAp9ClNGLVBEU0NIIDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJc2ZwNCwgc2ZwOCwgc2ZwMTYsIHNmcDMyLAoJCQkJCQkJCQkJc2ZwNjQsIHNmcDEyOCwgc2ZwMjU2IH0KClNGLVBSQUNIIDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJc2ZwcjMyLCBzZnByNjQsIHNmcHIxMjgsIHNmcHIyNTYgfQoKU0ZOLVRpbWVJbmZvIDo6PQkJCQkJU0VRVUVOQ0UgewoJYWN0aXZhdGlvblRpbWVTRk4JCQkJCUlOVEVHRVIgKDAuLjQwOTUpLAoJcGh5c0NoRHVyYXRpb24JCQkJCUR1cmF0aW9uVGltZUluZm8KfQoKLS0gYWN0dWFsIHNjaGVkdWxpbmcgdmFsdWUgPSAyKHNpZ25hbGxlZCB2YWx1ZSArMSkgYW5kIGlzIHRoZSBwZXJpb2RpY2l0eSBvZiBzZW5kaW5nIHNwZWNpYWwgYnVyc3QgZnJhbWVzClNwZWNpYWxCdXJzdFNjaGVkdWxpbmcgOjo9CQkJCUlOVEVHRVIgKDAuLjcpCgpTcHJlYWRpbmdGYWN0b3IgOjo9CQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXNmNCwgc2Y4LCBzZjE2LCBzZjMyLAoJCQkJCQkJCQkJc2Y2NCwgc2YxMjgsIHNmMjU2IH0KClNSQi1kZWxheSA6Oj0JCQkJCQlJTlRFR0VSICgwLi43KQoKU1NEVC1DZWxsSWRlbnRpdHkgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJc3NkdC1pZC1hLCBzc2R0LWlkLWIsIHNzZHQtaWQtYywKCQkJCQkJCQkJCXNzZHQtaWQtZCwgc3NkdC1pZC1lLCBzc2R0LWlkLWYsCgkJCQkJCQkJCQlzc2R0LWlkLWcsIHNzZHQtaWQtaCB9CgpTU0RULUluZm9ybWF0aW9uIDo6PQkJCQlTRVFVRU5DRSB7CglzLUZpZWxkCQkJCQkJCQlTLUZpZWxkLAoJY29kZVdvcmRTZXQJCQkJCQkJQ29kZVdvcmRTZXQKfQoKU1NEVC1JbmZvcm1hdGlvbi1yNCA6Oj0JCQkJU0VRVUVOQ0UgewoJcy1GaWVsZAkJCQkJCQkJUy1GaWVsZCwKCWNvZGVXb3JkU2V0CQkJCQkJCUNvZGVXb3JkU2V0LAoJc3NkdC1VTC1yNAkJCQkJCQlTU0RULVVMCQkJCQkJCQkJT1BUSU9OQUwKfQoKU1NEVC1VTCA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl1bCwgdWwtQW5kREwgfQoKU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNCA6Oj0JU0VRVUVOQ0UgewoJc3luYy1VTC1Db2Rlc0JpdG1hcAkJCQkJQklUIFNUUklORyB7CgkJCQkJCQkJCQkJY29kZTcoMCksCgkJCQkJCQkJCQkJY29kZTYoMSksCgkJCQkJCQkJCQkJY29kZTUoMiksCgkJCQkJCQkJCQkJY29kZTQoMyksCgkJCQkJCQkJCQkJY29kZTMoNCksCgkJCQkJCQkJCQkJY29kZTIoNSksCgkJCQkJCQkJCQkJY29kZTEoNiksCgkJCQkJCQkJCQkJY29kZTAoNykKCQkJCQkJCQkJCQl9IChTSVpFICg4KSksCglmcGFjaC1JbmZvCQkJCQkJCUZQQUNILUluZm8tcjQsCgktLSBBY3R1YWwgdmFsdWUgcHJ4VXBQQ0hkZXMgPSBJRSB2YWx1ZSAtIDEyMAoJcHJ4VXBQQ0hkZXMJCQkJCQkJSU5URUdFUiAoMC4uNjIpLAoJc3luYy1VTC1Qcm9jZWR1cmUJCQkJCVNZTkMtVUwtUHJvY2VkdXJlLXI0CQkJCQlPUFRJT05BTAp9CgpTWU5DLVVMLVByb2NlZHVyZS1yNCA6Oj0JCQlTRVFVRU5DRSB7CgltYXgtU1lOQy1VTC1UcmFuc21pc3Npb25zCQkJRU5VTUVSQVRFRCB7IHRyMSwgdHIyLCB0cjQsIHRyOCB9LAoJcG93ZXJSYW1wU3RlcAkJCQkJCUlOVEVHRVIgKDAuLjMpCn0KClNZTkMtVUwtSW5mby1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKCXN5bmMtVUwtQ29kZXMtQml0bWFwCQkJCUJJVCBTVFJJTkcgewoJCQkJCQkJCQkJCWNvZGU3KDApLAoJCQkJCQkJCQkJCWNvZGU2KDEpLAoJCQkJCQkJCQkJCWNvZGU1KDIpLAoJCQkJCQkJCQkJCWNvZGU0KDMpLAoJCQkJCQkJCQkJCWNvZGUzKDQpLAoJCQkJCQkJCQkJCWNvZGUyKDUpLAoJCQkJCQkJCQkJCWNvZGUxKDYpLAoJCQkJCQkJCQkJCWNvZGUwKDcpCgkJCQkJCQkJCQkJfSAoIFNJWkUgKDgpKSwKCS0tIEFjdHVhbCB2YWx1ZSBwcnhVcFBDSGRlcyA9IElFIHZhbHVlIC0gMTIwCglwcnhVcFBDSGRlcwkJCQkJCQlJTlRFR0VSICgwLi42MiksCglwb3dlclJhbXBTdGVwCQkJCQkJSU5URUdFUiAoMC4uMyksCgltYXgtU1lOQy1VTC1UcmFuc21pc3Npb25zCQkJRU5VTUVSQVRFRCB7IHRyMSwgdHIyLCB0cjQsIHRyOCB9ICwKICAgIG1tYXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVEVHRVIoMS4uMzIpCn0KClRERC1GUEFDSC1DQ29kZTE2LXI0IDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAoJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAoJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAoJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiB9CgpUREQtVUwtSW50ZXJmZXJlbmNlIDo6PQkJCQlJTlRFR0VSICgtMTEwLi4tNTIpCgpUREQtUElDSC1DQ29kZSA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAoJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAoJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAoJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiB9CgpUREQ3NjgtUElDSC1DQ29kZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQljYzMyLTEsIGNjMzItMiwgY2MzMi0zLCBjYzMyLTQsCgkJCQkJCQkJCQljYzMyLTUsIGNjMzItNiwgY2MzMi03LCBjYzMyLTgsCgkJCQkJCQkJCQljYzMyLTksIGNjMzItMTAsIGNjMzItMTEsIGNjMzItMTIsCgkJCQkJCQkJCQljYzMyLTEzLCBjYzMyLTE0LCBjYzMyLTE1LCBjYzMyLTE2LAoJCQkJCQkJCQkJY2MzMi0xNywgY2MzMi0xOCwgY2MzMi0xOSwgY2MzMi0yMCwKCQkJCQkJCQkJCWNjMzItMjEsIGNjMzItMjIsIGNjMzItMjMsIGNjMzItMjQsCgkJCQkJCQkJCQljYzMyLTI1LCBjYzMyLTI2LCBjYzMyLTI3LCBjYzMyLTI4LAoJCQkJCQkJCQkJY2MzMi0yOSwgY2MzMi0zMCwgY2MzMi0zMSwgY2MzMi0zMiB9CgpUREQtUFJBQ0gtQ0NvZGU4IDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWNjOC0xLCBjYzgtMiwgY2M4LTMsIGNjOC00LAoJCQkJCQkJCQkJY2M4LTUsIGNjOC02LCBjYzgtNywgY2M4LTggfQoKVERELVBSQUNILUNDb2RlMTYgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAoJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAoJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAoJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiB9CgpUREQtUFJBQ0gtQ0NvZGUtTENSLXI0IDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJY2M0LTEsIGNjNC0yLCBjYzQtMywgY2M0LTQsCgkJCQkJCQkJCQljYzgtMSwgY2M4LTIsIGNjOC0zLCBjYzgtNCwKCQkJCQkJCQkJCWNjOC01LCBjYzgtNiwgY2M4LTcsIGNjOC04LAoJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAoJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAoJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAoJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiB9CgpUREQtUFJBQ0gtQ0NvZGVMaXN0IDo6PSAJCQlDSE9JQ0UgewoJc2Y4CQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjgpKSBPRiAKCQkJCQkJCQkJCQlUREQtUFJBQ0gtQ0NvZGU4LAotLSBDaGFubmVsaXNhdGlvbiBjb2RlcyBjYzE2LTksIGNjMTYtMTAsIGNjMTYtMTEsIGNjMTYtMTIsIGNjMTYtMTMsIGNjMTYtMTQsCi0tIGNjMTYtMTUgYW5kIGNjMTYtMTYgc2hhbGwgbm90IGJlIHVzZWQKCXNmMTYJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi44KSkgT0YKCQkJCQkJCQkJCQlUREQtUFJBQ0gtQ0NvZGUxNgp9CgpUREQ3NjgtUFJBQ0gtQ0NvZGU4IDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWNjOC0xLCBjYzgtMiwgY2M4LTMsIGNjOC00LAoJCQkJCQkJCQkJY2M4LTUsIGNjOC02LCBjYzgtNywgY2M4LTggfQoKVERENzY4LVBSQUNILUNDb2RlMTYgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAoJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAoJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAoJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiB9CgpUREQ3NjgtUFJBQ0gtQ0NvZGUzMiA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQljYzMyLTEsIGNjMzItMiwgY2MzMi0zLCBjYzMyLTQsCgkJCQkJCQkJCQljYzMyLTUsIGNjMzItNiwgY2MzMi03LCBjYzMyLTgsCgkJCQkJCQkJCQljYzMyLTksIGNjMzItMTAsIGNjMzItMTEsIGNjMzItMTIsCgkJCQkJCQkJCQljYzMyLTEzLCBjYzMyLTE0LCBjYzMyLTE1LCBjYzMyLTE2IH0KClRERDc2OC1QUkFDSC1DQ29kZUxpc3QgOjo9IAkJCUNIT0lDRSB7CglzZjMyCQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4uMTYpKSBPRiAKCQkJCQkJCQkJCQlUREQ3NjgtUFJBQ0gtQ0NvZGUzMiwKLS0gQ2hhbm5lbGlzYXRpb24gY29kZXMgY2MzMi0xNywgY2MzMi0xOCwgY2MzMi0xOSwgY2MzMi0yMCwgY2MzMi0yMSwgY2MzMi0yMiwKLS0gY2MzMi0yMywgY2MzMi0yNCwgY2MzMi0yNSwgY2MzMi0yNiwgY2MzMi0yNywgY2MzMi0yOCwgY2MzMi0yOSwgY2MzMi0zMCwgY2MzMi0zMQotLSBhbmQgY2MzMi0zMiBzaGFsbCBub3QgYmUgdXNlZAoJc2YxNgkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjE2KSkgT0YKCQkJCQkJCQkJCQlUREQ3NjgtUFJBQ0gtQ0NvZGUxNiwKCXNmOAkJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi44KSkgT0YKCQkJCQkJCQkJCQlUREQ3NjgtUFJBQ0gtQ0NvZGU4Cn0KClRGQy1Db250cm9sRHVyYXRpb24gOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdGZjLWNkMSwgdGZjLWNkMiwgdGZjLWNkNCwgdGZjLWNkOCwKCQkJCQkJCQkJCXRmYy1jZDE2LCB0ZmMtY2QyNCwgdGZjLWNkMzIsCgkJCQkJCQkJCQl0ZmMtY2Q0OCwgdGZjLWNkNjQsIHRmYy1jZDEyOCwKCQkJCQkJCQkJCXRmYy1jZDE5MiwgdGZjLWNkMjU2LCB0ZmMtY2Q1MTIgfQoKVEZDSS1Db2RpbmcgOjo9CQkJCQkJRU5VTUVSQVRFRCB7IAoJCQkJCQkJCQkJdGZjaS1iaXRzLTQsIHRmY2ktYml0cy04LAoJCQkJCQkJCQkJdGZjaS1iaXRzLTE2LCB0ZmNpLWJpdHMtMzIgfQoKVEdDRk4gOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjI1NSkKCi0tIEluIFRHRCwgdmFsdWUgMjcwIHJlcHJlc2VudHMgInVuZGVmaW5lZCIgaW4gdGhlIHRhYnVsYXIgZGVzY3JpcHRpb24uClRHRCA6Oj0JCQkJCQkJCUlOVEVHRVIgKDE1Li4yNzApCgpUR0wgOjo9CQkJCQkJCQlJTlRFR0VSICgxLi4xNCkKClRHTVAgOjo9CQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdGRkLU1lYXN1cmVtZW50LCBmZGQtTWVhc3VyZW1lbnQsCgkJCQkJCQkJCQlnc20tQ2FycmllclJTU0lNZWFzdXJlbWVudCwgCgkJCQkJCQkJCQlnc20taW5pdGlhbEJTSUNJZGVudGlmaWNhdGlvbiwgZ3NtQlNJQ1JlY29uZmlybWF0aW9uLAoJCQkJCQkJCQkJbXVsdGktY2FycmllciB9CgpUR1AtU2VxdWVuY2UgOjo9CQkJCQlTRVFVRU5DRSB7Cgl0Z3BzaQkJCQkJCQkJVEdQU0ksCgl0Z3BzLVN0YXR1cwkJCQkJCQlDSE9JQ0UgewoJCWFjdGl2YXRlCQkJCQkJCVNFUVVFTkNFIHsKCQkJdGdjZm4JCQkJCQkJCVRHQ0ZOCgkJfSwKCQlkZWFjdGl2YXRlCQkJCQkJCU5VTEwKCX0sCgl0Z3BzLUNvbmZpZ3VyYXRpb25QYXJhbXMJCQlUR1BTLUNvbmZpZ3VyYXRpb25QYXJhbXMJCQlPUFRJT05BTAp9CgpUR1BTLVJlY29uZmlndXJhdGlvbi1DRk4gOjo9CQlJTlRFR0VSICgwLi4yNTUpCgpUR1AtU2VxdWVuY2VMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEdQUykpIE9GCgkJCQkJCQkJCQlUR1AtU2VxdWVuY2UKClRHUC1TZXF1ZW5jZVNob3J0IDo6PQkJCQlTRVFVRU5DRSB7Cgl0Z3BzaQkJCQkJCQkJVEdQU0ksCgl0Z3BzLVN0YXR1cwkJCQkJCQlDSE9JQ0UgewoJCWFjdGl2YXRlCQkJCQkJCVNFUVVFTkNFIHsKCQkJdGdjZm4JCQkJCQkJCVRHQ0ZOCgkJfSwKCQlkZWFjdGl2YXRlCQkJCQkJCU5VTEwKCX0KfQoKVEdQTCA6Oj0JCQkJCQkJSU5URUdFUiAoMS4uMTQ0KQoKLS0gVEFCVUxBUjogSW4gVEdQUkMsIHZhbHVlIDAgcmVwcmVzZW50cyAiaW5maW5pdHkiIGluIHRoZSB0YWJ1bGFyIGRlc2NyaXB0aW9uLgpUR1BSQyA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uNTExKQoKVEdQUy1Db25maWd1cmF0aW9uUGFyYW1zIDo6PQkJU0VRVUVOQ0UgewoJdGdtcAkJCQkJCQkJVEdNUCwKCXRncHJjCQkJCQkJCQlUR1BSQywKCXRnc24JCQkJCQkJCVRHU04sCgl0Z2wxCQkJCQkJCQlUR0wsCgl0Z2wyCQkJCQkJCQlUR0wJCQkJCQkJCQlPUFRJT05BTCwKCXRnZAkJCQkJCQkJCVRHRCwKCXRncGwxCQkJCQkJCQlUR1BMLAoJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaGFsbCBiZSBpZ25vcmVkLgoJZHVtbXkJCQkJCQkJVEdQTAkJCQkJCQkJT1BUSU9OQUwsCglycHAJCQkJCQkJCQlSUFAsCglpdHAJCQkJCQkJCQlJVFAsCgktLSBUQUJVTEFSOiBDb21wcmVzc2VkIG1vZGUgbWV0aG9kIGlzIG5lc3RlZCBpbnNpZGUgVUwtREwtTW9kZQoJdWwtREwtTW9kZQkJCQkJCQlVTC1ETC1Nb2RlLAoJZGwtRnJhbWVUeXBlCQkJCQkJREwtRnJhbWVUeXBlLAoJZGVsdGFTSVIxCQkJCQkJCURlbHRhU0lSLAoJZGVsdGFTSVJBZnRlcjEJCQkJCQlEZWx0YVNJUiwKCWRlbHRhU0lSMgkJCQkJCQlEZWx0YVNJUgkJCQkJCQlPUFRJT05BTCwKCWRlbHRhU0lSQWZ0ZXIyCQkJCQkJRGVsdGFTSVIJCQkJCQkJT1BUSU9OQUwsCgluaWRlbnRpZnlBYm9ydAkJCQkJCU5pZGVudGlmeUFib3J0CQkJCQkJT1BUSU9OQUwsCgl0cmVjb25maXJtQWJvcnQJCQkJCQlUcmVjb25maXJtQWJvcnQJCQkJCQlPUFRJT05BTAp9CgpUR1BTSSA6Oj0JCQkJCQkJSU5URUdFUiAoMS4ubWF4VEdQUykKClRHU04gOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjE0KQoKVGltZUluZm8gOjo9CQkJCQkJU0VRVUVOQ0UgewoJYWN0aXZhdGlvblRpbWUJCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAoJZHVyYXRpb25UaW1lSW5mbwkJCQkJRHVyYXRpb25UaW1lSW5mbwkJCQkJT1BUSU9OQUwKfQoKVGltZXNsb3RMaXN0IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTKSkgT0YKCQkJCQkJCQkJCVRpbWVzbG90TnVtYmVyCgpUaW1lc2xvdExpc3QtcjQgOjo9CQkJCQlDSE9JQ0UgewotLSB0aGUgY2hvaWNlIGZvciA3LjY4IE1jcHMgVEREIGlzIGFzIGZvciAzLjg0IE1jcHMgVEREICAtLQoJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMpKSBPRgoJCQkJCQkJCQkJCVRpbWVzbG90TnVtYmVyLAoJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtTENSKSkgT0YKCQkJCQkJCQkJCQlUaW1lc2xvdE51bWJlci1MQ1ItcjQKfQoKLS0gSWYgVGltZXNsb3ROdW1iZXIgaXMgaW5jbHVkZWQgZm9yIGEgMS4yOE1jcHMgVEREIGRlc2NyaXB0aW9uLCBpdCBzaGFsbCB0YWtlIHZhbHVlcyBmcm9tIDAuLjYKVGltZXNsb3ROdW1iZXIgOjo9CQkJCQkJSU5URUdFUiAoMC4uMTQpCgpUaW1lc2xvdE51bWJlci1MQ1ItcjQgOjo9CQkJCUlOVEVHRVIgKDAuLjYpCgpUaW1lc2xvdE51bWJlci1QUkFDSC1MQ1ItcjQgOjo9CQlJTlRFR0VSICgxLi42KQoKVGltZXNsb3RTeW5jMiA6Oj0JCQkJSU5URUdFUiAoMC4uNikKCi0tIEFjdHVhbCB2YWx1ZSBUaW1pbmdPZmZzZXQgPSBJRSB2YWx1ZSAqIDI1NgpUaW1pbmdPZmZzZXQgOjo9CQkJCQlJTlRFR0VSICgwLi4xNDkpCgpUaW1pbmdNYWludGFpbmVkU3luY2hJbmQgOjo9CQlFTlVNRVJBVEVEIHsgZmFsc2UgfQoKVFBDLUNvbWJpbmF0aW9uSW5kZXggOjo9CQkJSU5URUdFUiAoMC4uNSkKClRQQy1Db21tYW5kVGFyZ2V0UmF0ZSA6Oj0JCQlJTlRFR0VSICgwLi4xMCkKCi0tIEFjdHVhbCB2YWx1ZSBUUEMtU3RlcFNpemVGREQgPSBJRSB2YWx1ZSArIDEKVFBDLVN0ZXBTaXplRkREIDo6PQkJCQkJSU5URUdFUiAoMC4uMSkKClRQQy1TdGVwU2l6ZVRERCA6Oj0JCQkJCUlOVEVHRVIgKDEuLjMpCgotLSBBY3R1YWwgdmFsdWUgVHJlY29uZmlybUFib3J0ID0gSUUgdmFsdWUgKiAwLjUgc2Vjb25kcwpUcmVjb25maXJtQWJvcnQgOjo9CUlOVEVHRVIgKDEuLjIwKQoKVFgtRGl2ZXJzaXR5TW9kZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlub0RpdmVyc2l0eSwKCQkJCQkJCQkJCXN0dGQsCgkJCQkJCQkJCQljbG9zZWRMb29wTW9kZTEsCgkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJCQkJCQkJCQlkdW1teSB9CgpVQVJGQ04gOjo9CQkJCQkJSU5URUdFUiAoMC4uMTYzODMpCgpVQ1NNLUluZm8gOjo9CQkJCQkJU0VRVUVOQ0UgewoJbWluaW11bVNwcmVhZGluZ0ZhY3RvcgkJCQlNaW5pbXVtU3ByZWFkaW5nRmFjdG9yLAoJbmYtTWF4CQkJCQkJCQlORi1NYXgsCgljaGFubmVsUmVxUGFyYW1zRm9yVUNTTQkJCQlDaGFubmVsUmVxUGFyYW1zRm9yVUNTTQp9CgpVTC1DQ1RyQ0ggOjo9CQkJCQkJU0VRVUVOQ0UgewoJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCgl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIsCgl0aW1lSW5mbwkJCQkJCQlUaW1lSW5mbywKCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCQkJCQlPUFRJT05BTCwKCXVsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCVVwbGlua1RpbWVzbG90c0NvZGVzCQkJCU9QVElPTkFMCn0KClVMLUNDVHJDSC1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAoJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtRFBDSGRlcyBmb3IgMS4yOE1jcHMgVERECgktLSBBY3R1YWwgdmFsdWUgUFJYLURQQ0hkZXMgPSAodmFsdWUgb2YgSUUgInVsLVRhcmdldFNJUiIg0CAxMjApCgl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIsCgl0aW1lSW5mbwkJCQkJCQlUaW1lSW5mbywKCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCQkJCQlPUFRJT05BTCwKCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgewoJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgewoJCQl1bC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlVcGxpbmtUaW1lc2xvdHNDb2RlcwkJT1BUSU9OQUwKCQl9LAoJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgewoJCQl1bC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlVcGxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQJT1BUSU9OQUwKCQl9Cgl9Cn0KClVMLUNDVHJDSC1yNyA6Oj0JCQkJCVNFUVVFTkNFIHsKCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAoJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtRFBDSGRlcyBmb3IgMS4yOE1jcHMgVERECgktLSBBY3R1YWwgdmFsdWUgUFJYLURQQ0hkZXMgPSAodmFsdWUgb2YgSUUgInVsLVRhcmdldFNJUiIg0CAxMjApCgl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIsCgl0aW1lSW5mbwkJCQkJCQlUaW1lSW5mbywKCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCQkJCQlPUFRJT05BTCwKCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgewoJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgewoJCQl1bC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlVcGxpbmtUaW1lc2xvdHNDb2RlcwkJT1BUSU9OQUwKCQl9LAoJCXRkZDc2OAkJCQkJCQkJU0VRVUVOQ0UgewoJCQl1bC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlVcGxpbmtUaW1lc2xvdHNDb2Rlcy1WSENSCU9QVElPTkFMCgkJfSwKCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdWwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJVXBsaW5rVGltZXNsb3RzQ29kZXMtTENSLXI3CU9QVElPTkFMCgkJfQoJfQp9CgpVTC1DQ1RyQ0hMaXN0IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENDVHJDSCkpIE9GCgkJCQkJCQkJCQlVTC1DQ1RyQ0gKClVMLUNDVHJDSExpc3QtcjQgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgoJCQkJCQkJCQkJVUwtQ0NUckNILXI0CgpVTC1DQ1RyQ0hMaXN0LXI3IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q0NUckNIKSkgT0YKCQkJCQkJCQkJCVVMLUNDVHJDSC1yNwoKVUwtQ0NUckNITGlzdFRvUmVtb3ZlIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgoJCQkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCgpVTC1DQ1RyQ2hUUENMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMC4ubWF4Q0NUckNIKSkgT0YKCQkJCQkJCQkJCQlURkNTLUlkZW50aXR5CgpVTC1DaGFubmVsUmVxdWlyZW1lbnQgOjo9CQkJQ0hPSUNFIHsKCXVsLURQQ0gtSW5mbwkJCQkJCVVMLURQQ0gtSW5mbywKCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgoJZHVtbXkJCQkJCQkJCUNQQ0gtU2V0SW5mbwp9CgpVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjQgOjo9CQlDSE9JQ0UgewoJdWwtRFBDSC1JbmZvCQkJCQkJVUwtRFBDSC1JbmZvLXI0LAoJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIG5vdCBzcGVjaWZpZWQuCglkdW1teQkJCQkJCQkJQ1BDSC1TZXRJbmZvCn0KClVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNSA6Oj0JCUNIT0lDRSB7Cgl1bC1EUENILUluZm8JCQkJCQlVTC1EUENILUluZm8tcjUsCgktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KCWR1bW15CQkJCQkJCQlDUENILVNldEluZm8KfQoKLS0gTm90ZTogdGhlIHJlZmVyZW5jZSB0byBDUENIIGluIHRoZSBlbGVtZW50IG5hbWUgYmVsb3cgaXMgaW5jb3JyZWN0LiBUaGUgbmFtZSBpcyBub3QKLS0gY2hhbmdlZCB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCBSOTkuClVMLUNoYW5uZWxSZXF1aXJlbWVudFdpdGhDUENILVNldElEIDo6PQlDSE9JQ0UgewoJdWwtRFBDSC1JbmZvCQkJCQkJVUwtRFBDSC1JbmZvLAoJLS0gZHVtbXkxIGFuZCBkdW1teSAyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCgktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgoJZHVtbXkxCQkJCQkJCQlDUENILVNldEluZm8sCglkdW1teTIJCQkJCQkJCUNQQ0gtU2V0SUQKfQoKLS0gTm90ZTogdGhlIHJlZmVyZW5jZSB0byBDUENIIGluIHRoZSBlbGVtZW50IG5hbWUgYmVsb3cgaXMgaW5jb3JyZWN0LiBUaGUgbmFtZSBpcyBub3QKLS0gY2hhbmdlZCB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCBSOTkuClVMLUNoYW5uZWxSZXF1aXJlbWVudFdpdGhDUENILVNldElELXI0IDo6PQlDSE9JQ0UgewoJdWwtRFBDSC1JbmZvCQkJCQkJVUwtRFBDSC1JbmZvLXI0LAoJLS0gZHVtbXkxIGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgdGhleSAKCS0tIHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgoJZHVtbXkxCQkJCQkJCQlDUENILVNldEluZm8sCglkdW1teTIJCQkJCQkJCUNQQ0gtU2V0SUQKfQoKLS0gTm90ZTogdGhlIHJlZmVyZW5jZSB0byBDUENIIGluIHRoZSBlbGVtZW50IG5hbWUgYmVsb3cgaXMgaW5jb3JyZWN0LiBUaGUgbmFtZSBpcyBub3QKLS0gY2hhbmdlZCB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCBSOTkuClVMLUNoYW5uZWxSZXF1aXJlbWVudFdpdGhDUENILVNldElELXI1IDo6PQlDSE9JQ0UgewoJdWwtRFBDSC1JbmZvCQkJCQkJVUwtRFBDSC1JbmZvLXI1LAoJLS0gZHVtbXkxIGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgdGhleSBzaG91bGQKCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIG5vdCBzcGVjaWZpZWQuCglkdW1teTEJCQkJCQkJCUNQQ0gtU2V0SW5mbywKCWR1bW15MgkJCQkJCQkJQ1BDSC1TZXRJRAp9CgpVTC1Db21wcmVzc2VkTW9kZU1ldGhvZCA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXNmLTIsIAoJCQkJCQkJCQkJaGlnaGVyTGF5ZXJTY2hlZHVsaW5nIH0KClVMLURMLU1vZGUgOjo9CQkJCQkJQ0hPSUNFIHsKCXVsCQkJCQkJCQkJVUwtQ29tcHJlc3NlZE1vZGVNZXRob2QsCglkbAkJCQkJCQkJCURMLUNvbXByZXNzZWRNb2RlTWV0aG9kLAoJdWwtYW5kLWRsCQkJCQkJCQlTRVFVRU5DRSB7CgkJdWwJCQkJCQkJCQlVTC1Db21wcmVzc2VkTW9kZU1ldGhvZCwKCQlkbAkJCQkJCQkJCURMLUNvbXByZXNzZWRNb2RlTWV0aG9kCgl9fQoKVUwtRFBDQ0gtU2xvdEZvcm1hdCA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlzbGYwLCBzbGYxLCBzbGYyIH0KClVMLURQQ0gtSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCU9QVElPTkFMLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXNjcmFtYmxpbmdDb2RlVHlwZQkJCQkJU2NyYW1ibGluZ0NvZGVUeXBlLAoJCQlzY3JhbWJsaW5nQ29kZQkJCQkJCVVMLVNjcmFtYmxpbmdDb2RlLAoJCQludW1iZXJPZkRQRENICQkJCQkJTnVtYmVyT2ZEUERDSAkJCQlERUZBVUxUIDEsCgkJCXNwcmVhZGluZ0ZhY3RvcgkJCQkJCVNwcmVhZGluZ0ZhY3RvciwKCQkJdGZjaS1FeGlzdGVuY2UJCQkJCQlCT09MRUFOLAoJCQktLSBudW1iZXJPZkZCSS1CaXRzIGlzIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGhpc3RvcnkKCQkJbnVtYmVyT2ZGQkktQml0cwkJCQkJTnVtYmVyT2ZGQkktQml0cwkJCU9QVElPTkFMLAoJCQlwdW5jdHVyaW5nTGltaXQJCQkJCQlQdW5jdHVyaW5nTGltaXQKCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdWwtVGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wJCU9QVElPTkFMLAoJCQl1bC1DQ1RyQ0hMaXN0CQkJCQkJVUwtQ0NUckNITGlzdAkJCQlPUFRJT05BTCwKCQkJdWwtQ0NUckNITGlzdFRvUmVtb3ZlCQkJCVVMLUNDVHJDSExpc3RUb1JlbW92ZQkJT1BUSU9OQUwKCQl9Cgl9Cn0KClVMLURQQ0gtSW5mby1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mby1yNAkJCU9QVElPTkFMLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXNjcmFtYmxpbmdDb2RlVHlwZQkJCQkJU2NyYW1ibGluZ0NvZGVUeXBlLAoJCQlzY3JhbWJsaW5nQ29kZQkJCQkJCVVMLVNjcmFtYmxpbmdDb2RlLAoJCQludW1iZXJPZkRQRENICQkJCQkJTnVtYmVyT2ZEUERDSAkJCQlERUZBVUxUIDEsCgkJCXNwcmVhZGluZ0ZhY3RvcgkJCQkJCVNwcmVhZGluZ0ZhY3RvciwKCQkJdGZjaS1FeGlzdGVuY2UJCQkJCQlCT09MRUFOLAoJCQktLSBudW1iZXJPZkZCSS1CaXRzIGlzIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGhpc3RvcnkKCQkJbnVtYmVyT2ZGQkktQml0cwkJCQkJTnVtYmVyT2ZGQkktQml0cwkJCU9QVElPTkFMLAoJCQlwdW5jdHVyaW5nTGltaXQJCQkJCQlQdW5jdHVyaW5nTGltaXQKCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdWwtVGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjQJT1BUSU9OQUwsCgkJCXVsLUNDVHJDSExpc3QJCQkJCQlVTC1DQ1RyQ0hMaXN0LXI0CQkJT1BUSU9OQUwsCgkJCXVsLUNDVHJDSExpc3RUb1JlbW92ZQkJCQlVTC1DQ1RyQ0hMaXN0VG9SZW1vdmUJCU9QVElPTkFMCgkJfQoJfQp9CgpVTC1EUENILUluZm8tcjUgOjo9CQkJCQlTRVFVRU5DRSB7Cgl1bC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlVTC1EUENILVBvd2VyQ29udHJvbEluZm8tcjUJCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlzY3JhbWJsaW5nQ29kZVR5cGUJCQkJCVNjcmFtYmxpbmdDb2RlVHlwZSwKCQkJc2NyYW1ibGluZ0NvZGUJCQkJCQlVTC1TY3JhbWJsaW5nQ29kZSwKCQkJbnVtYmVyT2ZEUERDSAkJCQkJCU51bWJlck9mRFBEQ0gJCQkJREVGQVVMVCAxLAoJCQlzcHJlYWRpbmdGYWN0b3IJCQkJCQlTcHJlYWRpbmdGYWN0b3IsCgkJCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTiwKCQkJLS0gbnVtYmVyT2ZGQkktQml0cyBpcyBjb25kaXRpb25hbCBiYXNlZCBvbiBoaXN0b3J5CgkJCW51bWJlck9mRkJJLUJpdHMJCQkJCU51bWJlck9mRkJJLUJpdHMJCQlPUFRJT05BTCwKCQkJcHVuY3R1cmluZ0xpbWl0CQkJCQkJUHVuY3R1cmluZ0xpbWl0CgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXVsLVRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI0CU9QVElPTkFMLAoJCQl1bC1DQ1RyQ0hMaXN0CQkJCQkJVUwtQ0NUckNITGlzdC1yNAkJCU9QVElPTkFMLAoJCQl1bC1DQ1RyQ0hMaXN0VG9SZW1vdmUJCQkJVUwtQ0NUckNITGlzdFRvUmVtb3ZlCQlPUFRJT05BTAoJCX0KCX0KfQoKVUwtRFBDSC1JbmZvLXI2IDo6PQkJCQkJU0VRVUVOQ0UgewoJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI2CQkJT1BUSU9OQUwsCgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJc2NyYW1ibGluZ0NvZGVUeXBlCQkJCQlTY3JhbWJsaW5nQ29kZVR5cGUsCgkJCXNjcmFtYmxpbmdDb2RlCQkJCQkJVUwtU2NyYW1ibGluZ0NvZGUsCgkJCWRwZGNoUHJlc2VuY2UJCQkJCQlDSE9JQ0UgewoJCQkJcHJlc2VudAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCW51bWJlck9mRFBEQ0gJCQkJCQlOdW1iZXJPZkRQRENICQkJCURFRkFVTFQgMSwKCQkJCQlzcHJlYWRpbmdGYWN0b3IJCQkJCQlTcHJlYWRpbmdGYWN0b3IsCgkJCQkJdGZjaS1FeGlzdGVuY2UJCQkJCQlCT09MRUFOLAoJCQkJCS0tIG51bWJlck9mRkJJLUJpdHMgaXMgY29uZGl0aW9uYWwgYmFzZWQgb24gaGlzdG9yeQoJCQkJCW51bWJlck9mRkJJLUJpdHMJCQkJCU51bWJlck9mRkJJLUJpdHMJCQlPUFRJT05BTCwKCQkJCQlwdW5jdHVyaW5nTGltaXQJCQkJCQlQdW5jdHVyaW5nTGltaXQKCQkJCX0sCgkJCQlub3RQcmVzZW50CQkJCQkJCVNFUVVFTkNFIHsKCQkJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4sCgkJCQkJLS0gbnVtYmVyT2ZGQkktQml0cyBpcyBjb25kaXRpb25hbCBiYXNlZCBvbiBoaXN0b3J5CgkJCQkJbnVtYmVyT2ZGQkktQml0cwkJCQkJTnVtYmVyT2ZGQkktQml0cwkJCU9QVElPTkFMCgkJCQl9CgkJCX0KCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdWwtVGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjQJT1BUSU9OQUwsCgkJCXVsLUNDVHJDSExpc3QJCQkJCQlVTC1DQ1RyQ0hMaXN0LXI0CQkJT1BUSU9OQUwsCgkJCXVsLUNDVHJDSExpc3RUb1JlbW92ZQkJCQlVTC1DQ1RyQ0hMaXN0VG9SZW1vdmUJCU9QVElPTkFMCgkJfQoJfQp9CgpVTC1EUENILUluZm8tcjcgOjo9CQkJCQlTRVFVRU5DRSB7Cgl1bC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlVTC1EUENILVBvd2VyQ29udHJvbEluZm8tcjYJCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlzY3JhbWJsaW5nQ29kZVR5cGUJCQkJCVNjcmFtYmxpbmdDb2RlVHlwZSwKCQkJc2NyYW1ibGluZ0NvZGUJCQkJCQlVTC1TY3JhbWJsaW5nQ29kZSwKCQkJZHBkY2hQcmVzZW5jZQkJCQkJCUNIT0lDRSB7CgkJCQlwcmVzZW50CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJbnVtYmVyT2ZEUERDSAkJCQkJCU51bWJlck9mRFBEQ0gJCQkJREVGQVVMVCAxLAoJCQkJCXNwcmVhZGluZ0ZhY3RvcgkJCQkJCVNwcmVhZGluZ0ZhY3RvciwKCQkJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4sCgkJCQkJLS0gbnVtYmVyT2ZGQkktQml0cyBpcyBjb25kaXRpb25hbCBiYXNlZCBvbiBoaXN0b3J5CgkJCQkJbnVtYmVyT2ZGQkktQml0cwkJCQkJTnVtYmVyT2ZGQkktQml0cwkJCU9QVElPTkFMLAoJCQkJCXB1bmN0dXJpbmdMaW1pdAkJCQkJCVB1bmN0dXJpbmdMaW1pdAoJCQkJCQl9LAoJCQkJbm90UHJlc2VudAkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJdGZjaS1FeGlzdGVuY2UJCQkJCQlCT09MRUFOLAoJCQkJCS0tIG51bWJlck9mRkJJLUJpdHMgaXMgY29uZGl0aW9uYWwgYmFzZWQgb24gaGlzdG9yeQoJCQkJCW51bWJlck9mRkJJLUJpdHMJCQkJCU51bWJlck9mRkJJLUJpdHMJCQlPUFRJT05BTAoJCQkJfQoJCQl9CgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXVsLVRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI3CU9QVElPTkFMLAoJCQl1bC1DQ1RyQ0hMaXN0CQkJCQkJVUwtQ0NUckNITGlzdC1yNwkJCU9QVElPTkFMLAoJCQl1bC1DQ1RyQ0hMaXN0VG9SZW1vdmUJCQkJVUwtQ0NUckNITGlzdFRvUmVtb3ZlCQlPUFRJT05BTAoJCX0KCX0KfQoKVUwtRFBDSC1JbmZvUG9zdEZERCA6Oj0JCQkJU0VRVUVOQ0UgewoJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvUG9zdEZERCwKCQkJc2NyYW1ibGluZ0NvZGVUeXBlCQkJCQlTY3JhbWJsaW5nQ29kZVR5cGUsCgkJCXJlZHVjZWRTY3JhbWJsaW5nQ29kZU51bWJlcgkJCVJlZHVjZWRTY3JhbWJsaW5nQ29kZU51bWJlciwKCQkJc3ByZWFkaW5nRmFjdG9yCQkJCQkJU3ByZWFkaW5nRmFjdG9yCgp9CgpVTC1EUENILUluZm9Qb3N0VEREIDo6PQkJCQlTRVFVRU5DRSB7Cgl1bC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlVTC1EUENILVBvd2VyQ29udHJvbEluZm9Qb3N0VERELAoJdWwtVGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wJCQkJCU9QVElPTkFMLAoJdWwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJVXBsaW5rVGltZXNsb3RzQ29kZXMKfQoKVUwtRFBDSC1JbmZvUG9zdFRERC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7Cgl1bC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlVTC1EUENILVBvd2VyQ29udHJvbEluZm9Qb3N0VERELUxDUi1yNCwKCXVsLVRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLUxDUi1yNAkJCQlPUFRJT05BTCwKCXVsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCVVwbGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNAp9CgpVTC1EUENILUluZm9QcmVkZWYgOjo9CQkJCVNFUVVFTkNFIHsKCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mb1ByZWRlZiwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4sCgkJCXB1bmN0dXJpbmdMaW1pdAkJCQkJCVB1bmN0dXJpbmdMaW1pdAoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwoJCX0KCX0KfQoKVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvIDo6PQkJQ0hPSUNFIHsKCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQlkcGNjaC1Qb3dlck9mZnNldAkJCQkJRFBDQ0gtUG93ZXJPZmZzZXQsCgkJcGMtUHJlYW1ibGUJCQkJCQkJUEMtUHJlYW1ibGUsCgkJc1JCLWRlbGF5CQkJCQkJCVNSQi1kZWxheSwKCQktLSBUQUJVTEFSOiBUUEMgc3RlcCBzaXplIG5lc3RlZCBpbnNpZGUgUG93ZXJDb250cm9sQWxnb3JpdGhtCgkJcG93ZXJDb250cm9sQWxnb3JpdGhtCQkJCVBvd2VyQ29udHJvbEFsZ29yaXRobQoJfSwKCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIJCQkJT1BUSU9OQUwsCgkJdWwtT0wtUEMtU2lnbmFsbGluZwkJCQkJQ0hPSUNFIHsKCQkJYnJvYWRjYXN0LVVMLU9MLVBDLWluZm8JCQkJTlVMTCwKCQkJaW5kaXZpZHVhbGx5U2lnbmFsbGVkCQkJCVNFUVVFTkNFIHsKCQkJCWluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0CQlJbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdCwKCQkJCWRwY2gtQ29uc3RhbnRWYWx1ZQkJCQkJQ29uc3RhbnRWYWx1ZVRkZCwKCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCgkJCX0JCgkJfQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTAoJfQp9CgpVTC1EUENILVBvd2VyQ29udHJvbEluZm8tcjQgOjo9CQlDSE9JQ0UgewoJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCWRwY2NoLVBvd2VyT2Zmc2V0CQkJCQlEUENDSC1Qb3dlck9mZnNldCwKCQlwYy1QcmVhbWJsZQkJCQkJCQlQQy1QcmVhbWJsZSwKCQlzUkItZGVsYXkJCQkJCQkJU1JCLWRlbGF5LAoJCS0tIFRBQlVMQVI6IFRQQyBzdGVwIHNpemUgbmVzdGVkIGluc2lkZSBQb3dlckNvbnRyb2xBbGdvcml0aG0KCQlwb3dlckNvbnRyb2xBbGdvcml0aG0JCQkJUG93ZXJDb250cm9sQWxnb3JpdGhtCgl9LAoJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCS0tIFRoZSBJRSB1bC1UYXJnZXRTSVIgY29ycmVzcG9uZHMgdG8gUFJYLURQQ0hkZXMgZm9yIDEuMjhNY3BzIFRERAoJCS0tIEFjdHVhbCB2YWx1ZSBQUlgtRFBDSGRlcyA9ICh2YWx1ZSBvZiBJRSAidWwtVGFyZ2V0U0lSIiDQIDEyMCkKCQl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIJCQkJT1BUSU9OQUwsCgkJdWwtT0wtUEMtU2lnbmFsbGluZwkJCQkJQ0hPSUNFIHsKCQkJYnJvYWRjYXN0LVVMLU9MLVBDLWluZm8JCQkJTlVMTCwKCQkJaW5kaXZpZHVhbGx5U2lnbmFsbGVkCQkJCVNFUVVFTkNFIHsKCQkJCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgewoJCQkJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQlpbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdAkJSW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QsCgkJCQkJCWRwY2gtQ29uc3RhbnRWYWx1ZQkJCQkJQ29uc3RhbnRWYWx1ZQoJCQkJCX0sCgkJCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCXRwYy1TdGVwU2l6ZQkJCQkJCVRQQy1TdGVwU2l6ZVRERAoJCQkJCX0KCQkJCX0sCgkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCgkJCX0KCQl9Cgl9Cn0KClVMLURQQ0gtUG93ZXJDb250cm9sSW5mby1yNSA6Oj0JCUNIT0lDRSB7CglmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJZHBjY2gtUG93ZXJPZmZzZXQJCQkJCURQQ0NILVBvd2VyT2Zmc2V0LAoJCXBjLVByZWFtYmxlCQkJCQkJCVBDLVByZWFtYmxlLAoJCXNSQi1kZWxheQkJCQkJCQlTUkItZGVsYXksCgkJLS0gVEFCVUxBUjogVFBDIHN0ZXAgc2l6ZSBuZXN0ZWQgaW5zaWRlIFBvd2VyQ29udHJvbEFsZ29yaXRobQoJCXBvd2VyQ29udHJvbEFsZ29yaXRobQkJCQlQb3dlckNvbnRyb2xBbGdvcml0aG0sCgkJZGVsdGFBQ0sJCQkJCQkJRGVsdGFBQ0sJT1BUSU9OQUwsCgkJZGVsdGFOQUNLCQkJCQkJCURlbHRhTkFDSwlPUFRJT05BTCwKCQlhY2stTkFDSy1yZXBldGl0aW9uLWZhY3RvcgkJCUFDSy1OQUNLLXJlcGV0aXRpb25GYWN0b3IJT1BUSU9OQUwKCX0sCgl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtRFBDSGRlcyBmb3IgMS4yOE1jcHMgVERECgkJLS0gQWN0dWFsIHZhbHVlIFBSWC1EUENIZGVzID0gKHZhbHVlIG9mIElFICJ1bC1UYXJnZXRTSVIiINAgMTIwKQoJCXVsLVRhcmdldFNJUgkJCQkJCVVMLVRhcmdldFNJUgkJCQlPUFRJT05BTCwKCQl1bC1PTC1QQy1TaWduYWxsaW5nCQkJCQlDSE9JQ0UgewoJCQlicm9hZGNhc3QtVUwtT0wtUEMtaW5mbwkJCQlOVUxMLAoJCQlpbmRpdmlkdWFsbHlTaWduYWxsZWQJCQkJU0VRVUVOQ0UgewoJCQkJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CgkJCQkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCWluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0CQlJbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdCwKCQkJCQkJZHBjaC1Db25zdGFudFZhbHVlCQkJCQlDb25zdGFudFZhbHVlCgkJCQkJfSwKCQkJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJdHBjLVN0ZXBTaXplCQkJCQkJVFBDLVN0ZXBTaXplVERECgkJCQkJfQoJCQkJfSwKCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKCQkJfQoJCX0KCX0KfQoKVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI2IDo6PQkJQ0hPSUNFIHsKCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQlkcGNjaC1Qb3dlck9mZnNldAkJCQkJRFBDQ0gtUG93ZXJPZmZzZXQsCgkJcGMtUHJlYW1ibGUJCQkJCQkJUEMtUHJlYW1ibGUsCgkJc1JCLWRlbGF5CQkJCQkJCVNSQi1kZWxheSwKCQktLSBUQUJVTEFSOiBUUEMgc3RlcCBzaXplIG5lc3RlZCBpbnNpZGUgUG93ZXJDb250cm9sQWxnb3JpdGhtCgkJcG93ZXJDb250cm9sQWxnb3JpdGhtCQkJCVBvd2VyQ29udHJvbEFsZ29yaXRobSwKCQlkZWx0YUFDSwkJCQkJCQlEZWx0YUFDSwlPUFRJT05BTCwKCQlkZWx0YU5BQ0sJCQkJCQkJRGVsdGFOQUNLCU9QVElPTkFMLAoJCWFjay1OQUNLLXJlcGV0aXRpb24tZmFjdG9yCQkJQUNLLU5BQ0stcmVwZXRpdGlvbkZhY3RvcglPUFRJT05BTCwKCQloYXJxLVByZWFtYmxlLU1vZGUJCQkJCUhBUlEtUHJlYW1ibGUtTW9kZQoJfSwKCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQktLSBUaGUgSUUgdWwtVGFyZ2V0U0lSIGNvcnJlc3BvbmRzIHRvIFBSWC1EUENIZGVzIGZvciAxLjI4TWNwcyBUREQKCQktLSBBY3R1YWwgdmFsdWUgUFJYLURQQ0hkZXMgPSAodmFsdWUgb2YgSUUgInVsLVRhcmdldFNJUiIg0CAxMjApCgkJdWwtVGFyZ2V0U0lSCQkJCQkJVUwtVGFyZ2V0U0lSCQkJCU9QVElPTkFMLAoJCXVsLU9MLVBDLVNpZ25hbGxpbmcJCQkJCUNIT0lDRSB7CgkJCWJyb2FkY2FzdC1VTC1PTC1QQy1pbmZvCQkJCU5VTEwsCgkJCWluZGl2aWR1YWxseVNpZ25hbGxlZAkJCQlTRVFVRU5DRSB7CgkJCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKCQkJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJaW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QJCUluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0LAoJCQkJCQlkcGNoLUNvbnN0YW50VmFsdWUJCQkJCUNvbnN0YW50VmFsdWUKCQkJCQl9LAoJCQkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQliZWFjb25QTEVzdAkJCQkJCQlCRUFDT04tUEwtRXN0CQlPUFRJT05BTCwKCQkJCQkJdHBjLVN0ZXBTaXplCQkJCQkJVFBDLVN0ZXBTaXplVERECgkJCQkJfQoJCQkJfSwKCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKCQkJfQoJCX0KCX0KfQoKVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI3IDo6PQkJQ0hPSUNFIHsKCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQlkcGNjaC1Qb3dlck9mZnNldAkJCQkJRFBDQ0gtUG93ZXJPZmZzZXQsCgkJcGMtUHJlYW1ibGUJCQkJCQkJUEMtUHJlYW1ibGUsCgkJc1JCLWRlbGF5CQkJCQkJCVNSQi1kZWxheSwKCQktLSBUQUJVTEFSOiBUUEMgc3RlcCBzaXplIG5lc3RlZCBpbnNpZGUgUG93ZXJDb250cm9sQWxnb3JpdGhtCgkJcG93ZXJDb250cm9sQWxnb3JpdGhtCQkJCVBvd2VyQ29udHJvbEFsZ29yaXRobSwKCQlkZWx0YUFDSwkJCQkJCQlEZWx0YUFDSwlPUFRJT05BTCwKCQlkZWx0YU5BQ0sJCQkJCQkJRGVsdGFOQUNLCU9QVElPTkFMLAoJCWFjay1OQUNLLXJlcGV0aXRpb24tZmFjdG9yCQkJQUNLLU5BQ0stcmVwZXRpdGlvbkZhY3RvcglPUFRJT05BTCwKCQloYXJxLVByZWFtYmxlLU1vZGUJCQkJCUhBUlEtUHJlYW1ibGUtTW9kZQoJfSwKCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQktLSBUaGUgSUUgdWwtVGFyZ2V0U0lSIGNvcnJlc3BvbmRzIHRvIFBSWC1EUENIZGVzIGZvciAxLjI4TWNwcyBUREQKCQktLSBBY3R1YWwgdmFsdWUgUFJYLURQQ0hkZXMgPSAodmFsdWUgb2YgSUUgInVsLVRhcmdldFNJUiIg0CAxMjApCgkJdWwtVGFyZ2V0U0lSCQkJCQkJVUwtVGFyZ2V0U0lSCQkJCU9QVElPTkFMLAoJCXVsLU9MLVBDLVNpZ25hbGxpbmcJCQkJCUNIT0lDRSB7CgkJCWJyb2FkY2FzdC1VTC1PTC1QQy1pbmZvCQkJCU5VTEwsCgkJCWluZGl2aWR1YWxseVNpZ25hbGxlZAkJCQlTRVFVRU5DRSB7CgkJCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKCQkJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQkJaW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QJCUluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0LAoJCQkJCQlkcGNoLUNvbnN0YW50VmFsdWUJCQkJCUNvbnN0YW50VmFsdWUKCQkJCQl9LAoJCQkJCXRkZDc2OAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQlpbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdAkJSW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QsCgkJCQkJCWRwY2gtQ29uc3RhbnRWYWx1ZQkJCQkJQ29uc3RhbnRWYWx1ZQoJCQkJCX0sCgkJCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJCWJlYWNvblBMRXN0CQkJCQkJCUJFQUNPTi1QTC1Fc3QJCU9QVElPTkFMLAoJCQkJCQl0cGMtU3RlcFNpemUJCQkJCQlUUEMtU3RlcFNpemVUREQKCQkJCQl9CgkJCQl9LAoJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgoJCQl9CgkJfQoJfQp9CgpVTC1EUENILVBvd2VyQ29udHJvbEluZm9Qb3N0RkREIDo6PQlTRVFVRU5DRSB7CgktLSBEUENDSC1Qb3dlck9mZnNldDIgaGFzIGEgc21hbGxlciByYW5nZSB0byBzYXZlIGJpdHMKCWRwY2NoLVBvd2VyT2Zmc2V0CQkJCQlEUENDSC1Qb3dlck9mZnNldDIsCglwYy1QcmVhbWJsZQkJCQkJCQlQQy1QcmVhbWJsZSwKCXNSQi1kZWxheQkJCQkJCQlTUkItZGVsYXkKfQoKVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvUG9zdFRERCA6Oj0JU0VRVUVOQ0UgewoJdWwtVGFyZ2V0U0lSCQkJCQkJVUwtVGFyZ2V0U0lSLAoJdWwtVGltZXNsb3RJbnRlcmZlcmVuY2UJCQkJVERELVVMLUludGVyZmVyZW5jZQp9CgpVTC1EUENILVBvd2VyQ29udHJvbEluZm9Qb3N0VERELUxDUi1yNCA6Oj0JU0VRVUVOQ0UgewoJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtRFBDSGRlcyBmb3IgMS4yOE1jcHMgVERECgktLSBBY3R1YWwgdmFsdWUgUFJYLURQQ0hkZXMgPSAodmFsdWUgb2YgSUUgInVsLVRhcmdldFNJUiIg0CAxMjApCgl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIKfQoKVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvUHJlZGVmIDo6PQkJQ0hPSUNFIHsKCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQktLSBUQUJVTEFSOiBUUEMgc3RlcCBzaXplIG5lc3RlZCBpbnNpZGUgUG93ZXJDb250cm9sQWxnb3JpdGhtCgkJcG93ZXJDb250cm9sQWxnb3JpdGhtCQkJCVBvd2VyQ29udHJvbEFsZ29yaXRobQoJfSwKCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQktLSBkcGNoLUNvbnN0YW50VmFsdWUgc2hhbGwgYmUgaWdub3JlZCBpZiBpbiAxLjI4TWNwcyBUREQgbW9kZS4KCQlkcGNoLUNvbnN0YW50VmFsdWUJCQkJCUNvbnN0YW50VmFsdWVUZGQKCX0KfQoKVUwtRURDSC1JbmZvcm1hdGlvbi1yNiA6Oj0JCQlTRVFVRU5DRSB7CgltYWMtZXMtZS1yZXNldEluZGljYXRvcgkJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQkJT1BUSU9OQUwsCgllLURQQ0NILUluZm8JCQkJCQlFLURQQ0NILUluZm8JCQkJCQkJT1BUSU9OQUwsCgllLURQRENILUluZm8JCQkJCQlFLURQRENILUluZm8JCQkJCQkJT1BUSU9OQUwsCglzY2hlZHVsaW5nVHJhbnNtQ29uZmlndXJhdGlvbgkJRS1EUERDSC1TY2hlZHVsaW5nVHJhbnNtQ29uZmlndXJhdGlvbglPUFRJT05BTAp9CgpVTC1JbnRlcmZlcmVuY2UgOjo9CQkJCQlJTlRFR0VSICgtMTEwLi4tNzApCgpVTC1TY3JhbWJsaW5nQ29kZSA6Oj0JCQkJSU5URUdFUiAoMC4uMTY3NzcyMTUpCgoKVUwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNCA6Oj0JU0VRVUVOQ0UgewoJc3RlcFNpemUJCQkJCQkJSU5URUdFUiAoMS4uOCksCglmcmVxdWVuY3kJCQkJCQkJSU5URUdFUiAoMS4uOCkKfQoKLS0gQWN0dWFsIHZhbHVlIFVMLVRhcmdldFNJUiA9IChJRSB2YWx1ZSAqIDAuNSkgLSAxMQpVTC1UYXJnZXRTSVIgOjo9CQkJCQlJTlRFR0VSICgwLi42MikKClVMLVRpbWluZ0FkdmFuY2UgOjo9CQkJCUlOVEVHRVIgKDAuLjYzKQoKVUwtVGltaW5nQWR2YW5jZS1WSENSIDo6PQkJCUlOVEVHRVIgKDAuLjEyNykKClVMLVRpbWluZ0FkdmFuY2VDb250cm9sIDo6PQkJCUNIT0lDRSB7CglkaXNhYmxlZAkJCQkJCQlOVUxMLAoJZW5hYmxlZAkJCQkJCQkJU0VRVUVOQ0UgewoJCXVsLVRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2UJCQkJT1BUSU9OQUwsCgkJYWN0aXZhdGlvblRpbWUJCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJT1BUSU9OQUwKCX0KfQoKVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjQgOjo9CQlDSE9JQ0UgewoJZGlzYWJsZWQJCQkJCQkJTlVMTCwKCWVuYWJsZWQJCQkJCQkJCVNFUVVFTkNFIHsKCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKCQkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQl1bC1UaW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlCQkJCU9QVElPTkFMLAoJCQkJYWN0aXZhdGlvblRpbWUJCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJT1BUSU9OQUwKCQkJfSwKCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQl1bC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzCQlVTC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzLXI0CU9QVElPTkFMLAoJCQkJc3luY2hyb25pc2F0aW9uUGFyYW1ldGVycwkJCVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMtcjQJT1BUSU9OQUwKCQkJfQoJCX0KCX0KfQoKVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjcgOjo9CQlDSE9JQ0UgewoJZGlzYWJsZWQJCQkJCQkJTlVMTCwKCWVuYWJsZWQJCQkJCQkJCVNFUVVFTkNFIHsKCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKCQkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQl1bC1UaW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlCQkJCU9QVElPTkFMLAoJCQkJZXh0LXVsLVRpbWluZ0FkdmFuY2UJCQkJRVhULVVMLVRpbWluZ0FkdmFuY2UJCQlPUFRJT05BTCwKCQkJCWFjdGl2YXRpb25UaW1lCQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCU9QVElPTkFMCgkJCX0sCgkJCXRkZDc2OAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJZXh0LXVsLVRpbWluZ0FkdmFuY2UJCQkJRVhULVVMLVRpbWluZ0FkdmFuY2UJCQlPUFRJT05BTCwKCQkJCWFjdGl2YXRpb25UaW1lCQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCU9QVElPTkFMCgkJCX0sCgkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJdWwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycwkJVUwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNAlPUFRJT05BTCwKCQkJCXN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMJCQlTeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzLXI0CU9QVElPTkFMCgkJCX0KCQl9Cgl9Cn0KClVMLVRpbWluZ0FkdmFuY2VDb250cm9sLUxDUi1yNCA6Oj0JQ0hPSUNFIHsKCWRpc2FibGVkCQkJCQkJCU5VTEwsCgllbmFibGVkCQkJCQkJCQlTRVFVRU5DRSB7CgkJdWwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycwkJVUwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNAlPUFRJT05BTCwKCQlzeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzCQkJU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNAlPUFRJT05BTAoJfQp9CgpVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGUgOjo9CQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWNjMS0xLCBjYzItMSwgY2MyLTIsCgkJCQkJCQkJCQljYzQtMSwgY2M0LTIsIGNjNC0zLCBjYzQtNCwKCQkJCQkJCQkJCWNjOC0xLCBjYzgtMiwgY2M4LTMsIGNjOC00LAoJCQkJCQkJCQkJY2M4LTUsIGNjOC02LCBjYzgtNywgY2M4LTgsCgkJCQkJCQkJCQljYzE2LTEsIGNjMTYtMiwgY2MxNi0zLCBjYzE2LTQsCgkJCQkJCQkJCQljYzE2LTUsIGNjMTYtNiwgY2MxNi03LCBjYzE2LTgsCgkJCQkJCQkJCQljYzE2LTksIGNjMTYtMTAsIGNjMTYtMTEsIGNjMTYtMTIsCgkJCQkJCQkJCQljYzE2LTEzLCBjYzE2LTE0LCBjYzE2LTE1LCBjYzE2LTE2IH0KClVMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QgOjo9IAlTRVFVRU5DRSAoU0laRSAoMS4uMikpIE9GCgkJCQkJCQkJCQlVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGUKClVMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QtcjcgOjo9IAlTRVFVRU5DRSAoU0laRSAoMS4uMikpIE9GCgkJCQkJCQkJCQkJU0VRVUVOQ0UgewoJCXVsLVRTLUNoYW5uZWxpc2F0aW9uLUNvZGUJCQkJVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLAoJCXBsY2NoLWluZm8JCQkJCQkJCVBMQ0NILUluZm8JCU9QVElPTkFMCn0KClVMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZS1WSENSIDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQljYzEtMSwgY2MyLTEsIGNjMi0yLAoJCQkJCQkJCQkJY2M0LTEsIGNjNC0yLCBjYzQtMywgY2M0LTQsCgkJCQkJCQkJCQljYzgtMSwgY2M4LTIsIGNjOC0zLCBjYzgtNCwKCQkJCQkJCQkJCWNjOC01LCBjYzgtNiwgY2M4LTcsIGNjOC04LAoJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAoJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAoJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAoJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiwKCQkJCQkJCQkJCWNjMzItMSwgY2MzMi0yLCBjYzMyLTMsIGNjMzItNCwKCQkJCQkJCQkJCWNjMzItNSwgY2MzMi02LCBjYzMyLTcsIGNjMzItOCwKCQkJCQkJCQkJCWNjMzItOSwgY2MzMi0xMCwgY2MzMi0xMSwgY2MzMi0xMiwKCQkJCQkJCQkJCWNjMzItMTMsIGNjMzItMTQsIGNjMzItMTUsIGNjMzItMTYsCgkJCQkJCQkJCQljYzMyLTE3LCBjYzMyLTE4LCBjYzMyLTE5LCBjYzMyLTIwLAoJCQkJCQkJCQkJY2MzMi0yMSwgY2MzMi0yMiwgY2MzMi0yMywgY2MzMi0yNCwKCQkJCQkJCQkJCWNjMzItMjUsIGNjMzItMjYsIGNjMzItMjcsIGNjMzItMjgsCgkJCQkJCQkJCQljYzMyLTI5LCBjYzMyLTMwLCBjYzMyLTMxLCBjYzMyLTMyIH0KClVMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QtVkhDUiA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLjIpKSBPRgoJCQkJCQkJCQkJCVVMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZS1WSENSCgpVcGxpbmtBZGRpdGlvbmFsVGltZXNsb3RzIDo6PQkJU0VRVUVOQ0UgewoJcGFyYW1ldGVycwkJCQkJCQlDSE9JQ0UgewoJCXNhbWVBc0xhc3QJCQkJCQkJU0VRVUVOQ0UgewoJCQl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyCgkJfSwKCQluZXdQYXJhbWV0ZXJzCQkJCQkJU0VRVUVOQ0UgewoJCQlpbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mbywKCQkJdWwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCQlVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CgkJfQoJfQp9CgpVcGxpbmtBZGRpdGlvbmFsVGltZXNsb3RzLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgewoJcGFyYW1ldGVycwkJCQkJCQlDSE9JQ0UgewoJCXNhbWVBc0xhc3QJCQkJCQkJU0VRVUVOQ0UgewoJCQl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyCgkJfSwKCQluZXdQYXJhbWV0ZXJzCQkJCQkJU0VRVUVOQ0UgewoJCQlpbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mby1MQ1ItcjQsCgkJCXVsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQkJVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAoJCX0KCX0KfQoKVXBsaW5rQWRkaXRpb25hbFRpbWVzbG90cy1MQ1ItcjcgOjo9CVNFUVVFTkNFIHsKCXBhcmFtZXRlcnMJCQkJCQkJQ0hPSUNFIHsKCQlzYW1lQXNMYXN0CQkJCQkJCVNFUVVFTkNFIHsKCQkJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlcgoJCQktLSBwbGNjaC1pbmZvIGFzc2lnbmVkIGFzIHByZXZpb3VzbHkgZGVmaW5lZCBzbG90CgkJfSwKCQluZXdQYXJhbWV0ZXJzCQkJCQkJU0VRVUVOQ0UgewoJCQlpbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0LAoJCQl1bC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CQlVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LXI3CgkJfQoJfQp9CgpVcGxpbmtUaW1lc2xvdHNDb2RlcyA6Oj0JCQlTRVFVRU5DRSB7CglkeW5hbWljU0Z1c2FnZQkJCQkJCUJPT0xFQU4sCglmaXJzdEluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLAoJdWwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdCwKCW1vcmVUaW1lc2xvdHMJCQkJCQlDSE9JQ0UgewoJCW5vTW9yZQkJCQkJCQkJTlVMTCwKCQlhZGRpdGlvbmFsVGltZXNsb3RzCQkJCQlDSE9JQ0UgewoJCQljb25zZWN1dGl2ZQkJCQkJCQlTRVFVRU5DRSB7CgkJCQludW1BZGRpdGlvbmFsVGltZXNsb3RzCQkJCUlOVEVHRVIgKDEuLm1heFRTLTEpCgkJCX0sCgkJCXRpbWVzbG90TGlzdAkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUy0xKSkgT0YKCQkJCQkJCQkJCQkJCVVwbGlua0FkZGl0aW9uYWxUaW1lc2xvdHMKCQl9Cgl9Cn0KClVwbGlua1RpbWVzbG90c0NvZGVzLVZIQ1IgOjo9CQlTRVFVRU5DRSB7CglkeW5hbWljU0Z1c2FnZQkJCQkJCUJPT0xFQU4sCglmaXJzdEluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLVZIQ1IsCgl1bC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CQlVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LVZIQ1IsCgltb3JlVGltZXNsb3RzCQkJCQkJQ0hPSUNFIHsKCQlub01vcmUJCQkJCQkJCU5VTEwsCgkJYWRkaXRpb25hbFRpbWVzbG90cwkJCQkJQ0hPSUNFIHsKCQkJY29uc2VjdXRpdmUJCQkJCQkJU0VRVUVOQ0UgewoJCQkJbnVtQWRkaXRpb25hbFRpbWVzbG90cwkJCQlJTlRFR0VSICgxLi5tYXhUUy0xKQoJCQl9LAoJCQl0aW1lc2xvdExpc3QJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtMSkpIE9GCgkJCQkJCQkJCQkJCQlVcGxpbmtBZGRpdGlvbmFsVGltZXNsb3RzCgkJfQoJfQp9CgpVcGxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CglkeW5hbWljU0Z1c2FnZQkJCQkJCUJPT0xFQU4sCglmaXJzdEluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLUxDUi1yNCwKCXVsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCVVMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QsCgltb3JlVGltZXNsb3RzCQkJCQkJQ0hPSUNFIHsKCQlub01vcmUJCQkJCQkJCU5VTEwsCgkJYWRkaXRpb25hbFRpbWVzbG90cwkJCQkJQ0hPSUNFIHsKCQkJY29uc2VjdXRpdmUJCQkJCQkJU0VRVUVOQ0UgewoJCQkJbnVtQWRkaXRpb25hbFRpbWVzbG90cwkJCQlJTlRFR0VSICgxLi5tYXhUUy1MQ1ItMSkKCQkJfSwKCQkJdGltZXNsb3RMaXN0CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTLUxDUi0xKSkgT0YKCQkJCQkJCQkJCQkJCVVwbGlua0FkZGl0aW9uYWxUaW1lc2xvdHMtTENSLXI0CgkJfQoJfQp9CgpVcGxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjcgOjo9CQlTRVFVRU5DRSB7CglkeW5hbWljU0Z1c2FnZQkJCQkJCUJPT0xFQU4sCglmaXJzdEluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLUxDUi1yNCwKCXVsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCVVMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QtcjcsCgltb3JlVGltZXNsb3RzCQkJCQkJQ0hPSUNFIHsKCQlub01vcmUJCQkJCQkJCU5VTEwsCgkJYWRkaXRpb25hbFRpbWVzbG90cwkJCQkJQ0hPSUNFIHsKCQkJY29uc2VjdXRpdmUJCQkJCQkJU0VRVUVOQ0UgewoJCQktLSB0aGUgY2hvaWNlIG9mICdjb25zZWN1dGl2ZScgaXMgbm90IG5lZWRlZCBiZWNhdXNlIHRoZXJlIGlzIG9ubHkgMSBvcHRpb24uIAoJCQkJbnVtQWRkaXRpb25hbFRpbWVzbG90cwkJCQlJTlRFR0VSICgxLi5tYXhUUy1MQ1ItMSkKCQkJfSwKCQkJdGltZXNsb3RMaXN0CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTLUxDUi0xKSkgT0YKCQkJCQkJCQkJCQkJCVVwbGlua0FkZGl0aW9uYWxUaW1lc2xvdHMtTENSLXI3CgkJfQoJfQp9CgpXaS1MQ1IgOjo9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URUdFUigxLi40KQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tICAgICBNRUFTVVJFTUVOVCBJTkZPUk1BVElPTiBFTEVNRU5UUyAoMTAuMy43KQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkFjcXVpc2l0aW9uU2F0SW5mbyA6Oj0JCQkJU0VRVUVOQ0UgewoJc2F0SUQJCQkJCQkJCVNhdElELAoJLS0gQWN0dWFsIHZhbHVlIGRvcHBsZXJPdGhPcmRlciA9IElFIHZhbHVlICogMi41Cglkb3BwbGVyMHRoT3JkZXIJCQkJCQlJTlRFR0VSICgtMjA0OC4uMjA0NyksCglleHRyYURvcHBsZXJJbmZvCQkJCQlFeHRyYURvcHBsZXJJbmZvCQkJCQlPUFRJT05BTCwKCWNvZGVQaGFzZQkJCQkJCQlJTlRFR0VSICgwLi4xMDIyKSwKCWludGVnZXJDb2RlUGhhc2UJCQkJCUlOVEVHRVIgKDAuLjE5KSwKCWdwcy1CaXROdW1iZXIJCQkJCQlJTlRFR0VSICgwLi4zKSwKCWNvZGVQaGFzZVNlYXJjaFdpbmRvdwkJCQlDb2RlUGhhc2VTZWFyY2hXaW5kb3csCglhemltdXRoQW5kRWxldmF0aW9uCQkJCQlBemltdXRoQW5kRWxldmF0aW9uCQkJCQlPUFRJT05BTAp9CQoKQWNxdWlzaXRpb25TYXRJbmZvTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U2F0KSkgT0YKCQkJCQkJCQkJCUFjcXVpc2l0aW9uU2F0SW5mbwoKCkFkZGl0aW9uYWxNZWFzdXJlbWVudElELUxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhBZGRpdGlvbmFsTWVhcykpIE9GCgkJCQkJCQkJCQlNZWFzdXJlbWVudElkZW50aXR5CgpBbG1hbmFjU2F0SW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKCWRhdGFJRAkJCQkJCQkJSU5URUdFUiAoMC4uMyksCglzYXRJRAkJCQkJCQkJU2F0SUQsCgllCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKCXQtb2EJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKCWRlbHRhSQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKCW9tZWdhRG90CQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCglzYXRIZWFsdGgJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAoJYS1TcXJ0CQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAoJb21lZ2EwCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAoJbTAJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAoJb21lZ2EJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI0KSksCglhZjAJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxMSkpLAoJYWYxCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTEpKQp9CgpBbG1hbmFjU2F0SW5mb0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTYXQpKSBPRgoJCQkJCQkJCQkJQWxtYW5hY1NhdEluZm8KCkF2ZXJhZ2VSTEMtQnVmZmVyUGF5bG9hZCA6Oj0JCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJcGxhMCwgcGxhNCwgcGxhOCwgcGxhMTYsIHBsYTMyLAoJCQkJCQkJCQkJcGxhNjQsIHBsYTEyOCwgcGxhMjU2LCBwbGE1MTIsCgkJCQkJCQkJCQlwbGExMDI0LCBwbGEyaywgcGxhNGssIHBsYThrLCBwbGExNmssCgkJCQkJCQkJCQlwbGEzMmssIHBsYTY0aywgcGxhMTI4aywgcGxhMjU2aywKCQkJCQkJCQkJCXBsYTUxMmssIHBsYTEwMjRrLCBzcGFyZTEyLCBzcGFyZTExLAoJCQkJCQkJCQkJc3BhcmUxMCwgc3BhcmU5LCBzcGFyZTgsIHNwYXJlNywgc3BhcmU2LAoJCQkJCQkJCQkJc3BhcmU1LCBzcGFyZTQsIHNwYXJlMywgc3BhcmUyLCBzcGFyZTEgfQoJCkF6aW11dGhBbmRFbGV2YXRpb24gOjo9CQkJCVNFUVVFTkNFIHsKCS0tIEFjdHVhbCB2YWx1ZSBhemltdXRoID0gSUUgdmFsdWUgKiAxMS4yNQoJYXppbXV0aAkJCQkJCQkJSU5URUdFUiAoMC4uMzEpLAoJLS0gQWN0dWFsIHZhbHVlIGVsZXZhdGlvbiA9IElFIHZhbHVlICogMTEuMjUKCWVsZXZhdGlvbgkJCQkJCQlJTlRFR0VSICgwLi43KQp9CgpCYWRTYXRMaXN0IDo6PQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTYXQpKSBPRgoJCQkJCQkJCQkJSU5URUdFUiAoMC4uNjMpCgpGcmVxdWVuY3ktQmFuZCA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZGNzMTgwMEJhbmRVc2VkLCBwY3MxOTAwQmFuZFVzZWQgfQoKQkNDSC1BUkZDTiA6Oj0JCQkJCQlJTlRFR0VSICgwLi4xMDIzKQoKQkxFUi1NZWFzdXJlbWVudFJlc3VsdHMgOjo9CQkJU0VRVUVOQ0UgewoJdHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAoJZGwtVHJhbnNwb3J0Q2hhbm5lbEJMRVIJCQkJREwtVHJhbnNwb3J0Q2hhbm5lbEJMRVIJCQkJT1BUSU9OQUwKfQoKQkxFUi1NZWFzdXJlbWVudFJlc3VsdHNMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgoJCQkJCQkJCQkJQkxFUi1NZWFzdXJlbWVudFJlc3VsdHMKCkJMRVItVHJhbnNDaElkTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgoJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CgpCU0lDLVZlcmlmaWNhdGlvblJlcXVpcmVkIDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlyZXF1aXJlZCwgbm90UmVxdWlyZWQgfQoKQlNJQ1JlcG9ydGVkIDo6PQkJCQkJQ0hPSUNFIHsKCS0tIFZhbHVlIG1heENlbGxNZWFzIGlzIG5vdCBhbGxvd2VkIGZvciB2ZXJpZmllZEJTSUMKCXZlcmlmaWVkQlNJQwkJCQkJCUlOVEVHRVIgKDAuLm1heENlbGxNZWFzKSwKCW5vblZlcmlmaWVkQlNJQwkJCQkJCUJDQ0gtQVJGQ04KfQoKQnVyc3RNb2RlUGFyYW1ldGVycyA6Oj0JCQkJU0VRVUVOQ0UgewoJYnVyc3RTdGFydAkJCQkJCQlJTlRFR0VSICgwLi4xNSksCglidXJzdExlbmd0aAkJCQkJCQlJTlRFR0VSICgxMC4uMjUpLAoJYnVyc3RGcmVxCQkJCQkJCUlOVEVHRVIgKDEuLjE2KQp9CgpDZWxsRENILVJlcG9ydENyaXRlcmlhIDo6PQkJCUNIT0lDRSB7CglpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLAoJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCn0KCkNlbGxEQ0gtUmVwb3J0Q3JpdGVyaWEtTENSLXI0IDo6PQlDSE9JQ0UgewoJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS1MQ1ItcjQsCglwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEKfQoKLS0gQWN0dWFsIHZhbHVlIENlbGxJbmRpdmlkdWFsT2Zmc2V0ID0gSUUgdmFsdWUgKiAwLjUKQ2VsbEluZGl2aWR1YWxPZmZzZXQgOjo9CQkJSU5URUdFUiAoLTIwLi4yMCkKCgpDZWxsSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CgljZWxsSW5kaXZpZHVhbE9mZnNldAkJCQlDZWxsSW5kaXZpZHVhbE9mZnNldAkJCSAJREVGQVVMVCAwLAoJcmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCVJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8JCQlPUFRJT05BTCwKCQkJcHJpbWFyeUNQSUNILVRYLVBvd2VyCQkJCVByaW1hcnlDUElDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCgkJCXJlYWRTRk4tSW5kaWNhdG9yCQkJCQlCT09MRUFOLAoJCQl0eC1EaXZlcnNpdHlJbmRpY2F0b3IJCQkJQk9PTEVBTgkJCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXByaW1hcnlDQ1BDSC1JbmZvCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mbywKCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCgkJCXRpbWVzbG90SW5mb0xpc3QJCQkJCVRpbWVzbG90SW5mb0xpc3QJCQlPUFRJT05BTCwKCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4KCQl9Cgl9Cn0KCkNlbGxJbmZvLXI0IDo6PQkJCQkJCVNFUVVFTkNFIHsKCWNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJCUNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJIAlERUZBVUxUIDAsCglyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwkJCU9QVElPTkFMLAoJCQlwcmltYXJ5Q1BJQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNQSUNILVRYLVBvd2VyCQlPUFRJT05BTCwKCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCgkJCXR4LURpdmVyc2l0eUluZGljYXRvcgkJCQlCT09MRUFOCQkKCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLXI0LAoJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCQlPUFRJT05BTCwKCQkJdGltZXNsb3RJbmZvTGlzdAkJCQkJVGltZXNsb3RJbmZvTGlzdC1yNAkJCU9QVElPTkFMLAoJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTgoKCQl9Cgl9Cn0KCkNlbGxJbmZvU0ktUlNDUCA6Oj0JCQkJCVNFUVVFTkNFIHsKCWNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJCUNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkgCQlERUZBVUxUIDAsCglyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwkJCU9QVElPTkFMLAoJCQlwcmltYXJ5Q1BJQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNQSUNILVRYLVBvd2VyCQlPUFRJT05BTCwKCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCgkJCXR4LURpdmVyc2l0eUluZGljYXRvcgkJCQlCT09MRUFOCQkKCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLAoJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCQlPUFRJT05BTCwKCQkJdGltZXNsb3RJbmZvTGlzdAkJCQkJVGltZXNsb3RJbmZvTGlzdAkJCU9QVElPTkFMLAoJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTgoJCX0KCX0sCgljZWxsU2VsZWN0aW9uUmVzZWxlY3Rpb25JbmZvCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLVJTQ1AJCU9QVElPTkFMCn0KCkNlbGxJbmZvU0ktUlNDUC1MQ1ItcjQgOjo9CQkJU0VRVUVOQ0UgewoJY2VsbEluZGl2aWR1YWxPZmZzZXQJCQkJQ2VsbEluZGl2aWR1YWxPZmZzZXQJCSAJCURFRkFVTFQgMCwKCXJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlSZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJT1BUSU9OQUwsCglwcmltYXJ5Q0NQQ0gtSW5mbwkJCQkJUHJpbWFyeUNDUENILUluZm8tTENSLXI0LAoJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCXRpbWVzbG90SW5mb0xpc3QJCQkJCVRpbWVzbG90SW5mb0xpc3QtTENSLXI0CQkJCU9QVElPTkFMLAoJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCgljZWxsU2VsZWN0aW9uUmVzZWxlY3Rpb25JbmZvCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLVJTQ1AJCU9QVElPTkFMCn0KCkNlbGxJbmZvU0ktRUNOMCA6Oj0JCQkJCVNFUVVFTkNFIHsKCWNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJCUNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkgCQlERUZBVUxUIDAsCglyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwkJCU9QVElPTkFMLAoJCQlwcmltYXJ5Q1BJQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNQSUNILVRYLVBvd2VyCQlPUFRJT05BTCwKCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCgkJCXR4LURpdmVyc2l0eUluZGljYXRvcgkJCQlCT09MRUFOCQkKCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLAoJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCQlPUFRJT05BTCwKCQkJdGltZXNsb3RJbmZvTGlzdAkJCQkJVGltZXNsb3RJbmZvTGlzdAkJCU9QVElPTkFMLAoJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTgoJCX0KCX0sCgljZWxsU2VsZWN0aW9uUmVzZWxlY3Rpb25JbmZvCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLUVDTjAJT1BUSU9OQUwKfQoKQ2VsbEluZm9TSS1FQ04wLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSB7CgljZWxsSW5kaXZpZHVhbE9mZnNldAkJCQlDZWxsSW5kaXZpZHVhbE9mZnNldAkJIAkJREVGQVVMVCAwLAoJcmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCVJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlPUFRJT05BTCwKCXByaW1hcnlDQ1BDSC1JbmZvCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1MQ1ItcjQsCglwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJdGltZXNsb3RJbmZvTGlzdAkJCQkJVGltZXNsb3RJbmZvTGlzdC1MQ1ItcjQJCQkJT1BUSU9OQUwsCglyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKCWNlbGxTZWxlY3Rpb25SZXNlbGVjdGlvbkluZm8JCUNlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTItRUNOMAlPUFRJT05BTAp9CgpDZWxsSW5mb1NJLUhDUy1SU0NQIDo6PQkJCQlTRVFVRU5DRSB7CgljZWxsSW5kaXZpZHVhbE9mZnNldAkJCQlDZWxsSW5kaXZpZHVhbE9mZnNldAkJIAkJREVGQVVMVCAwLAoJcmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCVJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8JCQlPUFRJT05BTCwKCQkJcHJpbWFyeUNQSUNILVRYLVBvd2VyCQkJCVByaW1hcnlDUElDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCgkJCXJlYWRTRk4tSW5kaWNhdG9yCQkJCQlCT09MRUFOLAoJCQl0eC1EaXZlcnNpdHlJbmRpY2F0b3IJCQkJQk9PTEVBTgkJCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXByaW1hcnlDQ1BDSC1JbmZvCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mbywKCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCgkJCXRpbWVzbG90SW5mb0xpc3QJCQkJCVRpbWVzbG90SW5mb0xpc3QJCQlPUFRJT05BTCwKCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4KCQl9Cgl9LAoJY2VsbFNlbGVjdGlvblJlc2VsZWN0aW9uSW5mbwkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMi1IQ1MtUlNDUAlPUFRJT05BTAp9CgpDZWxsSW5mb1NJLUhDUy1SU0NQLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKCWNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJCUNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkgCQlERUZBVUxUIDAsCglyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAoJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLUxDUi1yNCwKCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgl0aW1lc2xvdEluZm9MaXN0CQkJCQlUaW1lc2xvdEluZm9MaXN0LUxDUi1yNAkJCQlPUFRJT05BTCwKCXJlYWRTRk4tSW5kaWNhdG9yCQkJCQlCT09MRUFOLAoJY2VsbFNlbGVjdGlvblJlc2VsZWN0aW9uSW5mbwkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMi1IQ1MtUlNDUAlPUFRJT05BTAp9CgpDZWxsSW5mb1NJLUhDUy1FQ04wIDo6PQkJCQlTRVFVRU5DRSB7CgljZWxsSW5kaXZpZHVhbE9mZnNldAkJCQlDZWxsSW5kaXZpZHVhbE9mZnNldAkJIAkJREVGQVVMVCAwLAoJcmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCVJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8JCQlPUFRJT05BTCwKCQkJcHJpbWFyeUNQSUNILVRYLVBvd2VyCQkJCVByaW1hcnlDUElDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCgkJCXJlYWRTRk4tSW5kaWNhdG9yCQkJCQlCT09MRUFOLAoJCQl0eC1EaXZlcnNpdHlJbmRpY2F0b3IJCQkJQk9PTEVBTgkJCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXByaW1hcnlDQ1BDSC1JbmZvCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mbywKCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCgkJCXRpbWVzbG90SW5mb0xpc3QJCQkJCVRpbWVzbG90SW5mb0xpc3QJCQlPUFRJT05BTCwKCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4KCQl9Cgl9LAoJY2VsbFNlbGVjdGlvblJlc2VsZWN0aW9uSW5mbwkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMi1IQ1MtRUNOMAlPUFRJT05BTAp9CgpDZWxsSW5mb1NJLUhDUy1FQ04wLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKCWNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJCUNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkgCQlERUZBVUxUIDAsCglyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAoJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLUxDUi1yNCwKCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgl0aW1lc2xvdEluZm9MaXN0CQkJCQlUaW1lc2xvdEluZm9MaXN0LUxDUi1yNAkJCQlPUFRJT05BTCwKCXJlYWRTRk4tSW5kaWNhdG9yCQkJCQlCT09MRUFOLAoJY2VsbFNlbGVjdGlvblJlc2VsZWN0aW9uSW5mbwkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMi1IQ1MtRUNOMAlPUFRJT05BTAp9CgpDZWxsTWVhc3VyZWRSZXN1bHRzIDo6PQkJCQlTRVFVRU5DRSB7CgljZWxsSWRlbnRpdHkJCQkJCQlDZWxsSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCglkdW1teQkJCVNGTi1TRk4tT2JzVGltZURpZmZlcmVuY2UJCQlPUFRJT05BTCwKCWNlbGxTeW5jaHJvbmlzYXRpb25JbmZvCQkJQ2VsbFN5bmNocm9uaXNhdGlvbkluZm8JCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCgkJCWNwaWNoLUVjLU4wCQkJCQkJCUNQSUNILUVjLU4wCQkJCQlPUFRJT05BTCwKCQkJY3BpY2gtUlNDUAkJCQkJCQlDUElDSC1SU0NQCQkJCQlPUFRJT05BTCwKCQkJcGF0aGxvc3MJCQkJCQkJUGF0aGxvc3MJCQkJCU9QVElPTkFMCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWNlbGxQYXJhbWV0ZXJzSUQJCQkJCUNlbGxQYXJhbWV0ZXJzSUQsCgkJCXByb3Bvc2VkVEdTTgkJCQkJCVRHU04JCQkJCQlPUFRJT05BTCwKCQkJcHJpbWFyeUNDUENILVJTQ1AJCQkJCVByaW1hcnlDQ1BDSC1SU0NQCQkJT1BUSU9OQUwsCgkJCXBhdGhsb3NzCQkJCQkJCVBhdGhsb3NzCQkJCQlPUFRJT05BTCwKCQkJdGltZXNsb3RJU0NQLUxpc3QJCQkJCVRpbWVzbG90SVNDUC1MaXN0CQkJT1BUSU9OQUwKCQl9Cgl9Cn0KCkNlbGxNZWFzdXJlbWVudEV2ZW50UmVzdWx0cyA6Oj0JCUNIT0lDRSB7CglmZGQJCQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvLAoJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mbwp9CgpDZWxsTWVhc3VyZW1lbnRFdmVudFJlc3VsdHMtTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJCVByaW1hcnlDQ1BDSC1JbmZvLUxDUi1yNAoKQ2VsbFJlcG9ydGluZ1F1YW50aXRpZXMgOjo9CQkJU0VRVUVOQ0UgewoJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCgktLSBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCglkdW1teQkJCQkJU0ZOLVNGTi1PVEQtVHlwZSwKCWNlbGxJZGVudGl0eS1yZXBvcnRpbmdJbmRpY2F0b3IJCQkJCQlCT09MRUFOLAoJY2VsbFN5bmNocm9uaXNhdGlvbkluZm9SZXBvcnRpbmdJbmRpY2F0b3IJCQlCT09MRUFOLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWNwaWNoLUVjLU4wLXJlcG9ydGluZ0luZGljYXRvcgkJCQkJCQlCT09MRUFOLAoJCQljcGljaC1SU0NQLXJlcG9ydGluZ0luZGljYXRvcgkJCQkJCQlCT09MRUFOLAoJCQlwYXRobG9zcy1yZXBvcnRpbmdJbmRpY2F0b3IJCQkJCQkJQk9PTEVBTgoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQl0aW1lc2xvdElTQ1AtcmVwb3J0aW5nSW5kaWNhdG9yCQkJCQkJQk9PTEVBTiwKCQkJcHJvcG9zZWRUR1NOLVJlcG9ydGluZ1JlcXVpcmVkCQkJCQkJQk9PTEVBTiwKCQkJcHJpbWFyeUNDUENILVJTQ1AtcmVwb3J0aW5nSW5kaWNhdG9yCQkJCQlCT09MRUFOLAoJCQlwYXRobG9zcy1yZXBvcnRpbmdJbmRpY2F0b3IJCQkJCQkJQk9PTEVBTgoJCX0KCX0KfQoKQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMiA6Oj0JU0VRVUVOQ0UgewoJcS1PZmZzZXQxUy1OCQkJCQkJUS1PZmZzZXRTLU4JCQkJCQkJREVGQVVMVCAwLAoJcS1PZmZzZXQyUy1OCQkJCQkJUS1PZmZzZXRTLU4JCQkJCQkJT1BUSU9OQUwsCgltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJaGNzLU5laWdoYm91cmluZ0NlbGxJbmZvcm1hdGlvbi1SU0NQCQlIQ1MtTmVpZ2hib3VyaW5nQ2VsbEluZm9ybWF0aW9uLVJTQ1AJCU9QVElPTkFMLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXEtUXVhbE1pbgkJCQkJCQlRLVF1YWxNaW4JCQkJCU9QVElPTkFMLAoJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKCQl9LAoJCWdzbQkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAoJCX0KCX0KfQoKQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMi1SU0NQIDo6PQlTRVFVRU5DRSB7CglxLU9mZnNldFMtTgkJCQkJCVEtT2Zmc2V0Uy1OCQkJCQkJREVGQVVMVCAwLAoJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlxLVF1YWxNaW4JCQkJCQkJUS1RdWFsTWluCQkJCQlPUFRJT05BTCwKCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCgkJfSwKCQlnc20JCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKCQl9Cgl9Cn0KCkNlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTItRUNOMCA6Oj0JU0VRVUVOQ0UgewoJcS1PZmZzZXQxUy1OCQkJCQkJUS1PZmZzZXRTLU4JCQkJCQlERUZBVUxUIDAsCglxLU9mZnNldDJTLU4JCQkJCQlRLU9mZnNldFMtTgkJCQkJCURFRkFVTFQgMCwKCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcS1RdWFsTWluCQkJCQkJCVEtUXVhbE1pbgkJCQkJT1BUSU9OQUwsCgkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAoJCX0sCgkJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCgkJfQoJfQp9CgpDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLUhDUy1SU0NQIDo6PQlTRVFVRU5DRSB7CglxLU9mZnNldFMtTgkJCQkJCVEtT2Zmc2V0Uy1OCQkJCQkJREVGQVVMVCAwLAoJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKCWhjcy1OZWlnaGJvdXJpbmdDZWxsSW5mb3JtYXRpb24tUlNDUAkJSENTLU5laWdoYm91cmluZ0NlbGxJbmZvcm1hdGlvbi1SU0NQCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlxLVF1YWxNaW4JCQkJCQkJUS1RdWFsTWluCQkJCQlPUFRJT05BTCwKCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCgkJfSwKCQlnc20JCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKCQl9Cgl9Cn0KCkNlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTItSENTLUVDTjAgOjo9CVNFUVVFTkNFIHsKCXEtT2Zmc2V0MVMtTgkJCQkJCVEtT2Zmc2V0Uy1OCQkJCQkJREVGQVVMVCAwLAoJcS1PZmZzZXQyUy1OCQkJCQkJUS1PZmZzZXRTLU4JCQkJCQlERUZBVUxUIDAsCgltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAoJaGNzLU5laWdoYm91cmluZ0NlbGxJbmZvcm1hdGlvbi1FQ04wCQlIQ1MtTmVpZ2hib3VyaW5nQ2VsbEluZm9ybWF0aW9uLUVDTjAJCU9QVElPTkFMLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXEtUXVhbE1pbgkJCQkJCQlRLVF1YWxNaW4JCQkJCU9QVElPTkFMLAoJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKCQl9LAoJCWdzbQkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAoJCX0KCX0KfQoKQ2VsbFNlbGVjdFJlc2VsZWN0SW5mby12NTkwZXh0IDo6PSBTRVFVRU5DRSB7CglkZWx0YVFyeGxldm1pbgkJCQkJRGVsdGFRcnhsZXZtaW4JCQkJCU9QVElPTkFMLAoJZGVsdGFRaGNzCQkJCQkJRGVsdGFSU0NQCQkJCQkJT1BUSU9OQUwKfQoKQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1BDSEZBQ0gtdjViMGV4dCA6Oj0gU0VRVUVOQ0UgewoJcS1IeXN0LWwtUy1QQ0gJCQkJUS1IeXN0LVMtRmluZQkJCQkJCU9QVElPTkFMLAoJcS1IeXN0LWwtUy1GQUNICQkJCVEtSHlzdC1TLUZpbmUJCQkJCQlPUFRJT05BTCwKCXEtSHlzdC0yLVMtUENICQkJCVEtSHlzdC1TLUZpbmUJCQkJCQlPUFRJT05BTCwKCXEtSHlzdC0yLVMtRkFDSAkJCQlRLUh5c3QtUy1GaW5lCQkJCQkJT1BUSU9OQUwsCgl0LVJlc2VsZWN0aW9uLVMtUENICQkJVC1SZXNlbGVjdGlvbi1TCQkJCQkJT1BUSU9OQUwsCgl0LVJlc2VsZWN0aW9uLVMtRkFDSAkJVC1SZXNlbGVjdGlvbi1TLUZpbmUJCQkJT1BUSU9OQUwKfQoKQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1RyZXNlbGVjdGlvblNjYWxpbmctdjVjMGV4dCA6Oj0gU0VRVUVOQ0UgewoJLS0gRm9yIHNwZWVkIGRldGVjdGlvbiwgdGhlIHNhbWUgSENTIHBhcmFtZXRlcnMgYXJlIHV0aWxpc2VkCglub24tSENTLXQtQ1ItTWF4CQkJCQkJCVQtQ1JNYXgJCQkJCQkJCQlPUFRJT05BTCwKCXNwZWVkRGVwZW5kZW50U2NhbGluZ0ZhY3RvcgkJCQkJU3BlZWREZXBlbmRlbnRTY2FsaW5nRmFjdG9yCQkJCU9QVElPTkFMLAoJaW50ZXJGcmVxdWVuY3lUcmVzZWxlY3Rpb25TY2FsaW5nRmFjdG9yCQlUcmVzZWxlY3Rpb25TY2FsaW5nRmFjdG9yCQkJCU9QVElPTkFMLAoJaW50ZXJSQVRUcmVzZWxlY3Rpb25TY2FsaW5nRmFjdG9yCQkJVHJlc2VsZWN0aW9uU2NhbGluZ0ZhY3RvcgkJCQlPUFRJT05BTAp9CgpDZWxsc0ZvckludGVyRnJlcU1lYXNMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQlJbnRlckZyZXFDZWxsSUQKQ2VsbHNGb3JJbnRlclJBVE1lYXNMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJSW50ZXJSQVRDZWxsSUQKQ2VsbHNGb3JJbnRyYUZyZXFNZWFzTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJSW50cmFGcmVxQ2VsbElECgpDZWxsU3luY2hyb25pc2F0aW9uSW5mbyA6Oj0JCQlTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJY291bnRDLVNGTi1GcmFtZS1kaWZmZXJlbmNlCQkJQ291bnRDLVNGTi1GcmFtZS1kaWZmZXJlbmNlCQlPUFRJT05BTCwKCQkJdG0JCQkJCQkJCQlJTlRFR0VSKDAuLjM4Mzk5KQkKCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJY291bnRDLVNGTi1GcmFtZS1kaWZmZXJlbmNlCQkJQ291bnRDLVNGTi1GcmFtZS1kaWZmZXJlbmNlCQlPUFRJT05BTAoJCX0KCX0JCQkJCQkJCn0KCkNlbGxUb1JlcG9ydCA6Oj0JCQkJCVNFUVVFTkNFIHsKCWJzaWNSZXBvcnRlZAkJCQkJCUJTSUNSZXBvcnRlZAp9CgpDZWxsVG9SZXBvcnRMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJQ2VsbFRvUmVwb3J0CgpDb2RlUGhhc2VTZWFyY2hXaW5kb3cgOjo9CQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl3MTAyMywgdzEsIHcyLCB3MywgdzQsIHc2LCB3OCwKCQkJCQkJCQkJCXcxMiwgdzE2LCB3MjQsIHczMiwgdzQ4LCB3NjQsCgkJCQkJCQkJCQl3OTYsIHcxMjgsIHcxOTIgfQoKQ291bnRDLVNGTi1GcmFtZS1kaWZmZXJlbmNlIDo6PSBTRVFVRU5DRSB7CgktLSBBY3R1YWwgdmFsdWUgY291bnRDLVNGTi1IaWdoID0gSUUgdmFsdWUgKiAyNTYKCWNvdW50Qy1TRk4tSGlnaAkJCQkJSU5URUdFUigwLi4xNSksCglvZmYJCQkJCQkJCUlOVEVHRVIoMC4uMjU1KQp9CgotLSBTUEFSRTogQ1BJQ0gtRWMtTm8sIE1heCA9IDQ5Ci0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlCkNQSUNILUVjLU4wIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjYzKQoKLS0gU1BBUkU6IENQSUNILSBSU0NQLCBNYXggPSA5MQotLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQpDUElDSC1SU0NQIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjEyNykKCgpEZWx0YVBSQyA6Oj0JCQkJCQlJTlRFR0VSICgtMTI3Li4xMjcpCgotLUFjdHVhbCB2YWx1ZSBEZWx0YVFyeGxldm1pbiA9IElFIHZhbHVlICogMgpEZWx0YVFyeGxldm1pbiA6Oj0gSU5URUdFUiAoLTIuLi0xKQoKRGVsdGFSU0NQIDo6PSBJTlRFR0VSICgtNS4uLTEpCgpEZWx0YVJTQ1BQZXJDZWxsIDo6PSBTRVFVRU5DRSB7CglkZWx0YVJTQ1AJCQkJCQlEZWx0YVJTQ1AJT1BUSU9OQUwKfQoKLS0gQWN0dWFsIHZhbHVlIERlbHRhUlJDID0gSUUgdmFsdWUgKiAwLjAzMgpEZWx0YVJSQyA6Oj0JCQkJCQlJTlRFR0VSICgtNy4uNykKCkRHUFMtQ29ycmVjdGlvblNhdEluZm8gOjo9CQkJU0VRVUVOQ0UgewoJc2F0SUQJCQkJCQkJCVNhdElELAoJaW9kZQkJCQkJCQkJSU9ERSwKCXVkcmUJCQkJCQkJCVVEUkUsCglwcmMJCQkJCQkJCQlQUkMsCglycmMJCQkJCQkJCQlSUkMsCi0tIGR1bW15MSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kIHNob3VsZCBiZSBpZ25vcmVkLgoJZHVtbXkxCQkJCQkJCURlbHRhUFJDLAoJZHVtbXkyCQkJCQkJCURlbHRhUlJDLAoJLS0gZHVtbXkzIGFuZCBkdW1teTQgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbi4gVGhleSBzaG91bGQgbm90CgktLSBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgoJZHVtbXkzCQkJCQkJCURlbHRhUFJDCQkJT1BUSU9OQUwsCglkdW1teTQJCQkJCQkJRGVsdGFSUkMJCQlPUFRJT05BTAp9CgpER1BTLUNvcnJlY3Rpb25TYXRJbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTYXQpKSBPRgoJCQkJCQkJCQkJREdQUy1Db3JyZWN0aW9uU2F0SW5mbwoKRGlmZkNvcnJlY3Rpb25TdGF0dXMgOjo9CQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl1ZHJlLTEtMCwgdWRyZS0wLTc1LCB1ZHJlLTAtNSwgdWRyZS0wLTMsCgkJCQkJCQkJCQl1ZHJlLTAtMiwgdWRyZS0wLTEsIG5vRGF0YSwgaW52YWxpZERhdGEgfQoKREwtVHJhbnNwb3J0Q2hhbm5lbEJMRVIgOjo9CQkJSU5URUdFUiAoMC4uNjMpCgpEb3BwbGVyVW5jZXJ0YWludHkgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJaHoxMi01LCBoejI1LCBoejUwLCBoejEwMCwgaHoyMDAsCgkJCQkJCQkJCQlzcGFyZTMsIHNwYXJlMiwgc3BhcmUxIH0KCkVsbGlwc29pZFBvaW50IDo6PQkJCQkJU0VRVUVOQ0UgewkKCWxhdGl0dWRlU2lnbgkJRU5VTUVSQVRFRCB7IG5vcnRoLCBzb3V0aCB9LAoJbGF0aXR1ZGUJCQlJTlRFR0VSICgwLi44Mzg4NjA3KSwKCWxvbmdpdHVkZQkJCUlOVEVHRVIgKC04Mzg4NjA4Li44Mzg4NjA3KQp9CgoKRWxsaXBzb2lkUG9pbnRBbHRpdHVkZSA6Oj0JCQlTRVFVRU5DRSB7CglsYXRpdHVkZVNpZ24JCUVOVU1FUkFURUQgeyBub3J0aCwgc291dGggfSwKCWxhdGl0dWRlCQkJSU5URUdFUiAoMC4uODM4ODYwNyksCglsb25naXR1ZGUJCQlJTlRFR0VSICgtODM4ODYwOC4uODM4ODYwNyksCglhbHRpdHVkZURpcmVjdGlvbglFTlVNRVJBVEVEIHtoZWlnaHQsIGRlcHRofSwKCWFsdGl0dWRlCQkJSU5URUdFUiAoMC4uMzI3NjcpCn0KCgpFbGxpcHNvaWRQb2ludEFsdGl0dWRlRWxsaXBzb2lkZSA6Oj0JU0VRVUVOQ0UgewoJbGF0aXR1ZGVTaWduCQkJRU5VTUVSQVRFRCB7IG5vcnRoLCBzb3V0aCB9LAoJbGF0aXR1ZGUJCQkJSU5URUdFUiAoMC4uODM4ODYwNyksCglsb25naXR1ZGUJCQkJSU5URUdFUiAoLTgzODg2MDguLjgzODg2MDcpLAoJYWx0aXR1ZGVEaXJlY3Rpb24JCUVOVU1FUkFURUQge2hlaWdodCwgZGVwdGh9LAoJYWx0aXR1ZGUJCQkJSU5URUdFUiAoMC4uMzI3NjcpLAoJdW5jZXJ0YWludHlTZW1pTWFqb3IJSU5URUdFUiAoMC4uMTI3KSwKCXVuY2VydGFpbnR5U2VtaU1pbm9yCUlOVEVHRVIgKDAuLjEyNyksCgktLSBBY3R1YWwgdmFsdWUgb3JpZW50YXRpb25NYWpvckF4aXMgPSBJRSB2YWx1ZSAqIDIKCW9yaWVudGF0aW9uTWFqb3JBeGlzCUlOVEVHRVIgKDAuLjg5KSwKCXVuY2VydGFpbnR5QWx0aXR1ZGUJCUlOVEVHRVIgKDAuLjEyNyksCgljb25maWRlbmNlCQkJCUlOVEVHRVIgKDAuLjEwMCkKfQoKCkVsbGlwc29pZFBvaW50VW5jZXJ0Q2lyY2xlIDo6PQkJU0VRVUVOQ0UgewoJbGF0aXR1ZGVTaWduCQkJRU5VTUVSQVRFRCB7IG5vcnRoLCBzb3V0aCB9LAoJbGF0aXR1ZGUJCQkJSU5URUdFUiAoMC4uODM4ODYwNyksCglsb25naXR1ZGUJCQkJSU5URUdFUiAoLTgzODg2MDguLjgzODg2MDcpLAoJdW5jZXJ0YWludHlDb2RlCQkJSU5URUdFUiAoMC4uMTI3KQp9CgoKRWxsaXBzb2lkUG9pbnRVbmNlcnRFbGxpcHNlIDo6PQkJU0VRVUVOQ0UgewoJbGF0aXR1ZGVTaWduCQkJRU5VTUVSQVRFRCB7IG5vcnRoLCBzb3V0aCB9LAoJbGF0aXR1ZGUJCQkJSU5URUdFUiAoMC4uODM4ODYwNyksCglsb25naXR1ZGUJCQkJSU5URUdFUiAoLTgzODg2MDguLjgzODg2MDcpLAoJdW5jZXJ0YWludHlTZW1pTWFqb3IJSU5URUdFUiAoMC4uMTI3KSwKCXVuY2VydGFpbnR5U2VtaU1pbm9yCUlOVEVHRVIgKDAuLjEyNyksCgktLSBBY3R1YWwgdmFsdWUgb3JpZW50YXRpb25NYWpvckF4aXMgPSBJRSB2YWx1ZSAqIDIKCW9yaWVudGF0aW9uTWFqb3JBeGlzCUlOVEVHRVIgKDAuLjg5KSwKCWNvbmZpZGVuY2UJCQkJSU5URUdFUiAoMC4uMTAwKQp9CgoKRW52aXJvbm1lbnRDaGFyYWN0ZXJpc2F0aW9uIDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlwb3NzaWJsZUhlYXZ5TXVsdGlwYXRoTkxPUywKCQkJCQkJCQkJCWxpZ2h0TXVsdGlwYXRoTE9TLAoJCQkJCQkJCQkJbm90RGVmaW5lZCwKCQkJCQkJCQkJCXNwYXJlIH0KCkV2ZW50MWEgOjo9CQkJCQkJCVNFUVVFTkNFIHsKCXRyaWdnZXJpbmdDb25kaXRpb24JCQkJCVRyaWdnZXJpbmdDb25kaXRpb24yLAoJcmVwb3J0aW5nUmFuZ2UJCQkJCQlSZXBvcnRpbmdSYW5nZSwKCWZvcmJpZGRlbkFmZmVjdENlbGxMaXN0CQkJCUZvcmJpZGRlbkFmZmVjdENlbGxMaXN0CQkJCU9QVElPTkFMLAoJdwkJCQkJCQkJCVcsCglyZXBvcnREZWFjdGl2YXRpb25UaHJlc2hvbGQJCQlSZXBvcnREZWFjdGl2YXRpb25UaHJlc2hvbGQsCglyZXBvcnRpbmdBbW91bnQJCQkJCQlSZXBvcnRpbmdBbW91bnQsCglyZXBvcnRpbmdJbnRlcnZhbAkJCQkJUmVwb3J0aW5nSW50ZXJ2YWwKfQoKRXZlbnQxYS1yNCA6Oj0JCQkJCQlTRVFVRU5DRSB7Cgl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMiwKCXJlcG9ydGluZ1JhbmdlCQkJCQkJUmVwb3J0aW5nUmFuZ2UsCglmb3JiaWRkZW5BZmZlY3RDZWxsTGlzdAkJCQlGb3JiaWRkZW5BZmZlY3RDZWxsTGlzdC1yNAkJCU9QVElPTkFMLAoJdwkJCQkJCQkJCVcsCglyZXBvcnREZWFjdGl2YXRpb25UaHJlc2hvbGQJCQlSZXBvcnREZWFjdGl2YXRpb25UaHJlc2hvbGQsCglyZXBvcnRpbmdBbW91bnQJCQkJCQlSZXBvcnRpbmdBbW91bnQsCglyZXBvcnRpbmdJbnRlcnZhbAkJCQkJUmVwb3J0aW5nSW50ZXJ2YWwKfQoKRXZlbnQxYS1MQ1ItcjQgOjo9CQkJCQlTRVFVRU5DRSB7Cgl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMiwKCXJlcG9ydGluZ1JhbmdlCQkJCQkJUmVwb3J0aW5nUmFuZ2UsCglmb3JiaWRkZW5BZmZlY3RDZWxsTGlzdAkJCQlGb3JiaWRkZW5BZmZlY3RDZWxsTGlzdC1MQ1ItcjQJCQlPUFRJT05BTCwKCXcJCQkJCQkJCQlXLAoJcmVwb3J0RGVhY3RpdmF0aW9uVGhyZXNob2xkCQkJUmVwb3J0RGVhY3RpdmF0aW9uVGhyZXNob2xkLAoJcmVwb3J0aW5nQW1vdW50CQkJCQkJUmVwb3J0aW5nQW1vdW50LAoJcmVwb3J0aW5nSW50ZXJ2YWwJCQkJCVJlcG9ydGluZ0ludGVydmFsCn0KCkV2ZW50MWIgOjo9CQkJCQkJCVNFUVVFTkNFIHsKCXRyaWdnZXJpbmdDb25kaXRpb24JCQkJCVRyaWdnZXJpbmdDb25kaXRpb24xLAoJcmVwb3J0aW5nUmFuZ2UJCQkJCQlSZXBvcnRpbmdSYW5nZSwKCWZvcmJpZGRlbkFmZmVjdENlbGxMaXN0CQkJCUZvcmJpZGRlbkFmZmVjdENlbGxMaXN0CQkJCU9QVElPTkFMLAoJdwkJCQkJCQkJCVcKfQoKRXZlbnQxYi1yNCA6Oj0JCQkJCQlTRVFVRU5DRSB7Cgl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMSwKCXJlcG9ydGluZ1JhbmdlCQkJCQkJUmVwb3J0aW5nUmFuZ2UsCglmb3JiaWRkZW5BZmZlY3RDZWxsTGlzdAkJCQlGb3JiaWRkZW5BZmZlY3RDZWxsTGlzdC1yNAkJCU9QVElPTkFMLAoJdwkJCQkJCQkJCVcKfQoKRXZlbnQxYi1MQ1ItcjQgOjo9CQkJCQlTRVFVRU5DRSB7Cgl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMSwKCXJlcG9ydGluZ1JhbmdlCQkJCQkJUmVwb3J0aW5nUmFuZ2UsCglmb3JiaWRkZW5BZmZlY3RDZWxsTGlzdAkJCQlGb3JiaWRkZW5BZmZlY3RDZWxsTGlzdC1MQ1ItcjQJCQlPUFRJT05BTCwKCXcJCQkJCQkJCQlXCn0KCkV2ZW50MWMgOjo9CQkJCQkJCVNFUVVFTkNFIHsKCXJlcGxhY2VtZW50QWN0aXZhdGlvblRocmVzaG9sZAkJUmVwbGFjZW1lbnRBY3RpdmF0aW9uVGhyZXNob2xkLAoJcmVwb3J0aW5nQW1vdW50CQkJCQkJUmVwb3J0aW5nQW1vdW50LAoJcmVwb3J0aW5nSW50ZXJ2YWwJCQkJCVJlcG9ydGluZ0ludGVydmFsCn0KCkV2ZW50MWQgOjo9CQkJCQkJCVNFUVVFTkNFIHsKCXRyaWdnZXJpbmdDb25kaXRpb24JCQkJCVRyaWdnZXJpbmdDb25kaXRpb24yCU9QVElPTkFMLAoJdXNlQ0lPCQkJCQkJCQlCT09MRUFOCQkJCQlPUFRJT05BTAp9CgpFdmVudDFlIDo6PQkJCQkJCVNFUVVFTkNFIHsKCXRyaWdnZXJpbmdDb25kaXRpb24JCQkJCVRyaWdnZXJpbmdDb25kaXRpb24yLAoJdGhyZXNob2xkVXNlZEZyZXF1ZW5jeQkJCQlUaHJlc2hvbGRVc2VkRnJlcXVlbmN5Cn0KCkV2ZW50MWUtcjYgOjo9CQkJCQlTRVFVRU5DRSB7Cgl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMiwKCXRocmVzaG9sZFVzZWRGcmVxdWVuY3kJCQkJVGhyZXNob2xkVXNlZEZyZXF1ZW5jeS1yNgp9CgpFdmVudDFmIDo6PQkJCQkJCVNFUVVFTkNFIHsKCXRyaWdnZXJpbmdDb25kaXRpb24JCQkJCVRyaWdnZXJpbmdDb25kaXRpb24xLAoJdGhyZXNob2xkVXNlZEZyZXF1ZW5jeQkJCQlUaHJlc2hvbGRVc2VkRnJlcXVlbmN5Cn0KCkV2ZW50MWYtcjYgOjo9CQkJCQlTRVFVRU5DRSB7Cgl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMSwKCXRocmVzaG9sZFVzZWRGcmVxdWVuY3kJCQkJVGhyZXNob2xkVXNlZEZyZXF1ZW5jeS1yNgp9CgpFdmVudDFqLXI2IDo6PQkJCQkJU0VRVUVOQ0UgewoJcmVwbGFjZW1lbnRBY3RpdmF0aW9uVGhyZXNob2xkCQlSZXBsYWNlbWVudEFjdGl2YXRpb25UaHJlc2hvbGQsCglyZXBvcnRpbmdBbW91bnQJCQkJCQlSZXBvcnRpbmdBbW91bnQsCglyZXBvcnRpbmdJbnRlcnZhbAkJCQkJUmVwb3J0aW5nSW50ZXJ2YWwKfQoKRXZlbnQyYSA6Oj0JCQkJCQkJU0VRVUVOQ0UgewoJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBzaG91bGQgYmUgaWdub3JlZAoJZHVtbXkJCQkJCQkJCVRocmVzaG9sZCwKCXVzZWRGcmVxVwkJCQkJCQlXLAoJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzSW50ZXJGcmVxLAoJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCglyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTCwKCW5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdAkJCU5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdAkJCU9QVElPTkFMCn0KCkV2ZW50MmEtcjYgOjo9CQkJCQkJU0VRVUVOQ0UgewoJdXNlZEZyZXFXCQkJCQkJCVcsCgloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCgl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMLAoJbm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJTm9uVXNlZEZyZXFXTGlzdC1yNgkJCQkJT1BUSU9OQUwKfQoKRXZlbnQyYiA6Oj0JCQkJCQkJU0VRVUVOQ0UgewoJdXNlZEZyZXFUaHJlc2hvbGQJCQkJCVRocmVzaG9sZCwKCXVzZWRGcmVxVwkJCQkJCQlXLAoJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzSW50ZXJGcmVxLAoJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCglyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTCwKCW5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdAkJCU5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdAkJCU9QVElPTkFMCn0KCkV2ZW50MmItcjYgOjo9CQkJCQkJU0VRVUVOQ0UgewoJdXNlZEZyZXFUaHJlc2hvbGQJCQkJCVRocmVzaG9sZC1yNiwKCXVzZWRGcmVxVwkJCQkJCQlXLAoJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzSW50ZXJGcmVxLAoJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCglyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTCwKCW5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdAkJCU5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdC1yNgkJCU9QVElPTkFMCn0KCkV2ZW50MmMgOjo9CQkJCQkJCVNFUVVFTkNFIHsKCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpc0ludGVyRnJlcSwKCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAoJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwsCglub25Vc2VkRnJlcVBhcmFtZXRlckxpc3QJCQlOb25Vc2VkRnJlcVBhcmFtZXRlckxpc3QJCQlPUFRJT05BTAp9CgpFdmVudDJjLXI2IDo6PQkJCQkJCVNFUVVFTkNFIHsKCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpc0ludGVyRnJlcSwKCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAoJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwsCglub25Vc2VkRnJlcVBhcmFtZXRlckxpc3QJCQlOb25Vc2VkRnJlcVBhcmFtZXRlckxpc3QtcjYJCQlPUFRJT05BTAp9CgpFdmVudDJkIDo6PQkJCQkJCQlTRVFVRU5DRSB7Cgl1c2VkRnJlcVRocmVzaG9sZAkJCQkJVGhyZXNob2xkLAoJdXNlZEZyZXFXCQkJCQkJCVcsCgloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCgl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCn0KCkV2ZW50MmQtcjYgOjo9CQkJCQkJU0VRVUVOQ0UgewoJdXNlZEZyZXFUaHJlc2hvbGQJCQkJCVRocmVzaG9sZC1yNiwKCXVzZWRGcmVxVwkJCQkJCQlXLAoJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzSW50ZXJGcmVxLAoJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCglyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAp9CgpFdmVudDJlIDo6PQkJCQkJCQlTRVFVRU5DRSB7CgloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCgl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMLAoJbm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJTm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJT1BUSU9OQUwKfQoKRXZlbnQyZS1yNiA6Oj0JCQkJCQlTRVFVRU5DRSB7CgloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCgl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMLAoJbm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJTm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0LXI2CQkJT1BUSU9OQUwKfQoKRXZlbnQyZiA6Oj0JCQkJCQkJU0VRVUVOQ0UgewoJdXNlZEZyZXFUaHJlc2hvbGQJCQkJCVRocmVzaG9sZCwKCXVzZWRGcmVxVwkJCQkJCQlXLAoJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzSW50ZXJGcmVxLAoJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCglyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAp9CQoKRXZlbnQyZi1yNiA6Oj0JCQkJCQlTRVFVRU5DRSB7Cgl1c2VkRnJlcVRocmVzaG9sZAkJCQkJVGhyZXNob2xkLXI2LAoJdXNlZEZyZXFXCQkJCQkJCVcsCgloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCgl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCn0KCkV2ZW50M2EgOjo9CQkJCQkJCVNFUVVFTkNFIHsKCXRocmVzaG9sZE93blN5c3RlbQkJCQkJVGhyZXNob2xkLAoJdwkJCQkJCQkJCVcsCgl0aHJlc2hvbGRPdGhlclN5c3RlbQkJCQlUaHJlc2hvbGQsCgloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXMsCgl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCn0JCgpFdmVudDNiIDo6PQkJCQkJCQlTRVFVRU5DRSB7Cgl0aHJlc2hvbGRPdGhlclN5c3RlbQkJCQlUaHJlc2hvbGQsCgloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXMsCgl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCgkKfQkKCkV2ZW50M2MgOjo9CQkJCQkJCVNFUVVFTkNFIHsKCXRocmVzaG9sZE90aGVyU3lzdGVtCQkJCVRocmVzaG9sZCwKCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpcywKCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAoJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwKfQkKCkV2ZW50M2QgOjo9CQkJCQkJCVNFUVVFTkNFIHsKCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpcywKCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAoJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwKfQkKCkV2ZW50SURJbnRlckZyZXEgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZTJhLCBlMmIsIGUyYywgZTJkLCBlMmUsIGUyZiwgc3BhcmUyLCBzcGFyZTEgfQoKRXZlbnRJREludGVyUkFUIDo6PQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQllM2EsIGUzYiwgZTNjLCBlM2QgfQoKRXZlbnRJREludHJhRnJlcSA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQllMWEsIGUxYiwgZTFjLCBlMWQsIGUxZSwKCQkJCQkJCQkJCWUxZiwgZTFnLCBlMWgsIGUxaSwgZTFqLAoJCQkJCQkJCQkJc3BhcmU2LCBzcGFyZTUsIHNwYXJlNCwgc3BhcmUzLCBzcGFyZTIsCgkJCQkJCQkJCQlzcGFyZTEgfQoKRXZlbnRSZXN1bHRzIDo6PQkJCQkJQ0hPSUNFIHsKCWludHJhRnJlcUV2ZW50UmVzdWx0cwkJCQlJbnRyYUZyZXFFdmVudFJlc3VsdHMsCglpbnRlckZyZXFFdmVudFJlc3VsdHMJCQkJSW50ZXJGcmVxRXZlbnRSZXN1bHRzLAoJaW50ZXJSQVRFdmVudFJlc3VsdHMJCQkJSW50ZXJSQVRFdmVudFJlc3VsdHMsCgl0cmFmZmljVm9sdW1lRXZlbnRSZXN1bHRzCQkJVHJhZmZpY1ZvbHVtZUV2ZW50UmVzdWx0cywKCXF1YWxpdHlFdmVudFJlc3VsdHMJCQkJCVF1YWxpdHlFdmVudFJlc3VsdHMsCgl1ZS1JbnRlcm5hbEV2ZW50UmVzdWx0cwkJCQlVRS1JbnRlcm5hbEV2ZW50UmVzdWx0cywKCXVlLXBvc2l0aW9uaW5nLU1lYXN1cmVtZW50RXZlbnRSZXN1bHRzCQkJVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnRFdmVudFJlc3VsdHMsCglzcGFyZQkJCQkJCQkJTlVMTAp9CgpFeHRyYURvcHBsZXJJbmZvIDo6PQkJCQlTRVFVRU5DRSB7CgktLSBBY3R1YWwgdmFsdWUgZG9wcGxlcjFzdE9yZGVyID0gSUUgdmFsdWUgKiAwLjAyMwoJZG9wcGxlcjFzdE9yZGVyCQkJCQkJSU5URUdFUiAoLTQyLi4yMSksCglkb3BwbGVyVW5jZXJ0YWludHkJCQkJCURvcHBsZXJVbmNlcnRhaW50eQp9CgpGQUNILU1lYXN1cmVtZW50T2NjYXNpb25JbmZvIDo6PQlTRVFVRU5DRSB7CglmQUNILW1lYXMtb2NjYXNpb24tY29lZmYJCQlJTlRFR0VSICgxLi4xMikJCQkJCQlPUFRJT05BTCwKCWludGVyLWZyZXEtRkRELW1lYXMtaW5kCQkJCUJPT0xFQU4sCgktLSBpbnRlci1mcmVxLVRERC1tZWFzLWluZCBpcyBmb3IgMy44NE1jcHMgVEREIGFuZCA3LjY4IE1jcHMgVERELiBGb3IgMS4yOE1jcHMgVERELCB0aGUgSUUgaW4KCS0tIEZBQ0gtTWVhc3VyZW1lbnRPY2Nhc2lvbkluZm8tTENSLXI0LWV4dCBpcyB1c2VkLgoJaW50ZXItZnJlcS1UREQtbWVhcy1pbmQJCQkJQk9PTEVBTiwKCWludGVyLVJBVC1tZWFzLWluZAkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE90aGVyUkFUKSkgT0YKCQkJCQkJCQkJCQlSQVQtVHlwZQkJCQkJCU9QVElPTkFMCn0KCkZBQ0gtTWVhc3VyZW1lbnRPY2Nhc2lvbkluZm8tTENSLXI0LWV4dCA6Oj0JU0VRVUVOQ0UgewoJaW50ZXItZnJlcS1UREQxMjgtbWVhcy1pbmQJCQkJCUJPT0xFQU4KfQoKRmlsdGVyQ29lZmZpY2llbnQgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZmMwLCBmYzEsIGZjMiwgZmMzLCBmYzQsIGZjNSwgCgkJCQkJCQkJCQlmYzYsIGZjNywgZmM4LCBmYzksIGZjMTEsIGZjMTMsIAoJCQkJCQkJCQkJZmMxNSwgZmMxNywgZmMxOSwgc3BhcmUxIH0KCi0tIEFjdHVhbCB2YWx1ZSBGaW5lU0ZOLVNGTiA9IElFIHZhbHVlICogMC4wNjI1CkZpbmVTRk4tU0ZOIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjE1KQoKRm9yYmlkZGVuQWZmZWN0Q2VsbCA6Oj0JCQkJQ0hPSUNFIHsKCWZkZAkJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvLAoJdGRkCQkJCQkJCQkJUHJpbWFyeUNDUENILUluZm8KfQoKRm9yYmlkZGVuQWZmZWN0Q2VsbC1yNCA6Oj0JCQlDSE9JQ0UgewoJZmRkCQkJCQkJCQkJUHJpbWFyeUNQSUNILUluZm8sCgl0ZGQJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1yNAp9CgpGb3JiaWRkZW5BZmZlY3RDZWxsLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKCXRkZAkJCQkJCQkJCVByaW1hcnlDQ1BDSC1JbmZvLUxDUi1yNAp9CgpGb3JiaWRkZW5BZmZlY3RDZWxsTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJRm9yYmlkZGVuQWZmZWN0Q2VsbAoKRm9yYmlkZGVuQWZmZWN0Q2VsbExpc3QtcjQgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCUZvcmJpZGRlbkFmZmVjdENlbGwtcjQKCkZvcmJpZGRlbkFmZmVjdENlbGxMaXN0LUxDUi1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCUZvcmJpZGRlbkFmZmVjdENlbGwtTENSLXI0CgpGcmVxUXVhbGl0eUVzdGltYXRlUXVhbnRpdHktRkREIDo6PSBFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWNwaWNoLUVjLU4wLAoJCQkJCQkJCQkJY3BpY2gtUlNDUCB9CgpGcmVxUXVhbGl0eUVzdGltYXRlUXVhbnRpdHktVEREIDo6PSBFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXByaW1hcnlDQ1BDSC1SU0NQIH0KCkdQUy1NZWFzdXJlbWVudFBhcmFtIDo6PQkJCVNFUVVFTkNFIHsKCXNhdGVsbGl0ZUlECQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKCWMtTjAJCQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKCWRvcHBsZXIJCQkJCQkJCUlOVEVHRVIgKC0zMjc2OC4uMzI3NjgpLAoJd2hvbGVHUFMtQ2hpcHMJCQkJCQlJTlRFR0VSICgwLi4xMDIyKSwKCWZyYWN0aW9uYWxHUFMtQ2hpcHMJCQkJCUlOVEVHRVIgKDAuLjEwMjMpLAoJbXVsdGlwYXRoSW5kaWNhdG9yCQkJCQlNdWx0aXBhdGhJbmRpY2F0b3IsCglwc2V1ZG9yYW5nZVJNUy1FcnJvcgkJCQlJTlRFR0VSICgwLi42MykKfQoKR1BTLU1lYXN1cmVtZW50UGFyYW1MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNhdCkpIE9GCgkJCQkJCQkJCQlHUFMtTWVhc3VyZW1lbnRQYXJhbQoKR1NNLUNhcnJpZXJSU1NJIDo6PQkJCQkJQklUIFNUUklORyAoU0laRSAoNikpCgoKR1NNLU1lYXN1cmVkUmVzdWx0cyA6Oj0gCQkJU0VRVUVOQ0UgewoJZ3NtLUNhcnJpZXJSU1NJCQkJCQkJR1NNLUNhcnJpZXJSU1NJCQkJCQkJT1BUSU9OQUwsCgktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJZHVtbXkJCQkJCQkJCUlOVEVHRVIgKDQ2Li4xNzMpCQkJCQlPUFRJT05BTCwKCWJzaWNSZXBvcnRlZAkJCQkJCUJTSUNSZXBvcnRlZCwKCS0tIGR1bW15MiBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJZHVtbXkyCQkJCQkJCQlPYnNlcnZlZFRpbWVEaWZmZXJlbmNlVG9HU00JCQlPUFRJT05BTAp9CgpHU00tTWVhc3VyZWRSZXN1bHRzTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UmVwb3J0ZWRHU01DZWxscykpIE9GCgkJCQkJCQkJCQlHU00tTWVhc3VyZWRSZXN1bHRzCQoKR1BTLVRPVy0xbXNlYyA6Oj0JCQkJCUlOVEVHRVIgKDAuLjYwNDc5OTk5OSkKCkdQUy1UT1ctQXNzaXN0IDo6PQkJCQkJU0VRVUVOQ0UgewoJc2F0SUQJCQkJCQkJCVNhdElELAoJdGxtLU1lc3NhZ2UJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTQpKSwKCXRsbS1SZXNlcnZlZAkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIpKSwKCWFsZXJ0CQkJCQkJCQlCT09MRUFOLAoJYW50aVNwb29mCQkJCQkJCUJPT0xFQU4KfQoKR1BTLVRPVy1Bc3Npc3RMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U2F0KSkgT0YKCQkJCQkJCQkJCUdQUy1UT1ctQXNzaXN0CgpIQ1MtQ2VsbFJlc2VsZWN0SW5mb3JtYXRpb24tUlNDUCA6Oj0JCVNFUVVFTkNFIHsKCS0tIFRBQlVMQVI6IFRoZSBkZWZhdWx0IHZhbHVlIGZvciBwZW5hbHR5VGltZSBpcyAibm90VXNlZCIKCS0tIFRlbXBvcmFyeSBvZmZzZXQgaXMgbmVzdGVkIGluc2lkZSBQZW5hbHR5VGltZS1SU0NQCglwZW5hbHR5VGltZQkJCQkJCQkJCVBlbmFsdHlUaW1lLVJTQ1AKfQoKSENTLUNlbGxSZXNlbGVjdEluZm9ybWF0aW9uLUVDTjAgOjo9CQlTRVFVRU5DRSB7CgktLSBUQUJVTEFSOiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgcGVuYWx0eVRpbWUgaXMgIm5vdFVzZWQiCgktLSBUZW1wb3Jhcnkgb2Zmc2V0IGlzIG5lc3RlZCBpbnNpZGUgUGVuYWx0eVRpbWUtRUNOMAoJcGVuYWx0eVRpbWUJCQkJCQkJUGVuYWx0eVRpbWUtRUNOMAp9CgpIQ1MtTmVpZ2hib3VyaW5nQ2VsbEluZm9ybWF0aW9uLVJTQ1AgOjo9IFNFUVVFTkNFIHsKCWhjcy1QUklPCQkJCQkJCUhDUy1QUklPCQkJCQkJCURFRkFVTFQgMCwKCXEtSENTCQkJCQkJCQlRLUhDUwkJCQkJCQkJREVGQVVMVCAwLAoJaGNzLUNlbGxSZXNlbGVjdEluZm9ybWF0aW9uCQkJSENTLUNlbGxSZXNlbGVjdEluZm9ybWF0aW9uLVJTQ1AKfQoKSENTLU5laWdoYm91cmluZ0NlbGxJbmZvcm1hdGlvbi1FQ04wIDo6PSBTRVFVRU5DRSB7CgloY3MtUFJJTwkJCQkJCQlIQ1MtUFJJTwkJCQkJCQlERUZBVUxUIDAsCglxLUhDUwkJCQkJCQkJUS1IQ1MJCQkJCQkJCURFRkFVTFQgMCwKCWhjcy1DZWxsUmVzZWxlY3RJbmZvcm1hdGlvbgkJCUhDUy1DZWxsUmVzZWxlY3RJbmZvcm1hdGlvbi1FQ04wCn0KCkhDUy1QUklPIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjcpCgpIQ1MtU2VydmluZ0NlbGxJbmZvcm1hdGlvbiA6Oj0JCVNFUVVFTkNFIHsKCWhjcy1QUklPCQkJCQkJCUhDUy1QUklPCQkJCQkJCURFRkFVTFQgMCwKCXEtSENTCQkJCQkJCQlRLUhDUwkJCQkJCQkJREVGQVVMVCAwLAoJdC1DUi1NYXgJCQkJCQkJVC1DUk1heAkJCQkJCQkJT1BUSU9OQUwKfQoKSG9yaXpvbnRhbFZlbG9jaXR5IDo6PQkJCQlTRVFVRU5DRSB7CgliZWFyaW5nCQkJCQkJCQlJTlRFR0VSICgwLi4zNTkpLAoJaG9yaXpvbnRhbFNwZWVkCQkJCQkJSU5URUdFUiAoMC4uMjA0NykKCX0KCkhvcml6b250YWxXaXRoVmVydGljYWxWZWxvY2l0eSA6Oj0JU0VRVUVOQ0UgewoJdmVydGljYWxTcGVlZERpcmVjdGlvbgkJCQlFTlVNRVJBVEVEIHsgdXB3YXJkLCBkb3dud2FyZCB9LAoJYmVhcmluZwkJCQkJCQkJSU5URUdFUiAoMC4uMzU5KSwKCWhvcml6b250YWxTcGVlZAkJCQkJCUlOVEVHRVIgKDAuLjIwNDcpLAoJdmVydGljYWxTcGVlZAkJCQkJCUlOVEVHRVIgKDAuLjI1NSkKfQoKSG9yaXpvbnRhbFZlbG9jaXR5V2l0aFVuY2VydGFpbnR5IDo6PQlTRVFVRU5DRSB7CgliZWFyaW5nCQkJCQkJCQlJTlRFR0VSICgwLi4zNTkpLAoJaG9yaXpvbnRhbFNwZWVkCQkJCQkJSU5URUdFUiAoMC4uMjA0NyksCglob3Jpem9udGFsU3BlZWRVbmNlcnRhaW50eQkJCUlOVEVHRVIgKDAuLjI1NSkKfQoKSG9yaXpvbnRhbFdpdGhWZXJ0aWNhbFZlbG9jaXR5QW5kVW5jZXJ0YWludHkgOjo9CVNFUVVFTkNFIHsKCXZlcnRpY2FsU3BlZWREaXJlY3Rpb24JCQkJRU5VTUVSQVRFRCB7IHVwd2FyZCwgZG93bndhcmQgfSwKCWJlYXJpbmcJCQkJCQkJCUlOVEVHRVIgKDAuLjM1OSksCglob3Jpem9udGFsU3BlZWQJCQkJCQlJTlRFR0VSICgwLi4yMDQ3KSwKCXZlcnRpY2FsU3BlZWQJCQkJCQlJTlRFR0VSICgwLi4yNTUpLAoJaG9yaXpvbnRhbFNwZWVkVW5jZXJ0YWludHkJCQlJTlRFR0VSICgwLi4yNTUpCn0KCi0tIEFjdHVhbCB2YWx1ZSBIeXN0ZXJlc2lzID0gSUUgdmFsdWUgKiAwLjUKSHlzdGVyZXNpcyA6Oj0JCQkJCQlJTlRFR0VSICgwLi4xNSkKCi0tIEFjdHVhbCB2YWx1ZSBIeXN0ZXJlc2lzSW50ZXJGcmVxID0gSUUgdmFsdWUgKiAwLjUKSHlzdGVyZXNpc0ludGVyRnJlcSA6Oj0JCQkJSU5URUdFUiAoMC4uMjkpCgpJbnRlckZyZXFDZWxsIDo6PQkJCQkJU0VRVUVOQ0UgewoJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8sCglub25GcmVxUmVsYXRlZEV2ZW50UmVzdWx0cwkJCUNlbGxNZWFzdXJlbWVudEV2ZW50UmVzdWx0cwp9CgpJbnRlckZyZXFDZWxsLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSB7CglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbywKCW5vbkZyZXFSZWxhdGVkRXZlbnRSZXN1bHRzCQkJQ2VsbE1lYXN1cmVtZW50RXZlbnRSZXN1bHRzLUxDUi1yNAp9CgpJbnRlckZyZXFDZWxsSUQgOjo9CQkJCQlJTlRFR0VSICgwLi5tYXhDZWxsTWVhcy0xKQoKSW50ZXJGcmVxQ2VsbEluZm9MaXN0IDo6PQkJCVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAoJbmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJTmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJT1BUSU9OQUwsCgljZWxsc0ZvckludGVyRnJlcU1lYXNMaXN0CQkJQ2VsbHNGb3JJbnRlckZyZXFNZWFzTGlzdAkJCU9QVElPTkFMCn0KCkludGVyRnJlcUNlbGxJbmZvTGlzdC1yNCA6Oj0JCVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAoJbmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJTmV3SW50ZXJGcmVxQ2VsbExpc3QtcjQJCQkJT1BUSU9OQUwsCgljZWxsc0ZvckludGVyRnJlcU1lYXNMaXN0CQkJQ2VsbHNGb3JJbnRlckZyZXFNZWFzTGlzdAkJCU9QVElPTkFMCn0KCkludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1SU0NQIDo6PQkJU0VRVUVOQ0UgewoJcmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCgluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1SU0NQCQlPUFRJT05BTAp9CgpJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtRUNOMCA6Oj0JCVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAoJbmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtRUNOMAkJT1BUSU9OQUwKfQoKSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1SU0NQIDo6PQkJU0VRVUVOQ0UgewoJcmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCgluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1IQ1MtUlNDUAlPUFRJT05BTAp9CkludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtRUNOMCA6Oj0JCVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAoJbmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtSENTLUVDTjAJT1BUSU9OQUwKfQoKSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LVJTQ1AtTENSIDo6PQkJU0VRVUVOQ0UgewoJcmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCgluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1SU0NQLUxDUi1yNAkJT1BUSU9OQUwKfQoKSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUVDTjAtTENSIDo6PQkJU0VRVUVOQ0UgewoJcmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCgluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1FQ04wLUxDUi1yNAkJT1BUSU9OQUwKfQoKSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1SU0NQLUxDUiA6Oj0JCVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAoJbmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtSENTLVJTQ1AtTENSLXI0CU9QVElPTkFMCn0KSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1FQ04wLUxDUiA6Oj0JCVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAoJbmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtSENTLUVDTjAtTENSLXI0CU9QVElPTkFMCn0KCkludGVyRnJlcUNlbGxMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcSkpIE9GCgkJCQkJCQkJCQlJbnRlckZyZXFDZWxsCgpJbnRlckZyZXFDZWxsTGlzdC1MQ1ItcjQtZXh0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcSkpIE9GCgkJCQkJCQkJCQlJbnRlckZyZXFDZWxsLUxDUi1yNAoKSW50ZXJGcmVxQ2VsbE1lYXN1cmVkUmVzdWx0c0xpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQlDZWxsTWVhc3VyZWRSZXN1bHRzCgpJbnRlckZyZXFFdmVudCA6Oj0JCQkJCUNIT0lDRSB7CglldmVudDJhCQkJCQkJCQlFdmVudDJhLAoJZXZlbnQyYgkJCQkJCQkJRXZlbnQyYiwKCWV2ZW50MmMJCQkJCQkJCUV2ZW50MmMsCglldmVudDJkCQkJCQkJCQlFdmVudDJkLAoJZXZlbnQyZQkJCQkJCQkJRXZlbnQyZSwKCWV2ZW50MmYJCQkJCQkJCUV2ZW50MmYKfQoKSW50ZXJGcmVxRXZlbnQtcjYgOjo9CQkJCUNIT0lDRSB7CglldmVudDJhCQkJCQkJCQlFdmVudDJhLXI2LAoJZXZlbnQyYgkJCQkJCQkJRXZlbnQyYi1yNiwKCWV2ZW50MmMJCQkJCQkJCUV2ZW50MmMtcjYsCglldmVudDJkCQkJCQkJCQlFdmVudDJkLXI2LAoJZXZlbnQyZQkJCQkJCQkJRXZlbnQyZS1yNiwKCWV2ZW50MmYJCQkJCQkJCUV2ZW50MmYtcjYKfQoKSW50ZXJGcmVxRXZlbnRMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc0V2ZW50KSkgT0YKCQkJCQkJCQkJCUludGVyRnJlcUV2ZW50CgpJbnRlckZyZXFFdmVudExpc3QtcjYgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNFdmVudCkpIE9GCgkJCQkJCQkJCQlJbnRlckZyZXFFdmVudC1yNgoKLS1Gb2xsb3dpbmcgSUUgc2hhbGwgYmUgdXNlZCByZWdhcmRsZXNzIG9mIENQSUNIIFJTQ1AoRkREKSBvciBQcmltYXJ5IENDUENIIFJTQ1AoVEREKQotLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgdGhlIGNlbGxzIGluIEludGVyRnJlcXVlbmN5TWVhc3VyZWRSZXN1bHRzTGlzdAotLVRoZSBJRSBpcyBvbmx5IHVzZWQgZm9yIG1lYXN1cmVkIHJlc3VsdHMgYW5kIG5vdCBmb3IgYWRkaXRpb25hbCBtZWFzdXJlZCByZXN1bHRzLgpJbnRlckZyZXF1ZW5jeU1lYXN1cmVkUmVzdWx0c0xpc3QtdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCQkJRGVsdGFSU0NQUGVyQ2VsbAoKSW50ZXItRnJlcUV2ZW50Q3JpdGVyaWEtdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgewoJdGhyZWhvbGRVc2VkRnJlcXVlbmN5LWRlbHRhCQkJCURlbHRhUlNDUCwKCXRocmVob2xkTm9uVXNlZEZyZXF1ZW5jeS1kZWx0YUxpc3QJCVRocmVob2xkTm9uVXNlZEZyZXF1ZW5jeS1kZWx0YUxpc3QgIAlPUFRJT05BTAp9CgotLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgdGhlIGV2ZW50cyBpbiBJbnRlci1GcmVxRXZlbnRMaXN0CkludGVyLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc0V2ZW50KSkgT0YKCQkJCQkJCQkJCQlJbnRlci1GcmVxRXZlbnRDcml0ZXJpYS12NTkwZXh0CgotLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgcmVsZXZhbnQgZXZlbnRzIGluIEludHJhLUZyZXFFdmVudENyaXRlcmlhTGlzdAotLWkuZS4gdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIGZpcnN0IG9jY3VyYW5jZSBvZiBldmVudCAxZSwgMWYsIDFoLCAxaSwKLS10aGUgc2Vjb25kIGVsZW1lbnQgb2YgdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIHNlY29uZCBvY2N1cmFuY2Ugb2YgZXZlbnQgMWUsIDFmLCAxaCwgMWkgCkludHJhLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc0V2ZW50KSkgT0YKCQkJCQkJCQkJCQlEZWx0YVJTQ1AKCi0tRm9sbG93aW5nIElFIHNoYWxsIGJlIHVzZWQgcmVnYXJkbGVzcyBvZiBDUElDSCBSU0NQKEZERCkgb3IgUHJpbWFyeSBDQ1BDSCBSU0NQKFRERCkKLS1UaGUgb3JkZXIgb2YgdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIG9yZGVyIG9mIHRoZSBjZWxscyBpbiBJbnRyYUZyZXF1ZW5jeU1lYXN1cmVkUmVzdWx0c0xpc3QKLS1UaGUgSUUgaXMgb25seSB1c2VkIGZvciBtZWFzdXJlZCByZXN1bHRzIGFuZCBub3QgZm9yIGFkZGl0aW9uYWwgbWVhc3VyZWQgcmVzdWx0cy4KSW50cmFGcmVxdWVuY3lNZWFzdXJlZFJlc3VsdHNMaXN0LXY1OTBleHQgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQkJCURlbHRhUlNDUFBlckNlbGwKCkludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1IDo6PSBTRVFVRU5DRSB7CglwZXJpb2RpY1JlcG9ydGluZ0luZm8tMWIJCQlQZXJpb2RpY1JlcG9ydGluZ0luZm8tMWIKfQoKUGVyaW9kaWNSZXBvcnRpbmdJbmZvLTFiIDo6PSBTRVFVRU5DRSB7CglyZXBvcnRpbmdBbW91bnQJCQkJCQlSZXBvcnRpbmdBbW91bnQsCglyZXBvcnRpbmdJbnRlcnZhbAkJCQkJUmVwb3J0aW5nSW50ZXJ2YWwKfQoKSW50ZXJGcmVxRXZlbnRSZXN1bHRzIDo6PQkJCVNFUVVFTkNFIHsKCWV2ZW50SUQJCQkJCQkJCUV2ZW50SURJbnRlckZyZXEsCglpbnRlckZyZXFDZWxsTGlzdAkJCQkJSW50ZXJGcmVxQ2VsbExpc3QJCQkJCU9QVElPTkFMCn0KCkludGVyRnJlcUV2ZW50UmVzdWx0cy1MQ1ItcjQtZXh0IDo6PQlTRVFVRU5DRSB7CglldmVudElECQkJCQkJCQlFdmVudElESW50ZXJGcmVxLAoJaW50ZXJGcmVxQ2VsbExpc3QJCQkJCUludGVyRnJlcUNlbGxMaXN0LUxDUi1yNC1leHQJCU9QVElPTkFMCn0KCkludGVyRnJlcU1lYXNRdWFudGl0eSA6Oj0JCQlTRVFVRU5DRSB7CglyZXBvcnRpbmdDcml0ZXJpYQkJCQkJQ0hPSUNFIHsKCQlpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCVNFUVVFTkNFIHsKCQkJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQoJCX0sCgkJaW50ZXJGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCQlTRVFVRU5DRSB7CgkJCWZpbHRlckNvZWZmaWNpZW50CQkJCQlGaWx0ZXJDb2VmZmljaWVudAkJCURFRkFVTFQgZmMwLAoJCQltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCQkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCWZyZXFRdWFsaXR5RXN0aW1hdGVRdWFudGl0eS1GREQJCUZyZXFRdWFsaXR5RXN0aW1hdGVRdWFudGl0eS1GREQKCQkJCX0sCgkJCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJZnJlcVF1YWxpdHlFc3RpbWF0ZVF1YW50aXR5LVRERAkJRnJlcVF1YWxpdHlFc3RpbWF0ZVF1YW50aXR5LVRERAoJCQkJfQoJCQl9CgkJfQoJfQp9CgpJbnRlckZyZXFNZWFzdXJlZFJlc3VsdHMgOjo9CQlTRVFVRU5DRSB7CglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJdXRyYS1DYXJyaWVyUlNTSQkJCQkJVVRSQS1DYXJyaWVyUlNTSQkJCQkJT1BUSU9OQUwsCglpbnRlckZyZXFDZWxsTWVhc3VyZWRSZXN1bHRzTGlzdAlJbnRlckZyZXFDZWxsTWVhc3VyZWRSZXN1bHRzTGlzdAlPUFRJT05BTAp9CgpJbnRlckZyZXFNZWFzdXJlZFJlc3VsdHNMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcSkpIE9GCgkJCQkJCQkJCQlJbnRlckZyZXFNZWFzdXJlZFJlc3VsdHMKCgpJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tUlNDUCA6Oj0JU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0CQkJCUludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1SU0NQCQlPUFRJT05BTAp9CgpJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMCA6Oj0JCVNFUVVFTkNFIHsKCWludGVyRnJlcUNlbGxJbmZvU0ktTGlzdAkJCUludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1FQ04wCQlPUFRJT05BTAp9CgpJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLVJTQ1AgOjo9CQlTRVFVRU5DRSB7CglpbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLVJTQ1AJT1BUSU9OQUwKfQoKSW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1FQ04wIDo6PQkJU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1FQ04wCU9QVElPTkFMCn0KCkludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1SU0NQLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0CQkJCUludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1SU0NQLUxDUgkJT1BUSU9OQUwKfQoKSW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUVDTjAtTENSLXI0IDo6PQkJU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUVDTjAtTENSCQlPUFRJT05BTAp9CgpJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLVJTQ1AtTENSLXI0IDo6PQkJU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1SU0NQLUxDUglPUFRJT05BTAp9CgpJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLUVDTjAtTENSLXI0IDo6PQkJU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1FQ04wLUxDUglPUFRJT05BTAp9CgpJbnRlckZyZXFSQUNIUmVwQ2VsbHNMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxKSkgT0YKSW50ZXJGcmVxQ2VsbElECgpJbnRlckZyZXFSQUNIUmVwb3J0aW5nSW5mbyA6Oj0gU0VRVUVOQ0UgewoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWludGVyRnJlcVJlcFF1YW50aXR5UkFDSC1GREQJCUludGVyRnJlcVJlcFF1YW50aXR5UkFDSC1GREQKCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJaW50ZXJGcmVxUmVwUXVhbnRpdHlSQUNILVRERExpc3QJSW50ZXJGcmVxUmVwUXVhbnRpdHlSQUNILVRERExpc3QKCQl9LAoJaW50ZXJGcmVxUkFDSFJlcG9ydGluZ1RocmVzaG9sZAkJVGhyZXNob2xkLAoJbWF4UmVwb3J0ZWRDZWxsc09uUkFDSGludGVyRnJlcQkJTWF4UmVwb3J0ZWRDZWxsc09uUkFDSGludGVyRnJlcQoJfQp9CgpJbnRlckZyZXFSZXBvcnRDcml0ZXJpYSA6Oj0JCQlDSE9JQ0UgewoJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYSwKCWludGVyRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQkJSW50ZXJGcmVxUmVwb3J0aW5nQ3JpdGVyaWEsCglwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsV2l0aFJlcG9ydGluZ0NlbGxTdGF0dXMsCglub1JlcG9ydGluZwkJCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzT3B0Cn0KCkludGVyRnJlcVJlcG9ydENyaXRlcmlhLXI0IDo6PQkJQ0hPSUNFIHsKCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtcjQsCglpbnRlckZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCUludGVyRnJlcVJlcG9ydGluZ0NyaXRlcmlhLAoJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFdpdGhSZXBvcnRpbmdDZWxsU3RhdHVzLAoJbm9SZXBvcnRpbmcJCQkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1c09wdAp9CgpJbnRlckZyZXFSZXBvcnRDcml0ZXJpYS1yNiA6Oj0JCUNIT0lDRSB7CglpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLXI2LAoJaW50ZXJGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCQlJbnRlckZyZXFSZXBvcnRpbmdDcml0ZXJpYS1yNiwKCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxXaXRoUmVwb3J0aW5nQ2VsbFN0YXR1cywKCW5vUmVwb3J0aW5nCQkJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXNPcHQKfQoKSW50ZXJGcmVxUmVwb3J0aW5nQ3JpdGVyaWEgOjo9CQlTRVFVRU5DRSB7CglpbnRlckZyZXFFdmVudExpc3QJCQkJCUludGVyRnJlcUV2ZW50TGlzdAkJCQkJT1BUSU9OQUwKfQoKSW50ZXJGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtcjYgOjo9CVNFUVVFTkNFIHsKCWludGVyRnJlcUV2ZW50TGlzdAkJCQkJSW50ZXJGcmVxRXZlbnRMaXN0LXI2CQkJCU9QVElPTkFMCn0KCkludGVyRnJlcVJlcG9ydGluZ1F1YW50aXR5IDo6PQkJU0VRVUVOQ0UgewoJdXRyYS1DYXJyaWVyLVJTU0kJCQkJCUJPT0xFQU4sCglmcmVxdWVuY3lRdWFsaXR5RXN0aW1hdGUJCQlCT09MRUFOLAoJbm9uRnJlcVJlbGF0ZWRRdWFudGl0aWVzCQkJQ2VsbFJlcG9ydGluZ1F1YW50aXRpZXMKfQoKSW50ZXJGcmVxUmVwUXVhbnRpdHlSQUNILUZERCA6Oj0JRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQljcGljaC1FY04wLCBjcGljaC1SU0NQIH0KCkludGVyRnJlcVJlcFF1YW50aXR5UkFDSC1UREQgOjo9CUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdGltZXNsb3RJU0NQLAoJCQkJCQkJCQkJcHJpbWFyeUNDUENILVJTQ1AgfQoKSW50ZXJGcmVxUmVwUXVhbnRpdHlSQUNILVRERExpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi4yKSkgT0YKCQkJCQkJCQkJCUludGVyRnJlcVJlcFF1YW50aXR5UkFDSC1UREQKCkludGVyRnJlcXVlbmN5TWVhc3VyZW1lbnQgOjo9CQlTRVFVRU5DRSB7CglpbnRlckZyZXFDZWxsSW5mb0xpc3QJCQkJSW50ZXJGcmVxQ2VsbEluZm9MaXN0LAoJaW50ZXJGcmVxTWVhc1F1YW50aXR5CQkJCUludGVyRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKCWludGVyRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJSW50ZXJGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlPUFRJT05BTCwKCW1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU9QVElPTkFMLAoJaW50ZXJGcmVxU2V0VXBkYXRlCQkJCQlVRS1BdXRvbm9tb3VzVXBkYXRlTW9kZQkJCQlPUFRJT05BTCwKCXJlcG9ydENyaXRlcmlhCQkJCQkJSW50ZXJGcmVxUmVwb3J0Q3JpdGVyaWEKfQoKSW50ZXJGcmVxdWVuY3lNZWFzdXJlbWVudC1yNCA6Oj0JU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbEluZm9MaXN0CQkJCUludGVyRnJlcUNlbGxJbmZvTGlzdC1yNCwKCWludGVyRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRlckZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCglpbnRlckZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCUludGVyRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJT1BUSU9OQUwsCgltZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlNZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlPUFRJT05BTCwKCWludGVyRnJlcVNldFVwZGF0ZQkJCQkJVUUtQXV0b25vbW91c1VwZGF0ZU1vZGUJCQkJT1BUSU9OQUwsCglyZXBvcnRDcml0ZXJpYQkJCQkJCUludGVyRnJlcVJlcG9ydENyaXRlcmlhLXI0Cn0KCkludGVyRnJlcXVlbmN5TWVhc3VyZW1lbnQtcjYgOjo9CVNFUVVFTkNFIHsKCWludGVyRnJlcUNlbGxJbmZvTGlzdAkJCQlJbnRlckZyZXFDZWxsSW5mb0xpc3QtcjQsCglpbnRlckZyZXFNZWFzUXVhbnRpdHkJCQkJSW50ZXJGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAoJaW50ZXJGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlJbnRlckZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCU9QVElPTkFMLAoJbWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJTWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJT1BUSU9OQUwsCglpbnRlckZyZXFTZXRVcGRhdGUJCQkJCVVFLUF1dG9ub21vdXNVcGRhdGVNb2RlCQkJCU9QVElPTkFMLAoJcmVwb3J0Q3JpdGVyaWEJCQkJCQlJbnRlckZyZXFSZXBvcnRDcml0ZXJpYS1yNgp9CgpJbnRlclJBVC1UYXJnZXRDZWxsRGVzY3JpcHRpb24gOjo9CVNFUVVFTkNFIHsKCXRlY2hub2xvZ3lTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKCQlnc20JCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWJzaWMJCQkJCQkJCUJTSUMsCgkJCWZyZXF1ZW5jeS1iYW5kCQkJCQkJRnJlcXVlbmN5LUJhbmQsCgkJCWJjY2gtQVJGQ04JCQkJCQkJQkNDSC1BUkZDTiwKCQkJbmNNb2RlCQkJCQkJCQlOQy1Nb2RlCQkJCU9QVElPTkFMCgkJfSwKCQlpcy0yMDAwCQkJCQkJCQlOVUxMLAoJCXNwYXJlMgkJCQkJCQkJTlVMTCwKCQlzcGFyZTEJCQkJCQkJCU5VTEwKCX0KfQoKSW50ZXJSQVRDZWxsSUQgOjo9CQkJCUlOVEVHRVIgKDAuLm1heENlbGxNZWFzLTEpCgpJbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbiA6Oj0JCUlOVEVHRVIgKDAuLjMpCgpJbnRlclJBVENlbGxJbmZvTGlzdCA6Oj0JCQlTRVFVRU5DRSB7CglyZW1vdmVkSW50ZXJSQVRDZWxsTGlzdAkJCVJlbW92ZWRJbnRlclJBVENlbGxMaXN0LAoJLS0gTk9URTogRnV0dXJlIHJldmlzaW9ucyBvZiBkZWRpY2F0ZWQgbWVzc2FnZXMgaW5jbHVkaW5nIElFIG5ld0ludGVyUkFUQ2VsbExpc3QKCS0tIHNob3VsZCB1c2UgYSBjb3JyZWN0ZWQgdmVyc2lvbiBvZiB0aGlzIElFCgluZXdJbnRlclJBVENlbGxMaXN0CQkJCU5ld0ludGVyUkFUQ2VsbExpc3QsCgljZWxsc0ZvckludGVyUkFUTWVhc0xpc3QJCQlDZWxsc0ZvckludGVyUkFUTWVhc0xpc3QJCQlPUFRJT05BTAp9CgpJbnRlclJBVENlbGxJbmZvTGlzdC1CIDo6PQkJCVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRlclJBVENlbGxMaXN0CQkJUmVtb3ZlZEludGVyUkFUQ2VsbExpc3QsCgktLSBOT1RFOiBJRSBuZXdJbnRlclJBVENlbGxMaXN0IHNob3VsZCBiZSBvcHRpb25hbC4gIEhvd2V2ZXIsIHN5c3RlbSBpbmZvcm1hdGlvbgoJLS0gZG9lcyBub3Qgc3VwcG9ydCBtZXNzYWdlIHZlcnNpb25zLiAgSGVuY2UsIHRoaXMgY2FuIG5vdCBiZSBjb3JyZWN0ZWQKCW5ld0ludGVyUkFUQ2VsbExpc3QJCQkJTmV3SW50ZXJSQVRDZWxsTGlzdC1CCn0KCkludGVyUkFUQ2VsbEluZm9MaXN0LXI0IDo6PQkJCVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRlclJBVENlbGxMaXN0CQkJCQlSZW1vdmVkSW50ZXJSQVRDZWxsTGlzdCwKCW5ld0ludGVyUkFUQ2VsbExpc3QJCQkJCQlOZXdJbnRlclJBVENlbGxMaXN0CQkJCQlPUFRJT05BTCwKCWNlbGxzRm9ySW50ZXJSQVRNZWFzTGlzdAkJCQlDZWxsc0ZvckludGVyUkFUTWVhc0xpc3QJCQlPUFRJT05BTAp9CgpJbnRlclJBVENlbGxJbmZvTGlzdC1yNiA6Oj0JCQlTRVFVRU5DRSB7CglyZW1vdmVkSW50ZXJSQVRDZWxsTGlzdAkJCQkJUmVtb3ZlZEludGVyUkFUQ2VsbExpc3QsCgluZXdJbnRlclJBVENlbGxMaXN0CQkJCQkJTmV3SW50ZXJSQVRDZWxsTGlzdAkJCQkJT1BUSU9OQUwsCgljZWxsc0ZvckludGVyUkFUTWVhc0xpc3QJCQkJQ2VsbHNGb3JJbnRlclJBVE1lYXNMaXN0CQkJT1BUSU9OQUwsCglpbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbi1yNgkJCUludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uCQkJT1BUSU9OQUwKfQoKSW50ZXJSQVRDZWxsSW5kaXZpZHVhbE9mZnNldCA6Oj0JCQlJTlRFR0VSICgtNTAuLjUwKQoKSW50ZXJSQVRFdmVudCA6Oj0JCQkJQ0hPSUNFIHsKCWV2ZW50M2EJCQkJCQkJCUV2ZW50M2EsCglldmVudDNiCQkJCQkJCQlFdmVudDNiLAoJZXZlbnQzYwkJCQkJCQkJRXZlbnQzYywKCWV2ZW50M2QJCQkJCQkJCUV2ZW50M2QKfQoKSW50ZXJSQVRFdmVudExpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNFdmVudCkpIE9GCgkJCQkJCQkJCQlJbnRlclJBVEV2ZW50CgpJbnRlclJBVEV2ZW50UmVzdWx0cyA6Oj0JCQlTRVFVRU5DRSB7CglldmVudElECQkJCQkJCQlFdmVudElESW50ZXJSQVQsCgljZWxsVG9SZXBvcnRMaXN0CQkJCQlDZWxsVG9SZXBvcnRMaXN0Cn0KCkludGVyUkFUSW5mbyA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZ3NtIH0KCkludGVyUkFUSW5mby1yNiA6Oj0JCQkJCVNFUVVFTkNFIHsKCXJhdAkJCQkJCQkJCUludGVyUkFUSW5mbywKCWdzbS1UYXJnZXRDZWxsSW5mb0xpc3QJCQkJR1NNLVRhcmdldENlbGxJbmZvTGlzdAkJCU9QVElPTkFMCn0KCkludGVyUkFUTWVhc1F1YW50aXR5IDo6PQkJCQlTRVFVRU5DRSB7CgltZWFzUXVhbnRpdHlVVFJBTi1RdWFsaXR5RXN0aW1hdGUJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCU9QVElPTkFMLAoJcmF0U3BlY2lmaWNJbmZvCQkJCQkJQ0hPSUNFIHsKCQlnc20JCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQltZWFzdXJlbWVudFF1YW50aXR5CQkJCQkJTWVhc3VyZW1lbnRRdWFudGl0eUdTTSwKCQkJZmlsdGVyQ29lZmZpY2llbnQJCQkJCQlGaWx0ZXJDb2VmZmljaWVudAkJREVGQVVMVCBmYzAsCgkJCWJzaWMtVmVyaWZpY2F0aW9uUmVxdWlyZWQJCQkJQlNJQy1WZXJpZmljYXRpb25SZXF1aXJlZAoJCX0sCgkJaXMtMjAwMAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdGFkZC1FY0lvCQkJCQkJCQlJTlRFR0VSICgwLi42MyksCgkJCXRjb21wLUVjSW8JCQkJCQkJCUlOVEVHRVIgKDAuLjE1KSwKCQkJc29mdFNsb3BlCQkJCQkJCQlJTlRFR0VSICgwLi42MykJCQlPUFRJT05BTCwKCQkJYWRkSW50ZXJjZXB0CQkJCQkJCUlOVEVHRVIgKDAuLjYzKQkJCU9QVElPTkFMCgkJfQoJfQkKfQoKSW50ZXJSQVRNZWFzdXJlZFJlc3VsdHMgOjo9CQlDSE9JQ0UgewoJZ3NtCQkJCQkJCQkJR1NNLU1lYXN1cmVkUmVzdWx0c0xpc3QsCglzcGFyZQkJCQkJCQkJTlVMTAp9CgpJbnRlclJBVE1lYXN1cmVkUmVzdWx0c0xpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhPdGhlclJBVC0xNikpIE9GCgkJCQkJCQkJCQlJbnRlclJBVE1lYXN1cmVkUmVzdWx0cwoKSW50ZXJSQVRNZWFzdXJlbWVudCA6Oj0JCQlTRVFVRU5DRSB7CglpbnRlclJBVENlbGxJbmZvTGlzdAkJCQlJbnRlclJBVENlbGxJbmZvTGlzdAkJCQlPUFRJT05BTCwKCWludGVyUkFUTWVhc1F1YW50aXR5CQkJCUludGVyUkFUTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAoJaW50ZXJSQVRSZXBvcnRpbmdRdWFudGl0eQkJCUludGVyUkFUUmVwb3J0aW5nUXVhbnRpdHkJCU9QVElPTkFMLAoJcmVwb3J0Q3JpdGVyaWEJCQkJCQlJbnRlclJBVFJlcG9ydENyaXRlcmlhCn0KCkludGVyUkFUTWVhc3VyZW1lbnQtcjQgOjo9CQkJU0VRVUVOQ0UgewoJaW50ZXJSQVRDZWxsSW5mb0xpc3QJCQkJSW50ZXJSQVRDZWxsSW5mb0xpc3QtcjQJCQkJT1BUSU9OQUwsCglpbnRlclJBVE1lYXNRdWFudGl0eQkJCQlJbnRlclJBVE1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKCWludGVyUkFUUmVwb3J0aW5nUXVhbnRpdHkJCQlJbnRlclJBVFJlcG9ydGluZ1F1YW50aXR5CQlPUFRJT05BTCwKCXJlcG9ydENyaXRlcmlhCQkJCQkJSW50ZXJSQVRSZXBvcnRDcml0ZXJpYQp9CgpJbnRlclJBVE1lYXN1cmVtZW50LXI2IDo6PQkJCVNFUVVFTkNFIHsKCWludGVyUkFUQ2VsbEluZm9MaXN0CQkJCUludGVyUkFUQ2VsbEluZm9MaXN0LXI2CQkJCU9QVElPTkFMLAoJaW50ZXJSQVRNZWFzUXVhbnRpdHkJCQkJSW50ZXJSQVRNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCglpbnRlclJBVFJlcG9ydGluZ1F1YW50aXR5CQkJSW50ZXJSQVRSZXBvcnRpbmdRdWFudGl0eQkJT1BUSU9OQUwsCglyZXBvcnRDcml0ZXJpYQkJCQkJCUludGVyUkFUUmVwb3J0Q3JpdGVyaWEKfQoKSW50ZXJSQVRNZWFzdXJlbWVudFN5c0luZm8gOjo9CVNFUVVFTkNFIHsKCWludGVyUkFUQ2VsbEluZm9MaXN0CQkJCUludGVyUkFUQ2VsbEluZm9MaXN0CQkJCU9QVElPTkFMCn0KCkludGVyUkFUTWVhc3VyZW1lbnRTeXNJbmZvLUIgOjo9CVNFUVVFTkNFIHsKCWludGVyUkFUQ2VsbEluZm9MaXN0CQkJCUludGVyUkFUQ2VsbEluZm9MaXN0LUIJCQlPUFRJT05BTAp9CgpJbnRlclJBVFJlcG9ydENyaXRlcmlhIDo6PQkJQ0hPSUNFIHsKCWludGVyUkFUUmVwb3J0aW5nQ3JpdGVyaWEJCQlJbnRlclJBVFJlcG9ydGluZ0NyaXRlcmlhLAoJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFdpdGhSZXBvcnRpbmdDZWxsU3RhdHVzLAoJbm9SZXBvcnRpbmcJCQkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1c09wdAp9CQkJCgpJbnRlclJBVFJlcG9ydGluZ0NyaXRlcmlhIDo6PSAJU0VRVUVOQ0UgewoJaW50ZXJSQVRFdmVudExpc3QJCQkJSW50ZXJSQVRFdmVudExpc3QJCQkJT1BUSU9OQUwKfQoKSW50ZXJSQVRSZXBvcnRpbmdRdWFudGl0eSA6Oj0JU0VRVUVOQ0UgewoJdXRyYW4tRXN0aW1hdGVkUXVhbGl0eQkJCQlCT09MRUFOLAoJcmF0U3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWdzbQkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCgkJCS0tIGFuZCB3aGVuIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCgkJCWR1bW15CQkJCQkJCQlCT09MRUFOLAoJCQlkdW1teTIJCQkJCQkJCUJPT0xFQU4sCgkJCWdzbS1DYXJyaWVyLVJTU0kJCQkJCUJPT0xFQU4KCQl9Cgl9Cn0KCkludHJhRnJlcUNlbGxJRCA6Oj0JCQkJCUlOVEVHRVIgKDAuLm1heENlbGxNZWFzLTEpCgpJbnRyYUZyZXFDZWxsSW5mb0xpc3QgOjo9CQkJU0VRVUVOQ0UgewoJcmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCgluZXdJbnRyYUZyZXFDZWxsTGlzdAkJCQlOZXdJbnRyYUZyZXFDZWxsTGlzdAkJCQlPUFRJT05BTCwKCWNlbGxzRm9ySW50cmFGcmVxTWVhc0xpc3QJCQlDZWxsc0ZvckludHJhRnJlcU1lYXNMaXN0CQkJT1BUSU9OQUwKfQoKSW50cmFGcmVxQ2VsbEluZm9MaXN0LXI0IDo6PQkJU0VRVUVOQ0UgewoJcmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCgluZXdJbnRyYUZyZXFDZWxsTGlzdAkJCQlOZXdJbnRyYUZyZXFDZWxsTGlzdC1yNAkJCQlPUFRJT05BTCwKCWNlbGxzRm9ySW50cmFGcmVxTWVhc0xpc3QJCQlDZWxsc0ZvckludHJhRnJlcU1lYXNMaXN0CQkJT1BUSU9OQUwKfQoKSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LVJTQ1AgOjo9CVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAoJbmV3SW50cmFGcmVxQ2VsbExpc3QJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtUlNDUAp9CgpJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtRUNOMCA6Oj0JCVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAoJbmV3SW50cmFGcmVxQ2VsbExpc3QJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtRUNOMAp9CgpJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLVJTQ1AgOjo9CQlTRVFVRU5DRSB7CglyZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKCW5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LUhDUy1SU0NQCn0KCkludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtRUNOMCA6Oj0JCVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAoJbmV3SW50cmFGcmVxQ2VsbExpc3QJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtSENTLUVDTjAKfQoKSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LVJTQ1AtTENSLXI0IDo6PQlTRVFVRU5DRSB7CglyZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKCW5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LVJTQ1AtTENSLXI0Cn0KCkludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1FQ04wLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAoJbmV3SW50cmFGcmVxQ2VsbExpc3QJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtRUNOMC1MQ1ItcjQKfQoKSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1SU0NQLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAoJbmV3SW50cmFGcmVxQ2VsbExpc3QJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtSENTLVJTQ1AtTENSLXI0Cn0KCkludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtRUNOMC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CglyZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKCW5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LUhDUy1FQ04wLUxDUi1yNAp9CgpJbnRyYUZyZXFFdmVudCA6Oj0JCQkJCUNIT0lDRSB7CgllMWEJCQkJCQkJCQlFdmVudDFhLAoJZTFiCQkJCQkJCQkJRXZlbnQxYiwKCWUxYwkJCQkJCQkJCUV2ZW50MWMsCgllMWQJCQkJCQkJCQlOVUxMLAoJZTFlCQkJCQkJCQkJRXZlbnQxZSwKCWUxZgkJCQkJCQkJCUV2ZW50MWYsCgllMWcJCQkJCQkJCQlOVUxMLAoJZTFoCQkJCQkJCQkJVGhyZXNob2xkVXNlZEZyZXF1ZW5jeSwKCWUxaQkJCQkJCQkJCVRocmVzaG9sZFVzZWRGcmVxdWVuY3kKfQoKSW50cmFGcmVxRXZlbnQtcjQgOjo9CQkJCUNIT0lDRSB7CgllMWEJCQkJCQkJCQlFdmVudDFhLXI0LAoJZTFiCQkJCQkJCQkJRXZlbnQxYi1yNCwKCWUxYwkJCQkJCQkJCUV2ZW50MWMsCgllMWQJCQkJCQkJCQlOVUxMLAoJZTFlCQkJCQkJCQkJRXZlbnQxZSwKCWUxZgkJCQkJCQkJCUV2ZW50MWYsCgllMWcJCQkJCQkJCQlOVUxMLAoJZTFoCQkJCQkJCQkJVGhyZXNob2xkVXNlZEZyZXF1ZW5jeSwKCWUxaQkJCQkJCQkJCVRocmVzaG9sZFVzZWRGcmVxdWVuY3kKfQoKSW50cmFGcmVxRXZlbnQtTENSLXI0IDo6PQkJCUNIT0lDRSB7CgllMWEJCQkJCQkJCQlFdmVudDFhLUxDUi1yNCwKCWUxYgkJCQkJCQkJCUV2ZW50MWItTENSLXI0LAoJZTFjCQkJCQkJCQkJRXZlbnQxYywKCWUxZAkJCQkJCQkJCU5VTEwsCgllMWUJCQkJCQkJCQlFdmVudDFlLAoJZTFmCQkJCQkJCQkJRXZlbnQxZiwKCWUxZwkJCQkJCQkJCU5VTEwsCgllMWgJCQkJCQkJCQlUaHJlc2hvbGRVc2VkRnJlcXVlbmN5LAoJZTFpCQkJCQkJCQkJVGhyZXNob2xkVXNlZEZyZXF1ZW5jeQp9CgpJbnRyYUZyZXFFdmVudC1yNiA6Oj0JCQkJQ0hPSUNFIHsKCWUxYQkJCQkJCQkJCUV2ZW50MWEtcjQsCgllMWIJCQkJCQkJCQlFdmVudDFiLXI0LAoJZTFjCQkJCQkJCQkJRXZlbnQxYywKCWUxZAkJCQkJCQkJCUV2ZW50MWQsCgllMWUJCQkJCQkJCQlFdmVudDFlLXI2LAoJZTFmCQkJCQkJCQkJRXZlbnQxZi1yNiwKCWUxZwkJCQkJCQkJCU5VTEwsCgllMWgJCQkJCQkJCQlUaHJlc2hvbGRVc2VkRnJlcXVlbmN5LXI2LAoJZTFpCQkJCQkJCQkJVGhyZXNob2xkVXNlZEZyZXF1ZW5jeS1yNiwKCWUxagkJCQkJCQkJCUV2ZW50MWotcjYKfQoKSW50cmFGcmVxRXZlbnQtMWQtcjUgOjo9CQlTRVFVRU5DRSB7Cgl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMglPUFRJT05BTCwKCXVzZUNJTwkJCQkJCQkJQk9PTEVBTgkJCQkJT1BUSU9OQUwKfQoKSW50cmFGcmVxRXZlbnRDcml0ZXJpYSA6Oj0JCQlTRVFVRU5DRSB7CglldmVudAkJCQkJCQkJSW50cmFGcmVxRXZlbnQsCgloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXMsCgl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCn0KCkludHJhRnJlcUV2ZW50Q3JpdGVyaWEtcjQgOjo9CQlTRVFVRU5DRSB7CglldmVudAkJCQkJCQkJSW50cmFGcmVxRXZlbnQtcjQsCgloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXMsCgl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCn0KCkludHJhRnJlcUV2ZW50Q3JpdGVyaWEtTENSLXI0IDo6PQlTRVFVRU5DRSB7CglldmVudAkJCQkJCQkJSW50cmFGcmVxRXZlbnQtTENSLXI0LAoJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzLAoJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCglyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAp9CgpJbnRyYUZyZXFFdmVudENyaXRlcmlhLXI2IDo6PQlTRVFVRU5DRSB7CglldmVudAkJCQkJCQkJSW50cmFGcmVxRXZlbnQtcjYsCgloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXMsCgl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCn0KCkludHJhRnJlcUV2ZW50Q3JpdGVyaWFMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNFdmVudCkpIE9GCgkJCQkJCQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhCgpJbnRyYUZyZXFFdmVudENyaXRlcmlhTGlzdC1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNFdmVudCkpIE9GCgkJCQkJCQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhLXI0CgpJbnRyYUZyZXFFdmVudENyaXRlcmlhTGlzdC1MQ1ItcjQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzRXZlbnQpKSBPRgoJCQkJCQkJCQkJSW50cmFGcmVxRXZlbnRDcml0ZXJpYS1MQ1ItcjQKCkludHJhRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXI2IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNFdmVudCkpIE9GCgkJCQkJCQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhLXI2CgpJbnRyYUZyZXFFdmVudFJlc3VsdHMgOjo9CQkJU0VRVUVOQ0UgewoJZXZlbnRJRAkJCQkJCQkJRXZlbnRJREludHJhRnJlcSwKCWNlbGxNZWFzdXJlbWVudEV2ZW50UmVzdWx0cwkJCUNlbGxNZWFzdXJlbWVudEV2ZW50UmVzdWx0cwp9CgpJbnRyYUZyZXFNZWFzUXVhbnRpdHkgOjo9CQkJU0VRVUVOQ0UgewoJZmlsdGVyQ29lZmZpY2llbnQJCQkJCUZpbHRlckNvZWZmaWNpZW50CQkJCQlERUZBVUxUIGZjMCwKCW1vZGVTcGVjaWZpY0luZm8gCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlpbnRyYUZyZXFNZWFzUXVhbnRpdHktRkRECQlJbnRyYUZyZXFNZWFzUXVhbnRpdHktRkRECgkJfSwKCQl0ZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJaW50cmFGcmVxTWVhc1F1YW50aXR5LVRERExpc3QJSW50cmFGcmVxTWVhc1F1YW50aXR5LVRERExpc3QKCQl9Cgl9Cn0KCi0tIElmIEludHJhRnJlcU1lYXNRdWFudGl0eS1GREQgaXMgdXNlZCBpbiBJbnRlclJBVE1lYXNRdWFudGl0eSwgdGhlbiBvbmx5IAotLSBjcGljaC1FYy1OMCBhbmQgY3BpY2gtUlNDUCBhcmUgYWxsb3dlZC4KLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KSW50cmFGcmVxTWVhc1F1YW50aXR5LUZERCA6Oj0JCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJY3BpY2gtRWMtTjAsCgkJCQkJCQkJCQljcGljaC1SU0NQLAoJCQkJCQkJCQkJcGF0aGxvc3MsCgkJCQkJCQkJCQlkdW1teSB9CgotLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAotLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgpJbnRyYUZyZXFNZWFzUXVhbnRpdHktVEREIDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlwcmltYXJ5Q0NQQ0gtUlNDUCwKCQkJCQkJCQkJCXBhdGhsb3NzLAoJCQkJCQkJCQkJdGltZXNsb3RJU0NQLAoJCQkJCQkJCQkJZHVtbXkgfQoKSW50cmFGcmVxTWVhc1F1YW50aXR5LVRERExpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi40KSkgT0YKCQkJCQkJCQkJCUludHJhRnJlcU1lYXNRdWFudGl0eS1UREQKCkludHJhRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQlDZWxsTWVhc3VyZWRSZXN1bHRzCgpJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tUlNDUCA6Oj0JU0VRVUVOQ0UgewoJaW50cmFGcmVxTWVhc3VyZW1lbnRJRAkJCQlNZWFzdXJlbWVudElkZW50aXR5CQkJREVGQVVMVCAxLAoJaW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LVJTQ1AJCU9QVElPTkFMLAoJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKCWludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJT1BUSU9OQUwsCgltYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJT1BUSU9OQUwsCglyZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlSZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlPUFRJT05BTAp9CgpJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMCA6Oj0JCVNFUVVFTkNFIHsKCWludHJhRnJlcU1lYXN1cmVtZW50SUQJCQkJTWVhc3VyZW1lbnRJZGVudGl0eQkJCURFRkFVTFQgMSwKCWludHJhRnJlcUNlbGxJbmZvU0ktTGlzdAkJCUludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1FQ04wCQlPUFRJT05BTCwKCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCglpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICU9QVElPTkFMLAoJbWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlNYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU9QVElPTkFMLAoJcmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJUmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJT1BUSU9OQUwKfQoKSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1SU0NQIDo6PQlTRVFVRU5DRSB7CglpbnRyYUZyZXFNZWFzdXJlbWVudElECQkJCU1lYXN1cmVtZW50SWRlbnRpdHkJCQlERUZBVUxUIDEsCglpbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLVJTQ1AJT1BUSU9OQUwsCglpbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJSW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAoJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlPUFRJT05BTCwKCW1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJTWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlPUFRJT05BTCwKCXJlcG9ydGluZ0luZm9Gb3JDZWxsRENICQkJCVJlcG9ydGluZ0luZm9Gb3JDZWxsRENICQkJCU9QVElPTkFMCn0KCkludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtRUNOMCA6Oj0JU0VRVUVOQ0UgewoJaW50cmFGcmVxTWVhc3VyZW1lbnRJRAkJCQlNZWFzdXJlbWVudElkZW50aXR5CQkJREVGQVVMVCAxLAoJaW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1FQ04wCU9QVElPTkFMLAoJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKCWludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJT1BUSU9OQUwsCgltYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJT1BUSU9OQUwsCglyZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlSZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlPUFRJT05BTAp9CgpJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tUlNDUC1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKCWludHJhRnJlcU1lYXN1cmVtZW50SUQJCQkJTWVhc3VyZW1lbnRJZGVudGl0eQkJCURFRkFVTFQgMSwKCWludHJhRnJlcUNlbGxJbmZvU0ktTGlzdAkJCUludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1SU0NQLUxDUi1yNAlPUFRJT05BTCwKCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCglpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICU9QVElPTkFMLAoJbWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlNYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU9QVElPTkFMLAoJcmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJUmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gtTENSLXI0CQlPUFRJT05BTAp9CgpJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CglpbnRyYUZyZXFNZWFzdXJlbWVudElECQkJCU1lYXN1cmVtZW50SWRlbnRpdHkJCQlERUZBVUxUIDEsCglpbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtRUNOMC1MQ1ItcjQJT1BUSU9OQUwsCglpbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJSW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAoJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlPUFRJT05BTCwKCW1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJTWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlPUFRJT05BTCwKCXJlcG9ydGluZ0luZm9Gb3JDZWxsRENICQkJCVJlcG9ydGluZ0luZm9Gb3JDZWxsRENILUxDUi1yNAkJT1BUSU9OQUwKfQoKSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1SU0NQLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgewoJaW50cmFGcmVxTWVhc3VyZW1lbnRJRAkJCQlNZWFzdXJlbWVudElkZW50aXR5CQkJREVGQVVMVCAxLAoJaW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1SU0NQLUxDUi1yNAlPUFRJT05BTCwKCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCglpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICU9QVElPTkFMLAoJbWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlNYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU9QVElPTkFMLAoJcmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJUmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gtTENSLXI0CQlPUFRJT05BTAp9CgpJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLUVDTjAtTENSLXI0IDo6PQlTRVFVRU5DRSB7CglpbnRyYUZyZXFNZWFzdXJlbWVudElECQkJCU1lYXN1cmVtZW50SWRlbnRpdHkJCQlERUZBVUxUIDEsCglpbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLUVDTjAtTENSLXI0CU9QVElPTkFMLAoJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKCWludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJT1BUSU9OQUwsCgltYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJT1BUSU9OQUwsCglyZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlSZXBvcnRpbmdJbmZvRm9yQ2VsbERDSC1MQ1ItcjQJCU9QVElPTkFMCn0KCkludHJhRnJlcVJlcG9ydENyaXRlcmlhIDo6PQkJCUNIT0lDRSB7CglpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLAoJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFdpdGhSZXBvcnRpbmdDZWxsU3RhdHVzLAoJbm9SZXBvcnRpbmcJCQkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1c09wdAp9CgpJbnRyYUZyZXFSZXBvcnRDcml0ZXJpYS1yNCA6Oj0JCUNIT0lDRSB7CglpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLXI0LAoJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFdpdGhSZXBvcnRpbmdDZWxsU3RhdHVzLAoJbm9SZXBvcnRpbmcJCQkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1c09wdAp9CgpJbnRyYUZyZXFSZXBvcnRDcml0ZXJpYS1yNiA6Oj0JCUNIT0lDRSB7CglpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLXI2LAoJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFdpdGhSZXBvcnRpbmdDZWxsU3RhdHVzLAoJbm9SZXBvcnRpbmcJCQkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1c09wdAp9CgpJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYSA6Oj0JCVNFUVVFTkNFIHsKCWV2ZW50Q3JpdGVyaWFMaXN0CQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhTGlzdAkJT1BUSU9OQUwKfQoKSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtcjQgOjo9CVNFUVVFTkNFIHsKCWV2ZW50Q3JpdGVyaWFMaXN0CQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhTGlzdC1yNAlPUFRJT05BTAp9CgpJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKCWV2ZW50Q3JpdGVyaWFMaXN0CQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhTGlzdC1MQ1ItcjQJT1BUSU9OQUwKfQoKSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtcjYgOjo9IFNFUVVFTkNFIHsKCWV2ZW50Q3JpdGVyaWFMaXN0CQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhTGlzdC1yNglPUFRJT05BTAp9CgpJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eSA6Oj0JCVNFUVVFTkNFIHsKCWFjdGl2ZVNldFJlcG9ydGluZ1F1YW50aXRpZXMJCUNlbGxSZXBvcnRpbmdRdWFudGl0aWVzLAoJbW9uaXRvcmVkU2V0UmVwb3J0aW5nUXVhbnRpdGllcwkJQ2VsbFJlcG9ydGluZ1F1YW50aXRpZXMsCglkZXRlY3RlZFNldFJlcG9ydGluZ1F1YW50aXRpZXMJCUNlbGxSZXBvcnRpbmdRdWFudGl0aWVzCQkJCU9QVElPTkFMCn0KCkludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSCA6Oj0gU0VRVUVOQ0UgewoJc2ZuLVNGTi1PVEQtVHlwZQkJCQkJU0ZOLVNGTi1PVEQtVHlwZSwKCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlpbnRyYUZyZXFSZXBRdWFudGl0eVJBQ0gtRkRECQlJbnRyYUZyZXFSZXBRdWFudGl0eVJBQ0gtRkRECgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWludHJhRnJlcVJlcFF1YW50aXR5UkFDSC1URERMaXN0CUludHJhRnJlcVJlcFF1YW50aXR5UkFDSC1URERMaXN0CgkJfQoJfQp9CgpJbnRyYUZyZXFSZXBRdWFudGl0eVJBQ0gtRkREIDo6PQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWNwaWNoLUVjTjAsIGNwaWNoLVJTQ1AsIAoJCQkJCQkJCQkJcGF0aGxvc3MsIG5vUmVwb3J0IH0KCkludHJhRnJlcVJlcFF1YW50aXR5UkFDSC1UREQgOjo9CUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdGltZXNsb3RJU0NQLAoJCQkJCQkJCQkJcHJpbWFyeUNDUENILVJTQ1AsCgkJCQkJCQkJCQlub1JlcG9ydCB9CgpJbnRyYUZyZXFSZXBRdWFudGl0eVJBQ0gtVERETGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLjIpKSBPRgoJCQkJCQkJCQkJSW50cmFGcmVxUmVwUXVhbnRpdHlSQUNILVRERAoKSW50cmFGcmVxdWVuY3lNZWFzdXJlbWVudCA6Oj0JCVNFUVVFTkNFIHsKCWludHJhRnJlcUNlbGxJbmZvTGlzdAkJCQlJbnRyYUZyZXFDZWxsSW5mb0xpc3QJCQkJT1BUSU9OQUwsCglpbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJSW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAoJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCU9QVElPTkFMLAoJbWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJTWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJT1BUSU9OQUwsCglyZXBvcnRDcml0ZXJpYQkJCQkJCUludHJhRnJlcVJlcG9ydENyaXRlcmlhCQkJCU9QVElPTkFMCn0KCkludHJhRnJlcXVlbmN5TWVhc3VyZW1lbnQtcjQgOjo9CVNFUVVFTkNFIHsKCWludHJhRnJlcUNlbGxJbmZvTGlzdAkJCQlJbnRyYUZyZXFDZWxsSW5mb0xpc3QtcjQJCQlPUFRJT05BTCwKCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCglpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJT1BUSU9OQUwsCgltZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlNZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlPUFRJT05BTCwKCXJlcG9ydENyaXRlcmlhCQkJCQkJSW50cmFGcmVxUmVwb3J0Q3JpdGVyaWEtcjQJCQlPUFRJT05BTAp9CgpJbnRyYUZyZXF1ZW5jeU1lYXN1cmVtZW50LXI2IDo6PQkJU0VRVUVOQ0UgewoJaW50cmFGcmVxQ2VsbEluZm9MaXN0CQkJCUludHJhRnJlcUNlbGxJbmZvTGlzdC1yNAkJCU9QVElPTkFMLAoJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKCWludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlPUFRJT05BTCwKCW1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU9QVElPTkFMLAoJcmVwb3J0Q3JpdGVyaWEJCQkJCQlJbnRyYUZyZXFSZXBvcnRDcml0ZXJpYS1yNgp9CgpJT0RFIDo6PQkJCQkJCQlJTlRFR0VSICgwLi4yNTUpCgpJUC1MZW5ndGggOjo9CQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlpcGw1LCBpcGwxMCB9CgpJUC1QQ0NQQ0gtcjQgOjo9CQkJCQlCT09MRUFOCgpJUC1TcGFjaW5nIDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZTUsIGU3LCBlMTAsIGUxNSwgZTIwLAoJCQkJCQkJCQkJZTMwLCBlNDAsIGU1MCB9CgpJUC1TcGFjaW5nLVRERCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWUzMCwgZTQwLCBlNTAsIGU3MCwgZTEwMH0KCklTLTIwMDBTcGVjaWZpY01lYXNJbmZvIDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZnJlcXVlbmN5LCB0aW1lc2xvdCwgY29sb3VyY29kZSwKCQkJCQkJCQkJCW91dHB1dHBvd2VyLCBwbi1PZmZzZXQgfQoKTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUxIDo6PQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWUxLCBlMiwgZTMsIGU0LCBlNSwgZTZ9CgpNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTIgOjo9CUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMn0KCk1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMyA6Oj0JRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl2aWFjdENlbGxzUGx1czEsCgkJCQkJCQkJCQl2aWFjdENlbGxzUGx1czIsCgkJCQkJCQkJCQl2aWFjdENlbGxzUGx1czMsCgkJCQkJCQkJCQl2aWFjdENlbGxzUGx1czQsCgkJCQkJCQkJCQl2aWFjdENlbGxzUGx1czUsCgkJCQkJCQkJCQl2aWFjdENlbGxzUGx1czYgfQoKTWF4UmVwb3J0ZWRDZWxsc09uUkFDSCA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCW5vUmVwb3J0LAoJCQkJCQkJCQkJY3VycmVudENlbGwsCgkJCQkJCQkJCQljdXJyZW50QW5kLTEtQmVzdE5laWdoYm91ciwKCQkJCQkJCQkJCWN1cnJlbnRBbmQtMi1CZXN0TmVpZ2hib3VyLAoJCQkJCQkJCQkJY3VycmVudEFuZC0zLUJlc3ROZWlnaGJvdXIsCgkJCQkJCQkJCQljdXJyZW50QW5kLTQtQmVzdE5laWdoYm91ciwKCQkJCQkJCQkJCWN1cnJlbnRBbmQtNS1CZXN0TmVpZ2hib3VyLAoJCQkJCQkJCQkJY3VycmVudEFuZC02LUJlc3ROZWlnaGJvdXIgfQoKTWF4UmVwb3J0ZWRDZWxsc09uUkFDSGludGVyRnJlcSA6Oj0JCUlOVEVHRVIgKDEuLjgpCgpNZWFzdXJlZFJlc3VsdHMgOjo9CQkJCQlDSE9JQ0UgewoJaW50cmFGcmVxTWVhc3VyZWRSZXN1bHRzTGlzdAkJSW50cmFGcmVxTWVhc3VyZWRSZXN1bHRzTGlzdCwKCWludGVyRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QJCUludGVyRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QsCglpbnRlclJBVE1lYXN1cmVkUmVzdWx0c0xpc3QJCUludGVyUkFUTWVhc3VyZWRSZXN1bHRzTGlzdCwKCXRyYWZmaWNWb2x1bWVNZWFzdXJlZFJlc3VsdHNMaXN0CVRyYWZmaWNWb2x1bWVNZWFzdXJlZFJlc3VsdHNMaXN0LAoJcXVhbGl0eU1lYXN1cmVkUmVzdWx0cwkJCQlRdWFsaXR5TWVhc3VyZWRSZXN1bHRzLAoJdWUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMJCQlVRS1JbnRlcm5hbE1lYXN1cmVkUmVzdWx0cywKCXVlLXBvc2l0aW9uaW5nLU1lYXN1cmVkUmVzdWx0cwkJVUUtUG9zaXRpb25pbmctTWVhc3VyZWRSZXN1bHRzLAoJc3BhcmUJCQkJCQkJCU5VTEwKfQoKTWVhc3VyZWRSZXN1bHRzLXYzOTBleHQgOjo9CQkJCQlTRVFVRU5DRSB7Cgl1ZS1wb3NpdGlvbmluZy1NZWFzdXJlZFJlc3VsdHMtdjM5MGV4dAkJCQkJVUUtUG9zaXRpb25pbmctTWVhc3VyZWRSZXN1bHRzLXYzOTBleHQKfQoKCk1lYXN1cmVkUmVzdWx0cy12NTkwZXh0IDo6PSBDSE9JQ0UgewoJaW50cmFGcmVxdWVuY3lNZWFzdXJlZFJlc3VsdHNMaXN0CQlJbnRyYUZyZXF1ZW5jeU1lYXN1cmVkUmVzdWx0c0xpc3QtdjU5MGV4dCwKCWludGVyRnJlcXVlbmN5TWVhc3VyZWRSZXN1bHRzTGlzdAkJSW50ZXJGcmVxdWVuY3lNZWFzdXJlZFJlc3VsdHNMaXN0LXY1OTBleHQKfQoKTWVhc3VyZWRSZXN1bHRzLXY3eHlleHQgOjo9IENIT0lDRSB7Cgl1ZUludGVybmFsTWVhc3VyZWRSZXN1bHRzCQlVRS1JbnRlcm5hbE1lYXN1cmVkUmVzdWx0cy1yNwp9CgpNZWFzdXJlZFJlc3VsdHMtTENSLXI0IDo6PQkJCUNIT0lDRSB7CglpbnRyYUZyZXFNZWFzdXJlZFJlc3VsdHNMaXN0CQlJbnRyYUZyZXFNZWFzdXJlZFJlc3VsdHNMaXN0LAoJaW50ZXJGcmVxTWVhc3VyZWRSZXN1bHRzTGlzdAkJSW50ZXJGcmVxTWVhc3VyZWRSZXN1bHRzTGlzdCwKCWludGVyUkFUTWVhc3VyZWRSZXN1bHRzTGlzdAkJSW50ZXJSQVRNZWFzdXJlZFJlc3VsdHNMaXN0LAoJdHJhZmZpY1ZvbHVtZU1lYXN1cmVkUmVzdWx0c0xpc3QJVHJhZmZpY1ZvbHVtZU1lYXN1cmVkUmVzdWx0c0xpc3QsCglxdWFsaXR5TWVhc3VyZWRSZXN1bHRzCQkJCVF1YWxpdHlNZWFzdXJlZFJlc3VsdHMsCgl1ZS1JbnRlcm5hbE1lYXN1cmVkUmVzdWx0cwkJCVVFLUludGVybmFsTWVhc3VyZWRSZXN1bHRzLUxDUi1yNCwKCXVlLXBvc2l0aW9uaWluZy1NZWFzdXJlZFJlc3VsdHMJCVVFLVBvc2l0aW9uaW5nLU1lYXN1cmVkUmVzdWx0cywKCXNwYXJlCQkJCQkJCQlOVUxMCn0KCk1lYXN1cmVkUmVzdWx0c0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhBZGRpdGlvbmFsTWVhcykpIE9GCgkJCQkJCQkJCQlNZWFzdXJlZFJlc3VsdHMKCk1lYXN1cmVkUmVzdWx0c0xpc3QtTENSLXI0LWV4dCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEFkZGl0aW9uYWxNZWFzKSkgT0YKCQkJCQkJCQkJCU1lYXN1cmVkUmVzdWx0cy1MQ1ItcjQKCk1lYXN1cmVkUmVzdWx0c09uUkFDSCA6Oj0JCQlTRVFVRU5DRSB7CgljdXJyZW50Q2VsbCAJCQkJCQlTRVFVRU5DRSB7CgkJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJbWVhc3VyZW1lbnRRdWFudGl0eQkJCQkJQ0hPSUNFIHsKCQkJCQljcGljaC1FYy1OMAkJCQkJCQlDUElDSC1FYy1OMCwKCQkJCQljcGljaC1SU0NQCQkJCQkJCUNQSUNILVJTQ1AsCgkJCQkJcGF0aGxvc3MJCQkJCQkJUGF0aGxvc3MsCgkJCQkJc3BhcmUJCQkJCQkJCU5VTEwgCgkJCQl9CgkJCX0sCgkJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCS0tIEZvciAzLjg0IE1jcHMgYW5kIDcuNjggTWNwcyBUREQgICAtLQoJCQkJdGltZXNsb3RJU0NQCQkJCQkJVGltZXNsb3RJU0NQLUxpc3QJCU9QVElPTkFMLAoJCQkJcHJpbWFyeUNDUENILVJTQ1AJCQkJCVByaW1hcnlDQ1BDSC1SU0NQCQlPUFRJT05BTAoJCQl9CgkJfQoJfSwKCW1vbml0b3JlZENlbGxzCQkJCQkJTW9uaXRvcmVkQ2VsbFJBQ0gtTGlzdAkJCQlPUFRJT05BTAp9CgpNZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEgOjo9CQlTRVFVRU5DRSB7CglpbnRlckZyZXFDZWxsSW5kaWNhdGlvbi1TSUIxMQkJCUlOVEVHRVIgKDAuLjEpLAoJaW50ZXJGcmVxQ2VsbEluZGljYXRpb24tU0lCMTIJCQlJTlRFR0VSICgwLi4xKSwKCWludGVyRnJlcVJBQ0hSZXBDZWxsc0xpc3QJCQkJSW50ZXJGcmVxUkFDSFJlcENlbGxzTGlzdAp9CgpNZWFzdXJlbWVudENvbW1hbmQgOjo9CQkJCUNIT0lDRSB7CglzZXR1cAkJCQkJCQkJTWVhc3VyZW1lbnRUeXBlLAoJbW9kaWZ5CQkJCQkJCQlTRVFVRU5DRSB7CgkJbWVhc3VyZW1lbnRUeXBlCQkJCQkJTWVhc3VyZW1lbnRUeXBlCQkJCQlPUFRJT05BTAoJfSwKCXJlbGVhc2UJCQkJCQkJCU5VTEwKfQoKTWVhc3VyZW1lbnRDb21tYW5kLXI0IDo6PQkJCUNIT0lDRSB7CglzZXR1cAkJCQkJCQkJTWVhc3VyZW1lbnRUeXBlLXI0LAoJbW9kaWZ5CQkJCQkJCQlTRVFVRU5DRSB7CgkJbWVhc3VyZW1lbnRUeXBlCQkJCQkJTWVhc3VyZW1lbnRUeXBlLXI0CQkJCU9QVElPTkFMCgl9LAoJcmVsZWFzZQkJCQkJCQkJTlVMTAp9CgpNZWFzdXJlbWVudENvbW1hbmQtcjYgOjo9CQkJQ0hPSUNFIHsKCXNldHVwCQkJCQkJCQlNZWFzdXJlbWVudFR5cGUtcjYsCgltb2RpZnkJCQkJCQkJCVNFUVVFTkNFIHsKCQltZWFzdXJlbWVudFR5cGUJCQkJCQlNZWFzdXJlbWVudFR5cGUtcjYJCQkJT1BUSU9OQUwKCX0sCglyZWxlYXNlCQkJCQkJCQlOVUxMCn0KCk1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8gOjo9CQlTRVFVRU5DRSB7CgktLSBDSE9JQ0UgY2VsbFNlbGVjdFF1YWxpdHlNZWFzdXJlIHJlcHJlc2VudHMgUENDUENILVJTQ1AgaW4gVEREIG1vZGUuCgl1c2Utb2YtSENTCQkJCQkJCUNIT0lDRQl7CgkJaGNzLW5vdC11c2VkIAkJCQkJU0VRVUVOQ0UJewoJCQljZWxsU2VsZWN0UXVhbGl0eU1lYXN1cmUJQ0hPSUNFCXsKCQkJCWNwaWNoLVJTQ1AJCQkJU0VRVUVOQ0UJewoJCQkJCWludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mbwkJCUludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mby1SU0NQCU9QVElPTkFMLAoJCQkJCWludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mbwkJCUludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1SU0NQCU9QVElPTkFMCgkJCQl9LAoJCQkJY3BpY2gtRWMtTjAJCQkJU0VRVUVOQ0UJewoJCQkJCWludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mbwkJCUludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mby1FQ04wCQlPUFRJT05BTCwKCQkJCQlpbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8JCQlJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMAlPUFRJT05BTAoJCQkJfQoJCQl9LAoJCQlpbnRlclJBVE1lYXN1cmVtZW50U3lzSW5mbwkJSW50ZXJSQVRNZWFzdXJlbWVudFN5c0luZm8tQgkJT1BUSU9OQUwKCQl9LAoJCWhjcy11c2VkCQkJCQkJU0VRVUVOQ0UJewoJCQljZWxsU2VsZWN0UXVhbGl0eU1lYXN1cmUJQ0hPSUNFCXsKCQkJCWNwaWNoLVJTQ1AJCQkJU0VRVUVOQ0UJewoJCQkJCWludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mbwkJCUludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtUlNDUAkJCU9QVElPTkFMLAoJCQkJCWludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mbwkJCUludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtUlNDUAkJCU9QVElPTkFMCgkJCQl9LAoJCQkJY3BpY2gtRWMtTjAJCQkJU0VRVUVOQ0UJewoJCQkJCWludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mbwkJCUludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtRUNOMAkJCU9QVElPTkFMLAoJCQkJCWludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mbwkJCUludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtRUNOMAkJCU9QVElPTkFMCQkJCX0KCQkJfSwKCQkJaW50ZXJSQVRNZWFzdXJlbWVudFN5c0luZm8JCUludGVyUkFUTWVhc3VyZW1lbnRTeXNJbmZvCQlPUFRJT05BTAoJCX0KCX0sCgoJdHJhZmZpY1ZvbHVtZU1lYXNTeXNJbmZvCQkJVHJhZmZpY1ZvbHVtZU1lYXNTeXNJbmZvCQkJT1BUSU9OQUwsCgktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiBhbmQgaXQgc2hhbGwgYmUgaWdub3JlZCBieSB0aGUgVUUuCglkdW1teQkJVUUtSW50ZXJuYWxNZWFzdXJlbWVudFN5c0luZm8JCU9QVElPTkFMCn0KCk1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8tTENSLXI0LWV4dCA6Oj0JU0VRVUVOQ0UgewoJLS0gQ0hPSUNFIHVzZS1vZi1IQ1Mgc2hhbGwgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdXNlLW9mLUhDUwoJLS0gaW4gTWVhc3VyZW1lbnRDb250cm9sU3lzSW5mbwoJLS0gQ0hPSUNFIGNlbGxTZWxlY3RRdWFsaXR5TWVhc3VyZSByZXByZXNlbnRzIFBDQ1BDSC1SU0NQIGluIFRERCBtb2RlLgoJdXNlLW9mLUhDUwkJCQkJCQlDSE9JQ0UJewoJCWhjcy1ub3QtdXNlZCAJCQkJCVNFUVVFTkNFCXsKCQkJLS0gQ0hPSUNFIGNlbGxTZWxlY3RRdWFsaXR5TWVhc3VyZSBzaGFsbCBoYXZlIHRoZSBzYW1lIHZhbHVlIGFzIHRoZQoJCQktLSBjZWxsU2VsZWN0UXVhbGl0eU1lYXN1cmUgaW4gTWVhc3VyZW1lbnRDb250cm9sU3lzSW5mbwoJCQljZWxsU2VsZWN0UXVhbGl0eU1lYXN1cmUJQ0hPSUNFCXsKCQkJCWNwaWNoLVJTQ1AJCQkJU0VRVUVOQ0UJewoJCQkJCWludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mbwlJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tUlNDUC1MQ1ItcjQJT1BUSU9OQUwsCgkJCQkJaW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvCUludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1SU0NQLUxDUi1yNAlPUFRJT05BTAoJCQkJfSwKCQkJCWNwaWNoLUVjLU4wCQkJCVNFUVVFTkNFCXsKCQkJCQlpbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8JSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUVDTjAtTENSLXI0CU9QVElPTkFMLAoJCQkJCWludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mbwlJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMC1MQ1ItcjQJT1BUSU9OQUwKCQkJCX0KCQkJfQoJCX0sCgkJaGNzLXVzZWQJCQkJCQlTRVFVRU5DRQl7CgkJCS0tIENIT0lDRSBjZWxsU2VsZWN0UXVhbGl0eU1lYXN1cmUgc2hhbGwgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUKCQkJLS0gY2VsbFNlbGVjdFF1YWxpdHlNZWFzdXJlIGluIE1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8KCQkJY2VsbFNlbGVjdFF1YWxpdHlNZWFzdXJlCUNIT0lDRQl7CgkJCQljcGljaC1SU0NQCQkJCVNFUVVFTkNFCXsKCQkJCQlpbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8JSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1SU0NQLUxDUi1yNAlPUFRJT05BTCwKCQkJCQlpbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8JSW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1SU0NQLUxDUi1yNAlPUFRJT05BTAoJCQkJfSwKCQkJCWNwaWNoLUVjLU4wCQkJCVNFUVVFTkNFCXsKCQkJCQlpbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8JSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1FQ04wLUxDUi1yNAlPUFRJT05BTCwKCQkJCQlpbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8JSW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1FQ04wLUxDUi1yNAlPUFRJT05BTAoJCQkJfQoJCQl9CgkJfQoJfQp9CgpNZWFzdXJlbWVudElkZW50aXR5IDo6PQkJSU5URUdFUiAoMS4uMTYpCgpNZWFzdXJlbWVudFF1YW50aXR5R1NNIDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZ3NtLUNhcnJpZXJSU1NJLAoJCQkJCQkJCQkJZHVtbXkgfQoKTWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlIDo6PQkJU0VRVUVOQ0UgewoJbWVhc3VyZW1lbnRSZXBvcnRUcmFuc2Zlck1vZGUJCVRyYW5zZmVyTW9kZSwKCXBlcmlvZGljYWxPckV2ZW50VHJpZ2dlcgkJCVBlcmlvZGljYWxPckV2ZW50VHJpZ2dlcgp9CQoKTWVhc3VyZW1lbnRUeXBlIDo6PQkJCQkJQ0hPSUNFIHsKCWludHJhRnJlcXVlbmN5TWVhc3VyZW1lbnQJCQlJbnRyYUZyZXF1ZW5jeU1lYXN1cmVtZW50LAoJaW50ZXJGcmVxdWVuY3lNZWFzdXJlbWVudAkJCUludGVyRnJlcXVlbmN5TWVhc3VyZW1lbnQsCglpbnRlclJBVE1lYXN1cmVtZW50CQkJCQlJbnRlclJBVE1lYXN1cmVtZW50LAoJdWUtcG9zaXRpb25pbmctTWVhc3VyZW1lbnQJCQlVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudCwKCXRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudAkJCVRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudCwKCXF1YWxpdHlNZWFzdXJlbWVudAkJCQkJUXVhbGl0eU1lYXN1cmVtZW50LAoJdWUtSW50ZXJuYWxNZWFzdXJlbWVudAkJCQlVRS1JbnRlcm5hbE1lYXN1cmVtZW50Cn0KCk1lYXN1cmVtZW50VHlwZS1yNCA6Oj0JCQkJQ0hPSUNFIHsKCWludHJhRnJlcXVlbmN5TWVhc3VyZW1lbnQJCQlJbnRyYUZyZXF1ZW5jeU1lYXN1cmVtZW50LXI0LAoJaW50ZXJGcmVxdWVuY3lNZWFzdXJlbWVudAkJCUludGVyRnJlcXVlbmN5TWVhc3VyZW1lbnQtcjQsCglpbnRlclJBVE1lYXN1cmVtZW50CQkJCQlJbnRlclJBVE1lYXN1cmVtZW50LXI0LAoJdXAtTWVhc3VyZW1lbnQJCQkJCQlVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudC1yNCwKCXRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudAkJCVRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudCwKCXF1YWxpdHlNZWFzdXJlbWVudAkJCQkJUXVhbGl0eU1lYXN1cmVtZW50LAoJdWUtSW50ZXJuYWxNZWFzdXJlbWVudAkJCQlVRS1JbnRlcm5hbE1lYXN1cmVtZW50LXI0Cn0KCk1lYXN1cmVtZW50VHlwZS1yNiA6Oj0JCQkJQ0hPSUNFIHsKCWludHJhRnJlcXVlbmN5TWVhc3VyZW1lbnQJCQlJbnRyYUZyZXF1ZW5jeU1lYXN1cmVtZW50LXI2LAoJaW50ZXJGcmVxdWVuY3lNZWFzdXJlbWVudAkJCUludGVyRnJlcXVlbmN5TWVhc3VyZW1lbnQtcjYsCglpbnRlclJBVE1lYXN1cmVtZW50CQkJCQlJbnRlclJBVE1lYXN1cmVtZW50LXI2LAoJdXAtTWVhc3VyZW1lbnQJCQkJCQlVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudC1yNCwKCXRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudAkJCVRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudCwKCXF1YWxpdHlNZWFzdXJlbWVudAkJCQkJUXVhbGl0eU1lYXN1cmVtZW50LAoJdWUtSW50ZXJuYWxNZWFzdXJlbWVudAkJCQlVRS1JbnRlcm5hbE1lYXN1cmVtZW50LXI0Cn0KCk1lYXN1cmVtZW50VmFsaWRpdHkgOjo9CQkJCVNFUVVFTkNFIHsKCXVlLVN0YXRlCQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJCWNlbGwtRENILCBhbGwtQnV0LUNlbGwtRENILCBhbGwtU3RhdGVzIH0KfQoKTW9uaXRvcmVkQ2VsbFJBQ0gtTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4uOCkpIE9GCgkJCQkJCQkJCQlNb25pdG9yZWRDZWxsUkFDSC1SZXN1bHQKCk1vbml0b3JlZENlbGxSQUNILVJlc3VsdCA6Oj0JCVNFUVVFTkNFIHsKCXNmbi1TRk4tT2JzVGltZURpZmZlcmVuY2UJCQlTRk4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlCQkJT1BUSU9OQUwsCgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAoJCQltZWFzdXJlbWVudFF1YW50aXR5CQkJCQlDSE9JQ0UgewoJCQkJY3BpY2gtRWMtTjAJCQkJCQkJQ1BJQ0gtRWMtTjAsCgkJCQljcGljaC1SU0NQCQkJCQkJCUNQSUNILVJTQ1AsCgkJCQlwYXRobG9zcwkJCQkJCQlQYXRobG9zcywKCQkJCXNwYXJlCQkJCQkJCQlOVUxMCgkJCX0JCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJY2VsbFBhcmFtZXRlcnNJRAkJCQkJQ2VsbFBhcmFtZXRlcnNJRCwKCQkJcHJpbWFyeUNDUENILVJTQ1AJCQkJCVByaW1hcnlDQ1BDSC1SU0NQCgkJfQoJfQp9CgpNdWx0aXBhdGhJbmRpY2F0b3IgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbm0sCgkJCQkJCQkJCQlsb3csCgkJCQkJCQkJCQltZWRpdW0sCgkJCQkJCQkJCQloaWdoIH0KCk4tQ1ItVC1DUk1heEh5c3QgOjo9CQkJCVNFUVVFTkNFIHsKCW4tQ1IJCQkJCQkJCUlOVEVHRVIgKDEuLjE2KQkJCQkJCURFRkFVTFQgOCwKCXQtQ1JNYXhIeXN0CQkJCQkJCVQtQ1JNYXhIeXN0Cn0KCk5hdmlnYXRpb25Nb2RlbFNhdEluZm8gOjo9CQkJU0VRVUVOQ0UgewoJc2F0SUQJCQkJCQkJCVNhdElELAoJc2F0ZWxsaXRlU3RhdHVzCQkJCQkJU2F0ZWxsaXRlU3RhdHVzLAoJZXBoZW1lcmlzUGFyYW1ldGVyCQkJCQlFcGhlbWVyaXNQYXJhbWV0ZXIJCU9QVElPTkFMCn0KCk5hdmlnYXRpb25Nb2RlbFNhdEluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNhdCkpIE9GCgkJCQkJCQkJCQlOYXZpZ2F0aW9uTW9kZWxTYXRJbmZvCgpFcGhlbWVyaXNQYXJhbWV0ZXIgOjo9CQkJCQkJU0VRVUVOQ0UgewoJY29kZU9uTDIJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMikpLAoJdXJhSW5kZXgJCQkJCQkJQklUIFNUUklORyAoU0laRSAoNCkpLAoJc2F0SGVhbHRoCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDYpKSwKCWlvZGMJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEwKSksCglsMlBmbGFnCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxKSksCglzZjFSZXZkCQkJCQkJCQlTdWJGcmFtZTFSZXNlcnZlZCwKCXQtR0QJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKCXQtb2MJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCglhZjIJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCglhZjEJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpLAoJYWYwCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjIpKSwKCWMtcnMJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCglkZWx0YS1uCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpLAoJbTAJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzMikpLAoJYy11YwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKCWUJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzMikpLAoJYy11cwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKCWEtU3FydAkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKSwKCXQtb2UJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCglmaXRJbnRlcnZhbAkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxKSksCglhb2RvCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg1KSksCgljLWljCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpLAoJb21lZ2EwCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzMikpLAoJYy1pcwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKCWkwCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKSwKCWMtcmMJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCglvbWVnYQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKSwKCW9tZWdhRG90CQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI0KSksCglpRG90CQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNCkpCn0KTkMtTW9kZSA6Oj0JCQkJCQkJQklUIFNUUklORyAoU0laRSAoMykpCgpOZWlnaGJvdXIgOjo9CQkJCQkJU0VRVUVOQ0UgewoJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQluZWlnaGJvdXJJZGVudGl0eQkJCQkJUHJpbWFyeUNQSUNILUluZm8JCQkJCU9QVElPTkFMLAoJCQl1RS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUySW5mbwlVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUySW5mbwlPUFRJT05BTAoJCX0sCgkJdGRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCW5laWdoYm91ckFuZENoYW5uZWxJZGVudGl0eQkJQ2VsbEFuZENoYW5uZWxJZGVudGl0eQkJCQkJT1BUSU9OQUwKCQl9Cgl9LAkKCW5laWdoYm91clF1YWxpdHkJCQkJCU5laWdoYm91clF1YWxpdHksCglzZm4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlMgkJCVNGTi1TRk4tT2JzVGltZURpZmZlcmVuY2UyfQoKTmVpZ2hib3VyLXYzOTBleHQgOjo9CQkJCQkJU0VRVUVOQ0UgewoJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwoJCX0sCgkJdGRkCQkJCQkJCQlOVUxMCgl9Cn0KCk5laWdoYm91ckxpc3QgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJTmVpZ2hib3VyCgotLSBUaGUgb3JkZXIgb2YgdGhlIGNlbGxzIGluIElFIE5laWdoYm91ckxpc3QtdjM5MGV4dCBzaGFsbCBiZSB0aGUKLS0gc2FtZSBhcyB0aGUgb3JkZXIgaW4gSUUgTmVpZ2hib3VyTGlzdApOZWlnaGJvdXJMaXN0LXYzOTBleHQgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJTmVpZ2hib3VyLXYzOTBleHQKCk5laWdoYm91clF1YWxpdHkgOjo9CQkJCVNFUVVFTkNFIHsKCXVlLVBvc2l0aW9uaW5nLU9URE9BLVF1YWxpdHkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLVF1YWxpdHkKfQoKTmV3SW50ZXJGcmVxQ2VsbCA6Oj0JCQkJU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm8KfQoKTmV3SW50ZXJGcmVxQ2VsbC1yNCA6Oj0JCQkJU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm8tcjQKfQoKTmV3SW50ZXJGcmVxQ2VsbExpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGwKCk5ld0ludGVyRnJlcUNlbGxMaXN0LXI0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQlOZXdJbnRlckZyZXFDZWxsLXI0CgpOZXdJbnRlckZyZXFDZWxsU0ktUlNDUCA6Oj0JCQkJU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1SU0NQCn0KCk5ld0ludGVyRnJlcUNlbGxTSS1FQ04wIDo6PQkJCQlTRVFVRU5DRSB7CglpbnRlckZyZXFDZWxsSUQJCQkJCQlJbnRlckZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUVDTjAKfQoKTmV3SW50ZXJGcmVxQ2VsbFNJLUhDUy1SU0NQIDo6PQkJCQlTRVFVRU5DRSB7CglpbnRlckZyZXFDZWxsSUQJCQkJCQlJbnRlckZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUhDUy1SU0NQCn0KCk5ld0ludGVyRnJlcUNlbGxTSS1IQ1MtRUNOMCA6Oj0JCQkJU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1IQ1MtRUNOMAp9CgpOZXdJbnRlckZyZXFDZWxsU0ktUlNDUC1MQ1ItcjQgOjo9CQkJU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1SU0NQLUxDUi1yNAp9CgpOZXdJbnRlckZyZXFDZWxsU0ktRUNOMC1MQ1ItcjQgOjo9CQkJU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1FQ04wLUxDUi1yNAp9CgpOZXdJbnRlckZyZXFDZWxsU0ktSENTLVJTQ1AtTENSLXI0IDo6PQkJU0VRVUVOQ0UgewoJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1IQ1MtUlNDUC1MQ1ItcjQKfQoKTmV3SW50ZXJGcmVxQ2VsbFNJLUhDUy1FQ04wLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKCWludGVyRnJlcUNlbGxJRAkJCQkJCUludGVyRnJlcUNlbGxJRAkJCQkJCU9QVElPTkFMLAoJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktSENTLUVDTjAtTENSLXI0Cn0KCk5ld0ludGVyRnJlcUNlbGxTSS1MaXN0LUVDTjAgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGxTSS1FQ04wCgpOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1IQ1MtUlNDUCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUhDUy1SU0NQCgpOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1IQ1MtRUNOMCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUhDUy1FQ04wCgpOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1SU0NQIDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGxTSS1SU0NQCgpOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1FQ04wLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQlOZXdJbnRlckZyZXFDZWxsU0ktRUNOMC1MQ1ItcjQKCk5ld0ludGVyRnJlcUNlbGxTSS1MaXN0LUhDUy1SU0NQLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGxTSS1IQ1MtUlNDUC1MQ1ItcjQKCk5ld0ludGVyRnJlcUNlbGxTSS1MaXN0LUhDUy1FQ04wLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGxTSS1IQ1MtRUNOMC1MQ1ItcjQKCk5ld0ludGVyRnJlcUNlbGxTSS1MaXN0LVJTQ1AtTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGxTSS1SU0NQLUxDUi1yNAoKTmV3SW50ZXJSQVRDZWxsIDo6PQkJCQlTRVFVRU5DRSB7CglpbnRlclJBVENlbGxJRAkJCQkJCUludGVyUkFUQ2VsbElECQkJT1BUSU9OQUwsCgl0ZWNobm9sb2d5U3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CgkJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQljZWxsU2VsZWN0aW9uUmVzZWxlY3Rpb25JbmZvCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyCQlPUFRJT05BTCwKCQkJaW50ZXJSQVRDZWxsSW5kaXZpZHVhbE9mZnNldCAJCUludGVyUkFUQ2VsbEluZGl2aWR1YWxPZmZzZXQsCgkJCWJzaWMJCQkJCQkJCUJTSUMsCgkJCWZyZXF1ZW5jeS1iYW5kCQkJCQkJRnJlcXVlbmN5LUJhbmQsCgkJCWJjY2gtQVJGQ04JCQkJCQkJQkNDSC1BUkZDTiwKCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJCQlkdW1teQkJCQkJCQkJTlVMTAkJCQlPUFRJT05BTAoJCX0sCgkJaXMtMjAwMAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlpcy0yMDAwU3BlY2lmaWNNZWFzSW5mbwkJCQlJUy0yMDAwU3BlY2lmaWNNZWFzSW5mbwoJCX0sCgkJLS0gQVNOLjEgaW5jb25zaXN0ZW5jeTogTmV3SW50ZXJSQVRDZWxsTGlzdCBzaG91bGQgYmUgb3B0aW9uYWwgd2l0aGluCgkJLS0gSW50ZXJSQVRDZWxsSW5mb0xpc3QuIFRoZSBVRSBzaGFsbCBjb25zaWRlciBJRSBOZXdJbnRlclJBVENlbGwgd2l0aAoJCS0tIHRlY2hub2xvZ3lTcGVjaWZpY0luZm8gc2V0IHRvICJhYnNlbnQiIGFzIHZhbGlkIGFuZCBoYW5kbGUgdGhlCgkJLS0gbWVzc2FnZSBhcyBpZiB0aGUgSUUgTmV3SW50ZXJSQVRDZWxsIHdhcyBhYnNlbnQKCQlhYnNlbnQJCQkJCQkJCU5VTEwsCgkJc3BhcmUxCQkJCQkJCQlOVUxMCgl9Cn0KCk5ld0ludGVyUkFUQ2VsbC1CIDo6PQkJCQlTRVFVRU5DRSB7CglpbnRlclJBVENlbGxJRAkJCQkJCUludGVyUkFUQ2VsbElECQkJCU9QVElPTkFMLAoJdGVjaG5vbG9neVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCWdzbQkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJY2VsbFNlbGVjdGlvblJlc2VsZWN0aW9uSW5mbwkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMgkJT1BUSU9OQUwsCgkJCWludGVyUkFUQ2VsbEluZGl2aWR1YWxPZmZzZXQgCQlJbnRlclJBVENlbGxJbmRpdmlkdWFsT2Zmc2V0LAoJCQlic2ljCQkJCQkJCQlCU0lDLAoJCQlmcmVxdWVuY3ktYmFuZAkJCQkJCUZyZXF1ZW5jeS1CYW5kLAoJCQliY2NoLUFSRkNOCQkJCQkJCUJDQ0gtQVJGQ04sCgkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCQkJZHVtbXkJCQkJCQkJCU5VTEwJCQkJT1BUSU9OQUwKCQl9LAoJCWlzLTIwMDAJCQkJCQkJCVNFUVVFTkNFIHsKCQkJaXMtMjAwMFNwZWNpZmljTWVhc0luZm8JCQkJSVMtMjAwMFNwZWNpZmljTWVhc0luZm8KCQl9LAoJCS0tIEFTTi4xIGluY29uc2lzdGVuY3k6IE5ld0ludGVyUkFUQ2VsbExpc3QtQiBzaG91bGQgYmUgb3B0aW9uYWwgd2l0aGluCgkJLS0gSW50ZXJSQVRDZWxsSW5mb0xpc3QtQi4gVGhlIFVFIHNoYWxsIGNvbnNpZGVyIElFIE5ld0ludGVyUkFUQ2VsbC1CIHdpdGgKCQktLSB0ZWNobm9sb2d5U3BlY2lmaWNJbmZvIHNldCB0byAiYWJzZW50IiBhcyB2YWxpZCBhbmQgaGFuZGxlIHRoZQoJCS0tIG1lc3NhZ2UgYXMgaWYgdGhlIElFIE5ld0ludGVyUkFUQ2VsbC1CIHdhcyBhYnNlbnQKCQlhYnNlbnQJCQkJCQkJCU5VTEwsCgkJc3BhcmUxCQkJCQkJCQlOVUxMCgl9Cn0KCk5ld0ludGVyUkFUQ2VsbExpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCU5ld0ludGVyUkFUQ2VsbAoKTmV3SW50ZXJSQVRDZWxsTGlzdC1CIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQlOZXdJbnRlclJBVENlbGwtQgoKTmV3SW50cmFGcmVxQ2VsbCA6Oj0JCQkJU0VRVUVOQ0UgewoJaW50cmFGcmVxQ2VsbElECQkJCQkJSW50cmFGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCgljZWxsSW5mbwkJCQkJCQlDZWxsSW5mbwp9CgpOZXdJbnRyYUZyZXFDZWxsLXI0IDo6PQkJCQlTRVFVRU5DRSB7CglpbnRyYUZyZXFDZWxsSUQJCQkJCQlJbnRyYUZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvLXI0Cn0KCk5ld0ludHJhRnJlcUNlbGxMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQlOZXdJbnRyYUZyZXFDZWxsCgpOZXdJbnRyYUZyZXFDZWxsTGlzdC1yNCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJTmV3SW50cmFGcmVxQ2VsbC1yNAoKTmV3SW50cmFGcmVxQ2VsbFNJLVJTQ1AgOjo9CQkJCVNFUVVFTkNFIHsKCWludHJhRnJlcUNlbGxJRAkJCQkJCUludHJhRnJlcUNlbGxJRAkJCQkJCU9QVElPTkFMLAoJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1SU0NQCn0KCk5ld0ludHJhRnJlcUNlbGxTSS1FQ04wIDo6PQkJCVNFUVVFTkNFIHsKCWludHJhRnJlcUNlbGxJRAkJCQkJCUludHJhRnJlcUNlbGxJRAkJCQkJCU9QVElPTkFMLAoJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1FQ04wCn0KTmV3SW50cmFGcmVxQ2VsbFNJLUhDUy1SU0NQIDo6PQkJU0VRVUVOQ0UgewoJaW50cmFGcmVxQ2VsbElECQkJCQkJSW50cmFGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCgljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUhDUy1SU0NQCn0KCk5ld0ludHJhRnJlcUNlbGxTSS1IQ1MtRUNOMCA6Oj0JCVNFUVVFTkNFIHsKCWludHJhRnJlcUNlbGxJRAkJCQkJCUludHJhRnJlcUNlbGxJRAkJCQkJCU9QVElPTkFMLAoJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1IQ1MtRUNOMAp9CgpOZXdJbnRyYUZyZXFDZWxsU0ktUlNDUC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CglpbnRyYUZyZXFDZWxsSUQJCQkJCQlJbnRyYUZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktUlNDUC1MQ1ItcjQKfQoKTmV3SW50cmFGcmVxQ2VsbFNJLUVDTjAtTENSLXI0IDo6PQkJU0VRVUVOQ0UgewoJaW50cmFGcmVxQ2VsbElECQkJCQkJSW50cmFGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCgljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUVDTjAtTENSLXI0Cn0KTmV3SW50cmFGcmVxQ2VsbFNJLUhDUy1SU0NQLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgewoJaW50cmFGcmVxQ2VsbElECQkJCQkJSW50cmFGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCgljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUhDUy1SU0NQLUxDUi1yNAp9CgpOZXdJbnRyYUZyZXFDZWxsU0ktSENTLUVDTjAtTENSLXI0IDo6PQlTRVFVRU5DRSB7CglpbnRyYUZyZXFDZWxsSUQJCQkJCQlJbnRyYUZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktSENTLUVDTjAtTENSLXI0Cn0KCk5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LVJTQ1AgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJCU5ld0ludHJhRnJlcUNlbGxTSS1SU0NQCgpOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1FQ04wIDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCU5ld0ludHJhRnJlcUNlbGxTSS1FQ04wCgpOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1IQ1MtUlNDUCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCU5ld0ludHJhRnJlcUNlbGxTSS1IQ1MtUlNDUAoKTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtSENTLUVDTjAgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktSENTLUVDTjAKCk5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LVJTQ1AtTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktUlNDUC1MQ1ItcjQKCk5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LUVDTjAtTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCU5ld0ludHJhRnJlcUNlbGxTSS1FQ04wLUxDUi1yNAoKTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtSENTLVJTQ1AtTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUhDUy1SU0NQLUxDUi1yNAoKTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtSENTLUVDTjAtTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUhDUy1FQ04wLUxDUi1yNAoKCS0tIElFICJub25Vc2VkRnJlcVRocmVzaG9sZCIgaXMgbm90IG5lZWRlZCBpbiBjYXNlIG9mIGV2ZW50IDJhCgktLSBJbiBjYXNlIG9mIGV2ZW50IDJhIFVUUkFOIHNob3VsZCBpbmNsdWRlIHZhbHVlIDAgd2l0aGluIElFICJub25Vc2VkRnJlcVRocmVzaG9sZCIKCS0tIEluIGNhc2Ugb2YgZXZlbnQgMmEsIHRoZSBVRSBzaGFsbCBiZSBpZ25vcmUgSUUgIm5vblVzZWRGcmVxVGhyZXNob2xkIgoJLS0gSW4gbGF0ZXIgdmVyc2lvbnMgb2YgdGhlIG1lc3NhZ2UgaW5jbHVkaW5nIHRoaXMgSUUsIGEgc3BlY2lhbCB2ZXJzaW9uIG9mCgktLSBJRSAiTm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0IiBtYXkgYmUgZGVmaW5lZCBmb3IgZXZlbnQgMmEsIG5hbWVseSBhCgktLSB2ZXJzaW9uIG5vdCBpbmNsdWRpbmcgSUUgIm5vblVzZWRGcmVxVGhyZXNob2xkIgpOb25Vc2VkRnJlcVBhcmFtZXRlciA6Oj0JCQlTRVFVRU5DRSB7Cglub25Vc2VkRnJlcVRocmVzaG9sZAkJCQlUaHJlc2hvbGQsCglub25Vc2VkRnJlcVcJCQkJCQlXCn0KCk5vblVzZWRGcmVxUGFyYW1ldGVyLXI2IDo6PQkJCVNFUVVFTkNFIHsKCW5vblVzZWRGcmVxVGhyZXNob2xkCQkJCVRocmVzaG9sZC1yNiwKCW5vblVzZWRGcmVxVwkJCQkJCVcKfQoKTm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXEpKSBPRgoJCQkJCQkJCQkJTm9uVXNlZEZyZXFQYXJhbWV0ZXIKCk5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdC1yNiA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxKSkgT0YKCQkJCQkJCQkJCU5vblVzZWRGcmVxUGFyYW1ldGVyLXI2CgpOb25Vc2VkRnJlcVdMaXN0LXI2IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXEpKSBPRiBXCgpPYnNlcnZlZFRpbWVEaWZmZXJlbmNlVG9HU00gOjo9CQlJTlRFR0VSICgwLi40MDk1KQoKT1RET0EtU2VhcmNoV2luZG93U2l6ZSA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWMyMCwgYzQwLCBjODAsIGMxNjAsIGMzMjAsCgkJCQkJCQkJCQljNjQwLCBjMTI4MCwgbW9yZVRoYW4xMjgwIH0KCi0tIFNQQVJFOiBQYXRobG9zcywgTWF4ID0gMTU4Ci0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlClBhdGhsb3NzIDo6PQkJCQkJCUlOVEVHRVIgKDQ2Li4xNzMpCgpQZW5hbHR5VGltZS1SU0NQIDo6PQkJCQlDSE9JQ0UgewoJbm90VXNlZAkJCQkJCQkJTlVMTCwKCXB0MTAJCQkJCQkJCVRlbXBvcmFyeU9mZnNldDEsCglwdDIwCQkJCQkJCQlUZW1wb3JhcnlPZmZzZXQxLAoJcHQzMAkJCQkJCQkJVGVtcG9yYXJ5T2Zmc2V0MSwKCXB0NDAJCQkJCQkJCVRlbXBvcmFyeU9mZnNldDEsCglwdDUwCQkJCQkJCQlUZW1wb3JhcnlPZmZzZXQxLAoJcHQ2MAkJCQkJCQkJVGVtcG9yYXJ5T2Zmc2V0MQp9CgpQZW5hbHR5VGltZS1FQ04wIDo6PQkJCQlDSE9JQ0UgewoJbm90VXNlZAkJCQkJCQkJTlVMTCwKCXB0MTAJCQkJCQkJCVRlbXBvcmFyeU9mZnNldExpc3QsCglwdDIwCQkJCQkJCQlUZW1wb3JhcnlPZmZzZXRMaXN0LAoJcHQzMAkJCQkJCQkJVGVtcG9yYXJ5T2Zmc2V0TGlzdCwKCXB0NDAJCQkJCQkJCVRlbXBvcmFyeU9mZnNldExpc3QsCglwdDUwCQkJCQkJCQlUZW1wb3JhcnlPZmZzZXRMaXN0LAoJcHQ2MAkJCQkJCQkJVGVtcG9yYXJ5T2Zmc2V0TGlzdAp9CgpQZW5kaW5nVGltZUFmdGVyVHJpZ2dlciA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXB0YXQwLTI1LCBwdGF0MC01LCBwdGF0MSwKCQkJCQkJCQkJCXB0YXQyLCBwdGF0NCwgcHRhdDgsIHB0YXQxNiB9CgpQZXJpb2RpY2FsT3JFdmVudFRyaWdnZXIgOjo9CQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXBlcmlvZGljYWwsCgkJCQkJCQkJCQlldmVudFRyaWdnZXIgfQoKUGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhIDo6PQkJU0VRVUVOQ0UgewoJcmVwb3J0aW5nQW1vdW50CQkJCQkJUmVwb3J0aW5nQW1vdW50CQkJCQlERUZBVUxUIHJhLUluZmluaXR5LAoJcmVwb3J0aW5nSW50ZXJ2YWwJCQkJCVJlcG9ydGluZ0ludGVydmFsTG9uZwp9CgpQZXJpb2RpY2FsV2l0aFJlcG9ydGluZ0NlbGxTdGF0dXMgOjo9IFNFUVVFTkNFIHsKCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYSwKCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCn0KClBMTU5JZGVudGl0aWVzT2ZOZWlnaGJvdXJDZWxscyA6Oj0JU0VRVUVOQ0UgewoJCXBsbW5zT2ZJbnRyYUZyZXFDZWxsc0xpc3QJCVBMTU5zT2ZJbnRyYUZyZXFDZWxsc0xpc3QJCQlPUFRJT05BTCwKCQlwbG1uc09mSW50ZXJGcmVxQ2VsbHNMaXN0CQlQTE1Oc09mSW50ZXJGcmVxQ2VsbHNMaXN0CQkJT1BUSU9OQUwsCgkJcGxtbnNPZkludGVyUkFUQ2VsbHNMaXN0CQlQTE1Oc09mSW50ZXJSQVRDZWxsc0xpc3QJCQlPUFRJT05BTAp9CgpQTE1Oc09mSW50ZXJGcmVxQ2VsbHNMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQkJU0VRVUVOQ0UgewoJcGxtbi1JZGVudGl0eQkJCQkJCQkJUExNTi1JZGVudGl0eQkJCQlPUFRJT05BTAp9CgpQTE1Oc09mSW50cmFGcmVxQ2VsbHNMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQkJU0VRVUVOQ0UgewoJcGxtbi1JZGVudGl0eQkJCQkJCQkJUExNTi1JZGVudGl0eQkJCQlPUFRJT05BTAp9CgpQTE1Oc09mSW50ZXJSQVRDZWxsc0xpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCQlTRVFVRU5DRSB7CglwbG1uLUlkZW50aXR5CQkJCQkJCQlQTE1OLUlkZW50aXR5CQkJCU9QVElPTkFMCn0KClBvc2l0aW9uRXN0aW1hdGUgOjo9CQkJCUNIT0lDRSB7CgllbGxpcHNvaWRQb2ludAkJCQkJCUVsbGlwc29pZFBvaW50LAoJZWxsaXBzb2lkUG9pbnRVbmNlcnRDaXJjbGUJCQlFbGxpcHNvaWRQb2ludFVuY2VydENpcmNsZSwKCWVsbGlwc29pZFBvaW50VW5jZXJ0RWxsaXBzZQkJCUVsbGlwc29pZFBvaW50VW5jZXJ0RWxsaXBzZSwKCWVsbGlwc29pZFBvaW50QWx0aXR1ZGUJCQkJRWxsaXBzb2lkUG9pbnRBbHRpdHVkZSwKCWVsbGlwc29pZFBvaW50QWx0aXR1ZGVFbGxpcHNlCQlFbGxpcHNvaWRQb2ludEFsdGl0dWRlRWxsaXBzb2lkZQp9CgpQb3NpdGlvbmluZ01ldGhvZCA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlvdGRvYSwKCQkJCQkJCQkJCWdwcywKCQkJCQkJCQkJCW90ZG9hT3JHUFMsIGNlbGxJRCB9CgotLSBBY3R1YWwgdmFsdWUgUFJDID0gSUUgdmFsdWUgKiAwLjMyClBSQyA6Oj0JCQkJCQkJCUlOVEVHRVIgKC0yMDQ3Li4yMDQ3KQoKLS0gU1BBUkU6IFByaW1hcnlDQ1BDSC1SU0NQLCBNYXggPSA5MQotLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQpQcmltYXJ5Q0NQQ0gtUlNDUCA6Oj0JCQkJSU5URUdFUiAoMC4uMTI3KQoKUS1IQ1MgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjk5KQoKUS1PZmZzZXRTLU4gOjo9CQkJCQkJSU5URUdFUiAoLTUwLi41MCkKClEtUXVhbE1pbiA6Oj0JCQkJCQlJTlRFR0VSICgtMjQuLjApCgotLSBBY3R1YWwgdmFsdWUgUS1SeGxldk1pbiA9IChJRSB2YWx1ZSAqIDIpICsgMQpRLVJ4bGV2TWluIDo6PQkJCQkJCUlOVEVHRVIgKC01OC4uLTEzKQoKUXVhbGl0eUV2ZW50UmVzdWx0cyA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgoJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CgpRdWFsaXR5TWVhc3VyZWRSZXN1bHRzIDo6PQkJCVNFUVVFTkNFIHsKCWJsZXJNZWFzdXJlbWVudFJlc3VsdHNMaXN0CQkJQkxFUi1NZWFzdXJlbWVudFJlc3VsdHNMaXN0CQkJT1BUSU9OQUwsCgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCU5VTEwsCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlzaXItTWVhc3VyZW1lbnRSZXN1bHRzCQkJCVNJUi1NZWFzdXJlbWVudExpc3QJCQlPUFRJT05BTAoJCX0KCX0KfQoKUXVhbGl0eU1lYXN1cmVtZW50IDo6PQkJCQlTRVFVRU5DRSB7CglxdWFsaXR5UmVwb3J0aW5nUXVhbnRpdHkJCQlRdWFsaXR5UmVwb3J0aW5nUXVhbnRpdHkJCQlPUFRJT05BTCwKCXJlcG9ydENyaXRlcmlhCQkJCQkJUXVhbGl0eVJlcG9ydENyaXRlcmlhCn0KClF1YWxpdHlSZXBvcnRDcml0ZXJpYSA6Oj0JCQlDSE9JQ0UgewoJcXVhbGl0eVJlcG9ydGluZ0NyaXRlcmlhCQkJUXVhbGl0eVJlcG9ydGluZ0NyaXRlcmlhLAoJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhLAoJbm9SZXBvcnRpbmcJCQkJCQkJTlVMTAp9CgpRdWFsaXR5UmVwb3J0aW5nQ3JpdGVyaWEgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCgkJCQkJCQkJCQlRdWFsaXR5UmVwb3J0aW5nQ3JpdGVyaWFTaW5nbGUKClF1YWxpdHlSZXBvcnRpbmdDcml0ZXJpYVNpbmdsZSA6Oj0JU0VRVUVOQ0UgewoJdHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAoJdG90YWxDUkMJCQkJCQkJSU5URUdFUiAoMS4uNTEyKSwKCWJhZENSQwkJCQkJCQkJSU5URUdFUiAoMS4uNTEyKSwKCXBlbmRpbmdBZnRlclRyaWdnZXIJCQkJCUlOVEVHRVIgKDEuLjUxMikKfQoKUXVhbGl0eVJlcG9ydGluZ1F1YW50aXR5IDo6PQkJU0VRVUVOQ0UgewoJZGwtVHJhbnNDaEJMRVIJCQkJCQlCT09MRUFOLAoJYmxlci1kbC1UcmFuc0NoSWRMaXN0CQkJCUJMRVItVHJhbnNDaElkTGlzdAkJCQkJT1BUSU9OQUwsCgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCU5VTEwsCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlzaXItVEZDUy1MaXN0CQkJCQkJU0lSLVRGQ1MtTGlzdAkJCQlPUFRJT05BTAoJCX0KCX0KfQoKUkFULVR5cGUgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlnc20sIGlzMjAwMCB9CgpSZWZlcmVuY2VDZWxsUG9zaXRpb24gOjo9CQkJQ0hPSUNFIHsKCWVsbGlwc29pZFBvaW50CQkJCQkJRWxsaXBzb2lkUG9pbnQsCgllbGxpcHNvaWRQb2ludFdpdGhBbHRpdHVkZQkJCUVsbGlwc29pZFBvaW50QWx0aXR1ZGUKfQoKLS0gUmVmZXJlbmNlTG9jYXRpb24sIGFzIGRlZmluZWQgaW4gMjMuMDMyClJlZmVyZW5jZUxvY2F0aW9uIDo6PQkJCVNFUVVFTkNFIHsKCWVsbGlwc29pZFBvaW50QWx0aXR1ZGVFbGxpcHNvaWRlCQlFbGxpcHNvaWRQb2ludEFsdGl0dWRlRWxsaXBzb2lkZQp9CgpSZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbCA6Oj0gCUNIT0lDRSB7CgktLSBBY3R1YWwgdmFsdWUgYWNjdXJhY3k0MCA9IElFIHZhbHVlICogNDAKCWFjY3VyYWN5NDAJCQkJCQkJSU5URUdFUiAoMC4uOTYwKSwKCS0tIEFjdHVhbCB2YWx1ZSBhY2N1cmFjeTI1NiA9IElFIHZhbHVlICogMjU2CglhY2N1cmFjeTI1NgkJCQkJCQlJTlRFR0VSICgwLi4xNTApLAoJLS0gQWN0dWFsIHZhbHVlIGFjY3VyYWN5MjU2MCA9IElFIHZhbHVlICogMjU2MAoJYWNjdXJhY3kyNTYwCQkJCQkJSU5URUdFUiAoMC4uMTUpCn0KClJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdCA6Oj0JCUNIT0lDRSB7CglyZW1vdmVBbGxJbnRlckZyZXFDZWxscwkJCQlOVUxMLAoJcmVtb3ZlU29tZUludGVyRnJlcUNlbGxzCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCQlJbnRlckZyZXFDZWxsSUQsCglyZW1vdmVOb0ludGVyRnJlcUNlbGxzCQkJCU5VTEwKfQoKUmVtb3ZlZEludGVyUkFUQ2VsbExpc3QgOjo9CQlDSE9JQ0UgewoJcmVtb3ZlQWxsSW50ZXJSQVRDZWxscwkJCU5VTEwsCglyZW1vdmVTb21lSW50ZXJSQVRDZWxscwkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQkJSW50ZXJSQVRDZWxsSUQsCglyZW1vdmVOb0ludGVyUkFUQ2VsbHMJCQlOVUxMCn0KClJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdCA6Oj0JCUNIT0lDRSB7CglyZW1vdmVBbGxJbnRyYUZyZXFDZWxscwkJCQlOVUxMLAoJcmVtb3ZlU29tZUludHJhRnJlcUNlbGxzCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCQlJbnRyYUZyZXFDZWxsSUQsCglyZW1vdmVOb0ludHJhRnJlcUNlbGxzCQkJCU5VTEwKfQoKUmVwbGFjZW1lbnRBY3RpdmF0aW9uVGhyZXNob2xkIDo6PSAJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlub3RBcHBsaWNhYmxlLCB0MSwgdDIsCgkJCQkJCQkJCQl0MywgdDQsIHQ1LCB0NiwgdDcgfQoKUmVwb3J0RGVhY3RpdmF0aW9uVGhyZXNob2xkIDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlub3RBcHBsaWNhYmxlLCB0MSwgdDIsCgkJCQkJCQkJCQl0MywgdDQsIHQ1LCB0NiwgdDcgfQoKUmVwb3J0aW5nQW1vdW50IDo6PQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlyYTEsIHJhMiwgcmE0LCByYTgsIHJhMTYsIHJhMzIsCgkJCQkJCQkJCQlyYTY0LCByYS1JbmZpbml0eSB9CgpSZXBvcnRpbmdDZWxsU3RhdHVzIDo6PQkJCQlDSE9JQ0V7Cgl3aXRoaW5BY3RpdmVTZXQJCQkJCQlNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTEsCgl3aXRoaW5Nb25pdG9yZWRTZXRVc2VkRnJlcQkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMSwKCXdpdGhpbkFjdGl2ZUFuZE9yTW9uaXRvcmVkVXNlZEZyZXEJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUxLAoJd2l0aGluRGV0ZWN0ZWRTZXRVc2VkRnJlcQkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMSwKCXdpdGhpbk1vbml0b3JlZEFuZE9yRGV0ZWN0ZWRVc2VkRnJlcQoJCQkJCQkJCQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUxLAoJYWxsQWN0aXZlcGx1c01vbml0b3JlZFNldAkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMywKCWFsbEFjdGl2ZVBsdXNEZXRlY3RlZFNldAkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMywKCWFsbEFjdGl2ZVBsdXNNb25pdG9yZWRBbmRPckRldGVjdGVkU2V0CgkJCQkJCQkJCQlNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTMsCgl3aXRoaW5WaXJ0dWFsQWN0U2V0CQkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMSwKCXdpdGhpbk1vbml0b3JlZFNldE5vblVzZWRGcmVxCQlNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTEsCgl3aXRoaW5Nb25pdG9yZWRBbmRPclZpcnR1YWxBY3RpdmVTZXROb25Vc2VkRnJlcQoJCQkJCQkJCQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUxLAoJYWxsVmlydHVhbEFjdFNldHBsdXNNb25pdG9yZWRTZXROb25Vc2VkRnJlcQkKCQkJCQkJCQkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMywKCXdpdGhpbkFjdFNldE9yVmlydHVhbEFjdFNldC1JbnRlclJBVGNlbGxzCgkJCQkJCQkJCQlNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTIsCgl3aXRoaW5BY3RTZXRBbmRPck1vbml0b3JlZFVzZWRGcmVxT3JWaXJ0dWFsQWN0U2V0QW5kT3JNb25pdG9yZWROb25Vc2VkRnJlcQkKCQkJCQkJCQkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMgp9CgpSZXBvcnRpbmdDZWxsU3RhdHVzT3B0IDo6PQkJCVNFUVVFTkNFIHsKCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCn0KCgpSZXBvcnRpbmdJbmZvRm9yQ2VsbERDSCA6Oj0JCQlTRVFVRU5DRSB7CglpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5LAoJbWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJTWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlLAoJcmVwb3J0Q3JpdGVyaWEJCQkJCQlDZWxsRENILVJlcG9ydENyaXRlcmlhCn0KClJlcG9ydGluZ0luZm9Gb3JDZWxsRENILUxDUi1yNCA6Oj0JU0VRVUVOQ0UgewoJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eSwKCW1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZSwKCXJlcG9ydENyaXRlcmlhCQkJCQkJQ2VsbERDSC1SZXBvcnRDcml0ZXJpYS1MQ1ItcjQKfQoKUmVwb3J0aW5nSW50ZXJ2YWwgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbm9QZXJpb2RpY2FscmVwb3J0aW5nLCByaTAtMjUsIAoJCQkJCQkJCQkJcmkwLTUsIHJpMSwgcmkyLCByaTQsIHJpOCwgcmkxNiB9CgpSZXBvcnRpbmdJbnRlcnZhbExvbmcgOjo9CQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlyaWwwLCByaWwwLTI1LCByaWwwLTUsIHJpbDEsCgkJCQkJCQkJCQlyaWwyLCByaWwzLCByaWw0LCByaWw2LCByaWw4LAoJCQkJCQkJCQkJcmlsMTIsIHJpbDE2LCByaWwyMCwgcmlsMjQsCgkJCQkJCQkJCQlyaWwyOCwgcmlsMzIsIHJpbDY0IH0KCQkJCQkJCQkJLS0gV2hlbiB0aGUgdmFsdWUg0nJpbDDTIGlzIHVzZWQsIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90CgkJCQkJCQkJCS0tIGRlZmluZWQuCgotLSBBY3R1YWwgdmFsdWUgUmVwb3J0aW5nUmFuZ2UgPSBJRSB2YWx1ZSAqIDAuNQpSZXBvcnRpbmdSYW5nZSA6Oj0JCQkJCUlOVEVHRVIgKDAuLjI5KQoKUkwtQWRkaXRpb25JbmZvTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKCQkJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvCgpSTC1JbmZvcm1hdGlvbkxpc3RzIDo6PQkJCQlTRVFVRU5DRSB7CglybC1BZGRpdGlvbkluZm9MaXN0CQkJCQlSTC1BZGRpdGlvbkluZm9MaXN0CQkJCQlPUFRJT05BTCwKCXJMLVJlbW92YWxJbmZvcm1hdGlvbkxpc3QJCQlSTC1SZW1vdmFsSW5mb3JtYXRpb25MaXN0CQkJT1BUSU9OQUwKfQoKUkxDLUJ1ZmZlcnNQYXlsb2FkIDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXBsMCwgcGw0LCBwbDgsIHBsMTYsIHBsMzIsCgkJCQkJCQkJCQlwbDY0LCBwbDEyOCwgcGwyNTYsIHBsNTEyLCBwbDEwMjQsCgkJCQkJCQkJCQlwbDJrLCBwbDRrLCBwbDhrLCBwbDE2aywgcGwzMmssCgkJCQkJCQkJCQlwbDY0aywgcGwxMjhrLCBwbDI1NmssIHBsNTEyaywgcGwxMDI0aywKCQkJCQkJCQkJCXNwYXJlMTIsIHNwYXJlMTEsIHNwYXJlMTAsIHNwYXJlOSwgc3BhcmU4LAoJCQkJCQkJCQkJc3BhcmU3LCBzcGFyZTYsIHNwYXJlNSwgc3BhcmU0LCBzcGFyZTMsCgkJCQkJCQkJCQlzcGFyZTIsIHNwYXJlMSB9CgotLSBBY3R1YWwgdmFsdWUgUlJDID0gSUUgdmFsdWUgKiAwLjAzMgpSUkMgOjo9CQkJCQkJCQlJTlRFR0VSICgtMTI3Li4xMjcpCgpTYXREYXRhIDo6PQkJCQkJCQlTRVFVRU5DRXsKCXNhdElECQkJCQkJCQlTYXRJRCwKCWlvZGUJCQkJCQkJCUlPREUKfQoKU2F0RGF0YUxpc3QgOjo9CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDAuLm1heFNhdCkpIE9GCgkJCQkJCQkJCQlTYXREYXRhCgpTYXRlbGxpdGVTdGF0dXMgOjo9CQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCW5zLU5OLVUsCgkJCQkJCQkJCQllcy1TTiwKCQkJCQkJCQkJCWVzLU5OLVUsCgkJCQkJCQkJCQlyZXYyLAoJCQkJCQkJCQkJcmV2IH0KCi0tIElkZW50aWZpZXMgdGhlIHNhdGVsbGl0ZSBhbmQgaXMgZXF1YWwgdG8gKFNWIElEIE5vIC0gMSkgd2hlcmUgU1YgSUQgTm8gaXMgZGVmaW5lZCBpbiBbMTJdLgpTYXRJRCA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uNjMpCgpTRk4tT2Zmc2V0LVZhbGlkaXR5IDo6PQkJCUVOVU1FUkFURUQgeyBmYWxzZSB9CgpTRk4tU0ZOLURyaWZ0IDo6PSAJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJc2Zuc2ZuZHJpZnQwLCBzZm5zZm5kcmlmdDEsIHNmbnNmbmRyaWZ0MiwKCQkJCQkJCQkJCXNmbnNmbmRyaWZ0Mywgc2Zuc2ZuZHJpZnQ0LCBzZm5zZm5kcmlmdDUsCgkJCQkJCQkJCQlzZm5zZm5kcmlmdDgsIHNmbnNmbmRyaWZ0MTAsIHNmbnNmbmRyaWZ0MTUsCgkJCQkJCQkJCQlzZm5zZm5kcmlmdDI1LCBzZm5zZm5kcmlmdDM1LCBzZm5zZm5kcmlmdDUwLAoJCQkJCQkJCQkJc2Zuc2ZuZHJpZnQ2NSwgc2Zuc2ZuZHJpZnQ4MCwgc2Zuc2ZuZHJpZnQxMDAsCgkJCQkJCQkJCQlzZm5zZm5kcmlmdC0xLCBzZm5zZm5kcmlmdC0yLCBzZm5zZm5kcmlmdC0zLAoJCQkJCQkJCQkJc2Zuc2ZuZHJpZnQtNCwgc2Zuc2ZuZHJpZnQtNSwgc2Zuc2ZuZHJpZnQtOCwKCQkJCQkJCQkJCXNmbnNmbmRyaWZ0LTEwLCBzZm5zZm5kcmlmdC0xNSwgc2Zuc2ZuZHJpZnQtMjUsCgkJCQkJCQkJCQlzZm5zZm5kcmlmdC0zNSwgc2Zuc2ZuZHJpZnQtNTAsIHNmbnNmbmRyaWZ0LTY1LAoJCQkJCQkJCQkJc2Zuc2ZuZHJpZnQtODAsIHNmbnNmbmRyaWZ0LTEwMH0KClNGTi1TRk4tT2JzVGltZURpZmZlcmVuY2UgOjo9CQlDSE9JQ0UgewoJdHlwZTEJCQkJCQkJCVNGTi1TRk4tT2JzVGltZURpZmZlcmVuY2UxLAoJdHlwZTIJCQkJCQkJCVNGTi1TRk4tT2JzVGltZURpZmZlcmVuY2UyCn0KCi0tIFNQQVJFOiBTRk4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlMSwgTWF4ID0gOTgzMDM5OQotLSBGb3IgMS4yOE1jcHMgVERELCBNYXggdmFsdWUgb2YgU0ZOLVNGTi1PYnNUaW1lRGlmZmVyZW5jZTEgaXMgMzI3Njc5OS4KLS0gVmFsdWVzIGFib3ZlIE1heCBhcmUgc3BhcmUKU0ZOLVNGTi1PYnNUaW1lRGlmZmVyZW5jZTEgOjo9CQlJTlRFR0VSICgwLi4xNjc3NzIxNSkKCi0tIFNQQVJFOiBTRk4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlMiwgTWF4ID0gNDA5NjEKLS0gRm9yIDEuMjhNY3BzIFRERCwgTWF4IHZhbHVlIG9mIFNGTi1TRk4tT2JzVGltZURpZmZlcmVuY2UyIGlzIDI3NjQ5LgotLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQpTRk4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlMiA6Oj0JCUlOVEVHRVIgKDAuLjY1NTM1KQoKU0ZOLVNGTi1PVEQtVHlwZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlub1JlcG9ydCwKCQkJCQkJCQkJCXR5cGUxLAoJCQkJCQkJCQkJdHlwZTIgfQoKU0ZOLVNGTi1SZWxUaW1lRGlmZmVyZW5jZTEgOjo9CQlTRVFVRU5DRSB7CglzZm4tT2Zmc2V0CQkJCQkJCUlOVEVHRVIgKDAgLi4gNDA5NSksCglzZm4tc2ZuLVJlbHRpbWVkaWZmZXJlbmNlCQkJSU5URUdFUiAoMC4uIDM4Mzk5KQp9CgpTRk4tVE9XLVVuY2VydGFpbnR5IDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWxlc3NUaGFuMTAsCgkJCQkJCQkJCQltb3JlVGhhbjEwIH0KCgpTSVIgOjo9CQkJCQkJCQlJTlRFR0VSICgwLi42MykKCgpTSVItTWVhc3VyZW1lbnRMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q0NUckNIKSkgT0YKCQkJCQkJCQkJCVNJUi1NZWFzdXJlbWVudFJlc3VsdHMKCgpTSVItTWVhc3VyZW1lbnRSZXN1bHRzIDo6PQkJCVNFUVVFTkNFIHsKCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbiwKCXNpci1UaW1lc2xvdExpc3QJCQkJCVNJUi1UaW1lc2xvdExpc3QKfQoKU0lSLVRGQ1MgOjo9CQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCgoKU0lSLVRGQ1MtTGlzdCA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgoJCQkJCQkJCQkJU0lSLVRGQ1MKClNJUi1UaW1lc2xvdExpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUykpIE9GCgkJCQkJCQkJCQlTSVIKCi0tIFN1YkZyYW1lMVJlc2VydmVkLCByZXNlcnZlZCBiaXRzIGluIHN1YmZyYW1lIDEgb2YgdGhlIEdQUyBuYXZpZ2F0aW9uIG1lc3NhZ2UKU3ViRnJhbWUxUmVzZXJ2ZWQgOjo9IAkJCQlTRVFVRU5DRSB7CiAJcmVzZXJ2ZWQxCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIzKSksCglyZXNlcnZlZDIJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjQpKSwKCXJlc2VydmVkMwkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAoJcmVzZXJ2ZWQ0CQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSkKfQoKVC1BRFZpbmZvIDo6PQkJCQkJCVNFUVVFTkNFIHsKCQkJCXQtQURWCQkJCQlJTlRFR0VSKDAuLjIwNDcpLAoJCQkJc2ZuCQkJCQkJSU5URUdFUigwLi40MDk1KQp9CgpULUNSTWF4IDo6PQkJCQkJCQlDSE9JQ0UgewoJbm90VXNlZAkJCQkJCQkJTlVMTCwKCXQzMAkJCQkJCQkJCU4tQ1ItVC1DUk1heEh5c3QsCgl0NjAJCQkJCQkJCQlOLUNSLVQtQ1JNYXhIeXN0LAoJdDEyMAkJCQkJCQkJTi1DUi1ULUNSTWF4SHlzdCwKCXQxODAJCQkJCQkJCU4tQ1ItVC1DUk1heEh5c3QsCgl0MjQwCQkJCQkJCQlOLUNSLVQtQ1JNYXhIeXN0Cn0KClQtQ1JNYXhIeXN0IDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbm90VXNlZCwgdDEwLCB0MjAsIHQzMCwKCQkJCQkJCQkJCXQ0MCwgdDUwLCB0NjAsIHQ3MCB9CgpUZW1wb3JhcnlPZmZzZXQxIDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXRvMywgdG82LCB0bzksIHRvMTIsIHRvMTUsCgkJCQkJCQkJCQl0bzE4LCB0bzIxLCBpbmZpbml0ZSB9CgpUZW1wb3JhcnlPZmZzZXQyIDo6PQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXRvMiwgdG8zLCB0bzQsIHRvNiwgdG84LAoJCQkJCQkJCQkJdG8xMCwgdG8xMiwgaW5maW5pdGUgfQoKVGVtcG9yYXJ5T2Zmc2V0TGlzdCA6Oj0JCQkJU0VRVUVOQ0UgCXsKCQl0ZW1wb3JhcnlPZmZzZXQxIAkJCQlUZW1wb3JhcnlPZmZzZXQxLAoJCXRlbXBvcmFyeU9mZnNldDIgCQkJCVRlbXBvcmFyeU9mZnNldDIKfQoKVGhyZXNob2xkIDo6PQkJCQkJCUlOVEVHRVIgKC0xMTUuLjApCgpUaHJlc2hvbGQtcjYgOjo9CQkJCQkJCUlOVEVHRVIgKC0xMjAuLjApCgotLSBUaGUgb3JkZXIgb2YgdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIG9yZGVyIG9mIGZyZXF1ZW5jeSBkZWZpbmVkIGluIEludGVyLUZyZXFFdmVudENyaXRlcmlhClRocmVob2xkTm9uVXNlZEZyZXF1ZW5jeS1kZWx0YUxpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxKSkgT0YKCQkJCQkJCQkJCQlEZWx0YVJTQ1BQZXJDZWxsCgpUaHJlc2hvbGRQb3NpdGlvbkNoYW5nZSA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXBjMTAsIHBjMjAsIHBjMzAsIHBjNDAsIHBjNTAsCgkJCQkJCQkJCQlwYzEwMCwgcGMyMDAsIHBjMzAwLCBwYzUwMCwKCQkJCQkJCQkJCXBjMTAwMCwgcGMyMDAwLCBwYzUwMDAsIHBjMTAwMDAsCgkJCQkJCQkJCQlwYzIwMDAwLCBwYzUwMDAwLCBwYzEwMDAwMCB9CgpUaHJlc2hvbGRTRk4tR1BTLVRPVyA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCW1zMSwgbXMyLCBtczMsIG1zNSwgbXMxMCwKCQkJCQkJCQkJCW1zMjAsIG1zNTAsIG1zMTAwIH0KClRocmVzaG9sZFNGTi1TRk4tQ2hhbmdlIDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJYzAtMjUsIGMwLTUsIGMxLCBjMiwgYzMsIGM0LCBjNSwKCQkJCQkJCQkJCWMxMCwgYzIwLCBjNTAsIGMxMDAsIGMyMDAsIGM1MDAsCgkJCQkJCQkJCQljMTAwMCwgYzIwMDAsIGM1MDAwIH0KClRocmVzaG9sZFVzZWRGcmVxdWVuY3kgOjo9CQkJSU5URUdFUiAoLTExNS4uMTY1KQoKVGhyZXNob2xkVXNlZEZyZXF1ZW5jeS1yNiA6Oj0JCUlOVEVHRVIgKC0xMjAuLjE2NSkKCi0tIEFjdHVhbCB2YWx1ZSBUaW1lSW50ZXJ2YWwgPSBJRSB2YWx1ZSAqIDIwLgpUaW1lSW50ZXJ2YWwgOjo9CQkJCQlJTlRFR0VSICgxLi4xMykKCgpUaW1lc2xvdEluZm8gOjo9CQkJCQlTRVFVRU5DRSB7Cgl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLAoJYnVyc3RUeXBlCQkJCQkJCUJ1cnN0VHlwZQp9CgpUaW1lc2xvdEluZm8tTENSLXI0IDo6PQkJCQlTRVFVRU5DRSB7Cgl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLUxDUi1yNAp9CgpUaW1lc2xvdEluZm9MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMpKSBPRgoJCQkJCQkJCQkJVGltZXNsb3RJbmZvCgpUaW1lc2xvdEluZm9MaXN0LUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtTENSKSkgT0YKCQkJCQkJCQkJCVRpbWVzbG90SW5mby1MQ1ItcjQKClRpbWVzbG90SW5mb0xpc3QtcjQgOjo9CQkJCUNIT0lDRSB7CgktLSB0aGUgY2hvaWNlIGZvciA3LjY4IE1jcHMgVEREIGlzIHRoZSBzYW1lIGFzIGZvciAzLjg0IE1jcHMgVEREIC0tCgl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUykpIE9GCgkJCQkJCQkJCQkJVGltZXNsb3RJbmZvLAoJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtTENSKSkgT0YKCQkJCQkJCQkJCQlUaW1lc2xvdEluZm8tTENSLXI0Cn0KCi0tIFNQQVJFOiBUaW1lc2xvdElTQ1AsIE1heCA9IDkxCi0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlClRpbWVzbG90SVNDUCA6Oj0JCQkJCUlOVEVHRVIgKDAuLjEyNykKCgotLSBUaW1lc2xvdElTQ1AtTGlzdCBzaGFsbCBub3QgaW5jbHVkZSBtb3JlIHRoYW4gNiBlbGVtZW50cyBpbiAxLjI4TWNwcyBUREQgbW9kZS4KVGltZXNsb3RJU0NQLUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUykpIE9GCgkJCQkJCQkJCQlUaW1lc2xvdElTQ1AKClRpbWVzbG90TGlzdFdpdGhJU0NQIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUykpIE9GCgkJCQkJCQkJCQlUaW1lc2xvdFdpdGhJU0NQCgpUaW1lc2xvdFdpdGhJU0NQIDo6PQkJCQlTRVFVRU5DRSB7Cgl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlciwKCXRpbWVzbG90SVNDUAkJCQkJCVRpbWVzbG90SVNDUAp9CgpUaW1lVG9UcmlnZ2VyIDo6PQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQl0dHQwLCB0dHQxMCwgdHR0MjAsIHR0dDQwLCB0dHQ2MCwKCQkJCQkJCQkJCXR0dDgwLCB0dHQxMDAsIHR0dDEyMCwgdHR0MTYwLAoJCQkJCQkJCQkJdHR0MjAwLCB0dHQyNDAsIHR0MzIwLCB0dHQ2NDAsCgkJCQkJCQkJCQl0dHQxMjgwLCB0dHQyNTYwLCB0dHQ1MDAwIH0KClRyYWZmaWNWb2x1bWVFdmVudFBhcmFtIDo6PQkJCVNFUVVFTkNFIHsKCWV2ZW50SUQJCQkJCQkJCVRyYWZmaWNWb2x1bWVFdmVudFR5cGUsCglyZXBvcnRpbmdUaHJlc2hvbGQJCQkJCVRyYWZmaWNWb2x1bWVUaHJlc2hvbGQsCgl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlcgkJCQkJCU9QVElPTkFMLAoJcGVuZGluZ1RpbWVBZnRlclRyaWdnZXIJCQkJUGVuZGluZ1RpbWVBZnRlclRyaWdnZXIJCQkJT1BUSU9OQUwsCgl0eC1JbnRlcnJ1cHRpb25BZnRlclRyaWdnZXIJCQlUWC1JbnRlcnJ1cHRpb25BZnRlclRyaWdnZXIJCQlPUFRJT05BTAp9CgpUcmFmZmljVm9sdW1lRXZlbnRSZXN1bHRzIDo6PQkJU0VRVUVOQ0UgewoJdWwtdHJhbnNwb3J0Q2hhbm5lbENhdXNpbmdFdmVudAkJVUwtVHJDSC1JZGVudGl0eSwKCXRyYWZmaWNWb2x1bWVFdmVudElkZW50aXR5CQkJVHJhZmZpY1ZvbHVtZUV2ZW50VHlwZQp9CgpUcmFmZmljVm9sdW1lRXZlbnRUeXBlIDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJZTRhLAoJCQkJCQkJCQkJZTRiIH0KClRyYWZmaWNWb2x1bWVNZWFzUXVhbnRpdHkgOjo9CQlDSE9JQ0UgewoJcmxjLUJ1ZmZlclBheWxvYWQJCQkJCU5VTEwsCglhdmVyYWdlUkxDLUJ1ZmZlclBheWxvYWQJCQlUaW1lSW50ZXJ2YWwsCgl2YXJpYW5jZU9mUkxDLUJ1ZmZlclBheWxvYWQJCQlUaW1lSW50ZXJ2YWwKfQoKVHJhZmZpY1ZvbHVtZU1lYXNTeXNJbmZvIDo6PQkJU0VRVUVOQ0UgewoJdHJhZmZpY1ZvbHVtZU1lYXN1cmVtZW50SUQJCQlNZWFzdXJlbWVudElkZW50aXR5CQkJREVGQVVMVCA0LAoJdHJhZmZpY1ZvbHVtZU1lYXN1cmVtZW50T2JqZWN0TGlzdAlUcmFmZmljVm9sdW1lTWVhc3VyZW1lbnRPYmplY3RMaXN0CU9QVElPTkFMLAoJdHJhZmZpY1ZvbHVtZU1lYXNRdWFudGl0eQkJCVRyYWZmaWNWb2x1bWVNZWFzUXVhbnRpdHkJCQlPUFRJT05BTCwKCXRyYWZmaWNWb2x1bWVSZXBvcnRpbmdRdWFudGl0eQkJVHJhZmZpY1ZvbHVtZVJlcG9ydGluZ1F1YW50aXR5CQlPUFRJT05BTCwKCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KCWR1bW15CQkJCQkJCQlUcmFmZmljVm9sdW1lUmVwb3J0aW5nQ3JpdGVyaWEJCU9QVElPTkFMLAoJbWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJTWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJT1BUSU9OQUwsCgltZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUsCglyZXBvcnRDcml0ZXJpYVN5c0luZgkJCQlUcmFmZmljVm9sdW1lUmVwb3J0Q3JpdGVyaWFTeXNJbmZvCgp9CgpUcmFmZmljVm9sdW1lTWVhc3VyZWRSZXN1bHRzIDo6PQlTRVFVRU5DRSB7CglyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKCXJsYy1CdWZmZXJzUGF5bG9hZAkJCQkJUkxDLUJ1ZmZlcnNQYXlsb2FkCQkJCQlPUFRJT05BTCwKCWF2ZXJhZ2VSTEMtQnVmZmVyUGF5bG9hZAkJCUF2ZXJhZ2VSTEMtQnVmZmVyUGF5bG9hZAkJCU9QVElPTkFMLAoJdmFyaWFuY2VPZlJMQy1CdWZmZXJQYXlsb2FkCQkJVmFyaWFuY2VPZlJMQy1CdWZmZXJQYXlsb2FkCQkJT1BUSU9OQUwKfQoKVHJhZmZpY1ZvbHVtZU1lYXN1cmVkUmVzdWx0c0xpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhSQikpIE9GCgkJCQkJCQkJCQlUcmFmZmljVm9sdW1lTWVhc3VyZWRSZXN1bHRzCgpUcmFmZmljVm9sdW1lTWVhc3VyZW1lbnQgOjo9IAkJU0VRVUVOQ0UgewoJdHJhZmZpY1ZvbHVtZU1lYXN1cmVtZW50T2JqZWN0TGlzdAlUcmFmZmljVm9sdW1lTWVhc3VyZW1lbnRPYmplY3RMaXN0CU9QVElPTkFMLAoJdHJhZmZpY1ZvbHVtZU1lYXNRdWFudGl0eQkJCVRyYWZmaWNWb2x1bWVNZWFzUXVhbnRpdHkJCQlPUFRJT05BTCwKCXRyYWZmaWNWb2x1bWVSZXBvcnRpbmdRdWFudGl0eQkJVHJhZmZpY1ZvbHVtZVJlcG9ydGluZ1F1YW50aXR5CQlPUFRJT05BTCwKCW1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU9QVElPTkFMLAoJcmVwb3J0Q3JpdGVyaWEJCQkJCQlUcmFmZmljVm9sdW1lUmVwb3J0Q3JpdGVyaWEKfQoKVHJhZmZpY1ZvbHVtZU1lYXN1cmVtZW50T2JqZWN0TGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgoJCQkJCQkJCQkJCVVMLVRyQ0gtSWRlbnRpdHkKClRyYWZmaWNWb2x1bWVSZXBvcnRDcml0ZXJpYSA6Oj0JCUNIT0lDRSB7Cgl0cmFmZmljVm9sdW1lUmVwb3J0aW5nQ3JpdGVyaWEJCVRyYWZmaWNWb2x1bWVSZXBvcnRpbmdDcml0ZXJpYSwKCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYSwKCW5vUmVwb3J0aW5nCQkJCQkJCU5VTEwKfQoKVHJhZmZpY1ZvbHVtZVJlcG9ydENyaXRlcmlhU3lzSW5mbyA6Oj0JQ0hPSUNFIHsKCXRyYWZmaWNWb2x1bWVSZXBvcnRpbmdDcml0ZXJpYQkJVHJhZmZpY1ZvbHVtZVJlcG9ydGluZ0NyaXRlcmlhLAoJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCn0KClRyYWZmaWNWb2x1bWVSZXBvcnRpbmdDcml0ZXJpYSA6Oj0gU0VRVUVOQ0UgewoJLS0gTk9URTogdHJhbnNDaENyaXRlcmlhTGlzdCBzaG91bGQgYmUgbWFuZGF0b3J5IGluIGxhdGVyIHZlcnNpb25zIG9mIHRoaXMgbWVzc2FnZQoJdHJhbnNDaENyaXRlcmlhTGlzdAkJCQkJVHJhbnNDaENyaXRlcmlhTGlzdAkJCQkJT1BUSU9OQUwKfQoKVHJhZmZpY1ZvbHVtZVJlcG9ydGluZ1F1YW50aXR5IDo6PSBTRVFVRU5DRSB7CglybGMtUkItQnVmZmVyUGF5bG9hZAkJCQlCT09MRUFOLAoJcmxjLVJCLUJ1ZmZlclBheWxvYWRBdmVyYWdlCQkJQk9PTEVBTiwKCXJsYy1SQi1CdWZmZXJQYXlsb2FkVmFyaWFuY2UJCUJPT0xFQU4KfQoKVHJhZmZpY1ZvbHVtZVRocmVzaG9sZCA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCXRoOCwgdGgxNiwgdGgzMiwgdGg2NCwgdGgxMjgsCgkJCQkJCQkJCQl0aDI1NiwgdGg1MTIsIHRoMTAyNCwgdGgyaywgdGgzaywgCgkJCQkJCQkJCQl0aDRrLCB0aDZrLCB0aDhrLCB0aDEyaywgdGgxNmssIAoJCQkJCQkJCQkJdGgyNGssIHRoMzJrLCB0aDQ4aywgdGg2NGssIHRoOTZrLCAKCQkJCQkJCQkJCXRoMTI4aywgdGgxOTJrLCB0aDI1NmssIHRoMzg0aywgCgkJCQkJCQkJCQl0aDUxMmssIHRoNzY4ayB9CgpUcmFuc0NoQ3JpdGVyaWEgOjo9CQkJCQlTRVFVRU5DRSB7Cgl1bC10cmFuc3BvcnRDaGFubmVsSUQJCQkJVUwtVHJDSC1JZGVudGl0eQkJCQkJT1BUSU9OQUwsCglldmVudFNwZWNpZmljUGFyYW1ldGVycwkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc1BhckV2ZW50KSkgT0YgCgkJCQkJCQkJCQkJVHJhZmZpY1ZvbHVtZUV2ZW50UGFyYW0JCQlPUFRJT05BTAp9CgpUcmFuc0NoQ3JpdGVyaWFMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKCQkJCQkJCQkJCVRyYW5zQ2hDcml0ZXJpYQoKVHJhbnNmZXJNb2RlIDo6PQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlhY2tub3dsZWRnZWRNb2RlUkxDLAoJCQkJCQkJCQkJdW5hY2tub3dsZWRnZWRNb2RlUkxDIH0KClRyYW5zbWl0dGVkUG93ZXJUaHJlc2hvbGQgOjo9CQlJTlRFR0VSICgtNTAuLjMzKQoKVHJpZ2dlcmluZ0NvbmRpdGlvbjEgOjo9CQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlhY3RpdmVTZXRDZWxsc09ubHksCgkJCQkJCQkJCQltb25pdG9yZWRTZXRDZWxsc09ubHksCgkJCQkJCQkJCQlhY3RpdmVTZXRBbmRNb25pdG9yZWRTZXRDZWxscyB9CgpUcmlnZ2VyaW5nQ29uZGl0aW9uMiA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWFjdGl2ZVNldENlbGxzT25seSwKCQkJCQkJCQkJCW1vbml0b3JlZFNldENlbGxzT25seSwKCQkJCQkJCQkJCWFjdGl2ZVNldEFuZE1vbml0b3JlZFNldENlbGxzLAoJCQkJCQkJCQkJZGV0ZWN0ZWRTZXRDZWxsc09ubHksCgkJCQkJCQkJCQlkZXRlY3RlZFNldEFuZE1vbml0b3JlZFNldENlbGxzIH0KClRYLUludGVycnVwdGlvbkFmdGVyVHJpZ2dlciA6Oj0JCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdHhpYXQwLTI1LCB0eGlhdDAtNSwgdHhpYXQxLAoJCQkJCQkJCQkJdHhpYXQyLCB0eGlhdDQsIHR4aWF0OCwgdHhpYXQxNiB9CgpVRFJFIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWxlc3NUaGFuMSwKCQkJCQkJCQkJCWJldHdlZW4xLWFuZC00LAoJCQkJCQkJCQkJYmV0d2VlbjQtYW5kLTgsCgkJCQkJCQkJCQlvdmVyOCB9CgpVRS02QUItRXZlbnQgOjo9CQkJCQlTRVFVRU5DRSB7Cgl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKCXRyYW5zbWl0dGVkUG93ZXJUaHJlc2hvbGQJCQlUcmFuc21pdHRlZFBvd2VyVGhyZXNob2xkCn0KClVFLTZGRy1FdmVudCA6Oj0JCQkJCVNFUVVFTkNFIHsKCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAoJLS0gaW4gMS4yOCBNY3BzIFRERCB1ZS1SWC1UWC1UaW1lRGlmZmVyZW5jZVRocmVzaG9sZCBjb3JyZXNwb25kcyB0byBUQURWIFRocmVzaG9sZAoJdWUtUlgtVFgtVGltZURpZmZlcmVuY2VUaHJlc2hvbGQJVUUtUlgtVFgtVGltZURpZmZlcmVuY2VUaHJlc2hvbGQKfQoKLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAotLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgpVRS1BdXRvbm9tb3VzVXBkYXRlTW9kZSA6Oj0JCQlDSE9JQ0UgewoJZHVtbXkJCQkJCQkJCU5VTEwsCglvbldpdGhOb1JlcG9ydGluZwkJCQkJTlVMTCwKCWR1bW15MgkJCQkJCQkJUkwtSW5mb3JtYXRpb25MaXN0cyAKfQoKVUUtSW50ZXJuYWxFdmVudFBhcmFtIDo6PQkJCUNIT0lDRSB7CglldmVudDZhCQkJCQkJCQlVRS02QUItRXZlbnQsCglldmVudDZiCQkJCQkJCQlVRS02QUItRXZlbnQsCglldmVudDZjCQkJCQkJCQlUaW1lVG9UcmlnZ2VyLAoJZXZlbnQ2ZAkJCQkJCQkJVGltZVRvVHJpZ2dlciwKCWV2ZW50NmUJCQkJCQkJCVRpbWVUb1RyaWdnZXIsCglldmVudDZmCQkJCQkJCQlVRS02RkctRXZlbnQsCglldmVudDZnCQkJCQkJCQlVRS02RkctRXZlbnQKfQoKVUUtSW50ZXJuYWxFdmVudFBhcmFtTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzRXZlbnQpKSBPRgoJCQkJCQkJCQkJVUUtSW50ZXJuYWxFdmVudFBhcmFtCgpVRS1JbnRlcm5hbEV2ZW50UmVzdWx0cyA6Oj0JCQlDSE9JQ0UgewoJZXZlbnQ2YQkJCQkJCQkJTlVMTCwKCWV2ZW50NmIJCQkJCQkJCU5VTEwsCglldmVudDZjCQkJCQkJCQlOVUxMLAoJZXZlbnQ2ZAkJCQkJCQkJTlVMTCwKCWV2ZW50NmUJCQkJCQkJCU5VTEwsCglldmVudDZmCQkJCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKCWV2ZW50NmcJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvLAoJc3BhcmUJCQkJCQkJCU5VTEwKfQoKVUUtSW50ZXJuYWxNZWFzUXVhbnRpdHkgOjo9CQkJU0VRVUVOQ0UgewoJbWVhc3VyZW1lbnRRdWFudGl0eQkJCQkJVUUtTWVhc3VyZW1lbnRRdWFudGl0eSwKCWZpbHRlckNvZWZmaWNpZW50CQkJCQlGaWx0ZXJDb2VmZmljaWVudAkJCQkJREVGQVVMVCBmYzAKfQoKVUUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMgOjo9CQlTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdWUtVHJhbnNtaXR0ZWRQb3dlckZERAkJCQlVRS1UcmFuc21pdHRlZFBvd2VyCQkJT1BUSU9OQUwsCgkJCXVlLVJYLVRYLVJlcG9ydEVudHJ5TGlzdAkJCVVFLVJYLVRYLVJlcG9ydEVudHJ5TGlzdAlPUFRJT05BTAoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQl1ZS1UcmFuc21pdHRlZFBvd2VyVERELUxpc3QJCQlVRS1UcmFuc21pdHRlZFBvd2VyVERELUxpc3QJT1BUSU9OQUwsCgkJCWFwcGxpZWRUQQkJCQkJCQlVTC1UaW1pbmdBZHZhbmNlCQkJT1BUSU9OQUwKCQl9Cgl9Cn0KClVFLUludGVybmFsTWVhc3VyZWRSZXN1bHRzLXI3IDo6PQkJU0VRVUVOQ0UgewoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXVlLVRyYW5zbWl0dGVkUG93ZXJGREQJCQkJVUUtVHJhbnNtaXR0ZWRQb3dlcgkJCU9QVElPTkFMLAoJCQl1ZS1SWC1UWC1SZXBvcnRFbnRyeUxpc3QJCQlVRS1SWC1UWC1SZXBvcnRFbnRyeUxpc3QJT1BUSU9OQUwKCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdWUtVHJhbnNtaXR0ZWRQb3dlclRERC1MaXN0CQkJVUUtVHJhbnNtaXR0ZWRQb3dlclRERC1MaXN0CU9QVElPTkFMLAoJCQlhcHBsaWVkVEEJCQkJCQkJVUwtVGltaW5nQWR2YW5jZS1WSENSCQlPUFRJT05BTAoJCX0KCX0KfQoKVUUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMtTENSLXI0IDo6PQlTRVFVRU5DRSB7CgkJdWUtVHJhbnNtaXR0ZWRQb3dlclRERC1MaXN0CQkJVUUtVHJhbnNtaXR0ZWRQb3dlclRERC1MaXN0CQlPUFRJT05BTCwKCQl0LUFEVmluZm8JCQkJCQkJVC1BRFZpbmZvCQkJCQkJT1BUSU9OQUwKfQoKVUUtSW50ZXJuYWxNZWFzdXJlbWVudCA6Oj0JCQlTRVFVRU5DRSB7Cgl1ZS1JbnRlcm5hbE1lYXNRdWFudGl0eQkJCQlVRS1JbnRlcm5hbE1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKCXVlLUludGVybmFsUmVwb3J0aW5nUXVhbnRpdHkJCVVFLUludGVybmFsUmVwb3J0aW5nUXVhbnRpdHkJCU9QVElPTkFMLAoJcmVwb3J0Q3JpdGVyaWEJCQkJCQlVRS1JbnRlcm5hbFJlcG9ydENyaXRlcmlhCn0KClVFLUludGVybmFsTWVhc3VyZW1lbnQtcjQgOjo9CQlTRVFVRU5DRSB7Cgl1ZS1JbnRlcm5hbE1lYXNRdWFudGl0eQkJCQlVRS1JbnRlcm5hbE1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKCXVlLUludGVybmFsUmVwb3J0aW5nUXVhbnRpdHkJCVVFLUludGVybmFsUmVwb3J0aW5nUXVhbnRpdHktcjQJCU9QVElPTkFMLAoJcmVwb3J0Q3JpdGVyaWEJCQkJCQlVRS1JbnRlcm5hbFJlcG9ydENyaXRlcmlhCn0KClVFLUludGVybmFsTWVhc3VyZW1lbnRTeXNJbmZvIDo6PSAJU0VRVUVOQ0UgewoJdWUtSW50ZXJuYWxNZWFzdXJlbWVudElECQkJTWVhc3VyZW1lbnRJZGVudGl0eQkJCURFRkFVTFQgNSwKCXVlLUludGVybmFsTWVhc1F1YW50aXR5CQkJCVVFLUludGVybmFsTWVhc1F1YW50aXR5Cn0KClVFLUludGVybmFsUmVwb3J0Q3JpdGVyaWEgOjo9CQlDSE9JQ0UgewoJdWUtSW50ZXJuYWxSZXBvcnRpbmdDcml0ZXJpYQkJVUUtSW50ZXJuYWxSZXBvcnRpbmdDcml0ZXJpYSwKCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYSwKCW5vUmVwb3J0aW5nCQkJCQkJCU5VTEwKfQoKVUUtSW50ZXJuYWxSZXBvcnRpbmdDcml0ZXJpYSA6Oj0JU0VRVUVOQ0UgewoJdWUtSW50ZXJuYWxFdmVudFBhcmFtTGlzdAkJCVVFLUludGVybmFsRXZlbnRQYXJhbUxpc3QJCQlPUFRJT05BTAp9CgpVRS1JbnRlcm5hbFJlcG9ydGluZ1F1YW50aXR5IDo6PQlTRVFVRU5DRSB7Cgl1ZS1UcmFuc21pdHRlZFBvd2VyCQkJCQlCT09MRUFOLAoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXVlLVJYLVRYLVRpbWVEaWZmZXJlbmNlCQkJCUJPT0xFQU4KCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJYXBwbGllZFRBCQkJCQkJCUJPT0xFQU4KCQl9Cgl9Cn0KClVFLUludGVybmFsUmVwb3J0aW5nUXVhbnRpdHktcjQgOjo9CVNFUVVFTkNFIHsKCXVlLVRyYW5zbWl0dGVkUG93ZXIJCQkJCUJPT0xFQU4sCgltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdWUtUlgtVFgtVGltZURpZmZlcmVuY2UJCQkJQk9PTEVBTgoJCX0sCgkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKCQkJLS0gYXBwbGllZFRBIGFwcGxpZXMgdG8gYm90aCAzLjg0IE1jcHMgVEREIGFuZCB0byA3LjY4IE1jcHMgVERELgoJCQktLSBUaGVyZWZvcmUsIG5vIGFkZGl0aW9uYWwgY2hvaWNlIG9mIFRERCBtb2RlIGlzIG5lY2Vzc2FyeQoJCQkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQkJYXBwbGllZFRBCQkJCQkJCUJPT0xFQU4KCQkJCX0sCgkJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQl0LUFEVmluZm8JCQkJCQkJQk9PTEVBTgoJCQkJfQoJCQl9CgkJfQoJfQp9CgotLSBUQUJVTEFSOiBVRS1NZWFzdXJlbWVudFF1YW50aXR5LCBmb3IgMy44NCBNY3BzIFRERCBvbmx5IHRoZSBmaXJzdCB0d28gdmFsdWVzCi0tIHVlLVRyYW5zbWl0dGVkUG93ZXIgYW5kIHV0cmEtQ2Fycmllci1SU1NJIGFyZSB1c2VkLgotLSBGb3IgMS4yOCBNY3BzIFRERCB1ZS1SWC1UWC1UaW1lRGlmZmVyZW5jZSBjb3JyZXNwb25kcyB0byBULUFEViBpbiB0aGUgdGFidWxhcgpVRS1NZWFzdXJlbWVudFF1YW50aXR5IDo6PQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdWUtVHJhbnNtaXR0ZWRQb3dlciwKCQkJCQkJCQkJCXV0cmEtQ2Fycmllci1SU1NJLAoJCQkJCQkJCQkJdWUtUlgtVFgtVGltZURpZmZlcmVuY2UgfQoKVUUtUlgtVFgtUmVwb3J0RW50cnkgOjo9CQkJU0VRVUVOQ0UgewoJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAoJdWUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMQkJVUUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMQp9CgpVRS1SWC1UWC1SZXBvcnRFbnRyeUxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgoJCQkJCQkJCQkJVUUtUlgtVFgtUmVwb3J0RW50cnkKCi0tIFNQQVJFOiBVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUxLCBNYXggPSAxMjgwCi0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlClVFLVJYLVRYLVRpbWVEaWZmZXJlbmNlVHlwZTEgOjo9CQkJSU5URUdFUiAoNzY4Li4xNzkxKQoKClVFLVJYLVRYLVRpbWVEaWZmZXJlbmNlVHlwZTIgOjo9CUlOVEVHRVIgKDAuLjgxOTEpCgpVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUySW5mbyA6Oj0JU0VRVUVOQ0UgewoJdWUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMgkJCVVFLVJYLVRYLVRpbWVEaWZmZXJlbmNlVHlwZTIsCgluZWlnaGJvdXJRdWFsaXR5CQkJCQkJTmVpZ2hib3VyUXVhbGl0eQp9CgotLSBJbiAxLjI4IE1jcHMgVERELCBhY3R1YWwgdmFsdWUgZm9yCi0tIFQtQURWIFRocmVzaG9sZCA9IChVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVRocmVzaG9sZCAtIDc2OCkgKiAwLjEyNQpVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVRocmVzaG9sZCA6Oj0gSU5URUdFUiAoNzY4Li4xMjgwKQoKVUUtVHJhbnNtaXR0ZWRQb3dlciA6Oj0JCQkJSU5URUdFUiAoMC4uMTA0KQoKVUUtVHJhbnNtaXR0ZWRQb3dlclRERC1MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTKSkgT0YKCQkJCQkJCQkJCVVFLVRyYW5zbWl0dGVkUG93ZXIKClVMLVRyQ0gtSWRlbnRpdHkgOjo9CQkJCQlDSE9JQ0V7CglkY2gJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCgktLSBOb3RlOiB0aGUgcmVmZXJlbmNlIHRvIENQQ0ggaW4gdGhlIGVsZW1lbnQgbmFtZSBiZWxvdyBpcyBpbmNvcnJlY3QuIFRoZSBuYW1lIGlzIG5vdCBjaGFuZ2VkCgktLSB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCBSOTkuCglyYWNob3JjcGNoCQkJCQkJCU5VTEwsCgl1c2NoCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKfQoKVUUtUG9zaXRpb25pbmctQWNjdXJhY3kgOjo9CQkJCQlCSVQgU1RSSU5HIChTSVpFICg3KSkKCgpVRS1Qb3NpdGlvbmluZy1DaXBoZXJQYXJhbWV0ZXJzIDo6PQkJCVNFUVVFTkNFIHsKCWNpcGhlcmluZ0tleUZsYWcJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEpKSwKCWNpcGhlcmluZ1NlcmlhbE51bWJlcgkJCQlJTlRFR0VSICgwLi42NTUzNSkKfQoKVUUtUG9zaXRpb25pbmctRXJyb3IgOjo9CQkJCQkJU0VRVUVOQ0UgewoJZXJyb3JSZWFzb24JCQkJCQkJVUUtUG9zaXRpb25pbmctRXJyb3JDYXVzZSwKCXVlLXBvc2l0aW9uaW5nLUdQUy1hZGRpdGlvbmFsQXNzaXN0YW5jZURhdGFSZXF1ZXN0CQkJVUUtUG9zaXRpb25pbmctR1BTLUFkZGl0aW9uYWxBc3Npc3RhbmNlRGF0YVJlcXVlc3QJT1BUSU9OQUwKfQoKVUUtUG9zaXRpb25pbmctRXJyb3JDYXVzZSA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbm90RW5vdWdoT1RET0EtQ2VsbHMsCgkJCQkJCQkJCQlub3RFbm91Z2hHUFMtU2F0ZWxsaXRlcywKCQkJCQkJCQkJCWFzc2lzdGFuY2VEYXRhTWlzc2luZywKCQkJCQkJCQkJCW5vdEFjY29tcGxpc2hlZEdQUy1UaW1pbmdPZkNlbGxGcmFtZXMsCgkJCQkJCQkJCQl1bmRlZmluZWRFcnJvciwKCQkJCQkJCQkJCXJlcXVlc3REZW5pZWRCeVVzZXIsCgkJCQkJCQkJCQlub3RQcm9jZXNzZWRBbmRUaW1lb3V0LAoJCQkJCQkJCQkJcmVmZXJlbmNlQ2VsbE5vdFNlcnZpbmdDZWxsIH0KClVFLVBvc2l0aW9uaW5nLUV2ZW50UGFyYW0gOjo9CQkJCQlTRVFVRU5DRSB7CglyZXBvcnRpbmdBbW91bnQJCQkJCQlSZXBvcnRpbmdBbW91bnQsCglyZXBvcnRGaXJzdEZpeAkJCQkJCUJPT0xFQU4sCgltZWFzdXJlbWVudEludGVydmFsCQkJCQlVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudEludGVydmFsLAoJZXZlbnRTcGVjaWZpY0luZm8JCQkJCVVFLVBvc2l0aW9uaW5nLUV2ZW50U3BlY2lmaWNJbmZvCn0KClVFLVBvc2l0aW9uaW5nLUV2ZW50UGFyYW1MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc0V2ZW50KSkgT0YKCQkJCQkJCQkJCVVFLVBvc2l0aW9uaW5nLUV2ZW50UGFyYW0KClVFLVBvc2l0aW9uaW5nLUV2ZW50U3BlY2lmaWNJbmZvIDo6PQkJCUNIT0lDRSB7CgllN2EJCQkJCQkJCQlUaHJlc2hvbGRQb3NpdGlvbkNoYW5nZSwKCWU3YgkJCQkJCQkJCVRocmVzaG9sZFNGTi1TRk4tQ2hhbmdlLAoJZTdjCQkJCQkJCQkJVGhyZXNob2xkU0ZOLUdQUy1UT1cKfQoKVUUtUG9zaXRpb25pbmctR1BTLUFjcXVpc2l0aW9uQXNzaXN0YW5jZSA6Oj0JU0VRVUVOQ0UgewoJZ3BzLVJlZmVyZW5jZVRpbWUJCQkJCUlOVEVHRVIgKDAuLjYwNDc5OTk5OSksCgl1dHJhbi1HUFNSZWZlcmVuY2VUaW1lCQkJCVVUUkFOLUdQU1JlZmVyZW5jZVRpbWUJCQlPUFRJT05BTCwKCXNhdGVsbGl0ZUluZm9ybWF0aW9uTGlzdAkJCUFjcXVpc2l0aW9uU2F0SW5mb0xpc3QKfQoKVUUtUG9zaXRpb25pbmctR1BTLUFkZGl0aW9uYWxBc3Npc3RhbmNlRGF0YVJlcXVlc3QgOjo9CQlTRVFVRU5DRSB7CglhbG1hbmFjUmVxdWVzdAkJCQkJCUJPT0xFQU4sCgl1dGNNb2RlbFJlcXVlc3QJCQkJCQlCT09MRUFOLAoJaW9ub3NwaGVyaWNNb2RlbFJlcXVlc3QJCQkJQk9PTEVBTiwKCW5hdmlnYXRpb25Nb2RlbFJlcXVlc3QJCQkJQk9PTEVBTiwKCWRncHNDb3JyZWN0aW9uc1JlcXVlc3QJCQkJQk9PTEVBTiwKCXJlZmVyZW5jZUxvY2F0aW9uUmVxdWVzdAkJCUJPT0xFQU4sCglyZWZlcmVuY2VUaW1lUmVxdWVzdAkJCQlCT09MRUFOLAoJYXF1aXNpdGlvbkFzc2lzdGFuY2VSZXF1ZXN0CQkJQk9PTEVBTiwKCXJlYWxUaW1lSW50ZWdyaXR5UmVxdWVzdAkJCUJPT0xFQU4sCgluYXZNb2RlbEFkZERhdGFSZXF1ZXN0CQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1OYXZNb2RlbEFkZERhdGFSZXEJCU9QVElPTkFMCn0KClVFLVBvc2l0aW9uaW5nLUdQUy1BbG1hbmFjIDo6PQkJCQkJU0VRVUVOQ0UgewoJd24tYQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAoJYWxtYW5hY1NhdEluZm9MaXN0CQkJCQlBbG1hbmFjU2F0SW5mb0xpc3QsCglzdi1HbG9iYWxIZWFsdGgJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzNjQpKQkJCQlPUFRJT05BTAp9CgpVRS1Qb3NpdGlvbmluZy1HUFMtQXNzaXN0YW5jZURhdGEgOjo9CQkJU0VRVUVOQ0UgewoJdWUtcG9zaXRpb25pbmctR1BTLVJlZmVyZW5jZVRpbWUJCQkJVUUtUG9zaXRpb25pbmctR1BTLVJlZmVyZW5jZVRpbWUJCQkJT1BUSU9OQUwsCgl1ZS1wb3NpdGlvbmluZy1HUFMtUmVmZXJlbmNlTG9jYXRpb24JCQlSZWZlcmVuY2VMb2NhdGlvbgkJCQlPUFRJT05BTCwKCXVlLXBvc2l0aW9uaW5nLUdQUy1ER1BTLUNvcnJlY3Rpb25zCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1ER1BTLUNvcnJlY3Rpb25zCQkJCU9QVElPTkFMLAoJdWUtcG9zaXRpb25pbmctR1BTLU5hdmlnYXRpb25Nb2RlbAkJCQlVRS1Qb3NpdGlvbmluZy1HUFMtTmF2aWdhdGlvbk1vZGVsCQkJCU9QVElPTkFMLAoJdWUtcG9zaXRpb25pbmctR1BTLUlvbm9zcGhlcmljTW9kZWwJCQkJVUUtUG9zaXRpb25pbmctR1BTLUlvbm9zcGhlcmljTW9kZWwJCQkJT1BUSU9OQUwsCgl1ZS1wb3NpdGlvbmluZy1HUFMtVVRDLU1vZGVsCQkJCQlVRS1Qb3NpdGlvbmluZy1HUFMtVVRDLU1vZGVsCQkJCQlPUFRJT05BTCwKCXVlLXBvc2l0aW9uaW5nLUdQUy1BbG1hbmFjCQkJCQkJVUUtUG9zaXRpb25pbmctR1BTLUFsbWFuYWMJCQkJCQlPUFRJT05BTCwKCXVlLXBvc2l0aW9uaW5nLUdQUy1BY3F1aXNpdGlvbkFzc2lzdGFuY2UJCVVFLVBvc2l0aW9uaW5nLUdQUy1BY3F1aXNpdGlvbkFzc2lzdGFuY2UJCU9QVElPTkFMLAoJdWUtcG9zaXRpb25pbmctR1BTLVJlYWwtdGltZUludGVncml0eQkJCUJhZFNhdExpc3QJCQkJCQkJT1BUSU9OQUwsCgktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAoJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoJZHVtbXkJCQlVRS1Qb3NpdGlvbmluZy1HUFMtUmVmZXJlbmNlQ2VsbEluZm8JCU9QVElPTkFMCn0KClVFLVBvc2l0aW9uaW5nLUdQUy1ER1BTLUNvcnJlY3Rpb25zIDo6PQkJU0VRVUVOQ0UgewoJZ3BzLVRPVwkJCQkJCQkJSU5URUdFUiAoMC4uNjA0Nzk5KSwKCXN0YXR1c0hlYWx0aAkJCQkJCURpZmZDb3JyZWN0aW9uU3RhdHVzLAoJZGdwcy1Db3JyZWN0aW9uU2F0SW5mb0xpc3QJCQlER1BTLUNvcnJlY3Rpb25TYXRJbmZvTGlzdAp9CgpVRS1Qb3NpdGlvbmluZy1HUFMtSW9ub3NwaGVyaWNNb2RlbCA6Oj0JCVNFUVVFTkNFIHsKCWFsZmEwCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCglhbGZhMQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAoJYWxmYTIJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKCWFsZmEzCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCgliZXRhMAkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAoJYmV0YTEJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKCWJldGEyCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCgliZXRhMwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpCn0KClVFLVBvc2l0aW9uaW5nLUdQUy1NZWFzdXJlbWVudFJlc3VsdHMgOjo9CQlTRVFVRU5DRSB7CglyZWZlcmVuY2VUaW1lCQkJCQkJQ0hPSUNFIHsKCQl1dHJhbi1HUFNSZWZlcmVuY2VUaW1lUmVzdWx0CQlVVFJBTi1HUFNSZWZlcmVuY2VUaW1lUmVzdWx0LAoJCWdwcy1SZWZlcmVuY2VUaW1lT25seQkJCQlJTlRFR0VSICgwLi42MDQ3OTk5OTkpCgl9LAoJZ3BzLU1lYXN1cmVtZW50UGFyYW1MaXN0CQkJR1BTLU1lYXN1cmVtZW50UGFyYW1MaXN0Cn0KClVFLVBvc2l0aW9uaW5nLUdQUy1OYXZpZ2F0aW9uTW9kZWwgOjo9CQkJU0VRVUVOQ0UgewoJbmF2aWdhdGlvbk1vZGVsU2F0SW5mb0xpc3QJCQlOYXZpZ2F0aW9uTW9kZWxTYXRJbmZvTGlzdAp9CgpVRS1Qb3NpdGlvbmluZy1HUFMtTmF2TW9kZWxBZGREYXRhUmVxIDo6PQkJU0VRVUVOQ0UgewoJZ3BzLVdlZWsJCQkJCQkJSU5URUdFUiAoMC4uMTAyMyksCgktLSBTUEFSRTogZ3BzLVRvZSwgTWF4ID0gMTY3CgktLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQoJZ3BzLVRvZQkJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKCS0tIFNQQVJFOiB0VG9lTGltaXQsIE1heCA9IDEwCgktLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQoJdFRvZUxpbWl0CQkJCQkJCUlOVEVHRVIgKDAuLjE1KSwKCXNhdERhdGFMaXN0CQkJCQkJCVNhdERhdGFMaXN0Cn0KClVFLVBvc2l0aW9uaW5nLUdQUy1SZWZlcmVuY2VDZWxsSW5mbyA6Oj0JCVNFUVVFTkNFewoJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlyZWZlcmVuY2VJZGVudGl0eQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwoJCX0sCgkJdGRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXJlZmVyZW5jZUlkZW50aXR5CQkJCUNlbGxQYXJhbWV0ZXJzSUQKCQl9Cgl9Cn0KClVFLVBvc2l0aW9uaW5nLUdQUy1SZWZlcmVuY2VUaW1lIDo6PQkJCVNFUVVFTkNFIHsKCWdwcy1XZWVrCQkJCQkJCUlOVEVHRVIgKDAuLjEwMjMpLAoJZ3BzLXRvdy0xbXNlYwkJCQkJCUdQUy1UT1ctMW1zZWMsCXV0cmFuLUdQU1JlZmVyZW5jZVRpbWUJCQkJVVRSQU4tR1BTUmVmZXJlbmNlVGltZQkJCQlPUFRJT05BTCwKCXNmbi10b3ctVW5jZXJ0YWludHkJCQkJCVNGTi1UT1ctVW5jZXJ0YWludHkJCQkJCU9QVElPTkFMLAoJdXRyYW4tR1BTLURyaWZ0UmF0ZQkJCQkJVVRSQU4tR1BTLURyaWZ0UmF0ZQkJCQkJT1BUSU9OQUwsCglncHMtVE9XLUFzc2lzdExpc3QJCQkJCUdQUy1UT1ctQXNzaXN0TGlzdAkJCQkJT1BUSU9OQUwKfQoKVUUtUG9zaXRpb25pbmctR1BTLVVUQy1Nb2RlbCA6Oj0JCQkJU0VRVUVOQ0UgewoJYTEJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAoJYTAJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzMikpLAoJdC1vdAkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAoJd24tdAkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAoJZGVsdGEtdC1MUwkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCgl3bi1sc2YJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKCWRuCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAoJZGVsdGEtdC1MU0YJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpCn0KClVFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycyA6Oj0JCQkJU0VRVUVOQ0UgewoJaXAtU3BhY2luZwkJCQkJCQlJUC1TcGFjaW5nLAoJaXAtTGVuZ3RoCQkJCQkJCUlQLUxlbmd0aCwKCWlwLU9mZnNldAkJCQkJCQlJTlRFR0VSICgwLi45KSwKCXNlZWQJCQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKCWJ1cnN0TW9kZVBhcmFtZXRlcnMJCQkJCUJ1cnN0TW9kZVBhcmFtZXRlcnMgCQlPUFRJT05BTAp9CgpVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMtcjQgOjo9CQkJU0VRVUVOQ0UgewoJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWlwLVNwYWNpbmcJCQkJCQkJSVAtU3BhY2luZywKCQkJaXAtTGVuZ3RoCQkJCQkJCUlQLUxlbmd0aCwKCQkJaXAtT2Zmc2V0CQkJCQkJCUlOVEVHRVIgKDAuLjkpLAoJCQlzZWVkCQkJCQkJCQlJTlRFR0VSICgwLi42MykKCQl9LAoJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJaXAtU3BhY2luZy1UREQJCQkJCQlJUC1TcGFjaW5nLVRERCwKCQkJaXAtc2xvdAkJCQkJCQkJSU5URUdFUiAoMC4uMTQpLAoJCQlpcC1TdGFydAkJCQkJCQlJTlRFR0VSICgwLi40MDk1KSwKCQkJaXAtUENDUENHCQkJCQkJCUlQLVBDQ1BDSC1yNAkJCU9QVElPTkFMCgkJfQoJfSwKCWJ1cnN0TW9kZVBhcmFtZXRlcnMJCQkJCUJ1cnN0TW9kZVBhcmFtZXRlcnMJCQkJT1BUSU9OQUwKfQoKVUUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzLVRERC1yNC1leHQgOjo9CVNFUVVFTkNFIHsKCWlwLVNwYWNpbmcJCQkJCQkJSVAtU3BhY2luZy1UREQsCglpcC1zbG90CQkJCQkJCQlJTlRFR0VSICgwLi4xNCksCglpcC1TdGFydAkJCQkJCQlJTlRFR0VSICgwLi40MDk1KSwKCWlwLVBDQ1BDRwkJCQkJCQlJUC1QQ0NQQ0gtcjQJCQkJCU9QVElPTkFMLAoJYnVyc3RNb2RlUGFyYW1ldGVycwkJCQkJQnVyc3RNb2RlUGFyYW1ldGVycwp9CgpVRS1Qb3NpdGlvbmluZy1NZWFzdXJlZFJlc3VsdHMgOjo9CQkJCVNFUVVFTkNFIHsKCXVlLXBvc2l0aW9uaW5nLU9URE9BLU1lYXN1cmVtZW50CQkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU1lYXN1cmVtZW50CQkJCU9QVElPTkFMLAoJdWUtcG9zaXRpb25pbmctUG9zaXRpb25Fc3RpbWF0ZUluZm8JCQkJVUUtUG9zaXRpb25pbmctUG9zaXRpb25Fc3RpbWF0ZUluZm8JCQkJCQlPUFRJT05BTCwKCXVlLXBvc2l0aW9uaW5nLUdQUy1NZWFzdXJlbWVudAkJCQkJVUUtUG9zaXRpb25pbmctR1BTLU1lYXN1cmVtZW50UmVzdWx0cwkJCQkJT1BUSU9OQUwsCgl1ZS1wb3NpdGlvbmluZy1FcnJvcgkJCQkJCQlVRS1Qb3NpdGlvbmluZy1FcnJvcgkJCQkJCQlPUFRJT05BTAp9CgpVRS1Qb3NpdGlvbmluZy1NZWFzdXJlZFJlc3VsdHMtdjM5MGV4dCA6Oj0JCVNFUVVFTkNFIHsKCXVlLVBvc2l0aW9uaW5nLU9URE9BLU1lYXN1cmVtZW50LXYzOTBleHQJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU1lYXN1cmVtZW50LXYzOTBleHQKfQoKVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQgOjo9CQkJCQlTRVFVRU5DRSB7Cgl1ZS1wb3NpdGlvbmluZy1SZXBvcnRpbmdRdWFudGl0eQkJCQlVRS1Qb3NpdGlvbmluZy1SZXBvcnRpbmdRdWFudGl0eSwKCXJlcG9ydENyaXRlcmlhCQkJCQkJVUUtUG9zaXRpb25pbmctUmVwb3J0Q3JpdGVyaWEsCgl1ZS1wb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YQkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhCQkJT1BUSU9OQUwsCgl1ZS1wb3NpdGlvbmluZy1HUFMtQXNzaXN0YW5jZURhdGEJCQkJVUUtUG9zaXRpb25pbmctR1BTLUFzc2lzdGFuY2VEYXRhCQkJCU9QVElPTkFMCn0KClVFLVBvc2l0aW9uaW5nLU1lYXN1cmVtZW50LXYzOTBleHQgOjo9CSAJCVNFUVVFTkNFIHsKCXVlLXBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5LXYzOTBleHQJCVVFLVBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5LXYzOTBleHQJCQlPUFRJT05BTCwKCW1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU9QVElPTkFMLAoJdWUtcG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtVUVCCQkJVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtVUVCCQkKCU9QVElPTkFMCn0KClVFLVBvc2l0aW9uaW5nLU1lYXN1cmVtZW50LXI0IDo6PQkJCQlTRVFVRU5DRSB7Cgl1ZS1wb3NpdGlvbmluZy1SZXBvcnRpbmdRdWFudGl0eQkJCQlVRS1Qb3NpdGlvbmluZy1SZXBvcnRpbmdRdWFudGl0eS1yNCwKCW1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCQkJCU1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCQlPUFRJT05BTCwKCXJlcG9ydENyaXRlcmlhCQkJCQkJCQkJVUUtUG9zaXRpb25pbmctUmVwb3J0Q3JpdGVyaWEsCgl1ZS1wb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YQkJCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1yNAkJCU9QVElPTkFMLAoJdWUtcG9zaXRpb25pbmctR1BTLUFzc2lzdGFuY2VEYXRhCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1Bc3Npc3RhbmNlRGF0YQkJCQlPUFRJT05BTAp9CgpVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudC12N3h5ZXh0IDo6PQkJCVNFUVVFTkNFIHsKCXVlLXBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5CQkJCVVFLVBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5LXY3eHlleHQKfQoKVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnRFdmVudFJlc3VsdHMgOjo9CQlDSE9JQ0UgewoJZXZlbnQ3YQkJCQkJCQkJVUUtUG9zaXRpb25pbmctUG9zaXRpb25Fc3RpbWF0ZUluZm8sCglldmVudDdiCQkJCQkJCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1NZWFzdXJlbWVudCwKCWV2ZW50N2MJCQkJCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1NZWFzdXJlbWVudFJlc3VsdHMsCglzcGFyZQkJCQkJCQkJTlVMTAkKfQoKVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnRJbnRlcnZhbCA6Oj0JCQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCWU1LCBlMTUsIGU2MCwgZTMwMCwKCQkJCQkJCQkJCWU5MDAsIGUxODAwLCBlMzYwMCwgZTcyMDAgfQoKVUUtUG9zaXRpb25pbmctTWV0aG9kVHlwZSA6Oj0JCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJdWUtQXNzaXN0ZWQsCgkJCQkJCQkJCQl1ZS1CYXNlZCwKCQkJCQkJCQkJCXVlLUJhc2VkUHJlZmVycmVkLAoJCQkJCQkJCQkJdWUtQXNzaXN0ZWRQcmVmZXJyZWQgfQoKVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEgOjo9CQlTRVFVRU5DRSB7Cgl1ZS1wb3NpdGlvbmluZy1PVERPQS1SZWZlcmVuY2VDZWxsSW5mbwkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLVJlZmVyZW5jZUNlbGxJbmZvCQkJCU9QVElPTkFMLAoJdWUtcG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbExpc3QJCQkJVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbExpc3QJCQkJT1BUSU9OQUwKfQoKVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtcjQgOjo9CVNFUVVFTkNFIHsKCXVlLXBvc2l0aW9uaW5nLU9URE9BLVJlZmVyZW5jZUNlbGxJbmZvCQkJVUUtUG9zaXRpb25pbmctT1RET0EtUmVmZXJlbmNlQ2VsbEluZm8tcjQJCQkJT1BUSU9OQUwsCgl1ZS1wb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsTGlzdAkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxMaXN0LXI0CQkJCU9QVElPTkFMCn0KClVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLXI0ZXh0IDo6PSBTRVFVRU5DRSB7CgktLSBJbiBjYXNlIG9mIFRERCB0aGVzZSBJUERMIHBhcmFtZXRlcnMgc2hhbGwgYmUgdXNlZCBmb3IgdGhlIHJlZmVyZW5jZSBjZWxsIGluc3RlYWQgb2YKCS0tIElQREwgUGFyYW1ldGVycyBpbiBJRSBVRS1Qb3NpdGlvbmluZy1PVERPQS1SZWZlcmVuY2VDZWxsSW5mbwoJdWUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzLVRERC1yNC1leHQJCVVFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycy1UREQtcjQtZXh0CU9QVElPTkFMLAoJLS0gVGhlc2UgSVBETCBwYXJhbWV0ZXJzIHNoYWxsIGJlIHVzZWQgZm9yIHRoZSBuZWlnaGJvdXIgY2VsbHMgaW4gY2FzZSBvZiBUREQgaW5zdGVhZCBvZgoJLS0gSVBETCBQYXJhbWV0ZXJzIGluIElFIFVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxJbmZvTGlzdC4gVGhlIGNlbGxzIHNoYWxsIGJlIAoJLS0gbGlzdGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIGluIElFIFVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxJbmZvTGlzdAoJdWUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzLVRERExpc3QtcjQtZXh0CVVFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycy1URERMaXN0LXI0LWV4dAkJT1BUSU9OQUwKfQoKVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtVUVCIDo6PQkJU0VRVUVOQ0UgewoJdWUtcG9zaXRpb25pbmctT1RET0EtUmVmZXJlbmNlQ2VsbEluZm8tVUVCCQkJVUUtUG9zaXRpb25pbmctT1RET0EtUmVmZXJlbmNlQ2VsbEluZm8tVUVCCQkJCU9QVElPTkFMLAoJdWUtcG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbExpc3QtVUVCCQkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxMaXN0LVVFQgkJCQlPUFRJT05BTAp9CgpVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMtVERETGlzdC1yNC1leHQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQkJVUUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzLVRERC1yNC1leHQKClVFLVBvc2l0aW9uaW5nLU9URE9BLU1lYXN1cmVtZW50IDo6PQkJCVNFUVVFTkNFIHsKCXNmbgkJCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpLAoJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlyZWZlcmVuY2VDZWxsSURlbnRpdHkJCQkJUHJpbWFyeUNQSUNILUluZm8sCgkJCXVlLVJYLVRYLVRpbWVEaWZmZXJlbmNlVHlwZTJJbmZvCVVFLVJYLVRYLVRpbWVEaWZmZXJlbmNlVHlwZTJJbmZvCgkJfSwKCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXJlZmVyZW5jZUNlbGxJZGVudGl0eQkJCUNlbGxQYXJhbWV0ZXJzSUQKCQl9Cgl9LAoJbmVpZ2hib3VyTGlzdAkJCQkJCU5laWdoYm91ckxpc3QJCQkJCQlPUFRJT05BTAp9CgpVRS1Qb3NpdGlvbmluZy1PVERPQS1NZWFzdXJlbWVudC12MzkwZXh0IDo6PQkJCVNFUVVFTkNFIHsKCW5laWdoYm91ckxpc3QtdjM5MGV4dAkJCQkJCU5laWdoYm91ckxpc3QtdjM5MGV4dAp9CgpVRS1Qb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsSW5mbyA6Oj0gU0VRVUVOQ0UgewoJbW9kZVNwZWNpZmljSW5mbwlDSE9JQ0UJewoJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8KCQl9LAoJCXRkZAkJCQkJCQkJU0VRVUVOQ0V7CgkJCWNlbGxBbmRDaGFubmVsSWRlbnRpdHkJCQkJQ2VsbEFuZENoYW5uZWxJZGVudGl0eQoJCX0KCX0sCglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJdWUtcG9zaXRpb25pbmctSVBETC1QYXJlbWV0ZXJzCQkJCQlVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMJCQkJCU9QVElPTkFMLAoJc2ZuLVNGTi1SZWxUaW1lRGlmZmVyZW5jZQkJCVNGTi1TRk4tUmVsVGltZURpZmZlcmVuY2UxLAoJc2ZuLVNGTi1EcmlmdAkJCQkJCVNGTi1TRk4tRHJpZnQgCQkJCQkJT1BUSU9OQUwsCglzZWFyY2hXaW5kb3dTaXplCQkJCQlPVERPQS1TZWFyY2hXaW5kb3dTaXplLAoJcG9zaXRpb25pbmdNb2RlIAlDSE9JQ0V7CgkJdWVCYXNlZAkJCQkJCQkJCVNFUVVFTkNFIHt9LAoJCXVlQXNzaXN0ZWQJCQkJCQkJCVNFUVVFTkNFIHt9Cgl9Cn0KClVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxJbmZvLXI0IDo6PSBTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCUNIT0lDRQl7CgkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwoJCX0sCgkJdGRkCQkJCQkJCQlTRVFVRU5DRXsKCQkJY2VsbEFuZENoYW5uZWxJZGVudGl0eQkJCQlDZWxsQW5kQ2hhbm5lbElkZW50aXR5CgkJfQoJfSwKCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgl1ZS1wb3NpdGlvbmluZy1JUERMLVBhcmVtZXRlcnMJCVVFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycy1yNAlPUFRJT05BTCwKCXNmbi1TRk4tUmVsVGltZURpZmZlcmVuY2UJCQlTRk4tU0ZOLVJlbFRpbWVEaWZmZXJlbmNlMSwKCXNmbi1PZmZzZXQtVmFsaWRpdHkJCQkJCVNGTi1PZmZzZXQtVmFsaWRpdHkJCQkJCU9QVElPTkFMLAoJc2ZuLVNGTi1EcmlmdAkJCQkJCVNGTi1TRk4tRHJpZnQJCQkJCQlPUFRJT05BTCwKCXNlYXJjaFdpbmRvd1NpemUJCQkJCU9URE9BLVNlYXJjaFdpbmRvd1NpemUsCglwb3NpdGlvbmluZ01vZGUgCUNIT0lDRSB7CgkJdWVCYXNlZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcmVsYXRpdmVOb3J0aAkJCQkJCUlOVEVHRVIgKC0yMDAwMC4uMjAwMDApCQkJCU9QVElPTkFMLAoJCQlyZWxhdGl2ZUVhc3QJCQkJCQlJTlRFR0VSICgtMjAwMDAuLjIwMDAwKQkJCQlPUFRJT05BTCwKCQkJcmVsYXRpdmVBbHRpdHVkZQkJCQkJSU5URUdFUiAoLTQwMDAuLjQwMDApCQkJCU9QVElPTkFMLAoJCQlmaW5lU0ZOLVNGTgkJCQkJCQlGaW5lU0ZOLVNGTgkJCQkJCQlPUFRJT05BTCwKCQkJLS0gYWN0dWFsIHZhbHVlIHJvdW5kVHJpcFRpbWUgPSAoSUUgdmFsdWUgKiAwLjA2MjUpICsgODc2CgkJCXJvdW5kVHJpcFRpbWUJCQkJCQlJTlRFR0VSICgwLi4gMzI3NjYpCQkJCQlPUFRJT05BTAoJCX0sCgkJdWVBc3Npc3RlZAkJCQkJCQkJU0VRVUVOQ0Uge30KCX0KfQoKVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbEluZm8tVUVCIDo6PSBTRVFVRU5DRSB7Cgltb2RlU3BlY2lmaWNJbmZvCUNIT0lDRQl7CgkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwoJCX0sCgkJdGRkCQkJCQkJCQlTRVFVRU5DRXsKCQkJY2VsbEFuZENoYW5uZWxJZGVudGl0eQkJCQlDZWxsQW5kQ2hhbm5lbElkZW50aXR5CgkJfQoJfSwKCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgl1ZS1wb3NpdGlvbmluZy1JUERMLVBhcmVtZXRlcnMJCVVFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycwkJT1BUSU9OQUwsCglzZm4tU0ZOLVJlbFRpbWVEaWZmZXJlbmNlCQkJU0ZOLVNGTi1SZWxUaW1lRGlmZmVyZW5jZTEsCglzZm4tU0ZOLURyaWZ0CQkJCQkJU0ZOLVNGTi1EcmlmdAkJCQkJCU9QVElPTkFMLAoJc2VhcmNoV2luZG93U2l6ZQkJCQkJT1RET0EtU2VhcmNoV2luZG93U2l6ZSwKCXJlbGF0aXZlTm9ydGgJCQkJCQlJTlRFR0VSICgtMjAwMDAuLjIwMDAwKQkJCQlPUFRJT05BTCwKCXJlbGF0aXZlRWFzdAkJCQkJCUlOVEVHRVIgKC0yMDAwMC4uMjAwMDApCQkJCU9QVElPTkFMLAoJcmVsYXRpdmVBbHRpdHVkZQkJCQkJSU5URUdFUiAoLTQwMDAuLjQwMDApCQkJCU9QVElPTkFMLAoJZmluZVNGTi1TRk4JCQkJCQkJRmluZVNGTi1TRk4sCgktLSBhY3R1YWwgdmFsdWUgcm91bmRUcmlwVGltZSA9IChJRSB2YWx1ZSAqIDAuMDYyNSkgKyA4NzYKCXJvdW5kVHJpcFRpbWUJCQkJCQlJTlRFR0VSICgwLi4zMjc2NikJCQkJCU9QVElPTkFMCn0KClVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxMaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxJbmZvCgpVRS1Qb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsTGlzdC1yNCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCQkJVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbEluZm8tcjQKClVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxMaXN0LVVFQiA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsSW5mby1VRUIKClVFLVBvc2l0aW9uaW5nLU9URE9BLVF1YWxpdHkgOjo9CQkJU0VRVUVOQ0UgewoJc3RkUmVzb2x1dGlvbgkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIpKSwKCW51bWJlck9mT1RET0EtTWVhc3VyZW1lbnRzCQkJQklUIFNUUklORyAoU0laRSAoMykpLAoJc3RkT2ZPVERPQS1NZWFzdXJlbWVudHMJCQkJQklUIFNUUklORyAoU0laRSAoNSkpCn0gCgpVRS1Qb3NpdGlvbmluZy1PVERPQS1SZWZlcmVuY2VDZWxsSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CglzZm4JCQkJCQkJCQlJTlRFR0VSICgwLi40MDk1KQkJCQkJCQkJCU9QVElPTkFMLAoJbW9kZVNwZWNpZmljSW5mbyBDSE9JQ0UgewoJCWZkZAkJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwoJCX0sCgkJdGRkCQkJCQkJCQkJCVNFUVVFTkNFewoJCQljZWxsQW5kQ2hhbm5lbElkZW50aXR5CQkJCUNlbGxBbmRDaGFubmVsSWRlbnRpdHkKCQl9Cgl9LAoJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKCXBvc2l0aW9uaW5nTW9kZSBDSE9JQ0UgewoJCXVlQmFzZWQJCQkJCQkJCQlTRVFVRU5DRSB7fSwKCQl1ZUFzc2lzdGVkCQkJCQkJCQlTRVFVRU5DRSB7fQoJfSwKCXVlLXBvc2l0aW9uaW5nLUlQREwtUGFyZW1ldGVycwkJCQlVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMJT1BUSU9OQUwKfQoKVUUtUG9zaXRpb25pbmctT1RET0EtUmVmZXJlbmNlQ2VsbEluZm8tcjQgOjo9CVNFUVVFTkNFIHsKCXNmbgkJCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpCQkJCQkJCQkJT1BUSU9OQUwsCgltb2RlU3BlY2lmaWNJbmZvIENIT0lDRSB7CgkJZmRkCQkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvCgkJfSwKCQl0ZGQJCQkJCQkJCQkJU0VRVUVOQ0V7CgkJCWNlbGxBbmRDaGFubmVsSWRlbnRpdHkJCQkJQ2VsbEFuZENoYW5uZWxJZGVudGl0eQoJCX0KCX0sCglmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAoJcG9zaXRpb25pbmdNb2RlIENIT0lDRSB7CgkJdWVCYXNlZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJY2VsbFBvc2l0aW9uCQkJCQkJCQlSZWZlcmVuY2VDZWxsUG9zaXRpb24JT1BUSU9OQUwsCgkJCS0tIGFjdHVhbCB2YWx1ZSByb3VuZFRyaXBUaW1lID0gKElFIHZhbHVlICogMC4wNjI1KSArIDg3NgoJCQlyb3VuZFRyaXBUaW1lCQkJCQkJSU5URUdFUiAoMC4uMzI3NjYpCQkJCU9QVElPTkFMCgkJfSwKCQl1ZUFzc2lzdGVkCQkJCQkJCQlTRVFVRU5DRSB7fQoJfSwKCXVlLXBvc2l0aW9uaW5nLUlQREwtUGFyZW1ldGVycwkJCQlVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMtcjQJT1BUSU9OQUwKfQoKVUUtUG9zaXRpb25pbmctT1RET0EtUmVmZXJlbmNlQ2VsbEluZm8tVUVCIDo6PQkJCVNFUVVFTkNFIHsKCXNmbgkJCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpCQkJCQlPUFRJT05BTCwKCW1vZGVTcGVjaWZpY0luZm8gQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8KCQl9LAoJCXRkZAkJCQkJCQkJCQlTRVFVRU5DRXsKCQkJY2VsbEFuZENoYW5uZWxJZGVudGl0eQkJCQlDZWxsQW5kQ2hhbm5lbElkZW50aXR5CgkJfQoJfSwKCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCgljZWxsUG9zaXRpb24JCQkJCQlSZWZlcmVuY2VDZWxsUG9zaXRpb24JCQkJT1BUSU9OQUwsCgktLSBhY3R1YWwgdmFsdWUgcm91bmRUcmlwVGltZSA9IChJRSB2YWx1ZSAqIDAuMDYyNSkgKyA4NzYKCXJvdW5kVHJpcFRpbWUJCQkJCQlJTlRFR0VSICgwLi4zMjc2NikJCQkJCU9QVElPTkFMLAoJdWUtcG9zaXRpb25pbmctSVBETC1QYXJlbWV0ZXJzCQlVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMJCU9QVElPTkFMCn0KClVFLVBvc2l0aW9uaW5nLVBvc2l0aW9uRXN0aW1hdGVJbmZvIDo6PQkJCQkJU0VRVUVOQ0UgewoJcmVmZXJlbmNlVGltZQkJCQkJQ0hPSUNFIHsKCQl1dHJhbi1HUFNSZWZlcmVuY2VUaW1lUmVzdWx0CQlVVFJBTi1HUFNSZWZlcmVuY2VUaW1lUmVzdWx0LAoJCWdwcy1SZWZlcmVuY2VUaW1lT25seQkJCQlJTlRFR0VSICgwLi42MDQ3OTk5OTkpLAoJCWNlbGwtVGltaW5nCQkJCQkJCVNFUVVFTkNFIHsKCQkJc2ZuCQkJCQkJCQkJCQlJTlRFR0VSICgwLi40MDk1KSwKCQkJbW9kZVNwZWNpZmljSW5mbyAJCQkJQ0hPSUNFIHsKCQkJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKCQkJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8KCQkJCX0sCgkJCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRXsKCQkJCQljZWxsQW5kQ2hhbm5lbElkZW50aXR5CQkJCUNlbGxBbmRDaGFubmVsSWRlbnRpdHkKCQkJCX0KCQkJfQoJCX0KCX0sCglwb3NpdGlvbkVzdGltYXRlCQkJCQlQb3NpdGlvbkVzdGltYXRlCn0KClVFLVBvc2l0aW9uaW5nLVJlcG9ydENyaXRlcmlhIDo6PQkJCQlDSE9JQ0UgewoJdWUtcG9zaXRpb25pbmctUmVwb3J0aW5nQ3JpdGVyaWEJCQkJVUUtUG9zaXRpb25pbmctRXZlbnRQYXJhbUxpc3QsCglwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEsCglub1JlcG9ydGluZwkJCQkJCQlOVUxMCn0KClVFLVBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5IDo6PQkJCVNFUVVFTkNFIHsKCW1ldGhvZFR5cGUJCQkJCQkJVUUtUG9zaXRpb25pbmctTWV0aG9kVHlwZSwKCXBvc2l0aW9uaW5nTWV0aG9kCQkJCQlQb3NpdGlvbmluZ01ldGhvZCwKCS0tIGR1bW15MSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiBhbmQgaXQgc2hvdWxkCgktLSBiZSBpZ25vcmVkLgoJZHVtbXkxCQkJCQkJCQlVRS1Qb3NpdGlvbmluZy1SZXNwb25zZVRpbWUsCglob3Jpem9udGFsLUFjY3VyYWN5CQkJCQlVRS1Qb3NpdGlvbmluZy1BY2N1cmFjeQkJCQlPUFRJT05BTCwKCWdwcy1UaW1pbmdPZkNlbGxXYW50ZWQJCQkJQk9PTEVBTiwKCS0tIGR1bW15MiBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiBhbmQgaXQgc2hvdWxkCgktLSBiZSBpZ25vcmVkLgoJZHVtbXkyCQkJCQkJCQlCT09MRUFOLAoJYWRkaXRpb25hbEFzc2lzdGFuY2VEYXRhUmVxdWVzdAkJQk9PTEVBTiwKCWVudmlyb25tZW50Q2hhcmFjdGVyaXNhdGlvbgkJCUVudmlyb25tZW50Q2hhcmFjdGVyaXNhdGlvbgkJCU9QVElPTkFMCn0KClVFLVBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5LXYzOTBleHQgOjo9CQlTRVFVRU5DRSB7Cgl2ZXJ0aWNhbC1BY2N1cmFjeQkJCQkJCQlVRS1Qb3NpdGlvbmluZy1BY2N1cmFjeQp9CgpVRS1Qb3NpdGlvbmluZy1SZXBvcnRpbmdRdWFudGl0eS1yNCA6Oj0JCQlTRVFVRU5DRSB7CgltZXRob2RUeXBlCQkJCQkJCVVFLVBvc2l0aW9uaW5nLU1ldGhvZFR5cGUsCglwb3NpdGlvbmluZ01ldGhvZAkJCQkJUG9zaXRpb25pbmdNZXRob2QsCglob3Jpem9udGFsQWNjdXJhY3kJCQkJCVVFLVBvc2l0aW9uaW5nLUFjY3VyYWN5CQkJCU9QVElPTkFMLAoJdmVydGljYWxBY2N1cmFjeQkJCQkJVUUtUG9zaXRpb25pbmctQWNjdXJhY3kJCQkJT1BUSU9OQUwsCglncHMtVGltaW5nT2ZDZWxsV2FudGVkCQkJCUJPT0xFQU4sCglhZGRpdGlvbmFsQXNzaXN0YW5jZURhdGFSZXEJCQlCT09MRUFOLAoJZW52aXJvbm1lbnRDaGFyYWN0ZXJpc2F0aW9uCQkJRW52aXJvbm1lbnRDaGFyYWN0ZXJpc2F0aW9uCQkJT1BUSU9OQUwKfQoKVUUtUG9zaXRpb25pbmctUmVwb3J0aW5nUXVhbnRpdHktdjd4eWV4dCA6Oj0JU0VRVUVOQ0UgewoJdmVsb2NpdHlSZXF1ZXN0ZWQJCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMCn0KClVFLVBvc2l0aW9uaW5nLVJlc3BvbnNlVGltZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlzMSwgczIsIHM0LCBzOCwgczE2LAoJCQkJCQkJCQkJczMyLCBzNjQsIHMxMjggfQoKLS0gU1BBUkU6IFVUUkEtQ2FycmllclJTU0ksIE1heCA9IDc2Ci0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlClVUUkEtQ2FycmllclJTU0kgOjo9CQkJCUlOVEVHRVIgKDAuLjEyNykKClVUUkFOLUdQUy1EcmlmdFJhdGUgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQl1dHJhbi1HUFNEcmlmdDAsIHV0cmFuLUdQU0RyaWZ0MSwgdXRyYW4tR1BTRHJpZnQyLAoJCQkJCQkJCQl1dHJhbi1HUFNEcmlmdDUsIHV0cmFuLUdQU0RyaWZ0MTAsIHV0cmFuLUdQU0RyaWZ0MTUsCgkJCQkJCQkJCXV0cmFuLUdQU0RyaWZ0MjUsIHV0cmFuLUdQU0RyaWZ0NTAsIHV0cmFuLUdQU0RyaWZ0LTEsCgkJCQkJCQkJCXV0cmFuLUdQU0RyaWZ0LTIsIHV0cmFuLUdQU0RyaWZ0LTUsIHV0cmFuLUdQU0RyaWZ0LTEwLAoJCQkJCQkJCQl1dHJhbi1HUFNEcmlmdC0xNSwgdXRyYW4tR1BTRHJpZnQtMjUsIHV0cmFuLUdQU0RyaWZ0LTUwfQoKVVRSQU4tR1BTUmVmZXJlbmNlVGltZSA6Oj0JCQkJU0VRVUVOQ0UgewoJLS0gRm9yIHV0cmFuLUdQU1RpbWluZ09mQ2VsbCB2YWx1ZXMgYWJvdmUgMjMyMjQzMTk5OTk5OSBhcmUgbm90IAoJLS0gdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KCS0tIEFjdHVhbCB2YWx1ZSB1dHJhbi1HUFNUaW1pbmdPZkNlbGwgPSAobXMtcGFydCAqIDQyOTQ5NjcyOTYpICsgbHMtcGFydAoJdXRyYW4tR1BTVGltaW5nT2ZDZWxsCQkJU0VRVUVOQ0UgewoJCW1zLXBhcnQgCQkJCQkJSU5URUdFUiAoMC4uMTAyMyksCgkJbHMtcGFydAkJCQkJCQlJTlRFR0VSICgwLi40Mjk0OTY3Mjk1KQoJfSwKCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcmVmZXJlbmNlSWRlbnRpdHkJCQkJUHJpbWFyeUNQSUNILUluZm8KCQl9LAoJCXRkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlyZWZlcmVuY2VJZGVudGl0eQkJCQlDZWxsUGFyYW1ldGVyc0lECgkJfQoJfSAJCQkJT1BUSU9OQUwsCglzZm4JCQkJCQkJCQlJTlRFR0VSICgwLi40MDk1KQp9CgpVVFJBTi1HUFNSZWZlcmVuY2VUaW1lUmVzdWx0IDo6PQkJCQlTRVFVRU5DRSB7CgktLSBGb3IgdWUtR1BTVGltaW5nT2ZDZWxsIHZhbHVlcyBhYm92ZSAzNzE1ODkxMTk5OTk5OSBhcmUgbm90IAoJLS0gdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KCS0tIEFjdHVhbCB2YWx1ZSB1ZS1HUFNUaW1pbmdPZkNlbGwgPSAobXMtcGFydCAqIDQyOTQ5NjcyOTYpICsgbHMtcGFydAoJdWUtR1BTVGltaW5nT2ZDZWxsCQkJU0VRVUVOQ0UgewoJCW1zLXBhcnQgCQkJCQkJSU5URUdFUiAoMC4uIDE2MzgzKSwKCQlscy1wYXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjQyOTQ5NjcyOTUpCgl9LAoJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgewoJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlyZWZlcmVuY2VJZGVudGl0eQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwoJCX0sCgkJdGRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCXJlZmVyZW5jZUlkZW50aXR5CQkJCUNlbGxQYXJhbWV0ZXJzSUQKCQl9Cgl9LAoJc2ZuCQkJCQkJCQkJSU5URUdFUiAoMC4uNDA5NSkKfQoKVmFyaWFuY2VPZlJMQy1CdWZmZXJQYXlsb2FkIDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlwbHYwLCBwbHY0LCBwbHY4LCBwbHYxNiwgcGx2MzIsIHBsdjY0LCAKCQkJCQkJCQkJCXBsdjEyOCwgcGx2MjU2LCBwbHY1MTIsIHBsdjEwMjQsIAoJCQkJCQkJCQkJcGx2MmssIHBsdjRrLCBwbHY4aywgcGx2MTZrLCBzcGFyZTIsIHNwYXJlMSB9CgpWZWxvY2l0eUVzdGltYXRlCTo6PQkJCQlDSE9JQ0UgewoJaG9yaXpvbnRhbFZlbG9jaXR5CQkJCQkJCQlIb3Jpem9udGFsVmVsb2NpdHksCglob3Jpem9udGFsV2l0aFZlcnRpY2FsVmVsb2NpdHkJCQkJCUhvcml6b250YWxXaXRoVmVydGljYWxWZWxvY2l0eSwKCWhvcml6b250YWxWZWxvY2l0eVdpdGhVbmNlcnRhaW50eQkJCQlIb3Jpem9udGFsVmVsb2NpdHlXaXRoVW5jZXJ0YWludHksCglob3Jpem9udGFsV2l0aFZlcnRpY2FsVmVsb2NpdHlBbmRVbmNlcnRhaW50eQlIb3Jpem9udGFsV2l0aFZlcnRpY2FsVmVsb2NpdHlBbmRVbmNlcnRhaW50eQp9CgotLSBBY3R1YWwgdmFsdWUgVyA9IElFIHZhbHVlICogMC4xClcgOjo9CQkJCQkJCQlJTlRFR0VSICgwLi4yMCkKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSAgICAgT1RIRVIgSU5GT1JNQVRJT04gRUxFTUVOVFMgKDEwLjMuOCkKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpCQ0MgOjo9CQkJCQkJCQlJTlRFR0VSICgwLi43KQoKQkNDSC1Nb2RpZmljYXRpb25JbmZvIDo6PQkJCVNFUVVFTkNFIHsKCW1pYi1WYWx1ZVRhZwkJCQkJCU1JQi1WYWx1ZVRhZywKCWJjY2gtTW9kaWZpY2F0aW9uVGltZQkJCQlCQ0NILU1vZGlmaWNhdGlvblRpbWUJCQkJT1BUSU9OQUwKfQoKLS0gQWN0dWFsIHZhbHVlIEJDQ0gtTW9kaWZpY2F0aW9uVGltZSA9IElFIHZhbHVlICogOApCQ0NILU1vZGlmaWNhdGlvblRpbWUgOjo9CQkJSU5URUdFUiAoMC4uNTExKQoKQlNJQyA6Oj0JCQkJCQkJU0VRVUVOQ0UgewoJbmNjCQkJCQkJCQkJTkNDLAoJYmNjCQkJCQkJCQkJQkNDCn0KCkNCUy1EUlgtTGV2ZWwxSW5mb3JtYXRpb24gOjo9CQlTRVFVRU5DRSB7CgljdGNoLUFsbG9jYXRpb25QZXJpb2QJCQkJSU5URUdFUiAoMS4uMjU2KSwKCWNicy1GcmFtZU9mZnNldAkJCQkJCUlOVEVHRVIgKDAuLjI1NSkKfQoKQ0JTLURSWC1MZXZlbDFJbmZvcm1hdGlvbi1leHRlbnNpb24tcjYgOjo9CUVOVU1FUkFURUQge3A4LCBwMTYsIHAzMiwgcDY0LCBwMTI4LCBwMjU2fQoKQ0RNQTIwMDAtTWVzc2FnZSA6Oj0JCQkJU0VRVUVOQ0UgewoJbXNnLVR5cGUJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAoJcGF5bG9hZAkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMS4uNTEyKSkKfQoKQ0RNQTIwMDAtTWVzc2FnZUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhJbnRlclN5c01lc3NhZ2VzKSkgT0YKCQkJCQkJCQkJCQlDRE1BMjAwMC1NZXNzYWdlCgpDRE1BMjAwMC1VTVRTLUZyZXF1ZW5jeS1MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE51bUNETUEyMDAwRnJlcXMpKSBPRgoJCQkJCQkJCQkJCUZyZXF1ZW5jeUluZm9DRE1BMjAwMAoKQ2VsbFZhbHVlVGFnIDo6PQkJCQkJCUlOVEVHRVIgKDEuLjQpCgotLUFjdHVhbCB2YWx1ZSA9IDJeKElFIHZhbHVlKSAKRXhwaXJhdGlvblRpbWVGYWN0b3IgOjo9CQkJCUlOVEVHRVIgKDEuLjgpCgpGREQtVU1UUy1GcmVxdWVuY3ktTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE51bUZEREZyZXFzKSkgT0YKCQkJCQkJCQkJCQlGcmVxdWVuY3lJbmZvRkRECgpGcmVxdWVuY3lJbmZvQ0RNQTIwMDAgOjo9CQkJCVNFUVVFTkNFIHsKCQkJCQkJCQkJCQliYW5kLUNsYXNzCQlCSVQgU1RSSU5HIChTSVpFICg1KSksCgkJCQkJCQkJCQkJY2RtYS1GcmVxCQlCSVQgU1RSSU5HIChTSVpFKDExKSkKfQoKR0VSQU4tU3lzdGVtSW5mb0Jsb2NrIDo6PQkJCQlPQ1RFVCBTVFJJTkcgKFNJWkUgKDEuLjIzKSkKCkdFUkFOLVN5c3RlbUluZm9ybWF0aW9uIDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4R0VSQU4tU0kpKSBPRiBHRVJBTi1TeXN0ZW1JbmZvQmxvY2sKCkdTTS1CQS1SYW5nZSA6Oj0gCQkJCQkJU0VRVUVOQ0UgewoJCQkJCQkJCQkJCWdzbUxvd1JhbmdlVUFSRkNOCQlVQVJGQ04sCgkJCQkJCQkJCQkJZ3NtVXBSYW5nZVVBUkZDTgkJVUFSRkNOCn0KCkdTTS1CQS1SYW5nZS1MaXN0IDo6PSAJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhOdW1HU01GcmVxUmFuZ2VzKSkgT0YKCQkJCQkJCQkJCQlHU00tQkEtUmFuZ2UKCgotLSBUaGlzIElFIGlzIGZvcm1hdHRlZCBhcyAnVExWJyBhbmQgaXMgY29kZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBNb2JpbGUgU3RhdGlvbiBDbGFzc21hcmsgMiAKLS0gaW5mb3JtYXRpb24gZWxlbWVudCBpbiBbNV0uIFRoZSBmaXJzdCBvY3RldCBpcyB0aGUgTW9iaWxlIHN0YXRpb24gY2xhc3NtYXJrIDIgSUVJIGFuZCBpdHMgdmFsdWUKLS0gc2hhbGwgYmUgc2V0IHRvIDMzSC4gVGhlIHNlY29uZCBvY3RldCBpcyB0aGUgTGVuZ3RoIG9mIG1vYmlsZSBzdGF0aW9uIGNsYXNzbWFyayAyIGFuZCBpdHMgdmFsdWUgCi0tIHNoYWxsIGJlIHNldCB0byAzLiBUaGUgb2N0ZXQgMyBjb250YWlucyB0aGUgZmlyc3Qgb2N0ZXQgb2YgdGhlIHZhbHVlIHBhcnQgb2YgdGhlIE1vYmlsZSBTdGF0aW9uIAotLSBDbGFzc21hcmsgMiBpbmZvcm1hdGlvbiBlbGVtZW50LCB0aGUgb2N0ZXQgNCBjb250YWlucyB0aGUgc2Vjb25kIG9jdGV0IG9mIHRoZSB2YWx1ZSBwYXJ0IG9mIHRoZSAKLS0gTW9iaWxlIFN0YXRpb24gQ2xhc3NtYXJrIDIgaW5mb3JtYXRpb24gZWxlbWVudCBhbmQgc28gb24uIEZvciBlYWNoIG9mIHRoZXNlIG9jdGV0cywgdGhlIGZpcnN0LwotLSBsZWZ0bW9zdC8gbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgdGhlIG9jdGV0IGNvbnRhaW5zIGI4IG9mIHRoZSBjb3JyZXNwb25kaW5nIG9jdGV0IG9mIHRoZSBNb2JpbGUKLS0gU3RhdGlvbiBDbGFzc21hcmsgMi4KR1NNLUNsYXNzbWFyazIgOjo9CQkJCQlPQ1RFVCBTVFJJTkcgKFNJWkUgKDUpKQoKLS0gVGhpcyBJRSBpcyBmb3JtYXR0ZWQgYXMgJ1YnIGFuZCBpcyBjb2RlZCBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIHZhbHVlIHBhcnQgaW4gdGhlIE1vYmlsZSBzdGF0aW9uCi0tIGNsYXNzbWFyayAzIGluZm9ybWF0aW9uIGVsZW1lbnQgaW4gWzVdCi0tIFRoZSB2YWx1ZSBwYXJ0IGlzIHNwZWNpZmllZCBieSBtZWFucyBvZiBDU04uMSwgd2hpY2ggZW5jb2RpbmcgcmVzdWx0cyBpbiBhIGJpdCBzdHJpbmcsIHRvIHdoaWNoCi0tIGZpbmFsIHBhZGRpbmcgbWF5IGJlIGFwcGVuZGVkIHVwdG8gdGhlIG5leHQgb2N0ZXQgYm91bmRhcnkgWzVdLiBUaGUgZmlyc3QvIGxlZnRtb3N0IGJpdCBvZiB0aGUKLS0gQ1NOLjEgYml0IHN0cmluZyBpcyBwbGFjZWQgaW4gdGhlIGZpcnN0LyBsZWZ0bW9zdC8gbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgdGhlIGZpcnN0Ci0tIG9jdGV0LiBUaGlzIGNvbnRpbnVlcyB1bnRpbCB0aGUgbGFzdCBiaXQgb2YgdGhlIENTTi4xIGJpdCBzdHJpbmcsIHdoaWNoIGlzIHBsYWNlZCBpbiB0aGUgbGFzdC8KLS0gcmlnaHRtb3N0LyBsZWFzdCBzaWduaWZpY2FudCBiaXQgb2YgdGhlIGxhc3Qgb2N0ZXQuCkdTTS1DbGFzc21hcmszIDo6PQkJCQkJT0NURVQgU1RSSU5HIChTSVpFICgxLi4zMikpCgpHU00tTWVzc2FnZUxpc3QgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SW50ZXJTeXNNZXNzYWdlcykpIE9GCgkJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxLi41MTIpKQoKR1NNLU1TLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eSA6Oj0JT0NURVQgU1RSSU5HIChTSVpFICgxLi42NCkpCgpHc21TZWN1cml0eUNhcGFiaWxpdHkgOjo9CQkJQklUIFNUUklORyB7CgkJCQkJCQkJCQktLSBGb3IgZWFjaCBiaXQgdmFsdWUg0jDTIG1lYW5zIGZhbHNlLyBub3Qgc3VwcG9ydGVkCgkJCQkJCQkJCQlhNS03KDApLAoJCQkJCQkJCQkJYTUtNigxKSwKCQkJCQkJCQkJIAlhNS01KDIpLAoJCQkJCQkJCQkgCWE1LTQoMyksCgkJCQkJCQkJCSAJYTUtMyg0KSwKCQkJCQkJCQkJIAlhNS0yKDUpLAoJCQkJCQkJCQkgCWE1LTEoNikKCQkJCQkJCQkJCX0JKFNJWkUgKDcpKQoKR1NNLVRhcmdldENlbGxJbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhHU01UYXJnZXRDZWxscykpIE9GCgkJCQkJCQkJCQkJR1NNLVRhcmdldENlbGxJbmZvCgoKR1NNLVRhcmdldENlbGxJbmZvIDo6PSAJCQkJU0VRVUVOQ0UgewoJYmNjaC1BUkZDTgkJCQkJCQlCQ0NILUFSRkNOLAoJZnJlcXVlbmN5LWJhbmQJCQkJCQlGcmVxdWVuY3ktQmFuZCwKCWJzaWMJCQkJCQkJCUJTSUMJCQlPUFRJT05BTAp9CgpJZGVudGlmaWNhdGlvbk9mUmVjZWl2ZWRNZXNzYWdlIDo6PQlTRVFVRU5DRSB7CgkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKCQlyZWNlaXZlZE1lc3NhZ2VUeXBlCQkJCVJlY2VpdmVkTWVzc2FnZVR5cGUKfQoKSW50ZXJSQVQtQ2hhbmdlRmFpbHVyZUNhdXNlIDo6PQkJQ0hPSUNFIHsKCWNvbmZpZ3VyYXRpb25VbmFjY2VwdGFibGUJCQlOVUxMLAoJcGh5c2ljYWxDaGFubmVsRmFpbHVyZQkJCQlOVUxMLAoJcHJvdG9jb2xFcnJvcgkJCQkJCVByb3RvY29sRXJyb3JJbmZvcm1hdGlvbiwKCXVuc3BlY2lmaWVkCQkJCQkJCU5VTEwsCglzcGFyZTQJCQkJCQkJCU5VTEwsCglzcGFyZTMJCQkJCQkJCU5VTEwsCglzcGFyZTIJCQkJCQkJCU5VTEwsCglzcGFyZTEJCQkJCQkJCU5VTEwKfQkJCQkJCQkKCkdFUkFOSXUtTWVzc2FnZUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhJbnRlclN5c01lc3NhZ2VzKSkgT0YKCQkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEuLjMyNzY4KSkKCkdFUkFOSXUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5IDo6PQlCSVQgU1RSSU5HIChTSVpFICgxLi4xNzApKQoKSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5IDo6PSBDSE9JQ0UgewoJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgewoJCWdzbS1DbGFzc21hcmsyCQkJCQkJR1NNLUNsYXNzbWFyazIsCgkJZ3NtLUNsYXNzbWFyazMJCQkJCQlHU00tQ2xhc3NtYXJrMwoJfSwKCWNkbWEyMDAwCQkJCQkJCVNFUVVFTkNFIHsKCQljZG1hMjAwMC1NZXNzYWdlTGlzdAkJCQlDRE1BMjAwMC1NZXNzYWdlTGlzdAoJfQp9CgpJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlMaXN0IDo6PSAJU0VRVUVOQ0UgKFNJWkUoMS4ubWF4SW50ZXJTeXNNZXNzYWdlcykpIE9GCgkJCQkJCQkJCQkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CgpJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgewoJZ2VyYW5JdS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJCUdFUkFOSXUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Cn0KCkludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjkwZXh0IDo6PSBTRVFVRU5DRSB7CglzdXBwb3J0T2ZJbnRlci1SQVQtUFMtSGFuZG92ZXIJCUVOVU1FUkFURUQgeyBkb2VzU3VwcG9ySW50ZXItUkFULVBTLUhhbmRvdmVyIH0JT1BUSU9OQUwsCglnc20tTVMtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlHU00tTVMtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Cn0KCkludGVyUkFULVVFLVNlY3VyaXR5Q2FwYWJpbGl0eSA6Oj0gQ0hPSUNFIHsKCWdzbQkJCQkJCQkJCVNFUVVFTkNFIHsKCQlnc21TZWN1cml0eUNhcGFiaWxpdHkJCQlHc21TZWN1cml0eUNhcGFiaWxpdHkKCX0KfQoKSW50ZXJSQVQtVUUtU2VjdXJpdHlDYXBMaXN0IDo6PSAJU0VRVUVOQ0UgKFNJWkUoMS4ubWF4SW50ZXJTeXNNZXNzYWdlcykpIE9GCgkJCQkJCQkJCQlJbnRlclJBVC1VRS1TZWN1cml0eUNhcGFiaWxpdHkKCkludGVyUkFULUhPLUZhaWx1cmVDYXVzZSA6Oj0JCUNIT0lDRSB7Cgljb25maWd1cmF0aW9uVW5hY2NlcHRhYmxlCQkJTlVMTCwKCXBoeXNpY2FsQ2hhbm5lbEZhaWx1cmUJCQkJTlVMTCwKCXByb3RvY29sRXJyb3IJCQkJCQlQcm90b2NvbEVycm9ySW5mb3JtYXRpb24sCglpbnRlclJBVC1Qcm90b2NvbEVycm9yCQkJCU5VTEwsCgl1bnNwZWNpZmllZAkJCQkJCQlOVUxMLAoJc3BhcmUxMQkJCQkJCQkJTlVMTCwKCXNwYXJlMTAJCQkJCQkJCU5VTEwsCglzcGFyZTkJCQkJCQkJCU5VTEwsCglzcGFyZTgJCQkJCQkJCU5VTEwsCglzcGFyZTcJCQkJCQkJCU5VTEwsCglzcGFyZTYJCQkJCQkJCU5VTEwsCglzcGFyZTUJCQkJCQkJCU5VTEwsCglzcGFyZTQJCQkJCQkJCU5VTEwsCglzcGFyZTMJCQkJCQkJCU5VTEwsCglzcGFyZTIJCQkJCQkJCU5VTEwsCglzcGFyZTEJCQkJCQkJCU5VTEwKfQkJCQkJCQkKCk1hc3RlckluZm9ybWF0aW9uQmxvY2sgOjo9CQkJU0VRVUVOQ0UgewoJCW1pYi1WYWx1ZVRhZwkJCQkJTUlCLVZhbHVlVGFnLAoJCS0tIFRBQlVMQVI6IFRoZSBQTE1OIGlkZW50aXR5IGFuZCBBTlNJLTQxIGNvcmUgbmV0d29yayBpbmZvcm1hdGlvbgoJCS0tIGFyZSBpbmNsdWRlZCBpbiBQTE1OLVR5cGUuCgkJcGxtbi1UeXBlCQkJCQkJUExNTi1UeXBlLAoJCXNpYlNiLVJlZmVyZW5jZUxpc3QJCQkJU0lCU2ItUmVmZXJlbmNlTGlzdCwKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJbWFzdGVySW5mb3JtYXRpb25CbG9jay12NjkwZXh0CQlNYXN0ZXJJbmZvcm1hdGlvbkJsb2NrLXY2OTBleHQsCgkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQkJCQkJCQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKTWFzdGVySW5mb3JtYXRpb25CbG9jay12NjkwZXh0IDo6PQlTRVFVRU5DRSB7CgltdWx0aXBsZVBMTU4tTGlzdAkJCQkJTXVsdGlwbGVQTE1OLUxpc3QtcjYJCQlPUFRJT05BTAp9CgpNSUItVmFsdWVUYWcgOjo9CQkJCQlJTlRFR0VSICgxLi44KQoKTkNDIDo6PQkJCQkJCQkJSU5URUdFUiAoMC4uNykKClBMTU4tVmFsdWVUYWcgOjo9CQkJCQlJTlRFR0VSICgxLi4yNTYpCgoKUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5QW5kVmFsdWVUYWcgOjo9CVNFUVVFTkNFIHsKCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJCQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCglwcmVkZWZpbmVkQ29uZmlnVmFsdWVUYWcJCQkJUHJlZGVmaW5lZENvbmZpZ1ZhbHVlVGFnCn0KClByb3RvY29sRXJyb3JJbmZvcm1hdGlvbiA6Oj0JCVNFUVVFTkNFIHsKCWRpYWdub3N0aWNzVHlwZQkJCQkJCUNIT0lDRSB7CgkJdHlwZTEJCQkJCQkJCVNFUVVFTkNFIHsKCQkJcHJvdG9jb2xFcnJvckNhdXNlCQkJCQlQcm90b2NvbEVycm9yQ2F1c2UKCQl9LAoJCXNwYXJlCQkJCQkJCQlOVUxMCgl9Cn0KClJlY2VpdmVkTWVzc2FnZVR5cGUgOjo9CQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJYWN0aXZlU2V0VXBkYXRlLAoJCQkJCQkJCQkJY2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOLAoJCQkJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0sCgkJCQkJCQkJCQljb3VudGVyQ2hlY2ssCgkJCQkJCQkJCQlkb3dubGlua0RpcmVjdFRyYW5zZmVyLAoJCQkJCQkJCQkJaW50ZXJSQVRIYW5kb3ZlckNvbW1hbmQsCgkJCQkJCQkJCQltZWFzdXJlbWVudENvbnRyb2wsCgkJCQkJCQkJCQlwYWdpbmdUeXBlMiwKCQkJCQkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbiwKCQkJCQkJCQkJCXBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24sCgkJCQkJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbiwKCQkJCQkJCQkJCXJhZGlvQmVhcmVyUmVsZWFzZSwKCQkJCQkJCQkJCXJhZGlvQmVhcmVyU2V0dXAsCgkJCQkJCQkJCQlycmNDb25uZWN0aW9uUmVsZWFzZSwKCQkJCQkJCQkJCXJyY0Nvbm5lY3Rpb25SZWplY3QsCgkJCQkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXAsCgkJCQkJCQkJCQlzZWN1cml0eU1vZGVDb21tYW5kLAoJCQkJCQkJCQkJc2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlLAoJCQkJCQkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbiwKCQkJCQkJCQkJCXRyYW5zcG9ydEZvcm1hdENvbWJpbmF0aW9uQ29udHJvbCwKCQkJCQkJCQkJCXVlQ2FwYWJpbGl0eUVucXVpcnksCgkJCQkJCQkJCQl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0sCgkJCQkJCQkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLAoJCQkJCQkJCQkJdXJhVXBkYXRlQ29uZmlybSwKCQkJCQkJCQkJCXV0cmFuTW9iaWxpdHlJbmZvcm1hdGlvbiwKCQkJCQkJCQkJCWFzc2lzdGFuY2VEYXRhRGVsaXZlcnksCgkJCQkJCQkJCQlzcGFyZTYsIHNwYXJlNSwgc3BhcmU0LCBzcGFyZTMsIHNwYXJlMiwKCQkJCQkJCQkJCXNwYXJlMQp9CgpScGxtbi1JbmZvcm1hdGlvbiA6Oj0JCQkJCVNFUVVFTkNFIHsKCQkJCQkJCQkJCQlnc20tQkEtUmFuZ2UtTGlzdAkJR1NNLUJBLVJhbmdlLUxpc3QJT1BUSU9OQUwsCgkJCQkJCQkJCQkJZmRkLVVNVFMtRnJlcXVlbmN5LUxpc3QJRkRELVVNVFMtRnJlcXVlbmN5LUxpc3QJT1BUSU9OQUwsCgkJCQkJCQkJCQkJdGRkLVVNVFMtRnJlcXVlbmN5LUxpc3QJVERELVVNVFMtRnJlcXVlbmN5LUxpc3QJT1BUSU9OQUwsCgkJCQkJCQkJCQkJY2RtYTIwMDAtVU1UUy1GcmVxdWVuY3ktTGlzdAlDRE1BMjAwMC1VTVRTLUZyZXF1ZW5jeS1MaXN0CU9QVElPTkFMCn0KClJwbG1uLUluZm9ybWF0aW9uLXI0IDo6PQkJU0VRVUVOQ0UgewoJZ3NtLUJBLVJhbmdlLUxpc3QJCQkJR1NNLUJBLVJhbmdlLUxpc3QJCQkJCQlPUFRJT05BTCwKCWZkZC1VTVRTLUZyZXF1ZW5jeS1MaXN0CQkJRkRELVVNVFMtRnJlcXVlbmN5LUxpc3QJCQkJCU9QVElPTkFMLAoJLS0gdGhlIG9wdGlvbiBpcyB0aGUgc2FtZSBmb3IgNy42OCBNY3BzIFRERCBhcyBmb3IgMy44NCBNY3BzIFRERAoJLS0gaS5lLiBUREQtVU1UUy1GcmVxdWVuY3ktTGlzdCBhcHBsaWVzCgl0ZGQzODQtVU1UUy1GcmVxdWVuY3ktTGlzdAkJVERELVVNVFMtRnJlcXVlbmN5LUxpc3QJCQkJCU9QVElPTkFMLAoJdGRkMTI4LVVNVFMtRnJlcXVlbmN5LUxpc3QJCVRERC1VTVRTLUZyZXF1ZW5jeS1MaXN0CQkJCQlPUFRJT05BTCwKCWNkbWEyMDAwLVVNVFMtRnJlcXVlbmN5LUxpc3QJQ0RNQTIwMDAtVU1UUy1GcmVxdWVuY3ktTGlzdAkJCU9QVElPTkFMCn0KClNjaGVkdWxpbmdJbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7CglzY2hlZHVsaW5nCQkJCQkJCVNFUVVFTkNFIHsKCQlzZWdDb3VudAkJCQkJCQlTZWdDb3VudAkJCQkgCQkgREVGQVVMVCAxLAoJCXNpYi1Qb3MJCQkJCQkJCUNIT0lDRSB7CgkJCS0tIFRoZSBlbGVtZW50IG5hbWUgaW5kaWNhdGVzIHRoZSByZXBldGl0aW9uIHBlcmlvZCBhbmQgdGhlIHZhbHVlCgkJCS0tIChtdWx0aXBsaWVkIGJ5IHR3bykgaW5kaWNhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3Qgc2VnbWVudC4KCQkJcmVwNAkJCQkJCQkJSU5URUdFUiAoMC4uMSksCgkJCXJlcDgJCQkJCQkJCUlOVEVHRVIgKDAuLjMpLAoJCQlyZXAxNgkJCQkJCQkJSU5URUdFUiAoMC4uNyksCgkJCXJlcDMyCQkJCQkJCQlJTlRFR0VSICgwLi4xNSksCgkJCXJlcDY0CQkJCQkJCQlJTlRFR0VSICgwLi4zMSksCgkJCXJlcDEyOAkJCQkJCQkJSU5URUdFUiAoMC4uNjMpLAoJCQlyZXAyNTYJCQkJCQkJCUlOVEVHRVIgKDAuLjEyNyksCgkJCXJlcDUxMgkJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKCQkJcmVwMTAyNAkJCQkJCQkJSU5URUdFUiAoMC4uNTExKSwKCQkJcmVwMjA0OAkJCQkJCQkJSU5URUdFUiAoMC4uMTAyMyksCgkJCXJlcDQwOTYJCQkJCQkJCUlOVEVHRVIgKDAuLjIwNDcpCgkJfSwKCQlzaWItUG9zT2Zmc2V0SW5mbwkJCQkJU2liT0ZGLUxpc3QJCQkJCQlPUFRJT05BTAoJfQp9CgpTY2hlZHVsaW5nSW5mb3JtYXRpb25TSUIgOjo9CQkJU0VRVUVOQ0UgewoJc2liLVR5cGUJCQkJCQkJU0lCLVR5cGVBbmRUYWcsCglzY2hlZHVsaW5nCQkJCQkJCVNjaGVkdWxpbmdJbmZvcm1hdGlvbgp9CgpTY2hlZHVsaW5nSW5mb3JtYXRpb25TSUJTYiA6Oj0JCQlTRVFVRU5DRSB7CglzaWJTYi1UeXBlCQkJCQkJCVNJQlNiLVR5cGVBbmRUYWcsCglzY2hlZHVsaW5nCQkJCQkJCVNjaGVkdWxpbmdJbmZvcm1hdGlvbgp9CgpTZWdDb3VudCA6Oj0JCQkJCQlJTlRFR0VSICgxLi4xNikKClNlZ21lbnRJbmRleCA6Oj0JCQkJCUlOVEVHRVIgKDEuLjE1KQoKLS0gQWN0dWFsIHZhbHVlIFNGTi1QcmltZSA9IDIgKiBJRSB2YWx1ZQpTRk4tUHJpbWUgOjo9CQkJCQkJSU5URUdFUiAoMC4uMjA0NykKCgpTSUItRGF0YS1maXhlZCA6Oj0JCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIyMikpCgoKU0lCLURhdGEtdmFyaWFibGUgOjo9CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEuLjIxNCkpCgpTSUJPY2N1cklkZW50aXR5IDo6PQkJCUlOVEVHRVIgKDAuLjE1KQoKU0lCT2NjdXJyZW5jZUlkZW50aXR5QW5kVmFsdWVUYWcgOjo9CVNFUVVFTkNFIHsKCXNpYk9jY3VySWRlbnRpdHkJCQkJU0lCT2NjdXJJZGVudGl0eSwKCXNpYk9jY3VyVmFsdWVUYWcJCQkJU0lCT2NjdXJWYWx1ZVRhZwp9CgpTSUJPY2N1clZhbHVlVGFnIDo6PQkJCUlOVEVHRVIgKDAuLjE1KQoKU0lCLVJlZmVyZW5jZUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTSUIpKSBPRgoJCQkJCQkJCQkJU2NoZWR1bGluZ0luZm9ybWF0aW9uU0lCCgpTSUJTYi1SZWZlcmVuY2VMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U0lCKSkgT0YKCQkJCQkJCQkJCVNjaGVkdWxpbmdJbmZvcm1hdGlvblNJQlNiCgpTSUItUmVmZXJlbmNlTGlzdEZBQ0ggOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNJQi1GQUNIKSkgT0YgCgkJCQkJCQkJCQlTY2hlZHVsaW5nSW5mb3JtYXRpb25TSUIKClNJQi1UeXBlIDo6PQkJCQkJCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbWFzdGVySW5mb3JtYXRpb25CbG9jaywKCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMSwKCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMiwKCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMywKCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlNCwKCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlNSwKCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlNiwKCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlNywKCQktLSBkdW1teSwgZHVtbXkyIGFuZCBkdW1teTMgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudC4gSWYgdGhleSBhcmUgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgoJCQkJCQkJCQkJZHVtbXksCgkJCQkJCQkJCQlkdW1teTIsCgkJCQkJCQkJCQlkdW1teTMsCgkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTExLAoJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxMiwKCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTMsCgkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTEzLTEsCgkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTEzLTIsCgkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTEzLTMsCgkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTEzLTQsCgkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTE0LAoJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxNSwKCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTUtMSwKCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTUtMiwKCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTUtMywKCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTYsCgkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTE3LAoJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxNS00LAoJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxOCwKCQkJCQkJCQkJCXNjaGVkdWxpbmdCbG9jazEsCgkJCQkJCQkJCQlzY2hlZHVsaW5nQmxvY2syLAoJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxNS01LAoJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGU1YmlzLCAKCQkJCQkJCQkJCXNwYXJlMSB9CgpTSUItVHlwZUFuZFRhZyA6Oj0JCQkJCUNIT0lDRSB7CglzeXNJbmZvVHlwZTEJCQkJCQlQTE1OLVZhbHVlVGFnLAoJc3lzSW5mb1R5cGUyCQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGUzCQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGU0CQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGU1CQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGU2CQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGU3CQkJCQkJTlVMTCwKCS0tIGR1bW15LCBkdW1teTIgYW5kIGR1bW15MyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAoJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQuIElmIHRoZXkgYXJlIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KCWR1bW15CQkJCQkJCQlDZWxsVmFsdWVUYWcsCglkdW1teTIJCQkJCQkJCU5VTEwsCglkdW1teTMJCQkJCQkJCU5VTEwsCglzeXNJbmZvVHlwZTExCQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGUxMiAJCQkJCQlDZWxsVmFsdWVUYWcsCglzeXNJbmZvVHlwZTEzCQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGUxMy0xCQkJCQkJQ2VsbFZhbHVlVGFnLCAKCXN5c0luZm9UeXBlMTMtMgkJCQkJCUNlbGxWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTMtMwkJCQkJCUNlbGxWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTMtNAkJCQkJCUNlbGxWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTQJCQkJCQlOVUxMLAoJc3lzSW5mb1R5cGUxNQkJCQkJCUNlbGxWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTYJCQkJCQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHlBbmRWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTcJCQkJCQlOVUxMLAoJc3lzSW5mb1R5cGUxNS0xCQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGUxNS0yCQkJCQkJU0lCT2NjdXJyZW5jZUlkZW50aXR5QW5kVmFsdWVUYWcsCglzeXNJbmZvVHlwZTE1LTMJCQkJCQlTSUJPY2N1cnJlbmNlSWRlbnRpdHlBbmRWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTUtNAkJCQkJCUNlbGxWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTgJCQkJCQlDZWxsVmFsdWVUYWcsCglzeXNJbmZvVHlwZTE1LTUJCQkJCQlDZWxsVmFsdWVUYWcsCglzeXNJbmZvVHlwZTViaXMJCQkJCQlDZWxsVmFsdWVUYWcsCglzcGFyZTQJCQkJCQkJCU5VTEwsCglzcGFyZTMJCQkJCQkJCU5VTEwsCglzcGFyZTIJCQkJCQkJCU5VTEwsCglzcGFyZTEJCQkJCQkJCU5VTEwKfQoKU0lCU2ItVHlwZUFuZFRhZyA6Oj0JCQkJCUNIT0lDRSB7CglzeXNJbmZvVHlwZTEJCQkJCQlQTE1OLVZhbHVlVGFnLAoJc3lzSW5mb1R5cGUyCQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGUzCQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGU0CQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGU1CQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGU2CQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGU3CQkJCQkJTlVMTCwKCS0tIGR1bW15LCBkdW1teTIgYW5kIGR1bW15MyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAoJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQuIElmIHRoZXkgYXJlIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KCWR1bW15CQkJCQkJCQlDZWxsVmFsdWVUYWcsCglkdW1teTIJCQkJCQkJCU5VTEwsCglkdW1teTMJCQkJCQkJCU5VTEwsCglzeXNJbmZvVHlwZTExCQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGUxMiAJCQkJCQlDZWxsVmFsdWVUYWcsCglzeXNJbmZvVHlwZTEzCQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGUxMy0xCQkJCQkJQ2VsbFZhbHVlVGFnLCAKCXN5c0luZm9UeXBlMTMtMgkJCQkJCUNlbGxWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTMtMwkJCQkJCUNlbGxWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTMtNAkJCQkJCUNlbGxWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTQJCQkJCQlOVUxMLAoJc3lzSW5mb1R5cGUxNQkJCQkJCUNlbGxWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTYJCQkJCQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHlBbmRWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTcJCQkJCQlOVUxMLAoJc3lzSW5mb1R5cGVTQjEJCQkJCQlDZWxsVmFsdWVUYWcsCglzeXNJbmZvVHlwZVNCMgkJCQkJCUNlbGxWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTUtMQkJCQkJCUNlbGxWYWx1ZVRhZywKCXN5c0luZm9UeXBlMTUtMgkJCQkJCVNJQk9jY3VycmVuY2VJZGVudGl0eUFuZFZhbHVlVGFnLAoJc3lzSW5mb1R5cGUxNS0zCQkJCQkJU0lCT2NjdXJyZW5jZUlkZW50aXR5QW5kVmFsdWVUYWcsCglzeXNJbmZvVHlwZTE1LTQJCQkJCQlDZWxsVmFsdWVUYWcsCglzeXNJbmZvVHlwZTE4CQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGUxNS01CQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3lzSW5mb1R5cGU1YmlzCQkJCQkJQ2VsbFZhbHVlVGFnLAoJc3BhcmUyCQkJCQkJCQlOVUxMLAoJc3BhcmUxCQkJCQkJCQlOVUxMCn0KClNpYk9GRiA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlzbzIsIHNvNCwgc282LCBzbzgsIHNvMTAsCgkJCQkJCQkJCQlzbzEyLCBzbzE0LCBzbzE2LCBzbzE4LAoJCQkJCQkJCQkJc28yMCwgc28yMiwgc28yNCwgc28yNiwKCQkJCQkJCQkJCXNvMjgsIHNvMzAsIHNvMzIgfQoKU2liT0ZGLUxpc3QgOjo9CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjE1KSkgT0YKCQkJCQkJCQkJCVNpYk9GRgoKU3lzSW5mb1R5cGUxIDo6PQkJCQkJU0VRVUVOQ0UgewoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCWNuLUNvbW1vbkdTTS1NQVAtTkFTLVN5c0luZm8JTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUCwJCgkJY24tRG9tYWluU3lzSW5mb0xpc3QJCQlDTi1Eb21haW5TeXNJbmZvTGlzdCwKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVlLUNvbm5UaW1lcnNBbmRDb25zdGFudHMJCVVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMJCQlPUFRJT05BTCwKCQl1ZS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzCQlVRS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzCQkJT1BUSU9OQUwsCgktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgoJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJc3lzSW5mb1R5cGUxLXYzYTBleHQJCVN5c0luZm9UeXBlMS12M2EwZXh0LUlFcywKCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7fSBPUFRJT05BTAoJCX0JCQkJCQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGUxLXYzYTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7Cgl1ZS1Db25uVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQJCVVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dCwKCXVlLUlkbGVUaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dAkJVUUtSWRsZVRpbWVyc0FuZENvbnN0YW50cy12M2EwZXh0Cn0KClN5c0luZm9UeXBlMiA6Oj0JCQkJCVNFUVVFTkNFIHsKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCXVyYS1JZGVudGl0eUxpc3QJCQkJVVJBLUlkZW50aXR5TGlzdCwKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGUzIDo6PQkJCQkJU0VRVUVOQ0UgewoJCXNpYjRpbmRpY2F0b3IJCQkJCUJPT0xFQU4sCgktLSBVVFJBTiBtb2JpbGl0eSBJRXMKCQljZWxsSWRlbnRpdHkJCQkJCUNlbGxJZGVudGl0eSwKCQljZWxsU2VsZWN0UmVzZWxlY3RJbmZvCQkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0zLTQsCgkJY2VsbEFjY2Vzc1Jlc3RyaWN0aW9uCQkJQ2VsbEFjY2Vzc1Jlc3RyaWN0aW9uLAoJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7IAoJCQlzeXNJbmZvVHlwZTMtdjRiMGV4dAkJCVN5c0luZm9UeXBlMy12NGIwZXh0LUlFcywKCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9uCQlTRVFVRU5DRSB7CgkJCQlzeXNJbmZvVHlwZTMtdjU5MGV4dAkJCVN5c0luZm9UeXBlMy12NTkwZXh0LAoJCQkJdjVjME5vbmNyaXRpY2FsRXh0ZW5zaW9uCQlTRVFVRU5DRSB7CgkJCQkJc3lzSW5mb1R5cGUzLXY1YzBleHQJCQlTeXNJbmZvVHlwZTMtdjVjMGV4dC1JRXMsCgkJCQkJdjY3ME5vbkNyaXRpY2FsRXh0ZW5zaW9uCQkJU0VRVUVOQ0UgewoJCQkJCQlzeXNJbmZvVHlwZTMtdjY3MGV4dAkJCQlTeXNJbmZvVHlwZTMtdjY3MGV4dCwKCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQlPUFRJT05BTAoJCQkJCX0JCQkJCQkJT1BUSU9OQUwKCQkJCX0JCQkJCQkJT1BUSU9OQUwKCQkJfSAJCQkJCQkJT1BUSU9OQUwKCQl9CQkJCQkJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlMy12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJbWFwcGluZy1MQ1IJCQkJCQlNYXBwaW5nLUxDUi1yNAkJCQkJCQlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTMtdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgewoJY2VsbFNlbGVjdFJlc2VsZWN0SW5mby12NTkwZXh0CQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvLXY1OTBleHQgCQlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTMtdjVjMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCWNlbGxTZWxlY3RSZXNlbGVjdEluZm9UcmVzZWxlY3Rpb25TY2FsaW5nLXY1YzBleHQKCQkJCQkJCQkJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm9UcmVzZWxlY3Rpb25TY2FsaW5nLXY1YzBleHQJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGUzLXY2NzBleHQgOjo9IFNFUVVFTkNFIHsKCSAJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtZXRlcnNGb3JQTE1OT2ZNSUIKCQkJCQkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQJT1BUSU9OQUwsCgkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0aWN0aW9uRm9yU2hhcmVkTmV0d29yawoJCQkJCQkJCQlEb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uRm9yU2hhcmVkTmV0d29yay12NjcwZXh0CU9QVElPTkFMCn0KClN5c0luZm9UeXBlNCA6Oj0JCQkJCVNFUVVFTkNFIHsKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCWNlbGxJZGVudGl0eQkJCQkJQ2VsbElkZW50aXR5LAoJCWNlbGxTZWxlY3RSZXNlbGVjdEluZm8JCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTMtNCwKCQljZWxsQWNjZXNzUmVzdHJpY3Rpb24JCQlDZWxsQWNjZXNzUmVzdHJpY3Rpb24sCgktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgoJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsgCgkJCXN5c0luZm9UeXBlNC12NGIwZXh0CQkJU3lzSW5mb1R5cGU0LXY0YjBleHQtSUVzLAoJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb24JCVNFUVVFTkNFIHsKCQkJCXN5c0luZm9UeXBlNC12NTkwZXh0CQkJU3lzSW5mb1R5cGU0LXY1OTBleHQsCgkJCQl2NWIwTm9uQ3JpdGljYWxFeHRlbnNpb24JCVNFUVVFTkNFIHsKCQkJCQlzeXNJbmZvVHlwZTQtdjViMGV4dAkJCVN5c0luZm9UeXBlNC12NWIwZXh0LUlFcywKCQkJCQl2NWMwTm9uQ3JpdGljYWxFeHRlbnNpb24JCQlTRVFVRU5DRSB7CgkJCQkJCXN5c0luZm9UeXBlNC12NWMwZXh0CQkJCVN5c0luZm9UeXBlNC12NWMwZXh0LUlFcywKCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0JT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0JT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGU0LXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgltYXBwaW5nLUxDUgkJCQkJCU1hcHBpbmctTENSLXI0CQkJCQkJCU9QVElPTkFMCn0KCgpTeXNJbmZvVHlwZTQtdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgewoJY2VsbFNlbGVjdFJlc2VsZWN0SW5mby12NTkwZXh0CQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvLXY1OTBleHQgCQlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTQtdjViMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCWNlbGxTZWxlY3RSZXNlbGVjdEluZm9QQ0hGQUNILXY1YjBleHQJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1BDSEZBQ0gtdjViMGV4dCAJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlNC12NWMwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJY2VsbFNlbGVjdFJlc2VsZWN0SW5mb1RyZXNlbGVjdGlvblNjYWxpbmctdjVjMGV4dAoJCQkJCQkJCQkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1RyZXNlbGVjdGlvblNjYWxpbmctdjVjMGV4dAlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTUgOjo9CQkJCQlTRVFVRU5DRSB7CgkJc2liNmluZGljYXRvcgkJCQkJQk9PTEVBTiwKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJcGljaC1Qb3dlck9mZnNldAkJCQlQSUNILVBvd2VyT2Zmc2V0LAoJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQlhaWNoLVBvd2VyT2Zmc2V0CQkJCUFJQ0gtUG93ZXJPZmZzZXQKCQkJfSwKCQkJdGRkCQkJCQkJCQlTRVFVRU5DRSB7CgktLSBJZiBQRFNDSC9QVVNDSCBpcyBjb25maWd1cmVkIGZvciAxLjI4TWNwcyBUREQsIHRoZSBmb2xsb3dpbmcgSUVzIHNob3VsZCBiZSBhYnNlbnQKCS0tICAgYW5kIHRoZSBpbmZvIGluY2x1ZGVkIGluIHRoZSB0ZGQxMjhTcGVjaWZpY0luZm8gaW5zdGVhZC4KCS0tIElmIFBEU0NIL1BVU0NIIGlzIGNvbmZpZ3VyZWQgZm9yIDMuODRNY3BzIFRERCBpbiBSNSwgSENSLXI1LVNwZWNpZmljSW5mbyBzaG91bGQgYWxzbyBiZSAKCS0tIGluY2x1ZGVkLiAKCQkJCXB1c2NoLVN5c0luZm9MaXN0LVNGTgkJCVBVU0NILVN5c0luZm9MaXN0LVNGTgkJT1BUSU9OQUwsCgkJCQlwZHNjaC1TeXNJbmZvTGlzdC1TRk4JCQlQRFNDSC1TeXNJbmZvTGlzdC1TRk4JCU9QVElPTkFMLAoJCQkJb3Blbkxvb3BQb3dlckNvbnRyb2wtVERECQlPcGVuTG9vcFBvd2VyQ29udHJvbC1UREQKCQkJfQoJCX0sCgkJcHJpbWFyeUNDUENILUluZm8JCQkJUHJpbWFyeUNDUENILUluZm8JCQkJCU9QVElPTkFMLAoJCXByYWNoLVN5c3RlbUluZm9ybWF0aW9uTGlzdAkJUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LAoJCXNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdCwKCQktLSBjYnMtRFJYLUxldmVsMUluZm9ybWF0aW9uIGlzIGNvbmRpdGlvbmFsIG9uIGFueSBvZiB0aGUgQ1RDSCBpbmRpY2F0b3IgSUVzIGluCgkJLS0gc0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdAoJCWNicy1EUlgtTGV2ZWwxSW5mb3JtYXRpb24JCUNCUy1EUlgtTGV2ZWwxSW5mb3JtYXRpb24JCQlPUFRJT05BTCwKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQlzeXNJbmZvVHlwZTUtdjRiMGV4dAkJCVN5c0luZm9UeXBlNS12NGIwZXh0LUlFcwkJT1BUSU9OQUwsCgkJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWwtNCBpbmZvcm1hdGlvbgoJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQlzeXNJbmZvVHlwZTUtdjU5MGV4dAkJCVN5c0luZm9UeXBlNS12NTkwZXh0LUlFcwkJT1BUSU9OQUwsCgkJCQl2NjUwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJc3lzSW5mb1R5cGU1LXY2NTBleHQJCQlTeXNJbmZvVHlwZTUtdjY1MGV4dC1JRXMJCU9QVElPTkFMLAoJCQkJCXY2ODBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJc3lzSW5mb1R5cGU1LXY2ODBleHQJCQlTeXNJbmZvVHlwZTUtdjY4MGV4dC1JRXMJCU9QVElPTkFMLAoJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQlzeXNJbmZvVHlwZTUtdjY5MGV4dAkJCVN5c0luZm9UeXBlNS12NjkwZXh0LUlFcywKCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJCQlzeXNJbmZvVHlwZTUtdjd4eWV4dAkJCVN5c0luZm9UeXBlNS12N3h5ZXh0LUlFcywKCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQlPUFRJT05BTAoJCQkJCQkJfQkJT1BUSU9OQUwKCQkJCQkJfQkJT1BUSU9OQUwKCQkJCQl9CQlPUFRJT05BTAoJCQkJfQkJT1BUSU9OQUwKCQkJfQkJT1BUSU9OQUwKCQl9CQlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTUtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tVGhlIGZvbGxvd2luZyBJRSBQTkJTQ0gtQWxsb2NhdGlvbi1yNCBzaGFsbCBiZSB1c2VkIGZvciAzLjg0TWNwcyBUREQgb25seS4KCXBOQlNDSC1BbGxvY2F0aW9uLXI0IAkJCVBOQlNDSC1BbGxvY2F0aW9uLXI0CQkJT1BUSU9OQUwsCgktLSBJbiBjYXNlIG9mIFRERCwgdGhlIGZvbGxvd2luZyBJRSBpcyBpbmNsdWRlZCBpbnN0ZWFkIG9mIHRoZQoJLS0gSUUgdXAtSVBETC1QYXJhbWV0ZXIgaW4gdXAtT1RET0EtQXNzaXN0YW5jZURhdGEuCglvcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERAlPcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERC1yNAlPUFRJT05BTCwKLS0gSWYgU3lzSW5mb1R5cGU1IGlzIHNlbnQgdG8gZGVzY3JpYmUgYSAxLjI4TWNwcyBUREQgY2VsbCwgdGhlIElFIFBSQUNILVJBQ0gtSW5mbyBpbmNsdWRlZCBpbgotLSBQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3Qgc2hhbGwgYmUgaWdub3JlZCwgdGhlIElFIFBSQUNILVBhcnRpdGlvbmluZyBhbmQgdGhlIAotLSBJRSByYWNoLVRyYW5zcG9ydEZvcm1hdFNldCBzaGFsbCBiZSBhYnNlbnQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIElFIGluIHRoZSBmb2xsb3dpbmcgCi0tIFBSQUNILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQgc2hhbGwgYmUgdXNlZAoJcHJhY2gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNAlQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtTENSLXI0CU9QVElPTkFMLCAKCXRkZDEyOFNwZWNpZmljSW5mbwkJCQlTRVFVRU5DRSB7CgkJcHVzY2gtU3lzSW5mb0xpc3QtU0ZOCQkJUFVTQ0gtU3lzSW5mb0xpc3QtU0ZOLUxDUi1yNAlPUFRJT05BTCwKCQlwZHNjaC1TeXNJbmZvTGlzdC1TRk4JCQlQRFNDSC1TeXNJbmZvTGlzdC1TRk4tTENSLXI0CU9QVElPTkFMLAoJCXBDQ1BDSC1MQ1ItRXh0ZW5zaW9ucwkJCVByaW1hcnlDQ1BDSC1JbmZvLUxDUi1yNC1leHQJT1BUSU9OQUwsCgkJc0NDUENILUxDUi1FeHRlbnNpb25zTGlzdAkJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQtZXh0Cgl9CQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAoJZnJlcXVlbmN5QmFuZEluZGljYXRvcgkJCVJhZGlvRnJlcXVlbmN5QmFuZEZERAkJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlNS12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJaGNyLXI1LVNwZWNpZmljSW5mbwkJCQlTRVFVRU5DRSB7CgkJcHVzY2gtU3lzSW5mb0xpc3QtU0ZOCQkJUFVTQ0gtU3lzSW5mb0xpc3QtU0ZOLUhDUi1yNQlPUFRJT05BTCwKCQlwZHNjaC1TeXNJbmZvTGlzdC1TRk4JCQlQRFNDSC1TeXNJbmZvTGlzdC1TRk4tSENSLXI1CU9QVElPTkFMCgl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTUtdjY1MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCWZyZXF1ZW5jeUJhbmRJbmRpY2F0b3IyCQkJUmFkaW9GcmVxdWVuY3lCYW5kRkREMgp9CgpTeXNJbmZvVHlwZTUtdjY4MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFRBQlVMQVI6IEhTRFBBIENlbGwgSW5kaWNhdG9yIGlzIE1EIGluIHRhYnVsYXIgZGVzY3JpcHRpb24KCS0tIERlZmF1bHQgdmFsdWUgaXMg1UhTRFBBIENhcGFiaWxpdHkgbm90IGluZGljYXRlZNUKCWhzZHBhLUNlbGxJbmRpY2F0b3IJCUVOVU1FUkFURUQgeyBoc2RwYS1DYXBhYmxlQ2VsbCB9CQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGU1LXY2OTBleHQtSUVzIDo6PQkJU0VRVUVOQ0UgewoJLS0gVEFCVUxBUjogRS1EQ0ggQ2VsbCBJbmRpY2F0b3IgaXMgTUQgaW4gdGFidWxhciBkZXNjcmlwdGlvbgoJLS0gRGVmYXVsdCB2YWx1ZSBpcyDVRS1EQ0ggQ2FwYWJpbGl0eSBub3QgaW5kaWNhdGVk1QoJZWRjaC1DZWxsSW5kaWNhdG9yCQkJCQlFTlVNRVJBVEVEIHsgZWRjaC1DYXBhYmxlQ2VsbCB9CQlPUFRJT05BTCwKCXNjY3BjaC1TeXN0ZW1JbmZvcm1hdGlvbi1NQk1TCQlDSE9JQ0UgewoJCW1jY2hPblNDQ1BDSHVzZWRGb3JOb25NQk1TCQkJTUJNUy1NQ0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2LAoJCW1jY2hPblNDQ1BDSHVzZWRPbmx5Rm9yTUJNUwkJCVNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbi1NQk1TLXI2Cgl9CQlPUFRJT05BTCwKCWFkZGl0aW9uYWxQUkFDSC1URi1hbmQtVEZDUy1DQ0NILUxpc3QJQWRkaXRpb25hbFBSQUNILVRGLWFuZC1URkNTLUNDQ0gtTGlzdAlPUFRJT05BTCwKCWNCUy1EUlgtTGV2ZWwxSW5mb3JtYXRpb24tZXh0ZW5zaW9uCQlDQlMtRFJYLUxldmVsMUluZm9ybWF0aW9uLWV4dGVuc2lvbi1yNglPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTUtdjd4eWV4dC1JRXMgOjo9CQlTRVFVRU5DRSB7CglwdXNjaC1TeXNJbmZvTGlzdC1TRk4tVkhDUgkJCVBVU0NILVN5c0luZm9MaXN0LVNGTi1WSENSCQlPUFRJT05BTCwKCXByYWNoLVN5c3RlbUluZm9ybWF0aW9uTGlzdC1yNwkJUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LXI3CU9QVElPTkFMLAoJcGRzY2gtU3lzSW5mb0xpc3QtU0ZOLXI3CQkJUERTQ0gtU3lzSW5mb0xpc3QtcjcJCQlPUFRJT05BTCwKCXNjY3BjaC1TeXN0ZW1JbmZvcm1hdGlvbi1NQk1TCQlDSE9JQ0UgewoJCW1jY2hPblNDQ1BDSHVzZWRGb3JOb25NQk1TCQkJTUJNUy1NQ0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2LAoJCW1jY2hPblNDQ1BDSHVzZWRPbmx5Rm9yTUJNUwkJCVNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbi1NQk1TLXI3Cgl9CQlPUFRJT05BTCwKCXNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtcjcJCVNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtcjcJT1BUSU9OQUwKfQoKCi0tIFN5c0luZm9UeXBlNWJpcyB1c2VzIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyBTeXNJbmZvVHlwZTUKU3lzSW5mb1R5cGU1YmlzIDo6PSBTeXNJbmZvVHlwZTUKClN5c0luZm9UeXBlNiA6Oj0JCQkJCVNFUVVFTkNFIHsKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJcGljaC1Qb3dlck9mZnNldAkJCQlQSUNILVBvd2VyT2Zmc2V0LAoJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQlhaWNoLVBvd2VyT2Zmc2V0CQkJCUFJQ0gtUG93ZXJPZmZzZXQsCgkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCgkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJCQlkdW1teQkJCQkJCQlDU0lDSC1Qb3dlck9mZnNldAkJCU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJLS0gSWYgUERTQ0gvUFVTQ0ggaXMgY29uZmlndXJlZCBmb3IgMS4yOE1jcHMgVERELCBwdXNjaC1TeXNJbmZvTGlzdC1TRk4sCgkJCQktLSBwZHNjaC1TeXNJbmZvTGlzdC1TRk4gYW5kIG9wZW5Mb29wUG93ZXJDb250cm9sLVRERCBzaG91bGQgYmUgYWJzZW50CgkJCQktLSBhbmQgdGhlIGluZm8gaW5jbHVkZWQgaW4gdGhlIHRkZDEyOFNwZWNpZmljSW5mbyBpbnN0ZWFkLgoJCQkJLS0gSWYgUERTQ0gvUFVTQ0ggaXMgY29uZmlndXJlZCBmb3IgMy44NE1jcHMgVEREIGluIFI1LCBIQ1ItcjUtU3BlY2lmaWNJbmZvIHNob3VsZCAKCQkJCS0tIGFsc28gYmUgaW5jbHVkZWQuCgkJCQlwdXNjaC1TeXNJbmZvTGlzdC1TRk4JCQlQVVNDSC1TeXNJbmZvTGlzdC1TRk4JCU9QVElPTkFMLAoJCQkJcGRzY2gtU3lzSW5mb0xpc3QtU0ZOCQkJUERTQ0gtU3lzSW5mb0xpc3QtU0ZOCQlPUFRJT05BTCwKCQkJCW9wZW5Mb29wUG93ZXJDb250cm9sLVRERAkJT3Blbkxvb3BQb3dlckNvbnRyb2wtVERECgkJCX0KCQl9LAoJCXByaW1hcnlDQ1BDSC1JbmZvCQkJCVByaW1hcnlDQ1BDSC1JbmZvCQkJCQlPUFRJT05BTCwKCQlwcmFjaC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QJCVBSQUNILVN5c3RlbUluZm9ybWF0aW9uTGlzdAkJCU9QVElPTkFMLAoJCXNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdAkJT1BUSU9OQUwsCgkJY2JzLURSWC1MZXZlbDFJbmZvcm1hdGlvbgkJQ0JTLURSWC1MZXZlbDFJbmZvcm1hdGlvbgkJCU9QVElPTkFMLAoJCS0tIENvbmRpdGlvbmFsIG9uIGFueSBvZiB0aGUgQ1RDSCBpbmRpY2F0b3IgSUVzIGluCgkJLS0gc0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdAoJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCXN5c0luZm9UeXBlNi12NGIwZXh0CQkJU3lzSW5mb1R5cGU2LXY0YjBleHQtSUVzCQlPUFRJT05BTCwKCQktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbC00IGluZm9ybWF0aW9uCgkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJU0VRVUVOQ0UgewoJCQkJc3lzSW5mb1R5cGU2LXY1OTBleHQJCQlTeXNJbmZvVHlwZTYtdjU5MGV4dC1JRXMJCU9QVElPTkFMLAoJCQkJdjY1MG5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCXN5c0luZm9UeXBlNi12NjUwZXh0CQkJU3lzSW5mb1R5cGU2LXY2NTBleHQtSUVzCQlPUFRJT05BTCwKCQkJCQl2Njkwbm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCXN5c0luZm9UeXBlNi12NjkwZXh0CQkJU3lzSW5mb1R5cGU2LXY2OTBleHQtSUVzLAoJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQlzeXNJbmZvVHlwZTYtdjd4eWV4dAkJCVN5c0luZm9UeXBlNi12N3h5ZXh0LUlFcywKCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQlPUFRJT05BTAoJCQkJCQl9CU9QVElPTkFMCgkJCQkJfQkJCQkJCQlPUFRJT05BTAoJCQkJfQkJCQkJCQlPUFRJT05BTAoJCQl9CQkJCQkJCU9QVElPTkFMCgkJfQkJCQkJCQlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTYtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIG9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVEREIGlzIHByZXNlbnQgb25seSBpZiBJUERMcyBhcmUgYXBwbGllZCBmb3IgVERECglvcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERAlPcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERC1yNAlPUFRJT05BTCwKCS0tIElmIFN5c0luZm9UeXBlNiBpcyBzZW50IHRvIGRlc2NyaWJlIGEgMS4yOE1jcHMgVEREIGNlbGwsIHRoZSBJRSBQUkFDSC1SQUNILUluZm8gaW5jbHVkZWQKCS0tIGluIFBSQUNILVN5c3RlbUluZm9ybWF0aW9uTGlzdCBzaGFsbCBiZSBpZ25vcmVkLCB0aGUgSUUgUFJBQ0gtUGFydGl0aW9uaW5nIGFuZCB0aGUgCgktLSBJRSByYWNoLVRyYW5zcG9ydEZvcm1hdFNldCBzaGFsbCBiZSBhYnNlbnQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIElFcyBpbiB0aGUgZm9sbG93aW5nIAoJLS0gUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNCBzaGFsbCBiZSB1c2VkCglwcmFjaC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtTENSLXI0CVBSQUNILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQJT1BUSU9OQUwsIAoJdGRkMTI4U3BlY2lmaWNJbmZvCQkJCVNFUVVFTkNFIHsKCQlwdXNjaC1TeXNJbmZvTGlzdC1TRk4JCQlQVVNDSC1TeXNJbmZvTGlzdC1TRk4tTENSLXI0CU9QVElPTkFMLAoJCXBkc2NoLVN5c0luZm9MaXN0LVNGTgkJCVBEU0NILVN5c0luZm9MaXN0LVNGTi1MQ1ItcjQJT1BUSU9OQUwsCgkJcENDUENILUxDUi1FeHRlbnNpb25zCQkJUHJpbWFyeUNDUENILUluZm8tTENSLXI0LWV4dAlPUFRJT05BTCwKCQlzQ0NQQ0gtTENSLUV4dGVuc2lvbnNMaXN0CQlTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNC1leHQJT1BUSU9OQUwKCX0JCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCglmcmVxdWVuY3lCYW5kSW5kaWNhdG9yCQkJUmFkaW9GcmVxdWVuY3lCYW5kRkRECQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGU2LXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgloY3ItcjUtU3BlY2lmaWNJbmZvCQkJCVNFUVVFTkNFIHsKCQlwdXNjaC1TeXNJbmZvTGlzdC1TRk4JCQlQVVNDSC1TeXNJbmZvTGlzdC1TRk4tSENSLXI1CU9QVElPTkFMLAoJCXBkc2NoLVN5c0luZm9MaXN0LVNGTgkJCVBEU0NILVN5c0luZm9MaXN0LVNGTi1IQ1ItcjUJT1BUSU9OQUwKCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlNi12NjUwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJZnJlcXVlbmN5QmFuZEluZGljYXRvcjIJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRGREQyCn0KClN5c0luZm9UeXBlNi12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJYWRkaXRpb25hbFBSQUNILVRGLWFuZC1URkNTLUNDQ0gtTGlzdAlBZGRpdGlvbmFsUFJBQ0gtVEYtYW5kLVRGQ1MtQ0NDSC1MaXN0CU9QVElPTkFMCn0KClN5c0luZm9UeXBlNi12N3h5ZXh0LUlFcyA6Oj0JCVNFUVVFTkNFIHsKCXB1c2NoLVN5c0luZm9MaXN0LVNGTi1WSENSCQkJUFVTQ0gtU3lzSW5mb0xpc3QtU0ZOLVZIQ1IJCU9QVElPTkFMLAoJcGRzY2gtU3lzSW5mb0xpc3QtU0ZOLXI3CQkJUERTQ0gtU3lzSW5mb0xpc3QtcjcJCQlPUFRJT05BTCwKCXByYWNoLVN5c3RlbUluZm9ybWF0aW9uTGlzdC1yNwkJUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LXI3CU9QVElPTkFMLAoJc0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1yNwkJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1yNwlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTcgOjo9CQkJCQlTRVFVRU5DRSB7CgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQl1bC1JbnRlcmZlcmVuY2UJCQkJCVVMLUludGVyZmVyZW5jZQoJCQl9LAoJCQl0ZGQJCQkJCQkJCU5VTEwKCQl9LAoJCXByYWNoLUluZm9ybWF0aW9uLVNJQjUtTGlzdAkJRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWxMaXN0LAoJCXByYWNoLUluZm9ybWF0aW9uLVNJQjYtTGlzdAkJRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWxMaXN0CQkJT1BUSU9OQUwsCgkJZXhwaXJhdGlvblRpbWVGYWN0b3IJCQlFeHBpcmF0aW9uVGltZUZhY3RvcgkJCQlPUFRJT05BTCwKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKfQoKLS0gVGhpcyBJRSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24uCi0tIEl0IHdhcyBrZXB0IG9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMKU3lzSW5mb1R5cGU4IDo6PQkJCQkJU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJLS0gZHVtbXkxLCBkdW1teTIsIGR1bW15MyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAoJCS0tIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgoJCWR1bW15MQkJCQkJCQlDUENILVBhcmFtZXRlcnMsCgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCWR1bW15MgkJCQkJCQlDUENILVNldEluZm9MaXN0LAoJCWR1bW15MwkJCQkJCQlDU0lDSC1Qb3dlck9mZnNldCwKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKfQoKLS0gVGhpcyBJRSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24uCi0tIEl0IHdhcyBrZXB0IG9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMKU3lzSW5mb1R5cGU5IDo6PQkJCQkJU0VRVUVOQ0UgewoJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kCgkJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgoJCWR1bW15CQkJCQkJCUNQQ0gtUGVyc2lzdGVuY2VMZXZlbHNMaXN0LAoJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCQlPUFRJT05BTAp9CgotLSBUaGlzIElFIGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KLS0gSXQgd2FzIGtlcHQgb25seSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucwpTeXNJbmZvVHlwZTEwIDo6PQkJCQkJU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgkJZHVtbXkJCQkJCQkJRFJBQy1TeXNJbmZvTGlzdCwKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGUxMSA6Oj0JCQkJCVNFUVVFTkNFIHsKCQlzaWIxMmluZGljYXRvcgkJCQkJQk9PTEVBTiwKCS0tIE1lYXN1cmVtZW50IElFcwoJCWZhY2gtTWVhc3VyZW1lbnRPY2Nhc2lvbkluZm8JRkFDSC1NZWFzdXJlbWVudE9jY2FzaW9uSW5mbwkJT1BUSU9OQUwsCgkJbWVhc3VyZW1lbnRDb250cm9sU3lzSW5mbwkJTWVhc3VyZW1lbnRDb250cm9sU3lzSW5mbywKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQlzeXNJbmZvVHlwZTExLXY0YjBleHQJCQlTeXNJbmZvVHlwZTExLXY0YjBleHQtSUVzCQlPUFRJT05BTCwKCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9uCQlTRVFVRU5DRSB7CgkJCQlzeXNJbmZvVHlwZTExLXY1OTBleHQJCQlTeXNJbmZvVHlwZTExLXY1OTBleHQtSUVzLAoJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQlzeXNJbmZvVHlwZTExLXY2OTBleHQJCQlTeXNJbmZvVHlwZTExLXY2OTBleHQtSUVzLAoJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJT1BUSU9OQUwKCQkJCX0JCQkJCQkJT1BUSU9OQUwKCQkJfQkJCQkJCQlPUFRJT05BTAoJCX0JCQkJCQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGUxMS12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJZmFjaC1NZWFzdXJlbWVudE9jY2FzaW9uSW5mby1MQ1ItRXh0CUZBQ0gtTWVhc3VyZW1lbnRPY2Nhc2lvbkluZm8tTENSLXI0LWV4dAlPUFRJT05BTCwKCW1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8tTENSCQkJTWVhc3VyZW1lbnRDb250cm9sU3lzSW5mby1MQ1ItcjQtZXh0Cn0KClN5c0luZm9UeXBlMTEtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tVGhlIG9yZGVyIG9mIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmRlciBvZiBjZWxsIGluIG5ld0ludHJhRnJlcXVlbmN5Q2VsbEluZm9MaXN0CgluZXdJbnRyYUZyZXF1ZW5jeUNlbGxJbmZvTGlzdC12NTkwZXh0CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQkJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dAlPUFRJT05BTCwKCS0tVGhlIG9yZGVyIG9mIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmRlciBvZiBjZWxsIGluIG5ld0ludGVyRnJlcXVlbmN5Q2VsbEluZm9MaXN0CgluZXdJbnRlckZyZXF1ZW5jeUNlbGxJbmZvTGlzdC12NTkwZXh0CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQkJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dAlPUFRJT05BTCwKCS0tVGhlIG9yZGVyIG9mIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmRlciBvZiBjZWxsIGluIG5ld0ludGVyUkFUQ2VsbEluZm9MaXN0CgluZXdJbnRlclJBVENlbGxJbmZvTGlzdC12NTkwZXh0CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKCQkJCQkJCQkJCQkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mby12NTkwZXh0CU9QVElPTkFMLAoJaW50cmFGcmVxRXZlbnRDcml0ZXJpYUxpc3QtdjU5MGV4dAkJSW50cmEtRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQJCU9QVElPTkFMLAoJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1CU9QVElPTkFMLAoJaW50cmFGcmVxRXZlbnQtMWQtcjUJCQkJCUludHJhRnJlcUV2ZW50LTFkLXI1CQkJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTEtdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIE1lYXN1cmVtZW50IElFcwoJaW50ZXJGcmVxUkFDSFJlcG9ydGluZ0luZm8JCQlJbnRlckZyZXFSQUNIUmVwb3J0aW5nSW5mbwkJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTIgOjo9CQkJCQlTRVFVRU5DRSB7CgktLSBNZWFzdXJlbWVudCBJRXMKCQlmYWNoLU1lYXN1cmVtZW50T2NjYXNpb25JbmZvCUZBQ0gtTWVhc3VyZW1lbnRPY2Nhc2lvbkluZm8JCU9QVElPTkFMLAoJCW1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8JCU1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8sCgktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgoJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJc3lzSW5mb1R5cGUxMi12NGIwZXh0CQkJU3lzSW5mb1R5cGUxMi12NGIwZXh0LUlFcwkJT1BUSU9OQUwsCgkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbgkJU0VRVUVOQ0UgewoJCQkJc3lzSW5mb1R5cGUxMi12NTkwZXh0CQkJU3lzSW5mb1R5cGUxMi12NTkwZXh0LUlFcywKCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJc3lzSW5mb1R5cGUxMi12NjkwZXh0CQkJU3lzSW5mb1R5cGUxMi12NjkwZXh0LUlFcywKCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCU9QVElPTkFMCgkJCQl9CQkJCQkJCU9QVElPTkFMCgkJCX0JCQkJCQkJT1BUSU9OQUwKCQl9CQkJCQkJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTItdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCWZhY2gtTWVhc3VyZW1lbnRPY2Nhc2lvbkluZm8tTENSLUV4dAlGQUNILU1lYXN1cmVtZW50T2NjYXNpb25JbmZvLUxDUi1yNC1leHQJT1BUSU9OQUwsCgltZWFzdXJlbWVudENvbnRyb2xTeXNJbmZvLUxDUgkJCU1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8tTENSLXI0LWV4dAp9CgpTeXNJbmZvVHlwZTEyLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgY2VsbCBpbiBuZXdJbnRyYUZyZXF1ZW5jeUNlbGxJbmZvTGlzdAoJbmV3SW50cmFGcmVxdWVuY3lDZWxsSW5mb0xpc3QtdjU5MGV4dAlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvLXY1OTBleHQJT1BUSU9OQUwsCgktLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgY2VsbCBpbiBuZXdJbnRlckZyZXF1ZW5jeUNlbGxJbmZvTGlzdAoJbmV3SW50ZXJGcmVxdWVuY3lDZWxsSW5mb0xpc3QtdjU5MGV4dAlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgoJCQkJCQkJCQkJCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvLXY1OTBleHQJT1BUSU9OQUwsCgktLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgY2VsbCBpbiBuZXdJbnRlclJBVENlbGxJbmZvTGlzdAoJbmV3SW50ZXJSQVRDZWxsSW5mb0xpc3QtdjU5MGV4dAkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCgkJCQkJCQkJCQkJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dAlPUFRJT05BTCwKCWludHJhRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQJCUludHJhLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0CQlPUFRJT05BTCwKCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1CQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS0xYi1yNQlPUFRJT05BTCwKCWludHJhRnJlcUV2ZW50LTFkLXI1CQkJCQlJbnRyYUZyZXFFdmVudC0xZC1yNQkJCQlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTEyLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBNZWFzdXJlbWVudCBJRXMKCWludGVyRnJlcVJBQ0hSZXBvcnRpbmdJbmZvCQkJSW50ZXJGcmVxUkFDSFJlcG9ydGluZ0luZm8JCQlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTEzIDo6PQkJCQkJU0VRVUVOQ0UgewoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCWNuLURvbWFpblN5c0luZm9MaXN0CQkJQ04tRG9tYWluU3lzSW5mb0xpc3QsCgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQl1ZS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzCQlVRS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzCQkJT1BUSU9OQUwsCgkJY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50CQlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQJCQlPUFRJT05BTCwKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsgCgkJCXN5c0luZm9UeXBlMTMtdjNhMGV4dAkJCVN5c0luZm9UeXBlMTMtdjNhMGV4dC1JRXMsCgkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCXN5c0luZm9UeXBlMTMtdjRiMGV4dAkJCVN5c0luZm9UeXBlMTMtdjRiMGV4dC1JRXMsCgkJCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJc3lzSW5mb1R5cGUxMy12N3h5ZXh0CQkJU3lzSW5mb1R5cGUxMy12N3h5ZXh0LUlFcywKCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCU9QVElPTkFMCgkJCQl9CQkJCQkJCU9QVElPTkFMCgkJCX0JCQkJCQkJT1BUSU9OQUwKCQl9CQkJCQkJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTMtdjNhMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCXVlLUlkbGVUaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dAkJVUUtSWRsZVRpbWVyc0FuZENvbnN0YW50cy12M2EwZXh0Cn0KClN5c0luZm9UeXBlMTMtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNEV4dAlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQtZXh0CU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTMtdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yN0V4dAlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjctZXh0CU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTMtMSA6Oj0JCQkJCVNFUVVFTkNFIHsKCS0tIEFOU0ktNDEgSUVzCgkJYW5zaS00MS1SQU5ELUluZm9ybWF0aW9uCQlBTlNJLTQxLVJBTkQtSW5mb3JtYXRpb24sCgktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgoJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTMtMiA6Oj0JCQkJCVNFUVVFTkNFIHsKCS0tIEFOU0ktNDEgSUVzCgkJYW5zaS00MS1Vc2VyWm9uZUlELUluZm9ybWF0aW9uCUFOU0ktNDEtVXNlclpvbmVJRC1JbmZvcm1hdGlvbiwKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGUxMy0zIDo6PQkJCQkJU0VRVUVOQ0UgewoJLS0gQU5TSS00MSBJRXMKCQlhbnNpLTQxLVByaXZhdGVOZWlnaGJvdXJMaXN0SW5mbyBBTlNJLTQxLVByaXZhdGVOZWlnaGJvdXJMaXN0SW5mbywKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGUxMy00IDo6PQkJCQkJU0VRVUVOQ0UgewoJLS0gQU5TSS00MSBJRXMKCQlhbnNpLTQxLUdsb2JhbFNlcnZpY2VSZWRpcmVjdEluZm8KCQkJCQkJCQkJCUFOU0ktNDEtR2xvYmFsU2VydmljZVJlZGlyZWN0SW5mbywKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGUxNCA6Oj0JCQkJCVNFUVVFTkNFIHsKCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCgkJaW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QJSW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QsCgkJZXhwaXJhdGlvblRpbWVGYWN0b3IJCQlFeHBpcmF0aW9uVGltZUZhY3RvcgkJCQlPUFRJT05BTCwKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGUxNSA6Oj0JCQkJCVNFUVVFTkNFIHsKCS0tIE1lYXN1cmVtZW50IElFcwoJCQoJCXVlLXBvc2l0aW9uaW5nLUdQUy1DaXBoZXJQYXJhbWV0ZXJzCQlVRS1Qb3NpdGlvbmluZy1DaXBoZXJQYXJhbWV0ZXJzCQlPUFRJT05BTCwKCQl1ZS1wb3NpdGlvbmluZy1HUFMtUmVmZXJlbmNlTG9jYXRpb24JUmVmZXJlbmNlTG9jYXRpb24sCgkJdWUtcG9zaXRpb25pbmctR1BTLVJlZmVyZW5jZVRpbWUJCVVFLVBvc2l0aW9uaW5nLUdQUy1SZWZlcmVuY2VUaW1lLAoKCQl1ZS1wb3NpdGlvbmluZy1HUFMtUmVhbC10aW1lSW50ZWdyaXR5CQlCYWRTYXRMaXN0CQkJCQkJCU9QVElPTkFMLAoJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeyAKCQkJc3lzSW5mb1R5cGUxNS12NGIwZXh0CQkJCVN5c0luZm9UeXBlMTUtdjRiMGV4dC1JRXMsCgkJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlNCBpbmZvcm1hdGlvbgoJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCQkJT1BUSU9OQUwKCQl9CU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTUtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCXVwLUlwZGwtUGFyYW1ldGVycy1UREQJCQlVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMtVERELXI0LWV4dAlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTE1LTEgOjo9CQkJCQlTRVFVRU5DRSB7CgktLSBER1BTIGNvcnJlY3Rpb25zCgkJdWUtcG9zaXRpb25pbmctR1BTLURHUFMtQ29ycmVjdGlvbnMJCQlVRS1Qb3NpdGlvbmluZy1HUFMtREdQUy1Db3JyZWN0aW9ucywKCgktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgoJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCU9QVElPTkFMCn0gCgpTeXNJbmZvVHlwZTE1LTIgOjo9CQkJCQlTRVFVRU5DRSB7CgktLSBFcGhlbWVyaXMgYW5kIGNsb2NrIGNvcnJlY3Rpb25zCgkJdHJhbnNtaXNzaW9uVE9XCQkJCQlJTlRFR0VSICgwLi42MDQ3OTkpLAoJCXNhdElECQkJCQkJCVNhdElELAoJCWVwaGVtZXJpc1BhcmFtZXRlcgkJCQlFcGhlbWVyaXNQYXJhbWV0ZXIsCgoJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCU9QVElPTkFMCn0gCgpTeXNJbmZvVHlwZTE1LTMgOjo9CQkJCQlTRVFVRU5DRSB7CgktLSBBbG1hbmFjIGFuZCBvdGhlciBkYXRhCgkJdHJhbnNtaXNzaW9uVE9XCQkJCQlJTlRFR0VSICgwLi4gNjA0Nzk5KSwKCQl1ZS1wb3NpdGlvbmluZy1HUFMtQWxtYW5hYwkJCQkJVUUtUG9zaXRpb25pbmctR1BTLUFsbWFuYWMJCQkJT1BUSU9OQUwsCgkJdWUtcG9zaXRpb25pbmctR1BTLUlvbm9zcGhlcmljTW9kZWwJCQlVRS1Qb3NpdGlvbmluZy1HUFMtSW9ub3NwaGVyaWNNb2RlbAkJT1BUSU9OQUwsCgkJdWUtcG9zaXRpb25pbmctR1BTLVVUQy1Nb2RlbAkJCQlVRS1Qb3NpdGlvbmluZy1HUFMtVVRDLU1vZGVsCQkJT1BUSU9OQUwsCgkJc2F0TWFzawkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxLi4zMikpCU9QVElPTkFMLAoJCWxzYlRPVwkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSkJCU9QVElPTkFMLAoJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJT1BUSU9OQUwKfSAKClN5c0luZm9UeXBlMTUtNCA6Oj0JCQkJCVNFUVVFTkNFIHsKCS0tIE1lYXN1cmVtZW50IElFcwoJCXVlLXBvc2l0aW9uaW5nLU9URE9BLUNpcGhlclBhcmFtZXRlcnMJVUUtUG9zaXRpb25pbmctQ2lwaGVyUGFyYW1ldGVycwkJCU9QVElPTkFMLAoJCXVlLXBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YSwKCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQlzeXNJbmZvVHlwZTE1LTQtdjNhMGV4dAkJCQlTeXNJbmZvVHlwZTE1LTQtdjNhMGV4dCwKCQktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgoJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJc3lzSW5mb1R5cGUxNS00LXY0YjBleHQJCQkJU3lzSW5mb1R5cGUxNS00LXY0YjBleHQsCgkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJCX0JT1BUSU9OQUwKCQl9CU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTUtNC12M2EwZXh0IDo6PSBTRVFVRU5DRSB7CglzZm4tT2Zmc2V0LVZhbGlkaXR5CQkJCVNGTi1PZmZzZXQtVmFsaWRpdHkJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTUtNC12NGIwZXh0IDo6PSBTRVFVRU5DRSB7Cgl1ZS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1yNGV4dAlVRS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1yNGV4dAlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTE1LTUgOjo9CQkJCQlTRVFVRU5DRSB7CgktLSBNZWFzdXJlbWVudCBJRXMKCQl1ZS1wb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1VRUIJCVVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLVVFQiwKCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQlzeXNJbmZvVHlwZTE1LTUtdjNhMGV4dAkJCQlTeXNJbmZvVHlwZTE1LTUtdjNhMGV4dCwKCQktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgoJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCgkJfQlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTE1LTUtdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgewoJc2ZuLU9mZnNldC1WYWxpZGl0eQkJCVNGTi1PZmZzZXQtVmFsaWRpdHkJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTYgOjo9CQkJCQlTRVFVRU5DRSB7CgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJcHJlRGVmaW5lZFJhZGlvQ29uZmlndXJhdGlvbglQcmVEZWZSYWRpb0NvbmZpZ3VyYXRpb24sCgktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgoJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTcgOjo9CQkJCQlTRVFVRU5DRSB7CgktLSBQaHlzaWNhbCBjaGFubmVsIElFcwoJCS0tIElmIFBEU0NIL1BVU0NIIGlzIGNvbmZpZ3VyZWQgZm9yIDEuMjhNY3BzIFRERCwgcHVzY2gtU3lzSW5mb0xpc3QgYW5kCgkJLS0gcGRzY2gtU3lzSW5mb0xpc3Qgc2hvdWxkIGJlIGFic2VudCBhbmQgdGhlIGluZm8gaW5jbHVkZWQgaW4gdGhlCgkJLS0gdGRkMTI4U3BlY2lmaWNJbmZvIGluc3RlYWQuCgkJLS0gSWYgUERTQ0gvUFVTQ0ggaXMgY29uZmlndXJlZCBmb3IgMy44NE1jcHMgVEREIGluIFI1LCBIQ1ItcjUtU3BlY2lmaWNJbmZvIHNob3VsZCBhbHNvIGJlIAoJCS0tIGluY2x1ZGVkLgoJCXB1c2NoLVN5c0luZm9MaXN0CQkJCVBVU0NILVN5c0luZm9MaXN0CQkJCU9QVElPTkFMLAoJCXBkc2NoLVN5c0luZm9MaXN0CQkJCVBEU0NILVN5c0luZm9MaXN0CQkJCU9QVElPTkFMLAoJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCXN5c0luZm9UeXBlMTctdjRiMGV4dAkJCVN5c0luZm9UeXBlMTctdjRiMGV4dC1JRXMsCgkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJU0VRVUVOQ0UgewoJCQkJc3lzSW5mb1R5cGUxNy12NTkwZXh0CQkJU3lzSW5mb1R5cGUxNy12NTkwZXh0LUlFcwkJT1BUSU9OQUwsCgkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJc3lzSW5mb1R5cGUxNy12N3h5ZXh0CQkJU3lzSW5mb1R5cGUxNy12N3h5ZXh0LUlFcywKCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQlPUFRJT05BTAoJCQkJfQkJCQkJCQlPUFRJT05BTAoJCQl9CQkJCQkJCU9QVElPTkFMCgkJfQkJCQkJCQlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTE3LXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7Cgl0ZGQxMjhTcGVjaWZpY0luZm8JCQkJU0VRVUVOQ0UgewoJCXB1c2NoLVN5c0luZm9MaXN0CQkJCVBVU0NILVN5c0luZm9MaXN0LUxDUi1yNAkJT1BUSU9OQUwsCgkJcGRzY2gtU3lzSW5mb0xpc3QJCQkJUERTQ0gtU3lzSW5mb0xpc3QtTENSLXI0CQlPUFRJT05BTAoJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGUxNy12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJaGNyLXI1LVNwZWNpZmljSW5mbwkJCQlTRVFVRU5DRSB7CgkJcHVzY2gtU3lzSW5mb0xpc3QJCQlQVVNDSC1TeXNJbmZvTGlzdC1IQ1ItcjUJT1BUSU9OQUwsCgkJcGRzY2gtU3lzSW5mb0xpc3QJCQlQRFNDSC1TeXNJbmZvTGlzdC1IQ1ItcjUJT1BUSU9OQUwKCX0JCQkJCQkJCQkJCQkJCQlPUFRJT05BTAp9CgpTeXNJbmZvVHlwZTE3LXY3eHlleHQtSUVzIDo6PQkJU0VRVUVOQ0UgewoJcHVzY2gtU3lzSW5mb0xpc3QtU0ZOLVZIQ1IJCQlQVVNDSC1TeXNJbmZvTGlzdC1TRk4tVkhDUgkJT1BUSU9OQUwsCglwZHNjaC1TeXNJbmZvTGlzdC1yNwkJCQlQRFNDSC1TeXNJbmZvTGlzdC1yNwkJCU9QVElPTkFMCn0KClN5c0luZm9UeXBlMTggOjo9CQkJCQkJU0VRVUVOQ0UgewoJCWlkbGVNb2RlUExNTklkZW50aXRpZXMJCQlQTE1OSWRlbnRpdGllc09mTmVpZ2hib3VyQ2VsbHMJCU9QVElPTkFMLAoJCWNvbm5lY3RlZE1vZGVQTE1OSWRlbnRpdGllcwlQTE1OSWRlbnRpdGllc09mTmVpZ2hib3VyQ2VsbHMJCU9QVElPTkFMLAoJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGVTQjEgOjo9CQkJCQlTRVFVRU5DRSB7CgktLSBPdGhlciBJRXMKCQlzaWItUmVmZXJlbmNlTGlzdAkJCQlTSUItUmVmZXJlbmNlTGlzdCwKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKfQoKU3lzSW5mb1R5cGVTQjIgOjo9CQkJCQlTRVFVRU5DRSB7CgktLSBPdGhlciBJRXMKCQlzaWItUmVmZXJlbmNlTGlzdAkJCQlTSUItUmVmZXJlbmNlTGlzdCwKCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKfQoKVERELVVNVFMtRnJlcXVlbmN5LUxpc3QgOjo9IAkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhOdW1URERGcmVxcykpIE9GCgkJCQkJCQkJCQkJRnJlcXVlbmN5SW5mb1RERAoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tICAgICBBTlNJLTQxIElORk9STUFUSU9OIEVMRU1FTlRTICgxMC4zLjkpCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKQU5TSS00MS1HbG9iYWxTZXJ2aWNlUmVkaXJlY3RJbmZvIDo6PSAJQU5TSS00MS1OQVMtUGFyYW1ldGVyCkFOU0ktNDEtUHJpdmF0ZU5laWdoYm91ckxpc3RJbmZvIDo6PSAJQU5TSS00MS1OQVMtUGFyYW1ldGVyCkFOU0ktNDEtUkFORC1JbmZvcm1hdGlvbiA6Oj0JCQlBTlNJLTQxLU5BUy1QYXJhbWV0ZXIKQU5TSS00MS1Vc2VyWm9uZUlELUluZm9ybWF0aW9uIDo6PSAJCUFOU0ktNDEtTkFTLVBhcmFtZXRlcgpBTlNJLTQxLU5BUy1QYXJhbWV0ZXIgOjo9CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEuLjIwNDgpKQoKTWluLVAtUkVWIDo6PQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSkKCk5BUy1TeXN0ZW1JbmZvcm1hdGlvbkFOU0ktNDEgOjo9CQlBTlNJLTQxLU5BUy1QYXJhbWV0ZXIKTklEIDo6PQkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSkKClAtUkVWIDo6PQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpCgpTSUQgOjo9CQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTUpKQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tICAgICBNQk1TIElORk9STUFUSU9OIEVMRU1FTlRTICgxMC4zLjlhKQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCk1CTVMtQWNjZXNzUHJvYmFiaWxpdHlGYWN0b3IgOjo9CUVOVU1FUkFURUQgewoJCQkJCQkJCQkJYXBmMCwgYXBmMzIsIGFwZjY0LCBhcGY5NiwgYXBmMTI4LCBhcGYxNjAsIGFwZjE5MiwKCQkJCQkJCQkJCWFwZjIyNCwgYXBmMjU2LCBhcGYyODgsIGFwZjMyMCwgYXBmMzUyLCBhcGYzODQsIGFwZjQxNiwKCQkJCQkJCQkJCWFwZjQ0OCwgYXBmNDgwLCBhcGY1MTIsIGFwZjU0NCwgYXBmNTc2LCBhcGY2MDgsIGFwZjY0MCwKCQkJCQkJCQkJCWFwZjY3MiwgYXBmNzA0LCBhcGY3MzYsIGFwZjc2OCwgYXBmODAwLCBhcGY4MzIsIGFwZjg2NCwKCQkJCQkJCQkJCWFwZjg5NiwgYXBmOTI4LCBhcGY5NjAsIGFwZjEwMDAgfQoKTUJNUy1DZWxsR3JvdXBJZGVudGl0eS1yNiA6Oj0JCUJJVCBTVFJJTkcgKFNJWkUgKDEyKSkKCk1CTVMtQ29tbW9uQ0NUckNoSWRlbnRpdHkgOjo9CQlJTlRFR0VSICgxLi4zMikKCk1CTVMtQ29tbW9uUGh5Q2hJZGVudGl0eSA6Oj0JCUlOVEVHRVIgKDEuLjMyKQoKTUJNUy1Db21tb25SQklkZW50aXR5IDo6PQkJCUlOVEVHRVIgKDEuLjMyKQoKTUJNUy1Db21tb25SQkluZm9ybWF0aW9uLXI2IDo6PQkJU0VRVUVOQ0UgewoJY29tbW9uUkJJZGVudGl0eQkJCQkJTUJNUy1Db21tb25SQklkZW50aXR5LAoJcGRjcC1JbmZvCQkJCQkJCVBEQ1AtSW5mby1yNCwKCXJsYy1JbmZvCQkJCQkJCVJMQy1JbmZvLU1UQ0gtcjYKfQoKTUJNUy1Db21tb25SQkluZm9ybWF0aW9uTGlzdC1yNiA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVMtQ29tbW9uUkIpKSBPRgoJCQkJCQkJCQkJTUJNUy1Db21tb25SQkluZm9ybWF0aW9uLXI2CgpNQk1TLUNvbW1vblRyQ2hJZGVudGl0eSA6Oj0JCQlJTlRFR0VSICgxLi4zMikKCk1CTVMtQ29ubmVjdGVkTW9kZUNvdW50aW5nU2NvcGUgOjo9IFNFUVVFTkNFIHsKCWNvdW50aW5nRm9yVXJhUENICQkJCQkJCQlCT09MRUFOLAoJY291bnRpbmdGb3JDZWxsUENICQkJCQkJCQlCT09MRUFOLAoJY291bnRpbmdGb3JDZWxsRkFDSAkJCQkJCQkJQk9PTEVBTgp9CgpNQk1TLUN1cnJlbnRDZWxsLVNDQ1BDSC1yNiA6Oj0JCVNFUVVFTkNFIHsKCXNjY3BjaElkZW50aXR5CQkJCQkJTUJNUy1TQ0NQQ0hJZGVudGl0eQkJCQkJT1BUSU9OQUwsCglzZWNvbmRhcnlDQ1BDSC1JbmZvCQkJCQlNQk1TLUNvbW1vblBoeUNoSWRlbnRpdHksCglzb2Z0Q29tYi1UaW1pbmdPZmZzZXQJCQkJTUJNUy1Tb2Z0Q29tYi1UaW1pbmdPZmZzZXQJCQlPUFRJT05BTCwKCS0tIElmIHRoZSBJRSB0cmFuc3BDaC1JbmZvQ29tbW9uRm9yQWxsVHJDaCBpcyBhYnNlbnQsIHRoZSBkZWZhdWx0IFRGQ1MgYXMgc3BlY2lmaWVkCgktLSBpbiAxNC4xMC4xIGFwcGxpZXMKCXRyYW5zcENoLUluZm9Db21tb25Gb3JBbGxUckNoCQlNQk1TLUNvbW1vbkNDVHJDaElkZW50aXR5CQkJT1BUSU9OQUwsCgl0cmFuc3BDSEluZm9ybWF0aW9uCQkJCQlNQk1TLVRyQ0hJbmZvcm1hdGlvbi1DdXJyTGlzdAp9CgpNQk1TLUN1cnJlbnRDZWxsLVNDQ1BDSExpc3QtcjYgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhTQ0NQQ0gpKSBPRgoJCQkJCQkJCQkJTUJNUy1DdXJyZW50Q2VsbC1TQ0NQQ0gtcjYKCk1CTVMtRkFDSENhcnJ5aW5nTVRDSC1MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZBQ0hQQ0gpKSBPRgoJCQkJCQkJCQkJCVRyYW5zcG9ydEZvcm1hdFNldAoKTUJNUy1Kb2luZWRJbmZvcm1hdGlvbi1yNiA6Oj0JCVNFUVVFTkNFIHsKCXAtVE1TSQkJCQkJCQkJUC1UTVNJLUdTTS1NQVAJCQkJCQlPUFRJT05BTAp9CgpNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtMzIgOjo9CQlTRVFVRU5DRSB7CgktLSBBY3R1YWwgTDEgY29tYmluaW5nIHNjaGVkdWxlIHZhbHVlcyAob2Zmc2V0LCBzdGFydCwgZHVyYXRpb24pID0gSUUgdmFsdWUgKiA0CgljeWNsZU9mZnNldAkJCQkJCQlJTlRFR0VSICgwLi43KQkJCQkJCU9QVElPTkFMLAoJbXRjaC1MMUNvbWJpbmluZ1BlcmlvZExpc3QJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNUy1MMUNQKSkgT0YgU0VRVUVOQ0UgewoJCXBlcmlvZFN0YXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjcpLAoJCXBlcmlvZER1cmF0aW9uCQkJCQkJSU5URUdFUiAoMS4uOCkKCX0KfQoKTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTY0IDo6PQkJU0VRVUVOQ0UgewoJLS0gQWN0dWFsIEwxIGNvbWJpbmluZyBzY2hlZHVsZSB2YWx1ZXMgKG9mZnNldCwgc3RhcnQsIGR1cmF0aW9uKSA9IElFIHZhbHVlICogNAoJY3ljbGVPZmZzZXQJCQkJCQkJSU5URUdFUiAoMC4uMTUpCQkJCQkJT1BUSU9OQUwsCgltdGNoLUwxQ29tYmluaW5nUGVyaW9kTGlzdAkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TLUwxQ1ApKSBPRiBTRVFVRU5DRSB7CgkJcGVyaW9kU3RhcnQJCQkJCQkJSU5URUdFUiAoMC4uMTUpLAoJCXBlcmlvZER1cmF0aW9uCQkJCQkJSU5URUdFUiAoMS4uMTYpCgl9Cn0KCk1CTVMtTDFDb21iaW5pbmdTY2hlZHVsZS0xMjggOjo9CVNFUVVFTkNFIHsKCS0tIEFjdHVhbCBMMSBjb21iaW5pbmcgc2NoZWR1bGUgdmFsdWVzIChvZmZzZXQsIHN0YXJ0LCBkdXJhdGlvbikgPSBJRSB2YWx1ZSAqIDQKCWN5Y2xlT2Zmc2V0CQkJCQkJCUlOVEVHRVIgKDAuLjMxKQkJCQkJCU9QVElPTkFMLAoJbXRjaC1MMUNvbWJpbmluZ1BlcmlvZExpc3QJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNUy1MMUNQKSkgT0YgU0VRVUVOQ0UgewoJCXBlcmlvZFN0YXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjMxKSwKCQlwZXJpb2REdXJhdGlvbgkJCQkJCUlOVEVHRVIgKDEuLjMyKQoJfQp9CgpNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtMjU2IDo6PQlTRVFVRU5DRSB7CgktLSBBY3R1YWwgTDEgY29tYmluaW5nIHNjaGVkdWxlIHZhbHVlcyAob2Zmc2V0LCBzdGFydCwgZHVyYXRpb24pID0gSUUgdmFsdWUgKiA0CgljeWNsZU9mZnNldAkJCQkJCQlJTlRFR0VSICgwLi42MykJCQkJCQlPUFRJT05BTCwKCW10Y2gtTDFDb21iaW5pbmdQZXJpb2RMaXN0CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVMtTDFDUCkpIE9GIFNFUVVFTkNFIHsKCQlwZXJpb2RTdGFydAkJCQkJCQlJTlRFR0VSICgwLi42MyksCgkJcGVyaW9kRHVyYXRpb24JCQkJCQlJTlRFR0VSICgxLi42NCkKCX0KfQoKTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTUxMiA6Oj0JU0VRVUVOQ0UgewoJLS0gQWN0dWFsIEwxIGNvbWJpbmluZyBzY2hlZHVsZSB2YWx1ZXMgKG9mZnNldCwgc3RhcnQsIGR1cmF0aW9uKSA9IElFIHZhbHVlICogNAoJY3ljbGVPZmZzZXQJCQkJCQkJSU5URUdFUiAoMC4uMTI3KQkJCQkJCU9QVElPTkFMLAoJbXRjaC1MMUNvbWJpbmluZ1BlcmlvZExpc3QJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNUy1MMUNQKSkgT0YgU0VRVUVOQ0UgewoJCXBlcmlvZFN0YXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjEyNyksCgkJcGVyaW9kRHVyYXRpb24JCQkJCQlJTlRFR0VSICgxLi4xMjgpCgl9Cn0KCk1CTVMtTDFDb21iaW5pbmdTY2hlZHVsZS0xMDI0IDo6PQlTRVFVRU5DRSB7CgktLSBBY3R1YWwgTDEgY29tYmluaW5nIHNjaGVkdWxlIHZhbHVlcyAob2Zmc2V0LCBzdGFydCwgZHVyYXRpb24pID0gSUUgdmFsdWUgKiA0CgljeWNsZU9mZnNldAkJCQkJCQlJTlRFR0VSICgwLi4yNTUpCQkJCQkJT1BUSU9OQUwsCgltdGNoLUwxQ29tYmluaW5nUGVyaW9kTGlzdAkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TLUwxQ1ApKSBPRiBTRVFVRU5DRSB7CgkJcGVyaW9kU3RhcnQJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKCQlwZXJpb2REdXJhdGlvbgkJCQkJCUlOVEVHRVIgKDEuLjI1NikKCX0KfQoKTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlIDo6PQkJQ0hPSUNFIHsKCWN5Y2xlTGVuZ3RoLTMyCQkJCQkJTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTMyLAoJY3ljbGVMZW5ndGgtNjQJCQkJCQlNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtNjQsCgljeWNsZUxlbmd0aC0xMjgJCQkJCQlNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtMTI4LAoJY3ljbGVMZW5ndGgtMjU2CQkJCQkJTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTI1NiwKCWN5Y2xlTGVuZ3RoLTUxMgkJCQkJCU1CTVMtTDFDb21iaW5pbmdTY2hlZHVsZS01MTIsCgljeWNsZUxlbmd0aC0xMDI0CQkJCQlNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtMTAyNAp9CgpNQk1TLUwxQ29tYmluaW5nVHJhbnNtVGltZURpZmYgOjo9CUlOVEVHRVIgKDAuLjMpCgpNQk1TLUwyM0NvbmZpZ3VyYXRpb24gOjo9CQkJQ0hPSUNFIHsKCXNhbWVBc0N1cnJlbnQJCQkJCQlTRVFVRU5DRSB7CgkJY3VycmVudENlbGwtU0NDUENICQkJCQlNQk1TLVNDQ1BDSElkZW50aXR5LAoJCW1zY2gtQ29uZmlndXJhdGlvbkluZm8JCQkJTUJNUy1NU0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2CQlPUFRJT05BTAoJfSwKCWRpZmZlcmVudAkJCQkJCQlTRVFVRU5DRSB7CgkJLS0gSWYgdGhlIElFIHRyYW5zcENoLUluZm9Db21tb25Gb3JBbGxUckNoIGlzIGFic2VudCwgdGhlIGRlZmF1bHQgVEZDUyBhcyBzcGVjaWZpZWQKCQktLSBpbiAxNC4xMC4xIGFwcGxpZXMKCQl0cmFuc3BDaC1JbmZvQ29tbW9uRm9yQWxsVHJDaAkJTUJNUy1Db21tb25DQ1RyQ2hJZGVudGl0eQkJCU9QVElPTkFMLAoJCXRyYW5zcENISW5mb3JtYXRpb24JCQkJCU1CTVMtVHJDSEluZm9ybWF0aW9uLU5laWdoYkxpc3QKCX0KfQoKTUJNUy1Mb2dpY2FsQ2hJZGVudGl0eSA6Oj0JCQlJTlRFR0VSICgxLi4xNSkKCk1CTVMtTUNDSC1Db25maWd1cmF0aW9uSW5mby1yNiA6Oj0JU0VRVUVOQ0UgewoJYWNjZXNzSW5mb1BlcmlvZENvZWZmaWNpZW50CQkJSU5URUdFUiAoMC4uMyksCglyZXBldGl0aW9uUGVyaW9kQ29lZmZpY2llbnQJCQlJTlRFR0VSICgwLi4zKSwKCW1vZGlmaWNhdGlvblBlcmlvZENvZWZmaWNpZW50CQlJTlRFR0VSICg3Li4xMCksCglybGMtSW5mbwkJCQkJCQlSTEMtSW5mby1NQ0NILXI2LAoJdGN0Zi1QcmVzZW5jZQkJCQkJCU1CTVMtVENURi1QcmVzZW5jZQkJCQkJT1BUSU9OQUwKfQoKTUJNUy1NSUNIQ29uZmlndXJhdGlvbkluZm8tcjYgOjo9CVNFUVVFTkNFIHsKCW1pY2hQb3dlck9mZnNldAkJCQkJCU1CTVMtTUlDSFBvd2VyT2Zmc2V0LAoJbW9kZQkJCQkJCQkJQ0hPSUNFIHsKCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CgkJCWNoYW5uZWxpc2F0aW9uQ29kZTI1NgkJCQlDaGFubmVsaXNhdGlvbkNvZGUyNTYsCgkJCW5pLUNvdW50UGVyRnJhbWUJCQkJCU1CTVMtTkktQ291bnRQZXJGcmFtZSwKCQkJc3R0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCgkJfSwKCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIsCgkJCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLAoJCQljaGFubmVsaXNhdGlvbkNvZGUJCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZSwKCQkJcmVwZXRpdGlvblBlcmlvZExlbmd0aE9mZnNldAkJUmVwUGVyTGVuZ3RoT2Zmc2V0LU1JQ0gJCU9QVElPTkFMLAoJCQltYm1zTm90aWZpY2F0aW9uSW5kTGVuZ3RoCQkJTUJNUy1NSUNITm90aWZpY2F0aW9uSW5kTGVuZ3RoCURFRkFVTFQgbW40CgkJfSwKCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0LAoJCQltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1MQ1ItcjQsCgkJCWNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjIpKSBPRgoJCQkJCQkJCQkJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLAoJCQlyZXBldGl0aW9uUGVyaW9kTGVuZ3RoT2Zmc2V0CQlSZXBQZXJMZW5ndGhPZmZzZXQtTUlDSAkJT1BUSU9OQUwsCgkJCW1ibXNOb3RpZmljYXRpb25JbmRMZW5ndGgJCQlNQk1TLU1JQ0hOb3RpZmljYXRpb25JbmRMZW5ndGgJREVGQVVMVCBtbjQKCQl9Cgl9Cn0KCk1CTVMtTUlDSENvbmZpZ3VyYXRpb25JbmZvLXI3IDo6PQlTRVFVRU5DRSB7CgltaWNoUG93ZXJPZmZzZXQJCQkJCQlNQk1TLU1JQ0hQb3dlck9mZnNldCwKCW1vZGUJCQkJCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQljaGFubmVsaXNhdGlvbkNvZGUyNTYJCQkJQ2hhbm5lbGlzYXRpb25Db2RlMjU2LAoJCQluaS1Db3VudFBlckZyYW1lCQkJCQlNQk1TLU5JLUNvdW50UGVyRnJhbWUsCgkJCXN0dGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgoJCX0sCgkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CgkJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLAoJCQltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZSwKCQkJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUsCgkJCXJlcGV0aXRpb25QZXJpb2RMZW5ndGhPZmZzZXQJCVJlcFBlckxlbmd0aE9mZnNldC1NSUNICQlPUFRJT05BTCwKCQkJbWJtc05vdGlmaWNhdGlvbkluZExlbmd0aAkJCU1CTVMtTUlDSE5vdGlmaWNhdGlvbkluZExlbmd0aAlERUZBVUxUIG1uNAoJCX0sCgkJdGRkNzY4CQkJCQkJCQlTRVFVRU5DRSB7CgkJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLAoJCQltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1WSENSLAoJCQljaGFubmVsaXNhdGlvbkNvZGUJCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZSwKCQkJcmVwZXRpdGlvblBlcmlvZExlbmd0aE9mZnNldAkJUmVwUGVyTGVuZ3RoT2Zmc2V0LU1JQ0gJCU9QVElPTkFMLAoJCQltYm1zTm90aWZpY2F0aW9uSW5kTGVuZ3RoCQkJTUJNUy1NSUNITm90aWZpY2F0aW9uSW5kTGVuZ3RoCURFRkFVTFQgbW40CgkJfSwKCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0LAoJCQltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1MQ1ItcjQsCgkJCWNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjIpKSBPRgoJCQkJCQkJCQkJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLAoJCQlyZXBldGl0aW9uUGVyaW9kTGVuZ3RoT2Zmc2V0CQlSZXBQZXJMZW5ndGhPZmZzZXQtTUlDSAkJT1BUSU9OQUwsCgkJCW1ibXNOb3RpZmljYXRpb25JbmRMZW5ndGgJCQlNQk1TLU1JQ0hOb3RpZmljYXRpb25JbmRMZW5ndGgJREVGQVVMVCBtbjQKCQl9Cgl9Cn0KCk1CTVMtTUlDSE5vdGlmaWNhdGlvbkluZExlbmd0aCA6Oj0JRU5VTUVSQVRFRCB7IG1uNCwgbW44LCBtbjE2IH0KCk1CTVMtTUlDSFBvd2VyT2Zmc2V0IDo6PQkJCUlOVEVHRVIgKC0xMC4uNSkKCk1CTVMtTW9kaWZlZFNlcnZpY2UtcjYgOjo9CQkJU0VRVUVOQ0UgewoJbWJtcy1UcmFuc21pc3Npb25JZGVudGl0eQkJCU1CTVMtVHJhbnNtaXNzaW9uSWRlbnRpdHksCgltYm1zLVJlcXVpcmVkVUVBY3Rpb24JCQkJTUJNUy1SZXF1aXJlZFVFQWN0aW9uLU1vZCwKCW1ibXMtUHJlZmVycmVkRnJlcXVlbmN5CQkJCUNIT0lDRSB7CgkJbWNjaAkJCQkJCQkJTUJNUy1QRkxJbmRleCwKCQlkY2NoCQkJCQkJCQlNQk1TLVBGTEluZm8KCX0JCU9QVElPTkFMLAoJbWJtcy1EaXNwZXJzaW9uSW5kaWNhdG9yCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwsCgljb250aW51ZU1DQ0hSZWFkaW5nCQkJCQlCT09MRUFOCn0KCk1CTVMtTW9kaWZlZFNlcnZpY2VMaXN0LXI2IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVNzZXJ2TW9kaWYpKSBPRgoJCQkJCQkJCQkJTUJNUy1Nb2RpZmVkU2VydmljZS1yNgoKTUJNUy1NU0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2IDo6PQlTRVFVRU5DRSB7Cgltc2NoU2hlZHVsaW5nSW5mbwkJCQkJTUJNUy1NU0NIU2NoZWR1bGluZ0luZm8JCQkJT1BUSU9OQUwsCglybGMtSW5mbwkJCQkJCQlSTEMtSW5mby1NU0NILXI2CQkJCQlPUFRJT05BTCwKCXRjdGYtUHJlc2VuY2UJCQkJCQlNQk1TLVRDVEYtUHJlc2VuY2UJCQkJCU9QVElPTkFMCn0KCk1CTVMtTVNDSFNjaGVkdWxpbmdJbmZvIDo6PQkJCUNIT0lDRSB7CglzY2hlZHVsaW5nUGVyaW9kLTMyLU9mZnNldAkJCUlOVEVHRVIgKDAuLjMxKSwKCXNjaGVkdWxpbmdQZXJpb2QtNjQtT2Zmc2V0CQkJSU5URUdFUiAoMC4uNjMpLAoJc2NoZWR1bGluZ1BlcmlvZC0xMjgtT2Zmc2V0CQkJSU5URUdFUiAoMC4uMTI3KSwKCXNjaGVkdWxpbmdQZXJpb2QtMjU2LU9mZnNldAkJCUlOVEVHRVIgKDAuLjI1NSksCglzY2hlZHVsaW5nUGVyaW9kLTUxMi1PZmZzZXQJCQlJTlRFR0VSICgwLi41MTEpLAoJc2NoZWR1bGluZ1BlcmlvZC0xMDI0LU9mZnNldAkJSU5URUdFUiAoMC4uMTAyMykKfQoKTUJNUy1OZWlnaGJvdXJpbmdDZWxsU0NDUENILXI2IDo6PQlTRVFVRU5DRSB7CglzZWNvbmRhcnlDQ1BDSC1JbmZvCQkJCQlNQk1TLUNvbW1vblBoeUNoSWRlbnRpdHksCglzZWNvbmRhcnlDQ1BDSFB3ck9mZnNldERpZmYJCQlNQk1TLVNDQ1BDSFB3ck9mZnNldERpZmYJCQlPUFRJT05BTCwKCWxheWVyMUNvbWJpbmluZwkJCQkJCUNIT0lDRSB7CgkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgewoJCQlzb2Z0Q29tYi1UaW1pbmdPZmZzZXQJCQkJTUJNUy1Tb2Z0Q29tYi1UaW1pbmdPZmZzZXQsCgkJCW1ibXMtTDFDb21iaW5pbmdUcmFuc21UaW1lRGlmZgkJTUJNUy1MMUNvbWJpbmluZ1RyYW5zbVRpbWVEaWZmLAoJCQltYm1zLUwxQ29tYmluaW5nU2NoZWR1bGUJCQlNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUJT1BUSU9OQUwKCQl9LAoJCXRkZAkJCQkJCQkJCU5VTEwKCX0JCU9QVElPTkFMLAoJbWJtcy1MMjNDb25maWd1cmF0aW9uCQkJCU1CTVMtTDIzQ29uZmlndXJhdGlvbgp9CgpNQk1TLU5laWdoYm91cmluZ0NlbGxTQ0NQQ0hMaXN0LXI2IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4U0NDUENIKSkgT0YKCQkJCQkJCQkJCU1CTVMtTmVpZ2hib3VyaW5nQ2VsbFNDQ1BDSC1yNgoKTUJNUy1OSS1Db3VudFBlckZyYW1lIDo6PQkJCUVOVU1FUkFURUQgeyBuaTE4LCBuaTM2LCBuaTcyLCBuaTE0NCB9CgpNQk1TLU51bWJlck9mTmVpZ2hib3VyQ2VsbHMtcjYgOjo9CQlJTlRFR0VSICgwLi4zMikKCk1CTVMtUEZMSW5kZXggOjo9CQkJCQlJTlRFR0VSICgxLi5tYXhNQk1TLUZyZXEpCgpNQk1TLVBGTEluZm8gOjo9CQkJCQlGcmVxdWVuY3lJbmZvCgpNQk1TLVBoeUNoSW5mb3JtYXRpb24tcjYgOjo9CQlTRVFVRU5DRSB7CgltYm1zLUNvbW1vblBoeUNoSWRlbnRpdHkJCQlNQk1TLUNvbW1vblBoeUNoSWRlbnRpdHksCglzZWNvbmRhcnlDQ1BDSEluZm8tTUJNUwkJCQlTZWNvbmRhcnlDQ1BDSEluZm8tTUJNUy1yNgp9CgpNQk1TLVBoeUNoSW5mb3JtYXRpb25MaXN0LXI2IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNUy1Db21tb25QaHlDaCkpIE9GCgkJCQkJCQkJCQlNQk1TLVBoeUNoSW5mb3JtYXRpb24tcjYKCk1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNiA6Oj0JRU5VTUVSQVRFRCB7IHRydWUgfQoKTUJNUy1QcmVmZXJyZWRGcmVxUmVxdWVzdC1yNiA6Oj0JU0VRVUVOQ0UgewoJcHJlZmVycmVkRnJlcVJlcXVlc3QJCQkJRnJlcXVlbmN5SW5mbwp9CgpNQk1TLVByZWZlcnJlZEZyZXF1ZW5jeUluZm8tcjYgOjo9CVNFUVVFTkNFIHsKCW1ibXNQcmVmZXJyZWRGcmVxdWVuY3kJCQkJSU5URUdFUiAoMS4ubWF4TUJNUy1GcmVxKQkJCU9QVElPTkFMLAoJbGF5ZXJDb252ZXJnZW5jZUluZm9ybWF0aW9uCQkJQ0hPSUNFIHsKCQltYm1zLVFvZmZzZXQJCQkJCQlNQk1TLVFvZmZzZXQsCgkJbWJtcy1IQ1NvZmZzZXQJCQkJCQlJTlRFR0VSICgwLi43KQoJfSwKCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwKfQoKTUJNUy1QcmVmZXJyZWRGcmVxdWVuY3lMaXN0LXI2IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNUy1GcmVxKSkgT0YKCQkJCQkJCQkJCU1CTVMtUHJlZmVycmVkRnJlcXVlbmN5SW5mby1yNgoKTUJNUy1QVE1BY3RpdmF0aW9uVGltZS1yNiA6Oj0JCUlOVEVHRVIgKDAuLjIwNDcpCgpNQk1TLVBUTS1SQkluZm9ybWF0aW9uLUMgOjo9CQlTRVFVRU5DRSB7CglyYkluZm9ybWF0aW9uCQkJCQkJTUJNUy1Db21tb25SQklkZW50aXR5LAoJc2hvcnRUcmFuc21pc3Npb25JRAkJCQkJTUJNUy1TaG9ydFRyYW5zbWlzc2lvbklELAoJbG9naWNhbENoSWRlbnRpdHkJCQkJCU1CTVMtTG9naWNhbENoSWRlbnRpdHkKfQoKTUJNUy1QVE0tUkJJbmZvcm1hdGlvbi1DTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCcGVyVHJDaCkpIE9GCgkJCQkJCQkJCQlNQk1TLVBUTS1SQkluZm9ybWF0aW9uLUMKCk1CTVMtUFRNLVJCSW5mb3JtYXRpb24tTiA6Oj0JCVNFUVVFTkNFIHsKCXNob3J0VHJhbnNtaXNzaW9uSUQJCQkJCU1CTVMtU2hvcnRUcmFuc21pc3Npb25JRCwKCWxvZ2ljYWxDaElkZW50aXR5CQkJCQlNQk1TLUxvZ2ljYWxDaElkZW50aXR5LAoJbGF5ZXIxLUNvbWJpbmluZ1N0YXR1cwkJCQlCT09MRUFOfQoKTUJNUy1QVE0tUkJJbmZvcm1hdGlvbi1OTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCcGVyVHJDaCkpIE9GCgkJCQkJCQkJCQlNQk1TLVBUTS1SQkluZm9ybWF0aW9uLU4KCk1CTVMtUW9mZnNldCA6Oj0JCQkJCUVOVU1FUkFURUQgeyBxNCwgcTgsIHExMiwgcTE2LCBxMjAsIHEzMCwgcTQwLCBxSW5maW5pdHkgfQoKTUJNUy1SZXF1aXJlZFVFQWN0aW9uLU1vZCA6Oj0JCUVOVU1FUkFURUQgewoJCQkJCQkJCQkJbm9uZSwKCQkJCQkJCQkJCWFjcXVpcmVDb3VudGluZ0luZm8sCgkJCQkJCQkJCQlhY3F1aXJlQ291bnRpbmdJbmZvUFRNLVJCc1VubW9kaWZpZWQsCgkJCQkJCQkJCQlhY3F1aXJlUFRNLVJCSW5mbywKCQkJCQkJCQkJCXJlcXVlc3RQVFBSQiwKCQkJCQkJCQkJCXJlbGVhc2VQVE0tUkIgfQoKTUJNUy1SZXF1aXJlZFVFQWN0aW9uLVVNb2QgOjo9CQlFTlVNRVJBVEVEIHsKCQkJCQkJCQkJCW5vbmUsCgkJCQkJCQkJCQlhY3F1aXJlUFRNLVJCSW5mbywKCQkJCQkJCQkJCXJlcXVlc3RQVFBSQiB9CgpNQk1TLVNDQ1BDSElkZW50aXR5IDo6PQkJCQlJTlRFR0VSICgxLi5tYXhTQ0NQQ0gpCgpNQk1TLVNDQ1BDSFB3ck9mZnNldERpZmYgOjo9CQlFTlVNRVJBVEVEIHsgbWNwby1taW51czYsIG1jcG8tbWludXMzLCBtY3BvLXBsdXMzLCBtY3BvLXBsdXM2IH0KCk1CTVMtU2VydmljZUFjY2Vzc0luZm8tcjYgOjo9CQlTRVFVRU5DRSB7CglzaG9ydFRyYW5zbWlzc2lvbklECQkJCQlNQk1TLVNob3J0VHJhbnNtaXNzaW9uSUQsCglhY2Nlc3Nwcm9iYWJpbGl0eUZhY3Rvci1JZGxlCQlNQk1TLUFjY2Vzc1Byb2JhYmlsaXR5RmFjdG9yLAoJYWNjZXNzcHJvYmFiaWxpdHlGYWN0b3ItVXJhUENICQlNQk1TLUFjY2Vzc1Byb2JhYmlsaXR5RmFjdG9yCQlPUFRJT05BTCwKCW1ibXMtQ29ubmVjdGVkTW9kZUNvdW50aW5nU2NvcGUJCU1CTVMtQ29ubmVjdGVkTW9kZUNvdW50aW5nU2NvcGUKfQoKTUJNUy1TZXJ2aWNlQWNjZXNzSW5mb0xpc3QtcjYgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1Tc2VydkNvdW50KSkgT0YKCQkJCQkJCQkJCU1CTVMtU2VydmljZUFjY2Vzc0luZm8tcjYKCk1CTVMtU2VydmljZUlkZW50aXR5LXI2IDo6PQkJCVNFUVVFTkNFIHsKCXNlcnZpY2VJZGVudGl0eQkJCQkJCU9DVEVUIFNUUklORyAoU0laRSAoMykpLAoJcGxtbi1JZGVudGl0eQkJCQkJCUNIT0lDRSB7CgkJLS0gVGhlICdzYW1lQXNNSUItUExNTi1JZCcgY2hvaWNlIHJlZmVycyB0byB0aGUgJ1BMTU4gSWRlbnRpdHknIChSOTkpIGluIE1JQi4KCQlzYW1lQXNNSUItUExNTi1JZAkJCQkJTlVMTCwKCQlvdGhlcgkJCQkJCQkJQ0hPSUNFIHsKCQkJLS0gVGhlICdzYW1lQXNNSUItTXVsdGlQTE1OLUlkJyBjaG9pY2UgcmVmZXJzIHRvIG9uZSBvZiB0aGUgKDEuLjUpIFBMTU4gSWRlbnRpdGllcwoJCQktLSBwcm92aWRlZCBpbiB0aGUgJ011bHRpcGxlIFBMTU4gTGlzdCcgKFJFTC02KSBpbiBNSUIuCgkJCXNhbWVBc01JQi1NdWx0aVBMTU4tSWQJCQkJSU5URUdFUiAoMS4uNSksCgkJCWV4cGxpY2l0UExNTi1JZAkJCQkJCVBMTU4tSWRlbnRpdHkKCQl9Cgl9Cn0KCk1CTVMtU2VydmljZVNjaGVkdWxpbmdJbmZvLXI2IDo6PQlTRVFVRU5DRSB7CgltYm1zLVRyYW5zbWlzc2lvbklkZW50aXR5CQkJTUJNUy1UcmFuc21pc3Npb25JZGVudGl0eSwKCW1ibXMtU2VydmljZVRyYW5zbUluZm9MaXN0CQkJTUJNUy1TZXJ2aWNlVHJhbnNtSW5mb0xpc3QJCQlPUFRJT05BTCwKCW5leHRTY2hlZHVsaW5ncGVyaW9kCQkJCUlOVEVHRVIgKDAuLjMxKQp9CgpNQk1TLVNlcnZpY2VTY2hlZHVsaW5nSW5mb0xpc3QtcjYgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1Tc2VydlNjaGVkKSkgT0YKCQkJCQkJCQkJCU1CTVMtU2VydmljZVNjaGVkdWxpbmdJbmZvLXI2CgpNQk1TLVNlcnZpY2VUcmFuc21JbmZvIDo6PQkJCVNFUVVFTkNFIHsKCS0tIEFjdHVhbCB2YWx1ZXMgKHN0YXJ0LCBkdXJhdGlvbikgPSBJRSB2YWx1ZXMgKiA0CglzdGFydAkJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKCWR1cmF0aW9uCQkJCQkJCUlOVEVHRVIgKDEuLjI1NikKfQoKTUJNUy1TZXJ2aWNlVHJhbnNtSW5mb0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNU1RyYW5zbWlzKSkgT0YKCQkJCQkJCQkJCU1CTVMtU2VydmljZVRyYW5zbUluZm8KCk1CTVMtU2Vzc2lvbklkZW50aXR5IDo6PQkJCU9DVEVUIFNUUklORyAoU0laRSAoMSkpCgpNQk1TLVNob3J0VHJhbnNtaXNzaW9uSUQgOjo9CQlJTlRFR0VSICgxLi5tYXhNQk1Tc2VydlVubW9kaWYpCgpNQk1TLVNJQlR5cGU1LVNDQ1BDSC1yNiA6Oj0JCQlTRVFVRU5DRSB7CglzY2NwY2hJZGVudGl0eQkJCQkJCU1CTVMtU0NDUENISWRlbnRpdHksCgl0cmFuc3BDSEluZm9ybWF0aW9uCQkJCQlNQk1TLVRyQ0hJbmZvcm1hdGlvbi1TSUI1TGlzdAp9CgpNQk1TLVNJQlR5cGU1LVNDQ1BDSExpc3QtcjYgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U0NDUENIKSkgT0YKCQkJCQkJCQkJCU1CTVMtU0lCVHlwZTUtU0NDUENILXI2CgpNQk1TLVNvZnRDb21iLVRpbWluZ09mZnNldCA6Oj0JCUVOVU1FUkFURUQgeyBtczAsIG1zMTAsIG1zMjAsIG1zNDAgfQoKTUJNUy1UQ1RGLVByZXNlbmNlIDo6PQkJCQlFTlVNRVJBVEVEIHsgZmFsc2UgfQoKTUJNUy1UaW1lcnNBbmRDb3VudGVycy1yNiA6Oj0JCVNFUVVFTkNFIHsKCXQtMzE4CQkJCQkJCQlULTMxOAkJCQkJCQkJREVGQVVMVCBtczEwMDAKfQoKTUJNUy1UcmFuc21pc3Npb25JZGVudGl0eSA6Oj0JCVNFUVVFTkNFIHsKCW1ibXMtU2VydmljZUlkZW50aXR5CQkJCU1CTVMtU2VydmljZUlkZW50aXR5LXI2LAoJbWJtcy1TZXNzaW9uSWRlbnRpdHkJCQkJTUJNUy1TZXNzaW9uSWRlbnRpdHkJCQkJT1BUSU9OQUwKfQoKTUJNUy1UcmFuc3BDaEluZm9Gb3JDQ1RyQ2gtcjYgOjo9CVNFUVVFTkNFIHsKCWNvbW1vbkNDVHJDaElkZW50aXR5CQkJCU1CTVMtQ29tbW9uQ0NUckNoSWRlbnRpdHksCgl0cmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvblNldAkJVEZDUwp9CgoKTUJNUy1UcmFuc3BDaEluZm9Gb3JFYWNoQ0NUckNoLXI2IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNUy1Db21tb25DQ1RyQ2gpKSBPRgoJCQkJCQkJCQkJTUJNUy1UcmFuc3BDaEluZm9Gb3JDQ1RyQ2gtcjYKCk1CTVMtVHJhbnNwQ2hJbmZvRm9yRWFjaFRyQ2gtcjYgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TLUNvbW1vblRyQ2gpKSBPRgoJCQkJCQkJCQkJTUJNUy1UcmFuc3BDaEluZm9Gb3JUckNoLXI2CgpNQk1TLVRyYW5zcENoSW5mb0ZvclRyQ2gtcjYgOjo9CQlTRVFVRU5DRSB7Cgljb21tb25UckNoSWRlbnRpdHkJCQkJCU1CTVMtQ29tbW9uVHJDaElkZW50aXR5LAoJdHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQKfQoKTUJNUy1UckNISW5mb3JtYXRpb24tQ3VyciA6Oj0JCVNFUVVFTkNFIHsKCXRyYW5zcENoLUluZm8JCQkJCQlNQk1TLUNvbW1vblRyQ2hJZGVudGl0eSwKCXJiSW5mb3JtYXRpb24JCQkJCQlNQk1TLVBUTS1SQkluZm9ybWF0aW9uLUNMaXN0CQlPUFRJT05BTCwKCW1zY2gtQ29uZmlndXJhdGlvbkluZm8JCQkJTUJNUy1NU0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2CQlPUFRJT05BTAp9CgpNQk1TLVRyQ0hJbmZvcm1hdGlvbi1DdXJyTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZBQ0hQQ0gpKSBPRgoJCQkJCQkJCQkJTUJNUy1UckNISW5mb3JtYXRpb24tQ3VycgoKTUJNUy1UckNISW5mb3JtYXRpb24tTmVpZ2hiIDo6PQkJU0VRVUVOQ0UgewoJdHJhbnNwQ2gtSW5mbwkJCQkJCU1CTVMtQ29tbW9uVHJDaElkZW50aXR5LAoJdHJhbnNwQ2gtQ29tYmluaW5nU3RhdHVzCQkJQk9PTEVBTiwKCXJiSW5mb3JtYXRpb24JCQkJCQlNQk1TLVBUTS1SQkluZm9ybWF0aW9uLU5MaXN0CQlPUFRJT05BTCwKCW1zY2gtQ29uZmlndXJhdGlvbkluZm8JCQkJTUJNUy1NU0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2CQlPUFRJT05BTAp9CgpNQk1TLVRyQ0hJbmZvcm1hdGlvbi1OZWlnaGJMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RkFDSFBDSCkpIE9GCgkJCQkJCQkJCQlNQk1TLVRyQ0hJbmZvcm1hdGlvbi1OZWlnaGIKCk1CTVMtVHJDSEluZm9ybWF0aW9uLVNJQjUgOjo9CQlTRVFVRU5DRSB7Cgl0cmFuc3BDaC1JZGVudGl0eQkJCQkJSU5URUdFUiAoMS4ubWF4RkFDSFBDSCksCglyYkluZm9ybWF0aW9uCQkJCQkJTUJNUy1QVE0tUkJJbmZvcm1hdGlvbi1DTGlzdAkJT1BUSU9OQUwsCgltc2NoLUNvbmZpZ3VyYXRpb25JbmZvCQkJCU1CTVMtTVNDSC1Db25maWd1cmF0aW9uSW5mby1yNgkJT1BUSU9OQUwKfQoKTUJNUy1UckNISW5mb3JtYXRpb24tU0lCNUxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhGQUNIUENIKSkgT0YKCQkJCQkJCQkJCU1CTVMtVHJDSEluZm9ybWF0aW9uLVNJQjUKCk1CTVMtVW5tb2RpZmllZFNlcnZpY2UtcjYgOjo9CQlTRVFVRU5DRSB7CgltYm1zLVRyYW5zbWlzc2lvbklkZW50aXR5CQkJTUJNUy1UcmFuc21pc3Npb25JZGVudGl0eSwKCW1ibXMtUmVxdWlyZWRVRUFjdGlvbgkJCQlNQk1TLVJlcXVpcmVkVUVBY3Rpb24tVU1vZCwKCW1ibXMtUHJlZmVycmVkRnJlcXVlbmN5CQkJCU1CTVMtUEZMSW5kZXgJCQkJCQlPUFRJT05BTAp9CgpNQk1TLVVubW9kaWZpZWRTZXJ2aWNlTGlzdC1yNiA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVNzZXJ2VW5tb2RpZikpIE9GCgkJCQkJCQkJCQlNQk1TLVVubW9kaWZpZWRTZXJ2aWNlLXI2CgpFTkQKCkNvbnN0YW50LWRlZmluaXRpb25zIERFRklOSVRJT05TIEFVVE9NQVRJQyBUQUdTIDo6PQoKQkVHSU4KCmhpUERTQ0hpZGVudGl0aWVzCQkJSU5URUdFUiA6Oj0gNjQKaGlQVVNDSGlkZW50aXRpZXMJCQlJTlRFR0VSIDo6PSA2NApoaVJNCQkJCQkJSU5URUdFUiA6Oj0gMjU2Cm1heEFDCQkJCQkJSU5URUdFUiA6Oj0gMTYKbWF4QWRkaXRpb25hbE1lYXMgCQkJSU5URUdFUiA6Oj0gNAptYXhBU0MJCQkJCQlJTlRFR0VSIDo6PSA4Cm1heEFTQ21hcAkJCQkJSU5URUdFUiA6Oj0gNwptYXhBU0NwZXJzaXN0CQkJCUlOVEVHRVIgOjo9IDYKbWF4Q0NUckNICQkJCQlJTlRFR0VSIDo6PSA4Cm1heENlbGxNZWFzIAkJCQlJTlRFR0VSIDo6PSAzMgptYXhDZWxsTWVhcy0xCQkJCUlOVEVHRVIgOjo9IDMxCm1heENOZG9tYWlucwkJCQlJTlRFR0VSIDo6PSA0Cm1heENQQ0hzZXRzCQkJCQlJTlRFR0VSIDo6PSAxNgptYXhEUENILURMY2hhbgkJCQlJTlRFR0VSIDo6PSA4Cm1heERQRENILVVMCQkJCQlJTlRFR0VSIDo6PSA2Cm1heERSQUNjbGFzc2VzCQkJCUlOVEVHRVIgOjo9IDgKbWF4RS1EQ0hNQUNkRmxvdwkJCUlOVEVHRVIgOjo9IDgKbWF4RS1EQ0hNQUNkRmxvdy0xCQkJSU5URUdFUiA6Oj0gNwptYXhFRENIUkwJCQkJCUlOVEVHRVIgOjo9IDQKbWF4RkFDSFBDSAkJCQkJSU5URUdFUiA6Oj0gOAptYXhGcmVxCQkJCQkJSU5URUdFUiA6Oj0gOAptYXhGcmVxQmFuZHNGREQJCQkJSU5URUdFUiA6Oj0gOAptYXhGcmVxQmFuZHNGREQtZXh0CQkJSU5URUdFUiA6Oj0gMTUJLS0gbWF4RnJlcUJhbmRzRkRELWV4dCA6Oj0gMjIg0CAobWF4RnJlcUJhbmRzRkREINAgMSkKbWF4RnJlcUJhbmRzVERECQkJCUlOVEVHRVIgOjo9IDQKbWF4RnJlcUJhbmRzR1NNCQkJCUlOVEVHRVIgOjo9IDE2Cm1heEdFUkFOLVNJCQkJCQlJTlRFR0VSIDo6PSA4Cm1heEdTTVRhcmdldENlbGxzCQkJSU5URUdFUiA6Oj0gMzIKbWF4SFByb2Nlc3NlcyAJCQkJSU5URUdFUiA6Oj0gOAptYXhIU0RTQ0hUQkluZGV4CQkJSU5URUdFUiA6Oj0gNjQKbWF4SFNEU0NIVEJJbmRleC10ZGQzODQJCUlOVEVHRVIgOjo9IDUxMgptYXhIU1NDQ0hzCQkJCQlJTlRFR0VSIDo6PSA0Cm1heEludGVyU3lzTWVzc2FnZXMgCQlJTlRFR0VSIDo6PSA0Cm1heExvQ0hwZXJSTEMJCQkJSU5URUdFUiA6Oj0gMgptYXhNQUMtZC1QRFVzaXplcwkJCUlOVEVHRVIgOjo9IDgKbWF4TUJNUy1Db21tb25DQ1RyQ2gJCUlOVEVHRVIgOjo9IDMyCm1heE1CTVMtQ29tbW9uUGh5Q2gJCQlJTlRFR0VSIDo6PSAzMgptYXhNQk1TLUNvbW1vblJCCQkJSU5URUdFUiA6Oj0gMzIKbWF4TUJNUy1Db21tb25UckNoCQkJSU5URUdFUiA6Oj0gMzIKbWF4TUJNUy1GcmVxCQkJCUlOVEVHRVIgOjo9IDQKbWF4TUJNUy1MMUNQCQkJCUlOVEVHRVIgOjo9IDQKbWF4TUJNU3NlcnZDb3VudAkJCUlOVEVHRVIgOjo9IDgKbWF4TUJNU3NlcnZNb2RpZgkJCUlOVEVHRVIgOjo9IDMyCm1heE1CTVNzZXJ2U2NoZWQJCQlJTlRFR0VSIDo6PSAxNgptYXhNQk1Tc2VydlVubW9kaWYJCQlJTlRFR0VSIDo6PSA2NAptYXhNQk1TVHJhbnNtaXMJCQkJSU5URUdFUiA6Oj0gNAptYXhNZWFzRXZlbnQJCQkJSU5URUdFUiA6Oj0gOAptYXhNZWFzSW50ZXJ2YWxzCQkJSU5URUdFUiA6Oj0gMwptYXhNZWFzUGFyRXZlbnQJCQkJSU5URUdFUiA6Oj0gMgptYXhOdW1DRE1BMjAwMEZyZXFzCQkJSU5URUdFUiA6Oj0gIDgKbWF4TnVtR1NNRnJlcVJhbmdlcwkJCUlOVEVHRVIgOjo9IDMyCm1heE51bUZEREZyZXFzCQkJCUlOVEVHRVIgOjo9ICA4Cm1heE51bVREREZyZXFzCQkJCUlOVEVHRVIgOjo9ICA4Cm1heE5vT2ZNZWFzCQkJCQlJTlRFR0VSIDo6PSAxNgptYXhPdGhlclJBVAkJCQkJSU5URUdFUiA6Oj0gMTUKbWF4T3RoZXJSQVQtMTYJCQkJSU5URUdFUiA6Oj0gMTYKbWF4UGFnZTEJCQkJCUlOVEVHRVIgOjo9IDgKbWF4UENQQ0gtQVBzaWcJCQkJSU5URUdFUiA6Oj0gMTYKbWF4UENQQ0gtQVBzdWJDaAkJCUlOVEVHRVIgOjo9IDEyCm1heFBDUENILUNEc2lnCQkJCUlOVEVHRVIgOjo9IDE2Cm1heFBDUENILUNEc3ViQ2gJCQlJTlRFR0VSIDo6PSAxMgptYXhQQ1BDSC1TRgkJCQkJSU5URUdFUiA6Oj0gNwptYXhQQ1BDSHMJCQkJCUlOVEVHRVIgOjo9IDY0Cm1heFBEQ1BBbGdvVHlwZQkJCQlJTlRFR0VSIDo6PSA4Cm1heFBEU0NICQkJCQlJTlRFR0VSIDo6PSA4Cm1heFBEU0NILVRGQ0lncm91cHMJIAkJSU5URUdFUiA6Oj0gMjU2Cm1heFBSQUNICQkJCQlJTlRFR0VSIDo6PSAxNgptYXhQUkFDSC1GUEFDSAkJCQlJTlRFR0VSIDo6PSA4Cm1heFByZWRlZkNvbmZpZwkJCQlJTlRFR0VSIDo6PSAxNgptYXhQVVNDSAkJCQkJSU5URUdFUiA6Oj0gOAptYXhRdWV1ZUlEcwkJCQkJSU5URUdFUiA6Oj0gOAptYXhSQUJzZXR1cAkJCQkJSU5URUdFUiA6Oj0gMTYKbWF4UkFUCQkJCQkJSU5URUdFUiA6Oj0gMTYKbWF4UkIJCQkJCQlJTlRFR0VSIDo6PSAzMgptYXhSQmFsbFJBQnMJCQkJSU5URUdFUiA6Oj0gMjcKbWF4UkJNdXhPcHRpb25zCQkJCUlOVEVHRVIgOjo9IDgKbWF4UkJwZXJSQUIJCQkJCUlOVEVHRVIgOjo9IDgKbWF4UkJwZXJUckNoCQkJCUlOVEVHRVIgOjo9IDE2Cm1heFJlcG9ydGVkR1NNQ2VsbHMJCQlJTlRFR0VSIDo6PSA4Cm1heFJMCQkJCQkJSU5URUdFUiA6Oj0gOAptYXhSTC0xCQkJCQkJSU5URUdFUiA6Oj0gNwptYXhSTENQRFVzaXplUGVyTG9nQ2hhbgkJSU5URUdFUiA6Oj0gMzIKbWF4UkZDMzA5NS1DSUQJCQkJSU5URUdFUiA6Oj0gMTYzODQKbWF4Uk9IQy1QYWNrZXRTaXplcy1yNAkJSU5URUdFUiA6Oj0gMTYKbWF4Uk9IQy1Qcm9maWxlLXI0CQkJSU5URUdFUiA6Oj0gOAptYXhTYXQJCQkJCQlJTlRFR0VSIDo6PSAxNgptYXhTQ0NQQ0gJCQkJCUlOVEVHRVIgOjo9IDE2Cm1heFNJQgkJCQkJCUlOVEVHRVIgOjo9IDMyCm1heFNJQi1GQUNICQkJCQlJTlRFR0VSIDo6PSA4Cm1heFNJQnBlck1zZwkJCQlJTlRFR0VSIDo6PSAxNgptYXhTUkJzZXR1cAkJCQkJSU5URUdFUiA6Oj0gOAptYXhTeXN0ZW1DYXBhYmlsaXR5CQkJSU5URUdFUiA6Oj0gMTYKbWF4VEYJCQkJCQlJTlRFR0VSIDo6PSAzMgptYXhURi1DUENICQkJCQlJTlRFR0VSIDo6PSAxNgptYXhURkMJCQkJCQlJTlRFR0VSIDo6PSAxMDI0Cm1heFRGQ3N1YgkJCQkJSU5URUdFUiA6Oj0gMTAyNAptYXhURkNJLTItQ29tYnMJIAkJCUlOVEVHRVIgOjo9IDUxMgptYXhUR1BTCQkJCQkJSU5URUdFUiA6Oj0gNgptYXhUckNICQkJCQkJSU5URUdFUiA6Oj0gMzIKLS0gbWF4VHJDSHByZWNvbmYgc2hvdWxkIGJlIDE2IGJ1dCBoYXMgYmVlbiBzZXQgdG8gMzIgZm9yIGNvbXBhdGliaWxpdHkKbWF4VHJDSHByZWNvbmYJCQkJSU5URUdFUiA6Oj0gMzIKbWF4VFMJCQkJCQlJTlRFR0VSIDo6PSAxNAptYXhUUy0xCQkJCQkJSU5URUdFUiA6Oj0gMTMgCm1heFRTLTIJCQkJCQlJTlRFR0VSIDo6PSAxMgptYXhUUy1MQ1IJCQkJCUlOVEVHRVIgOjo9IDYKbWF4VFMtTENSLTEJCQkJCUlOVEVHRVIgOjo9IDUgCm1heFVSQQkJCQkJCUlOVEVHRVIgOjo9IDgKbWF4VVJOVEktR3JvdXAJCQkJSU5URUdFUiA6Oj0gOAoKRU5ECgpJbnRlcm5vZGUtZGVmaW5pdGlvbnMgREVGSU5JVElPTlMgQVVUT01BVElDIFRBR1MgOjo9CgpCRUdJTgoKSU1QT1JUUwoKCUhhbmRvdmVyVG9VVFJBTkNvbW1hbmQsCglNZWFzdXJlbWVudFJlcG9ydCwKCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbiwKCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLAoJUmFkaW9CZWFyZXJSZWxlYXNlLAoJUmFkaW9CZWFyZXJTZXR1cCwKCVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXIzLWFkZC1leHQtSUVzLAoJUlJDLUZhaWx1cmVJbmZvLAoJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbiwKCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXIzLWFkZC1leHQtSUVzCkZST00gUERVLWRlZmluaXRpb25zCgotLSBDb3JlIE5ldHdvcmsgSUVzIDoKCUNOLURvbWFpbklkZW50aXR5LAoJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0LAoJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0RnVsbCwKCUNOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50LAoJTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUCwKLS0gVVRSQU4gTW9iaWxpdHkgSUVzIDoKCUNlbGxJZGVudGl0eSwKCVVSQS1JZGVudGl0eSwKLS0gVXNlciBFcXVpcG1lbnQgSUVzIDoKCUFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yLAoJQy1STlRJLAoJQ2hpcFJhdGVDYXBhYmlsaXR5LAoJREwtQ2FwYWJpbGl0eVdpdGhTaW11bHRhbmVvdXNIUy1EU0NIQ29uZmlnLAoJREwtUGh5c0NoQ2FwYWJpbGl0eUZERC12MzgwZXh0LAoJREwtUGh5c0NoQ2FwYWJpbGl0eVRERCwKCURMLVBoeXNDaENhcGFiaWxpdHlUREQtTENSLXI0LAoJR1NNLU1lYXN1cmVtZW50cywKCUhTRFNDSC1waHlzaWNhbC1sYXllci1jYXRlZ29yeSwKCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyLAoJTWF4SGNDb250ZXh0U3BhY2UsCglNYXhpbXVtQU0tRW50aXR5TnVtYmVyUkxDLUNhcCwKCU1heGltdW1STEMtV2luZG93U2l6ZSwKCU1heE5vUGh5c0NoQml0c1JlY2VpdmVkLAoJTWF4Tm9EUERDSC1CaXRzVHJhbnNtaXR0ZWQsCglNYXhQaHlzQ2hQZXJGcmFtZSwKCU1heFBoeXNDaFBlclN1YkZyYW1lLXI0LAoJTWF4UGh5c0NoUGVyVFMsCglNYXhST0hDLUNvbnRleHRTZXNzaW9ucy1yNCwKCU1heFRTLVBlckZyYW1lLAoJTWF4VFMtUGVyU3ViRnJhbWUtcjQsCglNaW5pbXVtU0YtREwsCglNdWx0aU1vZGVDYXBhYmlsaXR5LAoJTXVsdGlSQVQtQ2FwYWJpbGl0eSwKCU5ldHdvcmtBc3Npc3RlZEdQUy1TdXBwb3J0ZWQsCglQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LWVkY2gtcjYsCglQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LXI3LAoJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdCwKCVJGLUNhcGFiaWxpdHktcjcsCglSTEMtQ2FwYWJpbGl0eSwKCVJSQy1NZXNzYWdlU2VxdWVuY2VOdW1iZXIsCglTZWN1cml0eUNhcGFiaWxpdHksCglTaW11bHRhbmVvdXNTQ0NQQ0gtRFBDSC1SZWNlcHRpb24sCglTVEFSVExpc3QsCglTVEFSVFNpbmdsZSwKCVNUQVJULVZhbHVlLAoJU3VwcG9ydE9mRGVkaWNhdGVkUGlsb3RzRm9yQ2hFc3RpbWF0aW9uLAoJVHJhbnNwb3J0Q2hhbm5lbENhcGFiaWxpdHksCglUeFJ4RnJlcXVlbmN5U2VwYXJhdGlvbiwKCVUtUk5USSwKCVVFLUNhcGFiaWxpdHlDb250YWluZXItSUVzLAoJVUUtTXVsdGlNb2RlUkFULUNhcGFiaWxpdHksCglVRS1Qb3dlckNsYXNzRXh0LAoJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0LAoJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0MiwKCVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdC1leHQsCglVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHksCglVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM3MGV4dCwKCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0LAoJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQsCglVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNnMGV4dCwKCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NGIwZXh0LAoJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQsCglVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dCwKCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12N3h5ZXh0LAoJVUwtUGh5c0NoQ2FwYWJpbGl0eUZERCwKCVVMLVBoeXNDaENhcGFiaWxpdHlGREQtcjYsCglVTC1QaHlzQ2hDYXBhYmlsaXR5VERELAoJVUwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjQsCi0tIFJhZGlvIEJlYXJlciBJRXMgOgoJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3QsCglQcmVkZWZpbmVkQ29uZmlnVmFsdWVUYWcsCglSQUItSW5mb3JtYXRpb25TZXR1cExpc3QsCglSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjQsCglSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUsCglSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYtZXh0LAoJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2LAoJUkItSWRlbnRpdHksCglTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCglTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUsCglTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYsCi0tIFRyYW5zcG9ydCBDaGFubmVsIElFcyA6CglDUENILVNldElELAoJREwtQ29tbW9uVHJhbnNDaEluZm8sCglETC1Db21tb25UcmFuc0NoSW5mby1yNCwKCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCwKCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNCwKCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNSwKCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0LAoJVUwtQ29tbW9uVHJhbnNDaEluZm8sCglVTC1Db21tb25UcmFuc0NoSW5mby1yNCwKCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCwKCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNiwKLS0gUGh5c2ljYWwgQ2hhbm5lbCBJRXMgOgoJUHJpbWFyeUNQSUNILUluZm8sCglUUEMtQ29tYmluYXRpb25JbmRleCwKCVNjcmFtYmxpbmdDb2RlQ2hhbmdlLAoJVEdDRk4sCglUR1BTSSwKCVRHUFMtQ29uZmlndXJhdGlvblBhcmFtcywKLS0gTWVhc3VyZW1lbnQgSUVzIDoKCUV2ZW50MWotcjYsCglIeXN0ZXJlc2lzLAoJSW50ZXItRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQsCglJbnRyYS1GcmVxRXZlbnRDcml0ZXJpYUxpc3QtdjU5MGV4dCwKCUludHJhRnJlcUV2ZW50LTFkLXI1LAoJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUsCglJbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbiwKCU1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcSwKCU1lYXN1cmVtZW50SWRlbnRpdHksCglNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUsCglNZWFzdXJlbWVudFR5cGUsCglNZWFzdXJlbWVudFR5cGUtcjQsCglNZWFzdXJlbWVudFR5cGUtcjYsCglBZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0LAoJUG9zaXRpb25Fc3RpbWF0ZSwKCVJlcG9ydGluZ0NlbGxTdGF0dXMsCglUaW1lVG9UcmlnZ2VyLAotLSBNQk1TIElFcyA6CglNQk1TLUpvaW5lZEluZm9ybWF0aW9uLXI2LAotLSBPdGhlciBJRXMgOgoJR0VSQU5JdS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHksCglHU00tTVMtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LAoJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdCwKCUludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NTkwZXh0LAoJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2OTBleHQsCglVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZSwKCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAoKRlJPTSBJbmZvcm1hdGlvbkVsZW1lbnRzCgoJbWF4Q05kb21haW5zLAoJbWF4Tm9PZk1lYXMsCgoJbWF4UkIsCgltYXhSQmFsbFJBQnMsCgltYXhSRkMzMDk1LUNJRCwKCW1heFNSQnNldHVwLAoJbWF4UkwsCgltYXhUR1BTCkZST00gQ29uc3RhbnQtZGVmaW5pdGlvbnMKOwoKLS0gUGFydCAxOiBDbGFzcyBkZWZpbml0aW9ucyBzaW1pbGFyIHRvIHdoYXQgaGFzIGJlZW4gZGVmaW5lZCBpbiAxMS4xIGZvciBSUkMgbWVzc2FnZXMKLS0gSW5mb3JtYXRpb24gdGhhdCBpcyB0cmFuZmVycmVkIGluIHRoZSBzYW1lIGRpcmVjdGlvbiBhbmQgYWNyb3NzIHRoZSBzYW1lIHBhdGggaXMgZ3JvdXBlZAoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJSQyBpbmZvcm1hdGlvbiwgdG8gdGFyZ2V0IFJOQwotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0gUlJDIEluZm9ybWF0aW9uIHRvIHRhcmdldCBSTkMgc2VudCBlaXRoZXIgZnJvbSBzb3VyY2UgUk5DIG9yIGZyb20gYW5vdGhlciBSQVQKClRvVGFyZ2V0Uk5DLUNvbnRhaW5lciA6Oj0gQ0hPSUNFIHsKCWludGVyUkFUSGFuZG92ZXJJbmZvCQkJCUludGVyUkFUSGFuZG92ZXJJbmZvV2l0aEludGVyUkFUQ2FwYWJpbGl0aWVzLXIzLAoJc3JuY1JlbG9jYXRpb24JCQkJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXIzLAoJcmZjMzA5NS1Db250ZXh0SW5mbwkJCQkJUkZDMzA5NS1Db250ZXh0SW5mby1yNSwKCWV4dGVuc2lvbgkJCQkJCQlOVUxMCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSUkMgaW5mb3JtYXRpb24sIHRhcmdldCBSTkMgdG8gc291cmNlIFJOQwotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCgpUYXJnZXRSTkMtVG9Tb3VyY2VSTkMtQ29udGFpbmVyIDo6PSBDSE9JQ0UgewoJcmFkaW9CZWFyZXJTZXR1cAkJCQkJUmFkaW9CZWFyZXJTZXR1cCwKCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uCQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24sCglyYWRpb0JlYXJlclJlbGVhc2UJCQkJCVJhZGlvQmVhcmVyUmVsZWFzZSwKCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24JCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24sCglwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24JCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbiwKCXJyYy1GYWlsdXJlSW5mbwkJCQkJCVJSQy1GYWlsdXJlSW5mbywKCS0tIElFIGRsLURDQ0htZXNzYWdlIGNvbnNpc3RzIG9mIGFuIG9jdGV0IHN0cmluZyB0aGF0IGluY2x1ZGVzIHRoZSBJRSBETC1EQ0NILU1lc3NhZ2UKCWRMLURDQ0htZXNzYWdlCQkJCQkJT0NURVQgU1RSSU5HLAoJZXh0ZW5zaW9uCQkJCQkJCU5VTEwKfQoKLS0gUGFydCAyOiBDb250YWluZXIgZGVmaW5pdGlvbnMsIHNpbWlsYXIgdG8gdGhlIFBEVSBkZWZpbml0aW9ucyBpbiAxMS4yIGZvciBSUkMgbWVzc2FnZXMKLS0gSW4gYWxwaGFiZXRpY2FsIG9yZGVyCgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIEhhbmRvdmVyIHRvIFVUUkFOIGluZm9ybWF0aW9uCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKSW50ZXJSQVRIYW5kb3ZlckluZm9XaXRoSW50ZXJSQVRDYXBhYmlsaXRpZXMtcjMgOjo9IENIT0lDRSB7CglyMwkJCQkJCQkJU0VRVUVOQ0UgewoJCS0tIElFIEludGVyUkFUSGFuZG92ZXJJbmZvV2l0aEludGVyUkFUQ2FwYWJpbGl0aWVzLXIzLUlFcyBhbHNvIAoJCS0tIGluY2x1ZGVzIG5vbiBjcml0aWNhbCBleHRlbnNpb25zCgkJaW50ZXJSQVRIYW5kb3ZlckluZm8tcjMJCQlJbnRlclJBVEhhbmRvdmVySW5mb1dpdGhJbnRlclJBVENhcGFiaWxpdGllcy1yMy1JRXMsCgkJdjM5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQlpbnRlclJBVEhhbmRvdmVySW5mb1dpdGhJbnRlclJBVENhcGFiaWxpdGllcy12MzkwZXh0CgkJCQkJCQkJCQlJbnRlclJBVEhhbmRvdmVySW5mb1dpdGhJbnRlclJBVENhcGFiaWxpdGllcy12MzkwZXh0LUlFcywKCQkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCgkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCWludGVyUkFUSGFuZG92ZXJJbmZvV2l0aEludGVyUkFUQ2FwYWJpbGl0aWVzLXY2OTBleHQKCQkJCQkJCQkJCUludGVyUkFUSGFuZG92ZXJJbmZvV2l0aEludGVyUkFUQ2FwYWJpbGl0aWVzLXY2OTBleHQtSUVzLAoJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKCQkJfQkJT1BUSU9OQUwKCQl9CQlPUFRJT05BTAoJfSwKCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQp9CgpJbnRlclJBVEhhbmRvdmVySW5mb1dpdGhJbnRlclJBVENhcGFiaWxpdGllcy1yMy1JRXMgOjo9CQlTRVFVRU5DRSB7CgkJLS0gVGhlIG9yZGVyIG9mIHRoZSBJRXMgbWF5IG5vdCByZWZsZWN0IHRoZSB0YWJ1bGFyIGZvcm1hdAoJCS0tICBidXQgaGFzIGJlZW4gY2hvc2VuIHRvIHNpbXBsaWZ5IHRoZSBoYW5kbGluZyBvZiB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIEJTQwoJLS0JT3RoZXIgSUVzCgkJdWUtUkFUU3BlY2lmaWNDYXBhYmlsaXR5CQlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlMaXN0CU9QVElPTkFMLAoJCS0tIGludGVyUkFUSGFuZG92ZXJJbmZvLCBPY3RldCBzdHJpbmcgaXMgdXNlZCB0byBvYnRhaW4gOCBiaXQgbGVuZ3RoIGZpZWxkIHByaW9yIHRvIAoJCS0tIGFjdHVhbCBpbmZvcm1hdGlvbi4gIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIEJTUyB0byB0cmFuc3BhcmVudGx5IGhhbmRsZSBpbmZvcm1hdGlvbgoJCS0tIHJlY2VpdmVkIHZpYSBHU00gYWlyIGludGVyZmFjZSBldmVuIHdoZW4gaXQgaW5jbHVkZXMgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMuCgkJLS0gVGhlIG9jdGV0IHN0cmluZyBzaGFsbCBpbmNsdWRlIHRoZSBJbnRlclJBVEhhbmRvdmVySW5mbyBpbmZvcm1hdGlvbgoJCS0tIFRoZSBCU1MgY2FuIHJlLXVzZSB0aGUgNDQuMDE4IGxlbmd0aCBmaWVsZCByZWNlaXZlZCBmcm9tIHRoZSBNUwoJCWludGVyUkFUSGFuZG92ZXJJbmZvCQkJT0NURVQgU1RSSU5HIChTSVpFICgwLi4yNTUpKQp9CgpJbnRlclJBVEhhbmRvdmVySW5mb1dpdGhJbnRlclJBVENhcGFiaWxpdGllcy12MzkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJZmFpbHVyZUNhdXNlV2l0aFByb3RFcnIJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIJCQkJCU9QVElPTkFMCn0KCkludGVyUkFUSGFuZG92ZXJJbmZvV2l0aEludGVyUkFUQ2FwYWJpbGl0aWVzLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgktLSBPdGhlciBJRXMKCQl1ZS1SQVRTcGVjaWZpY0NhcGFiaWxpdHktdjY5MGV4dAlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY5MGV4dAlPUFRJT05BTAp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUkZDMzA5NSBjb250ZXh0LCBzb3VyY2UgUk5DIHRvIHRhcmdldCBSTkMKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSRkMzMDk1LUNvbnRleHRJbmZvLXI1IDo6PSBDSE9JQ0UgewoJcjUJCQkJCQkJCVNFUVVFTkNFIHsKCQlyRkMzMDk1LUNvbnRleHRJbmZvTGlzdC1yNQkJUkZDMzA5NS1Db250ZXh0SW5mb0xpc3QtcjUsCgkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCgkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKCX0sCgljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KfQoKUkZDMzA5NS1Db250ZXh0SW5mb0xpc3QtcjUgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJhbGxSQUJzKSkgT0YKCQkJCQkJCQkJCVJGQzMwOTUtQ29udGV4dEluZm8KCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gU1JOQyBSZWxvY2F0aW9uIGluZm9ybWF0aW9uCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKU1JOQy1SZWxvY2F0aW9uSW5mby1yMyA6Oj0gQ0hPSUNFIHsKCXIzCQkJCQkJCQlTRVFVRU5DRSB7CgkJc1JOQy1SZWxvY2F0aW9uSW5mby1yMwkJCVNSTkMtUmVsb2NhdGlvbkluZm8tcjMtSUVzLAoJCXYzODBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjM4MGV4dAlTUk5DLVJlbG9jYXRpb25JbmZvLXYzODBleHQtSUVzLAoJCQktLSBSZXNlcnZlZCBmb3IgZnV0dXJlIG5vbiBjcml0aWNhbCBleHRlbnNpb24KCQkJdjM5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjM5MGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjM5MGV4dC1JRXMsCgkJCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjNhMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjNhMGV4dC1JRXMsCgkJCQkJdjNiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12M2IwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12M2IwZXh0LUlFcywKCQkJCQkJdjNjME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjNjMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjNjMGV4dC1JRXMsCgkJCQkJCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXYzZDBleHQJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXYzZDBleHQtSUVzLAoJCQkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucwoJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tcjMtYWRkLWV4dAkJQklUIFNUUklORwoJCQkJCQkJCQkJCQkoQ09OVEFJTklORwlTUk5DLVJlbG9jYXRpb25JbmZvLXYzaDBleHQtSUVzKQkJT1BUSU9OQUwsCgkJCQkJCQkJdjNnME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12M2cwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12M2cwZXh0LUlFcywKCQkJCQkJCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjRiMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjRiMGV4dC1JRXMsCgkJCQkJCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjU5MGV4dAoJCQkJCQkJCQkJCQkJCQkJCQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NTkwZXh0LUlFcywKCQkJCQkJCQkJCQl2NWEwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY1YTBleHQKCQkJCQkJCQkJCQkJCQkJCQkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjVhMGV4dC1JRXMsCgkJCQkJCQkJCQkJCXY1YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJCQkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY1YjBleHQKCQkJCQkJCQkJCQkJCQkJCQkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjViMGV4dC1JRXMsCgkJCQkJCQkJCQkJCQl2NWMwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjVjMGV4dAoJCQkJCQkJCQkJCQkJCQkJCQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NWMwZXh0LUlFcywKCQkJCQkJCQkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJCQkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjY5MGV4dAoJCQkJCQkJCQkJCQkJCQkJCQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NjkwZXh0LUlFcywKCQkJCQkJCQkJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucyBTRVFVRU5DRSB7CgkJCQkJCQkJCQkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY3eHlleHQKCQkJCQkJCQkJCQkJCQkJCQkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjd4eWV4dC1JRXMsCgkJCQkJCQkJCQkJCQkJCQktLSBSZXNlcnZlZCBmb3IgZnV0dXJlIG5vbiBjcml0aWNhbCBleHRlbnNpb24KCQkJCQkJCQkJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwlTRVFVRU5DRSB7fQlPUFRJT05BTAoJCQkJCQkJCQkJCQkJCQl9CQlPUFRJT05BTAoJCQkJCQkJCQkJCQkJCX0JCU9QVElPTkFMCgkJCQkJCQkJCQkJCQl9CQlPUFRJT05BTAoJCQkJCQkJCQkJCQl9CQlPUFRJT05BTAoJCQkJCQkJCQkJCX0JCU9QVElPTkFMCgkJCQkJCQkJCQl9CQlPUFRJT05BTAoJCQkJCQkJCQl9CQlPUFRJT05BTAoJCQkJCQkJCX0JCU9QVElPTkFMCgkJCQkJCQl9CQlPUFRJT05BTAoJCQkJCQl9CQlPUFRJT05BTAoJCQkJCX0JCU9QVElPTkFMCgkJCQl9CQlPUFRJT05BTAoJCQl9CQlPUFRJT05BTAoJCX0JCU9QVElPTkFMCgl9LAoJbGF0ZXItdGhhbi1yMwkJCQkJQ0hPSUNFIHsKCQlyNAkJCQkJCQkJU0VRVUVOQ0UgewoJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXI0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby1yNC1JRXMsCgkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjRkMGV4dAkJU1JOQy1SZWxvY2F0aW9uSW5mby12NGQwZXh0LUlFcywKCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CgkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXI0LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAoJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY1OTBleHQJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXY1OTBleHQtSUVzLAoJCQkJCXY1YTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjVhMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjVhMGV4dC1JRXMsCgkJCQkJCXY1YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY1YjBleHQJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXY1YjBleHQtSUVzLAoJCQkJCQkJdjVjME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY1YzBleHQJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXY1YzBleHQtSUVzLAoJCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjY5MGV4dAkJU1JOQy1SZWxvY2F0aW9uSW5mby12NjkwZXh0LUlFcywKCQkJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKCQkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjd4eWV4dAoJCQkJCQkJCQkJCQkJCQkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjd4eWV4dC1JRXMsCgkJCQkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKCQkJCQkJCQkJfQlPUFRJT05BTAoJCQkJCQkJCX0JT1BUSU9OQUwKCQkJCQkJCX0JT1BUSU9OQUwKCQkJCQkJfQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0JT1BUSU9OQUwKCQkJfQlPUFRJT05BTAoJCX0sCgkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CgkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXI1CQkJU1JOQy1SZWxvY2F0aW9uSW5mby1yNS1JRXMsCgkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXI1LWFkZC1leHQJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQl2NWEwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CgkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NWEwZXh0CQlTUk5DLVJlbG9jYXRpb25JbmZvLXY1YTBleHQtSUVzLAoJCQkJCXY1YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NWIwZXh0CQlTUk5DLVJlbG9jYXRpb25JbmZvLXY1YjBleHQtSUVzLAoJCQkJCQl2NWMwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgewoJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NWMwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NWMwZXh0LUlFcywKCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CgkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NjkwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NjkwZXh0LUlFcywKCQkJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12N3h5ZXh0CgkJCQkJCQkJCQkJCQkJCQkJU1JOQy1SZWxvY2F0aW9uSW5mby12N3h5ZXh0LUlFcywKCQkJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCQkJCX0JT1BUSU9OQUwKCQkJCQkJCX0JT1BUSU9OQUwKCQkJCQkJfQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0JT1BUSU9OQUwKCQkJfSwKCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CgkJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tcjYJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXI2LUlFcywKCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXI2LWFkZC1leHQJQklUIFNUUklORwkJT1BUSU9OQUwsCgkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgewoJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY3eHlleHQJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjd4eWV4dC1JRXMsCgkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAoJCQkJCX0JT1BUSU9OQUwKCQkJCX0sCgkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJCVNFUVVFTkNFIHt9CgkJCX0KCQl9Cgl9Cn0KClNSTkMtUmVsb2NhdGlvbkluZm8tcjMtSUVzIDo6PQkJU0VRVUVOQ0UgewoJLS0gTm9uLVJSQyBJRXMKCQlzdGF0ZU9mUlJDCQkJCQkJU3RhdGVPZlJSQywKCQlzdGF0ZU9mUlJDLVByb2NlZHVyZQkJCVN0YXRlT2ZSUkMtUHJvY2VkdXJlLAoJLS0gQ2lwaGVyaW5nIHJlbGF0ZWQgaW5mb3JtYXRpb24gSUVzCgktLSBJZiB0aGUgZXh0ZW5zaW9uIHYzODAgaXMgaW5jbHVkZWQgdXNlIHRoZSBleHRlbnNpb24gZm9yIHRoZSBjaXBoZXJpbmcgc3RhdHVzIHBlciBDTiBkb21haW4KCQljaXBoZXJpbmdTdGF0dXMJCQkJCUNpcGhlcmluZ1N0YXR1cywKCQktLSBJZiBjaXBoZXJpbmcgc3RhdHVzIGlzIHN0YXJ0ZWQgYW5kIHRoZSBJRSBsYXRlc3RDb25maWd1cmVkQ04tRG9tYWluIHNob3VsZCBiZSBpbmNsdWRlZCwKCQktLSB0aGUgSUUgY24tRG9tYWluSWRlbnRpdHkgKGluIFNSTkMtUmVsb2NhdGlvbkluZm8tdjM4MGV4dC1JRXMpIHNoYWxsIGJlIHVzZWQgaW5zdGVhZC4KCQljYWxjdWxhdGlvblRpbWVGb3JDaXBoZXJpbmcJCUNhbGN1bGF0aW9uVGltZUZvckNpcGhlcmluZwkJCU9QVElPTkFMLAoJCS0tIFRoZSBvcmRlciBvZiBvY2N1cnJlbmNlIGluIHRoZSBJRSBjaXBoZXJpbmdJbmZvUGVyUkItTGlzdCBpcyB0aGUKCQktLSBzYW1lIGFzIHRoZSBSQnMgaW4gU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0IGluIFJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC4KCQktLSBUaGUgc2lnbmFsbGluZyBSQnMgYXJlIHN1cHBvc2VkIHRvIGJlIGxpc3RlZAoJCS0tIGZpcnN0LiBPbmx5IFVNIGFuZCBBTSBSQnMgdGhhdCBhcmUgY2lwaGVyZWQgYXJlIGxpc3RlZCBoZXJlCgkJY2lwaGVyaW5nSW5mb1BlclJCLUxpc3QJCQlDaXBoZXJpbmdJbmZvUGVyUkItTGlzdAkJCQlPUFRJT05BTCwKCQljb3VudC1DLUxpc3QJCQkJCUNPVU5ULUMtTGlzdAkJCQkJCU9QVElPTkFMLAoJCWludGVncml0eVByb3RlY3Rpb25TdGF0dXMJCUludGVncml0eVByb3RlY3Rpb25TdGF0dXMsCgkJLS0gSW4gdGhlIElFIHNyYi1TcGVjaWZpY0ludGVncml0eVByb3RJbmZvLCB0aGUgZmlyc3QgaW5mb3JtYXRpb24gbGlzdGVkIGNvcnJlc3BvbmRzIHRvCiAgICAgIC0tIHNpZ25hbGxpbmcgcmFkaW8gYmVhcmVyIFJCMCBhbmQgYWZ0ZXIgdGhlIG9yZGVyIG9mIG9jY3VycmVuY2UgaXMgdGhlIHNhbWUgYXMgdGhlIFNSQnMgaW4KCSAtLSBTUkItSW5mb3JtYXRpb25TZXR1cExpc3QKCQktLSBUaGUgdGFyZ2V0IFJOQyBtYXkgaWdub3JlIHRoZSBJRSBzcmItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mbyBpZiB0aGUKCQktLSBJRSBpbnRlZ3JpdHlQcm90ZWN0aW9uU3RhdHVzIGhhcyB0aGUgdmFsdWUgIm5vdCBzdGFydGVkIi4KCQlzcmItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mbwlTUkItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mb0xpc3QsCgkJaW1wbGVtZW50YXRpb25TcGVjaWZpY1BhcmFtcwlJbXBsZW1lbnRhdGlvblNwZWNpZmljUGFyYW1zCQlPUFRJT05BTCwKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXUtUk5USQkJCQkJCQlVLVJOVEksCgkJYy1STlRJCQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHksCgkJdWUtUG9zaXRpb25pbmctTGFzdEtub3duUG9zCQlVRS1Qb3NpdGlvbmluZy1MYXN0S25vd25Qb3MJCQlPUFRJT05BTCwKCS0tIE90aGVyIElFcwoJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eQkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdAlPUFRJT05BTCwKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tQ29tbW9uR1NNLU1BUC1OQVMtU3lzSW5mbwlOQVMtU3lzdGVtSW5mb3JtYXRpb25HU00tTUFQLAoJCWNuLURvbWFpbkluZm9ybWF0aW9uTGlzdAkJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0CQkJT1BUSU9OQUwsCgktLSBNZWFzdXJlbWVudCBJRXMKCQlvbmdvaW5nTWVhc1JlcExpc3QJCQkJT25nb2luZ01lYXNSZXBMaXN0CQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlwcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdAkJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3QsCgkJc3JiLUluZm9ybWF0aW9uTGlzdAkJCQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCgkJcmFiLUluZm9ybWF0aW9uTGlzdAkJCQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QJCQlPUFRJT05BTCwKCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcwoJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCgkJdWwtVHJhbnNDaEluZm9MaXN0CQkJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCgkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCQkJCWR1bW15CQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAoJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJTlVMTAoJCX0sCgkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKCQlkbC1UcmFuc0NoSW5mb0xpc3QJCQkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgktLSBNZWFzdXJlbWVudCByZXBvcnQKCQltZWFzdXJlbWVudFJlcG9ydAkJCQlNZWFzdXJlbWVudFJlcG9ydAkJCQkJT1BUSU9OQUwKfQoKU1JOQy1SZWxvY2F0aW9uSW5mby12MzgwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJLS0gQ2lwaGVyaW5nIHJlbGF0ZWQgaW5mb3JtYXRpb24gSUVzCgkJLS0gSW4gdGhlIFNSTkMtUmVsb2NhdGlvbkluZm8tcjMtSUVzLCB0aGUgSUUgJ2NuLURvbWFpbklkZW50aXR5JyBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgCgkJLS0gSUUgJ0xhdGVzdCBjb25maWd1cmVkIENOIGRvbWFpbicgaW4gdGhlIHRhYnVsYXIuCgkJY24tRG9tYWluSWRlbnRpdHkJCQkJCUNOLURvbWFpbklkZW50aXR5LAoJCWNpcGhlcmluZ1N0YXR1c0xpc3QJCQkJCUNpcGhlcmluZ1N0YXR1c0xpc3QKfQoKU1JOQy1SZWxvY2F0aW9uSW5mby12MzkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJCWNuLURvbWFpbkluZm9ybWF0aW9uTGlzdC12MzkwZXh0CUNOLURvbWFpbkluZm9ybWF0aW9uTGlzdC12MzkwZXh0CQlPUFRJT05BTCwKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM3MGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM3MGV4dAkJT1BUSU9OQUwsCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzODBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzODBleHQJCU9QVElPTkFMLAoJCWRsLVBoeXNDaENhcGFiaWxpdHlGREQtdjM4MGV4dAkJREwtUGh5c0NoQ2FwYWJpbGl0eUZERC12MzgwZXh0LAoJCWZhaWx1cmVDYXVzZVdpdGhQcm90RXJyCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyCQkJCQlPUFRJT05BTAp9CgpTUk5DLVJlbG9jYXRpb25JbmZvLXYzYTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgkJY2lwaGVyaW5nSW5mb0ZvclNSQjEtdjNhMGV4dAkJQ2lwaGVyaW5nSW5mb1BlclJCLUxpc3QtdjNhMGV4dCwKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNhMGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNhMGV4dAkJT1BUSU9OQUwsCgkJLS0gY24tZG9tYWluIGlkZW50aXR5IGZvciBJRSBzdGFydFZhbHVlRm9yQ2lwaGVyaW5nLXYzYTBleHQgaXMgc3BlY2lmaWVkCgkJLS0gaW4gc3Vic2VxdWVudCBleHRlbnNpb24gKFNSTkMtUmVsb2NhdGlvbkluZm8tdjNiMGV4dC1JRXMpCgkJc3RhcnRWYWx1ZUZvckNpcGhlcmluZy12M2EwZXh0CQlTVEFSVC1WYWx1ZQp9CgpTUk5DLVJlbG9jYXRpb25JbmZvLXYzYjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgkJLS0gY24tZG9tYWluIGlkZW50aXR5IGZvciBJRSBzdGFydFZhbHVlRm9yQ2lwaGVyaW5nLXYzYTBleHQgaW5jbHVkZWQgaW4gcHJldmlvdXMgZXh0ZW5zaW9uCgkJY24tRG9tYWluSWRlbnRpdHkJCQkJQ04tRG9tYWluSWRlbnRpdHksCgkJLS0gdGhlIElFIHN0YXJ0VmFsdWVGb3JDaXBoZXJpbmctdjNiMGV4dCBjb250YWlucyB0aGUgc3RhcnQgdmFsdWVzIGZvciBlYWNoIENOIERvbWFpbi4gVGhlIAoJCS0tIHZhbHVlIG9mIHN0YXJ0IGluZGljYXRlZCBieSB0aGUgSUUgc3RhcnRWYWx1ZUZvckNpcGhlcmluZy12M2EwZXh0IHNob3VsZCBiZSBzZXQgdG8gdGhlCgkJLS0gc2FtZSB2YWx1ZSBhcyB0aGUgc3RhcnQtVmFsdWUgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNuLURvbWFpbklkZW50aXR5IGluIHRoZSBJRSAKCQktLSBzdGFydFZhbHVlRm9yQ2lwaGVyaW5nLXYzYjBleHQKCQlzdGFydFZhbHVlRm9yQ2lwaGVyaW5nLXYzYjBleHQJCVNUQVJUTGlzdDIJCQkJCQkJCU9QVElPTkFMCn0KClNSTkMtUmVsb2NhdGlvbkluZm8tdjNjMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQktLSBJRSByYi1JZGVudGl0eUZvckhPTWVzc2FnZSBpbmNsdWRlcyB0aGUgaWRlbnRpdHkgb2YgdGhlIFJCIHVzZWQgYnkgdGhlIHNvdXJjZSBTUk5DCgkJLS0gdG8gc2VuZCB0aGUgbWVzc2FnZSBjb250YWluZWQgaW4gdGhlIElFINJUYXJnZXRSTkMtVG9Tb3VyY2VSTkMtQ29udGFpbmVy0y4KCQktLSBPbmx5IGluY2x1ZGVkIGlmIHR5cGUgaXMg0lVFIGludm9sdmVk0woJCXJiLUlkZW50aXR5Rm9ySE9NZXNzYWdlCQkJCVJCLUlkZW50aXR5ICAJCU9QVElPTkFMCn0KClNSTkMtUmVsb2NhdGlvbkluZm8tdjNkMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlCQlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZQkJT1BUSU9OQUwsCgkJdUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWludGVyUkFUCQlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaW50ZXJSQVQJCU9QVElPTkFMCn0KClNSTkMtUmVsb2NhdGlvbkluZm8tdjNnMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNnMGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNnMGV4dAkJT1BUSU9OQUwKfQoKU1JOQy1SZWxvY2F0aW9uSW5mby12M2gwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJCXRwYy1Db21iaW5hdGlvbkluZm9MaXN0CQkJVFBDLUNvbWJpbmF0aW9uSW5mb0xpc3QJCU9QVElPTkFMLAoJCW5vbkNyaXRpY2FsRXh0ZW5zaW9uCQkJCVNFUVVFTkNFIHt9CQkJCU9QVElPTkFMCn0KClNSTkMtUmVsb2NhdGlvbkluZm8tdjRkMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQl0cGMtQ29tYmluYXRpb25JbmZvTGlzdAkJVFBDLUNvbWJpbmF0aW9uSW5mb0xpc3QJCU9QVElPTkFMCn0KClRQQy1Db21iaW5hdGlvbkluZm9MaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgoJCVRQQy1Db21iaW5hdGlvbi1JbmZvCgpTVEFSVExpc3QyIDo6PQkJCQkJCVNFUVVFTkNFIChTSVpFICgyLi5tYXhDTmRvbWFpbnMpKSBPRgoJCQkJCQkJCQkJU1RBUlRTaW5nbGUKClNSTkMtUmVsb2NhdGlvbkluZm8tdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjRiMGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjRiMGV4dAkJT1BUSU9OQUwKfQoKU1JOQy1SZWxvY2F0aW9uSW5mby12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NTkwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NTkwZXh0CQlPUFRJT05BTCwKCQl1ZS1SQVRTcGVjaWZpY0NhcGFiaWxpdHktdjU5MGV4dAlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dAlPUFRJT05BTAp9CgpTUk5DLVJlbG9jYXRpb25JbmZvLXY1YTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CgkJc3RvcmVkQ29tcHJlc3NlZE1vZGVJbmZvCQlTdG9yZWRDb21wcmVzc2VkTW9kZUluZm8JT1BUSU9OQUwKfQoKU1JOQy1SZWxvY2F0aW9uSW5mby12NWIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJaW50ZXJSQVRDZWxsSW5mb0luZGljYXRpb24JCQlJbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbgkJCU9QVElPTkFMCn0KClNSTkMtUmVsb2NhdGlvbkluZm8tdjVjMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dAkJT1BUSU9OQUwKfQoKU1JOQy1SZWxvY2F0aW9uSW5mby12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12N3h5ZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12N3h5ZXh0CQlPUFRJT05BTAp9CgpDaXBoZXJpbmdJbmZvUGVyUkItTGlzdC12M2EwZXh0IDo6PSBTRVFVRU5DRSB7CgkJZGwtVU0tU04JCQkJCQlCSVQgU1RSSU5HIChTSVpFICg3KSkKfQoKQ2lwaGVyaW5nU3RhdHVzTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q05kb21haW5zKSkgT0YKCQkJCQkJCQkJCUNpcGhlcmluZ1N0YXR1c0NOZG9tYWluCgpDaXBoZXJpbmdTdGF0dXNDTmRvbWFpbiA6Oj0JCQkJU0VRVUVOQ0UgewoJCWNuLURvbWFpbklkZW50aXR5CQkJCUNOLURvbWFpbklkZW50aXR5LAoJCWNpcGhlcmluZ1N0YXR1cwkJCQkJQ2lwaGVyaW5nU3RhdHVzCn0KCkNvZGVDaGFuZ2VTdGF0dXNMaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgoJCUNvZGVDaGFuZ2VTdGF0dXMKCkNvZGVDaGFuZ2VTdGF0dXMgOjo9IFNFUVVFTkNFIHsKCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCgkJc2NyYW1ibGluZ0NvZGVDaGFuZ2UJCQkJU2NyYW1ibGluZ0NvZGVDaGFuZ2UKfQoKU3RvcmVkQ29tcHJlc3NlZE1vZGVJbmZvIDo6PSBTRVFVRU5DRSB7CgkJc3RvcmVkVEdQLVNlcXVlbmNlTGlzdAkJU3RvcmVkVEdQLVNlcXVlbmNlTGlzdCwKCQljb2RlQ2hhbmdlU3RhdHVzTGlzdAkJQ29kZUNoYW5nZVN0YXR1c0xpc3QJT1BUSU9OQUwKfQoKU3RvcmVkVEdQLVNlcXVlbmNlTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEdQUykpIE9GCgkJCQkJCQkJCQlTdG9yZWRUR1AtU2VxdWVuY2UKClN0b3JlZFRHUC1TZXF1ZW5jZSA6Oj0JCQkJU0VRVUVOQ0UgewoJdGdwc2kJCQkJCQkJCVRHUFNJLAoJY3VycmVudC10Z3BzLVN0YXR1cwkJCQkJQ0hPSUNFIHsKCQlhY3RpdmUJCQkJCQkJCVNFUVVFTkNFIHsKCQkJdGdjZm4JCQkJCQkJCVRHQ0ZOCgkJfSwKCQlpbmFjdGl2ZQkJCQkJCQlOVUxMCgl9LAoJdGdwcy1Db25maWd1cmF0aW9uUGFyYW1zCQkJVEdQUy1Db25maWd1cmF0aW9uUGFyYW1zCQkJT1BUSU9OQUwKfQoKU1JOQy1SZWxvY2F0aW9uSW5mby1yNC1JRXMgOjo9CQkJU0VRVUVOQ0UgewoJLS0gTm9uLVJSQyBJRXMKCQktLSBJRSByYi1JZGVudGl0eUZvckhPTWVzc2FnZSBpbmNsdWRlcyB0aGUgaWRlbnRpdHkgb2YgdGhlIFJCIHVzZWQgYnkgdGhlIHNvdXJjZSBTUk5DCgkJLS0gdG8gc2VuZCB0aGUgbWVzc2FnZSBjb250YWluZWQgaW4gdGhlIElFINJUYXJnZXRSTkMtVG9Tb3VyY2VSTkMtQ29udGFpbmVy0y4KCQktLSBPbmx5IGluY2x1ZGVkIGlmIHR5cGUgaXMg0lVFIGludm9sdmVk0woJCXJiLUlkZW50aXR5Rm9ySE9NZXNzYWdlCQkJUkItSWRlbnRpdHkJCQkJCQkJT1BUSU9OQUwsCgkJc3RhdGVPZlJSQwkJCQkJCVN0YXRlT2ZSUkMsCgkJc3RhdGVPZlJSQy1Qcm9jZWR1cmUJCQlTdGF0ZU9mUlJDLVByb2NlZHVyZSwKCS0tIENpcGhlcmluZyByZWxhdGVkIGluZm9ybWF0aW9uIElFcwoJCWNpcGhlcmluZ1N0YXR1c0xpc3QJCQkJQ2lwaGVyaW5nU3RhdHVzTGlzdC1yNCwKCQlsYXRlc3RDb25maWd1cmVkQ04tRG9tYWluCQlDTi1Eb21haW5JZGVudGl0eSwKCQljYWxjdWxhdGlvblRpbWVGb3JDaXBoZXJpbmcJCUNhbGN1bGF0aW9uVGltZUZvckNpcGhlcmluZwkJCU9QVElPTkFMLAoJCWNvdW50LUMtTGlzdAkJCQkJQ09VTlQtQy1MaXN0CQkJCQkJT1BUSU9OQUwsCgkJY2lwaGVyaW5nSW5mb1BlclJCLUxpc3QJCQlDaXBoZXJpbmdJbmZvUGVyUkItTGlzdC1yNAkJCU9QVElPTkFMLAoJLS0gSW50ZWdyaXR5IHByb3RlY3Rpb24gcmVsYXRlZCBpbmZvcm1hdGlvbiBJRXMKCQlpbnRlZ3JpdHlQcm90ZWN0aW9uU3RhdHVzCQlJbnRlZ3JpdHlQcm90ZWN0aW9uU3RhdHVzLAoJCS0tIFRoZSB0YXJnZXQgUk5DIG1heSBpZ25vcmUgdGhlIElFIHNyYi1TcGVjaWZpY0ludGVncml0eVByb3RJbmZvIGlmIHRoZQoJCS0tIElFIGludGVncml0eVByb3RlY3Rpb25TdGF0dXMgaGFzIHRoZSB2YWx1ZSAibm90IHN0YXJ0ZWQiLgoJCXNyYi1TcGVjaWZpY0ludGVncml0eVByb3RJbmZvCVNSQi1TcGVjaWZpY0ludGVncml0eVByb3RJbmZvTGlzdCwKCQlpbXBsZW1lbnRhdGlvblNwZWNpZmljUGFyYW1zCUltcGxlbWVudGF0aW9uU3BlY2lmaWNQYXJhbXMJCU9QVElPTkFMLAoJLS0gVXNlciBlcXVpcG1lbnQgSUVzCgkJdS1STlRJCQkJCQkJCVUtUk5USSwKCQljLVJOVEkJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS1yNCwKCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdAkJT1BUSU9OQUwsCgkJdWUtUG9zaXRpb25pbmctTGFzdEtub3duUG9zCQlVRS1Qb3NpdGlvbmluZy1MYXN0S25vd25Qb3MJCQlPUFRJT05BTCwKCQl1RVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZQkJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWlkbGUJCU9QVElPTkFMLAoJCXVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAkJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWludGVyUkFUCQlPUFRJT05BTCwKCS0tIE90aGVyIElFcwoJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eQkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdAlPUFRJT05BTCwKCS0tIFVUUkFOIG1vYmlsaXR5IElFcwoJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCgktLSBDb3JlIG5ldHdvcmsgSUVzCgkJY24tQ29tbW9uR1NNLU1BUC1OQVMtU3lzSW5mbwlOQVMtU3lzdGVtSW5mb3JtYXRpb25HU00tTUFQLAoJCWNuLURvbWFpbkluZm9ybWF0aW9uTGlzdAkJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0RnVsbAkJT1BUSU9OQUwsCgktLSBNZWFzdXJlbWVudCBJRXMKCQlvbmdvaW5nTWVhc1JlcExpc3QJCQkJT25nb2luZ01lYXNSZXBMaXN0LXI0CQkJCU9QVElPTkFMLAoJLS0gUmFkaW8gYmVhcmVyIElFcwoJCXByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0CQlQcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdCwKCQlzcmItSW5mb3JtYXRpb25MaXN0CQkJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdCwKCQlyYWItSW5mb3JtYXRpb25MaXN0CQkJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNAkJCU9QVElPTkFMLAoJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCgkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQl1bC1UcmFuc0NoSW5mb0xpc3QJCQkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCgkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCgkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCgkJZHVtbXkJCQkJCQkJQ0hPSUNFIHsKCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CgkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCgkJCQlkdW1teTIJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QJT1BUSU9OQUwKCQkJfSwKCQkJdGRkCQkJCQkJCQlOVUxMCgkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCgkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKCQlkbC1UcmFuc0NoSW5mb0xpc3QJCQkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0CQlPUFRJT05BTCwKCS0tIE1lYXN1cmVtZW50IHJlcG9ydAoJCW1lYXN1cmVtZW50UmVwb3J0CQkJCU1lYXN1cmVtZW50UmVwb3J0CQkJCQlPUFRJT05BTCwKCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyCQkJCU9QVElPTkFMCn0KClNSTkMtUmVsb2NhdGlvbkluZm8tcjUtSUVzIDo6PQkJCVNFUVVFTkNFIHsKCS0tIE5vbi1SUkMgSUVzCgkJLS0gSUUgcmItSWRlbnRpdHlGb3JIT01lc3NhZ2UgaW5jbHVkZXMgdGhlIGlkZW50aXR5IG9mIHRoZSBSQiB1c2VkIGJ5IHRoZSBzb3VyY2UgU1JOQwoJCS0tIHRvIHNlbmQgdGhlIG1lc3NhZ2UgY29udGFpbmVkIGluIHRoZSBJRSDSVGFyZ2V0Uk5DLVRvU291cmNlUk5DLUNvbnRhaW5lctMuCgkJLS0gT25seSBpbmNsdWRlZCBpZiB0eXBlIGlzICJVRSBpbnZvbHZlZCIKCQlyYi1JZGVudGl0eUZvckhPTWVzc2FnZQkJCVJCLUlkZW50aXR5CQkJCQkJCU9QVElPTkFMLAoJCXN0YXRlT2ZSUkMJCQkJCQlTdGF0ZU9mUlJDLAoJCXN0YXRlT2ZSUkMtUHJvY2VkdXJlCQkJU3RhdGVPZlJSQy1Qcm9jZWR1cmUsCgktLSBDaXBoZXJpbmcgcmVsYXRlZCBpbmZvcm1hdGlvbiBJRXMKCQljaXBoZXJpbmdTdGF0dXNMaXN0CQkJCUNpcGhlcmluZ1N0YXR1c0xpc3QtcjQsCgkJbGF0ZXN0Q29uZmlndXJlZENOLURvbWFpbgkJQ04tRG9tYWluSWRlbnRpdHksCgkJY2FsY3VsYXRpb25UaW1lRm9yQ2lwaGVyaW5nCQlDYWxjdWxhdGlvblRpbWVGb3JDaXBoZXJpbmcJCQlPUFRJT05BTCwKCQljb3VudC1DLUxpc3QJCQkJCUNPVU5ULUMtTGlzdAkJCQkJCU9QVElPTkFMLAoJCWNpcGhlcmluZ0luZm9QZXJSQi1MaXN0CQkJQ2lwaGVyaW5nSW5mb1BlclJCLUxpc3QtcjQJCQlPUFRJT05BTCwKCS0tIEludGVncml0eSBwcm90ZWN0aW9uIHJlbGF0ZWQgaW5mb3JtYXRpb24gSUVzCgkJaW50ZWdyaXR5UHJvdGVjdGlvblN0YXR1cwkJSW50ZWdyaXR5UHJvdGVjdGlvblN0YXR1cywKCQlzcmItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mbwlTUkItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mb0xpc3QJT1BUSU9OQUwsCgkJaW1wbGVtZW50YXRpb25TcGVjaWZpY1BhcmFtcwlJbXBsZW1lbnRhdGlvblNwZWNpZmljUGFyYW1zCQlPUFRJT05BTCwKCS0tIFVzZXIgZXF1aXBtZW50IElFcwoJCXUtUk5USQkJCQkJCQlVLVJOVEksCgkJYy1STlRJCQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktcjUsCgkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LWV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QJCU9QVElPTkFMLAoJCXVlLVBvc2l0aW9uaW5nLUxhc3RLbm93blBvcwkJVUUtUG9zaXRpb25pbmctTGFzdEtub3duUG9zCQkJT1BUSU9OQUwsCgkJdUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWlkbGUKCQkJCQkJCQkJCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlCQlPUFRJT05BTCwKCQl1RVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaW50ZXJSQVQKCQkJCQkJCQkJCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAkJT1BUSU9OQUwsCgktLSBPdGhlciBJRXMKCQl1ZS1SQVRTcGVjaWZpY0NhcGFiaWxpdHkJCUludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUxpc3QtcjUJT1BUSU9OQUwsCgktLSBVVFJBTiBtb2JpbGl0eSBJRXMKCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAoJLS0gQ29yZSBuZXR3b3JrIElFcwoJCWNuLUNvbW1vbkdTTS1NQVAtTkFTLVN5c0luZm8JTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUCwKCQljbi1Eb21haW5JbmZvcm1hdGlvbkxpc3QJCUNOLURvbWFpbkluZm9ybWF0aW9uTGlzdEZ1bGwJCU9QVElPTkFMLAoJLS0gTWVhc3VyZW1lbnQgSUVzCgkJb25nb2luZ01lYXNSZXBMaXN0CQkJCU9uZ29pbmdNZWFzUmVwTGlzdC1yNQkJCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlwcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdAkJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3QsCgkJc3JiLUluZm9ybWF0aW9uTGlzdAkJCQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUsCgkJcmFiLUluZm9ybWF0aW9uTGlzdAkJCQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUJCQlPUFRJT05BTCwKCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcwoJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJdWwtVHJhbnNDaEluZm9MaXN0CQkJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAoJCS0tICdkdW1teScsICdkdW1teTEnIGFuZCAnZHVtbXkyJyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAoJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgoJCWR1bW15CQkJCQkJCUNIT0lDRSB7CgkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgewoJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAoJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCgkJCX0sCgkJCXRkZAkJCQkJCQkJTlVMTAoJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAoJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJZGwtVHJhbnNDaEluZm9MaXN0CQkJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCgktLSBQaHlDSCBJRXMKCQl0cGMtQ29tYmluYXRpb25JbmZvTGlzdAkJCVRQQy1Db21iaW5hdGlvbkluZm9MaXN0CQkJCU9QVElPTkFMLAoJLS0gTWVhc3VyZW1lbnQgcmVwb3J0CgkJbWVhc3VyZW1lbnRSZXBvcnQJCQkJTWVhc3VyZW1lbnRSZXBvcnQJCQkJCU9QVElPTkFMLAoJLS0gT3RoZXIgSUVzCgkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgkJCQlPUFRJT05BTAp9CgpTUk5DLVJlbG9jYXRpb25JbmZvLXY2OTBleHQtSUVzIDo6PQlTRVFVRU5DRSB7CgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQktLSBJRSB1ZUNhcGFiaWxpdHlDb250YWluZXIgaXMgdXNlZCBmb3IgdGhlIHRyYW5zcGFyZW50IHRyYW5zZmVyIG9mIGNhcGFiaWxpdHkgaW5mb3JtYXRpb24KCQktLSByZWNlaXZlZCBmcm9tIHRoZSBVRQoJCXVlQ2FwYWJpbGl0eUNvbnRhaW5lcgkJCUJJVCBTVFJJTkcKCQkJCQkJCQkJCQkoQ09OVEFJTklORyBVRS1DYXBhYmlsaXR5Q29udGFpbmVyLUlFcykJT1BUSU9OQUwsCgkJLS0gSUUgdWVDYXBhYmlsaXR5Q29udGFpbmVyLVJTQyBhbmQgSUUgdWVDYXBhYmlsaXR5Q29udGFpbmVyLVVDSSBhcmUgdXNlZCBmb3IgdGhlIAoJCS0tIHRyYW5zcGFyZW50IHRyYW5zZmVyIG9mIGNhcGFiaWxpdHkgaW5mb3JtYXRpb24gcmVjZWl2ZWQgZnJvbSB0aGUgVUUgdGhhdCB3YXMgaW50cm9kdWNlZCAKCQktLSBpbiBhIHJlbGVhc2UgaW5kZXBlbmRlbnQgbWFubmVyLCBpLmUuLCB0cmFuc2ZlcnJlZCB3aXRoaW4gYSBWTEVDLiBUaGVzZSBVRSBjYXBhYmlsaXRpZXMgCgkJLS0gYXJlIGluY2x1ZGVkIGJvdGggaW4gdGhlIFJSQyBDT05ORUNUSU9OIFNFVFVQIENPTVBMRVRFIGFuZCB0aGUgVUUgQ0FQQUJJTElUWSBJTkZPUk1BVElPTiAKCQktLSBtZXNzYWdlcy4gT25seSB0aGUgVkxFQyBvZiBvbmUgbWVzc2FnZSBuZWVkcyB0byBiZSBpbmNsdWRlZCBpLmUuIHRoZSBvbmUgZnJvbSB0aGVzZQoJCS0tIG1lc3NhZ2VzIHRoYXQgd2FzIGxhc3QgcmVjZWl2ZWQuCgkJLS0gQ2FzZSAxOiBJZiB0aGUgbGFzdCByZWNlaXZlZCBtZXNzYWdlIHdhcyBhIFJSQyBDT05ORUNUSU9OIFNFVFVQIENPTVBMRVRFIChSU0MpCgkJdWVDYXBhYmlsaXR5Q29udGFpbmVyLVJTQwkJQklUIFNUUklORwoJCQkJCQkJKENPTlRBSU5JTkcgUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtcjMtYWRkLWV4dC1JRXMpCU9QVElPTkFMLAoJCS0tIENhc2UgMjogSWYgdGhlIGxhc3QgcmVjZWl2ZWQgbWVzc2FnZSB3YXMgYSBVRSBDQVBBQklMSVRZIElORk9STUFUSU9OIChVQ0kpCgkJdWVDYXBhYmlsaXR5Q29udGFpbmVyLVVDSQkJQklUIFNUUklORwoJCQkJCQkJKENPTlRBSU5JTkcgVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tcjMtYWRkLWV4dC1JRXMpCQlPUFRJT05BTCwKCS0tIFJhZGlvIGJlYXJlciBJRXMKCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNi1leHQJCU9QVElPTkFMLAoJLS0gTWVhc3VyZW1lbnQgcmVwb3J0CgkJbWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxCU1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcQkJT1BUSU9OQUwsCgktLSBNQk1TIElFcwoJCW1ibXMtSm9pbmVkSW5mb3JtYXRpb24JCQlNQk1TLUpvaW5lZEluZm9ybWF0aW9uLXI2CQkJT1BUSU9OQUwsCgktLSBNZWFzdXJlbWVudCBJRXMKCQlpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtcjYtZXh0CQlPUFRJT05BTAp9CgpTUk5DLVJlbG9jYXRpb25JbmZvLXI2LUlFcyA6Oj0JCQlTRVFVRU5DRSB7CgktLSBOb24tUlJDIElFcwoJCS0tIElFIHJiLUlkZW50aXR5Rm9ySE9NZXNzYWdlIGluY2x1ZGVzIHRoZSBpZGVudGl0eSBvZiB0aGUgUkIgdXNlZCBieSB0aGUgc291cmNlIFNSTkMKCQktLSB0byBzZW5kIHRoZSBtZXNzYWdlIGNvbnRhaW5lZCBpbiB0aGUgSUUg0lRhcmdldFJOQy1Ub1NvdXJjZVJOQy1Db250YWluZXLTLgoJCS0tIE9ubHkgaW5jbHVkZWQgaWYgdHlwZSBpcyAiVUUgaW52b2x2ZWQiCgkJcmItSWRlbnRpdHlGb3JIT01lc3NhZ2UJCQlSQi1JZGVudGl0eQkJCQkJCQlPUFRJT05BTCwKCQlzdGF0ZU9mUlJDCQkJCQkJU3RhdGVPZlJSQywKCQlzdGF0ZU9mUlJDLVByb2NlZHVyZQkJCVN0YXRlT2ZSUkMtUHJvY2VkdXJlLAoJLS0gQ2lwaGVyaW5nIHJlbGF0ZWQgaW5mb3JtYXRpb24gSUVzCgkJY2lwaGVyaW5nU3RhdHVzTGlzdAkJCQlDaXBoZXJpbmdTdGF0dXNMaXN0LXI0LAoJCWxhdGVzdENvbmZpZ3VyZWRDTi1Eb21haW4JCUNOLURvbWFpbklkZW50aXR5LAoJCWNhbGN1bGF0aW9uVGltZUZvckNpcGhlcmluZwkJQ2FsY3VsYXRpb25UaW1lRm9yQ2lwaGVyaW5nCQkJT1BUSU9OQUwsCgkJY291bnQtQy1MaXN0CQkJCQlDT1VOVC1DLUxpc3QJCQkJCQlPUFRJT05BTCwKCQljaXBoZXJpbmdJbmZvUGVyUkItTGlzdAkJCUNpcGhlcmluZ0luZm9QZXJSQi1MaXN0LXI0CQkJT1BUSU9OQUwsCgktLSBJbnRlZ3JpdHkgcHJvdGVjdGlvbiByZWxhdGVkIGluZm9ybWF0aW9uIElFcwoJCWludGVncml0eVByb3RlY3Rpb25TdGF0dXMJCUludGVncml0eVByb3RlY3Rpb25TdGF0dXMsCgkJc3JiLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm8JU1JCLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm9MaXN0CU9QVElPTkFMLAoJCWltcGxlbWVudGF0aW9uU3BlY2lmaWNQYXJhbXMJSW1wbGVtZW50YXRpb25TcGVjaWZpY1BhcmFtcwkJT1BUSU9OQUwsCgktLSBVc2VyIGVxdWlwbWVudCBJRXMKCQl1LVJOVEkJCQkJCQkJVS1STlRJLAoJCWMtUk5USQkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXI2LAoJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS1leHQJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0CQlPUFRJT05BTCwKCQl1ZS1Qb3NpdGlvbmluZy1MYXN0S25vd25Qb3MJCVVFLVBvc2l0aW9uaW5nLUxhc3RLbm93blBvcwkJCU9QVElPTkFMLAoJCXVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlCgkJCQkJCQkJCQlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZQkJT1BUSU9OQUwsCgkJdUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWludGVyUkFUCgkJCQkJCQkJCQlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaW50ZXJSQVQJCU9QVElPTkFMLAoJCS0tIElFIHVlQ2FwYWJpbGl0eUNvbnRhaW5lciBpcyB1c2VkIGZvciB0aGUgdHJhbnNwYXJlbnQgdHJhbnNmZXIgb2YgY2FwYWJpbGl0eSBpbmZvcm1hdGlvbgoJCS0tIHJlY2VpdmVkIGZyb20gdGhlIFVFCgkJdWVDYXBhYmlsaXR5Q29udGFpbmVyCQkJQklUIFNUUklORwoJCQkJCQkJCQkJCShDT05UQUlOSU5HIFVFLUNhcGFiaWxpdHlDb250YWluZXItSUVzKQlPUFRJT05BTCwKCQktLSBJRSB1ZUNhcGFiaWxpdHlDb250YWluZXItUlNDIGFuZCBJRSB1ZUNhcGFiaWxpdHlDb250YWluZXItVUNJIGFyZSB1c2VkIGZvciB0aGUgCgkJLS0gdHJhbnNwYXJlbnQgdHJhbnNmZXIgb2YgY2FwYWJpbGl0eSBpbmZvcm1hdGlvbiByZWNlaXZlZCBmcm9tIHRoZSBVRSB0aGF0IHdhcyBpbnRyb2R1Y2VkIAoJCS0tIGluIGEgcmVsZWFzZSBpbmRlcGVuZGVudCBtYW5uZXIsIGkuZS4sIHRyYW5zZmVycmVkIHdpdGhpbiBhIFZMRUMuIFRoZXNlIFVFIGNhcGFiaWxpdGllcyAKCQktLSBhcmUgaW5jbHVkZWQgYm90aCBpbiB0aGUgUlJDIENPTk5FQ1RJT04gU0VUVVAgQ09NUExFVEUgYW5kIHRoZSBVRSBDQVBBQklMSVRZIElORk9STUFUSU9OIAoJCS0tIG1lc3NhZ2VzLiBPbmx5IHRoZSBWTEVDIG9mIG9uZSBtZXNzYWdlIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGkuZS4gdGhlIG9uZSBmcm9tIHRoZXNlCgkJLS0gbWVzc2FnZXMgdGhhdCB3YXMgbGFzdCByZWNlaXZlZC4KCQktLSBDYXNlIDE6IElmIHRoZSBsYXN0IHJlY2VpdmVkIG1lc3NhZ2Ugd2FzIGEgUlJDIENPTk5FQ1RJT04gU0VUVVAgQ09NUExFVEUgKFJTQykKCQl1ZUNhcGFiaWxpdHlDb250YWluZXItUlNDCQlCSVQgU1RSSU5HCgkJCQkJCQkoQ09OVEFJTklORyBSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS1yMy1hZGQtZXh0LUlFcykJT1BUSU9OQUwsCgkJLS0gQ2FzZSAyOiBJZiB0aGUgbGFzdCByZWNlaXZlZCBtZXNzYWdlIHdhcyBhIFVFIENBUEFCSUxJVFkgSU5GT1JNQVRJT04gKFVDSSkKCQl1ZUNhcGFiaWxpdHlDb250YWluZXItVUNJCQlCSVQgU1RSSU5HCgkJCQkJCQkoQ09OVEFJTklORyBVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi1yMy1hZGQtZXh0LUlFcykJCU9QVElPTkFMLAoJLS0gT3RoZXIgSUVzCgkJdWUtUkFUU3BlY2lmaWNDYXBhYmlsaXR5CQlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlMaXN0LXI1CU9QVElPTkFMLAoJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCgkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKCS0tIENvcmUgbmV0d29yayBJRXMKCQljbi1Db21tb25HU00tTUFQLU5BUy1TeXNJbmZvCU5BUy1TeXN0ZW1JbmZvcm1hdGlvbkdTTS1NQVAsCgkJY24tRG9tYWluSW5mb3JtYXRpb25MaXN0CQlDTi1Eb21haW5JbmZvcm1hdGlvbkxpc3RGdWxsCQlPUFRJT05BTCwKCS0tIE1lYXN1cmVtZW50IElFcwoJCW9uZ29pbmdNZWFzUmVwTGlzdAkJCQlPbmdvaW5nTWVhc1JlcExpc3QtcjYJCQkJT1BUSU9OQUwsCgkJaW50ZXJSQVRDZWxsSW5mb0luZGljYXRpb24JCUludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uCQkJT1BUSU9OQUwsCgktLSBSYWRpbyBiZWFyZXIgSUVzCgkJcHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3QJCVByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0LAoJCXNyYi1JbmZvcm1hdGlvbkxpc3QJCQkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2LAoJCXJhYi1JbmZvcm1hdGlvbkxpc3QJCQkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2CQkJT1BUSU9OQUwsCgktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAoJCXVsLVRyYW5zQ2hJbmZvTGlzdAkJCQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAoJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCgkJZGwtVHJhbnNDaEluZm9MaXN0CQkJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCgktLSBQaHlDSCBJRXMKCQl0cGMtQ29tYmluYXRpb25JbmZvTGlzdAkJCVRQQy1Db21iaW5hdGlvbkluZm9MaXN0CQkJCU9QVElPTkFMLAoJCXN0b3JlZENvbXByZXNzZWRNb2RlSW5mbwkJU3RvcmVkQ29tcHJlc3NlZE1vZGVJbmZvCQkJT1BUSU9OQUwsCgktLSBNZWFzdXJlbWVudCByZXBvcnQKCQltZWFzdXJlbWVudFJlcG9ydAkJCQlCSVQgU1RSSU5HCgkJCQkJCQkoQ09OVEFJTklORyBNZWFzdXJlbWVudFJlcG9ydCkJCQkJCU9QVElPTkFMLAoJLS0gT3RoZXIgSUVzCgkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgkJCQlPUFRJT05BTCwKCS0tIE1CTVMgSUVzCgkJbWJtcy1Kb2luZWRJbmZvcm1hdGlvbgkJCU1CTVMtSm9pbmVkSW5mb3JtYXRpb24tcjYJCQlPUFRJT05BTAp9CgotLSBJRSBkZWZpbml0aW9ucwoKQ2FsY3VsYXRpb25UaW1lRm9yQ2lwaGVyaW5nIDo6PQkJU0VRVUVOQ0UgewoJY2VsbC1JZAkJCQkJCQkJQ2VsbElkZW50aXR5LAoJc2ZuCQkJCQkJCQkJSU5URUdFUiAoMC4uNDA5NSkKfQoKQ2lwaGVyaW5nSW5mb1BlclJCIDo6PQkJCQlTRVFVRU5DRSB7CglkbC1IRk4JCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIwLi4yNSkpLAoJdWwtSEZOCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyMC4uMjUpKQp9CgpDaXBoZXJpbmdJbmZvUGVyUkItcjQgOjo9CQkJU0VRVUVOQ0UgewoJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCglkbC1IRk4JCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIwLi4yNSkpLAoJZGwtVU0tU04JCQkJCQkJQklUIFNUUklORyAoU0laRSAoNykpIAkJCQlPUFRJT05BTCwKCXVsLUhGTgkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjAuLjI1KSkKfQoKLS0gVEFCVUxBUjogQ2lwaGVyaW5nSW5mb1BlclJCLUxpc3QsIG11bHRpcGxpY2l0eSB2YWx1ZSBudW1iZXJPZlJhZGlvQmVhcmVycyAKLS0gaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBtYXhSQi4KQ2lwaGVyaW5nSW5mb1BlclJCLUxpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKCQkJCQkJCQkJCUNpcGhlcmluZ0luZm9QZXJSQgoKQ2lwaGVyaW5nSW5mb1BlclJCLUxpc3QtcjQgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgoJCQkJCQkJCQkJQ2lwaGVyaW5nSW5mb1BlclJCLXI0CgoKQ2lwaGVyaW5nU3RhdHVzIDo6PQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlzdGFydGVkLCBub3RTdGFydGVkIH0KCkNpcGhlcmluZ1N0YXR1c0xpc3QtcjQgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENOZG9tYWlucykpIE9GCgkJCQkJCQkJCQlDaXBoZXJpbmdTdGF0dXNDTmRvbWFpbi1yNAoKQ2lwaGVyaW5nU3RhdHVzQ05kb21haW4tcjQgOjo9CQlTRVFVRU5DRSB7CgkJY24tRG9tYWluSWRlbnRpdHkJCQkJQ04tRG9tYWluSWRlbnRpdHksCgkJY2lwaGVyaW5nU3RhdHVzCQkJCQlDaXBoZXJpbmdTdGF0dXMsCgkJc3RhcnQtVmFsdWUJCQkJCQlTVEFSVC1WYWx1ZQp9CgpDTi1Eb21haW5JbmZvcm1hdGlvbi12MzkwZXh0IDo6PQkJU0VRVUVOQ0UgewoJY24tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCQkJQ04tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQKfQoKQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0LXYzOTBleHQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDTmRvbWFpbnMpKSBPRgoJCQkJCQkJCQkJQ04tRG9tYWluSW5mb3JtYXRpb24tdjM5MGV4dAoKQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJpbGl0eS1yNCA6Oj0JU0VRVUVOQ0UgewoJZmRkLU1lYXN1cmVtZW50cwkJCQkJQk9PTEVBTiwKCS0tIFRBQlVMQVI6IFRoZSBJRXMgdGRkLU1lYXN1cmVtZW50cywgZ3NtLU1lYXN1cmVtZW50cyBhbmQgbXVsdGlDYXJyaWVyTWVhc3VyZW1lbnRzCgktLSBhcmUgbWFkZSBvcHRpb25hbCBzaW5jZSB0aGV5IGFyZSBjb25kaXRpb25hbCBiYXNlZCBvbiBhbm90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnQuCgktLSBUaGVpciBhYnNlbmNlIGNvcnJlc3BvbmRzIHRvIHRoZSBjYXNlIHdoZXJlIHRoZSBjb25kaXRpb24gaXMgbm90IHRydWUuCgl0ZGQzODQtTWVhc3VyZW1lbnRzCQkJCQlCT09MRUFOCQkJCQkJCQlPUFRJT05BTCwKCXRkZDEyOC1NZWFzdXJlbWVudHMJCQkJCUJPT0xFQU4JCQkJCQkJCU9QVElPTkFMLAoJZ3NtLU1lYXN1cmVtZW50cwkJCQkJR1NNLU1lYXN1cmVtZW50cwkJCQkJT1BUSU9OQUwsCgltdWx0aUNhcnJpZXJNZWFzdXJlbWVudHMJCQlCT09MRUFOCQkJCQkJCQlPUFRJT05BTAp9CgpDT1VOVC1DLUxpc3QgOjo9CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENOZG9tYWlucykpIE9GCgkJCQkJCQkJCQlDT1VOVC1DU2luZ2xlCgpDT1VOVC1DU2luZ2xlIDo6PQkJCQkJCVNFUVVFTkNFIHsKCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKCWNvdW50LUMJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMyKSkJCQkKfQoKREwtUGh5c0NoQ2FwYWJpbGl0eUZERC1yNCA6Oj0JCVNFUVVFTkNFIHsKCS0tIFRoZSBJRSDSbWF4Tm9EUENILVBEU0NILUNvZGVz0yBvbmx5IGdpdmVzIGluZm9ybWF0aW9uIG9uIHRoZSBtYXhpbXVtIG51bWJlciBvZiBEUENIIENvZGVzLgoJbWF4Tm9EUENILVBEU0NILUNvZGVzCQkJCUlOVEVHRVIgKDEuLjgpLAoJbWF4Tm9QaHlzQ2hCaXRzUmVjZWl2ZWQJCQkJTWF4Tm9QaHlzQ2hCaXRzUmVjZWl2ZWQsCglzdXBwb3J0Rm9yU0YtNTEyCQkJCQlCT09MRUFOLAoJLS0gZHVtbXksIGR1bW15MiBhbmQgZHVtbXkzIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KCS0tIGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgoJZHVtbXkJCQkJCQkJCUJPT0xFQU4sCglkdW1teTIJCQkJCQkJCVNpbXVsdGFuZW91c1NDQ1BDSC1EUENILVJlY2VwdGlvbiwKCWR1bW15MwkJCQkJCQkJU3VwcG9ydE9mRGVkaWNhdGVkUGlsb3RzRm9yQ2hFc3RpbWF0aW9uCQlPUFRJT05BTAp9CgpETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXI1IDo6PQkJU0VRVUVOQ0UgewoJLS0gVGhlIElFINJtYXhOb0RQQ0gtUERTQ0gtQ29kZXPTIG9ubHkgZ2l2ZXMgaW5mb3JtYXRpb24gb24gdGhlIG1heGltdW0gbnVtYmVyIG9mIERQQ0ggQ29kZXMuCgltYXhOb0RQQ0gtUERTQ0gtQ29kZXMJCQkJSU5URUdFUiAoMS4uOCksCgltYXhOb1BoeXNDaEJpdHNSZWNlaXZlZAkJCQlNYXhOb1BoeXNDaEJpdHNSZWNlaXZlZCwKCXN1cHBvcnRGb3JTRi01MTIJCQkJCUJPT0xFQU4sCgktLSBkdW1teSwgZHVteTIgYW5kIGR1bW15MyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCgktLSBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KCWR1bW15CQkJCQkJCQlCT09MRUFOLAoJZHVtbXkyCQkJCQkJCQlTaW11bHRhbmVvdXNTQ0NQQ0gtRFBDSC1SZWNlcHRpb24sCglkdW1teTMJCQkJCQkJCVN1cHBvcnRPZkRlZGljYXRlZFBpbG90c0ZvckNoRXN0aW1hdGlvbgkJT1BUSU9OQUwsCglmZGQtaHNwZHNjaAkJCQkJCQlDSE9JQ0UgewoJCXN1cHBvcnRlZAkJCQkJCQlTRVFVRU5DRSB7CgkJCWhzZHNjaC1waHlzaWNhbC1sYXllci1jYXRlZ29yeQkJSFNEU0NILXBoeXNpY2FsLWxheWVyLWNhdGVnb3J5LAoJCQktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KCQkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCgkJCWR1bW15CQkJCQkJCQlCT09MRUFOLAoJCQlkdW1teTIJCQkJCQkJCUJPT0xFQU4KCQl9LAoJCXVuc3VwcG9ydGVkCQkJCQkJCU5VTEwKCX0KfQoKREwtUGh5c0NoQ2FwYWJpbGl0eVRERC1yNSA6Oj0JCVNFUVVFTkNFIHsKCW1heFRTLVBlckZyYW1lCQkJCQkJTWF4VFMtUGVyRnJhbWUsCgltYXhQaHlzQ2hQZXJGcmFtZQkJCQkJTWF4UGh5c0NoUGVyRnJhbWUsCgltaW5pbXVtU0YJCQkJCQkJTWluaW11bVNGLURMLAoJc3VwcG9ydE9mUERTQ0gJCQkJCQlCT09MRUFOLAoJbWF4UGh5c0NoUGVyVFMJCQkJCQlNYXhQaHlzQ2hQZXJUUywKCXRkZDM4NC1oc3Bkc2NoCQkJCQkJQ0hPSUNFIHsKCQlzdXBwb3J0ZWQJCQkJCQkJSFNEU0NILXBoeXNpY2FsLWxheWVyLWNhdGVnb3J5LAoJCXVuc3VwcG9ydGVkCQkJCQkJCU5VTEwKCX0KfQoKREwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjUgOjo9CVNFUVVFTkNFIHsKCW1heFRTLVBlclN1YkZyYW1lCQkJCQlNYXhUUy1QZXJTdWJGcmFtZS1yNCwKCW1heFBoeXNDaFBlckZyYW1lCQkJCQlNYXhQaHlzQ2hQZXJTdWJGcmFtZS1yNCwKCW1pbmltdW1TRgkJCQkJCQlNaW5pbXVtU0YtREwsCglzdXBwb3J0T2ZQRFNDSAkJCQkJCUJPT0xFQU4sCgltYXhQaHlzQ2hQZXJUUwkJCQkJCU1heFBoeXNDaFBlclRTLAoJc3VwcG9ydE9mOFBTSwkJCQkJCUJPT0xFQU4sCgl0ZGQxMjgtaHNwZHNjaAkJCQkJCUNIT0lDRSB7CgkJc3VwcG9ydGVkCQkJCQkJCUhTRFNDSC1waHlzaWNhbC1sYXllci1jYXRlZ29yeSwKCQl1bnN1cHBvcnRlZAkJCQkJCQlOVUxMCgl9Cn0KCkRMLVJGQzMwOTUtQ29udGV4dCA6Oj0JCQkJU0VRVUVOQ0UgewoJcmZjMzA5NS1Db250ZXh0LUlkZW50aXR5CQkJSU5URUdFUiAoMC4uMTYzODMpLAoJZGwtbW9kZQkJCQkJCQkJRU5VTUVSQVRFRCB7dSwgbywgcn0sCglkbC1yZWYtaXIJCQkJCQkJT0NURVQgU1RSSU5HICggU0laRSAoMS4uMzAwMCkpLAoJZGwtcmVmLXRpbWUJCQkJCQkJSU5URUdFUiAoMC4uNDI5NDk2NzI5NSkJCU9QVElPTkFMLAoJZGwtY3Vyci10aW1lCQkJCQkJSU5URUdFUiAoMC4uNDI5NDk2NzI5NSkJCU9QVElPTkFMLAoJZGwtc3luLW9mZnNldC1pZAkJCQkJSU5URUdFUiAoMC4uNjU1MzUpCQkJT1BUSU9OQUwsCglkbC1zeW4tc2xvcGUtdHMJCQkJCQlJTlRFR0VSICgwLi40Mjk0OTY3Mjk1KQkJT1BUSU9OQUwsCglkbC1keW4tY2hhbmdlZAkJCQkJCUJPT0xFQU4KfQoKSW1wbGVtZW50YXRpb25TcGVjaWZpY1BhcmFtcyA6Oj0JQklUIFNUUklORyAoU0laRSAoMS4uNTEyKSkKCgpJbnRlZ3JpdHlQcm90ZWN0aW9uU3RhdHVzIDo6PQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlzdGFydGVkLCBub3RTdGFydGVkIH0KCkludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUxpc3QtcjUgOjo9CVNFUVVFTkNFIHsKCWludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlMaXN0LAoJZ2VyYW5JdS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJCUdFUkFOSXUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQkJCU9QVElPTkFMCn0KCkludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLXI2LWV4dCA6Oj0gU0VRVUVOQ0UgewoJLS0gVGhlIGNvbnRlbnQgb2YgdGhlIHY2OTAgbm9uLWNyaXRpY2FsIGV4dGVuc2lvbiBzaG91bGQgYmUKCS0tIGNvbnNpZGVyZWQgYXMgYW4gZXh0ZW5zaW9uIG9mIElFIEludHJhRnJlcUV2ZW50Q3JpdGVyaWFMaXN0CglldmVudAkJCQkJCQkJRXZlbnQxai1yNiwKCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpcywKCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAoJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwKfQoKLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgpNYXhIY0NvbnRleHRTcGFjZS1yNSA6Oj0JCQkJRU5VTUVSQVRFRCB7IAoJCQkJCQkJCQkJCWR1bW15LCBieTEwMjQsIGJ5MjA0OCwgYnk0MDk2LCBieTgxOTIsIAoJCQkJCQkJCQkJCWJ5MTYzODQsIGJ5MzI3NjgsIGJ5NjU1MzYsIGJ5MTMxMDcyIH0KCk1lYXN1cmVtZW50Q2FwYWJpbGl0eS1yNCA6Oj0JCVNFUVVFTkNFIHsKCWRvd25saW5rQ29tcHJlc3NlZE1vZGUJCQkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJpbGl0eS1yNCwKCXVwbGlua0NvbXByZXNzZWRNb2RlCQkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiaWxpdHktcjQJCn0KCk1lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlIDo6PQkJQ0hPSUNFIHsKCXNldHVwCQkJCQkJCQlNZWFzdXJlbWVudFR5cGUsCgltb2RpZnkJCQkJCQkJCU5VTEwsCglyZWxlYXNlCQkJCQkJCQlOVUxMCn0KCk1lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlLXI0IDo6PQlDSE9JQ0UgewoJc2V0dXAJCQkJCQkJCU1lYXN1cmVtZW50VHlwZS1yNCwKCW1vZGlmeQkJCQkJCQkJTlVMTCwKCXJlbGVhc2UJCQkJCQkJCU5VTEwKfQoKTWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUtcjYgOjo9CUNIT0lDRSB7CglzZXR1cAkJCQkJCQkJTWVhc3VyZW1lbnRUeXBlLXI2LAoJbW9kaWZ5CQkJCQkJCQlOVUxMLAoJcmVsZWFzZQkJCQkJCQkJTlVMTAp9CgpPbmdvaW5nTWVhc1JlcCA6Oj0JCQkJCVNFUVVFTkNFIHsKCW1lYXN1cmVtZW50SWRlbnRpdHkJCQkJCU1lYXN1cmVtZW50SWRlbnRpdHksCgktLSBUQUJVTEFSOiBUaGUgQ0hPSUNFIE1lYXN1cmVtZW50IGluIHRoZSB0YWJ1bGFyIGRlc2NyaXB0aW9uIGlzIGluY2x1ZGVkCgktLSBpbiBNZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZQoJbWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUJCQlNZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZSwKCW1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU9QVElPTkFMLAoJYWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJQWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJT1BUSU9OQUwKfQoKT25nb2luZ01lYXNSZXAtcjQgOjo9CQkJCVNFUVVFTkNFIHsKCW1lYXN1cmVtZW50SWRlbnRpdHkJCQkJCU1lYXN1cmVtZW50SWRlbnRpdHksCgktLSBUQUJVTEFSOiBUaGUgQ0hPSUNFIE1lYXN1cmVtZW50IGluIHRoZSB0YWJ1bGFyIGRlc2NyaXB0aW9uIGlzIGluY2x1ZGVkCgktLSBpbiBNZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZS1yNC4KCW1lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlCQkJTWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUtcjQsCgltZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlPUFRJT05BTCwKCWFkZGl0aW9uYWxNZWFzdXJlbWVudElELUxpc3QJCUFkZGl0aW9uYWxNZWFzdXJlbWVudElELUxpc3QJCU9QVElPTkFMCn0KCk9uZ29pbmdNZWFzUmVwLXI1IDo6PQkJCQlTRVFVRU5DRSB7CgltZWFzdXJlbWVudElkZW50aXR5CQkJCQlNZWFzdXJlbWVudElkZW50aXR5LAoJLS0gVEFCVUxBUjogVGhlIENIT0lDRSBNZWFzdXJlbWVudCBpbiB0aGUgdGFidWxhciBkZXNjcmlwdGlvbiBpcyBpbmNsdWRlZAoJLS0gaW4gTWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUtcjQuCgltZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZQkJCU1lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlLXI0LAoJbWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJTWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJT1BUSU9OQUwsCglhZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0CQlBZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0CQlPUFRJT05BTCwKCW1lYXN1cmVtZW50Q29tbWFuZC12NTkwZXh0CQkJQ0hPSUNFIHsKCQktLSB0aGUgY2hvaWNlICJpbnRyYS1mcmVxdWVuY3kiIHNoYWxsIGJlIHVzZWQgZm9yIHRoZSBjYXNlIG9mIGludHJhLWZyZXF1ZW5jeSBtZWFzdXJlbWVudCwKCQktLSBhcyB3ZWxsIGFzIHdoZW4gaW50cmEtZnJlcXVlbmN5IGV2ZW50cyBhcmUgY29uZmlndXJlZCBmb3IgaW50ZXItZnJlcXVlbmN5IG1lYXN1cmVtZW50CgkJaW50cmEtZnJlcXVlbmN5CQkJCQkJSW50cmEtRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQsCgkJaW50ZXItZnJlcXVlbmN5CQkJCQkJSW50ZXItRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQKCX0JCU9QVElPTkFMLAoJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1CU9QVElPTkFMLAoJaW50cmFGcmVxRXZlbnQtMWQtcjUJCQkJCUludHJhRnJlcUV2ZW50LTFkLXI1CQkJCU9QVElPTkFMCn0KCk9uZ29pbmdNZWFzUmVwLXI2IDo6PQkJCQlTRVFVRU5DRSB7CgltZWFzdXJlbWVudElkZW50aXR5CQkJCQlNZWFzdXJlbWVudElkZW50aXR5LAoJbWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUJCQlNZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZS1yNiwKCW1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU9QVElPTkFMLAoJYWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJQWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJT1BUSU9OQUwKfQoKT25nb2luZ01lYXNSZXBMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Tm9PZk1lYXMpKSBPRgoJCQkJCQkJCQkJT25nb2luZ01lYXNSZXAKCk9uZ29pbmdNZWFzUmVwTGlzdC1yNCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Tm9PZk1lYXMpKSBPRgoJCQkJCQkJCQkJT25nb2luZ01lYXNSZXAtcjQKCk9uZ29pbmdNZWFzUmVwTGlzdC1yNSA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Tm9PZk1lYXMpKSBPRgoJCQkJCQkJCQkJT25nb2luZ01lYXNSZXAtcjUKCk9uZ29pbmdNZWFzUmVwTGlzdC1yNiA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Tm9PZk1lYXMpKSBPRgoJCQkJCQkJCQkJT25nb2luZ01lYXNSZXAtcjYKClBEQ1AtQ2FwYWJpbGl0eS1yNCA6Oj0JCQkJU0VRVUVOQ0UgewoJbG9zc2xlc3NTUk5TLVJlbG9jYXRpb25TdXBwb3J0CQlCT09MRUFOLAoJc3VwcG9ydEZvclJmYzI1MDcJCQkJCUNIT0lDRSB7CgkJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKCQlzdXBwb3J0ZWQJCQkJCQkJTWF4SGNDb250ZXh0U3BhY2UKCX0sCglzdXBwb3J0Rm9yUmZjMzA5NQkJCQkJQ0hPSUNFIHsKCQlub3RTdXBwb3J0ZWQJCQkJCQlOVUxMLAoJCXN1cHBvcnRlZAkJCQkJCQlTRVFVRU5DRSB7CgkJCW1heFJPSEMtQ29udGV4dFNlc3Npb25zCQkJCU1heFJPSEMtQ29udGV4dFNlc3Npb25zLXI0CURFRkFVTFQgczE2LAoJCQlyZXZlcnNlQ29tcHJlc3Npb25EZXB0aAkJCQlJTlRFR0VSICgwLi42NTUzNSkJCQlERUZBVUxUIDAKCQl9Cgl9Cn0KClBEQ1AtQ2FwYWJpbGl0eS1yNSA6Oj0JCQkJU0VRVUVOQ0UgewoJbG9zc2xlc3NTUk5TLVJlbG9jYXRpb25TdXBwb3J0CQlCT09MRUFOLAoJc3VwcG9ydEZvclJmYzI1MDcJCQkJCUNIT0lDRSB7CgkJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKCQlzdXBwb3J0ZWQJCQkJCQkJTWF4SGNDb250ZXh0U3BhY2UtcjUKCX0sCglzdXBwb3J0Rm9yUmZjMzA5NQkJCQkJQ0hPSUNFIHsKCQlub3RTdXBwb3J0ZWQJCQkJCQlOVUxMLAoJCXN1cHBvcnRlZAkJCQkJCQlTRVFVRU5DRSB7CgkJCW1heFJPSEMtQ29udGV4dFNlc3Npb25zCQkJCU1heFJPSEMtQ29udGV4dFNlc3Npb25zLXI0CURFRkFVTFQgczE2LAoJCQlyZXZlcnNlQ29tcHJlc3Npb25EZXB0aAkJCQlJTlRFR0VSICgwLi42NTUzNSkJCQlERUZBVUxUIDAsCgkJCXN1cHBvcnRGb3JSZmMzMDk1Q29udGV4dFJlbG9jYXRpb24JQk9PTEVBTgoJCX0KCX0KfQoKUERDUC1DYXBhYmlsaXR5LXI2IDo6PQkJCQlTRVFVRU5DRSB7Cglsb3NzbGVzc1NSTlMtUmVsb2NhdGlvblN1cHBvcnQJCUJPT0xFQU4sCglsb3NzbGVzc0RMUkxDLVBEVVNpemVDaGFuZ2UJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTCwKCXN1cHBvcnRGb3JSZmMyNTA3CQkJCQlDSE9JQ0UgewoJCW5vdFN1cHBvcnRlZAkJCQkJCU5VTEwsCgkJc3VwcG9ydGVkCQkJCQkJCU1heEhjQ29udGV4dFNwYWNlLXI1Cgl9LAoJc3VwcG9ydEZvclJmYzMwOTUJCQkJCUNIT0lDRSB7CgkJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKCQlzdXBwb3J0ZWQJCQkJCQkJU0VRVUVOQ0UgewoJCQltYXhST0hDLUNvbnRleHRTZXNzaW9ucwkJCQlNYXhST0hDLUNvbnRleHRTZXNzaW9ucy1yNAlERUZBVUxUIHMxNiwKCQkJcmV2ZXJzZUNvbXByZXNzaW9uRGVwdGgJCQkJSU5URUdFUiAoMC4uNjU1MzUpCQkJREVGQVVMVCAwLAoJCQlzdXBwb3J0Rm9yUmZjMzA5NUNvbnRleHRSZWxvY2F0aW9uCUJPT0xFQU4KCQl9Cgl9Cn0KClBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktcjQgOjo9CQlTRVFVRU5DRSB7CgkJZmRkUGh5c0NoQ2FwYWJpbGl0eQkJCQkJU0VRVUVOQ0UgewoJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXI0LAoJCQl1cGxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJCVVMLVBoeXNDaENhcGFiaWxpdHlGREQKCQl9CQkJCQkJCQkJCQlPUFRJT05BTCwKCQl0ZGQzODQtUGh5c0NoQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CgkJCWRvd25saW5rUGh5c0NoQ2FwYWJpbGl0eQkJCURMLVBoeXNDaENhcGFiaWxpdHlUREQsCgkJCXVwbGlua1BoeXNDaENhcGFiaWxpdHkJCQkJVUwtUGh5c0NoQ2FwYWJpbGl0eVRERAoJCX0JCQkJCQkJCQkJCU9QVElPTkFMLAoJCXRkZDEyOC1QaHlzQ2hDYXBhYmlsaXR5CQkJCVNFUVVFTkNFIHsKCQkJZG93bmxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJREwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjQsCgkJCXVwbGlua1BoeXNDaENhcGFiaWxpdHkJCQkJVUwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjQKCQl9CQkJCQkJCQkJCQlPUFRJT05BTAp9CgpQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LXI1IDo6PQkJU0VRVUVOQ0UgewoJCWZkZFBoeXNDaENhcGFiaWxpdHkJCQkJCVNFUVVFTkNFIHsKCQkJZG93bmxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJREwtUGh5c0NoQ2FwYWJpbGl0eUZERC1yNSwKCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5RkRECgkJfQkJCQkJCQkJCQkJT1BUSU9OQUwsCgkJdGRkMzg0LVBoeXNDaENhcGFiaWxpdHkJCQkJU0VRVUVOQ0UgewoJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5VERELXI1LAoJCQl1cGxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJCVVMLVBoeXNDaENhcGFiaWxpdHlUREQKCQl9CQkJCQkJCQkJCQlPUFRJT05BTCwKCQl0ZGQxMjgtUGh5c0NoQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CgkJCWRvd25saW5rUGh5c0NoQ2FwYWJpbGl0eQkJCURMLVBoeXNDaENhcGFiaWxpdHlUREQtTENSLXI1LAoJCQl1cGxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJCVVMLVBoeXNDaENhcGFiaWxpdHlUREQtTENSLXI0CgkJfQkJCQkJCQkJCQkJT1BUSU9OQUwKfQoKUkYtQ2FwYWJpbGl0eS1yNCA6Oj0JCQkJU0VRVUVOQ0UgewoJCWZkZFJGLUNhcGFiaWxpdHkJCQkJU0VRVUVOQ0UgewoJCQl1ZS1Qb3dlckNsYXNzCQkJCQlVRS1Qb3dlckNsYXNzRXh0LAoJCQl0eFJ4RnJlcXVlbmN5U2VwYXJhdGlvbgkJCVR4UnhGcmVxdWVuY3lTZXBhcmF0aW9uCgkJfQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKCQl0ZGQzODQtUkYtQ2FwYWJpbGl0eQkJCVNFUVVFTkNFIHsKCQkJdWUtUG93ZXJDbGFzcwkJCQkJVUUtUG93ZXJDbGFzc0V4dCwKCQkJcmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdAkJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdCwKCQkJY2hpcFJhdGVDYXBhYmlsaXR5CQkJCUNoaXBSYXRlQ2FwYWJpbGl0eQoJCX0JCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCgkJdGRkMTI4LVJGLUNhcGFiaWxpdHkJCQlTRVFVRU5DRSB7CgkJCXVlLVBvd2VyQ2xhc3MJCQkJCVVFLVBvd2VyQ2xhc3NFeHQsCgkJCXJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QJCVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QsCgkJCWNoaXBSYXRlQ2FwYWJpbGl0eQkJCQlDaGlwUmF0ZUNhcGFiaWxpdHkKCQl9CQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCn0KClJGQzMwOTUtQ29udGV4dEluZm8gOjo9IAkJCVNFUVVFTkNFIHsKCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAoJcmZjMzA5NS1Db250ZXh0LUxpc3QJCQkJUkZDMzA5NS1Db250ZXh0LUxpc3QKfQoKUkZDMzA5NS1Db250ZXh0LUxpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJGQzMwOTUtQ0lEKSkgT0YgU0VRVUVOQ0UgewoJZGwtUkZDMzA5NS1Db250ZXh0CQkJCQlETC1SRkMzMDk1LUNvbnRleHQJCU9QVElPTkFMLAoJdWwtUkZDMzA5NS1Db250ZXh0CQkJCQlVTC1SRkMzMDk1LUNvbnRleHQJCU9QVElPTkFMCn0KClJMQy1DYXBhYmlsaXR5LXI1IDo6PQkJCQlTRVFVRU5DRSB7Cgl0b3RhbFJMQy1BTS1CdWZmZXJTaXplCQkJCVRvdGFsUkxDLUFNLUJ1ZmZlclNpemUtcjUsCgltYXhpbXVtUkxDLVdpbmRvd1NpemUJCQkJTWF4aW11bVJMQy1XaW5kb3dTaXplLAoJbWF4aW11bUFNLUVudGl0eU51bWJlcgkJCQlNYXhpbXVtQU0tRW50aXR5TnVtYmVyUkxDLUNhcAp9CgoKU1JCLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm8gOjo9CVNFUVVFTkNFIHsKCXVsLVJSQy1IRk4JCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjgpKSwKCWRsLVJSQy1IRk4JCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjgpKSwKCXVsLVJSQy1TZXF1ZW5jZU51bWJlcgkJCQlSUkMtTWVzc2FnZVNlcXVlbmNlTnVtYmVyLAoJZGwtUlJDLVNlcXVlbmNlTnVtYmVyCQkJCVJSQy1NZXNzYWdlU2VxdWVuY2VOdW1iZXIKfQoKU1JCLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm9MaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoNC4ubWF4U1JCc2V0dXApKSBPRgoJCQkJCQkJCQkJU1JCLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm8KClN0YXRlT2ZSUkMgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQljZWxsLURDSCwgY2VsbC1GQUNILAoJCQkJCQkJCQkJY2VsbC1QQ0gsIHVyYS1QQ0ggfQoKU3RhdGVPZlJSQy1Qcm9jZWR1cmUgOjo9CQkJRU5VTUVSQVRFRCB7CgkJCQkJCQkJCQlhd2FpdE5vUlJDLU1lc3NhZ2UsCgkJCQkJCQkJCQlhd2FpdFJCLVJlbGVhc2VDb21wbGV0ZSwKCQkJCQkJCQkJCWF3YWl0UkItU2V0dXBDb21wbGV0ZSwKCQkJCQkJCQkJCWF3YWl0UkItUmVjb25maWd1cmF0aW9uQ29tcGxldGUsCgkJCQkJCQkJCQlhd2FpdFRyYW5zcG9ydENILVJlY29uZmlndXJhdGlvbkNvbXBsZXRlLAoJCQkJCQkJCQkJYXdhaXRQaHlzaWNhbENILVJlY29uZmlndXJhdGlvbkNvbXBsZXRlLAoJCQkJCQkJCQkJYXdhaXRBY3RpdmVTZXRVcGRhdGVDb21wbGV0ZSwKCQkJCQkJCQkJCWF3YWl0SGFuZG92ZXJDb21wbGV0ZSwKCQkJCQkJCQkJCXNlbmRDZWxsVXBkYXRlQ29uZmlybSwKCQkJCQkJCQkJCXNlbmRVcmFVcGRhdGVDb25maXJtLAoJCQkJCQkJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24KCQkJCQkJCQkJCS0tIEl0IHNob3VsZCBub3QgYmUgc2VudAoJCQkJCQkJCQkJZHVtbXksCgkJCQkJCQkJCQlvdGhlclN0YXRlcyAKfQoKVG90YWxSTEMtQU0tQnVmZmVyU2l6ZS1yNSA6Oj0JCUVOVU1FUkFURUQgeyAKCQkJCQkJCQkJCWtiMTAsIGtiNTAsIGtiMTAwLCBrYjE1MCwga2IyMDAsIAoJCQkJCQkJCQkJa2IzMDAsIGtiNDAwLCBrYjUwMCwga2I3NTAsIGtiMTAwMCB9CgpUUEMtQ29tYmluYXRpb24tSW5mbyA6Oj0gU0VRVUVOQ0UgewoJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKCQl0cGMtQ29tYmluYXRpb25JbmRleAkJCQlUUEMtQ29tYmluYXRpb25JbmRleAp9CgpVRS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eS1yNSA6Oj0JU0VRVUVOQ0UgewoJbXVsdGlSQVQtQ2FwYWJpbGl0eUxpc3QJCQkJTXVsdGlSQVQtQ2FwYWJpbGl0eSwKCW11bHRpTW9kZUNhcGFiaWxpdHkJCQkJCU11bHRpTW9kZUNhcGFiaWxpdHksCglzdXBwb3J0T2ZVVFJBTi1Ub0dFUkFOLU5BQ0MJCQlCT09MRUFOCn0KClVFLVBvc2l0aW9uaW5nLUNhcGFiaWxpdHktcjQgOjo9CVNFUVVFTkNFIHsKCXN0YW5kYWxvbmVMb2NNZXRob2RzU3VwcG9ydGVkCQkJQk9PTEVBTiwKCXVlLUJhc2VkT1RET0EtU3VwcG9ydGVkCQkJCQlCT09MRUFOLAoJbmV0d29ya0Fzc2lzdGVkR1BTLVN1cHBvcnRlZAkJCU5ldHdvcmtBc3Npc3RlZEdQUy1TdXBwb3J0ZWQsCglzdXBwb3J0Rm9yVUUtR1BTLVRpbWluZ09mQ2VsbEZyYW1lcwkJQk9PTEVBTiwKCXN1cHBvcnRGb3JJUERMCQkJCQkJCUJPT0xFQU4sCglyeC10eC1UaW1lRGlmZmVyZW5jZVR5cGUyQ2FwYWJsZSAJCUJPT0xFQU4sCgl2YWxpZGl0eS1DZWxsUENILVVyYVBDSCAJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJT1BUSU9OQUwsCglzZm4tc2ZuVHlwZTJDYXBhYmlsaXR5CQkJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJT1BUSU9OQUwKfQoKVUUtUG9zaXRpb25pbmctTGFzdEtub3duUG9zIDo6PQkJU0VRVUVOQ0UgeyAKCQlzZm4JCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpLAoJCWNlbGwtaWQJCQkJCQkJQ2VsbElkZW50aXR5LAoJCXBvc2l0aW9uRXN0aW1hdGUJCQkJUG9zaXRpb25Fc3RpbWF0ZQp9CgpVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktcjQgOjo9CQlTRVFVRU5DRSB7CglhY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvcgkJQWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IsCglwZGNwLUNhcGFiaWxpdHkJCQkJCQlQRENQLUNhcGFiaWxpdHktcjQsCglybGMtQ2FwYWJpbGl0eQkJCQkJCVJMQy1DYXBhYmlsaXR5LAoJdHJhbnNwb3J0Q2hhbm5lbENhcGFiaWxpdHkJCQlUcmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eSwKCXJmLUNhcGFiaWxpdHkJCQkJCQlSRi1DYXBhYmlsaXR5LXI0LAoJcGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eQkJCVBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktcjQsCgl1ZS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eQkJCVVFLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LAoJc2VjdXJpdHlDYXBhYmlsaXR5CQkJCQlTZWN1cml0eUNhcGFiaWxpdHksCgl1ZS1wb3NpdGlvbmluZy1DYXBhYmlsaXR5CQkJVUUtUG9zaXRpb25pbmctQ2FwYWJpbGl0eS1yNCwKCW1lYXN1cmVtZW50Q2FwYWJpbGl0eQkJCQlNZWFzdXJlbWVudENhcGFiaWxpdHktcjQJCU9QVElPTkFMCn0KClVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS1yNSA6Oj0JCVNFUVVFTkNFIHsKCWFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yCQlBY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciwKCWRsLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZwoJCQkJCQkJCQkJREwtQ2FwYWJpbGl0eVdpdGhTaW11bHRhbmVvdXNIUy1EU0NIQ29uZmlnCU9QVElPTkFMLAoJcGRjcC1DYXBhYmlsaXR5CQkJCQkJUERDUC1DYXBhYmlsaXR5LXI1LAoJcmxjLUNhcGFiaWxpdHkJCQkJCQlSTEMtQ2FwYWJpbGl0eS1yNSwKCXRyYW5zcG9ydENoYW5uZWxDYXBhYmlsaXR5CQkJVHJhbnNwb3J0Q2hhbm5lbENhcGFiaWxpdHksCglyZi1DYXBhYmlsaXR5CQkJCQkJUkYtQ2FwYWJpbGl0eS1yNCwKCXBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHkJCQlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LXI1LAoJdWUtTXVsdGlNb2RlUkFULUNhcGFiaWxpdHkJCQlVRS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eS1yNSwKCXNlY3VyaXR5Q2FwYWJpbGl0eQkJCQkJU2VjdXJpdHlDYXBhYmlsaXR5LAoJdWUtcG9zaXRpb25pbmctQ2FwYWJpbGl0eQkJCVVFLVBvc2l0aW9uaW5nLUNhcGFiaWxpdHktcjQsCgltZWFzdXJlbWVudENhcGFiaWxpdHkJCQkJTWVhc3VyZW1lbnRDYXBhYmlsaXR5LXI0CQlPUFRJT05BTAp9CgpVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktcjYgOjo9CQlTRVFVRU5DRSB7CglhY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvcgkJQWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IsCglkbC1DYXBhYmlsaXR5V2l0aFNpbXVsdGFuZW91c0hTLURTQ0hDb25maWcKCQkJCQkJCQkJCURMLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZwlPUFRJT05BTCwKCXBkY3AtQ2FwYWJpbGl0eQkJCQkJCVBEQ1AtQ2FwYWJpbGl0eS1yNiwKCXJsYy1DYXBhYmlsaXR5CQkJCQkJUkxDLUNhcGFiaWxpdHktcjUsCgl0cmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eQkJCVRyYW5zcG9ydENoYW5uZWxDYXBhYmlsaXR5LAoJcmYtQ2FwYWJpbGl0eQkJCQkJCVJGLUNhcGFiaWxpdHktcjQsCglwaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5CQkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1yNSwKCXVlLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5CQkJVUUtTXVsdGlNb2RlUkFULUNhcGFiaWxpdHktcjUsCglzZWN1cml0eUNhcGFiaWxpdHkJCQkJCVNlY3VyaXR5Q2FwYWJpbGl0eSwKCXVlLXBvc2l0aW9uaW5nLUNhcGFiaWxpdHkJCQlVRS1Qb3NpdGlvbmluZy1DYXBhYmlsaXR5LXI0LAoJbWVhc3VyZW1lbnRDYXBhYmlsaXR5CQkJCU1lYXN1cmVtZW50Q2FwYWJpbGl0eS1yNAkJT1BUSU9OQUwKfQoKVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXI3IDo6PQkJU0VRVUVOQ0UgewoJYWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IJCUFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yLAoJZGwtQ2FwYWJpbGl0eVdpdGhTaW11bHRhbmVvdXNIUy1EU0NIQ29uZmlnCgkJCQkJCQkJCQlETC1DYXBhYmlsaXR5V2l0aFNpbXVsdGFuZW91c0hTLURTQ0hDb25maWcJT1BUSU9OQUwsCglwZGNwLUNhcGFiaWxpdHkJCQkJCQlQRENQLUNhcGFiaWxpdHktcjYsCglybGMtQ2FwYWJpbGl0eQkJCQkJCVJMQy1DYXBhYmlsaXR5LXI1LAoJdHJhbnNwb3J0Q2hhbm5lbENhcGFiaWxpdHkJCQlUcmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eSwKCXJmLUNhcGFiaWxpdHkJCQkJCQlSRi1DYXBhYmlsaXR5LXI3LAoJcGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eQkJCVBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktcjcsCgl1ZS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eQkJCVVFLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LXI1LAoJc2VjdXJpdHlDYXBhYmlsaXR5CQkJCQlTZWN1cml0eUNhcGFiaWxpdHksCgl1ZS1wb3NpdGlvbmluZy1DYXBhYmlsaXR5CQkJVUUtUG9zaXRpb25pbmctQ2FwYWJpbGl0eS1yNCwKCW1lYXN1cmVtZW50Q2FwYWJpbGl0eQkJCQlNZWFzdXJlbWVudENhcGFiaWxpdHktcjQJCU9QVElPTkFMCn0KClVMLVJGQzMwOTUtQ29udGV4dCA6Oj0JCQkJU0VRVUVOQ0UgewoJcmZjMzA5NS1Db250ZXh0LUlkZW50aXR5CQkJSU5URUdFUiAoMC4uMTYzODMpLAoJdWwtbW9kZQkJCQkJCQkJRU5VTUVSQVRFRCB7dSwgbywgcn0sCgl1bC1yZWYtaXIJCQkJCQkJT0NURVQgU1RSSU5HICggU0laRSAoMS4uMzAwMCkpLAoJdWwtcmVmLXRpbWUJCQkJCQkJSU5URUdFUiAoMC4uNDI5NDk2NzI5NSkJCU9QVElPTkFMLAoJdWwtY3Vyci10aW1lCQkJCQkJSU5URUdFUiAoMC4uNDI5NDk2NzI5NSkJCU9QVElPTkFMLAoJdWwtc3luLW9mZnNldC1pZAkJCQkJSU5URUdFUiAoMC4uNjU1MzUpCQkJT1BUSU9OQUwsCgl1bC1zeW4tc2xvcGUtdHMJCQkJCQlJTlRFR0VSICgwLi40Mjk0OTY3Mjk1KQkJT1BUSU9OQUwsCgl1bC1yZWYtc24tMQkJCQkJCQlJTlRFR0VSICgwLi42NTUzNSkJCQlPUFRJT05BTAp9CgpFTkQKCg==