MjAwMC0xMi0zMSAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy9hcm0vbGludXgtZ2FzLmggKENMRUFSX0lOU05fQ0FDSEUpOiBBZGQgbWlzc2luZyBhc20KCW9wZXJhbmRzLgoKMjAwMC0xMi0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRieG91dC5jIChkYnhvdXRfYmxvY2spOiBJbnZlcnQgbG9naWMgb24gZWxpZGluZyBMQlJBQy9SQlJBQy4KCUluaXRpYWxpemUgdmFyaWFibGVzIHByb3Blcmx5IGZvciBEQlhfTEJSQUNfRklSU1QuCgoyMDAwLTEyLTMwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBDT01QT05FTlRfUkVGKTogRml4IHR5cG8gaW4gbGFzdCBjaGFuZ2UuCgoyMDAwLTEyLTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jICh2YWxpZGF0ZV9hcmdsaXN0KTogTmV3IGZ1bmN0aW9uLCB1c2UgaXQuCgoyMDAwLTEyLTMwICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IEZpeCB0eXBvcyBpbiBlcnJvcgoJbWVzc2FnZSBhbmQgY29tbWVudC4gIE5vdGUgbG9jYXRpb24gb2YgdGVzdGNhc2UgZm9yIGFuIHVuaGFuZGxlZAoJc2l0dWF0aW9uLgoKMjAwMC0xMi0zMCAgSmVmZnJleSBPbGRoYW0gIDxvbGRoYW1AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlZmF1bHRzLmggKEJVSUxEX1ZBX0xJU1RfVFlQRSk6IE5ldyBkZWZpbml0aW9uLgoJKiB0cmVlLmMgKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIpOiBFbnN1cmUgdGhlIHZhX2xpc3RfdHlwZV9ub2RlCglpcyBhIGNvcHksIG5vdCBhbiBhbGlhcy4KCjIwMDAtMTItMzAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjYWxscy5jIChjYWxsc19mdW5jdGlvbl8xLCBjYXNlIENPTlNUUlVDVE9SKTogTmV3IGNhc2UuCgoJKiBhbGlhcy5jIChhbGlhc19zZXRzX2NvbmZsaWN0X3ApOiBOZXcgZnVuY3Rpb24uCgkobWVtc19pbl9kaXNqb2ludF9hbGlhc19zZXRzX3ApOiBVc2UgaXQuCgkocmVhZG9ubHlfZmllbGRzX3ApOiBNb3ZlZCBmcm9tIGV4cHIuYzsgY2hlY2sgZm9yIHJlY29yZCB0eXBlLgoJKG9iamVjdHNfbXVzdF9jb25mbGljdF9wKTogTmV3IGZ1bmN0aW9uLgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IFVzZSBhc3NpZ25fdGVtcCBhcyBtdWNoIGFzIHBvc3NpYmxlLCB1c2UKCXJlYWRvbmx5IHZhcmlhbnQgaWYgYXNzaWduZWQgb25jZSwgYW5kIGRvbid0IHNldCBtZW1vcnkgYXR0cmlidXRlcy4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xLCBzdG9yZV9vbmVfYXJnKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcywgZXhwYW5kX3JldHVybik6IExpa2V3aXNlLgoJKiBleHByLmMgKGNvcHlfYmxrbW9kZV9mcm9tX3JlZywgc3RvcmVfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCShzdG9yZV9maWVsZCwgc2F2ZV9ub25jb3BpZWRfcGFydHMsIGV4cGFuZF9leHByKTogTGlrZXdpc2UuCgkoZXhwYW5kX2V4cHJfdW5hbGlnbmVkKTogTGlrZXdpc2UuCgkocmVhZG9ubHlfZmllbGRzX3ApOiBNb3ZlZCB0byBhbGlhcy5jLgoJKHNhZmVfZnJvbV9wKTogUmV3b3JrIGhhbmRsaW5nIG9mIFNBVkVfRVhQUi4KCU1FTXMgb255IGNvbmZsaWN0IGlmIGFsaWFzIHNldHMgY29uZmxpY3Q7IGxpa2V3aXNlIGZvciBJTkRJUkVDVF9SRUYuCgkqIGZ1bmN0aW9uLmMgKHN0cnVjdCB0ZW1wX3Nsb3QpOiBEZWxldGUgZmllbGQgQUxJQVNfU0VUOyBhZGQgVFlQRS4KCShhc3NpZ25fc3RhY2tfZm9yX3RlbXApOiBVc2Ugb2JqZWN0c19tdXN0X2NvbmZpY3RfcC4KCVNldCBhbGwgbWVtb3J5IGF0dHJpYnV0ZXMgZnJvbSB0eXBlLCBpZiBzcGVjaWZpZWQuCgkobWFya190ZW1wX3Nsb3QpOiBNYXJrIFRZUEUgZmllbGQuCgkqIHRyZWUuaCAoYWxpYXNfc2V0c19jb25mbGljdF9wLCByZWFkb25seV9maWVsZHNfcCk6IE5ldyBkZWNscy4KCShvYmplY3RzX211c3RfY29uZmxpY3RfcCk6IExpa2V3aXNlLgoKCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IERvbid0IHVzZSBhc3NpZ25fc3RhY2tfdGVtcCBpbiBlcnJvciBjYXNlLgoJKGFkZF9jYXNlX25vZGUpOiBObyBuZWVkIHRvIGNvcHkgbm9kZXMgYW55bW9yZS4KCjIwMDAtMTItMzAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmMgKHNwbGl0X2JyYW5jaGVzKTogRG9uJ3QgZGVyZWZlcmVuY2UgcmUtY29tcHV0ZWQKCWBiZXlvbmQnIGJlZm9yZSBjaGVja2luZyBpdCdzIG5vbi1OVUxMLgoKMjAwMC0xMi0yOSAgUm9iZXJ0IExpcGUgPHJvYmVydGxAc2NvLmNvbT4KCglSZW1vdmUgQ09GRiBzdXBwb3J0IGZyb20gaT84Ni1wYy1zY28zLjJ2NS4KCSogaTM4Ni9zY281LmggKFBSRUZFUlJFRF9ERUJVR0dJTkdfVFlQRSk6IENoYW5nZSB0byBEd2FyZiBJSS4KCShUQVJHRVRfRUxGKTogTm93IGFsd2F5cyB0cnVlLgoJKFNVQlRBUkdFVF9TV1RJQ0hFUzogKVJlbW92ZSAtbWNvZmYuCgoJKiBpMzg2L3Qtc2NvNSAoTVVMVElMSUJfT1BUSU9OUywgTVVMVElMSUJfRElSTkFNRVMsCglNVUxUSUxJQl9FWENFUFRJT04pOiBOdWtlIGNvZmYuCgkoQ1JUU1RVRkZfVF9DRkxBR1NfUyk6ICBEZWxldGVkLgoJKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IEFkZGVkLgoKMjAwMC0xMi0yOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0YW50X2RlZik6IERvbid0IEVOQ09ERV9TRUNUSU9OX0lORk8KCXR3aWNlLiAgVXBkYXRlIGRlc2MtPnJ0bCBhbmQgLT5sYWJlbCwgaW4gY2FzZSBFTkNPREVfU0VDVElPTl9JTkZPCgltb2RpZmllcyB0aGVtLgoKMjAwMC0xMi0yOSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY29tPgoKCSogaWE2NC5jIChpYTY0X2V4cGFuZF9sb2FkX2FkZHJlc3MpOiBBY2NlcHQgYWRkaXRpb25hbCBzY3JhdGNoCglyZWdpc3RlciBhcmd1bWVudC4gIEFsbCBjYWxsZXJzICYgcHJvdG90eXBlIGNoYW5nZWQuCglVc2Ugc2NyYXRjaCByZWdpc3RlciB3aGVuIGdlbmVyYXRpbmcgbG9hZF9zeW1wdHIgaW5zbnMuCgkqIGlhNjQubWQgKG1vdmRpX3N5bWJvbGljKTogQ2xvYmJlciBhIHNjcmF0Y2ggcmVnaXN0ZXIuICBVc2UgaXQKCXdoZW4gY2FsbGluZyBpYTY0X2V4cGFuZF9sb2FkX2FkZHJlc3MuCgkobW92ZGkpOiBHZW5lcmF0ZSBtb3ZkaV9zeW1ib2xpYyB3aXRoIGFkZGl0aW9uYWwgb3BlcmFuZC4KCShsb2FkX2dwcmVsNjQpOiBVc2UgcGljX29mZnNldF90YWJsZV9ydHggaW5zdGVhZCBvZiAocmVnOkRJIDEpLgoJKGxvYWRfc3ltcHRyKTogTGlrZXdpc2UuICBVc2UgYWRkaXRpb25hbCBvcGVyYW5kIGFzIGEgc2NyYXRjaAoJcmVnaXN0ZXIgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGl0IGhlcmUuCgoJKiBiYXNpYy1ibG9jay5oOiBBZGQgYSBjb21tZW50LgoJKiBmbG93LmMgKFBST1BfUE9TVFJFTE9BRCk6IE5ldyBtYWNyby4KCSh1cGRhdGVfbGlmZV9pbmZvKTogQWRkIGl0IHRvIHByb3BfZmxhZ3MuCgkobWFya19zZXRfMSk6IElmIGl0IGlzIHNldCwgY29tcHV0ZSBSRUdfTl9TRVRTIGZvciB0aGUgb3JpZ2luYWwKCXJlZ2lzdGVyIG51bWJlciBvZiBhIGhhcmQgcmVnLgoKCSogZW1pdC1ydGwuYyAoZ2VuX3Jhd19SRUcpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuX3J0eF9SRUcsIGdlbl9yZWdfcnR4LCBpbml0X2VtaXRfb25jZSk6IFVzZSBpdCBpbnN0ZWFkIG9mCglnZW5fcnR4X3Jhd19SRUcuCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBQcmludCBPUklHSU5BTF9SRUdOTy4KCSogZmluYWwuYyAoYWx0ZXJfc3VicmVnKTogVXBkYXRlIGl0LgoJKiByZWdyZW5hbWUuYyAoZG9fcmVwbGFjZSk6IExpa2V3aXNlLiAgVXNlIGdlbl9yYXdfUkVHLgoJKiBydGwuZGVmIChSRUcpOiBVcGRhdGUgY29tbWVudC4KCSogcnRsLmggKFgwVUlOVCwgT1JJR0lOQUxfUkVHTk8pOiBOZXcgbWFjcm9zLgoJKGdlbl9yYXdfUkVHKTogRGVjbGFyZS4KCjIwMDAtMTItMjkgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmMgKGdldF9zZXRfY29uc3RydWN0b3JfYml0cyk6IFVzZSBob3N0X2ludGVnZXJwIGFuZAoJdHJlZV9sb3dfY3N0LgoKCSogbG9jYWwtYWxsb2MuYyAodXBkYXRlX2VxdWl2X3JlZ3MpOiBEb24ndCB1c2UgY29weV9ydHggb24gUEFUVEVSTi4KCgkqIHRvcGxldi5jIChtYWluKTogQ2FsbCB4bWFsbG9jX3NldF9wcm9ncmFtX25hbWUuCgkqIGdjYy5jIChtYWluKTogTGlrZXdpc2UuCgoyMDAwLTEyLTI5ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBGaXggdHlwbyBpbiB3YXJuaW5nCgltZXNzYWdlLgoKMjAwMC0xMi0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9leHBhbmRfYmxvY2tfbW92ZSk6IEluaXRpYWxpemUKCXNyY19hbGlnbiBhbmQgZHN0X2FsaWduIGluIGJpdHMuICBEbyB1bmFsaWduZWQgcXVhZHdvcmQgbG9hZHMKCWlmIHBvc3NpYmxlIGZvciBCV1ggdG9vLgoJKGFscGhhX2V4cGFuZF9ibG9ja19jbGVhcik6IEluaXRpYWxpemUgYWxpZ24gaW4gYml0cy4gIFRyYWNrCglzbWFsbCBsZWFkaW5nIG9mZnNldHMgaW50byBhIGxhcmdlciBhbGlnbm1lbnQuICBQbGF5IGdhbWVzIHdpdGgKCXN0cV91IGZvciBsYXJnZSA0LWJ5dGUgYWxpZ25lZCBibG9ja3MuICBVc2UgbG9hZC9tYXNrL3N0b3JlCglmb3IgYXBwcm9wcmVhdGVseSBhbGlnbmVkIGhlYWRzIGFuZCB0YWlscy4KCjIwMDAtMTItMjkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogQ29udmVydCBhcmd1bWVudHMgcGFzc2VkIGJ5CglyZWZlcmVuY2UgdG8gdGhlIHJpZ2h0IG1vZGUuCgoyMDAwLTEyLTI4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBjLXBhcnNlLmluIChzZWxlY3Rfb3JfaXRlcl9zdG10KTogVXNlIHRydXRodmFsdWVfY29udmVyc2lvbgoJb24gdGhlIGNvbmRpdGlvbiBvZiBhIEZPUiBzdGF0ZW1lbnQsIHNvIHRoYXQgaXQgZ2V0cyB0eXBlY2hlY2tlZAoJYW5kIG9wdGltaXplZC4KCjIwMDAtMTItMjkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUHJldmVudCBjcmFzaCBpbiBjYXNlIG9mIG92ZXJmbG93IGluCglhcnJheSBzaXplLgoKCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IEFkZCB0byBjYWxsX2Z1c2FnZSB0aGUKCXN0YWNrIHNsb3QgYXNzaWduZWQgdG8gYXJndW1lbnQgcGFzc2VkIGJ5IHJlZmVyZW5jZS4KCjIwMDAtMTItMjggIEplZmZyZXkgT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0b3BsZXYuaCAoZXh0ZXJuIHJlYWxseV9zb3JyeSk6IFJlbW92ZSBleHRlcm4gZGVjbGFyYXRpb24gZm9yCiAgICAgICAgbm9uZXhpc3RlbnQgZnVuY3Rpb24uCgoyMDAwLTEyLTI4ICBKZWZmcmV5IE9sZGhhbSAgPG9sZGhhbUBjb2Rlc291cmNlcnkuY29tPgoKCSogdmFyYXNtLmMgKGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlkX3ApOiBJbmRpY2F0ZSBzdWJ0cmFjdGlvbiBvZgoJcG9pbnRlcnMgdG8gdGhlIHNhbWUgc3RyaW5nIGNvbnN0YW50IGlzIGFic29sdXRlLgoKMjAwMC0xMi0yOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoZW51bSBmb3JtYXRfdHlwZSk6IEFkZCBzdHJmbW9uX2Zvcm1hdF90eXBlLgoJKGRlY2xfYXR0cmlidXRlcyk6IEhhbmRsZSBmb3JtYXQgYXR0cmlidXRlcyBzdHJmbW9uIGFuZAoJX19zdHJmbW9uX18uCgkoRk1UX0ZMQUdfVVNFX0RPTExBUiwgRk1UX0ZMQUdfWkVST19XSURUSF9CQUQsCglGTVRfRkxBR19FTVBUWV9QUkVDX09LKTogRGVmaW5lLgoJKGZvcm1hdF9jaGFyX2luZm8pOiBVcGRhdGUgY29tbWVudCBmb3IgZmxhZ19jaGFycy4KCShmb3JtYXRfZmxhZ19zcGVjKTogQWRkIHNraXBfbmV4dF9jaGFyLgoJKGZvcm1hdF9raW5kX2luZm8pOiBBZGQgbGVmdF9wcmVjaXNpb25fY2hhci4KCShwcmludGZfZmxhZ19zcGVjcywgc2NhbmZfZmxhZ19zcGVjcywgc3RyZnRpbWVfZmxhZ19zcGVjcywKCWZvcm1hdF90eXBlcyk6IFVwZGF0ZSBmb3IgdGhlc2UgbmV3IHN0cnVjdHVyZSBtZW1iZXJzIGFuZCBmbGFncy4KCSh0aW1lX2NoYXJfdGFibGUpOiBNYWtlIGNvbnN0LgoJKHN0cmZtb25fbGVuZ3RoX3NwZWNzLCBzdHJmbW9uX2ZsYWdfc3BlY3MsIHN0cmZtb25fZmxhZ19wYWlycywKCW1vbmV0YXJ5X2NoYXJfdGFibGUpOiBOZXcuCgkoZm9ybWF0X3R5cGVzKTogQWRkIGRldGFpbHMgb2Ygc3RyZm1vbiBmb3JtYXRzLgoJKGluaXRfZnVuY3Rpb25fZm9ybWF0X2luZm8pOiBDcmVhdGUgZGVmYXVsdCBhdHRyaWJ1dGUgZm9yIHN0cmZtb24uCgkoY2hlY2tfZm9ybWF0X2luZm9fbWFpbik6IENoZWNrIHRoZSBuZXcgZmxhZ3MuICBIYW5kbGUKCXNraXBfbmV4dF9jaGFyIGFuZCBsZWZ0IHByZWNpc2lvbi4KCSogdG9wbGV2LmMgKGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zKTogVXBkYXRlIGRlc2NyaXB0aW9uIG9mCgktV2Zvcm1hdC4KCSogZXh0ZW5kLnRleGk6IERvY3VtZW50IHN0cmZtb24gZm9ybWF0IGF0dHJpYnV0ZXMuICBEb2N1bWVudAoJYXR0cmlidXRlIGZvcm1zIHN1Y2ggYXMgX19wcmludGZfXy4gIENsYXJpZnkgZm9ybWF0X2FyZyBhdHRyaWJ1dGUKCWRvY3VtZW50YXRpb24uCgkqIGludm9rZS50ZXhpICgtV2Zvcm1hdCk6IFVwZGF0ZSBmb3Igc3RyZm1vbiBmb3JtYXRzLgoKMjAwMC0xMi0yOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IEZpeCBsYXN0IHBhdGNoLgoKMjAwMC0xMi0yOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvY3J0MS5hc20gKHN0YXJ0X2wpOiBgX19TSDRfU0lOR0xFX09OTFlfXycgd2FzIG1pc3NpbmcKCXRoZSB0cmFpbGluZyBgX18nLgoKMjAwMC0xMi0yOCAgQWxhbiBMZWhvdHNreSAgPGxlaG90c2t5QHRpYWMubmV0PgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IENvcnJlY3RseSBjb21wdXRlIHNtYWxsZXN0IG1vZGUgdGhhdAoJaXMgc3VmZmljaWVudCB0byBjb250YWluIGFsbCBiaXRzIHdlIGFyZSBzdG9yaW5nLgoKMjAwMC0xMi0yNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoYnVpbGRfZnVuY3Rpb25fY2FsbF9leHByKTogTmV3IGZ1bmN0aW9uLiAgVXNlIGl0CglldmVyeXdoZXJlIGluIGxpZXUgb2YgbWFudWFsbHkgY29uc3RydWN0aW5nIGEgQ0FMTF9FWFBSLgoKMjAwMC0xMi0yNyAgQ2hhbmRyYWthbGEgQ2hhdnZhICA8Y2NoYXZ2YUByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoc3RvcmVfb25lX2FyZyk6ICBJZiBwYXJtIGlzIHBhc3NlZCBib3RoIGluIHN0YWNrIGFuZCBpbgoJcmVnaXN0ZXIgYW5kIG9mZnNldCBpcyBncmVhdGVyIHRoYW4gcmVnX3Bhcm1fc3RhY2tfc3BhY2UsIHNwbGl0Cgl0aGUgb2Zmc2V0IGFuZCBjYWxsIGVtaXRfcHVzaF9pbnNuKCkuCgoyMDAwLTEyLTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogaWZjdnQuYyAobm9jZV9lbWl0X3N0b3JlX2ZsYWcpOiBIYW5kbGUganVtcCBpbnNucyB0aGF0IGFyZQoJUEFSQUxMRUwuCgoyMDAwLTEyLTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHJ0bC5jIChjb3B5X21vc3RfcnR4LCBzaGFsbG93X2NvcHlfcnR4KTogQ29weSBmcmFtZV9yZWxhdGVkCglmbGFnLgoKMjAwMC0xMi0yNyAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuaW46IGZpeCBmb3IgYW5jaWVudCBCb3VybmUgc2hlbGwKCSogZml4aW5jL01ha2VmaWxlLkJFT1M6IG9ic29sZXRlCgkqIGZpeGluYy9NYWtlZmlsZS5ET1M6IG9ic29sZXRlCgkqIGZpeGluYy9maXhpbmNsLnNoKExJTktTKTogdXNlIGB0ZXN0IC1kJyByYXRoZXIgdGhhbiBgbHMnIGZvciB0ZXN0aW5nCgoyMDAwLTEyLTI3ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jb20+CgoJKiBzY2hlZC1kZXBzLmMgKGdldF9jb25kaXRpb24sIGNvbmRpdGlvbnNfbXV0ZXhfcCk6IE5ldyBmdW5jdGlvbnMuCgkoYWRkX2RlcGVuZGVuY2UpOiBVc2UgdGhlbSB0byBhdm9pZCBhZGRpbmcgdW5uZWNlc3NhcnkgZGVwZW5kZW5jaWVzCgliZXR3ZWVuIGNvbmRpdGlvbmFsbHkgZXhlY3V0ZWQgaW5zbnMuCgkoc2NoZWRfYW5hbHl6ZV8xLCBzY2hlZF9hbmFseXplXzIsIHNjaGVkX2FuYWx5emVfaW5zbik6IERvbid0IGZyZWUKCWRlcGVuZGVuY3kgbGlzdHMgaWYgY3VycmVudCBpbnNuIGlzIGEgQ09ORF9FWEVDLgoKMjAwMC0xMi0yNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGRlZmluZV9hdHRyICJsZW5ndGgiKTogQ29ycmVjdAoJY2FsY3VsYXRpb24uCgoyMDAwLTEyLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jOiBGaXggYSBjb21tZW50IHR5cG8uCgkoZ2V0X3NoaWZ0X2FsZyk6IEZpeCBhIHR5cG8gaW4gdGhlIGFzc2VtYmx5IGNvZGUgZm9yIDEyLWJpdAoJQVNISUZUUlQgaW4gSEltb2RlLiAgRG8gbm90IG91dHB1dCBleHRyYSB3aGl0ZXNwYWNlIGFmdGVyIG9uZSBsaW5lCglvZiBhc3NlbWJseSBjb2RlLiAgT3V0cHV0IGEgdGFiIGFmdGVyIGFuIG9wY29kZSBpbnN0ZWFkIG9mIGEKCXNwYWNlLgoJKGVtaXRfYV9zaGlmdCk6IE91dHB1dCBhIHRhYiBhZnRlciBhbiBvcGNvZGUgaW5zdGVhZCBvZiBhIHNwYWNlLgoKMjAwMC0xMi0yMyAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRfbW92cWlfcl9tciwgb3V0X21vdmhpX3JfbXIsIG91dF9tb3ZzaV9yX21yLAoJb3V0X21vdnNpX21yX3IsIG91dF9tb3ZxaV9tcl9yLCBvdXRfbW92aGlfbXJfcik6IFVzZSAlbyBpbnN0ZWFkIG9mCgklNCBpbiBvdXRwdXQgdGVtcGxhdGVzLCBkbyBub3QgbW9kaWZ5IG9wZXJhbmRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgoKMjAwMC0xMi0yMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9MQUJTLCBCVUlMVF9JTl9MTEFCUywgQlVJTFRfSU5fSU1BWEFCUyk6CglEb24ndCBkZWZpbmUuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluKTogRG9uJ3QgaGFuZGxlIEJVSUxUX0lOX0xBQlMsCglCVUlMVF9JTl9MTEFCUyBhbmQgQlVJTFRfSU5fSU1BWEFCUy4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogVXNlIEJVSUxUX0lOX0FCUyBmb3IKCWJ1aWx0aW4gbGFicywgbGxhYnMgYW5kIGltYXhhYnMuCgkoZXhwYW5kX3RyZWVfYnVpbHRpbik6IERvbid0IGhhbmRsZSBCVUlMVF9JTl9MQUJTLCBCVUlMVF9JTl9MTEFCUwoJYW5kIEJVSUxUX0lOX0lNQVhBQlMuCgoyMDAwLTEyLTIzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChidWlsdGluX2Z1bmN0aW9uXzIpOiBOZXcgZnVuY3Rpb24uCgkoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogVXNlIGl0IHRvIGRlZmluZSBlYWNoIHBhaXIgKGZvbywKCV9fYnVpbHRpbl9mb28pIG9mIGJ1aWx0aW5zIGluIG9uZSBwbGFjZS4KCjIwMDAtMTItMjIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjY2J1Zy5pbjogQWRkIGxpYmdjaiBhbmQgcHJlcHJvY2Vzc29yIGNhdGVnb3JpZXMuCgoyMDAwLTEyLTIyICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGl0YW5pdW1fcmVvcmRlcik6IE9ubHkgc2NoZWR1bGUgc3RvcHMgaW4KCXRoZSBmaW5hbCBzY2hlZHVsaW5nIHBhc3MuCgoyMDAwLTEyLTIyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaCAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgbmV3IGZpZWxkCgknbHJfc2F2ZV9lbGltaW5hdGVkJy4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2NvbXB1dGVfc2F2ZV9yZWdfbWFzayk6IERvIG5vdCBpbmNsdWRlIHRoZQoJbGluayByZWdpc3RlciBpZiBpdHMgc2F2ZSBoYXMgYmVlbiBlbGltaW5hdGVkLgoJKG91dHB1dF9hcm1fcHJvbG9ndWUpOiBNZW50aW9uIGlmIHRoZSBzYXZlIG9mIHRoZSBsaW5rIHJlZ2lzdGVyCgloYXMgYmVlbiBlbGltaW5hdGVkLgoJKG91dHB1dF9hcm1fZXBpbG9ndWUpOiBSZW5hbWUgJ2xpdmVfcmVnc19tYXNrJyB0bwoJJ3NhdmVkX3JlZ3NfbWFzaycuCglUZXN0ICdzYXZlZF9yZWdzX21hc2snIGZvciB0aGUgbGluayByZWdpc3Rlciwgbm90IHJlZ3NfZXZlcl9saXZlLgoJKGFybV9leHBhbmRfcHJvbG9ndWUpOiBJZiB0aGUgbGluayByZWdpc3RlciBoYXMgbm90IGJlZW4gc2F2ZWQgc2V0Cglscl9zYXZlX2VsaW1pbmF0ZWQgYW5kIGVtaXQgYSBVU0UgdG8gcHJldmVudCBsYXRlciBwYXNzZXMgZnJvbQoJc2NhdmVuZ2luZyBpdC4KCgkqIGR3YXJmMm91dF9mcmFtZV9kZWJ1Z19leHByOiBBbGxvdyB0aGUgKHNjcmF0Y2gpIGZyYW1lCglwb2ludGVyIHRvIGJlIGluaXRpYWxpemVkIGZyb20gdGhlIHN0YWNrIHBvaW50ZXIgcGx1cyBhCgljb25zdGFudC4KCjIwMDAtMTItMjIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvbT4KCgkqIHJlZ3JlbmFtZS5jIChzdHJ1Y3QgZHVfY2hhaW4pOiBOZXcgZmllbGQgImVhcmx5Y2xvYmJlciIuCgkoZW51bSBzY2FuX2FjdGlvbnMpOiBSZW1vdmUgdW51c2VkIGVudHJ5ICJub3RlX3JlZmVyZW5jZSIuCgkoZW51bSBzY2FuX2FjdGlvbnNfbmFtZSk6IExpa2V3aXNlLgoJKG5vdGVfc2V0cywgY2xlYXJfZGVhZF9yZWdzLCBtZXJnZV9vdmVybGFwcGluZ19yZWdzKTogTmV3IHN0YXRpYwoJZnVuY3Rpb25zLgoJKHJlZ3JlbmFtZV9vcHRpbWl6ZSk6IFVzZSB0aGVtIHRvIGNvbXB1dGUgdW5hdmFpbGFibGUgcmVnczsgZ2V0CglyaWQgb2YgdGhlIG1vcmUgc2ltcGxlbWluZGVkIGNvZGUgd2UgdXNlZCB0byBoYXZlIGhlcmUuCglVc2UgYSB0aWNrIGFycmF5IHRvIGVuc3VyZSByZWdpc3RlcnMgYXJlIGFsbG9jYXRlZCBpbiBhIG1vcmUKCXJvdW5kLXJvYmluIHdheS4gIERpc2FibGUgY29kZSB0aGF0IG9ubHkgb3B0aW1pemVzIHJlZ2lzdGVycwoJdGhhdCB3ZXJlIHNlZW4gbW9yZSB0aGFuIG9uY2UuCgkocmVmZXJlbmNlZF9yZWdzKTogUmVtb3ZlIHZhcmlhYmxlLgoJKHNjYW5fcnR4X3JlZyk6IE5ldyBhcmcgImVhcmx5Y2xvYmJlciIuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoJU3RvcmUgaXRzIHZhbHVlIGluIG5ld2x5IGdlbmVyYXRlZCBkdV9jaGFpbiBzdHJ1Y3R1cmVzLgoJQWRkIG5ldyBkdV9jaGFpbnMgYXQgdGhlIGVuZCwgbm90IHRoZSBzdGFydCwgb2YgdGhlIGxpc3QuCglEb24ndCBoYW5kbGUgdGhlICJub3RlX3JlZmVyZW5jZSIgYWN0aW9uLgoJKHNjYW5fcnR4KTogTmV3IGFyZyAiZWFybHljbG9iYmVyIi4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoYnVpbGRfZGVmX3VzZSk6IExvc2UgY29kZSB0byBrZWVwIHRyYWNrIG9mIHJlZmVyZW5jZWQgcmVncy4KCjIwMDAtMTItMjIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChzY2hlZC1kZXBzLm8sIHNjaGVkLXJnbi5vKTogRml4IGRlcGVuZGVuY3kgdHlwby4KCgkqIGZwLWJpdC5oICh1c2lfdG9fZmxvYXQpOiBBZGQgcHJvdG90eXBlLgoKCSogaTM4Ni5jIChpeDg2X2V4cGFuZF9idWlsdGluKTogRGVsZXRlIHVudXNlZCBsYWJlbC4KCgkqIGR3YXJmMm91dC5jIChmaWxlX2luZm9fY21wKTogUHJvdG90eXBlLgoJKGR3YXJmMm91dF9saW5lKTogSGlkZSB2YXJpYWJsZSBgb2xkX2luX3VzZScuCgoJKiBvYmpjLWFjdC5jIChvYmpjX2ZhdGFsKTogRGVsZXRlLgoKCSogc2NoZWQtdmlzLmMgKHZpc3VhbGl6ZV9zdGFsbF9jeWNsZXMpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKCSogc3lzdGVtLmggKGdldG9wdCk6IEZpeCBlcnJvciBpbiBsYXN0IGNoYW5nZS4KCgkqIHZhcmFzbS5jIChhc3NlbWJsZV90cmFtcG9saW5lX3RlbXBsYXRlKTogQ29uc3RpZnkuCgoyMDAwLTEyLTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNvbGxlY3QyLmMgKG1haW4pOiBVc2UgYXV0b19kZW1hbmdsaW5nLgoKMjAwMC0xMi0yMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBVcGRhdGUgcGFybSdzIERFQ0xfSU5DT01JTkdfUlRMCgl3aGVuIG9wdGltaXppbmcgUEFSQUxMRUwgdG8gUkVHLgoKMjAwMC0xMi0yMiAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogcmVsb2FkLmMgKHVwZGF0ZV9hdXRvX2luY19ub3Rlcyk6IE5ldywgYnJva2VuIG91dCBmcm9tIC4uLgoJKGZpbmRfcmVsb2Fkc19hZGRyZXNzXzEpOiAuLi4gdXNlIGhlcmUsIGFsc28gY29ycmVjdCBwb3NzaWJsZQoJdXNlIG9mIHVuaW5pdGlhbGl6ZWQgcmVsb2FkbnVtLgoKMjAwMC0xMi0yMSAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGNvbmZpZy9mcmVlYnNkLmggKExJQl9TUEVDKTogcmVtb3ZlIC1rdGhyZWFkIG9wdGlvbi4KCjIwMDAtMTItMjIgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIHJlc291cmNlLmMgKG1hcmtfc2V0X3Jlc291cmNlcyk6IFVzZSBNQVJLX1NSQ19ERVNUIGZvcgoJUFJFX01PRElGWSBhbmQgUE9TVF9NT0RJRlkgY2FzZXMuCgoJKiBydGxhbmFsLmMgKHNpZGVfZWZmZWN0c19wKTogSGFuZGxlIFBSRV9NT0RJRlkgYW5kIFBPU1RfTU9ESUZZLgoKMjAwMC0xMi0yMiAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogbWQudGV4aSAoTG9vcGluZyBQYXR0ZXJucyk6IE5ldyBub2RlLgoKMjAwMC0xMi0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjLnRleGksIGNwcC50ZXhpOiBVcGRhdGUgbGFzdC11cGRhdGVkIGRhdGVzLgoKMjAwMC0xMi0yMSAgQ2hhbmRyYWthbGEgQ2hhdnZhICA8Y2NoYXZ2YUByZWRoYXQuY29tPgoKCSogdmFyYXNtLmMgKG91dHB1dF9hZGRyZXNzZWRfY29uc3RhbnRzKTogVXNlIGxhbmd1YWdlIHNwZWNpZmljCglleHBhbmRlciBvbiB1bmtub3duIG5vZGVzLgoKMjAwMC0xMi0yMSAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogSGFuZGxlIFJFR19OT05fTE9DQUxfR09UTyBub3Rlcy4KCjIwMDAtMTItMjEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChvdXRfb2JqZWN0X2ZpbGUpOiBEZXBlbmQgb24gc2NoZWQtaW50LmguCgkqIHJ0bC5oIChzaW5nbGVfc2V0XzEpOiBOZXcgbWFjcm8uCgkoc2luZ2xlX3NldF8yKTogUmVuYW1lZCBmcm9tIHNpbmdsZV9zZXRfMSBhbmQgZXh0cmEgYXJndW1lbnQgYWRkZWQuCgkqIHJ0bGFuYWwuYyAoc2luZ2xlX3NldF8yKTogTGlrZXdpc2UuCgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChnZXRfYnVuZGxlX25hbWUsIGlhNjRfaXNzdWVfcmF0ZSwKCWlhNjRfYWRqdXN0X2Nvc3QsIGlhNjRfc2NoZWRfaW5pdCwgaWE2NF9zY2hlZF9maW5pc2gsCglpYTY0X3NjaGVkX3Jlb3JkZXIsIGlhNjRfc2NoZWRfcmVvcmRlcjIsIGlhNjRfdmFyaWFibGVfaXNzdWUpOgoJRGVjbGFyZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jOiBJbmNsdWRlICJzY2hlZC1pbnQuaCIuCgkoaGFyZF9yZWdub19yZW5hbWVfb2spOiBBbHNvIGRpc2FsbG93IHJlbmFtaW5nIGZyb20gdGhlIHZhcmlvdXMKCXJlZ19zYXZlXyogcmVncy4KCShpYTY0X3NhZmVfaXRhbml1bV9yZXF1aWVyc191bml0MCwgaWE2NF9zYWZlX2l0YW5pdW1fY2xhc3MsCglpYTY0X3NhZmVfdHlwZSwgaW5pdF9pbnNuX2dyb3VwX2JhcnJpZXJzLCBncm91cF9iYXJyaWVyX25lZWRlZF9wLAoJc2FmZV9ncm91cF9iYXJyaWVyX25lZWRlZF9wLCBmaXh1cF9lcnJhdGEpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShydHhfbmVlZHNfYmFycmllcik6ICBIYW5kbGUgYnVuZGxlIHNlbGVjdG9yIGFuZCBjeWNsZSBkaXNwbGF5CglpbnNucy4KCShlbWl0X2luc25fZ3JvdXBfYmFycmllcnMpOiBBY2NlcHQgYWRkaXRpb25hbCBGSUxFICogYXJnLiAgQWxsCgljYWxsZXJzIGNoYW5nZWQuICBSZXdvcmsgdG8gb25seSBnZW5lcmF0ZSBzdG9wIGJpdHMgYmV0d2VlbgoJYmFzaWMgYmxvY2tzIHRoYXQgaGF2ZW4ndCBiZWVuIGluc2VydGVkIGJ5IHNjaGVkdWxpbmcuCgkoc3RydWN0IGJ1bmRsZSwgc3RydWN0IGlhNjRfcGFja2V0KTogTmV3IHN0cnVjdHVyZXMuCgkoTlJfQlVORExFUywgTlJfUEFDS0VUUyk6IE5ldyBtYWNyb3MuCgkoYnVuZGxlLCBwYWNrZXRzLCB0eXBlX25hbWVzKTogTmV3IHN0YXRpYyBhcnJheXMuCgkoaWE2NF9maW5hbF9zY2hlZHVsZSk6IE5ldyB2YXJpYWJsZS4KCShpYTY0X3NpbmdsZV9zZXQsIGluc25fbWF0Y2hlc19zbG90LCBpYTY0X2VtaXRfaW5zbl9iZWZvcmUsCglnZW5fbm9wX3R5cGUsIGZpbmlzaF9sYXN0X2hlYWQsIHJvdGF0ZV9vbmVfYnVuZGxlLCByb3RhdGVfdHdvX2J1bmRsZXMsCgljeWNsZV9lbmRfZmlsbF9zbG90cywgcGFja2V0X21hdGNoZXNfcCwgZ2V0X3NwbGl0LCBmaW5kX2Jlc3RfaW5zbiwKCWZpbmRfYmVzdF9wYWNrZXQsIGl0YW5pdW1fcmVvcmRlciwgZHVtcF9jdXJyZW50X3BhY2tldCwgc2NoZWR1bGVfc3RvcCk6CglOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShpYTY0X2lzc3VlX3JhdGUsIGlhNjRfc2NoZWRfaW5pdCwgaWE2NF9zY2hlZF9yZW9yZGVyLAoJaWE2NF9zY2hlZF9maW5pc2gsIGlhNjRfc2NoZWRfcmVvcmRlcjIsIGlhNjRfdmFyaWFibGVfaXNzdWUpOiBOZXcKCWZ1bmN0aW9ucy4KCShpYTY0X3Jlb3JnKTogUGVyZm9ybSBhIGZpbmFsIHNjaGVkdWxpbmcgcGFzcy4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChDT05TVF9DT1NUUyk6IFNsaWdodGx5IGluY3JlYXNlIFNZTUJPTF9SRUYgY29zdHMuCgkoTUFYX0NPTkRJVElPTkFMX0VYRUNVVEUsIEFESlVTVF9DT1NULCBJU1NVRV9SQVRFLCBNRF9TQ0hFRF9JTklULAoJTURfU0NIRURfUkVPUkRFUiwgTURfU0NIRURfUkVPUkRFUjIsIE1EX1NDSEVEX0ZJTklTSCwKCU1EX1NDSEVEX1ZBUklBQkxFX0lTU1VFKTogRGVmaW5lIG1hY3Jvcy4KCShpYTY0X2ZpbmFsX3NjaGVkdWxlKTogRGVjbGFyZSB2YXJpYWJsZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoYXR0ciBpdGFuaXVtX2NsYXNzKTogQWRkIHNvbWUgbW9yZSBjbGFzc2VzLgoJKGF0dHIgdHlwZSk6IEFjY291bnQgZm9yIHRoZW0uCgkoaXRhbml1bV9yZXF1aXJlc191bml0MCk6IE5ldyBhdHRyaWJ1dGUuCgkoZnVuY3Rpb24gdW5pdHMpOiBSZXdyaXRlLgoJKHNvbWUgc3BsaXR0ZXJzKTogRG9uJ3QgY3JlYXRlIHNjaGVkdWxpbmcgYmFycmllcnMgaGVyZS4KCShncl9zcGlsbF9pbnRlcm5hbCwgZ3JfcmVzdG9yZV9pbnRlcm5hbCk6IERvbid0IHByZWRpY2F0ZSB0aGUKCXBzZXVkby1vcC4KCShub3BfbSwgbm9wX2ksIG5vcF9mLCBub3BfYiwgbm9wX3gsIGN5Y2xlX2Rpc3BsYXksIGN5Y2xlX2Rpc3BsYXlfMSwKCWJ1bmRsZV9zZWxlY3Rvcik6IE5ldyBwYXR0ZXJucy4KCShpbnNuX2dyb3VwX2JhcnJpZXIpOiBOb3cgaGFzIGFuIG9wZXJhbmQuCgoyMDAwLTEyLTIxICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChzaW1wbGVfZGVjbF9hbGlnbl9pbl9iaXRzKTogbmV3CgkoZmllbGRfYnl0ZV9vZmZzZXQpOiBUcnkgYm90aCB0aGUgdHlwZSBhbGlnbiBhbmQgdGhlCglkZWNsIGFsaWduLCB1c2Ugd2hpY2hldmVyIHdvcmtzLCBwcmVmZXJyaW5nIHRoZSB0eXBlIGFsaWduLgoKMjAwMC0xMi0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjYnVnLmluOiBGaXggdHlwby4KCjIwMDAtMTItMjAgIEJlbmphbWluIEtvc25payAgPGJrb3pAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChnY2NfZ3h4X3RhcmdldF9pbmNsdWRlX2Rpcik6IFVzZSBpbnN0ZWFkIG9mCglidWlsZF90b29sZGlyIGFuZCBsaWJzdGRjeHhfaW5jZGlyLgoKMjAwMC0xMi0yMCAgUm9iZXJ0IExpcGUgPHJvYmVydGxpcGVAdXNhLm5ldD4KCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2Jsb2NrKTogUHJvdmlkZSBlbXB0eSBzb3VyY2Ugc3RhdGVtZW50CglpZiBub3QgTURfU0NIRURfUkVPUkRFUjIuCgoyMDAwLTEyLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcnRsLmggKFJFR19OT05fTE9DQUxfR09UTyk6IE5ldy4KCSogcnRsLmMgKHJlZ19ub3RlX25hbWUpOiBVcGRhdGUuCgkqIHN0bXQuYyAoZXhwYW5kX2dvdG8pOiBFbWl0IGEgUkVHX05PTl9MT0NBTF9HT1RPIG5vdGUuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2xvbmdqbXApOiBMaWtld2lzZS4KCSogZmxvdy5jIChtYWtlX2VkZ2VzKTogQ2hlY2sgZm9yIFJFR19OT05fTE9DQUxfR09UTyBhbmQgZG8KCW5vdCBlbWl0IGFuIGVkZ2UuCgoyMDAwLTEyLTIwICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dF9tb3ZzaV9yX21yLCBvdXRfbW92c2lfbXJfciwgb3V0X21vdmhpX21yX3IpOgoJRG8gbm90IG91dHB1dCB1bmRlZmluZWQgb3Bjb2RlcyB3aGVyZSBzb3VyY2Ugb3IgZGVzdGluYXRpb24gcmVnaXN0ZXIKCW92ZXJsYXBzIHdpdGggbW9kaWZpZWQgcG9pbnRlciByZWdpc3Rlci4gIEhhbmRsZSAoWCArIGQpIGFkZHJlc3Nlcy4KCSogY29uZmlnL2F2ci9hdnIubWQgKCptb3ZoaSwgKm1vdnNpLCAqbW92c2YpOiBDb3JyZWN0IGluc24gbGVuZ3RoCglpbiBhbHRlcm5hdGl2ZXMgd2l0aCBtZW1vcnkgb3BlcmFuZC4KCjIwMDAtMTItMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLXR5cGVjay5jIChidWlsZF9hc21fc3RtdCk6IE5ldywgYnJva2VuIG91dCBmcm9tIC4uLgoJKGNfZXhwYW5kX2FzbV9vcGVyYW5kcyk6IC4uLiBoZXJlLiAgSnVzdCBkbyBydGwgZXhwYW5zaW9uLgoJKGNfZXhwYW5kX3JldHVybik6IFJldHVybiB0aGUgbmV3IHN0bXQgbm9kZS4KCShjX3N0YXJ0X2Nhc2UsIGRvX2Nhc2UpOiBMaWtld2lzZS4KCSogYy1jb21tb24uYyAoY19leHBhbmRfZXhwcl9zdG10KTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmg6IFVwZGF0ZSBkZWNsYXJhdGlvbnMuCgkqIGMtdHJlZS5oOiBMaWtld2lzZS4KCSogYy1zZW1hbnRpY3MuYyAoYnVpbGRfc3RtdCk6IFVzZSBTVE1UX0xJTkVOTyBub3QgVFJFRV9DT01QTEVYSVRZLgoJKiBjLXBhcnNlLmluIChmbmRlZik6IFNldCBERUNMX1NPVVJDRV9MSU5FIHRvIHRoZSBvcGVuIGJyYWNlLgoJKG5lc3RlZF9mdW5jdGlvbiwgbm90eXBlX25lc3RlZF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGNvbXBzdG10KTogUmV0dXJuIHRoZSBjb21wb3VuZCBzdGF0ZW1lbnQgbm90IHRoZSBiaW5kaW5nIGxldmVsLgoJKGxpbmVub19sYWJlbGVkX3N0bXQpOiBTaW1wbGlmeS4KCShsaW5lbm9fc3RtdCwgbGluZW5vX2xhYmVsKTogU2V0IFNUTVRfTElORU5PLgoJKHN0bXQsIGxhYmVsKTogUmV0dXJuIHRoZSBuZXcgc3RtdCBub2RlLgoKMjAwMC0xMi0yMCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGQgc2NoZWQtZWJiLm8uCgkoc2NoZWQtZWJiLm8pOiBOZXcgcnVsZS4KCShzY2hlZC12aXMubyk6IERlcGVuZCBvbiBoYXJkLXJlZy1zZXQuaCBhbmQgJChCQVNJQ19CTE9DS19IKS4KCShoYWlmYS1zY2hlZC5vKTogRGVwZW5kIG9uIGluc24tZmxhZ3MuaC4KCSogaGFpZmEtc2NoZWQuYzogSW5jbHVkZSAiaW5zbi1mbGFncy5oIi4KCShwcmlvcml0eSk6IERvbid0IGFjY2VzcyBCTE9DS19OVU0sIHVzZSB0aGUgbmV3IGNvbnRyaWJ1dGVzX3RvX3ByaW9yaXR5CgljYWxsYmFjay4KCSogcnRsLmggKHNjaGVkdWxlX2ViYnMpOiBEZWNsYXJlLgoJKiBzY2hlZC1pbnQuaCAoc3RydWN0IHNjaGVkX2luZm8pOiBBZGQgbmV3IG1lbWJlcnMKCWNvbnRyaWJ1dGVzX3RvX3ByaW9yaXR5IGFuZCBjb21wdXRlX2p1bXBfcmVnX2RlcGVuZGVuY2llcy4KCSogc2NoZWQtcmduLmMgKGNvbnRyaWJ1dGVzX3RvX3ByaW9yaXR5LCBjb21wdXRlX2p1bXBfcmVnX2RlcGVuZGVuY2llcyk6CglOZXcgZnVuY3Rpb25zLgoJKHJlZ2lvbl9zY2hlZF9pbmZvKTogQWRkIHRoZW0uCgkqIHNjaGVkLXZpcy5jOiBJbmNsdWRlICJoYXJkLXJlZy1zZXQuaCIgYW5kICJiYXNpYy1ibG9jay5oIi4KCSogc2NoZWQtZWJiLmM6IE5ldyBmaWxlLgoJKiBzY2hlZC1kZXBzLmMgKHNjaGVkX2FuYWx5emVfaW5zbik6IEFkZCBjb2RlIHRvIGhhbmRsZSBKVU1QX0lOU05zLgoKCSogZmxvdy5jIChpb3JfcmVnX2NvbmQsIGFuZF9yZWdfY29uZCwgZWxpbV9yZWdfY29uZCk6IFByb3Blcmx5CgloYW5kbGUgYWxsIHJlbGF0aW9uYWwgb3BlcmF0b3JzLgoKMjAwMC0xMi0yMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBmaW5hbC5jIChvdXRwdXRfYWRkcl9jb25zdCk6IFVzZSBBU01fT1VUUFVUX1NZTUJPTF9SRUYuCgkqIHRtLnRleGk6IERvY3VtZW50IGl0LgoKMjAwMC0xMi0xOSAgQmVuamFtaW4gS29zbmlrICA8YmtvekByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKC1ER1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIpOiBVc2UgYnVpbGRfdG9vbGRpcgoJaW5zdGVhZCBvZiBnY2NfdG9vbGRpci4KCjIwMDAtMTItMTkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBzeXN0ZW0uaCAoZ2V0b3B0KTogVXBkYXRlIHByb3RvdHlwZSB0byBtYXRjaCBpbmNsdWRlL2dldG9wdC5oLgoKMjAwMC0xMi0xOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCglGcm9tIEplZmYgTGF3LgoJKiBwYS5jIChiYXNlcmVnX29wZXJhbmQpOiBTaW1wbGlmeS4KCjIwMDAtMTItMTkgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogaGFpZmEtc2NoZWQuYyAocm1fbGluZV9ub3Rlcyk6IEFyZ3VtZW50cyBhcmUgbm93IGhlYWQgYW5kIHRhaWwsCglub3QgYmxvY2sgbnVtYmVyLiAgQWxsIGNhbGxlcnMgYW5kIHByb3RvdHlwZSBjaGFuZ2VkLgoJKHNldF9wcmlvcml0aWVzKTogTGlrZXdpc2UuCgkoc2F2ZV9saW5lX25vdGVzKTogQWRkIGhlYWQgYW5kIHRhaWwgYXJndW1lbnRzOyBhbGwgY2FsbGVycyBhbmQKCXByb3RvdHlwZSBjaGFuZ2VkLgoJKHJlc3RvcmVfbGluZV9ub3Rlcyk6IExpa2V3aXNlLiAgRG9uJ3QgY3Jhc2ggb24gaW5zbnMgZ2VuZXJhdGVkCglkdXJpbmcgc2NoZWR1bGluZy4KCShzY2hlZHVsZV9ibG9jayk6IERvbid0IHVzZSBCTE9DS19IRUFEL0JMT0NLX0VORCBtYWNyb3MuCglDYWxsIE1EX1NDSEVEX0lOSVQgd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50LgoJV2hlbiBzdGFydGluZyBhIG5ldyBjeWNsZSwgZW1pdCBjeWNsZV9kaXNwbGF5IGluc25zIGlmIGF2YWlsYWJsZS4KCURvbid0IHN0b3Agc2NoZWR1bGluZyB3aGVuIGVuY291bnRlcmluZyBhIEpVTVBfSU5TTiwgYnV0IGFkZCBhbm90aGVyCgljYWxsIHRvIHNjaGVkdWxlX21vcmVfcCBpbiB0aGUgaW5uZXIgbG9vcC4KCUNhbGwgTURfU0NIRURfUkVPUkRFUjIgYWZ0ZXIgc2NoZWR1bGluZyBhbiBpbnNuLgoJQ2FsbCBNRF9TQ0hFRF9GSU5JU0ggb25jZSBhbGwgaW5zbnMgYXJlIHNjaGVkdWxlZC4KCShzY2hlZF9pbml0KTogQ29tcGVuc2F0ZSBmb3IgdGhlIGZhY3QgdGhhdCBnZXRfYmxvY2tfaGVhZF90YWlsCglkb2Vzbid0IGluY2x1ZGUgbGVhZGluZyBub3Rlcy4KCSogc2NoZWQtZGVwcy5jIChmcmVlX2RlcHMpOiBGcmVlIHZlY3RvcnMgaGVyZS4KCSogc2NoZWQtcmduLmMgKGNvbXB1dGVfYmxvY2tfYmFja3dhcmRfZGVwZW5kZW5jaWVzKTogTm90IGhlcmUuCgkobGFzdF93YXNfanVtcCk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoc2NoZWR1bGVfbW9yZV9wKTogVGVzdCBpdC4KCShpbml0X3JlYWR5X2xpc3QpOiBJbml0aWFsaXplIGl0LgoJKGNhbl9zY2hlZHVsZV9yZWFkeV9wKTogU2V0IGl0IGlmIHdlIGhhdmUgYSBKVU1QX0lOU04uCgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKE1EX1NDSEVEX0lOSVQpOiBBZGQgbmV3IGFyZy4KCSogY29uZmlnL20zMnIvbTMyci5oIChNRF9TQ0hFRF9JTklUKTogQWRkIG5ldyBhcmcuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChNRF9TQ0hFRF9JTklUKTogQWRkIG5ldyBhcmcuCgoJKiBtZC50ZXhpIChjeWNsZV9kaXNwbGF5KTogRG9jdW1lbnQuCgkqIHRtLnRleGkgKE1EX1NDSEVEX0lOSVQpOiBEb2N1bWVudCBuZXcgYXJnLgoJKE1EX1NDSEVEX0ZJTklTSCwgTURfU0NIRURfUkVPUkRFUjIpOiBEb2N1bWVudC4KCgkqIGZsb3cuYyAoaW9yX3JlZ19jb25kLCBuYW5kX3JlZ19jb25kLCBub3RfcmVnX2NvbmQpOiBSZXdyaXRlCgl0byB1c2UgZGlmZmVyZW50IHJlcHJlc2VudGF0aW9uLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCShhbmRfcmVnX2NvbmQpOiBSZW5hbWVkIGZyb20gbmFuZF9yZWdfY29uZDsgY2FsbGVyIGNoYW5nZWQuCgkoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IERvbid0IHRlc3QgZmxhZ3MgdG8gZGV0ZXJtaW5lCgl3aGV0aGVyIHRvIGNvbXB1dGUgY29uZGl0aW9uYWwgbGlmZXRpbWVzLgoJQWRqdXN0IGNvZGUgZm9yIG5ldyByZXByZXNlbnRhdGlvbiBvZiBjb25kaXRpb25hbCBsaWZldGltZXMuCgkobWFya19yZWdub19jb25kX2RlYWQpOiBTaW1pbGFyIGFkanVzdG1lbnQuCgkoZnJlZV9yZWdfY29uZF9saWZlX2luZm8pOiBTaW1pbGFyIGFkanVzdG1lbnQuCgkoZWxpbV9yZWdfY29uZCk6IE5ldyBmdW5jdGlvbi4KCShmbHVzaF9yZWdfY29uZF8xKTogVXNlIGl0LgoKMjAwMC0xMi0xOSAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jb21iaW5lKTogVGFrZSBtdWx0aS1oYXJkLXJlZ3MgaW50byBhY2NvdW50Cgl3aGVuIHByb2Nlc3NpbmcgQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFLgoKMjAwMC0xMi0xOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogaW52b2tlLnRleGkgKC1wcmludC1zZWFyY2gtZGlycyk6IE1ha2UgcmVmZXJlbmNlcyB0byBjcHAgcmVmZXIKCXRvIGNwcDAgaW5zdGVhZC4KCjIwMDAtMTItMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBUcmVhdCB0cnV0aCB2YWx1ZXMgYXMKCW5vbi1uZWdhdGl2ZS4KClR1ZSBEZWMgMTkgMDA6Mzc6MDggMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIHJlbG9hZC5jIChwdXNoX3JlbG9hZCk6IFdoZW4gdXNpbmcgYSBkeWluZyByZWdpc3RlciBmb3IgdGhlIHJlbG9hZAoJcmVnaXN0ZXIgaW4gYW4gaW4tb3V0IHJlbG9hZCwgdXNlIG91dG1vZGUgaWYgd2lkZXIgdGhhbiBpbm1vZGUuCgoyMDAwLTEyLTE5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjb25maWcvZDMwdi9kMzB2LmggKEVYSVRfQk9EWSk6IFVwZGF0ZSBjb21tZW50LgoKMjAwMC0xMi0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY29uZmlnLmdjYyAoKi0qLWxpbnV4Kik6IERvbid0IGRlZmluZSBIQVZFX0FURVhJVCBvciBCU1RSSU5HLgoJKiB0bS50ZXhpIChFWElUX0JPRFkpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCSogY29uZmlnL2ZyZWVic2QuaCwgY29uZmlnL25ldHdhcmUuaCwgY29uZmlnL2FybS9jb2ZmLmgsCgljb25maWcvYXJtL2Nvbml4LWVsZi5oLCBjb25maWcvYXJtL3Vua25vd24tZWxmLmgsCgljb25maWcvZDMwdi9kMzB2LmgsIGNvbmZpZy9tY29yZS9tY29yZS5oLCBjb25maWcvcGovcGouaCwKCXNwYXJjL3NwODZ4LWFvdXQuaDogUmVtb3ZlIGRlZmluaXRpb25zIG9mIEhBVkVfQVRFWElUIChzb21lCgljb21tZW50ZWQgb3V0KSBhbmQgYXNzb2NpYXRlZCBjb21tZW50cy4KCjIwMDAtMTItMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKFNURF9DOUwsIEFESl9TVEQpOiBEZWZpbmUuCgkocHJpbnRmX2xlbmd0aF9zcGVjcywgc2NhbmZfbGVuZ3RoX3NwZWNzKTogTWFyayAibGwiIGFzIHN0YW5kYXJkCglTVERfQzlMLgoJKFQ5OV9MTCk6IFJlbmFtZSB0byBUOUxfTEwuCgkoVDk5X1VMTCk6IFJlbmFtZSB0byBUOUxfVUxMLgoJKHByaW50X2NoYXJfdGFibGUsIHNjYW5fY2hhcl90YWJsZSk6IFVzZSBUOUxfTEwgYW5kIFQ5TF9VTEwKCWluc3RlYWQgb2YgVDk5X0xMIGFuZCBUOTlfVUxMLgoJKGNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBVc2UgQURKX1NURCBvbiBhbGwgZm9ybWF0IHN0YW5kYXJkCgl2ZXJzaW9ucyBiZWluZyBjb21wYXJlZC4KCSogYy1jb21tb24uaDogRGVjbGFyZSB3YXJuX2xvbmdfbG9uZy4KCSogYy10cmVlLmg6IERvbid0IGRlY2xhcmUgd2Fybl9sb25nX2xvbmcuCgoyMDAwLTEyLTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBDT1BZSU5HOiBVcGRhdGUgdG8gY3VycmVudAoJZnRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9MaWNlbnNlcy9DT1BZSU5HLTIuMCAoZml4ZXMgcmVmZXJlbmNlcwoJdG8gMTl5eSBhcyBleGFtcGxlIHllYXIgaW4gY29weXJpZ2h0IG5vdGljZSkuCgoyMDAwLTEyLTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjLWxleC5jIChjYl9maWxlX2NoYW5nZSk6IFRyZWF0IGluX3N5c3RlbV9oZWFkZXIgYXMgc3RyaWN0bHkKCWJvb2xlYW4gKDAgb3IgMSkuCgoyMDAwLTEyLTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjcHBtYWluLmM6IFVwZGF0ZSBwcmludC5saW5lbm8gd2l0aCAtUC4KCjIwMDAtMTItMTggIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGMtbGV4LmM6IHMvY2hhbmdlX2ZpbGUvZmlsZV9jaGFuZ2UuCgkqIGNwcGxpYi5oOiBTaW1pbGFybHkuCgkqIGNwcG1haW4uYzogU2ltaWxhcmx5LgoJKiBmaXgtaGVhZGVyLmM6IFNpbWlsYXJseS4KCSogY3BwZmlsZXMuYyAoc3RhY2tfaW5jbHVkZV9maWxlKTogUGFzcyB0aGUgYnVmZmVyIGxvY2F0aW9uIGFuZAoJc2l6ZSB0byBjcHBfcHVzaF9idWZmZXIuICBHZW5lcmF0ZSB0aGUgZmlsZV9jaGFuZ2UgY2FsbGJhY2ssCglzbyB0aGF0IHN5c3AgaXMgYWxyZWFkeSBzZXQuCgkqIGNwcGhhc2guaDogQWRkIF9jcHBfZG9fZmlsZV9jaGFuZ2UuCgkqIGNwcGxpYi5jIChkb19saW5lKTogU2V0IGJ1ZmZlci0+c3lzcCBkaXJlY3RseS4gR2VuZXJhdGUgdGhlCglmaWxlX2NoYW5nZSBjYWxsYmFjayBhZnRlciBzZXR0aW5nIHN5c3AuCgkoX2NwcF9kb19maWxlX2NoYW5nZSk6IEhhbmRsZSBGQ19FTlRFUiBhbmQgdGhlIEZDX1JFTkFNRSBleGNlcHRpb24KCWhlcmUuCgkoY3BwX3B1c2hfYnVmZmVyKTogRG9uJ3QgZ2VuZXJhdGUgYSBjYWxsYmFjay4gIENsZWFyIHN5c3AuCgkoY3BwX3BvcF9idWZmZXIpOiBDbGVhbiB1cCBsb2dpYy4KCjIwMDAtMTItMTggIEJlbmphbWluIEtvc25payAgPGJrb3pAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoZ2NjX2d4eF9pbmNsdWRlX2Rpcik6IFNpbXBsaWZ5LgoJKGxpYnN0ZGN4eF9pbmNkaXIpOiBFeHBvcnQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogTWFrZWZpbGUuaW4gKFBSRVBST0NFU1NPUl9ERUZJTkVTKTogQWRkIGluCglHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiBiaXRzIGhlcmUuLgoJKGxpYnN0ZGN4eF9pbmNkaXIpOiBBZGQuCgkqIGNwcGRlZmF1bHQuYyAoR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIpOiBBZGQgc2VhcmNoIHBhdGguCgoyMDAwLTEyLTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjLWxleC5jIChsZXhfbGluZW5vKTogUmVtb3ZlLgoJKGluaXRfY19sZXgsIGNfbGV4KTogUmVtb3ZlIGxleF9saW5lbm8uCgkoY2JfY2hhbmdlX2ZpbGUpOiBVcGRhdGUgbGluZW5vIGNvcnJlY3RseSwgYm90aCBiZWZvcmUgY2FsbGluZwoJcHVzaF9zcmNsb2MgYW5kIGJlZm9yZSBsZWF2aW5nIHRoZSBmdW5jdGlvbi4KCShjYl9kZWZfcHJhZ21hKTogU2V0IGxpbmVubyBiZWZvcmUgb3V0cHV0dGluZyBkaWFnbm9zdGljcy4KClN1biBEZWMgMTcgMTg6NDU6NDEgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFByaW50IERFQ0xfVVNFUl9BTElHTiBhbmQgVFlQRV9VU0VSX0FMSUdOLgoJUHJpbnQgVFlQRV9NSU5fVkFMVUUgYW5kIFRZUEVfTUFYX1ZBTFVFIGZvciBSRUFMX1RZUEUuCglVc2UgcHJpbnRfbm9kZV9icmllZiB0byBwcmludCBib3VuZHMuCgoyMDAwLTEyLTE3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBSZW1vdmUgcmVmZXJlbmNlcyB0byBzdHJpbmdfcG9vbAoJYW5kIHRlbXBfc3RyaW5nX3Bvb2wuCgkqIGNwcGluaXQuYyAoY3BwX2NyZWF0ZV9yZWFkZXIsIGNwcF9jbGVhbnVwKTogU2ltaWxhcmx5OyB1c2luZwoJaWRlbnRfcG9vbCBpbiBwbGFjZS4KCSogY3BwbGV4LmMgKHBhcnNlX251bWJlciwgdW5lc2NhcGVkX3Rlcm1pbmF0b3JfcCwgcGFyc2Vfc3RyaW5nLAoJc2F2ZV9jb21tZW50LCBjcHBfdG9rZW5fYXNfdGV4dCk6IFNpbWlsYXJseS4KCSogY3BwbGliLmMgKGRvX2RlZmluZSwgZ2x1ZV9oZWFkZXJfbmFtZSwgcGFyc2VfYXNzZXJ0aW9uKTogU2ltaWxhcmx5LgoJKiBjcHBtYWNyby5jIChtYWtlX251bWJlcl90b2tlbiwgYnVpbHRpbl9tYWNybywgbG9ja19wb29scywKCXVubG9ja19wb29scywgc3RyaW5naWZ5X2FyZywgcGFzdGVfdG9rZW5zKTogU2ltaWxhcmx5LgoKU3VuIERlYyAxNyAxMjo0MTo0OCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSwgY2FzZSBOT1BfRVhQUik6IE5ldyBjYXNlLgoJKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSwgY2FzZSBDT05WRVJUX0VYUFIpOiBMaWtld2lzZS4KCShsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUsIGNhc2UgTk9OX0xWQUxVRV9FWFBSKTogTGlrZXdpc2UuCgoyMDAwLTEyLTE3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjaGVjay1wbyk6IFVzZSAkKE1BS0UpLgoJKHJpc2t5LXN0YWdlMSwgcmlza3ktc3RhZ2UyLCByaXNreS1zdGFnZTMsIHJpc2t5LXN0YWdlNCk6IExpa2V3aXNlLgoKMjAwMC0xMi0xNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogY3BwbWFpbi5jIChjaGVja19tdWx0aWxpbmVfdG9rZW4pOiBOZXcgZnVuY3Rpb24uCgkoc2Nhbl9idWZmZXIpOiBVc2UgaXQuCgkoY2JfY2hhbmdlX2ZpbGUpOiBSZXN0cnVjdHVyZSB0byBhdm9pZCB3YXJuaW5nLgoJKiBjcHBlcnJvci5jIChwcmludF9sb2NhdGlvbik6IEluaXRpYWxpemUgY29sLgoKMjAwMC0xMi0xNCAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBwcm90b2l6ZS5jIChtYWluKTogQ29ycmVjdGx5IHNldCBsb2NhbGUgY2F0ZWdvcmllcy4KCSogZ2NjLmMgKG1haW4pOiBMaWtld2lzZS4KCSogY3BwbWFpbi5jIChnZW5lcmFsX2luaXQpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKG1haW4pOiBMaWtld2lzZS4KCSogZ2Nvdi5jIChtYWluKTogTGlrZXdpc2UuCgkqIGNvbGxlY3QyLmMgKG1haW4pOiBMaWtld2lzZS4KCjIwMDAtMTItMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IENyZWF0ZSBhCgljc3RyaW5nX2VuZGxpbmssIHVzZSBpdC4gIFJlbmFtZSBpbnRfZnR5cGVfc3RyaW5nX3N0cmluZyB0bwoJaW50X2Z0eXBlX2NzdHJpbmdfY3N0cmluZywgc3RyaW5nX2Z0eXBlX3N0cmluZ19pbnQgdG8KCXN0cmluZ19mdHlwZV9jc3RyaW5nX2ludCwgYW5kIHN0cmluZ19mdHlwZV9zdHJpbmdfc3RyaW5nIHRvCglzdHJpbmdfZnR5cGVfY3N0cmluZ19jc3RyaW5nLiAgUHJlZmVyIHNpemV0eXBlX2VuZGxpbmsgYW5kCglpbnRfZW5kbGluayB0byBtYW51YWxseSByZWNyZWF0aW5nIHRoZW0uICBGaXggdGhlIHByb3RvdHlwZQoJc2V0IGZvciBfX2J1aWx0aW5fc3Ryc3BuL19fYnVpbHRpbl9zdHJjc3BuLgoKMjAwMC0xMi0xMiAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRfc2V0X3N0YWNrX3B0cik6IFVwZGF0ZSBjb21tZW50LgoJKHByaW50X29wZXJhbmQpOiBBZGQgc3VwcG9ydCBmb3IgJX4gYW5kICVvLgoKMjAwMC0xMi0xNyBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogYzR4Lmg6IEFkZCBBU01fT1VUUFVUX0RFRiBkZWZpbml0aW9uIGZvciBib3VuZGVkIHBvaW50ZXIgY29kZS4KCjIwMDAtMTItMTcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGMtbGV4LmM6IE1vdmUgbWFpbl9pbnB1dF9maWxlbmFtZSBoYW5kbGluZyB0byBGQ19FTlRFUi4gQ2xlYW4gdXAuCgkqIGNwcGVycm9yLmMgKHByaW50X2NvbnRhaW5pbmdfZmlsZXMpOiBHZXQgcmlnaHQgbGluZSBudW1iZXIuCgkocHJpbnRfbG9jYXRpb24pOiBPdXRwdXQgY29sdW1uIG9mIDEgaWYgMC4KCSogY3BwZmlsZXMuYyAoc3RhY2tfaW5jbHVkZV9maWxlKTogY3BwX3B1c2hfYnVmZmVyIGhhbmRsZXMKCXRoZSBjYWxsYmFjay4KCSogY3BwaGFzaC5oIChfY3BwX2RvX2ZpbGVfY2hhbmdlKTogTm8gbG9uZ2VyIGV4dGVybmFsLgoJKiBjcHBsaWIuYyAoZG9fZmlsZV9jaGFuZ2UpOiBOb3cgbG9jYWwgdG8gY3BwbGliLmMuCgkoZG9fbGluZSk6IEZha2UgYSBidWZmZXIgc3RhY2sgZm9yIHByZXByb2Nlc3NlZCBmaWxlcy4KCShjcHBfcHVzaF9idWZmZXIpOiBDcmVhdGUgYSBmaWxlX2NoYW5nZSBjYWxsYmFjay4gIEhhbmRsZSBmYWtlZAoJYnVmZmVycy4KCShjcHBfcG9wX2J1ZmZlcik6IFNpbWlsYXJseS4KCSogY3BwbGliLmg6IEJVRl9GQUtFOiBOZXcgYnVmZmVyIHR5cGUuCgkqIGNwcG1haW4uYzogVXBkYXRlIHRvIGhhbmRsZSBjb3JyZWN0IGZpbGUgcmVuYW1pbmcgd2hlcmUgYQoJI2xpbmUgaXMgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIG1haW4gZmlsZSwgYW5kIHByb2R1Y2Ugb25seQoJdGhlIHJlbmFtZWQgZmlsZSwgbm90IHRoZSBvcmlnaW5hbCBmaWxlLCBhcyBvdXRwdXQuCgoyMDAwLTEyLTE3ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5tZDogUmVtb3ZlIHJlZHVuZGFudCBAcyBmcm9tIG91dHB1dCBwYXR0ZXJucy4KCjIwMDAtMTItMTcgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KICAgICAgICAgICAgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKFJFR0lTVEVSX1RBUkdFVF9QUkFHTUFTKTogQ2FsbCBjNHhfaW5pdF9wcmFnbWEuCgoJKiBjb25maWcvYzR4L2M0eC1wcm90b3MuaCAoYzR4X2luaXRfcHJhZ21hKTogTmV3IHByb3RvdHlwZS4KCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9pbml0X3ByYWdtYSk6IE5ldyBmdW5jdGlvbi4KCShjX2xleF9mdW5jKTogTmV3IHZhcmlhYmxlLgoJKGM0eF9wYXJzZV9wcmFnbWEpOiBVc2UgY19sZXhfZnVuYy4KCjIwMDAtMTItMTcgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KICAgICAgICAgICAgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKE1EX0lOSVRfQlVJTFRJTlMpOiBBZGQgdm9pZF9saXN0X25vZGUgYXJndW1lbnQKCXRvIGM0eF9pbml0X2J1aWx0aW5zLgoKCSogY29uZmlnL2M0eC9jNHgtcHJvdG9zLmggKGM0eF9pbml0X2J1aWx0aW5zKTogQWRkIHRyZWUgYXJndW1lbnQuCgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfaW5pdF9idWlsdGlucyk6IEFkZCB0cmVlIGFyZ3VtZW50LgoJKGM0eF9vdXRwdXRfYXNjaWkpOiAgRml4LgoKMjAwMC0xMi0xNyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgogICAgICAgICAgICBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogY29uZmlnL2M0eC9jNHguaCAoTURfSU5JVF9CVUlMVElOUywgTURfRVhQQU5EX0JVSUxUSU4pOiBEZWZpbmUuCgoJKiBjb25maWcvYzR4L2M0eC1wcm90b3MuaCAoYzR4X2luaXRfYnVpbHRpbnMpOiBOZXcgcHJvdG90eXBlLgoJKGM0eF9leHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoKCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2luaXRfYnVpbHRpbnMpOiBOZXcgZnVuY3Rpb24uCgkoYzR4X2V4cGFuZF9idWlsdGluKTogTGlrZXdpc2UuCgoJKiBjb25maWcvYzR4L2M0eC5tZCAoZmxvYXR1bnNxaWhmMik6IE5ldyBwYXR0ZXJuLgoJKCpmbG9hdHFpaGYyX3NldCwgKmZpeGhmcWlfc2V0LCBmaXhfdHJ1bmNoZnFpMik6IExpa2V3aXNlLgoJKGZpeHVuc190cnVuY2hmcWkyLCB0b2llZWUsIGZyaWVlZSwgKmxkaGZfY29uZGl0aW9uYWwpOiBMaWtld2lzZS4KCSgqbGRoZl9jb25kaXRpb25hbF9ub292LCBtb3ZoZmNjLCB0cmFwLCBjb25kX3RyYXBfY2MpOiBMaWtld2lzZS4KCSgqdG9pZWVlX21vdnFmX2Nsb2JiZXIsICpmcmllZWVfbW92cWZfY2xvYmJlcik6IExpa2V3aXNlLgoKMjAwMC0xMi0xNyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogbGliZ2NjMi5oOiBVc2UgV3R5cGUgZm9yIFNJdHlwZSBhbmQgRFd0eXBlIGZvciBESXR5cGUgaW4gcHJvdG90eXBlcy4KCSogbGliZ2NjMi5jIChfX2Fic3ZzaTIpOiBVc2UgV3R5cGUgYW5kIERXdHlwZS4KCShfX2Fic3ZkaTIsIF9fYWRkdnNpMywgX19hZGR2ZGkzLCBfX3N1YnZzaTMpOiBMaWtld2lzZS4KCShfX3N1YnZkaTMsIF9fbXVsdnNpMywgX19tdWx2ZGkzLCBfX25lZ3ZzaTIsIF9fbmVndmRpMik6IExpa2V3aXNlLgoKMjAwMC0xMi0xNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guaCAoSU5JVElBTElaRV9UUkFNUE9MSU5FKTogRW5jbG9zZSB0aGUgYmxvY2sKCXN0YXRlbWVudCBpbiBkby93aGlsZSgwKS4KClNhdCBEZWMgMTYgMTk6NTY6MjQgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGFzaHJzaTNfY21wbm8sIGFzaHJoaTNfY21wbm8sIGFzaHJxaTNfY21wbm8sIGxzaHJzaTNfY21wbm8sCglsc2hyaGkzX2NtcG5vKTogUmVtb3ZlIHJlZHVuZGFudCAnQCcgZnJvbSB0aGUgdGVtcGxhdGUuCgoJKiBpMzg2Lm1kIChjbXBzdHJzaV8xKTogRml4IHR5cGUgb2YgdGhlIGNvbXBhcmUuCgoJKiBnZW5hdHRydGFiLmMgKGF0dHJfcnR4X2Nvc3QpOiBOZXcgZnVuY3Rpb24uCgkoc2ltcGxpZnlfdGVzdF9leHApOiBBdm9pZCBvdmVyYWN0aXZlIGlubGluaW5nOyB1c2UgdGVtcG9yYXJ5CglvYnN0YWNrcyBmb3IgdGVzdHMuCgpTYXQgRGVjIDE2IDEwOjQxOjExIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkaWFnbm9zdGljLmMgKGZpbmlzaF9hYm9ydCk6IERlbGV0ZWQuCgkoZmF0YWwpOiBBZGQgY29kZSBmcm9tIGZpbmlzaF9hYm9ydC4KCShlcnJvcl9yZWN1cnNpb24sIGZhbmN5X2Fib3J0KTogQ2FsbCBmYXRhbCwgbm90IGZpbmlzaF9hYm9ydC4KCSh0cmltX2ZpbGVuYW1lKTogUmVtb3ZlIGxlYWRpbmcgIi4uLyIuCgkqIGRpYWdub3N0aWMuaCAoZmluaXNoX2Fib3J0KTogRGVsZXRlZC4KCSogdG9wbGV2LmMgKGNyYXNoX3NpZ25hbCk6IENhbGwgZmF0YWwsIG5vdCBmaW5pc2hfYWJvcnQuCgoJKiBzdG9yLWxheW91dC5jIChwbGFjZV9maWVsZCk6IFRyZWF0IG92ZXJmbG93aW5nIERFQ0xfU0laRV9VTklUCglhcyBpZiBzaXplIHdlcmUgdmFyaWFibGUuCgoJKiBleHBtZWQuYyAoZXhwYW5kX211bHQpOiBXcml0ZSBSRUdfRVFVQUwgbm90ZSB3aXRoIHByb3BlciBtb2RlLgoKMjAwMC0xMi0xNiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogdHJhZGNwcC5jOiBUX1dBUk5JTkc6IE5ldy4KCShkb193YXJuaW5nKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmNsdWRlKTogU2tpcCBwYXN0IHRoZSBuZXdsaW5lIGFuZCBpbmNyZWFzZSB0aGUgbGluZSBudW1iZXIKCWJlZm9yZSBjYWxsaW5nIG91dHB1dF9saW5lX2NvbW1hbmQuCgkoZG9fbGluZSk6IFNraXAgdGhlIG5ldyBsaW5lIGFmdGVyIG91dHB1dF9saW5lX2NvbW1hbmQuICBEb24ndAoJcHJlLWRlY3JlbWVudCB0aGUgbGluZSBudW1iZXIuCgoyMDAwLTEyLTE1ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIGkzODYvdW5peC5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogRml4IHJlZmVyZW5jZXMgdG8KCV9HTE9CQUxfT0ZGU0VUX1RBQkxFXyB3aGVuIHVzaW5nIEludGVsIHN5bnRheC4KCjIwMDAtMTItMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZ2NjLmMgKGNwcF9vcHRpb25zKTogUGFzcyAtZm5vLW9wZXJhdG9yLW5hbWVzLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9vcHRpb25zKTogQWRkIG9wZXJhdG9yX25hbWVzLgoJKiBjcHBpbml0LmMgKGNwcF9jcmVhdGVfcmVhZGVyKTogSW5pdGlhbGl6ZSBpdC4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogSWYgLWZuby1vcGVyYXRvci1uYW1lcywgZG9uJ3QgYWRkCglDKysgYWx0ZXJuYXRlIG9wZXJhdG9yIG5hbWVzLgoJKENPTU1BTkRfTElORV9PUFRJT05TKTogQWRkIC1mbm8tb3BlcmF0b3ItbmFtZXMuCgkoY3BwX2hhbmRsZV9vcHRpb24pOiBDbGVhciBvcGVyYXRvcl9uYW1lcy4KCjIwMDAtMTItMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBEb24ndCBkZWxldGUgdGhlIGxpbmUgbm90ZSBhZnRlciB0aGUKCXByb2xvZ3VlIGV2ZW4gaWYgaXQgc2VlbXMgcmVkdW5kYW50LgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IFNldCBSVFhfRlJBTUVfUkVMQVRFRF9QCglvbiBhbGwgaW5zbnMgdXNlZCB0byBhZGp1c3QgdGhlIHN0YWNrLgoKRnJpIERlYyAxNSAxNTozMjoxNiBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29tYmluZS5jIChjYW50X2NvbWJpbmVfaW5zbl9wKTogR2V0IGFyb3VuZCBTVUJSRUdzIHdoZW4gZGV0ZXJtaW5pbmcKCWhhcmRyZWc8LT5yZWcgbW92ZXMuCgpGcmkgRGVjIDE1IDE0OjQ4OjM3IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBnZW5yZWNvZy5jIChhZGRfdG9fc2VxdWVuY2UpOiBSZW1vdmUgc3BlY2lhbCBjYXNlIGZvcgoJY29uc3RfaW50X29wZXJhbmQuCgkobWF5YmVfYm90aF90cnVlKTogUmV0dXJuIDEgd2hlbiBmYWxsaW5nIG91dCBvZiBzZXF1ZW5jZSB3aGVuCgl0cnlpbmcgdG8gZmluZCBjb21tb24gcG9zaXRpb24gaW4gdGhlIHBhdHRlcm4uCgpGcmkgRGVjIDE1IDE0OjQ0OjUxIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpbnRlZ3JhdGUuYyAoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBDb3B5IG1vZGUgdG9vLgoKRnJpIERlYyAxNSAxNDoxMTo1NyBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZmxvdy5jIChub3RpY2Vfc3RhY2tfcG9pbnRlcl9tb2RpZmljYXRpb25fMSk6IENsZWFudXAuCgoyMDAwLTEyLTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFkanVzdF90cmFtcG9saW5lX2FkZHIpOiBOZXcgZnVuY3Rpb24uCgkodHJhbXBvbGluZV9hZGRyZXNzKTogQ2FsbCBpdCBpbnN0ZWFkIG9mIHJvdW5kX3RyYW1wb2xpbmVfYWRkcigpLgoJKiB0bS50ZXhpIChUUkFNUE9MSU5FX0FESlVTVF9BRERSRVNTKTogRG9jdW1lbnQgaXQuCgoyMDAwLTEyLTE0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogY3BwZmlsZXMuYyAoaGFja192bXNfaW5jbHVkZV9zcGVjaWZpY2F0aW9uKTogRGVsZXRlIGZ1bmN0aW9uCgkobm90IHVzZWQgc2luY2UgMTk5OCkuCgpGcmkgRGVjIDE1IDAzOjM3OjUxIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZF9pbml0KTogRG9uJ3QgcHV0IGEgbm90ZSBpbiBmcm9udCBvZiBhbnkgQkFSUklFUi4KCjIwMDAtMTItMTQgIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqIGFsaWFzLmMgKGdldF9hbGlhc19zZXQpOiBDYWxsIHJlY29yZF9jb21wb25lbnRfYWxpYXNlcyBmb3IKCUNPTVBMRVhfVFlQRS4KCShyZWNvcmRfY29tcG9uZW50X2FsaWFzZXMpOiBIYW5kbGUgQ09NUExFWF9UWVBFLgoKMjAwMC0xMi0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZml4aW5jL2dudS1yZWdleC5jOiBEaXNhYmxlIE5MUy4KCjIwMDAtMTItMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW1pdF9jb25kaXRpb25hbF9tb3ZlKTogRG8gbm90IHN3YXAKCWNvbXBhcmlzb24gb3BlcmFuZHMgd2hlbiB0aGF0IHdvdWxkIGNyZWF0ZSBub24tY2Fub25pY2FsIHJ0bC4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHVtdWxzaTNfaGlnaHBhcnQpOiBSZW1vdmUgKiBmcm9tIG5hbWUuCgkoc211bHNpM19oaWdocGFydCk6IExpa2V3aXNlLgoKMjAwMC0xMi0xNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZ2NjLmMgKGNwcF9vcHRpb25zKTogQWRkIC1yZW1hcC4KCjIwMDAtMTItMTQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGdjYy5jIChjcHBfb3B0aW9ucyk6IFVwZGF0ZSB0byB1c2UgJyYnLgoJKHN0cnVjdCBzd2l0Y2hzdHIpOiBDaGFuZ2UgdHlwZSBvZiB2YWxpZGF0ZWQgdG8gc2F2ZSBzcGFjZS4KCU5ldyBtZW1iZXIgJ29yZGVyaW5nJy4KCShoYW5kbGVfYnJhY2VzLCB2YWxpZGF0ZV9zd2l0Y2hlcyk6IFVwZGF0ZSB0byBoYW5kbGUgJyYnLgoKMjAwMC0xMi0xMyAgTGF1cnluYXMgQml2ZWluaXMgIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogZml4aW5jL2luY2xoYWNrLmRlZjogc2tpcCBzdGRpb192YV9saXN0IGZpeCBpZiBfX0RKX3ZhX2xpc3QKCWZvdW5kIGluIGEgaGVhZGVyLgoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbmVyYXRlZC4KCjIwMDAtMTItMTMgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYyAoY3lnd2luLCB3aW4zMiwgbWluZ3czMik6IFVzZSBmbG9hdC1pMzg2LmguCgoyMDAwLTEyLTEzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2MuYyAoaGFuZGxlX2JyYWNlcyk6IEhhbmRsZSAlezxTKn0gc3BlYyBjb3JyZWN0bHkuCgoyMDAwLTEyLTEzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IE9wdGltaXplIGluY29taW5nIFBBUkFMTEVMcyBpbnRvCglSRUdzIGlmIHBvc3NpYmxlLgoKMjAwMC0xMi0xMyAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuaW4oKik6IHN1YnN0YW50aWFsIHJld3JpdGUgdG8gYWNjb21tb2RhdGUgc3lzdGVtcwoJdGhhdCBjYW5ub3QgaGFuZGxlIGJpLWRpcmVjdGlvbmFsIHBpcGVzLCB2aXouIEJlT1MgYW5kIERPUy4KCSogZml4aW5jL2ZpeGxpYi5oKElHTk9SRV9BUkcpOiBuZXcgbWFjcm8KCShTVEFUSUMpOiBkZWZpbmUgZm9yIGFsbCBvZiBmaXhpbmMgdG8gdXNlCgkqIGZpeGluYy9maXhmaXhlcy5jKCopOiBlbGltaW5hdGUgdW51c2VkIGFyZyB3YXJuaW5ncwoJKiBmaXhpbmMvZml4dGVzdHMuYygqKTogZGl0dG8KCSogZml4aW5jL2ZpeGluY2wuYyhzdGFydF9maXhlcik6IGNoYWluX29wZW4gbm93IHVzZXMgY29uc3QgYXJnIGxpc3QKCSogZml4aW5jL2dudS1yZWdleC5jOiByZW9yZGVyIHNvbWUgaW5jbHVkZXMgdG8gYXZvaWQgX0dOVV9TT1VSQ0UKCXdhcm5pbmcuICBBbHNvLCBlbGltaW5hdGUgdGhlIGBgI2lmZGVmIGVtYWNzJycgc3R1ZmYuCgkocmVfc3ludGF4X29wdGlvbnMpOiBtYWtlIGdsb2JhbCBhcyBpdCBpcyBkZWNsYXJlZCBzby4KCSogZml4aW5jL21rZml4aW5jLnNoOiBwcm9jZXNzIHRoZSBhcmd1bWVudCBsaXN0IG1vcmUgY29uc2lzdGVudGx5CgkoYmVvcy9tc2Rvc2RqZ3BwKTogc2V0IFRBUkdFVFMgdG8gdHdvcHJvY2VzcyB2cy4gb25lcHJvY2VzcwoJKiBmaXhpbmMvcHJvY29wZW4uYyhnbG9iYWxzKTogaW5jbHVkZSAiZml4bGliLmgiIGZvciBzdGQgZGVmcwoJKiBmaXhpbmMvc2VydmVyLmMoZ2xvYmFscyk6IGRpdHRvCgkqIGZpeGluYy9zZXJ2ZXIuaChkZWZpbmVzKTogZGl0dG8KCjIwMDAtMTItMTMgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIHRyYWRjcHAuYyAoc3BlY2lhbF9zeW1ib2wpOiBJbXByb3ZlIHRlc3QgZm9yIGRlZmluZWRuZXNzLAoJdGhvdWdoIGl0IGlzIHN0aWxsIG5vdCBwZXJmZWN0LgoJKGRvX2RlZmluZSk6IERvbid0IGRlZmluZSBpbGxlZ2FsIG1hY3JvIG5hbWVzLgoKMjAwMC0xMi0wNyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvZWxmLmggKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogZW1pdCBAbm9iaXRzCglpZiBjaGFuZ2luZyBpbnRvIC5ic3Mgc2VjdGlvbi4KCSogY29uZmlnL21pcHMvZWxmNjQuaDogc2FtZS4KCSogY29uZmlnL21pcHMvaXJpczYuaDogc2FtZS4KCSogY29uZmlnL21pcHMvbmV0YnNkLmg6IHNhbWUuCgkqIGNvbmZpZy9taXBzL29wZW5ic2QuaDogc2FtZS4KCjIwMDAtMTItMTMgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGNwcGZpbGVzLmMgKHJlYWRfbmFtZV9tYXApOiBSZXR1cm4gbnVsbCBpZiBvcGVuICgpIGZhaWxzLgoJKHJlbWFwX2ZpbGVuYW1lKTogU2ltcGxpZnkgbG9naWMuICBBZGQgSUNFIGlmIGl0IGRvZXNuJ3Qgd29yawoJYXMgZXhwZWN0ZWQuIFBlcmZvcm0gc2Vjb25kYXJ5IGxvb2t1cCBhdHRlbXB0IG9uIGJhc2UgZmlsZW5hbWUKCW9ubHkuCgpXZWQgRGVjIDEzIDE5OjQ4OjA0IE1FVCAyMDAwICBKYW4gaHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmbG93LmMgKG5vdGljZV9zdGFja19wb2ludGVyX21vZGlmaWNhdGlvbl8xKTogTm90aWNlIG1pZGlmaWNhdGlvbnMKCXVzaW5nIFBSRV9NT0RJRlkgYW5kIFBPU1RfTU9ESUZZLgoKV2VkIERlYyAxMyAxNzoyNTozMiBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2Vub3V0cHV0LmMgKHByb2Nlc3NfdGVtcGxhdGUpOiBBZGQgc2FuaXR5IGNoZWNraW5nIGZvciAnQCcgdGVtcGxhdGVzLgoKMjAwMC0xMi0xMyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBzaW1wbGlmeS1ydHguYyAoY3NlbGliX2ZpbmlzaCk6IEZyZWUgcmVnX3ZhbHVlcyBhbmQgdXNlZF9yZWdzCgl2YXJyYXlzLgoKMjAwMC0xMi0xMiAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGRpc3RjbGVhbik6IFJlbW92ZSBzYWZlLWN0eXBlLmMgYXMgd2VsbC4KCjIwMDAtMTItMTIgIEJyYWQgTHVjaWVyIDxsdWNpZXJAbWF0aC5wdXJkdWUuZWR1PgoKCSogdHJhZGNwcC5jIChkb19lcnJvcik6IENhc3QgZGlmZmVyZW5jZSBvZiBwb2ludGVycyB0byBpbnQKCWZvciBlcnJvciBtZXNzYWdlLgoKMjAwMC0xMi0xMiAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogY29uZmlnL3JzNjAwMC9saW51eC5oIChIQU5ETEVfUFJBR01BX1BBQ0tfUFVTSF9QT1ApOiBNb3ZlIGZyb20gaGVyZS4uLgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKEhBTkRMRV9QUkFHTUFfUEFDS19QVVNIX1BPUCk6IC4uLnRvIGhlcmUuCgoyMDAwLTEyLTEyICBKaW0gV2lsc29uICA8d2lsc29uQHJlZGhhdC5jb20+CgoJKiBydGxhbmFsLmMgKG1heV90cmFwX3ApOiBDaGVjayBvcGVyYW5kIG1vZGVzIG9mIExFLCBMVCwgR0UsIGFuZCBHVC4KCjIwMDAtMTItMTIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluOiBTaW1wbGlmeSBsYW5ndWFnZSBlbmFibGluZy9kaXNhYmxpbmcgY29kZS4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoJKiBjaC9jb25maWctbGFuZy5pbiAodGFyZ2V0X2xpYnMpOiBTZXQuCgkoYnVpbGRfYnlfZGVmYXVsdCk6IFNldCB0byBuby4KCSogY3AvY29uZmlnLWxhbmcuaW4gKHRhcmdldF9saWJzKTogU2V0LgoJKiBmL2NvbmZpZy1sYW5nLmluICh0YXJnZXRfbGlicyk6IFNldC4KCSogamF2YS9jb25maWctbGFuZy5pbiAodGFyZ2V0X2xpYnMpOiBTZXQuCgkqIG9iamMvY29uZmlnLWxhbmcuaW4gKHRhcmdldF9saWJzKTogU2V0LgoKMjAwMC0xMi0xMiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogdHJhZGNwcC5jIChlbnVtIG5vZGVfdHlwZSk6IEFkZCBUX0VSUk9SLgoJKGRvX2Vycm9yKTogTmV3IGZ1bmN0aW9uLgoJKGRpcmVjdGl2ZV90YWJsZSk6IEFkZCAjZXJyb3IgaGFuZGxlci4KCjIwMDAtMTItMTIgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoSEFWRV9BU19EV0FSRjJfREVCVUdfTElORSk6IEVuYWJsZSAuZmlsZS8ubG9jIGNoZWNrCglmb3IgcG93ZXJwYyotKi0qLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4LmggKEhBTkRMRV9QUkFHTUFfUEFDS19QVVNIX1BPUCk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3VuaXF1ZV9zZWN0aW9uKTogVXNlCglTVFJJUF9OQU1FX0VOQ09ESU5HLgoKTW9uIERlYyAxMSAxMzo1MTowOSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS5jIChjbXBpYl9jb21wYXJpc29uX29wZXJhdG9yKTogUmVtb3ZlIEdFVSBhbmQgTFRVLgoJKiBwYS5oIChQUkVESUNBVEVfQ09ERVMsIGNtcGliX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBDb3JyZXNwb25kaW5nCgljaGFuZ2VzLgoKMjAwMC0xMi0xMSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZml4aW5jbC50cGw6IGluaXRpYWxpemUgYWxsIGZpZWxkcyBmb3Igd2FybmluZ3MKCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW5lcmF0ZQoKMjAwMC0xMi0xMSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiB0cmFkY3BwLmg6IEZvciB0cmFkY3BwLCBOVUwgaXMgbm90IHdoaXRlc3BhY2UuCgoyMDAwLTEyLTExICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBNYWNybyBleHBhbnNpb24gaXMgbm90IGEgZmlsZSBidWZmZXIuCgoyMDAwLTEyLTA1ICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGNvbXBhcmVfY29uZGl0aW9uLCBjb21wYXJlX3NpZ25fcCk6IE5ldyBmdW5jdGlvbnMuCgkoY29tcGFyZV9kaWZmX3AsIGNvbXBhcmVfZXFfcCk6IENhbGwgY29tcGFyZV9jb25kaXRpb24uCgkob3V0X3RzdGhpLCBvdXRfdHN0c2kpOiBDYWxsIGNvbXBhcmVfc2lnbl9wLgoJKGF2cl9wcm9nbWVtX3ApOiBDaGVjayBmb3IgZXJyb3JfbWFya19ub2RlLgoKMjAwMC0xMi0xMSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBlcnJvci5jIChwcmludF9sb2NhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShwcmludF9jb250YWluaW5nX2ZpbGVzKTogU2ltcGxpZnkuCgkoX2NwcF9iZWdpbl9tZXNzYWdlKTogU2ltcGxpZnkgYW5kIHVzZSBwcmludF9sb2NhdGlvbi4KCSogY3BwZmlsZXMuYyAoc3RhY2tfaW5jbHVkZV9maWxlKTogVXBkYXRlLgoJKF9jcHBfcG9wX2ZpbGVfYnVmZmVyKTogVXBkYXRlLgoJKiBjcHBoYXNoLmggKHN0cnVjdCBjcHBfYnVmZmVyKTogTmV3IG1lbWJlcnMKCWluY2x1ZGVfc3RhY2tfbGlzdGVkIGFuZCB0eXBlLgoJKiBjcHBsaWIuYyAoX2NwcF9oYW5kbGVfZGlyZWN0aXZlKTogQnVmZmVyLT5pbmMgaXMgbm90IG51bGwuCgkocnVuX2RpcmVjdGl2ZSk6IFRha2UgYnVmZmVyIHR5cGUuICBjcHBfcHVzaF9idWZmZXIgY2Fubm90IGZhaWwuCgkoX2NwcF9kb19fUHJhZ21hLCBjcHBfZGVmaW5lLCBfY3BwX2RlZmluZV9idWlsdGluLCBjcHBfdW5kZWYsCgloYW5kbGVfYXNzZXJ0aW9uKTogVXBkYXRlLgoJKGNwcF9wdXNoX2J1ZmZlcik6IFRha2UgYSBidWZmZXIgdHlwZSBhbmQgZmlsZSBuYW1lLgoJKGNwcF9wb3BfYnVmZmVyKTogVXBkYXRlLiAgQ2xlYXIgaW5jbHVkZV9zdGFja19saXN0ZWQuCgkqIGNwcGxpYi5oIChpbnB1dF9zdGFja19saXN0aW5nX2N1cnJlbnQpOiBSZW1vdmUuCgkoZW51bSBjcHBfYnVmZmVyX3R5cGUpOiBOZXcuCgkoY3BwX3B1c2hfYnVmZmVyKTogTmV3IHByb3RvdHlwZS4KCSogY3BwbWFjcm8uYyAoYnVpbHRpbl9tYWNybyk6IFNpbXBsaWZ5OyBidWZmZXIgY2Fubm90IGJlIG51bGwuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBVcGRhdGUuCgoyMDAwLTEyLTEwICBSb2JlcnQgTGlwZSA8cm9iZXJ0bGlwZUB1c2EubmV0PgoKCSogaW5zdGFsbC50ZXhpIChpKjg2LSotc2NvMy4ydjUqKTogUmVtb3ZlIGluZm9ybWF0aW9uIGR1cGxpY2F0ZWQKCWluIGh0bWwgdmVyc2lvbi4KCjIwMDAtMTItMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnZW5yZWNvZy5jIChmaW5kX29wZXJhbmQpOiBIYW5kbGUgJ1YnIGZvcm1hdCBjb2RlLgoJKGZpbmRfbWF0Y2hpbmdfb3BlcmFuZCk6IE5ldy4KCSh2YWxpZGF0ZV9wYXR0ZXJuKTogQWNjZXB0ICc9JyBmb3IgYW4gaW4tb3V0IG9wZXJhbmQgaWYgdGhlcmUKCWlzIGFub3RoZXIgb3BlcmFuZCB3aXRoIGEgbWF0Y2hpbmcgY29uc3RyYWludC4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGFuZHFpX2V4dF8wX2NjKTogVXNlIG1hdGNoaW5nIGNvbnN0cmFpbnQKCWZvciBvcDEgdG8gb3AwLgoKMjAwMC0xMi0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGdlbnJlY29nLmMgKHZhbGlkYXRlX3BhdHRlcm4pIFtTVFJJQ1RfTE9XX1BBUlRdOiBGaXggdGhpbmtvLgoKMjAwMC0xMi0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGdlbnJlY29nLmMgKHZhbGlkYXRlX3BhdHRlcm4pOiBWZXJpZnkgdGhhdCBaRVJPX0VYVFJBQ1QgYW5kCglTVFJJQ1RfTE9XX1BBUlQgYXMgU0VUX0RFU1QgaGF2ZSBpbi1vdXQgY29uc3RyYWludHMuCgoyMDAwLTEyLTA5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChjaGVja19mdW5jdGlvbl9mb3JtYXQpOiBEb24ndCBzdWdnZXN0IGFkZGluZyBmb3JtYXQKCWF0dHJpYnV0ZXMgdG8gZnVuY3Rpb25zIHdpdGggbm8gcGFyYW1ldGVyIHRvIHdoaWNoIHRvIGFkZCB0aGVtLgoKMjAwMC0xMi0wOSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9leHBhbmRfcHJvbG9ndWUpOiBNYXJrIHRoZSBnZW5lcmF0ZWQKCWluc24gbm90IHRoZSBzZXQgYXMgYmVpbmcgRFdBUkYyX0ZSQU1FX1JFTEFURURfUC4KCjIwMDAtMTItMDkgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIE1ha2VmaWxlLmluOiB1c2UgJChidWlsZF9leGVleHQpIGZvciBhbGwgYnVpbGQKCXN5c3RlbSBleGVjdXRhYmxlIHRhcmdldHMuCgoyMDAwLTEyLTA5ICBMYXVyeW5hcyBCaXZlaW5pcyAgPGxhdXJhc0Bzb2Z0aG9tZS5uZXQ+CgoJKiBpbnN0YWxsLnRleGk6IHJlbW92ZSBpWzM0NV04Ni0qLXdpbm50My41IHNlY3Rpb24uCgkqIGNvbmZpZ3VyLmJhdDogcmVtb3ZlZC4KCSogY29uZmlnL21zZG9zOiBkaXJlY3RvcnkgcmVtb3ZlZC4KCjIwMDAtMTItMDkgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZmlsZXMuYyAoTkVWRVJfUkVSRUFELCBET19OT1RfUkVSRUFEKTogTW92ZSBmcm9tIGNwcGhhc2guaC4KCSogY3BwaGFzaC5oIChORVZFUl9SRVJFQUQsIERPX05PVF9SRVJFQUQsIEFCU09MVVRFX1BBVEgpOiBEZWxldGUuCgkqIGNwcGxleC5jIChwYXJzZV9pZGVudGlmaWVyKTogSW1wcm92ZSBkaWFnbm9zdGljLgoJKF9jcHBfbGV4X3Rva2VuKTogUmV0dXJuIHVuY29uZGl0aW9uYWxseSBhdCB0aGUgZW5kIG9mIGEgZGlyZWN0aXZlLgoJKiBjcHBsaWIuYyAocmVhZF9mbGFnKTogVmVyaWZ5IGxlZ2FsaXR5IG9mIGVhY2ggZmxhZy4KCShlbmRfZGlyZWN0aXZlKTogUmVzb3RyZSBwZmlsZS0+c2tpcHBpbmcgYmVmb3JlIHNraXBfcmVzdF9vZl9saW5lLgoJKGRvX2xpbmUpOiBVc2UgdGhlIG5ldyByZWFkX2ZsYWcuCgkqIGNwcG1hY3JvLmMgKHN0cnVjdCBjcHBfbWFjcm8sIHBhcnNlX2FyZywgcmVwbGFjZV9hcmdzLAoJY2hlY2tfbWFjcm9fcmVkZWZpbml0aW9uLCBwYXJzZV9wYXJhbXMpOiBSZW5hbWUgdmFyX2FyZ3MgdG8KCXZhcmlhZGljLgoKMjAwMC0xMi0wOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogLmN2c2lnbm9yZTogQWRkIGluZm8gZmlsZXMuCgoyMDAwLTEyLTA4IExhdXJ5bmFzIEJpdmVpbmlzIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogY29uZmlnL3dpbm50OiBSZW1vdmUgb2Jzb2xldGUgZGlyZWN0b3J5LgoJKiBpbnN0YWxsLnRleGkgKENvbmZpZ3VyYXRpb25zKTogUmVtb3ZlIG9ic29sZXRlIGRvY3VtZW50YXRpb24gZm9yCglXaW5kb3dzIE5ULgoKMjAwMC0xMi0wOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY29uZmlndXJlLmluOiBEb24ndCBkZWZpbmUgSU5TVEFMTF9JTkZPLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIE1ha2VmaWxlLmluIChJTlNUQUxMX0lORk8pOiBSZW1vdmUuCgkoaW5mbyk6IERlcGVuZCBvbiBpbmZvIGZpbGVzIGluIHNvdXJjZSBkaXJlY3RvcnkuCgkoY3BwLmluZm8sIGdjYy5pbmZvLCBjLXRyZWUuaW5mbyk6IEJ1aWxkIGluZm8gZmlsZXMgaW4gc291cmNlCglkaXJlY3RvcnkuCgkoZGlzdGNsZWFuKTogRG9uJ3QgcmVtb3ZlIGluZm8gZmlsZXMuCgkobWFpbnRhaW5lci1jbGVhbik6IFJlbW92ZSBpbmZvIGZpbGVzIGZyb20gc291cmNlIGRpcmVjdG9yeS4KCShpbnN0YWxsLW5vcm1hbCk6IERlcGVuZCBvbiBpbnN0YWxsLWluZm8uCgkoaW5zdGFsbC1pbmZvKTogSW5zdGFsbCBpbmZvIGZpbGVzIGZyb20gc291cmNlIGRpcmVjdG9yeSwgaWYgdGhleQoJZXhpc3QuCgkqIHRleGluZm8udGV4OiBVcGRhdGUgdG8gdmVyc2lvbiAyMDAwLTExLTA5LjA4IGZyb20gZnRwLmdudS5vcmcuCgoyMDAwLTEyLTA4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGxjbS5jIChvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZyk6IENoZWNrIHdoZXRoZXIgYW4gaW5zbiBpcyBhIE5PVEUKCWJlZm9yZSB0YWtpbmcgaXRzIE5PVEVfTElORV9OVU1CRVIuCgoyMDAwLTEyLTA4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKGxvYWRfaW5kaXJlY3RfanVtcCk6IEFkZCBwb29sIHJhbmdlcy4KCgkqIGV4dGVuZC50ZXhpOiBEb2N1bWVudCBBUk0gImludGVycnVwdCIgZnVuY3Rpb24gYXR0cmlidXRlLgoJTWVudGlvbiB0aGF0IHRoZSBBUk0gYWxzbyBzdXBwb3J0IHRoZSAibmFrZWQiIGZ1bmN0aW9uCglhdHRyaWJ1dGUuCgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCAoYXJtX2N1cnJlbnRfZnVuY190eXBlKTogQWRkCglwcm90b3R5cGUuCgoJKiBjb25maWcvYXJtL2FybS5oIChFWENFUFRJT05fTFJfUkVHTlVNKTogRGVmaW5lLgoJKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogQWRkICdmdW5jX3R5cGUnIGZpZWxkLgoJRGVmaW5lIGJpdCB2YWx1ZXMgZm9yICdmdW5jX3R5cGUnIGZpZWxkLgoJKEFSTV9GVU5DX1RZUEUpOiBOZXcgbWFjcm8uCgkoSVNfSU5URVJSVVBUKTogTmV3IG1hY3JvLgoJKElTX1ZPTEFUSUxFKTogTmV3IG1hY3JvLgoJKElTX05BS0VEKTogTmV3IG1hY3JvLgoJKElTX05FU1RFRCk6IE5ldyBtYWNyby4KCShBUk1fSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiBVc2UgSVNfVk9MQVRJTEUuCgoJKiBjb25maWcvYXJtL2FybS5jIChpc3JfYXR0cmlidXRlX2FyZ3MpOiBOZXcgU3RydWN0dXJlLiAgQQoJbGlzdCBvZiAiaW50ZXJydXB0IiBmdW5jdGlvbiBhdHRyaWJ1dGUgbW9kaWZpZXJzLgoJKGFybV9pc3JfdmFsdWUpOiBOZXcgRnVuY3Rpb246IFJldHVybnMgdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQKCWludGVycnVwdCBmdW5jdGlvbi4KCShhcm1fY29tcHV0ZV9mdW5jX3R5cGUpOiBOZXcgRnVuY3Rpb246IENvbXB1dGVzIHRoZSB0eXBlIG9mCgl0aGUgY3VycmVudCBmdW5jdGlvbi4KCShhcm1fY3VycmVudF9mdW5jX3R5cGUpOiBOZXcgRnVuY3Rpb246IFJldHVybnMgdGhlIHR5cGUgb2YgdGhlCgljdXJyZW50IGZ1bmN0aW9uLgoJKHVzZV9yZXR1cm5faW5zbik6IFVzZSBhcm1fY3VycmVudF9mdW5jX3R5cGUuCgkoYXJtX3ZhbGlkX3R5cGVfYXR0cmlidXRlX3ApOiBBY2NlcHQgImludGVycnVwdCIgZnVuY3Rpb24KCWF0dHJpYnV0ZS4KCShhcm1fY29tcF90eXBlX2F0dHJpYnV0ZXMpOiBDaGVjayAiaW50ZXJydXB0IiBhdHRyaWJ1dGVzLgoJKGFybV92YWxpZF9tYWNoaW5lX2RlY2wpOiBBY2NlcHQgImludGVycnVwdCIgZnVuY3Rpb24KCWF0dHJpYnV0ZS4KCShhcm1fZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwpOiBEbyBub3QgYWxsb3cgaW50ZXJydXB0CglmdW5jdGlvbnMgdG8gdXNlIHNpYmNhbGxzLgoJKGFybV9uYWtlZF9mdW5jdGlvbl9wKTogRGVsZXRlLgoJKHByaW50X211bHRpX3JlZyk6IFJlbW92ZSByZWR1bmRhbnQgcGFyYW1ldGVyICdoYXQnLgoJKGFybV9jb21wdXRlX3NhdmVfcmVnX21hc2spOiBOZXcgRnVuY3Rpb246IENvbXB1dGUgYSBiaXQgbWFzawoJb2YgcmVnaXN0ZXJzIHNhdmVkIGR1cmluZyB0aGUgY3VycmVudCBmdW5jdGlvbidzIHByb2xvZ3VlLgoJKG91dHB1dF9hcm1fcmV0dXJuX2luc3RydWN0aW9uKTogVXNlIGFybV9jdXJyZW50X2Z1bmNfdHlwZS4KCUdlbmVyYXRlIHJldHVybiBpbnN0cnVjdGlvbiB3aGVuIExSIGlzIG5vdCBwb3Bwc2VkIG9mZiB0aGUKCXN0YWNrLgoJKGFybV92b2xhdGlsZV9mdW5jKTogRGVsZXRlLgoJKG91dHB1dF9hcm1fcHJvbG9ndWUpOiBVc2UgYXJtX2N1cnJlbnRfZnVuY190eXBlIGFuZAoJYXJtX2NvbXB1dGVfc2F2ZV9yZWdfbWFzay4KCU5vdGUgcHJlc2VybmNlIG9mIGludGVycnVwdCBmdW5jdGlvbnMuCgkoYXJtX291dHB1dF9lcGlsb2d1ZSk6IFVzZSBhcm1fY3VycmVudF9mdW5jX3R5cGUgYW5kCglhcm1fY29tcHV0ZV9zYXZlX3JlZ19tYXNrLgoJKGFybV9leHBhbmRfcHJvbG9ndWUpOiBVc2UgYXJtX2N1cnJlbnRfZnVuY190eXBlIGFuZAoJYXJtX2NvbXB1dGVfc2F2ZV9yZWdfbWFzay4KCShhcm1faW5pdF9tYWNoaW5lX3N0YXR1cyk6IEluaXRpYWxpemUgZnVuY190eXBlIGZpZWxkLCBpZgoJbmVjZXNzYXJ5LgoJKHRodW1iX2V4cGFuZF9wcm9sb2d1ZSk6IFVzZSBhcm1fY3VycmVudF9mdW5jX3R5cGUuCgkob3V0cHV0X3RodW1iX3Byb2xvZ3VlKTogVXNlIGFybV9jdXJyZW50X2Z1bmNfdHlwZS4KCjIwMDAtMTItMDggIEJyYWQgTHVjaWVyIDxsdWNpZXJAbWF0aC5wdXJkdWUuZWR1PgoKCSogdHJhZGNwcC5jIChkb19pbmNsdWRlKTogTWFrZSBwb2ludGVyIGRpZmZlcmVuY2VzIDY0LWJpdCBjbGVhbi4KCkZyaSBEZWMgIDggMDg6MjM6MjkgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIGZwLWJpdC5jIChfZnBtdWxfcGFydHMpOiBVc2UgVVNJdHlwZSB2YXJpYWJsZXMgYXMgaW5wdXRzCglmb3IgbXVsdGlwbGllcy4KCjIwMDAtMTItMDcgIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChkaXN0Y2xlYW4pOiBSZW1vdmUgYWxsb2NhLmMgaGFzaHRhYi5jLgoKMjAwMC0xMi0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIE1ha2VmaWxlLmluIChIT1NUX1JUTCk6IEFkZCBzYWZlLWN0eXBlLm8uCgkoc2FmZS1jdHlwZS5vKTogTmV3IHJ1bGUuCgkqIHN5c3RlbS5oOiBJbmNsdWRlIHNhZmUtY3R5cGUuaCwgbm90IGN0eXBlLmguICBObyBuZWVkIHRvCgl3cmFwIGN0eXBlIG1hY3Jvcy4KCgkqIGNwcGhhc2guaDogWmFwIElTdGFibGUgYW5kIHJlbGF0ZWQgbWFjcm9zLiAgRGVmaW5lIGlzXyogaW4KCXRlcm1zIG9mIHNhZmUtY3R5cGUuaCBtYWNyb3MuCgkqIGNwcGluaXQuYzogRGVsZXRlIHRoZSBJU3RhYmxlIGFuZCBhbGwgcmVsYXRlZCBjb2RlLgoKCSogdHJhZGNwcC5jOiBEZWxldGUgaXNfaWRjaGFyLCBpc19pZHN0YXJ0LCBpc19ob3Jfc3BhY2UsIGFuZAoJaXNfc3BhY2UgYXJyYXlzLiAgRGVsZXRlIGluaXRpYWxpemVfY2hhcl9zeW50YXguICBDaGFuZ2UgYWxsCglyZWZlcmVuY2VzIHRvIHRoZSBhYm92ZSBhcnJheXMgdG8gdXNlIG1hY3JvcyBpbnN0ZWFkLgoJKiB0cmFkY3BwLmg6IERlZmluZSBpc19pZGNoYXIsIGlzX2lkc3RhcnQsIGlzX3NwYWNlLCBhbmQKCWlzX252c3BhY2UgaW4gdGVybXMgb2Ygc2FmZV9jdHlwZS5oJ3MgbWFjcm9zLgoJKiB0cmFkY2lmLnk6IGlzX2lkY2hhciwgaXNfaWRzdGFydCBhcmUgbWFjcm9zIG5vdCBhcnJheXMuCgoJKiBjb25maWcvaTM3MC9pMzcwLmMsIGNvbmZpZy93aW5udC9kaXJlbnQuYywKCWNvbmZpZy93aW5udC9maXhpbmMtbnQuYywgY29uZmlnL3dpbm50L2xkLmM6CglVc2UgdXBwZXJjYXNlIGN0eXBlIG1hY3Jvcy4gIElmIHdlIGluY2x1ZGVkIGN0eXBlLmgsCglpbmNsdWRlIHNhZmUtY3R5cGUuaCBpbnN0ZWFkLgoKCSogZml4aW5jL2ZpeGZpeGVzLmM6IFVzZSB1cHBlcmNhc2UgY3R5cGUgbWFjcm9zLiAgRG9uJ3QgdGVzdAoJSVNMT1dFUihjKSBiZWZvcmUgY2FsbGluZyBUT1VQUEVSKGMpLgoJKiBmaXhpbmMvZml4aW5jbC5jIChleHRyYWN0X3F1b3RlZF9maWxlcyk6IFNpbXBsaWZ5IG91dCBzb21lIGd1bmsuCgkqIGZpeGluYy9nbnUtcmVnZXguYzogSW5jbHVkZSBzYWZlLWN0eXBlLmgsIG5vdCBjdHlwZS5oLiAgTm8gbmVlZCB0bwoJd3JhcCBjdHlwZSBtYWNyb3MuICBEb24ndCB0ZXN0IElTVVBQRVIoeCkgYmVmb3JlIGNhbGxpbmcgVE9MT1dFUih4KS4KCjIwMDAtMTItMDcgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogcHJlc2VydmUgcHJldmlvdXMgYWxpZ25tZW50cyB3aGVuCglyZWJ1aWxkaW5nIGFycmF5IHR5cGVzLgoKMjAwMC0xMi0wNyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBmaWxlcy5jIChzdHJ1Y3QgaW5jbHVkZV9maWxlKTogTW92ZSBmcm9tIGNwcGhhc2guaC4KCShfY3BwX25ldmVyX3JlcmVhZCk6IE5ldyBmdW5jdGlvbi4KCShvcGVuX2ZpbGUsIHJlYWRfaW5jbHVkZV9maWxlKTogVXNlIGl0LgoJKHN0YWNrX2luY2x1ZGVfZmlsZSk6IFNldCB0aGUgYnVmZmVyJ3Mgc3lzcCBhY2NvcmRpbmcgdG8gdGhlCglwYXRoIGluIHdoaWNoIHRoZSBmaWxlIHdhcyBmb3VuZC4KCShmaW5kX2luY2x1ZGVfZmlsZSk6IERvbid0IHNldCBzeXNwLgoJKGNwcF9tYWtlX3N5c3RlbV9oZWFkZXIsIGFjdHVhbF9kaXJlY3RvcnkpOiBVcGRhdGUuCgkoX2NwcF9leGVjdXRlX2luY2x1ZGUpOiBEbyAjaW5jbHVkZV9uZXh0IGxvb2t1cCBoYW5kbGluZyBoZXJlLAoJbm90IGluIGNwcGxpYi5jLiAgVXNlIF9jcHBfbmV2ZXJfcmVyZWFkLgoJKiBjcHBoYXNoLmggKHN0cnVjdF9pbmNsdWRlX2ZpbGUpOiBSZW1vdmUuCgkoc3RydWN0IGNwcF9idWZmZXIpOiBOZXcgbWVtYmVyIHN5c3AuCgkoQ1BQX0lOX1NZU1RFTV9IRUFERVIsIF9jcHBfZXhlY3V0ZV9pbmNsdWRlKTogVXBkYXRlLgoJKF9jcHBfbmV2ZXJfcmVyZWFkKTogTmV3LgoJKiBjcHBsaWIuYyAocmVhZF9saW5lX251bWJlcik6IFJlbmFtZSByZWFkX2ZsYWcuICBSZXdvcmsgc2xpZ2h0bHkuCgkoZW5kX2RpcmVjdGl2ZSk6IENsZWFyIGxpbmVfZXh0ZW5zaW9uIGZsYWcuCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlKTogU2V0IGxpbmVfZXh0ZW5zaW9uIGZsYWcgZm9yICNudW1iZXIuCgkoZG9faW5jbHVkZV9uZXh0KTogSGFuZGxlIHBhdGggbG9va3VwIGluIF9jcHBfZXhlY3V0ZV9pbmNsdWRlLgoJKGRvX2xpbmUpOiBDbGVhbnVwIHRvIHVzZSByZWFkX2ZsYWcuICBEb24ndCBhbGxvdyBmbGFncyBpbiAjbGluZS4KCShfY3BwX2RvX2ZpbGVfY2hhbmdlKTogVXBkYXRlLgoJKGRvX3ByYWdtYV9vbmNlKTogVXNlIGNwcF9uZXZlcl9yZXJlYWQuICBDbGVhbiB1cC4KCSogY3BwbGliLmggKHN0cnVjdCBsZXhlcl9zdGF0ZSk6IE5ldyBtZW1iZXIgbGluZV9leHRlbnNpb24uCgoyMDAwLTEyLTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IEZvcmNlIHRoZSBzdGFjayBwb2ludGVyIGxpdmUKCWFmdGVyIHJlbG9hZCBhcyB3ZWxsLgoKMjAwMC0xMi0wNyAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuKihleGVleHQpOiB0aGUgdmFyaWFibGVzIGFyZSBleGVleHQsIHRoZQoJc3Vic3RpdHV0aW9uIGV4cHJlc3Npb24gaXMgYnVpbGRfZXhlZXh0LgoKMjAwMC0xMi0wNyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjLWNvbW1vbi5jIChwYXJzZV9pbik6IE1ha2UgYSBjcHBfcmVhZGVyICouCgkqIGNwcGZpbGVzLmMgKF9jcHBfZmFrZV9pbmNsdWRlKTogUmVtb3ZlLgoJKiBjcHBoYXNoLmg6IFNpbWlsYXJseS4KCSogY3BwbGliLmMgKGRvX2xpbmUpOiBEb24ndCBjYWxsIF9jcHBfZmFrZV9pbmNsdWRlLiAgQSB2YWxpZAoJI2xpbmUgYWx3YXlzIGNyZWF0ZXMgYSBjYWxsYmFjazsgRkNfUkVOQU1FIGlmIHRoZXJlIGFyZSBubwoJI2xpbmUgZmxhZ3MuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBjcHBfcHVzaF9idWZmZXIgY2Fubm90IGZhaWwuCglUaGUgZmlyc3QgRU9GIG11c3QgYmUgb3VyIGdldF9jaGFyIGJ1ZmZlci4KCjIwMDAtMTItMDcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKHdhcm5fZm9ybWF0X3NlY3VyaXR5KTogTmV3IHZhcmlhYmxlLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogV2FybiBhYm91dCBub24tbGl0ZXJhbCBmb3JtYXRzIHdpdGggbm8gZm9ybWF0Cglhcmd1bWVudHMgaWYgZWl0aGVyIC1XZm9ybWF0LW5vbmxpdGVyYWwgb3IgLVdmb3JtYXQtc2VjdXJpdHkgaXMKCXNwZWNpZmllZC4KCShzZXRfV2Zvcm1hdCk6IFNldCB3YXJuX2Zvcm1hdF9zZWN1cml0eSBmb3Igc2V0dGluZ3Mgb3RoZXIgdGhhbiAxLgoJKiBjLWNvbW1vbi5oICh3YXJuX2Zvcm1hdF9zZWN1cml0eSk6IERlY2xhcmUuCgkqIGMtZGVjbC5jIChjX2RlY29kZV9vcHRpb24pOiBEZWNvZGUgLVdmb3JtYXQtc2VjdXJpdHkgYW5kCgktV25vLWZvcm1hdC1zZWN1cml0eS4KCSogaW52b2tlLnRleGk6IERvY3VtZW50IC1XZm9ybWF0LXNlY3VyaXR5LgoJKiB0b3BsZXYuYyAoZG9jdW1lbnRlZF9sYW5nX29wdGlvbnMpOiBJbmNsdWRlIC1XZm9ybWF0LXNlY3VyaXR5CglhbmQgLVduby1mb3JtYXQtc2VjdXJpdHkuCgoyMDAwLTEyLTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChjaGVja19mb3JtYXRfaW5mbyk6IFdhcm4gZm9yIG5vbi1jb25zdGFudCBmb3JtYXQKCXN0cmluZ3Mgd2l0aCBzdHJmdGltZSBmb3JtYXRzIGlmIC1XZm9ybWF0LW5vbmxpdGVyYWwuICBXaGVyZSB0aGUKCWZvcm1hdCBjYW4gY29udmVydCBhcmd1bWVudHMsIGlmIHRoZSBmb3JtYXQgaXMgbm90IGEgc3RyaW5nCglsaXRlcmFsIGFuZCB0aGVyZSBhcmUgbm8gYXJndW1lbnRzIHRvIHRoZSBmb3JtYXQsIGdpdmUgYSBkaWZmZXJlbnQKCXdhcm5pbmcgbWVzc2FnZSBmcm9tIHRoZSBnZW5lcmFsIG5vbi1zdHJpbmctbGl0ZXJhbCBjYXNlLgoKMjAwMC0xMi0wNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoZm9ybWF0X3dhbnRlZF90eXBlKTogQWRkIHJlYWRpbmdfZnJvbV9mbGFnLgoJKHByaW50X2NoYXJfdGFibGUpOiBNYXJrICVzIGFuZCAlUyBmb3JtYXRzIHdpdGggZmxhZyAiUiIuCgkoY2hlY2tfZm9ybWF0X2luZm9fbWFpbik6IFNldCB1cCByZWFkaW5nX2Zyb21fZmxhZyBhcHByb3ByaWF0ZWx5LgoJSWYgYWZsYWcsIGFsd2F5cyBzZXQgd3JpdGluZ19pbl9mbGFnIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gdGhlCglmb3JtYXQgdXNlZCBiZWluZyBhIHNjYW5mIGZvcm1hdCBhbmQgc28gaGF2aW5nIGl0IHNldC4KCShjaGVja19mb3JtYXRfdHlwZXMpOiBDaGVjayBmb3IgZm9ybWF0cyByZWFkaW5nIHRocm91Z2ggbnVsbAoJcG9pbnRlcnMuCgoyMDAwLTEyLTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBpbnZva2UudGV4aSAoLVdmb3JtYXQpOiBEb2N1bWVudCB3aGF0IGZvcm1hdCBmZWF0dXJlcyBhcmUKCWNoZWNrZWQuCgoyMDAwLTEyLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMTItMDYgICAgICBKb2VsIFNoZXJyaWxsIDxqb2VsQE9BUmNvcnAuY29tPgoKCSogY29uZmlnLmdjYyAoYTI5ayotKi1ydGVtcyosIGFybSotKi1ydGVtcyosIGM0eC0qLXJ0ZW1zKiwKCWg4MzAwLSotcnRlbXMqLCBocHBhMS4xLSotcnRlbXMsICptaXBzKi0qLXJ0ZW1zKik6IE5ldyB0YXJnZXRzLgoJKiBjb25maWcuZ2NjICgqLXJ0ZW1zKik6IEFkZCBzdXBwb3J0IGZvciBndGhyLXJ0ZW1zLmguCgkqIGd0aHItcnRlbXMuaCwgY29uZmlnL2EyOWsvcnRlbXMuaCwgY29uZmlnL2FybS9ydGVtcy1lbGYuaCwKCWNvbmZpZy9oODMwMC9ydGVtcy5oLCBjb25maWcvbWlwcy9ydGVtcy5oOiBOZXcgZmlsZXMuCgoyMDAwLTEyLTA2ICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IFJlb3JnYW5pemUgaGFuZGxpbmcgb2YgKi0qLWdudSosIHRvIHNoYXJlIHRhcmdldAoJc3BlY2lmaWMgbWFrZSBkZXRhaWxzIHdpdGggTGludXguICBVcGRhdGUgY29tbWVudHMgdG8gY2xhcmlmeQoJdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gR05VL0xpbnV4IGFuZCBHTlUvSHVyZC4KCldlZCBEZWMgIDYgMTk6MjI6MDIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY29udHJpYi50ZXhpOiBGaXggbXkgZW1haWwgYWRkcmVzcy4gIFVwZGF0ZSBQZXIncwoJbGlzdCBvZiBjb250cmlidXRpb25zLgoKMjAwMC0xMi0wNiAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AbXluZC5jb20+CgoJKiBjLWxleC5jIChjYl9pbmRlbnQpOiBEZWNvcmF0ZSBgc3RyJyBhcmd1bWVudCwgdW51c2VkIG9uIEhQLVVYLgoJKiBjb2xsZWN0Mi5jIChzY2FuX2xpYnJhcmllcyk6IFJlbW92ZSB1bnVzZWQgYGNoJy4KCShDT0ZGIHNwZWNpZmljIHN0dWZmKTogUHJvdG90eXBlIGxkZ2V0bmFtZS4gIERlY2xhcmUgYW5kIHByb3RvdHlwZQoJbGRidHJlYWQgYW5kIGxkY2xvc2UuCgoJKiBjb25maWcvYWxwaGEvb3NmLmg6IFN0YW5kYXJpemUgY29weXJpZ2h0IHN0YXRlbWVudC4KCSogY29uZmlnL2FyYy9hcmMuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vZWxmLmggY29uZmlnL2FybS9jb2ZmLmggY29uZmlnL2FybS9hb3V0Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5jIGNvbmZpZy9hcm0vYXJtLmg6IExpa2V3aXNlLgoJKiBjb25maWcvZWx4c2kvZWx4c2kuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3Njby5oOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvY3Jkcy5oIGNvbmZpZy9tNjhrL2hwMzIwLmggY29uZmlnL202OGsvbHlueC5oOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4a3Y0LmggY29uZmlnL202OGsvbmV4dDIxLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9zdW4zLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbTg4ay9kZ3V4LmggY29uZmlnL204OGsvZGd1eGJjcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BkcDExLzJic2QuaCBjb25maWcvcGRwMTEvcGRwMTEuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yb21wL3JvbXAuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvYWl4NDEuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zeXN2NC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3dlMzJrL3dlMzJrLmMgY29uZmlnL3dlMzJrL3dlMzJrLmg6IExpa2V3aXNlLgoJKiBmaXhpbmMvZ251LXJlZ2V4LmMgZml4aW5jL2dudS1yZWdleC5oOiBMaWtld2lzZS4KCSogY3BwbGliLmggY3BwZXhwLmMgY3NlbGliLmggcHJvZmlsZS5jOiBMaWtld2lzZS4KCSogbG9uZ2xvbmcuaDogTGlrZXdpc2UuCgkqIGxpYmdjYzIuYzogTGlrZXdpc2UuCgoyMDAwLTEyLTA2IEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiBtYWNobW9kZS5kZWY6IFVzZSBjb3JyZWN0IGRlZmluaXRpb24gZm9yIEJJVFNJWkUgb24gdGFyZ2V0cyB3aGVyZQoJQklUU19QRVJfVU5JVCAhPSA4LgoKMjAwMC0xMi0wNiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuKjogUmVkdWNlIGRpZmZlcmVuY2VzIHRvICh1bHRpbWF0ZWx5KSByZWR1Y2UKCXRoZSBudW1iZXIgb2YgdGhlbS4KCjIwMDAtMTItMDYgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogcGEuYzogSW5jbHVkZSBleHByLmggYmVmb3JlIGMtdHJlZS5oLgoJKHJlbW92ZV91c2VsZXNzX2FkZHRyX2luc25zKTogVXNlIHJldmVyc2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZAoJaW5zdGVhZCBvZiByZXZlcnNlX2NvbmRpdGlvbi4KCShwcmludF9vcGVyYW5kKTogQ29ycmVjdCBwcmVkaWNhdGVzIGZvciBHVCwgR0UsIExUIGFuZCBMRS4gIEFkZAoJcHJlZGljYXRlcyBmb3IgTFRHVCwgVU5MRSwgVU5MVCwgVU5HRSwgVU5HVCwgVU5FUSwgVU5PUkRFUkVEIGFuZAoJT1JERVJFRC4KCShjbXBpYl9jb21wYXJpc29uX29wZXJhdG9yKTogQWRkIEdFVSBhbmQgTFRVIGNvZGVzLgoJKiBwYS5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgY29kZXMgZm9yIGNtcGliX2NvbXBhcmlzb25fb3BlcmF0b3IuCgkqIHBhLm1kIChibHRndCwgYnVubGUsIGJ1bmx0LCBidW5nZSwgYnVuZ3QsIGJ1bmVxLCBidW5vcmRlcmVkLAoJYm9yZGVyZWQpOiBOZXcgZmxvYXQgY29uZGl0aW9uYWwgYnJhbmNoIHBhdHRlcm5zLgoKV2VkIERlYyAgNiAyMTowMzo0MSAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSogZmluYWwuYyAoZmluYWxfYWRkcl92ZWNfYWxpZ24pOiBGaXggY2xpcHBpbmcgdG8gQklHR0VTVF9BTElHTk1FTlQuCgoyMDAwLTEyLTA2ICBTeWx2YWluIFBpb24gIDxTeWx2YWluLlBpb25Ac29waGlhLmlucmlhLmZyPgoKCSogY3BwbGV4LmMgKHNraXBfZXNjYXBlZF9uZXdsaW5lcyk6IERvbid0IHdhcm4gZm9yIHNwYWNlcyBiZXR3ZWVuCgliYWNrc2xhc2ggYW5kIG5ld2xpbmUsIHdoZW4gaW5zaWRlIGEgY29tbWVudC4KCjIwMDAtMTItMDYgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGludm9rZS50ZXhpOiBVc2UgQHRhYmxlIEBzYW1wIGluc3RlYWQgb2YgQGl0ZW1pemUgQG1pbnVzIGZvcgoJdGFibGUgb2YgbGFuZ3VhZ2Ugc3RhbmRhcmRzLiAgRml4IHVzZSBvZiBAcHhyZWYuICBGcm9tIFphY2sKCVdlaW5iZXJnLiAgQWxzbyBleGNsdWRlIHNwZWNzIGRvY3VtZW50YXRpb24gZnJvbSBnZW5lcmF0ZWQKCW1hbnBhZ2UsIGFuZCBjcmVhdGUgc2VwYXJhdGUgRU5WSVJPTk1FTlQgc2VjdGlvbi4KCjIwMDAtMTItMDYgIE1pY2hhZWwgTWF0eiAgPG1hdHptaWNoQGNzLnR1LWJlcmxpbi5kZT4KCgkqIGdjc2UuYyAoY29tcHV0ZV9wcmVfZGF0YSk6IEtpbGwgdHJhcHBpbmcgZXhwcmVzc2lvbnMgaW4KCWRlc3RpbmF0aW9uIGJsb2NrcyBvZiBhYm5vcm1hbCBlZGdlcy4KCjIwMDAtMTItMDUgIFJpY2hhcmQgU2FuZGlmb3JkICA8ci5zYW5kaWZvcmRAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF9wcmludF9yZWdfbGlzdCk6IEFkZGVkLgoJKG1uMTAzMDBfZ2V0X2xpdmVfY2FsbGVlX3NhdmVkX3JlZ3MpOiBMaWtld2lzZS4KCShtbjEwMzAwX2dlbl9tdWx0aXBsZV9zdG9yZSk6IExpa2V3aXNlLgoJKHN0b3JlX211bHRpcGxlX29wZXJhdGlvbik6IExpa2V3aXNlLgoJKGV4cGFuZF9wcm9sb2d1ZSk6IFVzZSBtbjEwMzAwX2dlbl9tdWx0aXBsZV9zdG9yZSgpLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLXByb3Rvcy5oIChtbjEwMzAwX3ByaW50X3JlZ19saXN0KTogQWRkZWQuCgkobW4xMDMwMF9nZXRfbGl2ZV9jYWxsZWVfc2F2ZWRfcmVncyk6IExpa2V3aXNlLgoJKG1uMTAzMDBfZ2VuX211bHRpcGxlX3N0b3JlKTogTGlrZXdpc2UuCgkoc3RvcmVfbXVsdGlwbGVfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKHN0b3JlX21vdm0pOiBVc2UgYSBNQVRDSF9QQVJBTExFTAoJdGllZCB0byBzdG9yZV9tdWx0aXBsZV9vcGVyYXRpb24oKS4KClR1ZSBEZWMgIDUgMjA6MDk6MTQgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc2V0am1wX3NldHVwKTogU2V0CgljdXJyZW50X2Z1bmN0aW9uX2hhc19ub25sb2NhbF9sYWJlbC4KCjIwMDAtMTItMDUgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZmlsZXMuYyAoc3RhY2tfaW5jbHVkZV9maWxlKTogUHVzaCB6ZXJvLWxlbmd0aCBidWZmZXJzCglpbiBjYXNlIG9mIGZhaWx1cmUuICBSZXR1cm4gdm9pZCwgYXMgd2UgZG9uJ3QgZmFpbCBhbnkgbW9yZS4KCShyZWFkX2luY2x1ZGVfZmlsZSk6IENoZWNrIGZvciBmaWxlcyB3ZSBzaG91bGRuJ3QgcmUtcmVhZC4KCURvbid0IHJldHVybiBhbiBlcnJvciBjb2RlOyBlcnJvcnMgYXJlIGltcGxpZWQgYnkgbWFya2luZyB0aGUKCWZpbGUgTkVWRVJfUkVSRUFELgoJKF9jcHBfZXhlY3V0ZV9pbmNsdWRlKTogTW92ZSB0aGUgcmVjdXJzaW9uIGFuZCBpbi1tYWNybyBjaGVja3MKCWhlcmUuICBVcGRhdGUgZm9yIHN0YWNrX2luY2x1ZGVfZmlsZSBub3QgZmFpbGluZy4KCSogY3BwbGliLmMgKGNwcF9wdXNoX2J1ZmZlcik6IEFsd2F5cyBzdWNjZWVkLCBzaW5jZQoJX2NwcF9leGVjdXRlX2luY2x1ZGUgcGVyZm9ybXMgdGhlIHJlY3Vyc2lvbiBjaGVjay4gIFRpZHkgdXAuCgkqIGNwcGxpYi5oIChjcHBfcHVzaF9idWZmZXIpOiBVcGRhdGUgcHJvdG90eXBlLgoKMjAwMC0xMi0wNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBzY2hlZC12aXMuYyAodmlzdWFsX3RibF9saW5lX2xlbmd0aCk6IE5ldyB2YXJpYWJsZS4KCShnZXRfdmlzdWFsX3RibF9sZW5ndGgpOiBTZXQgaXQuCgkodmlzdWFsaXplX3N0YWxsX2N5Y2xlcyk6IERvbid0IGxldCBzdGFsbHMgb3ZlcnJ1bgoJdmlzdWFsX3RibF9saW5lX2xlbmd0aC4KCjIwMDAtMTItMDUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGdsb2JhbC5jIChnbG9iYWxfY29uZmxpY3RzKTogQWxsb3cgZm9yIGEgUkVHX1VOVVNFRCBub3RlCgl3aXRoIGEgZGlmZmVyZW50IG1vZGUgdG8gdGhlIFJFRyBzZXQgaW4gdGhlIGluc24uCgoyMDAwLTEyLTA1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoZml4aW5jLnNoKTogUGFzcyAkV0FSTl9DRkxBR1MgaW50byBmaXhpbmMgZGlyLgoKCSogZml4aW5jL01ha2VmaWxlLmluIChGSVhJTkNfREVGUyk6IEFkZCAkKFdBUk5fQ0ZMQUdTKS4KCjIwMDAtMTItMDUgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL21rZml4aW5jLnNoKCotZ251Kik6IGFjdGl2YXRlIGZpeGluYyBmb3IgR05VL0h1cmQgYW5kCglHTlUvTGludXguCgoyMDAwLTEyLTA1ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogUnVuIGZpeGluYyBvbiBuZXRic2QuCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKG1hY2hpbmUvYW5zaS5oKTogUnVuIHRoaXMgcnVsZSBvbiBhbGwgZmlsZXMsCgl0byBjb3BlIHdpdGggYWxpYXNlZCBjb3BpZXMuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAwLTEyLTA1ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHNjaGVkLXZpcy5jOiBHdWFyZCB3aXRoICNpZmRlZiBJTlNOX1NDSEVEVUxJTkcuCgkqIHNjaGVkLXJnbi5jOiBMaWtld2lzZS4KCShyZ25fcHJpbnRfaW5zbik6IEZpeCBvdXRwdXQuCgoyMDAwLTEyLTA1ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9NYWtlZmlsZS4qOiBtYWtlIHRoZXNlIG1vcmUgY29uc2lzdGVudAoJKiBmaXhpbmMvbWtmaXhpbmNsLnNoOiBlbmFibGUgQmVPUyBmaXhpbmNsdWRlcwoKMjAwMC0xMi0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHN0bXQuYyAod2Fybl9pZl91bnVzZWRfdmFsdWUpOiBNb3ZlIHNpZGUgZWZmZWN0cyB0ZXN0IGVhcmxpZXIuCgoyMDAwLTEyLTA1ICBBbGFuIE1vZHJhIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBiYi1yZW9yZGVyLmMgKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogRG8gY2hlY2sgZm9yIEVIIGVkZ2VzIGV2ZW4KCXdoZW4gdXNpbmcgc2psai4KCjIwMDAtMTItMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmbG93LmMgKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogT25seSBmb3JjZSBzdGFjayBwb2ludGVyCglsaXZlIGJlZm9yZSByZWxvYWQuICBGb3JjZSBwaWMgcmVnaXN0ZXIgbGl2ZSBiZWZvcmUgcmVsb2FkLgoJKGluc25fZGVhZF9wKTogRG9uJ3QgcHJvdGVjdCBwaWMgcmVmZXJlbmNlcyBmcm9tIGRlbGV0aW9uLgoKMjAwMC0xMi0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogaW52b2tlLnRleGk6IEFkZCBzdXBwb3J0IGZvciB1c2luZyB0ZXhpMnBvZC5wbC4gIERvbid0IHVzZQoJQG11bHRpdGFibGUuCgoyMDAwLTEyLTA0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBUZXN0ICdpbnNuX2ZsYWdzJyBub3QKCSd0dW5lX2ZsYWdzJyBmb3IgWFNjYWxlIG5hdHVyZS4KCVJlbW92ZSBzcHVyaW91cyB0ZXN0IG9mIEhBUkRfRkxPQVQgYW5kIFhTY2FsZSBmbGFncy4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kICh1bXVsc2lkaTNhZGRkaSk6IFJlc3RvcmUgIj0mciIgcmVnaXN0ZXIKCWNvbnRyYWludCwgYWNjaWRlbnRhbGx5IGNoYW5nZWQgZHVyaW5nIFhTY2FsZSBjb250cmlidXRpb24uCgoJKiBjb25maWcvYXJtL2xpYjFmdW5jcy5hc20gKGludGVyd29ya19jYWxsX3ZpYV8sIGNhbGxfdmlhXyk6IERvCglub3QgY3JlYXRlIHRoZXNlIGZ1bmN0aW9ucyBpZiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBkb2VzIG5vdAoJc3VwcG9ydCBUaHVtYiBpbnN0cnVjdGlvbnMuCgoyMDAwLTEyLTA0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBPTkVXUzogTmV3IGZpbGUgd2l0aCB0aGUgY3VycmVudCBjb250ZW50cyBvZiBORVdTIHVwIHRvIEVHQ1MKCTEuMS4KCSogTkVXUzogR2VuZXJhdGUgYXV0b21hdGljYWxseSBmcm9tIG9ubGluZSByZWxlYXNlIG5vdGVzIGZyb20gRUdDUwoJMS4wIHRvIEdDQyAyLjk1LjIsIHVzaW5nIC4uL2NvbnRyaWIvZ2VubmV3cy4KCjIwMDAtMTItMDQgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogdHJhZGNpZi55OiBNb3ZlIGxleHB0ciB0byB0b3Agb2YgZmlsZS4gIEFkZCBydWxlIHRvIGhhbmRsZQoJYXNzZXJ0aW9ucyBpbiBjb25kaXRpb25hbCBleHByZXNzaW9ucy4KCSogdHJhZGNwcC5jIChwYXJzZV9hbnN3ZXIpOiBBc3NlcnRpb25zIGRvIG5vdCBuZWVkIHRvIGdvIHRvCgllbmQgb2YgbGluZSBpbiBjb25kaXRpb25hbCBkaXJlY3RpdmVzLgoJKHBhcnNlX2Fzc2VydGlvbik6IEdldCBmaXJzdCBjaGFyYWN0ZXIgb2YgaWRlbnRpZmllcnMgY29ycmVjdC4KCSh0ZXN0X2Fzc2VydGlvbik6IE5ldyBmdW5jdGlvbi4KCSogdHJhZGNwcC5oICh0ZXN0X2Fzc2VydGlvbik6IE5ldyBwcm90b3R5cGUuCgoyMDAwLTEyLTAxICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIGNvbmZpZy5nY2M6IEZpeCB0eXBvIGZvciBVbml4V2FyZSA3LgoKMjAwMC0xMi0wMyAgUGhpbCBFZHdhcmRzICA8cG1lQHNvdXJjZXMucmVkaGF0LmNvbT4KCgkqIGludm9rZS50ZXhpOiAgUmVwbGFjZSBgcGVkd2FybnMnIHdpdGggY2xlYXJlciB0ZXh0LgoKMjAwMC0xMi0wNCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuKihjbGVhbik6ICBkb24ndCBjbGVhbiBhdXRvZ2VuZXJhdGVkIGZpbGVzLgoJKG1haW5haW5lci1jbGVhbik6IGNsZWFuIGF1dG9nZW5lcmF0ZWQgZmlsZXMKCjIwMDAtMTItMDQgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogbWQudGV4aTogQWRkIG92ZXJ2aWV3LCBjbGFyaWZ5IG1hdGNoX2R1cCBhbmQgZGVmaW5lX2V4cGFuZC4KCjIwMDAtMTItMDQgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogVGFyZ2V0LXNwZWNpZmljIGJ1aWx0aW5zIHByaW50CgludW1iZXJzLCBub3QgbmFtZXMuCgoyMDAwLTEyLTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKGludF9tb2RlX2Zvcl9tb2RlKTogSGFuZGxlIE1PREVfVkVDVE9SX0lOVCwKCU1PREVfVkVDVE9SX0ZMT0FULgoKCSogZGlhZ25vc3RpYy5jIChyZXBvcnRfcHJvYmxlbWF0aWNfbW9kdWxlKTogcy9mdW5jdGlvbi9tb2R1bGUvLgoKCSogYy1sZXguaDogUmVtb3ZlIGRlY2wgZm9yIGNoZWNrX25ld2xpbmUuCgoyMDAwLTEyLTA0ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBSRUFETUUuQVBPTExPOiBSZW1vdmUgb2Jzb2xldGUgZmlsZS4KCjIwMDAtMTItMDQgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW50ZXJuYWxzLnRleGk6IE5ldyBmaWxlLgoKMjAwMC0xMi0wNCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBmaWxlcy5jIChjcHBfbWFrZV9zeXN0ZW1faGVhZGVyKTogVGFrZSAyIGJvb2xlYW5zLAoJYW5kIG9wZXJhdGUgb24gY3VycmVudCBidWZmZXIuCgkoY3BwX3JlYWRfZmlsZSk6IFJlbmFtZSBfY3BwX3JlYWRfZmlsZS4KCSogY3BwbGliLmMgKGRvX2xpbmUsIGRvX3ByYWdtYV9zeXN0ZW1faGVhZGVyKTogVXBkYXRlIGNhbGxzIHRvCgljcHBfbWFrZV9zeXN0ZW1faGVhZGVyLgoJKiBmaXgtaGVhZGVyLmM6IFNpbWlsYXJseS4KCSogY3BwaGFzaC5oIChfY3BwX3JlYWRfZmlsZSk6IE1vdmUgZnJvbS4uLgoJKiBjcHBsaWIuaDogLi4uIGhlcmUuCgkqIGNwcGluaXQuYyAoZG9faW5jbHVkZXMsIGNwcF9zdGFydF9yZWFkKTogVXBkYXRlIGFwcHJvcHJpYXRlbHkuCgoyMDAwLTEyLTAzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJzcG4sIGV4cGFuZF9idWlsdGluX3N0cmNzcG4pOgoJSGFuZGxlIGFub3RoZXIgdHJhbnNmb3JtYXRpb24uCgoyMDAwLTEyLTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYzogQWRkIHN1cHBvcnQgZm9yIFN0cm9uZ0FSTSB0YXJnZXRzLgoJKiBjb25maWcvYXJtL3Qtc3Ryb25nYXJtLWVsZjogTmV3IGZpbGUuCgkqIGNvbmZpZy9hcm0vdC1zdHJvbmdhcm0tY29mZjogTmV3IGZpbGUuCgkqIGNvbmZpZy9hcm0vdC1zdHJvbmdhcm0tcGU6IE5ldyBmaWxlLgoJKiBjb25maWcvYXJtL3N0cm9uZ2FybS1wZS5oOiBOZXcgZmlsZS4KCjIwMDAtMTItMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBORVdTOiBNZW50aW9uIFhTY2FsZSBoYXMgYmVlbiBhZGRlZC4KCSogY29uZmlnLmdjYzogQWRkIHN1cHBvcnQgZm9yIFhTY2FsZSB0YXJnZXRzLgoJKiBjb25maWcvYXJtL2FybS5oOiBBZGQgc3VwcG9ydCBmb3IgWFNjYWxlIHByb2Nlc3Nvci4KCSogY29uZmlnL2FybS9hcm0uYzogQWRkIHN1cHBvcnQgZm9yIFhTY2FsZSBwcm9jZXNzb3IuCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBBZGQgc3VwcG9ydCBmb3IgWFNjYWxlIHByb2Nlc3Nvci4KCSogY29uZmlnL2FybS90LXhzY2FsZS1lbGY6IE5ldyBmaWxlLgoJKiBjb25maWcvYXJtL3QteHNjYWxlLWNvZmY6IE5ldyBmaWxlLgoJKiBjb25maWcvYXJtL3hzY2FsZS1lbGYuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9hcm0veHNjYWxlLWNvZmYuaDogTmV3IGZpbGUuCgoyMDAwLTEyLTAzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYmItcmVvcmRlci5jIChyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IERvbid0IGNoZWNrIGZvciBFSCBlZGdlcwoJdW5sZXNzIGV4Y2VwdGlvbiBoYW5kbGluZyBpcyBlbmFibGVkLCBhbmQgaWYgbm90IHVzaW5nIHNqbGouCgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zZXRqbXBfc2V0dXApOiBOZXcuCgkoZXhwYW5kX2J1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogTmV3LgoJKGV4cGFuZF9idWlsdGluX3NldGptcCk6IFNwbGl0IG91dCBfc2V0dXAgYW5kIF9yZWNlaXZlciBmdW5jdGlvbnMuCglNb3ZlIGFyZ3VtZW50IHBhcnNpbmcgaW4gZnJvbSAuLi4KCShleHBhbmRfYnVpbHRpbik6IC4uLiBoZXJlLgoJKiBleGNlcHQuYyAocmVjZWl2ZV9leGNlcHRpb25fbGFiZWwpOiBCcmFuY2ggYXJvdW5kIHJlY2VpdmVyCgl1bmxlc3MgbmV3LXN0eWxlIGV4Y2VwdGlvbnMuICBDYWxsIGV4cGFuZF9idWlsdGluX3NldGptcF9yZWNlaXZlci4KCShzdGFydF9keW5hbWljX2hhbmRsZXIpOiBDYWxsIGV4cGFuZF9idWlsdGluX3NldGptcF9zZXR1cC4KCSogZXhwci5oOiBVcGRhdGUgYnVpbHRpbiBzZXRqbXAgZGVjbHMuCgoyMDAwLTEyLTAzICBCcnVjZSBLb3JiICA8YmtvcmJAZ2NjLm9yZz4KCgkqIGZpeGluYy9ta2ZpeGluYy5zaChidWlsZCBtYWNoaW5lKTogU29tZXRpbWVzLCB0aGVyZSBpcyBubyBjYW5vbmljYWwKCWJ1aWxkIG1hY2hpbmUgbmFtZS4gIERlZmF1bHQgdG8gdGhlIHRhcmdldC4KCjIwMDAtMTItMDMgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIE1ha2VmaWxlLmluOiB1c2UgJChidWlsZF9jYW5vbmljYWwpLCBub3QgJChjYW5vbmljYWxfYnVpbGQpLgoKMjAwMC0xMi0wMyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBzY2hlZC1yZ24uby4KCShzY2hlZC1yZ24ubyk6IE5ldyBydWxlLiAgKiBoYWlmYS1zY2hlZC5jIChzY2hlZF92ZXJib3NlKTogTm8KCWxvbmdlciBzdGF0aWMuCgkoSU5TTl9QUklPUklUWSwgSU5TTl9DT1NULCBJTlNOX1VOSVQsIElOU05fUkVHX1dFSUdIVCwKCUlOU05fQkxPQ0tBR0UsIFVOSVRfQklUUywgQkxPQ0tBR0VfTUFTSywgRU5DT0RFX0JMT0NLQUdFLAoJVU5JVF9CTE9DS0VELCBCTE9DS0FHRV9SQU5HRSwgTUlOX0JMT0NLQUdFX0NPU1QsCglNQVhfQkxPQ0tBR0VfQ09TVCk6IE1vdmUgdG8gc2NoZWQtaW50LmguCgkoTUFYX1JHTl9CTE9DS1MsIE1BWF9SR05fSU5TTlMsIElOU05fUkVGX0NPVU5ULCBGRURfQllfU1BFQ19MT0FELAoJSVNfTE9BRF9JTlNOLCBzdHJ1Y3QgaGFpZmFfZWRnZSwgZWRnZV90YWJsZSwgTkVYVF9JTiwgTkVYVF9PVVQsCglGUk9NX0JMT0NLLCBUT19CTE9DSywgbnJfZWRnZXMsIGluX2VkZ2VzLCBvdXRfZWRnZXMsIElOX0VER0VTLAoJT1VUX0VER0VTLCBlZGdlbHN0LCBzdHJ1Y3QgcmVnaW9uLCBucl9yZWdpb25zLCByZ25fdGFibGUsCglyZ25fYmJfdGFibGUsIGJsb2NrX3RvX2JiLCBjb250YWluaW5nX3JnbiwgUkdOX05SX0JMT0NLUywKCVJHTl9CTE9DS1MsIEJMT0NLX1RPX0JCLCBCQl9UT19CTE9DSywgQ09OVEFJTklOR19SR04sCglkZWJ1Z19yZWdpb25zLCBmaW5kX3NpbmdsZV9ibG9ja19yZWdpb24sIGZpbmRfcmducywgdG9vX2xhcmdlLAoJaW5pdF9yZWdpb25zLCBjdXJyZW50X25yX2Jsb2NrcywgY3VycmVudF9ibG9ja3MsIGJpdHNldCwgYml0bHN0LAoJYml0bHN0X3RhYmxlX2xhc3QsIGJpdGxzdF90YWJsZV9zaXplLCBiaXRsc3RfdGFibGUsIGJpdHNldF9tZW1iZXIsCglleHRyYWN0X2JpdGxzdCwgYmJsc3QsIHN0cnVjdCBjYW5kaWRhdGUsIGNhbmRpZGF0ZV90YWJsZSwKCWJibHN0X3RhYmxlLCBiYmxzdF9zaXplLCBiYmxzdF9sYXN0LCBJU19WQUxJRCwgSVNfU1BFQ1VMQVRJVkUsCglTUkNfUFJPQiwgdGFyZ2V0X2JiLCBzcGxpdF9lZGdlcywgY29tcHV0ZV90cmdfaW5mbywKCWRlYnVnX2NhbmRpZGF0ZSwgZGVidWdfY2FuZGlkYXRlcywgYmJzZXQsIGJic2V0X3NpemUsIGRvbSwKCUlTX1JHTl9FTlRSWSwgSVNfRE9NSU5BVEVELCBwcm9iLCBHRVRfU1JDX1BST0IsIGVkZ2VzZXQsCglyZ25fbnJfZWRnZXMsIHJnbl9lZGdlcywgZWRnZXNldF9zaXplLCBlZGdlc2V0X2JpdHNpemUsCglFREdFX1RPX0JJVCwgZWRnZV90b19iaXQsIHBvdF9zcGxpdCwgYW5jZXN0b3JfZWRnZXMsCgljb21wdXRlX2RvbV9wcm9iX3BzLCBBQlNfVkFMVUUsIElOU05fUFJPQkFCSUxJVFksCglJU19TUEVDVUxBVElWRV9JTlNOLCBJTlNOX0JCLCBNSU5fRElGRl9QUklPUklUWSwgTUlOX1BST0JBQklMSVRZLAoJTUlOX1BST0JfRElGRiwgY2hlY2tfbGl2ZV8xLCB1cGRhdGVfbGl2ZV8xLCBjaGVja19saXZlLAoJdXBkYXRlX2xpdmUsIHNldF9zcGVjX2ZlZCwgaXNfcGZyZWUsIGZpbmRfY29uZGl0aW9uYWxfcHJvdGVjdGlvbiwKCWlzX2NvbmRpdGlvbmFsbHlfcHJvdGVjdGVkLCBtYXlfdHJhcF9leHAsIGhhaWZhX2NsYXNzaWZ5X2luc24sCglpc19wcmlza3ksIGlzX2V4Y2VwdGlvbl9mcmVlLCBhZGRfYnJhbmNoX2RlcGVuZGVuY2VzLAoJcHJvcGFnYXRlX2RlcHMsIGNvbXB1dGVfYmxvY2tfYmFja3dhcmRfZGVwZW5kZW5jZXMsCglkZWJ1Z19kZXBlbmRlbmNpZXMsIGlzX2NmZ19ub25yZWd1bGFyLCBidWlsZF9jb250cm9sX2Zsb3csCgluZXdfZWRnZSwgYmJfZGVwcywgQklUU0VUX1VOSU9OLCBCSVRTRVRfSU5URVIsIEJJVFNFVF9ESUZGRVIsCglCSVRTRVRfSU5WRVJULCBCSVRTRVRfQURELCBCSVRTRVRfUkVNT1ZFLCBkZWJ1Z19yZWdpb25zLAoJVVBEQVRFX0xPT1BfUkVMQVRJT05TLCBJTlNOX1RSQVBfQ0xBU1MsIFdPUlNUX0NMQVNTLCBJU19SRUFDSEFCTEUsCglDT05TVF9CQVNFRF9BRERSRVNTX1AsIGZyZWVfcGVuZGluZ19saXN0cywgc2NoZWRfdGFyZ2V0X25faW5zbnMsCgl0YXJnZXRfbl9pbnNucywgc2NoZWRfbl9pbnNucywgaW5pdF9yZWFkeV9saXN0LCBkZWF0aHNfaW5fcmVnaW9uLAoJY2FuX3NjaGVkdWxlX3JlYWR5X3AsIG5ld19yZWFkeSwgc2NoZWR1bGVfbW9yZV9wLCByZ25fcHJpbnRfaW5zbiwKCXJnbl9yYW5rLCByZWdpb25fc2NoZWRfaW5mbyk6IE1vdmUgdG8gc2NoZWQtcmduLmMuCgkoZGVidWdfcmVnX3ZlY3Rvcik6IERlbGV0ZSB1c2VsZXNzIGZ1bmN0aW9uLgoJKGdldF9iYl9oZWFkX3RhaWwpOiBMaWtld2lzZS4KCShpbnNuX2lzc3VlX2RlbGF5LCBpbnNuX2Nvc3QsIHJlYWR5X2FkZCwgZ2V0X2Jsb2NrX2hlYWRfdGFpbCwKCW5vX3JlYWxfaW5zbnNfcCwgcm1fbGluZV9ub3Rlcywgc2F2ZV9saW5lX25vdGVzLAoJcmVzdG9yZV9saW5lX25vdGVzLCBybV9yZWR1bmRhbnRfbGluZV9ub3Rlcywgc2NoZWRfaW5pdCk6IE5vCglsb25nZXIgc3RhdGljLgoJKHJtX2xpbmVfbm90ZXMsIHNhdmVfbGluZV9ub3RlcywgcmVzdG9yZV9saW5lX25vdGVzLAoJc2NoZWR1bGVfYmxvY2ssIHNldF9wcmlvcml0aWVzKTogQ2hhbmdlIGFyZ3VtZW50IHRvIGJlIGEgcmVhbAoJYmFzaWMgYmxvY2ssIG5vdCBvbmUgb2YgaGFpZmEncyAiYmIicy4gIEFsbCBjYWxsZXJzIGNoYW5nZWQKCShybV9vdGhlcl9ub3Rlcyk6IEluaXRpYWxpemUgbm90ZV9saXN0IGhlcmUsIG5vdCBpbgoJc2NoZWR1bGVfcmVnaW9uLgoJKHNjaGVkX2ZpbmlzaCk6IE5ldyBmdW5jdGlvbiwgY2FsbGVkIGZyb20gc2NoZWR1bGVfaW5zbi4gICogKgoJc2NoZWQtaW50LmggKElOU05fUFJJT1JJVFksIElOU05fQ09TVCwgSU5TTl9VTklULCBJTlNOX1JFR19XRUlHSFQsCglJTlNOX0JMT0NLQUdFLCBVTklUX0JJVFMsIEJMT0NLQUdFX01BU0ssIEVOQ09ERV9CTE9DS0FHRSwKCVVOSVRfQkxPQ0tFRCwgQkxPQ0tBR0VfUkFOR0UsIE1JTl9CTE9DS0FHRV9DT1NULAoJTUFYX0JMT0NLQUdFX0NPU1QpOiBNb3ZlZCBoZXJlIGZyb20gaGFpZmEtc2NoZWQuYy4KCShnZXRfYmxvY2tfaGVhZF90YWlsLCBub19yZWFsX2luc25zX3AsIHJtX2xpbmVfbm90ZXMsCglzYXZlX2xpbmVfbm90ZXMsIHJlc3RvcmVfbGluZV9ub3Rlcywgcm1fcmVkdW5kYW50X2xpbmVfbm90ZXMsCglybV9vdGhlcl9ub3RlcywgaW5zbl9pc3N1ZV9kZWxheSwgc2V0X3ByaW9yaXRpZXMsIHNjaGVkdWxlX2Jsb2NrLAoJc2NoZWRfaW5pdCwgc2NoZWRfZmluaXNoLCByZWFkeV9hZGQsIGluc25fY29zdCk6IERlY2xhcmUuCgoyMDAwLTEyLTAzICBMYXVyeW5hcyBCaXZlaW5pcyAgPGxhdXJhc0Bzb2Z0aG9tZS5uZXQ+CgkgICAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbjogcGFzcyAkKGJ1aWxkX2Nhbm9uaWNhbCkgdG8gbWtmaXhpbmMuc2guCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogYWNjZXB0IGJ1aWxkIHN5c3RlbSBuYW1lIGFzIGFuIGFyZ3VtZW50LgoJVXNlIGl0IGZvciBjaG9vc2luZyB0aGUgZml4IGJ1aWxkIG1ldGhvZC4gIFVzZSB0aGUgdGFyZ2V0IGZvcgoJc2VsZWN0aW5nIHNwZWNpYWwgZml4IHJ1bGVzLgoKMjAwMC0xMi0wMyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBzY2hlZC1kZXBzLm8uCgkoc2NoZWQtZGVwcy5vKTogTmV3IHJ1bGUuCgkqIGhhaWZhLXNjaGVkLmMgKHN0cnVjdCBkZXBzLCBzdHJ1Y3QgaGFpZmFfaW5zbl9kYXRhKTogTW92ZWQgdG8KCXNjaGVkLWludC5oLgoJKElOU05fREVQRU5ELCBJTlNOX0xVSUQsIENBTlRfTU9WRSwgSU5TTl9ERVBfQ09VTlQpOiBNYWNyb3MgbW92ZWQgdG8KCXNjaGVkLWludC5oLgoJKFNJWkVfRk9SX01PREUpOiBEZWxldGUgdW51c2VkIG1hY3JvLgoJKHJlZ19rbm93bl9lcXVpdl9wLCByZWdfa25vd25fdmFsdWUsIHJlZ19wZW5kaW5nX2Nsb2JiZXJzLAoJcmVnX3BlbmRpbmdfc2V0cywgcmVnX3BlbmRpbmdfc2V0c19hbGwsIHRydWVfZGVwZW5kZW5jeV9jYWNoZSwKCWFudGlfZGVwZW5kZW5jeV9jYWNoZSwgb3V0cHV0X2RlcGVuZGVuY3lfY2FjaGUsCglmb3J3YXJkX2RlcGVuZGVuY3lfY2FjaGUpOiBWYXJpYWJsZXMgbW92ZWQgdG8gc2NoZWQtZGVwcy5jLgoJKGFkZF9kZXBlbmRlbmNlLCByZW1vdmVfZGVwZW5kZW5jZSwgZmluZF9pbnNuX2xpc3QsCglmaW5kX2luc25fbWVtX2xpc3QsIGFkZF9pbnNuX21lbV9kZXBlbmRlbmNlLCBmbHVzaF9wZW5kaW5nX2xpc3RzLAoJc2NoZWRfYW5hbHl6ZV9pbnNuLCBzY2hlZF9hbmFseXplXzEsIHNjaGVkX2FuYWx5emVfMiwKCXNjaGVkX2FuYWx5emUsIGdyb3VwX2xlYWRlciwgY29tcHV0ZV9mb3J3YXJkX2RlcGVuZGVuY2VzLAoJaW5pdF9kZXBzLCBmcmVlX2RlcHMsIGluaXRfZGVwZW5kZW5jeV9jYWNoZXMsIGZyZWVfZGVwZW5kZW5jeV9jYWNoZXMpOgoJRnVuY3Rpb25zIG1vdmVkIHRvIHNjaGVkLWRlcHMuYy4KCShzY2hlZHVsZV9yZWdpb24pOiBDYWxsIGluaXRfZGVwc19nbG9iYWwgYW5kIGZpbmlzaF9kZXBzX2dsb2JhbAoJaW5zdGVhZCBvZiBkaXJlY3RseSBtYW5pcHVsYXRpbmcgZGVwZW5kZW5jeSBkYXRhIHN0cnVjdHVyZXMuCgkqIHNjaGVkLWRlcHMuYzogTmV3IGZpbGUuCgkoaW5pdF9kZXBzX2dsb2JhbCwgZmluaXNoX2RlcHNfZ2xvYmFsKTogTmV3IGZ1bmN0aW9ucy4KCSogc2NoZWQtaW50LmggKHN0cnVjdCBoYWlmYV9pbnNuX2RhdGEsIHN0cnVjdCBkZXBzKTogTW92ZWQgaGVyZSBmcm9tCgloYWlmYS1zY2hlZC5jLgoJKGhfaV9kKTogRGVjbGFyZS4KCShJTlNOX0RFUEVORCwgSU5TTl9MVUlELCBDQU5UX01PVkUsIElOU05fREVQX0NPVU5UKTogTWFjcm9zIG1vdmVkIGhlcmUKCWZyb20gaGFpZmEtc2NoZWQuYy4KCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkIHNjaGVkLXZpcy5vLgoJKHNjaGVkLXZpcy5vKTogTmV3IHJ1bGUuCgkqIGhhaWZhLXNjaGVkLmMgKGdldF91bml0X2xhc3RfaW5zbik6IE5ldyBmdW5jdGlvbi4KCShzY2hlZF9kdW1wLCBpbnNuX3VuaXQsIGFjdHVhbF9oYXphcmRfdGhpc19pbnN0YW5jZSk6IE5vIGxvbmdlcgoJc3RhdGljLgoJKHNjaGVkdWxlX2Jsb2NrKTogQ2FsbCB2aXN1YWxpemVfYWxsb2MgYW5kIHZpc3VhbGl6ZV9mcmVlLiAgRGVsZXRlCglzcHVyaW91cyByZXR1cm4gc3RhdGVtZW50LgoJKGluaXRfdGFyZ2V0X3VuaXRzLCBpbnNuX3ByaW50X3VuaXRzLCBnZXRfdmlzdWFsX3RibF9sZW5ndGgsCglpbml0X2Jsb2NrX3Zpc3VhbGl6YXRpb24sIHByaW50X2Jsb2NrX3Zpc3VhbGl6YXRpb24sIHNhZmVfY29uY2F0LAoJdmlzdWFsaXplX3NjaGVkdWxlZF9pbm5zLCB2aXN1YWxpemVfbm9fdW5pdCwgdmlzdWFsaXplX3N0YWxsX2N5Y2xlcywKCXByaW50X2V4cCwgcHJpbnRfdmFsdWUsIHByaW50X3BhdHRlcm4sIHByaW50X2luc24sIHRhcmdldF91bml0cywKCU1BWF9WSVNVQUxfTElORVMsIElOU05fTEVOLCBuX3Zpc3VhbF9saW5lcywgdmlzdWFsX3RibCwKCW5fdmlzX25vX3VuaXQsIHZpc19ub191bml0KTogTW92ZSBzY2hlZHVsaW5nIHZpc3VhbGl6YXRpb24KCWZ1bmN0aW9ucy92YXJpYWJsZXMuLi4KCSogc2NoZWQtdmlzLmM6IC4uLmhlcmUuICBOZXcgZmlsZS4KCSh2aXN1YWxpemVfYWxsb2MsIHZpc3VhbGl6ZV9mcmVlKTogTmV3IGZ1bmN0aW9ucy4KCSh2aXN1YWxpemVfc2NoZWR1bGVkX2luc25zLCB2aXN1YWxpemVfc3RhbGxfY3ljbGVzLAoJcHJpbnRfYmxvY2tfdmlzdWFsaXphdGlvbik6IExvc2UgYmFzaWMgYmxvY2sgYXJndW1lbnQuICBBbGwgY2FsbGVycwoJY2hhbmdlZC4KCSh2aXN1YWxpemVfc2NoZWR1bGVkX2luc25zKTogVXNlIG5ldyBmdW5jdGlvbiBnZXRfdW5pdF9sYXN0X2luc24uCgkqIHNjaGVkLWludC5oIChjdXJyZW50X3NjaGVkX2luZm8sIHNjaGVkX2R1bXApOiBEZWNsYXJlLgoJKGluaXRfdGFyZ2V0X3VuaXRzLCBpbnNuX3ByaW50X3VuaXRzLCBpbml0X2Jsb2NrX3Zpc3VhbGl6YXRpb24sCglwcmludF9ibG9ja192aXN1YWxpemF0aW9uLCB2aXN1YWxpemVfc2NoZWR1bGVkX2lubnMsCgl2aXN1YWxpemVfbm9fdW5pdCwgdmlzdWFsaXplX3N0YWxsX2N5Y2xlcywgdmlzdWFsaXplX2FsbG9jLAoJdmlzdWFsaXplX2ZyZWUpOiBEZWNsYXJlIGZ1bmN0aW9ucy4KCgkqIHNjaGVkLWludC5oOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKGhhaWZhLXNjaGVkLm8pOiBEZXBlbmQgb24gaXQuCgkqIGhhaWZhLXNjaGVkLmM6IEluY2x1ZGUgaXQuCgkobm9fcmVhbF9pbnNuc19wKTogTmV3IGZ1bmN0aW9uLgoJKGN1cnJlbnRfc2NoZWRfaW5mbyk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoX19pbmxpbmUsIEhBSUZBX0lOTElORSk6IE1vdmVkIHRvIHNjaGVkLWludC5oLgoJKGdldF9ibG9ja19oZWFkX3RhaWwpOiBNaW5vciBjbGVhbnVwLgoJKGluaXRfcmVhZHlfbGlzdCwgY2FuX3NjaGVkdWxlX3JlYWR5X3AsIG5ld19yZWFkeSwgc2NoZWR1bGVfbW9yZV9wLAoJcmduX3ByaW50X2luc24sIHJnbl9yYW5rKTogTmV3IGZ1bmN0aW9ucywgYnJva2VuIG91dCBvZgoJcmFua19mb3Jfc2NoZWR1bGUsIHNjaGVkdWxlX2luc24gYW5kIHNjaGVkdWxlX2Jsb2NrLCB3aGVyZSB0aGV5CglhcmUgbm93IGNhbGxlZCB0aHJvdWdoIGZ1bmN0aW9uIHBvaW50ZXJzIGluIGN1cnJlbnRfc2NoZWRfaW5mby4KCShxdWV1ZV9pbnNuLCBzY2hlZHVsZV9pbnNuLCBxdWV1ZV90b19yZWFkeSwgZGVidWdfcmVhZHlfbGlzdCwKCXByaW50X2luc24pOiBUbyBkaXNwbGF5IHVpZCBhbmQgYmxvY2sgbnVtYmVyLCBjYWxsIHRoZSBwcmludF9pbnNuCglmdW5jdGlvbiBwb2ludGVyIGluIGN1cnJlbnRfc2NoZWR1bGVfaW5mby4KCShyZWdpb25fc2NoZWRfaW5mbyk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoc2NoZWRfdGFyZ2V0X25faW5zbnMsIHNjaGVkX25faW5zbnMsIHRhcmdldF9uX2luc25zKTogTmV3IGdsb2JhbAoJdmFyaWFibGVzLCBtb3ZlZCBvdXQgb2Ygc2NoZWR1bGVfYmxvY2suCgkoc2NoZWR1bGVfYmxvY2spOiBSZXR1cm4gdm9pZC4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCglNb3ZlIHNvbWUgb2YgdGhlIHNldHVwIGNvZGUgaW50byBzY2hlZHVsZV9yZWdpb24uICBHZXQgaGVhZC90YWlsCglmcm9tIGN1cnJlbnRfc2NoZWRfaW5mbywgYW5kIHVwZGF0ZSBpdCB3aGVuIGRvbmUuCgkoc2NoZWR1bGVfcmVnaW9uKTogU2xpZ2h0bHkgcmVhcnJhbmdlZCwgc29tZSBjb2RlIG1vdmVkIGhlcmUgZnJvbQoJc2NoZWR1bGVfYmxvY2suICBDYWxsIG5vX3JlYWxfaW5zbnNfcCB0byBhdm9pZCBkb2luZyB3b3JrIGZvciBhCglibG9jayB0aGF0IGNvbnNpc3RzIG9ubHkgb2Ygbm90ZXMgYW5kIGxhYmVscy4KCShzY2hlZHVsZV9pbnNucyk6IEluaXRpYWxpemUgY3VycmVudF9zY2hlZF9pbmZvLgoKMjAwMC0xMi0wMyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBtYWNyby5jIChmdW5saWtlX2ludm9jYXRpb25fcCk6IFJlLWRpc2FibGUgbWFjcm9zIGVuYWJsZWQKCWJ5IGNvbnRleHRzIGRyb3BzIEFGVEVSIGFyZ3VtZW50IHByZS1leHBhbnNpb24sIHNvIHRoYXQgdGhleQoJcmVtYWluIGVuYWJsZWQgZHVyaW5nIGFyZ3VtZW50IHByZS1leHBhbnNpb24uCgkoX2NwcF9wb3BfY29udGV4dCk6IFVuY29uZGl0aW9uYWxseSByZS1lbmFibGUgYSBtYWNybyB3aGVuCglkcm9wcGluZyBhIGNvbnRleHQgbGV2ZWwuCgoyMDAwLTEyLTAzICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRoQHJlZGhhdC5jb20+CgoJKiBhcm0vdC1saW51eCAoTVVMVElMSUJfT1BUSU9OUyk6IENvbW1lbnQuCgkoTVVMVElMSUJfRElSTkFNRVMpOiBMaWtld2lzZS4KCShFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IExpa2V3aXNlLgoJKExJQkdDQyk6IExpa2V3aXNlLgoJKElOU1RBTExfTElCR0NDKTogTGlrZXdpc2UuCgoyMDAwLTEyLTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJjYXQsIGV4cGFuZF9idWlsdGluX3N0cm5jYXQsCglleHBhbmRfYnVpbHRpbl9zdHJzcG4sIGV4cGFuZF9idWlsdGluX3N0cmNzcG4pOiBOZXcgZnVuY3Rpb25zLgoJKGV4cGFuZF9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX1NUUkNBVCwgQlVJTFRfSU5fU1RSTkNBVCwKCUJVSUxUX0lOX1NUUlNQTiBhbmQgQlVJTFRfSU5fU1RSQ1NQTi4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fU1RSQ0FULCBCVUlMVF9JTl9TVFJOQ0FULAoJQlVJTFRfSU5fU1RSU1BOLCBCVUlMVF9JTl9TVFJDU1BOKTogTmV3IGVudHJpZXMuCgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBEZWNsYXJlIGJ1aWx0aW4KCXN0cmNhdCwgc3RybmNhdCwgc3Ryc3BuIGFuZCBzdHJjc3BuLgoJKHN0cmluZ19mdHlwZV9zdHJpbmdfY3N0cmluZyk6IFJlbmFtZWQgZnJvbSBgc3RyaW5nX2Z0eXBlX3B0cl9wdHInLgoKCSogZXh0ZW5kLnRleGkgKHN0cmNhdCwgc3RyY3Nwbiwgc3RybmNhdCwgc3Ryc3BuKTogRG9jdW1lbnQgbmV3CglidWlsdGlucy4KCjIwMDAtMTItMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cmNtcCk6IFVzZSBjb25zdCpfcnR4IHdoZW4KCWV4cGFuZGluZyBzdHJjbXAgYXQgY29tcGlsZS10aW1lLiAgQWRkIGFub3RoZXIgdHJhbnNmb3JtYXRpb24uCgkoZXhwYW5kX2J1aWx0aW5fc3RybmNtcCk6IEFkZCBtb3JlIHRyYW5zZm9ybWF0aW9ucy4gIENhbGwKCWV4cGFuZF9idWlsdGluX21lbWNtcCwgbm90IGV4cGFuZF9idWlsdGluX3N0cmNtcCwgdW5kZXIKCWFwcHJvcHJpYXRlIGNvbmRpdGlvbnMgaWYgSEFWRV9jbXBzdHJzaS4KCjIwMDAtMTItMDIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5tZCAoYW5kZGkzX2ludGVybmFsWzIzXSk6IFByZWZlciBybGRpYz8gb3ZlciBhbmRpcwoJaW5zdHJ1Y3Rpb24uCgkoY3IgbG9naWMpOiBSZWFsbHkgbWFrZSBvcGVyYW5kcyBzZXF1ZW50aWFsLgoKMjAwMC0xMi0wMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogYy1jb21tb24uYyAoY29tYmluZV9zdHJpbmdzKTogV2hlbiB0aGUgSVNPIEMgc3RhbmRhcmQgc3BlY2lmaWVzCgl0aGUgbWF4aW11bSBsZW5ndGggb2YgYSBzdHJpbmcsIGl0IGRvZXNuJ3QgaW5jbHVkZSB0aGUgdHJhaWxpbmcKCXplcm8gYnl0ZS4KCgkqIGNwcGxpYi5jIChkb19pZmRlZik6IEFkZCBjaGVja19lb2woKSBjYWxsLgoJKGRvX2lmbmRlZik6IExpa2V3aXNlLgoKMjAwMC0xMi0wMiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AcmVkaGF0LmNvbT4KCSAgICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy8qOiBnbG9iYWwgc3Vic3RpdHV0ZSAvX19NU0RPU19fL1NFUEFSQVRFX0ZJWF9QUk9DLwoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IHByZXBhcmUgdG8gdXNlIE1ha2VmaWxlLkJFT1MgZm9yICotKi1iZW9zKgoJKiBmaXhpbmMvTWFrZWZpbGUuRE9TOiBkZWZpbmUgU0VQQVJBVEVfRklYX1BST0MgZm9yIGJ1aWxkCgkqIGZpeGluYy9maXhmaXguYyh3cmFwX2ZpeCk6IGF2b2lkIHdyYXBwaW5nIGZpbGVzIHRoYXQKCXVzZSB0aGUgIl9fbmVlZF8iIGhhY2tlcnkuICBJdCBicmVha3MgdGhlbS4KCSogZml4aW5jL2ZpeGluY2wuYyhwcm9jZXNzIC0gU0VQQVJBVEVfRklYX1BST0MpOgoJU29tZXRpbWVzIG9uIERPUyBhbmQgQmVPUyB0aGUgdGVtcCBvdXRwdXQgZmlsZSBjYW5ub3QgYmUgb3BlbmVkLgoJU2tpcCB0aGUgZmlsZSBub2lzaWx5LiAgT3VnaHQgdG8gYmUgZml4ZWQgaW5zdGVhZC4KCjIwMDAtMTItMDIgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCUZyb206IDIwMDAtMTEtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGZpeGVzLmMgKGVtaXRfZ251X3R5cGUsIGZvcm1hdF93cml0ZSk6IFByb3RvdHlwZS4KCShmb3JtYXRfd3JpdGUsIGNoYXJfbWFjcm9fdXNlX2ZpeCwgY2hhcl9tYWNyb19kZWZfZml4KTogVXNlIGdjYydzCgljdXN0b20gdXBwZXJjYXNlIGN0eXBlIG1hY3Jvcy4KCSogZml4aW5jbC5jIChkb192ZXJzaW9uKTogTWFrZSBzdGF0aWMgYW5kIGFkZCBBVFRSSUJVVEVfTk9SRVRVUk4uCglVc2UgZ2NjJ3MgY3VzdG9tIHVwcGVyY2FzZSBjdHlwZSBtYWNyb3MuCgkobWFpbik6IFByb3RvdHlwZS4KCShtYWNoaW5lX21hdGNoZXMpOiBBZGQgc3RhdGljIHByb3RvdHlwZSBhbmQgY29uc3RpZnkgdmFyaWFibGUuCgkoY3JlYXRlX2ZpbGUsIHRlc3RfdGVzdCwgZWdyZXBfdGVzdCk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKHF1b3RlZF9maWxlX2V4aXN0cyk6IExpa2V3aXNlLCBhbmQgY29uc3RpZnkgcGFyYW1ldGVycy4KCShleHRyYWN0X3F1b3RlZF9maWxlcywgaW50ZXJuYWxfZml4LCBzdGFydF9maXhlciwgZml4X2FwcGxpZXMsCgl3cml0ZV9yZXBsYWNlbWVudCwgdGVzdF9mb3JfY2hhbmdlcyk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKHdyaXRlX3JlcGxhY2VtZW50LCB0ZXN0X2Zvcl9jaGFuZ2VzKTogRGVsZXRlIGV4Y2VzcyBhcmd1bWVudCB0bwoJYGNyZWF0ZV9maWxlJy4KCSogZml4dGVzdHMuYyAodGVzdCk6IE1ha2Ugc3RhdGljLgoJKiBzZXJ2ZXIuYyAobG9hZF9kYXRhLCBzaWdfaGFuZGxlciwgc2VydmVyX3NldHVwLCBmaW5kX3NoZWxsKTogQWRkCglzdGF0aWMgcHJvdG90eXBlLgoJKHNpZ19oYW5kbGVyKTogTWFyayBwYXJhbWV0ZXIgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKMjAwMC0xMi0wMiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhuYy9ta2ZpeGluYy5zaChtc2Rvc2RqZ3BwKTogcmVtb3ZlIGZyb20gZml4aW5jbHVkZXMgZXhjZXB0aW9uIGxpc3QKCShwZXIgTGF1cnluYXMgQml2ZWluaXMgIDxsYXVyYXNAc29mdGhvbWUubmV0PikKCjIwMDAtMTItMDIgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmggKEFSTV9SRUdOT19PS19GT1JfQkFTRV9QLCBUSFVNQl9SRUdOT19NT0RFX09LX0ZPUl9CQVNFX1ApOiBOZXcKCW1hY3Jvcy4KCShSRUdOT19NT0RFX09LX0ZPUl9CQVNFX1ApOiBEZWZpbmUgaW4gdGVybXMgb2YgYWJvdmUuCgkoUkVHTk9fT0tfRk9SX0ZPUl9CQVNFX1ApOiBEZWxldGUuCgkoQVJNX1JFR19PS19GT1JfQkFTRV9QLCBUSFVNQl9SRUdfTU9ERV9PS19GT1JfQkFTRV9QKTogTmV3IG1hY3JvcyBmb3IKCWJvdGggc3RyaWN0IGFuZCBub24tc3RyaWN0IHVzZXMuCgkoUkVHX01PREVfT0tfRk9SX0JBU0VfUCk6IERlZmluZSBpbiB0ZXJtcyBvZiBhYm92ZS4KCShBUk1fUkVHX09LX0ZPUl9JTkRFWF9QLCBUSFVNQl9SRUdfT0tfRk9SX0lOREVYX1ApOiBOZXcgbWFjcm9zLgoJKFJFR19PS19GT1JfSU5ERVhfUCk6IERlZmluZSBpbiB0ZXJtcyBvZiBhYm92ZS4KCShSRUdfT0tfRk9SX0JBU0VfUCk6IERlbGV0ZS4KCShSRUdfT0tfRk9SX1BSRV9QT1NUX1ApOiBEZWxldGUuCgkoQVJNX0JBU0VfUkVHSVNURVJfUlRYX1ApOiBSZW5hbWVkIGZyb20gQkFTRV9SRUdJU1RFUl9SVFhfUC4KCShBUk1fSU5ERVhfUkVHSVNURVJfUlRYX1ApOiBSZW5hbWVkIGZyb20gSU5ERVhfUkVHSVNURVJfUlRYX1AuCgkoQVJNX0dPX0lGX0xFR0lUSU1BVEVfSU5ERVgpOiBSZW5hbWVkIGZyb20gR09fSUZfTEVHSVRJTUFURV9JTkRFWC4KCShUSFVNQl9MRUdJVElNQVRFX09GRlNFVCk6IFJlbmFtZWQgZnJvbSBMRUdJVElNQVRFX09GRlNFVC4KCShBUk1fR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogQWRqdXN0IGZvciBuYW1lIGNoYW5nZXMuICBVc2UgQVJNCglzcGVjaWZpYyB2YXJpYW50cyByYXRoZXIgdGhhbiBnZW5lcmFsIG9uZXMuICBVc2UgQVJNX1JFR19PS19GT1JfQkFTRV9QCglpbiBwcmUvcG9zdCBpbmNyZW1lbnQgY2FzZXMuCgkoVEhVTUJfR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogU2ltaWxhcmx5IGZvciBUaHVtYi4KCShBUk1fTEVHSVRJTUlaRV9BRERSRVNTKTogU2ltaWxhcmx5LgoJKFRIVU1CX0xFR0lUSU1JWkVfUkVMT0FEX0FERFJFU1MpOiBTaW1pbGFybHkuCgkqIGFybS5jIChsZWdpdGltYXRlX3BpY19hZGRyZXNzKTogU2ltaWxhcmx5LgoKMjAwMC0xMi0wMiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiB0cmFkY3BwLmMgKHN0cnVjdCBhbnN3ZXIsIHBhcnNlX2Fzc2VydGlvbiwgcGFyc2VfYW5zd2VyLAoJY2Fub25pY2FsaXplX3RleHQsIGZpbmRfYW5zd2VyKTogTmV3LgoJKGRvX2Fzc2VydCwgZG9fdW5hc3NlcnQpOiBQcm92aWRlIGFwcHJvcHJpYXRlIGZ1bmN0aW9uIGJvZGllcy4KCSh1bmlvbiBoYXNodmFsKTogTmV3IG1lbWJlciBhbnN3ZXJzLgoKMjAwMC0xMS0yMyAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5tZDogRG9jdW1lbnQgVU5TUEVDIHVzYWdlLgoJKCp0YWJsZWp1bXBfcmptcCwgKnRhYmxlanVtcF9saWIsICp0YWJsZWp1bXBfZW5oLCAqdGFibGVqdW1wKToKCU1ha2Ugb3BlcmFuZCAwIGlucHV0IG9ubHksIGNsb2JiZXIgaXQuICBVc2UgVU5TUEVDLCBub3QgYSBib2d1cwoJTUVNIGZvciBwcm9ncmFtIG1lbW9yeSB3b3JkIHJlZmVyZW5jZS4gIERvIG5vdCBhZGQgdGhlIGxhYmVsIHRvCgl0aGUgdGFibGUgaW5kZXggaW4gZWFjaCBvZiB0aGUgYXNtIG91dHB1dCB0ZW1wbGF0ZXMsIGluc3RlYWQgLi4uCgkoY2FzZXNpKTogLi4uIGRvIGl0IGluIFJUTC4gIEFkanVzdCB0byBtYXRjaCB0aGUgYWJvdmUgY2hhbmdlLgoKMjAwMC0xMi0wMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjLWNvbW1vbi5jIChQVFJESUZGX1RZUEUpOiBQcm92aWRlIGRlZmF1bHQgaGVyZSwgLi4uCgkqIGMtZGVjbC5jOiAuLi4gbm90IGhlcmUuCgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZF9kdW1wKTogUmVuYW1lZCBmcm9tIGR1bXAuICBBbGwgdXNlcnMgY2hhbmdlZC4KCShvbGRfbWF4X3VpZCk6IE5ldyB2YXJpYWJsZS4KCShjb21wdXRlX2ZvcndhcmRfZGVwZW5kZW5jZXMpOiBSZW5hbWVkIGZyb20KCWNvbXB1dGVfYmxvY2tfZm9yd2FyZF9kZXBlbmRlbmNlczsgY2hhbmdlZCB0byBhY2NlcHQgYmxvY2sgaGVhZCBhbmQKCXRhaWwgaW5zdGVhZCBvZiBibG9jayBudW1iZXIuICBDYWxsZXIgY2hhbmdlZC4KCShmcmVlX2RlcHMsIGluaXRfZGVwZW5kZW5jeV9jYWNoZXMsIGZyZWVfZGVwZW5kZW5jeV9jYWNoZXMsCglpbml0X3JlZ2lvbnMsIHNjaGVkX2luaXQpOiBOZXcgZnVuY3Rpb25zLCBzcGxpdCBvdXQgZnJvbQoJc2NoZWR1bGVfaW5zbnMgYW5kIGNvbXB1dGVfYmxvY2tfYmFja3dhcmRfZGVwZW5kZW5jZXMuCgoyMDAwLTEyLTAyICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jIChwYXJzZV9udW1iZXIpOiBVcGRhdGUgZGlhZ25vc3RpYyB0ZXN0LgoKMjAwMC0xMi0wMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiByZWxvYWQxLmMgKGZyZWVfZm9yX3ZhbHVlX3ApOiBOZXcgZnVuY3Rpb24sIGZyb250ZW5kIHRvCglyZWxvYWRfcmVnX2ZyZWVfZm9yX3ZhbHVlX3AuICBBbGwgY2FsbGVycyBvZiB0aGUgbGF0dGVyIG5vdyBjYWxsCgl0aGlzIGZ1bmN0aW9uIHdpdGggYW4gYWRkaXRpb25hbCBtb2RlIGFyZ3VtZW50LgoKMjAwMC0xMi0wMiAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogaW5zdGFsbC50ZXhpIChDb25maWd1cmF0aW9ucyk6IFJlbW92ZSBvYnNvbGV0ZSBkb2N1bWVudGF0aW9uIGZvcgoJaHBwYSotKi0qLgoKMjAwMC0xMi0wMiAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogaW5zdGFsbC50ZXhpIChJbnN0YWxsYXRpb24pOiBSZW1vdmUgb2Jzb2xldGUgZGVzY3JpcHRpb24gZm9yCglsaWJzdGRjKysgd2hpY2ggaXMgbm93IGFuIGludGVncmFsIHBhcnQgb2YgR0NDLgoKMjAwMC0xMi0wMSAgSmltIEJsYW5keSAgPGppbWJAcmVkaGF0LmNvbT4KCgkqIGRieG91dC5jIChkYnhvdXRfcGFybXMpOiBDb3JyZWN0bHkgZGVzY3JpYmUgcGFyYW1ldGVycyBwYXNzZWQgYnkKCWludmlzaWJsZSByZWZlcmVuY2UgaW4gcmVnaXN0ZXJzLCBidXQgdGhlbiBzcGlsbGVkIHRvIHRoZSBzdGFjay4KCVJlbW92ZSBjb2RlIHRvIGVtaXQgYSBzZWNvbmQgc3RhYiBmb3Igc3VjaCBwYXJhbWV0ZXJzOyBpdCBhdHRlbXB0cwoJdG8gZGVzY3JpYmUgdGhlIHZhbHVlJ3MgbG9jYXRpb24gYnkgaW50cm9kdWNpbmcgYSBzeW50aGV0aWMgQysrCglgcmVmZXJlbmNlJyB0eXBlLCBhbmQgdGhlbiBzYXlpbmcgdGhlIHN0YWNrIHNsb3QgaGFzIHRoYXQKCXJlZmVyZW5jZSB0eXBlLiAgVGhpcyBsb3NlcyB0eXBlIGluZm9ybWF0aW9uIChicmVha2luZyBHREIncwoJYHB0eXBlJyBjb21tYW5kLCBhbW9uZyBvdGhlciB0aGluZ3MpIGp1c3QgdG8gZGVzY3JpYmUgYSBsb2NhdGlvbgoJd2hpY2ggc3RhYnMgY2FuIHJlcHJlc2VudCBjb3JyZWN0bHkgaW4gb3RoZXIgd2F5cy4KCjIwMDAtMTItMDEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZmluYWwuYyAob3V0cHV0X2FkZHJfY29uc3QpIDxQTFVTPjogRG9uJ3QgYXNzdW1lIGF0IGxlYXN0IG9uZQoJb3BlcmFuZCBpcyBhIENPTlNUX0lOVC4KCgkqIGNvbmZpZy9zaC9zaC5jIChyZWdfY2xhc3NfZnJvbV9sZXR0ZXIpOiBBc3NpZ24gYGsnIHRvIFNJQkNBTExfUkVHUy4KCShtYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6IFNwbGl0IGFsbCBpbnNucy4KCSogY29uZmlnL3NoL3NoLmggKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogQ29tcHV0ZQoJcmVnX2NsYXNzX2NvbnRlbnRzW1NJQkNBTExfUkVHU10uCgkocmVnX2NsYXNzLCBSRUdfQ0xBU1NfTkFNRVMsIFJFR19DTEFTU19DT05URU5UUyk6IEFkZCBTSUJDQUxMX1JFR1MuCgkqIGNvbmZpZy9zaC9zaC5tZCAoY2FsbGlfcGNyZWwsIGNhbGxfcGNyZWwsIGNhbGxfdmFsdWVpX3BjcmVsLAoJY2FsbF92YWx1ZV9wY3JlbCwgY2FsbCwgY2FsbF92YWx1ZSwgc2liY2FsbCk6IE1hdGNoIGV2ZW4gd2hlbgoJbm90IG9wdGltaXppbmcuCgkoc2liY2FsbGlfcGNyZWwsIHNpYmNhbGxfcGNyZWwpOiBMaWtld2lzZS4gIFVzZSBjb25zdHJhaW50IGBrJwoJZm9yIGNhbGwgYWRkcmVzcy4KCShzaWJjYWxsaSk6IExpa2V3aXNlLgoKMjAwMC0xMi0wMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAod2Fybl9mb3JtYXQsIHdhcm5fZm9ybWF0X3kyaywKCXdhcm5fZm9ybWF0X2V4dHJhX2FyZ3MsIHdhcm5fZm9ybWF0X25vbmxpdGVyYWwpOiBEZWZpbmUuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBDaGVjayB3YXJuX2Zvcm1hdF9ub25saXRlcmFsIGFuZAoJd2Fybl9mb3JtYXRfZXh0cmFfYXJncy4KCShjaGVja19mb3JtYXRfaW5mb19tYWluKTogQ2hlY2sgd2Fybl9mb3JtYXRfeTJrLgoJKHNldF9XZm9ybWF0KTogTmV3IGZ1bmN0aW9uLgoJKiBjLWNvbW1vbi5oICh3YXJuX2Zvcm1hdF95MmssIHdhcm5fZm9ybWF0X2V4dHJhX2FyZ3MsCgl3YXJuX2Zvcm1hdF9ub25saXRlcmFsLCBzZXRfV2Zvcm1hdCk6IERlY2xhcmUuCgkqIGMtZGVjbC5jICh3YXJuX2Zvcm1hdCk6IFJlbW92ZSBkZWZpbml0aW9uLgoJKGNfZGVjb2RlX29wdGlvbik6IEhhbmRsZSAtV2Zvcm1hdC1ub25saXRlcmFsLAoJLVduby1mb3JtYXQtZXh0cmEtYXJncyBhbmQgLVduby1mb3JtYXQteTJrLCBhbmQgbmVnYXRlZCB2ZXJzaW9ucy4KCVVzZSBzZXRfV2Zvcm1hdC4KCSogaW52b2tlLnRleGk6IERvY3VtZW50IHRoZXNlIG5ldyBvcHRpb25zIGFuZCAtV2Zvcm1hdD0yLgoJKiB0b3BsZXYuYyAoZG9jdW1lbnRlZF9sYW5nX29wdGlvbnMpOiBBZGQgdGhlc2UgbmV3IG9wdGlvbnMuCgoyMDAwLTEyLTAxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0lNQVhBQlMpOiBBZGQuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluKTogQWxzbyBhYm9ydCBvbiBCVUlMVF9JTl9JTUFYQUJTLgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBDcmVhdGUgYnVpbHRpbgoJZnVuY3Rpb25zIF9fYnVpbHRpbl9pbWF4YWJzLCBhbmQgcGxhaW4gaW1heGFicyB1bmxlc3MKCWZsYWdfbm9fbm9uYW5zaV9idWlsdGluIG91dHNpZGUgQzk5IG1vZGUuCgkoZXhwYW5kX3RyZWVfYnVpbHRpbik6IEhhbmRsZSBCVUlMVF9JTl9JTUFYQUJTLgoJKiBleHRlbmQudGV4aTogRG9jdW1lbnQgYnVpbHRpbiBpbWF4YWJzLgoKMjAwMC0xMi0wMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYzogSW5jbHVkZSAiZGVmYXVsdHMuaCIuCgkoV0lOVF9UWVBFLCBJTlRNQVhfVFlQRSwgVUlOVE1BWF9UWVBFKTogRGVmaW5lLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IENyZWF0ZSBzdHJpbmdfdHlwZV9ub2RlLAoJY29uc3Rfc3RyaW5nX3R5cGVfbm9kZSwgd2ludF90eXBlX25vZGUsIGludG1heF90eXBlX25vZGUsCgl1aW50bWF4X3R5cGVfbm9kZSwgZGVmYXVsdF9mdW5jdGlvbl90eXBlLCBwdHJkaWZmX3R5cGVfbm9kZSBhbmQKCXVuc2lnbmVkX3B0cmRpZmZfdHlwZV9ub2RlLgoJKiBjLWNvbW1vbi5oIChpZGVudGlmaWVyX2dsb2JhbF92YWx1ZSk6IERlY2xhcmUuCgkqIGMtZGVjbC5jIChXSU5UX1RZUEUsIElOVE1BWF9UWVBFLCBVSU5UTUFYX1RZUEUpOiBEb24ndCBkZWZpbmUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBjcmVhdGUgc3RyaW5nX3R5cGVfbm9kZSwKCWNvbnN0X3N0cmluZ190eXBlX25vZGUsIHdpbnRfdHlwZV9ub2RlLCBpbnRtYXhfdHlwZV9ub2RlLAoJdWludG1heF90eXBlX25vZGUsIGRlZmF1bHRfZnVuY3Rpb25fdHlwZSwgcHRyZGlmZl90eXBlX25vZGUgYW5kCgl1bnNpZ25lZF9wdHJkaWZmX3R5cGVfbm9kZS4KCShpZGVudGlmaWVyX2dsb2JhbF92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCjIwMDAtMTItMDEgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jIChpbml0aWFsaXplKTogRm9yZ290dGVuIHByb3RvdHlwZS4KCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogTG9vcCB1bnRpbCBub3Qgc2tpcHBpbmcuCglBbHdheXMgY2xlYXIgUFJFVl9XSElURSB1cG9uIG1lZXRpbmcgYSBuZXcgbGluZS4KCSogY3BwbGliLmMgKGVuZF9kaXJlY3RpdmUpOiBTZXQgcGZpbGUtPnNraXBwaW5nIGFmdGVyCglza2lwX3Jlc3Rfb2ZfbGluZS4KCSogY3BwbGliLmggKGNwcF9yZWFkZXIpOiBSZW1vdmUgbWFjcm9fcG9zLgoJKiBjcHBtYWNyby5jIChjcHBfZ2V0X2xpbmUpOiBEb24ndCBkbyBhbnl0aGluZyBzcGVjaWFsIGluc2lkZQoJbWFjcm9zLgoJKHBhcnNlX2FyZyk6IEFkZCBQUkVWX1dISVRFIGlmIGEgdG9rZW4gYXBwZWFycyBhZnRlciBuZXcgbGluZXMuCgkoZnVubGlrZV9pbnZvY2F0aW9uX3ApOiBTYXZlIGFuZCByZXN0b3JlIHRoZSBvdXRwdXQgcG9zaXRpb24KCW92ZXIgYSBzdWNjZXNzZnVsIGNoZWNrIGZvciBhICcoJy4KCShlbnRlcl9tYWNyb19jb250ZXh0KTogRGVsZXRlIHVzZXMgb2YgbWFjcm9fcG9zLgoJKGNwcF9nZXRfdG9rZW4pOiBEb24ndCB1c2UgcGZpbGUtPnNraXBwaW5nLgoKMjAwMC0xMi0wMSAgUGhpbCBFZHdhcmRzICA8cG1lQHNvdXJjZXMucmVkaGF0LmNvbT4KCgkqIGRpYWdub3N0aWMuYzogIEZpeCB0eXBvcyBpbiBjb21tZW50cy4KCSogZGlhZ25vc3RpYy5oOiAgTGlrZXdpc2UuCgoyMDAwLTExLTMwICBQaGlsIEVkd2FyZHMgIDxwbWVAc291cmNlcy5yZWRoYXQuY29tPgoKCSogcnRsLnRleGkgKE1hY2hpbmUgTW9kZXMpOiAgRG9jdW1lbnQgQkltb2RlIGFuZCBPSW1vZGUuCgoyMDAwLTEyLTAxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY2MuYyAoZGVmYXVsdF9jb21waWxlcnMpOiBBZGQgc3VmZml4ZXMgLm1pLCAuY3AsIC5paSwgLkZPUiBhbmQKCS5GUFAuCgoyMDAwLTEyLTAxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBJZiBwZWRhbnRpYywgd2FybiBhYm91dCBhcnJheXMgd2l0aAoJaW5jb21wbGV0ZSBlbGVtZW50IHR5cGUuCgkoZ3Jva3Bhcm1zKTogQmVmb3JlIGNoZWNraW5nIGZvciBpbmNvbXBsZXRlIHBhcmFtZXRlciB0eXBlLCBjaGVjawoJdGhlIHR5cGUgaXNuJ3QgZXJyb3JfbWFya19ub2RlLgoKMjAwMC0xMi0wMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jICh0YXJnZXRfY2hhcl9jYXN0KTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluX3N0cmNocik6IFVzZSBpdC4KCShleHBhbmRfYnVpbHRpbl9zdHJyY2hyKTogVXNlIGl0LgoJKGJ1aWx0aW5fbWVtc2V0X3JlYWRfc3RyKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluX21lbXNldCk6IFVzZSB0YXJnZXRfY2hhcl9jYXN0LgoJVHJ5IHRvIG9wdGltaXplIG1lbXNldCB3aXRoIHNlY29uZCBhcmd1bWVudCBub256ZXJvIHVzaW5nCglzdG9yZV9ieV9waWVjZXMuCgoyMDAwLTExLTMwICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGluc3RhbGwudGV4aSAoYXZyKTogUmVwbGFjZSBpbmNvbXBsZXRlIGxpc3Qgb2Ygc3VwcG9ydGVkIE1DVQoJdHlwZXMgd2l0aCBhIGxpbmsgdG8gdGhlIGN1cnJlbnQgb25lIC4uLgoJKiBpbnZva2UudGV4aSAoQVZSIE9wdGlvbnMpOiAuLi4gaGVyZS4gIFVwZGF0ZSAtbW1jdT0gdG8gbGlzdAoJYWxsIHN1cHBvcnRlZCBNQ1UgdHlwZXMuICBEb2N1bWVudCAtbWluaXQtc3RhY2s9IGRlZmF1bHQuCglEb2N1bWVudCBuZXcgb3B0aW9ucyAtbW5vLXRhYmxlanVtcCwgLW10aW55LXN0YWNrLgoJKiBtZC50ZXhpIChBVlIgZmFtaWx5KTogIEZpeCB0eXBvIGluICd3JyBjb25zdHJhaW50IGxldHRlcgoJZGVzY3JpcHRpb24uICBEb2N1bWVudCAncScuICBVcGRhdGUgJ08nLgoKMjAwMC0xMi0wMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjb21iaW5lLmMgKGNhbnRfY29tYmluZV9pbnNuX3ApOiBPbmx5IGRpc2FsbG93IGluc25zIGludm9sdmluZwoJaGFyZCByZWdzIGlmIHRoZXkgYXJlIHJlZy1yZWcgbW92ZXMuCgkodHJ5X2NvbWJpbmUsIGNhbl9jb21iaW5lX3AsIGNvbWJpbmFibGVfaTNwYXQpOiBEZWxldGUgb2xkCglTTUFMTF9SRUdJU1RFUl9DTEFTU0VTIHRlc3RzLgoKMjAwMC0xMi0wMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guYyAoc2hpZnRjb3N0cyk6IERvbid0IGdldCBJTlRWQUwgYmVmb3JlIHRlc3RpbmcKCXdoZXRoZXIgWCBpcyBhIENPTlNUX0lOVC4KCShhZGRzdWJjb3N0cyk6IExpa2V3aXNlLgoKCSogY29uZmlnL3NoL3NoLmggKE9VVFBVVF9BRERSX0NPTlNUX0VYVFJBKTogVXNlIElOVFZBTCBpbnN0ZWFkIG9mCgltaXMtdXNlZCBYSU5ULgoJKEFSR19QT0lOVEVSX1JFR05VTSk6IFNldCB0byBBUF9SRUcuCgoyMDAwLTExLTMwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5tZCAoZnB1X3N3aXRjaDAsIGZwdV9zd2l0Y2gxLCBtb3Zwc2ksIGZwdV9zd2l0Y2gsCglzcGxpdHMpOiBPbmx5IG1hdGNoIG9uIFRBUkdFVF9TSDQuCgoJKiBjb21iaW5lLmMgKHRyeV9jb21iaW5lKTogRGlzcmVnYXJkIFVTRXMgd2hlbiB1cGRhdGluZyBMT0dfTElOS1MKCW9mIHN1YnNlcXVlbnQgaW5zbnMuCgoyMDAwLTExLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKEFTTV9PVVRQVVRfTUlfVEhVTkspOiBEaXNhYmxlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEzMi5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogTGlrZXdpc2UuCgoyMDAwLTExLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2VsZi5oIChBU01fT1VUUFVUX1NFQ1RJT05fTkFNRSk6IENvcHkgZWxmb3MuaCBkZWZuLgoJKERPX1NFTEVDVF9TRUNUSU9OKTogTmV3LgoJKFNFTEVDVF9TRUNUSU9OKTogVXNlIGl0LgoJKFVOSVFVRV9TRUNUSU9OX1ApOiBOZXcuCgkoVU5JUVVFX1NFQ1RJT04pOiBOZXcuCgoyMDAwLTExLTMwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKHN0YXR1c193YXJuaW5nKSBbISBBTlNJX1BST1RPVFlQRVNdOiBMb2FkIHN0YXR1cwoJZnJvbSB2YV9saXN0IGJlZm9yZSB1c2luZyBpdC4KCjIwMDAtMTEtMzAgIE1pY2hhZWwgTWF0eiAgPG1hdHptaWNoQGNzLnR1LWJlcmxpbi5kZT4KCgkqIGZsb3cuYyAobWFrZV9lZGdlKTogRWFybHkgb3V0LCBpZiBubyBmbGFncyB0byBzZXQuCgkoY2FsY3VsYXRlX2dsb2JhbF9yZWdzX2xpdmUpOiBDbGVhciBvdXQgZ2FyYmFnZSBvbmx5IHdoZW4gbmVjZXNzYXJ5LgoKCSogc2ltcGxpZnktcnR4LmMgKHZhcnJheV90eXBlIHVzZWRfcmVncyk6IE5ldy4KCShjbGVhcl90YWJsZSk6IFVzZSBpdCB0byBvbmx5IGNsZWFyIG5lY2Vzc2FyeSBpdGVtcy4KCShjc2VsaWJfbG9va3VwLCBjc2VsaWJfcmVjb3JkX3NldCk6IFJlbWVtYmVyIG5ld2x5IHNldCBpdGVtcy4KCShjc2VsaWJfdXBkYXRlX3ZhcnJheV9zaXplcywgY3NlbGliX2luaXQpOiBJbml0aWFsaXplIGFuZCBncm93Cgl1c2VkX3JlZ3MuCgoJKiBsb2NhbC1hbGxvYy5jICh1cGRhdGVfZXF1aXZfcmVncyk6IE5ldyBsb2NhbCBgY2xlYXJlZF9yZWdzJy4KCU1vdmUgY2xlYXJpbmcgb2YgZGVhZCByZWdzIG91dCBvZiBpbnNuLWxvb3AuCgoyMDAwLTExLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBFbWl0IHF1ZXVlZCBpbnNucyBiZWZvcmUgY3JlYXRpbmcKCXRoZSB0YWlsIHJlY3Vyc2lvbiBzZXF1ZW5jZS4KCjIwMDAtMTEtMzAgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy5jYT4KCSAgICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYoKTogcHJldmVudCBkdWFsIGRvdWJsZSBkZWZpbml0aW9uIHByb3RlY3Rpb24KCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW5lcmF0ZQoKMjAwMC0xMS0yOSAgTG9yZW4gSi4gUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIGZpeGluYy9NYWtlZmlsZS5pbiAoZml4aW5jbC54KTogRXhwbGljaXRseSBzdGF0ZSB0aGUKCWxvY2F0aW9uIG9mIHRoZSBnZW5lcmF0ZWQgZmlsZS4KCjIwMDAtMTEtMzAgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIFJFQURNRS5GUkVTQ086IFJlbW92ZSBvYnNvbGV0ZSBmaWxlLgoKMjAwMC0xMS0zMCAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+CgoJKiBjb25maWcvdC1nbnUgKExJQkdDQzEsIENST1NTX0xJQkdDQzEsIENSVFNUVUZGX1RfQ0ZMQUdTLAoJVEFSR0VUX0xJQkdDQzJfQ0ZMQUdTKTogUmVtb3ZlLiAgV2Ugbm93IHVzZSB0aGUgc2V0dGluZ3MgZnJvbQoJY29uZmlnL3QtbGludXggZm9yIHRoZSBIdXJkLgoKMjAwMC0xMS0zMCAgU3RlcGhhbmUgQ2FycmV6ICA8U3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyPgoKCSogY29uZmlnL21uMTAyMDAvdWRpdm1vZC5jLCBjb25maWcvbW4xMDIwMC9kaXZtb2QuYywKCWNvbmZpZy9tbjEwMjAwL3VkaXZtb2RzaTQuYzogTW92ZWQgZnJvbSBoZXJlLgoJKiBjb25maWcvdWRpdm1vZC5jLCBjb25maWcvZGl2bW9kLmMsIGNvbmZpZy91ZGl2bW9kc2k0LmM6IFRvIGhlcmUuCgkqIGNvbmZpZy9tbjEwMjAwL3QtbW4xMDIwMCAoTElCMkZVTkNTX0VYVFJBKTogVXNlIHRoZSBnZW5lcmljCglDIGRpdmlzaW9uIGZ1bmN0aW9ucy4KCSogY29uZmlnL202OGhjMTEvdC1tNjhoYzExLWdhcyAoTElCMkZVTkNTX0VYVFJBKTogTGlrZXdpc2UuCgpUaHUgTm92IDMwIDAxOjEyOjUyIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHBhLm1kIChjb25kaXRpb25hbCBtb3Zlcyk6IEF2b2lkIGhvbGVzIGluIG9wZXJhbmQgbGlzdC4KCShtb2QsIHVtb2QgcGF0dGVybnMpOiBTaW1pbGFybHkuCgkodmFyaWFibGUgZXh0cmFjdC9zaGlmdCBwYXR0ZXJucyk6IFNpbWlsYXJseS4KCjIwMDAtMTEtMzAgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogb2JqYy9vYmpjLWFjdC5jIChsYW5nX2luaXQsIGZpbmlzaF9maWxlLCBtYXliZV9vYmpjX2NvbXB0eXBlcywKCW1heWJlX29iamNfY2hlY2tfZGVjbCwgYnVpbGRfb2JqY19zdHJpbmdfb2JqZWN0LAoJb2JqY19kZWNsYXJlX2FsaWFzLCBvYmpjX2RlY2xhcmVfY2xhc3MsIGJ1aWxkX21lc3NhZ2VfZXhwciwKCWJ1aWxkX3Byb3RvY29sX2V4cHIsIGJ1aWxkX3NlbGVjdG9yX2V4cHIsIGJ1aWxkX2VuY29kZV9leHByLAoJZ2V0X2NsYXNzX2l2YXJzLCBzdGFydF9jbGFzcywgc3RhcnRfcHJvdG9jb2wpOiBSZW1vdmUKCXJlZHVuZGFudCBjb2RlLCBhc3N1bWluZyBkb2luZ19vYmpjX3RoYW5nIGlzIHRydWUuCgoyMDAwLTExLTI5ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogcGEuYyAocmVzdG9yZV91bnNjYWxlZF9pbmRleF9pbnNuX2NvZGVzKTogRGVsZXRlIHByb2NlZHVyZS4KCShyZWNvcmRfdW5zY2FsZWRfaW5kZXhfaW5zbl9jb2Rlcyk6IExpa2V3aXNlLgoJKHVuc2NhbGVkX2luZGV4X2luc25fY29kZXMpOiBEZWxldGUuCgkobWF4X3Vuc2NhbGVkX2luZGV4X2luc25fY29kZXNfdWlkKTogRGVsZXRlLgoJKG91dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSwgb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlLCBwYV9yZW9yZyk6CglEb24ndCB1c2UgdGhlIHVuc2NhbGVkIGluZGV4IGluc24gaGFjay4KCgkqIHBhLm1kOiBSZW1vdmUgaGFjayBmcm9tIGFsbCBpbmRleCBpbnNucyB0byByZXZlcnNlIHRoZSBvcGVyYW5kCglvcmRlciBvZiBmcmFtZSBhbmQgc3RhY2sgcG9pbnRlciByZWZlcmVuY2VzIGluY29ycmVjdGx5IGNyZWF0ZWQKCWluIHRoZSByZWxvYWQgcGFzcy4KCgkqIGZ1bmN0aW9uLmggKGVtaXRfc3RhdHVzKTogRGVsZXRlIG1lbWJlciByZWdub19wb2ludGVyX2ZsYWcgYW5kCglyZW5hbWUgcmVnbm9fcG9pbnRlcl9mbGFnX2xlbmd0aCB0byByZWdub19wb2ludGVyX2FsaWduX2xlbmd0aC4KCURlbGV0ZSBkZWZpbmUgZm9yIFJFR05PX1BPSU5URVJfRkxBRy4KCSogaW50ZWdyYXRlLmggKGlubGluZV9yZW1hcCk6IERlbGV0ZSBtZW1iZXIgcmVnbm9fcG9pbnRlcl9mbGFnLgoJQWRkIG1lbWJlciB4X3JlZ25vX3JlZ19ydHguCgkqIHJ0bC5oIChydHhfZGVmKTogVXNlIGZyYW1lX3JlbGF0ZWQgYml0IHRvIGluZGljYXRlIHJlZ2lzdGVyIGlzCglhIHBvaW50ZXIgaW4gUkVHIGV4cHJlc3Npb25zLiAgRGVmaW5lIFJFR19QT0lOVEVSIG1hY3JvLgoJKiBhbGlhcy5jIChmaW5kX2Jhc2VfdmFsdWUsIGZpbmRfYmFzZV90ZXJtKTogVXNlIFJFR19QT0lOVEVSCglpbnN0ZWFkIG9mIFJFR05PX1BPSU5URVJfRkxBRy4KCSogY29tYmluZS5jIChub256ZXJvX2JpdHMsIG51bV9zaWduX2JpdF9jb3BpZXMpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoZ2VuX3JlZ19ydHgpOiBVc2UgcmVnbm9fcG9pbnRlcl9hbGlnbl9sZW5ndGggaW5zdGVhZAoJb2YgcmVnbm9fcG9pbnRlcl9mbGFnX2xlbmd0aC4gIFJlbW92ZSBjb2RlIHdoaWNoIHJlZmVycyB0bwoJcmVnbm9fcG9pbnRlcl9mbGFnLgoJKG1hcmtfcmVnX3BvaW50ZXIpOiBVc2UgUkVHX1BPSU5URVIuCgkoZnJlZV9lbWl0X3N0YXR1cyk6IFJlbW92ZSBjb2RlIHdoaWNoIHJlZmVycyB0byByZWdub19wb2ludGVyX2ZsYWcuCgkoaW5pdF9lbWl0LCBtYXJrX2VtaXRfc3RhdHVzKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoZHVtcF9mbG93X2luZm8pOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAocHJlc2VydmVfdGVtcF9zbG90cyk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbiwgY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOgoJVXNlIHhfcmVnbm9fcmVnX3J0eCBpbnN0ZWFkIG9mIHJlZ25vX3BvaW50ZXJfZmxhZyBmb3IgZnVuY3Rpb24KCXBvaW50ZXIgZGV0ZXJtaW5hdGlvbiBpbiBtYXAuCgkqIGxvb3AuYyAoc3RyZW5ndGhfcmVkdWNlLCBtYXliZV9lbGltaW5hdGVfYml2XzEpOiBVc2UgUkVHX1BPSU5URVIuCgkqIHByZWRpY3QuYyAoZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYyAocmVjb3JkX2FkZHJlc3NfcmVncywgcmVnX3NjYW5fbWFya19yZWZzKTogTGlrZXdpc2UuCgkqIHVucm9sbC5jICh1bnJvbGxfbG9vcCk6IFVzZSB4X3JlZ25vX3JlZ19ydHggaW5zdGVhZCBvZgoJcmVnbm9fcG9pbnRlcl9mbGFnIGZvciBmdW5jdGlvbiBwb2ludGVyIGRldGVybWluYXRpb24gaW4gbWFwLgoJKiBjb252ZXguaCAoUlRYX0NPU1RTKTogRG9uJ3QgdGVzdCByZWdub19wb2ludGVyX2ZsYWcgYW5kIHVzZQoJUkVHX1BPSU5URVIuCgkqIHBhLmMgKGhwcGFfbGVnaXRpbWl6ZV9hZGRyZXNzLCBlbWl0X21vdmVfc2VxdWVuY2UsIGJhc2VyZWdfb3BlcmFuZCk6CglVc2UgUkVHX1BPSU5URVIuCgkocmVzdG9yZV91bnNjYWxlZF9pbmRleF9pbnNuX2NvZGVzKTogUmV2aXNlIGNvbW1lbnQuCgoJKiBleHByLmMgKGRvX2NvbXBhcmVfYW5kX2p1bXApOiBBZGQgbWlzc2luZyBUWVBFX01PREUgaW4gc3RhdGVtZW50LgoKMjAwMC0xMS0zMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZXh0ZW5kLnRleGk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIGZvciBhdHRyaWJ1dGVzLgoKMjAwMC0xMS0yOSAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoSURFTlRfQVNNX09QKTogUHJvdGVjdCB0aGUgI2RlZmluZS4KCShBU01fREVDTEFSRV9PQkpFQ1RfTkFNRSk6IFNhbWUuCgkoQVNNX0ZJTEVfRU5EKTogU2FtZS4KCShBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogU2FtZS4KCShBU01fSURFTlRJRllfR0NDKTogU2FtZS4KCShBU01fSURFTlRJRllfTEFOR1VBR0UpOiBTYW1lLgoJKEFTTV9PVVRQVVRfQ09OU1RSVUNUT1IpOiBTYW1lLgoJKEFTTV9PVVRQVVRfREVGKTogU2FtZS4KCShBU01fT1VUUFVUX0RFU1RSVUNUT1IpOiBTYW1lLgoJKEFTTV9PVVRQVVRfRVhURVJOQUxfTElCQ0FMTCk6IFNhbWUuCgkoQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBTYW1lLgoJKEFTTV9XRUFLRU5fTEFCRUwpOiBTYW1lLgoJKEJTU19TRUNUSU9OX0FTTV9PUCk6IFNhbWUuCgkoQ09NTU9OX0FTTV9PUCk6IFNhbWUuCgkoQ09OU1RfU0VDVElPTl9BU01fT1ApOiBTYW1lLgoJKENPTlNUX1NFQ1RJT05fRlVOQ1RJT04pOiBTYW1lLgoJKENUT1JTX1NFQ1RJT05fQVNNX09QKTogU2FtZS4KCShEVE9SU19TRUNUSU9OX0FTTV9PUCk6IFNhbWUuCgkoRVNDQVBFUyk6IFNhbWUuCgkoRklOSV9TRUNUSU9OX0FTTV9PUCk6IFNhbWUuCgkoSURFTlRfQVNNX09QKTogU2FtZS4KCShJREVOVF9BU01fT1ApOiBTYW1lLgoJKElOSVRfU0VDVElPTl9BU01fT1ApOiBTYW1lLgoJKElOVF9BU01fT1ApOiBTYW1lLgoJKE1BWF9PRklMRV9BTElHTk1FTlQpOiBTYW1lLgoJKFNCU1NfU0VDVElPTl9BU01fT1ApOiBTYW1lLgoJKFNEQVRBX1NFQ1RJT05fQVNNX09QKTogU2FtZS4KCShTRUNUSU9OX0ZVTkNUSU9OX1RFTVBMQVRFKTogU2FtZS4KCShTRUxFQ1RfU0VDVElPTik6IFNhbWUuCgkoU0VfQ09OU1RfU0VDVElPTik6IFNhbWUuCgkoU0laRV9BU01fT1ApOiBTYW1lLgoJKFNLSVBfQVNNX09QKTogU2FtZS4KCShTVFJJTkdfQVNNX09QKTogU2FtZS4KCShTVFJJTkdfTElNSVQpOiBTYW1lLgoJKFRZUEVfQVNNX09QKTogU2FtZS4KCShUWVBFX09QRVJBTkRfRk1UKTogU2FtZS4KCjIwMDAtMTEtMjkgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogYy1kZWNsLmMgKGNfZGVjb2RlX29wdGlvbik6IERvbid0IGhhbmRsZSAtbGFuZy1vYmpjLgoJKiBvYmpjL2xhbmctb3B0aW9ucy5oOiBSZW1vdmUgLWxhbmctb2JqYy4KCSogb2JqYy9sYW5nLXNwZWNzLmg6IERvbid0IHBhc3MgLWxhbmctb2JqYyB0byBjYzFvYmouCgkqIG9iamMvb2JqYy1hY3QuYyAobGFuZ19pbml0X29wdGlvbnMpOiBTZXQgY19sYW5ndWFnZS4KCjIwMDAtMTEtMjkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZXhwci5jIChjYW5fc3RvcmVfYnlfcGllY2VzKTogUmVpbml0aWFsaXplIG1heF9zaXplIGZvciByZXZlcnNlCgl0ZXN0cy4KCjIwMDAtMTEtMjkgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogYy1wcmFnbWEuYyAoaW5pdF9wcmFnbWEpOiBVcGRhdGUgZm9yIHBhcnNlX2luIHR5cGUgY2hhbmdlLgoKMjAwMC0xMS0yOSAgTGF1cnluYXMgQml2ZWluaXMgIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogY29uZmlndXJlLmluOiByZWNvZ25pemUgRE9TLXN0eWxlIGFic29sdXRlIHBhdGhzLgoKMjAwMC0xMS0yOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBleHByLmggKHN0b3JlX2J5X3BpZWNlcyk6IEFkZCBwcm90b3R5cGUuCgkoY2FuX3N0b3JlX2J5X3BpZWNlcyk6IExpa2V3aXNlLgoJKiBleHByLmMgKHN0cnVjdCBzdG9yZV9ieV9waWVjZXMpOiBSZW5hbWVkIGZyb20gY2xlYXJfYnlfcGllY2VzLgoJKGNhbl9zdG9yZV9ieV9waWVjZXMpOiBOZXcuCgkoc3RvcmVfYnlfcGllY2VzKTogTmV3LgoJKGNsZWFyX2J5X3BpZWNlcyk6IE5ldy4KCShjbGVhcl9ieV9waWVjZXNfMSk6IE5ldy4KCShzdG9yZV9ieV9waWVjZXNfMSk6IFJlbmFtZWQgZnJvbSBjbGVhcl9ieV9waWVjZXMsIGhhbmRsZSBzdG9yaW5nCglhcmJpdHJhcnkgY29tcGlsZXIgZ2VuZXJhdGVkIGNvbnN0YW50cyBpbnRvIG1lbW9yeSBibG9jay4KCShzdG9yZV9ieV9waWVjZXNfMik6IFJlbmFtZWQgZnJvbSBjbGVhcl9ieV9waWVjZXNfMSwgbGlrZXdpc2UuCgkqIGJ1aWx0aW5zLmMgKGNfcmVhZHN0cik6IE5ldy4KCShidWlsdGluX21lbWNweV9yZWFkX3N0cik6IE5ldy4KCShleHBhbmRfYnVpbHRpbl9tZW1jcHkpOiBJZiBzcmMgaXMgc3RyaW5nIGNvbnN0YW50IGFuZAoJZW1pdF9ibG9ja19tb3ZlIHdvdWxkIG1vdmUgaXQgYnkgcGllY2VzLCBjb21wdXRlIGludGVnZXIgY29uc3RhbnRzCglmcm9tIHRoZSBzdHJpbmcgYW5kIHN0b3JlIGl0IGludG8gbWVtb3J5IGJsb2NrIGluc3RlYWQuCgkoYnVpbHRpbl9zdHJuY3B5X3JlYWRfc3RyKTogTmV3LgoJKGV4cGFuZF9idWlsdGluX3N0cm5jcHkpOiBJZiBOIGlzIG5vdCBjb25zdGFudCB6ZXJvIGFuZCBjX3N0cmxlbiBkb2VzCglub3QgcmV0dXJuIElOVEVHRVJfQ1NULCBkb24ndCBvcHRpbWl6ZS4KCUlmIE4gaXMgbGFyZ2VyIHRoYW4gc3RybGVuKHNyYykgKyAxLCB0cnkgdG8gY29weSB0aGUgc3RyaW5nCglpbmNsdWRpbmcgcGFkZGluZyB3aXRoIHN0b3JlX2J5X3BpZWNlcy4KCShleHBhbmRfYnVpbHRpbl9zdHJjbXApOiBJZiBib3RoIGFyZ3VtZW50cyBoYXZlIHNpZGUgZWZmZWN0cywgZG9uJ3QKCW9wdGltaXplLgoJKGV4cGFuZF9idWlsdGluX2ZwdXRzKTogSWYgU1RSIGhhcyBzaWRlIGVmZmVjdHMsIGRvbid0IG9wdGltaXplLgoKMjAwMC0xMS0yOSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0ubWQgKHNpYmNhbGwsIHNpYmNhbGxfdmFsdWUsIHNpYmNhbGxfaW5zbiwgc2liY2FsbF92YWx1ZV9pbnNuKToKCUFkZCB1c2Ugb2YgbGluayByZWdpc3Rlci4KCjIwMDAtMTEtMjkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGV4dGVuZC50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBmb3IgZGVmYXVsdCBmb3JtYXQgYXR0cmlidXRlcy4KClR1ZSBOb3YgMjggMjE6NTY6NDUgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcGEvcGEtNjQuaCAoQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBVc2UgYSBoYXNoIHRhYmxlLCBub3QKCWEgbGlzdCwgdG8ga2VlcCB0cmFjayBvZiB0aGUgc2VjdGlvbnMuCgoyMDAwLTExLTI4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKHBpY19sb2FkX2FkZHIpOiBTcGxpdCBpbnRvCglwaWNfbG9hZF9hZGRyX2FybSBhbmQgcGljX2xvYWRfYWRkcl90aHVtYi4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBHZW5lcmF0ZSBlaXRoZXIKCUFSTSBvciBUaHVtYiB2ZXJzaW9ucyBvZiBwaWNfbG9hZF9hZGRyLgoJKGFybV9maW5hbGl6ZV9waWMpOiBHZW5lcmF0ZSBlaXRoZXIgQVJNIG9yIFRodW1iIHZlcnNpb25zIG9mCglwaWNfbG9hZF9hZGRyLgoKMjAwMC0xMS0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRGVmZXIgY29uc3QvcHVyZSBOT19ERUZFUl9QT1AgdW50aWwKCWFmdGVyIHNpYmNhbGwgZG9fcGVuZGluZ19zdGFja19hZGp1c3QuCgpXZWQgTm92IDI5IDAwOjA4OjIzIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBqdW1wLmMgKGRlbGV0ZV9pbnNuKTogQ2hlY2sgdGhhdCBSRUdfTEFCRUwgbm90ZSBhY3R1YWxseSBjb250YWlucwoJYSBDT0RFX0xBQkVMLgoKMjAwMC0xMS0yOCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjLWNvbW1vbi5oOiBSZW1vdmUgZmxhZ19kaWdyYXBocy4KCSogYy1kZWNsLmM6IFJlbW92ZSBmbGFnX2RpZ3JhcGhzLgoJKGNfZGVjb2RlX29wdGlvbik6IERvbid0IHNldCBpdC4KCSogYy1sZXguYyAoaW5pdF9jX2xleCk6IERvbid0IGRvIGFueXRoaW5nIGZvciBkaWdyYXBocy4KCjIwMDAtMTEtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLXBhcnNlLmluIChmaW5pc2hfcGFyc2UpOiBVcGRhdGUgZm9yIHBhcnNlX2luIHR5cGUgY2hhbmdlLgoJKF95eWxleCk6IExpa2V3aXNlLgoKMjAwMC0xMS0yOCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBtYWNyby5jIChjcHBfc2Nhbl9idWZmZXJfbm9vdXRwdXQpOiBUYWtlIGEgYm9vbGVhbgoJaW5kaWNhdGluZyB3aGV0aGVyIHRvIHNjYW4gYWxsIGJ1ZmZlcnMgb24gdGhlIHN0YWNrIG9yCglqdXN0IG9uZS4KCSogY3BwaW5pdC5jIChkb19pbmNsdWRlcyk6IFVwZGF0ZS4KCSogY3BwbWFpbi5jIChtYWluKTogVXBkYXRlLgoJKiBjcHBsaWIuaDogVXBkYXRlIHByb3RvdHlwZS4KCjIwMDAtMTEtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnZW5vdXRwdXQuYyAodmFsaWRhdGVfaW5zbl9vcGVyYW5kcyk6IE5ldy4KCShnZW5faW5zbik6IENhbGwgaXQuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKGRpdm1vZHNpX2ludGVybmFsKTogUmVudW1iZXIgb3BlcmFuZHMuCgkoZGl2bW9kZGlfaW50ZXJuYWwpOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0ubWQgKGFuZHNpM19jb21wYXJlMF9zY3JhdGNoKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pOTYwL2k5NjAubWQgKGJyYW5jaCBwYXR0ZXJucyk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kICh0Yml0X2FuZF8wKTogTGlrZXdpc2UuCgkodGJpdF9hbmRfMSwgdGJpdF9vcl8wLCB0Yml0X29yXzEpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5tZCAoemVyb19leHRyYWN0IG1lbW9yeSBwYXR0ZXJucyk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChkaXZtb2RzaTRfaW50ZXJuYWwpOiBMaWtld2lzZS4KCShkaXZtb2RkaTRfaW50ZXJuYWwpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGNhbGwgcGF0dGVybnMpOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLm1kIChtb3ZzaV95KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZDogQ29tbWVudCBvdXQgaWYgMCB2OHAgc2hpZnQgcGF0dGVybi4KCjIwMDAtMTEtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjOiBLaWxsIHJlc2lkdWFsIHB5cmFtaWQgc3VwcG9ydC4KCjIwMDAtMTEtMjggIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogYy1sZXguaCAocGFyc2VfaW4pOiBDaGFuZ2UgcGFyc2VfaW4gdG8gYSBjcHBfcmVhZGVyICouCgkqIGMtZGVjbC5jIChjX2RlY29kZV9vcHRpb24pOiBVcGRhdGUgdG8gbWF0Y2guCgkqIGMtbGV4LmMgKGluaXRfY19sZXgsIHl5cGFyc2UpOiBVcGRhdGUgdG8gbWF0Y2guCgkqIGMtbGFuZy5jIChsYW5nX2luaXRfb3B0aW9ucyk6IFVzZSBjcHBfY3JlYXRlX3JlYWRlci4KCSogY3BwaW5pdC5jIChjcHBfaW5pdCk6IFJlbmFtZSBpbml0aWFsaXplLgoJKGNwcF9yZWFkZXJfaW5pdCk6IFJlbmFtZSBjcHBfY3JlYXRlX3JlYWRlci4gIENyZWF0ZSB0aGUKCXJlYWRlci4gIEluaXRpYWxpemUgY3BwbGliIGlmIGFwcHJvcHJpYXRlLgoJKiBjcHBsaWIuaCAoY3BwX2NyZWF0ZV9yZWFkZXIpIE5ldyBwcm90b3R5cGUuCgkoY3BwX2luaXQsIGNwcF9yZWFkZXJfaW5pdCk6IERlbGV0ZSBwcm90b3R5cGVzLgoJKiBjcHBtYWluLmMgKGdlbmVyYWxfaW5pdCwgc2V0dXBfY2FsbGJhY2tzKTogTmV3IGZ1bmN0aW9ucy4KCShtYWluKTogVXNlIHRoZW0uCgkqIGZpeC1oZWFkZXIuYyAoc2Nhbl9pbik6IENoYW5nZSB0eXBlIHRvIGNwcF9yZWFkZXIgKi4KCShyZWFkX3NjYW5fZmlsZSk6IFVwZGF0ZSBmb3IgbmV3IGNwcGxpYiBpbnRlcmZhY2UgYW5kIHNjYW5faW4gdHlwZS4KCgkqIGNwL2RlY2wuYyAocGFyc2VfaW4pOiBDaGFuZ2UgdG8gY3BwX3JlYWRlciAqLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IFVwZGF0ZS4KCSogY3AvbGV4LmMgKGxhbmdfaW5pdF9vcHRpb25zKTogVXNlIG5ldyBjcHBsaWIgaW50ZXJmYWNlLgoJKGluaXRfY3BfcHJhZ21hLCBmaW5pc2hfcGFyc2UsIGhhbmRsZV9wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBVcGRhdGUuCgkqIGNwL3NwZXcuYyAocmVhZF90b2tlbik6IFVwZGF0ZS4KCSogb2JqYy9vYmpjLWFjdC5jIChsYW5nX2luaXRfb3B0aW9ucyk6IFVwZGF0ZSBuZXcgY3BwbGliIGludGVyZmFjZS4KCjIwMDAtMTEtMjggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogbG9vcC5jIChsb2FkX21lbXMpOiBBdm9pZCB1c2luZyBuZXh0X2xhYmVsIHRvIGZpbmQgZW5kX2xhYmVsLiBJZgoJanVtcGluZyBvdXRzaWRlIG9mIHRoZSBsb29wIChvdGhlciB0aGFuIGxvb3AgZW5kKSwgZG9uJ3QgaG9pc3QgTUVNcwoJb3V0IG9mIGxvb3AuCgoyMDAwLTExLTI4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERvbid0IGRpc2FibGUgdGFpbCByZWN1cnNpb24gYmFzZWQKCW9uIHRoZSBsb29wIG5lc3QuCgoyMDAwLTExLTI4ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIHRyYWRjcHAuYyAoZW51bSBub2RlX3R5cGUpOiBOZXcgaGFzaCB0eXBlcyBUX0FTU0VSVCwgVF9VTkFTU0VSVC4KCShzdHJ1Y3QgZGlyZWN0aXZlKTogRHJvcCA0dGggYXJndW1lbnQgZnJvbSBoYW5kbGVycy4KCShkb19kZWZpbmUsIGRvX2xpbmUsIGRvX2luY2x1ZGUsIGRvX3VuZGVmLCBkb19lbHNlLCBkb19lbGlmLAoJZG9fZW5kaWYpOiBTaW1pbGFybHkuCgkoZG9fYXNzZXJ0LCBkb191bmFzc2VydCwgZG9faWZkZWYsIGRvX2lmbmRlZik6IE5ldyBoYW5kbGVycy4KCShkb19pZnhkZWYpOiBVcGRhdGUgYXMgY29tbW9uIGhhbmRsZXIgb2YgZG9faWZkZWYgYW5kIGRvX2lmbmRlZi4KCShtYWtlX2RlZmluaXRpb24sIG1ha2VfdW5kZWYpOiBUYWtlIGEgY29uc3QgY2hhciouCgkobWFrZV9hc3NlcnRpb24pOiBOZXcgZnVuY3Rpb24uCgkoc3RydWN0IGRpcmVjdGl2ZV90YWJsZSk6IFVwZGF0ZS4KCShtYWluKTogSGFuZGxlIC1BIGNvbW1hbmQgbGluZSBhcmd1bWVudC4KCShoYW5kbGVfZGlyZWN0aXZlKTogRHJvcCBmb3VydGggaGFuZGxlciBhcmd1bWVudC4KCjIwMDAtMTEtMjggIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogc2ltcGxpZnktcnR4LmMgKGNzZWxpYl9yZWNvcmRfc2V0cyk6IElnbm9yZSBzZXRzIHdob3NlIGRlc3RpbmF0aW9uCglpcyBhbnl0aGluZyBidXQgUkVHIG9yIE1FTSwgYnV0IGxvb2sgaW5zaWRlIFNUUklDVF9MT1dfUEFSVC4KClR1ZSBOb3YgMjggMDk6NTM6NTAgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHN5c3RlbS5oIChJU19ESVJfU0VQQVJBVE9SKTogVXNlIHVwcGVyY2FzZSBtYWNybyBuYW1lLgoJKElTX0FCU09MVVRFX1BBVEhOQU1FKTogTmV3IG1hY3JvLgoJKiBnY2MuYyAoZmluZF9hX2ZpbGUsIHByb2Nlc3NfY29tbWFuZCwgZG9fc3BlY18xLCBtYWluKTogVXNlIGl0LgoKMjAwMC0xMS0yOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICh0cnVuY3hmc2YyXzIpOiBGaXggcHJlZGljYXRlLgoKMjAwMC0xMS0yNyAgSmltIFdpbHNvbiAgPHdpbHNvbkByZWRoYXQuY29tPgoKCSogcmVsb2FkMS5jIChyZWxvYWQpOiBVc2UgSE9TVF9XSURFX0lOVCBmb3Igb2xkX2ZyYW1lX3NpemUuCgoyMDAwLTExLTI3ICBNYXR0aGlhcyBLbG9zZSAgPGRva29AY3MudHUtYmVybGluLmRlPgoKCSogZXh0ZW5kLnRleGkgKE5lc3RlZCBGdW5jdGlvbnMpOiBVcGRhdGUgVVJMIG9mIFVzZW5peCBwYXBlci4KCjIwMDAtMTEtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmdW5jdGlvbi5jIChmcmVlX2FmdGVyX2NvbXBpbGF0aW9uKTogQ2xlYXIgeF9jbG9iYmVyX3JldHVybl9pbnNuLgoKMjAwMC0xMS0yNyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBpbml0LmMgKGNwcF9yZWFkZXJfaW5pdCk6IFJlbW92ZSBoYW5kbGluZyBvZiB3YXJuX3Bhc3RlCgljb21tYW5kIGxpbmUgb3B0aW9ucy4KCShjcHBfaGFuZGxlX29wdGlvbik6IFNpbWlsYXJseS4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfb3B0aW9ucyk6IFJlbW92ZSB3YXJuX3Bhc3RlLgoJKiBjcHBtYWNyby5jIChwYXN0ZV90b2tlbnMpOiBBcGFydCBmcm9tIGFzc2VtYmxlciwgbWFrZQoJdW5wYXN0ZWFibGUgdG9rZW4gd2FybmluZyBtYW5kYXRvcnkuCgoyMDAwLTExLTI3ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIHRyYWRjcHAuYyAoZW51bSBwZW5kaW5nX2Rpcl90LCBzdHJ1Y3QgcGVuZGluZ19kaXIpOiBOZXcuCgkobWFpbik6IEFsbG9jYXRlIGEgcGVuZGluZyBkaXJlY3RpdmUgc2V0IG9mIHRoZXNlLiAgVXNlIGl0LgoJTWVyZ2UgaGFuZGxpbmcgb2YgLUQgYW5kIC1VLiAgVXBkYXRlIGhhbmRsaW5nIG9mIHBlbmRpbmcKCWRpcmVjdGl2ZXMuICBGcmVlIHRoZSBtZW1vcnkgYWZ0ZXIgdXNlLgoKMjAwMC0xMS0yNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBmbG93LmMgKGVudHJ5X2V4aXRfYmxvY2tzKTogQWRkIGVudHJ5IGZvciBjb25kX2xvY2FsX3NldC4KCShzdHJ1Y3QgcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBBZGQgbmV3IG1lbWJlciBjb25kX2xvY2FsX3NldC4KCShwcm9wYWdhdGVfYmxvY2spOiBBY2NlcHQgbmV3IGFyZyBjb25kX2xvY2FsX3NldC4gIEFsbCBjYWxsZXJzCgljaGFuZ2VkLgoJKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBMaWtld2lzZS4KCShjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IEFsbG9jYXRlICYgZnJlZSBjb25kX2xvY2FsX3NldC4gIEFsd2F5cwoJcmVzY2FuIGlmIHRoZXJlJ3Mgb3ZlcmxhcCBiZXR3ZWVuIGNvbmRfbG9jYWxfc2V0IGFuZCBuZXdfbGl2ZV9hdF9lbmQuCgkobWFya19zZXRfMSk6IFNldCBiaXRzIGVpdGhlciBpbiBjb25kX2xvY2FsX3NldCBvciBsb2NhbF9zZXQsIGFzCglhcHByb3ByaWF0ZS4KCSogYmFzaWMtYmxvY2suaCAoc3RydWN0IGJhc2ljX2Jsb2NrX2RlZik6IE5ldyBmaWVsZCBjb25kX2xvY2FsX3NldC4KCShwcm9wYWdhdGVfYmxvY2ssIGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBVcGRhdGUgcHJvdG90eXBlcy4KCk1vbiBOb3YgMjcgMTc6Mjk6NDQgMjAwMCAga2F6IEtvamltYSA8a2tvamltYUByci5paWo0dS5vci5qcD4KCgkqIGdjYy9jb25maWcvc2gvc2gubWQgKHVkaXZzaTNfaTQsIHVkaXZzaTNfaTRfc2luZ2xlKTogQ2xvYmJlcgoJVCByZWdpc3Rlci4KCjIwMDAtMTEtMjcgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKHNlbGVjdF9kb21pbmFuY2VfY2NfbW9kZSk6IEhhbmRsZSBuZXcgd2F5IHRoYXQgY29tYmluZQoJY2Fub25pY2FsaXplcyBjb25kaXRpb25hbCBjb21wYXJlcy4KCShhcm1fc2VsZWN0X2NjX21vZGUpOiBMaWtld2lzZS4KCSogYXJtLm1kOiBHYXJiYWdlIGNvbGxlY3Qgc29tZSBkZWFkIGNvZGUuCgkoY21wX2FuZCwgY21wX2lvcik6IE5ldyBwYXR0ZXJucy4KCShzcGxpdHRlciBmb3IgY29uZGl0aW9uYWwgbW92ZSB3aXRoIGludmVydGVkIGZhbHNlKTogVXNlIGNvbmRfZXhlYwoJYW5kIGhhbmRsZSB1bm9yZGVyZWQgY29tcGFyaXNvbnMuCgpNb24gTm92IDI3IDE3OjIyOjU2IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGl4ODZfZm9yY2VfdG9fbWVtb3J5LCBpeDg2X2ZyZWVfZnJvbV9tZW1vcnkpOiBOZXcuCgkqIGkzODYtcHJvdG9zLmggKGl4ODZfZm9yY2VfdG9fbWVtb3J5LCBpeDg2X2ZyZWVfZnJvbV9tZW1vcnkpOiBEZWNsYXJlCgkqIGkzODYubWQgKGZsb2F0P2k/ZiwgaW50L2ZwIG9wZXJhdGlvbnMpOiBSZXdyaXRlIHNwbGl0ZXJzIHRvIHVzZQoJaXg4Nl9mb3JjZV90b19tZW1vcnkgYW5kIGl4ODZfZnJlZV9mcm9tX21lbW9yeS4KCjIwMDAtMTEtMjcgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChhcm1fYWRkZGkzLCBhZGRkaV9zZXNpZGlfZGksIGFkZGRpX3plc2lkaV9kaSwgYXJtX2FkZHNpMywKCWFybV9zdWJzaTNfaW5zbiwgYW5kZGlfemVzaWRpX2RpLCBhcm1fYW5kc2kzX2luc24sIGFuZGRpX25vdGRpX2RpLAoJYW5kZGlfbm90emVzaWRpX2RpLCBhbmRkaV9ub3RzZXNpZGlfZGksIGFybV9pb3JzaTMsCglvbmVfY21wbGRpMik6IE1lcmdlIHdpdGggc3BsaXR0ZXJzIHRvIGNyZWF0ZSBkZWZpbmVfaW5zbl9hbmRfc3BsaXQKCXBhdHRlcm5zLiAgUmVtb3ZlIHJlZHVuZGFudCBzcGxpdHMuCgkocGVlcGhvbGUyIGZvciBhZGQ6U0kgb2YgaW52YWxpZCBpbW1lZGlhdGUpOiBOZXcuCgkocGVlcGhvbGUyIGZvciBtaW51czpTSSBvZiBpbnZhbGlkIGltbWVkaWF0ZSk6IE5ldy4KCShwZWVwaG9sZTIgZm9yIGlvcjpTSSBvZiBpbnZhbGlkIGltbWVkaWF0ZSk6IE5ldy4KCShwZWVwaG9sZSBmb3IgbWVyZ2Ugb2YgbW92ZSBhbmQgY29tcGFyZSk6IENvbnZlcnQgb3QgcGVlcGhvbGUyLgoJKGFkZHNmMywgYWRkZGYzKTogTWFyayBhcyBjb21tdXRhdGl2ZS4KCgkqIGFybS5tZCAodGh1bWIgcGVlcGhvbGUgZm9yIG1lcmdpbmcgc3RhY2sgYWRqdXN0bWVudHMpOiBDb252ZXJ0IHRvCglwZWVwaG9sZTIuCgoyMDAwLTExLTI3ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGhhaWZhLXNjaGVkLmMgKHByaW50X3BhdHRlcm4pOiBQcmV0dGllciBvdXRwdXQgZm9yIENPTkRfRVhFQy4KCgkqIHJlbG9hZDEuYyAocmVsb2FkX2NzZV9zaW1wbGlmeV9zZXQpOiBQYXNzIGRvd24gbW9kZSB0byBjc2VsaWJfbG9va3VwLgoJKHJlbG9hZF9jc2Vfc2ltcGxpZnlfb3BlcmFuZHMpOiBEbyBub3RoaW5nIGFib3V0IG9wZXJhbmRzIHdoZXJlIGJvdGgKCXRoZSBvcGVyYW5kIGFuZCB0aGUgbWF0Y2hfb3BlcmFuZCBmYWlsIHRvIGdpdmUgdXMgYSBtb2RlLgoJKiBzaW1wbGlmeS1ydHguYyAod3JhcF9jb25zdGFudCk6IE5ldyBmdW5jdGlvbi4KCShlbnRyeV9hbmRfcnR4X2VxdWFsX3ApOiBFeGNlcHQgaW50ZWdlciBjb25zdGFudHMgdG8gY29tZSB3cmFwcGVkIGluIGEKCUNPTlNUIGRlc2NyaWJpbmcgdGhlIHByb3BlciBtb2RlLgoJKHJ0eF9lcXVhbF9mb3JfY3NlbGliX3ApOiBQYXNzIGRvd24gbW9kZXMgdG8gcmVjdXJzaXZlIGNhbGxzIG9mCgljc2VsaWJfbG9va3VwLgoJKGNzZWxpYl9sb29rdXBfbWVtKTogQ2FsbCB3cmFwX2NvbnN0YW50IG9uIHRoZSBydHggdGhhdCBpcyBwYXNzZWQgdG8KCWh0YWJfZmluZF9zbG90X3dpdGhfaGFzaC4KCShjc2VsaWJfbG9va3VwKTogTGlrZXdpc2UuCgoJQmFzZWQgb24gYSBwYXRjaCBmcm9tIEdlb2ZmIEtlYXRpbmcgPGdlb2Zma0ByZWRoYXQuY29tPjoKCSogbG9vcC5jIChiYXNpY19pbmR1Y3Rpb25fdmFyKTogSWYgYSBSRUcgaXMgc2V0IGZyb20gc29tZXRoaW5nCgl0aGF0IGlzIG5vdCBhIGJpdiwgdGhlbiB0aGUgUkVHIGlzIG5vdCBhIGJpdi4gIEV2ZW4gaWYgaXQgaXMKCWVhcmxpZXIgc2V0IGZyb20gc29tZXRoaW5nIHRoYXQgaXMgYSBiaXYuCgoyMDAwLTExLTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoZXh0cmFfb2Jqcyk6IEVuY2xvc2UgZXh0cmFfaGVhZGVycyBpbiBxdW90ZXMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMTEtMjcgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogYy1sZXguYyAoY2JfZW50ZXJfZmlsZSwgY2JfbGVhdmVfZmlsZSwgY2JfcmVuYW1lX2ZpbGUpOgoJQ29tYmluZSBpbnRvIHRoZSBuZXcgZnVuY3Rpb24gY2JfY2hhbmdlX2ZpbGUuCgkoaW5pdF9jX2xleCk6IFVwZGF0ZS4KCSogY3BwZmlsZXMuYyAoc3RhY2tfaW5jbHVkZV9maWxlKTogVXNlIF9jcHBfZG9fZmlsZV9jaGFuZ2UuCgkoY3BwX3N5c2hkcl9mbGFncyk6IERlbGV0ZS4KCSogY3BwaGFzaC5oIChfY3BwX2RvX2ZpbGVfY2hhbmdlKTogTmV3IHByb3RvdHlwZS4KCU1vdmUgc3RydWN0IGNwcF9idWZmZXIgaGVyZSBmcm9tLi4uCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX2J1ZmZlcik6IC4uLiBoZXJlLgoJKGVudW0gY3BwX2ZjX3JlYXNvbiwgc3RydWN0IGNwcF9maWxlX2xvYywKCXN0cnVjdF9jcHBfZmlsZV9jaGFuZ2UsIGNoYW5nZV9maWxlKTogTmV3LgoJKGVudGVyX2ZpbGUsIGxlYXZlX2ZpbGUsIHJlbmFtZV9maWxlLCBjcHBfc3lzaGRyX2ZsYWdzKTogRGVsZXRlLgoJKiBjcHBsaWIuYyAoZG9fbGluZSk6IFVwZGF0ZSBmb3IgbmV3IGNiX2NoYW5nZV9maWxlIGNhbGxiYWNrLgoJKF9jcHBfZG9fZmlsZV9jaGFuZ2UpOiBOZXcgZnVuY3Rpb24uCgkoX2NwcF9wb3BfYnVmZmVyKTogVXBkYXRlIHRvIHVzZSBpdC4KCSogY3BwbWFpbi5jIChtb3ZlX3ByaW50ZXIpOiBEZWxldGUuCgkobWFpbik6IFNldCB1cCBzaW5nbGUgY2FsbGJhY2sgY2JfY2hhbmdlX2ZpbGUuCgkoY2JfZW50ZXJfZmlsZSwgY2JfbGVhdmVfZmlsZSwgY2JfcmVuYW1lX2ZpbGUpOiBEZWxldGUuCgkoY2JfY2hhbmdlX2ZpbGUpOiBOZXcuCgkqIGZpeC1oZWFkZXIuYyAoY3VyX2ZpbGUsIGNiX2NoYW5nZV9maWxlKTogTmV3LgoJKHJlY29nbml6ZWRfZnVuY3Rpb24sIHJlYWRfc2Nhbl9maWxlKTogVXBkYXRlLgoJKiBzY2FuLWRlY2xzLmMgKHNjYW5fZGVjbHMpOiBVcGRhdGUuCgkqIHNjYW4uaCAocmVjb2duaXplZF9mdW5jdGlvbik6IFVwZGF0ZSBwcm90b3R5cGUuCgoyMDAwLTExLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChtYXJrX3RyZWVfaGFzaHRhYmxlKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmMgKG1hcmtfdHJlZV9oYXNodGFibGVfZW50cnkpOiBOZXcgZnVuY3Rpb24uCgkobWFya190cmVlX2hhc2h0YWJsZSk6IExpa2V3aXNlLgoKMjAwMC0xMS0yNyAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBkMzB2LXByb3Rvcy5oIChzcmVsYXRpb25hbF9zaV9vcGVyYXRvcik6IENvcnJlY3RseSBzcGVsbAoJZnVuY3Rpb24uCgkodXJlbGF0aW9uYWxfc2lfb3BlcmF0b3IpOiBEaXR0by4KCShyZWxhdGlvbmFsX3NpX29wZXJhdG9yKTogRGl0dG8uCgkoZDMwdl9leHBhbmRfcHJvbG9ndWUpOiBBZGQgcHJvdG90eXBlLgoJKGQzMHZfZXhwYW5kX2VwaWxvZ3VlKTogRGl0dG8uCgoJKiBkMzB2LmggKE9QVElNSVpBVElPTl9PUFRJT05TKTogVW5kbyBOb3ZlbWJlciAyMm5kIGNoYW5nZS4KCgkqIGQzMHYubWQgKG1vdmNjY2NfKik6IERlbGV0ZSBub3cgdW51c2VkIHBhdHRlcm5zLgoJKDY0IGJpdCBjb21wYXJpc29uIHNwbGl0dGVycyk6IFJld3JpdGUgdG8gdXNlIENPTkRfRVhFQyBpbnN0ZWFkIG9mCglJRl9USEVOX0VMU0UuCgkoZGVmaW5lX2NvbmRfZXhlYyk6IFVzZSAnYicgdG8gc2VsZWN0IGJyYW5jaCBmbGFncy4KCjIwMDAtMTEtMjYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cm5jbXAsIGV4cGFuZF9idWlsdGluX3N0cm5jcHkpOiBOZXcKCWZ1bmN0aW9ucy4KCShleHBhbmRfYnVpbHRpbik6IEhhbmRsZSBCVUlMVF9JTl9TVFJOQ1BZIGFuZCBCVUlMVF9JTl9TVFJOQ01QLgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9TVFJOQ1BZLCBCVUlMVF9JTl9TVFJOQ01QKTogTmV3IGVudHJpZXMuCgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBEZWNsYXJlIGJ1aWx0aW4KCXN0cm5jcHkgYW5kIHN0cm5jbXAuCgoJKiBleHRlbmQudGV4aSAoc3RybmNtcCwgc3RybmNweSk6IERvY3VtZW50IG5ldyBidWlsdGlucy4KCjIwMDAtMTEtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvZWxmb3MuaCAoQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBVc2UgYSBoYXNoIHRhYmxlLCBub3QKCWEgbGlzdCwgdG8ga2VlcCB0cmFjayBvZiB0aGUgc2VjdGlvbnMuCgkqIHRtLnRleGkgKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogRG9jdW1lbnQgdGhlIGZhY3QgdGhhdCB0aGUKCXBhcmFtZXRlciBwcm92aWRlZCB3aWxsIGFsd2F5cyBiZSBhIGNhbm9uaWNhbCBzdHJpbmcuCgoyMDAwLTExLTI2ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcG1hY3JvLmMgKGNwcF9zY2FuX2J1ZmZlcl9ub291dHB1dCk6IE9ubHkgc2NhbiB0aGUKCWN1cnJlbnQgYnVmZmVyLgoKMjAwMC0xMS0yNiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogbWFrZWZpbGUudm1zOiBSZW1vdmUgRUdDUyByZWZlcmVuY2VzLgoKMjAwMC0xMS0yNiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAob3V0cHV0X2ZpbGVfbmFtZXMpOiBOZXcgZnVuY3Rpb24uICBDb21wdXRlIG1pbmltYWwKCWNvbWJpbmF0aW9uIG9mIGRpcmVjdG9yeSBhbmQgZmlsZSBuYW1lIHRhYmxlIGFuZCBlbWl0IHRoZW0uCgkob3V0cHV0X2xpbmVfaW5mbyk6IFJlbW92ZSBjb2RlIHRvIGVtaXQgZGlyZWN0b3J5IGFuZCBmaWxlIG5hbWUKCXRhYmxlIGFuZCBjYWxsIG91dHB1dF9maWxlX25hbWVzIGluc3RlYWQuCgkoZmlsZV9pbmZvX2NtcCk6IEhlbHBlciBmdW5jdGlvbiB0byBzb3J0IGRpcmVjdG9yeSBuYW1lcy4KCjIwMDAtMTEtMjYgIE5laWwgQm9vdGgJPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBSZW1vdmUgbGFuZ19hc20uCgkoc3RydWN0IGNwcF9vcHRpb25zKTogUmVtb3ZlIGM4OS4gTmV3IG1lbWJlcnMgbGFuZywKCWV4dGVuZGVkX251bWJlcnMuCgkqIGNwcGV4cC5jIChwYXJzZV9udW1iZXIpOiBVc2UgdGhlbS4KCSogY3BwaGFzaC5oIChWQUxJRF9TSUdOKTogVXNlIHRoZW0uCgkqIGNwcGluaXQuYyAoc2V0X2xhbmcsIGNwcF9zdGFydF9yZWFkKTogVXBkYXRlLgoJKiBjcHBsZXguYyAocGFyc2Vfc3RyaW5nLCBfY3BwX2xleF90b2tlbik6IFVwZGF0ZS4KCSogY3BwbGliLmMgKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IFVwZGF0ZS4KCSogY3BwbWFjcm8uYyAocGFyc2VfYXJncyk6IFVwZGF0ZS4KCSogY3BwbWFpbi5jIChzY2FuX2J1ZmZlcik6IFVwZGF0ZS4KClN1biBOb3YgMjYgMTA6MDI6MzcgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCwgY2FzZSBDT05WRVJUX0VYUFIpOiBBbHdheXMgcmV0dXJuIHRyZWUgb2YKCXByb3BlciB0eXBlLgoKMjAwMC0xMS0yNiAgTmVpbCBCb290aAk8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgTUFZQkVfQ1BQTElCIGFuZCBtYXliZV9jcHBsaWIuCgkqIGMtZGVjbC5jOiBSZW1vdmUgcGFyc2VfaW4gZGVjbGFyYXRpb24uCgkqIGMtbGFuZy5jOiBTaW1pbGFybHkuCgkqIGMtbGV4LmM6IFNpbWlsYXJseS4KCSogYy1wYXJzZS5pbjogU2ltaWxhcmx5LgoJKiBjLXByYWdtYS5jOiBTaW1pbGFybHkuCgkqIGNvbmZpZ3VyZS5pbjogU2ltaWxhcmx5LgoJKiBjcC9NYWtlLWxhbmcuaW46IFNpbWlsYXJseS4KCSogY3Avc3Bldy5jOiBTaW1pbGFybHkuCgkqIGNwL2RlY2wyLmM6IFJlbW92ZSBjaGVjayBmb3IgbGFuZy1jKysgb3B0aW9uLgoJKiBjcC9sYW5nLXNwZWNzLmg6IFJlbW92ZSAtbGFuZy1jKysgZnJvbSBjYzFwbHVzIGNvbW1hbmQgbGluZS4KCSogY3AvbGV4LmMgKGxhbmdfaW5pdF9vcHRpb25zKTogV2l0aCBjcHBfcmVhZGVyX2luaXQsIGRlZmF1bHQgdG8gQysrLgoJKiBjLWxleC5oOiBBZGQgZGVjbGFyYXRpb24gb2YgcGFyc2VfaW4uCgkqIGNwcGluaXQuYzogQ2FsbCBzZXRfbGFuZyBhZnRlciBhbGxvY2F0aW5nIHBmaWxlLT5wZW5kaW5nLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTExLTI1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IFJlbW92ZSByZWR1bmRhbnQgdGVzdC4KCjIwMDAtMTEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5oIChERUNMX0NfSEFSRF9SRUdJU1RFUik6IE5ldy4KCSogYy1kZWNsLmMgKGZpbmlzaF9kZWNsKTogU2V0IGl0IGZvciBhc20gcmVnaXN0ZXIgdmFyaWFibGVzLgoJKiBjLXNlbWFudGljcy5jIChlbWl0X2xvY2FsX3Zhcik6IFRlc3QgaXQgd2hlbiBpbnN0YW50aWF0aW5nIG9uZS4KCjIwMDAtMTEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoY19leHBhbmRfYm9keSk6IFVzZSBERUNMX1NPVVJDRV9MSU5FIHJhdGhlciB0aGFuCglsaW5lbm8gZm9yIHRoZSBzdGFydCBvZiB0aGUgZnVuY3Rpb24uCgoyMDAwLTExLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGZpbGVfdGFibGUsIGZpbGVfdGFibGVfYWxsb2NhdGVkKTogUmVtb3ZlLgoJKGZpbGVfdGFibGVfYWxsb2NhdGVkKTogUmVtb3ZlLgoJKHN0cnVjdCBmaWxlX3RhYmxlKTogTmV3LgoJKGRlY2xfZmlsZV90YWJsZSwgbGluZV9maWxlX3RhYmxlKTogTmV3LgoJKHByaW50X2R3YXJmX2xpbmVfdGFibGUpOiBVc2UgdGhlbS4KCShzaXplX29mX2xpbmVfcHJvbG9nKTogTGlrZXdpc2UuCgkob3V0cHV0X2xpbmVfaW5mbyk6IExpa2V3aXNlLgoJKGFkZF9zcmNfY29vcmRzX2F0dHJpYnV0ZXMpOiBMaWtld2lzZS4KCShnZW5fc3VicHJvZ3JhbV9kaWUpOiBMaWtld2lzZS4KCShnZW5fdmFyaWFibGVfZGllKTogTGlrZXdpc2UuCgkoZHdhcmYyb3V0X2FkZF9saWJyYXJ5X3VuaXRfaW5mbyk6IExpa2V3aXNlLgoJKGR3YXJmMm91dF9saW5lKTogTGlrZXdpc2UuCgkobG9va3VwX2ZpbGVuYW1lKTogVGFrZSBhIHN0cnVjdCBmaWxlX3RhYmxlIGFyZ3VtZW50LgoJKGluaXRfZmlsZV90YWJsZSk6IE5ldy4KCShkd2FyZjJvdXRfaW5pdCk6IFVzZSBpdC4KCjIwMDAtMTEtMjUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGludm9rZS50ZXhpOiBVcGRhdGUgc2VxdWVuY2UgcG9pbnRzIHJlZmVyZW5jZXMuCgoyMDAwLTExLTI1ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGMtY29tbW9uLmM6IFJlbW92ZSBVU0VfQ1BQTElCIGNvbmRpdGlvbmFsIGluY2x1c2lvbnMuCgkqIGMtY29tbW9uLmg6IFNpbWlsYXJseS4KCSogYy1kZWNsLmM6IFNpbWlsYXJseS4KCSogYy1sYW5nLmM6IFNpbWlsYXJseS4KCSogYy1sZXguYzogU2ltaWxhcmx5LgoJKiBjLXBhcnNlLmluOiBTaW1pbGFybHkuCgkqIGMtcHJhZ21hLmM6IFNpbWlsYXJseS4KCSogYy1wcmFnbWEuaDogU2ltaWxhcmx5LgoJKiBnY2MuYzogU2ltaWxhcmx5LgoJKiB0b3BsZXYuYzogU2ltaWxhcmx5LgoJKiBjcC9jcC10cmVlLmg6IFNpbWlsYXJseS4KCSogY3AvZGVjbDIuYzogU2ltaWxhcmx5LgoJKiBjcC9sYW5nLXNwZWNzLmg6IFNpbWlsYXJseS4KCSogY3AvbGV4LmM6IFNpbWlsYXJseS4KCSogY3AvbGV4Lmg6IFNpbWlsYXJseS4KCSogY3Avc3Bldy5jOiBTaW1pbGFybHkuCgkqIGphdmEvbGFuZy1vcHRpb25zLmg6IFNpbWlsYXJseS4KCSogb2JqYy9sYW5nLXNwZWNzLmg6IFNpbWlsYXJseS4KCSogb2JqYy9vYmpjLWFjdC5jOiBTaW1pbGFybHkuCgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSBjb25maWd1cmUgb3B0aW9uLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMTEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZF9hbmFseXplXzEsIHNjaGVkX2FuYWx5emVfMiwgc2NoZWRfYW5hbHl6ZSk6CglSZXZlcnQgMjAwMC0xMS0yMiBjaGFuZ2UuCgoyMDAwLTExLTI1ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoRklYRURfUkVHUyk6IE1ha2UgdGhlIHRocmVlIGZsYWdzIHJlZ2lzdGVycwoJZml4ZWQuCgoyMDAwLTExLTI1ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCSogY29uZmlndXJlLmluIChBTExfTElOR1VBUyk6IFJlbW92ZSBlbl9HQiBhbmQgYWRkIHN2LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTExLTI1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAobXVsZGkzX3Y4cGx1cyk6IFJlbW92ZSBIIGNvbnN0cmFpbnQuCglIYW5kbGUgQ09OU1RfSU5UIGFzIHNlY29uZCBhcmd1bWVudC4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNldF9leHRlbmRzKTogUmVtb3ZlIGZpcnN0IGFyZ3VtZW50LgoJUHJvcGVybHkgaGFuZGxlIEFORCwgQ09OU1RfSU5UIGFuZCBDT05TVF9ET1VCTEUsIGhhbmRsZSBJT1IsIFhPUiBhbmQKCU1PVi4KCShzcGFyY19jaGVja182NCk6IEFib3J0IGlmIGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBSRUcuCglJZiBpdCBpcyBESW1vZGUgUkVHLCBsb29rIGF0IHRoZSBsb3dlciByZWdpc3RlciBvZiB0aGUgcmVnaXN0ZXIKCXBhaXIuCgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAobG9hZF9waWNfcmVnaXN0ZXIsIHJlc3RvcmVfcmVncywKCW91dHB1dF9yZXR1cm4sIHNwYXJjX3Y4cGx1c19zaGlmdCwgc3BhcmNfZnVuY3Rpb25fcHJvZmlsZXIsCglzcGFyY19mdW5jdGlvbl9ibG9ja19wcm9maWxlciwgc3BhcmNfYmxvY2tfcHJvZmlsZXIpOiBGaXggb3V0cHV0Cglmb3JtYXR0aW5nLgoKMjAwMC0xMS0yNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guaCAoVEFSR0VUX05PTkUpOiBOZXcuCgkoVEFSR0VUX1NXSVRDSEVTKTogRm9yIGFsbCB2YXJpYW50LXNlbGVjdGluZyBzd2l0Y2gsIHVzZQoJVEFSR0VUX05PTkUgdG8gcmVzZXQgYWxsIG90aGVyIHZhcmlhbnQtc2VsZWN0aW5nIHN3aXRjaC4gIEFkZGVkCgllbXB0eSBzdHJpbmdzIHRvIGF2b2lkIHdhcm5pbmdzLgoJKFRBUkdFVF9ERUZBVUxUKTogU2V0IHRvIFNIMV9CSVQuCgoJKiBNYWtlZmlsZS5pbiAoJChJTlRMX1RBUkdFVFMpKTogQWRkZWQgJChDT05GSUdfSCkgZm9yCglpbnNuLWNvZGVzLmguCgoJKiBnY2MvY29uZmlnL3NoL3NoLm1kIChzaWJjYWxsaSwgc2liY2FsbGlfcGNyZWwpOiBOZXcgaW5zbnMuCgkoc2liY2FsbF9wY3JlbCk6IE5ldyBpbnNuX2FuZF9zcGxpdC4KCShzaWJjYWxsLCBzaWJjYWxsX3ZhbHVlLCBzaWJjYWxsX2VwaWxvZ3VlKTogTmV3IGV4cGFuZHMuCgoJKiBjb25maWcvc2gvc2gubWQgKEdPVGFkZHIycGljcmVnLCBzeW1HT1QycmVnLCBzeW1HT1RPRkYycmVnLAoJc3ltUExUX2xhYmVsMnJlZywgY2FsbCwgY2FsbF92YWx1ZSk6IERvbid0IHNldAoJY3VycmVudF9mdW5jdGlvbl91c2VzX3BpY19vZmZzZXRfdGFibGUuCgkqIGNvbmZpZy9zaC9zaC5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IERvbid0IG1hcmsKCVBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNIGFzIGNhbGxfdXNlZCwgc28gdGhhdCBjYWxjX2xpdmVfcmVncwoJdGFrZXMgaXQgaW50byBhY2NvdW50LgoJKEZJTkFMSVpFX1BJQyk6IERlbGV0ZSwgdXNlbGVzcy4KCShMRUdJVElNQVRFX0NPTlNUQU5UX1ApOiBEZWxldGUsIHVudXNlZC4KCSogY29uZmlnL3NoL3NoLmMgKHNoX2V4cGFuZF9wcm9sb2d1ZSk6IERvbid0IHVzZQoJY3VycmVudF9mdW5jdGlvbl91c2VzX3BpY19vZmZzZXRfdGFibGUuICBEb24ndCBzcGVjaWFsLWNhc2UKCVBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNLiAgSW5pdGlhbGl6ZSBpdCBpZiBpdCdzIGV2ZXIgbGl2ZSBhbmQKCVBJQyBpcyBlbmFibGVkLgoJKHNoX2V4cGFuZF9lcGlsb2d1ZSwgaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBEb24ndAoJc3BlY2lhbCBjYXNlIFBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNLgoKMjAwMC0xMS0yNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+LCBOSUlCRSBZdXRha2EgIDxnbmlpYmVAbTE3bi5vcmc+CgoJKiBjb25maWcvc2gvc2gtcHJvdG9zLmggKHN5bWJvbF9yZWZfb3BlcmFuZCk6IERlY2xhcmUuCgkqIGNvbmZpZy9zaC9zaC5tZCAoVU5TUEVDX0NBTExFUik6IE5ldyBjb25zdGFudC4KCShjYWxsaV9wY3JlbCwgY2FsbF92YWx1ZWlfcGNyZWwpOiBVc2UgUElDX1JFRy4KCShjYWxsX3BjcmVsLCBjYWxsX3ZhbHVlX3BjcmVsKTogTmV3IGluc25fYW5kX3NwbGl0cy4KCShjYWxsLCBjYWxsX3ZhbHVlKTogVXNlIHRoZW0uCgkoY2FsbF9zaXRlKTogTmV3IGV4cGFuZC4KCShzeW1fbGFiZWwycmVnLCBzeW1QTFRfbGFiZWwycmVnKTogQWRqdXN0IHRvIGhvbGQgY2FsbF9zaXRlcy4KCSogY29uZmlnL3NoL3NoLmggKE9VVFBVVF9BRERSX0NPTlNUX0VYVFJBKSBbVU5TUEVDX0NBTExFUl06CglPdXRwdXQgY2FsbF9zaXRlIGxhYmVsLgoJKFBSRURJQ0FURV9DT0RFUyk6IEFkZGVkIHN5bWJvbF9yZWZfb3BlcmFuZC4KCSogY29uZmlnL3NoL3NoLmMgKHN5bWJvbF9yZWZfb3BlcmFuZCk6IERlZmluZS4KCSogZW1pdC1ydGwuYyAodHJ5X3NwbGl0KTogUHJvcGFnYXRlIENBTExfSU5TTl9GVU5DVElPTl9VU0FHRQoJdG8gQ0FMTF9JTlNOcyBpbiB0aGUgc3BsaXQgc2VxdWVuY2UuCgoyMDAwLTExLTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYyAodjg1MC0qLSopOiBEZWZpbmUgY190YXJnZXRfb2JqcyBhbmQKCWN4eF90YXJnZXRfb2Jqcy4KCgkqIGNvbmZpZy92ODUwL3Qtdjg1MDogRGVmaW5lIGhvdyB0byBidWlsZCB2ODUwLWMubwoKCSogY29uZmlnL3Y4NTAvdjg1MC5oIChzdHJ1Y3QgZGF0YV9hcmVhX3N0YWNrX2VsZW1lbnQpOiBNb3ZlCglkZWZpbml0aW9uIGhlcmUgZnJvbSB2ODUwLmMuCgoJKiBjb25maWcvdjg1MHY4NTAuYzogSW5jbHVkZSBnY2MuaCB0byBhdm9pZCBjb21waWxlIHRpbWUKCXdhcm5pbmcuCgkocHVzaF9kYXRhX2FyZWEpOiBNb3ZlIHRvIHY4NTAtYy5jLgoJKHBvcF9kYXRhX2FyZWEpOiBNb3ZlIHRvIHY4NTAtYy5jLgoJKG1hcmtfY3VycmVudF9mdW5jdGlvbl9hc19pbnRlcnJ1cHQpOiBNb3ZlIHRvIHY4NTAtYy5jLgoJKEdIU19kZWZhdWx0X3NlY3Rpb25fbmFtZXMpOiBBbGxvdyB0byBiZSBleHBvcnRlZC4KCShHSFNfY3VycmVudF9zZWN0aW9uX25hbWVzKTogQWxsb3cgdG8gYmUgZXhwb3J0ZWQuCgkoZGF0YV9hcmVhX3N0YWNrX2VsZW1lbnRzKTogQWxsb3cgdG8gYmUgZXhwb3J0ZWQuCgkoZ2hzX3ByYWdtYV9zZWN0aW9uKTogTW92ZSB0byB2ODUwLWMuYy4KCShnaHNfcHJhZ21hX2ludGVycnVwdCk6IE1vdmUgdG8gdjg1MC1jLmMuCgkoZ2hzX3ByYWdtYV9zdGFydHRkYSk6IE1vdmUgdG8gdjg1MC1jLmMuCgkoZ2hzX3ByYWdtYV9zdGFydHNkYSk6IE1vdmUgdG8gdjg1MC1jLmMuCgkoZ2hzX3ByYWdtYV9zdGFydHpkYSk6IE1vdmUgdG8gdjg1MC1jLmMuCgkoZ2hzX3ByYWdtYV9lbmR0ZGEpOiBNb3ZlIHRvIHY4NTAtYy5jLgoJKGdoc19wcmFnbWFfZW5kc2RhKTogTW92ZSB0byB2ODUwLWMuYy4KCShnaHNfcHJhZ21hX2VuZHpkYSk6IE1vdmUgdG8gdjg1MC1jLmMuCgoJKiBjb25maWcvdjg1MC92ODUwLWMuYzogTmV3IGZpbGU6IENvbnRhaW5zIHY4NTAgc3BlY2lmaWMKCXByYWdtYSBwYXJzaW5nIGZ1bmN0aW9ucy4KCjIwMDAtMTEtMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjIChleHRyYV9vYmpzKTogUmVtb3ZlIGR1cGxpY2F0ZSBkZXNjcmlwdGlvbi4KCShjX3RhcmdldF9vYmpzKTogTmV3IHZhcmlhYmxlLiAgQ29udGFpbnMgdGFyZ2V0IHNwZWNpZmljCglvYmplY3QgZmlsZXMgZm9yIHRoZSBnY2MgQyBjb21waWxlciBvbmx5LgoJKGN4eF90YXJnZXRfb2Jqcyk6IE5ldyB2YXJpYWJsZS4gIENvbnRhaW5zIHRhcmdldCBzcGVjaWZpYwoJb2JqZWN0IGZpbGVzIGZvciB0aGUgZ3h4IEMrKyBjb21waWxlciBvbmx5LgoKCSogY29uZmlndXJlLmluIChjX3RhcmdldF9vYmpzKTogU3Vic3RpdHV0ZSBpbiB0aGUgbWFrZWZpbGUuCgkoY3h4X3RhcmdldF9vYmpzKTogU3Vic3RpdHV0ZSBpbiB0aGUgbWFrZWZpbGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIE1ha2VmaWxlLmluIChDX1RBUkdFVF9PQkpTKTogRGVmaW5lIGFuZCBpbml0aWFsaXplIGZyb20KCWNfdGFyZ2V0X29ianMuCgkoQ1hYX1RBUkdFVF9PQkpTKTogRGVmaW5lIGFuZCBpbml0aWFsaXplIGZyb20KCWN4eF90YXJnZXRfb2Jqcy4KCShDX0FORF9PQkpDX09CSlMpOiBJbmNsdWRlIENfVEFSR0VUX09CSlMuCgoJKiBjcC9NYWtlLWxhbmcuaW4gKENYWF9DX09CSlMpOiBJbmNsdWRlIENYWF9UQVJHRVRfT0JKUykuCgoJKiB0bS50ZXhpIChSRUdJU1RFUl9UQVJHRVRfUFJBR01BUyk6IEFkZCBwYXJhZ3JhcGggZXhwbGFpbmluZwoJYWJvdXQgaG93IHRoZSB1c2Ugb2YgdGhlICdjX2xleCcgZnVuY3Rpb24gcmVxdWlyZXMgdGhlIHVzZSBvZgoJdGhlIHRhcmdldCBzcGVjaWZpYywgbGFuZ3VhZ2Ugc3BlY2lmaWMgb2JqZWN0IGZpbGVzIGZlYXR1cmUgb2YKCXRoZSBjb25maWd1cmF0aW9uIG1lY2hhbmlzbS4KCkZyaSBOb3YgMjQgMTg6NTA6NTggMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGdjYy5jIChwcm9jZXNzX2NvbW1hbmQpOiBVc2UgRl9PSywgbm90IFJfT0suCgoyMDAwLTExLTI0ICBBcm5vIEouIEtsYWFzc2VuICA8YXJub0BoZWhvLnNudi5qdXNzaWV1LmZyPgoKCSogZmxvdy5jIChwcmludF9ydGxfYW5kX2Fib3J0KTogUmVtb3ZlIEFOU0lpc20uCgpGcmkgTm92IDI0IDE5OjU0OjM2IDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmggKEdFTkVSQUxfUkVHSVNURVJfUCwKCUdFTkVSQUxfT1JfQVBfUkVHSVNURVJfUCwgRlBfUkVHSVNURVJfUCwgWERfUkVHSVNURVJfUCwKCUZQX09SX1hEX1JFR0lTVEVSX1AsIEZQX0FOWV9SRUdJU1RFUl9QKTogTmV3IG1hY3Jvcy4gIFVzZSB0aGVtCglhbGwgb3Zlci4KCShTUEVDSUFMX1JFRyk6IFJlbmFtZWQgdG8gU1BFQ0lBTF9SRUdJU1RFUl9QLgoJKiBjb25maWcvc2gvc2guYzogVXNlIG5ldyBtYWNyb3MuCgkqIGNvbmZpZy9zaC9zaC5tZDogTGlrZXdpc2UuCgpGcmkgTm92IDI0IDE5OjQ2OjE2IDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLm1kOiBDbG9iYmVyIE1BQ0hfUkVHIGFuZCBNQUNMX1JFRyBpbiBTSW1vZGUsCglpbnN0ZWFkIG9mIGp1c3QgTUFDSF9SRUcgaW4gREltb2RlLiAgQWx3YXlzIHJlZmVyIHRvIEZQU0NSX1JFRwoJaW4gUFNJbW9kZS4KCkZyaSBOb3YgMjQgMjI6Mzc6NDEgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dF90c3RoaSxvdXRfdHN0c2kpOiBUZXN0IHNpbXBsaWZpY2F0aW9uIGJ1ZwoJZml4ZWQuCgkobWFjaGluZV9kZXBlbmRlbnRfcmVvcmcpOiBXcm9uZyBvcHRpbWl6YXRpb24gYmFzZWQgb24KCU5PVElDRV9VUERBVEVfQ0MgcmVtb3ZlZC4KCkZyaSBOb3YgMjQgMTk6NDg6MDkgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIGp1bXAuYyAoZGVsZXRlX2NvbXB1dGF0aW9uKTogUmUtaW5zdGF0ZSBkZWxldGlvbiBvZiBmZWVkaW5nIGluc24uCgkoZGVsZXRlX2luc24pOiBMb29rIGZvciBSRUdfTEFCRUwgbm90ZXMuCgkocmVkaXJlY3RfdGFibGVqdW1wKTogRGVsZXRlIGZlZWRpbmcgaW5zbnMuCgoyMDAwLTExLTI0ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGNhbGxfcG9wXzAsIGNhbGxfcG9wXzEsIGNhbGxfdmFsdWVfcG9wXzAsCgljYWxsX3ZhbHVlX3BvcF8xKTogTWFrZSBzdXJlIG9wZXJhbmQgbnVtYmVycyBhcmUgY29udGlndW91cy4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9yYW5nZV90ZXN0KTogQXZvaWQgY3Jhc2ggaWYgTEhTIG9yIFJIUyBpcyBudWxsLgoKCSogcmVsb2FkMS5jIChjb25mbGljdHNfd2l0aF9vdmVycmlkZSk6IE5ldyBmdW5jdGlvbi4KCShlbWl0X2lucHV0X3JlbG9hZF9pbnNucyk6IFVzZSBpdCB0byB0aWdodGVuIHRlc3QgZm9yIHZhbGlkaXR5CglvZiBzdWJzdGl0dXRpbmcgaW50byBvdXRwdXQgb2YgcHJldmlvdXMgaW5zbi4KCgkqIGhhaWZhLXNjaGVkLmMgKHN0cnVjdCByZWFkeV9saXN0KTogTmV3LgoJKHJlYWR5X2xhc3Rwb3MsIHJlYWR5X2FkZCwgcmVhZHlfcmVtb3ZlX2ZpcnN0LCByZWFkeV9zb3J0KTogTmV3IHN0YXRpYwoJZnVuY3Rpb25zLgoJKHNjaGVkdWxlX2luc24pOiBSZXBsYWNlIGFyZ3MgUkVBRFkgYW5kIE5fUkVBRFkgd2l0aCBhIHBvaW50ZXIgdG8gYQoJcmVhZHlfbGlzdDsgcmV0dXJuIHZvaWQuICBVc2UgdGhlIG5ldyBmdW5jdGlvbnMgdG8gYWNjZXNzIHRoZSByZWFkeQoJbGlzdC4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCgkocXVldWVfdG9fcmVhZHksIGRlYnVnX3JlYWR5X2xpc3QpOiBMaWtld2lzZS4KCShzY2hlZHVsZV9ibG9jayk6IEluaXRpYWxpemUgYSByZWFkeV9saXN0IHN0cnVjdHVyZS4gIFVzZSBuZXcKCWZ1bmN0aW9ucyB0byBhY2Nlc3MgaXQuCgkobWF4X3ByaW9yaXR5KTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCShzY2hlZHVsZV9pbnNuKTogRG9uJ3Qgc2V0IGl0LgoKCSogYy1jb21tb24uYyAodmVyaWZ5X3RyZWUpOiBEb24ndCByZWN1cnNlIGludG8gQ09OU1RSVUNUT1JzLgoKCSogY29tYmluZS5jIChjYW50X2NvbWJpbmVfaW5zbl9wKTogTmV3IGZ1bmN0aW9uLgoJKHRyeV9jb21iaW5lKTogVXNlIGl0LgoKCSogTWFrZWZpbGUuaW4gKGMtY29tbW9uLm8pOiBEZXBlbmQgb24gJChPQlNUQUNLX0gpLgoJKiBjLWNvbW1vbi5jIChjLW9ic3RhY2suYyk6IEluY2x1ZGUgIm9ic3RhY2suaCIuCgkoc3RydWN0IHJldmVyc2VfdHJlZSk6IERlbGV0ZS4KCShyZXZlcnNlX2xpc3QsIHJldmVyc2VfbWF4X2RlcHRoKTogRGVsZXRlLgoJKGJ1aWxkX3JldmVyc2VfdHJlZSwgY29tbW9uX2FuY2VzdG9yLCBtb2RpZnlfb2spOiBEZWxldGUgZnVuY3Rpb25zLgoJKHN0cnVjdCB0bGlzdCwgc3RydWN0IHRsaXN0X2NhY2hlKTogTmV3LgoJKHRsaXN0X29ic3RhY2ssIHRsaXN0X2ZpcnN0b2JqLCB3YXJuZWRfaWRzLCBzYXZlX2V4cHJfY2FjaGUpOiBOZXcuCgkoYWRkX3RsaXN0LCBtZXJnZV90bGlzdCwgdmVyaWZ5X3RyZWUsIHdhcm5pbmdfY2FuZGlkYXRlX3AsCgl3YXJuX2Zvcl9jb2xsaXNpb25zLCB3YXJuX2Zvcl9jb2xsaXNpb25zXzEsIG5ld190bGlzdCk6IE5ldwoJc3RhdGljIGZ1bmN0aW9ucy4KCSh2ZXJpZnlfc2VxdWVuY2VfcG9pbnRzKTogUmV3cml0dGVuLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBEb24ndCBsb3NlIHBvc3NpYmx5IGltcG9ydGFudCBzZXF1ZW5jZQoJcG9pbnRzIHdoZW4gcmVtb3Zpbmcgb25lIGFybSBvZiBUUlVUSF9PUklGX0VYUFJzIG9yIFRSVVRIX0FORElGX0VYUFJzLgoKMjAwMC0xMS0yNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogZ2NjL2NzZS5jIChjc2VfaW5zbik6IFJlbW92ZWQgY29udmVyc2lvbiBvZiBSRUdfRVFVSVYgdG8gUkVHX0VRVUFMCgl3aGVuIHJldmVyc2luZyBhIHJlZ2lzdGVyLXRvLXJlZ2lzdGVyIGNvcHkuICBSZXZlcnNhbCBub3cgZGlzYWJsZWQKCXdoZW4gdGhlIHByZXZpb3VzIGluc3RydWN0aW9uIGhhcyBhIFJFR19FUVVJVi4KCjIwMDAtMTEtMjQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXBhcnNlLmluICh1bmFyeV9leHByKTogTW92ZSBWQV9BUkcgZnJvbSBoZXJlIC4uLgoJKHByaW1hcnkpOiAuLi4gdG8gaGVyZS4KCjIwMDAtMTEtMjMgIEdyYWhhbSBTdG90dCAgPGdyYWhhbXNAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3IpOiBJZiBhIGZpZWxkIGlzIG5vbiBhZGRyZXNzYWJsZSBhbmQKCXRoZSB0YXJnZXQgaXMgYSBNRU0gdXNlIE1FTV9BTElBU19TRVQgb3RoZXJ3aXNlIHVzZSBnZXRfYWxpYXNfc2V0LgoKMjAwMC0xMS0yMyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBmbG93LmMgKHByaW50X3J0bF9hbmRfYWJvcnQpOiBOZXcgZnVuY3Rpb24uCgkodmVyaWZ5X3dpZGVfcmVnLCB2ZXJpZnlfbG9jYWxfbGl2ZV9hdF9zdGFydCk6IFRyeSB0byBkdW1wIG1vcmUKCWluZm9ybWF0aW9uIGJlZm9yZSBhYm9ydGluZy4KCjIwMDAtMTEtMjMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZW1pdC1ydGwuYyAoZ2VuX2xvd3BhcnRfY29tbW9uKTogVXNlIHdvcmQgMCBpZiByZWdpc3RlciBtb2RlCglpcyBuYXJyb3dlciB0aGFuIHJlcXVlc3RlZCBtb2RlLgoJKGdlbl9oaWdocGFydCk6IEFib3J0IGlmIHJlZ2lzdGVyIG1vZGUgaXMgbmFycm93ZXIgdGhhbgoJcmVxdWVzdGVkIG1vZGUuCgoyMDAwLTExLTIzICBHcmFoYW0gU3RvdHQgIDxncmFoYW1zQHJlZGhhdC5jb20+CgoJKiBjc2UuYyAoY3NlX2luc24pOiBJbml0aWFsaXplIGFsbCByZWdjb3N0IHZhcmlhYmxlcy4KCUZpeCBhIHR5cG8gYWRkIG1pc3NpbmcgJz0nLgoJT25seSBjb21wYXJlIGNvc3RzIGlmIHRoZXJlIGlzIGEgcmVwbGFjZW1lbnQgaW5zbi4KClRodSBOb3YgMjMgMDQ6MzM6MzMgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBmaW5hbC5jIChvdXRwdXRfYWRkcl9jb25zdCkgW0xBQkVMX1JFRl06IFNpbXBsaWZ5LgoJW01JTlVTXTogRW5jbG9zZSBub24tQ09OU1RfSU5UcyBpbiBwYXJlbnRoZXNlcy4KCVtkZWZhdWx0XTogVHJ5IE9VVFBVVF9BRERSX0NPTlNUX0VYVFJBLgoJKiB0bS50ZXhpIChPVVRQVVRfQUREUl9DT05TVF9FWFRSQSk6IERvY3VtZW50IGl0LgoJKiB2YXJhc20uYyAoZGVjb2RlX3J0eF9jb25zdCkgW0NPTlNUXTogSWYgaXQncyBub3Qgc29tZXRoaW5nCglQTFVTIG9yIE1JTlVTIGEgQ09OU1RfSU5ULCB1c2UgdGhlIHdob2xlIENPTlNUIHdpdGggb2Zmc2V0IDAKCWluc3RlYWQgb2YgYWJvcnQoKWluZy4KCSogc2guYyAob3V0cHV0X3BpY19hZGRyX2NvbnN0KTogUmVtb3ZlZC4gIEZpeGVkIGFsbCBjYWxsZXJzLgoJKiBzaC5oIChPVVRQVVRfQUREUl9DT05TVF9FWFRSQSk6IE5ldy4gIEhhbmRsZSB0aGUgVU5TUEVDcwoJZm9ybWVybHkgaGFuZGxlZCBpbiBvdXRwdXRfcGljX2FkZHJfY29uc3QuCgkqIHNoLm1kIChzeW1fbGFiZWwycmVnLCBzeW1QTFRfbGFiZWwycmVnKTogRW5jbG9zZSBVTlNQRUMKCW9wZXJhbmRzIG9mIE1JTlVTIGluIENPTlNUcyBzbyB0aGF0IGRlY29kZV9ydHhfY29uc3QoKSB3aWxsCglhY2NlcHQgdGhlbS4KClRodSBOb3YgMjMgMDQ6MTA6MzAgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2gubWQgKG1vdmFfY29uc3QpOiBOZXcgcGF0dGVybi4KCShHT1RhZGRyMnBpY3JlZyk6IFVzZSBpdC4KCSogY29uZmlnL3NoL3NoLmMgKGJyb2tlbl9tb3ZlKTogTWF0Y2ggaXQuCgkobW92YV9wKTogRG9uJ3QgbWF0Y2ggaXQuCgkobWFjaGluZV9kZXBlbmRlbnRfcmVvcmcpOiBBZGp1c3QgaXQuCgpUaHUgTm92IDIzIDAyOjA5OjA5IDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmggKEZJUlNUX0dFTkVSQUxfUkVHLCBMQVNUX0dFTkVSQUxfUkVHKTogTmV3LgoJTW92ZWQgbW9zdCByZWdpc3Rlci1udW1iZXIgI2RlZmluZXMuLi4KCSogY29uZmlnL3NoL3NoLm1kIChkZWZpbmVfY29uc3RhbnRzKTogLi4uIGhlcmUuICBVc2UgbWFjcm9zIHRvCglyZWZlciB0byByZWdpc3RlcnMgYW5kIHVuc3BlY3MuCgkqIGNvbmZpZy9zaC9zaC5jOiBMaWtld2lzZS4KClRodSBOb3YgMjMgMDE6MDE6MzIgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChIT1NUX0NGTEFHUyk6IEFkZCAtREdFTkVSQVRPUl9GSUxFLgoJKHJ0bC5vLCBwcmludC1ydGwubywgYml0bWFwLm8sIG9ic3RhY2subyk6IEJ1aWxkIHdpdGggLURHRU5FUkFUT1JfRklMRS4KCShhbGxvY2EubywgdmZwcmludGYubywgZ2djLW5vbmUubywgZXJyb3JzLm8pOiBMaWtld2lzZS4KCShzcGxheS10cmVlLm8sIGhhc2gubyk6IExpa2V3aXNlLgoJR0NPTkZJR19IOiBOZXcuCgkocnRsLm8sIHByaW50LXJ0bC5vKTogRGVwZW5kIG9uICQoR0NPTkZJR19IKSBpbnN0ZWFkIG9mICQoQ09ORklHX0gpLgoJKGJpdG1hcC5vLCBvYnN0YWNrLm8sIHZmcHJpbnRmLm8sIGdnYy1ub25lLm8sIGVycm9ycy5vKTogTGlrZXdpc2UuCgkoaGFzaHRhYi5vKTogTGlrZXdpc2UuCgkoZ2Nvdi5vKTogRGVwZW5kIG9uICQoQ09ORklHX0gpLgoJKiBjb25maWd1cmUuaW46ICNpbmNsdWRlIGluc24tY29kZXMuaCBpbiB0bS5oLgoKMjAwMC0xMS0yMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9lbmNvZGVfY2FsbF9hdHRyaWJ1dGUpOiBNYWtlICduZXdzdHInIGEKCWNvbnN0IGNoYXIgKiB0byBhdm9pZCBhIGNvbXBpbGUgdGltZSB3YXJuaW5nLgoKCSogY29uZmlnL2FybS9hcm0ubWQgKGRlZmluZV9jb25zdGFudHMpOiBEZWZpbmUgc3ltYm9saWMgbmFtZXMgZm9yCgl0aGUgbGluayByZWdpc3RlciwgbGFzdCBpbnRlZ2VyIHJlZ2lzdGVyIGFuZCB0aGUgZmFrZSBDQyByZWdpc3Rlci4KCVVwZGF0ZSBwYXR0ZXJucyB0byB1c2UgdGhlc2Ugc3ltYm9saWMgbmFtZXMuCgoyMDAwLTExLTIyICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jICh0cmlncmFwaF9vayk6IEVuc3VyZSB3ZSBkb24ndCB3YXJuIHR3aWNlLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9idWZmZXIpOiBOZXcgbWVtYmVyIGxhc3RfV3RyaWdyYXBocy4KCjIwMDAtMTEtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZF9hbmFseXplXzEpOiBEb24ndCBzcGVjaWFsLWNhc2UgY2FsbHMKCWZvciBjbG9iYmVyaW5nIHJlZ2lzdGVycy4KCShzY2hlZF9hbmFseXplXzIpOiBMaWtld2lzZS4KCShzY2hlZF9hbmFseXplKTogWmFwIHJlZ19sYXN0X3VzZXMgYW5kIHJlZ19sYXN0X3NldHMgYWZ0ZXIgY2FsbHMuCgoyMDAwLTExLTIyICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAc2lieXRlLmNvbT4KCSAgICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGdjYy5jICh2YWxpZGF0ZV9zd2l0Y2hlcyk6IFZhbGlkYXRlIG11bHRpcGxlIHN3aXRjaGVzIG5hbWVkCglpbiAnfCcgKG9yKSBleHByZXNzaW9ucyBpbiBzcGVjcy4KCShoYW5kbGVfYnJhY2VzKTogSWYgbW9yZSB0aGFuIDEgYWx0ZXJuYXRpdmUgaW4gYSAnfCcgc3BlYwoJbWF0Y2hlcywgY2FsbCBkb19zcGVjMSBqdXN0IG9uY2UuCgoyMDAwLTExLTIyICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAcmVkaGF0LmNvbT4KCgkqIGQzMHYuaCAoVEFSR0VUX1NXSVRDSEVTKTogQWRkIGRvY3VtZW50YXRpb24gc3RyaW5ncy4KCShUQVJHRVRfT1BUSU9OUyk6IERpdHRvLgoJKE9QVElNSVpBVElPTl9PUFRJT05TKTogVGVtcG9yYXJpbHkgdHVybiBvZmYgLWZyZW5hbWUtcmVnaXN0ZXJzIGlmCgktTzMuCgpXZWQgTm92IDIyIDA2OjQwOjU2IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHBhLmMgKGhwcGFfZW5jb2RlX2xhYmVsKTogQWNjb3VudCBmb3IgYWRkaXRpb24gb2YgZW5jb2RpbmcKCWNoYXJhY3RlciB3aGVuIGFsbG9jYXRpbmcgcGVyc2lzdGVudCBzcGFjZSBmb3IgdGhlIG5ldyBsYWJlbAoJbmFtZS4KCjIwMDAtMTEtMjIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBNYWtlZmlsZS5pbiwgY29uZmlnLmdjYywgY29uZmlndXJlLmluOiBFeHB1bmdlIHJlbWFpbmluZwoJdHJhY2VzIG9mIGZhY2lsaXR5IGZvciBydW5uaW5nIE1EIGZpbGVzIHRocm91Z2ggQyBwcmVwcm9jZXNzb3IuCgoyMDAwLTExLTIyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY292LnRleGk6IEFkZCBtYWdpYyBjb21tZW50cyBmb3IgdGV4aTJwb2QucGwuCgkqIE1ha2VmaWxlLmluOiBBZGQgcnVsZXMgdG8gZ2VuZXJhdGUgYW5kIGluc3RhbGwgZ2Nvdi4xLgoJKiBnY292LjE6IE5ldyAoZ2VuZXJhdGVkKSBmaWxlLgoKMjAwMC0xMS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJlZ3JlbmFtZS5jIChzY2FuX3J0eF9yZWcpOiBUZXJtaW5hdGUgdGhlIGNoYWluIHJhdGhlciB0aGFuCglhYm9ydCBvbiBtYXJrX3JlYWQgd2l0aCBOT19SRUdTLgoKMjAwMC0xMS0yMSAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogZml4aW5jL2ZpeHRlc3RzLmMgKFRFU1RfRk9SX0ZJWF9QUk9DX0hFQUQpOiBGaXggdG8gYWxsb3cKCWNvbXBpbGF0aW9uIHdpdGggb2xkZXIgY29tcGlsZXJzLCBzdWNoIGFzIC9iaW4vY2Mgb24gU3VuT1MuCgkqIGZpeGluYy9maXhmaXhlcy5jIChGSVhfUFJPQ19IRUFEKTogRGl0dG8uCgoyMDAwLTExLTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdmFyYXNtLmMgKHJlY29yZF9jb25zdGFudCk6IFBhZCB0aGUgY29uc3RydWN0ZWQKCWNvbnN0YW50X2Rlc2NyaXB0b3IgYXBwcm9wcmlhdGVseS4KCldlZCBOb3YgMjIgMDA6NTI6NTUgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIHJ0bC5oICh0cmF2ZXJzZV9tZF9jb25zdGFudHMpOiBEZWNsYXJlLgoJKHN0cnVjdCBtZF9jb25zdGFudCk6IERlZmluZS4KCSogTWFrZWZpbGUuaW4gKEhPU1RfUlRMKTogQWRkIGhhc2h0YWIubyAuCgkoT0JKUyk6IEFkZCBoYXNodGFiLm8gLgoJKGhhc2h0YWIubyk6IE5ldyBydWxlLgoJKHJ0bC5vKTogRGVwZW5kcyBvbiBIQVNIVEFCX0guCgkqIHJ0bC5jIChoYXNodGFiLmgpOiAjaW5jbHVkZS4KCShtZF9jb25zdGFudHMpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGRlZl9oYXNoLCBkZWZfbmFtZV9lcV9wLCByZWFkX2NvbnN0YW50cyk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKHRyYXZlcnNlX21kX2NvbnN0YW50cyk6IE5ldyBmdW5jdGlvbi4KCShyZWFkX25hbWUpOiBEbyBjb25zdGFudCBleHBhbnNpb24uCgkocmVhZF9ydHgpOiBSZWNvZ25pemUgZGVmaW5lX2NvbnN0YW50cy4KCSogZ2VuY29kZXMuYyAocHJpbnRfbWRfY29uc3RhbnQpOiBOZXcgZnVuY3Rpb24uCgkobWFpbik6IEVtaXQgI2RlZmluZXMgZm9yIGFsbCBjb25zdGFudCBkZWZpbml0aW9ucyBlbmNvdW50ZXJlZC4KCSogbWQudGV4aSAoQ29uc3RhbnQgRGVmaW5pdGlvbnMpOiBOZXcgbm9kZS4KCSogZ2Vuc3VwcG9ydC5jICh4Y2FsbG9jKTogTmV3IGZ1bmN0aW9uLgoKMjAwMC0xMS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9zcGxpdF90Zm1vZGVfZnJvYnNpZ24pOiBOZXcuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaDogRGVjbGFyZSBpdC4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChhYnN0Zl9pbnRlcm5hbCk6IFVzZSBpdC4KCShuZWd0Zl9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKGFuZG5vdGRpMyk6IFVuc3RhciB0aGUgbmFtZS4KCShtb3Z0Zl9pbnRlcm5hbCk6IEFkZCBvL0cgYWx0ZXJuYXRpdmUuCgoyMDAwLTExLTIxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogc3RyaW5ncG9vbC5jIChzdHJpbmdwb29sX3N0YXRpc3RpY3MpOiBBbHNvIHJlcG9ydCBudW1iZXIgYW5kCglwZXJjZW50YWdlIG9mIGVudHJpZXMgd2hpY2ggYXJlIGlkZW50aWZpZXJzLgoKMjAwMC0xMS0yMSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiBnY3NlLmMgKGhvaXN0X2V4cHJfcmVhY2hlc19oZXJlX3ApOiBEbyBub3QgbWFyayBleHByX2JiIGFzCgl2aXNpdGVkIGJlZm9yZSB2aXNpdGluZyBpdC4KCjIwMDAtMTEtMjEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5oOiBBY2NlcHQgVEFSR0VUX0NQVV9hcm05dGRtaSwKCVRBUkdFVF9DUFVfc3Ryb25nYXJtMTEwIGFuZCBUQVJHRVRfU1BVX3N0cm9uZ2FybTExMDAuCgoJKiBjb25maWcuZ2NjOiBBY2NlcHQgLS13aXRoLWNwdT1hcm05IGFuZCAtLXdpdGgtY3B1PWFybTl0ZG1pLgoKMjAwMC0xMS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfdW5zYWZlX2Zvcl9yZWV2YWwpOiBOZXcgZnVuY3Rpb24uCgkoYWRkX2NfdHJlZV9jb2Rlcyk6IFJlZ2lzdGVyIGl0LgoJKiBjLWNvbW1vbi5oOiBEZWNsYXJlIGl0LgoJKiB0cmVlLmMgKGxhbmdfdW5zYWZlX2Zvcl9yZWV2YWwpOiBOZXcgaG9vay4KCSh1bnNhZmVfZm9yX3JlZXZhbCk6IENhbGwgaXQuCgkqIHRyZWUuaDogRGVjbGFyZSBpdC4KCjIwMDAtMTEtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGkzODZfc2ltcGxpZnlfZHdhcmZfYWRkcik6IFNpbXBsaWZ5IEBHT1QKCXJlZmVyZW5jZXMgYXMgd2VsbC4KCjIwMDAtMTEtMjEgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogZG9faW5jbHVkZXM6IFJldmVydCB0byB1c2luZyBjcHBfcmVhZF9maWxlLgoKMjAwMC0xMS0yMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBsb29wLmMgKGNvbnNlY19zZXRzX2dpdik6IElmIHRoZSByZWcgd2UncmUgZXhhbWluaW5nIGlzIGFueXRoaW5nCglidXQgVU5LTk9XTl9JTkRVQ1QsIGRvIG5vdGhpbmcuCglSZXNldCB0aGUgcmVnJ3MgdHlwZSB0byBVTktOT1dOX0lORFVDVCBiZWZvcmUgcmV0dXJuaW5nLgoKCU1vc3RseSBmcm9tIFZsYWRpbWlyIE1ha2Fyb3YgKHZtYWthcm92QHJlZGhhdC5jb20pCgkqIGlhNjQubWQgKGF0dHIgaXRhbml1bV9jbGFzcyk6IERlZmluZSBpbnNuIHR5cGVzIGFzIGRlc2NyaWJlZCBpbgoJSXRhbml1bSBkb2NzLgoJKGFsbCBpbnNuIHBhdHRlcm5zKTogVXNlIGl0YW5pdW1fY2xhc3MsIG5vdCB0eXBlIGF0dHJpYnV0ZXMuCglPY2Nhc2lvbmFsbHkgc3BsaXQgYWx0ZXJuYXRpdmVzIGFzIG5lY2Vzc2FyeS4KCShhdHRyIHR5cGUpOiBDb21wdXRlIGZyb20gbmV3IGF0dHIgaXRhbml1bV9jbGFzcy4KCjIwMDAtMTEtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHRyYWRjcHAuYyAob3V0cHV0X2xpbmVfY29tbWFuZCk6IE1hcmsgc3lzdGVtIGhlYWRlcnMgYXMgc3VjaCBpbgoJYGxpbmUnIGNvbW1hbmRzLgoKMjAwMC0xMS0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKEhBVkVfQVNfRFdBUkYyX0RFQlVHX0xJTkUpOiBTUEFSQyBoYXMgLmZpbGUvLmxvYwoJc3VwcG9ydCBpbiBhcyBhcyB3ZWxsLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTExLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1sZXguYyAob3JpZ19maWxlbmFtZSk6IE5ldyB2YXJpYWJsZS4KCShpbml0X2NfbGV4KTogU2V0IGl0LiAgTW92ZSBjYWxsIHRvIGNwcF9zdGFydF9yZWFkIC4uLgoJKHl5cGFyc2UpOiAuLi4gaGVyZS4gIE5ldyBmdW5jdGlvbi4KCSogYy1wYXJzZS5pbiAoeXlwYXJzZV8xKTogUmVuYW1lIHRoZSBwYXJzZXIgZW50cnkgcG9pbnQuCgkqIGMtdHJlZS5oOiBEZWNsYXJlIGl0LgoKMjAwMC0xMS0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGRvX2NvbXBhcmVfYW5kX2p1bXApOiBJZiBvcDAgd2FzIHJlcGxhY2VkIGJ5IHByb21vdGVkCglpbnRlZ2VyIGNvbnN0YW50LCB1c2UgdHlwZSBvZiBvcDEgZm9yIGNvbXBhcmlzb24uCgoyMDAwLTExLTIwICBTdGFuIFNoZWJzICA8c2hlYnNAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC94bS1kYXJ3aW4uaDogTmV3IGZpbGUsIERhcndpbiBob3N0IGRlZmluaXRpb25zLgoJKiBjb25maWcvcnM2MDAwL3gtZGFyd2luOiBOZXcgZmlsZSwgRGFyd2luIGhvc3QgZnJhZ21lbnQuCgkqIGNvbmZpZy5nY2MgKHBvd2VycGMtKi1kYXJ3aW4qKTogTmV3IGhvc3QuCgkqIHN5c3RlbS5oIChIQVZFX0RFU0lHTkFURURfSU5JVElBTElaRVJTKTogIEFsbG93IHRoaXMgdG8gYmUKCW92ZXJyaWRkZW4gYnkgYSBjb25maWcgZmlsZS4KCjIwMDAtMTEtMjAgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbWFjcm8uYyAocGFzdGVfdG9rZW5zKTogUmVuYW1lIGZyb20gcGFzdGVfcGF5bG9hZHMuCglDaGFuZ2UgdG9rZW4gdHlwZSBhZnRlciBwYXN0aW5nIHNwZWxsaW5ncy4KCShwYXN0ZV9hbGxfdG9rZW5zKTogVXNlIGl0LgoJKiBnY2MuZGcvY3BwL3Bhc3RlMi5jOiBVcGRhdGUgdGVzdC4KCSogb2JqYy9leGVjdXRlL3Bhc3RlLm06IE5ldyB0ZXN0LgoKMjAwMC0xMS0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmLmggKEZNVF9DT0RFKTogQWRqdXN0IGFyZ3VtZW50IG9yZGVyOyBmaXggbWFwcGluZyB0bwoJZHdhcmZfc3Vic2NyX2RhdGFfZm9ybWF0cyBiaXRzLgoJKiBkd2FyZm91dC5jIChzaW1wbGVfdHlwZV9zaXplX2luX2JpdHMpOiBIYW5kbGUgYSB0eXBlIHdpdGgKCW5vIGNvbXB1dGVkIHNpemUgYXMgc2l6ZSB6ZXJvLgoJKGZpZWxkX2J5dGVfb2Zmc2V0KTogTGlrZXdpc2UuCgkoc3Vic2NyaXB0X2RhdGFfYXR0cmlidXRlKTogSGFuZGxlIGEgcmFuZ2Ugd2l0aCBubyB1cHBlciBib3VuZC4KCjIwMDAtMTEtMjAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdhbnNpZGVjbC5oIChjb25zdCk6IENoZWNrIF9fU1REQ19fIGJlZm9yZSB1bmRlZidpbmcgYGNvbnN0Jy4KCjIwMDAtMTEtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBXaGVuIG1lcmdpbmcgdHlwZQoJcXVhbGlmaWVycyBmb3IgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgYmV0d2VlbiBhIHBvaW50ZXIgYW5kIGEKCXBvaW50ZXIgdG8gYSB2b2lkIHR5cGUsIG1lcmdlIHRoZSBxdWFsaWZpZXJzIG9uIHRoZSB0YXJnZXQgdHlwZXMKCXJhdGhlciB0aGFuIHRoZSBwb2ludGVyIHR5cGUuICBSZW1vdmUgb2Jzb2xldGUgY29uZGl0aW9uZWQgb3V0Cgljb2RlLgoKMjAwMC0xMS0yMCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjLWxhbmcuYyAobGFuZ19pbml0X29wdGlvbnMpOiBVcGRhdGUgY2FsbCB0bwoJY3BwX3JlYWRlcl9pbml0LgoJKiBjcHBtYWluLmMgKG1haW4pOiBTaW1pbGFybHkuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBTaW1pbGFybHkuCgkqIGNwL2xleC5jIChsYW5nX2luaXRfb3B0aW9ucyk6IFNpbWlsYXJseS4KCSogb2JqYy9vYmpjLWFjdC5jIChsYW5nX2luaXRfb3B0aW9ucyk6IFNpbWlsYXJseS4KCSogY3BwZXhwLmMgKHBhcnNlX251bWJlcik6IE9ubHkgd2FybiBmb3IgdW5leHRlbmRlZCBDODkuCgkqIGNwcGluaXQuYyAoc2V0X2xhbmcpOiBOZXcgZnVuY3Rpb24uCgkoY3BwX3JlYWRlcl9pbml0KTogVGFrZSBhIExBTkcgYXJndW1lbnQgYW5kIHBhc3MgaXQgdG8gc2V0X2xhbmcuCgkoQ09NTUFORF9MSU5FX09QVElPTlMpOiBOZXcgb3B0aW9uIHN0ZD1jKys5OC4KCShjcHBfaGFuZGxlX29wdGlvbik6IFVzZSBzZXRfbGFuZy4KCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogV2FybiBwZWRhbnRpY2FsbHkgaWYgbm90IEM5OS4KCSogY3BwaWIuaCAoZW51bV9jX2xhbmcpOiBOZXcgZW51bWVyYXRpb24uICBVcGRhdGUgY29tbWVudHMuCgoyMDAwLTExLTIwICBXaWxsIENvaGVuICA8d2NvaGVuQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IENsZWFyIHRhcmdldCBvbmx5IHdoZW4gdGFyZ2V0IGlzIGluCgloYXJkIHJlZ2lzdGVyIGFuZCBjdXJyZW50X2Z1bmN0aW9uX2NoZWNrX21lbW9yeV91c2FnZSBpcyBzZXQuCgoyMDAwLTExLTIwICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogUnVuIG9wdGltaXplX21vZGVfc3dpdGNoaW5nIGV2ZW4KCWlmIG5vdCBvcHRpbWl6aW5nLgoJKiBzaC5jIChlbWl0X3NmX2luc24sIGVtaXRfZGZfaW5zbik6IEp1c3QgY2FsbCBlbWl0X2luc24uCgoyMDAwLTExLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY3J0c3R1ZmYuYyAoZm9yY2VfdG9fZGF0YSk6IFVzZSBhcnJheSBzaXplIDEgbm90IDAuCgoJKiBkd2FyZjJvdXQuYyAoc2ltcGxlX3R5cGVfc2l6ZV9pbl9iaXRzKTogSGFuZGxlIGEgdHlwZSB3aXRoCglubyBjb21wdXRlZCBzaXplIGFzIHNpemUgemVyby4KCShmaWVsZF9ieXRlX29mZnNldCk6IExpa2V3aXNlLgoKMjAwMC0xMS0yMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY29uZmlnLmdjYzogRml4IGFub3RoZXIgdHlwby4KCjIwMDAtMTEtMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBTdXBwb3J0IGZsZXhpYmxlIGFycmF5IG1lbWJlcnMuCglVc2Ugb3Blbi1lbmRlZCByYW5nZXMgZm9yIHRoZXNlIGFuZCB6ZXJvLWxlbmd0aCBhcnJheXMuCgkqIGMtdHlwZWNrLmMgKHB1c2hfaW5pdF9sZXZlbCk6IFZhbGlkYXRlIHRoZSBjb250ZXh0IG9mCglpbml0aWFsaXphdGlvbiBvZiBhIHplcm8tbGVuZ3RoIGFycmF5LgoJKiB0cmVlLmMgKGludF9maXRzX3R5cGVfcCk6IEJlIHByZXBhcmVkIGZvciBtaXNzaW5nIGJvdW5kcy4KCSogdmFyYXNtLmMgKGFycmF5X3NpemVfZm9yX2NvbnN0cnVjdG9yKTogTmV3LgoJKG91dHB1dF9jb25zdHJ1Y3Rvcik6IFVzZSBpdCBmb3IgYXJyYXlzIG9mIHVuc3BlY2lmaWVkIGxlbmd0aC4KCSogZXh0ZW5kLnRleGkgKFplcm8gTGVuZ3RoKTogTWVudGlvbiBDOTkgZmxleGlibGUgYXJyYXkgbWVtYmVycy4KCURvY3VtZW50IGluaXRpYWxpemF0aW9uIGluIGEgdG9wLWxldmVsIHN0cnVjdCBhcyB2YWxpZC4KCjIwMDAtMTEtMTkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNvbmZpZy5nY2MsIGludm9rZS50ZXhpOiBGaXggZXJyb3JzIGluIHNwZWxsaW5nIG9mICJkZXByZWNhdGVkIi4KCgkqIGFsaWFzLmMgKG1lbXNfaW5fZGlzam9pbnRfYWxpYXNfc2V0c19wKTogRG8gdXNlIGFsaWFzIHNldHMgaW4KCXN0ZGFyZyBhbmQgdmFyYXJncyBmdW5jdGlvbnMuCgoyMDAwLTExLTE5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogZ2NjLmMgKHByb2Nlc3NfY29tbWFuZCk6IERlZmluZSAnaicgdmFyaWFibGUgd2hlbgoJTU9ESUZZX1RBUkdFVF9OQU1FIGlzIGRlZmluZWQuCgoyMDAwLTExLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAodmFyaWFibGVfc2l6ZSk6IE9ubHkgcHV0IFNBVkVfRVhQUnMgb24gcGVuZGluZ19zaXplcy4KCjIwMDAtMTEtMTkgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIHJzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VuY29kZV9zZWN0aW9uX2luZm8pOiBGaXggc3RyaW5nIGxlbmd0aAoJY2FsY3VsYXRpb24gYW5kIGFsbG9jYXRpb24uCgoyMDAwLTExLTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChjX2dldHN0cik6IENvbnN0aWZ5IHZhcmlhYmxlLgoJKiBnbW9uLXNvbDIuYyAoX21jbGVhbnVwKTogQ29tbWVudCBvdXQgI2VuZGlmIGxhYmVscy4KCSogY29uZmxpY3QuYyAoY29uc3RfY29uZmxpY3RfZ3JhcGhfYXJjKTogTmV3IHR5cGVkZWYuCgkoYXJjX2hhc2gsIGFyY19lcSk6IEF2b2lkIG5lZWRsZXNzbHkgY2FzdGluZyBhd2F5IGNvbnN0LW5lc3MuCgkqIGNwcG1hY3JvLmMgKGJ1aWx0aW5fbWFjcm8pOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmMgKG91dHB1dF9jb21wX3VuaXQpOiBDb25zdGlmeSB2YXJpYWJsZS4KCSogZml4LWhlYWRlci5jICh2X2ZhdGFsKTogQWRkIEFUVFJJQlVURV9QUklOVEYuCgkqIHByb3RvaXplLmMgKElTX1NBTUVfUEFUSF9DSEFSKTogVXNlIFRPVVBQRVIsIG5vdCB0b3VwcGVyLgoJKiBzc2EuYyAoc3NhX3JlbmFtZV9mcm9tX2hhc2hfZnVuY3Rpb24pOiBBdm9pZCBuZWVkbGVzc2x5IGNhc3RpbmcKCWF3YXkgY29uc3QtbmVzcy4KCSogdHJhZGNwcC5jIChyZXNjYW4sIGRvX2xpbmUsIG1hY3JvZXhwYW5kLCBtYWNhcmcpOiBVc2UKCUlTQUxOVU0vSVNESUdJVC9JU1BSSU5ULCBub3QgaXNhbG51bS9pc2RpZ2l0L2lzcHJpbnQuCgkqIHZhcmFzbS5jIChjb25zdF9zdHJfaHRhYl9oYXNoLCBjb25zdF9zdHJfaHRhYl9lcSwKCWNvbXBhcmVfY29uc3RhbnRfMSwgcmVjb3JkX2NvbnN0YW50XzEpOiBDb25zdGlmeS4KCjIwMDAtMTEtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBTcGVjaWFsIGNhc2UgdGhlIGNyZWF0aW9uIG9mIGFuCglpbmRleCBmb3IgYSB6ZXJvLWxlbmd0aCBhcnJheS4KCSogdHJlZS5jIChidWlsZF9pbmRleF90eXBlKTogUmV2ZXJ0IE9jdCAyMCBjaGFuZ2UuCgoyMDAwLTExLTE4ICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5oIChhdnJfb3V0cHV0X2FkZHJfdmVjX2VsdCk6IFByb3RvdHlwZS4KCSogY29uZmlnL2F2ci9hdnIuYyAoanVtcF90YWJsZXNfc2l6ZSk6IE5ldyB2YXJpYWJsZS4KCShmdW5jdGlvbl9wcm9sb2d1ZSk6IEluaXRpYWxpemUgaXQgYXMgMC4KCShmdW5jdGlvbl9lcGlsb2d1ZSk6IEFkZCBpdCB0byBmdW5jdGlvbl9zaXplLgoJKGF2cl9vdXRwdXRfYWRkcl92ZWNfZWx0KTogTmV3IGZ1bmN0aW9uLiAgQ291bnQgd29yZHMgaW4ganVtcAoJdGFibGVzIGluIGp1bXBfdGFibGVzX3NpemUuICBNb3ZlIGNvZGUgLi4uCgkqIGNvbmZpZy9hdnIvYXZyLmggKEFTTV9PVVRQVVRfQUREUl9WRUNfRUxUKTogLi4uIGZyb20gaGVyZS4KCUNhbGwgYXZyX291dHB1dF9hZGRyX3ZlY19lbHQgaW5zdGVhZC4KCSogY29uZmlnL2F2ci9hdnIubWQgKHRhYmxlanVtcCk6IFJlbW92ZSBkaXNhYmxlZCBkZWZpbmVfZXhwYW5kLgoKMjAwMC0xMS0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogTWFrZSAtLWVuYWJsZS1uZXctZ3h4LWFiaSB0aGUgZGVmYXVsdC4KCSogY29uZmlndXJlOiBMaWtld2lzZS4KCjIwMDAtMTEtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluICh0cmFkY3BwLm8sIHRyYWRjaWYubyk6IERlcGVuZCBvbiB0cmFkY3BwLmguCgoJKiB0cmFkY2lmLnk6IEluY2x1ZGUgdHJhZGNwcC5oLiAgQ29uc3RpZnkuICBNYWtlIGZ1bmN0aW9ucyBzdGF0aWMuCglNb3ZlIGV4dGVybiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgdG8gdHJhZGNwcC5oLgoKCSogdHJhZGNwcC5jOiBMaWtld2lzZS4KCgkqIHRyYWRjcHAuaDogTmV3IGZpbGUuCgoyMDAwLTExLTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWRlY2wuYyAoY2hlY2tfZm9yX2xvb3BfZGVjbHMpOiBOZXcgZnVuY3Rpb24uCgkqIGMtcGFyc2UuaW4gKGZvcl9pbml0X3N0bXQpOiBOZXcuCgkoc2VsZWN0X29yX2l0ZXJfc3RtdCk6IFVzZSBmb3JfaW5pdF9zdG10LgoJKiBjLXRyZWUuaCAoY2hlY2tfZm9yX2xvb3BfZGVjbHMpOiBOZXcgZGVjbGFyYXRpb24uCgoyMDAwLTExLTE4ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGluaXQuYzogVXBkYXRlIGNvbW1lbnRzLgoJKGNwcF9yZWFkZXJfaW5pdCk6IE1ha2UgLWltYWNybyBhbmQgLWluY2x1ZGUgdXNlIHRoZSBzdGFuZGFyZAoJI2luY2x1ZGUgIiIgc2VhcmNoIHBhdGguCgkoZG9faW5jbHVkZXMpOiBOZXcgZnVuY3Rpb24uCgoyMDAwLTExLTE4ICBCZW4gRWxsaXN0b24gIDxiamVAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9jcnQxLmFzbSAoc3RhcnRfbCk6IE1vdmUgUEMtcmVsYXRpdmUgbW92ZSBpbnN0cnVjdGlvbgoJb3V0IG9mIGEgYnJhbmNoIGRlbGF5IHNsb3QuCgoyMDAwLTExLTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2VsZi5oIChQUkVGRVJSRURfREVCVUdHSU5HX1RZUEUpOiBTZXQgdG8gRFdBUkYyX0RFQlVHLgoJKEFTTV9TUEVDKTogRGlzYWJsZSBhbmQgZW5hYmxlIC5tZGVidWcgYmFzZWQgb24gLWdzdGFicy4KCShBU01fRklMRV9TVEFSVCk6IE9ubHkgd3JpdGUgb3V0IGVjb2ZmIC5maWxlIGRpcmVjdGl2ZSBpZgoJZW1pdHRpbmcgbWRlYnVnIGRlYnVnZ2luZy4KCjIwMDAtMTEtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKEhBVkVfQVNfRFdBUkYyX0RFQlVHX0xJTkUpOiBOZXcuICBEZXRlY3QKCXdoZXRoZXIgYXMgYWNjZXB0cyAuZmlsZS8ubG9jIGFuZCBwcm9kdWNlcyBkd2FyZjIgbGluZSBpbmZvLgoJKiBkd2FyZjJvdXQuYyAoRFdBUkYyX0FTTV9MSU5FX0RFQlVHX0lORk8pOiBEZWZhdWx0IG9uIGlmCgl0aGUgYXNzZW1ibGVyIHN1cHBvcnRzIGl0LgoJKiBjb25maWcuaW4sIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMTEtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IERvbid0IGRpc2FibGUgZml4aW5jbHVkZXMgZm9yIGFueSBsaW51eCouCgoyMDAwLTExLTE3ICBKaW0gV2lsc29uICA8d2lsc29uQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGVtaXRfaW5zbl9ncm91cF9iYXJyaWVycywgY2FzZSBDQUxMX0lOU04pOgoJRG9uJ3QgY2xlYXIgbmVlZF9iYXJyaWVyIGlzIG5leHRfaW5zbiBpcyBhIENBTExfSU5TTiwgb3IgaGFzCglpbnN0cnVjdGlvbiB0eXBlIEIgb3IgVU5LTk9XTi4KCjIwMDAtMTEtMTcgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZXJyb3IuYyAocHJpbnRfZmlsZV9hbmRfbGluZSk6IERvbid0IGRpc3BsYXkgbGluZSBudW1iZXIgaWYgMC4KCjIwMDAtMTEtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBnZ2MuaDogRGVsZXRlIGdnY19hZGRfc3RyaW5nX3Jvb3QgYW5kIGdnY19tYXJrX3N0cmluZy4gIEFkZAoJZGlnaXRfdmVjdG9yIGFuZCBkaWdpdF9zdHJpbmcuCgkqIHN0cmluZ3Bvb2wuYyAoZGlnaXRfdmVjdG9yKTogTmV3LgoJKGdnY19hbGxvY19zdHJpbmcpOiBVc2UgZGlnaXRfc3RyaW5nLgoKCSogc3RtdC5jIChkaWdpdF9zdHJpbmdzKTogRGVsZXRlLgoJKGluaXRfc3RtdCk6IERvIG5vdCBpbml0aWFsaXplIGRpZ2l0X3N0cmluZ3MuCgkoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFVzZSBnZ2MuaCdzIGRpZ2l0X3N0cmluZyBtYWNyby4KCSogdG9wbGV2LmMgKG1hcmtfZmlsZV9zdGFjayk6IERlbGV0ZS4KCShjb21waWxlX2ZpbGUpOiBEb24ndCBjYWxsIGluaXRfdHJlZV9jb2Rlcy4KCShtYWluKTogTm8gbmVlZCB0byBtYWtlIHRoZSBmaWxlIHN0YWNrIGEgR0Mgcm9vdC4KCSogdHJlZS5jIChpbml0X3RyZWVfY29kZXMpOiBEZWxldGUuCgkqIHRyZWUuaCAoaW5pdF90cmVlX2NvZGVzKTogRGVsZXRlLgoKCSogYy1sZXguYzogRG9uJ3QgaW5jbHVkZSBnZ2MuaC4KCShtYXJrX3NwbGF5X3RyZWVfbm9kZSwgbWFya19zcGxheV90cmVlKTogRGVsZXRlLgoJKGluaXRfY19sZXgpOiBObyBuZWVkIHRvIGdnY19zdHJkdXAgc3RyaW5nIGNvbnN0YW50LiAgRG9uJ3QgYWRkCglmaWxlX2luZm9fdHJlZSB0byBHR0Mgcm9vdHMuCgkoY2JfZW50ZXJfZmlsZSwgY2JfcmVuYW1lX2ZpbGUpOiBObyBuZWVkIHRvIGdnY19zdHJkdXAKCWlwLT5ub21pbmFsX2ZuYW1lLgoKCSogTWFrZWZpbGUuaW4gKGMtbGV4Lm8pOiBObyBsb25nZXIgZGVwZW5kcyBvbiAkKEdHQ19IKS4KCgkqIGRieG91dC5jIChkYnhvdXRfaW5pdCksCglkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2xpbmUpLAoJZ2djLWNvbW1vbi5jIChnZ2NfbWFya19ydHhfY2hpbGRyZW4sIGdnY19tYXJrX3RyZWVzKSwKCXZhcmFzbS5jIChtYXJrX2NvbnN0X2hhc2hfZW50cnksIG1hcmtfcG9vbF9jb25zdGFudCwgaW5pdF92YXJhc21fb25jZSksCgl4Y29mZm91dC5jICh4Y29mZm91dF9zb3VyY2VfZmlsZSksCglpMzg2LmMgKGxvYWRfcGljX3JlZ2lzdGVyKToKCURlbGV0ZSBjYWxsKHMpIHRvIGdnY19hZGRfc3RyaW5nX3Jvb3QgYW5kL29yIGdnY19tYXJrX3N0cmluZy4KCgkqIGV4Y2VwdC5jIChjcmVhdGVfcmV0aHJvd19yZWYpLAoJcHJvZmlsZS5jIChpbml0X2VkZ2VfcHJvZmlsZXIpLAoJdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSksCgl2YXJhc20uYyAobmFtZWRfc2VjdGlvbiwgYXNzZW1ibGVfc3RhdGljX3NwYWNlLAoJYXNzZW1ibGVfdHJhbXBvbGluZV90ZW1wbGF0ZSwgb3V0cHV0X2NvbnN0YW50X2RlZiwgZm9yY2VfY29uc3RfbWVtKSwKCWkzODYuYyAobG9hZF9waWNfcmVnaXN0ZXIpLAoJaWE2NC5jIChpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pLAoJcnM2MDAwLmMgKHJzNjAwMF9lbWl0X2xvYWRfdG9jX3RhYmxlLCBjcmVhdGVfVE9DX3JlZmVyZW5jZSwKCXJzNjAwMF9lbWl0X3Byb2xvZ3VlLCByczYwMDBfZW1pdF9lcGlsb2d1ZSksCglyczYwMDAubWQgKGxvYWRfdG9jX2FpeF9zaSwgbG9hZF90b2NfYWl4X2RpKToKCUNoYW5nZSBnZ2NfYWxsb2Nfc3RyaW5nICh2YXIsIC0xKSB0byBnZ2Nfc3RyZHVwICh2YXIpLgoKCSogcHJvZmlsZS5jIChvdXRwdXRfZnVuY19zdGFydF9wcm9maWxlciksCgl0cmVlLmMgKG1ha2Vfbm9kZSksCglpMzg2LmMgKGxvYWRfcGljX3JlZ2lzdGVyKTogTm8gbmVlZCB0byBnZ2Nfc3RyZHVwIHN0cmluZyBjb25zdGFudC4KCjIwMDAtMTEtMTcgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGNvbmZpZy5zdGF0dXMpOiBEZXBlbmQgb24gY29uZmlnLmdjYy4KCSogY29uZmlndXJlLmluIDxmb3IgbWFjaGluZSBpbiAkYnVpbGQgJGhvc3QgJHRhcmdldD46IE1vdmUKCWNvbnRlbnRzIG9mIGxvb3AgaW50byBjb25maWcuZ2NjLCByZW1vdmluZyBhdXRvY29uZiBxdW90aW5nLgoJRml4IGNoYW5nZXF1b3RlIGJ1ZyBmb3IgYWxwaGEqLSotdnh3b3JrcyouCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmdjYzogTmV3LgoKMjAwMC0xMS0xNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGMtcGFyc2UuaW4gKGlmX3ByZWZpeCk6IEZpbmQgdGhlIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciBhdAoJJC0yIGFuZCAkLTEgcmVzcGVjdGl2ZWx5LgoJKiBkaWFnbm9zdGljLmMgKGVycm9yX3JlY3Vyc2lvbik6IEFkZCBtaXNzaW5nIG5ld2xpbmUsIHVzZQoJZnB1dHMsIHRyYW5zbGF0ZSBzdHJpbmcuCgoyMDAwLTExLTE2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogc3RyaW5ncG9vbC5jOiBOZXcgZmlsZS4KCSogZ2djLWNvbW1vbi5jIChnZ2NfbWFya19zdHJpbmdfcHRyLCBnZ2NfYWRkX3N0cmluZ19yb290KTogRGVsZXRlLgoJKGdnY19hbGxvY19zdHJpbmcpOiBOb3cgaW4gc3RyaW5ncG9vbC5vLgoJKiBnZ2MtcGFnZS5jLCBnZ2Mtc2ltcGxlLmM6IERvIG5vdCBkZWZpbmUgb3IgYWxsb2NhdGUgZW1wdHlfc3RyaW5nLgoJKiBnZ2MuaDogRGVsZXRlIHByb3RvdHlwZSBvZiBnZ2NfYWRkX3N0cmluZ19yb290LiAgI2RlZmluZQoJZ2djX2FkZF9zdHJpbmdfcm9vdCBhbmQgZ2djX21hcmtfc3RyaW5nIHRvIG5vdGhpbmcuICBQcm90b3R5cGUKCWluaXRfc3RyaW5ncG9vbCBhbmQgc3RyaW5ncG9vbF9zdGF0aXN0aWNzLgoJKGdnY19hbGxvY19zdHJpbmcpOiBSZXR1cm5zIGEgY29uc3QgY2hhciAqLgoJKiB0cmVlLmMgKGhhc2hfdGFibGUsIGRvX2lkZW50aWZpZXJfd2FybmluZ3MpOiBEZWxldGUuCgkoaW5pdF9vYnN0YWNrcyk6IERvbid0IGluaXRpYWxpemUgdGhlIGlkZW50aWZpZXIgaGFzaCB0YWJsZS4KCShnZXRfaWRlbnRpZmllciwgbWF5YmVfZ2V0X2lkZW50aWZpZXIsIHN0YXJ0X2lkZW50aWZpZXJfd2FybmluZ3MsCglzZXRfaWRlbnRpZmllcl9zaXplKTogTm93IGluIHN0cmluZ3Bvb2wuYy4KCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9zdHJpbmcpOiBDb25zdGlmeSBwb2ludGVyIGZpZWxkLgoJKGFwcHJveF9zcXJ0KTogUHJvdG90eXBlLgoKCSogTWFrZWZpbGUuaW4gKHN0cmluZ3Bvb2wubyk6IEFkZCBydWxlLCBtZW50aW9uIGluIE9CSlMuCgoJKiB0b3BsZXYuYyAoYXBwcm94X3NxcnQpOiBOZXcgZnVuY3Rpb24uCgkoY29tcGlsZV9maWxlKTogQ2FsbCBzdHJpbmdwb29sX3N0YXRpc3RpY3MgaWYgbWVtX3JlcG9ydCBpcyBvbi4KCShtYWluKTogQ2FsbCBpbml0X3N0cmluZ3Bvb2wuCgoJKiBidWlsdGlucy5jIChjX3N0cmxlbiksIGMtZGVjbC5jIChmaW5pc2hfZGVjbCksIGMtbGV4LmMKCShwcm9jZXNzX2RpcmVjdGl2ZSksIGMtdHlwZWNrLmMgKGNvbnN0cnVjdG9yX2FzbXNwZWMsIHN0cnVjdAoJaW5pdGlhbGl6ZXJfc3RhY2ssIHN0YXJ0X2luaXQpLCBleGNlcHQuYyAoY3JlYXRlX3JldGhyb3dfcmVmKSwKCXN0bXQuYyAoZGlnaXRfc3RyaW5ncyksIHRvcGxldi5jIChkZWNvZGVfZl9vcHRpb24pLCB0cmVlLmMKCShidWlsdF9pbl9maWxlbmFtZSksIHZhcmFzbSxjIChpbl9uYW1lZF9uYW1lLAoJYXNzZW1ibGVfc3RhdGljX3NwYWNlLCBzdHJ1Y3QgY29uc3RhbnRfZGVzY3JpcHRvciwgc3RydWN0CglkZWZlcnJlZF9zdHJpbmcsIHN0cnVjdCBwb29sX2NvbnN0YW50LCBmb3JjZV9jb25zdF9tZW0pLAoJaTM4Ni5jIChwaWNfbGFiZWxfbmFtZSwgZ2xvYmFsX29mZnNldF90YWJsZV9uYW1lKSwgcnM2MDAwLmMKCShyczYwMDBfZW1pdF9wcm9sb2d1ZSwgcnM2MDAwX2VtaXRfZXBpbG9ndWUpIDogQ29uc3RpZnkgYSBjaGFyICouCgoJKiBjLWNvbW1vbi5jIChjb21iaW5lX3N0cmluZ3MpOiBDb21iaW5lIHN0cmluZ3MgaW4gc2NyYXRjaAoJYnVmZmVyLCB0aGVuIHBhc3MgdG8gYnVpbGRfc3RyaW5nLgoJKiBvcHRhYnMuYyAoaW5pdF9saWJmdW5jcyksIHByb2ZpbGUuYyAoaW5pdF9lZGdlX3Byb2ZpbGVyLAoJb3V0cHV0X2Z1bmNfc3RhcnRfcHJvZmlsZXIpLCBzdG10LmMgKGluaXRfc3RtdCksIGFscGhhLmMKCShhbHBoYV9uZWVkX2xpbmthZ2UpLCBhcm0uYyAoYXJtX2VuY29kZV9jYWxsX2F0dHJpYnV0ZSksCglpMzg2LmMgKGxvYWRfcGljX3JlZ2lzdGVyKSwgaWE2NC5jIChpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pLAoJcnM2MDAwLmMgKHJzNjAwMF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogQ3JlYXRlIHN0cmluZyBpbgoJc2NyYXRjaCBidWZmZXIsIHRoZW4gcGFzcyB0byBnZ2NfYWxsb2Nfc3RyaW5nLgoKCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogSWYgd2UgbXVzdCBhZGp1c3QgdGhlCgljb25zdHJhaW50IHN0cmluZ3MsIGRvIHNvIGJ5IGNyZWF0aW5nIGEgbmV3IG9uZSwgbm90IGJ5Cgltb2RpZnlpbmcgdGhlIG9sZCBvbmUgaW4gcGxhY2UuICBDb25zdGlmeSBzb21lIGNoYXIgKnMuCgkqIGNvbmZpZy9wYS9wYS5jIChocHBhX2VuY29kZV9sYWJlbCk6IERyb3AgdW5uZWNlc3Nhcnkgc2Vjb25kCglhcmd1bWVudC4gIENyZWF0ZSBzdHJpbmcgaW4gc2NyYXRjaCBidWZmZXIsIHRoZW4gcGFzcyB0bwoJZ2djX2FsbG9jX3N0cmluZy4KCSogY29uZmlnL3BhL3BhLXByb3Rvcy5oOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBjb25maWcvcGEvZWxmLmgsIGNvbmZpZy9wYS9wYS5oLCBjb25maWcvcGEvc29tLmg6CglocHBhX2VuY29kZV9sYWJlbCB0YWtlcyBvbmx5IG9uZSBhcmd1bWVudC4KCjIwMDAtMTEtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1jb3JlLmMgKG1jb3JlX2V4cGFuZF9wcm9sb2cpOiBDYWxsIHhtYWxsb2MveHJlYWxsb2MsIG5vdAoJbWFsbG9jL3JlYWxsb2MuCgoJKiBjcHBsaWIuYyAoZ2x1ZV9oZWFkZXJfbmFtZSk6IExpa2V3aXNlLgoKCSogZml4aW5jbC5jIChydW5fY29tcGlsZXMsIHN0YXJ0X2ZpeGVyKTogTGlrZXdpc2UuCgoJKiBmaXhsaWIuYyAobG9hZF9maWxlX2RhdGEpOiBMaWtld2lzZS4KCgkqIG1rZGVwcy5jIChtdW5nZSk6IExpa2V3aXNlLgoKMjAwMC0xMS0xNyAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBkZWZhdWx0cy5oIFtFSF9GUkFNRV9TRUNUSU9OX0FTTV9PUF0gKEVIX0ZSQU1FX1NFQ1RJT04pOiBSZW1vdmUKCXRyYWlsaW5nICc7Jy4gIEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0xMS0xNiAgSmltIFdpbHNvbiAgPHdpbHNvbkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChNQVNLX0lOTElORV9ESVZfTEFULCBNQVNLX0lOTElORV9ESVZfVEhSKToKCVNoaWZ0IG1hc2tzIGxlZnQgYnkgb25lIHRvIGF2b2lkIGNvbmZsaWN0LgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBEaXNhbGxvdyBkZWNscyB3aXRoCglERUNMX0VYVEVSTkFMIHNldC4KCjIwMDAtMTEtMTYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChvdXRwdXRfYXJtX3Byb2xvZ3VlKTogTm90ZSBuZXN0ZWQgZnVuY3Rpb25zLgoJKGFybV9leHBhbmRfcHJvbG9ndWUpOiBGb3IgbmVzdGVkIGZ1bmN0aW9ucyBwcmVzZXJ2ZSB0aGUKCXN0YXRpYyBjaGFpbiByZWdpc3RlciBkdXJpbmcgc3RhY2sgZnJhbWUgY3JlYXRpb24uCgoJKiBjb25maWcvYXJtL2FybS5oIChTVEFUSUNfQ0hBSU5fUkVHTlVNKTogQ2hhbmdlIHRvIDEyLgoJKEFSTV9JTklUSUFMX0ZSQU1FX0VMSU1JTkFUSU9OX09GRlNFVCk6IEZvciBhIG5lc3RlZCBmdW5jdGlvbgoJd2l0aCBhIHN0YWNrIGZyYW1lIHRoZXJlIGlzIGEgNCBieXRlIGdhcCBiZXR3ZWVuIHRoZSBhcmcKCXBvaW50ZXIgYW5kIHRoZSBoYXJkIGZyYW1lIHBvaW50ZXIgKHVzZWQgdG8gcHJlc2VydmUgdGhlCglzdGF0aWMgY2hhaW4gcmVnaXN0ZXIgZHVyaW5nIHN0YWNrIGZyYW1lIGNyZWF0aW9uKS4KCjIwMDAtMTEtMTYgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogcnRsLmMgKHJlYWRfcnR4KTogUHJvdmlkZSBzdWl0YWJsZSBuYW1lcyBmb3IgdW5uYW1lZAoJZGVmaW5lX2luc24gYW5kIGRlZmluZV9pbnNuX2FuZF9zcGxpdCBwYXR0ZXJucywgYmFzZWQgb24gZmlsZQoJYW5kIGxpbmUgbnVtYmVycy4KCjIwMDAtMTEtMTUgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGliLmMgKHN0YXJ0X2RpcmVjdGl2ZSwgZW5kX2RpcmVjdGl2ZSk6IE5ldyBmdW5jdGlvbnMuCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlLCBydW5fZGlyZWN0aXZlKTogVXNlIHRoZW0uCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlKTogRG9uJ3QgLVd0cmFkaXRpb25hbCBvbiBpbmRlbnRlZAoJbnVsbCBkaXJlY3RpdmVzLgoJKF9jcHBfcHVzaF9idWZmZXIpOiBEb24ndCByZS1jbGVhciB3YXNfc2tpcHBpbmcuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX3JlYWRlcik6IE5ldyBtZW1iZXIgbGFfc2F2ZWQuCgkqIGNwcG1hY3JvLmMgKGNwcF9nZXRfdG9rZW4pOiBEb24ndCBpbnRlcnByZXQgX1ByYWdtYSBpbgoJZGlyZWN0aXZlcy4KCglnY2MuZGcvY3BwL19QcmFnbWExLmM6IFVwZGF0ZS4KCWdjYy5kZy9jcHAvX1ByYWdtYTIuYzogTmV3IHRlc3QuCgoyMDAwLTExLTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdG9wbGV2LmMgKHdyYXB1cF9nbG9iYWxfZGVjbGFyYXRpb25zKTogRG9uJ3Qgd3JpdGUgb3V0CglhcnRpZmljaWFsIHN0YXRpYyB2YXJpYWJsZXMgdGhhdCBhcmVuJ3QgbmVlZGVkLgoKMjAwMC0xMS0xNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBpYTY0LmMgKHN0cnVjdCBncm91cCk6IE5ldyBzdHJ1Y3R1cmUuCgkobGFzdF9ncm91cCk6IE5ldyBzdGF0aWMgYXJyYXkuCgkoZ3JvdXBfaWR4KTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShlbWl0X2dyb3VwX2JhcnJpZXJfYWZ0ZXIsIGVycmF0YV9maW5kX2FkZHJlc3NfcmVncywgZXJyYXRhX2VtaXRfbm9wcyk6CglOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShlbWl0X2luc25fZ3JvdXBfYmFycmllcnMpOiBJbml0aWFsaXplIGFuZCBrZWVwIHRyYWNrIG9mIGdyb3VwX2lkeAoJYW5kIGxhc3RfZ3JvdXAuCglDYWxsIGVycmF0YV9lbWl0X25vcHMgaWYgVEFSR0VUX0JfU1RFUCBvciBUQVJHRVRfQV9TVEVQLgoJUmVwbGFjZSBhbGwgY2FsbHMgdG8gZW1pdF9pbnNuX2FmdGVyIHRoYXQgZW1pdCBhIGdyb3VwIGJhcnJpZXIgdG8gdXNlCgllbWl0X2dyb3VwX2JhcnJpZXJfYWZ0ZXIuCgkqIGlhNjQuaCAoTUFTS19CX1NURVApOiBOZXcuCgkob3RoZXIgTUFTS19YWFggbWFjcm9zKTogUmVudW1iZXJlZC4KCShUQVJHRVRfQl9TVEVQKTogTmV3LgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbWItc3RlcC4KCjIwMDAtMTEtMTUgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgoJKiBmaXhpbmMvbWtmaXhpbmMuc2ggKGZpeGluY2x1ZGVzKTogQWRkICotKi1iZW9zKiB0byBsaXN0IG9mCgltYWNoaW5lcyBmb3Igd2hpY2ggZml4aW5jbHVkZXMgaXMgbm90IG5lZWRlZC4KCSogY29uZmlnL2kzODYveC1iZW9zIChTVE1QX0ZJWFBST1RPKTogRG9uJ3QgcnVuIGZpeHByb3RvLgoKMjAwMC0xMS0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkaWFnbm9zdGljLmMgKGZpbmlzaF9hYm9ydCk6IE5ldyBmbi4KCShmYW5jeV9hYm9ydCwgZXJyb3JfcmVjdXJzaW9uKTogVXNlIGl0LgoJKiB0b3BsZXYuYyAoY3Jhc2hfc2lnbmFsKTogTGlrZXdpc2UuCgkqIGRpYWdub3N0aWMuaDogRGVjbGFyZSBpdC4KCjIwMDAtMTEtMTMgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogdHJlZS5jIChidWlsZF90eXBlX25vX3F1YWxzKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmggKGJ1aWxkX3R5cGVfbm9fcXVhbHMpOiBEZWNsYXJlLgoJKiBjLWNvbW1vbi5jIChjX2dldF9hbGlhc19zZXQpOiBXaGVuIGNvbnNpZGVyaW5nIHR5cGUKCWNvbXBhdGliaWxpdHkgZm9yIHBvaW50ZXIgdHlwZXMsIGlnbm9yZSBjdi1xdWFsaWZpZXJzIGFueXdoZXJlIGluCglhIHBvaW50ZXIgY2hhaW4uCgoyMDAwLTExLTE1ICBHcmFoYW0gU3RvdHQgIDxncmFoYW1zQHJlZGhhdC5jb20+CgoJKiByZWdyZW5hbWUuYyAoc2Nhbl9ydHhfcnR4KTogU2tpcCB0byB0aGUgbmV4dCBjaGFpbiBvbgoJZW5jb3VudGVyaW5nIGEgdGVybWluYXRlZCBjaGFpbi4KCjIwMDAtMTEtMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuaW46IE1vdmUgY2hlY2sgZm9yIFYzIGFib3ZlIGNoZWNrIGZvciBDKysgaGVhZGVyLWZpbGUKCWRpcmVjdG9yeS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDAtMTEtMTQgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL3Y4NTAvdjg1MC5jOiBSZW1vdmUgb2JzdGFja3MuCgpUdWUgTm92IDE0IDIxOjU0OjMxIDIwMDAgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPiAmIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfY2FzZV92YWx1ZXNfdGhyZXNob2xkKTogTmV3LgoJKGF2cl9vdmVycmlkZV9vcHRpb25zKTogU2V0IGl0IGRlcGVuZGluZyBvbiBvcHRpb25zLCBtYWtlIGl0IGxhcmdlCgl3aGVuIG5vdCBvcHRpbWl6aW5nIHRvIHdvcmsgYXJvdW5kICJ1bmFibGUgdG8gZ2VuZXJhdGUgcmVsb2FkcyIuCgoJKiBjb25maWcvYXZyL2F2ci5oIChUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW1uby10YWJsZWp1bXAgb3B0aW9uLgoJKEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TKTogTWFrZSB0aGUgLnByb2dtZW0uZ2NjX3N3X3RhYmxlIHNlY3Rpb24KCWV4ZWN1dGFibGUgaWYgbm90IEFWUl9NRUdBLiAgTWFrZSBzdXJlIGp1bXAgdGFibGVzIGFyZSB3b3JkLWFsaWduZWQuCgkoSlVNUF9UQUJMRVNfSU5fVEVYVF9TRUNUSU9OKTogRGVmaW5lIGFzIDAsIG5vdCAxLgoJKEFTTV9PVVRQVVRfQUREUl9WRUNfRUxUKTogT3B0aW1pemUsIHVzZSAicmptcCIgaWYgbm90IEFWUl9NRUdBLgoJKGF2cl9jYXNlX3ZhbHVlc190aHJlc2hvbGQpOiBEZWNsYXJlIGFzIGV4dGVybiBpbnQuCgkoQ0FTRV9WQUxVRVNfVEhSRVNIT0xEKTogRGVmaW5lIGFzIGF2cl9jYXNlX3ZhbHVlc190aHJlc2hvbGQuCgoJKiBjb25maWcvYXZyL2F2ci5tZCAodGFibGVqdW1wKTogUmVtb3ZlZC4KCSgqdGFibGVqdW1wX3JqbXApOiBOZXcgZm9yIGp1bXAgdGFibGVzIG1hZGUgZnJvbSAicmptcCIgaW5zdHJ1Y3Rpb25zLgoJKCp0YWJsZWp1bXBfbGliLCAqdGFibGVqdW1wX2VuaCwgKnRhYmxlanVtcCk6IENoYW5nZSB0byBleHBlY3QgdGhlCglpbmRleCBpbiB0aGUgdGFibGUsIG5vdCBtdWx0aXBsaWVkIGJ5IDIuCgkoY2FzZXNpKTogQ2hhbmdlIHRvIG1hdGNoIHRoZSBhYm92ZSBpbnNucy4gIEFsd2F5cyBlbmFibGUuCgoJKiBjb25maWcvYXZyL2xpYmdjYy5TIChfX3RhYmxlanVtcF9fKTogUmVuYW1lIHRvIF9fdGFibGVqdW1wMl9fLgoJQ2hhbmdlIHRvIGV4cGVjdCB0aGUgd29yZCBhZGRyZXNzIG9mIHRoZSB0YWJsZSwgbXVsdGlwbHkgaXQgYnkgMgoJaGVyZSBhbmQgbm90IGluIHRoZSBjYWxsZXIuICBDaGFuZ2UgImFkaXciIHRvIGZhc3RlciAiaW5jIi4KCjIwMDAtMTEtMTQgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZXhwLmMgKHBhcnNlX2RlZmluZWQpOiBDYWxsIGNwcF9nZXRfdG9rZW4gbm90CglfY3BwX2dldF90b2tlbi4KCShsZXgpOiBTaW1pbGFybHkuCgkqIGNwcGxleC5jIChjcHBfb3V0cHV0X2xpbmUpOiBTaW1pbGFybHkuCgkqIGNwcGxpYi5jIChnbHVlX2hlYWRlcl9uYW1lLCBkb19saW5lLCBkb19pZGVudCwKCXBhcnNlX2Fuc3dlciwgcGFyc2VfYXNzZXJ0aW9uKTogU2ltaWxhcmx5LgoJKF9jcHBfaGFuZGxlX2RpcmV0aXZlKTogRG9uJ3Qgc2F2ZSB0byBsb29rYWhlYWRzCgl3aGVuIHByb2Nlc3NpbmcgZGlyZWN0aXZlcy4KCSogY3BwbWFjcm8uYyAocGFyc2VfYXJnLCBleHBhbmRfYXJnKTogQ2FsbCBjcHBfZ2V0X3Rva2VuIG5vdAoJX2NwcF9nZXRfdG9rZW4uCgkoZnVubGlrZV9pbnZvY2F0aW9uX3ApOiBEb24ndCBzYXZlIHRvIGxvb2thaGVhZHMKCXdoZW4gcHJlLWV4cGFuZGluZyBhcmd1bWVudHMuCgkoX2NwcF9nZXRfdG9rZW4pOiBEZWxldGUuCgkoY3BwX2dldF90b2tlbik6IE1lcmdlIGNvbnRlbnRzIG9mIF9jcHBfZ2V0X3Rva2VuLgoKMjAwMC0xMS0xNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zZXRqbXApOiBTZXQKCWN1cnJlbnRfZnVuY3Rpb25fY2FsbHNfc2V0am1wLgoJKGV4cGFuZF9idWlsdGluX2xvbmdqbXApOiBTZXQgY3VycmVudF9mdW5jdGlvbl9jYWxsc19sb25nam1wLgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChidWlsdGluX3NldGptcF9zZXR1cCk6IE5ldyBleHBhbmQuCgkoZG9fYnVpbHRpbl9zZXRqbXBfc2V0dXApOiBOZXcgaW5zbi4KClR1ZSBOb3YgMTQgMTI6MzQ6NTYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUuYyAoZ2V0X3Vud2lkZW5lZCk6IFVzZSBob3N0X2ludGVnZXJwIGFuZCB0cmVlX2xvd19jc3QuCgkoaW50X2ZpdHNfdHlwZV9wKTogRm9yIHZhcmlhYmxlIGJvdW5kcywgY2FsbCBmb3JjZV9maXRfdHlwZS4KCjIwMDAtMTEtMTQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogdmFyYXNtLmMgKHN0cnVjdCBkZWZlcnJlZF9zdHJpbmcpOiBOZXcgc3RydWN0dXJlLgoJKGNvbnN0X3N0cl9odGFiKTogTmV3IHZhcmlhYmxlLgoJKFNUUkhBU0gpOiBOZXcgbWFjcm8uCgkobWFya19jb25zdF9zdHJfaHRhYl8xLCBtYXJrX2NvbnN0X3N0cl9odGFiLCBjb25zdF9zdHJfaHRhYl9oYXNoLAoJY29uc3RyX3N0cl9odGFiX2VxLCBjb25zdF9zdHJfaHRhYl9kZWwpOiBOZXcgZnVuY3Rpb25zLgoJKG91dHB1dF9jb25zdGFudF9kZWYpOiBBZGQgREVGRVIgYXJndW1lbnQsIGRlZmVyIHN0cmluZwoJY29uc3RhbnRzIHVudGlsIG1hcmtfY29uc3RhbnRfcG9vbCB0aW1lIGlmIHJlcXVlc3RlZC4KCShtYXJrX2NvbnN0YW50X3Bvb2wpOiBXYWxrIHRoZSBpbnNuIGNoYWluIGV2ZW4gaWYgY29uc3Rfc3RyX2h0YWIgaXMKCW5vdCBlbXB0eS4KCShtYXJrX2NvbnN0YW50cyk6IElmIGEgU1lNQk9MX1JFRiBmb3IgZGVmZXJyZWQgc3RyaW5nIGlzIGZvdW5kLAoJb3V0cHV0IGl0IGFuZCByZW1vdmUgZnJvbSBoYXNoIHRhYmxlLgoJKG91dHB1dF9hZGRyZXNzZWRfY29uc3RhbnRzKTogU2V0IERFRkVSIHRvIDAgaW4gY2FsbCB0bwoJb3V0cHV0X2NvbnN0YW50X2RlZi4KCSogcnRsLmggKFNUUklOR19QT09MX0FERFJFU1NfUCk6IERlZmluZS4KCShvdXRwdXRfY29uc3RhbnRfZGVmKTogQWRqdXN0IHByb3RvdHlwZS4KCSogZXhwci5jIChleHBhbmRfZXhwcik6IFNldCBERUZFUiB0byAxIGluIGNhbGwgdG8gb3V0cHV0X2NvbnN0YW50X2RlZi4KCjIwMDAtMTEtMTQgIENoYW5kcmFrYWxhIENoYXZ2YSAgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIG9wdGFicy5jIChleHBhbmRfY29tcGxleF9hYik6OiBVc2Ugb3ZlcmZsb3ctdHJhcHBpbmcgb3B0YWJzIGZvcgoJc2lnbmVkIHR5cGVzIGlmIGZsYWdfdHJhcHYuCgoyMDAwLTExLTE0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogdHJhZGNwcC5jLCB0cmFkY2lmLnk6IFVwZGF0ZSBGU0YgbWFpbGluZyBhZGRyZXNzLCBkZWxldGUKCXJlZmVyZW5jZSB0byBHUEx2MS4KCjIwMDAtMTEtMTQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmggKENUSV9DX1NJWkVfVFlQRSk6IFVwZGF0ZSBjb21tZW50LgoKMjAwMC0xMS0xNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB2YXJhc20uYyAoc3RydWN0IHZhcmFzbV9zdGF0dXMpOiBDaGFuZ2UgeF9jb25zdF9ydHhfc3ltX2hhc2hfdGFibGUKCXRvIGFycmF5IG9mIHBvb2xfY29uc3RuYXQgcG9pbnRlcnMuCgkoc3RydWN0IHBvb2xfY29uc3RhbnQpOiBBZGQgbmV4dF9zeW0gYW5kIGxhYmVsIG1lbWJlcnMuCgkoc3RydWN0IHBvb2xfc3ltKTogUmVtb3ZlLgoJKGluaXRfdmFyYXNtX3N0YXR1cyk6IENoYW5nZSBwb29sX3N5bSBpbnRvIHBvb2xfY29uc3RhbnQuCgkobWFya19wb29sX2NvbnN0YW50KTogTWFyayBwYy0+bGFiZWwgc3RyaW5nIGFzIHdlbGwuCgkobWFya19wb29sX3N5bV9oYXNoX3RhYmxlKTogUmVtb3ZlLgoJKG1hcmtfdmFyYXNtX3N0YXR1cyk6IFJlbW92ZSBpdCBmcm9tIGNhbGxlciBhcyB3ZWxsLgoJKGZyZWVfdmFyYXNtX3N0YXR1cyk6IERvbid0IGZyZWUgcG9vbF9zeW0gc3RydWN0dXJlcy4KCShmb3JjZV9jb25zdF9tZW0pOiBEb24ndCBhbGxvY2F0ZSBwb29sX3N5bSBzdHJ1Y3R1cmUsIGluc3RlYWQKCWZpbGwgcG9vbC0+bGFiZWwgYW5kIGNoYWluIGl0IGludG8gcnR4X3N5bSBoYXNoIHRhYmxlLgoJKGZpbmRfcG9vbF9jb25zdGFudCwgbWFya19jb25zdGFudF9wb29sKTogVXNlIHBvb2xfY29uc3RhbnQgaW5zdGVhZAoJb2YgcG9vbF9zeW0uCgoyMDAwLTExLTE0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHJlbG9hZDEuYyAoZW1pdF9pbnB1dF9yZWxvYWRfaW5zbnMpOiBIb25vciBmb3JjaW5nIG9mIGNvbnN0YW50cwoJaW50byBtZW1vcnkgYnkgUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyBOT19SRUdTLgoKMjAwMC0xMS0xNCAgTWljaGFlbCBNYXR6ICA8bWF0em1pY2hAY3MudHUtYmVybGluLmRlPgoKCSogZG9taW5hbmNlLmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBkb21pbmFuY2Uuby4KCgkqIGZsb3cuYyAoY29tcHV0ZV9mbG93X2RvbWluYXRvcnMpOiBSZW1vdmUuCgkoY29tcHV0ZV9pbW1lZGlhdGVfZG9taW5hdG9ycyk6IFJlbW92ZS4KCShjb21wdXRlX2ltbWVkaWF0ZV9wb3N0ZG9taW5hdG9ycyk6IFJlbW92ZS4KCSogYmFzaWMtYmxvY2suaDogUmVtb3ZlIHRoZWlyIHByb3RvdHlwZXMuCgkoY2FsY3VsYXRlX2RvbWluYW5jZV9pbmZvKTogQWRkIHByb3RvdHlwZS4KCgkqIGRjZS5jIChlbGltaW5hdGVfZGVhZF9jb2RlKTogQ2hhbmdlIGNhbGxzIHRvIGFib3ZlIGZ1bmN0aW9ucy4KCURvbid0IGNvbXB1dGUgZG9taW5hdG9ycyBidXQgb25seSBpbW1lZGlhdGUgZG9taW5hdG9ycy4KCSogZmxvdy5jIChmbG93X2xvb3BzX2ZpbmQpOiBDaGFuZ2UgY2FsbGVycy4KCSogZ2NzZS5jIChjb21wdXRlX2NvZGVfaG9pc3RfZGF0YSk6IExpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9pbnNucyk6IExpa2V3aXNlLgoJKiBpZmN2dC5jIChpZl9jb252ZXJ0KTogTGlrZXdpc2UuCgkqIHNzYS5jIChjb252ZXJ0X3RvX3NzYSk6IExpa2V3aXNlLCBhbmQgb25seSBjb21wdXRlIGltbWVkaWF0ZQoJZG9taW5hdG9ycy4KCjIwMDAtMTEtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBzdG10LmMgKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogRG9uJ3Qgd2FybiBpZiB0aGUgZXhwcmVzc2lvbgoJaGFzIHNpZGUgZWZmZWN0cy4KCgkqIGMtdHlwZWNrLmMgKGNfc2l6ZW9mKTogRm9sZCByZXN1bHQgdG8gY19zaXplX3R5cGVfbm9kZS4KCShjX3NpemVvZl9ub3dhcm4sIGNfYWxpZ25vZiwgY19hbGlnbm9mX2V4cHIpOiBMaWtld2lzZS4KCjIwMDAtMTEtMTMgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGxvb3AuYyAoYmFzaWNfaW5kdWN0aW9uX3Zhcik6IFJldmVydCBhY2NpZGVudGFsIGNoZWNraW4uCgoyMDAwLTExLTEzICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGMtbGV4LmMgKGNiX2xlYXZlX2ZpbGUpOiBIYXJtb25pemUgY29uZGl0aW9ucyBhbmQgb3JkZXIgb2YKCXN0YXRlbWVudHMgdG8gdGhvc2Ugb2YgcHJvY2Vzc19kaXJlY3RpdmUgZm9yIChhY3Rpb24gPT0gYWN0X3BvcCkuCgoJKiBjb2xsZWN0Mi5jIChtYWluKTogUGFzcyBvbiAtQiBvcHRpb25zIGZyb20gQ09MTEVDVF9HQ0NfT1BUSU9OUy4KCgkqIGxvY2FsLWFsbG9jLmMgKGVxdWl2X2luaXRfbW92YWJsZV9wKTogUmVmZXJlbmNlcyB0byBDQzAgYXJlIG5vdAoJbW92YWJsZS4KCjIwMDAtMTEtMTMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtcGFyc2UuaW4gKHN0bXRzX2FuZF9kZWNscyk6IERlcHJlY2F0ZSB1c2Ugb2YgbGFiZWwgYXQgZW5kIG9mCgljb21wb3VuZCBzdGF0ZW1lbnQuCgoyMDAwLTExLTEzICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChfY3BwX2xleF90b2tlbik6IENQUF9DT01NRU5UIGFuZCB0cnVlIENQUF9FT0YKCWNhc2VzIHJldHVybiB3aXRob3V0IE1JIGNoZWNrLgoJKiBjcHBsaWIuYyAoZG9fZGlhZ25vc3RpYyk6IFRha2UgYm9vbGVhbiBvZiB3aGV0aGVyIHRvCglwcmludCB0aGUgZGlyZWN0aXZlIG5hbWUuCgkoZG9fZXJyb3IsIGRvX3dhcm5pbmcpOiBVcGRhdGUuCgkoZG9fcHJhZ21hX2RlcGVuZGVuY3kpOiBVc2UgaXQuCgkqIGNwcGxpYi5oIChWQVJBUkdTX0ZJUlNUKTogRGVsZXRlLgoJKHN0cnVjdCBjcHBfdG9rZW4pOiBEZWxldGUgaW50ZWdlci4KCSogY3BwbWFjcm8uYyAoZW50ZXJfbWFjcm9fY29udGV4dCk6IE1vdmUgZGlzYWJsZWQgY2hlY2sKCXRvIF9jcHBfZ2V0X3Rva2VuLgoJKF9jcHBfZ2V0X3Rva2VuKTogU2ltcGxpZnkgaW50byBhIHNpbmdsZSBsb29wLgoKMjAwMC0xMS0xMyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBjb25maWd1cmUuaW46ICBVc2UgJ3Rlc3QgLWYnIG5vdCAnWyAtZScuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAwLTExLTEzICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKHN0b3JlX21vdm0pOiBOb3RlIHdoaWNoIHJlZ2lzdGVycyBhcmUKCXJlYWxseSB1c2VkIG9yIGNsb2JiZXJlZC4KCjIwMDAtMTEtMTMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtcGFyc2UuaW4gKGVuZHNfaW5fbGFiZWwpOiBSZW1vdmUgZnJvbSAldW5pb24gYW5kICV0eXBlLgoJKGRlY2xzLCBzdG10cywgbGluZW5vX3N0bXRfb3JfbGFiZWxzLCB4c3RtdHMsCglsaW5lbm9fc3RtdF9vcl9sYWJlbCwgc3RtdF9vcl9sYWJlbCk6IFJlbW92ZS4KCShzdG10c19hbmRfZGVjbHMsIGxpbmVub19zdG10X2RlY2xfb3JfbGFiZWxzX2VuZGluZ19zdG10LAoJbGluZW5vX3N0bXRfZGVjbF9vcl9sYWJlbHNfZW5kaW5nX2RlY2wsCglsaW5lbm9fc3RtdF9kZWNsX29yX2xhYmVsc19lbmRpbmdfbGFiZWwsCglsaW5lbm9fc3RtdF9kZWNsX29yX2xhYmVsc19lbmRpbmdfZXJyb3IsCglsaW5lbm9fc3RtdF9kZWNsX29yX2xhYmVscywgY29tcHN0bXRfY29udGVudHNfbm9uZW1wdHksCglsaW5lbm9fc3RtdCwgbGluZW5vX2xhYmVsKTogTmV3LgoJKGNvbXBzdG10X25vc3RhcnQpOiBVc2UgY29tcHN0bXRfY29udGVudHNfbm9uZW1wdHkuCgoyMDAwLTExLTEzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChib29sZWFuX2luY3JlbWVudCk6IE5ldyBmdW5jdGlvbi4KCSogYy1jb21tb24uaCAoZW51bSBjX3RyZWVfaW5kZXgpOiBBZGQgQ1RJX0NfQk9PTF9UWVBFLAoJQ1RJX0NfQk9PTF9UUlVFIGFuZCBDVElfQ19CT09MX0ZBTFNFLgoJKGNfYm9vbF90eXBlX25vZGUsIGNfYm9vbF90cnVlX25vZGUsIGNfYm9vbF9mYWxzZV9ub2RlKTogRGVmaW5lLgoJKGJvb2xlYW5faW5jcmVtZW50KTogRGVjbGFyZS4KCSogYy1jb252ZXJ0LmMgKGNvbnZlcnQpOiBBbGxvdyBmb3IgQk9PTEVBTl9UWVBFLgoJKiBjLWRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDcmVhdGUgYm9vbGVhbiBub2Rlcy4KCShmaW5pc2hfc3RydWN0KTogQWxsb3cgZm9yIF9Cb29sIGJpdGZpZWxkcy4KCSogYy1wYXJzZS5pbiAocmVzd29yZHMpOiBBZGQgX0Jvb2wuCgkocmlkX3RvX3l5KTogQWxsb3cgZm9yIFJJRF9CT09MLgoJKiBjLXR5cGVjay5jIChkZWZhdWx0X2NvbnZlcnNpb24pOiBNYWtlIGJvb2xlYW5zIHByb21vdGUgdG8gaW50LgoJKGNvbnZlcnRfYXJndW1lbnRzLCBidWlsZF91bmFyeV9vcCwgYnVpbGRfbW9kaWZ5X2V4cHIsCgljb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogQWxsb3cgZm9yIGJvb2xlYW5zLgoJKiBnaW5jbHVkZS9zdGRib29sLmg6IE1ha2UgY29uZm9ybWluZyB0byBDOTkuCgoyMDAwLTExLTEzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLXBhcnNlLmluIChjOTlfYmxvY2tfc3RhcnQsIGM5OV9ibG9ja19lbmQsCgljOTlfYmxvY2tfbGluZW5vX2xhYmVsZWRfc3RtdCk6IE5ldy4KCShzaW1wbGVfaWYsIGRvX3N0bXRfc3RhcnQpOiBVc2UgYzk5X2Jsb2NrX2xpbmVub19sYWJlbGVkX3N0bXQuCgkoc3RtdCk6IFNwbGl0IG9mZiBzZWxlY3Rpb24gYW5kIGl0ZXJhdGlvbiBzdGF0ZW1lbnRzIGludG8uLi4KCShzZWxlY3Rfb3JfaXRlcl9zdG10KTogTmV3LiAgVXNlIGM5OV9ibG9ja19saW5lbm9fbGFiZWxlZF9zdG10LgoKMjAwMC0xMS0xMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogaW52b2tlLnRleGkgKC1XdHJpZ3JhcGhzLCAtZmR1bXAtdHJhbnNsYXRpb24tdW5pdCwgLXNhdmUtdGVtcHMsCgktdGltZSk6IFVwZGF0ZS4KCjIwMDAtMTEtMTMgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChtdWxzaWRpM2FkZGRpLCB1bXVsc2lkaTNhZGRkaSk6IFJldmVydCBwcmV2aW91cyBjaGFuZ2UuCglSZXdyaXRlIHRvIGF2b2lkIHVzZSBvZiBtYXRjaF9kdXAuICBEb24ndCB0cnkgdG8gdGllIHJlZ2lzdGVycyB0aGF0CglhcmUgbm90IGluIHRoZSBzYW1lIG1vZGUuCgoyMDAwLTExLTEzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBpbnZva2UudGV4aTogVXBkYXRlIGxpc3RzIG9mIGxhbmd1YWdlcyBhbmQgc3VmZml4ZXMgc3VwcG9ydGVkLgoKMjAwMC0xMS0xMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY29uZmlndXJlLmluOiBUYWtlIHRvcGxldmVsIGNvbmZpZ3VyZSBhcmd1bWVudHMgZnJvbSB0aGUKCWVudmlyb25tZW50IHRvIGNyZWF0ZSBjb25maWdhcmdzLmggYW5kIHN1YnN0aXR1dGUKCWdjY19jb25maWdfYXJndW1lbnRzLCB0YWtpbmcgYWNjb3VudCBvZiBhbnkgZXhpc3RpbmcgY29uZmlnYXJncy5oCglpZiByZWNvbmZpZ3VyaW5nLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGdjY2J1Zy5pbjogSW5jbHVkZSB0b3BsZXZlbCBjb25maWd1cmUgYXJndW1lbnRzIGluIGdjY2J1Zy4KCjIwMDAtMTEtMTMgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogdmFyYXNtLmMgKHN0cnVjdCBjb25zdGFudF9kZXNjcmlwdG9yKTogUHV0IENPTlRFTlRTIGluc2lkZSBhCgl1bmlvbiB0byBtYWtlIGl0IHdlbGwtYWxpZ25lZC4gIFVwZGF0ZSBhbGwgdXNlcy4KCjIwMDAtMTEtMTMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtcGFyc2UuaW4gKGluaXRlbHQpOiBHaXZlIGFwcHJvcHJpYXRlIHBlZGFudGljIHdhcm5pbmdzLAoJZGVwZW5kaW5nIG9uIGZsYWdfaXNvYzk5LCBmb3Igbm9uLUlTTyBzeW50YXggYW5kIGZvciBDOTkgc3ludGF4CglvdXRzaWRlIEM5OSBtb2RlLgoJKGRlc2lnbmF0b3IpOiBJZiBwZWRhbnRpYywgcGVkd2FybiBmb3IgYSBkZXNpZ25hdG9yIHNwZWNpZnlpbmcgYQoJcmFuZ2Ugb2YgZWxlbWVudHMuCgkqIGMtdHlwZWNrLmMgKHNldF9pbml0X2luZGV4LCBzZXRfaW5pdF9sYWJlbCk6IERvbid0IHBlZHdhcm4gZm9yCgl0aGVzZSBjYXNlcy4KCSogZXh0ZW5kLnRleGk6IERvY3VtZW50IHRoZSBDOTkgc3ludGF4IGFzIHRoZSBwcmVmZXJyZWQgc3ludGF4LAoJYW5kIHRoZSBwcmUtMi41IHN5bnRheCBhcyBvYnNvbGV0ZS4gIE1lbnRpb24gdXNlIG9mIGRlc2lnbmF0b3IKCWxpc3RzIGZvciBuZXN0ZWQgc3Vib2JqZWN0cy4KCjIwMDAtMTEtMTMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGRpYWdub3N0aWMuYyAodmJ1aWxkX21lc3NhZ2Vfc3RyaW5nLCBvdXRwdXRfZG9fcHJpbnRmLCB2bm90aWNlKToKCUFkZCBBVFRSSUJVVEVfUFJJTlRGLgoJKiB0cmFkY3BwLmMgKHZfbWVzc2FnZSwgd2FybmluZywgZXJyb3IsIGZhdGFsLCBlcnJvcl93aXRoX2xpbmUpOgoJQWRkIEFUVFJJQlVURV9QUklOVEYqLgoKMjAwMC0xMS0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IFdoZW4gY2FsbGluZyBwdXRfdmFyX2ludG9fc3RhY2ssIG1ha2UKCXN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gaGlkZGVuIHBlbmRpbmcgc2VxdWVuY2VzLgoKMjAwMC0xMS0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgQlVJTFRfSU5fSU5ERVggYW5kCglCVUlMVF9JTl9SSU5ERVguICBBZGQgbWlzc2luZyBjaGVja3MgZm9yIEJVSUxUX0lOX1NUUkNIUiBhbmQKCUJVSUxUX0lOX1NUUlJDSFIuCgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0lOREVYLCBCVUlMVF9JTl9SSU5ERVgpOiBOZXcgZW50cmllcy4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IERlY2xhcmUgaW5kZXggYW5kCglyaW5kZXggd2hlbiBub25hbnNpIGJ1aWx0aW5zIGFyZSBhbGxvd2VkLgoKCSogZXh0ZW5kLnRleGkgKGluZGV4LCByaW5kZXgpOiBEb2N1bWVudCBuZXcgYnVpbHRpbnMuCgoyMDAwLTExLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmluOiBUdXJuIG9uIGxpYnN0ZGMrKyBWMyBieSBkZWZhdWx0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogZml4aW5jL21rZml4aW5jLnNoOiBVc2UgdGhlIG9yZGluYXJ5IGZpeGluY2x1ZGVzIG9uIFNvbGFyaXMuCgoyMDAwLTExLTEyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHJlbG9hZDEuYyAoc2V0X2xhYmVsX29mZnNldHMpOiBHbyBpbnNpZGUgb2YgUEFSQUxMRUxzLgoKMjAwMC0xMS0xMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogaW52b2tlLnRleGk6IENsZWFuIHVwIG9wdGlvbiBzdW1tYXJ5LgoKMjAwMC0xMS0xMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jOiBGaXggY29tbWVudCBmb3JtYXRpbmcsIGFuZCBhZGp1c3Qgc2VxdWVuY2UKCW9mICNpbmNsdWRlIGhlYWRlcnMuCgoyMDAwLTExLTEyICBNYXJjIEVzcGllIDxlc3BpZUBvcGVuYnNkLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogRml4IGZpbGRzIHRlc3QuCgkqIGNvbmZpZ3VyZTogUmVnZW4uCgoyMDAwLTExLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSoganVtcC5jIChkZWxldGVfY29tcHV0YXRpb24pOiBEb24ndCBhc3N1bWUgdGhhdCBqdXN0IGJlY2F1c2UgYW4KCWluc3RydWN0aW9uIHNldHMgYSByZWdpc3RlciwgdGhhdCByZWdpc3RlciBpcyBkZWFkLgoKMjAwMC0xMS0xMiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYzogRG9uJ3Qgd29ycnkgYWJvdXQgcGZpbGUtPnNraXBwaW5nLgoJKiBjcHBsaWIuYyAoc3RydWN0IGlmX3N0YWNrKTogTWFrZSB3YXNfc2tpcHBpbmcgdW5zaWduZWQgY2hhci4KCShjcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IFNhdmUgcGZpbGUtPnNraXBwaW5nIGluIHN0cnVjdCBjcHBfYnVmZmVyCglmb3IgaGFuZGxlZCBkaXJlY3RpdmVzLgoJKHNraXBfcmVzdF9vZl9saW5lKTogVXNlIF9jcHBfbGV4X3Rva2VuIGFmdGVyIHBvcHBpbmcgY29udGV4dHMKCWFuZCByZWxlYXNpbmcgbG9va2FoZWFkcy4KCShkb19pZmRlZiwgZG9faWZuZGVmLCBkb19pZik6IFVzZSBidWZmZXItPndhc19za2lwcGluZy4KCShkb19lbHNlLCBkb19lbGlmLCBwdXNoX2NvbmRpdGlvbmFsKTogVXBkYXRlIGxvZ2ljLgoJKGRvX2VuZGlmKTogU2V0IGJ1ZmZlci0+d2FzX3NraXBwaW5nIHJhdGhlciB0aGFuIHBmaWxlLT5za2lwcGluZy4KCSh1bndpbmRfaWZfc3RhY2spOiBJbmxpbmUgaW50byBjcHBfcG9wX2J1ZmZlci4KCShjcHBfcHVzaF9idWZmZXIpOiBDbGVhciBpZnMtPndhc19za2lwcGluZyBmb3IgY3BwX2hhbmRsZV9kaXJlY3RpdmUuCgkqIGNwcGxleC5jIChfY3BwX2xleF90b2tlbik6IENsZWFyIHNraXBwaW5nIG9uIEVPRi4gIEhhbmRsZQoJbXVsdGlwbGUtaW5jbHVkZSBvcHRpbWlzYXRpb24uCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX2J1ZmZlcik6IE5ldyBtZW1iZXIgd2FzX3NraXBwaW5nLgoJKiBjcHBtYWNyby5jIChfY3BwX2dldF90b2tlbik6IExvb3Agd2hpbHN0IHBmaWxlLT5za2lwcGluZy4gIFRoaXMKCXdvcmtzIGJlY2F1c2Ugc2tpcHBpbmcgPT0gMCBpbiBkaXJlY3RpdmVzLgoJKF9jcHBfcmVsZWFzZV9sb29rYWhlYWQpOiBSZW5hbWVkIGZyb20gcmVsZWFzZV9sb29rYWhlYWQuCgkoY3BwX2dldF90b2tlbik6IE5vIG5lZWQgdG8gY2hlY2sgc2tpcHBpbmcgYXMgX2NwcF9nZXRfdG9rZW4gZG9lcwoJdGhpcyBmb3IgdXMuICBObyBuZWVkIHRvIGhhbmRsZSBNSSBvcHRpbWlzYXRpb24uCgpTYXQgTm92IDExIDIxOjE0OjAyIDIwMDAgIE1hcmsgUCBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHN1bm9zX21hdGhlcnJfZGVjbCk6IEJ5cGFzcyBtYXRoZXJyCglkZWNsYXJhdGlvbnMgdGhhdCB1c2UgYF9fTUFUSF9FWENFUFRJT04nIGluIHRoZWlyIHByb3RvdHlwZXMsIHRvby4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZWQuCgoyMDAwLTExLTExICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGF2b2lkX2Jvb2xfdHlwZSk6IGF2b2lkIGNvbW1lbnRpbmcgb3V0ICNlbmRpZgoJKGF2b2lkX3djaGFyX3RfdHlwZSk6IGRpdHRvCgkqIGZpeGluYy9maXhpbmMuaXJpeDogb2Jzb2xldGVkCgoyMDAwLTExLTExICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogY29uZmlndXJlLmluOiBEb24ndCBhZGQgJG91dHB1dHMgdG8gYWxsX2xhbmdfbWFrZWZpbGVzLiAgQWRkCgkkc3JjZGlyLyRzL01ha2VmaWxlLmluIGlmIGl0IGV4aXN0cy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKU2F0IE5vdiAxMSAxODo0MToyMCAyMDAwICBNYXJrIFAgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IFVzZSB0aGUgb3JkaW5hcnkgZml4aW5jbHVkZXMgb24gSVJJWC4KCjIwMDAtMTEtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogSWYgVFJFRV9BRERSRVNTQUJMRSBpcyBzZXQsIHRyeSB0bwoJZ2l2ZSB0aGUgcGFybSBhIHJlZ2lzdGVyIGFuZCB0aGVuIGNhbGwgcHV0X3Zhcl9pbnRvX3N0YWNrLgoJKiBzdG10LmMgKGV4cGFuZF9kZWNsKTogTGlrZXdpc2UuCgoyMDAwLTExLTExICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY2MudGV4aTogQWRqdXN0IHdvcmRpbmcuCgoyMDAwLTExLTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoYXZvaWRfd2NoYXJfdF90eXBlKTogTmV3IGZpeC4KCSogZmluaW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZWQuCgoyMDAwLTExLTExICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBpbnZva2UudGV4aTogQ29ycmVjdCBzcGVsbGluZyBvZiAtZm9wdGltaXplLXJlZ2lzdGVyLW1vdmUuCgoyMDAwLTExLTExICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCglSZW1vdmUgQ1BQX1BMQUNFTUFSS0VScy4KCgkqIGNwcGV4cC5jIChsZXgpOiBEb24ndCBoYW5kbGUgQ1BQX1BMQUNFTUFSS0VSLgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfdG9rZW4pOiBSZW5hbWUgc2tpcF9uZXdsaW5lcyB0byBuZXh0X2JvbAoJKiBjcHBsaWIuYyAoc2tpcF9yZXN0X29mX2xpbmUsIGNoZWNrX2VvbCwgY3BwX3B1c2hfYnVmZmVyKToKCQkgICBTaW1pbGFybHkuCgkqIGNwcGxpYi5oOiBSZW1vdmUgQ1BQX1BMQUNFTUFSS0VSLgoJKHN0cnVjdCBsZXhlcl9zdGF0ZSk6IFJlbmFtZSBza2lwX25ld2xpbmVzIHRvIG5leHRfYm9sLgoJKiBjcHBtYWNyby5jIChzdHJpbmdpZnlfYXJnKTogRG9uJ3QgaGFuZGxlIENQUF9QTEFDRU1BUktFUi4KCVNpbXBsaWZ5IHByZXZfd2hpdGUgaGFuZGxpbmcgYXMgYSByZXN1bHQuCgkocGFzdGVfYWxsX3Rva2Vucyk6IERvbid0IHdvcnJ5IGFib3V0IENQUF9QTEFDRU1BUktFUnMuCgkocGFyc2VfYXJnKTogRW1wdHkgYXJndW1lbnRzIGFyZSBub3cgZW1wdHksIG5vdCBDUFBfUExBQ0VNQVJLRVJzLgoJKHBhcnNlX2FyZ3MpOiBTaW1pbGFybHkuICBVcGRhdGUgYXJndW1lbnQgY291bnQgdGVzdHMuCgkoZW50ZXJfbWFjcm9fY29udGV4dCk6IFJldHVybiAyIHRvIGluZGljYXRlIGFuIGVtcHR5IG1hY3JvLgoJKHJlcGxhY2VfYXJncyk6IERvbid0IGJvdGhlciBwcmUtZXhwYW5kaW5nIGFuIGVtcHR5IGFyZ3VtZW50LgoJSGFuZGxlIHBsYWNlbWFya2VycyBhbmQgIyMgZXh0ZW5zaW9uIGR1cmluZyBwcmUtZXhwYW5zaW9uLgoJKGNwcF9nZXRfdG9rZW4pOiBIYW5kbGUgZW1wdHkgbWFjcm8gZXhwYW5zaW9ucy4gIERvbid0IHdvcnJ5CglhYm91dCBDUFBfUExBQ0VNQVJLRVJzLgoJKF9jcHBfY3JlYXRlX2RlZmluaXRpb24pOiBFbXB0eSBtYWNyb3MgYXJlIG5vdyBlbXB0eS4KCShjcHBfbWFjcm9fZGVmaW5pdGlvbik6IERvbid0IHNwZWNpYWwgY2FzZSBlbXB0eSBtYWNyb3MuCgkqIHNjYW4tZGVjbHMuYzogRG9uJ3QgYm90aGVyIHdpdGggQ1BQX1BMQUNFTUFSS0VScy4KCSogYy1sZXguYzogU2ltaWxhcmx5LgoKMjAwMC0xMS0xMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjLnRleGksIGludm9rZS50ZXhpOiBBZGQgbmV3IHNlY3Rpb24gZGlzY3Vzc2luZyBsYW5ndWFnZQoJc3RhbmRhcmRzOyBsaW5rIHRvIGl0IHdoZXJlIGFwcHJvcHJpYXRlOyByZWZlciB0byBJU08gQyBpbnN0ZWFkIG9mCglBTlNJIEMuCgoyMDAwLTExLTExICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKHN0ZF9leHBhbmRfYnVpbHRpbl92YV9zdGFydCk6IFRha2UgUEFSTV9CT1VOREFSWQoJaW50byBhY2NvdW50LgoKCSogY29uZmlnL3NoL3NoLmggKE1PREVTX1RJRUFCTEVfUCk6IERvbid0IHRpZSBTRm1vZGUgdG8gb3RoZXIgRlAKCW1vZGVzLgoKMjAwMC0xMS0xMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjLnRleGksIGdjb3YudGV4aTogVXBkYXRlIGRhdGVzIGFuZCB2ZXJzaW9uIG51bWJlcnMuCgoyMDAwLTExLTEwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogY29uZmlndXJlLmluOiBSZW1vdmUgQUNfUFJPR19MRVggYW5kIEFDX1BST0dfWUFDQy4gIExvb2sgZm9yCglmbGV4IGFuZCBiaXNvbiwgc3BlY2lmaWNhbGx5LCBmaXJzdCBpbiBhIHVuaWZpZWQgYnVpbGQgYW5kCgl0aGVuIGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtLgoJKiBNYWtlZmlsZS5pbjogU2V0IEJJU09OIHRvIEBCSVNPTkAsIEZMRVggdG8gQEZMRVhALiAgUmVuYW1lCglMRVhGTEFHUyB0byBGTEVYRkxBR1MuICBBZGp1c3QgT1JESU5BUllfRkxBR1NfVE9fUEFTUyB0bwoJbWF0Y2guCgoJKGNvbGxlY3QyLm8sIGdjYy5vLCBwcmVmaXgubywgdG9wbGV2Lm8sIGFsbG9jYS5vLCBpbnRsLm8sCgljcHBkZWZhdWx0Lm8pOiBSZW1vdmUgcG9pbnRsZXNzIHNlZCBtdW5naW5nIG9mIHNvdXJjZSBmaWxlCgluYW1lLgoKMjAwMC0xMS0xMCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX2FkZHJlc3NfMSwgY2FzZSBQT1NUX01PRElGWSk6IFVzZSBSRUxPQURfT1RIRVIKCWZvciBhZGRyZXNzIHJlbG9hZHMuICBQdXNoIHJlcGxhY2VtZW50cyBmb3IgUkVHX0lOQyBub3Rlcy4KCShyZWdub19jbG9iYmVyZWRfcCk6IE5ldyBhcmcgU0VUUy4gIEV4YW1pbmUgU0VUcyBpZiBpdCdzIG5vbnplcm8uICBBbGwKCWNhbGxlcnMgY2hhbmdlZC4KCSogcmVsb2FkMS5jIChjaG9vc2VfcmVsb2FkX3JlZ3MpOiBSZWdpc3RlcnMgc2V0IGluIHRoZSBpbnNuIGNhbid0IGJlCgl1c2VkIGZvciBSRUxPQURfT1RIRVIgcmVsb2Fkcy4KCjIwMDAtMTEtMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWR1bXAuaDogTmV3IGZpbGUuCgoyMDAwLTExLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbHBoYS5jIChjaGVja19mbG9hdF92YWx1ZSk6IFVzZSBtZW1jcHksIG5vdCBiY29weS4KCSogYXJtLmMgKG91dHB1dF9tb3ZlX2RvdWJsZSk6IExpa2V3aXNlLgoJKiBhcm0ubWQ6IExpa2V3aXNlLgoJKiBtODhrLmMgKGxlZ2l0aW1pemVfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiBtODhrLmggKE9SREVSX1JFR1NfRk9SX0xPQ0FMX0FMTE9DKTogTGlrZXdpc2UuCgkqIG04OGsubWQ6IExpa2V3aXNlLgoJKiBtaXBzLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBMaWtld2lzZS4KCSogbWlwcy5tZDogTGlrZXdpc2UuCgkqIHJvbXAuYyAob3V0cHV0X2Zwb3BzKTogTGlrZXdpc2UuCgkqIHJzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IExpa2V3aXNlLgoJKiBzaC5tZDogTGlrZXdpc2UuCgkqIHZheC5jIChjaGVja19mbG9hdF92YWx1ZSk6IExpa2V3aXNlLgoKCSogZW1pdC1ydGwuYyAoY29weV9ydHhfaWZfc2hhcmVkLCBpbml0X2VtaXRfb25jZSk6IExpa2V3aXNlLgoJKiBleHBtZWQuYyAoc3ludGhfbXVsdCk6IExpa2V3aXNlLgoJKiBmaW5hbC5jIChhZGRfYmJfc3RyaW5nKTogTGlrZXdpc2UuCgkqIGdlbmF0dHIuYyAobWFpbik6IExpa2V3aXNlLgoJKiBnZW5hdHRydGFiLmMgKGF0dHJfc3RyaW5nLCBzaW1wbGlmeV9jb25kLCBjb3B5X3J0eF91bmNoYW5naW5nKToKCUxpa2V3aXNlLgoJKiBqdW1wLmMgKHRocmVhZF9qdW1wcyk6IExpa2V3aXNlLgoJKiBwcmVmaXguYyAoc2F2ZV9zdHJpbmcpOiBMaWtld2lzZS4KCSogcmVhbC5oIChSRUFMX1ZBTFVFX0ZST01fQ09OU1RfRE9VQkxFKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKGluaXRfcmVnX3NldHMsIGluaXRfcmVnX3NldHNfMSk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKHJlbG9hZCwgZWxpbWluYXRlX3JlZ3MpOiBMaWtld2lzZS4KCjIwMDAtMTEtMTAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjYy50ZXhpIChTZXJ2aWNlKTogVXBkYXRlIHRvIHJlZmxlY3QgY3VycmVudCBwcmFjdGljZSBhbmQKCWxvY2F0aW9uIG9mIHRoZSBHTlUgc2VydmljZSBkaXJlY3RvcnkuCgoyMDAwLTExLTA5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHJlZ3JlbmFtZS5jIChidWlsZF9kZWZfdXNlKTogTWFyayBjb250ZW50cyBvZiBSRUdfSU5DIG5vdGVzIGFzCgluZWVkaW5nIHJlcGxhY2VtZW50LgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoZXh0ZW5kc2ZkZjIsIGV4dGVuZHNmdGYyLCBleHRlbmRkZnRmMik6IEVtaXQKCWEgbm8tb3AgbW92ZSBpZiByZWdzIGFyZSBlcXVhbC4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEbyB0aGUgbm9vcCBtb3ZlcyBlbGltaW5hdGlvbiBwYXNzCgl3aGVuIGNhbGxpbmcganVtcCBhZnRlciBwb3N0LXJlbG9hZCBzcGxpdHRpbmcuCgoyMDAwLTExLTA5ICBKYW4gdmFuIE1hbGUgIDxqYW4udmFubWFsZUBmZW5rLndhdS5ubD4KCgkqIGMtdHJlZS50ZXhpOiBGaXggdHlwb3MuCgkqIGV4dGVuZC50ZXhpOiBMaWtld2lzZQoJKiBnY292LnRleGk6IExpa2V3aXNlCgkqIHJ0bC50ZXhpOiBMaWtld2lzZQoJKiB0bS50ZXhpOiBMaWtld2lzZQoKMjAwMC0xMS0wOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBjLWxleC5jIFshIE5PX0lNUExJQ0lUX0VYVEVSTl9DXSAoY2JfZW50ZXJfZmlsZSk6IENoZWNrCglpbl9zeXN0ZW1faGVhZGVyIGFuZCBmbGFnc1sxXSBiZWZvcmUgZGVyZWZlcmVuY2luZyBmbGFnc1syXS4KCjIwMDAtMTEtMDkgIE1hdHRoZXcgSGlsbGVyIDxoaWxsZXJAcmVkaGF0LmNvbT4KCgkqIHJlbG9hZDEuYyAocmVsb2FkX2NvbWJpbmUpOiBGaXhlZCBjYWxjdWxhdGlvbiBvZgoJZmlyc3RfaW5kZXhfcmVnLCBsYXN0X2luZGV4X3JlZy4KCjIwMDAtMTEtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IER1bXAgZnVuY3Rpb24gYm9kaWVzLgoKCSogTWFrZWZpbGUuaW4gKENfQU5EX09CSkNfT0JKUyk6IEFkZCBjLWR1bXAuby4KCShjLWR1bXAubyk6IE5ldyB0YXJnZXQuCgkqIGMtY29tbW9uLmggKGZsYWdfZHVtcF90cmFuc2xhdGlvbl91bml0KTogTmV3IHZhcmlhYmxlLgoJKENfVFlQRV9RVUFMUyk6IE5ldyBtYWNyby4KCShzdHJpcF9hcnJheV90eXBlcyk6IE5ldyBmdW5jdGlvbi4KCShERUNMX0NfQklUX0ZJRUxEKTogTmV3IG1hY3JvLgoJKFNFVF9ERUNMX0NfQklUX0ZJRUxEKTogTGlrZXdpc2UuCgkoQ0xFQVJfREVDTF9DX0JJVF9GSUVMRCk6IExpa2V3aXNlLgoJKGR1bXBfaW5mb19wKTogTmV3IHR5cGVkZWYuCgkoZHVtcF90cmVlX2ZuKTogTGlrZXdpc2UuCgkobGFuZ19kdW1wX3RyZWUpOiBOZXcgdmFyaWFibGUuCgkoZHVtcF9ub2RlX3RvX2ZpbGUpOiBOZXcgZnVuY3Rpb24uCgkqIGMtY29tbW9uLmMgKGZsYWdfZHVtcF90cmFuc2xhdGlvbl91bml0KTogRGVmaW5lIGl0LgoJKHN0cmlwX2FycmF5X3R5cGVzKTogTmV3IGZ1bmN0aW9uLgoJKiBjLWRlY2wuYyAoY19kZWNvZGVfb3B0aW9uKTogSGFuZGxlIC1mZHVtcC10cmFuc2xhdGlvbi11bml0LgoJKiBjLWxhbmcuYyAoZmluaXNoX2ZpbGUpOiBDYWxsIGR1bXBfbm9kZV90b19maWxlIGlmCglmbGFnX2R1bXBfdHJhbnNsYXRpb25fdW5pdC4KCSogYy1zZW1hbnRpY3MuYyAobWFya19ydGxfZm9yX2xvY2FsX3N0YXRpYyk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkqIGMtdHJlZS5oIChERUNMX0NfQklUX0ZJRUxEKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBjLWR1bXAuYzogTmV3IGZpbGUuCgoyMDAwLTExLTA5ICBDaHJpc3RvcGhlciBGYXlsb3IgPGNnZkBjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvY3lnd2luLmg6IEFkZCBtaW5ndyBzdGFydGZpbGUgcHJlZml4LgoKMjAwMC0xMS0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZsb3cuYyAoaW52YWxpZGF0ZV9tZW1zX2Zyb21fc2V0KTogU3BsaXQgb3V0IGZyb20gLi4uCgkobWFya19zZXRfMSk6IC4uLiBoZXJlLgoJKHRyeV9wcmVfaW5jcmVtZW50XzEpOiBVc2UgaXQuICBVc2UgcHJvcGFnYXRlX2Jsb2NrX2RlbGV0ZV9pbnNuCglpbnN0ZWFkIG9mIHR1cm5pbmcgaW5zbiBpbnRvIGEgTk9URV9JTlNOX0RFTEVURUQuCgoyMDAwLTExLTEwICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBleHRlbmQudGV4aSwgaW52b2tlLnRleGk6IE1vdmUgZG9jdW1lbnRhdGlvbiBvZiBidWlsdGluIHZlcnNpb25zCglvZiBDIGxpYnJhcnkgZnVuY3Rpb25zIHRvIG9uZSBwbGFjZSBhbmQgdXBkYXRlLgoKMjAwMC0xMS0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IENvbXBhcmUgVFlQRV9NQUlOX1ZBUklBTlQgcmF0aGVyIHRoYW4KCXRoZSB0eXBlcyB0aGVtc2VsdmVzIHRvIGRpc2NvdmVyIHR5cGUgZXF1aXZhbGVuY2UuCgoyMDAwLTExLTA5ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZGlzdGNsZWFuKTogUmVtb3ZlIGEgZmV3IGV4dHJhIGxlZnRvdmVycy4KCjIwMDAtMTEtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiByZWNvZy5jICh2YWxpZGF0ZV9yZXBsYWNlX3J0eF8xKTogQ29uc2lkZXIgc3VicmVncyB3aGVuCglyZXBsYWNpbmcgYSByZWdpc3RlciB3aXRoIGEgY29uc3RhbnQgaW5zaWRlIGEgc2lnbi96ZXJvX2V4dGVuZC4KCgkqIGNvbmZpZy9hbHBoYS9saW51eC5oIChIQU5ETEVfUFJBR01BX1BBQ0tfUFVTSF9QT1ApOiBEZWZpbmUuCgoyMDAwLTExLTA5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZmluaXNoX3N0cnVjdCk6IFdoZW4gYSBzdHJ1Y3R1cmUgaXMgY29tcGxldGVkLAoJY2hlY2sgYWxsIGl0cyB2YXJpYW50IHR5cGVzIGZvciBjb21wbGV0ZW5lc3MuCgoyMDAwLTExLTA5ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guYzogTW92ZSBjcHBfZGVmaW5lZCBoZXJlIGZyb20gY3BwbGliLmMuCgkqIGNwcGxpYi5jOiBVcGRhdGUgY29tbWVudHMsIG1vdmUgY3BwX2RlZmluZWQgdG8gY3BwaGFzaC5jLgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfdG9rZW4pOiBEb24ndCBsZWF2ZSB0aGUgbGV4ZXIgYXQgRU9MLgoJKiBjcHBtYWNyby5jIChjcHBfZ2V0X3Rva2VuKTogVXBkYXRlIGNvbW1lbnRzLCBubyBuZWVkIG5vdwoJdG8gY2F0Y2ggdGhlIENQUF9FT0YgbWVhbmluZyBFT0wgY2FzZS4KCjIwMDAtMTEtMDggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY192YV9hcmcpOiBXaGVuIHRoZSByZXF1aXJlZCBhbGlnbm1lbnQKCWlzIG1vcmUgdGhhbiB0aGF0IHByb3ZpZGVkLCBjb3B5IHRvIGEgdGVtcG9yYXJ5LgoKMjAwMC0xMS0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBta2xpYmdjYy5pbiAoRVhUUkFfTVVMVElMSUJfUEFSVFMpOiBQcmV2ZW50IGBtYWtlJyBmcm9tCglpbnRlcnByZXRpbmcgJG91dCBhcyBhIG1hY3JvIGFzc2lnbm1lbnQuCgkqIE1ha2VmaWxlLmluIChUX1RBUkdFVCk6IE5ldyBhdXhpbGlhcnkgbWFjcm8gYW5kIHRhcmdldC4KCShhbGwpOiBBZGQgYSB0YXJnZXQgcmlnaHQgaW4gdGhlIGJlZ2lubmluZywgc28gdGhhdCB3ZSBkb24ndCBidWlsZAoJVF9UQVJHRVQgYnkgZGVmYXVsdC4KCjIwMDAtMTEtMDkgIEdyYWhhbSBTdG90dCAgPGdyYWhhbXNAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKG1teF9waW5zcncpOiBPdXRwdXQgb3BlcmFuZHMgaW4gY29ycmVjdAoJb3JkZXIgZm9yIC1taW50ZWwtc3ludGF4LiAgUmVtb3ZlIGNvbW1lbnQgbm93IHRoYXQgdGhlIG9wZXJhbmQKCW9yZGVyIGhhcyBiZWVuIGNoZWNrZWQuCgkobW14X3BleHRydyk6IExpa2V3aXNlLgoJKG1teF9wc2h1ZncpOiBMaWtld2lzZS4KCjIwMDAtMTEtMDkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoY19zdHJsZW4pOiBVc2UgVFJFRV9TVFJJTkdfTEVOR1RIIC0gMSBmb3IgbWF4LgoJKGNfZ2V0c3RyKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluX3N0cnN0cik6IERvIG5vdGhpbmcgaWYgLWZjaGVjay1tZW1vcnktdXNhZ2UuCglJZiBib3RoIGFyZ3VtZW50cyBhcmUgY29uc3RhbnQgc3RyaW5nLCBvcHRpbWl6ZSBvdXQuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY2hyLCBleHBhbmRfYnVpbHRpbl9zdHJyY2hyKTogTmV3IGZ1bmN0aW9ucy4KCShleHBhbmRfYnVpbHRpbl9zdHJwYnJrKTogVXNlIGNfZ2V0c3RyLCBkbyBub3RoaW5nIGlmCgktZmNoZWNrLW1lbW9yeS11c2FnZS4KCShleHBhbmRfYnVpbHRpbl9mcHV0cyk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3N0cmNtcCk6IEFkZCBNT0RFIGFyZ3VtZW50LgoJVXNlIGV2ZW4gaWYgIUhBVkVfY21wc3Ryc2kuCglPcHRpbWl6ZSB0aGUgY2FzZSB3aGVuIGJvdGggYXJndW1lbnRzIGFyZSBjb25zdGFudCBzdHJpbmdzLgoJKGV4cGFuZF9idWlsdGluKTogQWRqdXN0IGV4cGFuZF9idWlsdGluX3N0cmNtcCBjYWxsZXIuCglDYWxsIGV4cGFuZF9idWlsdGluX3N0cmNociBhbmQgZXhwYW5kX2J1aWx0aW5fc3RycmNoci4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogQWRkIHN0cmNociBhbmQgc3RycmNocgoJYnVpbHRpbnMuCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fU1RSUkNIUik6IEFkZC4KCjIwMDAtMTEtMDggIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGZpeGluYy9nbnUtcmVnZXguYzogUmVuYW1lIEVHQ1MgTE9DQUwgbWFya2VycyB0byBHQ0MgTE9DQUwuCgoyMDAwLTExLTA5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCwgZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSksIGNvbGxlY3QyLmMKCShzY2FuX3Byb2dfZmlsZSksIGNvbmZpZy9hMjlrL2EyOWsuYyAocHJpbnRfb3BlcmFuZCksCgljb25maWcvc3BhcmMvc3BhcmMuYyAob3JkZXJfcmVnc19mb3JfbG9jYWxfYWxsb2MpOiBVc2UgbWVtY3B5ICgpCglpbnN0ZWFkIG9mIGJjb3B5ICgpLgoJKiByZWFsLmg6IFVzZSBtZW1jbXAgKCkgaW5zdGVhZCBvZiBiY21wICgpLgoJKiBjb25maWcvbTg4ay9tODhrLmMgKG04OGtfbGF5b3V0X2ZyYW1lKSwgY29uZmlnL3NoL3NoLmMKCShzcGxpdF9icmFuY2hlcyksIGNvbmZpZy9zcGFyYy9zcGFyYy5jICh1bHRyYV9mbHVzaF9waXBlbGluZSwKCXVsdHJhc3BhcmNfc2NoZWRfaW5pdCwgdWx0cmFzcGFyY19zY2hlZF9yZW9yZGVyKSwKCWNvbmZpZy9zcGFyYy9zcGFyYy5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IFVzZSBtZW1zZXQgKCkKCWluc3RlYWQgb2YgYnplcm8gKCkuCgkqIGNvbmZpZy92YXgveG0teG1zLmggKEZJTEVfTkFNRV9OT05ESVJFQ1RPUlkpOiBVc2Ugc3RycmNociAoKQoJaW5zdGVhZCBvZiByaW5kZXggKCkuCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3QgY2hlY2sgZm9yIGJ6ZXJvLCBiY21wLCBpbmRleCBvciByaW5kZXguCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBzeXN0ZW0uaDogRG9uJ3QgaW5jbHVkZSBkZWNsYXJhdGlvbnMgZm9yIGJ6ZXJvLCBiY21wLCBpbmRleCBvcgoJcmluZGV4LgoJKiBjb25maWcvaTM4Ni94bS1iZW9zLmgsIGNvbmZpZy9yczYwMDAveG0tYmVvcy5oOiBEb24ndCBkZWZpbmUKCWJ6ZXJvLCBiY21wLCBpbmRleCBvciByaW5kZXguCgpXZWQgTm92ICA4IDIxOjU4OjIwIDIwMDAgIENocmlzdG9waGVyIEZheWxvciA8Y2dmQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9jeWd3aW4uaDogQWRkIC1uby13aW4zMiBzd2l0Y2guICBTZXBhcmF0ZSAtbW5vLWN5Z3dpbgoJaW5jbHVkZSBhbmQgbGlicmFyeSBwYXRocyBmcm9tIC1tY3lnd2luIGNhc2UuICBQYXJhbWV0ZXJpemUgc29tZQoJZGVjbGFyYXRpb25zIHRvIGF2b2lkIHdhcm5pbmdzLiAgVXNlIHN0YW5kYXJkIGxvY2F0aW9ucyBmb3IgaW5jbHVkZSBhbmQKCWxpYiBkaXJzLgoKMjAwMC0xMS0wOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChtdWxzaWRpM2FkZGRpKTogQ2hhbmdlIG91dHB1dCBvcGVyYW5kCgljb25zdHJhaW50IGZyb20gIj0mIiB0byAiKyYiLgoJKHVtdWxzaWRpM2FkZGRpKTogQ2hhbmdlIG91dHB1dCBvcGVyYW5kCWNvbnN0cmFpbnQgZnJvbSAiPSYiIHRvCgkiKyYiLgoKMjAwMC0xMS0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZsb3cuYyAoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IFByb3RlY3QgdGhlIHJ0eCBzdG9yZWQgaW4KCW1lbV9zZXRfbGlzdCBmcm9tIG1vZGlmaWNhdGlvbiBieSBmaW5kX2F1dG9faW5jLgoJKG1hcmtfc2V0XzEpOiBMaWtld2lzZS4KCjIwMDAtMTEtMDggIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCU1vdmUgZGlyZWN0aXZlIGhhbmRsaW5nIGludG8gdGhlIGxleGVyIGl0c2VsZi4KCgkqIGNwcGxleC5jIChfY3BwX2xleF90b2tlbik6IEhhbmRsZSBkaXJlY3RpdmVzIGRpcmVjdGx5LgoJSW4gdGhlIGNhc2Ugb2YgYSBkaXJlY3RpdmUgaW50ZXJydXB0aW5nIGEgZnVuY3Rpb24tbGlrZQoJbWFjcm8gaW52b2NhdGlvbiwgdXNlIGV4dHJhX2NoYXIgc2luY2UgcmVhZF9haGVhZCBpcwoJdXNlZCB0byBzdG9yZSB0aGUgJyMnLiAgUmV0dXJuIGEgQ1BQX0VPRiBpbiB0aGlzIGNhc2UuCgkqIGNwcG1hY3JvLmMgKHBhcnNlX2FyZyk6IE5vIG5lZWQgdG8gaGFuZGxlIENQUF9ESEFTSCBhbnkgbW9yZS4KCShjcHBfZ2V0X3Rva2VuKTogRG9uJ3QgaGFuZGxlIGRpcmVjdGl2ZXMgaGVyZS4KCSogY3BwbGliLmg6IFJlbW92ZSBDUFBfREhBU0ggdG9rZW4gdHlwZS4KCldlZCBOb3YgIDggMjE6NTM6NDEgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlZ21vdmUuYyAoY29tYmluZV9zdGFja19hZGp1c3RtZW50c19mb3JfYmxvY2tzKTogUmVjb2duaXplIHB1c2hlcwoJZm9ybWVkIHVzaW5nIFBSRV9NT0RJRlkgdG9vLgoKMjAwMC0xMS0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHJlZS50ZXhpIChWQVJfREVDTCk6IERlc2NyaWJlIHJlcHJlc2VudGF0aW9uIG9mIEdDQydzCglleHRlbnNpb24gZm9yIHBsYWNpbmcgdmFyaWFibGVzIGluIHBhcnRpY3VsYXIgcmVnaXN0ZXJzLgoKCSogYy10cmVlLnRleGkgKEZVTkNUSU9OX1RZUEUpOiBDbGFyaWZ5IFRZUEVfQVJHX1RZUEVTIGZvcgoJdW5wcm90b3R5cGVkIEMgZnVuY3Rpb25zIHdpdGggbm8gcGFyYW1ldGVycy4KCjIwMDAtMTEtMDggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKEFTTV9PVVRQVVRfTUlfVEhVTkspOiBDYXN0IERFTFRBIHRvIGludAoJYmVmb3JlIHBhc3NpbmcgdG8gZnByaW50Zi4KCjIwMDAtMTEtMDggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uYyAoZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogQ2FzdCBHRVRfTU9ERV9TSVpFIHRvCglIT1NUX1dJREVfSU5UIGJlZm9yZSBuZWdhdGluZyBpdC4KCjIwMDAtMTEtMDggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwcikgW0FERFJfRVhQUl06IEhhbmRsZSB3aGVuIG9wMCBpcyBSRVRVUk5fREVDTAoJcGFzc2VkIGluIG11bHRpcGxlIG5vbi1jb250aWd1b3VzIGxvY2F0aW9ucy4KCjIwMDAtMTEtMDggIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIFJFQURNRS5nbmF0OiBSZW1vdmUgZmlsZS4KCjIwMDAtMTEtMDggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbWtsaWJnY2MuaW4gKEVYVFJBX01VTFRJTElCX1BBUlRTKTogR2VuZXJhdGUgbXVsdGlsaWIgcGFydHMKCWluLXBsYWNlLgoKMjAwMC0xMS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmb3V0LmMgKElOU05fTEFCRUxfRk1UKTogUmVtb3ZlLgoJKG91dHB1dF9sYWJlbF9kaWUpOiBVc2UgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMLgoJKGR3YXJmb3V0X2xhYmVsKTogUmVtb3ZlLgoJKiBkd2FyZm91dC5oOiBSZW1vdmUgaXQncyBwcm90b3R5cGUuCgkqIGR3YXJmMm91dC5jIChJTlNOX0xBQkVMX0ZNVCk6IFJlbW92ZS4KCShnZW5fbGFiZWxfZGllKTogVXNlIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTC4KCShkd2FyZjJvdXRfbGFiZWwpOiBSZW1vdmUuCgkqIGR3YXJmMm91dC5oOiBSZW1vdmUgaXQncyBwcm90b3R5cGUuCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbik6IERvbid0IGNhbGwgZHdhcmZbMl1vdXRfbGFiZWwuCgoyMDAwLTExLTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvZmRlLWdsaWJjLmMgKGZpbmRfZmRlX2Zvcl9kc28pOiBEbyBhIGJpbmFyeQoJc2VhcmNoIG9uIHRoZSB1bndpbmQgcmVnaW9uIHNlY3Rpb24uCgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3ZiaSk6IEFkZCByL3IgYWx0ZXJuYXRpdmUuCgkoY21vdmRpX2ludGVybmFsX2FzdGVwKTogRGVzY3JpYmUgYWxsIGNvbWJpbmF0aW9ucyBvZiByZWdpc3RlcgoJY2xhc3NlcyBmb3Igc291cmNlcyAmIGRlc3RpbmF0aW9uczsgcmVtb3ZlIG1hdGNoaW5nIGNvbnN0cmFpbnRzLgoJKGNtb3ZkaV9pbnRlcm5hbCk6IExpa2V3aXNlLgoKCSogZ2NjLmMgKGRlZmF1bHRfY29tcGlsZXJzKSBbQGNwcC1vdXRwdXRdOiBBZGQgLWZwcmVwcm9jZXNzZWQuCgoyMDAwLTExLTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1sYW5nLmMgKHN0YXJ0X2NkdG9yLCBmaW5pc2hfY2R0b3IpOiBOZXcgZnVuY3Rpb25zLgoJKGZpbmlzaF9maWxlKTogVXNlIHRoZW0gaW4gYnVpbGRpbmcgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBmdW5jdGlvbnMuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoSEFTX0lOSVRfU0VDVElPTiwgTERfSU5JVF9TV0lUQ0gsCglMRF9GSU5JX1NXSVRDSCk6IE1vdmUgLi4uCgkqIGNvbmZpZy9hbHBoYS9vc2YuaDogLi4uIGhlcmUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1pbnRlcml4Lmg6IERvbid0IHVuZGVmIHRoZW0uCgoyMDAwLTExLTA3ICBKZWZmcmV5IE9sZGhhbSAgPG9sZGhhbUBvei5jb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvdC1pcmlzNiAoRlBCSVQpOiBOZXcuICBBZGRlZCBzbyB0aGF0IF9fdW5vcmRkZjIgaXMKCWluY2x1ZGVkIGluIGxpYmdjYy5hLgoJKERQQklUKTogTGlrZXdpc2UuCgkoZHAtYml0LmMpOiBMaWtld2lzZS4KCShmcC1iaXQuYyk6IExpa2V3aXNlLgoKMjAwMC0xMS0wNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tODhrL204OGsuaCAoR0xPQkFMX0FTTV9PUCk6IEFkZCBtaXNzaW5nIHRhYi4KCShJTlRFUk5BTF9BU01fT1ApOiBBZGQgbWlzc2luZyB0YWIuCgoyMDAwLTExLTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBhbGlhcy5jIChpbml0X2FsaWFzX2FuYWx5c2lzKSwgY2FsbHMuYyAoZXhwYW5kX2NhbGwsCgllbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKSwgY29tYmluZS5jIChpbml0X3JlZ19sYXN0X2FycmF5cyksCgljc2UuYyAobmV3X2Jhc2ljX2Jsb2NrKSwgZGJ4b3V0LmMgKGRieG91dF90eXBlKSwgZGlhZ25vc3RpYy5jCgkoaW5pdF9vdXRwdXRfYnVmZmVyLCBzZXRfZGlhZ25vc3RpY19jb250ZXh0KSwgZHdhcmYyb3V0LmMKCShlcXVhdGVfZGVjbF9udW1iZXJfdG9fZGllLCBidWlsZF9hYmJyZXZfdGFibGUpLCBlbWl0LXJ0bC5jCgkoaW5pdF9lbWl0X29uY2UpLCBmb2xkLWNvbnN0LmMgKG11bF9kb3VibGUsIGRpdl9hbmRfcm91bmRfZG91YmxlKSwKCWZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyksIGdjc2UuYyAoY29tcHV0ZV9jYW5fY29weSwKCWFsbG9jX2djc2VfbWVtLCBhbGxvY19yZWdfc2V0X21lbSwgcmVjb3JkX29uZV9zZXQsCgljb21wdXRlX2hhc2hfdGFibGUsIGNvbXB1dGVfc2V0X2hhc2hfdGFibGUsCgljb21wdXRlX2V4cHJfaGFzaF90YWJsZSksIGdlbmF0dHJ0YWIuYyAob3B0aW1pemVfYXR0cnMpLCBnbG9iYWwuYwoJKGdsb2JhbF9hbGxvYywgZ2xvYmFsX2NvbmZsaWN0cyksIGhhaWZhLXNjaGVkLmMgKGNvbXB1dGVfdHJnX2luZm8sCgljbGVhcl91bml0cywgc2NoZWR1bGVfYmxvY2spLCBpbnRlZ3JhdGUuYyAoaW5pdGlhbGl6ZV9mb3JfaW5saW5lLAoJZXhwYW5kX2lubGluZV9mdW5jdGlvbiksIGp1bXAuYyAodGhyZWFkX2p1bXBzKSwgbG9jYWwtYWxsb2MuYwoJKGxvY2FsX2FsbG9jKSwgbG9vcC5jIChjb21iaW5lX21vdmFibGVzLCBjb3VudF9sb29wX3JlZ3Nfc2V0LAoJbG9hZF9tZW1zX2FuZF9yZWNvdW50X2xvb3BfcmVnc19zZXQpLCBwcmludC10cmVlLmMgKGRlYnVnX3RyZWUpLAoJcmVnY2xhc3MuYyAoaW5pdF9yZWdfc2V0cywgaW5pdF9yZWdfc2V0c18xLCByZWdjbGFzcywKCXJlY29yZF9yZWdfY2xhc3NlcywgYWxsb2NhdGVfcmVnX2luZm8pLCByZWxvYWQuYwoJKGdldF9zZWNvbmRhcnlfbWVtLCByZW1vdmVfYWRkcmVzc19yZXBsYWNlbWVudHMsIGZpbmRfcmVsb2FkcyksCglyZWxvYWQxLmMgKHJlbG9hZCwgc2V0X2luaXRpYWxfbGFiZWxfb2Zmc2V0cywgZmluaXNoX3NwaWxscywKCXJlbG9hZF9hc19uZWVkZWQsIGNob29zZV9yZWxvYWRfcmVnc19pbml0LAoJcmVsb2FkX2NzZV9zaW1wbGlmeV9vcGVyYW5kcyksIHJlb3JnLmMgKGRicl9zY2hlZHVsZSksIHNiaXRtYXAuYwoJKHNiaXRtYXBfemVybyksIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9wbHVzX21pbnVzKSwgc3NhLmMKCShyZW5hbWVfcmVnaXN0ZXJzKSwgc3RtdC5jIChleHBhbmRfZW5kX2Nhc2UpLCB1bnJvbGwuYwoJKHVucm9sbF9sb29wKSwgdmFycmF5LmMgKHZhcnJheV9ncm93KSwgb2JqYy9vYmpjLWFjdC5jOiBVc2UgbWVtc2V0CgkoKSBpbnN0ZWFkIG9mIGJ6ZXJvICgpLgoKMjAwMC0xMS0wNyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcC9sYW5nLXNwZWNzLmg6IEZpeCAtc2F2ZS10ZW1wcyBzcGVjcyB1bmRlciBVU0VfQ1BQTElCLgoKMjAwMC0xMS0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1jb21tb24uYyAoY29tYmluZV9zdHJpbmdzKTogT25seSB3YXJuIGFib3V0IGxvbmcgc3RyaW5ncyBmb3IgQy4KClR1ZSBOb3YgIDcgMTk6NDQ6MzAgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIGNvbWJpbmUuYyAoZGlzdHJpYnV0ZV9ub3Rlcyk6IEZpeCB0eXBvIGluIGxhc3QgY2hhbmdlLgoKMjAwMC0xMS0wNyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdmRpX2ludGVybmFsMzIrMSk6IFVzZQoJb3BlcmFuZF9zdWJyZWdfZm9yY2UgcmF0aGVyIHRoYW4gZ2VuX3J0eF9TVUJSRUcuCgkobW92ZGlfaW50ZXJuYWwzMisyKTogTGlrZXdpc2UuCgoyMDAwLTExLTA3ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlndXJlLmluIChhcm0qLSotbGludXhhb3V0Kik6IE9ic29sZXRlLCBkZWxldGVkLgoJKiBjb25maWcvYXJtL2xpbnV4LWFvdXQuaDogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMTEtMDcgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogQUJPVVQtR0NDLU5MUzogUmVtb3ZlIHRoZSBwYXRjaCBmb3IgZ2V0dGV4dCBhcyBpdCBoYXMgYmVlbgoJYWNjZXB0ZWQgbXkgdGhlIGdldHRleHQgbWFpbnRhaW5lci4KCjIwMDAtMTEtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cnBicmspOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgQlVJTFRfSU5fU1RSUEJSSy4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fU1RSUEJSSyk6IE5ldyBlbnRyeS4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IERlY2xhcmUgYnVpbHRpbgoJc3RycGJyay4KCjIwMDAtMTEtMDcgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5AZHJhZ29uLm51eGkuY29tPgoKCSogY29uZmlnL2FscGhhL2ZyZWVic2QuaDogTmV3IGZpbGUgLS0gRnJlZUJTRC9hbHBoYSBhcmNoaXRlY3R1cmUgZmlsZS4KCSogUE9URklMRVMuaW46IEFkZCBjb25maWcvYWxwaGEvZnJlZWJzZC5oCgkqIGNvbmZpZ3VyZS5pbjogQWRkIGFscGhhKi1mcmVlYnNkIHN1cHBvcnQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMTEtMDcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIHRyZWUuYyAoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXNfMik6IE1ha2UgdmFfbGlzdF90eXBlX25vZGUgYmUgYQoJY29weSBvZiBwdHJfdHlwZV9ub2RlIHJhdGhlciB0aGFuIHB0cl90eXBlX25vZGUgaXRzZWxmLgoKVHVlIE5vdiAgNyAwNjoyOToyNCAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSogY29tYmluZS5jIChyZWNvZ19mb3JfY29tYmluZSk6IEFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgdmVjdG9yIHdpdGgKCXJ0dmVjX2FsbG9jLgoJKiByZWNvZy5jIChhcHBseV9jaGFuZ2VfZ3JvdXApOiBMaWtld2lzZS4KClR1ZSBOb3YgIDcgMDY6MjQ6MDIgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIGZsb3cuYyAodmVyaWZ5X2xvY2FsX2xpdmVfYXRfc3RhcnQpOiBCYWNrIG91dCBsYXN0IGNoYW5nZS4KCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogV2hlbiBwYXJ0cyBvZiBhIGhhcmQgcmVnIGFyZQoJbmVpdGhlciBzZXQgbm9yIHJlZmVyZW5jZWQgaW4gUExBQ0UsIHNlYXJjaCBiYWNrd2FyZHMgZm9yIGEKCXBsYWNlIHRvIHB1dCBhIFJFR19VTlVTRUQgbm90ZTsgaWYgbm9uZSBmb3VuZCwgYXNrIGZvciBmbG93CglpbmZvIHJlZnJlc2guCgpNb24gTm92ICA2IDIwOjA4OjEzIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKGVsaW1pbmF0ZV9yZWdzX2luX2luc24pOiBBbGxvdyBhIHNldCB0byBiZSBhIFBBUkFMTEVMCgl3aXRoIChjbG9iYmVyIChtYXRjaF9zY3JhdGNoLi4uKSkuCgoyMDAwLTExLTA2ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGMtbGV4LmMgKGluaXRfY19sZXgpOiBJZiBjcHBfc3RhcnRfcmVhZCBmYWlscywgZXhpdCB3aXRoCgllcnJvciBzdGF0dXMuCgoyMDAwLTExLTA2ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIHRyYWRjcHAuYyAoc3BlY2lhbF9zeW1ib2wpOiBBc3NpZ24gYW4gbnVsbCBzdHJpbmcgcmF0aGVyCgl0aGFuIHdyaXRpbmcgdG8gYW4gdW5hbGxvY2F0ZWQgYnVmZmVyLgoKMjAwMC0xMS0wNiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoX2NwcF9lcXVpdl90b2tlbnMpOiBDaGVjayBhcmdfbm8gaW4gdGhlCglDUFBfTUFDUk9fQVJHIGNhc2UuCgoyMDAwLTExLTA2ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGMtbGV4LmMgKGNfbGV4KTogUmVwbGFjZSB0b2sudmFsLmF1eCB3aXRoIHRvay52YWwuYyBvcgoJdG9rLnZhbC5hcmdfbm8gYXMgYXBwcm9wcmlhdGUuCgkqIGNwcGV4cC5jIChsZXgpOiBTaW1pbGFybHkuCgkqIGNwcGxleC5jIChfY3BwX2xleF90b2tlbiwgY3BwX3NwZWxsX3Rva2VuLCBjcHBfb3V0cHV0X3Rva2VuLAoJY3BwX2VxdWl2X3Rva2VucywgY3BwX2Nhbl9wYXN0ZSwgY3BwX2F2b2lkX3Bhc3RlKTogU2ltaWxhcmx5LgoJKiBjcHBtYWNyby5jIChzdHJpbmdpZnlfYXJnLCByZXBsYWNlX2FyZ3MsIGxleF9leHBhbnNpb25fdG9rZW4sCgljcHBfbWFjcm9fZGVmaW5pdGlvbik6IFNpbWlsYXJseS4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfdG9rZW4pOiBSZXBsYWNlIGF1eCB3aXRoIGMgYW5kIGFyZ19uby4KCjIwMDAtMTEtMDYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChhZGRkaTMpOiBJZiBvcGVyYW5kc1syXSBpcyA0MDk2IGFuZAoJb3BlcmFuZHNbMV0gaXMgY29uc3RhbnQsIGNhbGN1bGF0ZSB0aGUgc3VtIGFuZCBnZW5lcmF0ZSBtb3ZkaS4KCShhZGRzaTMpOiBTaW1pbGFybHkuICBVc2UgU0ltb2RlIGluIGNhbGwgdG8gYXJpdGhfNDA5Nl9vcGVyYW5kLgoJKHN1YnNpMyk6IFVzZSBTSW1vZGUgaW4gY2FsbCB0byBhcml0aF80MDk2X29wZXJhbmQuCgoyMDAwLTExLTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogT24gc3BhcmM2NCB3ZSBuZWVkIHRvCglhZGp1c3QgJW8xLCBub3QgJW8wIGlmIHRoZSByZXR1cm4gdHlwZSBpcyBsYXJnZSBzdHJ1Y3R1cmUuCgoyMDAwLTExLTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoc211bHNpM19oaWdocGFydF92OHBsdXMsIGFzaGxkaTNfdjhwbHVzKzEsCgl1cGRhdGVfcmV0dXJuLCBmbHVzaCwgZmx1c2hkaSwgZmZzc2kyLCBmZnNkaTIpOiBGaXggb3V0cHV0IGZvcm1hdHRpbmcuCgpTYXQgU2VwIDIzIDE5OjEwOjIwIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+ICYgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBleHBtZWQuYyAoZXhwYW5kX2Rpdm1vZCk6IEZvciBzaWduZWQgZGl2aWRlIGJ5IDIsIHByZWZlcgoJYSBicmFuY2ggYW5kIGZld2VyIHNoaWZ0cyBpZiBicmFuY2hlcyBhcmUgdmVyeSBjaGVhcC4KCjIwMDAtMTEtMDUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgYWxsIHRhcmdldHMgcmVsYXRlZCB0byBidWlsZGluZwoJZGlzdHJpYnV0aW9ucyBhbmQgZGlmZnMsIG9yIElOU1RBTEwuCgkqIElOU1RBTEwsIGluc3RhbGwxLnRleGk6IFJlbW92ZS4KCSogY29uZmlndXJlLmluOiBSZW1vdmUgbWVudGlvbiBvZiBkaXN0ZGlyLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIG9iamMvTWFrZS1sYW5nLmluOiBSZW1vdmUgbWVudGlvbiBvZiBkaXN0ZGlyLgoKMjAwMC0xMS0wNCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHAudGV4aTogVXBkYXRlIGZvciBfUHJhZ21hLgoKMjAwMC0xMS0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjLnRleGkgKENvbnRyaWJ1dGluZyk6IFVwZGF0ZSBVUkwgZm9yIHByb2plY3RzIHdlYiBwYWdlLgoKMjAwMC0xMS0wNCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAocGFyc2Vfc3RyaW5nKTogRG9uJ3QgYWxsb3cgbXVsdGlsaW5lIHN0cmluZ3MgaW4KCSNpbmNsdWRlIGZhbWlseSBkaXJlY3RpdmVzLgoKMjAwMC0xMS0wNCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsaWIuYyAoZG9fbGluZSk6IE9ubHkgd2FybiBwZWRhbnRpY2FsbHkgaWYgbm90IHJlYWRpbmcKCXByZXByb2Nlc3NlZCBpbnB1dC4KCjIwMDAtMTEtMDQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoZW1pdF9jYWxsXzEpIFtzaWJjYWxsX3BvcF06IFVzZSBuX3BvcHBlZCBpbnN0ZWFkIG9mCglSRVRVUk5fUE9QU19BUkdTKCkuCgoyMDAwLTExLTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RybGVuKTogUmVtb3ZlIHVudXNlZCBtb2RlCglhcmd1bWVudC4KCSogZ2NjLmMgKHByb2Nlc3NfY29tbWFuZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgkqIGZvbGQtY29uc3QuYzogSW5jbHVkZSBleHByLmguCgkqIHJlY29nLmM6IEluY2x1ZGUgcmVsb2FkLmguCgkqIE1ha2VmaWxlLmluIChyZWNvZy5vLCBmb2xkLWNvbnN0Lm8pOiBVcGRhdGUgZGVwcy4KCjIwMDAtMTEtMDIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGZpeGluYy9nbnUtcmVnZXguYzogQ2hhbmdlICdDWUdOVVMgTE9DQUwnIHRvICdFR0NTIExPQ0FMJy4KCkZyaSBOb3YgIDMgMTM6NDE6MDQgMjAwMCAgTWFyayBQIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvaXJpczYuaCAoU1VCVEFSR0VUX0NDMV9TUEVDKTogUmVtb3ZlIC1zdGF0aWMKCWhhbmRsaW5nLgoJKFNUQVJURklMRV9TUEVDKTogTGlrZXdpc2UuCgkoTElOS19TUEVDKTogTGlrZXdpc2UuCgoyMDAwLTExLTAzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoZm9sZC1jb25zdC5vKTogRGVwZW5kIG9uICQoR0dDX0gpLCBub3QgZ2djLmguCgkodG9wbGV2Lm8pOiBMaWtld2lzZSBmb3IgJChMT09QX0gpL2xvb3AuaCBhbmQgJChSRUdTX0gpL3JlZ3MuaC4KCShzaW1wbGlmeS1ydHgubyk6IExpa2V3aXNlIGZvciAkKEdHQ19IKS9nZ2MuaC4KCjIwMDAtMTEtMDMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMsIGNvcHlfbGFuZ19kZWNsKSwgZHdhcmZvdXQuYwoJKGR3YXJmb3V0X2xpbmUpLCBnY2MuYyAobWFpbiwgc2F2ZV9zdHJpbmcpLCB0cmVlLmMgKGluaXRfb2JzdGFja3MsCglwZXJtX2NhbGxvYywgZ2V0X2lkZW50aWZpZXIsIG1heWJlX2dldF9pZGVudGlmaWVyLAoJcmVhbF92YWx1ZV9mcm9tX2ludF9jc3QsIHNpbXBsZV9jc3RfZXF1YWwpLCB2YXJhc20uYwoJKGFzc2VtYmxlX25hbWUsIGFzc2VtYmxlX3JlYWwsIGltbWVkX3JlYWxfY29uc3RfMSwKCWNvbXBhcmVfY29uc3RhbnRfMSwgZGVjb2RlX3J0eF9jb25zdCwgb3V0cHV0X2NvbnN0YW50X3Bvb2wpOiBVc2UKCXN0cnJjaHIgKCkgaW5zdGVhZCBvZiByaW5kZXggKCkuICBVc2UgbWVtY21wICgpIGluc3RlYWQgb2YgYmNtcAoJKCkuICBVc2UgbWVtY3B5ICgpIGluc3RlYWQgb2YgYmNvcHkgKCkuICBVc2UgbWVtc2V0ICgpIGluc3RlYWQgb2YKCWJ6ZXJvICgpLgoKMjAwMC0xMS0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcGZpbGVzLmMgKG9wZW5fZmlsZSk6IElmIGFscmVhZHkgcmVhZCwgdGhlbiBkb24ndCByZW9wZW4uCglJbW1lZGlhdGVseSBjbG9zZSBhbiBlbXB0eSBmaWxlLgoKMjAwMC0xMS0wMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBleHByLmggKGZvbGRfYnVpbHRpbik6IE1vdmUgZGVjbGFyYXRpb24uLi4KCSogdHJlZS5oIChmb2xkX2J1aWx0aW4pOiAuLi4gaGVyZS4KCkZyaSBOb3YgIDMgMDU6NDE6MDcgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIGZsb3cuYyAodmVyaWZ5X2xvY2FsX2xpdmVfYXRfc3RhcnQpOiBBbGxvdyBoYXJkIHJlZ3MgdG8gZGllLgoKMjAwMC0xMS0wMiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+Cgpjb25maWc6CgkqIGEyOWsvYTI5ay5oLCBhMjlrL3VuaXguaCwgYTI5ay92eDI5ay5oLAoJYWxwaGEvYWxwaGEtaW50ZXJpeC5oLCBhbHBoYS9hbHBoYS5oLCBhbHBoYS9saW51eC5oLAoJYWxwaGEvb3BlbmJzZC5oLCBhbHBoYS9vc2YuaCwgYWxwaGEvdm1zLmgsIGFscGhhL3Z4d29ya3MuaCwKCWFscGhhL3dpbi1udC5oLCBhcmMvYXJjLmgsIGFybS9hcm0uaCwgYXJtL2Nvbml4LWVsZi5oLAoJYXJtL2xpbnV4LWFvdXQuaCwgYXJtL2xpbnV4LWVsZi5oLCBhcm0vbmV0YnNkLmgsIGFybS9yaXNjaXguaCwKCWFybS9yaXNjaXgxLTEuaCwgYXJtL3NlbWlhb2YuaCwgYXJtL3Vua25vd24tZWxmLW9hYmkuaCwgYXJtL3Z4YXJtLmgsCgljNHgvcnRlbXMuaCwgY2xpcHBlci9jbGl4LmgsIGNvbnZleC9jb252ZXguaCwgZDMwdi9kMzB2LmgsCgllbHhzaS9lbHhzaS5oLCBmcjMwL2ZyMzAuaCwgaDgzMDAvaDgzMDAuaCwgaTM3MC9saW51eC5oLCBpMzcwL212cy5oLAoJaTM3MC9vZS5oLCBpMzg2LzM4NmJzZC5oLCBpMzg2L2FpeDM4Nm5nLmgsIGkzODYvYmVvcy1lbGYuaCwKCWkzODYvYnNkMzg2LmgsIGkzODYvY3J0ZGxsLmgsIGkzODYvY3lnd2luLmgsIGkzODYvZGd1eC5oLAoJaTM4Ni9kamdwcC1ydGVtcy5oLCBpMzg2L2RqZ3BwLmgsIGkzODYvZnJlZWJzZC1hb3V0LmgsIGkzODYvZnJlZWJzZC5oLAoJaTM4Ni9nbnUuaCwgaTM4Ni9pMzg2LWludGVyaXguaCwgaTM4Ni9pMzg2LmgsIGkzODYvbGludXgtYW91dC5oLAoJaTM4Ni9saW51eC1vbGRsZC5oLCBpMzg2L2xpbnV4LmgsIGkzODYvbHlueC1uZy5oLCBpMzg2L2x5bnguaCwKCWkzODYvbWFjaC5oLCBpMzg2L21pbmd3MzIuaCwgaTM4Ni9tb3NzLmgsIGkzODYvbmV0YnNkLmgsCglpMzg2L25ldHdhcmUuaCwgaTM4Ni9uZXh0LmgsIGkzODYvb3BlbmJzZC5oLCBpMzg2L29zZjFlbGYuaCwKCWkzODYvb3NmZWxmLmgsIGkzODYvb3Nmcm9zZS5oLCBpMzg2L3B0eDQtaS5oLCBpMzg2L3J0ZW1zLmgsCglpMzg2L3J0ZW1zZWxmLmgsIGkzODYvc2NvLmgsIGkzODYvc2NvNC5oLCBpMzg2L3NjbzRkYnguaCwgaTM4Ni9zY281LmgsCglpMzg2L3Njb2RieC5oLCBpMzg2L3NlcXVlbnQuaCwgaTM4Ni9zb2wyLmgsIGkzODYvc3VuLmgsIGkzODYvc3lzdjMuaCwKCWkzODYvc3lzdjQuaCwgaTM4Ni91d2luLmgsIGkzODYvdnN0YS5oLCBpMzg2L3Z4aTM4Ni5oLCBpMzg2L3dpbi1udC5oLAoJaTM4Ni93aW4zMi5oLCBpODYwL2Z4MjgwMC5oLCBpODYwL2k4NjAuaCwgaTg2MC9tYWNoLmgsIGk4NjAvc3lzdjMuaCwKCWk4NjAvc3lzdjQuaCwgaTk2MC9pOTYwLmgsIGk5NjAvcnRlbXMuaCwgaTk2MC92eDk2MC1jb2ZmLmgsCglpYTY0L2lhNjQuaCwgaWE2NC9saW51eC5oLCBtMzJyL20zMnIuaCwgbTY4ay8zYjEuaCwgbTY4ay8zYjFnLmgsCgltNjhrL2EtdXguaCwgbTY4ay9hbHRvczMwNjguaCwgbTY4ay9hbWl4LmgsIG02OGsvYXBvbGxvNjguaCwKCW02OGsvY3Jkcy5oLCBtNjhrL2N0aXguaCwgbTY4ay9kcHgyLmgsIG02OGsvaHAyYnNkLmgsIG02OGsvaHAzMjAuaCwKCW02OGsvaHAzYnNkLmgsIG02OGsvaHAzYnNkNDQuaCwgbTY4ay9pc2kuaCwgbTY4ay9saW51eC1hb3V0LmgsCgltNjhrL2xpbnV4LmgsIG02OGsvbHlueC1uZy5oLCBtNjhrL2x5bnguaCwgbTY4ay9tNjhrZW1iLmgsCgltNjhrL202OGt2NC5oLCBtNjhrL21vdDMzMDAuaCwgbTY4ay9uZXRic2QuaCwgbTY4ay9uZXdzLmgsCgltNjhrL25leHQuaCwgbTY4ay9vcGVuYnNkLmgsIG02OGsvcGJiLmgsIG02OGsvcGxleHVzLmgsIG02OGsvcnRlbXMuaCwKCW02OGsvcnRlbXNlbGYuaCwgbTY4ay9zdW4yLmgsIG02OGsvc3VuMy5oLCBtNjhrL3N1bjNtYWNoLmgsCgltNjhrL3Rvd2VyLWFzLmgsIG02OGsvdG93ZXIuaCwgbTY4ay92eG02OGsuaCwgbTg4ay9kZ3V4LmgsCgltODhrL2RvbHBoLmgsIG04OGsvbHVuYS5oLCBtODhrL204OGstYW91dC5oLCBtODhrL204OGstY29mZi5oLAoJbTg4ay9vcGVuYnNkLmgsIG04OGsvc3lzdjMuaCwgbTg4ay9zeXN2NC5oLCBtaXBzL2JzZC00LmgsCgltaXBzL2JzZC01LmgsIG1pcHMvZGVjLWJzZC5oLCBtaXBzL2RlYy1vc2YxLmgsIG1pcHMvZ251LmgsCgltaXBzL2lyaXMzLmgsIG1pcHMvaXJpczUuaCwgbWlwcy9pcmlzNi5oLCBtaXBzL2xpbnV4LmgsIG1pcHMvbWlwcy5oLAoJbWlwcy9uZXRic2QuaCwgbWlwcy9uZXdzNC5oLCBtaXBzL25ld3M1LmgsIG1pcHMvbndzMzI1MHY0LmgsCgltaXBzL29wZW5ic2QuaCwgbWlwcy9vc2Zyb3NlLmgsIG1pcHMvcnRlbXM2NC5oLCBtaXBzL3NuaS1zdnI0LmgsCgltaXBzL3N2cjMtNC5oLCBtaXBzL3N2cjMtNS5oLCBtaXBzL3N2cjQtNC5oLCBtaXBzL3N2cjQtNS5oLAoJbWlwcy91bHRyaXguaCwgbnMzMmsvZW5jb3JlLmgsIG5zMzJrL21lcmxpbi5oLCBuczMyay9uZXRic2QuaCwKCW5zMzJrL25zMzJrLmgsIG5zMzJrL3BjNTMyLW1hY2guaCwgbnMzMmsvcGM1MzIuaCwgbnMzMmsvc2VxdWVudC5oLAoJbnMzMmsvdGVrNjAwMC5oLCBuczMyay90ZWs2MTAwLmgsIG5zMzJrL3RlazYyMDAuaCwgcGEvcGEtaGl1eC5oLAoJcGEvcGEtaHB1eC5oLCBwYS9wYS1ocHV4Ny5oLCBwYS9wYS1saW51eC5oLCBwYS9wYS1vc2YuaCwKCXBhL3BhLXByby1lbmQuaCwgcGEvcGEuaCwgcGEvcnRlbXMuaCwgcGovbGludXguaCwgcGovcGouaCwKCXJvbXAvcm9tcC5oLCByczYwMDAvYWl4LmgsIHJzNjAwMC9haXgzMS5oLCByczYwMDAvYWl4NDEuaCwKCXJzNjAwMC9haXg0My5oLCByczYwMDAvYmVvcy5oLCByczYwMDAvZWFiaS5oLCByczYwMDAvZWFiaXNpbS5oLAoJcnM2MDAwL2xpbnV4LmgsIHJzNjAwMC9seW54LmgsIHJzNjAwMC9tYWNoLmgsIHJzNjAwMC9ydGVtcy5oLAoJcnM2MDAwL3N5c3Y0LmgsIHJzNjAwMC92eHBwYy5oLCBzaC9lbGYuaCwgc2gvbGludXguaCwgc2gvcnRlbXMuaCwKCXNoL3J0ZW1zZWxmLmgsIHNoL3NoLmgsIHNwYXJjL2FvdXQuaCwgc3BhcmMvZWxmLmgsIHNwYXJjL2xpbnV4LWFvdXQuaCwKCXNwYXJjL2xpbnV4LmgsIHNwYXJjL2xpbnV4NjQuaCwgc3BhcmMvbGl0ZS5oLCBzcGFyYy9saXRlY29mZi5oLAoJc3BhcmMvbGl0ZWVsZi5oLCBzcGFyYy9seW54LW5nLmgsIHNwYXJjL2x5bnguaCwgc3BhcmMvbmV0YnNkLmgsCglzcGFyYy9vcGVuYnNkLmgsIHNwYXJjL3BiZC5oLCBzcGFyYy9ydGVtcy5oLCBzcGFyYy9ydGVtc2VsZi5oLAoJc3BhcmMvc29sMi1zbGQtNjQuaCwgc3BhcmMvc29sMi5oLCBzcGFyYy9zcDY0LWFvdXQuaCwKCXNwYXJjL3NwNjQtZWxmLmgsIHNwYXJjL3NwODZ4LWFvdXQuaCwgc3BhcmMvc3A4NngtZWxmLmgsCglzcGFyYy9zcGFyYy5oLCBzcGFyYy9zeXN2NC5oLCBzcGFyYy92eHNpbS5oLCBzcGFyYy92eHNwYXJjLmgsCgl2ODUwL3J0ZW1zLmgsIHZheC9uZXRic2QuaCwgdmF4L29wZW5ic2QuaCwgdmF4L3VsdHJpeC5oLCB2YXgvdmF4LmgsCgl2YXgvdmF4di5oLCB2YXgvdm1zLmgsIHdlMzJrL3dlMzJrLmgKCglSZXBsYWNlIC1BKCkgd2l0aCAtQT0sIHRoZSBuZXcgYXNzZXJ0aW9uIHN5bnRheC4KClRodSBOb3YgIDIgMjE6NTI6MzUgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIGNvbWJpbmUuYyAoZGlzdHJpYnV0ZV9ub3Rlcyk6IFVzZSBydHhfZXF1YWxfcCB0byBjaGVjayBlbGltX2kyIC8KCWVsaW1faTEuCglJbiBSRUdfREVBRCBoYW5kbGluZzogV2hlbiBoYW5kbGluZyBwYXJ0cyBvZiBtdWx0aS1oYXJkLXJlZyBoYXJkCglyZWdpc3RlcnMsIGluY3JlbWVudCB0aGUgbG9vcCBjb3VudGVyIGJ5IHRoZSBzaXplIG9mIHRoZSBwYXJ0czsKCXVzZSByZWN1cnNpb24gdG8gaGFuZGxlIGluZGl2aWR1YWwgcGFydHMuCgoyMDAwLTExLTAyICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNvbmZpZ3VyZS5pbjogTWFrZSBpbnRlZ3JhdGVkIENQUCB0aGUgZGVmYXVsdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKVGh1IE5vdiAgMiAxOToyMDoxMiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfZXF1aXZfcmVnKTogVGVzdCBhbGwgaGFyZCByZWdpc3RlcnMgZm9yIG1lbWJlcnNoaXAKCWluIHRoZSByZXF1ZXN0ZWQgY2xhc3MuCgoyMDAwLTExLTAyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjb2xsZWN0Mi5jIChtYWluLCB3cml0ZV9jX2ZpbGVfc3RhdCksIGdjYy5jICh0cmFuc2xhdGVfb3B0aW9ucywKCXByb2Nlc3NfY29tbWFuZCwgbWFpbiksIGdjb3YuYyAob3Blbl9maWxlcywgb3V0cHV0X2RhdGEpLCB0bGluay5jCgkoZnJvYl9leHRlbnNpb24sIHNjYW5fbGlua2VyX291dHB1dCksIHRvcGxldi5jCgkoZmlsZV9uYW1lX25vbmRpcmVjdG9yeSk6IFVzZSBzdHJjaHIgKCkgYW5kIHN0cnJjaHIgKCkgaW5zdGVhZCBvZgoJaW5kZXggKCkgYW5kIHJpbmRleCAoKS4KCjIwMDAtMTEtMDIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGdldF9mbGFnX3NwZWMsIGNoZWNrX2Zvcm1hdF9pbmZvX21haW4sCgljaGVja19mb3JtYXRfdHlwZXMpOiBVc2Ugc3RyY2hyICgpIGluc3RlYWQgb2YgaW5kZXggKCkuICBDb21wYXJlCglhZ2FpbnN0IGVycm9yX21hcmtfbm9kZSBpbnN0ZWFkIG9mIGNvbXBhcmluZyB0aGUgVFJFRV9DT0RFIGFnYWluc3QKCUVSUk9SX01BUksuCgoyMDAwLTExLTAyICBaYWNrIFdlaW5iZXJnIDx6YWNrd0BTdGFuZm9yZC5FRFU+CgoJSW50ZWdyYXRlZCBDUFAuCgoJKiBjLWxleC5jIChpbml0X2NfbGV4KTogVXBkYXRlIGNwcF9zdGFydF9yZWFkIGNhbGwuCgkoY2JfaWRlbnQpOiBVcGRhdGUgZm9yIG5ldyBjYWxsYmFjayBwcm90b3R5cGUuCgkoY2JfZGVmX3ByYWdtYSk6IFVwZGF0ZSBmb3IgbmV3IGNwcF9nZXRfdG9rZW4gcHJvdG90eXBlLgoJKGNfbGV4KTogU2ltaWxhcmx5LiAgVXNlIGNwcF9nZXRfbGluZS4KCgkqIGMtcGFyc2UuaW4gKGZpbmlzaF9wYXJzZSk6IFVwZGF0ZSBmb3IgbmV3IGNwcF9maW5pc2gKCXByb3RvdHlwZS4KCgkqIGNwL2xleC5jIChmaW5pc2hfcGFyc2UpOiBTaW1pbGFybHkuCgoyMDAwLTExLTAxICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBtYWNobW9kZS5kZWY6IEFkZCBWMTZRSW1vZGUuCgoyMDAwLTExLTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSk6IENoZWNrIGZvciBudWxsIHJlc3VsdAoJZnJvbSBydGxfZm9yX2RlY2xfbG9jYXRpb24uCgkoYWRkX2xvY2F0aW9uX29yX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IExpa2V3aXNlLgoKMjAwMC0xMS0wMSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsaWIuYyAocnVuX2RpcmVjdGl2ZSk6IFVzZSBjb3JyZWN0IGxpbmUgbnVtYmVyIGZvciBvdXRwdXQKCW9mIF9QcmFnbWEuICBSZW1lbWJlciBhbnkgaW4tcHJvZ3Jlc3MgZGlyZWN0aXZlLgoKCSogZ2NjLmRnL2NwcC92YXJhcmcyLmMsIGdjYy5kZy9jcHAvX1ByYWdtMS5jOiBOZXcgdGVzdHMuCgoyMDAwLTExLTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogc3RtdC5jIChleHBhbmRfc3RhcnRfbnVsbF9sb29wKTogU2V0IGNvbnRpbnVlX2xhYmVsLgoKMjAwMC0xMS0wMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fY29uc3RhbnRfcCwgZm9sZF9idWlsdGluKTogTmV3IGZ1bmN0aW9ucy4KCShleHBhbmRfYnVpbHRpbl9jb25zdGFudF9wKTogTW92ZSBwYXJ0cyBvZiB0aGUgY29kZSBpbnRvCglmb2xkX2J1aWx0aW5fY29uc3RhbnRfcC4KCShleHBhbmRfYnVpbHRpbl9zdHJsZW4pOiBNb3ZlIHBhcnRzIG9mIHRoZSBjb2RlIGludG8gZm9sZF9idWlsdGluLgoJKiBleHByLmggKGZvbGRfYnVpbHRpbik6IERlY2xhcmUuCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IEhhbmRsZSBidWlsdGluIGNhbGxzLgoKCSogYy10eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbCk6IENhbGwgZm9sZCBvbiB0aGUgQ0FMTF9FWFBSLgoKMjAwMC0xMS0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX3N0YXJ0X251bGxfbG9vcCk6IE5ldy4KCShleHBhbmRfZW5kX251bGxfbG9vcCk6IE5ldy4KCSogYy1zZW1hbnRpY3MuYyAoZ2VucnRsX2RvX3N0bXQpOiBVc2UgdGhlbS4KCSogdHJlZS5oOiBEZWNsYXJlIHRoZW0uCgoyMDAwLTExLTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY3BwbWFpbi5jIChzY2FuX2J1ZmZlcik6IERvbid0IGF2b2lkIHBhc3RlIGZvciBhc3NlbWJseS4KCjIwMDAtMTEtMDEgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogYy1wYXJzZS5pbiAoX3l5bGV4KTogUmVtb3ZlIENQUF9CQUNLU0xBU0ggY2FzZS4KCSogY3Avc3Bldy5jOiBTaW1pbGFybHkuCgkqIGNwcGxleC5jIChfY3BwX2xleF90b2tlbik6IEJhY2tzbGFzaGVzIGFyZSBub3cgQ1BQX09USEVSLgoJKiBjcHBtYWNyby5jIChzdHJpbmdpZnlfYXJnKTogU2ltaWxhcmx5LgoJKiBjcHBsaWIuaCAoQ1BQX0JBQ0tTTEFTSCk6IERlbGV0ZS4KCjIwMDAtMTAtMzEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cnN0cik6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfYnVpbHRpbik6IEhhbmRsZSBCVUlMVF9JTl9TVFJTVFIgYW5kIEJVSUxUX0lOX1NUUkNIUi4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fU1RSU1RSLCBCVUlMVF9JTl9TVFJDSFIpOiBOZXcgZW50cmllcy4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IERlY2xhcmUgYnVpbHRpbiBzdHJzdHIKCWFuZCBidWlsdGluIHN0cmNoci4KCjIwMDAtMTAtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGZjbW92X2NvbXBhcmlzb25fb3BlcmF0b3IpOiBDaGVjayBmb3IKCUNDRlBtb2RlIG9yIENDRlBVbW9kZSBpbnN0ZWFkIG9mIENDbW9kZS4KCShpeDg2X2V4cGFuZF9mcF9tb3ZjYyk6IENhbGwgaXg4Nl9leHBhbmRfc2V0Y2MgZm9yIG1vc3QKCXVub3JkZXJlZCBvcGVyYXRpb25zIGFzIHdlbGwuCgoyMDAwLTEwLTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1zZW1hbnRpY3MuYyAoZ2VucnRsX2RvX3N0bXQpOiBVc2UgaW50ZWdlcl96ZXJvcCBpbnN0ZWFkCglvZiBpbnRlZ2VyX3plcm9fbm9kZS4KCjIwMDAtMTAtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLXNlbWFudGljcy5jIChnZW5ydGxfZG9fc3RtdCk6IFNwZWNpYWwgY2FzZSBkby93aGlsZSgwKS4KCjIwMDAtMTAtMzEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL3Vua25vd24tZWxmLmggKFVOSVFVRV9TRUNUSU9OX1ApOiBEbyBub3QgYWxsb3cKCS1mZGF0YS1zZWN0aW9ucyB0byBvdmVycmlkZSB0aGUgc2VjdGlvbiBhdHRyaWJ1dGUgb2YgYSBERUNMLgoKMjAwMC0xMC0zMSAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQHNpYnl0ZS5jb20+CgoJKiBsaWJnY2MyLmMgKF9fc2h0YWIpOiBSZW1vdmUgX19zaHRhYiB2YXJpYWJsZS4KCSogbGliZ2NjLXN0ZC52ZXIgKEdDQ18zLjApOiBSZW1vdmUgX19zaHRhYiBmcm9tIHN5bWJvbCBsaXN0LgoJKiBNYWtlZmlsZS5pbiAoTElCMkZVTkNTKTogUmVtb3ZlIF9zaHRhYiBmcm9tIGxpc3Qgb2YgbGlicmFyeQoJbWVtYmVycy4KCjIwMDAtMTAtMzEgIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqIGRlZmF1bHRzLmggKEFTTV9PVVRQVVRfREVCVUdfTEFCRUwpOiBOZXcuCgkqIHRtLnRleGkgKEFTTV9PVVRQVVRfREVCVUdfTEFCRUwpOiBEb2N1bWVudC4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9iZWdpbl9ibG9jayk6IFVzZSBBU01fT1VUUFVUX0RFQlVHX0xBQkVMCglpbnN0ZWFkIG9mIEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwuCgkoZHdhcmYyb3V0X2VuZF9ibG9jaywgZHdhcmYyb3V0X2xhYmVsKTogTGlrZXdpc2UuCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbiwgY2FzZSBOT1RFX0lOU05fREVMRVRFRF9MQUJFTCk6IExpa2V3aXNlCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQVNNX09VVFBVVF9ERUJVR19MQUJFTCk6IERlZmluZS4KCjIwMDAtMTAtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoc3RydWN0IGR3X2xvY19kZXNjcl9zdHJ1Y3QpOiBBZGQgZHdfbG9jX2FkZHIuCgkoc2l6ZV9vZl9sb2NzKTogU2V0IGl0LgoJKG91dHB1dF9sb2Nfb3BlcmFuZHMpOiBVc2UgaXQgdG8gY29tcHV0ZSBicmFuY2ggZGlzcGxhY2VtZW50LgoJKGludF9sb2NfZGVzY3JpcHRvcik6IE5ldy4KCShtZW1fbG9jX2Rlc2NyaXB0b3IpOiBEZXJlZmVyZW5jZSBtZW1vcnkgaW4gdGhlIHByb3BlciBzaXplLgoJVXNlIERXX09QX3BsdXNfdWNvbnN0IHdoZW4gcG9zc2libGUuICBVc2UgaW50X2xvY19kZXNjcmlwdG9yLgoJKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSk6IE5ldy4KCShydGxfZm9yX2RlY2xfbG9jYXRpb24pOiBCcmVhayBvdXQgZnJvbSAuLi4KCShhZGRfbG9jYXRpb25fb3JfY29uc3RfdmFsdWVfYXR0cmlidXRlKTogLi4uIGhlcmUuCgkoYWRkX2JvdW5kX2luZm8pOiBVc2UgbG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlLgoKMjAwMC0xMC0zMSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHAudGV4aTogVXBkYXRlIGZvciBuZXcgY29tbWFuZCBsaW5lIGFzc2VydGlvbiBzeW50YXguCgkqIGNwcGxpYi5jIChjcHBfZGVmaW5lKTogU2ltcGxpZnkgYSBiaXQuCgkoY3BwX2Fzc2VydCwgY3BwX3VuYXNzZXJ0KTogVXNlIGhhbmRsZV9hc3NlcnRpb24uCgkoaGFuZGxlX2Fzc2VydGlvbik6IE5ldyBmdW5jdGlvbjsgYWNjZXB0IG5ldyBjb21tYW5kIGxpbmUKCXN5bnRheCB3aXRoICc9Jy4KCSogdGVzdHN1aXRlL2djYy5kZy9jcHAvYXNzZXJ0My5jOiBOZXcgdGVzdHMuCgoyMDAwLTEwLTMxICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcG1hY3JvLmMgKFNURENfMF9JTl9TWVNURU1fSEVBREVSUyk6IERlZmluZSB0byAwIGlmCgl1bmRlZmluZWQuICBSZW1vdmUgI2lmZGVmIGNoZWNrLgoJKiBjb25maWcvaTM4Ni9zb2wyLmgsIGNvbmZpZy9yczYwMDAvc29sMi5oLCBjb25maWcvc3BhcmMvc29sMi5oOgoJRGVmaW5lIFNURENfMF9JTl9TWVNURU1fSEVBREVSUyB0byAxLgoKMjAwMC0xMC0zMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoJICAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oOiBDbGFyaWZ5IENDTk9tb2RlIGRlc2NyaXB0aW9uIGluIGNvbW1lbnQuCgkoRVhUUkFfQ0NfTU9ERVMpOiBSZW1vdmUgQ0NSQ21vZGUuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9jb21wYXJpc29uX29wZXJhdG9yKTogUmVtb3ZlIENDUkNtb2RlLgoJKHB1dF9jb25kaXRpb25fY29kZSwgaXg4Nl9tYXRjaF9jY21vZGUpOiBMaWtld2lzZS4KCShpeDg2X2NjX21vZGUpOiBMaWtld2lzZS4gIEZpeCBjb21tZW50LgoJKGl4ODZfZXhwYW5kX3N0cmxlbnNpX3Vucm9sbF8xKTogKnJjIHBhdHRlcm5zIGFyZSBnb25lLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBBZGQgdW5zcGVjIDEyIGRlc2NyaXB0aW9uLgoJKGFkZGRpMyBzcGxpdCk6IFVzZSB1bnNwZWMgMTIgaW5zdGVhZCBvZiBDQ1JDbW9kZS4KCShhZGRzaTNfY2FycnlfcmMpOiBSZW1vdmUuCgkoYWRkc2kzX2NjLCBhZGRxaTNfY2MpOiBOZXcgcGF0dGVybnMuCgkoYWRkc2lfMyk6IFN3YXAgb3BlcmFuZHMsIG1hdGNoIENDWm1vZGUuCgkoYWRkc2lfNCk6IFJld3JpdHRlbi4KCShhZGRzaV81KTogUmVuYW1lZCBmcm9tIGFkZHNpXzYuCgkoYWRkc2lfNik6IFJlbW92ZWQuCgkoYWRkaGlfMyk6IFN3YXAgb3BlcmFuZHMsIG1hdGNoIENDWm1vZGUuCgkoYWRkaGlfNCk6IFJld3JpdHRlbi4KCShhZGRoaV81KTogUmVuYW1lZCBmcm9tIGFkZGhpXzYuCgkoYWRkaGlfNik6IFJlbW92ZWQuCgkoYWRkcWlfMyk6IFN3YXAgb3BlcmFuZHMsIG1hdGNoIENDWm1vZGUuCgkoYWRkcWlfNCk6IFJld3JpdHRlbi4KCShhZGRxaV81KTogUmVuYW1lZCBmcm9tIGFkZHFpXzYuICBVc2UgPXEgY29uc3RyYWludCBmb3IgY2xvYmJlci4KCShzdWJzaTNfY2FycnlfcmMpOiBSZW1vdmVkLgoJKGlvcnFpXzMpOiBVc2UgPXEgY29uc3RyYWludCBmb3IgY2xvYmJlci4KCSh4b3JxaV9jY18yKTogTGlrZXdpc2UuCgkobmVnZGkyXzEgc3BsaXQpOiBEb24ndCB1c2UgQ0NSQ21vZGUsIHVzZSBsdHUgaW5zdGVhZCBvZiBndHUuCgkoeDg2X21vdnNpY2NfMF9tMV9yYyk6IFJlbW92ZWQuCgkoY21wP2kgcGVlcGhvbGVzKTogUmVtb3ZlIG5lZy4gIFVzZSBDQ0dDbW9kZSBpbnN0ZWFkIG9mIENDUkNtb2RlLgoKMjAwMC0xMC0zMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy10eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBJZiBwZWRhbnRpYywgcGVkd2FybiBmb3IgaW5jcmVtZW50CglhbmQgZGVjcmVtZW50IG9mIGNvbXBsZXggdHlwZXMuCgoyMDAwLTEwLTMxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9mcHV0cyk6IFdoZW4gZGVsZXRpbmcgTk9QIGNhbGxzIHRvCglidWlsdGluIGZwdXRzLCBlbnN1cmUgd2Ugc3RpbGwgZXZhbHVhdGUgdGhlIHN0cmVhbSBpbiBjYXNlIGl0CgloYXMgc2lkZS1lZmZlY3RzLgoKMjAwMC0xMC0zMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGRvX3N0b3JlX2ZsYWcpOiBQYXNzIG9wZXJhbmRfbW9kZSBpbnN0ZWFkIG9mIEdFVF9NT0RFIChvcDApCgl0byBleHBhbmRfc2hpZnQuCgpUdWUgT2N0IDMxIDE1OjMzOjI3IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBzaC1wcm90b3MuaCAocmVnX25vX3N1YnJlZ19vcGVyYW5kLCBlbWl0X2Zwc2NyX3VzZSk6IERvbid0IGRlY2xhcmUuCgkoZnBfZXh0ZW5kZWRfb3BlcmFuZCwgZW1pdF9mcHNjcl91c2UpOiBMaWtld2lzZS4KCSogc2guYyAocmVnX25vX3N1YnJlZ19vcGVyYW5kLCBmcF9leHRlbmRlZF9vcGVyYW5kKTogRGVsZXRlIGZ1bmN0aW9ucy4KCShmcHVsX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkqIHNoLmggKFBSRURJQ0FURV9DT0RFUyk6IFJlbW92ZSByZWdfbm9fc3VicmVnX29wZXJhbmQgYW5kCglmcF9leHRlbmRlZF9vcGVyYW5kLiAgQWRkIGZwdWxfb3BlcmFuZC4KCSogc2gubWQgKG11bHNmMywgbXVsc2YzX2k0KTogVXNlIGZwX2FyaXRoX3JlZ19vcGVyYW5kIGZvciAiZiIgb3BlcmFuZHMuCgkobXVsc2YzX2llLCBtYWNzZjMsIGNtcGd0c2ZfdCwgY21wZXFzZl90LCBpZWVlX2NjbXBlcXNmX3QpOiBMaWtld2lzZS4KCShjbXBndHNmX3RfaTQsIGNtcGVxc2ZfdF9pNCwgaWVlZV9jY21wZXFzZl90XzQsIG5lZ3NmMik6IExpa2V3aXNlLgoJKG5lZ3NmMl9pLCBzcXJ0c2YyLCBzcXJ0c2YyX2ksIGFic3NmMiwgYWJzc2YyX2ksIGFkZGRmMyk6IExpa2V3aXNlLgoJKGFkZGRmM19pLCBzdWJkZjMsIHN1YmRmM19pLCBtdWxkZjMsIG11bGRmM19pLCBkaXZkZjMpOiBMaWtld2lzZS4KCShkaXZkZjNfaSk6IExpa2V3aXNlLgoJKGZsb2F0c2lzZjIpOiBMaWtld2lzZS4gIFVzZSBmcHVsX29wZXJhbmQgZm9yICd5JyBvcGVyYW5kLgoJKGZsb2F0c2lzZjJfaTQsIGZsb2F0c2lzZjJfaWUsIGZpeF90cnVuY3Nmc2kyKTogTGlrZXdpc2UuCgkoZml4X3RydW5jc2ZzaTJfaTQsIGZpeHNmc2ksIGZsb2F0c2lkZjIsIGZsb2F0c2lkZjJfaSk6IExpa2V3aXNlLgoJKGZpeF90cnVuY2Rmc2kyLCBmaXhfdHJ1bmNkZnNpMl9pLCBleHRlbmRzZmRmMik6IExpa2V3aXNlLgoJKGV4dGVuZHNmZGYyX2k0LCB0cnVuY2Rmc2YyLCB0cnVuY2Rmc2YyX2k0KTogTGlrZXdpc2UuCgoyMDAwLTEwLTMxICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9pbml0X2J1aWx0aW5zKTogQ29ycmVjdCByZXR1cm4gdHlwZQoJYnVpbGRpbmcgdjRoaV9mdHlwZV92NGhpX2ludF9pbnQgdHJlZSBub2RlLgoJKGl4ODZfZXhwYW5kX2J1aWx0aW4pOiBVc2UgY29ycmVjdCBvcGVyYW5kIG51bWJlcnMgMCBhbmQgMS4KCUNvcHkgb3BlcmFuZCAwIGludG8gYSBQbW9kZSByZWdpc3RlciwgZG9uJ3QgZ2VuZXJhdGUgYSBNRU0gcnR4LgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoc3NlX21vdm50ZGkpOiBVc2UgbW14IHJlZ2lzdGVyIGNvbnN0cmFpbnQKCWZvciBvcGVyYW5kIDEuCgkobW14X191YXZndjhxaTMpOiBDb3JyZWN0IGluc24gbW5lbW9uaWMuCgkobW14X3BzYWRidyk6IENvcnJlY3QgaW5zbiBtbmVtb25pYy4gIFVzZSBWOFFJIG1vZGUgZm9yIG9wZXJhbmRzIDEgYW5kIDIuCgkobW14X3B1bnBja2h3ZCk6IENvcnJlY3QgaW5zbiBtbmVtb25pYy4KCShtbXhfcHVucGNraGRxKTogTGlrZXdpc2UuCgkobW14X3B1bnBja2x3ZCk6IExpa2V3aXNlLgoJKG1teF9wdW5wY2tsZHEpOiBMaWtld2lzZS4KCShwcmVmZXRjaCk6IFVzZSBpbW1lZGlhcmVfb3BlcmFuZCBhbmQgJ24nIGNvbnN0cmFpbnQgZm9yIG9wZXJhbmQgMS4KCVJlbnVtYmVyIGNhc2UgbGFiZWxzIHRvIG1hdGNoIHRoZSBfbW1fcHJlZmV0Y2ggY29uc3RhbnRzIGRlZmluZWQgaW4KCXhtbWludHJpbi5oLgoKCSogcmVjb2cuYyAoc3BsaXRfYWxsX2luc25zKTogRG9uJ3QgdHJ5IHRvIGNhbGwgY2xlYW51cF9zdWJyZWdfb3BlcmFuZHMKCWlmIHRoZSBzcGxpdHRlciBkaWRuJ3QgZW1pdCBuZXcgaW5zbnMuCglNYWtlIHN1cmUgd2UgY2FsbCBjbGVhbnVwX3N1YnJlZ19vcGVyYW5kcyBldmVuIHdoZW4gc3BsaXR0aW5nIHRoZSBsYXN0CglpbnNuIGluIGEgYmFzaWMgYmxvY2suCgoJKiBpbnZva2UudGV4aSAoRGVidWdnaW5nIE9wdGlvbnMpOiBEZXNjcmliZSAtZG8uCgkqIHRvcGxldi5jIChlbnVtX2R1bXBfZmlsZV9pbmRleCk6IE5ldyBlbnRyeSBERklfcG9zdHJlbG9hZC4KCShkdW1wX2ZpbGUpOiBMaWtld2lzZS4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogU3BsaXQgLmdyZWcgZHVtcCBpbnRvIC5ncmVnIGFuZCAucG9zdHJlbG9hZC4KCjIwMDAtMTAtMzAgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZmlsZXMuYyAoc3RhY2tfaW5jbHVkZV9maWxlKTogQ2hlY2sgZm9yIHN0YWNrZWQgY29udGV4dHMKCWhlcmUuCgkqIGNwcGhhc2guaCAoX2NwcF9kb19fUHJhZ21hKTogTmV3IHByb3RvdHlwZS4KCSogY3BwaW5pdC5jIChjcHBfcmVhZGVyX2luaXQpOiBBZGQgX1ByYWdtYSBrZXl3b3JkIHRvIGhhc2ggdGFibGUuCgoJKiBjcHBsZXguYyAoc2tpcF9lc2NhcGVkX25ld2xpbmVzKTogT25seSBwcm9jZXNzIHRyaWdyYXBocyBhbmQKCWVzY2FwZWQgbmV3bGluZXMgaWYgIShidWZmZXItPmZyb21fc3RhZ2UzKS4KCShfY3BwX2xleF90b2tlbik6IFdhcm4gYWJvdXQgbWlzc2luZyBuZXdsaW5lcyBpZmYKCSFidWZmZXItPmZyb21fc3RhZ2UzLgoKCSogY3BwbGliLmMgKGdldF9fUHJhZ21hX3N0cmluZywgZGVzdHJpbmdpemUsCglfY3BwX2RvX19QcmFnbWEpOiBOZXcgZnVuY3Rpb25zLgoJKHJ1bl9kaXJlY3RpdmUpOiBTZXQgb3V0cHV0X2xpbmUgZm9yIF9QcmFnbWEgdG8gYXZvaWQgbGluZQoJbWFya2VycyBpbiBvdXRwdXQuICBTZXQgZnJvbV9zdGFnZTMgYW5kIHByZXZlbnQgbWFjcm8gZXhwYW5zaW9uCglmb3IgX1ByYWdtYSBhbmQgY29tbWFuZC1saW5lIG9wdGlvbnMuICBDaGVjayBidWZmZXIgZXhoYXVzdGlvbi4KCShjcHBfcHVzaF9idWZmZXIpOiBEb24ndCBjaGVjayBmb3Igc3RhY2tlZCBtYWNybyBjb250ZXh0cywgYXMKCXRoaXMgaXMgcGVyZmVjdGx5IGxlZ2l0aW1hdGUgZm9yIF9QcmFnbWEuICBNb3ZlIHRoZSBjaGVjayB0bwoJc3RhY2tfaW5jbHVkZV9maWxlIGluc3RlYWQuIFNldCBmcm9tX3N0YWdlMyBpZmYgYnVmZmVyIGlzCglwcmVwcm9jZXNzZWQgaW5wdXQuCgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9idWZmZXIpOiBNYWtlIHdhcm5lZF9jcGx1c3BsdXNfY29tbWVudHMKCXVuc2lnbmVkLiBOZXcgYm9vbGVhbiBmcm9tX3N0YWdlMy4KCShzdHJ1Y3Qgc3BlY19ub2Rlcyk6IEFkZCBuX19QcmFnbWEuCgoJKiBjcHBtYWNyby5jIChlbnRlcl9tYWNyb19jb250ZXh0KTogRmxpcCBzZW5zZSBvZiByZXR1cm4gdmFsdWUuCgkoX2NwcF9nZXRfdG9rZW4pOiBIYW5kbGUgX1ByYWdtYSBvcGVyYXRvci4KCjIwMDAtMTAtMzAgIFBoaWwgRWR3YXJkcyAgPHBtZUBzb3VyY2VzLnJlZGhhdC5jb20+CgoJKiBnY2MudGV4aTogIFRoZSBDKysgc3RhbmRhcmQgaXNuJ3QgImRyYWZ0IiBhbnltb3JlLgoKMjAwMC0xMC0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcG1hY3JvLmMgKGJ1aWx0aW5fbWFjcm8pOiBVc2UgTlRfVk9JRCwgbm90IFRfVk9JRC4KCjIwMDAtMTAtMjkgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGliLmMgKHNraXBfcmVzdF9vZl9saW5lKTogIFVzZSBfY3BwX2dldF90b2tlbi4KCjIwMDAtMTAtMjkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIHRvcGxldi5jLCBmbGFncy5oLCBmb2xkLWNvbnN0LmMsIHJlYWwuYywgcnRsLmMsCglmaXhpbmMvaW5jbGhhY2suZGVmOiBDaGFuZ2UgY29tbWVudHMgbWVudGlvbmluZyBDOVggdG8gcmVmZXIgdG8KCUM5OSBpbnN0ZWFkLgoKCSogaW52b2tlLnRleGk6IERvY3VtZW50IHRoYXQgLVYgd2lsbCBvbmx5IHdvcmsgZm9yIHZlcnkgc2ltaWxhcgoJdmVyc2lvbnMgb2YgZHJpdmVyIGFuZCBjb21waWxlci4KCjIwMDAtMTAtMjkgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbWFjcm8uYyAoX2NwcF9jcmVhdGVfZGVmaW5pdGlvbik6IE9wdGltaXplIHRoZSBjYXNlIG9mCglhIG1hY3JvIGRlZmluZWQgdG8gaXRzZWxmLgoKMjAwMC0xMC0yOSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoc2F2ZV9jb21tZW50KTogRG9uJ3Qgc3RvcmUgbmV3IGxpbmVzIGluIEMrKyBjb21tZW50cy4KCjIwMDAtMTAtMjkgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAcmVkaGF0LmNvbT4KCgkqIGludGVncmF0ZS5jIChjb3B5X2luc25fbGlzdCk6IENvcHkgdGhlIHVuY2hhbmdpbmcgZmxhZyBmb3IgY2FsbHMuCgoyMDAwLTEwLTI4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjcHBoYXNoLmMgKGNwcF9mb3JhbGxfaWRlbnRpZmllcnMpOiBBZGQgY29udGV4dCB2YXJpYWJsZQoJZm9yIGNhbGxiYWNrIHJvdXRpbmUuCgkqIGNwcG1haW4uYyAoZHVtcF9tYWNybyk6IFVwZGF0ZSB0byBtYXRjaCBjcHBfZm9yYWxsX2lkZW50aWZpZXJzCgljaGFuZ2UuCgkobWFpbik6IENhbGwgY3BwX2ZvcmFsbF9pZGVudGlmaWVycyB3aXRoIG51bGwgY29udGV4dC4KCSogY3BwbGliLmggKGNwcF9mb3JhbGxfaWRlbnRpZmllcnMpOiBVcGRhdGUgcHJvdG90eXBlLgoKCSogY3BwbWFpbi5jOiBNYWtlIGBwYXJzZV9pbicgYW5kIGBwcmludCcgc3RhdGljLgoKMjAwMC0xMC0yOCAgQWxhbiBNb2RyYSA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogYy1kZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IENsZWFyIGNfZnVuY3Rpb25fbmFtZV9kZWNsYXJlZF9wLgoKMjAwMC0xMC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJlZ3JlbmFtZS5jIChzY2FuX3J0eF9hZGRyZXNzKTogRnJvYiBhY3Rpb24sIG5vdCBjbGFzcywKCXdoZW4gdHJ5aW5nIHRvIGRpc2FibGUgb3B0aW1pemF0aW9uLgoKMjAwMC0xMC0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtc2VtYW50aWNzLmMgKG1ha2VfcnRsX2Zvcl9sb2NhbF9zdGF0aWMpOiBEb24ndCBjbG9iYmVyCglERUNMX0FTU0VNQkxFUl9OQU1FLgoKMjAwMC0xMC0yOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY29uZmlndXJlLmluOiBEZXRlcm1pbmUgYW5kIHN1YnN0aXR1dGUgZ2NjX3ZlcnNpb25fZnVsbC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBnY2NidWcuaW46IFVzZSBpdCB0byBnaXZlIGZ1bGwgdmVyc2lvbi4gIERvbid0IGFsbG93Cgljb25maWRlbnRpYWwgUFJzLgoKMjAwMC0xMC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJlY29nLmMgKHNwbGl0X2FsbF9pbnNucyk6IFJ1biBjbGVhbnVwX3N1YnJlZ19vcGVyYW5kcwoJYWZ0ZXIgcmVsb2FkLgoKCSogcmVncmVuYW1lLmMgKHJlZ3JlbmFtZV9vcHRpbWl6ZSk6IFZlcmlmeSB0aGF0IGFsbCByZWdpc3RlcnMgb2YKCWEgbXVsdGlwbGUgcmVnaXN0ZXIgbW9kZSBhcmUgYXZhaWxhYmxlLgoJKHNjYW5fcnR4X2FkZHJlc3MpOiBBY2NlcHQgdGhlIG1vZGUgb2YgdGhlIGFkZHJlc3M7IGFsbCBjYWxsZXJzCgljaGFuZ2VkLgoKCSogY3BwbGliLmMgKHJ1bl9kaXJlY3RpdmUpOiBGaXggcHJvdG90eXBlLgoKMjAwMC0xMC0yOCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzKTogRGlzdGluZ3Vpc2ggIndpbnMiIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyCglhIGdpdmVuIG9wZXJhbmQgd29uIGJlY2F1c2Ugb2YgYSBtYXRjaGluZyBjb25zdHJhaW50IG9yIG5vdDsgdGhlbiB1c2UKCXRoYXQgaW5mb3JtYXRpb24gdG8gY29tcHV0ZSBnb2FsX2FsdGVybmF0aXZlX21hdGNoZWQgcHJvcGVybHkuCgkqIHJlbG9hZDEuYyAoY2hvb3NlX3JlbG9hZF9yZWdzKTogTmV2ZXIgc2V0IHJlbG9hZF9vdmVycmlkZV9pbiBmb3IgYW4KCW9wdGlvbmFsIHJlbG9hZC4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUlRYX0NPU1RTKTogQSBmZXcgbW9yZSBlbnRyaWVzLCBhbmQgYSBtb3JlCglhY2N1cmF0ZSB2YWx1ZSBmb3IgTVVMVC4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3ByaW50X29wZXJhbmQpOiBSZXF1aXJlIHByb2JhYmlsaXR5IHRvIGJlCgkyJSBvciA+IDk4JSBiZWZvcmUgdXNpbmcgc3RhdGljIGJyYW5jaCBwcmVkaWN0aW9uIGJpdHMuCgoyMDAwLTEwLTI4ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCglOZXcgbWFjcm8gZXhwYW5kZXIuCgoJKiBjcHBsaWIuYyAoc3RydWN0IGFuc3dlcik6IE5ldy4KCShzdHJ1Y3QgaWZfc3RhY2spOiBVc2UgY3BwX2xleGVyX3BvcyByYXRoZXIgdGhhbiBsaW5lIGFuZCBjb2wuCglSZW5hbWUgY21hY3JvIG1pX2NtYWNyby4KCShzdHJ1Y3QgZGlyZWN0aXZlLCBLQU5EUiwgU1REQzg5LCBFWFRFTlNJT04sIENPTkQsIElGX0NPTkQsIElOQ0wsCglJTl9JKTogTmV3IGRpcmVjdGl2ZSBhbmQgZmxhZ3MuCgkoc2tpcF9yZXN0X29mX2xpbmUsIGNoZWNrX2VvbCwgcnVuX2RpcmVjdGl2ZSwgZ2x1ZV9oZWFkZXJfbmFtZSwKCXBhcnNlX2Fuc3dlciwgcGFyc2VfYXNzZXJ0aW9uLCBmaW5kX2Fuc3dlcik6IE5ldyBmdW5jdGlvbnMuCgkocGFyc2VfaWZkZWYsIGRldGVjdF9pZl9ub3RfZGVmaW5lZCwgdmFsaWRhdGVfZWxzZSk6IFJlbW92ZS4KCShsZXhfbWFjcm9fbm9kZSk6IE5ldyBmdW5jdGlvbiB0byByZXBsYWNlIHBhcnNlX2lmZGVmIGFuZAoJZ2V0X2RlZmluZV9ub2RlLgoKCShfY3BwX2hhbmRsZV9kaXJlY3RpdmUpOiBOZXcgZnVuY3Rpb24sIGNvbWJpbmVzIF9jcHBfY2hlY2tfZGlyZWN0aXZlCglhbmQgX2NwcF9jaGVja19saW5lbWFya2VyLgoKCShkb19kZWZpbmUsIGRvX3VuZGVmLCBwYXJzZV9pbmNsdWRlLCBkb19pbmNsdWRlLCBkb19pbXBvcnQsCglkb19pbmNsdWRlX25leHQsIHJlYWRfbGluZV9udW1iZXIsIGRvX2xpbmUsIGRvX2lkZW50LCBkb19wcmFnbWEsCglkb19wcmFnbWFfb25jZSwgZG9fcHJhZ21hX3BvaXNvbiwgZG9fcHJhZ21hX2RlcGVuZGVuY3kpOgoJVXBkYXRlIGZvciBuZXcgdG9rZW4gZ2V0dGluZyBpbnRlcmZhY2UuCgoJKGRvX2lmZGVmLCBkb19pZm5kZWYsIGRvX2lmLCBkb19lbHNlLCBkb19lbmRpZiwgcHVzaF9jb25kaXRpb25hbCkKCTogVXBkYXRlIGZvciBuZXcgbXVsdGlwbGUtaW5jbHVkZSBvcHRpbWlzYXRpb24gdGVjaG5pcXVlLgoJKGRvX2VsaWYpOiBEb24ndCBmb3JnZXQgdG8gaW52YWxpZGF0ZSBjb250cm9sbGluZyBtYWNyb3MuCgoJKHVud2luZF9pZl9zdGFjaywgY3BwX2RlZmluZWQsIGNwcF9wdXNoX2J1ZmZlciwgY3BwX3BvcF9idWZmZXIpOiBVcGRhdGUuCgkocGFyc2VfYXNzZXJ0aW9uLCBwYXJzZV9hbnN3ZXIsIGZpbmRfYW5zd2VyLCBfY3BwX3Rlc3RfYXNzZXJ0aW9uKToKCUZ1bmN0aW9ucyB0byBoYW5kbGUgYXNzZXJ0aW9ucyB3aXRoIHRoZSBuZXcgdG9rZW4gaW50ZXJmYWNlLgoJKGRvX2Fzc2VydCwgZG9fdW5hc3NlcnQpOiBVc2UgdGhlbS4KCgkoY3BwX2RlZmluZSwgX2NwcF9kZWZpbmVfYnVpbHRpbiwgY3BwX3VuZGVmLCBjcHBfYXNzZXJ0LCBjcHBfdW5hc3NlcnQpOgoJVXNlIHJ1bl9kaXJlY3RpdmUuCgoJKF9jcHBfaW5pdF9zdGFja3MpOiBSZWdpc3RlciBkaXJlY3RpdmUgbmFtZXMuICBEb24ndCByZWdpc3RlciBzcGVjaWFsCglub2Rlcy4KCgkqIGNwcGVycm9yLmMgKHByaW50X2NvbnRhaW5pbmdfZmlsZXMsIF9jcHBfYmVnaW5fbWVzc2FnZSk6IFVwZGF0ZSB0bwoJbmV3IHBvc2l0aW9uIHJlY29yZGluZyByZWdpbWUuCgkoY3BwX2ljZSwgY3BwX2ZhdGFsLCBjcHBfZXJyb3IsIGNwcF9lcnJvcl93aXRoX2xpbmUsIGNwcF93YXJuaW5nLAoJY3BwX3dhcm5pbmdfd2l0aF9saW5lLCBjcHBfcGVkd2FybiwgY3BwX3BlZHdhcm5fd2l0aF9saW5lLAoJY3BwX3BlZHdhcm5fd2l0aF9maWxlX2FuZF9saW5lKTogVXBkYXRlIGZvciBfY3BwX2JlZ2luX21lc3NhZ2UgY2hhbmdlcy4KCShjcHBfdHlwZTJuYW1lKTogTW92ZSB0byBjcHBsZXguYy4KCgkqIGNwcGV4cC5jIChwYXJzZV9jaGFyY29uc3QpOiBzcGVjX25vZGVzIGlzIG5vIGxvbmdlciBhIHBvaW50ZXIuCgkocGFyc2VfZGVmaW5lZCk6IFVwZGF0ZSB0byBoYW5kbGUgbmV3IG11bHRpcGxlIGluY2x1ZGUgb3B0aW1pc2F0aW9uCgltZXRob2QuICBSZW1vdmUgcG9pc29uZWQgaWRlbnRpZmllciB3YXJuaW5nLgoJKHBhcnNlX2Fzc2VydGlvbiwgVFlQRV9OQU1FKTogRGVsZXRlLgoJKGxleCk6IFVwZGF0ZSBmb3IgbXVsdGlwbGUgaW5jbHVkZSBvcHRpbWlzYXRpb24sIHJlbW92YWwgb2YKCUNQUF9ERUZJTkVELCB0byB1c2UgX2NwcF90ZXN0X2Fzc2VydGlvbiBmb3IgYXNzZXJ0aW9ucyBhbmQKCWNwcF90b2tlbl9hc190ZXh0LgoJKF9jcHBfcGFyc2VfZXhwcik6IFVwZGF0ZSBmb3IgTUkgb3B0aW1pc2F0aW9uLCBhbmQgdG8gdXNlIG9wX2FzX3RleHQuCgkob3BfYXNfdGV4dCk6IE5ldyBmdW5jdGlvbiwgdG8gd3JhcCBjcHBfdG9rZW5fYXNfdGV4dC4KCgkqIGNwcGZpbGVzLmMgKHN0YWNrX2luY2x1ZGVfZmlsZSwgX2NwcF9wb3BfZmlsZV9idWZmZXIpOgoJVXBkYXRlIGZvciBNSSBvcHRpbWlzYXRpb24uCgkoX2NwcF9leGVjdXRlX2luY2x1ZGUpOiBUYWtlIGEgdG9rZW4gcmF0aGVyIHRoYW4gMyBhcmd1bWVudHMuICBGaXgKCXNlZ2ZhdWx0IG9uIGRpYWdub3N0aWMuCgkoX2NwcF9jb21wYXJlX2ZpbGVfZGF0ZSk6IFRha2UgYSB0b2tlbiByYXRoZXIgdGhhbiAzIGFyZ3MuCgkoY3BwX3JlYWRfZmlsZSk6IFdvcmsgY29ycmVjdGx5IGZvciB6ZXJvLWxlbmd0aCBmaWxlcy4KCgkqIGNwcGhhc2guYyAoX2NwcF9pbml0X21hY3JvcywgX2NwcF9jbGVhbnVwX21hY3Jvcyk6IFJlbmFtZQoJX2NwcF9pbml0X2hhc2h0YWJsZSBhbmQgX2NwcF9jbGVhbnVwX2hhc2h0YWJsZS4KCShjcHBfbG9va3VwKTogUGxhY2UgaWRlbnRpZmllcnMgYXQgZnJvbnQgb2YgaWRlbnRpZmllciBwb29sCglmb3IgX2NwcF9sb29rdXBfd2l0aF9oYXNoLgoJKF9jcHBfbG9va3VwX3dpdGhfaGFzaCk6IFJlcXVpcmUgaWRlbnRpZmllcnMgdG8gYmUgYXQgdGhlIGZyb250IG9mCgl0aGUgaWRlbnRpZmllciBwb29sLiAgQ29tbWl0IHRoZSBtZW1vcnkgaWYgbm90IGFscmVhZHkgaW4gdGhlCgloYXNoIHRhYmxlLgoKCSogY3BwaW5pdC5jIChjcHBfcmVhZGVyX2luaXQpOiBNb3ZlIGNwcF9pbml0X2NvbXBsZXRlZCB0ZXN0IHRvIHRvcC4KCUluaXRpYWxpemUgdmFyaW91cyBtZW1iZXJzIG9mIGNwcF9yZWFkZXIsIG1lbW9yeSBwb29scywgYW5kIHRoZQoJc3BlY2lhbCBub2Rlcy4KCShjcHBfcHJpbnRlcl9pbml0KTogRGVsZXRlLgoJKGNwcF9jbGVhbnVwKTogVXBkYXRlLgoJKHN0cnVjdCBidWlsdGluLCBidWlsdGluX2FycmF5LCBpbml0aWFsaXplX2J1aWx0aW5zKTogVXBkYXRlIGZvciBuZXcKCWhhc2hub2RlIGRlZmluaXRpb24gYW5kIGJ1aWx0aW4gaGFuZGxpbmcuCgkoY3BwX3N0YXJ0X3JlYWQsIGNwcF9maW5pc2gpOiBEb24ndCB0YWtlIG9yIGluaXRpYWxpemUgYQoJcHJpbnRlci4gIFVwZGF0ZS4KCgkqIGNwcGxpYi5oIChjcHBfcHJpbnRlciwgY3BwX3Rva2xpc3QsIENQUF9ERUZJTkVELCBCT0wsCglQQVNURUQsIFZBUl9BUkdTLCBCRUdfT0ZfRklMRSwgSU5fRElSRUNUSVZFLCBLTk9XTl9ESVJFQ1RJVkUsCglUX1ZPSUQsIFRfU1BFQ0xJTkUsIFRfREFURSwgVF9GSUxFLCBUX0JBU0VfRklMRSwgVF9JTkNMVURFX0xFVkVMLAoJVF9USU1FLCBUX1NUREMsIFRfT1BFUkFUT1IsIFRfUE9JU09OLCBUX01BQ1JPLCBUX0FTU0VSVElPTik6IERlbGV0ZS4KCShzdHJ1Y3QgY3BwX3Bvb2wsIHN0cnVjdCBjcHBfbWFjcm8sIHN0cnVjdCBjcHBfbGV4ZXJfcG9zLAoJc3RydWN0IGNwcF9sb29rYWhlYWQsIENQUF9ESEFTSCwgZW51bSBtaV9zdGF0ZSwgZW51bSBtaV9pbmQsCglOT19FWFBBTkQsIFZBUkFSR1NfRklSU1QsIHN0cnVjdCBjcHBfdG9rZW5fd2l0aF9wb3MsCglzdHJ1Y3QgdG9rbGlzdCwgc3RydWN0IGNwcF9jb250ZXh0LCBzdHJ1Y3Qgc3BlY25vZGVzLAoJVE9LRU5fTE9PS0FIRUFELCBUT0tFTl9CVUZGU0laRSwgTk9ERV9PUEVSQVRPUiwgTk9ERV9QT0lTT05FRCwKCU5PREVfQlVJTFRJTiwgTk9ERV9ESUFHTk9TVElDLCBOVF9WT0lELCBOVF9NQUNSTywgTlRfQVNTRVJUSU9OLAoJZW51bSBidWlsdGluX3R5cGUsIGNwcF9jYW5fcGFzdGUpOiBOZXcuCgkoc3RydWN0IGNwcF90b2tlbik6IERlbGV0ZSBsaW5lIGFuZCBjb2wgbWVtYmVycy4KCShzdHJ1Y3QgY3BwX2J1ZmZlcik6IE5ldyBtZW1iZXIgb3V0cHV0X2xpbmVuby4KCShzdHJ1Y3QgbGV4ZXJfc3RhdGUpOiBEZWxldGUgaW5kZW50ZWQsIGluX2xleF9saW5lLCBzZWVuX2RvdC4KCUFkZCB2YV9hcmdzX29rLCBwb2lzb25lZF9vaywgcHJldmVudF9leHBhbnNpb24sIHBhcnNpbmdfYXJncy4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6IE5ldyBtZW1iZXJzIGxleGVyX3BvcywgbWFjcm9fcG9zLCBkaXJlY3RpdmVfcG9zLAoJaWRlbnRfcG9vbCwgdGVtcF9zdHJpbmdfcG9vbCwgbWFjcm9fcG9vbCwgYXJndW1lbnRfcG9vbCwgc3RyaW5nX3Bvb2wsCgliYXNlX2NvbnRleHQsIGNvbnRleHQsIGRpcmVjdGl2ZSwgbWlfc3RhdGUsIG1pX2lmX25vdF9kZWZpbmVkLAoJbWlfbGV4ZWQsIG1pX2NtYWNybywgbWlfaW5kX2NtYWNybywgbGFfcmVhZCwgbGFfd3JpdGUsIGxhX3VudXNlZCwKCW1sc3RyaW5nX3BvcywgbWFjcm9fYnVmZmVyLCBtYWNyb19idWZmZXJfbGVuLgoJRGVsZXRlIG1lbWJlcnMgbWxzX2xpbmUsIG1sc19jb2x1bW4sIHRva2VuX2xpc3QsIHBvdGVudGlhbF9jb250cm9sX21hY3JvLAoJdGVtcF90b2tlbnMsIHRlbXBfY2FwLCB0ZW1wX2FsbG9jZWQsIHRlbXBfdXNlZCwgZmlyc3RfZGlyZWN0aXZlX3Rva2VuLAoJY29udGV4dF9jYXAsIGN1cl9jb250ZXh0LCBub19leHBhbmRfbGV2ZWwsIHBhc3RlX2xldmVsLCBjb250ZXh0cywgYXJncywKCXNhdmVfcGFyYW1ldGVyX3NwZWxsaW5ncywgbmVlZF9uZXdsaW5lLCAuCglDaGFuZ2UgdHlwZSBvZiBkYXRlLCB0aW1lIGFuZCBzcGVjX25vZGVzIG1lbWJlcnMuCglDaGFuZ2UgcHJvdG90eXBlcyBmb3IgaW5jbHVkZSBhbmQgaWRlbnQgY2FsbGJhY2tzLgoJKHN0cnVjdCBjcHBfaGFzaG5vZGUpOiBDaGFuZ2UgdHlwZSBvZiBuYW1lLiAgUmVtb3ZlIHVuaW9uIG1lbWJlcnMKCWV4cGFuc2lvbiBhbmQgY29kZS4gIEFkZCBtZW1iZXJzIG1hY3JvLCBvcGVyYXRvciBhbmQgYnVpbHRpbi4KCgkoY3BwX3Rva2VuX2xlbiwgY3BwX3Rva2VuX2FzX3RleHQsIGNwcF9zcGVsbF90b2tlbiwgY3BwX3N0YXJ0X3JlYWQsCgljcHBfZmluaXNoLCBjcHBfYXZvaWRfcGFzdGUsIGNwcF9nZXRfdG9rZW4sIGNwcF9nZXRfbGluZSwKCWNwcF9nZXRfb3V0cHV0X2xpbmUsIGNwcF9tYWNyb19kZWZpbml0aW9uLCBjcHBfc3RhcnRfbG9va2FoZWFkLAoJY3BwX3N0b3BfbG9va2FoZWFkKTogTmV3IHByb3RvdHlwZXMuCgkoY3BwX3ByaW50ZXJfaW5pdCwgY3BwX2R1bXBfZGVmaW5pdGlvbik6IERlbGV0ZSBwcm90b3R5cGVzLgoKCShVX0NIQVIsIFUsIHVzdHJjbXAsIHVzdHJuY21wLCB1c3RybGVuLCB1eHN0cmR1cCwgdXN0cmNociwgdWZwdXRzKToKCU1vdmUgZnJvbSBjcHBoYXNoLmguCgoJKiBjcHBoYXNoLmggKFVfQ0hBUiwgVSwgdXN0cmNtcCwgdXN0cm5jbXAsIHVzdHJsZW4sIHV4c3RyZHVwLCB1c3RyY2hyLAoJdWZwdXRzKTogTW92ZSB0byBjcHBsaWIuaC4KCShlbnVtIHNwZWxsX3R5cGUsIHN0cnVjdCB0b2tlbl9zcGVsbGluZywgX2NwcF90b2tlbl9zcGVsbGluZ3MsIFRPS0VOX1NQRUxMLAoJVE9LRU5fTkFNRSwgc3RydWN0IGFuc3dlciwgRlJFRV9BTlNXRVIsIEtBTkRSLCBTVERDODksIEVYVEVOU0lPTiwKCUNPTkQsIEVYUEFORCwgSU5DTCwgQ09NTUVOVFMsIElOX0ksIHN0cnVjdCBkaXJlY3RpdmUsIGRpcmVjdGl2ZV9oYW5kbGVyLAoJc3RydWN0IHNwZWNfbm9kZXMsIF9jcHBfZGlncmFwaF9zcGVsbGluZ3MsIF9jcHBfZnJlZV90ZW1wX3Rva2VucywKCV9jcHBfaW5pdF9pbnB1dF9idWZmZXIsIF9jcHBfZ3Jvd190b2tlbl9idWZmZXIsIF9jcHBfaW5pdF90b2tsaXN0LAoJX2NwcF9jbGVhcl90b2tsaXN0LCBfY3BwX2V4cGFuZF90b2tlbl9zcGFjZSwgX2NwcF9leHBhbmRfbmFtZV9zcGFjZSwKCV9jcHBfZXF1aXZfdG9rZW5zLCBfY3BwX2VxdWl2X3Rva2xpc3RzLCBfY3BwX3Byb2Nlc3NfZGlyZWN0aXZlLAoJX2NwcF9ydW5fZGlyZWN0aXZlLCBfY3BwX2dldF9saW5lLCBfY3BwX2dldF9yYXdfdG9rZW4sIF9jcHBfZ2x1ZV9oZWFkZXJfbmFtZSwKCV9jcHBfY2FuX3Bhc3RlLCBfY3BwX2NoZWNrX2RpcmVjdGl2ZSwgX2NwcF9jaGVja19saW5lbWFya2VyLAoJX2NwcF9wYXJzZV9hc3NlcnRpb24sIF9jcHBfZmluZF9hbnN3ZXIpOiBEZWxldGUuCgkoVkFMSURfU0lHTiwgQUxJR04sIFBPT0xfRlJPTlQsIFBPT0xfTElNSVQsIFBPT0xfQkFTRSwgUE9PTF9TSVpFLAoJUE9PTF9VU0VELCBQT09MX0NPTU1JVCwgc3RydWN0IGNwcF9jaHVuaywgX2NwcF9sZXhfdG9rZW4sIF9jcHBfaW5pdF9wb29sLAoJX2NwcF9mcmVlX3Bvb2wsIF9jcHBfcG9vbF9yZXNlcnZlLCBfY3BwX3Bvb2xfYWxsb2MsIF9jcHBfbmV4dF9jaHVuaywKCV9jcHBfbG9ja19wb29sLCBfY3BwX3VubG9ja19wb29sLCBfY3BwX3Rlc3RfYXNzZXJ0aW9uLAoJX2NwcF9oYW5kbGVfZGlyZWN0aXZlLCBEU0MpOiBOZXcuCgkoc3RydWN0IGluY2x1ZGVfZmlsZSk6IE5ldyBtZW1iZXIgZGVmaW5lZC4KCgkoRE9fTk9UX1JFUkVBRCwgX2NwcF9iZWdpbl9tZXNzYWdlLCBfY3BwX2V4ZWN1dGVfaW5jbHVkZSwKCV9jcHBfY29tcGFyZV9maWxlX2RhdGUpOiBVcGRhdGUuCgkoX2NwcF9wb3BfY29udGV4dCwgX2NwcF9nZXRfdG9rZW4sIF9jcHBfZnJlZV9sb29rYWhlYWRzLCBfY3BwX3B1c2hfdG9rZW4pOiBOZXcuCgkoX2NwcF9pbml0X21hY3JvcywgX2NwcF9jbGVhbnVwX21hY3Jvcyk6IFJlbmFtZSB0byBfY3BwX2luaXRfaGFzaHRhYmxlLAoJX2NwcF9jbGVhbnVwX2hhc2h0YWJsZS4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgY3Bwb3V0cHV0LmMuCgoJKiBjcHBvdXRwdXQuYzogRGVsZXRlCgoJKiBmaXhoZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBVcGRhdGUgZm9yIG5ldyBjcHBfZ2V0X3Rva2VuCglwcm90b3R5cGUuCgkocmVjb2duaXplZF9mdW5jdGlvbik6IE5ldyBhcmd1bWVudCBMSU5FLgoKCSogc2Nhbi1kZWNscy5jIChza2lwX3RvX2Nsb3NpbmdfYnJhY2UsIHNjYW5fZGVjbHMpOiBVcGRhdGUgZm9yCgluZXcgY3BwX2dldF90b2tlbiBwcm90b3R5cGUuCgoJKiBzY2FuLmggKHJlY29nbml6ZWRfZnVuY3Rpb24pOiBVcGRhdGUgcHJvdG90eXBlLgoKCSogcG8vUE9URklMRVMuaW46IFJlbW92ZSBjcHBvdXRwdXQuYy4KCjIwMDAtMTAtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXR5cGVjay5jIChjaGVja19pbml0X3R5cGVfYml0ZmllbGRzKTogUmVtb3ZlLgoJKGNvbnN0cnVjdG9yX2luY3JlbWVudGFsKTogTGlrZXdpc2UuCgkoc3RydWN0IGNvbnN0cnVjdG9yX3N0YWNrKTogUmVtb3ZlIGluY3JlbWVudGFsIGJpdC4KCShzdHJ1Y3QgaW5pdGlhbGl6ZXJfc3RhY2spOiBMaWtld2lzZS4KCShzdGFydF9pbml0KTogRG9uJ3QgcGxheSB3aXRoIGNvbnN0cnVjdG9yX2luY3JlbWVudGFsLgoJKGZpbmlzaF9pbml0KTogTGlrZXdpc2UuCgkocmVhbGx5X3N0YXJ0X2luY3JlbWVudGFsX2luaXQpOiBMaWtld2lzZS4KCShwdXNoX2luaXRfbGV2ZWwpOiBMaWtld2lzZS4KCShwb3BfaW5pdF9sZXZlbCk6IExpa2V3aXNlLgoJKG91dHB1dF9pbml0X2xldmVsKTogTGlrZXdpc2UuCgkob3V0cHV0X3BlbmRpbmdfaW5pdF9lbGVtZW50cyk6IExpa2V3aXNlLgoKMjAwMC0xMC0yMSAgTWlrZSBDb2xlbWFuICA8bWNvbGVtYW4yQGtjLnJyLmNvbT4KCgkqIGMtcHJhZ21hLmMgKGhhbmRsZV9wcmFnbWFfcGFjayk6IEluaXRpYWxpemUgYWxpZ24gdG8gLTEuCglJbXByb3ZlIGVycm9yIG1lc3NhZ2VzLiAgQ29ycmVjdCBwYXJzaW5nIG9mCgkjcHJhZ21hIHBhY2socG9wIFssaWRdKS4gIERvIG5vdCBjaGVjayB0aGUgdXNlci1zdXBwbGllZAoJYWxpZ25tZW50IGlmIHdlJ3JlIHBvcHBpbmcuCgoJKiBnY2MuZGcvcGFjay10ZXN0LTEuYzogTmV3IHRlc3QgY2FzZS4KCSogZ2NjLmRnL3BhY2stdGVzdC0yLmM6IE5ldyB0ZXN0IGNhc2UuCgkqIGdjYy5kZy9wYWNrLXRlc3QtMS5oOiBOZXcgZmlsZS4KCjIwMDAtMTAtMjcgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwLnRleGk6IFVwZGF0ZS4KCjIwMDAtMTAtMjcgIEtlbGxleSBDb29rIDxrZWxsZXkuY29va0Bob21lLmNvbT4KCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCAtbWludGVsLXN5bnRheAoKMjAwMC0xMC0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCAtZnJlbmFtZS1yZWdpc3RlcnMuICBBZGQgaXQgdG8gLU8zLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFJ1biByZWdyZW5hbWUgYmVmb3JlIGlmY3Z0Mi4KCShlbnVtIGR1bXBfZmlsZV9pbmRleCwgZHVtcF9maWxlKTogVXBkYXRlIG9yZGVyLgoJKG1haW4pOiBTZXQgZmxhZ19yZW5hbWVfcmVnaXN0ZXJzIGF0IC1PMy4KCjIwMDAtMTAtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoZW51bSByZWdfY2xhc3MpOiBBZGQgUFZfUkVHLgoJKFJFR19DTEFTU19OQU1FUywgUkVHX0NMQVNTX0NPTlRFTlRTLCBSRUdOT19SRUdfQ0xBU1MpOiBVcGRhdGUuCgkoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogQXNzaWduIGl0IHRvICdjJy4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChjYWxsX29zZl8xKTogVXNlIGl0LgoJKGNhbGxfdmFsdWVfb3NmXzEpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogUmV2ZXJ0IDEwLTIzIHBhdGNoLgoJKGlhNjRfaGFyZF9yZWdub19yZW5hbWVfb2spOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmg6IERlY2xhcmUgaXQuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoSEFSRF9SRUdOT19SRU5BTUVfT0spOiBVc2UgaXQuCgoyMDAwLTEwLTI3ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcmVncmVuYW1lLmM6IFJld3JpdGUgdG8gaGFuZGxlIG11bHRpLXJlZ2lzdGVyIG1vZGVzIGFuZAoJY29uZF9leGVjIGluc3RydWN0aW9ucy4KCSogTWFrZWZpbGUuaW4gKHJlZ3JlbmFtZS5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCSogcmVjb2cuaCAoc3RydWN0IG9wZXJhbmRfYWx0ZXJuYXRpdmUpOiBBZGQgaXNfYWRkcmVzcy4KCSogcmVjb2cuYyAocHJlcHJvY2Vzc19jb25zdHJhaW50cykgW2Nhc2UgJ3AnXTogU2V0IGl0LgoKMjAwMC0xMC0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbjogSWYgbm90IE5PX01JTlVTX0NfTUlOVVNfTywgc3Vic3RpdHV0ZQoJT1VUUFVUX09QVElPTiB3aXRoICctbyAkQCcuICBNYWtlIHpsaWJkaXIsIHpsaWJpbmMgcmVsYXRpdmUgdG8KCXRvcCBsZXZlbC4gIEtpbGwgb2xkc3R5bGVfc3ViZGlycy4gIERvIG5vdCBpbmNsdWRlCgkkc3JjZGlyLyRzL01ha2VmaWxlLmluIGluIGFsbF9sYW5nX21ha2VmaWxlcywgYnV0IGRvIGluY2x1ZGUKCSRvdXRwdXRzLiAgRG8gbm90IHJ1biBjb25maWd1cmUubGFuZyBmcm9tIGNvbmZpZy5zdGF0dXMuCglSZWFycmFuZ2Ugd2FybmluZy1mbGFnIGxvZ2ljIHRvIGNvcnJlc3BvbmQgdG8gd2hhdCB0aGUKCW1ha2VmaWxlIHdhbnRzLiAgUHV0IHNwZWNpYWwgdmF4IHN0YWdlMSBvcHRpb25zIGluCglAc3RhZ2UxX2ZsYWdzQCBub3QgQHN0YWdlMV93YXJuX2NmbGFnc0AuICBEb24ndCBkbyBhbnl0aGluZwoJd2l0aCBleHRyYV9jX29ianMsIGV4dHJhX2N4eF9vYmpzLCBvciBleHRyYV9jcHBfb2Jqcy4KCSgtLWVuYWJsZS1jLWNwcGxpYik6IEFDX1NVQlNUKG1heWJlX2NwcGxpYikgd2l0aCAibGliY3BwLmEiIGlmCglzd2l0Y2ggaXMgZ2l2ZW4sIG5vdGhpbmcgb3RoZXJ3aXNlLgoJKiBjb25maWd1cmUubGFuZzogRGVsZXRlLgoKCSogTWFrZWZpbGUuaW46IEV4cHVuZ2UgYWxsIHRyYWNlcyBvZiBleHRyYV9jX29ianMsCglleHRyYV9jeHhfb2JqcywgYW5kIGV4dHJhX2NwcF9vYmpzLiAgU2V0IE1BWUJFX0NQUExJQiBmcm9tCglAbWF5YmVfY3BwbGliQC4gQWRkICQoTUFZQkVfQ1BQTElCKSB0byBDX0FORF9PQkpDX09CSlMuICBTZXQKCXdhcm5pbmcgb3B0aW9ucyB2aWEgYSB0aHJlZSBsZXZlbCBzY2hlbWUgc28gdGhhdCAtcGVkYW50aWMgYW5kCgktV3RyYWRpdGlvbmFsIGFyZSBub3QgdXNlZCBmb3Igbm9uLUMgZnJvbnQgZW5kczogTE9PU0VfV0FSTiwKCVNUUklDVDFfV0FSTiwgU1RSSUNUMl9XQVJOIC0+ICQoQEQpLXdhcm4sIEdDQ19XQVJOX0NGTEFHUyAtPgoJV0FSTl9DRkxBR1MuICBEaXN0aW5ndWlzaCBTVEFHRTFfQ0ZMQUdTIGZyb20gQk9PVF9DRkxBR1MuCglBZGQgLUkkKEBEKSBhbmQgLUkkKHNyY2RpcikvJChARCkgdG8gSU5DTFVERVMuCglTZXQgT1VUUFVUX09QVElPTiwgWkxJQiwgWkxJQklOQy4gIERvIG5vdCBzZXQgUCwKCUxBTkdfRkxBR1NfVE9fUEFTUy4gIEFkZCBPVVRQVVRfT1BUSU9OIHRvIGFsbCBvYmplY3QtZmlsZQoJZ2VuZXJhdGlvbiBydWxlcy4gIFdyYXAgYWxsIHJ1bGVzIHRoYXQgY2hhbmdlIHRoZSBjdXJyZW50CglkaXJlY3RvcnkgaW4gcGFyZW50aGVzZXM7IHBtYWtlIGRvZXNuJ3Qgc3Bhd24gYSBuZXcgc2hlbGwgZm9yCgllYWNoIGNvbW1hbmQuICBFeHB1bmdlIGFsbCByZWZlcmVuY2VzIHRvICQoUCkuICBXaGVuIG9uZQoJY29tbWFuZCBkZXBlbmRzIG9uIGFub3RoZXIgYW5kIHRoZXkncmUgcnVuIGFsbCBhdCBvbmNlLCB1c2UgJiYKCXRvIHNlcGFyYXRlIHRoZW0sIG5vdCA7LiAgQWRkIGxpYmdjY19zJChTSExJQl9FWFQpIHRvIGZpbGVzCglkZWxldGVkIG9uIG1ha2UgY2xlYW4uICBGb3JjZSBPVVRQVVRfT1BUSU9OPSctbyAkQCcgaW4gc3RhZ2UyCglhbmQgYmV5b25kLgoKCSogb2JqYy9NYWtlLWxhbmcuaW46IFdyYXAgYWxsIHJ1bGVzIHRoYXQgY2hhbmdlIHRoZSBjdXJyZW50CglkaXJlY3RvcnkgaW4gcGFyZW50aGVzZXMuICBFeHB1bmdlIGFsbCByZWZlcmVuY2VzIHRvICQoUCkuCglXaGVuIG9uZSBjb21tYW5kIGRlcGVuZHMgb24gYW5vdGhlciBhbmQgdGhleSdyZSBydW4gYWxsIGF0CglvbmNlLCB1c2UgJiYgdG8gc2VwYXJhdGUgdGhlbSwgbm90IDsuICBBZGQgT1VUUFVUX09QVElPTiB0bwoJYWxsIG9iamVjdC1maWxlIGdlbmVyYXRpb24gcnVsZXMuICBEZWxldGUgb2Jzb2xldGUgdmFyaWFibGVzLgoJKiBvYmpjL01ha2VmaWxlLmluOiBEZWxldGUuCgoyMDAwLTEwLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogSWYgc2liY2FsbF9mYWlsdXJlIGlzIHNldCBkdXJpbmcgcGFzcyAxLAoJY2xlYXIgdGFpbF9jYWxsX2luc25zIGFzIHdlbGwuCgoyMDAwLTEwLTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFybV9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCk6IEFkZAoJcHJvdG90eXBlLgoKMjAwMC0xMC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogU3VwcmVzcyBzaWJjYWxsIGlmIHdlIGhhdmUgYQoJQkxLbW9kZSByZXR1cm4gaW4gcmVnaXN0ZXJzLgoKMjAwMC0xMC0yNiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBpYTY0LmggKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBGb3JjZSBmbG9hdGluZyBwb2ludCBjb25zdGFudHMKCWludG8gbWVtb3J5LgoKMjAwMC0xMC0yNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAobWFrZV9ub2RlLCBjYXNlICd0Jyk6IFNldCBhbGlnbm1lbnQgdG8gdGhhdCBvZgoJY2hhcl90eXBlX25vZGUuCgkqIGV4cHIuYyAobW92ZV9ieV9waWVjZXNfbmluc25zKTogQWJvcnQgaWYgc29tZSBsZW5ndGggcmVtYWlucy4KCjIwMDAtMTAtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoc2l0ZS5leHApOiBEZWZpbmUgSEFWRV9MSUJTVERDWFhfVjMuCgkqIGNvbmZpZ3VyZS5pbiAoZW5hYmxlLWxpYnN0ZGN4eC12Myk6IEFycmFuZ2UgdG8gaGF2ZQoJSEFWRV9MSUJTVERDWFhfVjMgc3Vic3RpdHV0ZWQgaW50byB0aGUgb3V0cHV0IGZpbGVzLgoKMjAwMC0xMC0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJlY29nLmMgKGNvbnN0cmFpbl9vcGVyYW5kcyk6IEluaXRpYWxpemUgd2hpY2hfYWx0ZXJuYXRpdmUKCWJlZm9yZSBubyBhbHRlcm5hdGl2ZXMgZWFybHkgZXhpdC4KCgkqIGNzZS5jIChmaW5kX2NvbXBhcmlzb25fYXJncyk6IENoZWNrIHRoYXQgd2UgY2FuIHJldmVyc2UgYQoJY29tcGFyaXNvbiBpZiBuZWVkZWQgYmVmb3JlIGFjY2VwdGluZyB0aGUgc3Vic3RpdHV0aW9uLgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc19hZGRyZXNzX3BhcnQpOiBLaWxsIHJ0eCBvYnN0YWNrIGhhY2tlcnkuCgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBTaWduIGV4dGVuZAoJbG93IHdvcmRzIGJlZm9yZSBzaWduIGV4dGVuZGluZyB0byBoaWdoIHdvcmRzLgoKMjAwMC0xMC0yNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jOiBJbmNsdWRlIGNvbmZpZy5oIGJlZm9yZSBzeXN0ZW0uaC4KCjIwMDAtMTAtMjUgIFJheSBFc3NpY2sgIDxlc3NpY2tAZGRuYS5sYWJzLm1vdC5jb20+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUubWQgKHJldHVybik6IEZvcmNlIGZ1bmN0aW9uIGVwaWxvZ3VlIHRvCglhbHdheXMgYmUgZ2VuZXJhdGVkIHRvIHdvcmsgYXJvdW5kIGVwaWxvZ3VlIHN1cHByZXNzaW9uIGJ1ZyBpbgoJTSpDb3JlIGJhY2tlbmQuCgoyMDAwLTEwLTI1ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBNb3ZlIHdhcm5pbmcgZm9yIHF1YWxpZmllZCB2b2lkCglyZXR1cm4gdHlwZXMgd2l0aCAtcGVkYW50aWMgdG8gd2hlbiB0aGUgZnVuY3Rpb24gdHlwZSBpcwoJY29uc3RydWN0ZWQuICBBdCAtVywgd2FybiBpbiBnZW5lcmFsIGZvciBxdWFsaWZpZWQgZnVuY3Rpb24gcmV0dXJuCgl0eXBlcywgZXhjZXB0IGZvciB2b2xhdGlsZSB2b2lkLgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQgdGhpcyBuZXcgd2FybmluZyBhdCAtVy4KCjIwMDAtMTAtMjUgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwLnRleGk6IFVwZGF0ZSB3aXRoIGltcGxlbWVudGF0aW9uLWRlZmluZWQgYmVoYXZpb3IgYW5kCglpbnRlcm5hbCBsaW1pdHMuCgoyMDAwLTEwLTI1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF90eXBlKTogSWYgVFlQRV9BTElBU19TRVQgd2FzIGFscmVhZHkgc2V0IG9uIHRoZQoJaW5jb21wbGV0ZSB0eXBlIGZvcmNlIGl0IGludG8gYWxpYXMgc2V0IDAuCgpXZWQgT2N0IDI1IDAxOjAyOjQ0IEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBhbGlhcy5jOiBJbmNsdWRlIGJhc2ljLWJsb2NrLmguCgkobG9vcF9wKTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfY29uc3RhbnRfZnVuY3Rpb24pOiBVc2UgaXQuCgkqIE1ha2VmaWxlLmluIChhbGlhcy5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCjIwMDAtMTAtMjQgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAoc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IFRyZWF0IHBzZXVkb3MKCWxpa2UgbWVtb3J5LgoKMjAwMC0xMC0yNCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IE1vdmUgaW50ZWdlciBwdW4gY29kZSBkb3duIGFmdGVyCgljb2RlIHRoYXQgY2FsbHMgZW1pdF9tb3ZlX2luc24gZm9yIGVudGlyZSByZWdpc3RlciBtb3ZlLgoJKiBzdG9yLWxheW91dC5jIChjb21wdXRlX3JlY29yZF9tb2RlKTogUmV2ZXJ0IE1hciAyNSwgQXVnIDE4LCBhbmQKCU9jdCAyMCBjaGFuZ2VzLiAgT25seSBzdG9yZSBtb2RlIGluIFRZUEVfTU9ERSBpZiBSRUNPUkRfVFlQRS4KCjIwMDAtMTAtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBydGxhbmFsLmMgKHJ0eF91bnN0YWJsZV9wLCBydHhfdmFyaWVzX3ApOiBEb24ndCBjb25zaWRlciBwaWMKCXJlZ2lzdGVyIHN0YWJsZSBpZiBQSUNfT0ZGU0VUX1RBQkxFX1JFR19DQUxMX0NMT0JCRVJFRC4KCjIwMDAtMTAtMjQgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGdjc2UuYyAoY3Byb3BfaW5zbik6IGRvIG5vdCBwcm9wYWdhdGUgY29uc3RhbnRzIGludG8ganVtcF9pbnNuCglmb3IgbWFjaGluZXMgd2l0aCBDQzAgbW9yZSB0aGFuIG9uY2UuCgoyMDAwLTEwLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQGN5Z251cy5jb20+LCBBbGR5IDxhbGR5aEBjeWdudXMuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogVHJlYXQKCXBzZXVkb3MganVzdCBsaWtlIG1lbW9yeS4KCjIwMDAtMTAtMjQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogRGlzY2FyZCBSRUdfTElCQ0FMTCBhbmQgUkVHX1JFVFZBTAoJd2hlbiBkZWxldGluZyBsaWJjYWxsIHNlcXVlbmNlIGNvbGxhcHNlZCB0byBhIHNpbmdsZSBpbnN0cnVjdGlvbi4KCjIwMDAtMTAtMjQgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY28udWs+CgoJKiBleHByLmMgKGRvX3N0b3JlX2ZsYWcpOiBEb24ndCBjcmFzaCBpZiBlaXRoZXIgc2lkZSBvZiBhCgljb21wYXJpc29uIGlzIGVycm9yX21hcmtfbm9kZS4KCjIwMDAtMTAtMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogc2liY2FsbC5jIChwdXJnZV9tZW1fdW5jaGFuZ2luZ19mbGFnKTogTmV3IGZ1bmN0aW9uLgoJKG9wdGltaXplX3NpYmxpbmdfYW5kX3RhaWxfcmVjdXJzaXZlX2NhbGxzKTogQ2FsbCBpdC4KCjIwMDAtMTAtMjQgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKGNoZWNrLXBvKTogTmV3IHRhcmdldCBmb3IgZG9pbmcgY2hlY2tzIGluIHRoZSBwbwoJc3ViZGlyIGlmIGFsbCBsYW5ndWFnZXMgY29uZmlndXJlZC4KCShDSEVDS19UQVJHRVRTKTogQWRkIEBDSEVDS19QT0AsIHJlcGxhY2VkIHdpdGggY2hlY2stcG8gdmlhCgljb25maWd1cmUgaWYgTkxTIGlzIGVuYWJsZWQuCgkqIGNvbmZpZ3VyZS5pbjogSWYgTkxTIGlzIGVuYWJsZWQsIHN1YnN0aXR1dGUgQ0hFQ0tfUE8gYnkgY2hlY2stcG8sCglvdGhlcndpc2UgbGVhdmUgZW1wdHkuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMTAtMjMgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0BjeWdudXMuY29tPgoKCSogaTM4Ni5jIChwcmludF9vcGVyYW5kKTogSGFuZGxlIG5ldyAnQScgZm9ybWF0dGluZyBjb2RlLgoJMzg3IG9wY29kZXMgbmVlZCBzdWZmaXhlcyBldmVuIHdpdGggLW1pbnRlbC1zeW50YXguCglDaGVjayBmb3IgZXhwbGljaXQgc2l6ZSBvdmVycmlkZSAoY29kZXMgJ2InLCAndycgYW5kICdrJykuCgkocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogQ2hlY2sgaWYgcmVnaXN0ZXIgcHJlZml4IGlzIG5lZWRlZCB3aGVuCgllbWl0dGluZyBgZHMnIHNlZ21lbnQgb3ZlcnJpZGUuCgkqIGkzODYuaDogQWRkIGNvbW1lbnQgYWJvdXQgbmV3ICdBJyBmb3JtYXR0aW5nIGNvZGUuCgkqIGkzODYubWQgKGp1bXAgYW5kIGNhbGwgcGF0dGVybnMpOiBFbWl0IGFic29sdXRlIHJlZmVyZW5jZXMgdXNpbmcgJUEuCgoyMDAwLTEwLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2V4cGFuZF9wcm9sb2d1ZSk6IE1hcmsgZXh0cmEKCW91dHB1dCByZWdpc3RlcnMgYXMgZml4ZWQuCgkoaWE2NF9mdW5jdGlvbl9lcGlsb2d1ZSk6IFVuZG8gb3V0cHV0IGZpeGF0aW9uLgoKMjAwMC0xMC0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZDogQWRkIG5hbWVzIGZvciBhbGwgdW5uYW1lZCBpbnNuczsgdXNlCglkZWZpbmVfaW5zbl9hbmRfc3BsaXQgaW4gc29tZSBvYnZpb3VzIHBsYWNlcy4KCShsZGEpOiBSZW1vdmUuCgkoemVyb19leHRlbmRxaWhpMik6IFVzZSBhbiBleHBhbmRlciB3LyBub25pbW1lZGlhdGVfb3BlcmFuZCBmb3IgQldYLgoJKHplcm9fZXh0ZW5kcWlzaTIsIHplcm9fZXh0ZW5kcWlkaTIpOiBMaWtld2lzZS4KCSh6ZXJvX2V4dGVuZGhpc2kyLCB6ZXJvX2V4dGVuZGhpZGkyKTogTGlrZXdpc2UuCgkoYWJzIHNwbGl0dGVycyk6IEZpeCBtYXRjaF9zY3JhdGNoIG9wZXJhbmQgbnVtYmVyLgoJKGJjY19yZXZlcnNlKTogU3dhcCBwYyAmIGxhYmVsIGluc3RlYWQgb2Ygbm9uLWNhbm9uaWNhbCBjb21wYXJlLgoKMjAwMC0xMC0yMyAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogaWE2NC5jIChpYTY0X3ByaW50X29wZXJhbmQsIGNhc2UgJ3InKTogQ29ycmVjdCBjb21tZW50LiAgSGFuZGxlCglDT05TVF9JTlQuCgkqIGlhNjQubWQgKGNtcHNpX2FkanVzdGVkKTogVXNlICVyMy4KCShjbXBkaV9hZGp1c3RlZCk6IExpa2V3aXNlLgoKMjAwMC0xMC0yMyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9hdHQuaCAoQVNNX0ZJTEVfU1RBUlQpOiBEZWZpbmUuCgoyMDAwLTEwLTIzICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2xpbnV4LmggKEFTTV9GSUxFX1NUQVJUKTogRGVmaW5lLgoKV2VkIE9jdCAxOCAxMToxNjo0MCAyMDAwICBEb25hbGQgTGluZHNheSAgPGRsaW5kc2F5QGN5Z251cy5jb20+CgoJKiBnY2MvY29uZmlndXJlLmluOiBtNjhrLWNvZmYgdG1fZmlsZSBzaG91bGQgbm90IGhhdmUgbGliZ2xvc3MuaCwKCXNpbmNlIHRoaXMgKG9ubHkpIGRyYWdzIGluIGEgY3J0MC5vIHJlZmVyZW5jZSB0aGF0IHRoZSAubGQgZmlsZXMKCWFsc28gaW50cm9kdWNlLgoKMjAwMC0xMC0yMyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcmVsb2FkMS5jIChyZWxvYWRfcmVnX3JlYWNoZXNfZW5kX3ApOiBBIFJFTE9BRF9PVEhFUiBjYW4KCW92ZXJ3cml0ZSB0aGUgdmFsdWUgaW4gYSBSRUxPQURfRk9SX0lOUFVUIGFuZCBvdGhlciBraW5kcyBvZgoJcmVsb2FkcyBqdXN0IGxpa2UgYW4gUkVMT0FEX0ZPUl9PVVRQVVQgd291bGQuCgoJKiBsb2NhbC1hbGxvYy5jICh1cGRhdGVfZXF1aXZfcmVncyk6IEFkZCBhbiBhYm9ydCgpLiAgV2hlbgoJZGVsZXRpbmcgb3IgbW92aW5nIGluc25zLCB1cGRhdGUgcmVnX2VxdWl2W3JlZ25vXS5pbml0X2luc25zLgoKMjAwMC0xMC0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHJlZS50ZXhpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gZm9yIElGX1NUTVRzIGFuZCByZWxhdGVkCgljb25kaXRpb25hbCBzdGF0ZW1lbnRzLgoKMjAwMC0xMC0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4cHIuYyAoZG9fcHJlZXhwYW5kX2NhbGxzKTogUmVtb3ZlLgoJKHNhbWVfZnJvbV9wKTogRG9uJ3QgdXNlIENBTExfRVhQUl9SVEwuCgkoZXhwYW5kX2V4cHIpOiBEb24ndCBjYWxsIHByZWV4cGFuZF9jYWxscywgb3IgdXNlIENBTExfRVhQUl9SVEwuCgkocHJlZXhwYW5kX2NhbGxzKTogUmVtb3ZlLgoJKiB0cmVlLmMgKGZpcnN0X3J0bF9vcCk6IFJlbW92ZSBDQUxMX0VYUFIgY2FzZS4KCSh1bnNhdmVfZXhwcl8xKTogTGlrZXdpc2UuCgkqIHRyZWUuZGVmIChDQUxMX0VYUFIpOiBHaXZlIGl0IG9ubHkgdHdvIHNsb3RzLgoJKiB0cmVlLmggKENBTExfRVhQUl9SVEwpOiBSZW1vdmUuCgoyMDAwLTEwLTIxICBDaGFuZHJha2FsYSBDaGF2dmEgICA8Y2NoYXZ2YUByZWRoYXQuY29tPgoKCSogbGliZ2NjLXN0ZC52ZXIgKF9fYWRkdnNpMywgX19hZGR2ZGkzLCAgX19zdWJ2c2kzLCBfX3N1YnZkaTMsCglfX211bHZzaTMsIF9fbmVndnNpMiwgX19uZWd2ZGkyLCBfX2Fic3ZzaTIsIF9fYWJzdmRpMiwgX19tdWx2ZGkzKToKCU5ldyBmdW5jdGlvbnMuCgoyMDAwLTEwLTIyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGNvbWJpbmVfcGVuZGluZ19zdGFja19hZGp1c3RtZW50X2FuZF9jYWxsKTogRG9uJ3QKCWFkanVzdCBzdGFjayB3aGVuIHVuYWRqdXN0ZWRfYWxpZ25tZW50IGVuZHMgdXAgYXMgemVyby4KCjIwMDAtMTAtMjIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGZpeGluYy9nZW5maXhlczogUmVtb3ZlIEVHQ1MgcmVmZXJlbmNlLgoJKiBpbnN0YWxsLnRleGk6IFJlbW92ZSBFR0NTIHJlZmVyZW5jZS4KCSogSU5TVEFMTDogUmVnZW5lcmF0ZS4KCjIwMDAtMTAtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKFRZUEVfSVNfU0laRVRZUEUpOiBBZGQgbW9yZSBkb2N1bWVudGF0aW9uLgoKMjAwMC0xMC0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZGlhZ25vc3RpYy5jOiBSZW1vdmUgRUdDUyByZWZlcmVuY2UgaW4gY29tbWVudC4KClNhdCBPY3QgMjEgMDg6MjQ6MjUgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGxvb3AuYyAoc3RyZW5ndGhfcmVkdWNlKTogRml4IGVycm9yIGluIGxhc3QgY2hhbmdlLgoKMjAwMC0xMC0yMCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKFNITElCX05NX0ZMQUdTKTogTmV3LgoJKGxpYmdjYy5tayk6IFBhc3MgaXQuCgkqIG1rbGliZ2NjLmluIChsaWJnY2MubWFwKTogVXNlIGl0LgoKCSogcnM2MDAwL3QtYWl4NDMgKFNITElCX0VYVCwgU0hMSUJfTElOSywgU0hMSUJfTElCUywKCVNITElCX01LTUFQLCBTSExJQl9NQVBGSUxFUywgU0hMSUJfTk1fRkxBR1MpOiBOZXcuCgoyMDAwLTEwLTIwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtaXBzLmggKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IENhc3QgYXJyYXkgYXJnIHRvIHVuc2lnbmVkIGNoYXIuCgoJKiBzcGFyYy5jIChsb2FkX3BpY19yZWdpc3Rlcik6IERlbGV0ZSB1bnVzZWQgdmFyYWlibGUuCgoJKiBsaWJnY2MyLmMgKF9fYWRkdnNpMyk6IERlbGV0ZSB1bnVzZWQgdmFyaWFibGUuCgoJKiBsaWJnY2MyLmggKF9fYWJzdnNpMiwgX19hYnN2ZGkyLCBfX2FkZHZzaTMsIF9fYWRkdmRpMywKCV9fc3VidnNpMywgX19zdWJ2ZGkzLCBfX211bHZzaTMsIF9fbXVsdmRpMywgX19uZWd2c2kyLAoJX19uZWd2ZGkyKTogUHJvdG90eXBlLgoKCSogc3NhLmMgKGFwcGx5X2RlbGF5ZWRfcmVuYW1lcyk6IEF2b2lkIHVuZGVmaW5lZCBvcGVyYXRpb24uCgoJKiB0b3BsZXYuYyAoZGlzcGxheV90YXJnZXRfb3B0aW9ucyk6IE1ha2Ugc3RhdGljIHRvIG1hdGNoCglwcm90b3R5cGUuICBEZWxldGUgZW1wdHkgZGVjbGFyYXRpb24uCgoyMDAwLTEwLTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBjcHBzcGVjLmMgKERFRkFVTFRfV09SRF9TV0lUQ0hfVEFLRVNfQVJHKTogQWRkZWQgLU1GIGFuZCAtTVQuCgkqIGdjYy5jIChERUZBVUxUX1dPUkRfU1dJVENIX1RBS0VTX0FSRyk6IEFkZGVkIC1NRiBhbmQgLU1ULgoKRnJpIE9jdCAyMCAxNzowNTo0OSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBTQVZFX0VYUFIpOiBTZXQgUlRYX1VOQ0hBTkdJTkdfUCBvbgoJcmV0dXJuZWQgTUVNLgoJKGV4cGFuZF9leHByX3VuYWxpZ25lZCwgY2FzZSBBUlJBWV9SRUYpOiBDaGVjayB0aGF0IGluZGV4IGlzCglhIGNvbnN0YW50IGJlZm9yZSBjb21wYXJpbmcgaXQ7IHVzZSB0cmVlX2xvd19jc3QuCgkqIHRyZWUuYyAoc2F2ZV9leHByKTogU2V0IFRSRUVfUkVBRE9OTFkuCgkoc3Vic3RpdHV0ZV9leHByKTogUmV0dXJuIGluc2lkZSBvZiBOT05fTFZBTFVFX0VYUFIuCgkoYnVpbGQsIGJ1aWxkMSk6IFNldCBUUkVFX1JFQURPTkxZIGlmIGFsbCBvcGVyYW5kcyBhcmUuCgkoYnVpbGRfaW5kZXhfdHlwZSk6IElmIHVwcGVyIGJvdW5kIGlzIGEgbmVnYXRpdmUgbnVtYmVyLCBsb3dlcgoJYm91bmQgaXMgemVybyBhbmQgc2l6ZXR5cGUgaXMgdW5zaWduZWQsIHVzZSB1cHBlciBib3VuZCBvZiBvbmUgYW5kCglsb3dlciBvZiB6ZXJvLgoKMjAwMC0xMC0yMCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZ2NjLmMgKHByb2Nlc3NfY29tbWFuZCwgbWFpbik6IFVzZSAiYmVjYXVzZSIgaW5zdGVhZCBvZgoJInNpbmNlIiBpbiBlcnJvciBtZXNzYWdlcy4KCkZyaSBPY3QgMjAgMTM6MzM6MTYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHN0b3ItbGF5b3V0LmMgKGNvbXB1dGVfcmVjb3JkX21vZGUpOiBVc2UgdHJlZV9sb3dfY3N0LgoJRG9uJ3QgdXNlIG1vZGUgb2YgZmllbGQgZm9yIHJlY29yZCB1bmxlc3Mgc2l6ZXMgYXJlIHRoZSBzYW1lLgoJKGxheW91dF90eXBlLCBjYXNlIEFSUkFZX1RZUEUpOiBSZW1vdmUgc3BlY2lhbCBib3VuZHMgaGFuZGxpbmcKCXByZXZpb3VzbHkgYWRkZWQgZm9yIEFkYTsgYWxzbyBjaGFuZ2UgdG8gdXNpbmcgaG9zdF9pbnRlZ2VycAoJYW5kIHRyZWVfbG93X2NzdC4KCgkqIGxvb3AuYyAoc3RyZW5ndGhfcmVkdWNlKTogU2hvdyB3aGVuIG5ldyByZWdpc3RlciBtYWRlIGZvcgoJZ2l2IGlzIGtub3duIHRvIGJlIGEgcG9pbnRlciBhbmQgaXRzIGFsaWdtZW50IGlmIHNvIGFuZCBrbm93bi4KCShsb29wX2R1bXBfYXV4KTogU2hvdyBWRVJCT1NFIHBhcmFtZXRlciB1bnVzZWQuCgoJKiBnY3NlLmMgKHNldF9oYXNoX3RhYmxlX3NpemUpOiBOb3cgdW5zaWduZWQuCgkqIHNkYm91dC5jICh0ZW1wbGF0ZV9uYW1lX3ApOiBBZGQgImNvbnN0IiB0byBhdm9pZCB3YXJuaW5ncy4KCShzZGJvdXRfcmVjb3JkX3R5cGVfbmFtZSwgcGxhaW5fdHlwZV8xLCBzZGJvdXRfc3ltYm9sKTogTGlrZXdpc2UuCgkoc2Rib3V0X29uZV90eXBlLCBzZGJvdXRfcGFybXMsIHNkYm91dF9yZWdfcGFybXMpOiBMaWtld2lzZS4KCShzZGJvdXRfZW5kX2VwaWxvZ3VlKTogUmVtb3ZlIHZhcmlhYmxlIE5BTUUuCgkqIHN5c3RlbS5oIChnZXRvcHQpOiBBZGQgZGVmYXVsdCBkZWZpbml0aW9uLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAocHJpbnRfb3BlcmFuZCk6IERvbid0IGNvbnRpbnVlIHByb2Nlc3NpbmcKCWFmdGVyIGlzc3VpbmcgZXJyb3IuCgkoc3VtbWFyaXplX2luc24pOiBBdm9pZCB1c2Ugb2YgVUwgaW4gY29uc3RhbnQuCgoJKiBmdW5jdGlvbi5jIChsb2NhdGVfYW5kX3BhZF9wYXJtKTogVXNlIGhvc3RfaW50ZWdlcnAgYW5kIHRyZWVfbG93X2NzdC4KCgkqIGZvbGQtY29uc3QuYyAoZm9yY2VfZml0X3R5cGUpOiBVbnNpZ25lZCB2YWx1ZXMgY2FuIG92ZXJmbG93CglpZiB0aGV5IGFyZSBzaXpldHlwZS4KCShpbnRfY29uc3RfYmlub3ApOiBEb24ndCB1c2UgY2FjaGUgaWYgb3ZlcmZsb3dzLgoKMjAwMC0xMC0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGxvY2F0ZV9hbmRfcGFkX3Bhcm0pOiBaZXJvIGFsaWdubWVudF9wYWQuCgoJKiByZWdyZW5hbWUuYyAocnJfcmVwbGFjZV9yZWcpOiBSZXdyaXRlIHRvIHVzZSByZWNvZ19kYXRhIHRvCglwZXJmb3JtIHN1YnN0aXR1dGlvbnMsIGFuZCBhcHBseV9jaGFuZ2VfZ3JvdXAgdG8gc2VlIGlmIGl0IHdvcmtlZC4KCkZyaSBPY3QgMjAgMTM6MzM6MTYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGR3YXJmMm91dC5jIChhZGRfYm91bmRfaW5mbyk6IEFsc28gaWdub3JlIENPTkRfRVhQUi4KCgkqIGNvbWJpbmUuYyAoc3RydWN0IHVuZG8pOiBDaGFuZ2UgaW50IHRvIHVuc2lnbmVkIGludC4KCShkb19TVUJTVF9JTlQpOiBBcmdzIGFyZSB1bnNpZ25lZCBpbnQuCgkobWFrZV9leHRyYWN0aW9uLCBmb3JjZV90b19tb2RlKTogVXNlIHByb3BlciB0eXBlIHdoZW4gZm9ybWluZyBtYXNrLgoJKG1ha2VfZmllbGRfYXNzaWdubWVudCk6IExpa2V3aXNlLgoKMjAwMC0xMC0yMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoY2hlY2tfZm9ybWF0X2luZm9fcmVjdXJzZSk6IEV4dHJhY3Qgc3RyaW5nIGNvbnN0YW50Cglpbml0aWFsaXplcnMgZnJvbSBub24tdm9sYXRpbGUgY29uc3RhbnQgYXJyYXlzIGFuZCBjaGVjayB0aGVtIGFzCglmb3JtYXRzLgoJKiBjLXR5cGVjay5jIChkZWNsX2NvbnN0YW50X3ZhbHVlKTogRG9uJ3QgY2hlY2sgcGVkYW50aWMgb3IgY2hlY2sKCWZvciBERUNMX01PREUgKGRlY2wpICE9IEJMS21vZGUuCgkoZGVjbF9jb25zdGFudF92YWx1ZV9mb3JfYnJva2VuX29wdGltaXphdGlvbik6IE5ldyBmdW5jdGlvbiB3aGljaAoJaW5jbHVkZXMgdGhlc2UgY2hlY2tzLgoJKGRlZmF1bHRfY29udmVyc2lvbiwgY29udmVydF9mb3JfYXNzaWdubWVudCwgZGlnZXN0X2luaXQpOiBVc2UKCWRlY2xfY29uc3RhbnRfdmFsdWVfZm9yX2Jyb2tlbl9vcHRpbWl6YXRpb24gaW5zdGVhZCBvZgoJZGVjbF9jb25zdGFudF92YWx1ZS4KCjIwMDAtMTAtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKERFQ0xfQUxJR05fVU5JVCk6IE5ldyBtYWNyby4KCjIwMDAtMTAtMTQgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnItcHJvdG9zLmggKGF2cl9vdXRwdXRfYmxkKTogTmV3LgoJKG91dF9zaGlmdF93aXRoX2NudCk6IEFkZCB0X2xlbiBhcmd1bWVudC4KCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX251bV9hcmdfcmVncyk6IFJlbW92ZSAtbXBhY2stYXJncy4KCShvdXRwdXRfbW92cWksIG91dHB1dF9tb3ZoaSwgb3V0cHV0X21vdnNpc2YpOiBPcHRpbWl6ZSBsb2FkaW5nCglhbnkgY29uc3RhbnQgd2l0aCBleGFjdGx5IG9uZSBiaXQgc2V0IHRvIE5PX0xEX1JFR1MuCgkob3V0X3NoaWZ0X3dpdGhfY250KTogT3B0aW1pemUgb3V0cHV0IGNvZGUgZm9yIHNpemUgb3Igc3BlZWQsCglkZXBlbmRpbmcgb24gb3B0aW1pemVfc2l6ZS4gIEhhbmRsZSBzbWFsbCBzaGlmdCBjb3VudHMgYXMgd2VsbAoJKGlmIG5vdCBoYW5kLW9wdGltaXplZCBpbiA/c2g/P2kzX291dCkuICBTaGlmdHMgY2FuIGJlIGRvbmUKCXdpdGggb3Igd2l0aG91dCBhIHNjcmF0Y2ggcmVnaXN0ZXIsIHdpdGggaGVscCBvZiBfX3RtcF9yZWdfXwoJb3IgX196ZXJvX3JlZ19fIGlmIG5lY2Vzc2FyeS4gIEFkZCBUX0xFTiBhcmd1bWVudCB0byBwYXNzIHRoZQoJbGVuZ3RoIG9mIFRFTVBMQVRFIGluIHdvcmRzLCByZXR1cm4gdG90YWwgaW5zbiBsZW5ndGggaW4gKkxFTi4KCShhc2hscWkzX291dCwgYXNocnFpM19vdXQsIGxzaHJxaTNfb3V0KTogQ2hhbmdlIGFsbCBjYWxscyB0bwoJb3V0X3NoaWZ0X3dpdGhfY250IHRvIHdvcmsgd2l0aCB0aGUgYWJvdmUgY2hhbmdlLgoJKGFzaGxoaTNfb3V0LCBhc2hsc2kzX291dCwgYXNocmhpM19vdXQsIGFzaHJzaTNfb3V0LCBsc2hyaGkzX291dCwKCWxzaHJzaTNfb3V0KTogTGlrZXdpc2UuICBPcHRpbWl6ZSBtb3JlIGtub3duIHNoaWZ0IGNvdW50IGNhc2VzLgoJUmVtb3ZlIGNhc2VzIGFscmVhZHkgd2VsbCBvcHRpbWl6ZWQgaW4gb3V0X3NoaWZ0X3dpdGhfY250LgoJKGF2cl9vdXRwdXRfYmxkKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvYXZyL2F2ci5oIChNQVNLX1BBQ0tfQVJHUywgVEFSR0VUX1BBQ0tfQVJHUyk6IFJlbW92ZS4KCShUQVJHRVRfU1dJVENIRVMpOiBSZW1vdmUgLW1wYWNrLWFyZ3MgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KCSogY29uZmlnL2F2ci9hdnIubWQgKCpyZWxvYWRfaW5xaSwgKnJlbG9hZF9pbmhpLCAqcmVsb2FkX2luc2kpOgoJQWRkIHJlbG9hZF9jb21wbGV0ZWQgdG8gaW5zbiBjb25kaXRpb24gLSBvbmx5IGZvciBwZWVwaG9sZXMuCgkoYXNobHFpMywgYXNocnFpMywgbHNocnFpMyk6IENvcnJlY3QgaW5zbiBsZW5ndGggZm9yIHNoaWZ0IGNvdW50cwoJaW4gYSByZWdpc3RlciBvciBtZW1vcnkuCgkoYXNobGhpMywgYXNobHNpMywgYXNocmhpMywgYXNocnNpMywgbHNocmhpMywgbHNocnNpMyk6IExpa2V3aXNlLgoJRG8gbm90IHJlcXVpcmUgYSBzY3JhdGNoIHJlZ2lzdGVyLgoJKCphc2hsaGkzX2NvbnN0LCAqYXNobHNpM19jb25zdCwgKmFzaHJoaTNfY29uc3QsICphc2hyc2kzX2NvbnN0LAoJKmxzaHJoaTNfY29uc3QsICpsc2hyc2kzX2NvbnN0KTogTmV3IGluc25zIGFuZCBtYXRjaGluZyBwZWVwaG9sZXMuCglPcHRpbWl6ZSBzaGlmdHMgYnkga25vd24gY291bnQgdXNpbmcgYSBzY3JhdGNoIHJlZ2lzdGVyLCBidXQgb25seQoJaWYgb25lIGlzIHN0aWxsIGF2YWlsYWJsZSBhZnRlciByZWdpc3RlciBhbGxvY2F0aW9uLgoKMjAwMC0xMC0yMCAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiB0LXZheDogTmV3IGZpbGUuICBEb24ndCBidWlsZCBtb2R1bGVzIGZyb20gbGliZ2NjMS5jLgoKRnJpIE9jdCAyMCAwMDo1NzowMCBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogYWxpYXMuYzogKG1hcmtfY29uc3RhbnRfZnVuY3Rpb24pOiBEb24ndCBjaGVjayBwdXJlIGZ1bmN0aW9ucy4KCUluaXRpYWxpemUgYW5kIGVuZCBhbGlhcyBhbmFseXNpcy4KCShub25sb2NhbF9tZW50aW9uZWRfcCk6IFJlbmFtZSBmcm9tIG5vbmxvY2FsX3JlZmVyZW5jZV9wLgoJRG9uJ3QgbWFrZSBhIHNwZWNpYWwgZXhjZXB0aW9uIGZvciByZWN1cnNpb24uICBIYW5kbGUKCVVOU1BFQ19WT0xBVElMRS4gIERvbid0IGFzc3VtZSBBU01fT1BFUkFORFMgaXMgbm9uLWxvY2FsCgl1bmxlc3MgaXQncyB2b2xhdGlsZS4KCgkqIGxvY2FsLWFsbG9jLmMgKGVxdWl2YWxlbmNlKTogTmV3IHN0cnVjdHVyZS4KCShyZWdfZXF1aXYpOiBEZWZpbmUuCgkoY29udGFpbnNfcmVwbGFjZV9yZWdzKTogUmVtb3ZlIGFycmF5IGFuZCB1c2UKCWZpZWxkIGluIHJlZ19lcXVpdi4KCShtZW1yZWZfcmVmZXJlbmNlZF9wKTogTGlrZXdpc2UuCgkobm9fZXF1aXYpOiBMaWtld2lzZS4KCSh1cGRhdGVfZXF1aXZfcmVncyk6IExpa2V3aXNlLgoKCShlcXVpdl9pbml0X3Zhcmllc19wLAoJZXF1aXZfaW5pdF9tb3ZhYmxlX3ApOiBOZXcgZnVuY3Rpb25zLgoJKHVwZGF0ZV9lcXVpdl9yZWdzKTogVXNlIHRoZW0uICBVc2UgcnR4X3Zhcmllc19wCglpbnN0ZWFkIG9mIGZ1bmN0aW9uX2ludmFyaWFudF9wLiAgUHJvY2VzcyBpbnNucwoJZnJvbSBlbmQgdG8gYmVnaW5uaW5nLiAgQWxsb3cgYSBSRUdfRVFVSVYgaW5zbgoJd2l0aGluIHRoZSBzYW1lIGxvb3AgYXMgYSB1c2UgdG8gYmUgbW92ZWQsIGFsc28KCWFsbG93IGl0IHRvIGJlIG1vdmVkIG91dCBvZiBhIGxvb3AuICBVcGRhdGUKCVJFR19ERUFEIG5vdGVzIHdoZW4gc3Vic3RpdHV0aW5nIGludG8gYW4gaW5zbi4KCjIwMDAtMTAtMTkgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGMtZGVjbC5jIChzdGFydF9kZWNsKTogQ2hlY2sgZm9yIGVycm9yX21hcmtfbm9kZSB0eXBlIGJlZm9yZSB1c2luZwoJQ09NUExFVEVfVFlQRV9QLgoJKGZpbmlzaF9kZWNsKTogTGlrZXdpc2UuICBEb24ndCBnaXZlIGFuIGVycm9yIGlmIGRlY2wgdHlwZSBpcwoJYWxyZWFkeSBlcnJvcl9tYXJrX25vZGUuCgoJKiBoYWlmYS1zY2hlZC5jIChjb21wdXRlX3RyZ19pbmZvKTogQWRkIGV4cGxhbmF0b3J5IGNvbW1lbnRzLgoJTmV3IGxvY2FsIHVwZGF0ZV9ibG9ja3MuICBVc2UgdXBkYXRlX2Jsb2NrcyB0byByZW1vdmUgZHVwbGljYXRlcwoJd2hlbiBjb21wdXRpbmcgdXBkYXRlIGJsb2Nrcy4gIENoZWNrIGZvciBiYmxzdF90YWJsZSBvdmVyZmxvdy4KCShzY2hlZHVsZV9ibG9jayk6IEFkZCBleHBsYW5hdG9yeSBjb21tZW50LiAgUmVkdWNlIGJibHN0X3NpemUgYnkKCWZhY3RvciBvZiAyLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3ZkaV9zeW1ib2xpYyk6IERvY3VtZW50IGxvc3Mgb2YgUkVHX0xBQkVMCglub3Rlcy4KCjIwMDAtMTAtMTkgIENoYW5kcmFrYWxhIENoYXZ2YSAgIDxjY2hhdnZhQHJlZGhhdC5jb20+CgoJKiBsaWJnY2MyLmMgKF9tdWx2c2kzKTogQ2hhbmdlIHZhcmlhYmxlcyB1IGFuZCB2IHRvIGEgYW5kIGIuCgoyMDAwLTEwLTE5ICBDaGFuZHJha2FsYSBDaGF2dmEgICA8Y2NoYXZ2YUByZWRoYXQuY29tPgoKCSogZXhwbWVkLmM6IE1pbm9yIGNvcnJlY3Rpb25zIGluIGNvbW1lbnRzLgoJKiBpbnZva2UudGV4aTogQWRkZWQgZGVzY2lwdGlvbiBmb3IgdGhlIG5ldyBvcHRpb24gLWZ0cmFwdi4KCjIwMDAtMTAtMTkgIENoYW5kcmFrYWxhIENoYXZ2YSAgIDxjY2hhdnZhQHJlZGhhdC5jb20+CgoJKiBsaWJnY2MyLmM6IEFkZGVkIHRoZSBtaXNzaW5nICNlbmRpZi4KClRodSBPY3QgMTkgMTQ6MjU6MTEgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmggKENPTlNUX09LX0ZPUl9MRVRURVIpOiBSZS1hZGQgJ04nOyBkb2N1bWVudC4KCjIwMDAtMTAtMTggIENoYW5kcmFrYWxhIENoYXZ2YSAgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIGV4cG1lZC5jIChleHBhbmRfbXVsdCk6IERvbid0IGRvIHN5bnRoX211bHQgb3B0aW1pemF0aW9uIGZvciAtZnRyYXB2LgoJVXNlIHNtdWx2X29wdGFiIGZvciAtZnRyYXB2LgoJKGV4cGFuZF9tdWx0X2hpZ2hwYXJ0KTogVXNlIHVuc2lnbmVkIG11bHRpcGx5LgoJKGV4cGFuZF9kaXZtb2QpOiBTcGVjaWFsLWNhc2UgZGl2aXNpb24gYnkgLTEuCglGb3IgRVhBQ1RfRElWX0VYUFIsIGRvIHJpZ2h0IHNoaWZ0IGZpcnN0LCB0aGVuIHRoZSBtdWx0aXBseS4KCUZvciBjb21wbGV4IGRpdmlkZSwgdXNlIGFicyB3aXRoIHVuc2lnbmVkIHJlc3VsdC4KCSogZXhwci5jIChmb3JjZV9vcGVyYW5kKTogVXNlIHVuc2lnbmVkIG11bHRpcGx5LgoJKGV4cGFuZF9leHByKTogVXNlIG92ZXJmbG93LXRyYXBwaW5nIG9wdGFicyBmb3Igc2lnbmVkIHR5cGVzIGlmCglmbGFnX3RyYXB2LgoJSWYgZmxhZ190cmFwdiwgZG9uJ3QgZ2VuZXJhdGUgYSByZWN1cnNpdmUgY2FsbCB3aXRoIEVYUEFORF9TVU0KCWlmIHRoZSB0eXBlIGlzIHNpZ25lZCBhbmQgdGhlIG9yaWdpbmFsIGNhbGwgd2Fzbid0IEVYUEFORF9TVU0gb3IKCUVYUEFORF9JTklUSUFMSVpFUi4KCSogZXhwci5oIChhZGR2X29wdGFiLCBzdWJ2X29wdGFiLCBzbXVsdl9vcHRhYiwgc2RpdnZfb3B0YWIpOiBEZWNsYXJlLgoJKG5lZ3Zfb3B0YWIsIGFic3Zfb3B0YWIpOiBEZWNsYXJlLgoJKiBmbGFncy5oIChmbGFnX3RyYXB2KTogRGVjbGFyZS4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IEFkZCBlbnRyaWVzIGZvciBhZGR2X29wdGFiLCBzdWJ2X29wdGFiLAoJc211bHZfb3B0YWIsIHNkaXZ2X29wdGFiLCBuZWd2X29wdGFiIGFuZCBhYnN2X29wdGFiLgoJKGdlbl9pbnNuKTogSW50ZXJwcmV0ICckUCcgYXMgcmVxdWlyaW5nIGFuIGludGVnZXIgbW9kZSwKCWluY2x1ZGluZyBwYXJ0aWFsIGludGVnZXIgbW9kZXMuCgkqIGxvb3AuYyAoZW1pdF9pdl9hZGRfbXVsdCk6IFVzZSB1bnNpZ25lZCBleHBhbmRfbXVsdF9hZGQuCgkocHJvZHVjdF9jaGVhcF9wKTogVXNlIHVuc2lnbmVkIGV4cGFuZF9tdWx0LgoJKiBvcHRhYnMuYyAoYWRkdl9vcHRhYiwgc3Vidl9vcHRhYiwgc211bHZfb3B0YWIsIHNkaXZ2X29wdGFiKTogRGVmaW5lLgoJKG5lZ3Zfb3B0YWIsIGFic3Zfb3B0YWIpOiBEZWZpbmUuCgkoZXhwYW5kX2Jpbm9wKTogVXNlIG92ZXJmbG93LXRyYXBwaW5nIG9wdGFicyBmb3Igc2lnbmVkIHR5cGVzIGlmCglmbGFnX3RyYXB2LgoJSGFuZGxlIG5lZ3Zfb3B0YWIgbGliZSBuZWdfb3B0YWIuCgkoZXhwYW5kX2Ficyk6IFRha2UgcmVzdWx0X3Vuc2lnbmVkcCBhcmd1bWVudCBpbnN0ZWFkIG9mIHVuc2lnbmVkcCBvbmUuCglVc2Ugb3ZlcmZsb3ctdHJhcHBpbmcgb3B0YWJzIGZvciBzaWduZWQgcmVzdWx0IGlmIGZsYWdfdHJhcHYuCgkoZXhwYW5kX2NvbXBsZXhfYWJzKTogVXNlIG92ZXJmbG93LXRyYXBwaW5nIG9wdGFicyBmb3Igc2lnbmVkIHR5cGVzIGlmCglmbGFnX3RyYXB2LgoJRG9uJ3Qgb3Blbi1jb2RlIGNvbXBsZXggYWJzb2x1dGUtdmFsdWUgb3BlcmF0aW9uIGZvciBmbGFnX3RyYXB2LgoJKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSBhZGR2X29wdGFiLCBzdWJ2X29wdGFiLCBzbXVsdl9vcHRhYiwKCXNkaXZ2X29wdGFiLCBuZWd2X29wdGFiIGFuZCBhYnN2X29wdGFiLgoJKiB0b3BsZXYuYyAoZmxhZ190cmFwdik6IERlZmluZS4KCShsYW5nX2luZGVwZW5kZW50X29wdGlvbnMgZl9vcHRpb25zKTogSW5jbHVkZSBmbGFnX3RyYXB2LgoJKiB0cmVlLmggKFRZUEVfVFJBUF9TSUdORUQpOiBEZWZpbmUuCgkqIGxpYmdjYzIuYyAoX19hZGR2c2kzLCBfX2FkZHZkaTMsIF9fc3VidnNpMyxfX3N1YnZzaTMsIF9fc3VidmRpMywKCV9fbXVsdnNpMywgX19uZWd2c2kyLCBfX25lZ3ZkaTIsIF9fYWJzdnNpMiwgX19hYnN2ZGkyLCBfX211bHZkaTMpOgoJTmV3IGZ1bmN0aW9ucy4KCSogTWFrZWZpbGUuaW46IGFkZCBfYWJzdnNpMiBfYWJzdmRpMiBfYWRkdnNpMyBfYWRkdmRpMyBfc3VidnNpMwoJX3N1YnZkaTMgX211bHZzaTMgX211bHZkaTMgX25lZ3ZzaTIgX25lZ3ZkaTIuCgoyMDAwLTEwLTE4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgkgICAgRGF2aWQgVi4gSGVua2VsLVdhbGxhY2UgIDxndW1ieUBjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvdC1uZXR3YXJlOiBCcmluZyBpbiBmcm9tIHRoZSBSZWQgSGF0IHRyZWUuCgkqIGNvbmZpZy9pMzg2L25ldHdhcmUuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9uZXR3YXJlLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL25ldHdhcmUuaDogRGVsZXRlLgoJKiBjb25maWd1cmUuaW46IEFkZCBpWzM0NTY3XTg2LSotbmV0d2FyZS4KCSogY29uZmlndXJlOiBIYW5kLWVkaXQgdG8gbWF0Y2ggY29uZmlndXJlLmluIGNoYW5nZS4KCjIwMDAtMTAtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChmbGFnX25vX2J1aWx0aW4pOiBEZWNsYXJlLgoJKGZsYWdfbm9fbm9uYW5zaV9idWlsdGluKTogTGlrZXdpc2UuCgkoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogQ2hhbmdlIHByb3RvdHlwZS4KCSogYy1jb21tb24uYyAoZmxhZ19ub19idWlsdGluKTogTmV3IHZhcmlhYmxlLgoJKGZsYWdfbm9fbm9uYW5zaV9idWlsdGluKTogTGlrZXdpc2UuCgkoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogUmVtb3ZlIHBhcmFtZXRlcnMuICBBZGp1c3QKCWFjY29yZGluZ2x5LgoJKiBjLWRlY2wuYyAoZmxhZ19ub19idWlsdGluKTogUmVtb3ZlLgoJKGZsYWdfbm9fbm9uYW5zaV9idWlsdGluKTogTGlrZXdpc2UuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGp1c3QgY2FsbCB0bwoJY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zLgoKMjAwMC0xMC0xOCAgTWFyYyBFc3BpZSA8ZXNwaWVAb3BlbmJzZC5vcmc+CgoJKiB0bS50ZXhpIChMSUJHQ0NfU1BFQyk6IFN5bmNoIHdpdGggcmVhbGl0eS4KCjIwMDAtMTAtMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGNoZWNrX2Zvcm1hdF90eXBlcyk6IENoZWNrIGZvciB3cml0aW5nIHRocm91Z2ggYQoJTlVMTCBwb2ludGVyIGFyZ3VtZW50LgoKMjAwMC0xMC0xOCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiB0bS50ZXhpIChFeGNlcHRpb24gUmVnaW9uIE91dHB1dCk6IERvY3VtZW50CglEV0FSRl9DSUVfREFUQV9BTElHTk1FTlQuCgkqIGR3YXJmMm91dC5jIChEV0FSRl9DSUVfREFUQV9BTElHTk1FTlQpOiBXcmFwIGRlZmluaXRpb24gaW4KCSNpZm5kZWYuCglbRU5BQkxFX0NIRUNLSU5HXSAocmVnX3NhdmUpOiBBYm9ydCBpZiBvZmZzZXQgaXMgbm90IGEgbXVsdGlwbGUgb2YKCURXQVJGX0NJRV9EQVRBX0FMSUdOTUVOVC4KCjIwMDAtMTAtMTggIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBsb29wKTogRGVsZXRlIGZpZWxkcyBwcmVfaGVhZGVyX3Jvb3QKCWFuZCBwcmVfaGVhZGVyX3RyYWNlIGFuZCByZXBsYWNlIHdpdGggcHJlX2hlYWRlcl9lZGdlcwoJYW5kIG51bV9wcmVfaGVhZGVyX2VkZ2VzLgoJKiBmbG93LmMgKGZsb3dfbG9vcF9kdW1wKTogRHVtcCBwcmVfaGVhZGVyX2VkZ2VzLgoJKGZsb3dfbG9vcHNfZnJlZSk6IEZyZWUgcHJlX2hlYWRlcl9lZGdlcy4KCShmbG93X2xvb3BfcHJlX2hlYWRlcl9zY2FuKTogQ2FsY3VsYXRlIHByZV9oZWFkZXJfZWRnZXMuCgoyMDAwLTEwLTE4ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBjb250cmliLnRleGk6IFVwZGF0ZSByZWZlcmVuY2VzIHRvIHN0ZWVyaW5nIGNvbW1pdHRlZSBtZW1iZXJzCglhbmQgSmVmZiBMYXcncyBlbnRyeS4KCjIwMDAtMTAtMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKENQTFVTUExVU19TVERfVkVSLCBDX1NURF9WRVIsIENfU1REX05BTUUpOiBEZWZpbmUuCgkobWF5YmVfcmVhZF9kb2xsYXJfbnVtYmVyLCBjaGVja19mb3JtYXRfaW5mb19tYWluKTogVXNlIHRoZW0gZm9yCglwZWRhbnRpYyB3YXJuaW5nIG1lc3NhZ2VzLgoKMjAwMC0xMC0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoY2hlY2tfZm9ybWF0X2luZm9fbWFpbik6IE1pbm9yIGNsZWFudXA6IG1vdmUKCXZhcmlhYmxlcyBpbnRvIGlubmVyIHNjb3BlczsgaW5pdGlhbGl6ZSBkZWNsYXJhdGlvbnMgd2hlcmUKCWFwcHJvcHJpYXRlOyBkb24ndCBoYXJkY29kZSAic2NhbmYiIG5hbWUgb24gd2FybmluZyBmb3IgemVybwoJd2lkdGguCgoyMDAwLTEwLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uYyAoYmFja19lbmRfaG9vayk6IE5ldyB2YXJpYWJsZS4KCSogYy1jb21tb24uaCAoYmFja19lbmRfaG9vayk6IERlY2xhcmUgaXQuCgkqIGMtbGFuZy5jIChmaW5pc2hfZmlsZSk6IFVzZSBpdC4KCgkqIGVtaXQtcnRsLmMgKGluaXRfZW1pdF9vbmNlKTogSW5pdGlhbGl6ZSB0aGUgY29uc3RfaW50X2h0YWIKCWVhcmxpZXIuCgoyMDAwLTEwLTE4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGl4ODZfY29tcGFyaXNvbl9vcGVyYXRvciwgcHV0X2NvbmRpdGlvbl9jb2RlLAoJaXg4Nl9tYXRjaF9jY21vZGUsIGl4ODZfY2NfbW9kZSk6IEhhbmRsZSBDQ1JDbW9kZS4KCShpeDg2X2V4cGFuZF9zdHJsZW5zaV91bnJvbGxfMSk6IFVzZSBDQ1JDbW9kZS4KCSogaTM4Ni5oIChFWFRSQV9DQ19NT0RFUyk6IEFkZCBDQ1JDbW9kZS4KCSogaTM4Ni5tZCAoYWRkZGkgYW5kIG5lZ2RpIHNwbGl0dGVyKTogVXNlIENDUkNtb2RlLgoJKGFkZD9pXzMsIGFkZD9pXzQsIGFkZD9pXzUpOiBVc2UgQ0NSQ21vZGU7IHN3YXAgb3BlcmFuZHMKCShzdWJzaTNfY2FycnkpOiBhZGQgJyonCgkoYWRkc2kzX2NhcnJ5X3JjLCBzdWJzaTNfY2FycnlfcmMsIHg4Nl9tb3ZzaWNjXzBfbTFfcmMpOiBOZXcuCgkoY21wIHRvIGFkZCBwZWVwMik6IFVzZSBDQ1JDbW9kZTsgc3dhcCBvcGVyYW5kcy4KCjIwMDAtMTAtMTggIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAuYzogRml4IGEgY29tbWVudCB0eXBvLgoJKHJvdW5kX2ZyYW1lX3NpemUpOiBOZXcuCgkoY29tcHV0ZV9zYXZlZF9yZWdzKTogTGlrZXdpc2UuCgkocHVzaCk6IExpa2V3aXNlLgoJKHBvcCk6IExpa2V3aXNlLgoJKHB1c2hfb3JkZXIpOiBSZW1vdmUuCgkocG9wX29yZGVyKTogTGlrZXdpc2UuCgkoZnVuY3Rpb25fcHJvbG9ndWUpOiBSZWFycmFuZ2UgY29kZSBmb3IgcmVhZGFiaWxpdHkuCgkoZnVuY3Rpb25fZXBpbG9ndWUpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IHNpZ25fZXh0ZW5kCglleHBhbmRlciB0aGF0IGlzIHVzZWQgd2hlbiBub3Qgb3B0aW1pemluZy4gIE91dHB1dCBhIHRhYiBhZnRlcgoJZWFjaCBhc3NlbWJseSBpbnNucy4KCgkqIHJlb3JnLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0xMC0xNyAgSm9lcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvLnVrPgoKCSogcmVsb2FkMS5jIChtb3ZlMmFkZF9ub3RlX3N0b3JlKTogQ2hlY2sgZm9yIHNpbXBsZQoJYXV0by1pbmMgaW4gZGVzdGluYXRpb24uCgoyMDAwLTEwLTE3ICBNaWNoYWVsIENoYXN0YWluICA8Y2hhc3RhaW5AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYtYW91dC5oOiBkZWZpbmUgSU5UX0FTTV9PUC4KClR1ZSBPY3QgMTcgMjA6MTE6MDggMjAwMCAgQWxhbiBNb2RyYSA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogcGEuYyAocHJpbnRfb3BlcmFuZCk6IEhhbmRsZSBjYXNlICdjJyBmb3IgLnZ0YWJsZV9pbmhlcml0CgpUdWUgT2N0IDE3IDIwOjA1OjUxIDIwMDAgIE1hcnRpbiBCdWNoaG9seiA8bWFydGluQHhlbWFjcy5vcmc+CgoJKiBpMzcwLm1kOiBGaXggc3BlbGxpbmcgdHlwby4KCjIwMDAtMTAtMTcgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGxvY2F0ZV9hbmRfcGFkX3Bhcm0pOiBEb24ndCBhbGlnbiBzdGFjayB1bmNvbmRpdGlvbmFsbHkuCglGaXhlcyBleGVjdXRlLzIwMDAxMDE3LTEuYyBvbiBwb3dlcnBjLWxpbnV4LWdudS4KCgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3IpOiBBcHBseSBNRU1fQUxJQVNfU0VUIHRvIE1FTXMgb25seS4KCSogcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfaGFzaF9jb25zdGFudCk6IFVzZSBYMElOVCB0byBhY2Nlc3MgYQoJTEFCRUxfUkVGLgoKCSogcnM2MDAwL3JzNjAwMC5oIChOT19ET0xMQVJfSU5fTEFCRUwsIERPTExBUlNfSU5fSURFTlRJRklFUlMsCglFTkNPREVfU0VDVElPTl9JTkZPLCBBU01fT1VUUFVUX1NQRUNJQUxfUE9PTF9FTlRSWV9QKTogTW92ZSBmcm9tCgloZXJlLi4uCgkqIHJzNjAwMC9haXguaDogLi4udG8gaGVyZS4KCSogcnM2MDAwL2xpbnV4LmggKEFTTV9BUFBfT04sIEFTTV9BUFBfT0ZGKTogRGVmaW5lIHRvIExpbnV4LXN0eWxlLgoKMjAwMC0xMC0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IFJlbG9hZCBncCBpZiBuZWVkZWQuCgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IEFsd2F5cyB1c2UgY2FsbCwgbWFrZQoJc3VyZSBsaW5rZXIgY2FuIHJlbGF4IGV2ZW4gdGhlIGRlbGF5IHNsb3QgbW92ICVnMSwlbzcsIGZpeCBvdXRwdXQKCWZvcm1hdGluZy4KCjIwMDAtMTAtMTcgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBSZW1vdmUgYW4gdW5uZWNlc3NhcnkgemVyb19leHRlbmQKCWV4cGFuZGVyIHRoYXQgaXMgdXNlZCB3aGVuIG5vdCBvcHRpbWl6aW5nLiAgT3V0cHV0IGEgdGFiIGFmdGVyCgllYWNoIGFzc2VtYmx5IGluc25zLgoKMjAwMC0xMC0xNyAgQ2hhbmRyYWthbGEgQ2hhdnZhICA8Y2NoYXZ2YUByZWRoYXQuY29tPgoKCSogZ2NjLmM6IE5ldyBvcHRpb25zIC0tdGFyZ2V0LWhlbHAuCgkocHJvY2Vzc19jb21tYW5kKTogQWRkZWQgY29kZSB0byBwYXJzZSB0aGlzIG5ldyBvcHRpb24uCgkqIHRvcGxldi5jIChkaXNwbGF5X3RhcmdldF9vcHRpb25zKTogTmV3IGZ1bmN0aW9uIHRvIHN1cHBvcnQgdGhlCglhYm92ZSBuZXcgb3B0aW9uLgoJKiBjcHBpbml0LmMgKG5ld19wZW5kaW5nX2RpcmVjdGl2ZSkgOiBOZXcgb3B0aW9uIE9QVF90YXJnZXRfX2hlbHAuCgkoY3BwX2hhbmRsZV9vcHRpb24pOiBTdXBwb3J0IHRoaXMgbmV3IG9wdGlvbi4KCSogaW52b2tlLnRleGk6IEFkZGVkIG5vdGVzIGFib3V0IC0tdGFyZ2V0LWhlbHAgb3B0aW9uLgoKMjAwMC0xMC0xNyAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAodGVzdHFpXzEpOiBBZGQgbWlzc2luZyBvcGVyYW5kIHByZWZpeAoJZm9yIG9wZXJhbmQgMC4KCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaDogQWRkIG1pc3NpbmcgcHJvdG90eXBlLgoKMjAwMC0xMC0xNyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni91bml4LmggKEFTTV9PVVRQVVRfTUlfVEhVTkspOiBTeW1ib2wKCV9HTE9CQUxfT0ZGU0VUX1RBQkxFIHNob3VsZCBub3QgaGF2ZSBhICQgcHJlZml4IHdoZW4KCXVzaW5nIC1taW50ZWwtc3ludGF4LgoKMjAwMC0xMC0xNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoRk1UX0ZMQUdfRE9MTEFSX01VTFRJUExFKTogRGVmaW5lLgoJKGZvcm1hdF90eXBlcyk6IFVzZSBpdCBmb3IgcHJpbnRmLgoJKG1heWJlX3JlYWRfZG9sbGFyX251bWJlcik6IEFkZCBwYXJhbWV0ZXIgZm9yIHRoZSBraW5kIG9mIGZvcm1hdAoJaW52b2x2ZWQuICBXYXJuIGZvciBtdWx0aXBsZSB1c2UgZm9yIGFyZ3VtZW50cyBpZiB0aGlzIGlzCglpbmFwcHJvcHJpYXRlIGZvciB0aGUga2luZCBvZiBmb3JtYXQgaW52b2x2ZWQuCgkoY2hlY2tfZm9ybWF0X2luZm9fbWFpbik6IFVwZGF0ZSBjYWxscyB0byBtYXliZV9yZWFkX2RvbGxhcl9udW1iZXIuCgoyMDAwLTEwLTE3ICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGluY2xoYWNrLmRlZiAoaHB1eF9tYXhpbnQpOiBBbHNvIGFwcGx5IGZpeCB0byB2YWx1ZXMuaC4KCSogZml4aW5jbC54OiBSZWJ1aWx0LgoKMjAwMC0xMC0xNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBnZW5yZWNvZy5jICh3cml0ZV9zd2l0Y2gpOiBSZXR1cm4gdGhlIGZpcnN0IGNvbmRpdGlvbiB0aGF0IG5lZWRzIGEKCWxhYmVsLgoKMjAwMC0xMC0xNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjLXRyZWUuaCAod2Fybl9zZXF1ZW5jZV9wb2ludCk6IE1vdmUgZGVjbGFyYXRpb24gdG8uLi4KCSogYy1jb21tb24uaCAod2Fybl9zZXF1ZW5jZV9wb2ludCk6IC4uLiBoZXJlLgoJKiBjLWRlY2wuYyAod2Fybl9zZXF1ZW5jZV9wb2ludCk6IE1vdmUgZGVmaW5pdGlvbiB0by4uLgoJKiBjLWNvbW1vbi5jICh3YXJuX3NlcXVlbmNlX3BvaW50KTogLi4uIGhlcmUuCgkoc3RydWN0IHJldmVyc2VfdHJlZSk6IE5ldy4KCShyZXZlcnNlX2xpc3QsIHJldmVyc2VfbWF4X2RlcHRoKTogTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkoYnVpbGRfcmV2ZXJzZV90cmVlLCBjb21tb25fYW5jZXN0b3IsIG1vZGlmeV9vawoJdmVyaWZ5X3NlcXVlbmNlX3BvaW50cyk6IE5ldyBmdW5jdGlvbnMuCgkoY19leHBhbmRfZXhwcl9zdG10KTogQ2FsbCB2ZXJpZnlfc2VxdWVuY2VfcG9pbnRzIGlmIC1Xc2VxdWVuY2UtcG9pbnQuCgkqIGMtdHlwZWNrLmMgKGNoZWNrX21vZGlmeV9leHByKTogRGVsZXRlLgoJKGJ1aWxkX21vZGlmeV9leHByKTogRG9uJ3QgY2FsbCBpdC4KCjIwMDAtMTAtMTcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmggKHdhcm5fbWlzc2luZ19mb3JtYXRfYXR0cmlidXRlKTogTmV3IHZhcmlhYmxlLgoJKiBjLWRlY2wuYyAod2Fybl9taXNzaW5nX2Zvcm1hdF9hdHRyaWJ1dGUpOiBOZXcgdmFyaWFibGUuCgkoY19kZWNvZGVfb3B0aW9uKTogRGVjb2RlIC1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIGFuZAoJLVduby1taXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUuCgkqIGMtY29tbW9uLmMgKGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdCk6IElmCgktV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSwgZ2l2ZSBhIHdhcm5pbmcgd2hlcmUgYSB2cHJpbnRmIG9yCgl2c2NhbmYgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGEgZnVuY3Rpb24gd2l0aG91dCBpdHMgb3duIHByaW50ZiBvcgoJc2NhbmYgYXR0cmlidXRlLgoJKiB0b3BsZXYuYyAoZG9jdW1lbnRlZF9sYW5nX29wdGlvbnMpOiBBZGQKCS1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlLgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUuCgoyMDAwLTEwLTE3ICBNYXJjIEVzcGllIDxlc3BpZUBvcGVuYnNkLm9yZz4KCgkqIGludm9rZS50ZXhpICgtc2hhcmVkKTogSW5zaXN0IG9uIHJlcXVpcmluZyBjb2RlIGdlbmVyYXRpb24gZmxhZ3MKCXRvIGJlIHVzZWQgYWxvbmcgd2l0aCAtc2hhcmVkLCBhbmQgZG9jdW1lbnQgdGhlIHN1YnRsZSBmYWlsdXJlIHRoYXQKCW1heSBvY2N1ciBvdGhlcndpc2UuCgoyMDAwLTEwLTE2ICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHBhLm1kIChyZXR1cm5faW50ZXJuYWwpOiBNb3ZlIGB1c2UnIGFmdGVyIGByZXR1cm4nLgoKMjAwMC0xMC0xNiBUaGVvZG9yZSBQYXBhZG9wb3VsbyA8VGhlb2RvcmUuUGFwYWRvcG91bG9Ac29waGlhLmlucmlhLmZyPgoKCSogbWFjaG1vZGUuZGVmOiBDb3JyZWN0IGNvbW1lbnQuCgoyMDAwLTEwLTE2ICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHhfaGVhZCk6IENvbnN0aWZ5LgoJKiBydGwuaCAocHJpbnRfcnR4X2hlYWQpOiBTaW1pbGFybHkuCgoJKiBjb25maWcvcGEvcGEvcGEtcHJvdG9zLmggKG91dHB1dF82NGJpdF9hbmQsIG91dHB1dF82NGJpdF9pb3IpOgoJQ29uc3RpZnkgY2hhciAqIHJldHVybiB2YWx1ZS4KCSogY29uZmlnL3BhL3BhL3BhLmMKCShvdXRwdXRfNjRiaXRfYW5kLCBvdXRwdXRfNjRiaXRfaW9yKTogQ29uc3RpZnkgY2hhciAqIHJldHVybiB2YWx1ZS4KCShwYV9jYW5fY29tYmluZV9wKTogTWFrZSBzdGF0aWMuCgkoZnVuY3Rpb25fYXJnKTogRGVjb3JhdGUgdW51c2VkIGBuYW1lZCcgYXJndW1lbnQuIEZpeCBjb21tZW50IHR5cG8uCgkoZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MpOiBEZWNvcmF0ZSB1bnVzZWQgYG5hbWVkJyBhcmd1bWVudC4KCjIwMDAtMTAtMTYgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGZvcm1hdF9jaGVja19yZXN1bHRzKTogTmV3IHN0cnVjdHVyZS4KCShmaW5pc2hfZG9sbGFyX2Zvcm1hdF9jaGVja2luZyk6IEFkanVzdCB0byB0YWtlIGEKCWZvcm1hdF9jaGVja19yZXN1bHRzICogcGFyYW1ldGVyLgoJKGNoZWNrX2Zvcm1hdF9pbmZvLCBjaGVja19mb3JtYXRfaW5mb19yZWN1cnNlLAoJY2hlY2tfZm9ybWF0X2luZm9fbWFpbik6IFNwbGl0IGNoZWNrX2Zvcm1hdF9pbmZvIGludG8gdGhyZWUKCWZ1bmN0aW9ucywgdGhlIG1haW4gY2hlY2tpbmcgZ29pbmcgaW4gY2hlY2tfZm9ybWF0X2luZm9fbWFpbi4KCVJlY3Vyc2Ugd2hlbiBhbnkgcmVkdWN0aW9uIG9mIHRoZSBmb3JtYXQgc3RyaW5nIGFyZ3VtZW50IHRvd2FyZHMgYQoJc3RyaW5nIGxpdGVyYWwgaXMgZG9uZTsgZ28gZG93biBib3RoIGJyYW5jaGVzIG9mIGEgY29uZGl0aW9uYWwKCWV4cHJlc3Npb24uICBEb24ndCB3YXJuIGZvciBleHRyYSBmb3JtYXQgYXJndW1lbnRzIG9yIGVtcHR5IGZvcm1hdAoJc3RyaW5ncyBpZiB0aGV5IG9ubHkgb2NjdXIgaW4gc29tZSBicmFuY2hlcyBvZiBhIGNvbmRpdGlvbmFsCglleHByZXNzaW9uLgoKMjAwMC0xMC0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYzogUmVtb3ZlIG9ic3RhY2suICBJbmNsdWRlIGdnYy5oLgoKMjAwMC0xMC0xNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBydGxhbmFsLmMgKG1heV90cmFwX3ApOiBDaGVjayBvcGVyYW5kIG1vZGVzIG9mIENPTVBBUkUuCgoyMDAwLTEwLTE1ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AY3lnbnVzLmNvbT4KCgkqIGkzODYubWQgKCptb3ZzaV9vcik6IFN3aXRjaCBvcGVyYW5kIG9yZGVyIGZvciBpbnRlbCBzeW50YXguCgoyMDAwLTEwLTE0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBQUk9CTEVNUzogUmVtb3ZlLgoKCSogZ2NjLnRleGkgKENvbnRyaWJ1dGluZyk6IFVwZGF0ZS4KCjIwMDAtMTAtMTMgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0BjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvdW5peC5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogT3V0cHV0IGZpbmFsIGp1bXAgdXNpbmcKCWFwcHJvcHJpYXRlIGFzc2VtYmxlciBkaWFsZWN0LgoKMjAwMC0xMC0xMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jIChjX2V4cGFuZF9idWlsdGluKTogUEFSQU1TLWl6ZSBwcm90b3R5cGUuCgoyMDAwLTEwLTEyICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dHB1dF9tb3ZoaSwgb3V0cHV0X21vdnNpc2YpOiBGaXggbG9hZGluZwoJY29uc3RhbnRzIDEgYW5kIDIgdG8gTk9fTERfUkVHUy4KCjIwMDAtMTAtMTMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChjLXBhcnNlLmMsIHRyYWRjaWYuYyk6IENyZWF0ZSBhdG9taWNhbGx5LgoKCSogb2JqYy9NYWtlLWxhbmcuaW4gKG9iamMtcGFyc2UuYyk6IExpa2V3aXNlLgoKMjAwMC0xMC0xMyAgUmljaGFyZCBFYXJuc2hhdyA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jOiBJbmNsdWRlIG9ic3RhY2suaAoJKG1pbmlwb29sX29ic3RhY2ssIG1pbmlwb29sX3N0YXJ0b2JqKTogRGVmaW5lLgoJKGFybV9hZGRfZ2Nfcm9vdHMpOiBJbml0aWFsaXplIHRoZW0uCgkoY3JlYXRlX2ZpeF9iYXJyaWVyKTogVXNlIG91ciBuZXcgb2JzdGFjay4KCShwdXNoX21pbmlwb29sX2JhcnJpZXIsIHB1c2hfbWluaXBvb2xfZml4KTogTGlrZXdpc2UuCgkoYXJtX3Jlb3JnKTogUmVsZWFzZSBvYnN0YWNrIG1lbW9yeS4KCjIwMDAtMTAtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChub25sb2NhbF9nb3RvX3JlY2VpdmVyKTogUmVtb3ZlLgoJKHByb2xvZ3VlLCBleGNlcHRpb25fcmVjZWl2ZXIsIGJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogTmV3CglwYXR0ZXJucy4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKEZJTkFMSVpFX1BJQyk6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLXByb3Rvcy5oIChmaW5hbGl6ZV9waWMpOiBSZW1vdmUuCgkobG9hZF9waWNfcmVnaXN0ZXIpOiBOZXcgcHJvdG90eXBlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAocGljX3NldHVwX2NvZGUpOiBSZW1vdmUuCgkoZmluYWxpemVfcGljKTogUmVuYW1lIHRvLi4uCgkobG9hZF9waWNfcmVnaXN0ZXIpOiAuLi50aGlzIGZ1bmN0aW9uLgoJRG9uJ3QgbG9vayBmb3Igbm9ubG9jYWxfZ290b19yZWNlaXZlcnMgYW5kIGVtaXQgcGljIHNldHVwIGNvZGUKCWRpcmVjdGx5LiAgRG9uJ3QgY2hlY2sgY3VycmVudF9mdW5jdGlvbl91c2VzX3BpY19vZmZzZXRfdGFibGUuCgoyMDAwLTEwLTEzICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogdHJlZS5oIChzdHJ1Y3Qgb2JzdGFjayk6IERlY2xhcmUuCgoyMDAwLTEwLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVJlbW92ZSBvYnN0YWNrcy4KCSogTWFrZWZpbGUuaW4gKGdnYy1jYWxsYmFja3Mubyk6IFJlbW92ZSB0YXJnZXQuCgkoZmxvdy5vKTogRGVwZW5kIG9uIEdHQ19ILgoJKiBhbGlhcy5jIChpbml0X2FsaWFzX2FuYWx5c2lzKToKCVJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuCgkoZW5kX2FsaWFzX2FuYWx5c2lzKTogTGlrZXdpc2UuCgkqIGJhc2ljLWJsb2NrLmggKGluaXRfZmxvdyk6IE5ldyBmdW5jdGlvbi4KCShhbGxvY2F0ZV9yZWdfbGlmZV9kYXRhKTogRGVjbGFyZS4KCSogYmItcmVvcmRlci5jCShmdW5jdGlvbl9vYnN0YWNrKTogUmVwbGFjZSB3aXRoIC4uLgoJKGZsb3dfb2JzdGFjayk6IC4uLiBuZXcgdmFyaWFibGUuCgkoZml4dXBfcmVvcmRlcl9jaGFpbik6IFVzZSBpdC4KCSogYy1kZWNsLmMgKGdnY19wKTogUmVtb3ZlLgoJKGNhbGxlci1zYXZlLmMpOiBEb24ndCBjYWxsIG9iYWxsb2Mvb2JmcmVlLgoJKiBjb21iaW5lLmMgKHN0cnVjdAoJdW5kb2J1Zik6IFJlbW92ZSBzdG9yYWdlLgoJKHRyeV9jb21iaW5lKTogRG9uJ3QgY2FsbCBvYmFsbG9jLgoJKHVuZG9fYWxsKTogRG9uJ3QgY2FsbCBvYmZyZWUuCgkqIGNzZS5jIChpbnNlcnQpOiBVc2UgeG1hbGxvYywgbm90CglvYmFsbG9jLgoJKGNzZV9tYWluKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKiBkd2FyZjJvdXQuYyAoc2F2ZV9ydHgpOiBSZW1vdmUKCW9ic3RhY2sgY29kZS4KCShkd2FyZjJvdXRfaW5pdCk6IFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuCgkqIGVtaXQtcnRsLmMgKHJ0bF9vYnN0YWNrKTogUmVtb3ZlLgoJKGdlbl9ydHhfQ09OU1RfSU5UKTogUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4KCShtYWtlX2luc25fcmF3KTogTGlrZXdpc2UuCgkoZW1pdF9pbnNuX2JlZm9yZSk6IExpa2V3aXNlLgoJKGVtaXRfaW5zbl9hZnRlcik6IExpa2V3aXNlLgoJKGVtaXRfaW5zbik6IExpa2V3aXNlLgoJKGdlbl9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKGNvcHlfaW5zbl8xKTogUmVtb3ZlIGhhbmRsaW5nIG9mIGBiJyBSVEwgY29tcG9uZW50cy4KCShpbml0X2VtaXRfb25jZSk6IFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuCgkqIGV4Y2VwdC5jIChjcmVhdGVfcmV0aHJvd19yZWYpOiBEb24ndCBmb29sIHdpdGggb2JzdGFja3MuCgkoYWRkX3BhcnRpYWxfZW50cnkpOiBMaWtld2lzZS4KCShjYWxsX2dldF9laF9jb250ZXh0KTogTGlrZXdpc2UuCgkoYmVnaW5fcHJvdGVjdF9wYXJ0aWFscyk6IExpa2V3aXNlLgoJKHByb3RlY3Rfd2l0aF90ZXJtaW5hdGUpOiBMaWtld2lzZS4KCSogZXhwbG93LmMKCShwbHVzX2NvbnN0YW50X3dpZGUpOiBMaWtld2lzZS4KCSogZXhwci5jIChpbml0X2V4cHJfb25jZSk6CglMaWtld2lzZS4KCShlbWl0X2Jsb2NrX21vdmUpOiBMaWtld2lzZS4KCShjbGVhcl9zdG9yYWdlKTogTGlrZXdpc2UuCgkoZXhwYW5kX2V4cHIpOiBMaWtld2lzZS4KCSogZmxvdy5jIChmdW5jdGlvbl9vYnN0YWNrKTogUmVtb3ZlLgoJKGZsb3dfb2JzdGFjayk6IE5ldyB2YXJpYWJsZS4KCShmbG93X2ZpcnN0b2JqKTogTGlrZXdpc2UuCgkoY3JlYXRlX2Jhc2VfYmxvY2spOiBVc2UgdGhlIGZsb3dfb2JzdGFjay4KCShzcGxpdF9ibG9jayk6IExpa2V3aXNlLgoJKHNwbGl0X2VkZ2UpOiBMaWtld2lzZS4KCShjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IExpa2V3aXNlLgoJKGFsbG9jYXRlX2JiX2xpZmVfZGF0YSk6IE1ha2UgaXQgc3RhdGljLiAgTGlrZXdpd3NlLgoJKGluaXRfZmxvdyk6IE5ldyBmdW5jdGlvbi4KCShzaXplX2ludF90eXBlX3dpZGUpOiBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLgoJKiBmdW5jdGlvbi5jCgkocHVzaF9mdW5jdGlvbl9jb250ZXh0X3RvKTogRG9uJ3QgY2FsbCBzYXZlX3RyZWVfc3RhdHVzLgoJKHBvcF9mdW5jdGlvbl9jb250ZXh0X2Zyb20pOiBPciByZXN0b3JlX3RyZWVfc3RhdHVzLgoJKGFzc2lnbl9zdGFja19sb2NhbF8xKTogRG9uJ3QgY2FsbCBwdXNoX29ic3RhY2tzLgoJKGZpbmRfZml4dXBfcmVwbGFjZW1lbnQpOiBVc2UgeG1hbGxvYy4KCShmaXh1cF92YXJfcmVmc19pbnNucyk6IEZyZWUgdGhlIHN0b3JhZ2UuCgkoaW5zbnNfZm9yX21lbV93YWxrKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKGluc3RhbnRpYXRlX2RlY2xzKTogTGlrZXdpc2UuCgkodHJhbXBvbGluZV9hZGRyZXNzKTogTGlrZXdpc2UuCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5oIChzdHVyY3QgZnVuY3Rpb24pOgoJUmVtb3ZlIG9ic3RhY2stcmVsYXRlZCB2YXJpYWJsZXMuCgkoc2F2ZV90cmVlX3N0YXR1cyk6IERvbid0IGRlY2xhcmUuCgkocmVzdG9yZV90cmVlX3N0YXR1cyk6IExpa2V3aXNlLgoJKiBnY3NlLmMgKGNvbXB1dGVfY2FuX2NvcHkpOgoJRG9uJ3QgY2FsbCBvYmFsbG9jL29iZnJlZS4KCSogZ2VuYXR0cnRhYi5jIChvcGVyYXRlX2V4cCk6IFJlbW92ZQoJZ2djX3AgY29uZGl0aW9uYWxzLgoJKHNpbXBsaWZ5X2NvbmQpOiBMaWtld2lzZS4KCShzaW1wbGlmeV90ZXN0X2V4cCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShvcHRpbWl6ZV9hdHRycyk6IExpa2V3aXNlLgoJKiBnZW5nZW5ydGwuYyAoZ2VuZGVmKTogRG9uJ3QgaW5jbHVkZQoJZ2djX3AgY29uZGl0aW9uYWxzLgoJKiBnZ2MtY2FsbGJhY2tzLmMgKGdnY19wKTogUmVtb3ZlLgoJKiBnZ2Mtbm9uZS5jIChnZ2NfcCk6IFJlbW92ZS4KCSogZ2djLmggKGdnY19wKTogRG9uJ3QgZGVjbGFyZS4KCSogaW50ZWdyYXRlLmMgKHNhdmVfZm9yX2lubGluZSk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShpbnRlZ3JhdGVfZGVjbF90cmVlKTogTGlrZXdpc2UuCgkob3V0cHV0X2lubGluZV9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBsaXN0cy5jCgkoaW5pdF9FWFBSX0lOU05fTElTVF9jYWNoZSk6IExpa2V3aXNlLgoJKiBsb29wLmMgKHRlbXBfb2JzdGFjayk6CglSZW1vdmUuCgkocnRsX29ic3RhY2spOiBMaWtld2lzZS4KCShpbml0X2xvb3ApOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkocmVnX2FkZHJlc3NfY29zdCk6IEZyZWUgQklWcyBhbmQgR0lWcy4KCShjaGVja19pbnNuc19mb3JfYml2cyk6IFVzZSB4bWFsbG9jLCBub3Qgb2JhbGxvYy4KCShmaW5kX21lbV9naXZzKTogTGlrZXdpc2UuCgkocmVjb3JkX2Jpdik6IExpa2V3aXNlLgoJKGdlbmVyYWxfaW5kdWN0aW9uX3Zhcik6IExpa2V3aXNlLgoJKHByb2R1Y3RfY2hlYXBfcCk6IExpa2V3c2UuCgkqIG9wdGFicy5jIChpbml0X29uZV9saWJmdW5jKTogUmVtb3ZlCglnZ2NfcCBjb25kaXRpb25hbC4KCSogcHJpbnQtdHJlZS5jIChkZWJ1Z190cmVlKTogRG9uJ3QgdXNlCglvYmFsbG9jL29iZnJlZS4KCShwcmludF9ub2RlKTogTGlrZXdpc2UuCgkqIHByb2ZpbGUuYyAob3V0cHV0X2Z1bmNfc3RhcnRfcHJvZmlsZXIpOgoJUmVtb3ZlIGNhbGwgdG8gdGVtcG9yYXJ5X2FsbG9jYXRpb24uCgkqIHJlbG9hZDEuYwoJKGVsaW1pbmF0ZV9yZWdzX2luX2luc24pOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkqIHJlc291cmNlLmMKCShtYXJrX3RhcmdldF9saXZlX3JlZ3MpOiBVc2UgeG1hbGxvYy4KCShmcmVlX3Jlc291cmNlX2luZm8pOiBGcmVlIHRoZSBtZW1vcnkuCgkqIHJ0bC5jIChydGxfb2JzdGFjayk6CglSZW1vdmUuCgkocnR2ZWNfYWxsb2MpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkocnR4X2FsbG9jKTogTGlrZXdpc2UuCgkocnR4X2ZyZWUpOiBSZW1vdmUuCgkoY29weV9ydHgpOiBEb24ndCBoYW5kbGUgYGInIGNhc2VzLgoJKHJlYWRfcnR4KTogVXNlIGEgbG9jYWwgcnRsX29ic3RhY2suCgkqIHJ0bC5oIChvYmFsbG9jKTogUmVtb3ZlLgoJKG9iZnJlZSk6IExpa2V3aXNlLgoJKHBvcF9vYnN0YWNrcyk6IExpa2V3aXNlLgoJKHB1c2hfb2JzdGFja3MpOiBMaWtld2lzZS4KCShhbGxvY2F0ZV9iYl9saWZlX2RhdGEpOiBMaWtld2lzZS4KCShhbGxvY2F0ZV9yZWdfbGlmZV9kYXRhKTogTGlrZXdpc2UuCgkocnR4X2ZyZWUpOiBMaWtld2lzZS4KCSogc2Rib3V0LmMgKHNkYm91dF9xdWV1ZV9hbm9ueW1vdXNfdHlwZSk6CglVc2UgdHJlZV9jb25zLCBub3Qgc2F2ZWFibGVfdHJlZV9jb25zLgoJKiBzaW1wbGlmeS1ydHguYwoJKGNzZWxpYl9pbml0KTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKiBzdG10LmMKCShtYXJrX2Jsb2NrX25lc3RpbmcpOiBNYXJrIHRoZSBsYWJlbF9jaGFpbi4KCShlcHhhbmRfbGFiZWwpOiBVc2UgZ2djX2FsbG9jLCBub3Qgb2JhbGxvYy4KCShjbGVhcl9sYXN0X2V4cHIpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkoZXhwYW5kX2RlY2xfY2xlYW51cCk6IExpa2V3aXNlLgoJKGV4cGFuZF9kY2NfY2xlYW51cCk6IExpa2V3aXNlLgoJKGV4cGFuZF9kaGNfY2xlYW51cCk6IExpa2V3aXNlLgoJKGV4cGFuZF9hbm9uX3VuaW9uX2RlY2wpOiBMaWtld2lzZS4KCShhZGRfY2FzZV9ub2RlKTogVXNlIHhtYWxsb2MsIG5vdCBvYmFsbG9jLgoJKGZyZWVfY2FzZV9ub2Rlcyk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfZW5kX2Nhc2UpOiBDYWxsIGl0LgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSk6IERvbid0CgltZXNzIHdpdGggb2JzdGFja3MuCgkobGF5b3V0X3R5cGUpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKHdyYXB1cF9nbG9iYWxfZGVjbGFyYXRpb25zKToKCUxpa2V3aXNlLgoJKGNvbXBpbGVfZmlsZSk6IFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgaW5pdF9mbG93LiAgUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4KCShkZWNvZGVfZl9vcHRpb24pOiBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLgoJKiB0cmVlLmMKCShmdW5jdGlvbl9tYXliZXBlcm1hbmVudF9vYnN0YWNrKTogUmVtb3ZlLgoJKG1heWJlcGVybWFuZW50X29ic3RhY2spOiBMaWtld2lzZS4KCShmdW5jdGlvbl9vYnN0YWNrKTogTGlrZXdpc2UuCgkodG1lcG9yYXJ5X29ic3RhY2spOiBMaWtld2lzZS4KCShtb21lbnRhcnlfb2JzdGFjayk6IExpa2V3aXNlLgoJKHRlbXBfZGVjbF9vYnN0YWNrKTogTGlrZXdpc2UuCgkoc2F2ZWFibGVfb2JzdGFjayk6IExpa2V3aXNlLgoJKHJ0bF9vYnN0YWNrKTogTGlrZXdpc2UuCgkoY3VycmVudF9vYnN0YWNrKTogTGlrZXdpc2UuCgkoZXhwcmVzc2lvbl9vYnN0YWNrKTogTGlrZXdpc2UuCgkoc3RydWN0IG9ic3RhY2tfc3RhY2spOiBMaWtld2lzZS4KCShvYnN0YWNrX3N0YWNrKTogTGlrZXdpc2UuCgkob2JzdGFja19zdGFja19vYnN0YWNrKTogTGlrZXdpc2UuCgkobWF5YmVwZXJtYW5lbnRfZmlyc3RvYmopOiBMaWtld2lzZS4KCSh0ZW1wb3JhcnlfZmlyc3RvYmopOiBMaWtld2lzZS4KCShtb21lbnRhcnlfZmlyc3RvYmopOiBMaWtld2lzZS4KCSh0ZW1wX2RlY2xfZmlyc3RvYmopOiBMaWtld2lzZS4KCShtb21lbnRhcnlfZnVuY3Rpb25fZmlyc3RvYmopOiBMaWtld2lzZS4KCShhbGxfdHlwZXNfcGVybWFuZW50KTogTGlrZXdpc2UuCgkoc3RydWN0IG1vbWVudGFyeV9sZXZlbCk6IExpa2V3aXNlLgoJKG1vbWVudGFyeV9zdGFjayk6IExpa2V3aXNlLgoJKGluaXRfb2JzdGFja3MpOiBSZW1vdmUgaW5pdGlhbGl6YXRpb24gb2YgcmVtb3ZlZCBvYnN0YWNrcy4KCShzYXZlX3RyZWVfc3RhdHVzKTogUmVtb3ZlLgoJKHJlc3RvcmVfdHJlZV9zdGF0dXMpOiBMaWtld2lzZS4KCSh0ZW1wb3JhcnlfYWxsb2NhdGlvbik6IExpZWt3aXNlLgoJKGVuZF90ZW1wb3JhcnlfYWxsb2NhdGlvbik6IExpZWt3aXNlLgoJKHJlc3VtZV90ZW1wb3JhcnlfYWxsb2NhdGlvbik6IExpa2V3aXNlLgoJKHNhdmVhYmxlX2FsbG9jYXRpb24pOiBMaWtld2lzZS4KCShwdXNoX29ic3RhY2tzKTogTGlrZXdpc2UuCgkocHVzaF9vYnN0YWNrc19ub2NoYW5nZSk6IExpa2V3aXNlLgoJKHBvcF9vYnN0YWNrcyk6IExpa2V3aXNlLgoJKGFsbG9jYXRpb25fdGVtcG9yYXJ5X3ApOiBMaWtld2lzZS4KCShwZXJtYW5lbnRfYWxsb2NhdGlvbik6IExpa2V3aXNlLgoJKHByZXNlcnZlX2RhdGEpOiBMaWtld2lzZS4KCShwcmVzZXJ2ZV9pbml0aWFsaXplcik6IExpa2V3aXNlLgoJKHJ0bF9pbl9jdXJyZW50X29ic3RhY2spOiBMaWtld2lzZS4KCShydGxfaW5fc2F2ZWFibGVfb2JzdGFjayk6IExpa2V3aXNlLgoJKG9iYWxsb2MpOiBMaWtld2lzZS4KCShvYmZyZWUpOiBMaWtld2lzZS4KCShzYXZlYWxsb2MpOiBMaWtld2lzZS4KCShleHByYWxsb2MpOiBMaWtld2lzZS4KCShwcmludF9vYnN0YWNrX25hbWUpOiBMaWtld2lzZS4KCShkZWJ1Z19vYnN0YWNrKTogTGlrZXdpc2UuCgkob2JqZWN0X3Blcm1hbmVudF9wKTogTGlrZXdpc2UuCgkocHVzaF9tb21lbnRhcnkpOiBMaWtld2lzZS4KCShwZXJzZXJ2ZV9tb21lbnRhcnkpOiBMaWtld2lzZS4KCShjbGVhcl9tb21lbnRhcnkpOiBMaWtld2lzZS4KCShwb3BfbW9tZW50YXJ5KTogTGlrZXdpc2UuCgkocG9wX21vbWVudGFyeV9ub2ZyZWUpOiBMaWtld2lzZS4KCShzdXNwZW5kX21vbWVudGFyeSk6IExpa2V3aXNlLgoJKHJlc3VtZV9tb21lbnRhcnkpOiBMaWtld2lzZS4KCShtYWtlX25vZGUpOiBEb24ndCBzZXQgVFJFRV9QRVJNQU5FTlQuCgkoY29weV9ub2RlKTogUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4gIERvbid0IHNldCBUWVBFX09CU1RBQ0suCglEb24ndCBzZXQgVFJFRV9QRVJNQU5FTlQuCgkoZ2V0X2lkZW50aWZpZXIpOiBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLgoJKGJ1aWxkX3N0cmluZyk6IExpa2V3aXNlLgoJKG1ha2VfdHJlZV92ZWMpOiBMaWtld2lzZS4KCShidWlsZF9kZWNsX2xpc3QpOiBSZW1vdmUuCgkoYnVpbGRfZXhwcl9saXN0KTogTGlrZXdpc2UuCgkodHJlZV9jb25zKTogUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4KCShkZWNsX3RyZWVfY29ucyk6IFJlbW92ZS4KCShleHByX3RyZWVfY29ucyk6IExpa2V3aXNlLgoJKHBlcm1fdHJlZV9jb25zKTogTGlrZXdpc2UuCgkodGVtcF90cmVlX2NvbnMpOiBMaWtld2lzZS4KCShzYXZlYWJsZV90cmVlX2NvbnMpOiBMaWtld2lzZS4KCShidWlsZDEpOiBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLgoJKGJ1aWxkX3BhcnNlX25vZGUpOiBMaWtld2lzZS4KCShidWlsZF90eXBlX2F0dHJpYnV0ZV92YXJpYW50KTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKGJ1aWxkX3R5cGVfY29weSk6IExpa2V3aXNlLgoJKHR5cGVfaGFzaF9jYW5vbik6IExpa2V3aXNlLgoJKGJ1aWxkX3BvaW50ZXJfdHlwZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3JlZmVyZW5jZV90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfaW5kZXhfdHlwZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3JhbmdlX3R5cGUpOiBMaWtld2lzZS4KCShkdW1wX3RyZWVfc3RhdGlzdGljcyk6IERvbid0IHByaW50IG9ic3RhY2sgaW5mb3JtYXRpb24uCgkqIHRyZWUuaAoJKHN0cnVjdCB0cmVlX2NvbW1vbik6IFJlbW92ZSBwZXJtYW5lbnRfZmxhZy4KCShUUkVFX1BFUk1BTkVOVCk6IFJlbW92ZS4KCShUUkVFX1NFVF9QRVJNQU5FTlQpOiBMaWtld2lzZS4KCShUWVBFX09CU1RBQ0spOiBMaWtld2lzZS4KCShzdHJ1Y3QgdHJlZV90eXBlKTogUmVtb3ZlIG9ic3RhY2suCgkob2JhbGxvYyk6IFJlbW92ZS4KCShzYXZlYWxsb2MpOiBMaWtld2lzZS4KCShidWlsZF9kZWNsX2xpc3QpOiBMaWtld2lzZS4KCShidWlsZF9leHByX2xpc3QpOiBMaWtld2lzZS4KCShwZXJtX3RyZWVfY29ucyk6IExpa2V3aXNlLgoJKHRlbXBfdHJlZV9jb25zKTogTGlrZXdpc2UuCgkoc2F2ZWFibGVfdHJlZV9jb25zKTogTGlrZXdpc2UuCgkoZGVjbF90cmVlX2NvbnMpOiBMaWtld2lzZS4KCShleHByX3RyZWVfY29ucyk6IExpa2V3aXNlLgoJKHN1c3BlbmRfbW9tZW50YXJ5KTogTGlrZXdpc2UuCgkoYWxsb2NhdGlvbl90ZW1wb3JhcnlfcCk6IExpa2V3aXNlLgoJKHJlc3VtZV9tb21lbnRhcnkpOiBMaWtld2lzZS4KCShwdXNoX29ic3RhY2tzX25vY2hhbmdlKTogTGlrZXdpc2UuCgkocGVybWFuZW50X2FsbG9jYXRpb24pOiBMaWtld2lzZS4KCShwdXNoX21vbWVudGFyeSk6IExpa2V3aXNlLgoJKGNsZWFyX21vbWVudGFyeSk6IExpa2V3aXNlLgoJKHBvcF9tb21lbnRhcnkpOiBMaWtld2lzZS4KCShlbmRfdGVtcG9yYXJ5X2FsbG9jYXRpb24pOiBMaWtld2lzZS4KCShwb3Bfb2JzdGFja3MpOiBMaWtld2lzZS4KCShwdXNoX29ic3RhY2tzKTogTGlrZXdpc2UuCgkocG9wX21vbWVudGFyeV9ub2ZyZWUpOiBMSWtld2lzZS4KCShwcmVzZXJ2ZV9tb21lbnRhcnkpOiBMaWtld2lzZS4KCShzYXZlYWJsZV9hbGxvY2F0aW9uKTogTGlrZXdpc2UuCgkodGVtcG9yYXJ5X2FsbG9jYXRpb24pOiBMaWtld2lzZS4KCShyZXN1bWVfdGVtcG9yYXJ5X2FsbG9jYXRpb24pOiBMaWtld2lzZS4KCShwZXJzZXJ2ZV9pbml0aWFsaXplcik6IExpa2V3aXNlLgoJKGRlYnVnX29ic3RhY2spOiBMaWtld2lzZS4KCShydGxfaW5fY3VycmVudF9vYnN0YWNrKTogTGlrZXdpc2UuCgkocnRsX2luX3NhdmVhYmxlX29ic3RhY2spOiBMaWtld2lzZS4KCShvYmZyZWUpOiBMaWtld2lzZS4KCSogdmFyYXNtLmMgKGN1cnJlbnRfb2JzdGFjayk6IFJlbW92ZS4KCShzYXZlYWJsZV9vYnN0YWNrKTogUmVtb3ZlLgoJKHJ0bF9vYnN0YWNrKTogUmVtb3ZlLgoJKGltbWVkX2RvdWJsZV9jb25zdCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShpbW1lZF9yZWFsX2NvbnMpOiBMaWtld2lzZS4KCShvdXRwdXRfY29uc3RhbnRfZGVmKTogTGlrZXdpc2UuCgkoaW5pdF92YXJhc21fc3RhdHVzKTogVXNlIHhjYWxsb2MuCgkobWFya19wb29sX2NvbnN0YW50KTogTWFyayB0aGUgcG9vbCBjb25zdGFudCBpdHNlbGYuCgkoZnJlZV92YXJhc21fc3RhdHVzKTogRnJlZSBtZW1vcnkuCgkoZGVjb2RlX3J0eF9jb25zdCk6IENhbGwgYnplcm8gZGlyZWN0bHksIHJhdGhlciB0aGFuIGV4cGFuZGluZyBpdAoJaW5saW5lLgoJKHJlY29yZF9ydHhfY29uc3QpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkoZm9yY2VfY29uc3RfbWVtKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9lbmNvZGVfY2FsbF9hdHRyaWJ1dGUpOiBSZW1vdmUgZ2djX3AKCWNvbmRpdGlvbmFscy4KCShhb2ZfcGljX2VudHJ5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAobTMycl9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5jIChzYXZlYWJsZV9vYnN0YWNrKTogUmVtb3ZlLgoJKHJ0bF9vYnN0YWNrKTogTGlrZXdpc2UuCgkoY3VycmVudF9vYnN0YWNrKTogTGlrZXdpc2UuCgkob3V0cHV0X2NhbGwpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkoaHBwYV9lbmNvZGVfbGFiZWwpOiBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLgoJKiBjb25maWcvcm9tcC9yb21wLmMgKGdldF9zeW1yZWYpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG91dHB1dF90b2MpOiBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWwuCgkocnM2MDAwX2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmMgKGdldF9mcHNjcl9ydHgpOiBMaWtld2lzZS4KClRodSBPY3QgMTIgMTY6MDI6MzEgTUVUIERTVCAyMDAwIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGFkZGRpMywgc3ViZGkzIHNwbGl0dGVycyk6IFVwZGF0ZSBmb3IgbmV3IHBhdHRlcm4uCgkoYWRkc2kzX2NjLCBhZGRxaTNfY2MsIHN1YnNpM19jYyk6IFJlbW92ZQoJKGFkZHNpM19jYXJyeSk6IENhbm9uaWNhbGl6ZS4KCShhZGRxaV81KTogUmVtb3ZlICcqJy4KCShzYmIgcGF0dGVybik6IENhbm9uaWNhbGl6ZS4KCgkqIGkzODYubWQgKGNtcCB0byBpbmMvYWRkIHBlZXAyKTogTmV3LgoKMjAwMC0xMC0xMiAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogQWxsb2NhdGUgYW4gYXV4IGJsb2NrIGZvcgoJdGhlIGV4aXQgYmxvY2suCgoyMDAwLTEwLTEyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY2MudGV4aTogTWVyZ2UgaW4gY29udGVudHMgb2YgUkVBRE1FLlRSQUQgYW5kIFRFU1RTLkZMVU5LLgoJKiBSRUFETUUuVFJBRCwgVEVTVFMuRkxVTks6IFJlbW92ZS4KCjIwMDAtMTAtMTIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGRlY2xfYXR0cmlidXRlcyk6IERvbid0IGFsbG93IHN0cmZ0aW1lIGZvcm1hdHMgd2l0aAoJZmlyc3RfYXJnX251bSBub256ZXJvLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogU2V0IHdhbnRlZF90eXBlIGFuZCB3YW50ZWRfdHlwZV9uYW1lIHRvIHplcm8KCWJlZm9yZSB0aGV5IGFyZSBwb3NzaWJseSBhc3NpZ25lZCBhbmQgdXNlZC4KCjIwMDAtMTAtMTIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKHNjYW5mX2ZsYWdfc3BlY3MpOiBBZGQgZmxhZ3MgJyBhbmQgSS4KCShzdHJmdGltZV9mbGFnX3BhaXJzKTogRGlzYWxsb3cgYW55IHBhaXIgb2YgdGhlIF8sIC0gYW5kIDAgZmxhZ3MsCglvciB0aGUgXiBhbmQgIyBmbGFncyB0b2dldGhlci4KCShzY2FuX2NoYXJfdGFibGUpOiBIYW5kbGUgdGhlICcgYW5kIEkgZmxhZ3MuCgkoZm9ybWF0X3R5cGVzKTogQWRkICcgYW5kIEkgZmxhZ3MgZm9yIHNjYW5mLgoKMjAwMC0xMC0xMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAocHJpbnRfY2hhcl90YWJsZSk6IFVzZSB0aGUgdW5wcm9tb3RlZCB0eXBlIGZvcgoJbGVuZ3RocyAiaCIgYW5kICJoaCIgd2l0aCBjb252ZXJzaW9ucyBkaW94WHUuCgkoY2hlY2tfZm9ybWF0X3R5cGVzKTogQXBwbHkgdGhlIGRlZmF1bHQgYXJndW1lbnQgcHJvbW90aW9ucyB3aGVyZQoJdGhlIHdhbnRlZCB0eXBlIGlzIG5vdCBhIHBvaW50ZXIgdGFyZ2V0LgoKMjAwMC0xMC0xMSAgTWljaGFlbCBNZWVrcyAgPG1tZWVrc0BnbnUub3JnPgoJICAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtdHlwZWNrLmMgKGNoZWNrX21vZGlmeV9leHByKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX21vZGlmeV9leHByKTogQ2FsbCBpdCBpZiB3YXJuX3NlcXVlbmNlX3BvaW50LgoJKiBjLWRlY2wuYyAod2Fybl9zZXF1ZW5jZV9wb2ludCk6IE5ldyB2YXJpYWJsZS4KCShjX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgLVdzZXF1ZW5jZS1wb2ludCBhbmQKCS1Xbm8tc2VxdWVuY2UtcG9pbnQuICBFbmFibGUgLVdzZXF1ZW5jZS1wb2ludCBhcyBwYXJ0IG9mIC1XYWxsLgoJKiBjLXRyZWUuaCAod2Fybl9zZXF1ZW5jZV9wb2ludCk6IERlY2xhcmUuCgkqIGludm9rZS50ZXhpICgtV3NlcXVlbmNlLXBvaW50KTogRG9jdW1lbnQuCgkqIHRvcGxldi5jIChkb2N1bWVudGVkX2xhbmdfb3B0aW9ucyk6IEFkZCAtV3NlcXVlbmNlLXBvaW50IGFuZAoJLVduby1zZXF1ZW5jZS1wb2ludC4KCU9yaWdpbmFsIHdvcmsgYnkgTWljaGFlbCBNZWVrcywgMTYgSnVuIDE5OTguCgpXZWQgT2N0IDExIDA2OjE1OjQxIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmMgKGdldF9uYXJyb3dlcik6IERvbid0IGxvb2sgYXQgcHJlY2lzaW9uIG9mIGZpZWxkIGlmCglub3QgbGFpZCBvdXQgeWV0LgoKVHVlIE9jdCAxMCAyMzoxNDozMyAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAodmFsaWRfbWFjaGluZV9kZWNsX2F0dHJpYnV0ZSk6IEFsbG93IGBleHRlcm4nCglkZWNsYXJhdGlvbiBmb3IgZGF0YSB3aXRoICJwcm9nbWVtIiBhdHRyaWJ1dGUuCgoyMDAwLTEwLTA5ICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dF9zaGlmdF93aXRoX2NudCk6IFVzZSBBUzIgbWFjcm8uCglDb3JyZWN0IGluc24gbGVuZ3RoIGlmIHNoaWZ0IGNvdW50IGlzIGEgbWVtb3J5IG9wZXJhbmQuCgkqIGNvbmZpZy9hdnIvYXZyLm1kOiBOZXcgZGVmaW5lX3BlZXBob2xlMiB0byB1c2UgKnJlbG9hZF9pbnFpLgoJKCppb3JoaTNfY2xvYmJlcik6IENoYW5nZSBsbzggdG8gaGk4LgoJKHplcm9fZXh0ZW5kaGlzaTIpOiBDaGFuZ2UgJUIwIHRvICVBMS4KCShhc2hsaGkzLCBhc2hyaGkzKTogQ29ycmVjdCBpbnNuIGxlbmd0aC4KCShhbmRoaTMsIGFic3NmMiwgZXh0ZW5kcWlzaTIsIGV4dGVuZGhpc2kyKTogQ2hhbmdlICJjYyIKCWZyb20gImNsb2JiZXIiIHRvICJzZXRfbiIgaW4gc29tZSBhbHRlcm5hdGl2ZXMuCgoyMDAwLTEwLTEwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHJlbG9hZDEuYyAoY2FsY3VsYXRlX25lZWRzX2FsbF9pbnNucyk6IElmIGRlbGV0aW5nIGFuIGluc3RydWN0aW9uLAoJcmVtb3ZlIGl0cyBpbnNuX2NoYWluIHN0cnVjdHVyZSBhcyB3ZWxsLgoKMjAwMC0xMC0wOSAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3NvdXJjZV9saW5lKTogUmVtb3ZlIGV4dHJhIHRhYi4KCjIwMDAtMTAtMDkgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGNvbmZpZy9lbGZvcy5oIChVTklRVUVfU0VDVElPTik6IEFwcGx5IFNUUklQX05BTUVfRU5DT0RJTkcgb24gbmFtZS4KCjIwMDAtMTAtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTEFOR19MSUIyRlVOQ1MpOiBSZW1vdmUuCgkoTElCMkZVTkNTKTogUmVtb3ZlIF9wdXJlLgoJKExJQjJBREQpOiBSZW1vdmUgTEFOR19MSUIyRlVOQ1MuCgkoc3RhZ2VfYSk6IERvbid0IHNldCBMQU5HX0xJQjJGVU5DUy4KCSogbGliZ2NjMi5jIChfX3Rlcm1pbmF0ZSk6IE1hcmsgbm9yZXR1cm4uCgkoX19wdXJlX3ZpcnR1YWwpOiBSZW1vdmUuCgkqIG1rbGliZ2NjLmluOiBSZW1vdmUgTElCMkFERCAudHh0IHByb2Nlc3NpbmcuCgoyMDAwLTEwLTA5ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZCAocHVzaF9tdWx0aSk6IFJldmVydCB1bmludGVuZGVkIGNoYW5nZS4KCjIwMDAtMTAtMDkgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmM6IE1pc2NlbGxhbmVvdXMgd2hpdGUgc3BhY2UgYW5kIGNvbW1lbnQgY2xlYW4tdXBzLiAgTm8KCWZ1bmN0aW9uYWwgY2hhbmdlLgoJKiBhcm0ubWQ6IExpa2V3aXNlLgoKMjAwMC0xMC0wOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1jb21tb24uYyAoY19leHBhbmRfYnVpbHRpbl9wcmludGYpOiBTZXQgdGhlIFRSRUVfVFlQRSBvZiBhIG5ldwoJU1RSSU5HX0NTVCBieSBjYWxsaW5nIGNvbWJpbmVfc3RyaW5ncy4KCjIwMDAtMTAtMDkgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKHRodW1iX2V4cGFuZF9tb3ZzdHJxaSk6IFJld3JpdGUgdG8gc3VwcG9ydCBTU0EgZm9ybS4KCSh0aHVtYl9vdXRwdXRfbW92ZV9tZW1fbXVsdGlwbGUpOiBTdXBwb3J0IG5ldyBpbnNuIGZvcm1hdC4KCSogYXJtLm1kIChtb3ZtZW0xMmIpOiBVc2UgU1NBIGNvbXBhdGlibGUgZm9ybWF0LgoJKG1vdm1lbThiKTogTGlrZXdpc2UuCgoyMDAwLTEwLTA5ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZCAocHJlZGljYWJsZSk6IE5ldyBhdHRyaWJ1dGUsIGRlZmF1bHQgdG8gIm5vIi4KCShhbGwgcGF0dGVybnMpOiBNYXJrIGFzIHByZWRpY2FibGUgaWYgYXBwcm9wcmlhdGUuCgkoY29uZGl0aW9uYWwgZXhlY3V0aW9uIHNwbGl0cyk6IFNwbGl0IHVzaW5nIHByZWRpY2F0aW9uIGZvcm1hdC4KCShkZWZpbmVfY29uZF9leGVjKTogRGVmaW5lLgoJKiBhcm0uYyAoYXJtX3ByaW50X29wZXJhbmQpOiBoYW5kbGUgaW5zbiBwcmVkaWNhdGUuCgoyMDAwLTEwLTA5ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBSRUFETUUuTlMzMks6IFJlbW92ZSBmaWxlLgoKMjAwMC0xMC0wOSAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogUkVBRE1FLWJ1Z3M6IFJlbW92ZSBmaWxlLgoKMjAwMC0xMC0wOCAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgkqIGFjbG9jYWwubTQgKEFNX0dOVV9HRVRURVhUKTogRml4IG5vbiBwb3J0YWJsZSB1c2Ugb2YgPT0gb3BlcmF0b3IKCWZvciB0ZXN0LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTEwLTA4ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCSogYWNsb2NhbC5tNCAoQU1fV0lUSF9OTFMpOiBXaGVuIG5vdCB1c2luZyBpbmNsdWRlZCBnZXR0ZXh0LAoJZGlzYWJsZSBjYXRhbG9nIGJ1aWxkaW5nIGlmIG5vIHN1aXRhYmxlIHByb2dyYW0gd2FzIGZvdW5kLgoJTW92ZSB3YXJuaW5nIG1lc3NhZ2UgZnJvbSBoZXJlCgkoQU1fR05VX0dFVFRFWFQpOiBUbyBoZXJlLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTEwLTA4ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCSogYWNsb2NhbC5tNCAoR0NDX1BBVEhfUFJPRyk6IE5ldy4gTGlrZSBBQ19QQVRIX1BST0cgYnV0IHVzZXMKCWRpZmZlcmVudCBjYWNoZSB2YXJpYWJsZXMuCgkoR0NDX1BBVEhfUFJPR19XSVRIX1RFU1QpOiBOZXcuIExpa2UgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVCBidXQKCXVzZXMgZGlmZmVyZW50IGNhY2hlIHZhcmlhYmxlcy4KCShBTV9XSVRIX05MUyk6IFVzZSBHQ0NfUEFUSF9QUk9HIGFuZCBHQ0NfUEFUSF9QUk9HX1dJVEhfVEVTVC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDAtMTAtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAobGliZ2NjLm1rKTogUGFzcyBTSExJQl9FWFQsIG5vdCBTSExJQl9MSUJTLgoJKiBjb25maWd1cmUuaW4gKHNwYXJjKi0qLXNvbGFyaXMqKTogVXNlIHQtc2xpYmdjY3ssLXNsZH0uCgkqIG1rbGliZ2NjLmluOiBDb25zaWRlciBTSExJQl9MSU5LIHRoZSBlbnRpcmUgc2hsaWIgYnVpbGQgY29tbWFuZC4KCVVzZSBTSExJQl9FWFQuCgoJKiBjb25maWcvdC1saW51eCAoU0hMSUJfRVhUKTogTmV3LgoJKFNITElCX0xJTkspOiBVc2UgdGhlIGVudGlyZSBidWlsZCBjb21tYW5kLCB3aXRoIHN1YnN0aXR1dGlvbnMuCgkoU0hMSUJfTElCUyk6IFJlbW92ZS4KCSogY29uZmlnL2FscGhhL3Qtb3NmNDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL3QtaXJpczY6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvdC1zb2wyOiBMaWtld2lzZSwgYnV0IG1vdmUgc2hsaWIgc3R1ZmYuLi4KCSogY29uZmlnL3NwYXJjL3Qtc2xpYmdjYy1zbGQ6IC4uLmhlcmUuCgkqIGNvbmZpZy9zcGFyYy90LXNsaWJnY2M6IE5ldyBmaWxlLgoKMjAwMC0xMC0wOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogdG0udGV4aSAoSU5UTUFYX1RZUEUsIFVJTlRNQVhfVFlQRSk6IERlZmluZS4KCSogYy1jb21tb24uaCAoZW51bSBjX3RyZWVfaW5kZXgpOiBBZGQgQ1RJX0lOVE1BWF9UWVBFIGFuZAoJQ1RJX1VJTlRNQVhfVFlQRS4KCShpbnRtYXhfdHlwZV9ub2RlLCB1aW50bWF4X3R5cGVfbm9kZSk6IERlZmluZS4KCSogYy1jb21tb24uYyAoZGVjbF9hdHRyaWJ1dGVzKTogSWYgcGVkYW50aWMsIHdhcm4gaWYgYG1vZGUnCglhdHRyaWJ1dGVzIGNyZWF0ZSBhIHR5cGUgd2lkZXIgdGhhbiBpbnRtYXhfdC4KCShUX0lNLCBUX1VJTSk6IERlZmluZSBwcm9wZXJseS4KCSogYy1kZWNsLmMgKElOVE1BWF9UWVBFLCBVSU5UTUFYX1RZUEUpOiBEZWZpbmUgaWYgbm90IGFscmVhZHkKCWRlZmluZWQuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIGludG1heF90eXBlX25vZGUgYW5kCgl1aW50bWF4X3R5cGVfbm9kZS4KCSogYy1sZXguYyAobGV4X251bWJlcik6IFdoZW4gcGVkYW50aWMgYW5kIHdhcm5pbmcgZm9yIGludGVnZXIKCWNvbnN0YW50cyB0aGF0IGFyZSB0b28gbGFyZ2UsIGluIEM5OSBtb2RlIHdhcm4gZm9yIHRob3NlIHRoYXQgaGF2ZQoJYSB0eXBlIHdpZGVyIHRoYW4gbG9uZyBsb25nLgoKMjAwMC0xMC0wOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoRk1UX0ZMQUdfQVJHX0NPTlZFUlQsIEZNVF9GTEFHX1NDQU5GX0FfS0xVREdFLAoJRk1UX0ZMQUdfRkFOQ1lfUEVSQ0VOVF9PSyk6IERlZmluZS4KCShmb3JtYXRfY2hhcl9pbmZvKTogQWRkIGZsYWcgIjQiIHRvIGNvbW1lbnQuCgkoZm9ybWF0X2ZsYWdfc3BlYywgZm9ybWF0X2ZsYWdfcGFpcik6IE5ldyBzdHJ1Y3R1cmVzLgoJKGZvcm1hdF9raW5kX2luZm8pOiBBZGQgYWRkaXRpb25hbCBmaWVsZHMgdG8gY29udHJvbCBmb3JtYXQKCWNoZWNraW5nLgoJKHByaW50Zl9mbGFnX3NwZWNzLCBwcmludGZfZmxhZ19wYWlycywgc2NhbmZfZmxhZ19zcGVjcywKCXNjYW5mX2ZsYWdfcGFpcnMsIHN0cmZ0aW1lX2ZsYWdfc3BlY3MsIHN0cmZ0aW1lX2ZsYWdfcGFpcnMpOiBOZXcKCWFycmF5cy4KCSh0aW1lX2NoYXJfdGFibGUpOiBVc2UgIjQiIGZsYWcgdG8gaGFuZGxlICVFeS4KCShmb3JtYXRfdHlwZXMpOiBBZGQgZW50cmllcyBmb3IgbmV3IGZpZWxkcy4KCShnZXRfZmxhZ19zcGVjKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogSW5jcmVhc2Ugc2l6ZSBvZiBmbGFnX2NoYXJzW10gdG8gMjU2LgoJQ29udHJvbCBmb3JtYXQgY2hlY2tpbmcgdXNpbmcgdGhlIG5ldyBmaWVsZHMgb2YgYSBmb3JtYXRfa2luZF9pbmZvCglhbmQgdGhlIG5ldyB0YWJsZXM7IHJlbW92ZSBhbGwgY29uZGl0aW9uYWxzIG9uIHByaW50Zl9mb3JtYXRfdHlwZSwKCXNjYW5mX2Zvcm1hdF90eXBlIG9yIHN0cmZ0aW1lX2Zvcm1hdF90eXBlLiAgSGFuZGxlIGFsbCBkZXRhaWxzIG9mCgliYWQgY29tYmluYXRpb25zIG9mIGZsYWdzIChpbmNsdWRpbmcgd2lkdGgsIHByZWNpc2lvbiBhbmQgc3RyZnRpbWUKCW1vZGlmaWVycykgdGhyb3VnaCBkYXRhIHJhdGhlciB0aGFuIGFkIGhvYyBjb2RlLiAgSGFuZGxlIGFsbAoJZGV0YWlscyBvZiBzdGFuZGFyZCB2ZXJzaW9ucyBpbiB3aGljaCBmbGFncyBhcHBlYXJlZCB0aHJvdWdoCglkYXRhLiAgVXNlIHRoZSAiNCIgZmxhZy4KCjIwMDAtMTAtMDcgIFdpbGwgQ29oZW4gIDx3Y29oZW5AcmVkaGF0LmNvbT4sIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBSZW1vdmUgdGhlIG1lbW9yeSBhbHRlcm5hdGl2ZSBhbmQgY29ycmVjdAoJdGhlIGluc24gbGVuZ3RocyBpbiB0aGUgdGVtcGxhdGVzIGZvciBzaWduIGV4dGVuc2lvbiBhbmQgemVybwoJZXh0ZW5zaW9uLgoKMjAwMC0xMC0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRGlzYWxsb3cgc2liY2FsbHMgdG8gbm9yZXR1cm4gZnVuY3Rpb25zLgoJKiBmbG93LmMgKG1ha2VfZWRnZXMpOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoRlVOQ1RJT05fT0tfRk9SX1NJQkNBTEwpOiBEb24ndCB0ZXN0CglUUkVFX1RISVNfVk9MQVRJTEUuCgkqIGNvbmZpZy9wYS9wYS5oIChGVU5DVElPTl9PS19GT1JfU0lCQ0FMTCk6IExpa2V3aXNlLgoKMjAwMC0xMC0wNiAgRGF2aWQgTydCcmllbiAgPG9icmllbkBkcmFnb24ubnV4aS5jb20+CgoJKiBjb25maWcvYWxwaGEvZWxmLmg6IFN0YW5kYXJkaXplIHRoZSBmb3JtYXR0aW5nLgoKMjAwMC0xMC0wNiAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGNvbmZpZy9hbHBoYS9lbGYuaDogUHJvdGVjdCB0aGUgQVNNX09VVFBVVF9JREVOVCBkZWZpbml0aW9uIHdpdGggYW4KCSN1bmRlZi4KCjIwMDAtMTAtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmdW5jdGlvbi5jIChkaWRkbGVfcmV0dXJuX3ZhbHVlKTogRXhhbWluZQoJY3VycmVudF9mdW5jdGlvbl9yZXR1cm5fcnR4IGluc3RlYWQgb2YgdGhlIERFQ0xfUkVTVUxULgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBIYW5kbGUgcmVsb2FkaW5nIERFQ0xfUkVTVUxUIGZyb20gbWVtb3J5CglpbnRvIGEgaGFyZCByZWdpc3Rlci4gIFF1ZXJ5IHByb21vdGVfbW9kZSBmb3Igc2lnbiBvZiBtaXNtYXRjaGVkCgltb2Rlcy4KCjIwMDAtMTAtMDYgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkB0b3VjaG1lLnRvcm9udG8ucmVkaGF0LmNvbT4KCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2luc25zKTogRml4IHR5cG8gaW4gZnJlZWluZwoJZm9yd2FyZF9kZXBlbmRlbmN5X2NhY2hlLgoKMjAwMC0xMC0wNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2gubWQgKGNhbGxpX3BjcmVsLCBjYWxsX3ZhbHVlaV9wY3JlbCk6IEFkZAoJYFRBUkdFVF9TSDInIGFzIGEgY29uZGl0aW9uLgoKMjAwMC0xMC0wNiAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHRvdWNobWUudG9yb250by5yZWRoYXQuY29tPgoKCSogaGFpZmEtc2NoZWQuYyAoYW50aV9kZXBlbmRlbmN5X2NhY2hlLCBvdXRwdXRfZGVwZW5kZW5jeV9jYWNoZSwKCWZvcndhcmRfZGVwZW5kZW5jeV9jYWNoZSk6IE5ldyB2YXJpYWJsZXMuCgkoYWRkX2RlcGVuZGVuY2UsIHJlbW92ZV9kZXBlbmRlbmNlKTogVXNlIGFudGlfZGVwZW5kZW5jeV9jYWNoZSBhbmQKCW91dHB1dF9kZXBlbmRlbmN5X2NhY2hlLgoJKGNvbXB1dGVfYmxvY2tfZm9yd2FyZF9kZXBlbmRlbmNlcyk6IFVzZSBmb3J3YXJkX2RlcGVuZGVuY3lfY2FjaGUuCgkoc2NoZWR1bGVfaW5zbnMpOiBBbGxvY2F0ZSBhbmQgZnJlZSBtZW1vcnkgZm9yIGFudGkvb3V0cHV0L2ZvcndhcmQKCWRlcGVuZGVuY2llcyBjYWNoZXMuCgoyMDAwLTEwLTA2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5tZCAoY2FsbCwgY2FsbF92YWx1ZSk6IFVzZSBgVEFSR0VUX1NIMicgaW5zdGVhZCBvZgoJYCEgVEFSR0VUX1NIMScuICBSZWluZGVudC4KCjIwMDAtMTAtMDYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGlzX3ZhbGlkX3ByaW50Zl9hcmdsaXN0LCBleHBhbmRfYnVpbHRpbl9wcmludGYpOgoJTW92ZSBmdW5jdGlvbnMgZnJvbSBoZXJlIC4uLgoKCSogYy1jb21tb24uYyAoaXNfdmFsaWRfcHJpbnRmX2FyZ2xpc3QsIGNfZXhwYW5kX2J1aWx0aW5fcHJpbnRmKToKCS4uLiB0byBoZXJlLgoJKGNfZXhwYW5kX2J1aWx0aW4pOiBOZXcgZnVuY3Rpb24uCgkoaW5pdF9mdW5jdGlvbl9mb3JtYXRfaW5mbyk6IERvbid0IHNldCBgY2hlY2tfZnVuY3Rpb25fZm9ybWF0X3B0cicuCgkoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogU2V0IGJ1aWx0X2luX2NsYXNzIHR5cGUgZm9yCglwcmludGYvX19idWlsdGluX3ByaW50ZiB0byBCVUlMVF9JTl9GUk9OVEVORC4KCShjX2V4cGFuZF9leHByKTogSGFuZGxlIENBTExfRVhQUnMgdGhhdCBhcmUgZnJvbnQtZW5kIGJ1aWx0aW5zLgoKCSogYy1jb21tb24uaCAoYnVpbGRfZnVuY3Rpb25fY2FsbCk6IERlY2xhcmUuCgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogUGFzcyBidWlsdGlucyB3aXRoIGNsYXNzIEJVSUxUX0lOX0ZST05URU5ECgl0byBgbGFuZ19leHBhbmRfZXhwcicgcmF0aGVyIHRoYW4gYGV4cGFuZF9idWlsdGluJy4KCgkqIHRyZWUuYyAoY2hlY2tfZnVuY3Rpb25fZm9ybWF0X3B0cik6IERlbGV0ZS4KCgkqIHRyZWUuaCAoY2hlY2tfZnVuY3Rpb25fZm9ybWF0X3B0cik6IExpa2V3aXNlLgoKMjAwMC0xMC0wNiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogZHdhcmYyb3V0LmMgKGJ1aWxkX2NmYV9sb2MpOiBDb3JyZWN0IHRvIHVzZSBEV19PUF9yZWd4IG9yCglEV19PUF9icmVneCB3aGVuIGNmYS0+cmVnID4gMzEuCgoJKiBmcmFtZS1kd2FyZjIuYyAoZGVjb2RlX3N0YWNrX29wKSBbY2FzZSBEV19PUF9yZWd4XTogQWRkIG1pc3NpbmcKCWJyZWFrLgoKMjAwMC0xMC0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGMtZGVjbC5jICh3YXJuX21pc3Npbmdfbm9yZXR1cm4pOiBSZW1vdmUuCgkoY19leHBhbmRfYm9keSk6IERvbid0IHNldCBvciBjaGVjayBjYW5fcmVhY2hfZW5kLgoJKiBjLXRyZWUuaCAod2Fybl9taXNzaW5nX25vcmV0dXJuKTogTW92ZSAuLi4KCSogZmxhZ3MuaDogLi4uIGhlcmUuCgkoY2FuX3JlYWNoX2VuZCk6IFJlbW92ZS4KCSogZmxvdy5jIChjaGVja19mdW5jdGlvbl9yZXR1cm5fd2FybmluZ3MpOiBOZXcuCgkobWFrZV9lZGdlcyk6IE5vIGVkZ2UgdG8gZXhpdCBmb3Igbm9yZXR1cm4gc2liY2FsbHMuCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBTYXZlIHRoZSByZXR1cm4gdmFsdWUKCWNsb2JiZXIgaW5zdHJ1Y3Rpb24uCgkobWFya19mdW5jdGlvbl9zdGF0dXMpOiBNYXJrIGl0LgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pOiBBZGQgeF9jbG9iYmVyX3JldHVybl9pbnNuLgoJKiBqdW1wLmMgKGNhbl9yZWFjaF9lbmQpOiBSZW1vdmUuCgkoY2FsY3VsYXRlX2Nhbl9yZWFjaF9lbmQpOiBSZW1vdmUuCgkoanVtcF9vcHRpbWl6ZV8xKTogRG9uJ3QgY2FsbCBpdC4KCSogb3V0cHV0LmggKGNoZWNrX2Z1bmN0aW9uX3JldHVybl93YXJuaW5ncyk6IERlY2xhcmUuCgkqIHRvcGxldi5jICh3YXJuX21pc3Npbmdfbm9yZXR1cm4pOiBNb3ZlIGZyb20gYy1kZWNsLmMKCShyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbCBjaGVja19mdW5jdGlvbl9yZXR1cm5fd2FybmluZ3MuCgoyMDAwLTEwLTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKE5NX0ZPUl9UQVJHRVQpOiBOZXcuCgkobGliZ2NjLm1rKTogUGFzcyBTSExJQl9NS01BUCwgU0hMSUJfTUFQRklMRVMuCgkobGliZ2NjLmEsIHN0bXAtbXVsdGlsaWIpOiBQYXNzIE5NX0ZPUl9UQVJHRVQuCgkqIG1rbGliZ2NjLmluOiBJZiBTSExJQl9NS01BUCwgYnVpbGQgbGliZ2NjLm1hcC4gIERlcGVuZCB0aGUKCXNoYXJlZCBsaWJyYXJ5IGJ1aWxkIG9uIHRoYXQgYW5kIEVYVFJBX01VTFRJTElCX1BBUlRTLgoJKiBta21hcC1mbGF0LmF3azogTmV3IGZpbGUuCgkqIG1rbWFwLXN5bXZlci5hd2s6IE5ldyBmaWxlLgoJKiBsaWJnY2Mtc3RkLnZlcjogTmV3IGZpbGUuCgkqIGNvbmZpZy9saWJnY2MtZ2xpYmMudmVyOiBOZXcgZmlsZS4KCSogY29uZmlnL2lhNjQvbGliZ2NjLWlhNjQudmVyOiBOZXcgZmlsZS4KCSogY29uZmlnL3QtbGludXggKFNITElCX01LTUFQLCBTSExJQl9NQVBGSUxFUyk6IE5ldy4KCShTSExJQl9MSU5LKTogQWRkIC0tdmVyc2lvbi1zY3JpcHQuCgkqIGNvbmZpZy9pYTY0L3QtaWE2NCAoU0hMSUJfTUFQRklMRVMpOiBBZGQgbGliZ2NjLWlhNjQudmVyLgoJKiBjb25maWcvbWlwcy90LWlyaXM2IChTSExJQl9NS01BUCwgU0hMSUJfTUFQRklMRVMpOiBOZXcuCgkqIGNvbmZpZy9zcGFyYy90LXNvbDIgKFNITElCX01LTUFQLCBTSExJQl9NQVBGSUxFUyk6IE5ldy4KCShTSExJQl9MSU5LKTogQWRkIC1NLgoKMjAwMC0xMC0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChMSUIyRlVOQ1MpOiBBZGQgX2Nsei4KCSogbGliZ2NjMi5jIChfX2Zmc2RpMik6IFVzZSBjb3VudF90cmFpbGluZ196ZXJvcy4KCShfX2Nsel90YWIpOiBQdXQgaW4gaXRzIG93biB1bml0LCBub24tc3RhdGljLgoJKiBsaWJnY2MyLmg6IEFsd2F5cyBpbmNsdWRlIGxvbmdsb25nLmguCgoJKiBsb25nbG9uZy5oIFthbHBoYV0gKGNvdW50X2xlYWRpbmdfemVyb3MpOiBVc2UgY21wYmdlIHdpdGgKCWEgemVybyBpbnN0ZWFkIG9mIC0xLgoJKGNvdW50X3RyYWlsaW5nX3plcm9zKTogTGlrZXdpc2UuCgoyMDAwLTEwLTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfc2V0Y2MpOiBEb24ndCBzd2FwIEdUIHRlc3RzCgl3aGVuIHNlY29uZCBvcDEgaXMgY29uc3QwX3J0eC4gIFZhbGlkYXRlIG9wMCBhcyBhIHJlZ2lzdGVyLgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKHNldGNjX2ludGVybmFsKTogRG9uJ3QgYWxsb3cgY29uc3RhbnRzCglpbiB0aGUgZmlyc3QgYXJndW1lbnQgb2YgdGhlIGNvbXBhcmUuCgkoc2V0Y2Nfc3dhcHBlZF9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKHNldG5lX2ludGVybmFsKTogTGlrZXdpc2UuCgoyMDAwLTEwLTA1ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiB0cmVlLmMgKHRyZWVfc2l6ZSk6IE5ldyBmdW5jdGlvbiBzcGxpdCBvdXQgb2YgY29weV9ub2RlLgoJKG1ha2Vfbm9kZSk6IFJlbW92ZSBvYnN0YWNrIGhhbmRsaW5nLiAgVXNlIHRyZWVfc2l6ZS4KCShjb3B5X25vZGUpOiBVc2UgdHJlZV9zaXplLgoJKiB0cmVlLmg6IFByb3RvdHlwZSB0cmVlX3NpemUuCgoyMDAwLTEwLTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZGlhZ25vc3RpYy5jIChvdXRwdXRfZm9ybWF0KTogQWRkIG1pc3NpbmcgYnJlYWsuCgoyMDAwLTEwLTA1ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBmdW5jdGlvbi5jIChmaXh1cF92YXJfcmVmc18xLCBjYXNlIFNFVCk6IFdoZW4gZ2VuX21vdmVfaW5zbiByZXR1cm5zIGEKCVNFUVVFTkNFLCBjYWxsIGVtaXRfaW5zbl9iZWZvcmUsIGNvcHkgUEFUVEVSTiBhbmQgUkVHX05PVEVTIG9mIGxhc3QKCXNlcXVlbmNlIGluc24gdG8gSU5TTiwgYW5kIGRlbGV0ZSBsYXN0IHNlcXVlbmNlIGluc24uCgoyMDAwLTEwLTA1ICBQaGlsIEVkd2FyZHMgIDxwbWVAZ2NjLmdudS5vcmc+CgoJKiBnY2MuYyAobWFpbik6IEluY2x1ZGUgZ2VuZXJhdGVkIGNvbmZpZ2FyZ3MuaCBoZWFkZXIKCWFuZCB1c2UgYXJndW1lbnRzIGluICctdicgb3V0cHV0LgoKVGh1IE9jdCAgNSAxNjoxNjo1NyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZ2NjLmM6IE1vdmUgZGF0YSBvbiBwcmVmaXhlcyBmb3J3YXJkIGluIGZpbGUgYW5kIHJlb3JnYW5pemUuCgkobWRfZXhlY19wcmVmaXgsIG1kX3N0YXJ0ZmlsZV9wcmVmaXgsIG1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSk6CglBbHdheXMgZGVmaW5lLCBidXQgbWFrZSBudWxsIGlmIG5vIHZhbHVlLgoJKHN0YXRpY19zcGVjcyk6IEFkZCAibWRfZXhlY19wcmVmaXgiLCAibWRfc3RhcnRmaWxlX3ByZWZpeCIsCglhbmQgIm1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSIuCgkobWFpbik6IENoZWNrIHdoZXRoZXIgbWRfZXhlY19wcmVmaXggYW5kIHRoZSBvdGhlcnMgYXJlIHRoZQoJbnVsbCBzdHJpbmcgcmF0aGVyIHRoYW4gd2hldGhlciB0aGUgbWFjcm8gaXMgZGVmaW5lZC4KClRodSBPY3QgIDUgMTk6MDQ6MTggMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvLnVrPgoKCSogKGNvbnZlcnRfbW92ZSk6IFVzZSB6ZXJvX2V4dGVuZHBzaXNpMiB0byBkbyBhbiB1bnNpZ25lZCBleHRlbnNpb24KCWZyb20gUFNJbW9kZSB0byBTSW1vZGUuCgoyMDAwLTEwLTA1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0X2NvbW1vbikgW1JFQUxfQVJJVEhNRVRJQ1NdOiBGaXggY29udmVyc2lvbgoJZnJvbSBmbG9hdCB0byBpbnRlZ3JhbCBtb2RlIHdpdGggSE9TVF9CSVRTX1BFUl9XSURFX0lOVCA2NC4KCSogZHdhcmYyb3V0LmMgKGFkZF9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBEaXZpZGUgYnkgNCwgbm90CglzaXplb2YobG9uZykuCgpUaHUgT2N0ICA1IDA5OjMxOjMxIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQsIGNhc2UgTUlOVVNfRVhQUiwgY2FzZSBFUV9FWFBSKTogUGVyZm9ybQoJbmVnYXRpb24gaW4gcHJvcGVyIHR5cGUuYQoKMjAwMC0xMC0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoZW5hYmxlLXNoYXJlZCk6IE5ldy4KCSogTWFrZWZpbGUuaW4gKExJQkdDQ19ERVBTKTogRGVwZW5kIG9uIEVYVFJBX1BBUlRTIGFzIHdlbGwuCgkobGliZ2NjLm1rKTogUGFzcyBTSExJQl9MSU5LLCBTSExJQl9MSUJTLCBTSExJQl9NVUxUSUxJQiB0byBta2xpYmdjYy4KCSogbWtsaWJnY2MuaW46IFVzZSB0aGVtIHRvIGxpbmsgc2hhcmVkIGEgbGliZ2NjLgoJKiBjb25maWcvdC1saW51eCAoU0hMSUJfTElOSywgU0hMSUJfTElCUyk6IE5ldy4KCSogY29uZmlnL2FscGhhL3QtaWVlZSAoU0hMSUJfTVVMVElMSUIpOiBOZXcuCgkqIGNvbmZpZy9taXBzL3QtaXJpczYgKFNITElCX0xJTkssIFNITElCX0xJQlMpOiBOZXcuCgkqIGNvbmZpZy9zcGFyYy90LXNvbDIgKFNITElCX0xJTkssIFNITElCX0xJQlMpOiBOZXcuCgoJKiBjb25maWd1cmUuaW4gKGFscGhhLW9zZiopOiBVc2UgdC1vc2YgYW5kIHgtb3NmLgoJKiBjb25maWcvYWxwaGEvdC1vc2Y6IE5ldyBmaWxlLgoJKiBjb25maWcvYWxwaGEvdC1vc2Y0OiBOZXcgZmlsZS4KCSogY29uZmlnL2FscGhhL3gtb3NmOiBOZXcgZmlsZS4KCSogY29uZmlnL2FscGhhL3gtYWxwaGE6IFJlbW92ZSBmaWxlLgoKMjAwMC0xMC0wNCAgV2lsbCBDb2hlbiAgPHdjb2hlbkByZWRoYXQuY29tPgoKCSogYy10eXBlY2suYyAocHJvY2Vzc19pbml0X2VsZW1lbnQpOiBBZGRlZCB3YXJuaW5nIGZvciB6ZXJvLWxlbmd0aAoJYXJyYXkuCgoJKiBleHRlbmQudGV4aSAoWmVybyBMZW5ndGgpOiBTdGF0ZSB0aGF0IHN0YXRpYyBpbml0aWFsaXplcnMgZm9yCgl6ZXJvLWxlbmd0aCBhcnJheXMgYXJlIG5vdCBhbGxvd2VkLgoKTW9uIE9jdCAgMiAxNDo1MDoxNCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJ0bGFuYWwuYyAoc2luZ2xlX3NldF8xKTogRG8gbm90IHJlcXVpcmUgVVNFIGFuZCBDTE9CQkVScwoJdG8gY29tZSBsYXN0LgoKMjAwMC0xMC0wMyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2Zsb2F0LWM0eC5oOiBOZXcuCgkqIGNvbmZpZ3VyZS5pbiAoYzR4LSopOiBTZXQgZmxvYXRfZm9ybWF0IHRvIGM0eC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0xMC0wMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uZmlndXJlLmluIChzcGFyYy0qLXNvbGFyaXMyKik6IERpc2FibGUgMzItdG8tNjQgY3Jvc3MKCWNvbXBpbGF0aW9uIGZvciBzb2xhcmlzIHZlcnNpb25zIDIuNyBhbmQgZ3JlYXRlci4KCjIwMDAtMTAtMDIgIE1hcmMgRXNwaWUgPGVzcGllQG9wZW5ic2Qub3JnPgoKCSogY29uZmlnL2FscGhhLmggKFdPUkRfU1dJVENIX1RBS0VTX0FSRyk6IGFkZCAtcnBhdGggdG8gZGVmYXVsdCwKCWluc3RlYWQgb2YgcmVkZWZpbmluZyBmcm9tIHNjcmF0Y2guCgoyMDAwLTEwLTAyICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQGRyYWdvbi5udXhpLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2ZyZWVic2QuaCAoTk9fUFJPRklMRV9DT1VOVEVSUyk6IERlZmluZS4KCjIwMDAtMTAtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbnMzMmsvZ2VuaXguaDogUmVtb3ZlLgoJKiBjb25maWcvbnMzMmsveC1nZW5peDogTGlrZXdpc2UuCgkqIGNvbmZpZy9uczMyay94bS1nZW5peC5oOiBMaWtld2lzZS4KCSogY29uZmlnL2Z4ODA6IFJlbW92ZSBhbGwgZmlsZWUgaW4gZGlyZWN0b3J5LgoJKiBjb25maWcvcHlyOiBMaWtld2lzZS4KCSogY29uZmlnL3RhaG9lOiBMaWtld2lzZS4KCSogY29uZmlnL2dtaWNybzogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcHVyOiBMaWtld2lzZS4KCSogY29uZmlndXJlLmluOiBSZW1vdmUgY29uZmlndXJ5IGJpdHMgZm9yIGFib3ZlIHRhcmdldHMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBjb25maWd1cmUuaW46IERvbid0IGNvbmZpZ3VyZSBjaGlsbCBieSBkZWZhdWx0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogYy1kZWNsLmMgKGNfZXhwYW5kX2JvZHkpOiBEb24ndCBnZW5lcmF0ZSBSVEwgaWYgZmxhZ19zeW50YXhfb25seS4KCShsYW5nX21hcmtfZmFsc2VfbGFiZWxfc3RhY2spOiBSZW1vdmUuCgkqIGMtbGV4LmMgKGluaXRfY19sZXgpOiBBZGQgZmlsZV9pbmZvX3RyZWUgYXMgR0Mgcm9vdC4gIEFsbG9jYXRlCgk8dG9wIGxldmVsPiBzdHJpbmcgaW4gR0MgYXJlYS4KCShtYXJrX3NwbGF5X3RyZWVfbm9kZSk6IE5ldyBmdW5jdGlvbi4KCShtYXJrX3NwbGF5X3RyZWUpOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKG1hcmtfZWhfc3RhdHVzKTogT25seSBjYWxsIGxhbmdfbWFya19mYWxzZV9sYWJlbF9zdGFjawoJaWYgaXQgZXhpc3RzLgoJKiBnZ2MtY2FsbGJhY2tzLmMgKGxhbmdfbWFya19mYWxzZV9sYWJlbF9zdGFjayk6IFJlbW92ZS4KCSogZ2djLWNvbW1vbi5jIChsYW5nX21hcmtfZmFsc2VfbGFiZWxfc3RhY2spOiBDaGFuZ2UgdHlwZS4KCSogZ2djLmggKGdnY19hbGxvY19zdHJpbmcpOiBBZGQgY29tbWVudC4KCShnZ2Nfc3RyZHVwKTogTmV3IGZ1bmN0aW9uLgoKU2F0IFNlcCAyMyAxOToxMDoyMCAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuaCAoQlJBTkNIX0NPU1QpOiBEZWZpbmUgYXMgMC4KCgkqIGNvbmZpZy9wZHAxMS9wZHAxMS5jOiAjaW5jbHVkZSAidHJlZS5oIiBhZGRlZC4KCjIwMDAtMDktMzAgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXNobGhpM19vdXQsIGFzaGxzaTNfb3V0LCBhc2hyaGkzX291dCwKCWFzaHJzaTNfb3V0LCBsc2hyaGkzX291dCwgbHNocnNpM19vdXQpOiBPcHRpbWl6ZSBtb3JlIGNhc2VzCgl3aXRoIGtub3duIHNoaWZ0IGNvdW50LgoJKiBjb25maWcvYXZyL2F2ci5tZCAoYXNobHNpMywgYXNocnNpMywgbHNocnNpMyk6CglOZXcgYWx0ZXJuYXRpdmUgZm9yIHNoaWZ0IGNvdW50IDIgd2l0aCBubyBzY3JhdGNoIHJlZ2lzdGVyLgoJKGFzaGxoaTMsIGFzaGxzaTMpOiBDaGFuZ2UgImNjIiBhdHRyaWJ1dGUgZnJvbSAiY2xvYmJlciIgdG8KCSJzZXRfbiIgZm9yIHNoaWZ0IGNvdW50cyAxIGFuZCAyLgoKMjAwMC0wOS0zMCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdnNpX3RvX2NyKTogUmVtb3ZlIHRoZSBVU0UuICBDYWxjdWxhdGUKCXRoZSBtYXNrIHZhbHVlIGZyb20gdGhlIGluZGl2aWR1YWwgU0VUIG9wZXJhdGlvbnMuCgkocmV0dXJuX2ludGVybmFsX3NpKTogTW92ZSB0aGUgVVNFIGFmdGVyIHRoZSBSRVRVUk4uCgkocmV0dXJuX2ludGVybmFsX2RpKTogTGlrZXdpc2UuCgkocmV0dXJuX2FuZF9yZXN0b3JlX2ZwcmVnc19zaSk6IExpa2V3aXNlLgoJKHJldHVybl9hbmRfcmVzdG9yZV9mcHJlZ3NfZGkpOiBMaWtld2lzZS4KCShyZXR1cm5fZWhfc2kpOiBMaWtld2lzZS4KCShyZXR1cm5fZWhfZGkpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAobXRjcmZfb3BlcmF0aW9uKTogRG9uJ3QgbG9vayBmb3IsCglvciBjaGVjaywgdGhlIFVTRS4KCShyczYwMDBfZW1pdF9wcm9sb2d1ZSk6IERvbid0IGVtaXQgdGhlIFVTRSBmb3IgbW92c2lfdG9fY3IuCglEb24ndCBnZW5lcmF0ZSBhIFBBUkFMTEVMIGFyb3VuZCBhIHNpbmdsZSBvcGVyYXRpb24gbW92c2lfdG9fY3IuCglHZW5lcmF0ZSB0aGUgUkVUVVJOIGZpcnN0IGluIGFueSBQQVJBTExFTHMuCgoJKiBydGxhbmFsLmMgKHNpbmdsZV9zZXRfMSk6IFVzZSBmYXRhbF9pbnNuIHRvIGRpc3BsYXkgdGhlCglpbnZhbGlkIGluc24uICBDaGVjayBmb3IgbW9yZSBjYXNlcyB3aGVuIGEgVVNFIG9yIENMT0JCRVIgb2NjdXJzCgliZWZvcmUgYSBTRVQuCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzIGZvciBydGxhbmFsLm8uCgoyMDAwLTA5LTMwICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBpMzg2LmM6IE1vdmUgaW5jbHVkZSBvZiAiY29uZmlnLmgiIHRvIGJlZm9yZSB0aGF0IG9mIDxzZXRqbXAuaD4uCgoyMDAwLTA5LTMwICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLXRyZWUudGV4aSwgY29udHJpYi50ZXhpLCBnY2MudGV4aSwgaW5zdGFsbC50ZXhpLCBpbnZva2UudGV4aToKCUNvbnNpc3RlbnRseSB1c2UgQGVtYWlsIGZvciBmb3JtYXR0aW5nIGVtYWlsIGFkZHJlc3Nlcy4KCjIwMDAtMDktMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjc2UuYyAobm90cmVnX2Nvc3QpOiBOZXcgYXJndW1lbnQgb3V0ZXIuCgkoQ09TVCk6IFBhc3MgaW4gU0VUIHRvIG5vdHJlZ19jb3N0CgkoQ09TVF9JTik6IE5ldy4KCShmb2xkX3J0eCk6IFVzZSBDT1NUX0lOLiAgUHJlZmVyIGNvbnN0YW50cyB3aGVuIGNvc3RzCglhcmUgdGhlIHNhbWUuCgoyMDAwLTA5LTI5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChicm9rZW5fY2Ficyk6IEdlbmVyYWxpemUgcmVnZXguCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAwLTA5LTI5ICBGcmFueiBTaXJsICA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiBsb29wLmMgKGNoZWNrX2ZpbmFsX3ZhbHVlKTogQSBHSVYgaXMgbm90IHJlcGxhY2VhYmxlIGlmIHVzZWQKCWJlZm9yZSBzZXQuCgpGcmkgU2VwIDI5IDEwOjA0OjEyIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHZlcnNpb24uYzogQnVtcCB0byBnY2MtMi45Ny4KCkZycyBTZXAgMjkgMTM6Mzc6NTkgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24pOiBSZW1vdmUgZXh0cmEgZXh0cmFjdF9pbnNuIGNhbGw7CglVc2UgY2FjaGluZyBmb3IgY29uc3RyYWluX29wZXJhbmRzLgoJKGNsZWFudXBfc3VicmVnX29wZXJhbmRzKTogVXNlIGNhY2hpbmcgZm9yIGV4dHJhY3RfaW5zbi4KCSogcmVjb2cuYyAoY29uc3RyYWluX29wZXJhbmRzX2NhY2hlZCk6IE5ldy4KCSogcmVjb2cuaCAoY29uc3RyYWluX29wZXJhbmRzX2NhY2hlZCk6IERlY2xhcmUuCgkqIGkzODYuYyAoaXg4Nl9hdHRyX2xlbmd0aF9pbW1lZGlhdGVfZGVmYXVsdCwKCWl4ODZfYXR0cl9sZW5ndGhfYWRkcmVzc19kZWZhdWx0LCBpeDg2X2FnaV9kZXBlbmRhbnQpOiBDYWNoZQoJZXh0cmFjdF9pbnNuIGNhbGwuCgoJKiByZWNvZy5jIChhc21fbm9wZXJhbmRzKTogVHdlYWsuCgkoZXh0cmFjdF9pbnNuKTogRG8gbm90IGNhbGwgYXNtX25vcGVyYWRzIGZvciBub24tYXNtIGluc3RydWN0aW9ucy4KCkZyaSBTZXAgMjkgMTM6MjA6NDIgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWNvZy5jIChyZWNvZ19tZW1vaXplZCk6IFJlbmFtZSB0byByZWNvZ19tZW1vaXplZF8xLgoJKiByZWNvZy5oIChyZWNvZ19tZW1vaXplZCk6IFJlbmFtZSB0byByZWNvZ19tZW1vaXplZF8xLgoJKHJlY29nX21lbW9pemVkKTogTmV3IG1hY3JvLgoJKiBydGwuaCAoc2luZ2xlX3NldCk6IFJlbmFtZSB0byBzaW5nbGVfc2V0XzEKCShzaW5nbGVfc2V0KTogTmV3IG1hY3JvLgoJKiBydGxhbmFsLmMgKHNpbmdsZV9zZXQpOiBSZW5hbWUgdG8gc2luZ2xlX3NldF8xOyAgZXhwZWN0IGNsb2JiZXJzCgl0byBiZSBsYXN0LgoKCSogaTM4Ni5tZCAoc3RybW92c2lfMSwgc3RybW92aGlfMSBzdHJtb3ZxaV8xKToKCURvIG5vdCB1c2UgbWF0Y2hfZHVwIG9mIGlucHV0IG9wZXJhbmRzIGF0IG91dHB1dHMuCglVc2UgcmVnaXN0ZXJfb3BlcmFuZCBmb3IgbWVtb3J5IGV4cHJlc3Npb24uCgkocmVwX21vdnNpKTogUHV0IHVzZSBsYXN0LCBjYW5vbmljYWxpemUuCglVc2UgcmVnaXN0ZXJfb3BlcmFuZCBmb3IgbWVtb3J5IGV4cHJlc3Npb24uCgkocmVwX21vdnFpKTogUHV0IHVzZSBsYXN0LgoJVXNlIHJlZ2lzdGVyX29wZXJhbmQgZm9yIG1lbW9yeSBleHByZXNzaW9uLgoJKHN0cnNldHNpXzEsIHN0cnNldF9oaV8xLCBzdHJzZXRxaV8xKTogRG8gbm90IHVzZSBtYXRjaF9kdXAKCW9mIGlucHV0IG9wZXJhbmRzIGF0IG91dHB1dHMuICBVc2UgcmVnaXN0ZXJfb3BlcmFuZCBmb3IgbWVtb3J5CglleHByZXNzaW9uLgoJKHJlcF9zdG9zc2kpOiBQdXQgdXNlIGxhc3Q7IGNhbm9uaWNhbGl6ZTsgZml4IG1hdGNoX2R1cCBpbgoJdGhlIGFkZHJlc3MgZXhwcmVzc2lvbgoJKHJlcF9zdG9zcWkpOiBMaWtld2lzZS4KCShtZW1jbXAgZXhwYW5kZXIpOiBVcGRhdGUgY2FsbHMuCgkoY21wc3Ryc2lfbnpfMSwgY21wc3Ryc2lfMSwgc3RybGVuc2lfMSk6IEF2b2lkIG1hdGNoX2R1cHMgaW4KCXRoZSBjbG9iYmVycy4KCgkqIGkzODYubWQgKGZwX2pjY18zLCBmcF9qY2NfNCwganBfZmNjXzUpOiBpZl90aGVuX2Vsc2Ugb3BlcmFuZCBpcwoJVk9JRG1vZGUuCgkoZnBfamNjXzQsIGZwX2pjY18zKTogUmVmdXNlIHVub3JkZXJlZCBjb21wYXJpc29ucy4KCjIwMDAtMDktMjggIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLWFvdXQuaDogTmV3LCBGcmVlQlNEIGEub3V0IGNvbmZpZyBmaWxlLgoJQ29udGFpbnMgdGhlIG9sZCBjb250ZW50cyBvZiBjb25maWcvaTM4Ni9mcmVlYnNkLmgKCSogY29uZmlnL2kzODYvZnJlZWJzZC5oOiBOb3cgdGhlIEVMRiByYXRoZXIgdGhhbiBhLm91dCBjb25maWcgZmlsZS4KCUNvbnRhaW5zIHRoZSBvbGQgY29udGVudHMgb2YgY29uZmlnL2kzODYvZnJlZWJzZC1lbGYuaAoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLWVsZi5oOiBSZXRpcmUgdGhpcyBmaWxlIC0tIGNvbnRlbnRzIG1vdmVkIHRvCgljb25maWcvaTM4Ni9mcmVlYnNkLmguCgkqIGNvbmZpZ3VyZS5pbjogQWRqdXN0IGZvciBhYm92ZSBjaGFuZ2VzLgoJKiBwby9QT1RGSUxFUy5pbjogTGlrZXdpc2UuCgkqIHBvL2VuX0dCLnBvOiBMaWtld2lzZS4KCSogcG8vZ2NjLnBvdDogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDktMjggIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGRvbG9vcC5jIChkb2xvb3BfbW9kaWZ5KTogUHJldmVudCBkZWxldGVfaW5zbigpIGZyb20KCWRlbGV0aW5nIHRvbyBtdWNoLiAgUHJlZmVyIGxvb3AtPnRvcCBvdmVyIGxvb3AtPnN0YXJ0IGFzCgl0YXJnZXQgZm9yIHRoZSBuZXcgSlVNUCBpbnNuLgoJKGRvbG9vcF92YWxpZF9wKTogSWdub3JlIGxvb3Agd2l0aCBleGl0X2NvdW50ICE9IDAuCgoyMDAwLTA5LTI4ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGludm9rZS50ZXhpIChpMzg2IE9wdGlvbnMpOiBBZGQgYXRobG9uIHRvIHRhYmxlIG9mIHBvc3NpYmxlCgljaG9pY2VzIGZvciAtbWNwdT0uCgoyMDAwLTA5LTI4ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmggKG91dHB1dF9jbGVhcl9tZXNzYWdlX3RleHQpOiBOZXcgZnVuY3Rpb24uCgkob3V0cHV0X21lc3NhZ2VfdGV4dCk6IE5ldyBtYWNyby4KCgkqIGRpYWdub3N0aWMuYyAoY2xlYXJfdGV4dF9pbmZvKTogUmVuYW1lIHRvCglvdXRwdXRfY2xlYXJfbWVzc2FnZV90ZXh0LgoJKG91dHB1dF9jbGVhcik6IEFkanVzdC4KCShvdXRwdXRfZmluaXNoKTogUmVuYW1lIHRvIG91dHB1dF9maW5hbGl6ZV9tZXNzYWdlLiAgVHdlZWsuCgkob3V0cHV0X3RvX3N0cmVhbSk6IEFkanVzdC4KCjIwMDAtMDktMjggIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZXJyb3IuYyAoX2NwcF9iZWdpbl9tZXNzYWdlKTogIERvIHRoZSB0ZXN0IGZvciBzdXBwcmVzc2lvbgoJb2Ygd2FybmluZ3MgYW5kIHBlZGFudGljIHdhcm5pbmdzIGJlZm9yZSB0aGUgImlzIGEgd2FybmluZyBhbgoJZXJyb3IiIHRlc3RzLgoJKiBjcHBpbml0LmMgKGNwcF9oYW5kbGVfb3B0aW9uKTogUmVtb3ZlIHN1cnBsdXMgXG4uCgkqIGNwcGxleC5jIChPTl9SRVNUX0FSRyk6IERlbGV0ZS4KCShza2lwX2Jsb2NrX2NvbW1lbnQpOiBJbml0aWFsaXplIHByZXZjLgoJKHBhcnNlX2FyZ3MpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2VzLgoJKG1heWJlX3Bhc3RlX3dpdGhfbmV4dCk6IFVzZSBDT05URVhUX1ZBUkFSR1MgcmF0aGVyCgl0aGFuIE9OX1JFU1RfQVJHLgoJKiBjcHBsaWIuYyAoY3BwX3B1c2hfYnVmZmVyKTogRml4IGdyYW1tYXIgaW4gbWVzc2FnZS4KCSogY3BwbWFpbi5jIChtYWluKTogU2V0IGNhbGxiYWNrcyBmb3IgI2lkZW50IGFuZCAjcHJhZ21hCglvbmx5IGlmIG5vX291dHB1dCBvcHRpb24gaXMgZmFsc2UuCgkoZG9fcHJhZ21hX2ltcGxlbWVudGF0aW9uKTogT25seSBjYWxsIHRoZSAjcHJhZ21hIGhhbmRsZXIKCWlmIGl0IGlzIHNldCBpbiB0aGUgY3BwX3JlYWRlciBzdHJ1Y3R1cmUuCgpXZWQgU2VwIDI3IDE0OjAwOjA3IDIwMDAgIERvbmFsZCBMaW5kc2F5ICA8ZGxpbmRzYXlAY3lnbnVzLmNvbT4KCgkqIGludGVncmF0ZS5jIChjb3B5X2luc25fbGlzdCk6IGlmIGFuIGlnbm9yZWQgcmV0dXJuIHZhbHVlCglpcyBiZWluZyBjbG9iYmVyZWQsIHNraXAgY2xvbmluZyB0aGF0IGludG8gdGhlIGlubGluZSBjb3B5LgoKMjAwMC0wOS0yNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZXh0ZW5kLnRleGksIGludm9rZS50ZXhpLCBnY2MudGV4aSwgaW5zdGFsbC50ZXhpOiBDb25zaXN0ZW50bHkKCXVzZSBAdXJlZiBmb3IgZm9ybWF0dGluZyBVUkxzLgoKMjAwMC0wOS0yNyAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2RqZ3BwLmggKFVOSVFVRV9TRUNUSU9OKTogQ29uc3RpZnkgdGhlIHZhcmlhYmxlcwoJbmFtZSBhbmQgcHJlZml4LgoKVHVlIDI2LVNlcC0yMDAwIDE4OjI1OjM4IEJTVCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBnY2MuYyAoY3BwX29wdGlvbnMpOiBBZGQgc3BlYyBmb3IgLWZ0YWJzdG9wPS4KCShpbnZva2VfYXMpOiBOZXcgc3BlYyB0aGF0IGhhbmRsZXMgaW52b2tpbmcgYXMuCglVcGRhdGUgc3BlY3MgdG8gaGFuZGxlIC1zYXZlLXRlbXBzIGFuZCAtdHJhZGl0aW9uYWwuCgkqIGNoL2xhbmctc3BlY3MuaCwgZi9sYW5nLXNwZWNzLmgsIGphdmEvbGFuZy1zcGVjcy5oOgoJVXNlIGludm9rZV9hcy4KCSogY3AvbGFuZy1zcGVjcy5oLCBvYmpjL2xhbmctc3BlY3MuaDogVXBkYXRlIHRvIHVzZQoJaW52b2tlX2FzLCBhbmQgaGFuZGxlIC1zYXZlLXRlbXBzIGFuZCAtdHJhZGl0aW9uYWwgKGlmCglhcHByb3ByaWF0ZSkuCgoyMDAwLTA5LTI2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19lbWl0X3NldF9jb25zdDY0KTogRG9uJ3QgYWJvcnQgd2hlbgoJb3AwIGlzIGEgU1VCUkVHLgoJKGZ1bmN0aW9uX2FyZ19zbG90bm8pOiBBY2NlcHQgVEltb2RlL0NUSW1vZGUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChNSU5fVU5JVFNfUEVSX1dPUkQpOiBJZiBJTl9MSUJHQ0MyIGRlZmluZQoJdG8gVU5JVFNfUEVSX1dPUkQuCgoyMDAwLTA5LTI2ICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGZsb3dfbG9vcF9wcmVfaGVhZGVyX3NjYW4pOiBQdW50IGlmIGxvb3AgZW50ZXJzCglmcm9tIGVudHJ5IGJsb2NrLgoKMjAwMC0wOS0yNSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChJTkRFWF9SRUdfQ0xBU1MpOiBEZWZpbmUgdG8gR0VORVJBTF9SRUdTLgoJKFJFR05PX09LX0ZPUl9JTkRFWF9QKTogRGVmaW5lIHRvIFJFR05PX09LX0ZPUl9CQVNFX1AuCgkoTEVHSVRJTUFURV9BRERSRVNTX0RJU1ApOiBVc2UgTEVHSVRJTUFURV9BRERSRVNTX1JFRy4KCShSRUdfT0tfRk9SX0lOREVYKTogRGVmaW5lIHRvIFJFR19PS19GT1JfQkFTRV9QLgoKVHVlIDI2LVNlcC0yMDAwIDAwOjE2OjIyIEJTVCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAocGFyc2VfYXJncyk6IERvbid0IHNldCBWT0lEX1JFU1QgZmxhZy4KCShDT05URVhUX1ZBUkFSR1MpOiBOZXcgZmxhZy4KCShtYXliZV9wYXN0ZV93aXRoX25leHQpOiBTZXQgY29udGV4dCBlYXJsaWVyIGluIGxvb3AuICBVc2UKCWl0LiAgRG8gdmFyYXJncyB0ZXN0IHdpdGggQ09OVEVYVF9WQVJBUkdTIGZsYWcuCgkocHVzaF9hcmdfY29udGV4dCk6IFNldCBDT05URVhUX1ZBUkFSR1MgZmxhZyBpZiB3ZSdyZQoJcHVzaGluZyBhbiBhcmd1bWVudCBjb250ZXh0IGZvciBhIHZhcmFyZ3MgYXJndW1lbnQuCgkqIGNwcGxpYi5oIChWT0lEX1JFU1QpOiBEZWxldGUuCgkqIGdjYy5kZy9jcHAvdmFyYXJnMS5jOiBBZGQgdGVzdCBjYXNlLgoKMjAwMC0wOS0yNSAgQnJhbmtvIENpYmVqICA8YnJhbmtvLmNpYmVqQGhlcm1lcy5zaT4KCgkqIGZsYWdzLmg6ICBEZWNsYXJlIHdhcm5pbmcgZmxhZyB3YXJuX3N5c3RlbV9oZWFkZXJzLgoJKiB0b3BsZXYuYzogIERlZmluZSBpdC4KCShXX29wdGlvbnMpOiBBZGQgb3B0aW9uIC1Xc3lzdGVtLWhlYWRlcnMuCgkqIGRpYWdub3N0aWMuYyAoY291bnRfZXJyb3IpOiBUZXN0IHdhcm5fc3lzdGVtX2hlYWRlcnMuCgkqIGludm9rZS50ZXhpOiAgQWRkIGRlc2NyaXB0aW9uIGZvciAtV3N5c3RlbS1oZWFkZXJzLgoJKiBjcHBsaWIuaCAoY3BwX29wdGlvbnMpOiBOZXcgbWVtYmVyIHdhcm5fc3lzdGVtX2hlYWRlcnMuCgkqIGNwcGhhc2guaCAoQ1BQX1BFREFOVElDLCBDUFBfV1RSQURJVElPTkFMKTogRG9uJ3QgdGVzdAoJQ1BQX0lOX1NZU1RFTV9IRUFERVIuCgkqIGNwcGxpYi5jIChkb19pbXBvcnQsIGRvX3ByYWdtYV9vbmNlKTogTGlrZXdpc2UuCgkqIGNwcGVycm9yLmMgKF9jcHBfYmVnaW5fbWVzc2FnZSk6IFRlc3Qgd2Fybl9zeXN0ZW1faGVhZGVycwoJYW5kIENQUF9JTl9TWVNURU1fSEVBREVSLgoJKiBjcHBpbml0LmMgKGhhbmRsZV9vcHRpb24pOiBSZWNvZ25pemUgLVdzeXN0ZW1faGVhZGVycy4KCShwcmludF9oZWxwKTogRGVzY3JpYmUgLVdzeXN0ZW1faGVhZGVycy4KCSogY3BwbGV4LmMgKGxleF9saW5lKTogUmVvcmdhbml6ZSBjb25kaXRpb24gc28gdGhhdCB3YXJuaW5ncwoJYWJvdXQgQysrIGNvbW1lbnRzIGluIHN5c3RlbSBoZWFkZXJzIGNhbiBiZSBlbmFibGVkLiBSZW1vdmUKCWxhYmVsIGRvX2xpbmVfY29tbWVudC4KCk1vbiAyNS1TZXAtMjAwMCAyMzozODoyNyBCU1QgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKHNhdmVfY29tbWVudCk6IE9ubHkgc3RvcmUgdGhlIGluaXRpYWwgJy8nCglub3cuCgkobGV4X3Rva2VuKTogQ29tYmluZSBoYW5kbGluZyBvZiB0aGUgdHdvIGNvbW1lbnQgdHlwZXMuCglQYXNzIGV2ZXJ5dGhpbmcgYnV0IHRoZSBpbml0aWFsICcvJyB0byBzYXZlX2NvbW1lbnQuCgpNb24gMjUtU2VwLTIwMDAgMjM6MzE6NDUgQlNUICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guaCAoX2NwcF9kaWdyYXBoX3NwZWxsaW5ncywgX2NwcF9wcm9jZXNzX2RpcmVjdGl2ZSwKCV9jcHBfY2FuX3Bhc3RlKTogTmV3IGxpYnJhcnktaW50ZXJuYWwgcHJvdG90eXBlcy4KCSogY3BwbGV4LmMgKGR1bXBfcGFyYW1fc3BlbGxpbmcsIG91dHB1dF9saW5lX2NvbW1hbmQsCglvdXRwdXRfdG9rZW4sIGNwcF9zY2FuX2J1ZmZlciwgY3BwX3NjYW5fYnVmZmVyX25vb3V0cHV0LAoJY3BwX3ByaW50ZiwgY3BwX291dHB1dF9saXN0KTogTW92ZSB0byBjcHBvdXRwdXQuYy4KCShwcm9jZXNzX2RpcmVjdGl2ZSwgY2FuX3Bhc3RlLCBkaWdyYXBoX3NwZWxsaW5ncyk6IEFkZCBfY3BwXyBwcmVmaXguCgkqIGNwcG1hY3JvLmMgKGR1bXBfbWFjcm9fYXJncywgY3BwX2R1bXBfZGVmaW5pdGlvbikgTW92ZSB0bwoJY3Bwb3V0cHV0LmMuCgkqIGNwcG91dHB1dC5jIChkdW1wX21hY3JvX2FyZ3MsIGNwcF9kdW1wX2RlZmluaXRpb24sIG91dHB1dF90b2tlbiwKCWR1bXBfcGFyYW1fc3BlbGxpbmcsIG91dHB1dF9saW5lX2NvbW1hbmQsIGNwcF9zY2FuX2J1ZmZlciwKCWNwcF9zY2FuX2J1ZmZlcl9ub291dHB1dCwgY3BwX3ByaW50ZiwgY3BwX291dHB1dF9saXN0KTogTW92ZWQKCWZyb20gZWxzZXdoZXJlLgoJKiBNYWtlZmlsZS5pbjogQWRkIGNwcG91dHB1dC5jLgoJKiBwby9QT1RGSUxFUy5pbjogQWRkIGNwcG91dHB1dC5jLgoKMjAwMC0wOS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9wcmludF9vcGVyYW5kKTogRGVmaW5lICdlJyBhcyA2NC1uLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChyb3Ryc2kzKTogQWxsb3cgdmFyaWFibGUgcm90YXRlczsgZG9uJ3QKCXNwbGl0IHVudGlsIGFmdGVyIHJlbG9hZC4KCShyb3Rsc2kzLCByb3RsZGkzKTogTmV3LgoKMjAwMC0wOS0yNSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jIChvdXRwdXRfbGFzdF9wb3NpdGlvbik6IERlZmluZS4KCShzZXRfcmVhbF9tYXhpbXVtX2xlbmd0aCk6IFR3ZWVrLgoJKiBkaWFnbm9zdGljLmggKG91dHB1dF9sYXN0X3Bvc2l0aW9uKTogRGVjbGFyZS4KCjIwMDAtMDktMjUgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDktMjQgIEFsYW4gTGVob3Rza3kgIDxhbGVob3Rza3lAY3lnbnVzLmNvbT4KCgkqIGVtaXQtcnRsLWMgKGdlbl9sb3dwYXJ0X2NvbW1vbik6IEFjY2VwdCBub24tcGFyYWRveGljYWwgU1VCUkVHIHdoZW4KCVVOSVRTX1BFUl9XT1JEIGlzIHNtYWxsLgoKMjAwMC0wOS0yNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoZm9ybWF0X2NoYXJfaW5mbyk6IEFkZCBmbGFnczI7IHVwZGF0ZSBjb21tZW50cy4KCShwcmludF9jaGFyX3RhYmxlLCBzY2FuX2NoYXJfdGFibGUsIHRpbWVfY2hhcl90YWJsZSk6IFNwbGl0IHNvbWUKCWZsYWdzIG91dCBpbnRvIGZsYWdzMi4KCShjaGVja19mb3JtYXRfaW5mbyk6IFVzZSBmbGFnczIgZm9yIHRob3NlIGZsYWdzLCBmb3IgaWRlbnRpZnlpbmcKCXRoZSBpbml0aWFsIGNoYXJhY3RlciBvZiBhIHNjYW5mIHNjYW5zZXQsIGFuZCBmb3IgaWRlbnRpZnlpbmcKCXByaW50ZiBmb3JtYXRzIHdoZXJlIHRoZSAnMCcgZmxhZyBpcyBpZ25vcmVkIHdpdGggcHJlY2lzaW9uLgoKMjAwMC0wOS0yNSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJQ2hhbmdlcyBiZWxvdyBtYXJrZWQgImhlcmUiIGFkZCBUQUJzIG9uIGVpdGhlciBvciBib3RoIHNpZGVzLAoJY292ZXJpbmcgc3RhcnQgb2YgbGluZSwgdXAgdG8gYW55IG9wZXJhbmQgZm9yIGFsbCBub3RlZCAuKkFTTS4qX09QCglkZWZpbml0aW9ucy4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCgkqIHRtLnRleGk6IE1ha2UgZG9jdW1lbnRlZCAqX0FTTS4qX09QOnMgaW5jbHVkZSBzcGFjaW5nCgkoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwgU0hBUkVEX1NFQ1RJT05fQVNNX09QLAoJQlNTX1NFQ1RJT05fQVNNX09QLCBTSEFSRURfQlNTX1NFQ1RJT05fQVNNX09QLCBJTklUX1NFQ1RJT05fQVNNX09QLAoJQVNNX0JZVEVfT1AsIEZJTklfU0VDVElPTl9BU01fT1AsIEVIX0ZSQU1FX1NFQ1RJT05fQVNNX09QLAoJQVNNX1NUQUJTX09QLCBBU01fU1RBQkRfT1AsIEFTTV9TVEFCTl9PUCkuCglGaXggdHlwb3MgaW4gZGVzY3JpcHRpb24gZm9yIExPTkdfTE9OR19UWVBFX1NJWkUgYW5kCglGSU5JX1NFQ1RJT05fQVNNX09QLgoJKiBjcnRzdHVmZi5jIChDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1ApOiBFeHBsYWluCgl3aHkgdGhlc2UgZGVmYXVsdHMgZG9uJ3QgaGF2ZSBsZWFkaW5nIHNwYWNpbmcuCgkqIGRieG91dC5jIChBU01fU1RBQlNfT1AsIEFTTV9TVEFCTl9PUCk6IEhlcmUuCgkqIGR3YXJmMm91dC5jIChVTkFMSUdORURfU0hPUlRfQVNNX09QLCBVTkFMSUdORURfSU5UX0FTTV9PUCwKCVVOQUxJR05FRF9ET1VCTEVfSU5UX0FTTV9PUCwgU0VDVElPTl9BU01fT1AsIEFTTV9CWVRFX09QKTogSGVyZS4KCSogZHdhcmZvdXQuYyAoRklMRV9BU01fT1AsIFZFUlNJT05fQVNNX09QLAoJVU5BTElHTkVEX1NIT1JUX0FTTV9PUCwgVU5BTElHTkVEX0lOVF9BU01fT1AsIEFTTV9CWVRFX09QLAoJUFVTSFNFQ1RJT05fQVNNX09QLCBQT1BTRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGRlZmF1bHRzLmggKEFTTV9TVEFCRF9PUCwgRUhfRlJBTUVfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiB2YXJhc20uYyAoQVNNX1NUQUJTX09QKTogSGVyZS4KCSogeGNvZmZvdXQuaCAoQVNNX1NUQUJTX09QKTogSGVyZS4KCSogY29uZmlnL2VsZm9zLmggKElERU5UX0FTTV9PUCwgQVNNX0JZVEVfT1AsIFNFVF9BU01fT1AsCglTS0lQX0FTTV9PUCwgQUxJR05fQVNNX09QLCBDT01NT05fQVNNX09QLCBMT0NBTF9BU01fT1AsCglJTlRfQVNNX09QLCBBU0NJSV9EQVRBX0FTTV9PUCwgVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLAoJU1RSSU5HX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9mcmVlYnNkLmggKElERU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9saW51eC1hb3V0LmggKFNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbGludXguaCAoU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9seW54LmggKENUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCwKCUlOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbmV0YnNkLmggKFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCwgU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9uZXh0c3RlcC5oIChFSF9GUkFNRV9TRUNUSU9OX0FTTV9PUCwgQUxJR05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL29wZW5ic2QuaCAoVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLCBTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3Bzb3MuaCAoQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QLAoJSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9wdHg0LmggKElERU5UX0FTTV9PUCwgQVNNX0JZVEVfT1AsIFNFVF9BU01fT1AsCglTS0lQX0FTTV9PUCwgQUxJR05fQVNNX09QLCBDT01NT05fQVNNX09QLCBMT0NBTF9BU01fT1AsCglJTlRfQVNNX09QLCBBU0NJSV9EQVRBX0FTTV9PUCwgQ09OU1RfU0VDVElPTl9BU01fT1AsCglDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1AsIElOSVRfU0VDVElPTl9BU01fT1AsCglGSU5JX1NFQ1RJT05fQVNNX09QLCBUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AgU1RSSU5HX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9zdnIzLmggKElOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1AsCglDT05TVF9TRUNUSU9OX0FTTV9PUCwgQVNNX0JZVEVfT1ApOiBIZXJlLgoJKiBjb25maWcvYTI5ay91ZGkuaCAoSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1pbnRlcml4LmggKENPTlNUX1NFQ1RJT05fQVNNX09QLAoJQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QLCBJTlRfQVNNX09QLAoJU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChURVhUX1NFQ1RJT05fQVNNX09QLAoJUkVBRE9OTFlfREFUQV9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwKCVVOQUxJR05FRF9TSE9SVF9BU01fT1AsIFVOQUxJR05FRF9JTlRfQVNNX09QLAoJVU5BTElHTkVEX0RPVUJMRV9JTlRfQVNNX09QLCBBU01fU1RBQlNfT1AsIEFTTV9TVEFCTl9PUCwKCUFTTV9TVEFCRF9PUCk6IEhlcmUuCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoSURFTlRfQVNNX09QLCBTS0lQX0FTTV9PUCwgQUxJR05fQVNNX09QLAoJQ09NTU9OX0FTTV9PUCwgSU5UX0FTTV9PUCwgQVNDSUlfREFUQV9BU01fT1AsCglDT05TVF9TRUNUSU9OX0FTTV9PUCwgQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QLAoJQlNTX1NFQ1RJT05fQVNNX09QLCBTQlNTX1NFQ1RJT05fQVNNX09QLCBTREFUQV9TRUNUSU9OX0FTTV9PUCwKCUlOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1AsIFRZUEVfQVNNX09QLAoJU0laRV9BU01fT1AsIFNUUklOR19BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvYWxwaGEvdm1zLmggKExJTktfU0VDVElPTl9BU01fT1AsCglSRUFET05MWV9TRUNUSU9OX0FTTV9PUCwgTElURVJBTFNfU0VDVElPTl9BU01fT1AsCglDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1AsIENPTU1PTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvYXJjL2FyYy5oIChBU01fQllURV9PUCwgU0VUX0FTTV9PUCk6IEhlcmUuCgkoUFVTSFNFQ1RJT05fQVNNX09QKTogRGVmaW5lIHRoaXMsIG5vdCBQVVNIU0VDVElPTl9GT1JNQVQuCgkqIGNvbmZpZy9hcm0vYW9mLmggKENUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvYXJtL2FvdXQuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwKCUJTU19TRUNUSU9OX0FTTV9PUCwgU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9hcm0vY29mZi5oIChJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2FybS9jb25peC1lbGYuaCAoVU5BTElHTkVEX1dPUkRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2FybS9lbGYuaCAoVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLCBJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2FybS9saW51eC1lbGYuaCAoSURFTlRfQVNNX09QLCBDT05TVF9TRUNUSU9OX0FTTV9PUCwKCUlOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvYXJtL3Vua25vd24tZWxmLmggKFVOQUxJR05FRF9XT1JEX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9hdnIvYXZyLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsCglBU01fQllURV9PUCwgVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLCBXRUFLX0FTTV9PUCwKCVNUUklOR19BU01fT1ApOiBIZXJlLiAgVXBkYXRlIGRvY3VtZW50YXRpb24gY29weSBpbiBjb21tZW50cy4KCSogY29uZmlnL2M0eC9jNHguaCAoQVNNX1NUQUJTX09QLCBCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvY2xpcHBlci9jbGlwcGVyLmggKFRFWFRfU0VDVElPTl9BU01fT1AsCglEQVRBX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2NsaXBwZXIvY2xpeC5oIChCU1NfU0VDVElPTl9BU01fT1AsIElOSVRfU0VDVElPTl9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL2NvbnZleC9jb252ZXguaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwKCURBVEFfU0VDVElPTl9BU01fT1AsIEJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9kMzB2L2QzMHYuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwKCUJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9mcjMwL2ZyMzAuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwKCUJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9meDgwL2Z4ODAuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvZ21pY3JvL2dtaWNyby5oIChURVhUX1NFQ1RJT05fQVNNX09QLAoJREFUQV9TRUNUSU9OX0FTTV9PUCwgQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKEFTTV9XT1JEX09QKTogSGVyZS4KCSogY29uZmlnL2kzNzAvaTM3MC5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLAoJQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvYWl4Mzg2LmggKElOSVRfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9ic2QuaCAoQVNNX0JZVEVfT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9jeWd3aW4uaCAoU0VUX0FTTV9PUCwgSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L2RndXguaCAoQ09OU1RfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9kamdwcC5oIChJREVOVF9BU01fT1AsIElOVF9BU01fT1AsIFNFVF9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL2kzODYvZnJlZWJzZC1lbGYuaCAoU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L2ZyZWVic2QuaCAoVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLCBJTlRfQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9pMzg2L2kzODYtY29mZi5oIChDVE9SU19TRUNUSU9OX0FTTV9PUCwKCURUT1JTX1NFQ1RJT05fQVNNX09QLCBJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvaTM4Ni1pbnRlcml4LmggKFNUUklOR19BU01fT1AsIENPTlNUX1NFQ1RJT05fQVNNX09QLAoJQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QLCBJTlRfQVNNX09QLAoJU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L2kzODZlbGYuaCAoQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvbmV0YnNkLmggKElOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9vcGVuYnNkLmggKElOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9vc2Zyb3NlLmggKFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCwgU0VUX0FTTV9PUCwKCUlERU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L3NjbzUuaCAoQUxJR05fQVNNX09QLCBBU0NJSV9EQVRBX0FTTV9PUCwKCUFTTV9CWVRFX09QLCBJREVOVF9BU01fT1AsIENPTU1PTl9BU01fT1AsIFNFVF9BU01fT1AsCglMT0NBTF9BU01fT1AsIElOVF9BU01fT1AsIFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCwgU1RSSU5HX0FTTV9PUCwKCVNLSVBfQVNNX09QLCBHTE9CQUxfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvc2VxLXN5c3YzLmggKFNIQVJFRF9TRUNUSU9OX0FTTV9PUCwKCVNIQVJFRF9CU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9zZXF1ZW50LmggKFNIQVJFRF9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L3N1bjM4Ni5oIChBU01fQllURV9PUCwgVEVYVF9TRUNUSU9OX0FTTV9PUCwKCURBVEFfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9zdnIzZ2FzLmggKElOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1AsCglDT05TVF9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L3N5c3YzLmggKElOSVRfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni91bml4LmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsCglCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTg2MC9ic2QtZ2FzLmggKEFTQ0lJX0RBVEFfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2k4NjAvYnNkLmggKEFTQ0lJX0RBVEFfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2k4NjAvZngyODAwLmggKEFTTV9TVEFCU19PUCwgQVNNX1NUQUJOX09QLCBBU01fU1RBQkRfT1AsCglCU1NfQVNNX09QKTogSGVyZSwgYnV0IHVzZSB0cmFpbGluZyBzcGFjZXMuCgkqIGNvbmZpZy9pODYwL2k4NjAuaCAoQVNNX0JZVEVfT1AsIFRFWFRfU0VDVElPTl9BU01fT1AsCglEQVRBX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2k4NjAvcGFyYWdvbi5oIChBU0NJSV9EQVRBX0FTTV9PUCwgQlNTX1NFQ1RJT05fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9pODYwL3N5c3YzLmggKEFTQ0lJX0RBVEFfQVNNX09QLCBDVE9SU19TRUNUSU9OX0FTTV9PUCwKCURUT1JTX1NFQ1RJT05fQVNNX09QLCBUREVTQ19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pODYwL3N5c3Y0LmggKENUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCwKCVRERVNDX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2k5NjAvaTk2MC1jb2ZmLmggKENUT1JTX1NFQ1RJT05fQVNNX09QLAoJRFRPUlNfU0VDVElPTl9BU01fT1AsIElOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTk2MC9pOTYwLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLAoJQlNTX1NFQ1RJT05fQVNNX09QLCBFSF9GUkFNRV9TRUNUSU9OX0FTTV9PUCwKCVVOQUxJR05FRF9TSE9SVF9BU01fT1AsIFVOQUxJR05FRF9JTlRfQVNNX09QLAoJVU5BTElHTkVEX0RPVUJMRV9JTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2lhNjQvc3lzdjQuaCAoQVNNX0JZVEVfT1AsIFNUUklOR19BU01fT1AsIFNLSVBfQVNNX09QLAoJQ09NTU9OX0FTTV9PUCwgQVNDSUlfREFUQV9BU01fT1AsIElOSVRfU0VDVElPTl9BU01fT1AsCglGSU5JX1NFQ1RJT05fQVNNX09QLCBDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1AsCglTREFUQV9TRUNUSU9OX0FTTV9PUCwgU0JTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoU0NPTU1PTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmggKEdMT0JBTF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9hdXhhcy5oIChCWVRFX0FTTV9PUCwgV09SRF9BU01fT1AsIExPTkdfQVNNX09QLAoJU1BBQ0VfQVNNX09QLCBBTElHTl9BU01fT1AsIEdMT0JBTF9BU01fT1AsIFNXQkVHX0FTTV9PUCwKCVNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9jb2ZmLmggKEJTU19TRUNUSU9OX0FTTV9PUCwgQ1RPUlNfU0VDVElPTl9BU01fT1AsCglEVE9SU19TRUNUSU9OX0FTTV9PUCwgSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL2NyZHMuaCAoQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvZHB4Mi5oIChBU01fQllURV9PUCwgR0xPQkFMX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL2hwMzIwLmggKEFTQ0lJX0RBVEFfQVNNX09QLCBHTE9CQUxfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvbGludXguaCAoQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvbHlueC5oIChCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsCglHTE9CQUxfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvbTY4a2VsZi5oIChTV0JFR19BU01fT1AsIEJTU19BU01fT1AsCglCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9tNjhrdjQuaCAoQlNTX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL21vdDMzMDAuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwKCUFTQ0lJX0RBVEFfQVNNX09QLCBTRVRfQVNNX09QLCBDVE9SU19TRUNUSU9OX0FTTV9PUCwKCURUT1JTX1NFQ1RJT05fQVNNX09QLCBHTE9CQUxfQVNNX09QLCBBU01fQllURV9PUCwgQUxJR05fQVNNX09QLAoJU0tJUF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9uZXdzZ2FzLmggKFNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9ydGVtc2VsZi5oIChJTklUX1NFQ1RJT05fQVNNX09QLAoJRklOSV9TRUNUSU9OX0FTTV9PUCwgRUhfRlJBTUVfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9zZ3MuaCAoQllURV9BU01fT1AsIFdPUkRfQVNNX09QLCBMT05HX0FTTV9PUCwKCVNQQUNFX0FTTV9PUCwgQUxJR05fQVNNX09QLCBHTE9CQUxfQVNNX09QLCBTV0JFR19BU01fT1AsCglTRVRfQVNNX09QLCBVTkFMSUdORURfU0hPUlRfQVNNX09QLCBVTkFMSUdORURfSU5UX0FTTV9PUCk6IEhlcmUsCglidXQgdXNlIHRyYWlsaW5nIHNwYWNlcy4KCSogY29uZmlnL202OGsvdG93ZXItYXMuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwKCURBVEFfU0VDVElPTl9BU01fT1AsIEdMT0JBTF9BU01fT1AsIElOSVRfU0VDVElPTl9BU01fT1AsCglGSU5JX1NFQ1RJT05fQVNNX09QLCBDT05TVF9TRUNUSU9OX0FTTV9PUCwgQlNTX1NFQ1RJT05fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9tODhrL2RndXguaCAoRklOSV9TRUNUSU9OX0FTTV9PUCwgSU5JVF9TRUNUSU9OX0FTTV9PUCwKCUNUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tODhrL204OGsuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwKCUNPTlNUX1NFQ1RJT05fQVNNX09QLCBUREVTQ19TRUNUSU9OX0FTTV9PUCwgQ1RPUlNfU0VDVElPTl9BU01fT1AsCglEVE9SU19TRUNUSU9OX0FTTV9PUCwgSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCwKCUlERU5UX0FTTV9PUCwgRklMRV9BU01fT1AsIFNFQ1RJT05fQVNNX09QLCBTRVRfQVNNX09QLAoJR0xPQkFMX0FTTV9PUCwgQUxJR05fQVNNX09QLCBTS0lQX0FTTV9PUCwgQ09NTU9OX0FTTV9PUCwKCUJTU19BU01fT1AsIEZMT0FUX0FTTV9PUCwgRE9VQkxFX0FTTV9PUCwgSU5UX0FTTV9PUCwgU0hPUlRfQVNNX09QLAoJQ0hBUl9BU01fT1AsIEFTQ0lJX0RBVEFfQVNNX09QLCBTQlNTX0FTTV9PUCwgU0NPTU1fQVNNX09QLAoJU0RBVEFfU0VDVElPTl9BU01fT1AsIFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCwgSU5URVJOQUxfQVNNX09QLAoJVkVSU0lPTl9BU01fT1AsIFVOQUxJR05FRF9TSE9SVF9BU01fT1AsIFVOQUxJR05FRF9JTlRfQVNNX09QLAoJUFVTSFNFQ1RJT05fQVNNX09QLCBQT1BTRUNUSU9OX0FTTV9PUCwgUkVRVUlSRVNfODgxMTBfQVNNX09QLAoJQVNNX0JZVEVfT1ApOiBIZXJlLgoJKiBjb25maWcvbTg4ay9vcGVuYnNkLmggKFNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTg4ay9zeXN2NC5oIChJTklUX1NFQ1RJT05fQVNNX09QLCBGSU5JX1NFQ1RJT05fQVNNX09QLAoJQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL21jb3JlL21jb3JlLWVsZi5oIChVTkFMSUdORURfSU5UX0FTTV9PUCwKCVVOQUxJR05FRF9TSE9SVF9BU01fT1AsIENUT1JTX1NFQ1RJT05fQVNNX09QLAoJRFRPUlNfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUtcGUuaCAoQ1RPUlNfU0VDVElPTl9BU01fT1AsCglEVE9SU19TRUNUSU9OX0FTTV9PUCwgSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9taXBzL2VsZi5oIChUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AsCglCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbWlwcy9lbGY2NC5oIChUWVBFX0FTTV9PUCwgU0laRV9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbWlwcy9pcmlzNS5oIChBQklDQUxMU19BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AsCglQT1BTRUNUSU9OX0FTTV9PUCwgQlNTX1NFQ1RJT05fQVNNX09QLCBDT05TVF9TRUNUSU9OX0FTTV9PUF8zMiwKCUNPTlNUX1NFQ1RJT05fQVNNX09QXzY0LCBDVE9SU19TRUNUSU9OX0FTTV9PUCwKCURUT1JTX1NFQ1RJT05fQVNNX09QLCBFSF9GUkFNRV9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoQUJJQ0FMTFNfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChBU01fU1RBQlNfT1AsIEFTTV9TVEFCTl9PUCwgQVNNX1NUQUJEX09QKToKCUhlcmUuCgkqIGNvbmZpZy9taXBzL25ldGJzZC5oIChUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AsIFdFQUtfQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9taXBzL29zZnJvc2UuaCAoU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9taXBzL3NuaS1zdnI0LmggKEFCSUNBTExTX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9uczMyay9lbmNvcmUuaCAoU0hBUkVEX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL25zMzJrL21lcmxpbi5oIChTSEFSRURfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbnMzMmsvbnMzMmsuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvbnMzMmsvc2VxdWVudC5oIChTSEFSRURfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbnMzMmsvdGVrNjAwMC5oIChTSEFSRURfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvcGEvcGEtNjQuaCAoSU5UX0FTTV9PUCwgVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3BhL3BhLmggKEFTTV9TVEFCU19PUCwgQVNNX1NUQUJOX09QKTogSGVyZS4KCSogY29uZmlnL3BqL3BqLmggKFNFVF9BU01fT1AsIEJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9weXIvcHlyLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL3JvbXAvcm9tcC5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvcnM2MDAwL3NvbDIuaCAoQVNNX1NUQUJOX09QKTogSGVyZS4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChTS0lQX0FTTV9PUCwgTE9DQUxfQVNNX09QLCBMQ09NTV9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL3NoL3NoLmggKFNFVF9BU01fT1AsIEJTU19TRUNUSU9OX0FTTV9PUCwKCVVOQUxJR05FRF9TSE9SVF9BU01fT1AsIFVOQUxJR05FRF9JTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4LmggKENPTU1PTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oIChDT01NT05fQVNNX09QLAoJVU5BTElHTkVEX0RPVUJMRV9JTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3NwYXJjL2xpdGVjb2ZmLmggKEJTU19TRUNUSU9OX0FTTV9PUCwKCUNUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCwgSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9zcGFyYy9seW54LmggKEJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9zcGFyYy9wYmQuaCAoQVNNX0lOVF9PUCk6IEhlcmUuCgkqIGNvbmZpZy9zcGFyYy9zcDY0LWVsZi5oIChVTkFMSUdORURfTE9OR0xPTkdfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKEFTTV9CWVRFX09QLCBURVhUX1NFQ1RJT05fQVNNX09QLAoJREFUQV9TRUNUSU9OX0FTTV9PUCwgSURFTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3NwYXJjL3N1bjRnYXMuaCAoVU5BTElHTkVEX0RPVUJMRV9JTlRfQVNNX09QLAoJVU5BTElHTkVEX0lOVF9BU01fT1AsIFVOQUxJR05FRF9TSE9SVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvc3BhcmMvc3lzdjQuaCAoU1RSSU5HX0FTTV9PUCwgQ09NTU9OX0FTTV9PUCwgU0tJUF9BU01fT1AsCglVTkFMSUdORURfRE9VQkxFX0lOVF9BU01fT1AsIFVOQUxJR05FRF9JTlRfQVNNX09QLAoJVU5BTElHTkVEX1NIT1JUX0FTTV9PUCwgUFVTSFNFQ1RJT05fQVNNX09QLCBQT1BTRUNUSU9OX0FTTV9PUCwKCVRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsIEJTU19TRUNUSU9OX0FTTV9PUCwKCUNPTlNUX1NFQ1RJT05fQVNNX09QLCBJTklUX1NFQ1RJT05fQVNNX09QLCBGSU5JX1NFQ1RJT05fQVNNX09QLAoJQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QLAoJRUhfRlJBTUVfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvc3BhcmMvdnhzaW0uaCAoQ09NTU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9zcHVyL3NwdXIuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvdGFob2UvdGFob2UuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvdjg1MC92ODUwLmggKFNDT01NT05fQVNNX09QLCBaQ09NTU9OX0FTTV9PUCwKCVRDT01NT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3ZheC92YXguaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvd2UzMmsvd2UzMmsuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwKCUFTTV9CWVRFX09QKTogSGVyZS4KCjIwMDAtMDktMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBleHBtZWQuYyAoc3RvcmVfYml0X2ZpZWxkKTogQWRqdXN0IGxhc3QgY2hhbmdlIHRvIG5vdCBjb25zaWRlcgoJYW55IHdvcmQtc2l6ZWQgZmllbGQgbmF0dXJhbGx5IGFsaWduZWQuCgoyMDAwLTA5LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfY29uZGl0aW9uYWxfYnJhbmNoKTogSGFuZGxlCglURm1vZGUgdW5vcmRlcmVkIGNvbXBhcmVzIHByb3Blcmx5LiAgUmV2YWxpZGF0ZSBpbnRlZ2VyIGNvbXBhcmUKCW9wZXJhbmRzLgoJKGFscGhhX2VtaXRfc2V0Y2MpOiBOZXcuCgkoYWxwaGFfZW1pdF9jb25kaXRpb25hbF9tb3ZlKTogUmV2YWxpZGF0ZSBpbnRlZ2VyIGNvbXBhcmUgb3BlcmFuZHMuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaDogVXBkYXRlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKGNtcGRpKTogQWxsb3cgZ2VuZXJhbCBvcGVyYW5kcy4KCShzbmUpOiBVc2UgYWxwaGFfZW1pdF9zZXRjYy4KCShzZXEsIHNsdCwgc2xlLCBzZ3QsIHNnZSwgc2x0dSwgc2xldSwgc2d0dSwgc2dldSk6IExpa2V3aXNlLgoJKHN1bm9yZGVyZWQsIHNvcmRlcmVkKTogTmV3LgoKMjAwMC0wOS0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChjYWxsX211bHRpcGxlX3ZhbHVlc19vcGVyYXRpb24pOiBSZW1vdmUuCgkoaWE2NF9leHBhbmRfY2FsbCk6IE5ldy4KCShpYTY0X2V4cGFuZF9wcm9sb2d1ZSk6IEVtaXQgYW4gYWxsb2MgaWYgd2UgbmVlZCBleHRyYSBpbnB1dAoJcmVnaXN0ZXJzLgoJKGlhNjRfZXhwYW5kX2VwaWxvZ3VlKTogTmV3IGFyZyBzaWJjYWxsX3A7IGRvbid0IGVtaXQgdGhlIHJldHVybgoJaW5zdHJ1Y3Rpb24gaWYgdHJ1ZS4KCShzdHJ1Y3QgcmVnX2ZsYWdzKTogQWRkIGlzX3NpYmNhbGwuCgkocnR4X25lZWRzX2JhcnJpZXIpOiBBIHNpYmNhbGwgZG9lcyBub3QgdXNlIENGTSBldCBhbC4gIElnbm9yZSBVU0VzLgoJKGVtaXRfaW5zbl9ncm91cF9iYXJyaWVycyk6IFNldCBmbGFncy5pc19zaWJjYWxsLiAgUmVtb3ZlIGhhY2tzCglmb3IgQ09ERV9GT1JfZ3Jfc3BpbGxfaW50ZXJuYWwvQ09ERV9GT1JfZ3JfcmVzdG9yZV9pbnRlcm5hbC4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGNhbGwpOiBVc2UgaWE2NF9leHBhbmRfY2FsbC4KCShjYWxsX3ZhbHVlKTogTGlrZXdpc2UuCgkoc2liY2FsbCwgc2liY2FsbF92YWx1ZSk6IE5ldy4KCShjYWxsIHBhdHRlcm5zKTogUmVtb3ZlIGV4dHJhIGV4cGFuZGVyczsgdGlkeS4KCShzaWJjYWxsX2VwaWxvZ3VlKTogTmV3LgoJKHNldF9ic3ApOiBSZW1vdmUgdGhlIGV4dHJhIFVTRS4gIFB1dCB0aGUgb3BlcmFuZCBpbnNpZGUgdGhlIFVOU1BFQy4KCjIwMDAtMDktMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbWl0LXJ0bC5jIChnZW5fbG93cGFydF9jb21tb24pOiBVc2UgdHJ1bmNfaW50X2Zvcl9tb2RlLgoKCSogc2liY2FsbC5jIChza2lwX3BpY19yZXN0b3JlKTogTmV3LgoJKGlkZW50aWZ5X2NhbGxfcmV0dXJuX3ZhbHVlKTogVXNlIGl0LgoKMjAwMC0wOS0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHJlZS50ZXhpOiBNb3ZlZCBoZXJlIGZyb20gY3AvaXIudGV4aS4gIERvY3VtZW50ZWQgbmVzdGVkCglmdW5jdGlvbnMuICBHZW5lcmFsaXplIHRvIGhhbmRsZSBib3RoIEMgYW5kIEMrKy4KCSogTWFrZWZpbGUuaW4gKGMtdHJlZS5pbmZvKTogTmV3IHRhcmdldC4KCShpbmZvKTogQWRkIGMtdHJlZS5pbmZvLgoKU3VuIFNlcCAyNCAwOToxNTo0OCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChzdG9yZV9maWVsZCk6IElmIEJJVFNJWkUgaXMgbmVnYXRpdmUsIHVzZSBzaXplIG9mIHR5cGUuCgkoZXhwYW5kX2V4cHIsIGNhc2UgQ09NUE9ORU5UX0VYUFIpOiBMaWtld2lzZS4KClN1biAyNC1TZXAtMjAwMCAxMTo0MDoyMyBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmM6IFVwZGF0ZSBUT0RPIGNvbW1lbnQuCgkqIGNwcGxpYi5jIChkb19lcnJvciwgZG9fd2FybmluZyk6IE1lcmdlIGNvbW1vbiBjb2RlIG9mCglkb19lcnJvciBhbmQgZG9fd2FybmluZwlpbnRvIGRvX2RpYWdub3N0aWMuICBVc2UgaXQuCgkoZG9fZGlhZ25vc3RpYyk6IE5ldyBmdW5jdGlvbi4KCSogY3BwbGliLmg6IEZpeCBjb21tZW50IHR5cG8uCgoyMDAwLTA5LTI0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChjaGVja19mb3JtYXRfaW5mbyk6IFdhcm4gZm9yIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nCgl1c2VkIGFzIGEgbm9uLXdpZGUgZm9ybWF0IGFyZ3VtZW50LgoKMjAwMC0wOS0yNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9MTEFCUyk6IEFkZC4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pOiBBbHNvIGFib3J0IG9uIEJVSUxUX0lOX0xMQUJTLgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19idWlsdGlucyk6IENyZWF0ZSBidWlsdGluIGZ1bmN0aW9ucwoJX19idWlsdGluX2xsYWJzLCBhbmQgcGxhaW4gbGxhYnMgdW5sZXNzIG5vX25vbmFuc2lfYnVpbHRpbnMKCW91dHNpZGUgb2YgQzk5IG1vZGUuCgkoZXhwYW5kX3RyZWVfYnVpbHRpbik6IEhhbmRsZSBCVUlMVF9JTl9MTEFCUy4KClNhdCAyMy1TZXAtMjAwMCAyMjozOToxOCBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaGFzaC5oIChDUFBfUkVTRVJWRSwgQ1BQX1BVVFNfUSwgQ1BQX1BVVFMsIENQUF9QVVRDX1EsCglDUFBfUFVUQywgRFVNTVlfVE9LRU4sIE5PX0RVTU1ZX1RPS0VOKTogRGVsZXRlLgoJKiBjcHBsZXguYyAoX2NwcF9leHBhbmRfdG9rZW5fc3BhY2UsIF9jcHBfaW5pdF90b2tsaXN0LAoJX2NwcF9mcmVlX3Rva2xpc3QpOiBObyBuZWVkIHRvIHdvcnJ5IGFib3V0IGV4dHJhIGR1bW15IHRva2VuCglhdCB0aGUgc3RhcnQgb2YgdG9rZW4gbGlzdHMgYW55IG1vcmUuCgkodHJpZ3JhcGhfb2spOiBPbmx5IHdhcm4gb3V0c2lkZSBjb21tZW50cy4KCShza2lwX2Jsb2NrX2NvbW1lbnQpOiBTZXQgYW5kIGNsZWFyIGxleGluZ19jb21tZW50LgoJKHNraXBfbGluZV9jb21tZW50KTogVGFrZSBhIGNwcF9yZWFkZXIgbm90IGNwcF9idWZmZXIuCglTZXQgYW5kIGNsZWFyIGxleGluZ19jb21tZW50LgoJKHBhcnNlX251bWJlcik6IEhhbmRsZSBsZWFkaW5nICcuJyBpbmRpY2F0ZWQgYnkgcGZpbGUtPnNlZW5fZG90LgoJKGNoZWNrX2xvbmdfdG9rZW4pOiBEZWxldGUuCgkobGV4X3BlcmNlbnQsIGxleF9kb3QpOiBOZXcgc3Vicm91dGluZXMgb2YgbGV4X3Rva2VuIHRvCgloYW5kbGUgbGV4aW5nIG9mICcuJyBhbmQgJyUnIHdpdGhvdXQgbG9va2JhY2suCgkobGV4X3Rva2VuKTogVXNlIGxleF9kb3QgYW5kIGxleF9wZXJjZW50LgoJKGxleF9saW5lKTogRG9uJ3QgY2hlY2sgZm9yIExJU1RfT0ZGU0VULgoJKF9jcHBfaW5pdF9pbnB1dF9idWZmZXIpOiBVcGRhdGUgZm9yIG5ldyBfY3BwX2luaXRfdG9rbGlzdC4KCSogY3BwbGliLmMgKF9jcHBfcGFyc2VfYXNzZXJ0aW9uKTogU2ltaWxhcmx5LgoJKGNwcF9wdXNoX2J1ZmZlcik6IEluaXRpYWxpemUgZXh0cmFfY2hhci4KCSogY3BwbGliLmggKExJU1RfT0ZGU0VUKTogRGVsZXRlLgoJKHN0cnVjdCBjcHBfYnVmZmVyKTogTmV3IG1lbWJlciBleHRyYV9jaGFyLgoJKHN0cnVjdCBsZXhlcl9zdGF0ZSk6IE5ldyBtZW1iZXJzIGxleGluZ19jb21tZW50IGFuZCBzZWVuX2RvdC4KCjIwMDAtMDktMjMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC94LWFpeDQxIChDTElCKTogRGVmaW5lIGhlcmUuCgkqIGNvbmZpZy9yczYwMDAvdC1haXg0MzogTm90IGhlcmUuCgkqIGNvbmZpZy9yczYwMDAvdC1haXg0MTogT3IgaGVyZS4gIFJlbW92ZS4KCSogY29uZmlndXJlLmluOiBEb24ndCB1c2UgaXQuCgoyMDAwLTA5LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHRlc3QgZm9yIEhBVkVfTERfRFdBUkZfTElOS09OQ0UuCgkqIHRvcGxldi5jOiBVc2UgaXQgdG8gaW5pdGlhbGl6ZSBmbGFnX2VsaW1pbmF0ZV9kd2FyZjJkdXBzLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoJKiBjb25maWd1cmUuaW46IEZpeCBjaGVja3MgZm9yIGFzc2VtYmxlciBmZWF0dXJlcyB3aGVuIHVzaW5nIGEKCW9uZS10cmVlIGFzc2VtYmxlciB0aGF0IGhhcyBub3QgeWV0IGJlZW4gYnVpbHQuCglGaXggLS1kaXNhYmxlLXRocmVhZHMuCgoyMDAwLTA5LTE5ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBzdG10LmMgKGV4cGFuZF9hc21fb3BlcmFuZHMpOiBBbGxvdyAjIGluIGNvbnN0cmFpbnRzLgoKMjAwMC0wOS0yMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjLWxleC5jIChza2lwX3doaXRlX3NwYWNlKTogSnVzdCB0cmVhdCBDUnMgYXMgaG9yaXpvbnRhbCB3aGl0ZXNwYWNlLgoKCSogZGJ4b3V0LmMgKGRieG91dF9zeW1ib2xfbmFtZSk6IEp1c3QgdXNlIERFQ0xfTkFNRSBmb3IKCWZ1bmN0aW9uLWxvY2FsIG5hbWVzLgoKMjAwMC0wOS0yMiAgQnJhZCBMdWNpZXIgPGx1Y2llckBtYXRoLnB1cmR1ZS5lZHU+CgkgICAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRvcGxldi5jICh3YXJuX2Rpc2FibGVkX29wdGltaXphdGlvbik6IERlY2xhcmUgbmV3IHdhcm5pbmcgZmxhZy4KCSogZmxhZ3MuaCAod2Fybl9kaXNhYmxlZF9vcHRpbWl6YXRpb24pOiBBZGQgaXQgaGVyZS4KCSogZ2NzZS5jIChnY3NlX21haW4pOiBBZGQgd2FybmluZyB3aGVuIGRpc2FibGVkLgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQgLVdkaXNhYmxlZC1vcHRpbWl6YXRpb24uCgoyMDAwLTA5LTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChhZGRfY29uc3RfdmFsdWVfYXR0cmlidXRlKTogTXVsdGlwbHkgYnkgbGVuZ3RoLCBub3QgNC4KCgkqIGR3YXJmMm91dC5jICh0cmVlX2FkZF9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBOZXcgZm4uCgkoZ2VuX3ZhcmlhYmxlX2RpZSk6IENhbGwgaXQgZm9yIG5vbi1kZWZpbml0aW9ucy4KCgkqIGR3YXJmMm91dC5jIChkaWVfc3RydWN0KTogQWRkIGRpZV9tYXJrIGZpZWxkLgoJKG1hcmtfZGllcywgdW5tYXJrX2RpZXMpOiBOZXcgZm5zLgoJKGNsZWFyX2RpZV9zaXplcyk6IFJlbW92ZS4KCShwcmludF9kaWUpOiBDaGVjayBkaWVfc3ltYm9sIHJhdGhlciB0aGFuIGRpZV9vZmZzZXQuCgkoYnVpbGRfYWJicmV2X3RhYmxlLCBvdXRwdXRfcHVibmFtZXMsIG91dHB1dF9hcmFuZ2VzKTogQ2hlY2sKCWRpZV9tYXJrIHJhdGhlciB0aGFuIGRpZV9vZmZzZXQuCgkob3V0cHV0X2NvbXBfdW5pdCk6IE1vdmUgY2FsY19kaWVfc2l6ZXMgYWZ0ZXIgYnVpbGRfYWJicmV2X3RhYmxlLgoJQ2FsbCBtYXJrX2RpZXMuCgpUaHUgMjEtU2VwLTIwMDAgMTg6MTk6MDUgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGZpbGVzLmMgKGxvb2t1cF9pbmNsdWRlX2ZpbGUpOiBSZW5hbWUgdG8gb3Blbl9maWxlLgoJQWx3YXlzIGNyZWF0ZSBhIHNwbGF5IHRyZWUgdmFsdWUsIGV2ZW4gb24gc3lzY2FsbCBmYWlsdXJlcy4KCU5lZ2F0aXZlIGVudHJpZXMgaW5kaWNhdGVkIGJ5IGZkID09IC0yLgoJUmUtb3BlbiBmaWxlcyBjbG9zZWQgaW4gdGhlIG1lYW50aW1lLgoJKF9jcHBfZmFrZV9pbmNsdWRlKTogQ3JlYXRlIGEgbmVnYXRpdmUgc3BsYXkgdHJlZSBlbnRyeS4KCShmaW5kX2luY2x1ZGVfZmlsZSwgY3BwX3JlYWRfZmlsZSk6IFVwZGF0ZSBmb3IgZnVuY3Rpb24gbmFtZQoJY2hhbmdlLgoJKiBnY2MuZ2QvY3BwL21pNC5jOiBUZXN0Y2FzZS4KCjIwMDAtMDktMjEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL3QtYXJtLWVsZiAoTVVMVElMSUJfRElSTkFNRVMpOiBFbmFibGUgbXVsdGlsaWJzIGZvcgoJQVJNIGFuZCBUSFVNQiBtb2Rlcy4KCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoJKiBjb25maWcvbWNvcmUvbWNvcmUtcHJvdG9zLmg6IEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoyMDAwLTA5LTIwICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGNvbmZpZ3VyZS5pbjogQ29ycmVjdCB0ZXN0IG9mIGdjY19jdl9nbGliYy4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoJKiBjb25maWcuaW46IFJlYnVpbHQuCgoyMDAwLTA5LTIwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9mcHV0cyk6IEFsc28gZXhwYW5kIHdoZW4gbGVuZ3RoIT0xLgoJKGV4cGFuZF9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX0ZXUklURS4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fRldSSVRFKTogTmV3IGVudHJ5LgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogRGVjbGFyZSBfX2J1aWx0aW5fZndyaXRlLgoKV2VkIFNlcCAyMCAxNTozOToxNCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZ2NjLmMgKG1vZGlmeV90YXJnZXQpOiBOZXcgdmFyaWFibGUgYW5kIHN0cnVjdC4KCShwcm9jZXNzX2NvbW1hbmQpOiBIYW5kbGUgTU9ESUZZX1RBUkdFVF9OQU1FLgoJKiB0bS50ZXhpIChNT0RJRllfVEFSR0VUX05BTUUpOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgbmV3IG1hY3JvLgoJKiBjb25maWcvcGEvcGEuaCAoTU9ESUZZX1RBUkdFVF9OQU1FKTogTmV3IG1hY3JvLgoKCSogYy1kZWNsLmMgKGZpbmlzaF9kZWNsKTogQWRkIGVsc2UncyB0byBhdm9pZCByZWZlcmVuY2luZwoJVFlQRV9ET01BSU4gb2YgYW4gRVJST1JfTUFSSy4KCldlZCBTZXAgMjAgMjE6NDQ6MzEgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGFkanVzdF9pbnNuX2xlbmd0aCk6IEFkanVzdCBsZW5ndGhzIG9mCglgcmVsb2FkX2luKicgaW5zbnMuCgoyMDAwLTA5LTE5ICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kIChuZWdoaTIpOiBBZGQgYWx0ZXJuYXRpdmUgZm9yIGlucHV0IGFuZCBvdXRwdXQKCW9wZXJhbmRzIGluIGRpZmZlcmVudCByZWdpc3RlcnMsIGFzIGluIG5lZ3NpMi4KCSgqbmVnc2kyKTogUmVtb3ZlICcqJyBmcm9tIHRoZSBuYW1lLiAgVXNlICJtb3Z3IiBpZiBhdmFpbGFibGUuCgoyMDAwLTA5LTE5ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9jcnRiZWdpbi5hc20gKF9fZHNvX2hhbmRsZSk6IERlbGV0ZSB1c2Ugb2YKCUhBVkVfR0FTX0hJRERFTiBtYWNyby4KClR1ZSAxOS1TZXAtMjAwMCAyMjozODo1NyBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKGxleF9saW5lKTogRHJvcCB0aGUgRU9GIHRva2VuIGZvciB1bmtub3duCglkaXJlY3RpdmVzIGluIGFzc2VtYmxlci4KCjIwMDAtMDktMTkgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogQWxsb3cgZW5hYmxlX3RocmVhZHNfZmxhZyB2YWx1ZSBvZiAiYWl4Ii4gIERlZmluZQoJdGhyZWFkX2ZpbGUgYXMgImFpeCIgZm9yIEFJWCA0LjMgYW5kIGFib3ZlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogZ3Roci1haXguaDogTmV3IGZpbGUuCgoJKiByczYwMDAvdC1haXg0MzogUmVwbGFjZSBzb2Z0LWZsb2F0IG11bHRpbGliIHdpdGggcHRocmVhZC4KCVJlbW92ZSA0MDMgcHJvY2Vzc29yIG11bHRpbGliIG1hdGNoLiAgRml4IHJpb3MyIHByb2Nlc3NvciBtdWx0aWxpYgoJbWF0Y2guCgoJKiByczYwMDAvYWl4LmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBVc2UgZnVuY3Rpb25fc2VjdGlvbgoJdG8gcmV0dXJuIHRvIGFwcHJvcHJpYXRlIGNzZWN0LgoKMjAwMC0wOS0xOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoaXNfdmFsaWRfcHJpbnRmX2FyZ2xpc3QsIGV4cGFuZF9idWlsdGluX3ByaW50Zik6IE5ldwoJZnVuY3Rpb25zLgoJKGV4cGFuZF9idWlsdGluX2ZwdXRzKTogU2V0IGB0YXJnZXQnIHBhcmFtZXRlciBmb3IgYGV4cGFuZF9leHByJy4KCShleHBhbmRfYnVpbHRpbik6IEhhbmRsZSBCVUlMVF9JTl9QVVRDSEFSLCBCVUlMVF9JTl9QVVRTIGFuZAoJQlVJTFRfSU5fUFJJTlRGLgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9QVVRDSEFSLCBCVUlMVF9JTl9QVVRTLCBCVUlMVF9JTl9QUklOVEYpOgoJTmV3IGVudHJpZXMuCgoJKiBjLWNvbW1vbi5jIChpbml0X2Z1bmN0aW9uX2Zvcm1hdF9pbmZvKTogSGFuZGxlIF9fYnVpbHRpbl9wcmludGYuCglTZXQgYGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdF9wdHInLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFNldCBgcHV0c19mdHlwZScgYW5kCglgcHJpbnRmX2Z0eXBlJy4gIERlY2xhcmUgX19idWlsdGluX3B1dGNoYXIsIF9fYnVpbHRpbl9wdXRzLAoJX19idWlsdGluX3ByaW50ZiBhbmQgcHJpbnRmLgoKCSogdHJlZS5jLCB0cmVlLmggKGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdF9wdHIpOiBEZWNsYXJlLgoKVHVlIDE5LVNlcC0yMDAwIDE4OjI2OjU3IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBmaWxlcy5jIChyZWFkX2luY2x1ZGVfZmlsZSk6IFRha2Ugbm8gc3BlY2lhbCBhY3Rpb24gZm9yCgl6ZXJvLWxlbmd0aCBmaWxlcy4KCjIwMDAtMDktMTkgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogZmluYWwuYyAoaW5zbl9jdXJyZW50X3JlZmVyZW5jZV9hZGRyZXNzKTogVXNlIElOU05fU0hVSUQgb2Ygc2VxCglyYXRoZXIgdGhhbiB0aGF0IG9mIGJyYW5jaC4KCShzaG9ydGVuX2JyYW5jaGVzKTogRG9uJ3QgaW5jcmVtZW50IGluc25fY3VycmVudF9hZGRyZXNzIHR3aWNlLgoKCVVuZG8gbW9zdCBvZiB0aGUgV2VkIEphbiAyNyAyMzozOTo1MyAxOTk5IHBhdGNoOgoJKiBsb29wLmggKHN0cnVjdCBpbmR1Y3Rpb24pOiBEZWxldGUgbWVtYmVycyBkZXJpdmVkLCBpeCBhbmQgbGFzdF91c2UuCgkoc3RydWN0IGxvb3BfaXZzKTogRGVsZXRlIG1lbWJlcnMgZmlyc3RfaW5jcmVtZW50X2dpdiBhbmQKCWxhc3RfaW5jcmVtZW50X2dpdi4KCSogbG9vcC5jICh2ZXJpZnlfZG9taW5hdG9yLCBmaW5kX2xpZmVfZW5kLCBjbXBfcmVjb21iaW5lX2dpdnNfc3RhdHMsCglyZWNvbWJpbmVfZ2l2cyk6IERlbGV0ZSBmdW5jdGlvbnMuCgkoZmluZF9hbmRfdmVyaWZ5X2xvb3BzKTogRG9uJ3QgaW5pdGlhbGl6ZSBjb250X2RvbWluYXRvci4KCShzdHJlbmd0aF9yZWR1Y2UpOiBMb3NlIGNvZGUgdG8gdHJ5IHRvIGZpbmQgYml2cyB0aGF0IGNhbiBiZQoJZXhwcmVzc2VkIGFzIGdpdnMgb2YgYW5vdGhlciBiaXYsIGFuZCB0byBjb252ZXJ0IGJpdiBpbmNyZW1lbnRzCglpbnRvIGdpdnMuCglMb3NlIGxvb3Bfc2Nhbl9zdGFydCB2YXJpYWJsZSwgYWx3YXlzIHVzZSBsb29wLT5zY2FuX3N0YXJ0LgoJRG9uJ3QgY2FsbCByZWNvbWJpbmVfZ2l2cy4gIERvbid0IGhhbmRsZSBkZXJpdmVkIGdpdnMuCgkocmVjb3JkX2dpdik6IERvbid0IGluaXRpYWxpemUgZGVyaXZlZCBhbmQgbGFzdF91c2UgZmllbGRzLgoJKGJpdl9lbGltaW5pYXRpb25fZ2l2X2hhc18wX29mZnNldCk6IExvc2UgY29kZSB0byBoYW5kbGUgZGVyaXZlZAoJZ2l2cy4KCSogdW5yb2xsLmMgKGRlcml2ZWRfcmVncyk6IERlbGV0ZSBzdGF0aWMgdmFyaWFibGUuCgkodW5yb2xsX2xvb3ApOiBEb24ndCBpbml0aWFsaXplIGl0LgoJKGNvcHlfbG9vcF9ib2R5KTogTG9zZSBjb2RlIHRvIGhhbmRsZSBkZXJpdmVkIGdpdnMuCgkoZmluZF9zcGxpdHRhYmxlX2dpdnMpOiBEb24ndCBjaGVjayBmb3IgZ2l2cyBtYWRlIGZyb20gYml2CglpbmNyZW1lbnRzLgoJRG9uJ3Qgc2V0IGRlcml2ZWRfcmVncy4KCglGaXggbWlzYXBwbGllZCBlYXJsaWVyIHBhdGNoOgoJKiBjb25maWcvc2gvc2gubWQgKGZsb2F0c2lzZl9pZSk6IFJlZW5hYmxlLiAgUmVtb3ZlIGV4cGxpY2l0IHJlZmVyZW5jZQoJdG8gZnB1bC4KCShmbG9hdHNpc2YyKTogR2VuZXJhdGUgZmxvYXRzaXNmX2llIGJ5IGRlZmF1bHQuCgkoZmxvYXRzaXNmX2k0KTogQ29uZGl0aW9uYWwgb24gVEFSR0VUX1NINC4KCgkoZmxvYXRzaXNmMiwgZmxvYXRzaWRmMiwgZXh0ZW5kc2ZkZjIpOiBBbHNvIHVzZSByZWdfbm9fc3VicmVnX29wZXJhbmQKCXByZWRpY2F0ZSBmb3IgdGhlIGV4cGFuZGVycy4KCjIwMDAtMDktMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKENQUF9DUFVfU1BFQyk6IERlZmluZSBpNTg2IGFuZCBpNjg2IHN5bWJvbHMKCWluIGFkZGl0aW9uIHRvIHBlbnRpdW0gYW5kIHBlbnRpdW1wcm8gc3ltYm9scy4KCShDUFBfQ1BVX0RFRkFVTFRfU1BFQyk6IExpa2V3aXNlLgoKCSogYy10eXBlY2suYyAoY19leHBhbmRfYXNtX29wZXJhbmRzKTogUmVzdG9yZSB0aGUgb3V0cHV0IHRyZWUKCWFmdGVyIGV4cGFuZGluZy4KCgkqIHN0bXQuYyAoZXhwYW5kX2V4cHJfc3RtdCk6IE9ubHkgY2FsbCB3YXJuX2lmX3VudXNlZF92YWx1ZQoJaWYgdGhlIHRyZWUgaGFzIHNpZGUgZWZmZWN0cy4KCSh3YXJuX2lmX3VudXNlZF92YWx1ZSk6IERvIG5vdCB3YXJuIGFib3V0IHZvaWQgY29uc3RydWN0cy4KCgkqIGMtZGVjbC5jIChwb3BsZXZlbCk6IEludm9rZSB3YXJuX2Fib3V0X3VudXNlZF92YXJpYWJsZXMuCgoJKiB1bnJvbGwuYyAoY29weV9sb29wX2JvZHkpOiBVcGRhdGUgTEFCRUxfTlVTRVMgYmVmb3JlCgljYWxsaW5nIGludmVydF9qdW1wLgoKMjAwMC0wOS0xOCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChjYW5fY29tYmluZV9wKTogRG9uJ3Qgc3Vic3RpdHV0ZSBhbiBBU01fT1BFUkFORFMKCWludG8gYW55dGhpbmcuCgoyMDAwLTA5LTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoYy1jb21tb24ubyk6IERlcGVuZCBvbiBkaWFnbm9zdGljLmguCgoJKiBjLWNvbW1vbi5jOiBJbmNsdWRlIGRpYWdub3N0aWMuaC4KCSh0ZmFmZik6IERlbGV0ZS4KCShzdGF0dXNfd2FybmluZyk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19mb3JtYXRfaW5mbywgbWF5YmVfcmVhZF9kb2xsYXJfbnVtYmVyLCBjaGVja19mb3JtYXRfdHlwZXMsCglmaW5pc2hfZG9sbGFyX2Zvcm1hdF9jaGVja2luZywgY2hlY2tfZnVuY3Rpb25fZm9ybWF0KTogQWNjZXB0IGEKCWBzdGF0dXMnIHBhcmFtZXRlci4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCgoJKiBjLWNvbW1vbi5oIChjaGVja19mdW5jdGlvbl9mb3JtYXQpOiBBY2NlcHQgYSBgc3RhdHVzJyBwYXJhbWV0ZXIuCgoJKiBjLXR5cGVjay5jOiBVcGRhdGUgY2FsbCB0byBgY2hlY2tfZnVuY3Rpb25fZm9ybWF0Jy4KCjIwMDAtMDktMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjLWRlY2wuYyAoY19leHBhbmRfYm9keSk6IENhbGwgbWFya192YXJhcmdzIGJlZm9yZQoJZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0LgoKMjAwMC0wOS0xOCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9lYWJpLWNuLmFzbTogVXNlIC8qKi8gdG8gZGVsaW1pdCBjb21tZW50cywgbm90ICMuCgkqIGNvbmZpZy9yczYwMDAvZWFiaS1jaS5hc206IExpa2V3aXNlLgoKMjAwMC0wOS0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVtaXQtcnRsLmMgKGluaXRfZW1pdF9vbmNlKTogSW5pdGlhbGl6ZSBjb25zdF90aW55X3J0eAoJZm9yIEJJbW9kZS4KCjIwMDAtMDktMTggIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIHVucm9sbC5jIChsb29wX2l0ZXJhdGlvbnMpOiBQYXNzIGluY3JlbWVudCB0byBleHRlbmRfZm9yX2dpdl92YWx1ZQoJYmVmb3JlIHBhc3NpbmcgaXQgdG8gZm9sZF9ydHhfbXVsdF9hZGQuCgoJKiB1bnJvbGwuYyAoZmluYWxfZ2l2X3ZhbHVlKTogUGFzcyBpbmNyZW1lbnQgdGhyb3VnaAoJZXh0ZW5kX3ZhbHVlX2Zvcl9naXYgYmVmb3JlIHBhc3NpbmcgaXQgdG8gZW1pdF9pdl9hZGRfbXVsdC4KCgkqIGZ1bmN0aW9uLmMgKGZpeHVwX3Zhcl9yZWZzXzEsIGNhc2UgWkVST19FWFRSQUNUKTogSWYgd2UgaGF2ZSBhCglwYXJhZG94aWNhbCBzdWJyZWcsIHRoZW4gZGlyZWN0bHkgc3Vic3RpdHV0ZSB0aGUgcmVwbGFjZW1lbnQgYW5kCglyZXR1cm4uCgpNb24gMTgtU2VwLTIwMDAgMjI6MTI6NDQgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcC50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5nIHNvbWUgY2xhcmlmaWNhdGlvbnMsCgl0aGUgdHJlYXRtZW50IG9mIHZhcmlvdXMgbmV3bGluZSBjb21iaW5hdGlvbnMsIGFuZCBzcGFjZSBiZXR3ZWVuCgliYWNrc2xhc2ggYW5kIG5ld2xpbmUuCgpNb24gU2VwIDE4IDIxOjAwOjQ3IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jby51az4KCgkqIHNkYm91dC5jIChQVVRfU0RCX0RFRiwgUFVUX1NEQl9UQUcsIFBVVF9TREJfRVBJTE9HVUVfRU5EKToKCVJlcGxhY2UgQVNNX09VVFBVVF9MQUJFTFJFRiB3aXRoIGFzc2VtYmxlX25hbWUuCgpNb24gU2VwIDE4IDIwOjI2OjUwIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jby51az4KCgkqIHNoLmMgKGFkZHN1YmNvc3RzKTogQ09OU1QgaXMgbm90IGNoZWFwLgoJKGZpbmRfYmFycmllcik6IEZvciBTaDEsIHRha2UgYWxpZ25tZW50IGFmdGVyIGp1bXBzIGludG8gYWNjb3VudC4KCjIwMDAtMDktMTUgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsIHB1cmdlX2hhcmRfc3VicmVnX3NldHMgdG8KCXJlbW92ZSBhbGwgU0VUcyBvZiBTVUJSRUdzIG9mIGhhcmQgcmVnaXN0ZXJzLgoJKiBmdW5jdGlvbi5jIChwdXJnZV9oYXJkX3N1YnJlZ19zZXRzKTogTmV3IGZ1bmN0aW9uLgoJKHB1cmdlX3NpbmdsZV9oYXJkX3N1YnJlZ19zZXQpOiBOZXcgZnVuY3Rpb24uCgkqIHJ0bC5oOiAocHVyZ2VfaGFyZF9zdWJyZWdfc2V0cyk6IE5ldyBmdW5jdGlvbi4KCjIwMDAtMDktMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoc2lnbmVkX2luZXF1YWxpdHlfb3BlcmF0b3IpOiBOZXcuCgkoaWE2NF9leHBhbmRfY29tcGFyZSk6IE5ldy4KCShpYTY0X3JlZ2lzdGVyX21vdmVfY29zdCk6IEhhbmRsZSBQUl9SRUdTIG1vdmVzLgoJKGlhNjRfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IFJlcXVpcmUgYSBHUiB3aGVuIG1vdmluZyB0byBhIFBSLgoJKHN0cnVjdCByZWdfd3JpdGVfc3RhdGUpOiBBZGQgd3JpdHRlbl9ieV9hbmQvb3IuCgkoc3RydWN0IHJlZ19mbGFncyk6IEFkZCBpc19hbmQvb3IuCgkocndzX3VwZGF0ZSk6IFNldCB0aGVtLgoJKHJ3c19hY2Nlc3NfcmVnbm8pOiBUZXN0IHRoZW0gdG8gYWxsb3cgcGFyYWxsZWwgY29tcGFyaXNvbnMuCgkocnR4X25lZWRzX2JhcnJpZXIpOiBSZWNvZ25pemUgcGFyYWxsZWwgY29tcGFyaXNvbnMuCgkoZW1pdF9pbnNuX2dyb3VwX2JhcnJpZXJzKTogU2V0IHByZXZfaW5zbiBhZnRlciBhIGNhbGwgc3RvcCBiaXQuCglDYWxsIHJlY29nX21lbW9pemVkOyBpZ25vcmUgcHJlZF9yZWxfbXV0ZXguCgkoZW1pdF9wcmVkaWNhdGVfcmVsYXRpb25faW5mbyk6IERvbid0IGNhbGwgZmluZF9iYXNpY19ibG9ja3MgaGVyZS4KCShpYTY0X3Jlb3JnKTogRG8gaXQgaGVyZSBpbnN0ZWFkLgoJKiBjb25maWcvaWE2NC9pYTY0Lmg6IHMvQ0Ntb2RlL0JJbW9kZS9nCgkoTU9ERVNfVElFQUJMRV9QKTogRG9uJ3QgdGllIEJJbW9kZS4KCShQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogRG8gbm90IHJlbG9hZCBvcGVyYXRpb25zIGludG8gQVIgcmVncy4KCShDT05TVF9DT1NUUyk6IFBpY2sgc2Vuc2libGUgdmFsdWVzIGZvciBDT05TVF9JTlQgYmFzZWQgb24gY29udGV4dC4KCShSVFhfQ09TVFMpOiBNYWtlIG11bHRpcGx5IDQgaW5zbnMuCgkoTUVNT1JZX01PVkVfQ09TVCk6IE5ldy4KCShQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQ6IHMvQ0Ntb2RlL0JJbW9kZS9nCgkobW92Y2NpLCBtb3ZiaSk6IE5ldy4KCShhbmRiaTMsIGFuZGNtYmkzLCBpb3JiaTMsIGlvcmNtYmkzLCBvbmVfY21wbGJpMik6IE5ldy4KCShjbXBzaV9hbmRfMCwgY21wc2lfYW5kXzEsIGNtcHNpX2FuZG5vdF8wLCBjbXBzaV9hbmRub3RfMSk6IE5ldy4KCShjbXBkaV9hbmRfMCwgY21wZGlfYW5kXzEsIGNtcGRpX2FuZG5vdF8wLCBjbXBkaV9hbmRub3RfMSk6IE5ldy4KCSh0Yml0X2FuZF8wLCB0Yml0X2FuZF8xLCB0Yml0X2FuZF8yLCB0Yml0X2FuZF8zKTogTmV3LgoJKGNtcHNpX29yXzAsIGNtcHNpX29yXzEsIGNtcHNpX29yY21fMCwgY21wc2lfb3JjbV8xKTogTmV3LgoJKGNtcGRpX29yXzAsIGNtcGRpX29yXzEsIGNtcGRpX29yY21fMCwgY21wZGlfb3JjbV8xKTogTmV3LgoJKHRiaXRfb3JfMCwgdGJpdF9vcl8xLCB0Yml0X29yXzIsIHRiaXRfb3JfMyk6IE5ldy4KCShtdWxzaSwgbXVsZGkpOiBVc2UgeG1weSBub3QgeG1hLgoJKGNtcGJpKTogTmV3LgoJKG1vdmNjLCBtb3ZjY19pbnRlcm5hbCk6IFJlbW92ZS4KCShicmFuY2ggZXhwYW5kZXJzKTogVXNlIGlhNjRfZXhwYW5kX2NvbXBhcmUuCgkoc2V0Y2MgZXhwYW5kZXJzKTogTGlrZXdpc2UuCgkoY21vdiBpbnNucyk6IFVzZSBtb3ZlX29wZXJhbmQgYW5kIGlhNjRfbW92ZV9vay4KCShwcmVkX3JlbF9tdXRleCk6IFVzZSB1bnNwZWMgbm90IHVuc3BlY192b2xhdGlsZS4gIFByZXZlbnQgdGhlCglzY2hlZHVsZXIgZnJvbSBtb3ZpbmcgaXQgcGFzdCBhIHVzZS4KCSogY29uZmlnL2lhNjQvYnVpbGQuaGFja3M6IFJlbW92ZS4KCk1vbiAxOC1TZXAtMjAwMCAxOToyMTozNSBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaGFzaC5oIChIQVNIU1RFUCk6IFRha2UgY2hhcmFjdGVyIHJhdGhlciB0aGFuIHBvaW50ZXIKCXRvIGNoYXJhY3Rlci4KCShfY3BwX2NoZWNrX2RpcmVjdGl2ZSwgX2NwcF9jaGVja19saW5lbWFya2VyKTogVXBkYXRlIHByb3RvdHlwZXMuCgoJKiBjcHBoYXNoLmMgKGNwcF9sb29va3VwKTogVXBkYXRlIGZvciBuZXcgSEFTSFNURVAuCgoJKiBjcHBsZXguYyAoYXV0b19leHBhbmRfbmFtZV9zcGFjZSwgdHJpZ3JhcGhfcmVwbGFjZSwKCWJhY2tzbGFzaF9zdGFydCwgaGFuZGxlX25ld2xpbmUsIHBhcnNlX25hbWUsIElOSVRfVE9LRU5fU1RSLAoJSU1NRURfVE9LRU4sIFBSRVZfVE9LRU5fVFlQRSwgUFVTSF9UT0tFTiwgUkVWSVNFX1RPS0VOLAoJQkFDS1VQX1RPS0VOLCBCQUNLVVBfVFJJR1JBUEgsIE1JR0hUX0JFX0RJUkVDVElWRSwKCUtOT1dOX0RJUkVDVElWRSk6IERlbGV0ZS4KCgkoaGFuZGxlX25ld2xpbmUsIGNoZWNrX2xvbmdfdG9rZW4sIHNraXBfZXNjYXBlZF9uZXdsaW5lcywKCXVudGVybWluYXRlZCk6IE5ldyBmdW5jdGlvbnMuCgkoQUNDRVBUX0NIQVIsIFNBVkVfU1RBVEUsIFJFU1RPUkVfU1RBVEUpOiBOZXcgbWFjcm9zLgoKCShwYXJzZV9pZGVudGlmaWVyKTogV2FzIHBhcnNlX25hbWUsIG5ldyBpbXBsZW1lbnRhdGlvbi4KCShza2lwX2xpbmVfY29tbWVudCwgc2tpcF9ibG9ja19jb21tZW50LCBza2lwX3doaXRlc3BhY2UsCglwYXJzZV9udW1iZXIsIHBhcnNlX3N0cmluZywgdHJpZ3JhcGhfb2ssIHNhdmVfY29tbWVudCwKCWFkanVzdF9jb2x1bW4sIF9jcHBfZ2V0X2xpbmUpOiBOZXcgaW1wbGVtZW50YXRpb25zLgoKCShsZXhfdG9rZW4pOiBOZXcgZnVuY3Rpb24uICBMZXhlcyBhIHRva2VuIGF0IGEgdGltZSwgbG9va2luZwoJZm9yd2FyZHMuICBDb250YWlucyBtb3N0IG9mIHRoZSBndXRzIG9mIHRoZSBvbGQgbGV4X2xpbmUuCgkobGV4X2xpbmUpOiBOZXcgaW1wbGVtZW50YXRpb24sIHVzaW5nIGxleF90b2tlbiB0byBvYnRhaW4KCWluZGl2aWR1YWwgdG9rZW5zLgoJKGNwcF9zY2FuX2J1ZmZlcik6IFVzZSB0aGUgdG9rZW4ncyBsaW5lLCBub3QgdGhlIGxpc3QncyBsaW5lLgoKCSogY3BwbGliLmMgKF9jcHBfY2hlY2tfZGlyZWN0aXZlLCBfY3BwX2NoZWNrX2xpbmVtYXJrZXIpOgoJIE5ldyBpbXBsZW1lbnRhdGlvbnMuCgkoZG9fYXNzZXJ0KTogRG9uJ3QgYm90aGVyIHNldHRpbmcgdGhlIGFuc3dlcidzIGxpc3QncyBsaW5lLgoJKGNwcF9wdXNoX2J1ZmZlcik6IEluaXRpYWxpemUgbmV3IHBmaWxlIGFuZCByZWFkX2FoZWFkIG1lbWJlcnMKCW9mIHN0cnVjdCBjcHBfYnVmZmVyLgoKCSogY3BwbGliLmggKGNwcGNoYXJfdCk6IE5ldyB0eXBlZGVmLgoJKHN0cnVjdCBjcHBfYnVmZmVyKTogcmVhZF9haGVhZCwgcGZpbGUgYW5kIGNvbF9hZGp1c3QgYXJlCgluZXcgbWVtYmVycy4KCShzdHJ1Y3QgbGV4ZXJfc3RhdGUpOiBOZXcgc3RydWN0dXJlIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc3RhdGUKCWFuZCBiZWhhdmlvciBvZiB0aGUgbGV4ZXIuCgkoSU5fRElSRUNUSVZFLCBLTk9XTl9ESVJFQ1RJVkUpOiBOZXcgbWFjcm9zLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogTmV3IG1lbWJlciAic3RhdGUiLiBSZW5hbWUKCW11bHRpbGluZV9zdHJpbmdfbGluZSBhbmQgbXVsdGlsaW5lX3N0cmluZ19jb2x1bW4uIERlbGV0ZQoJY29sX2FkanVzdCwgaW5fbGV4X2xpbmUgbWVtYmVycy4KCShDUFBfQlVGX0NPTFVNTik6IFVwZGF0ZS4KCjIwMDAtMDktMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2NvbXBhcmlzb24pOiBTaGlmdCBhIE5PVCBvdXQgb2YgYSBzaW5nbGUKCWJpdCB0ZXN0LgoKCSogY29tYmluZS5jIChpZl90aGVuX2Vsc2VfY29uZCk6IENhbm9uaWNhbGl6ZSBCSW1vZGUgdHJ1ZSB0bwoJU1RPUkVfRkxBR19WQUxVRS4KCSogZXhwbG93LmMgKHRydW5jX2ludF9mb3JfbW9kZSk6IExpa2V3aXNlLgoKCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IFVzZSBnZW5fdW5hcnkgdG8gZGlzdHJpYnV0ZQoJdGhlIE5PVCBmb3IgRGUgTW9yZ2FuJ3MgcnVsZS4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbik6IFNpbXBsaWZ5IGEgQkltb2RlIE5PVAoJb2YgYSBjb21wYXJpc29uIHRvIHRoZSByZXZlcnNlIGNvbXBhcmlzb24uCgoJKiBjb21iaW5lLmMgKHRyeV9jb21iaW5lKTogQWxsb3cgc3BsaXQgdG8gY3JlYXRlIGEgc2luZ2xlIGluc24uCgoJKiBtYWNobW9kZS5kZWY6IEFkZCBCSW1vZGUuICBBZGQgYSBjb2x1bW4gZm9yIGJpdHNpemUuCgkqIG1hY2htb2RlLmggKERFRl9NQUNITU9ERSk6IEFkanVzdCBmb3IgZXh0cmEgY29sdW1uLgoJKEdFVF9NT0RFX0JJVFNJWkUpOiBVc2UgaXQuCgkqIHJ0bC5jIChERUZfTUFDSE1PREUpOiBBZGp1c3QgZm9yIGV4dHJhIGNvbHVtbi4KCShtb2RlX2JpdHNpemUpOiBOZXcuCgkobW9kZV9tYXNrX2FycmF5KTogVXNlIGJpdHNpemUuCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBSZXF1aXJlIGlubmVyIGFuZCBvdXRlcgoJbW9kZXMgdG8gbWF0Y2ggb24gbm9uemVyb19iaXRzIG9wdGltaXphdGlvbnMuCgoyMDAwLTA5LTE4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHJlbG9hZDEuYyAoZm9yZ2V0X29sZF9yZWxvYWRzXzEpOiBJZiBhIGhhcmQgcmVnIGlzIHN0b3JlZCwgY2xlYXIKCWl0cyBlbnRyeSBpbiBzcGlsbF9yZWdfc3RvcmUuCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYW1zIChtb3ZzdHJfaTQgZnVuY3Rpb25zKTogQWx3YXlzIGNvbXBpbGUgaW4uCgkqIHNoLmMgKHJlZ19ub19zdWJyZWdfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCSogc2gtcHJvdG9zLmggKHJlZ19ub19zdWJyZWdfb3BlcmFuZCk6IERlY2xhcmUgaXQuCgkqIHNoLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBpdC4KCSogc2gubWQgKGZsb2F0c2lzZjJfaTQsIGZsb2F0c2lkZjJfaSwgZXh0ZW5kc2ZkZjJfaTQpOiBVc2UgaXQgZm9yCglpbnB1dCBvcGVyYW5kIHRoYXQgbmVlZHMgdG8gYmUgaW4gZnB1bC4KCShmaXhfdHJ1bmNzZnNpMiwgZml4X3RydW5jc2ZzaTJfaTQpOiBVc2UgcmVnaXN0ZXJfb3BlcmFuZCBmb3Igb3V0cHV0LgoJKiBzaC5jIChmaW5kX2JhcnJpZXIpOiBUYWtlIGludG8gYWNjb3VudCB0aGF0IG1hY2hpbmVfZGVwZW5kZW50X3Jlb3JnCgltaWdodCBhZGQgbmV3IGluc25zLgoKMjAwMC0wOS0xOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guYyAoc2hfZXhwYW5kX3Byb2xvZ3VlKTogTWFyayBHT1RhZGRyMnBpY3JlZyBhcwoJTUFZQkVfREVBRC4KCShzaF9leHBhbmRfZXBpbG9ndWUpOiBUYWtlIHRoZSBQSUMgcmVnaXN0ZXIgaW50byBhY2NvdW50IHdoZW4KCWNvbXB1dGluZyB0aGUgZnJhbWUgc2l6ZS4KCgkqIGNvbmZpZy9zaC9zaC5jIChub25waWNfc3ltYm9sX21lbnRpb25lZF9wKTogQ2hlY2sgTEFCRUxfUkVGcy4KCSogY29uZmlnL3NoL3NoLm1kIChzeW1fbGFiZWwycmVnLCBzeW1QTFRfbGFiZWwycmVnKTogUHJvdGVjdAoJTEFCRUxfUkVGcyB3aXRoIGEgUElDLXNhZmUgdW5zcGVjLgoKMjAwMC0wOS0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoY2hlY2tfZm9ybWF0X2luZm8pOiBQcm9wZXJseSBzYXZlIHRoZSBhcmd1bWVudAoJbnVtYmVyIGFuZCBwYXJhbWV0ZXIgZm9yICQgb3BlcmFuZCBudW1iZXIgZm9ybWF0cyBpbiBjYXNlIHdpZHRoCglhbmQgcHJlY2lzaW9uIGFyZ3VtZW50cyBhcmUgYWxzbyB1c2VkLiAgQWxsb3cgcHJpbnRmIHdpZHRoIGFuZAoJcHJlY2lzaW9uIGFyZ3VtZW50cyB0byBoYXZlIG9wZXJhbmQgbnVtYmVycyBldmVuIGlmIG5vbmUgd2FzCglzcGVjaWZpZWQgZm9yIHRoZSBtYWluIGZvcm1hdCwgc2luY2UgdGhpcyBpcyBPSyBmb3IgJSouKm0uICBPbmx5CglvYmplY3QgdG8gbWlzc2luZyAkIG9wZXJhbmQgbnVtYmVyIGlmIHRoZSBmb3JtYXQgdXNlZCByZXF1aXJlcyBhbgoJYXJndW1lbnQuCgoyMDAwLTA5LTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChmb3JtYXRfY2hhcl9pbmZvKTogQWRkICdXJyBmbGFnIHRvIGNvbW1lbnQuCgkocHJpbnRfY2hhcl90YWJsZSwgc2Nhbl9jaGFyX3RhYmxlKTogVXNlIGl0LgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogVXNlIHRoZSAnVycgZmxhZyB0byBkZXRlcm1pbmUgd2hldGhlciBhCglmb3JtYXQgYXJndW1lbnQgaXMgd3JpdHRlbiBpbnRvLgoKMjAwMC0wOS0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoY2hlY2tfZm9ybWF0X3R5cGVzKTogUmVvcmdhbml6ZSBhbmQgY2xlYW4gdXAsCgljaGVja2luZyBlYXJsaWVyIGZvciBFUlJPUl9NQVJLcyBhbmQgbWFraW5nIGN1cl90eXBlIGludG8gaXRzCglUWVBFX01BSU5fVkFSSUFOVCB3aGVyZSBjb252ZW5pZW50LgoKMjAwMC0wOS0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjLmMgKGNwcF9vcHRpb25zKTogQWRkIHNwZWNzIGZvciBfX1NURENfSE9TVEVEX18uCgoyMDAwLTA5LTE4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIG9wdGFicy5jIChlbWl0X2xpYmNhbGxfYmxvY2spOiBTZXQgQ09OU1RfQ0FMTF9QIGZvciB0aGUgY2FsbC4KCgkqIGkzODYtcHJvdG9zLmggKGl4ODZfaW5pdF9idWlsdGlucywgaXg4Nl9leHBhbmRfYnVpbHRpbik6IERlY2xhcmUuCgkqIGkzODYuYyAoc3RydWN0IGJ1aWx0aW5fZGVzY3JpcHRpb24pOiBOZXcuCgkoYmRlc2NfY29taSwgYmRlc2NfMmFyZywgYmRlc2NfMWFyZyk6IE5ldyBhcnJheXMuCgkobW14X3JlZ19vcGVyYW5kKTogRGVjbGFyZSBNT0RFIGFyZyBhcyB1bnVzZWQuCgkoaXg4Nl9leHBhbmRfc3NlX2NvbWksIGl4ODZfZXhwYW5kX3NzZV9jb21wYXJlLCBzYWZlX3ZlY3Rvcl9vcGVyYW5kLAoJaXg4Nl9leHBhbmRfdW5vcDFfYnVpbHRpbiwgaXg4Nl9leHBhbmRfdW5vcF9idWlsdGluLAoJaXg4Nl9leHBhbmRfYmlub3BfYnVpbHRpbiwgaXg4Nl9leHBhbmRfc3RvcmVfYnVpbHRpbiwKCWl4ODZfaW5pdF9idWlsdGlucywgaXg4Nl9leHBhbmRfYnVpbHRpbik6IE5ldyBmdW5jdGlvbnMuCgkqIGkzODYuaCAoaXg4Nl9idWlsdGlucyk6IE5ldyBlbnVtZXJhdGlvbi4KCShNRF9JTklUX0JVSUxUSU5TLCBNRF9FWFBBTkRfQlVJTFRJTik6IE5ldyBtYWNyb3MuCgkqIGkzODYubWQgKGF0dHIgbGVuZ3RoX2ltbWVkaWF0ZSk6IDAgZm9yIG1teC9zc2UgdHlwZXMuCgkoYXR0ciBwcmVmaXhfMGYpOiAxIGZvciBtbXgvc3NlIHR5cGVzLgoJKHNldGNjXzIpOiBSZW1vdmUgIioiIHNvIHdlIGdldCBnZW5fc2V0Y2NfMi4KCShlbW1zKTogQWNjb3VudCBmb3IgY2hhbmdlZCByZWdpc3RlciBudW1iZXJpbmcuICBTZXQgIm1lbW9yeSIgYXR0cgoJdG8gdW5rbm93bi4KCShzZmVuY2UpOiBTZXQgIm1lbW9yeSIgYXR0ciB0byB1bmtub3duLgoKMjAwMC0wOS0xOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlndXJlLmluOiBEZWZpbmUgX0dOVV9TT1VSQ0Ugb25seSB3aGVuIHVzaW5nIHRoZSBHTlUgQwoJTGlicmFyeS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlZC4KCjIwMDAtMDktMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHBpbml0LmMgKGNwcF9pbml0KTogRG9uJ3QgdXNlIEFOU0kgcHJvdG90eXBlcy4KCSogZmxvdy5jIChmbG93X2R1bXBfbG9vcCk6IExpa2V3aXNlLgoJKGZsb3dfbG9vcHNfZHVtcCk6IExpa2V3aXNlLgoKCSogYy10eXBlY2suYyAoY19zdGFydF9jYXNlKTogRml4IHR5cG8uCgoyMDAwLTA5LTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBnaXZlIGEgd2FybmluZyBhYm91dCBkZWZhdWx0aW5nCgl0byBpbnQgZm9yIHBsYWluIGNvbXBsZXggd2hpY2ggZGVmYXVsdHMgdG8gY29tcGxleCBkb3VibGUuICBEbwoJd2FybiBhYm91dCBkZWZhdWx0aW5nIHRvIGNvbXBsZXggZG91YmxlIGlmIHBlZGFudGljLiAgV2FybiBhYm91dAoJY29tcGxleCBpbnRlZ2VyIHR5cGVzIGlmIHBlZGFudGljLiAgV2FybiBhYm91dCBjb21wbGV4IHR5cGVzIGlmCglwZWRhbnRpYyBhbmQgbm90IGluIEM5OSBtb2RlLgoJKiBjLXR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IElmIHBlZGFudGljLCB3YXJuIGFib3V0IHVzZSBvZiB+Cglmb3IgY29tcGxleCBjb25qdWdhdGlvbi4KCjIwMDAtMDktMTcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNvbnRyaWIudGV4aTogVXBkYXRlIG15IGVudHJ5LgoKU3VuIFNlcCAxNyAxODo0ODozMiAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIubWQgKG1jdV9lbmhhbmNlZCk6IE5ldyBhdHRyaWJ1dGUuCgkobWN1X21lZ2EpOiBMaWtld2lzZS4KCShleHRlbmRoaXNpMik6IFVzZSBtY3VfZW5oYW5jZWQuCgkoemVyb19leHRlbmRoaXNpMik6IExpa2V3aXNlLgoJKGNhbGxfaW5zbik6IFVzZSBtY3VfZW5oYW5jZWQgYW5kIG1jdV9tZWdhLgoJKGNhbGxfdmFsdWVfaW5zbik6IExpa2V3aXNlLgoJKCpzYnJ4X2JyYW5jaCk6IFVzZSBtY3VfbWVnYS4KCSgqc2JyeF9hbmRfYnJhbmNoc2kpOiBMaWtld2lzZS4KCSgqc2JyeF9hbmRfYnJhbmNoaGkpOiBMaWtld2lzZS4KCSgqdGFibGVqdW1wX2xpYik6IExpa2V3aXNlLgoKU3VuIFNlcCAxNyAxMDo0NjoxNyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWxpYXMuYyAodHJ1ZV9kZXBlbmRlbmNlKTogQWxsb3cgbm9uLXVuY2hhbmdpbmcgcmVhZCB0byBjb25mbGljdAoJd2l0aCB1bmNoYW5naW5nIHdyaXRlLgoKCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcl9maWVsZCk6IEFjY2VwdCBBTElBU19TRVQgYXJnLgoJKHN0b3JlX2NvbnN0cnVjdG9yKTogUGFzcyBhbGlhc19zZXQgdG8gaXQuCgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZW9yZGVyIHRlc3RzIHRvIGF2b2lkIGxvb2tpbmcgYXQKCVRZUEVfTUFJTl9WQVJJQU5UIG9mIEVSUk9SX01BUksuCgkqIGMtbGV4LmMgKHJlYWRlc2NhcGUpOiBBdm9pZCB1c2luZyBwcmludGYgc3ludGF4IHdlIGRvbid0IHJlY29nbml6ZS4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24pOiBBZGQgY2FzZXMKCUZMT0FUX0VYVEVORCBhbmQgRkxPQVRfVFJVTkNBVEUgdG8gb25lcyB0aGF0IHJldHVybiAwLgoKMjAwMC0wOS0xNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBleHByLmggKGVtaXRfbGlicmFyeV9jYWxsLCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZSk6IERlbGV0ZQoJZGVjbGFyYXRpb25zLgoJKiBydGwuaCAoZW51bSBsaWJjYWxsX3R5cGUpOiBOZXcuCgkoZW1pdF9saWJyYXJ5X2NhbGwsIGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlKTogQ2hhbmdlIGZuX3R5cGUgYXJnIHRvCgliZSBvZiB0eXBlIGVudW0gbGliY2FsbF90eXBlLgoJKiBjYWxscy5jOiBMaWtld2lzZSBmb3IgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgU2V2ZXJhbCBjYWxsZXJzCgl0aHJvdWdob3V0IGNoYW5nZWQgdG8gdXNlIHRoZSBuZXcgZW51bWVyYXRpb24gYXBwcm9wcmlhdGVseS4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogTGlrZXdpc2UuICBQdXQgYmFjayBjb2RlIHRvIG1ha2UgbGliY2FsbAoJYmxvY2tzIG9mIGVxdWFsIGZvcm0sIGJ1dCBvbmx5IHVzZSBpdCBmb3IgdGhlIHR3byBuZXcgaGlnaGVyCgllbnVtZXJhdGlvbiB2YWx1ZXMuCgoyMDAwLTA5LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCUNvbnZlcnQgdGhlIEMgZnJvbnQtZW5kIHRvIHVzZSBmdW5jdGlvbi1hdC1hLXRpbWUgbW9kZS4KCSogYy1jb21tb24uaDogSW5jbHVkZSBzcGxheS10cmVlLmguCgkoQ19ERUNMQVJFRF9MQUJFTF9GTEFHKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBsYW5ndWFnZV9mdW5jdGlvbik6IEFkZCB4X3Njb3BlX3N0bXRfc3RhY2sgYW5kCgl4X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWRfcC4KCShSRUNIQUlOX1NUTVRTKTogTW92ZSBkZWZpbml0aW9uLgoJKGxhbmdfc3RhdGVtZW50X2NvZGVfcCk6IExpa2V3aXNlLgoJKGxhbmdfZXhwYW5kX3N0bXQpOiBMaWtld2lzZS4KCShsYW5nX2V4cGFuZF9kZWNsX3N0bXQpOiBOZXcgdmFyaWFibGUuCgkobGFuZ19leHBhbmRfZnVuY3Rpb25fZW5kKTogTGlrZXdpc2UuCgkoY3VycmVudF9zY29wZV9zdG10X3N0YWNrKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9kZWNsX3N0bXQpOiBMaWtld2lzZS4KCShhZGRfc2NvcGVfc3RtdCk6IExpa2V3aXNlLgoJKG1hcmtfc3RtdF90cmVlKTogTGlrZXdpc2UuCgkoc3RydWN0IGNfbGFuZ19kZWNsKTogTmV3IHN0cnVjdHVyZS4KCShERUNMX1NBVkVEX1RSRUUpOiBEZWZpbmUuCgkoY19tYXJrX2xhbmdfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShjX2V4cGFuZF9zdGFydF9jb25kKTogQ2hhbmdlIHByb3RvdHlwZS4KCShjX2ZpbmlzaF90aGVuKTogTmV3IGZ1bmN0aW9uLgoJKGNfZmluaXNoX2Vsc2UpOiBMaWtld2lzZS4KCShjdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBSZW1vdmUuCgkoc2V0X2N1cnJlbnRfZnVuY3Rpb25fbmFtZV9kZWNsYXJlZCk6IExpa2V3aXNlLgoJKG1hcmtfY19sYW5ndWFnZV9mdW5jdGlvbik6IERlY2xhcmUuCgkoY2FzZV9jb21wYXJlKTogTGlrZXdpc2UuCgkoY19hZGRfY2FzZV9sYWJlbCk6IExpa2V3aXNlLgoJKGNfZXhwYW5kX2V4cHIpOiBMaWtld2lzZS4KCShjX3NhZmVfZnJvbV9wKTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmMgKGxhbmdfZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IE5ldyB2YXJpYWJsZS4KCShzdHJ1Y3QgaWZfZWx0KTogQWRkIGlmX3N0bXQuCgkoY19leHBhbmRfc3RhcnRfY29uZCk6IEFkZCB0aGUgaWYtc3RhdGVtZW50IHRvIHRoZSBzdGF0ZW1lbnQtdHJlZSwKCXJhdGhlciB0aGFuIGdlbmVyYXRpbmcgUlRMLgoJKGNfZmluaXNoX3RoZW4pOiBOZXcgZnVuY3Rpb24uCgkoY19leHBhbmRfc3RhcnRfZWxzZSk6IERvbid0IGdlbmVyYXRlIFJUTC4KCShjX2ZpbmlzaF9lbHNlKTogTmV3IGZ1bmN0aW9uLgoJKGNfZXhwYW5kX2V4cHJfc3RtdCk6IERvbid0IGdlbmVyYXRlIFJUTC4KCShzdGF0ZW1lbnRfY29kZV9wKTogQWRkIFNDT1BFX1NUTVQuCgkoY2FzZV9jb21wYXJlKTogTmV3IGZ1bmN0aW9uLgoJKGNfYWRkX2Nhc2VfbGFiZWwpOiBMaWtld2lzZS4KCShtYXJrX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGNfbWFya19sYW5nX2RlY2wpOiBMaWtld2lzZS4KCShtYXJrX2NfbGFuZ3VhZ2VfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShjX2V4cGFuZF9leHByKTogTGlrZXdpc2UuCgkoY19zYWZlX2Zyb21fcCk6IExpa2V3aXNlLgoJKiBjLWRlY2wuYyAoY19zdG10X3RyZWUpOiBOZXcgdmFyaWFibGUKCShjX3Njb3BlX3N0bXRfc3RhY2spOiBMaWtld2lzZS4KCShjX2Z1bmN0aW9uX25hbWVfZGVjbGFyZWRfcCk6IExpa2V3aXNlLgoJKGxhbmdfZXhwYW5kX2V4cHJfc3RtdCk6IFJlbW92ZS4KCShwb3BsZXZlbCk6IERvbid0IGNhbGwgb3V0cHV0X2lubGluZV9mdW5jdGlvbiBmb3IgbmVzdGVkCglmdW5jdGlvbnMuCgkocHVzaGRlY2wpOiBEb24ndCBzZXQgREVDTF9DT05URVhUIGZvciBhIGxvY2FsIGRlY2xhcmF0aW9uIG9mIGFuCglgZXh0ZXJuJyBmdW5jdGlvbi4KCShyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBDaGFuZ2UgbWVhbnMgb2YgY29tcHV0aW5nIHdoZXRoZXIKCW9yIG5vdCBhIGZ1bmN0aW9uIGlzIG5lc3RlZC4KCShsb29rdXBfbGFiZWwpOiBEb24ndCBjYWxsIGxhYmVsX3J0eC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZCBtb3JlIEdDIHJvb3RzLgoJKHN0YXJ0X2RlY2wpOiBBZGQgREVDTF9TVE1UcyB0byB0aGUgc3RhdGVtZW50LXRyZWUsIHJhdGhlciB0aGFuCgljYWxsaW5nIHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbi4KCShmaW5pc2hfZGVjbCk6IERvbid0IGNhbGwgZXhwYW5kX2RlY2wuCgkoc3RvcmVfcGFybV9kZWNscyk6IEJlZ2luIHRoZSBzdGF0ZW1lbnQtdHJlZSwgYnV0IGRvbid0IGdlbmVyYXRlCglSVEwuCgkoZmluaXNoX2Z1bmN0aW9uKTogVGllIG9mZiB0aGUgc3RhdGVtZW50LXRyZWUuICBDYWxsIGNfZXhwYW5kX2JvZHkKCWlmIGFwcHJvcHJpYXRlLgoJKGNfZXhwYW5kX2JvZHkpOiBOZXcgZnVuY3Rpb24uCgkocHVzaF9jX2Z1bmN0aW9uX2NvbnRleHQpOiBTYXZlIG1vcmUgaW5mb3JtYXRpb24uCgkocG9wX2NfZnVuY3Rpb25fY29udHh0KTogTGlrZXdpc2UuCgkoY29weV9sYW5nX2RlY2wpOiBOb3cgdGhhdCB3ZSB1c2UgREVDTF9MQU5HX1NQRUNJRklDLCBjb3B5IGl0LgoJKGxhbmdfbWFya190cmVlKTogTWFyayBpdC4KCShjdXJyZW50X3N0bXRfdHJlZSk6IEFkanVzdC4KCShjdXJyZW50X3Njb3BlX3N0bXRfc3RhY2spOiBOZXcgZnVuY3Rpb24uCgkoZG9fY2FzZSk6IFJlbW92ZS4KCShzZXRfY3VycmVudF9uYW1lX2RlY2xhcmVkKTogTGlrZXdpc2UuCgkoY19iZWdpbl9jb21wb3VuZF9zdG10KTogRGVmaW5lLgoJKGNfZXhwYW5kX2RlY2xfc3RtdCk6IExpa2V3aXNlLgoJKiBjLWxhbmcuYzogSW5jbHVkZSBydGwuaCBhbmQgZXhwci5oLgoJKGxhbmdfaW5pdCk6IFNldCBtb3JlIGxhbmd1YWdlLXNwZWNpZmljIGhvb2tzLgoJKiBjLWxleC5jOiBJbmNsdWRlIGV4cHIuaC4KCSogYy1wYXJzZS5pbjogQ2hhbmdlcyB0aHJvdWdob3V0IHRvIGFkZCBzdGF0ZW1lbnRzIHRvIHRoZQoJc3RhdGVtZW50LXRyZWUsIHJhdGhlciB0aGFuIGdlbmVyYXRpbmcgUlRMIGFmdGVyIGV2ZXJ5IHN0YXRlbWVudC4KCSogYy1zZW1hbnRpY3MuYyAobGFuZ19leHBhbmRfZGVjbF9zdG10KTogRGVmaW5lLgoJKGFkZF9kZWNsX3N0bXQpOiBOZXcgZnVuY3Rpb24uCgkoYWRkX3Njb3BlX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RtdF90cmVlKTogVHdlYWsuCgkoZ2VucnRsX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kZWNsX3N0bXQpOiBIYW5kbGUgbG9jYWwgbGFiZWxzLCBhbmQgY2FsbAoJbGFuZ19leHBhbmRfZGVjbF9zdG10IGlmIHJlcXVpcmVkLgoJKGdlbnJ0bF9mb3Jfc3RtdCk6IEZpeCBsaW5lLW51bWJlciBoYW5kbGluZy4KCShnZW5ydGxfY2FzZV9sYWJlbCk6IEhhbmRsZSBjbGVhbnVwcy4KCShnZW5ydGxfYXNtX3N0bXQpOiBEb24ndCBjYWxsIGNvbWJpbmVfc3RyaW5ncy4KCShnZW5ydGxfY29tcG91bmRfc3RtdCk6IFNpbXBsaWZ5LgoJKGV4cGFuZF9zdG10KTogSGFuZGxlIFNDT1BFX1NUTVRzLgoJKiBjLXRyZWUuaCAoc3RydWN0IGxhbmdfZGVjbCk6IE5ldyBzdHJ1Y3R1cmUuCgkoQ19ERUNMQVJFRF9MQUJFTF9GTEFHKTogUmVtb3ZlLgoJKGNfYmVnaW5fY29tcG91bmRfc3RtdCk6IERlY2xhcmUuCgkoY19leHBhbmRfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkoY19leHBhbmRfc3RhcnRfY2FzZSk6IFJlbmFtZSB0byBjX3N0YXJ0X2Nhc2UuCgkoY19maW5pc2hfY2FzZSk6IE5ldyBmdW5jdGlvbi4KCSogYy10eXBlY2suYyAoc3RhcnRfaW5pdCk6IFR3ZWFrIHNldHRpbmcgb2YKCWNvbnN0cnVjdG9yX2luY3JlbWVudGFsLgoJKGNfZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFR3ZWFrIGVycm9yLWhhbmRsaW5nLiAgQWRkIHRvIHRoZQoJc3RhdGVtZW50LXRyZWUuCgkoY19leHBhbmRfcmV0dXJuKTogQWRkIHRvIHRoZSBzdGF0ZW1lbnQtdHJlZS4KCShjX2V4cGFuZF9zdGFydF9jYXNlKTogUmVuYW1lIHRvIC4uLgoJKGNfc3RhcnRfY2FzZSk6IC4uLiB0aGlzLgoJKHN0cnVjdCBjX3N3aXRjaCk6IE5ldyB0eXBlLgoJKHN3aXRjaF9zdGFjayk6IE5ldyB2YXJpYWJsZS4KCShkb19jYXNlKTogU2ltcGxpZnkuCgkoY19maW5pc2hfY2FzZSk6IE5ldyBmdW5jdGlvbi4KCSogZGVwZW5kZW5jZS5jOiBJbmNsdWRlIGV4cHIuaC4KCShlbnVtIGRlcGVuZGVuY2VfdHlwZSk6IENoYW5nZSBzcGVsbGluZyBvZiBlbnVtZXJhbHMuCgkoY2hlY2tfbm9kZV9kZXBlbmRlbmNlKTogQWRqdXN0LgoJKiBleHByLmggKGxhbmdfc2FmZV9mcm9tX3ApOiBEZWNsYXJlLgoJKHNhZmVfZnJvbV9wKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAobGFuZ19zYWZlX2Zyb21fcCk6IE5ldyB2YXJpYWJsZS4KCShzYWZlX2Zyb21fcCk6IEdpdmUgaXQgZXh0ZXJuYWwgbGlua2FnZS4gIFVzZSBsYW5nX3NhZmVfZnJvbV9wLgoJKiBzdG10LmMgKGV4cGFuZF9leHByX3N0bXQpOiBBdm9pZCBjbG9iYmVycmluZyBvZiBsYXN0X2V4cHJfdHlwZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbik6IFJvYnVzdGlmeS4KCSogdHJlZS5jIChjb250YWluc19wbGFjZWhvbGRlcl9wKTogTGlrZXdpc2UuCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKiBvYmpjL29iamMtYWN0Lmg6IEFkanVzdCBjYWxjdWxhdGlvbiBvZiB2YWx1ZSBmb3IgZHVtbXlfdHJlZV9jb2RlLgoJKiBvYmpjL29iamMtYWN0LmM6IEluY2x1ZGUgcnRsLmgsIGV4cHIuaCwgYW5kIGMtY29tbW9uLmguCgkob2JqY19leHBhbmRfZnVuY3Rpb25fZW5kKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9tZXRob2RfZGVmKTogVXNlIGl0LgoJKGluaXRfb2JqYyk6IEluaXRpYWxpemUgbW9yZSBsYW5ndWFnZS1zcGVjaWZpYyBob29rcy4KCSogb2JqYy9NYWtlLWxhbmcuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDAwLTA5LTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IERlZmluZSBtYWNyb3MgdGhhdCBhZmZlY3QgZmVhdHVyZXMgYmVmb3JlCgl0ZXN0aW5nIGZvciBmZWF0dXJlcy4gIERvbid0IGRlZmluZSBfWE9QRU5fU09VUkNFLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGVkLgoKU2F0IFNlcCAxNiAxOTo0Mjo1MCBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogcnRsYW5hbC5jIChydHhfdmFyaWVzX3ApOiBWb2xhdGlsZSBhc21zIHZhcnkuCgkocnR4X3Vuc3RhYmxlX3ApOiBSZXN0cnVjdHVyZSBjb2RlLiAgVm9sYXRpbGUgYXNtcwoJYXJlIHVuc3RhYmxlLgoKU2F0IFNlcCAxNiAxNDozNTo1NSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZnVuY3Rpb24uaCAobm9fZGVidWdnaW5nX3N5bWJvbHMpOiBOZXcgZmllbGQuCgkqIGludGVncmF0ZS5jIChzYXZlX2Zvcl9pbmxpbmUpOiBSZW5hbWVkIGZyb20gc2F2ZV9mb3JfaW5saW5lX25vY29weS4KCUluaXRpYWxpemUgbm9fZGVidWdnaW5nX3N5bWJvbHMuCgkob3V0cHV0X2lubGluZV9mdW5jdGlvbik6IFNhdmUgYW5kIHJlc3RvcmUgd3JpdGVfc3ltYm9scyBhbmQgc2V0IGZyb20KCW5vX2RlYnVnZ2luZ19zeW1ib2xzLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgc2F2ZV9mb3JfaW5saW5lLgoJKiB0cmVlLmg6IFVwZGF0ZSBjb21tZW50LgoKCSogc3Rvci1sYXlvdXQuYyAocGxhY2VfZmllbGQpOiBEb24ndCBkbyBhbnl0aGluZyBpZiBmaWVsZCBvcgoJaXRzIHR5cGUgYXJlIEVSUk9SX01BUksuCgpTYXQgU2VwIDE2IDE5OjE0OjAwIDIwMDAgIExhdXJ5bmFzIEJpdmVpbmlzIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogY3BwZmlsZXMuYyAocHVyZ2VfY2FjaGUpOiBVc2UgbXVubWFwIG9ubHkgaWYgTU1BUF9USFJFU0hPTEQgZGVmaW5lZC4KCShyZWFkX2luY2x1ZGVfZmlsZSk6IEVuc3VyZSBpbmMtPm1tYXBlZCBpcyBpbml0aWFsaXplZC4KCjIwMDAtMDktMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjcHBpbGVzLmMgKHB1cmdlX2NhY2hlKTogVXNlIFBUUiBub3QgY2FkZHJfdC4KCjIwMDAtMDktMTYgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZ2NjLmM6IEluIGRlc2NyaXB0aW9uIGZvciAlezxTfSwgc2F5IHRoZSBvcHRpb24gcmVtb3ZlZCBpcyAtUy4KCSogaW52b2tlLnRleGkgKFNwZWMgRmlsZXMpOiBEaXR0by4KCjIwMDAtMDktMTYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbjogQWx3YXlzIGRlZmluZSBfR05VX1NPVVJDRSB0byBtYWtlIGludGVyZmFjZXMKCXZpc2libGUgdGhhdCB3ZXJlIGhpZGRlbiBieSBvbmx5IGRlZmluaW5nIF9HTlVfU09VUkNFLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKU2F0IDE2LVNlcC0yMDAwIDA4OjEzOjQ1IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAocHVzaF9tYWNyb19jb250ZXh0KTogU2V0IGFuIGFyZ3VtZW50J3MgbGV2ZWwgYWZ0ZXIKCWNhbGxpbmcgcGFyc2VfYXJncy4gIFdlIGNvdWxkIGxvb3AgaW5maW5pdGVseSBvdGhlcndpc2UuCgoyMDAwLTA5LTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVidWlsdC4KCSogY29uZmlndXJlLmluOiBDaGVjayBmb3IgaWNvbnYuaC4gIERlZmluZSBfWE9QRU5fU09VUkNFLgoKMjAwMC0wOS0xNSAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBjcHBtYWNyby5jIChjaGVja190cmFkX3N0cmluZ2lmaWNhdGlvbik6IENoZWNrIHRva2VuCgl0ZXh0IHBvaW50ZXJzIGFnYWluc3QgbGltaXQgYmVmb3JlIGRlcmVmZXJlbmNpbmcuCgoyMDAwLTA5LTE1ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChmb3JtYXRfd2FudGVkX3R5cGUpOiBOZXcgc3RydWN0dXJlLgoJKGNoZWNrX2Zvcm1hdF90eXBlcyk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19mb3JtYXRfaW5mbyk6IFBhc3MgYWxsIGNoZWNraW5nIG9mIHR5cGVzIG9mIGZvcm1hdAoJYXJndW1lbnRzLCBpbmNsdWRpbmcgd2lkdGggYW5kIHByZWNpc2lvbiBhcmd1bWVudHMsIHRvIHRoaXMgbmV3CglmdW5jdGlvbi4KCjIwMDAtMDktMTUgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIEJVR1M6IFJlbW92ZSBmaWxlLgoKMjAwMC0wOS0xNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IGV2NiBjYWNoZSBsYXRlbmNpZXMKCWZyb20gUmljaGFyZCBIZW5kZXJzb24uICBEb24ndCBhbGxvdyAtbW1lbW9yeS1sYXRlbmN5PUwwLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKFRBUkdFVF9DUFVfRVY1LCBUQVJHRVRfQ1BVX0VWNik6IERlZmluZS4KCShUQVJHRVRfT1BUSU9OUyk6IEFkZCB0dW5lPS4KCShhbHBoYV90dW5lX3N0cmluZyk6IERlY2xhcmUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChvdmVycmlkZV9vcHRpb25zKTogQWRkIGNwdV90YWJsZS4KCVVzZSBhbHBoYV9jcHVfc3RyaW5nIGZpcnN0IHRvIHNldCBib3RoIGFscGhhX2NwdSBhbmQgdGFyZ2V0X2ZsYWdzCglhbmQgdGhlbiBhbHBoYV90dW5lX3N0cmluZyB0byBzZXQgYWxwaGFfY3B1IG9ubHkuCglSZXBsYWNlIHRlc3RzIGZvciBQUk9DRVNTT1JfRVYqIHdpdGggVEFSR0VUX0NQVV9FViogdGVzdHMuCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoQVNNX0ZJTEVfU1RBUlQpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL29zZi5oIChBU01fRklMRV9TVEFSVCk6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvb3BlbmJzZC5oIChBU01fRklMRV9TVEFSVCk6IExpa2V3aXNlLgoKRnJpIFNlcCAxNSAxOTo0NTo1NSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYtcHJvdG9zLmggKG5vX2NvbXBhcmlzb25fb3BlcmF0b3IsIHVub19jb21wYXJpc29uX29wZXJhdG9yKToKCVJlbW92ZS4KCShpeDg2X2NvbXBhcmlzb25fb3BlcmF0b3IsIGl4ODZfY2NfbW9kZSk6IERlY2xhcmUKCSogaTM4Ni5oIChDQ0dDLCBDQ0dDTyk6IE5ldyBtb2Rlcy4KCShTRUxFQ1RfQ0NfTU9ERSk6IE1vdmUgb2ZmbGluZSB0byAuLi4uCgkqIGkzODYuYyAoaXg4Nl9jY19tb2RlKTogLi4uLiBoZXJlOyB1c2UgbmV3IG1vZGVzLgoJKGl4ODZfY29tcGFyaXNvbl9vcGVyYXRvcik6IE5ldy4KCShmY21vdl9jb21wYXJpc29uX29wZXJhdG9yKTogRW5zdXJlIHByb3BlciBtb2RlLgoJKHB1dF9jb25kaXRpb25fbW9kZSk6IE1vcmUgc2FuaXR5IGNoZWNraW5nLgoJKGl4ODZfbWF0Y2hfY2Ntb2RlKTogSGFuZGxlIG5ldyBtb2Rlcy4KCShpeDg2X2V4cGFuZF9mcF9jb21wYXJlKTogR0VVIHJlcXVpcmVzIENDbW9kZS4KCShpeDg2X2V4cGFuZF9zdHJsZW5zaV91bnJvbGxfMSk6IFVzZSBlbWl0X2NtcF9hbmRfanVtcF9pbnNuIGluc3RlYWQgb2YKCWRvaW5nIGl0IGJ5IGhhbmQuCgkqIGkzODYubWQgKGNtcD9pX2Njel8xKTogUmVtb3ZlCgkoY21wP2lfY2Nub18xKTogVXNlIGl4ODZfbWF0Y2hfY2Ntb2RlLgoJKGNtcD9pX21pbnVzXzEpOiBOZXcuCgkoY21wc2lfMSk6IE5ldyBleHBhbmRlci4KCShjbXBxaV9leHRfMSk6IFVzZSBtYXRjaF9jY21vZGUKCShjbXBxaV9leHRfMyk6IE5ldyBleHBhbmRlci4KCShjbXBxaV9leHRfM19pbnNuKTogUmVuYW1lIGZyb20gY21wcWlfZXh0XzMuCgkoY21wcWlfZXh0XzQpOiBVc2UgbWF0Y2hfY2Ntb2RlLgoJKGFkZD9pXz8pOiBVc2UgbWF0Y2hfY2Ntb2RlLgoJKGFkZD9pXzYpOiBOZXcuCgkodGVzdD9pX2Njel8xKTogUmVtb3ZlCgkodGVzdD9pXzEpOiBOZXcuCgkodGVzdHNpX2Njbm9fMSwgdGVzdHFpX2Njel8xLCB0ZXN0cWlfZXh0X2Njbm9fMCk6IE5ldyBleHBhbmRlci4KCSh0ZXN0cWlfZXh0XzApOiBVc2UgaXg4Nl9tYXRjaF9jY21vZGUuCgkoKnhvcnFpX2NjX2V4dF8xKTogVXNlIGl4ODZfbWF0Y2hfY2Ntb2RlLgoJKHhvcnFpX2NjX2V4dF8xKTogTmV3IGV4cGFuZGVyLgoJKHNoaWZ0IHBhdHRlcm5zKTogVXNlIENDR09DbW9kZSBmb3IgYWxsIHNoaWZ0cyBleGNlcHQgZm9yIHNhci4KCShzZXRjY18/LCBqY2NfPywgbWl2P2ljY19uaWMpOiBVc2UgaXg4Nl9jb21wYXJpc29uX29wZXJhdG9yLgoJKHNldGNjXzMsIGpjY18zLCBtaXY/aWNjX2MpOiBSZW1vdmUuCgoyMDAwLTA5LTE1ICBXaWxsIENvaGVuICA8d2NvaGVuQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoYWRkX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IENoYW5nZWQgYXJyYXkgaW50byBhCgl4bWFsbG9jZWQgb2JqZWN0LCBzbyBpdCBleGlzdHMgYWZ0ZXIgZnVuY3Rpb24gZXhpdC4KCShmcmVlX0FUKTogQWRkZWQgY2FzZSBmb3IgZHdfdmFsX2NsYXNzX2Zsb2F0IHRvIGZyZWUgYWxsb2NhdGVkCgltZW1vcnkuCgoyMDAwLTA5LTE1ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQ6IEZpeCBhIGNvbW1lbnQgdHlwby4KCSogZ2NjLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOS0xNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBvcHRhYnMuYyAoZW1pdF9saWJjYWxsX2Jsb2NrKTogSWYgdGFyZ2V0IGlzIGEgdXNlciB2YXJpYWJsZSwKCWNvcHkgdG8gYSB0ZW1wb3JhcnkgZmlyc3QuCgkqIGV4cHIuYyAoY29udmVydF9tb3ZlKTogV2hlbiBnZW5lcmF0aW5nIGEgbGliY2FsbCwgbWFrZSBhIGxpYmNhbGwKCWJsb2NrLgoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogRG9uJ3QgY3JlYXRlIGEgbGliY2FsbAoJc2VxdWVuY2UgaGVyZTsgb3VyIGNhbGxlciB3aWxsIGluIG1vc3QgY2FzZXMgZG8gaXQuCgoJKiBzaC5oIChTRUNPTkRBUllfSU5QVVRfUkVMT0FEX0NMQVNTKTogSGFuZGxlIG1vdmluZyBULCBNQUNMIG9yCglNQUNIIGludG8gRlBVTC4KCShTRUNPTkRBUllfT1VUUFVUX1JFTE9BRF9DTEFTUyk6IFNpbWlsYXIgY2FzZS4KCSogc2gubWQgKHJlbG9hZF9vdXRzZik6IEdlbmVyYXRlIHJlY29nbml6YWJsZSBwYXR0ZXJucyBmb3IKCVRBUkdFVF9TSDNFLgoJKGZsb2F0c2lzZjIsIGZsb2F0c2lzZjJfaWUsIGZsb2F0c2lzZjJfaTQsIGZpeF90cnVuY3Nmc2kyLAoJZml4X3RydW5jc2ZzaTJfaTQsIGZpeHNmc2ksIGZsb2F0c2lkZjIsIGZsb2F0c2lkZjJfaSwgZml4X3RydW5jZGZzaTIsCglmaXhfdHJ1bmNkZnNpMl9pLCBleHRlbmRzZmRmMiwgZXh0ZW5kc2ZkZjJfaTQsIHRydW5jZGZzZjIsCgl0cnVuY2Rmc2YyX2k0KTogQ2hhbmdlIG5vdCB0byB1c2UgZXhwbGljaXQgcmVmZXJlbmNlcyB0byBmcHVsLgoJKGZsb2F0c2lzZjJfaWUpOiBSZW1vdmUgVVNFIG9mIGZwc2NyLgoJKGZsb2F0c2lzZjIpOiBDaGFuZ2UgZGVmYXVsdCBleHBhbnNpb24gdG8gbWF0Y2ggdGhpcy4KCShmaXhfdHJ1bmNzZnNpMl9pNF8yLCBmaXhfdHJ1bmNkZnNpMl9pNCAmIHNwbGl0dGVycyk6IENvbW1lbnQgb3V0Cgl1bnVzZWQgcGF0dGVybnMuCgoyMDAwLTA5LTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IENvbnNpZGVyIG5hdHVyYWxseSBhbGlnbmVkCgltZW1vcnkgZm9yIGRpcmVjdCByZWZlcmVuY2UuCgoyMDAwLTA5LTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2V4cGFuZF91bmFsaWduZWRfbG9hZCk6IEZvcmNlIGFsbAoJQU5EIGFkZHJlc3NlcyBpbnRvIGFsaWFzIHNldCAwLgoJKGFscGhhX2V4cGFuZF91bmFsaWduZWRfc3RvcmUpOiBMaWtld2lzZS4KCShhbHBoYV9leHBhbmRfdW5hbGlnbmVkX2xvYWRfd29yZHMpOiBMaWtld2lzZS4KCShhbHBoYV9leHBhbmRfdW5hbGlnbmVkX3N0b3JlX3dvcmRzKTogTGlrZXdpc2UuCgoyMDAwLTA5LTE1ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGNvbmZpZy9zaC9zaC5oIChDUFBfU1BFQyk6IEZvciAtbTQtbm9mcHUsIGRlZmluZSBfX1NINF9OT0ZQVV9fLgoJKiBjb25maWcvc2gvbGliMWZ1bmNzLmFzbSAobW92c3RyX2k0KTogQWxzbyBjb21waWxlIGlmIF9fU0g0X05PRlBVX18KCWlzIGRlZmluZWQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc192YV9hcmcpOiBBcmdzIHBhc3NlZCBieSByZWZlcmVuY2UgaGF2ZSBhCglyc2l6ZSBvZiBVTklUU19QRVJfV09SRC4KCkZyaSAxNS1TZXAtMjAwMCAwNjo0OTowNyBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKE9OX1JFU1RfQVJHKTogQ29ycmVjdCB0aGUgdGVzdC4KCShtYXliZV9wYXN0ZV93aXRoX25leHQpOiBEdXBsaWNhdGUgYSB0b2tlbiB0aGF0IGZhaWwgcGFzdGluZywKCWFuZCBjbGVhciBpdHMgUEFTVEVfTEVGVCBmbGFnLCBzbyB0aGF0IG5lc3RlZCBwYXN0aW5nIGF0dGVtcHRzCglkbyBub3Qgb2NjdXIuCgoyMDAwLTA5LTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY2FsbHMuYyAocHJlY29tcHV0ZV9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogVXNlIENPU1RTX05fSU5TTlMsIG5vdCAyLgoJKiBjc2UuYyAocnR4X2Nvc3QpOiBMaWtld2lzZS4KCSogb3B0YWJscy5jIChleHBhbmRfYmlub3ApOiBMaWtld2lzZS4KCShleHBhbmRfdHdvdmFsX2Jpbm9wLCBwcmVwYXJlX2NtcF9pbnNuKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKGNvcHlfY29zdCk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBMaWtld2lzZS4KCjIwMDAtMDktMTQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtcGFyc2UuaW4gKHJlc3dvcmRzKTogQWRkIF9Db21wbGV4LgoKMjAwMC0wOS0xNCAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBnY2MuMTogRGVsZXRlIGRvY3VtZW50YXRpb24gZm9yIC11bmRlZiBwcmVwcm9jZXNzb3Igb3B0aW9uLgoKMjAwMC0wOS0xNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guaCAoSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCwKCVNUQVJURklMRV9TUEVDLCBFTkRGSUxFX1NQRUMpOiBSZW1vdmUgZGVmaW5lLgoJKiBjb25maWcvc2gvZWxmLmggKElOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1ApOgoJUmVtb3ZlIHVuZGVmaW5lIGJlZm9yZSBjb25maWcvZWxmb3MuaC4KCSogY29uZmlnL3NoL3Qtc2ggKEVYVFJBX01VTFRJTElCX1BBUlRTKTogQ29tbWVudCBvdXQuCgoyMDAwLTA5LTE0ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGludm9rZS50ZXhpIChIOC8zMDAgT3B0aW9ucyk6IEFkZCAtbXMyNjAwLgoJKiBjb25maWcvaDgzMDAuYyAoaDgzMDBfaW5pdF9vbmNlKTogT3V0cHV0IGFuIGVycm9yIHdoZW4gLW1zMjYwMAoJaXMgdXNlZCB3aXRob3V0IC1tcy4KCSogY29uZmlnL2g4MzAwLmggKFRBUkdFVF9NQUMpOiBOZXcuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tczI2MDAgYW5kIC1tbm8tczI2MDAuCgkoQ09ORElUSU9OQV9SRUdJU1RFUl9VU0FHRSk6IERpc2FibGUgdGhlIG1hYyByZWdpc3RlciBvbiBhbnkKCW1hY2hpbmUgb3RoZXIgdGhhbiBIOFMvMjYwMC4KCSogY29uZmlnL2g4MzAwLm1kOiBBY2NlcHQgbWFjIGluc3RydWN0aW9ucyBvbiB0aGUgSDhTLzI2MDAgaW5zdGVhZAoJb2YgdGhlIEg4Uy8yMDAwLgoKMjAwMC0wOS0xNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+LCBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHNfYWRkcmVzc18xKTogR2VuZXJhdGUgcmVsb2FkcyBmb3IgYXV0b19pbmMKCXBzZXVkb3MgdGhhdCByZWZlciB0byB0aGUgb3JpZ2luYWwgcHNldWRvcywgbm90IG9ubHkgdG8gdGhlaXIKCWVxdWl2YWxlbnQgbWVtb3J5IGxvY2F0aW9ucy4KClRodSBTZXAgMTQgMTI6MTA6MTYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGNhc2UgQ09NUE9ORU5UX0VYUFIpOiBDb3B5IG1lbW9yeSBhdHRyaWJ1dGVzCgl3aGVuIG1ha2luZyBuZXcgTUVNLgoKCSogTWFrZWZpbGUuaW4gKExOKTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uLgoKMjAwMC0wOS0xMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJRnJvbSBKb2VybiBSZW5uZWNrZToKCSogbG9jYWwtYWxsb2MuYyAodXBkYXRlX2VxdWl2X3JlZ3MpOiBJZiB0aGVyZSBpcyBubyBSRUdfRVFVQUwgbm90ZQoJb24gYW4gaW5zbiBhbmQgZnVuY3Rpb25faW52YXJpYW50X3AgcmV0dXJucyBub256ZXJvIGZvciB0aGUgc291cmNlLAoJYWRkIGEgUkVHX0VRVUFMIG5vdGUuCgpUaHUgU2VwIDE0IDAwOjUxOjU3IEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBhbGlhcy5jIChtZW1yZWZzX2NvbmZsaWN0X3ApOiBBbiBBRERSRVNTT0YgZG9lc24ndAoJY29uZmxpY3Qgd2l0aCBmcmFtZV9wb2ludGVyX3J0eC4KCjIwMDAtMDktMTMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogbG9vcC5jOiBGaXggZm9ybWF0dGluZy4KCSogbG9vcC5oOiBMaWtld2lzZS4KCjIwMDAtMDktMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChkaXZzZjMpOiBOZXcuCgkoZGl2c2YzX2ludGVybmFsX2xhdCwgZGl2c2YzX2ludGVybmFsX3Rocik6IE5ldy4KCShkaXZkZjMsIGRpdmRmM19pbnRlcm5hbF9sYXQsIGRpdmRmM19pbnRlcm5hbF90aHIpOiBOZXcuCgkoZGl2dGYzLCBkaXZ0ZjNfaW50ZXJuYWxfbGF0LCBkaXZ0ZjNfaW50ZXJuYWxfdGhyKTogTmV3LgoJKGFkZGRmM190cnVuYywgc3ViZGYzX3RydW5jLCBtdWxkZjNfdHJ1bmMpOiBOZXcuCgkobWFkZGRmNF90cnVuYywgbXN1YmRmNF90cnVuYywgbm11bGRmM190cnVuYyk6IE5ldy4KCShubWFkZGRmNF9hbHRzLCBubWFkZGRmNF90cnVuYyk6IE5ldy4KCShhZGR0ZjNfdHJ1bmNzZiwgYWRkdGYzX3RydW5jZGYsIHN1YnRmM190cnVuY3NmKTogTmV3LgoJKHN1YnRmM190cnVuY2RmLCBtdWx0ZjNfdHJ1bmNzZiwgbXVsdGYzX3RydW5jZGYpOiBOZXcuCgkobXVsdGYzX3RydW5jc2ZfYWx0cywgbXVsdGYzX3RydW5jZGZfYWx0cyk6IE5ldy4KCShtYWRkdGY0X3RydW5jc2YsIG1hZGR0ZjRfdHJ1bmNkZiwgbWFkZHRmNF9hbHRzX3RydW5jZGYpOiBOZXcuCgkobXN1YnRmNF90cnVuY3NmLCBtc3VidGY0X3RydW5jZGYsIG5tdWx0ZjNfdHJ1bmNzZik6IE5ldy4KCShubXVsdGYzX3RydW5jZGYsIG5tYWRkdGY0X3RydW5jc2YsIG5tYWRkdGY0X3RydW5jZGYpOiBOZXcuCgkobm1hZGR0ZjRfdHJ1bmNkZl9hbHRzKTogTmV3LgoJKHJlY2lwX2FwcHJveCk6IERvbid0IHByZWRpY2F0ZS4KCjIwMDAtMDktMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9saWIxZnVuY3MuYXNtIChfX2RpdnNmMyk6IFByb3RlY3QgZm5vcm0ucyB3aXRoIHA2LgoKMjAwMC0wOS0xMyAgU3RlcGhhbmUgQ2FycmV6ICA8U3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyPgoKCSogZmxhZ3MuaCAoZmxhZ19kdW1wX3J0bF9pbl9hc20pOiBEZWNsYXJlLgoJKiB0b3BsZXYuYyAoZmxhZ19kdW1wX3J0bF9pbl9hc20pOiBEZWZpbmUuCgkoZGVjb2RlX2Rfb3B0aW9uKTogU2V0IGZsYWdfZHVtcF9ydGxfaW5fYXNtIGFuZCBmbGFnX3ByaW50X2FzbV9uYW1lCglpZiAtZFAgaXMgc3BlY2lmaWVkLgoJKiBydGwuaCAocHJpbnRfcnR4X2hlYWQpOiBEZWNsYXJlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4X2hlYWQpOiBEZWZpbmUuCgkocHJpbnRfcnR4KTogUHJpbnQgdGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5IHByaW50X3J0eF9oZWFkCglhdCBiZWdpbm5pbmcgb2YgZWFjaCBkdW1wIGxpbmUuCgkocHJpbnRfcnRsKTogTGlrZXdpc2UuCgkocHJpbnRfcnRsX3NpbmdsZSk6IExpa2V3aXNlLgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24pOiBEdW1wIHRoZSBpbnNuIGluIHRoZSBhc3NlbWJseQoJZmlsZSBmb3IgZGVidWdnaW5nLgoJKiBnY2MuMTogRG9jdW1lbnQgLWRQIG9wdGlvbi4KCSogaW52b2tlLnRleGkgKERlYnVnZ2luZyBPcHRpb25zKTogTGlrZXdpc2UuCgoyMDAwLTA5LTEzICBTdGVwaGFuZSBDYXJyZXogIDxTdGVwaGFuZS5DYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBtZC50ZXhpIChNYWNoaW5lIENvbnN0cmFpbnRzKTogRG9jdW1lbnQgdGhlIDY4SEMxMSBjb25zdHJhaW50cy4KCSogaW5zdGFsbC50ZXhpIChDb25maWd1cmF0aW9ucyk6IERvY3VtZW50IHRoZSA2OEhDMTEmNjhIQzEyIHBvcnQuCgkqIGludm9rZS50ZXhpIChPcHRpb24gU3VtbWFyeSwgTTY4aGMxeCBPcHRpb25zKTogRG9jdW1lbnQgdGhlIG9wdGlvbnMuCgpUdWUgU2VwIDEyIDEzOjUxOjEzIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5oIChBU1NFTUJMRVJfRElBTEVDVCk6IE5ldyBtYWNybyBkZWNsYXJlZC4KCSogY29uZmlnL2F2ci9hdnIubWQgKCptb3ZzdHJxaV9pbnNuKTogQ2xlYW51cCBvdXRwdXQgdGVtcGxhdGUuCgkoKmNscnN0cnFpKTogTGlrZXdpc2UuCgkoeG9yaGkzLHhvcnNpMyxhYnNxaTIpOiBMaWtld2lzZS4KCShvbmVfY21wbGhpMixvbmVfY21wbHNpMik6IExpa2V3aXNlLgoJKGFkZHNpMyk6IFR3byBzdHVwaWQgY29uc3RyYWludCBhbHRlcm5hdGl2ZXMgcmVtb3ZlZC4KCShleHRlbmRoaXNpMik6IFVzZSBgbW92dycgZm9yIGVuaGFuY2VkIGF2ciBjb3Jlcy4KCSh6ZXJvX2V4dGVuZGhpc2kyKTogTGlrZXdpc2UuCgpXZWQgU2VwIDEzIDAyOjMxOjIzIEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBhbGlhcy5jIChmaW5kX2Jhc2VfdGVybSk6IFVzZSBmcmFtZV9wb2ludGVyX3J0eAoJd2hlbiBoYW5kbGluZyBhbiBBRERSRVNTT0YuCgoJKiBjc2UuYyAoY2Fub25faGFzaCk6IEhhbmRsZSBVU0Ugb2YgQkxLbW9kZSBtZW1vcnkuCgkoY3NlX2luc24pOiBPdXRnb2luZyBhcmd1bWVudHMgZm9yIGEgbGliY2FsbCBkb24ndAoJYWZmZWN0IGFueSByZWNvcmRlZCBleHByZXNzaW9ucy4KCjIwMDAtMDktMTIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWx0LgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciBpY29udiwgbmxfbGFuZ2luZm8sIGxhbmdpbmZvLmguCgoyMDAwLTA5LTEyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGMtbGV4LmMgKGxleF9zdHJpbmcpOiBVc2UgY2hhcndpZHRoIHRvIGNvbXB1dGUgYnl0ZW1hc2suCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBEb24ndCBvcHRpbWl6ZSBjb25zdGFudCBhcnJheSByZWZlcmVuY2VzCglpbml0aWFsaXplZCB3aXRoIHdpZGUgc3RyaW5nIGNvbnN0YW50cy4KCjIwMDAtMDktMTMgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAobm90ZV9zZXRfcHNldWRvX211bHRpcGxlX3VzZXMpOiBDb3JyZWN0LgoKMjAwMC0wOS0xMiAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogaWZjdnQuYyAobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogSWYgQSBhbmQgQiBhcmUgdGhlIHNhbWUsIGFuZCBubwoJZWxzZSBibG9jaywgYW5kIFggaGFzIHNpZGUtZWZmZWN0cywgdGhlbiBmYWlsLgoKMjAwMC0wOS0xMiAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oCgkodHJhcF9jbXBfb3AsIG1pcHNfZ2VuX2NvbmRpdGlvbmFsX3RyYXApOiBOZXcgZnVuYyBkZWNscy4KCSogY29uZmlnL21pcHMvbWlwcy5oIChJU0FfSEFTX0NPTkRfVFJBUCk6IE5ldyBtYWNyby4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGQgInRyYXBfY21wX29wIi4KCSogY29uZmlnL21pcHMvbWlwcy5jCgkodHJhcF9jbXBfb3AsIG1pcHNfZ2VuX2NvbmRpdGlvbmFsX3RyYXApOiBOZXcgZnVuY3Rpb25zLgoJKiBjb25maWcvbWlwcy9taXBzLm1kICh0cmFwLCBjb25kaXRpb25hbF90cmFwKTogTmV3IHBhdHRlcm5zLgoKMjAwMC0wOS0xMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBmbG93LmMgKHRyeV9wcmVfaW5jcmVtZW50XzEpOiBEb24ndCBkbyBhbnl0aGluZyB0byBzZXRzIG9mIHRoZSBzdGFjawoJcG9pbnRlci4KCjIwMDAtMDktMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGJ1aWx0X2luX2RlY2xzKTogTmV3IGFycmF5LgoJKGV4cGFuZF9idWlsdGluX2ZwdXRzKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX0ZQVVRDIGFuZCBCVUlMVF9JTl9GUFVUUy4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fRlBVVEMsIEJVSUxUX0lOX0ZQVVRTKTogTmV3IG1lbWJlcnMuCgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBIYW5kbGUgZnB1dGMvZnB1dHMuCgoJKiB0cmVlLmggKGJ1aWx0X2luX2RlY2xzKTogTmV3IGFycmF5LgoKVHVlIFNlcCAxMiAwODo1Mzo1NyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjb252ZXgubWQ6IFVzZSAiKyIgaW5zdGVhZCBvZiAiPSIgZm9yIG91dHB1dHMgd3JhcHBlZCBpbiBhCglTVFJJQ1RfTE9XX1BBUlQuCgkqIGkzNzAubWQsIGkzODYubWQsIG5zMzJrLm1kLCBzaC5tZCwgdmF4Lm1kOiBMaWtld2lzZS4KCjIwMDAtMDktMTIgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaGFpZmEtc2NoZWQuYzogRml4IGZvcm1hdHRpbmcuCgoJKiBnZW5hdHRydGFiLmM6IEZpeCBmb3JtYXR0aW5nLgoKCSogdW5yb2xsLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOS0xMiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYzogbWFrZSBhIHR5cGUgZm9yIHRoZSBmaXggcHJvY2VkdXJlICYgdXNlIGl0LAoJcmVtb3ZlIG9ic29sZXRlIGNvZGUKCSogZml4aW5jL2ZpeGluY2wuYzogVXNlIFBBUkFNUywgbm90IF9QXy4gIEFkZCBuby1vcCBkZWZhdWx0IHRvIHN3aXRjaC4KCSogZml4aW5jL2ZpeGluY2wudHBsOiBtYWtlIG5vbi1leHBvcnRlZCBhcnJheXMgc3RhdGljIHNjb3BlCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuZXJhdGUKCSogZml4aW5jL2ZpeGxpYi5oOiBVc2UgUEFSQU1TLCBub3QgX1BfCgkqIGZpeGluYy9maXh0ZXN0cy5jOiBtYWtlIGEgdHlwZSBmb3IgdGhlIHRlc3QgcHJvYyAmIHVzZSBpdAoJKiBmaXhpbmMvc2VydmVyLmg6IFVzZSBQQVJBTVMsIG5vdCBfUF8KCjIwMDAtMDktMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtdHlwZWNrLmMgKHByb2Nlc3NfaW5pdF9lbGVtZW50KTogQXZvaWQgdW5pb24gaW5pdCB3YXJuaW5ncyBvbgoJZmxvYXRpbmcgcG9pbnQgemVyby4gIERvbid0IGNyYXNoIG9uIHVuaW9ucyBjb250YWluaW5nIHN0cnVjdHMuCgoyMDAwLTA5LTEyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgQ09OU1RfRE9VQkxFIHRvCglnZW5lcmFsX21vdnNyY19vcGVyYW5kLCBhbmQgcmVtb3ZlIENPTlNUX0lOVCBmcm9tCglnZW5lcmFsX21vdmRzdF9vcGVyYW5kLgoKMjAwMC0wOS0xMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjc2UuYyAoYXBwcm94X3JlZ19jb3N0KTogSWYgU01BTExfUkVHSVNURVJfQ0xBU1NFUywgcmV0dXJuIElOVF9NQVgKCWlmIGEgcmVmZXJlbmNlIHRvIG5vbi1maXhlZCBoYXJkcmVnIGlzIHNlZW4uICBPdGhlcndpc2UsIGNvdW50IGhhcmQKCXJlZ3Mgd2l0aCBhIGhpZ2hlciBjb3N0LgoJKHByZWZlcnJhYmxlKTogRGVhbCB3aXRoIGNhc2VzIHdoZXJlIGVpdGhlciBjb3N0IG9yIHJlZ2Nvc3QgaXMKCU1BWF9DT1NULgoJKGNzZV9pbnNuKTogVXNlIE1BWF9DT1NUIHJhdGhlciB0aGFuIDEwMDAwLiAgQWx3YXlzIGluaXRpYWxpemUKCXJlZ2Nvc3QgdmFsdWVzLgoJKENPU1RTX05fSU5TTlMpOiBNb3ZlIGRlZmluaXRpb24uLi4KCSogcnRsLmg6IC4uLmhlcmUuCgkoTUFYX0NPU1QpOiBOZXcgbWFjcm8uCgkqIGxvb3AuYyAoaW5pdF9sb29wKTogVXNlIENPU1RTX05fSU5TTlMgbWFjcm8gaW5zdGVhZCBvZiBoYXJkY29kZWQKCWNvbnN0YW50LgoKMjAwMC0wOS0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmggKGdlbnJ0bF9jbGVhcl9vdXRfYmxvY2spOiBSZW1vdmUuCgkqIGMtc2VtYW50aWNzLmMgKGdlbnJ0bF9jbGVhcl9vdXRfYmxvY2spOiBSZW1vdmUuCgkoZ2VucnRsX3doaWxlX3N0bXQpOiBEb24ndCBjYWxsIGl0LgoJKGdlbnJ0bF9mb3Jfc3RtdCk6IExpa2V3aXNlLgoKMjAwMC0wOS0xMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYzogTW92ZSBhbGwgZGVmYXVsdC0jZGVmaW5lcyB0byB0b3Agb2YgZmlsZS4KCShvcGVuX2luY2x1ZGVfZmlsZSk6IFJlcGxhY2UgYnkgbG9va3VwX2luY2x1ZGVfZmlsZS4KCShyZWFkX3dpdGhfcmVhZCwgcmVhZF9maWxlKTogTWVyZ2VkIGludG8gcmVhZF9pbmNsdWRlX2ZpbGUuCgkoc3RhY2tfaW5jbHVkZV9maWxlLCBwdXJnZV9jYWNoZSk6IE5ldyBmdW5jdGlvbnMuCgkoY2xvc2VfY2FjaGVkX2ZkKTogRGVsZXRlLgoJKGxvb2t1cF9pbmNsdWRlX2ZpbGUsIHJlYWRfaW5jbHVkZV9maWxlLCBfY3BwX3BvcF9maWxlX2J1ZmZlcik6CglDYWNoZSB0aGUgaW4tbWVtb3J5IGJ1ZmZlciwgbm90IHRoZSBmaWxlIGRlc2NyaXB0b3IuCgoJKiBjcHBoYXNoLmggKHN0cnVjdCBpbmNsdWRlX2ZpbGUpOiBBZGQgYnVmZmVyLCBzdCwgcmVmY250LAoJbWFwcGVkIGZpZWxkcy4KCSh4Y25ldyk6IE5ldyB1dGlsaXR5IG1hY3JvLgoJKERPX05PVF9SRVJFQUQsIE5FVkVSX1JFUkVBRCk6IE1vdmUgdXAgYnkgc3RydWN0IGluY2x1ZGVfZmlsZS4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfYnVmZmVyKTogUmVtb3ZlIG1hcHBlZCBmaWVsZC4KCjIwMDAtMDktMTEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxleC5jIChwYXJzZV9zdHJpbmcpOiBBY2NlcHQgYmFja3NsYXNoIHNwYWNlIG5ld2xpbmUgYXMgYQoJbGluZSBjb250aW51YXRpb24uCgkobGV4X2xpbmUpOiBMaWtld2lzZS4KCShfY3BwX2dldF90b2tlbik6IFJlbW92ZSBoYXJkIGxpbWl0IG9uIG1hY3JvIG5lc3RpbmcuCgoyMDAwLTA5LTEyICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGFjbG9jYWwubTQgKEFNX1dJVEhfTkxTKTogRG9uJ3QgZm9yY2UgdXNlIG9mIGluY2x1ZGVkIGdldHRleHQuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDktMTMgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoc3BsaXRfYmxvY2spOiBGaXggdXBkYXRlIG9mIHJlZ2lzdGVycyBsaXZlIGF0CgllbmQgb2Ygc3BsaXQgYmxvY2suCgpUdWUgU2VwIDEyIDAxOjUxOjM4IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoYWRkP2lfMywgYWRkP2lfNSk6IE5ldy4KCShhZGQ/aV80KTogUmVuYW1lIGZyb20gYWRkP2lfMzsgIEZpeCBjb21wYXJlIHBhdHRlcm4uCgkoc3ViP2lfMywgeG9yP2lfMywgaW9yP2lfMyk6IE5ldy4KCgkqIGdlbnJlY29nLmMgKHdyaXRlX3RyZWUpOiBPdXRwdXQgY29kZSB0byBjbGVhciBpbnNuX2V4dHJhY3QgY2FjaGUuCgkqIGdlbmF0dHJ0YWIuYyAod3JpdGVfYXR0cl9jYXNlKTogR2VuIGNhbGwgdG8gZXh0cmFjdF9pbnNuX2NhY2hlCglpbnN0ZWFkIG9mIGV4dHJhY3RfaW5zbiBhbmQgZXh0cmFjdF9jb25zdHJhaW5faW5zbl9jYWNoZSBpbnN0ZWFkIG9mCglleHRyYWN0X2luc24gYW5kIGNvbnN0cmFpbl9vcGVyYW5kcy4KCSogcmVjb2cuYyAoZXh0cmFjdF9pbnNuX2NhY2hlZCwgZXh0cmFjdF9jb25zdHJhaW5faW5zbl9jYWNoZWQpOgoJTmV3IGZ1bmN0aW9ucy4KCShleHRyYWN0X2luc24pOiBDbGVhciB3aGljaF9hbHRlcm5hdGl2ZS4KCShjb25zdHJhaW5fb3BlcmFuZHMpOiBTZXQgd2hpY2hfYWx0ZXJuYXRpdmUgdG8gLTEgd2hlbiBmYWlsZWQuCgkqIHJlY29nLmggKGV4dHJhY3RfY29uc3RyYWluX2luc25fY2FjaGVkLCBleHRyYWN0X2luc25fY2FjaGVkKToKCURlY2xhcmUuCgoyMDAwLTA5LTExICBNYXR0aGV3IEhpbGxlciAgPGhpbGxlckByZWRoYXQuY29tPgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChtb3ZzdHJpY3RxaSk6IENoYW5nZWQgY29uc3RyYWludCBtb2RpZmllcgoJb24gb3BlcmFuZCAwIHRvICcrJy4KCShtb3ZzdHJpY3RoaSk6IExpa2V3aXNlLgoKMjAwMC0wOS0xMiAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogbG9vcC5oIChMT09QX0lWUyk6IE5ldyBtYWNyby4KCShSRUdfSVZfVFlQRSwgUkVHX0lWX0lORk8pOiBBZGQgaXZzIGFyZ3VtZW50LgoJKHN0cnVjdCBsb29wX2l2cyk6IE5ldy4KCShzdHJ1Y3QgbG9vcF9pbmZvKTogQWRkIGl2cyBmaWVsZC4KCShyZWdfaXZfdHlwZSwgcmVnX2l2X2luZm8pOiBEZWxldGUgcHJvdG90eXBlLgoJKHJlZ19iaXZfY2xhc3MsIGxvb3BfaXZfbGlzdCk6IExpa2V3aXNlLgoJKiBsb29wLmMgKHJlY29yZF9iaXYsIGZpbmRfbGlmZV9lbmQpOiBQYXNzIGxvb3AgYXJndW1lbnQuCgkocmVnX2l2X3R5cGUpOiBSZW1vdmUgZ2xvYmFsIGFycmF5IGFuZCB1c2UKCWZpZWxkIGluIGxvb3BfcmVncyBzdHJ1Y3R1cmUgd2l0aGluIGxvb3BfaXZzIHN0cnVjdHVyZS4KCShyZWdfaXZfaW5mbywgcmVnX2Jpdl9jbGFzcywgbG9vcF9pdl9saXN0KTogTGlrZXdpc2UuCgkoZmlyc3RfaW5jcmVtZW50X2dpdiwgbGFzdF9pbmNyZW1lbnRfZ2l2KTogVXNlIGVudHJ5IGluCglsb29wX2l2cyBzdHJ1Y3R1cmUuCgkocmVjb3JkX2luaXRpYWwpOiBQYXNzIGl2cyBwb2ludGVyLgoJKiB1bnJvbGwuYyAoY29weV9sb29wX2JvZHksIHJlbWFwX3NwbGl0X2JpdnMpOiBBZGQgbG9vcCBhcmd1bWVudC4KCjIwMDAtMDktMTIgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGxvb3AuaCAoTE9PUF9SRUdTKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBsb29wX3JlZ3MpOiBOZXcuCgkoc3RydWN0IGxvb3BfaW5mbyk6IEFkZCByZWdzIGZpZWxkLgoJKiBsb29wLmMgKHNldF9pbl9sb29wKTogUmVtb3ZlIGdsb2JhbCBhcnJheSBhbmQgc3RvcmUKCWluIGxvb3BfcmVncyBzdHJ1Y3R1cmUgYXMgcGFydCBvZiBsb29wX2luZm8gc3RydWN0dXJlLgoJKG5fdGltZXNfc2V0LCBtYXlfbm90X29wdGltaXplKTogTGlrZXdpc2UuCgkocmVnX3NpbmdsZV91c2FnZSwgbW92ZWRfb25jZSk6IExpa2V3aXNlLgoJKGNvdW50X29uZV9zZXQpOiBBZGQgcmVncyBhcmd1bWVudC4KCShjb21iaW5lX21vdmFibGVzLCBydHhfZXF1YWxfZm9yX2xvb3BfcCwgY29tYmluZV9naXZzKTogTGlrZXdpc2UuCgkoc2V0X3BzZXVkb19tdWx0aXBsZV91c2VzKTogUGFzcyByZWdzIHBvaW50ZXIuCgoyMDAwLTA5LTEyICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiB1bnJvbGwuYyAoaXRlcmF0aW9uX2luZm8pOiBTdWJzdW1lIGludG8gbG9vcF9pdGVyYXRpb25zLgoJKiBsb29wLmggKGxvb3BfaW5mbyk6IE5ldyBmaWVsZCBpdi4KCjIwMDAtMDktMTIgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGJhc2ljLWJsb2NrLmggKExPT1BfVFJFRSwgTE9PUF9QUkVfSEVBREVSLCBMT09QX0VER0VTKTogTmV3LgoJKExPT1BfRVhJVFNfRE9NUywgTE9PUF9BTEwpOiBMaWtld2lzZS4KCShmbG93X2xvb3BzX3VwZGF0ZSk6IE5ldyBwcm90b3R5cGUuCgkoZmxvd19sb29wc19maW5kKTogQWRkIGZsYWdzIHRvIHByb3RvdHlwZS4KCShzdHJ1Y3QgbG9vcCk6IEFkZCBgcHJlX2hlYWRlcl9yb290JyBhbmQgYHByZV9oZWFkZXJfdHJhY2UnIGZpZWxkcy4KCSogZmxvdy5jIChmbG93X2xvb3BfcHJlX2hlYWRlcl9zY2FuKTogTmV3LgoJKGZsb3dfbG9vcF9kdW1wKTogRHVtcCBwcmUtaGVhZGVyIHJvb3QgYW5kIHRyYWNlIGFuZCBleGl0IGRvbWluYXRvcnMuCgkoZmxvd19sb29wX2ZyZWUpOiBGcmVlIHByZS1oZWFkZXIgcm9vdCBhbmQgdHJhY2UgYW5kIGV4aXQgZG9taW5hdG9ycy4KCShmbG93X2xvb3BzX2ZpbmQpOiBOZXcgYXJndW1lbnQgZmxhZ3MuCgkoZmxvd19sb29wc191cGRhdGUpOiBOZXcgZnVuY3Rpb24uCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQWRkIGZsYWcgYXJndW1lbnQgdG8gZmxvd19sb29wc19maW5kLgoKMjAwMC0wOS0xMiAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogYmFzaWMtYmxvY2suaCAoc3BsaXRfYmxvY2ssIHVwZGF0ZV9iYl9mb3JfaW5zbik6IE5ldyBwcm90b3R5cGVzLgoJKiBmbG93LmMgKHNwbGl0X2Jsb2NrLCB1cGRhdGVfYmJfZm9yX2luc24pOiBOZXcgZnVuY3Rpb25zLgoKMjAwMC0wOS0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNzZS5jIChmb2xkX3J0eCk6IEhvbm9yIE5PX0ZVTkNUSU9OX0NTRS4KCjIwMDAtMDktMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChmcl9ub25pbW1lZGlhdGVfb3BlcmFuZCk6IERlY2xhcmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoZnJfbm9uaW1tZWRpYXRlX29wZXJhbmQpOiBOZXcuCgkoaWE2NF9vdmVycmlkZV9vcHRpb25zKTogUHJldmVudCBvcHRpbWl6aW5nIGRpdmlzaW9uIGZvciBib3RoCglsYXRlbmN5IGFuZCB0aHJvdWdocHV0LgoJKHJ0eF9uZWVkc19iYXJyaWVyKTogSGFuZGxlIGZyY3BhLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKE1BU0tfSU5MSU5FX0RJVl9MQVQpOiBOZXcuCgkoTUFTS19JTkxJTkVfRElWX1RIUiwgVEFSR0VUX0lOTElORV9ESVZfTEFUKTogTmV3LgoJKFRBUkdFVF9JTkxJTkVfRElWX1RIUiwgVEFSR0VUX0lOTElORV9ESVYpOiBOZXcuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1taW5saW5lLWRpdmlkZS1taW4tbGF0ZW5jeSBhbmQKCS1taW5saW5lLWRpdmlkZS1tYXgtdGhyb3VnaHB1dC4KCShQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGV4dGVuZHNpZGkyKTogUmVtb3ZlICogZnJvbSBmIGNhc2UuCgkoemVyb19leHRlbmRzaWRpMik6IExpa2V3aXNlLiAgRml4IHR5cG8gaW4gZiBjYXNlIGluc24uCgkoZXh0ZW5kc2ZkZjIpOiBBZGQgY2FzZXMgZm9yIGdyPC0+ZnIgYW5kIGZyPC0+bWVtLgoJKGV4dGVuZHNmdGYyKTogTGlrZXdpc2UuCgkoZXh0ZW5kZGZ0ZjIpOiBMaWtld2lzZS4KCShmaXhfdHJ1bmN0ZmRpMl9hbHRzKTogTmV3LgoJKGZpeHVuc190cnVuY3RmZGkyX2FsdHMpOiBOZXcuCgkobWFkZCo0KTogUmVuYW1lIGZyb20gbWFkZCozLgoJKGRpdnNpMywgbW9kc2kzLCB1ZGl2c2kzLCB1bW9kc2kzKTogTmV3LgoJKGRpdnNpM19pbnRlcm5hbCk6IE5ldy4KCShkaXZkaTMsIG1vZGRpMywgdWRpdmRpMywgdW1vZGRpMyk6IE5ldy4KCShkaXZkaTNfaW50ZXJuYWxfbGF0LCBkaXZkaTNfaW50ZXJuYWxfdGhyKTogTmV3LgoJKG11bHRmM19hbHRzLCBtYWRkdGY0X2FsdHMsIG5tYWRkdGY0X2FsdHMpOiBOZXcuCgkocmVjaXBfYXBwcm94KTogTmV3LgoKMjAwMC0wOS0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBwcmludC1ydGwuYyAoZGVidWdfY2FsbF9wbGFjZWhvbGRlcl92ZXJib3NlKTogTmV3IHZhcmlhYmxlLgoJKHByaW50X3J0eCkgW0NBTExfUExBQ0VIT0xERVJdOiBEdW1wIGFsbCBjYWxsIHNlcXVlbmNlcyBpZiBpdCBpcwoJc2V0LgoJKiBpbnRlZ3JhdGUuYyAoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBEb24ndCBzaGFyZQoJTEVBRl9SRUdfUkVNQVBwYWJsZSByZWdpc3RlcnMgd2l0aCB0aGUgaW5saW5lZCBmdW5jdGlvbi4gIERvbid0CglzaGFyZSB0aGUgZnVuY3Rpb24gdmFsdWUgd2l0aCBjYWxsaW5nIHNlcXVlbmNlcy4KCjIwMDAtMDktMTEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGRvX2Nhc2UpOiBGaXggYSB0eXBvLgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9pZl90aGVuX2Vsc2UpOiBEb24ndCBjb252ZXJ0IGEgPT0gYiA/IGIgOiBhCgl0byBhIGlmIHRoZSBjb21wYXJpc29uIGlzIGZsb2F0aW5nIG1vZGUgYW5kIG5vdCAtZmZhc3QtbWF0aC4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3Rlcm5hcnlfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgpNb24gU2VwIDExIDIwOjA3OjQ4IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jby51az4KCgkqIHNoLmggKElOSVRJQUxJWkVfVFJBTVBPTElORSk6IFJlbW92ZSBzdHJheSBjYWxsIHRvCglnZW5faWNfaW52YWxpZGF0ZV9saW5lLgoKMjAwMC0wOS0xMSAgUGhpbGlwIEJsdW5kZWxsICA8cGJAZnV0dXJldHYuY29tPgoKCSogY29uZmlnL2FybS9lbGYuaCAoU1VCVEFSR0VUX0NQUF9TUEVDKTogRG9uJ3QgZGVmaW5lIGBhcm1fZWxmJy4KCk1vbiBTZXAgMTEgMTA6NDg6NDEgMjAwMCAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4KCgkqIGluc3RhbGwudGV4aSAoTEFOR1VBR0VTKTogVXBkYXRlIHRvIGluY2x1ZGUgbmV3IGxhbmd1YWdlcy4KCSogSU5TVEFMTDogUmVidWlsdC4KCjIwMDAtMDktMTEgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogZ2NjLmMgKG1haW4pOiBEb24ndCB3YXJuIGFib3V0IHVudXNlZCAtQiBwcmVmaXhlcwoJKHVudXNlZF9wcmVmaXhfd2FybmluZ3MpOiByZW1vdmUKCjIwMDAtMDktMTEgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogZmluYWwuYzogRml4IGZvcm1hdHRpbmcuCgoJKiBpbnRlZ3JhdGUuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA5LTExICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBhbGlhcy5jIChtZW1yZWZzX2NvbmZsaWN0X3ApOiBBbiBBRERSRVNTT0YgZG9lcyBjb25mbGljdCwgc29ycnkuCgoyMDAwLTA5LTExICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHJlbG9hZC5jIChyZWdub19jbG9iYmVyZWRfcCk6IEZpeCB0aGlua28gaW4gcHJldmlvdXMgY2hhbmdlLgoKMjAwMC0wOS0xMCAgU3RlcGhhbmUgQ2FycmV6ICA8U3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyPgoKCSogZ2NjLjE6IERvY3VtZW50IDY4aGMxMSBzcGVjaWZpYyBvcHRpb25zLgoKMjAwMC0wOS0xMCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChNQVNLX0xPTkdfRE9VQkxFXzEyOCk6IERlZmluZS4KCShUQVJHRVRfTE9OR19ET1VCTEVfMTI4KTogRGVmaW5lLgoJKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbWxvbmctZG91YmxlLTY0IGFuZCAtbWxvbmctZG91YmxlLTEyOC4KCShMT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBSZWRlZmluZS4KCShNQVhfTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogRGVmaW5lLgoJKExJQkdDQzJfTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogRGVmaW5lIGRlcGVuZGluZyBvbiBkZWZpbml0aW9uCglvZiBfX0xPTkdfRE9VQkxFXzEyOF9fLgoJKENQUF9TWVNWX1NQRUMpOiBEZWZpbmUgX19MT05HX0RPVUJMRV8xMjhfXyBpZiAtbWxvbmctZG91YmxlLTEyOAoJcGFzc2VkLgoJKENQUF9MT05HRE9VQkxFX0RFRkFVTFRfU1BFQyk6IERlZmluZS4KCShDUFBfU1lTVl9ERUZBVUxUX1NQRUMpOiBEZWZpbmUuCgkoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogQWRkIGNwcF9sb25nZG91YmxlX2RlZmF1bHQuCgkoSU5JVF9UQVJHRVRfT1BUQUJTKTogRGVmaW5lLgoKCSogY29uZmlnL3JzNjAwMC9haXguaCAoUlM2MDAwX0lUUlVOQyk6IE1vdmVkIGZyb20gcnM2MDAwLmguCgkoUlM2MDAwX1VJVFJVTkMpOiBMaWtld2lzZS4KCShJTklUX1RBUkdFVF9PUFRBQlMpOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF90cnVuY191c2VkKTogRGVsZXRlLgoJKHRydW5jX2RlZmluZWQpOiBEZWxldGUuCgkob3V0cHV0X3Byb2xvZyk6IERvbid0IG91dHB1dCAuZXh0ZXJuIGRlZmluaXRpb25zIGZvciBmcC0+aW50Cgljb252ZXJzaW9uIHJvdXRpbmVzLCBBU01fT1VUUFVUX0VYVEVSTkFMX0xJQkNBTEwgd2lsbCBkbyBpdC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAocnM2MDAwX3RydW5jX3VzZWQpOiBEZWxldGUuCgkodHJ1bmNfZGVmaW5lZCk6IERlbGV0ZS4KCShSUzYwMDBfSVRSVU5DKTogTW92ZWQgdG8gYWl4LmguCgkoUlM2MDAwX1VJVFJVTkMpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGZpeF90cnVuY2Rmc2kyKTogRmFpbCBpZiBpdCB3b3VsZAoJb25seSBlbWl0IGEgbGliY2FsbC4KCShmaXh1bnNfdHJ1bmNkZnNpMik6IERlbGV0ZS4KCSh0cnVuY19jYWxsKTogRGVsZXRlLgoJKHRydW5jX2NhbGxfcnRsKTogRGVsZXRlLgoKMjAwMC0wOS0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdmFyYXNtLmMgKG1ha2VfZGVjbF9ydGwpOiBSZXN0b3JlIGxlYWRpbmcgc3RhciBvbgoJREVDTF9BU1NFTUJMRVJfTkFNRSBzZXQgZm9yIGRlY2xzIHdpdGggYW4gYXNtc3BlYy4KCjIwMDAtMDktMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtcHJhZ21hLmMgKGhhbmRsZV9wcmFnbWFfcGFjayk6IENvcnJlY3QgcGFyc2luZyBsb2dpYyBzbyBpdAoJd29uJ3QgZ2l2ZSBhIHNwdXJpb3VzIGVycm9yIGZvciAnI3ByYWdtYSBwYWNrKCknLiAgU2ltcGxpZnkKCWNvbnRyb2wgZmxvdyBmb3IgcmVhZGFiaWxpdHkuICAncmVzZXQnIGFjdGlvbiBpcyBub3QgbmVjZXNzYXJ5LgoKMjAwMC0wOS0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZGVmYXVsdHMuaDogUHJvdmlkZSBkZWZhdWx0IGRlZmluaXRpb25zIGZvcjogQ0hBUl9UWVBFX1NJWkUsCglTSE9SVF9UWVBFX1NJWkUsIElOVF9UWVBFX1NJWkUsIExPTkdfVFlQRV9TSVpFLAoJTE9OR19MT05HX1RZUEVfU0laRSwgV0NIQVJfVFlQRV9TSVpFLCBGTE9BVF9UWVBFX1NJWkUsCglET1VCTEVfVFlQRV9TSVpFLCBMT05HX0RPVUJMRV9UWVBFX1NJWkUsIGFuZCBXQ0hBUl9VTlNJR05FRC4KCgkqIGNwcGV4cC5jLCBkd2FyZm91dC5jLCBkd2FyZjJvdXQuYywgZW1pdC1ydGwuYywgZmluYWwuYywgb3B0YWJzLmMsCglwcm9maWxlLmMsIHNkYm91dC5jLCB0cmFkY2lmLnksIHRyZWUuYzoKCUluY2x1ZGUgZGVmYXVsdHMuaCBpZiBub3QgYWxyZWFkeSBpbmNsdWRlZC4KCURvbid0IGRlZmluZSB0aGUgYWJvdmUgbWFjcm9zLgoKCSogTWFrZWZpbGUuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDAwLTA5LTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uaCAoYWRkX3N0bXQpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKFJFQ0hBSU5fU1RNVFMpOiBOZXcgbWFjcm8uCgkoQ0FTRV9MQUJFTF9ERUNMKTogTGlrZXdpc2UuCgkoZ2VucnRsX2Nhc2VfbGFiZWwpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBSZW1vdmUgcHJvdG90eXBlLgoJKGJ1aWxkX2Nhc2VfbGFiZWwpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGRlY2xfY29uc3RhbnRfdmFsdWUpOiBEZWNsYXJlLgoJKiBjLWNvbW1vbi5jIChjaGVja19jYXNlX3ZhbHVlKTogSGFuZGxlIEMrKydzIGV4dGVuc2lvbnMgdG8gQwoJc2VtYW50aWNzLgoJKiBjLWNvbW1ub24uZGVmIChDQVNFX0xBQkVMKTogQWRkIHJvb20gZm9yIHRoZSBDQVNFX0xBQkVMX0RFQ0wKCWZpZWxkLgoJKiBjLXBhcnNlLmluIChzdG10KTogQWRqdXN0IGhhbmRsaW5nIG9mIHJldHVybiBzdGF0ZW1lbnRzIGFuZCBjYXNlCglsYWVscy4KCSogYy1zZW1hbnRpY3MuYyAoYWRkX3N0bXQpOiBSZXR1cm4gdGhlIG5ldyBzdGF0ZW1lbnQuCgkoZ2VucnRsX3JldHVybl9zdG10KTogVGFrZSB0aGUgUkVUVVJOX1NUTVQgYXMgaW5wdXQsIG5vdCB0aGUKCXJldHVybmVkIGV4cHJlc3Npb24uICBEaXJlY3RseSBnZW5lcmF0ZSBSVEwsIHJhdGhlciB0aGFuIGNhbGxpbmcKCWNfZXhwYW5kX3JldHVybi4KCShnZW5ydGxfc3dpdGNoX3N0bXQpOiBEb24ndCBjYWxsIGNfZXhwYW5kX3N0YXJ0X2Nhc2UuCgkoYnVpbGRfY2FzZV9sYWJlbCk6IFRha2UgdGhlIExBQkVMX0RFQ0wgYXMgaW5wdXQsIHRvby4KCShnZW5ydGxfY2FzZV9sYWJlbCk6IEp1c3QgY2FsbCBhZGRfY2FzZV9ub2RlLgoJKGV4cGFuZF9zdG10KTogQWRqdXN0IGNhbGxzIHRvIGdlbnJ0bF9yZXR1cm5fc3RtdCBhbmQKCWdlbnJ0bF9jYXNlX2xhYmVsLgoJKiBjLXRyZWUuaCAoY19leHBhbmRfc3RhcnRfY2FzZSk6IERlY2xhcmUuCgkqIGMtdHlwZWNrLmMgKGRlY2xfY29uc3RhbnRfdmFsdWUpOiBHaXZlIGl0IGV4dGVybmFsIGxpbmthZ2UuCgkoY19leHBhbmRfcmV0dXJuKTogRG9uJ3QgY2FsbCBleHBhbmRfcmV0dXJuIG9yIGV4cGFuZF9udWxsX3JldHVybjsKCXVzZSBnZW5ydGxfcmV0dXJuX3N0bXQgaW5zdGVhZC4KCSogc3RtdC5jIChzdHJ1Y3QgbmVzdGluZyk6IFJlbW92ZSBudW1fcmFuZ2VzIGZpZWxkLgoJKGFkZF9jYXNlX25vZGUpOiBHaXZlIGl0IGV4dGVybmFsIGxpbmthZ2UuCgkoZXhwYW5kX3N0YXJ0X2Nhc2UpOiBEb24ndCBzZXQgbnVtX3Jhbmdlcy4KCShleHBhbmRfc3RhcnRfY2FzZV9kdW1teSk6IERvbid0IGNsZWFyIGl0LgoJKHB1c2hjYXNlKTogUmVseSBvbiBhZGRfY2FzZV9ub2RlIHRvIGhhbmRsZSBgZGVmYXVsdCcgbGFiZWxzLgoJKGFkZF9jYXNlX25vZGUpOiBIYW5kbGUgYGRlZmF1bHQnIGxhYmVscy4KCSogdHJlZS5jICh0cmVlX2ludF9jc3RfY29tcGFyZSk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS5oICh0cmVlX2ludF9jc3RfY29tcGFyZSk6IERlY2xhcmUuCgkoYWRkX2Nhc2Vfbm9kZSk6IExpa2V3aXNlLgoKMjAwMC0wOS0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGMtcGFyc2UuaW46IFJldmVydCBsYXN0IGNoYW5nZS4KCShpbml0X3Jlc3dvcmRzKTogRG8gbm90IGVudGVyIGRpc2FibGVkIGtleXdvcmRzIGludG8gdGhlIHJpZHBvaW50ZXJzCgl0YWJsZSwgbW9kdWxvIG9iamMgd2VpcmRuZXNzLgoJKF95eWxleCk6IFJldHVybiB0aGUgY2Fub25pY2FsIHNwZWxsaW5nIGZvciBhIGtleXdvcmQuCgoyMDAwLTA5LTEwICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnL2FybS9hcm0uaCAoQ1BQX0lTQV9TUEVDKTogRG9uJ3QgZGVmaW5lIGBhcm0nIG9yIGB0aHVtYicuCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmggKENQUF9QUkVERUZJTkVTKTogRG9uJ3QgZGVmaW5lIGBfX2FybV9fJy4KClN1biBTZXAgMTAgMTQ6MzA6MjggRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGFsaWFzLmMgKGZpbmRfYmFzZV90ZXJtKTogSGFuZGxlIEFERFJFU1NPRi4KCShtZW1yZWZzX2NvbmZsaWN0X3ApOiBBbiBBRERSRVNTT0YgZG9lc24ndCBjb25mbGljdC4KCjIwMDAtMDktMTAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBnZW5vdXRwdXQuYyAob3V0cHV0X2luc25fZGF0YSk6IFRyYW5zbGF0ZSA8TkVXTElORT4gdG8gXG5cIHdoaWxlCglvdXRwdXR0aW5nIHRlbXBsYXRlcyB3aXRoIG1hbnkgbGluZXMuCgoyMDAwLTA5LTEwICBTdGVwaGFuZSBDYXJyZXogIDxTdGVwaGFuZS5DYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBsaWJnY2MyLmg6IFVzZSBMT05HX0xPTkdfVFlQRV9TSVpFIGluc3RlYWQgb2YgTUlOX1VOSVRTX1BFUl9XT1JECgl0byBkZWNpZGUgd2hldGhlciA2NC1iaXQgc3VwcG9ydCBtdXN0IGJlIGdlbmVyYXRlZC4KCjIwMDAtMDktMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjLXBhcnNlLmluIChhc20gcGF0dGVybnMpOiBGaXggdm9sYXRpbGUgY2hlY2suCgoyMDAwLTA5LTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcHBtYWNyby5jIChjaGVja190cmFkX3N0cmluZ2lmaWNhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShzYXZlX2V4cGFuc2lvbik6IElmIC1XdHJhZGl0aW9uYWwsIHdhcm4gYWJvdXQgc3RyaW5naWZpY2F0aW9uIG9mCgltYWNybyBhcmd1bWVudHMuCgoyMDAwLTA5LTExICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBsb29wLmggKHN0cnVjdCBsb29wX21lbV9pbmZvKTogTW92ZSBmcm9tIGxvb3AuYwoJKHN0cnVjdCBsb29wX2luZm8pOiBBZGQgZmllbGRzIHN0b3JlX21lbXMsIG1lbXMsIG1lbXNfaWR4LAoJbWVtc19hbGxvY2F0ZWQsIHVua25vd25fYWRkcmVzc19hbHRlcmVkLAoJdW5rbm93bl9jb25zdGFudF9hZGRyZXNzX2FsdGVyZWQsIG51bV9tZW1fc2V0cywgYW5kCglmaXJzdF9sb29wX3N0b3JlX2luc24uCgoJKiBsb29wLmMgKGxvb3Bfc3RvcmVfbWVtcyk6IFJlcGxhY2Ugd2l0aCBmaWVsZCBpbiBsb29wX2luZm8gc3RydWN0LgoJKGxvb3BfbWVtcywgbG9vcF9tZW1zX2lkeCwgbG9vcF9tZW1zX2FsbG9jYXRlZCk6IExpa2V3aXNlLgoJKHVua25vd25fYWRkcmVzc19hbHRlcmVkLCB1bmtub3duX2NvbnN0YW50X2FkZHJlc3NfYWx0ZXJlZCk6IExpa2V3aXNlLgoJKG51bV9tZW1fc2V0cyk6IExpa2V3aXNlLgoJKHJlcGxhY2VfbG9vcF9tZW1zLCByZXBsYWNlX2xvb3BfcmVncyk6IE5ldy4KCShzdHJ1Y3QgbG9vcF9yZXBsYWNlX2FyZ3MpOiBOZXcuCgkobG9hZF9tZW1zKTogVXNlIHJlcGxhY2VfbG9vcF9tZW1zLgoJKHRyeV9jb3B5X3Byb3ApOiBVc2UgcmVwbGFjZV9sb29wX3JlZ3MuCgkocmVwbGFjZV9sb29wX3JlZywgcmVwbGFjZV9sb29wX21lbSk6IFVzZSBsb29wX3JlcGxhY2VfYXJncyBzdHJ1Y3R1cmUuCgoyMDAwLTA5LTA5ICBTdGVwaGFuZSBDYXJyZXogIDxTdGVwaGFuZS5DYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBjb25maWd1cmUuaW46IFJlY29nbml6ZSBtNjgxMS1lbGYgYW5kIG02ODEyLWVsZi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wOS0wOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcmVjb2cuYyAodmFsaWRhdGVfcmVwbGFjZV9ydHhfMSk6IENvcnJlY3QgTU9ERSBwYXJhbWV0ZXIgaW4gY2FsbAoJdG8gb3BlcmFuZF9zdWJ3b3JkLgoKMjAwMC0wOS0xMCAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogbG9vcC5jIChzdHJ1Y3QgbW92YWJsZXMpOiBOZXcuCgkobnVtX21vdmFibGVzKTogTW92ZSBpbnRvIHN0cnVjdCBtb3ZhYmxlcy4KCSh0aGVfbW92YWJsZXMpOiBDaGFuZ2UgdHlwZSB0byBzdHJ1Y3QgbW92YWJsZXMuCgkoaWdub3JlX3NvbWVfbW92YWJsZXMpOiBDaGFuZ2Ugc3RydWN0IG1vdmFibGUgYXJnIHRvIHN0cnVjdCBtb3ZhYmxlcy4KCShmb3JjZV9tb3ZhYmxlcywgY29tYmluZV9tb3ZhYmxlcywgcmVnc19tYXRjaF9wKTogTGlrZXdpc2UuCgkocnR4X2VxdWFsX2Zvcl9sb29wX3AsIG1vdmVfbW92YWJsZXMpOiBMaWtld2lzZS4KCShzY2FuX2xvb3ApOiBDaGFuZ2UgbW92YWJsZXMgdG8gYmUgb2YgdHlwZSBzdHJ1Y3QgbW92YWJsZXMuCglSZXBsYWNlIGxhc3RfbW92YWJsZSB3aXRoIGZpZWxkIGluIG1vdmFibGVzIHN0cnVjdHVyZS4KCjIwMDAtMDktMDggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtcHJhZ21hLmM6IERvbid0IGVsaWRlIGVudGlyZSBmaWxlIGlmICFIQU5ETEVfR0VORVJJQ19QUkFHTUFTLgoJKGluaXRfcHJhZ21hKTogQXZvaWQgd2FybmluZyBpZiBwZmlsZSBoYXBwZW5zIHRvIGJlIHVudXNlZC4KCSogYy1wcmFnbWEuaDogTmV2ZXIgZGVmaW5lIEhBTkRMRV9HRU5FUklDX1BSQUdNQVMuICBOZXZlcgoJZGVmaW5lIGluaXRfcHJhZ21hIHRvIG5vdGhpbmcuICBBbHdheXMgcHJvdG90eXBlCglpbml0X3ByYWdtYS4gIFByb3RvdHlwZSBkaXNwYXRjaF9wcmFnbWEgaWYgIVVTRV9DUFBMSUIuCgoJKiBjLWxleC5jIChwcm9jZXNzX2RpcmVjdGl2ZSk6IEFsd2F5cyBjYWxsIGRpc3BhdGNoX3ByYWdtYS4KCUluaXRpYWxpemUgZW50ZXJpbmdfY19oZWFkZXIgdG8gMC4KCjIwMDAtMDktMDggIFN0ZXBoYW5lIENhcnJleiAgPFN0ZXBoYW5lLkNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEubWQ6IE5ldyBmaWxlLCBtYWNoaW5lIGRlc2NyaXB0aW9uIGZvcgoJNjhIQzExICYgNjhIQzEyLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmg6IE5ldyBmaWxlLCBkZWZpbml0aW9ucyBmb3IgNjhIQzExICYgNjhIQzEyLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmM6IE5ldyBmaWxlLCBmdW5jdGlvbnMgZm9yIDY4SEMxMSAmIDY4SEMxMi4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMi5oOiBOZXcgZmlsZSwgZGVmaW5pdGlvbnMgZm9yIDY4SEMxMi4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS1wcm90b3MuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEtY3J0MC5TOiBOZXcgZmlsZSwgc3RhcnR1cCBjb2RlLgoJKiBjb25maWcvbTY4aGMxMS90LW02OGhjMTEtZ2FzOiBOZXcgZmlsZSwgbWFrZWZpbGUgZnJhZ21lbnQuCgkqIGNvbmZpZy9tNjhoYzExL3htLW02OGhjMTEuaDogTmV3IGZpbGUsIHRhcmdldCBkZWZzLgoJKiBjb25maWcvbTY4aGMxMS9sYXJpdGguYXNtOiBOZXcgZmlsZSwgbGliZ2NjIHJvdXRpbmVzLgoKMjAwMC0wOS0wOCAgU3RlcGhhbmUgQ2FycmV6ICA8U3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyPgoKCSogTWFrZWZpbGUuaW4gKERQQklUX0ZVTkNTKTogQWRkIF91c2lfdG9fZGYuCgkoRlBCSVRfRlVOQ1MpOiBBZGQgX3VzaV90b19zZi4KCSogY29uZmlnL2ZwLWJpdC5jICh1c2lfdG9fZmxvYXQpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9mcC1iaXQuaCAoTF91c2lfdG9fc2YsIExfdXNpX3RvX2RmKTogRGVmaW5lLgoJKHVzaV90b19mbG9hdCk6IEFkZCBhcHByb3ByaWF0ZSAjZGVmaW5lLgoKMjAwMC0wOS0wOCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBpMzg2LXByb3Rvcy5oIChzc2VfY29tcGFyaXNvbl9vcGVyYXRvciwgbW14X3JlZ19vcGVyYW5kKTogRGVjbGFyZQoJbmV3IGZ1bmN0aW9ucy4KCSogaTM4Ni5jIChzc2VfY29tcGFyaXNvbl9vcGVyYXRvciwgbW14X3JlZ19vcGVyYW5kKTogTmV3IGZ1bmN0aW9ucy4KCSogaTM4Ni5tZCAoYXR0ciAidHlwZSIpOiBBZGQgc3NlIGFuZCBtbXggdHlwZXMuCgkoYXR0ciAibWVtb3J5Iik6IEhhbmRsZSB0aGVtIHdpdGhvdXQgYSBjcmFzaC4KCShtb3ZzaV8xLCBtb3ZkaV8yKTogQWxsb3cgTU1YIHJlZ3MuCgkobW92ZGkgc3BsaXRzKTogRG9uJ3Qgc3BsaXQgbW92ZXMgaW52b2x2aW5nIE1NWCByZWdzLgoJKHNldGNjXzQpOiBSZW1vdmUgJyonIGZyb20gcGF0dGVybiBuYW1lIHNvIHdlIGdldCBhIGdlbl9zZXRjYzQuCgkobW92djRzZl9pbnRlcm5hbCwgbW92djRzaV9pbnRlcm5hbCwgbW92djhxaV9pbnRlcm5hbCwKCW1vdnY0aGlfaW50ZXJuYWwsIG1vdnYyc2lfaW50ZXJuYWwsIG1vdnY4cWksIG1vdnY0aGksIG1vdnYyc2ksCgltb3Z2NHNmLCBtb3Z2NHNpLCBwdXNodjRzZiwgcHVzaHY0c2ksIHB1c2h2OHFpLCBwdXNodjRoaSwgcHVzaHYyc2ksCglzc2VfbW92YXBzLCBzc2VfbW92dXBzLCBzc2VfbW92bXNrcHMsIG1teF9wbW92bXNrYiwgbW14X21hc2ttb3ZxLAoJc3NlX21vdm50djRzZiwgc3NlX21vdm50ZGksIHNzZV9tb3ZobHBzLCBzc2VfbW92bGhwcywgc3NlX21vdmhwcywKCXNzZV9tb3ZscHMsIHNzZV9sb2Fkc3MsIHNzZV9tb3Zzcywgc3NlX3N0b3Jlc3MsIHNzZV9zaHVmcHMsCglhZGR2NHNmMywgdm1hZGR2NHNmMywgc3VidjRzZjMsIHZtc3VidjRzZjMsIG11bHY0c2YzLCB2bW11bHY0c2YzLAoJZGl2djRzZjMsIHZtZGl2djRzZjMsIHJjcHY0c2YyLCB2bXJjcHY0c2YyLCByc3FydHY0c2YyLCB2bXJzcXJ0djRzZjIsCglzcXJ0djRzZjIsIHZtc3FydHY0c2YyLCBzc2VfYW5kdGkzLCBzc2VfbmFuZHRpMywgc3NlX2lvcnRpMywKCXNzZV94b3J0aTMsIG1hc2tjbXB2NHNmMywgbWFza25jbXB2NHNmMywgdm1tYXNrY21wdjRzZjMsCgl2bW1hc2tuY21wdjRzZjMsIHNzZV9jb21pLCBzc2VfdWNvbWksIHNzZV91bnBja2hwcywgc3NlX3VucGNrbHBzLAoJc21heHY0c2YzLCB2bXNtYXh2NHNmMywgc21pbnY0c2YzLCB2bXNtaW52NHNmMywgY3Z0cGkycHMsIGN2dHBzMnBpLAoJY3Z0dHBzMnBpLCBjdnRzaTJzcywgY3Z0c3Myc2ksIGN2dHRzczJzaSwgYWRkdjhxaTMsIGFkZHY0aGkzLAoJYWRkdjJzaTMsIHNzYWRkdjhxaTMsIHNzYWRkdjRoaTMsIHVzYWRkdjhxaTMsIHVzYWRkdjRoaTMsIHN1YnY4cWkzLAoJc3VidjRoaTMsIHN1YnYyc2kzLCBzc3N1YnY4cWkzLCBzc3N1YnY0aGkzLCB1c3N1YnY4cWkzLCB1c3N1YnY0aGkzLAoJbXVsdjRoaTMsIHNtdWx2NGhpM19oaWdocGFydCwgdW11bHY0aGkzX2hpZ2hwYXJ0LCBtbXhfcG1hZGR3ZCwKCW1teF9pb3JkaTMsIG1teF94b3JkaTMsIG1teF9hbmRkaTMsIG1teF9uYW5kZGkzLCBtbXhfdWF2Z3Y4cWkzLAoJbW14X3Vhdmd2NGhpMywgbW14X3BzYWRidywgbW14X3BpbnNydywgbW14X3BleHRydywgbW14X3BzaHVmdywKCWVxdjhxaTMsIGVxdjRoaTMsIGVxdjJzaTMsIGd0djhxaTMsIGd0djRoaTMsIGd0djJzaTMsIHVtYXh2OHFpMywKCXNtYXh2NGhpMywgdW1pbnY4cWkzLCBzbWludjRoaTMsIGFzaHJ2NGhpMywgYXNocnYyc2kzLCBsc2hydjRoaTMsCglsc2hydjJzaTMsIG1teF9sc2hyZGkzLCBhc2hsdjRoaTMsIGFzaGx2MnNpMywgbW14X2FzaGxkaTMsCgltbXhfcGFja3Nzd2IsIG1teF9wYWNrc3NkdywgbW14X3BhY2t1c3diLCBtbXhfcHVucGNraGJ3LAoJbW14X3B1bnBja2h3ZCwgbW14X3B1bnBja2hkcSwgbW14X3B1bnBja2xidywgbW14X3B1bnBja2x3ZCwKCW1teF9wdW5wY2tsZHEsIGVtbXMsIHNmZW5jZSwgbGRteGNzciwgcHJlZmV0Y2gsIHN0bXhjc3IsIHNzZV9jbHJ0aSwKCW1teF9jbHJkaSk6IE5ldyBwYXR0ZXJucy4KCjIwMDAtMDktMDggIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmM6IERvbid0IGluY2x1ZGUgdG0uaCBkaXJlY3RseS4KCkZyaSBTZXAgIDggMTQ6MzQ6NTYgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWNvZy5jICh2YWxpZGF0ZV9yZXBsYWNlX3J0eF8xKTogRml4IGNvbmZ1c2lvbiBhYm91dCBlcXVhbGl0eQoJdGVzdGluZzsgc2ltcGxpZnkgc3VicmVncyBvZiBjb25zdGFudHMgYW5kIG5lc3RlZCBzdWJyZWdzLgoKMjAwMC0wOS0wOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2gubWQgKHN5bVBMVF9sYWJlbDJyZWcpOiBVc2Ugb3BlcmFuZDMgZm9yIFBJQyByZWcuCgoyMDAwLTA5LTA4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBUcnkgdG8gc2ltcGxpZnkgVkVDX1NFTEVDVCBvZiBhCglWRUNfQ09OQ0FULgoJKiBydGwudGV4aSAoZGVzY3JpcHRpb24gb2YgVVNFKTogQWRkIG5vdGUgYWJvdXQgcG9zc2libGUgcGl0ZmFsbHMKCXdpdGggdGhpcyBydHguCglGcm9tIFJpY2hhcmQgSGVuZGVyc29uOgoJKiByZWxvYWQxLmMgKGNob29zZV9yZWxvYWRfcmVncyk6IENvbXB1dGUgbmVlZF9tb2RlIHByb3Blcmx5LgoKMjAwMC0wOS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2xpYjFmdW5jcy5hc20gKF9fZGl2c2kzKTogVXNlIC5zMSBmb3IgZnJjcGEuCgkoX19tb2RzaTMsIF9fdW1vZHNpMyk6IExpa2V3aXNlLgoJKF9fdWRpdnNpMyk6IExpa2V3aXNlLiAgTm9ybWFsaXplIHRoZSBURm1vZGUgdmFsdWVzLgoKMjAwMC0wOS0wNyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zb2wtYzAuYyAoX3N0YXJ0KTogRGVjbGFyZSBgdGVybWZ1bmMnIHBhcmFtZXRlcgoJd2l0aCBhIHByb3RvdHlwZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUlM2MDAwX0FSR19TSVpFKTogVXNlIGNhc3QgdG8gc3VwcHJlc3MKCXdhcm5pbmcuCgpGcmkgU2VwICA4IDAzOjI2OjM4IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jby51az4KCgkqIHNoLm1kIChjbXBlcXNpX2lvcl90LCBjbXBlcXNpX2FuZF90KTogUmVtb3ZlLgoJKGNtcGVxZGlfdCk6IEFkZCBvdXRwdXQgcGF0dGVybi4KCShjbXBlcWRpX3QrMSk6IERvbid0IHNwbGl0IHdoZW4gbm90IG9wdGltaXppbmcuCglSZXN0b3JlIHByb3BlciBzcGxpdHRpbmcgb3BlcmF0aW9uLgoKMjAwMC0wOS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGMtbGV4LmMgKHByb2Nlc3NfZGlyZWN0aXZlKTogSWYgbm90IEhBTkRMRV9HRU5FUklDX1BSQUdNQVMsCglkbyBub3QgY2FsbCBkaXNwYXRjaF9wcmFnbWEuCgoyMDAwLTA5LTA3ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiByZWxvYWQuYyAocHVzaF9yZWxvYWQpOiBVc2UgQ0xBU1NfQ0FOTk9UX0NIQU5HRV9NT0RFX1AgaW4gYWRkaXRpb24KCXRvIENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChDTEFTU19DQU5OT1RfQ0hBTkdFX01PREVfUCk6IFRydWUgb25seSBpZiB0aGUKCW1vZGUgY2xhc3NlcyBhcmUgZGlmZmVyZW50LgoKMjAwMC0wOS0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmggKHN0cnVjdCBjcHBfb3B0aW9ucyk6IEFkZCB1c2VyX2xhYmVsX3ByZWZpeCBtZW1iZXIsCglsZWZ0IG91dCBvZiBjb21taXQgd2hpY2ggcmVtb3ZlZCBjcHB1bHAuYy4KCjIwMDAtMDktMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBBZGQganVtcCBpbiBuZXcgYmxvY2sKCWFmdGVyIHN3aXRjaCBmb3IgQ0FTRV9EUk9QU19USFJPVUdILgoKMjAwMC0wOS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAoc3RyZW5ndGhfcmVkdWNlKTogQ2FsbCBjaGVja19leHRfZGVwZW5kYW50X2dpdnMuCglQcm9wZXJseSBleHRlbmQgdGhlIGJpdiBpbml0aWFsIHZhbHVlIGZvciB0aGUgZ2l2LgoJKHJlY29yZF9iaXYpOiBaZXJvIGV4dF9kZXBlbmRhbnQuCgkocmVjb3JkX2dpdik6IE5ldyBhcmd1bWVudCBleHRfdmFsLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKGdlbmVyYWxfaW5kdWN0aW9uX3Zhcik6IExpa2V3aXNlLgoJKGNvbnNlY19zZXRzX2dpdik6IExpa2V3aXNlLgoJKHNpbXBsaWZ5X2dpdl9leHByKTogTGlrZXdpc2UuICBGaWxsIGluIGV4dF92YWwgaWYgd2UgZmluZAoJYSBzaWduLWV4dGVuZCwgemVyby1leHRlbmQsIG9yIHRydW5jYXRlLgoJKGNvbWJpbmVfZ2l2c19wKTogTWFrZSBzdXJlIG1vZGVzIGFyZSBjb21wYXRpYmxlLgoJKGNoZWNrX2V4dF9kZXBlbmRhbnRfZ2l2cyk6IE5ldy4KCShleHRlbmRfdmFsdWVfZm9yX2dpdik6IE5ldy4KCSogbG9vcC5oIChzdHJ1Y3QgaW5kdWN0aW9uKTogQWRkIGV4dF9kZXBlbmRhbnQuCgkqIHVucm9sbC5jIChpdGVyYXRpb25faW5mbyk6IEV4dGVuZCB0aGUgYml2IGluaXRpYWwgdmFsdWUgZm9yIHRoZSBnaXYuCgkoZmluZF9zcGxpdHRhYmxlX2dpdnMpOiBMaWtld2lzZS4KCShmaW5hbF9naXZfdmFsdWUpOiBMaWtld2lzZS4KCjIwMDAtMDktMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtcHJhZ21hLmg6IERlZmluZSBIQU5ETEVfR0VORVJJQ19QUkFHTUFTIGlmCglSRUdJU1RFUl9UQVJHRVRfUFJBR01BUyBpcyBkZWZpbmVkLiAgRHVwbGljYXRlIHNvbWUKCWRlZmluaXRpb25zIGZyb20gY3BwbGliLmguCgkqIGNwcGxpYi5oOiBEb24ndCB0eXBlZGVmIHN0cnVjdCBjcHBfcmVhZGVyIGlmIGMtcHJhZ21hLmggaGFzCglhbHJlYWR5IGRvbmUgaXQuCgkqIHRtLnRleGk6IERvY3VtZW50IEhBTkRMRV9QUkFHTUEgYXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIEFkZAoJZG9jdW1lbnRhdGlvbiBmb3IgUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMuCgoJKiBjLWxleC5jOiBJbmNsdWRlIGNwcGxpYi5oIGJlZm9yZSBjLXByYWdtYS5oLiAgRGVmaW5lIGEKCWRlZmF1bHQtcHJhZ21hIGNhbGxiYWNrIHRvIGltcGxlbWVudCAtV3Vua25vd24tcHJhZ21hcyBpZgoJVVNFX0NQUExJQi4KCSogYy1wYXJzZS5pbjogTW92ZSBhbGwgaW5jbHVkZXMgdG8gdG9wIG9mIGZpbGUuCgkqIGMtcHJhZ21hLmM6IEluY2x1ZGUgY3BwbGliLmggYmVmb3JlIGMtcHJhZ21hLmguICBJbmNsdWRlCgl0bV9wLmguCgkoZGlzcGF0Y2hfcHJhZ21hKTogUHV0IHRoZSBuYW1lc3BhY2UgaW4gdGhlIC1XdW5rbm93bi1wcmFnbWFzCgl3YXJuaW5nLgoJKGluaXRfcHJhZ21hKTogSWYgUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMgaXMgZGVmaW5lZCwgY2FsbCBpdC4KCgkqIGFybS5oLCBhcm0tcHJvdG9zLmgsIGFybS5jLAoJICBjNHguaCwgYzR4LXByb3Rvcy5oLCBjNHguYywKCSAgaDgzMDAuaCwgaDgzMDAtcHJvdG9zLmgsIGg4MzAwLmMsCgkgIGkzNzAuaCwgaTM3MC1wcm90b3MuaCwgaTM3MC5jLAoJICBpOTYwLmgsIGk5NjAtcHJvdG9zLmgsIGk5NjAuYywKCSAgc2guaCwgc2gtcHJvdG9zLmgsIHNoLmMsCgkgIHY4NTAuaCwgdjg1MC1wcm90b3MuaCwgdjg1MC5jOiBDb252ZXJ0IEhBTkRMRV9QUkFHTUEtYmFzZWQKCXByYWdtYXRhIHNjaGVtZSB0byB1c2UgUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMgaW5zdGVhZC4KCgkqIGQzMHYuaDogRG9uJ3QgbWVudGlvbiBIQU5ETEVfUFJBR01BIGluIGNvbW1lbnQuICBBZGQKCW11bHRpcGxlIGluY2x1ZGUgZ3VhcmQuCgkqIGkzNzAubWQgKHVudHlwZWRfY2FsbCk6IFVzZSBHRU5fQ0FMTC4KCSh1bW9kc2kzKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCSogc2gvZWxmLmg6IERvbid0IHVuZGVmIEhBTkRMRV9TWVNWX1BSQUdNQS4KCSogdjg1MC5jIChvdXRwdXRfbW92ZV9zaW5nbGUsIG91dHB1dF9tb3ZlX2RvdWJsZSk6IENvbnN0aWZ5CglyZXR1cm4gdmFsdWUuCgkocHJpbnRfb3BlcmFuZCk6IENvbnN0aWZ5IGEgY2hhciAqLgoJKiB2ODUwLmggKHN0cnVjdCBzbWFsbF9tZW1vcnlfaW5mbyk6IENvbnN0aWZ5IG5hbWUgbWVtYmVyLgoKMjAwMC0wOS0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb25maWcvaDgzMDAuaDogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtOiBMaWtld2lzZS4KClRodSAwNy1TZXAtMjAwMCAyMToyOTowMCBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSByZWZlcmVuY2VzIHRvIGNwcHVscC57YyxvfS4KCSogY3BwaW5pdC5jIChpbml0aWFsaXplX2J1aWx0aW5zLCBjcHBfc3RhcnRfcmVhZCwKCWNwcF9oYW5kbGVfb3B0aW9uKTogVXBkYXRlIHRvIHVzZSBjcHBfb3B0aW9ucyBzdHJ1Y3R1cmUuCgkqIGNwcHVscC5jOiBSZW1vdmUuCgoyMDAwLTA5LTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jICh0aW1lX2NoYXJfdGFibGUpOiBBbGxvdyAlI2IgYW5kICUjaC4KCjIwMDAtMDktMDcgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIHJlb3JnLmMgKGZpbmRfZW5kX2xhYmVsKTogSWYgdGhlIGJhc2ljIGJsb2NrIHJlb3JkZXIgcGFzcyBtb3ZlcyB0aGUKCXJldHVybiBpbnNuIHRvIHNvbWUgb3RoZXIgcGxhY2UgdHJ5IHRvIGxvY2F0ZSBpdCBhZ2FpbiBhbmQgcHV0IG91cgoJZW5kX29mX2Z1bmN0aW9uX2xhYmVsIHRoZXJlLgoJKiByZW9yZy5jIChyZWxheF9kZWxheV9zbG90cyk6IENoZWNrIGlmIGZpbmRfZW5kX2xhYmVsIGNyZWF0ZWQgYQoJbmV3IGxhYmVsIHRoYXQgaW52YWxpZGF0ZXMgdGhlIGN1cnJlbnQgb3B0aW1hemF0aW9uLgoKMjAwMC0wOS0wNyAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQHJlZGhhdC5jb20+CgoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3ApOiBDaGVjayBmb3IgdW5jb25kaXRpb25hbCBqdW1wcwoJdG8gbG9vcCBjb250aW51YXRpb24uICBEZWxldGUgaWYgbl9pdGVyYXRpb25zIGlzIDEuCgkodWp1bXBfdG9fbG9vcF9jb250KTogTmV3IHJvdXRpbmUuCgoyMDAwLTA5LTA3ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHJ0bC5jIChjbGFzc19uYXJyb3dlc3RfbW9kZSk6IEFkZCBlbnRyaWVzIGZvciBNT0RFX1ZFQ1RPUl9JTlQgYW5kCglNT0RFX1ZFQ1RPUl9GTE9BVC4KCSogcmVsb2FkLmMgKHJlZ25vX2Nsb2JiZXJlZF9wKTogQWNjZXB0IG5ldyBhcmcsIE1PREUsIGFuZCB1c2UgaXQKCXRvIGhhbmRsZSBtdWx0aXdvcmQgbW9kZXMgY29ycmVjdGx5LiAgQWxsIGNhbGxlcnMgYW5kIHRoZSBkZWNsYXJhdGlvbgoJY2hhbmdlZC4KCjIwMDAtMDktMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChwcmVwX3N0bXQpOiBEZWNsYXJlLgoJKGxhbmdfZXhwYW5kX3N0bXQpOiBMaWtld2lzZS4KCSogYy1kZWNsLmMgKGxhbmdfZXhwYW5kX3N0bXQpOiBSZW1vdmUuCgkqIGMtc2VtYW50aWNzLmMgKGxhbmdfZXhwYW5kX3N0bXQpOiBEZWZpbmUuCgkocHJlcF9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9zdG10KTogSGFuZGxlIGNvbW1vbiBzdGF0ZW1lbnQgdHlwZXMgaGVyZS4KCjIwMDAtMDktMDcgIE5paWJlIFl1dGFrYSAgPGduaWliZUBtMTduLm9yZz4sIEtheiBLb2ppbWEgIDxra29qaW1hQHJyLmlpajR1Lm9yLmpwPiwgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKHNoLSotbGludXgqKTogQWRkZWQuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogY29uZmlnL3NoL3QtbGludXg6IE5ldyBmaWxlLgoJKiBjb25maWcvc2gvc2guaCAoVVNFUk1PREVfQklUKTogRGVmaW5lLgoJKFRBUkdFVF9VU0VSTU9ERSk6IExpa2V3aXNlLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IE5ldyBzd2l0Y2hlcyBmb3IgdGhlIGJpdHMgYWJvdmUuCgkoSU5JVElBTElaRV9UUkFNUE9MSU5FKTogQ2FsbCBfX2ljX2ludmFsaWRhdGUgaW4gVVNFUk1PREUuCgkqIGNvbmZpZy9zaC9saW51eC5oOiBOZXcgZmlsZS4KCSogY29uZmlnL3NoL2xpYjFmdW5jcy5hc20gKEdMT0JBTCk6IERvbid0IHByZWZpeCBzeW1ib2xzIHdpdGgKCXVuZGVyc2NvcmUgb24gbGludXguCgkoTF9zZGl2c2kzLCBMX3VkaXZzaTMpOiBEZWZpbmUgZm9yIGxpbnV4LgoJKExfaWNfaW52YWxpZGF0ZSk6IERlZmluZS4KCSogaW52b2tlLnRleGkgKFNIIE9wdGlvbnMpOiBEb2N1bWVudCAtbXVzZXJtb2RlLgoKMjAwMC0wOS0wNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guaCAoT1ZFUlJJREVfT1BUSU9OUyk6IERvbid0IGRpc2FibGUgZnVuY3Rpb24KCUNTRSB1bmxlc3MgZ2VuZXJhdGluZyBQSUMuCgoJKiBjb25maWcvc2gvc2gubWQgKHN5bVBMVF9sYWJlbDJyZWcpOiBGb3JjZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YKCXRoZSBQSUMgcmVnaXN0ZXIuCgoyMDAwLTA5LTA2ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBNYWtlZmlsZS5pbiAoY2xlYW5fczEpOiBEZXBlbmQgb24gc3RhZ2VfYi4KCShjbGVhbl9zMik6IERlcGVuZCBvbiBzdGFnZV9kLiBEb24ndCByZW1vdmUgJChWT0xfRklMRVMpIGluCglzdGFnZTIuIFRoZXkgYXJlIHVzZWQgZm9yICJtYWtlIGNvbXBhcmUiLgoKMjAwMC0wOS0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglNb3ZlIHN0YXRlbWVudC10cmVlIGZhY2lsaXRpZXMgZnJvbSBDKysgdG8gQyBmcm9udC1lbmQuCgkqIGMtY29tbW9uLmggKGNfdHJlZV9pbmRleCk6IEFkZCBDVElfVk9JRF9aRVJPLgoJKHZvaWRfemVyb19ub2RlKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBzdG10X3RyZWVfcyk6IE5ldyB0eXBlLgoJKHN0bXRfdHJlZSk6IE5ldyB0eXBlZGVmLgoJKHN0cnVjdCBsYW5ndWFnZV9mdW5jdGlvbik6IE5ldyB0eXBlLgoJKGxhc3RfdHJlZSk6IE5ldyBtYWNyby4KCShsYXN0X2V4cHJfdHlwZSk6IExpa2V3aXNlLgoJKHdhbGtfdHJlZV9mbik6IE5ldyB0eXBlZGVmLgoJKGN1cnJlbnRfc3RtdF90cmVlKTogTmV3IGZ1bmN0aW9uLgoJKGJlZ2luX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGFkZF9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKHN0YXRlbWVudF9jb2RlX3ApOiBMaWtld2lzZS4KCShsYW5nX3N0YXRlbWVudF9jb2RlX3ApOiBOZXcgdmFyaWFibGUuCgkod2Fsa19zdG10X3RyZWUpOiBOZXcgZnVuY3Rpb24uCgkoU1RNVF9JU19GVUxMX0VYUFJfUCk6IE5ldyBtYWNyby4KCSogYy1jb21tb24uYyAobGFuZ19zdGF0ZW1lbnRfY29kZV9wKTogTmV3IHZhcmlhYmxlLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IEluaXRpYWxpemUgdm9pZF96ZXJvX25vZGUuCgkoc3RhdGVtZW50X2NvZGVfcCk6IE5ldyBmdW5jdGlvbi4KCSh3YWxrX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKiBjLWRlY2wuYyAobGFuZ3VhZ2VfZnVuY3Rpb24pOiBSZW5hbWUgdG8gLi4uCgkoY19sYW5ndWFnZV9mdW5jdGlvbik6IC4uLiB0aGlzLiAgSW5jbHVkZSBsYW5ndWFnZV9mdW5jdGlvbi4KCShwdXNoX2NfZnVuY3Rpb25fY29udGV4dCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShwb3BfY19mdW5jdGlvbl9jb250ZXh0KTogTGlrZXdpc2UuCgkobWFya19jX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCShjdXJyZW50X3N0bXRfdHJlZSk6IERlZmluZS4KCSogYy1zZW1hbnRpY3MuYyAoYmVnaW5fc3RtdF90cmVlKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9zdG10KTogTGlrZXdpc2UuCgkocHJ1bmVfdW51c2VkX2RlY2xzKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoKMjAwMC0wOS0wNiBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogZmxvdy5jIChpbnNuX2RlYWRfcCk6IERldGVjdCBkZWFkIG1lbW9yeSBzdG9yZXMgd2l0aCBhdXRvIGluY3JlbWVudHMuCgoyMDAwLTA5LTA2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNhbGxzLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOS0wNiAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0BjeWdudXMuY28udWs+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKEFERFJFU1NfQ09TVCk6IEZpeCB0eXBvLgoKMjAwMC0wOS0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCUludGVncmF0ZWQgcHJlcHJvY2Vzc29yLgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBjLXBhcnNlLmdwZXJmLAoJYy1ncGVyZi5oLCBhbmQgYy1wYXJzZS5oLiAgUmVtb3ZlIC1kIGZyb20geWFjYyBjb21tYW5kIGxpbmUKCWdlbmVyYXRpbmcgYy1wYXJzZS5jLiAgVXBkYXRlIGRlcGVuZGVuY2llcy4KCSogYy1wYXJzZS5ncGVyZiwgYy1ncGVyZi5oOiBEZWxldGUuCgoJKiBjLWNvbW1vbi5jOiBEb24ndCBkZWZpbmUgcGFyc2Vfb3B0aW9ucywgY3BwX3Rva2VuLCB5eV9jdXIsCgl5eV9saW0sIG9yIHl5X2dldF90b2tlbi4gIERvbid0IGRlZmluZSBnZXRfZGlyZWN0aXZlX2xpbmUgaWYKCVVTRV9DUFBMSUIuCgkqIGMtY29tbW9uLmg6IEFkZCBtdWx0aXBsZSBpbmNsdWRlIGd1YXJkLiAgRGVmaW5lIFJJRCB2YWx1ZXMKCWZvciBldmVyeSBrZXl3b3JkIGluIEMsIEMrKywgYW5kIE9iamVjdGl2ZS1DLiAgUHV0IGFsbCB0aGUKCW1vZGlmaWVycyBmaXJzdC4KCShzdHJ1Y3QgY19maWxlaW5mbywgZ2V0X2ZpbGVpbmZvLCBkdW1wX3RpbWVfc3RhdGlzdGljcyk6IE5ldy4KCSogYy1kZWNsLmMgKGNfZGVjb2RlX29wdGlvbik6IEhhbmRsZSAtbGFuZy1vYmpjIGhlcmUuCgkocHJpbnRfbGFuZ19pZGVudGlmaWVyKTogSGFuZGxlIENfSVNfUkVTRVJWRURfV09SRCBjYXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogQWRqdXN0IGZvciBuZXcgUklEIHNjaGVtZS4KCShleHRyYWN0X2ludGVyZmFjZV9pbmZvKTogTmV3IHN0dWIuCgkqIGMtbGFuZy5jOiBEb24ndCBkZWNsYXJlIHl5X2N1ciBvciBwYXJzZV9vcHRpb25zLgoJKGxhbmdfaW5pdF9vcHRpb25zKTogQ2FsbCBjcHBfaW5pdC4gIERvbid0IGNhbGwKCWNwcF9vcHRpb25zX2luaXQuCgkobGFuZ19pbml0KTogRG9uJ3QgY2FsbCBjaGVja19uZXdsaW5lIGlmIFVTRV9DUFBMSUIuCgoJKiBjLWxleC5jOiBEb24ndCBpbmNsdWRlIGMtcGFyc2UuaC4gIERvIGluY2x1ZGUgdGltZXZhci5oLgoJRWxpZGUgbG90cyBvZiB1bm5lY2Vzc2FyeSBjb2RlIGlmIFVTRV9DUFBMSUIuICBEZWxldGUgY29kZQoJcmVuZGVyZWQgdW5uZWNlc3NhcnkgYnkgbmV3IGFyY2hpdGVjdHVyZS4gIE1vdmUgcm91dGluZXMgbm90CglzaGFyZWQgd2l0aCBDKysgdG8gYy1wYXJzZS5pbi4gIE1haW50YWluIGEgbG9jYWwgaWRlYSBvZiB0aGUKCWxpbmUgbnVtYmVyLiAgICBIYW5kbGUgQysrIGFzIHdlbGwgYXMgQy4KCVtVU0VfQ1BQTElCXTogRGVjbGFyZSBhbmQgcmVnaXN0ZXIgY2FsbGJhY2tzIGZvciAjaWRlbnQgYW5kCglmb3IgZW50ZXJpbmcvbGVhdmluZyBmaWxlcy4KCShpbml0X2NfbGV4LCBjX2xleCk6IEFyZSBub3cgdGhlIGVudHJ5IHBvaW50cyB0byB0aGlzIGZpbGUuCgkoY2hlY2tfbmV3bGluZSk6IEJyZWFrIG91dCBkaXJlY3RpdmUgaGFuZGxpbmcgdG8KCXByb2Nlc3NfZGlyZWN0aXZlLgoJKHJlYWRfdWNzLCBpc19leHRlbmRlZF9jaGFyLCB1dGY4X2V4dGVuZF90b2tlbik6IE1vdmVkIGhlcmUKCWZyb20gQysrIGZyb250IGVuZC4KCShyZWFkZXNjYXBlLCBwYXJzZV9mbG9hdCk6IE92ZXJoYXVsLgoJKGxleF9udW1iZXIsIGxleF9zdHJpbmcsIGxleF9jaGFyY29uc3QpOiBCcmVhayBvdXQgb2YgY19sZXgKCShuJ2VlIHl5bGV4KS4KCShnZXRfZmlsZWluZm8sIHVwZGF0ZV9oZWFkZXJfdGltZXMsIGR1bXBfb25lX2hlYWRlciwKCWR1bXBfdGltZV9zdGF0aXN0aWNzKTogTmV3IGFuZC9vciBtb3ZlZCBoZXJlIGZyb20gQysrLgoJU3VwcG9ydCBwZXItZmlsZSBkYXRhIG5lZWRlZCBieSBDKysgYW5kIHBlci1oZWFkZXIgdGltaW5nCglzdGF0aXN0aWNzIChDKysgb25seSwgYXQgdGhlIG1vbWVudCkuCgkqIGMtbGV4Lmg6IFVwZGF0ZSBwcm90b3R5cGVzLiAgQWRkIG11bHRpcGxlIGluY2x1ZGUgZ3VhcmQuCgkqIGMtdHJlZS5oIChzdHJ1Y3QgbGFuZ19pZGVudGlmaWVyKTogQWRkIHJpZF9jb2RlIGZpZWxkLgoJKENfSVNfUkVTRVJWRURfV09SRCwgQ19SSURfQ09ERSk6IE5ldy4KCgkqIGMtcGFyc2UuaW46IEluY2x1ZGUgYy1wcmFnbWEuaC4gUmVtb3ZlIHVubmVjZXNhcnkgY2FsbHMgdG8KCXJlaW5pdF9wYXJzZV9mb3JfZnVuY3Rpb24gYW5kL29yIHBvc2l0aW9uX2FmdGVyX3doaXRlX3NwYWNlLgoJKHNhdmVfZmlsZW5hbWUsIHNhdmVfbGluZW5vKTogTG9vayBhaGVhZCBiZWZvcmUgc2F2aW5nLgoJKGxhYmVsIC0+IGlkZW50aWZpZXIgJzonKTogU2F2ZSBmaWxlIGFuZCBsaW5lIGJlZm9yZSBzaGlmdGluZyAnOicuCgkocmVzZXJ2ZWR3b3Jkcyk6IE5vIG5lZWQgdG8gY2FsbCBnZXRfaWRlbnRpZmllci4KCShpbml0X3BhcnNlLCBmaW5pc2hfcGFyc2UsIHl5ZXJyb3IsIHl5bGV4LCB5eXByaW50LAoJbWFrZV9wb2ludGVyX2RlY2xhcmF0b3IpOiBBcmUgbm93IGhlcmUgZm9yIEMvT2JqQy4KCShyaWRfdG9feXkpOiBDb252ZXJzaW9uIHRhYmxlIGZyb20gUklEIGNvbnN0YW50cyB0byBZYWNjIGNvZGVzLgoKCSogYy1wcmFnbWEuYzogUmV3cml0ZSBwYXJzaW5nIGxvZ2ljIHRvIGZpdCB3aXRoIGNwcGxpYidzCgkjcHJhZ21hIHJlZ2lzdHJ5LiAgUHJvdmlkZSBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0CglpbnRlcmZhY2UgaWYgIVVTRV9DUFBMSUIuCgkqIGMtcHJhZ21hLmg6IFVwZGF0ZSB0byBtYXRjaC4KCgkqIGZsYWdzLmg6IEFkZCBtdWx0aXBsZSBpbmNsdWRlIGd1YXJkLgoJKGZsYWdfZGV0YWlsZWRfc3RhdGlzdGljcyk6IE1vdmVkIGhlcmUgZnJvbSBDKysuCgkqIHRvcGxldi5jOiBEZWZpbmUgZmxhZ19kZXRhaWxlZF9zdGF0aXN0aWNzLgoKCSogZ2NjLmMgKEMgc3BlY3MpOiBVc2UgJSh0cmFkX2NhcGFibGVfY3BwKSBmb3IgLUV8LU18LU1NIGNhc2UKCSNpZiBVU0VfQ1BQTElCLgoJKiB0aW1ldmFyLmRlZiAoVFZfQ1BQLCBUVl9MRVgpOiBOZXcuCgkqIHRpbWV2YXIuaDogQWRkIG11bHRpcGxlIGluY2x1ZGUgZ3VhcmQuCgoJKiBvYmpjL2xhbmctc3BlY3MuaDogVXNlICUodHJhZF9jYXBhYmxlX2NwcCkgZm9yIC1FfC1NfC1NTSBjYXNlCgkjaWYgVVNFX0NQUExJQi4KCSogb2JqYy9vYmpjLWFjdC5jOiBEb24ndCBtZW50aW9uIHl5X2N1ciBvciBwYXJzZV9vcHRpb25zLgoJSW5pdGlhbGl6ZSBjcHBsaWIgcHJvcGVybHkuICBGb3JjZSBsaW5lbm8gdG8gMCBhZnRlciBmaXJzdAoJY2FsbCB0byBjaGVja19uZXdsaW5lLiAgRG9uJ3QgaGFuZGxlIC1sYW5nLW9iamMgaGVyZS4KCU1vdmUgZm9yZ2V0X3Byb3RvY29sX3F1YWxpZmllcnMgYW5kIHJlbWVtYmVyX3Byb3RvY29sX3F1YWxpZmllcnMgaGVyZS4KCjIwMDAtMDktMDYgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5tZDogQ29ycmVjdCBmdW5jdGlvbiB1bml0IGRlZmluaXRpb25zIGZvciBjcl9sb2dpY2FsIGFuZAoJbXRqbXByLgoJKHNDT05EKTogQWRkaXRpb25hbGx5IGZhaWwgZm9yIHNndCwgc2x0LCBzZ2UsIHNsZSBpZiAhVEFSR0VUX1BPV0VSCglhbmQgdXNlIHBvcnRhYmxlIG1ldGhvZCBmb3IgPj0wIGFuZCBmbG9hdGluZyBwb2ludCA+PS4gIFJlbW92ZQoJYXNzb2NpYXRlZCBtYXRjaGVycy4KCjIwMDAtMDktMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHRlbmQudGV4aTogTWFyayBuYW1lZCByZXR1cm4gdmFsdWUgZXh0ZW5zaW9uIGFzIGRlcHJlY2F0ZWQuCgoyMDAwLTA5LTA2ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfcmV2ZXJzZV9jb25kaXRpb24pOiBSZXR1cm4KCXRoZSByZXN1bHQuCgoyMDAwLTA5LTA2ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0b3BsZXYuYyAoZGlzcGxheV9oZWxwKTogRml4IHRoaW5rbyBpbiBkb2N1bWVudGF0aW9uLgoKCSogZGlhZ25vc3RpYy5oIChvdXRwdXRfYnVmZmVyOjppbmRlbnRfc2tpcCk6IE5ldyBmaWVsZHMuCgkob3V0cHV0X2luZGVudGF0aW9uKTogTmV3IG1hY3JvLgoKCSogZGlhZ25vc3RpYy5jIChvdXRwdXRfaW5kZW50KTogTmV3IGZ1bmN0aW9uLgoJKG91dHB1dF9zZXRfcHJlZml4LCBjbGVhcl9kaWFnbm9zdGljX2luZm8pOiBVc2UuCgkob3V0cHV0X2VtaXRfcHJlZml4KTogUHJlZGljdCBmdXR1cmUgaW5kZW50YXRpb24uCgoyMDAwLTA5LTA2ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChzdGFnZV8qKTogYWRkIG1vcmUgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSBwYXJhbGxlbAoJYnVpbGRzIGJ1aWxkIGNvcnJlY3RseQoKMjAwMC0wOS0wNiAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkaEByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGJvb3RzdHJhcC1sZWFuKTogRGVwZW5kIG9uIGJvb3RzdHJhcC1sZWFuX2csCglub3QgYm9vdHN0cmFwLWxlYW5fZi4KCjIwMDAtMDktMDYgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBta2xpYmdjYy5pbjogRW1pdCBydWxlIGZvciBsaWJnY2Mtc3RhZ2Utc3RhcnQuCgkqIE1ha2VmaWxlLmluIChzdGFnZTEtc3RhcnQsIHN0YWdlMi1zdGFydCwgc3RhZ2UzLXN0YXJ0LAoJc3RhZ2U0LXN0YXJ0KTogRG9uJ3QgaGFuZGxlIGxpYmdjYyBoZXJlLCB1c2UgbGliZ2NjLm1rIGluc3RlYWQuCgoyMDAwLTA5LTA2ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGxvY2FsLWFsbG9jLmMgKGxvY2FsX2FsbG9jKTogSWdub3JlIENMQVNTX0xJS0VMWV9TUElMTEVELgoJKHVwZGF0ZV9lcXVpdl9yZWdzKTogTGlrZXdpc2UsIGV4Y2VwdCBmb3IgdGhlIG1uMTAyMDAga2x1ZGdlLgoJKGNvbWJpbmVfcmVncyk6IExpa2V3aXNlLgoKCSogTWFrZWZpbGUuaW4gKGNzZS5vKTogRGVwZW5kIG9uICQoQkFTSUNfQkxPQ0tfSCkuCgkqIGNzZS5jOiBJbmNsdWRlICJiYXNpYy1ibG9jay5oIi4KCShzdHJ1Y3QgdGFibGVfZWx0KTogTmV3IGZpZWxkIFJFR0NPU1QuCgkoQ0hFQVBfUkVHKTogRGVsZXRlIG1hY3JvLgoJKENPU1QpOiBSZXR1cm4gMCBmb3IgUkVHcy4KCShhcHByb3hfcmVnX2Nvc3RfMSwgYXBwcm94X3JlZ19jb3N0LCBwcmVmZXJyYWJsZSk6IE5ldyBmdW5jdGlvbnMuCgkobm90cmVnX2Nvc3QpOiBSZXR1cm4gMCBmb3IgYXBwcm9wcmlhdGUgU1VCUkVHcy4KCShDT1NUU19OX0lOU05TKTogUmV0dXJuIE4gKiAyLgoJKHJ0eF9jb3N0KTogUmV0dXJuIDAgZm9yIFJFR3MsIGFuZCB1c2UgY29zdCBvZiBuZXN0ZWQgcnR4IGZvciBjaGVhcAoJU1VCUkVHcy4KCShDSEVBUEVSKTogVXNlIG5ldyBmdW5jdGlvbiBwcmVmZXJyYWJsZS4KCShpbnNlcnQpOiBJbml0aWFsaXplIFJFR0NPU1QgbWVtYmVyLgoJKGZpbmRfYmVzdF9hZGRyKTogVXNlIGFwcHJveF9yZWdfY29zdCBmb3IgZXN0aW1hdGlvbiBvZiByZWdpc3RlcgoJdXNhZ2UuCgkoY3NlX2luc24pOiBMaWtld2lzZS4KCSogbG9vcC5jIChpdl9hZGRfbXVsdF9jb3N0KTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9jb3N0LCBzaGlmdF9jb3N0LCBtdWx0X2Nvc3QpOiBEZWxldGUgdmFyaWFibGVzLgoJKGluaXRfbG9vcCk6IERvbid0IGluaXRpYWxpemUgYWRkX2Nvc3Q7IHJlZHVjZSBjb3B5X2Nvc3QgYnkgaGFsZi4KCShzdHJlbmd0aF9yZWR1Y2UpOiBVc2UgaXZfYWRkX211bHRfY29zdCBpbnN0ZWFkIG9mIGZpeGVkIGFkZF9jb3N0LgoJTWFrZSBjb2RlIHRoYXQgZGV0ZWN0cyBhdXRvaW5jIG9wcG9ydHVuaXRpZXMgc2xpZ2h0bHkgbGVzcyBvcHRpbWlzdGljLgoJKHNpbXBsaWZ5X2dpdl9leHByKTogSWYgZXhwcmVzc2lvbiBjb250YWlucyBvdGhlciByZWcgdGhhdCBpcyBhbHNvIGEKCWdpdiwgb25seSBpbmNyZW1lbnQgYmVuZWZpdCBpZiB0aGlzIGlzIHRoZSBvbmx5IHVzZSBvZiB0aGF0IHJlZy4KCShjb25zZWNfc2V0c19naXYpOiBUYWtlIHRoYXQgY2hhbmdlIGludG8gYWNjb3VudC4KCShjb21iaW5lX2dpdnMpOiBTbGlnaHRseSBtb3JlIHZlcmJvc2Ugb3V0cHV0LgoKCSogaTM4Ni5oIChSVFhfQ09TVFMpOiBGb3IgTVVMVCwgcmV0dXJuIHRydWUgY29zdCBvZiBtdWx0aXBsaWNhdGlvbiwKCW5vdCB0aGUgY29zdCBvZiBhbiBlcXVpdmFsZW50IHNoaWZ0LgoJKiBzaC1wcm90b3MuaCAoYWRkc3ViY29zdHMpOiBEZWNsYXJlLgoJKiBzaC5jIChhZGRzdWJjb3N0cyk6IE5ldyBmdW5jdGlvbi4KCSogc2guaCAoQ09OU1RfQ09TVFMpOiBJZiBDT05TVF9PS19GT1JfSSwgdGhlbiByZXR1cm4gMC4KCShSVFhfQ09TVFMpOiBUd2Vhay4gIFVzZSBhZGRzdWJjb3N0cy4KCShBRERSRVNTX0NPU1QpOiBSZXR1cm4gaGlnaGVyIGNvc3QgZm9yIHJlZytyZWcgYWRkcmVzc2luZy4KCjIwMDAtMDktMDYgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHZhbGlkYXRlX2NvbmRpdGlvbl9tb2RlKTogTmV3IGZ1bmN0aW9uLgoJKGJyYW5jaF9jb21wYXJpc29uX29wZXJhdG9yKTogQ2FsbCB2YWxpZGF0ZV9jb25kaXRpb25fbW9kZSB0bwoJYWJvcnQgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIDAuCgkoYnJhbmNoX3Bvc2l0aXZlX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBOZXcgZnVuY3Rpb24uCgkoc2NjX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBDYWxsIHZhbGlkYXRlX2NvbmRpdGlvbl9tb2RlIHRvIGFib3J0CglyYXRoZXIgdGhhbiByZXR1cm5pbmcgMC4KCShjY3JfYml0KTogQ2FsbCB2YWxpZGF0ZV9jb25kaXRpb25fbW9kZS4gIFVwZGF0ZSBmb3IKCW5ldyBicmFuY2ggc2NoZW1lLgoJKHByaW50X29wZXJhbmQpOiBEZWxldGUgJUMgbW9kaWZpZXIuICBVcGRhdGUgJUUgY2FzZQoJdG8gdXNlIEVRIGJpdCBub3QgU08gYml0LgoJKHJzNjAwMF9yZXZlcnNlX2NvbmRpdGlvbik6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZ2VuZXJhdGVfY29tcGFyZSk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZW1pdF9zQ09ORCk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZW1pdF9jYnJhbmNoKTogTmV3IGZ1bmN0aW9uLgoJKG91dHB1dF9jYnJhbmNoKTogVGhlIGxlbmd0aCBvZiBhIGxvbmcgYnJhbmNoIGluc24gaXMKCW5vdyBvbmx5IDggYnl0ZXMuICBBZGQgdmFsaWRhdGVfY29uZGl0aW9uX21vZGUuICBVc2UKCXJzNjAwMF9yZXZlcnNlX2NvbmRpdGlvbi4gIFJlbW92ZSBjcm9yIGdlbmVyYXRpb24uCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oOiBVcGRhdGUgY29tbWVudHMuCgkoUFJFRElDQVRFX0NPREVTKTogQWRkIG5ldyBwcmVkaWNhdGUuICBVcGRhdGUgY29kZXMgdXNlZAoJYnkgYnJhbmNoX2NvbXBhcmlzb25fb3BlcmF0b3IgYW5kIHNjY19jb21wYXJpc29uX29wZXJhdG9yLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaDogQWRkIHByb3RvdHlwZXMgZm9yCgluZXcgZXh0ZXJuYWwgZnVuY3Rpb25zLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogQWRkIG5ldyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMKCWZvciBjcl9sb2dpY2FsIGluc3RydWN0aW9ucy4gIENoYW5nZSBsZW5ndGggb2YgYnJhbmNoCglpbnN0cnVjdGlvbnMuCgkoYkNPTkQgcGF0dGVybnMpOiBDYWxsIHJzNjAwMF9lbWl0X2NicmFuY2guCgkoc0NPTkQgcGF0dGVybnMpOiBDYWxsIHJzNjAwMF9lbWl0X3NDT05ELgoJKGJyYW5jaCBwYXR0ZXJucyk6IENoYW5nZSBsZW5ndGhzIHRvIDQuCgkoY3IgbG9naWNhbCBwYXR0ZXJucyk6IE5ldy4KCjIwMDAtMDktMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChjYWxsX3BvcCk6IEZpeCB0ZXN0IGZvciBzZXR0aW5nCgljdXJyZW50X2Z1bmN0aW9uX3VzZXNfcGljX29mZnNldF90YWJsZS4KCShjYWxsLCBjYWxsX3ZhbHVlX3BvcCwgY2FsbF92YWx1ZSk6IExpa2V3aXNlLgoKMjAwMC0wOS0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdGltZXZhci5jICh0aW1ldmFyX2FkZCk6IERlbGV0ZS4KCSh0aW1ldmFyX2dldCk6IEFsc28gY291bnQgdGltZSBzaW5jZSB0aGUgc2VsZWN0ZWQgdGltZXIgd2FzCglsYXN0IHVwZGF0ZWQuICBEbyBub3QgZXhhbWluZSB0aGUgdGltZXZhciBzdGFjayBpZiB0aGUKCXNlbGVjdGVkIHRpbWVyIGlzIHN0YW5kYWxvbmUuCgoyMDAwLTA5LTA1ICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGd0aHItZGNlLmggKF9fZ3RocmVhZF9vYmpjX211dGV4X2RlYWxsb2NhdGUpOiBGcmVlIG11dGV4LT5iYWNrZW5kLgoKMjAwMC0wOS0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZmluaXNoX2luY29tcGxldGVfZGVjbCk6IERvbid0IGNhbGwgY29tcGxldGVfYXJyYXlfdHlwZQoJZm9yICdleHRlcm4nIGFycmF5cy4KCjIwMDAtMDktMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9saWIxZnVuYy5hc20gKF9fZGl2dGYzKTogUmVidW5kbGUgZm9yIEl0YW5pdW0uCglFbGltaW5hdGUgZmluYWwgY29weSBmcm9tIG5vbi10cmFwcGluZyBjYXNlLgoJKF9fZGl2ZGYzLCBfX2RpdnNmMyk6IExpa2V3aXNlLgoKMjAwMC0wOS0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG11bGhpMyk6IEZpeCB0eXBvIGxhc3QgY2hhbmdlLgoJKiBjb25maWcvaWE2NC9saWIxZnVuYy5hc20gKF9fZGl2ZGkzLCBfX3VkaXZkaTMsIF9fdW1vZHNpMyk6IExpa2V3aXNlLgoKMjAwMC0wOS0wMyAgRG9ubiBUZXJyeSAgPGRvbm5AaW50ZXJpeC5jb20+LCAgTGF1cnluYXMgQml2ZWluaXMgIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogTWFrZWZpbGUuaW46IFJlc3RydWN0dXJlIGJvb3RzdHJhcCBzdGFnZXMgdG8gYWxsb3cgY2xlYW4KCXJlc3RhcnQgYWZ0ZXIgZmFpbHVyZS4KCjIwMDAtMDktMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC5tZCAobW92c2kgYW5kIG1vdmRpIHBhdHRlcm5zKTogQWxsb3cgbW92ZXMgZnJvbQoJOC1iaXQgY29uc3RhbnRzIHRvIEFSIHJlZ2lzdGVycy4KCjIwMDAtMDktMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtdWxoaTMpOiBOZXcuCgoyMDAwLTA5LTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChJTklUX1RBUkdFVF9PUFRBQlMpOiBSZW1vdmUuCgkqIGNvbmZpZy9pYTY0L2xpYjFmdW5jcy5hc20gKF9fZGl2ZGkzKTogVXBkYXRlIGZyb20gSW50ZWwgSUEtNjQKCU9wdGltaXphdGlvbiBHdWlkZSwgbWluaW11bSBsYXRlbmN5IGFsdGVybmF0aXZlLgoJKF9fbW9kZGkzLCBfX3VkaXZkaTMsIF9fdW1vZGRpMyk6IExpa2V3aXNlLgoJKF9fZGl2c2kzLCBfX21vZHNpMywgX191ZGl2c2kzLCBfX3Vtb2RzaTMpOiBMaWtld2lzZS4KCjIwMDAtMDktMDUgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGluY2wuYyAobG9hZF9maWxlKTogYWx3YXlzIHJlYWQgaGVhZGVyIGZpbGVzCgl3aXRoIHNpemVzIHRoYXQgYXJlIGEgbXVsdGlwbGUgb2YgdGhlIHBhZ2Ugc2l6ZS4KCSYgdXNlIGxpYmliZXJ0eSdzIGdldHBhZ2VzaXplIGZvciBkZXRlcm1pbmluZyB0aGF0LgoKMjAwMC0wOS0wNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBnY3NlLmMgKGhhc2hfc3RyaW5nXzEpOiBBZGQgcHJvdG90eXBlLgoJKiBjc2UuYyAoY2Fub25faGFzaF9zdHJpbmcpOiBMaWtld2lzZS4KCjIwMDAtMDktMDQgIENyYWlnIE5ld2VsbCAgPENyYWlnTkBpZWVlLm9yZz4KCgkqIGdjYy5jOiBVbmRlZmluZSAiX19XQ0hBUl9UWVBFX18iIGJlZm9yZSByZWRlZmluaW5nIGl0LgoKMjAwMC0wOS0wNCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluIChTVEFHRVNUVUZGKTogUmVtb3ZlIGxpYmdjYy4KCShzdGFnZTEtc3RhcnQsIHN0YWdlMi1zdGFydCwgc3RhZ2UzLXN0YXJ0KTogQ29weSB0aGUgY29udGVudHMgb2YKCXRoZSBsaWJnY2MgZGlyZWN0b3J5IGV4cGxpY2l0bHkuCgkobW9zdGx5Y2xlYW4pOiBDbGVhbiBsaWJnY2MuCgoyMDAwLTA5LTA0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jOiAoc3RhY2tfYWRqdXN0X29mZnNldCk6IE5ldyBwcm90b3R5cGUuCgpXZWQgSmFuICAxIDAwOjIzOjU5IE1FVCAxOTk3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb21iaW5lLmMgKG1ha2VfZXh0cmFjdGlvbik6IEZpeCBydHhfY29zdCBjb21wYXJpc29uIHRvCgltYXRjaCB0aGUgY29tbWVudC4KCldlZCBKYW4gIDEgMDA6MTc6MzIgTUVUIDE5OTcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKHB1c2hzaTIsIHB1c2hoaTIsIHBvcGhpMiwgc3dhcHNmLCBzd2FwZGYsCgl1bXVsc2kzX2hpZ2hwYXJ0LCBzbXVsc2kzX2hpZ2hwYXJ0LCB0ZXN0cWlfY2Nub18xLCB4b3JxaV9leHRfMSk6CglBZGQgJyonIHRvIGluc24gcGF0dGVybiBuYW1lLgoKMjAwMC0wOS0wNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjcHBsZXguYyAoT05fUkVTVF9BUkcpOiBDaGVjayBWQVJfQVJHUyBmbGFnIG9mIGN1cnJlbnQgY29udGV4dCwKCXVzZSBwb3NuIC0gMSB0byBpbmRleCBpbnRvIHRva2VucyBhcnJheS4KCShtYXliZV9wYXN0ZV93aXRoX25leHQpOiBBZGp1c3QgY2FsbGVyLgoKMjAwMC0wOS0wMyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogaW52b2tlLnRleGk6IERvY3VtZW50IHRoZSAtbXZ4d29ya3Mgb3B0aW9uIGZvciByczYwMDAgRUxGLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogVXBkYXRlIHZhcmlvdXMgY29tbWVudHMgYWJvdXQgWEVSX1JFR05PLgoJKFJFR05PX1JFR19DTEFTUyk6IFVzZSBzeW1ib2xpYyByZWdpc3RlcgoJbmFtZXMuCgoyMDAwLTA5LTAzICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChmaW5hbF9wcmVzY2FuX2luc24pOiBJZiB0aGUgZm9ybSBvZiBhIGp1bXAgaW5zbiBpc24ndAoJcmVjb2duaXplZCwgZG9uJ3QgdHJ5IHRvIGNvbmRpdGlvbmFsbHkgZXhlY3V0ZSBpdC4KClN1biBTZXAgIDMgMTM6MTA6NTYgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kICgiKnRhYmxlanVtcF9saWIiKTogTmV3IHBhdHRlcm4uCgkoY2FsbF92YWx1ZV9pbnNuKTogUmlnaHQgbGVuZ3RoIGNsYWN1bGF0aW9uLgoJKGNhbGxfaW5zbik6IExpa2V3aXNlLgoKMjAwMC0wOS0wMiAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci1wcm90b3MuaCwgY29uZmlnL2F2ci9hdnIuYyAodW5pcXVlX3NlY3Rpb24sCglnYXNfb3V0cHV0X2xpbWl0ZWRfc3RyaW5nLCBnYXNfb3V0cHV0X2FzY2lpLCBvdXRwdXRfbW92cWksCglvdXRwdXRfbW92aGksIG91dF9tb3ZxaV9yX21yLCBvdXRfbW92cWlfbXJfciwgb3V0X21vdmhpX3JfbXIsCglvdXRfbW92aGlfbXJfciwgb3V0X21vdnNpX3JfbXIsIG91dF9tb3ZzaV9tcl9yLCBvdXRwdXRfbW92c2lzZiwKCW91dF90c3RzaSwgb3V0X3RzdGhpLCByZXRfY29uZF9icmFuY2gsIGFzaGxxaTNfb3V0LCBhc2hsaGkzX291dCwKCWFzaGxzaTNfb3V0LCBhc2hycWkzX291dCwgYXNocmhpM19vdXQsIGFzaHJzaTNfb3V0LCBsc2hycWkzX291dCwKCWxzaHJoaTNfb3V0LCBsc2hyc2kzX291dCwgb3V0cHV0X3JlbG9hZF9pbmhpLCBvdXRwdXRfcmVsb2FkX2luc2lzZiwKCW91dF9zaGlmdF93aXRoX2NudCwgcHRycmVnX3RvX3N0ciwgY29uZF9zdHJpbmcsIGVuY29kZV9zZWN0aW9uX2luZm8pOgoJQWRkICJjb25zdCIgYXMgbmVlZGVkIHRvIHJlbW92ZSB3YXJuaW5ncy4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGF2cl9vdmVycmlkZV9vcHRpb25zLCBhdnJfaW5pdF9vbmNlLAoJZnVuY3Rpb25fcHJvbG9ndWUsIGZ1bmN0aW9uX2VwaWxvZ3VlLCBmcmFtZV9wb2ludGVyX3JlcXVpcmVkX3AsCgljbGFzc19saWtlbHlfc3BpbGxlZF9wLCBvcmRlcl9yZWdzX2Zvcl9sb2NhbF9hbGxvYywKCWF2cl9hZGRyZXNzX2Nvc3QsIGF2cl9yZXRfcmVnaXN0ZXIpOiBVc2UgSyZSIHN0eWxlIGFyZ3VtZW50cy4KCShpbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCwgZ2FzX291dHB1dF9saW1pdGVkX3N0cmluZyk6CglSZW1vdmUgQVRUUklCVVRFX1VOVVNFRCBmcm9tIHRoZSB1c2VkIGFyZ3VtZW50cy4KCShvdXRwdXRfbW92Kiwgb3V0X21vdipfcl9tciwgb3V0X21vdipfbXJfciwgb3V0cHV0X3JlbG9hZF9pbnNpc2YpOgoJVXNlIGxvY2FsIHZhcmlhYmxlcyBzcmMsIGRlc3QsIGJhc2UgdG8gYWNjZXNzIG9wZXJhbmRzW10uCglSZW5hbWUgcmVnX2Rlc3QgdG8gcmVnX3NyYyBpZiB0aGF0J3Mgd2hhdCBpdCBpcy4KCShvdXRwdXRfbW92aGksIG91dHB1dF9tb3ZzaXNmKTogT3B0aW1pemUgbG9hZGluZyA4LWJpdCBpbW1lZGlhdGUKCWNvbnN0YW50cyB0byBMRF9SRUdTIGlmIHJlZ193YXNfMC4KCShvdXRwdXRfcmVsb2FkX2luc2lzZik6IENoYW5nZSBhcmcgMyB0byBpbnNuIGxlbmd0aCBhbmQgc2V0IGl0LgoJKG91dF9tb3ZoaV9yX21yLCBvdXRfbW92aGlfbXJfcik6IFVzZSBpbi9vdXQgZm9yIG1vcmUgZWZmaWNpZW50CglhY2Nlc3MgdG8gMTYtYml0IEkvTyByZWdpc3RlciBwYWlycy4KCShhdnJfYWRkcmVzc19jb3N0KTogTG93ZXIgY29zdCBmb3IgdGhlIGFib3ZlIGNhc2UuCgkob3V0X3RzdGhpKTogVXNlICJvciIgKGZhc3RlcikgaW5zdGVhZCBvZiAic2JpdyIgaWYgdGhlIG9wZXJhbmQKCW1heSBiZSBjbG9iYmVyZWQsIGFsc28gZm9yIExEX1JFR1MuCgkoYWRqdXN0X2luc25fbGVuZ3RoKTogQ29ycmVjdCBpbnNuIGxlbmd0aCBmb3IgaW9yaGkzIGFuZCBpb3JzaTMKCXdpdGggYSBDT05TVF9JTlQuCgoJKiBjb25maWcvYXZyL2F2ci5oIChQVFJESUZGX1RZUEUpOiBNYWtlIHNpZ25lZC4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kOiBDaGFuZ2UgYWxsIHVzZXMgb2YgdGhlIFRFU1RfSEFSRF9SRUdfQ0xBU1MKCW1hY3JvIHRvIHRlc3RfaGFyZF9yZWdfY2xhc3MgZnVuY3Rpb24uCgkoKm1vdnNpLCAqbW92c2YpOiBDaGFuZ2UgImNjIiBhdHRyaWJ1dGUgZnJvbSAiY2xvYmJlciIgdG8gIm5vbmUiCglmb3IgbG9hZGluZyBpbW1lZGlhdGUgY29uc3RhbnRzIHRvIExEX1JFR1MuCgkoYW5kc2kzLCBjbXBoaSwgY21wc2kpOiBBZGQgcmV0dXJuIHN0YXRlbWVudHMgdG8gYXZvaWQgd2FybmluZ3MuCgoKU2F0IFNlcCAgMiAxMzo1ODoyMyAyMDAwICBNYXJlayBNaWNoYWxraWV3aWN6IDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnIubWQgKCIqbmVnc2kyIik6IHN1YnN0aXR1dGUgJUAgdG8gX196ZXJvX3JlZ19fCgkqIGNvbmZpZy9hdnIvbGliZ2NjLlM6IExvc3QgcGFydCBvZiB0aGUgcHJldmlvdXMgcGF0Y2guCgoyMDAwLTA4LTMxICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGd0aHItZGNlLmggKF9fZ3RocmVhZF9vYmpjX211dGV4X2FsbG9jYXRlKTogQ3JlYXRlIGEgcHRocmVhZF9tdXRleF90CglvYmplY3QgYmVmb3JlIGNhbGxpbmcgcHRocmVhZF9tdXRleF9pbml0LgoKMjAwMC0wOS0wMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvdC1lbGYsIGNvbmZpZy9zaC9jcnQxLmFzbSwgY29uZmlnL3NoL2NydGkuYXNtLAoJY29uZmlnL3NoL2NydG4uYXNtOiBOZXcgZmlsZXMuCgkqIGNvbmZpZy9zaC90LXNoIChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IFNldC4KCShjcnQxLm8sIGNydGkubywgY3J0bi5vKTogTmV3IHRhcmdldHMuCgkqIGNvbmZpZ3VyZS5pbiBbc2gtKi1lbGYqLCBzaC0qLXJ0ZW1zZWxmKl0gKHRtYWtlX2ZpbGUpOiBBZGRlZAoJc2gvdC1lbGYuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogY29uZmlnL3NoL3NoLmggKElOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1AsCglTVEFSVEZJTEVfU1BFQywgRU5ERklMRV9TUEVDLCBDUlRfQ0FMTF9TVEFUSUNfRlVOQ1RJT04pOiBEZWZpbmUuCgkqIGNvbmZpZy9zaC9lbGYuaCAoSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCk6CglVbmRlZmluZSBmb3IgY29uZmlnL2VsZm9zLmggdG8gcmVkZWZpbmUuCgkoU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQyk6IFJlZGVmaW5lIGFmdGVyIGNvbmZpZy9lbGZvcy5oLgoKMjAwMC0wOS0wMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+LCBOaWliZSBZdXRha2EgIDxnbmlpYmVAbTE3bi5vcmc+LCBLYXogS29qaW1hICA8a2tvamltYUByci5paWo0dS5vci5qcD4KCgkqIGNvbmZpZy9zaC9zaC1wcm90b3MuaCAobm9ucGljX3N5bWJvbF9tZW50aW9uZWRfcCwKCWxlZ2l0aW1pemVfcGljX2FkZHJlc3MsIG91dHB1dF9waWNfYWRkcl9jb25zdCk6IERlY2xhcmUuCgkqIGNvbmZpZy9zaC9zaC5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IEZpeCBQSUMgcmVnaXN0ZXIuCgkoUFJFRkVSR09UX0JJVCwgVEFSR0VUX1BSRUZFUkdPVCk6IExpa2V3aXNlLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IE5ldyBzd2l0Y2ggLW1wcmVmZXJnb3QuCgkoT1ZFUlJJREVfT1BUSU9OUyk6IFNldCBmbGFnX25vX2Z1bmN0aW9uX2NzZSB1bmxlc3MgLW1wcmVmZXJnb3QuCgkoUElDX09GRlNFVF9UQUJMRV9SRUdOVU0pOiBEZWZpbmUuCgkoR09UX1NZTUJPTF9UQUJMRSk6IExpa2V3aXNlLgoJKExFR0lUSU1JWkVfQUREUkVTUyk6IFVzZSBsZWdpdGltaXplX3BpY19hZGRyZXNzLgoJKEVOQ09ERV9TRUNUSU9OX0lORk8pOiBEZWZpbmUuCgkoRklOQUxJWkVfUElDKTogTmV3IG1hY3Jvcy4KCShMRUdJVElNQVRFX1BJQ19PUEVSQU5EX1AsIFNZTUJPTElDX0NPTlNUX1ApOiBOZXcgbWFjcm8uCgkoQVNNX09VVFBVVF9JTlQsIEFTTV9PVVRQVVRfU0hPUlQpOiBVc2Ugb3V0cHV0X3BpY19hZGRyX2NvbnN0LgoJKiBjb25maWcvc2gvc2guYyAocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogVXNlIG91dHB1dF9waWNfYWRkcl9jb25zdC4KCShwcmVwYXJlX21vdmVfb3BlcmFuZHMpOiBDYWxsIGVtaXRfcGljX21vdmUgb3IKCWVtaXRfcGljX2NvbnN0X21vdmUgaWYgYXBwcm9wcmlhdGUuCgkob3V0cHV0X2Zhcl9qdW1wKTogRm9yIFBJQywgdXNlIGJyYWYgYW5kIG91dHB1dCBsb25nIG9mZnNldC4KCShtYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6Cgkoc2hfZXhwYW5kX3Byb2xvZ3VlKTogU2F2ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgUElDIHJlZ2lzdGVyLgoJKHNoX2V4cGFuZF9lcGlsb2d1ZSk6IFJlc3RvcmUgaXQuCgkoaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBBY2NvdW50IGZvciBpdC4KCShub25waWNfc3ltYm9sX21lbnRpb25lZF9wKTogTmV3IGZ1bmN0aW9uLgoJKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBMaWtld2lzZS4KCShvdXRwdXRfcGljX2FkZHJfY29uc3QpOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLm1kIChjYWxsaV9wY3JlbCwgY2FsbF92YWx1ZWlfcGNyZWwpOiBOZXcgaW5zbnMuCgkoY2FsbCwgY2FsbF92YWx1ZSk6IFVzZSB0aGVtLgoJKEdPVGFkZHIycGljcmVnLCBzeW1fbGFiZWwycmVnLCBzeW1HT1QycmVnLCBzeW1HT1RPRkYycmVnLAoJc3ltUExUX2xhYmVsMnJlZyk6IE5ldyBleHBhbmRzLgoJKiBpbnZva2UudGV4aSAoU0ggT3B0aW9ucyk6IERvY3VtZW50IC1tcHJlZmVyZ290LgoKMjAwMC0wOS0wMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBydGwuaCAoQVNNX09QRVJBTkRTX0lOUFVUX0NPTlNUUkFJTlRfRVhQKTogTmV3IG1hY3JvLgoJKiBnY3NlLmMgKGhhc2hfc3RyaW5nXzEpOiBOZXcgZnVuY3Rpb24uCgkoaGFzaF9leHByXzEpIDxBU01fT1BFUkFORFM+OiBEaXNyZWdhcmQgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyLgoJKGV4cHJfZXF1aXZfcCkgPEFTTV9PUEVSQU5EUz46IExpa2V3aXNlLgoJKiBjc2UuYyAocnR4X2Nvc3QpOiBEb24ndCBpbmNyZWFzZSB0aGUgY29zdCBvZiBBU01fT1BFUkFORFMuCgkoY2Fub25faGFzaF9zdHJpbmcpOiBOZXcgZnVuY3Rpb24uCgkoY2Fub25faGFzaCkgPEFTTV9PUEVSQU5EUz46IERpc3JlZ2FyZCBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIuCgkoZXhwX2VxdWl2X3ApIDxBU01fT1BFUkFORFM+OiBMaWtld2lzZS4KCShmb2xkX3J0eCk6IFVzZSBBU01fT1BFUkFORFMgYWNjZXNzb3IgbWFjcm9zLgoJKiBlbWl0LXJ0bC5jIChjb3B5X2luc25fMSk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuICBHaXZlIGFuCglBU01fT1BFUkFORFMgcnR4IHRoZSBtb2RlIG9mIHRoZSBvdXRwdXQgcmVnIGJlaW5nIHNldCBmcm9tIGl0LgoKMjAwMC0wOS0wMSAgRnJlZCBGaXNoICA8Zm5mQGJlLmNvbT4KCgkqIGZpeC1oZWFkZXIuYyAod3JpdGVfcmJyYWMpOiBBZGQgcHV0YyBhbmQgZ2V0YyB0byBsaXN0IG9mCglmdW5jdGlvbnMgdG8gcHJvdGVjdCBhZ2FpbnN0IHByaW9yIGRlZmluaXRpb24gYXMgYSBtYWNyby4KCjIwMDAtMDktMDEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmggKGVudW0gY190cmVlX2luZGV4KTogQWRkIENUSV9DX1NJWkVfVFlQRS4KCShjX3NpemVfdHlwZV9ub2RlKTogRGVmaW5lLgoJKiBjLWRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIGNfc2l6ZV90eXBlX25vZGUuCgkqIGMtY29tbW9uLmMgKGVudW0gZm9ybWF0X2xlbmd0aHMsIGVudW0gZm9ybWF0X3N0ZF92ZXJzaW9uLAoJZm9ybWF0X2xlbmd0aF9pbmZvLCBmb3JtYXRfdHlwZV9kZXRhaWwsIEJBRExFTiwgTk9MRU5HVEhTLAoJZm9ybWF0X2tpbmRfaW5mbywgcHJpbnRmX2xlbmd0aF9zcGVjcywgc2NhbmZfbGVuZ3RoX3NwZWNzLCBUODlfSSwKCVQ5OV9JLCBUODlfTCwgVDk5X0xMLCBURVhfTEwsIFQ4OV9TLCBUODlfVUksIFQ5OV9VSSwgVDg5X1VMLAoJVDk5X1VMTCwgVEVYX1VMTCwgVDg5X1VTLCBUODlfRiwgVDk5X0YsIFQ4OV9ELCBUOTlfRCwgVDg5X0xELAoJVDk5X0xELCBUODlfQywgVDk5X1NDLCBUOTlfVUMsIFQ4OV9WLCBUOTRfVywgVEVYX1csIFQ5NF9XSSwKCVRFWF9XSSwgVDk5X1NULCBUOTlfU1NULCBUOTlfUEQsIFQ5OV9VUEQsIFQ5OV9JTSwgVDk5X1VJTSwKCWZvcm1hdF90eXBlcyk6IERlZmluZS4KCShmb3JtYXRfY2hhcl9pbmZvLCBwcmludF9jaGFyX3RhYmxlLCBzY2FuX2NoYXJfdGFibGUsCgl0aW1lX2NoYXJfdGFibGUpOiBSZWFycmFuZ2UgZm9yIG5ldyBvcmdhbml6YXRpb24gb2YgaW5mb3JtYXRpb24KCWFib3V0IGZvcm1hdCBsZW5ndGggbW9kaWZpZXJzIGFuZCBzdGFuZGFyZCB2ZXJzaW9ucy4KCShUX1NUKTogUmVkZWZpbmUgdG8gdXNlIGNfc2l6ZV90eXBlX25vZGUuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBPYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgbGVuZ3RoIG1vZGlmaWVycyBhbmQKCXN0YW5kYXJkIHZlcnNpb25zIGZyb20gdGFibGVzLiAgQWRqdXN0IHdhcm5pbmcgbWVzc2FnZSB3b3JkaW5ncy4KCVVzZSB0aGUgbmFtZSBmcm9tIHRoZSB1c2VyJ3MgcHJvZ3JhbSBmb3IgYGxsJyBhbmQgYGhoJyBsZW5ndGgKCW1vZGlmaWVycyBpbiB3YXJuaW5nIG1lc3NhZ2VzLiAgVXNlIG1vcmUgaW5mb3JtYXRpdmUgbmFtZXMgZm9yCgl3YW50ZWQgdHlwZXMgd2hlcmUgYXZhaWxhYmxlIChmb3Igd2NoYXJfdCwgd2ludF90LCBzaXplX3QsIHNpZ25lZAoJc2l6ZV90LCBwdHJkaWZmX3QsIHVuc2lnbmVkIHB0cmRpZmZfdCwgaW50bWF4X3QgYW5kIHVpbnRtYXhfdCkuCgoyMDAwLTA5LTAxICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSk6IEFkZCBSRUdfTk9SRVRVUk4gbm90ZSB0byBjYWxsIGlmIEVDRl9OT1JFVFVSTi4KCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogSGFuZGxlIFJFR19OT1JFVFVSTi4KCSogcnRsLmMgKHJlZ19ub3RlX25hbWUpOiBBZGQgUkVHX05PUkVUVVJOLgoJKiBydGwuaCAoZW51bSByZWdfbm90ZSk6IExpa2V3aXNlLgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoZW1pdF9zYWZlX2Fjcm9zc19jYWxscyk6IFJlbmFtZWQgZnJvbQoJaWE2NF9maWxlX3N0YXJ0LgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGVtaXRfc2FmZV9hY3Jvc3NfY2FsbHMpOiBMaWtld2lzZS4KCShydHhfbmVlZHNfYmFycmllcik6IEhhbmRsZSB1bnNwZWNfdm9sYXRpbGUgOCBhbmQgOS4KCShlbWl0X3ByZWRpY2F0ZV9yZWxhdGlvbl9pbmZvKTogSGFuZGxlIGNvbmRpdGlvbmFsIGNhbGxzIHdpdGgKCVJFR19OT1JFVFVSTi4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChBU01fRklMRV9TVEFSVCk6IENhbGwgZW1pdF9zYWZlX2Fjcm9zc19jYWxscwoJaW5zdGVhZCBvZiBpYTY0X2ZpbGVfc3RhcnQuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKEFTTV9GSUxFX1NUQVJUKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKHNhZmVfYWNyb3NzX2NhbGxzX2FsbCwKCXNhdmVfYWNyb3NzX2NhbGxzX25vcm1hbCk6IE5ldyBwYXR0ZXJucy4KCgkqIGxvb3AuYyAoY2hlY2tfZmluYWxfdmFsdWUpOiBDaGVjayBmb3IgYml2IHVzZSBiZWZvcmUgY2hlY2tpbmcgZm9yCglnaXYgdXNlLiAgQ2hlY2sgZm9yIGJvdGggYml2IGFuZCBnaXYgdXNlcy4gIEFsd2F5cyBzZXQgbGFzdF9naXZfdXNlCglpZiB0aGVyZSBpcyBhIGdpdiB1c2UuCgoyMDAwLTA5LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobXVsc2kzKTogVXNlIGdyZnJfcmVnaXN0ZXJfb3BlcmFuZC4KCShtYWRkZGkzKTogTGlrZXdpc2UuCgkobWFkZHNpMyk6IE5ldy4KCkZyaSBTZXAgIDEgMTA6NTk6NDcgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoY2xlYXJfc3RvcmFnZSk6IERvbid0IHVzZSBlbWl0X21vdmVfaW5zbiB1bmxlc3MKCWVpdGhlciBCTEttb2RlIG9yIHByb3BlciBzaXplLgoJKHN0b3JlX2NvbnN0cnVjdG9yKTogRG9uJ3QgY2FsbCBjbGVhcl9zdG9yYWdlIGlmIFJFRyBvZiB3cm9uZyBzaXplLgoKCSogZmxvdy5jIChpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogRG9uJ3QgbWFyayBmcmFtZSBkZWFkIGF0IGVuZAoJb2YgZnVuY3Rpb24gaWYgcmV0dXJucyB3aWh0IHN0YWNrIHBvaW50ZXIgZGVwcmVzc2VkLgoKMjAwMC0wOS0wMSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoc3RhY2tfYWRqdXN0X29mZnNldCk6IE5ldyBmdW5jdGlvbi4KCShkd2FyZjJvdXRfc3RhY2tfYWRqdXN0KTogQnJlYWsgb3V0IHN0YWNrIGFkanVzdCBsb2dpYyBpbnRvCgluZXcgc3RhY2tfYWRqdXN0X29mZnNldCBmdW5jdGlvbi4gIExvb2sgaW5zaWRlIHBhcmFsbGVscyBhbmQKCXNlcXVlbmNlcyBmb3Igc3RhY2sgYWRqdXN0bWVudHMuCgoyMDAwLTA4LTMxICBKZWZmIExhdyA8bGF3QGN5Z251cy5jb20+CgoJKiBhcm0ubWQ6IFVzZSBub19uZXdfcHNldWRvcyB0byBkZXRlcm1pbmUgd2hlbiBpdCBpcyBzYWZlCgl0byBjcmVhdGUgbmV3IHBzZXVkbyByZWdpc3RlcnMuCgoJKiBhcm0uYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IFVzZSBub19uZXdfcHNldWRvcyB0byBkZXRlcm1pbmUKCXdoZW4gd2UgY2FuIHNhZmVseSBhbGxvY2F0ZSBuZXcgcmVnaXN0ZXJzLgoKMjAwMC0wOC0zMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogVHdpZGRsZSBnZW5lcmF0aW5nX2NvbmNhdF9wCglzbyB0aGF0IENPTkNBVHMgYXJlIG5vdCBnZW5lcmF0ZWQgZm9yIEFTTXMuCgkqIGVtaXQtcnRsLmMgKGdlbl9yZWdfcnR4KTogRG9uJ3QgZ2VuZXJhdGUgQ09OQ0FUcyB3aGVuCglub3QgZ2VuZXJhdGluZ19jb25jYXRfcC4KCSogZnVuY3Rpb24uYyAocG9wX2Z1bmN0aW9uX2NvbnRleHRfZnJvbSk6IFJlc2V0CglnZW5lcmF0aW5nX2NvbmNhdF9wLgoJKHByZXBhcmVfZnVuY3Rpb25fc3RhcnQpOiBMaWtld2lzZS4KCSogcnRsLmMgKGdlbmVyYXRpbmdfY29uY2F0X3ApOiBEZWZpbmUuCgkqIHJ0bC5oIChnZW5lcmF0aW5nX2NvbmNhdF9wKTogRGVjbGFyZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBObyBDT05DQVRzIGFmdGVyIFJUTCBnZW5lcmF0aW9uLgoKMjAwMC0wOC0yMiAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgkgICAgTWFzYW5vYnUgWXVoYXJhIDx5dWhhcmFAZmxhYi5mdWppdHN1LmNvLmpwPgoKCSogZ21pY3JvLmggKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBkZXNjcmlwdGlvbnMgYW5kIG1hcmsgdGhlbQoJZm9yIHRyYW5zbGF0aW9uLgoKMjAwMC0wOC0zMCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoZml4aW5jLnNoKTogUGFzcyBDQywgQ0ZMQUdTIGFuZCBMREZMQUdTIHRvIG1rZml4aW5jLnNoCgkqIGZpeGluYy9NYWtlZmlsZS5pbiAoZml4aW5jbCk6IFBhc3MgJChMREZMQUdTKSB0byAkKENDKS4KCSogZml4aW5jL21rZml4aW5jLnNoOiBQYXNzICRDQywgJENGTEFHUyBhbmQgJExERkxBR1MgdG8gJE1BS0UuCgoyMDAwLTA4LTMwICBHcmVnIE1jR2FyeSAgPGdyZWdAbWNnYXJ5Lm9yZz4KCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfaW50X2NzdCk6IFdyYXAgbG93IGFuZCBoaWdoIGluIGEgc3ViLXN0cnVjdC4KCShUUkVFX0lOVF9DU1RfTE9XLCBUUkVFX0lOVF9DU1RfSElHSCk6IEFjY2VzcyB0aHJvdWdoIHN1Yi1zdHJ1Y3QuCgkoVFJFRV9JTlRfQ1NUKTogTmV3IG1hY3JvLgoJKiB2YXJhc20uYyAoY29uc3RfaGFzaCwgY29tcGFyZV9jb25zdGFudF8xLCByZWNvcmRfY29uc3RhbnRfMSk6CglVc2UgbmV3IG1hY3JvIFRSRUVfSU5UX0NTVC4KCldlZCAzMC1BdWctMjAwMCAyMzoxODo1OSBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY29udHJpYi50ZXhpOiBBZGQgc2VsZi4KCjIwMDAtMDgtMzAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLm1kIChjbXBlcXNpX2lvcl90LCBjbXBlcXNpX2FuZF90KTogTmV3IGluc25zLgoJKGNtcGVxZGlfdCBzcGxpdHRlcik6IFVzZSBjbXBlcXNpX2FuZF90IGluc3RlYWQgb2YgZW1pdHRpbmcganVtcHMKCWFuZCBsYWJlbHMuCgoyMDAwLTA4LTMwICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGZpeGluYy9nbnUtcmVnZXguYzogRG9uJ3QgZGVmaW5lIGBjb25zdCcuCgpUdWUgQXVnIDI5IDIyOjA5OjU5IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogQWxsb3cgdmFyaWFibGUgYm91bmRzIG9mIGFycmF5IHR5cGUuCgkoZXhwYW5kX2V4cHIpOiBEb24ndCBibG93IHVwIGlmIHR5cGUgaXMgRVJST1JfTUFSSy4KCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdHJ1Y3Rvcik6IERvbid0IGFjY2VzcyBsb3dlciBib3VuZCBvZiBhcnJheQoJdHlwZSB1bmxlc3MgbmVlZCBpdCBpZiBpbmRleCBpcyBzdXBwbGllZCAoc28gaXQgY2FuIGJlIGEgdmFyaWFibGUKCWlmIG5vIGluZGV4IGlzIHN1cHBsaWVkKS4KCVVzZSB0cmVlX2xvd19jc3Q7IHVzZSBIT1NUX1dJREVfSU5UIGZvciBzaXplczsgY2hhbmdlIEJJVFBPUyB0byBQT1MuCglPdGhlciBtaW5vciBjbGVhbnVwcy4KCjIwMDAtMDgtMjkgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogTWFrZWZpbGUuaW46IFJldmFtcCBoYW5kbGluZyBvZiBjZmxhZ3MgdG8gYWxsb3cgZGlmZmVyZW50IFdBUk5fQ0ZMQUdTCglmb3IgY29tcGlsYXRpb25zIGluIHN0YWdlIDEgYW5kIHN1YnNlcXVlbnQgc3RhZ2VzLCByZXNwZWN0aXZlbHkuCgkqIGNvbmZpZ3VyZS5pbiAodmF4KTogQWRkIGNvbXBpbGVyLWRlcGVuZGVudCBDRkxBR1MgZm9yIHN0YWdlIDEuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogeC12YXgsIHgtdmF4LWdjYzogRGVsZXRlZC4KCjIwMDAtMDgtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtY29tbW9uLmMgKGRlY2xhcmVfZnVuY3Rpb25fbmFtZSk6IFVzZSBmdW5jX2lkX25vZGUsCglmdW5jdGlvbl9pZF9ub2RlLCBhbmQgcHJldHR5X2Z1bmN0aW9uX2lkX25vZGUuICBEbyBub3QgbWFrZQoJX19mdW5jX18gdmlzaWJsZSBhdCBmaWxlIHNjb3BlLgoJKiBjLWNvbW1vbi5oIChjX3RyZWVfaW5kZXgpOiBBZGQgQ1RJX0ZVTkNUSU9OX0lELAoJQ1RJX1BSRVRUWV9GVU5DVElPTl9JRCwgYW5kIENUSV9GVU5DX0lELgoJKGZ1bmN0aW9uX2lkX25vZGUsIHByZXR0eV9mdW5jdGlvbl9pZF9ub2RlLCBmdW5jX2lkX25vZGUpOiBOZXcKCW1hY3Jvcy4KCSogYy1kZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBmdW5jdGlvbl9pZF9ub2RlLAoJcHJldHR5X2Z1bmN0aW9uX2lkX25vZGUsIGFuZCBmdW5jX2lkX25vZGUuCgkoY19tYWtlX2ZuYW1lX2RlY2wpOiBDb3JyZWN0IGNvbW1lbnQuCgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX2lkZW50aWZpZXIpOiBDb25zdGlmeSBwb2ludGVyIG1lbWJlci4KCgkqIGMtZGVjbC5jIChwdXNoZGVjbCwgaW1wbGljaXRfZGVjbF93YXJuaW5nKTogQ29uc3RpZnkgYSBjaGFyICouCgkqIGMtcHJhZ21hLmggKHN0cnVjdCB3ZWFrX3N5bXMpOiBDb25zdGlmeSBuYW1lIGFuZCB2YWx1ZSBtZW1iZXJzLgoJKGFkZF93ZWFrKTogQ29uc3RpZnkgYXJndW1lbnRzLgoKCSogY2FsbHMuYyAoc3BlY2lhbF9mdW5jdGlvbl9wKTogQ29uc3RpZnkgYSBjaGFyICouCgkoZXhwYW5kX2NhbGwpOiBSZW1vdmUgdmFyaWFibGUgd2hpY2ggaXMgaW5pdGlhbGl6ZWQgYW5kIHRoZW4KCW5ldmVyIHVzZWQuCgkqIGRlcGVuZGVuY2UuYyAoc3RydWN0IGRlZl91c2UsIHN0cnVjdCBpbmR1Y3Rpb24sIHN0cnVjdCBzdWJzY3JpcHQpOgoJQ29uc3RpZnkgJ3ZhcmlhYmxlJyBtZW1iZXIuCgkoZ2V0X2xvd19ib3VuZCwgaGF2ZV9pbmR1Y3Rpb25fdmFyaWFibGUpOiBDb25zdGlmeSBjaGFyICogYXJndW1lbnQuCgkoZmluZF9pbmR1Y3Rpb25fdmFyaWFibGUpOiBBZGQgYnJhY2VzIHRvIGF2b2lkIGRhbmdsaW5nIGVsc2UuCgkoY2xhc3NpZnlfZGVwZW5kZW5jZSk6IENvbnN0aWZ5IGNoYXIgKiBhcnJheXMuCgkqIHByb2ZpbGUuYyAob3V0cHV0X2Z1bmNfc3RhcnRfcHJvZmlsZXIpOiBDb25zdGlmeSBhIGNoYXIgKi4KCSogc3Rvci1sYXlvdXQuYyAoZmluYWxpemVfcmVjb3JkX3NpemUpOiBDb25zdGlmeSBhIGNoYXIgKi4KCSogdHJlZS5jIChpc19hdHRyaWJ1dGVfcCk6IENvbnN0aWZ5IGEgY2hhciAqLgoJKiB2YXJhc20uYyAoYWRkX3dlYWssIHJlbW92ZV9mcm9tX3BlbmRpbmdfd2Vha19saXN0KTogQ29uc3RpZnkgYXJndW1lbnQuCgoJKiB2YXJhc20uYyAobWFrZV9mdW5jdGlvbl9ydGwsIG1ha2VfZGVjbF9ydGwpOiBSZWFycmFuZ2UgY29kZQoJZm9yIGNvbXByZWhlbnNpYmlsaXR5LiAgRG8gbm90IGNhbGwgZ2V0X2lkZW50aWZpZXIgaWYgd2UgZGlkCglub3QgY2hhbmdlIHRoZSBERUNMX0FTU0VNQkxFUl9OQU1FIG9mIHRoZSBkZWNsLiAgVXNlIGFsbG9jYSB0bwoJY3JlYXRlIHRlbXBvcmFyeSBzdHJpbmcgY29uc3RhbnRzLCBub3QgZ2djX2FsbG9jX3N0cmluZy4gIE5vCgluZWVkIHRvIGNvcHkgcmVzdWx0IG9mIEFTTV9GT1JNQVRfUFJJVkFURV9OQU1FLiAgVXNlIGNvbnN0CgljaGFyICogdG8gaG9sZCBJREVOVElGSUVSX1BPSU5URVJzLgoKMjAwMC0wOC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG11bGRpMyk6IFVzZSBncmZyX3JlZ2lzdGVyX29wZXJhbmQKCWZvciB0aGUgaW5wdXRzLgoKMjAwMC0wOC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlbG9hZC5jIChwdXNoX3NlY29uZGFyeV9yZWxvYWQpOiBBbGxvdyBjbGFzcyA9PSByZWxvYWRfY2xhc3MKCWlmIHdlJ3JlIHVzaW5nIGEgcmVsb2FkX2luL291dCBwYXR0ZXJuLgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAocmVsb2FkX2ludGkpOiBVc2UgYSBUSW1vZGUgc2NyYXRjaC4gIFVzZQoJdGhlIGhhbGYgdGhhdCBkb2VzIG5vdCBjb25mbGljdCB3aXRoIHRoZSByZWxvYWQgcmVnaXN0ZXIuCgkocmVsb2FkX291dHRpKTogTGlrZXdpc2UuCgoyMDAwLTA4LTI5ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHJlbG9hZC5jOiBGaXggZm9ybWF0dGluZy4KCgkqIHN0bXQuYzogRml4IGZvcm1hdHRpbmcuCgoJKiBnY2MuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA4LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBmbGFncy5oICh0aW1lX3JlcG9ydCwgbWVtX3JlcG9ydCk6IE5ldyBnbG9iYWwgZmxhZ3MuCgkqIHRvcGxldi5jOiBEZWZpbmUgdGltZV9yZXBvcnQgYW5kIG1lbV9yZXBvcnQuCgkoZl9vcHRpb25zKTogQWRkIC1mdGltZS1yZXBvcnQgYW5kIC1mbWVtLXJlcG9ydC4KCShjb21waWxlX2ZpbGUpOiBUdXJuIG9uIHRpbWVfcmVwb3J0IGlmIHF1aWV0X2ZsYWcgaXMgb2ZmLgoJQ2FsbCBnZ2NfcHJpbnRfc3RhdGlzdGljcyBhdCB2ZXJ5IGVuZCBpZiBtZW1fcmVwb3J0IGlzIG9uLgoJKiB0aW1ldmFyLmMgKFRJTUVWQVJfRU5BQkxFKTogRXhhbWluZSB0aW1lX3JlcG9ydCwgbm90IHF1aWV0X2ZsYWcuCgoJKiBnZ2MtY29tbW9uLmMgKGdnY19wcmludF9zdGF0aXN0aWNzKTogUmVuYW1lIHRvCglnZ2NfcHJpbnRfY29tbW9uX3N0YXRpc3RpY3M7IGFsbCBjYWxsZXJzIGNoYW5nZWQuICBTY2FsZQoJcXVhbnRpdGllcyBhYm92ZSAxMEsgdG8ga2lsb2J5dGVzIGFuZCBhYm92ZSAxME0gdG8gbWVnYWJ5dGVzLgoJKiBnZ2MtcGFnZS5jIChnZ2NfcGFnZV9wcmludF9zdGF0aXN0aWNzKTogUmVuYW1lIHRvCglnZ2NfcHJpbnRfc3RhdGlzdGljcy4gIFJlcG9ydCBtZW1vcnkgY29uc3VtZWQgYnkgaW50ZXJuYWwgZGF0YQoJc3RydWN0dXJlcyBmb3IgZWFjaCBhbGxvY2F0aW9uIGJ1Y2tldC4gIFNjYWxlIHF1YW50aXRpZXMgYWJvdmUKCTEwSyB0byBraWxvYnl0ZXMgYW5kIGFib3ZlIDEwTSB0byBtZWdhYnl0ZXMuCgkqIGdnYy1zaW1wbGUuYzogUHJvdG90eXBlIGRlYnVnX2dnY190cmVlIHRvIGF2b2lkIHdhcm5pbmcuCglDYXN0IFBUUl9LRVkocCkgdG8gdW5zaWduZWQgbG9uZyBpbiBmcHJpbnRmIGNhbGwgdG8gYXZvaWQgd2FybmluZy4KCURlZmluZSB0YWxseV9sZWF2ZXMgYWx3YXlzLgoJKGdnY19wcmludF9zdGF0aXN0aWNzKTogTmV3IGZ1bmN0aW9uLgoJKiBnZ2MuaDogQWRqdXN0IGZvciByZW5hbWVkIGZ1bmN0aW9ucy4KCldlZCBBdWcgMzAgMDA6MTE6NDIgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kICgiKm1vdnNmIiwiKm1vdnNpIik6IFBhc3MgTlVMTCB0bwoJb3V0cHV0X21vdnNpc2YgaW5zdGVhZCBvZiB3aGljaF9hbHRlcm5hdGl2ZS4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dHB1dF9yZWxvYWRfaW5oaSk6IENoZWNrIGZvciBOVUxMIHBvbnRlci4KClR1ZSBBdWcgMjkgMjI6Mjk6NTggMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4gJiBNYXJlayBNaWNoYWxraWV3aWN6IDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnItcHJvdG9zLmg6IChhdnJfb3V0cHV0X2FzY2lpKSBSZW1vdmVkLgoJKGF2cl9wcm9nbWVtX3ApOiBOZXcgcHJvdG90eXBlLgoJKG91dHB1dF9tb3ZzaXNmKTogUHJvdG90eXBlIGRlY2xhcmF0aW9uIGNoYW5nZWQuCgkob3V0cHV0X21vdnFpKTogTmV3IHByb3RvdHlwZS4KCShvdXRwdXRfbW92aGkpOiBOZXcgcHJvdG90eXBlLgoJKGNhbGxfaW5zbl9vcGVyYW5kKTogTGlrZXdpc2UuCgkoZmluYWxfcHJlc2Nhbl9pbnNuKTogTGlrZXdpc2UuCgkoYXZyX3NpbXBsaWZ5X2NvbXBhcmlzaW9uX3ApOiBMaWtld2lzZS4KCShhdnJfbm9ybWFsaXplX2NvbmRpdGlvbik6IExpa2V3aXNlLgoJKGNvbXBhcmVfZXFfcCk6IExpa2V3aXNlLgoJKG91dF9zaGlmdF93aXRoX2NudCk6IExpa2V3aXNlLgoJKGNvbnN0X2ludF9wb3cyX3ApOiBMaWtld2lzZS4KCShvdXRwdXRfcmVsb2FkX2luaGkpOiBQcm90b3R5cGUgZGVjbGFyYXRpb24gY2hhbmdlZC4KCgkqIGNvbmZpZy9hdnIvYXZyLmM6IChkZWJ1Z19oYXJkX3JlZ19zZXQpOiBQcm90b3R5cGUgZGVjbGFyZWQuCgkobGRpX3JlZ19ydHgpOiBOZXcuIHJ0eCBmb3IgcjMxLgoJKGF2cl9pbml0X3N0YWNrKTogSW5pdGlhbGl6ZSBhcyAiX19zdGFjayIuCgkoZnVuY3Rpb25fcHJvbG9ndWUpOiBVc2UgaXQuCglSZXBsYWNlIGFsbCBUQVJHRVRfRU5IQU5DRUQgd2l0aCBBVlJfRU5IQU5DRUQuCgkoYXZyX21jdV9uYW1lKTogSW5pdGlhbGl6ZSBhcyAiYXZyMiIuCgkoYXZyX2VuaGFuY2VkX3AsIGF2cl9tZWdhX3ApOiBOZXcgdmFyaWFibGVzLgoJKG1jdV90eXBlcywgYXZyX292ZXJyaWRlX29wdGlvbnMpOiBIYW5kbGUgYWxsIGtub3duIE1DVSB0eXBlcy4KCUFsc28gaGFuZGxlIGF2cjEgKG9ubHkgcHJlcHJvY2VzcywgYXNzZW1ibGUgYW5kIGxpbmspLgoJKHByaW50X29wZXJhbmQpOiBVc2luZyBvZiBgJUsnIGluIG91dHB1dCB0ZW1wbGF0ZSByZW1vdmVkLgoJKG91dF9tb3ZxaV9yX21yKTogT3B0aW1pemVkLgoJKG91dF9tb3ZoaV9yX21yKTogTGlrZXdpc2UuCgkob3V0cHV0X21vdnFpKTogTmV3IGZ1bmN0aW9uLgoJKG91dHB1dF9tb3ZoaSk6IExpa2V3aXNlLgoJKG91dF9tb3ZzaV9yX21yKTogT3B0aW1pemVkLgoJKG91dHB1dF9tb3ZzaXNmKTogQ29tcHV0ZSBpbnNuIGxlbmd0aCBmb3IgYGFkanVzdF9pbnNuX2xlbmd0aCcKCShvdXRfbW92cWlfbXJfcik6IE9wdGltaXplZC4KCShvdXRfbW92aGlfbXJfcik6IE9wdGltaXplZC4KCShhZGp1c3RfaW5zbl9sZW5ndGgpOiBVc2Ugb3V0cHV0X21vdnNpc2YsIG91dHB1dF9tb3ZxaSwKCW91dHB1dF9tb3ZoaSBmb3IgaW5zbiBsZW5ndGggYWRqdXN0aW5nLgoJKHJlZ191bnVzZWRfYWZ0ZXIpOiBVc2UgZGVhZF9vcl9zZXRfcC4KCShwcmVmZXJyZWRfcmVsb2FkX2NsYXNzKTogTm93IGhhdmVuJ3QgYW55IHJlc3RyaWN0aW9uLgoJKHJlZ193YXNfMCk6IE5ldyBmdW5jdGlvbi4KCShpb19hZGRyZXNzX3ApOiBMaWtld2lzZS4KCShjb25zdF9pbnRfcG93Ml9wKTogTGlrZXdpc2UuCgkob3V0cHV0X3JlbG9hZF9pbmhpKTogTGlrZXdpc2UuCgkob3V0cHV0X3JlbG9hZF9pbnNpc2YpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9hdnIvYXZyLmggKE1VTFRJTElCX0RFRkFVTFRTKTogRGVmaW5lLgoJKExJQl9TUEVDKTogVXNlIC1sYyBmb3IgYWxsIHN1cHBvcnRlZCBkZXZpY2VzLgoJKExJQkdDQ19TUEVDKTogVXNlIC1sZ2NjIGZvciBhbGwgc3VwcG9ydGVkIGRldmljZXMuCgkoQVZSX01FR0EpOiBEZWZpbmUgYXMgYXZyX21lZ2FfcC4KCShBVlJfRU5IQU5DRUQpOiBOZXcsIGRlZmluZSBhcyBhdnJfZW5oYW5jZWRfcC4KCShUQVJHRVRfU1dJVENIRVMpOiBSZW1vdmUgLW1lbmhhbmNlZCwgbm93IGhhbmRsZWQgYnkgLW1tY3U9Li4uCgkoQ1BQX1NQRUMsIExJTktfU1BFQyk6IEhhbmRsZSBhbGwga25vd24gTUNVIHR5cGVzLgoJKENSVF9CSU5VVElMU19TUEVDUyk6IEhhbmRsZSBhbGwga25vd24gTUNVIHR5cGVzLgoJUmVuYW1lIGdjcnQxLSoubyB0byBtYWtlIGZpbGUgbmFtZXMgdW5pcXVlIG9uIDguMyBmaWxlc3lzdGVtcy4KCShFWFRSQV9TUEVDUyk6IEFkZCBDUFBfQVZSWzEtNV1fU1BFQy4KCShBU01fU1BFQyk6IFBhc3MgLW1tY3U9Li4uIHRvIHRoZSBhc3NlbWJsZXIuCglDaGFuZ2UgYWxsIC1EQVZSXyogdG8gLURfX0FWUl8qX18uCgkoSU5JVF9UQVJHRVRfT1BUQUJTKSwgY29uZmlnL2F2ci9saWJnY2MuUzoKCVJlbmFtZSBsaWJyYXJ5IGZ1bmN0aW9ucyB0byBzdGFydCB3aXRoIHR3byB1bmRlcnNjb3Jlcy4KCShBU01fT1VUUFVUX0NPTU1PTik6IE91dHB1dHMgYC5jb21tIFZBUixWQVItU0laRSwxJyB0byBhdm9pZAoJYWxpZ25tZW50LgoJKEFTTV9XRUFLRU5fTEFCRUwpOiBEZWNsYXJlZCBmb3IgX19hdHRyaWJ1dGVfXygod2VhaykpLgoJKFNVUFBPUlRTX1dFQUspOiBMaWtld2lzZS4KCShMRElfUkVHX1JFR05PKTogTmV3LiBSZWdpc3RlciByMzEgd2lsbCBiZSB1c2VkIGFzIHRlbXBvcmFyeQoJcmVnaXN0ZXIgZm9yIGxvYWRpbmcgY29uc3RhbnRzIHRvIHIwLXIxNC4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kOiBSZXBsYWNlIGFsbCBUQVJHRVRfRU5IQU5DRUQgd2l0aAoJQVZSX0VOSEFOQ0VELgoJKCptb3Zfcl9zcCk6IFJlbW92ZWQuIEhhbmRsZWQgYnkgb3V0cHV0X21vdmhpLgoJKCptb3Zfc3Bfcik6IExpa2V3aXNlLgoJKCptb3Zfc3Bfcl9ub19pbnRlcnJ1cHRzKTogTGlrZXdpc2UKCSgqbW92X3NwX3JfdGlueSk6IExpa2V3aXNlLgoJKCptb3ZxaSk6IFVzZSBvdXRwdXRfbW92cWkuCgkoKnJlbG9hZF9pbnFpKTogTmV3LgoJKCptb3ZoaSk6IFVzZSBvdXRwdXRfbW92aGkuCgkoKnJlbG9hZF9pbmhpKTogTmV3LgoJKCpuZWdzaTIpOiBPcHRpbWl6ZWQuCgkoKm5lZ3NmMik6IExpa2V3aXNlLgoJQWRkZWQgcGVlcGhvbGVzIChkZWZpbmVfcGVlcGhvbGUyKSBmb3IgbG9hZGluZyBjb25zdGFudHMgdG8gcjAtcjE0CglhbmQgZm9yIHVzaW5nIGBjcHNlJyBjb21tYW5kLgoKCSogY29uZmlnL2F2ci9saWJnY2MuUzogUmVuYW1lIGxpYnJhcnkgZnVuY3Rpb25zIHRvIHN0YXJ0IHdpdGggdHdvCgl1bmRlcnNjb3Jlcy4KCUFkZCBzdXBwb3J0IGZvciBlbmhhbmNlZCBjb3JlLgoJKF9tb3FoaTMpOiBGaXggdHlwbywgbm93IF9tb2RxaTMuCgkoX19kaXZzaV9yYXcpOiBVc2UgX196ZXJvX3JlZ19fIGFzIGxvb3AgY291bnRlciwgc21hbGxlciBieSAxIHdvcmQuCgkoX19wcm9sb2d1ZV9zYXZlc19fKTogUmVtb3ZlIHRlc3QgZm9yIHN0YWNrIGFkanVzdCBieSAwLgoJKF9fdGFibGVqdW1wX18pOiBOZXcuCgoJKiBjb25maWcvYXZyL3QtYXZyOiBCdWlsZCBsaWJnY2MyIHdpdGggLW1jYWxsLXByb2xvZ3Vlcy4KCUFkZCBtdWx0aWxpYiBzdXBwb3J0LgoKVHVlIEF1ZyAyOSAxNToxNzo1NCBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogbG9vcC5jIChwcmVzY2FuX2xvb3ApOiBEb24ndCBjaGVjayB1bmtub3duX2FkZHJlc3NfYWx0ZXJlZAoJd2hlbiBkZWNpZGluZyBpZiBpbnNlcnRfbG9vcF9tZW0gaXMgc2FmZS4gIEFkZCBCTEttb2RlIE1FTXMKCXRvIGxvb3Bfc3RvcmVfbWVtcyBhcyBuZWNlc3NhcnkuCgkobG9vcF9pbnZhcmlhbnRfcCk6IERvbid0IGNoZWNrIHVua25vd25fYWRkcmVzc19hbHRlcmVkCglvciB1bmtub3duX2NvbnN0YW50X2FkZHJlc3NfYWx0ZXJlZC4KCjIwMDAtMDgtMjkgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogdmF4Lm1kIChzbHR1LCBzZ2V1KTogRGVsZXRlIHNsdHUgYW5kIHNnZXUgaW5zbiBwYXR0ZXJucy4KCjIwMDAtMDgtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGVycm9yLmMgKHByaW50X2ZpbGVfYW5kX2xpbmUpOiBJZiBsaW5lIGlzICh1bnNpZ25lZCBpbnQpLTEsCglwcmludCBqdXN0IHRoZSBmaWxlbmFtZS4KCSogY3BwbGV4LmMgKF9jcHBfcnVuX2RpcmVjdGl2ZSk6IEFkZCBhZGRpdGlvbmFsIGFyZ3VtZW50LCB0aGUKCW5hbWUgdG8gZ2l2ZSB0aGUgc3ludGhldGljIGJ1ZmZlci4gIFRoaXMgZGVmYXVsdHMgdG8KCXRyYW5zbGF0ZWQgIjxjb21tYW5kIGxpbmU+Ii4KCSogY3BwbGliLmMgKGNwcF9kZWZpbmUsIGNwcF91bmRlZiwgY3BwX2Fzc2VydCwgY3BwX3VuYXNzZXJ0KToKCUFkanVzdCB0byBtYXRjaC4KCShfY3BwX2RlZmluZV9idWlsdGluKTogTmV3IGZ1bmN0aW9uLgoJKiBjcHBpbml0LmMgKGluaXRpYWxpemVfYnVpbHRpbnMpOiBVc2UgX2NwcF9kZWZpbmVfYnVpbHRpbi4KCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCgkqIHRyYWRjcHAuYyAobWFpbik6IFByb2Nlc3MgLUQgYW5kIC1VIHNpbXVsdGFuZW91c2x5LCBpbiB0aGUKCW9yZGVyIHRoZXkgYXBwZWFyZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCjIwMDAtMDgtMjkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtZGVjbC5jIChkZWZpbmVfbGFiZWwpOiBDYWxsIHdhcm5pbmdfd2l0aF9maWxlX2FuZF9saW5lIGFuZAoJZXJyb3Jfd2l0aF9maWxlX2FuZF9saW5lIGluc3RlYWQgb2YgcGxhaW4gd2FybmluZyBvciBlcnJvci4KCgkqIGMtcGFyc2UuaW4gKGxhYmVsKTogVXNlIHNhdmVfZmlsZW5hbWUvc2F2ZV9saW5lbm8gdG8gZW5zdXJlCgljb3JyZWN0IHZhbHVlcyBmb3IgY2FsbHMgdG8gZGVmaW5lX2xhYmVsLgoKMjAwMC0wOC0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRG9uJ3QgY3JlYXRlIGEgVkFSX0RFQ0wganVzdCB0byB0aHJvdyBpdAoJYXdheS4KCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBUQVJHRVRfRVhQUik6IERvbid0IGNhbGwKCW1hcmtfYWRkcmVzc2FibGUuCgkqIHRyZWUuaCAoZ2V0X2ZpbGVfZnVuY3Rpb25fbmFtZSk6IFJlbW92ZSB0d28gZHVwbGljYXRlCglkZWNsYXJhdGlvbnMuCgoyMDAwLTA4LTI4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHRyZWUuYzogRml4IGZvcm1hdHRpbmcuCgoJKiB4Y29mZm91dC5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDgtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGF0dHJfY2hlY2tzdW0pOiBBbHNvIGlnbm9yZSBEV19BVF9wcm9kdWNlci4KCjIwMDAtMDgtMjggIERhbmllbCBCZXJsaW4gIDxkYmVybGluQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2ZpbmlzaCk6IERvbid0IGJvdGhlciBjYWxsaW5nCglicmVha19vdXRfaW5jbHVkZXMgaWYgaXQgd29uJ3QgZG8gYW55dGhpbmcuCgoyMDAwLTA4LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcmVsb2FkLmMgKHB1c2hfc2Vjb25kYXJ5X3JlbG9hZCk6IFJldmVydCAyMDAwLTA4LTE2IGNoYW5nZS4KCShmaW5kX3JlbG9hZHMpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChyZWxvYWRfaW5xaSk6IFJldmVydCAyMDAwLTA4LTExIGNoYW5nZS4KCShyZWxvYWRfaW5oaSk6IExpa2V3aXNlLgoKMjAwMC0wOC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYzogRG9uJ3QgZXJyb3Igb24gRVhUUkFfQ09OU1RSQUlOVCBkZWZpbmVkLgoJKGNhbGxfaW5zbl9vcGVyYW5kKTogRG9uJ3QgZXhwZWN0IGEgc3Vycm91bmRpbmcgbWVtLgoJKGNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChjYWxsIHBhdHRlcm5zKTogTW92ZSB0aGUgbWF0Y2hfb3BlcmFuZAoJZm9yIHRoZSBjYWxsIGRlc3RpbmF0aW9uIGluc2lkZSB0aGUgbWVtLgoKMjAwMC0wOC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxvY2FsLWFsbG9jLmMgKHJlcXVpcmVzX2lub3V0KTogRG9uJ3QgdXNlIHJlc2VydmVkIHJhbmdlIGZvcgoJRVhUUkFfQ09OU1RSQUlOVFM7IHVzZSBhbnl0aGluZyBub3QgbWF0Y2hlZCBieSBSRUdfQ0xBU1NfRlJPTV9MRVRURVIuCgkqIHJlY29nLmMgKGFzbV9vcGVyYW5kX29rKTogTGlrZXdpc2UuCgkocHJlcHJvY2Vzc19jb25zdHJhaW50cywgY29uc3RyYWluX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKHJlY29yZF9yZWdfY2xhc3Nlcyk6IExpa2V3aXNlLgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAobWF5YmVfZml4X3N0YWNrX2FzbXMpOiBMaWtld2lzZS4KCShyZWxvYWRfY3NlX3NpbXBsaWZ5X29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IExpa2V3aXNlLgoKCSogbWQudGV4aTogVXBkYXRlIGNvbnN0cmFpbnRzIGRvY3VtZW50YXRpb24uCgkqIHRtLnRleGkgKEVYVFJBX0NPTlNUUkFJTlQpOiBVcGRhdGUuCgoyMDAwLTA4LTI4ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKERJRV9MQUJFTF9QUkVGSVgpOiBSZW1vdmUgbGVhZGluZyAiX18iLgoJKHByaW50X2RpZSk6IElmIHdlIGRvbid0IGtub3cgdGhlIG9mZnNldCBvZiB0aGUKCXRhcmdldCBkaWUsIHRyeSB0aGUgc3ltYm9sLiAgQWRkIGEgdHJhaWxpbmcgbmV3bGluZS4KCShyZXZlcnNlX2FsbF9kaWVzKTogTmV3IGZuLgoJKGR3YXJmMm91dF9maW5pc2gpOiBDYWxsIGl0LgoJKGJyZWFrX291dF9pbmNsdWRlcyk6IFJlb3JnYW5pemUgZm9yIGNsYXJpdHkuCgkoYWRkX3NpYmxpbmdfYXR0cmlidXRlcyk6IERvbid0IGNhbGwgcmV2ZXJzZV9kaWVfbGlzdHMuCgkob3V0cHV0X2NvbXBfdW5pdCk6IFJlbmFtZSBmcm9tIG91dHB1dF9jb21kYXRfY29tcF91bml0LiAgVXNlIGZvcgoJcHJpbWFyeSBDVSwgdG9vLgoJKiBmbGFncy5oOiBBZGQgZmxhZ19lbGltaW5hdGVfZHdhcmYyX2R1cHMuCgkqIHRvcGxldi5jIChmX29wdGlvbnMpOiBTdXBwb3J0IC1mZWxpbWluYXRlLWR3YXJmMi1kdXBzLgoKMjAwMC0wOC0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkd2FyZjIuaCAoRFdfVEFHX0dOVV9CSU5DTCwgRFdfVEFHX0dOVV9FSU5DTCk6IE5ldyB0YWdzLgoJKiBkd2FyZjJvdXQuYzogI2luY2x1ZGUgIm1kNS5oIi4KCShESUVfTEFCRUxfUFJFRklYKTogTmV3IG1hY3JvLgoJKGR3X3ZhbF9zdHJ1Y3QpOiBBZGQgJ2V4dGVybmFsJyBmbGFnIHRvIHZhbF9kaWVfcmVmLgoJKGFkZF9BVF9kaWVfcmVmLCBBVF9yZWYpOiBBZGp1c3QuCgkoQVRfcmVmX2V4dGVybmFsLCBzZXRfQVRfcmVmX2V4dGVybmFsKTogTmV3IGZucy4KCShidWlsZF9hYmJyZXZfdGFibGUpOiBDYWxsIHNldF9BVF9yZWZfZXh0ZXJuYWwuCgkodmFsdWVfZm9ybWF0KTogQ2FsbCBBVF9yZWZfZXh0ZXJuYWwuCgkoZGllX3N0cnVjdCk6IEFkZCBkaWVfc3ltYm9sIGZpZWxkLgoJKG5ld19kaWUpOiBDbGVhciBpdC4KCShkd2FyZl90YWdfbmFtZSk6IEhhbmRsZSBCSU5DTC9FSU5DTC4KCShkd2FyZjJvdXRfc3RhcnRfc291cmNlX2ZpbGUpOiBBZGQgQklOQ0wgRElFLgoJKGR3YXJmMm91dF9lbmRfc291cmNlX2ZpbGUpOiBBZGQgRUlOQ0wgRElFLgoJKHB1c2hfbmV3X2NvbXBpbGVfdW5pdCwgcG9wX2NvbXBpbGVfdW5pdCwgY2xlYXJfZGllX3NpemVzKTogTmV3IGZucy4KCShsb2NfY2hlY2tzdW0sIGF0dHJfY2hlY2tzdW0sIGRpZV9jaGVja3N1bSk6IE5ldyBmbnMuCgkoaXNfdHlwZV9kaWUsIGlzX2NvbWRhdF9kaWUsIGlzX3N5bWJvbF9kaWUpOiBOZXcgZm5zLgoJKGNvbXB1dGVfc2VjdGlvbl9wcmVmaXgsIGFzc2lnbl9zeW1ib2xfbmFtZXMpOiBOZXcgZm5zLgoJKGdlbl9pbnRlcm5hbF9zeW0sIG91dHB1dF9kaWVfc3ltYm9sLCBvdXRwdXRfc3ltYm9saWNfcmVmKTogTmV3IGZucy4KCShvdXRwdXRfZGllKTogQ2FsbCBvdXRwdXRfZGllX3N5bWJvbCBhbmQgQVRfcmVmX2V4dGVybmFsLgoJKG91dHB1dF9jb21kYXRfY29tcF91bml0KTogTmV3IGZuLCBzcGxpdCBvdXQgZnJvbS4uLgoJKGR3YXJmMm91dF9maW5pc2gpOiAuLi5oZXJlLiAgQWxzbyBjYWxsIGFkZF9zaWJsaW5nX2F0dHJpYnV0ZXMgZm9yCglzZWNvbmRhcnkgQ1VzLgoJKG91dHB1dF9wdWJuYW1lcywgb3V0cHV0X2FyYW5nZXMpOiBBYm9ydCBpZiB3ZSBzZWUgZW50cmllcyBmcm9tCglzZWNvbmRhcnkgQ1VzLgoJKiB0b3BsZXYuaDogRGVjbGFyZSBmaWxlX25hbWVfbm9uZGlyZWN0b3J5LgoJKiB0b3BsZXYuYyAoZmlsZV9uYW1lX25vbmRpcmVjdG9yeSk6IE5ldyBmbiwgbW92ZWQgZnJvbSBDKysgZnJvbnRlbmQuCgkocmVzdF9vZl90eXBlX2NvbXBpbGF0aW9uKTogQ2FsbCBkd2FyZjJvdXRfZGVjbCBpZiBhdCB0b3BsZXZlbC4KCShkZWJ1Z19zdGFydF9zb3VyY2VfZmlsZSk6IENhbGwgZHdhcmYyb3V0X3N0YXJ0X3NvdXJjZV9maWxlCglyZWdhcmRsZXNzIG9mIGRlYnVnIHZlcmJvc2l0eS4KCShkZWJ1Z19lbmRfc291cmNlX2ZpbGUpOiBTaW1pbGFybHkuCgkqIHRyZWUuaDogRGVjbGFyZSBjbGVhbl9zeW1ib2xfbmFtZS4KCSogdHJlZS5jIChjbGVhbl9zeW1ib2xfbmFtZSk6IFNwbGl0IG91dCBmcm9tLi4uCgkoZ2V0X2ZpbGVfZnVuY3Rpb25fbmFtZV9sb25nKTogLi4uaGVyZS4KCgkqIGR3YXJmMm91dC5jIChuZXdfbG9jX2Rlc2NyKTogVXNlIGNhbGxvYy4KCShzcGxpY2VfY2hpbGRfZGllKTogUmVtb3ZlIHRoZSBkaWUgZnJvbSB0aGUgcmlnaHQgcGFyZW50LgoJKGdlbl9zdHJ1Y3Rfb3JfdW5pb25fZGllKTogRG9uJ3QgYWRkIEFUX25hbWUgdG8gYSBzcGVjaWZpY2F0aW9uIERJRS4KCk1vbiBBdWcgMjggMTk6MDI6MTMgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRvcGxldi5jIChkZWNvZGVfZ19vcHRpb24pOiBEb24ndCBnaXZlIHdhcm5pbmcgZm9yIHVua25vd24gLWcKCW9wdGlvbjsgcmV0dXJuIDAgaW5zdGVhZC4KCShtYWluKTogSWYgLWcgb3B0aW9uIGlzIG5vdCByZWNvZ25pemVkIGJ5IGZyb250IGVuZCBvcgoJbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgY29kZSwgZ2l2ZSB3YXJuaW5nLgoKMjAwMC0wOC0yOCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpeDg2X2V4cGFuZF9jb21wYXJlKTogQWRkIGV4dGVybiBkZWNsLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2NvbXBhcmUpOiBSZW1vdmUgYHN0YXRpYycuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHRyYXAsIGNvbmRpdGlvbmFsX3RyYXApOiBOZXcgaW5zbiAmIGV4cGFuZC4KCjIwMDAtMDgtMjcgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogY3BwbGV4LmMgKHBhcnNlX3N0cmluZyk6IERvbid0IGxvb2sgZm9yIGJhY2tzbGFzaAoJYmVmb3JlIGZpcnN0IGNoYXIgaW4gYG5hbWVidWYnLgoJKiBsb29wLmMgKHN0cmVuZ3RoX3JlZHVjZSk6IFNraXAgTk9URXMuCgoyMDAwLTA4LTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBzZXQgVFJFRV9TVEFUSUMgb3IgY2xlYXIKCURFQ0xfRVhURVJOQUwgb24gYSBsb2NhbCBleHRlcm4uICBEb24ndCBzZXQgREVDTF9JR05PUkVEX1Agb3IKCVRSRUVfQVNNX1dSSVRURU4sIGVpdGhlci4KCShmaW5pc2hfZGVjbCk6IEFkanVzdC4KCjIwMDAtMDgtMjggIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogQUJPVVQtR0NDLU5MUzogUmVtb3ZlIGdldHRleHQgcGF0Y2hlcyBmcm9tIFBhdWwgRWdnZXJ0IGFzCgl0aGV5IGhhdmUgYmVlbiBpbmNvcnBvcmF0ZWQgaW50byB0aGUgZ2V0dGV4dCBDVlMuIENoYW5nZSB0aGUgdGV4dCB0bwoJcmVmbGVjdCB0aGUgY3VycmVudCBzdGF0dXMgb2YgTkxTLiBBZGQgaW5zdHJ1Y3Rpb25zIGZvciBhY2Nlc3NpbmcKCXRoZSBnZXR0ZXh0IENWUyBhbmQgYWRkIHRoZSBwYXRjaCBmcm9tIE1hcnRpbiB2LiBMb2V3aXMuCgoyMDAwLTA4LTI3ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92ZGlfaW50ZXJuYWw2NCs1KTogTWFrZSBTVUJSRUctc2FmZQoJYnkgdXNpbmcgZ2VuX2xvd3BhcnRfY29tbW9uLgoJKG1vdmRpX2ludGVybmFsNjQrNik6IExpa2V3aXNlLgoKMjAwMC0wOC0yNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiB0bS50ZXhpIChGSU5JX1NFQ1RJT05fQVNNX09QLCBDUlRfQ0FMTF9TVEFUSUNfRlVOQ1RJT04pOgoJRG9jdW1lbnQuCgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKERCWF9SRUdJU1RFUl9OVU1CRVIpOiBSZW1hcCByZWdpc3RlcgoJbnVtYmVycyB0byB0aGUgcmFuZ2VzIHVzZWQgYnkgR0RCLgoKMjAwMC0wOC0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgbl92YXJhcmdzLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfY29tcHV0ZV9mcmFtZV9zaXplKTogVXNlIGl0LgoJKGlhNjRfZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkoaWE2NF9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogU2V0IGl0LiAgUHJvcGVybHkgc2tpcCB0aGUgY3VycmVudAoJYXJndW1lbnQgZm9yIHN0ZGFyZ3MuCgoyMDAwLTA4LTI1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogUHVsbCBvdXQgdGhlIG9yaWdpbmFsIGRlY2wuCgoyMDAwLTA4LTI1ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjc2UuYyAoY3NlX2luc24pOiBEb24ndCBwYXNzIGxhYmVsIHN1YnRyYWN0aW9uIHRvIGZvcmNlX2NvbnN0X21lbS4KCgkqIGZ1bmN0aW9uLmMgKGdlbl9tZW1fYWRkcmVzc29mKTogQ2xlYXIgTUVNX0FMSUFTX1NFVCBpZiBubyBkZWNsLgoKMjAwMC0wOC0yNSAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBmbG93LmMgKGR1bXBfZWRnZV9pbmZvKTogVXNlIEFSUkFZX1NJWkUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9leHBhbmRfYmxvY2tfbW92ZSk6IExpa2V3aXNlLgoKMjAwMC0wOC0yNSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uaCAoU1RSVUNUX1ZBTFVFKTogRGVmaW5lIHRvIDAsIG5vdCBOVUxMLgoKRnJpIEF1ZyAyNSAxMjo1Mjo0OSBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogaTM4Ni5jIChpeDg2X2ZpbmRfYmFzZV90ZXJtKTogTmV3LgoJKiBpMzg2LXByb3Rvcy5oIChpeDg2X2ZpbmRfYmFzZV90ZXJtKTogUHJvdG90eXBlLgoJKiBpMzg2LmggKEZJTkRfQkFTRV9URVJNKTogRGVmaW5lLgoJKiBhbGlhcy5jIChmaW5kX2Jhc2VfdGVybSk6IFVzZSBpdC4KCSogdG0udGV4aSAoRklORF9CQVNFX1RFUk0pOiBEb2N1bWVudCBpdC4KCgkqIGFsaWFzLmMgKHRydWVfZGVwZW5kZW5jZSwgd3JpdGVfZGVwZW5kZW5jZV9wKTogVW5jaGFuZ2luZwoJbWVtb3J5IGNhbid0IGNvbmZsaWN0IHdpdGggbm9uLXVuY2hhbmdpbmcgbWVtb3J5LgoKCSogYWxpYXMuYyAobWVtcmVmc19jb25mbGljdF9wKTogQSBCTEttb2RlIHJlZmVyZW5jZQoJdG8gYSBzeW1ib2wgKG9yIENPTlNUX0lOVCBhZGRyZXNzKSBhbHdheXMgY29uZmxpY3RzCgl3aXRoIGEgcmVmZXJlbmNlIHRvIGFub3RoZXIgc3ltYm9sLgoKMjAwMC0wOC0yNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAodGltZV9jaGFyX3RhYmxlKTogRG9uJ3QgYWxsb3cgd2lkdGggYW5kIGZsYWdzIHdpdGgKCSJ6IiBmb3JtYXQuCgoyMDAwLTA4LTI1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfYnJhbmNoKTogVHJlYXQgR0UgYW5kIEdFVSB0aGUgc2FtZQoJd2F5IGFzIExUIGFuZCBMVFUgd2hlbiB0aGUgc2Vjb25kIG9wZXJhbmQgaGFzIDAgaW4gbG93IHdvcmQuCgoyMDAwLTA4LTI2ICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgbG9vcCk6IFJlbmFtZSBgZXhpdHMnIGZpZWxkIHRvCglgZXhpdF9lZGdlcycuICBBZGQgYGVudHJ5X2VkZ2VzJyBhbmQgYG51bV9lbnRyaWVzJyBmaWVsZHMuCgoJKiBmbG93LmMgKGZsb3dfbG9vcF9leGl0X2VkZ2VzX2ZpbmQpOiBSZW5hbWUgZnJvbSBmbG93X2xvb3BfZXhpdHNfZmluZC4KCShmbG93X2xvb3BfZW50cnlfZWRnZXNfZmluZCk6IEFkZC4KCShmbG93X2VkZ2VfbGlzdF9wcmludCk6IFJlbmFtZSBmcm9tIGZsb3dfZXhpdHNfcHJpbnQuCgkoZmxvd19sb29wc19maW5kKTogQ2FsbCBmbG93X2xvb3BfZW50cnlfZWRnZXNfZmluZC4KCShmbG93X2xvb3BfZHVtcCk6IER1bXAgZW50cnlfZWRnZXMgbGlzdC4KCShmbG93X2xvb3BzX2ZyZWUpOiBGcmVlIGVudHJ5X2VkZ2VzLgoKMjAwMC0wOC0yNiAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogbG9vcC5jIChsb29wX2R1bXBfYXV4LCBkZWJ1Z19sb29wKTogTmV3IGZ1bmN0aW9ucy4KCShMT09QX0JMT0NLX05VTV8xLCBMT09QX0JMT0NLX05VTSwgTE9PUF9JTlNOX1VJRCk6IE5ldyBtYWNyb3MuCgoJKiBmbG93LmMgKGZsb3dfbG9vcHNfZHVtcCk6IEFkZCBjYWxsYmFjayBwYXJhbWV0ZXIuCgkoZmxvd19sb29wX2R1bXApOiBBZGQgY2FsbGJhY2sgcGFyYW1ldGVyIGFuZCBjYWxsIGl0LiAgTW92ZQoJbG9vcCBub3RlIGRlYnVnZ2luZyBjb2RlIHRvIGxvb3BfZHVtcF9hdXguCgoJKiBiYXNpYy1ibG9jay5oIChmbG93X2xvb3BfZHVtcCk6IEFkZCBjYWxsYmFjayBwYXJhbWV0ZXIKCShmbG93X2xvb3BzX2R1bXApOiBMaWtld2lzZS4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQWRkIE5VTEwgY2FsbGJhY2sgZnVuY3Rpb24gcG9pbnRlcgoJdG8gY2FsbCB0byBmbG93X2xvb3BzX2R1bXAuCgoyMDAwLTA4LTI2ICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBsb29wLmMgKGNvdW50X2xvb3BfcmVnc19zZXQpOiBSZXBsYWNlIHN0YXJ0IGFuZCBlbmQgYXJndW1lbnRzCgl3aXRoIGxvb3AgYXJndW1lbnQuICBBbGwgY2FsbGVycyB1ZGF0ZWQuCgoyMDAwLTA4LTI2ICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBsb29wLmMgKGNvbnN0YW50X2hpZ2hfYnl0ZXMpOiBEZWxldGUuCgoyMDAwLTA4LTI2ICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBsb29wLmMgKHByZXNjYW5fbG9vcCk6IE1vdmUgY2hlY2tzIGZvciBOT1RFX0lOU05fTE9PUF9DT05UCglhbmQgTk9URV9JTlNOX0xPT1BfVlRPUCB0by4uLgoJKGZpbmRfYW5kX3ZlcmlmeV9sb29wcykgLi4uaGVyZS4KCkZyaSBBdWcgMjUgMDQ6MjE6MTMgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjcnRzdHVmZi5jIChDUlRfQ0FMTF9TVEFUSUNfRlVOQ1RJT04pOiBEZWZpbmUgZGVmYXVsdC4KCShmaW5pX2R1bW15LCBpbml0X2R1bW15KTogVXNlIGl0LgoKRnJpIDI1LUF1Zy0yMDAwIDA4OjAzOjI3IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoaXNfbWFjcm9fZGlzYWJsZWQpOiBDYWxsZXIgaGFzIGFscmVhZHkgY2hlY2tlZAoJdGhhdCB3ZSdyZSBub3QgYSBwcmVwcm9jZXNzZWQgZmlsZS4KCjIwMDAtMDgtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQ19BTkRfT0JKQ19PQkpTKTogUmVtb3ZlIGMtaXRlcmF0ZS5vLgoJKGMtaXRlcmF0ZS5vKTogUmVtb3ZlIHRhcmdldC4KCSogZ2NjL2MtY29tbW9uLmggKGVudW0gcmlkKTogUmVtb3ZlIFJJRF9JVEVSQVRPUi4KCSogZ2NjL2MtZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbW92ZSBjYWxsIHRvIGluaXRfaXRlcmF0b3JzLgoJKGZpbmlzaF9kZWNsKTogRG9uJ3QgaGFuZGxlIGl0ZXJhdG9ycy4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKiBnY2MvYy1wYXJzZS5ncGVyZjogUmVtb3ZlIF9faXRlcmF0b3IgYW5kIF9faXRlcmF0b3JfXyBrZXl3b3Jkcy4KCSogZ2NjL2MtZ3BlcmYuaDogUmVnZW5lcmF0ZWQuCgkqIGdjYy9jLWl0ZXJhdGUuYzogUmVtb3ZlZC4KCSogZ2NjL2MtbGV4LmMgKGluaXRfbGV4KTogRG9uJ3QgaGFuZGxlIGl0ZXJhdG9ycy4KCSogZ2NjL2MtcGFyc2UuaW4gKHByaW1hcnkpOiBSZW1vdmUgcG9wX2l0ZXJhdG9yX3N0YWNrIGNhbGwuCgkoY29tcHN0bXRfcHJpbWFyeV9zdGFydCk6IFJlbW92ZSBwdXNoX2l0ZXJhdG9yX3N0YWNrIGNhbGwuCgkoc3RtdCk6IERvbid0IGFsbG93IGl0ZXJhdG9yIHN0YXRlbWVudHMuICBSZXBsYWNlIGl0ZXJhdG9yX2V4cGFuZAoJd2l0aCBleHBhbmRfZXhwcl9zdG10LgoJKGFsbF9pdGVyX3N0bXQpOiBSZW1vdmUuCgkoYWxsX2l0ZXJfc3RtdF9zaW1wbGUpOiBMaWtld2lzZS4KCShhbGxfaXRlcl9zdG10X3dpdGhfZGVjbCk6IExpa2V3aXNlLgoJKiBnY2MvYy10cmVlLmggKElURVJBVE9SX1ApOiBSZW1vdmUuCgkoSVRFUkFUT1JfQk9VTkRfUCk6IExpa2V3aXNlLgoJKGluaXRfaXRlcmF0b3JzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGl0ZXJhdG9yX2V4cGFuZCk6IExpa2V3aXNlLgoJKGl0ZXJhdG9yX2Zvcl9sb29wX3N0YXJ0KTogTGlrZXdpc2UuCgkoaXRlcmF0b3JfZm9yX2xvb3BfZW5kKTogTGlrZXdpc2UuCgkoaXRlcmF0b3JfZm9yX2xvb3BfcmVjb3JkKTogTGlrZXdpc2UuCgkocHVzaF9pdGVyYXRvcl9zdGFjayk6IExpa2V3aXNlLgoJKHBvcF9pdGVyYXRvcl9zdGFjayk6IExpa2V3aXNlLgoJKiBnY2MvYy10eXBlY2suYyAoZGVjbF9jb25zdGFudF92YWx1ZSk6IERvbid0IGNoZWNrIElURVJBVE9SX1AuCgkocmVhZG9ubHlfd2FybmluZyk6IExpa2V3aXNlLgoJKiBnY2MvdHJlZS5oIChJVEVSQVRPUl9CT1VORF9QKTogRG9uJ3QgbWVudGlvbiBpdC4KCjIwMDAtMDgtMjQgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGMtY29tbW9uLmMgKGRlY2xfYXR0cmlidXRlcywgY2FzZSBBX0FMSUdOKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoJQ29weSB0eXBlIGluIGEgVFlQRV9ERUNMLCBqdXN0IGxpa2UgcHVzaGRlY2wgZG9lcy4KCjIwMDAtMDgtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0b3BsZXYuYyAobWFpbik6IEVuYWJsZSBmbGFnX3Jlb3JkZXJfYmxvY2tzIGF0IC1PMi4KCjIwMDAtMDgtMjQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGdnYy1wYWdlLmMgKGFsbG9jX3BhZ2UpOiBJZiBIQVZFX01NQVBfQU5ZV0hFUkUgYW5kIHdlJ3JlCglhc2tlZCBmb3Igb25lIHBhZ2UsIGFsbG9jYXRlIEdHQ19RVUlSRV9TSVpFIG9mIHRoZW0gYW5kIHB1dAoJdGhlIGV4dHJhcyBvbiB0aGUgZnJlZSBsaXN0LgoJKHJlbGVhc2VfcGFnZXMpOiBDbGVhbiB1cC4KCShnZ2Nfc2V0X21hcmspOiBEb24ndCBhZGp1c3QgRy5hbGxvY2F0ZWQgaGVyZS4uLgoJKHN3ZWVwX3BhZ2VzKTogLi4uIGRvIGl0IGhlcmUuCgoyMDAwLTA4LTI0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jIChyZWFkX2luY2x1ZGVfZmlsZSk6IFJlYXJyYW5nZSBpbml0aWFsaXphdGlvbnMuCgoyMDAwLTA4LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogVHJlYXQgRVhUUkFfQ09OU1RSQUlOVCBsaWtlIGcgb3IgWC4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChncl9yZWdpc3Rlcl9vcGVyYW5kKTogTmV3LgoJKGZyX3JlZ2lzdGVyX29wZXJhbmQsIGdyZnJfcmVnaXN0ZXJfb3BlcmFuZCk6IE5ldy4KCShncl9ub25pbW1lZGlhdGVfb3BlcmFuZCwgZ3Jmcl9ub25pbW1lZGlhdGVfb3BlcmFuZCk6IE5ldy4KCShncmZyX3JlZ19vcl84Yml0X29wZXJhbmQpOiBOZXcuCgkoZ3JfcmVnX29yXzBfb3BlcmFuZCk6IFJlbmFtZSBmcm9tIHJlZ19vcl8wX29wZXJhbmQgYW5kCgl1c2UgZ3JfcmVnaXN0ZXJfb3BlcmFuZC4KCShncl9yZWdfb3JfNWJpdF9vcGVyYW5kLCBncl9yZWdfb3JfNmJpdF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoZ3JfcmVnX29yXzhiaXRfb3BlcmFuZCwgZ3JfcmVnX29yXzhiaXRfYWRqdXN0ZWRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKGdyX3JlZ19vcl84Yml0X2FuZF9hZGp1c3RlZF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoZ3JfcmVnX29yXzE0Yml0X29wZXJhbmQsIGdyX3JlZ19vcl8yMmJpdF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoZnJfcmVnX29yX2ZwMDFfb3BlcmFuZCk6IExpa2V3aXNlLgoJKG5vdF9wb3N0aW5jX21lbW9yeV9vcGVyYW5kKTogTmV3LgoJKGlhNjRfc3BsaXRfdGltb2RlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgkocnR4X25lZWRzX2JhcnJpZXIpOiBDaGVjayBhcmd1bWVudHMgdG8gY21weGNoZy4KCShidWlsdGluX2Rlc2NyaXB0aW9uKTogUmVtb3ZlLgoJKGJkZXNjXzJhcmdzaSwgYmRlc2NfMmFyZ2RpKTogUmVtb3ZlLgoJKGlhNjRfaW5pdF9idWlsdGlucyk6IERlY2xhcmUgYWxsIGJ1aWx0aW5zIGRpcmVjdGx5LgoJKGlhNjRfZXhwYW5kX2ZldGNoX2FuZF9vcCk6IFJld3JpdGUgdG8gYmUgY2FsbGVkIGZyb20KCWlhNjRfZXhwYW5kX2J1aWx0aW4gZGlyZWN0bHkuICBVc2UgZXhwYW5kX2Jpbm9wIGFuZCBjby4KCShpYTY0X2V4cGFuZF9vcF9hbmRfZmV0Y2gpOiBMaWtld2lzZS4KCShpYTY0X2V4cGFuZF9jb21wYXJlX2FuZF9zd2FwKTogTGlrZXdpc2UuCgkoaWE2NF9leHBhbmRfYmlub3BfYnVpbHRpbik6IFJlbW92ZS4KCShpYTY0X2V4cGFuZF9sb2NrX3Rlc3RfYW5kX3NldCk6IE5ldy4KCShpYTY0X2V4cGFuZF9sb2NrX3JlbGVhc2UpOiBOZXcuCgkoaWE2NF9leHBhbmRfYnVpbHRpbik6IFVzZSB0aGVtLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKENPTlNUUkFJTlRfT0tfRk9SX1MpOiBOZXcuCgkoRVhUUkFfQ09OU1RSQUlOVCk6IFVzZSBpdC4KCShQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKCopOiBVc2UgZ3JfcmVnaXN0ZXJfb3BlcmFuZCBhbmQgY28uCgkobWYpOiBJbmRpY2F0ZSB0aGF0IHdlIHNldCBtZW1vcnkgYXMgd2VsbCBhcyB1c2UgaXQuCgkoZmV0Y2hhZGRfYWNxX3NpKTogU2hvdyBtZW1vcnkgYmVpbmcgbW9kaWZpZWQgYXMgd2VsbC4KCShmZXRjaGFkZF9hY3FfZGksIGNtcHhjaGdfYWNxX3NpLCBjbXB4Y2hnX2FjcV9kaSk6IExpa2V3aXNlLgoJKHZhbF9jb21wYXJlX2FuZF9zd2FwX3NpLCB2YWxfY29tcGFyZV9hbmRfc3dhcF9kaSk6IFJlbW92ZS4KCShsb2NrX3Rlc3RfYW5kX3NldF9zaSwgbG9ja190ZXN0X2FuZF9zZXRfZGkpOiBSZW1vdmUuCgkoZmV0Y2hfYW5kX2FkZF9zaSwgZmV0Y2hfYW5kX3N1Yl9zaSwgZmV0Y2hfYW5kX29yX3NpKTogUmVtb3ZlLgoJKGZldGNoX2FuZF9hbmRfc2ksIGZldGNoX2FuZF94b3Jfc2ksIGZldGNoX2FuZF9uYW5kX3NpKTogUmVtb3ZlLgoJKGZldGNoX2FuZF9hZGRfZGksIGZldGNoX2FuZF9zdWJfZGksIGZldGNoX2FuZF9vcl9kaSk6IFJlbW92ZS4KCShmZXRjaF9hbmRfYW5kX2RpLCBmZXRjaF9hbmRfeG9yX2RpLCBmZXRjaF9hbmRfbmFuZF9kaSk6IFJlbW92ZS4KCShhZGRfYW5kX2ZldGNoX2RpLCBzdWJfYW5kX2ZldGNoX2RpLCBvcl9hbmRfZmV0Y2hfZGkpOiBSZW1vdmUuCgkoYW5kX2FuZF9mZXRjaF9kaSwgeG9yX2FuZF9mZXRjaF9kaSwgbmFuZF9hbmRfZmV0Y2hfZGkpOiBSZW1vdmUuCgkoYWRkX2FuZF9mZXRjaF9zaSwgc3ViX2FuZF9mZXRjaF9zaSwgb3JfYW5kX2ZldGNoX3NpKTogUmVtb3ZlLgoJKGFuZF9hbmRfZmV0Y2hfc2ksIHhvcl9hbmRfZmV0Y2hfc2ksIG5hbmRfYW5kX2ZldGNoX3NpKTogUmVtb3ZlLgoJKiBjb25maWcvaWE2NC9pYTY0aW50cmluLmggKCopOiBDYXN0IHJlc3VsdCB0byB0aGUgYXBwcm9wcmlhdGUKCXJldHVybiB0eXBlLiAgUHJldHR5IHByaW50IGRlZmluaXRpb25zLgoKMjAwMC0wOC0yNCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92ZGkpOiBEb24ndCBjYWxsIGdlbl9tb3ZkaV9zeW1ib2xpYyBpZgoJd2UgaGF2ZSBhIFNZTUJPTF9SRUYgd2l0aCBTWU1CT0xfUkVGX0ZMQUcgc2V0LgoKMjAwMC0wOC0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoQVRfZmxhZywgQVRfaW50LCBBVF91bnNpZ25lZCwgQVRfc3RyaW5nLCBBVF9yZWYsCglBVF9sb2MsIEFUX2FkZHIsIEFUX2xibCk6IEFib3J0IG9uIHVuc3VpdGFibGUgaW5wdXQuCgkoZ2V0X0FUX2xvd19wYywgZ2V0X0FUX2hpX3BjLCBnZXRfQVRfc3RyaW5nLCBnZXRfQVRfZmxhZywKCWdldF9BVF91bnNpZ25lZCwgZ2V0X0FUX3JlZik6IERvbid0IGNhbGwgdGhlbSBpZiBnZXRfQVQgZmFpbHMuCgoyMDAwLTA4LTI0ICBHcmVnIE1jR2FyeSAgPGdyZWdAbWNnYXJ5Lm9yZz4KCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IEluaXRpYWxpemUgZml4dGFiLCBmaXh0cnVuY3RhYiwgZmxvYXR0YWIsCglhbmQgZXh0ZW5kdGFiIHdpdGhpbiB0aGVpciBwcm9wZXIgYXJyYXkgYm91bmRhcmllcy4KCSogZW1pdC1ydGwuYyAoaW5pdF9lbWl0X29uY2UpOiBQYXNzIGBjb25zdF90aW55X3J0eCcgd2l0aCBib3VuZHMKCWZvciB0aGUgZW50aXJlIGFycmF5LgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBVc2UgQVJSQVlfU0laRS4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2xvb2t1cF94ZmxvYXRpbmdfbGliX2Z1bmMpOiBMaWtld2lzZS4KCSogY29uZmlnL2F2ci9hdnIuYyAob3JkZXJfcmVnc19mb3JfbG9jYWxfYWxsb2MpOiBMaWtld2lzZS4KCSogY29uZmlnL2ZyMzAvZnIzMC5jIChmcjMwX3ByaW50X29wZXJhbmQpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvZGd1eC5jIChvdXRwdXRfb3B0aW9ucyk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9kZ3V4LmggKEFTTV9GSUxFX1NUQVJUKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tODhrL204OGsuYyAob3V0cHV0X29wdGlvbnMpOiBMaWtld2lzZS4KCSogY29uZmlnL204OGsvbTg4ay5oIChBU01fRklMRV9TVEFSVCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYyAobWNvcmVfb3V0cHV0X2lubGluZV9jb25zdF9mb3JjZWQsCglsYXlvdXRfbWNvcmVfZnJhbWUsIGhhbmRsZV9zdHJ1Y3RzX2luX3JlZ3MpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChvdXRwdXRfYmxvY2tfbW92ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucywKCXJzNjAwMF9maWxlX3N0YXJ0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19hZGRfZ2Nfcm9vdHMpOiBMaWtld2lzZS4KCSogZml4aW5jL2ZpeGZpeGVzLmMgKEZJWF9UQUJMRV9DVCk6IExpa2V3aXNlLgoJKiBmaXhpbmMvZml4dGVzdHMuYyAoVEVTVF9UQUJMRV9DVCk6IExpa2V3aXNlLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zZXRqbXApOiBMaWtld2lzZS4KCSogZXhwci5jIChzYWZlX2Zyb21fcCk6IExpa2V3aXNlLgoJKiBmbG93LmMgKGxpZmVfYW5hbHlzaXMpOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jIChzaXplX2ludF90eXBlX3dpZGUpOiBMaWtld2lzZS4KCSogZ2NjLmMgKHRyYW5zbGF0ZV9vcHRpb25zLCBpbml0X3NwZWMsIHNldF9zcGVjLCBtYWluKTogTGlrZXdpc2UuCgkqIGdlbmF0dHJ0YWIuYyAobWFrZV9sZW5ndGhfYXR0cnMpOiBMaWtld2lzZS4KCSogZ2Vub3Bpbml0LmMgKGdlbl9pbnNuKTogTGlrZXdpc2UuCgkqIGdlbnJlY29nLmMgKE5VTV9LTk9XTl9QUkVEUywgTlVNX1NQRUNJQUxfTU9ERV9QUkVEUyk6IExpa2V3aXNlLgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2FsbG9jKTogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmMgKGZpbmRfZnJlZV9yZWcpOiBMaWtld2lzZS4KCSogbWlwcy10ZHVtcC5jIChwcmludF9zeW1ib2wpOiBMaWtld2lzZS4KCSogbWlwcy10ZmlsZS5jIChwYXJzZV9kZWYsIHBhcnNlX2lucHV0KTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAoTlVNX0VMSU1JTkFCTEVfUkVHUyk6IExpa2V3aXNlLgoJKiBzdG10LmMgKGV4cGFuZF9ubF9nb3RvX3JlY2VpdmVyKTogTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmMgKHNldF9zaXpldHlwZSk6IExpa2V3aXNlLgoJKiB2YXJhc20uYyAoZGVjb2RlX3JlZ19uYW1lKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChkZWNvZGVfZl9vcHRpb24sIGRlY29kZV9XX29wdGlvbiwKCXNldF90YXJnZXRfc3dpdGNoLCBwcmludF9zd2l0Y2hfdmFsdWVzKTogTGlrZXdpc2UuCgkoTlVNX0VMRU0pOiBSZW1vdmUgbWFjcm8uCgkoZGlzcGxheV9oZWxwLCBtYWluKTogcy9OVU1fRUxFTS9BUlJBWV9TSVpFLwoKMjAwMC0wOC0yNCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiB0cmVlLmggKGVudW0gdHJlZV9pbmRleCk6IE5ldyBtZW1iZXIgYFRJX01BSU5fSURFTlRJRklFUicuCgkoTUFJTl9OQU1FX1AsIG1haW5faWRlbnRpZmllcl9ub2RlKTogTmV3IG1hY3Jvcy4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogSW5pdCBtYWluX2lkZW50aWZpZXJfbm9kZS4KCSogYy1kZWNsLmMgKHN0YXJ0X2RlY2wsIGdyb2tkZWNsYXJhdG9yLCBzdGFydF9mdW5jdGlvbiwKCXN0b3JlX3Bhcm1fZGVjbHMsIGZpbmlzaF9mdW5jdGlvbik6IFVzZSBNQUlOX05BTUVfUC4KCSogY29uZmlnL2F2ci9hdnIuYyAoZnVuY3Rpb25fcHJvbG9ndWUsIGZ1bmN0aW9uX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2N5Z3dpbi5oIChTVUJUQVJHRVRfUFJPTE9HVUUpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvd2luMzIuaCAoU1VCVEFSR0VUX1BST0xPR1VFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wZHAxMS9wZHAxMS5jIChvdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjQgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogY3BwZmlsZXMuYyAoYWN0dWFsX2RpcmVjdG9yeSk6IERvbid0IHdyaXRlIGJleW9uZCBgZGlyJwoJd2hlbiBpdCBjb250YWlucyAiIi4KCSogcmVhbC5jIChhc2N0b2VnKTogU3RheSB3aXRoaW4gYm91bmRzIG9mIGV0ZW5zW11bXS4KCjIwMDAtMDgtMjQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlcGVuZGVuY2UuYyAoZGVwZW5kZW5jZV9zdHJpbmcsIGRpcmVjdGlvbl9zdHJpbmcsCglkdW1wX29uZV9ub2RlLCBkdW1wX25vZGVfZGVwZW5kZW5jZSk6IEhpZGUgdW51c2VkIGlkZW50aWZpZXJzLgoJKGdldF9sb3dfYm91bmQsIG5vcm1hbGl6ZV9jb2VmZmljaWVudHMpOiBNYXRjaCBkZWZpbml0aW9uIHRvCglzdGF0aWMgcHJvdG90eXBlLgoJKGdldF9vbmVfY29lZmZpY2llbnQpOiBJbml0aWFsaXplIHZhcmlhYmxlcyBgdmFsdWUwX2lzX2lkeCcgYW5kCglgdmFsdWUxX2lzX2lkeCcuCgkoeml2X3Rlc3QsIGdjZF90ZXN0KTogTWFyayBwYXJhbWV0ZXJzIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCSh6aXZfdGVzdCk6IERlbGV0ZSB2YXJpYWJsZSBgaWR4JywgdXNlIHBhcmFtZXRlciBgc3ViJyBpbnN0ZWFkLgoJKGRpcmVjdGlvbl9tZXJnZSk6IEF2b2lkIGF1dG9tYXRpYyBhZ2dyZWdhdGUgaW5pdGlhbGl6YXRpb24uCgkoaGF2ZV9kZXBlbmRlbmNlX3ApOiBVc2UgYHNyYycgbm90IGBkZXN0JyB0byBzZXQgYHNyY19pZHgnLgoJSW5pdGlhbGl6ZSB2YXJpYWJsZXMgYGRlc3RfaWR4JyBhbmQgYHNyY19pZHgnLgoJKGVuZF9kZXBlbmRlbmNlX2FuYWx5c2lzKTogQXZvaWQgQzg5IHN0eWxlIGZ1bmN0aW9uIGRlZmluaXRpb24uCgoyMDAwLTA4LTI0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jICh0aW1lX2NoYXJfdGFibGUpOiBEb24ndCBhbGxvdyB3aWR0aCB3aXRoICVGLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogRG9uJ3QgYWxsb3cgIloiIGxlbmd0aCB3aXRoIHNjYW5mLgoKMjAwMC0wOC0yNCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jIChmaW5pc2hfZGlhZ25vc3RpYyk6IERlZmluZS4KCShvdXRwdXRfZG9fcHJpbnRmKTogVXNlIHdyYXBfdGV4dCBpbnN0ZWFkIG9mIG91dHB1dF9hZGRfc3RyaW5nLgoJKGRlZmF1bHRfcHJpbnRfZXJyb3JfZnVuY3Rpb24pOiBBdm9pZCBlbWJlZGRlZCAnXG4nLgoKCSogZGlhZ25vc3RpYy5oIChmbHVzaF9kaWFnbm9zdGljX2J1ZmZlcik6IERlY2xhcmUuCgoyMDAwLTA4LTIzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGRlcGVuZGVuY2UuYzogUmVwbGFjZSBgW11bXScgd2l0aCBgW11bTUFYX1NVQlNDUklQVFNdJy4KCjIwMDAtMDgtMjMgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKEdDQ19QQVNTRVMpOiBBZGQgc3BlY3MuCgoyMDAwLTA4LTIzICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBmcmFtZS5oIChJQTY0X1VOV19FSEFORExFUiwgSUE2NF9VTldfVUhBTkRMRVIpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2ZyYW1lLWlhNjQuYyAoX19nZXRfcGVyc29uYWxpdHkpOiBSZXR1cm4gemVybyBpZiBuZWl0aGVyCglFSEFORExFUiBub3IgVUhBTkRMRVIgYml0IGlzIHNldC4KCShfX2dldF9leGNlcHRfdGFibGUpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2xpYjFmdW5jcy5hc206IFJlcGxhY2UgdXBwZXIgY2FzZSBjb25kaXRpb24gY29kZXMKCXdpdGggbG93ZXIgY2FzZSB2ZXJzaW9ucy4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKFNUUlVDVF9WQUxVRSk6IERlZmluZS4KCShTVFJVQ1RfVkFMVUVfUkVHTlVNKTogRGVsZXRlLgoKMjAwMC0wOC0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5oIChJTl9JKTogTmV3IGZsYWcgZm9yIGRpcmVjdGl2ZSB0YWJsZS4KCSogY3BwbGliLmMgKERJUkVDVElWRV9UQUJMRSk6IE1hcmsgI2RlZmluZSwgI3VuZGVmLCAjaWRlbnQsIGFuZAoJI3ByYWdtYSB3aXRoIElOX0kuCgkoX2NwcF9jaGVja19kaXJlY3RpdmUpOiBJZiAtZnByZXByb2Nlc3NlZCwgZXhlY3V0ZSBkaXJlY3RpdmVzCgltYXJrZWQgd2l0aCBJTl9JLiAgSXNzdWUgbm8gd2FybmluZ3MgaW4gdGhpcyBjYXNlLgoJKiBjcHBsZXguYyAoX2NwcF9nZXRfdG9rZW4pOiBFeHBhbmQgbm8gbWFjcm9zIGlmIC1mcHJlcHJvY2Vzc2VkLgoKMjAwMC0wOC0yMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAocHJpbnRfY2hhcl90YWJsZSk6IEFsbG93ICdJJyBmbGFnIHdpdGggJWQsICVpIGFuZAoJJXUuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBTdXBwb3J0IHByaW50ZiAnSScgZmxhZzsgd2FybiBhYm91dCBpdCB3aXRoCgktcGVkYW50aWMuCgoyMDAwLTA4LTIzICBSaWNoYXJkIEVhcm5zaGF3ICAocmVhcm5zaGFAYXJtLmNvbSkKCgkqIGFybS5jIChhcm1fZXhwYW5kX3Byb2xvZ3VlKTogRW5zdXJlIHRoYXQgdGhlIHN0YWNrLWFkanVzdG1lbnQKCWJhcnJpZXIgY2FuJ3QgYmUgaWdub3JlZCBieSB0aGUgYWxpYXMgYW5hbHlzaXMgY29kZS4KCjIwMDAtMDgtMTIgIEVsaSBaYXJldHNraWkgIDxlbGl6QGlzLmVsdGEuY28uaWw+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChzeXN2Njhfc3RyaW5nKTogRml4IHRoZSBTZWQgc2NyaXB0IHNvIGl0Cgl3b3JrcyBpbnNpZGUgZml4aW5jbC4KCldlZCBBdWcgMjMgMDQ6NTU6NDggMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcnR4KTogRG9uJ3QgcGFzcyBWT0lEbW9kZSB0bwoJc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24oKSB1bmxlc3MgYm90aCBvcGVyYW5kcyBhcmUgb2YKCVZPSURtb2RlLgoJKiBjc2UuYyAoZm9sZF9ydHgpOiBMaWtld2lzZS4KClR1ZSBBdWcgMjIgMjM6NTM6MjcgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIHJ0bGFuYWwuYyAocnR4X3Vuc3RhYmxlX3ApOiBUaGUgcGljIHJlZ2lzdGVyIGlzIHN0YWJsZQoJKHdpdGhpbiBvbmUgZnVuY3Rpb24pIGFuZCB0aGUgYWN0dWFsIHJ0eCBzaG91bGQgYmUgdXNlZAoJd2hlbiBjaGVja2luZyB0aGUgcmVnaXN0ZXJzLgoJKHJ0eF9hZGRyX2Nhbl90cmFwX3ApOiBQaWMgbWVtb3J5IGFkZHJlc3NlcyBjYW4ndCB0cmFwLgoKCSogYWxpYXMuYyAodHJ1ZV9kZXBlbmRlbmNlLCB3cml0ZV9kZXBlbmRlbmNlX3ApOiBGaXgKCWJ1ZyBpbiBwcmV2aW91cyBwYXRjaC4KCgkqIGkzODYuYyAoaXg4Nl9HT1RfYWxpYXNfc2V0KTogTmV3LgoJKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBVc2UgaXQuCgoJKiBydGxhbmFsLmMgKHJ0eF91bnN0YWJsZV9wKTogQW4gdW5jaGFuZ2luZyBNRU0gaXMKCW9ubHkgc3RhYmxlIGlmIGl0cyBhZGRyZXNzIGlzIHN0YWJsZS4KCShydHhfdmFyaWVzX3ApOiBBbiB1bmNoYW5naW5nIE1FTSBjYW4ndCB2YXJ5IGlmCglpdHMgYWRkcmVzcyBkb2Vzbid0IHZhcnkuCgoyMDAwLTA4LTIyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLXBhcnNlLmluICh1bm9wICspOiBSZXN0cmljdCAtV3RyYWRpdGlvbmFsIHdhcm5pbmdzIHRvIHVzZXIgY29kZS4KCjIwMDAtMDgtMjIgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogdmF4LmggKEFTTV9TUEVDKTogUGFzcyBgLUonIHRvIGFzc2VtYmxlci4KCSogeC12YXgtZ2NjOiBOZXcgZmlsZSBmb3IgYm9vdHN0cmFwcGluZyB3aXRoIGdjYy4KCSogeC12YXg6IFVzZSBYX0NGTEFHUyByYXRoZXIgdGhhbiBYX0NQUEZMQUdTIHRvIHBhc3MgYC1KJy4KCSogY29uZmlndXJlLmluOiBVc2UgeC12YXgtZ2NjIHdpdGggZ2NjLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgpUdWUgQXVnIDIyIDIxOjIxOjA1IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogUmVidWlsZCBsYWJlbCBub3RlcyBhZnRlcgoJcG9zdC1yZWxvYWQgc3BsaXR0aW5nIHBhc3MgaWYgbmV3IGxhYmVscyBoYXZlIGJlZW4gY3JlYXRlZC4KCjIwMDAtMDgtMjIgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuaCAob3V0cHV0X2J1ZmZlcl9zdGF0ZSk6IE5ldyBtYWNyby4KCSogZGlhZ25vc3RpYy5jIChkaWFnbm9zdGljX2Zvcl9kZWNsLCBzb3JyeSwKCWRlZmF1bHRfcHJpbnRfZXJyb3JfZnVuY3Rpb24sIG91dHB1dF9kb192ZXJiYXRpbSwKCXJlcG9ydF9kaWFnbm9zdGljLCByZXBvcnRfcHJvYmxlbWF0aWNfbW9kdWxlKTogVXNlIGl0LgoJKHdyYXBfdGV4dCk6IFR3ZWFrLgoJKG91dHB1dF9mb3JtYXQpOiBVc2Ugd3JhcF90ZXh0IGluc3RlYWQgb2YgbWF5YmVfd3JhcF90ZXh0LgoKMjAwMC0wOC0yMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vbGliMWZ1bmNzLmFzbSAoQVJNX0RJVl9NT0RfQk9EWSk6IE5ldyBtYWNyby4KCUNvbW1vbiBjb2RlIGZvciBBUk0gZGl2aWRlIGFuZCBtb2R1bHVzIGZ1bmN0aW9ucy4KCShUSFVNQl9ESVZfTU9EX0JPRFkpOiBOZXcgbWFjcm8uIFRodW1iIGVxdWl2YWxlbnQgb2YKCUFSTV9ESVZfTU9EX0JPRFkuCgkoRlVOQ19FTkQpOiBOZXcgbWFjcm86IENvbW1vbiBjb2RlIGF0IHRoZSBlbmQgb2YgdGhlIGRpdmlzaW9uIGFuZAoJbW9kdWxvIGZ1bmN0aW9ucy4KCShUSFVNQl9GVU5DVElPTl9TVEFSVCk6IE5ldyBtYWNybzogIENvbW1vbiBjb2RlIGF0IHRoZSBzdGFydCBvZgoJVGh1bWIgZnVuY3Rpb25zLgoJKF9fZGl2c2kzLCBfX3VkaXZzaTMsIF9fbW9kc2kzLCBfX3Vtb2RzaTMpOiBVc2UgbmV3IG1hY3Jvcy4KClR1ZSBBdWcgMjIgMjA6MzQ6NTIgMjAwMCAgS2F6IEtvamltYSA8a2tvamltYUByci5paWo0dS5vci5qcD4KCgkqIGNvbmZpZy9zaC9zaC5tZCAoY21wZXFkaV90IHNwbGl0dGVyKTogRml4IGEgcmV2ZXJzZSB0ZXN0aW5nLgoKCSogY29uZmlnL3NoL3NoLmMgKHByZXBhcmVfc2NjX29wZXJhbmRzKTogQXBwbHkgZm9yY2VfcmVnIHRvCglzaF9jb21wYXJlX29wMSB3aGVuIHRoZSBtb2RlIGlzIERJbW9kZSBhbmQgc2hfY29tcGFyZV9vcDEgaXNuJ3QKCWNvbnN0MF9ydHguCgoyMDAwLTA4LTIyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9saWIxZnVuY3MuYXNtIChfX3Vtb2RzaTMpOiBCZWZvcmUgcGVyZm9ybWluZyBhbnkKCXJlc3RvcmF0aXZlIGFkZGl0aW9ucywgdGVzdCBmb3IgYm90dG9tIGJpdHMgb2YgSVAgYmVpbmcgc2V0LAoJcmF0aGVyIHRoYW4gcmVseWluZyB1cG9uIHRoZSBST1JzIG5vdCBtYXRjaGluZy4KCShfX21vZHNpMyk6IERpdHRvLgoKMjAwMC0wOC0yMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogYWl4LmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBDYWxsIG5hbWVkX3NlY3Rpb24oKSBvcgoJdGV4dF9zZWN0aW9uKCkgYXMgYXBwcm9wcmlhdGUgaW5zdGVhZCBvZiBlbWl0dGluZyB0ZXh0IGNzZWN0Cglwc2V1ZG8tb3AgZGlyZWN0bHkuCgkoVEVYVF9TRUNUSU9OX0FTTV9PUCk6IE9ubHkgcmVxdWlyZSBkZWZhdWx0IDMyLWJpdCBhbGlnbm1lbnQuCgkoVU5JUVVFX1NFQ1RJT04pOiBEZWZpbmUgbWFjcm8uCgkoQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBEZWZpbmUgbWFjcm8uCgkqIHJzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IERpc2FibGUgLWZmdW5jdGlvbi1zZWN0aW9ucwoJb24gQUlYIGlmIGRlYnVnZ2luZyBhbmQgLWZkYXRhLXNlY3Rpb25zIGFsd2F5cy4KCjIwMDAtMDgtMjIgIFN0ZXZlbiBLaW5nICA8c3hraW5nQHVzd2VzdC5uZXQ+CgoJKiBjb25maWcvZmxvYXQtaTM4Ni5oIChMREJMX0VQU0lMT04pOiBSZW1vdmUgX19jb252ZXJ0X2xvbmdfZG91YmxlCgltYWNoaW5lcnkuCgkoTERCTF9NQVgpOiBTYW1lIGhlcmUuCgoyMDAwLTA4LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jICh0aWR5X2ZhbGx0aHJ1X2VkZ2UpOiBVcGRhdGUgYi0+ZW5kIHByb3Blcmx5LgoKMjAwMC0wOC0yMiAgU3RhbiBDb3ggIDxzY294QHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBkZXBlbmRlbmNlLm8uCgkqIGRlcGVuZGVuY2UuYzogTmV3IGZpbGUuCgoyMDAwLTA4LTIyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4sIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLmNhPgoKCSogY2FsbHMuYyAoY2hlY2tfc2liY2FsbF9hcmd1bWVudF9vdmVybGFwXzEpOiBBZGp1c3QgZm9yCglBUkdTX0dST1dfRE9XTldBUkQuCgkoY2hlY2tfc2liY2FsbF9hcmd1bWVudF9vdmVybGFwKTogTGlrZXdpc2UuCgoyMDAwLTA4LTIyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGludm9rZS50ZXhpIChTSCBPcHRpb25zKTogRG9jdW1lbnQgLW00LW5vZnB1LAoJLW00LXNpbmdsZS1vbmx5LCAtbTQtc2luZ2xlLCAtbTQsIC1tYmlndGFibGUsIC1tZm1vdmQsCgktbWhpdGFjaGksIC1tbm9tYWNzYXZlLCAtbWlzaXplLCAtbXBhZHN0cnVjdCwgLW1zcGFjZS4KCjIwMDAtMDgtMjIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGNoZWNrX2Zvcm1hdF9pbmZvKTogR2l2ZSB0aGUgJ3NvbWUgbG9jYWxlcycgd2FybmluZwoJZm9yIHN0cmZ0aW1lICVFeSByYXRoZXIgdGhhbiB0aGUgdW5jb25kaXRpb25hbCAnb25seSBsYXN0IDIgZGlnaXRzCglvZiB5ZWFyJyBvbmUuCgoyMDAwLTA4LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxpYXMuYyAoaW5pdF9hbGlhc19hbmFseXNpcyk6IERvIG5vdCByZWdpc3RlcgoJc3RydWN0X3ZhbHVlX2luY29taW5nX3J0eCBvciBzdGF0aWNfY2hhaW5fcnR4IGFzIHBvaW50aW5nCgl0byBzdGFjayBtZW1vcnkuCgpUdWUgQXVnIDIyIDAxOjQ0OjQzIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHByb3RvaXplLmMgKG11bmdlX2NvbXBpbGVfcGFyYW1zKTogRml4IHR5cG8gYW5kIGZvcm1hdHRpbmcgYnVnbGV0cy4KCjIwMDAtMDgtMjIgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuaCAocmVwb3J0X3Byb2JsZW1hdGljX21vZHVsZSk6IERlY2xhcmUuCgkqIGRpYWdub3N0aWMuYyAocmVwb3J0X3Byb2JsZW1hdGljX21vZHVsZSk6IE5ldyBmdW5jdGlvbi4KCShyZXBvcnRfZXJyb3JfZnVuY3Rpb24pOiBUd2Vhay4KClR1ZSBBdWcgMjIgMDI6MzE6MjYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHN0bXQuYyAoZXhwYW5kX2dvdG9faW50ZXJuYWwsIGZpeHVwX2dvdG9zKTogT25seSBjaGVjawoJVFlQRV9SRVRVUk5TX1NUQUNLX0RFUFJFU1NFRCBmb3IgRlVOQ1RJT05fVFlQRS4KCjIwMDAtMDgtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogTWFyayBmcmFtZSBwb2ludGVyIGxpdmUKCWV2ZXJ5d2hlcmUgYmVmb3JlIHJlbG9hZC4KCjIwMDAtMDgtMjEgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIHJlYWwuYyAoZXJlYWxfZnJvbV9pbnQsIGVyZWFsX2Zyb21fdWludCwgc2lnbmlmaWNhbmRfc2l6ZSk6IEhhbmRsZQoJSU5URUxfRVhURU5ERURfSUVFRV9GT1JNQVQuCgkodG9lNjQpOiBEZWxldGUgSU5URUxfRVhURU5ERURfSUVFRV9GT1JNQVQgc3VwcG9ydC4gIFVuY29uZGl0aW9uYWxseQoJY2xlYXIgbGFzdCB0d28gYnl0ZXMgb2Ygb3V0cHV0IEZQIHZhbHVlLgoKMjAwMC0wOC0yMSAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0BjeWdudXMuY28udWs+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFJFRE9fU0VDVElPTl9JTkZPX1ApOiBDaGFuZ2UgZGVjbCB0byBERUNMLgoKMjAwMC0wOC0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB1bnJvbGwuYyAobG9vcF9maW5kX2VxdWl2X3ZhbHVlKTogSWYgcmV0IGlzIG1vZGlmaWVkIGJldHdlZW4KCWluc24gYW5kIGxvb3Bfc3RhcnQsIHJldCBtaWdodCBub3QgYmUgZXF1aXZhbGVudCB0byByZWcuCgoyMDAwLTA4LTIxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChpbml0X2RvbGxhcl9mb3JtYXRfY2hlY2tpbmcsCgltYXliZV9yZWFkX2RvbGxhcl9udW1iZXIsIGZpbmlzaF9kb2xsYXJfZm9ybWF0X2NoZWNraW5nKTogTmV3CglmdW5jdGlvbnMuCgkoZG9sbGFyX2FyZ3VtZW50c191c2VkLCBkb2xsYXJfYXJndW1lbnRzX2NvdW50LAoJZG9sbGFyX2ZpcnN0X2FyZ19udW0sIGRvbGxhcl9tYXhfYXJnX3VzZWQsIGRvbGxhcl9mb3JtYXRfd2FybmVkKToKCU5ldyB2YXJpYWJsZXMuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBTdXBwb3J0ICQgZm9ybWF0cyBmb3Igc2NhbmYgYW5kIHByaW50ZiB3aWR0aAoJYW5kIHByZWNpc2lvbi4gIEFsd2F5cyBpbmNyZW1lbnQgZm9ybWF0X2NoYXJzIHRvIGFkdmFuY2UgcGFzdCB0aGUKCScqJyBvZiBwcmVjaXNpb24sIG5vdCBqdXN0IHdoZW4gdGhlIGZvcm1hdCBwYXJhbWV0ZXJzIGFyZQoJYXZhaWxhYmxlIHRvIGNoZWNrLgoKMjAwMC0wOC0yMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWlwcy5jIChibG9ja19tb3ZlX2xvb3AsIGV4cGFuZF9ibG9ja19tb3ZlLAoJZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MsIHNhdmVfcmVzdG9yZV9pbnNucywgZnVuY3Rpb25fcHJvbG9ndWUsCgltaXBzX2V4cGFuZF9wcm9sb2d1ZSwgUkFfTUFTSyk6IEF2b2lkIHVzaW5nIHRoZSBgVScgaW50ZWdlcgoJY29uc3RhbnQgc3VmZml4LgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlLCBmdW5jdGlvbl9hcmcpOiBNYXRjaCBhcmd1bWVudCB0byBmb3JtYXQKCXNwZWNpZmllciBgJXAnLgoKMjAwMC0wOC0yMSAgTml4ICA8bml4QGVzcGVyaS5kZW1vbi5jby51az4KCgkqIGdjYy5jIChkb19zcGVjXzEpOiBJbXBsZW1lbnQgJWogc3BlYyBmbGFnLgoJUmVtb3ZlIGRlYWQgY29tbWVudC4KCgkqIGdjYy50ZXhpIChUaGUgQ29uZmlndXJhdGlvbiBGaWxlKTogRG9jdW1lbnQgSE9TVF9CSVRfQlVDS0VULgoJKiBzeXN0ZW0uaCAoSE9TVF9CSVRfQlVDS0VUKTogRGVmYXVsdCB0byAiL2Rldi9udWxsIi4KCSogY29uZmlnL2kzODYveG0tZG9zLmggKEhPU1RfQklUX0JVQ0tFVCk6IERlZmluZSBhcyAiTlVMIi4KCSogY29uZmlnL2kzODYveG0tb3MyLmgsIGNvbmZpZy93aW5udC93aW5udC5oOiBMaWtld2lzZS4KCgkqIHByb3RvaXplLmMgKG11bmdlX2NvbXBpbGVfcGFyYW1zKTogVXNlIEhPU1RfQklUX0JVQ0tFVCAoaWYKCXdyaXRhYmxlKSBpbnN0ZWFkIG9mIGhhcmRjb2RlZCB2YWx1ZS4KCgkqIHRvcGxldi5jIChjb21waWxlX2ZpbGUpOiBPdXRwdXQgdG8gYSBmaWxlIGV2ZW4gaWYgLWZzeW50YXgtb25seS4KCgkqIGdjYy5jLCBjb25maWcvaTM4Ni94bS1kb3MuaCwgY29uZmlnL2kzODYveG0tb3MyLmg6IEtpbGwKCU1LVEVNUF9FQUNIX0ZJTEUuCgoJKiBnY2MuYyAoY2MxX29wdGlvbnMpOiBEbyBub3QgcHJvY2VzcyAtbyBvciBydW4gdGhlIGFzc2VtYmxlciBpZgoJLWZzeW50YXgtb25seS4KCSogb2JqYy9sYW5nLXNwZWMuaDogTGlrZXdpc2UuCgoyMDAwLTA4LTIxICBFbGkgWmFyZXRza2lpICA8ZWxpekBpcy5lbHRhLmNvLmlsPgoKCSogZml4aW5jL2ZpeGluY2wuYyAoZml4X3dpdGhfc3lzdGVtKTogUGlwZSB0aGUgb3V0cHV0IG9mCgkiZXh0ZXJuYWwiIGZpeGVzIHRocm91Z2ggYGNhdCcsIHRvIGF2b2lkIHRydW5jYXRpbmcgdGhlIGlucHV0CglmaWxlIGJ5IHJlZGlyZWN0aW9uLgoKMjAwMC0wOC0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChsZWFfZ2VuZXJhbF8xKTogQ29weSBpbnNuIGNvbmRpdGlvbiB0byBzcGxpdAoJY29uZGl0aW9uLgoJKGxlYV9nZW5lcmFsXzIsIGxlYV9nZW5lcmFsXzMpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMsIGRlZmluZV9sYWJlbCk6IFJlc3RyaWN0IC1XdHJhZGl0aW9uYWwKCXdhcm5pbmdzIHRvIHVzZXIgY29kZS4KCgkqIGMtbGV4LmMgKHJlYWRlc2NhcGUsIHl5bGV4KTogTGlrZXdpc2UuCgoJKiBjLXR5cGVjay5jIChzdG9yZV9pbml0X3ZhbHVlLCBwcm9jZXNzX2luaXRfZWxlbWVudCk6IExpa2V3aXNlCgkoY19leHBhbmRfc3RhcnRfY2FzZSk6IEZvcm1hdC4KCjIwMDAtMDgtMTggIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9AZHMyLnBnLmdkYS5wbD4KCgkqIG1pcHMvbGludXguaCAoTElOS19TUEVDKTogVXNlICUoZW5kaWFuX3NwZWMpLgoKCSogbWlwcy9taXBzLmg6IENoYW5nZSBMSU5LRVJfRU5ESUFOX1NQRUMgdG8gRU5ESUFOX1NQRUMKCWFuZCBsaW5rZXJfZW5kaWFuX3NwZWMgdG8gZW5kaWFuX3NwZWMuCgkoRU5ESUFOX1NQRUMpOiBBZGQgJXtFQn0gYW5kICV7RUx9LgoJKExJTktfU1BFQyk6IFJlbW92ZSAle0VCfSBhbmQgJXtFTH0uCgkoQVNNX1NQRUMpOiBMaWtld2lzZS4gIFVzZSAlKGVuZGlhbl9zcGVjKS4KCjIwMDAtMDgtMjEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtdHJlZS5oIChmbGFnX2hvc3RlZCk6IE1vdmUgZGVjbGFyYXRpb24gZnJvbSBoZXJlLi4uCgkqIGMtY29tbW9uLmggKGZsYWdfaG9zdGVkKTogLi4uIHRvIGhlcmUuCgkoZmxhZ19ub25pc29fZGVmYXVsdF9mb3JtYXRfYXR0cmlidXRlcyk6IE5ldyBkZWNsYXJhdGlvbi4KCSogYy1kZWNsLmMgKGZsYWdfbm9uaXNvX2RlZmF1bHRfZm9ybWF0X2F0dHJpYnV0ZXMpOiBOZXcgdmFyaWFibGUuCgkoY19kZWNvZGVfb3B0aW9uKTogU2V0IGl0IGFwcHJvcHJpYXRlbHkgZm9yIG9wdGlvbnMgY2hvb3NpbmcKCWxhbmd1YWdlIHN0YW5kYXJkIHZhcmlhbnQuCgkqIGMtY29tbW9uLmMgKGluaXRfZnVuY3Rpb25fZm9ybWF0X2luZm8pOiBPbmx5IHByb3ZpZGUgZGVmYXVsdAoJZm9ybWF0IGF0dHJpYnV0ZXMgaWYgZmxhZ19ob3N0ZWQuICBPbmx5IHByb3ZpZGUgdGhlIGdldHRleHQKCWZvcm1hdHMgaWYgZmxhZ19ub25pc29fZGVmYXVsdF9mb3JtYXRfYXR0cmlidXRlcy4gIFVwZGF0ZQoJY29tbWVudHMuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBEaXNhYmxlIHRyZWF0bWVudCBvZiAlYSBhcyBhIHNjYW5mIGZsYWcgaW4KCUM5OSBtb2RlLgoKMjAwMC0wOC0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoc2Nhbl9jaGFyX3RhYmxlKTogQWRkICd3JyB0byBmbGFncyBmb3IgYWxsIGZvcm1hdHMKCWV4Y2VwdCAnbicuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBTZXQgJ3dpZGUnIGZvciBzY2FuZiBmb3JtYXQgd2lkdGhzLiAgV2FybiBmb3IKCWEgemVybyBzY2FuZiB3aWR0aC4gIE1ha2UgdGhlIGNoZWNrIGZvciB3cml0aW5nIGludG8gYSBjb25zdGFudAoJb2JqZWN0IGF0IHRoZSBmaXJzdCBsZXZlbCBvZiBpbmRpcmVjdGlvbjsgYXQgbGF0ZXIgbGV2ZWxzLCB3YXJuIGlmCglhbnkgdHlwZSBxdWFsaWZpZXJzIGFyZSBlbmNvdW50ZXJlZC4KCk1vbiBBdWcgMjEgMDc6NDE6MTIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcmVsb2FkLmMgKHJlbG9hZF9pbm5lcl9yZWdfb2Zfc3VicmVnKTogTmV3IGZ1bmN0aW9uIGJyb2tlbiBvdXQgb2YKCXB1c2hfcmVsb2FkLgoJKHB1c2hfcmVsb2FkKTogVXNlIHJlbG9hZF9pbm5lcl9yZWdfb2Zfc3VicmVnLgoJKGNvbWJpbmVfcmVsb2Fkcyk6IERvIG5vdCBjb21iaW5lIHJlbG9hZHMgaWYgdGhlIGlucHV0IHJlbG9hZAoJaXMgYSBTVUJSRUcgaW4gd2hpY2ggdGhlIGlubmVyIHBhcnQgd2lsbCBuZWVkIHJlbG9hZGluZy4KCgkqIGdsb2JhbC5jIChnbG9iYWxfYWxsb2MpOiBBdm9pZCBwYXNzaW5nIGR1bXBmaWxlIGFyZ3VtZW50IHRvCglyZWxvYWQgcm91dGluZXMuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogTGlrZXdpc2UuCgkqIHJlbG9hZC5oIChyZWxvYWQpOiBSZW1vdmUgZHVtcGZpbGUgYXJndW1lbnQuICBDYWxsZXJzIGNoYW5nZWQuCgkoZGVidWdfcmVsb2FkLCBkZWJ1Z19yZWxvYWRfdG9fc3RyZWFtKTogTW92ZSBwcm90b3R5cGVzIGhlcmUuCgkqIHJ0bC5oICAocmVsb2FkKTogUmVtb3ZlIGR1bXBmaWxlIGFyZ3VtZW50LgoJKiByZWxvYWQuYyAoZGVidWdfcmVsb2FkKTogUmVtb3ZlIHByb3RvdHlwZS4KCShkZWJ1Z19yZWxvYWRfdG9fc3RyZWFtKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYzogQXZvaWQgcGFzc2luZyBkdW1wZmlsZSBhcm91bmQsIHJlbHkgb24gcnRsX2R1bXBfZmlsZQoJaW5zdGVhZC4KCjIwMDAtMDgtMjEgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAbWVybGluLmNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmMgKGNvbnRleHRfYXNfcHJlZml4KTogRXhwb3J0LgoJKG5lZWRfZXJyb3JfbmV3bGluZSk6IFJlbW92ZS4KCShsYW5nX2RpYWdub3N0aWNfc3RhcnRlciwgbGFuZ19kaWFnbm9zdGljX2ZpbmFsaXplcik6IE5ldyBvYmplY3RzLgoJKGVycm9yX21vZHVsZV9jaGFuZ2VkLCByZWNvcmRfbGFzdF9lcnJvcl9tb2R1bGUsCgllcnJvcl9mdW5jdGlvbl9jaGFuZ2VkLCByZWNvcmRfbGFzdF9lcnJvcl9mdW5jdGlvbik6IE5ldyBmdW5jdGlvbnMuCgkoaW5pdGlhbGl6ZV9kaWFnbm9zdGljcyk6IERlZmF1bHQgaW5pdGlhbGl6ZQoJbGFuZ19kaWFnbm9zdGljX3N0YXJ0ZXIsIGxhbmdfZGlhZ25vc3RpY19maW5hbGl6ZXIuCgkoaW5pdF9vdXRwdXRfYnVmZmVyKTogVHdlYWsuCgkoZmlsZV9uYW1lX2FzX3ByZWZpeCk6IE5ldyBmdW5jdGlvbi4KCShhbm5vdW5jZV9mdW5jdGlvbiwgZGVmYXVsdF9wcmludF9lcnJvcl9mdW5jdGlvbiwKCXJlcG9ydF9lcnJvcl9mdW5jdGlvbiwgc2V0X2RpYWdub3N0aWNfY29udGV4dCk6IFR3ZWFrLgoKMjAwMC0wOC0yMSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBmbG93LmMgKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBIYW5kbGUgU1VCUkVHIGluIGEganVtcAoJY29uZGl0aW9uIGV4cHJlc3Npb24uCgoyMDAwLTA4LTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChtZXJnZV9ibG9ja3Nfbm9tb3ZlKTogRG9uJ3Qgc2VlayBiYWNrIHBhc3QgdGhlIGJiIG5vdGUuCgoyMDAwLTA4LTIwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBpbml0LmMgKGNwcF9pbml0KTogU2V0IGdsb2JhbCBmbGFnIHdoZW4gY2FsbGVkLgoJKGNwcF9yZWFkZXJfaW5pdCk6IEJvbWIgb3V0IGlmIGNwcF9pbml0IGhhc24ndCBiZWVuIGNhbGxlZC4KClN1biBBdWcgMjAgMDE6NDE6MzUgMjAwMCAgRGVubmlzIENoZXJub2l2YW5vdiAgPGNkaUBzcGFyYy5zcGIuc3U+CgoJKiBjcHBsZXguYyAoY3BwX3NjYW5fYnVmZmVyKTogTW92ZSBgb3V0cHV0X2xpbmVfY29tbWFuZCcganVzdAoJYmVmb3JlIGBwcm9jZXNzX2RpcmVjdGl2ZScgc28gdGhhdCBuZXdsaW5lcyB3b24ndCBiZSBtaXNzZWQKCWZvciBkaXJlY3RpdmVzLgoJKGNwcF9wcmludGYpOiBJbmNyZW1lbnQgYHByaW50LT5saW5lbm8nIHdoZW4gbmV3bGluZSBpcyBlbWl0dGVkLgoKCSogY3BwbWFpbi5jIChjYl9pZGVudCk6IExpa2V3aXNlLgoJKGNiX2RlZmluZSk6IExpa2V3aXNlLgoJKGNiX3VuZGVmKTogTGlrZXdpc2UuCgkoY2JfaW5jbHVkZSk6IExpa2V3aXNlLgoJKGNiX2RlZl9wcmFnbWEpOiBMaWtld2lzZS4KCShkdW1wX21hY3Jvc19oZWxwZXIpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGVtaXRfaW5zbl9ncm91cF9iYXJyaWVycyk6IFN0b3AgaWYgYXIubGMKCWFzc2lnbmVkIGJlZm9yZSBhIGxvb3AuCgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChhc2hsc2kzKTogWmVybyBleHRlbmQgdGhlIHNoaWZ0IGNvdW50LgoJKGFzaHJzaTMsIGxzaHJzaTMpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjAgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtbGFuZy5jOiAjaW5jbHVkZSBkaWFnbm9zdGljLmgKCShjX3RyZWVfcHJpbnRlcik6IE5ldyBmdW5jdGlvbi4KCShsYW5nX2luaXQpOiBJbml0aWFsaXplIGxhbmdfcHJpbnRlci4KCgkqIE1ha2VmaWxlLmluIChjLWxhbmcubyk6IERlcGVuZHMgb24gZGlhZ25vc3RpYy5oCgoyMDAwLTA4LTIwICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWVycm9ycy5jIChwZWR3YXJuX2M5OSk6IEFkanVzdCBjYWxsIHRvIHJlcG9ydF9kaWFnbm9zdGljLgoKCSogZGlhZ25vc3RpYy5jIChkZWZhdWx0X2RpYWdub3N0aWNfc3RhcnRlciwKCWRlZmF1bHRfZGlhZ25vc3RpY19maW5hbGl6ZXIpOiBOZXcgZnVuY3Rpb25zLgoJKGRpYWdub3N0aWNfZm9yX2FzbSwgZGlhZ25vc3RpY19mb3JfZGVjbCk6IFR3ZWFrLgoJKHBlZHdhcm4sIHBlZHdhcm5fd2l0aF9maWxlX2FuZF9saW5lLCBlcnJvciwKCWVycm9yX3dpdGhfZmlsZV9hbmRfbGluZSwgZmF0YWwsIHdhcm5pbmcsCgl3YXJuaW5nX3dpdGhfZmlsZV9hbmRfbGluZSk6IEFkanVzdCBjYWxsIHRvIHJlcG9ydF9kaWFnbm9zdGljLgoJKHJlcG9ydF9kaWFnbm9zdGljKTogUmV3b3JrLgoJKHNldF9kaWFnbm9zdGljX2NvbnRleHQpOiBOZXcgZnVuY3Rpb24uCgoJKiBkaWFnbm9zdGljLmggKHN0cnVjdCBkaWFnbm9zdGljX2NvbnRleHQpOiBOZXcgZGF0YSBzdHJ1Y3R1cmUuCgkoZGlhZ25vc3RpY19tZXNzYWdlLCBkaWFnbm9zdGljX2FyZ3VtZW50X2xpc3QsCglkaWFnbm9zdGljX2ZpbGVfbG9jYXRpb24sIGRpYWdub3N0aWNfbGluZV9sb2NhdGlvbiwKCWRpYWdub3N0aWNfaXNfd2FybmluZywgZGlhZ25vc3RpY19zdGFydGVyLCBkaWFnbm9zdGljX2ZpbmFsaXplciwKCWRpYWdub3N0aWNfZmluYWxpemVyLCBkaWFnbm9zdGljX2F1eGlsaWFyeV9kYXRhKTogTmV3IG1hY3Jvcy4KCShzZXRfZGlhZ25vc3RpY19jb250ZXh0KTogRGVjbGFyZS4KCShyZXBvcnRfZGlhZ25vc3RpYyk6IENoYW5nZSBwcm90b3R5cGUuCgpTdW4gMjAtQXVnLTIwMDAgMDk6MjU6NDUgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGZpeC1oZWFkZXIuYyAobWFpbik6IEluaXRpYWxpemUgY3BwbGliLgoKMjAwMC0wOC0xOSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBpZmN2dC5jIChmaW5kX2lmX2Jsb2NrKTogRG8gbm90IGFzc3VtZSB0aGF0IGEgVEhFTiBibG9jayBoYXMgYW55CglpbnN0cnVjdGlvbnMgaW4gaXQgYmVmb3JlIGNoZWNraW5nIGZvciBpbmRpcmVjdCBqdW1wcy4KCgkqIGlmY3Z0LmMgKGZpbmRfaWZfYmxvY2spOiBEbyBub3QgY29uc2lkZXIgYSBUSEVOIGJsb2NrIHRoYXQgZW5kcwoJaW4gYW4gaW5kaXJlY3QganVtcCBhcyBhIHBvdGVudGlhbCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uLgoKCSogZDMwdi5oIChkMzB2X2luaXRfZXhwYW5kZXJzKTogRG9uJ3QgZGVjbGFyZSBoZXJlLgoJKiBkMzB2LXByb3Rvcy5oIChkMzB2X2luaXRfZXhwYW5kZXJzKTogRGVjbGFyZSBoZXJlIHdpdGggYSB2YWxpZAoJcHJvdG90eXBlLgoKU2F0IDE5LUF1Zy0yMDAwIDIxOjExOjQ1IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHAudGV4aTogQWRkIEBzZWN0aW9uIGZvciBhc3NlcnRpb25zLgoKU2F0IEF1ZyAxOSAxMjozNzowOCBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogbG9vcC5jIChzY2FuX2xvb3ApOiBVc2UgQ09OU1RfQ0FMTF9QIGluc3RlYWQgb2YKCWNoZWNraW5nIGZvciBSRUdfTElCQ0FMTCAvIFJFR19SRVRWQUwuCgpTYXQgQXVnIDE5IDA5OjE4OjQ3IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHJlbG9hZDEuYyAocmVsb2FkX2FzX25lZWRlZCk6IEFjY2VwdCBkdW1wZmlsZSBhcmd1bWVudCwKCXBhc3MgaXQgdG8gZW1pdF9yZWxvYWRfaW5zbnMuCgkoZW1pdF9yZWxvYWRfaW5zbnMpOiBBZGQgbmV3IGR1bXBmaWxlIGFyZ3VtZW50LiAgSWYgbm9uLW51bGwKCXRoZW4gZHVtcCB0aGUgcmVsb2FkcyBmb3IgZWFjaCBpbnNuIGludG8gdGhlIGR1bXBmaWxlLgoJKHJlbG9hZCk6IFBhc3MgZHVtcGZpbGUgdG8gcmVsb2FkX2FzX25lZWRlZC4KCgkqIGludm9rZS50ZXhpOiBDbGVhbiB1cCBsaW51eC1nbnUgdnMgbGludXggY29tbWVudHMuCgoyMDAwLTA4LTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChyZWdfb3JfNWJpdF9vcGVyYW5kKTogTmV3LgoJKGlhNjRfZGVwel9maWVsZF9tYXNrKTogTmV3LgoJKiBjb25maWcvaWE2NC9pYTY0LmggKENPTlNUUkFJTlRfT0tfRk9SX1IpOiBOZXcuCgkoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kOiBVcGRhdGUgY29tbWVudGFyeS4KCShkZXB6X2ludGVybmFsKTogTmV3LgoJKGFzaGxzaTMpOiBJbXBsZW1lbnQgZGlyZWN0bHkuCgkoYXNocnNpMywgbHNocnNpMyk6IFNpbXBsaWZ5OyByZWx5IG9uIGV4dHYgYW5kIGV4dHp2IGZvciBjb25zdGFudHMuCgkoYXNobGRpMyk6IFVzZSBzaGxhZGQuCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmg6IFVwZGF0ZS4KCjIwMDAtMDgtMTggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHRvcGxldi5jIChpbmRlcGVuZGVudF9kZWNvZGVfb3B0aW9uKTogQWx3YXlzIHByb2Nlc3MgLWcuCglSZW1vdmUgdGhpcmQgYXJndW1lbnQsIG5vdyB1bnVzZWQuICBBZGp1c3QgY2FsbGVyIHRvIG1hdGNoLgoKMjAwMC0wOC0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAobWFrZV9jb21wb3VuZF9vcGVyYXRpb24pOiBCcmVhayBhZnRlciBjcmVhdGluZwoJdGhlIGV4dHJhY3Rpb24uCgoyMDAwLTA4LTE4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAoY3BwX3JlZ2lzdGVyX3ByYWdtYV9zcGFjZSk6IEp1c3QgcmV0dXJuIGlmIHRoZQoJbmFtZXNwYWNlIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC4KCjIwMDAtMDgtMTggIFJheSBFc3NpY2sgPGVzc2lja0BkZG5hLmxhYnMubW90LmNvbT4gJiBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21jb3JlL21jb3JlLm1kIChyb3Rsc2kzKTogQWxsb3cgYWxsb3cgcm90YXRpb25zIGJ5IGEKCWNvbnN0YW50IGFtb3VudC4gIERvIG5vdCBnZW5lcmF0ZSBST1RMIGluc3RydWN0aW9uLgoKRnJpIEF1ZyAxOCAxNjoyMjoyMCAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9lbGYuaDogRG8gbm90IGluY2x1ZGUgc2gvc2guaC4KCSogY29uZmlnL3NoL3J0ZW1zLmg6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvcnRlbXNlbGYuaDogRG8gbm90IGluY2x1ZGUgc2gvZWxmLmguCgkqIGNvbmZpZ3VyZS5pbjogR2V0IHRoZW0gaW5jbHVkZWQgd2l0aCBgdG1fZmlsZSdzLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoJKiBjb25maWcvc2gvc2gubWQgKGZwdV9zd2l0Y2gwLCBmcHVfc3dpdGNoMSk6IFNpbXBsaWZ5LgoJKiBjb25maWcvc2gvc2guYyAoZnBzY3Jfc2V0X2Zyb21fbWVtKTogVXNlIHRoZW0uCgpGcmkgQXVnIDE4IDE0OjIzOjE4IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG9yLWxheW91dC5jIChjb21wdXRlX3JlY29yZF90eXBlKTogRG9uJ3QgdXNlIG1vZGUgb2Ygc2luZ2xlCglmaWVsZCBhcyBtb2RlIG9mIHJlY29yZCBpZiBub3QgaW50ZWdlciBtb2RlIG9mIHNhbWUgdHlwZS4KCgkqIHJlZ21vdmUuYyAocGVyaGFwc19lbmRzX2JiX3ApOiBOZXcgZnVuY3Rpb24uCgkob3B0aW1pemVfcmVnX2NvcHlfMSwgb3B0aW1pemVfcmVnX2NvcHlfMik6IENhbGwgaXQuCgkob3B0aW1pemVfcmVnX2NvcHlfMywgZml4dXBfbWF0Y2hfMiwgcmVnbW92ZV9vcHRpbWl6ZSk6IExpa2V3aXNlLgoJKGZpeHVwX21hdGNoXzEpOiBMaWtld2lzZS4KCShmaXh1cF9tYXRjaF8xLCBjb21iaW5lX3N0YWNrX2FkanVzdG1lbnRzX2Zvcl9ibG9jayk6IEFkZCBjYXN0cyB0bwoJYXZvaWQgc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzLgoKCSogZnVuY3Rpb24uYyAoZml4dXBfdmFyX3JlZnNfMSwgY2FzZSBNRU0pOiBVcGRhdGUgQ09ERSBhZnRlcgoJdXBkYXRpbmcgWC4KCkZyaSAxOC1BdWctMjAwMCAxODozMzo0NSBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaGFzaC5oOiBVc2UgSEFWRV9ERVNJR05BVEVEX0lOSVRJQUxJWkVSUy4KCShfY3BwX3RyaWdyYXBoX21hcCk6IERlY2xhcmF0aW9uIG1vdmVkIGZyb20gY3BwbGV4LmMKCgkqIGNwcGluaXQuYzogRGVmaW5lIF9jcHBfdHJpZ3JhcGhfbWFwLiAgVXNlIFVDSEFSX01BWCArIDEKCWluc3RlYWQJb2YgMjU2LiAgVXNlIGNvbnNpc3RlbnQgdGVzdCBmb3IgZGVzaWduYXRlZCBpbml0aWFsaXplcnMuCgkoY3BwX2luaXQpOiBJbml0aWFsaXplIHRyaWdyYXBoX21hcC4KCShpbml0aWFsaXplX3N0YW5kYXJkX2luY2x1ZGVzLCBwYXJzZV9vcHRpb24pOiAgVXNlIG1lbWNtcAoJaW5zdGVhZCBvZiBzdHJuY21wLgoKCSogY3BwbGV4LmMgKGluaXRfdHJpZ3JhcGhfbWFwKTogUmVtb3ZlLgoJKHRyaWdyYXBoX29rLCB0cmlncmFwaF9yZXBsYWNlLCBsZXhfbGluZSk6IFJlZmVyIHRvCglfY3BwX3RyaWdyYXBoX21hcC4KCgkqIGNwcGxpYi5jIChzdHJfbWF0Y2gsIFdBUk5JTkcsIEVSUk9SLCBJQ0UpOiBEZWxldGUuCgkoZG9fdW5hc3NlcnQpOiBSZW1vdmUgdW51c2VkICJuZXh0IiBsb2NhbC4KCgkqIHN5c3RlbS5oIChIQVZFX0RFU0lHTkFURURfSU5JVElBTElaRVJTKTogTmV3IHByb3RvdHlwZS4KCjIwMDAtMDgtMTggIEVtbWFudWVsIE1hcnR5ICA8ZW1hcnR5QHN1bnRlY2guZnI+CgoJKiBhcm0vbGliMWZ1bmNzLmFzbSAoX3Vtb2RzaTMgVEhVTUIgVkFSSUFOVCk6IFJlc3RvcmUgZGVsZXRlZCByZXR1cm4KCWluc24uCgoyMDAwLTA4LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChzcGlsbF9yZXN0b3JlX21lbSk6IEhhbmRsZSBlbWl0dGluZwoJdGhlIGZpcnN0IGluc24gaW4gYSBzZXF1ZW5jZS4KClRodSBBdWcgMTcgMjI6NDA6MDUgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGFsaWFzLmMgKHRydWVfZGVwZW5kZW5jZSwgd3JpdGVfZGVwZW5kZW5jZV9wKTogQSByZWFkCglpbnZvbHZpbmcgYSBsYWJlbF9yZWYgb3IgdGhlIGNvbnN0YW50IHBvb2wgZG9lc24ndCBjcmVhdGUKCWEgZGVwZW5kZW5jeS4KCgkqIHJ0bC5oICh1bmNoYW5naW5nKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoKMjAwMC0wOC0xNyAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AbXluZC5jb20+CgoJKiBjc2UuYyAoaW5zZXJ0X3JlZ3MpOiBSZW1vdmUgdW51c2VkIGByZWdubycuCgoyMDAwLTA4LTE3ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIChjcHBpbml0LmMpIG1lcmdlX2luY2x1ZGVfY2hhaW5zOiBVc2UgcmVtb3ZlX2R1cF9kaXIsCglyZW1vdmVfZHVwX2RpcnMuICBJZiBxdGFpbCA9PSBicmFjaywgcmVtb3ZlIGJyYWNrIG5vdAoJcXRhaWwuCgkocmVtb3ZlX2R1cF9kaXIsIHJlbW92ZV9kdXBfZGlycyk6IE5ldyBmdW5jdGlvbnMuCgoyMDAwLTA4LTE3ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGluaXQuYyAoY3BwX2NsZWFudXApOiBGcmVlIGluY2x1ZGUgZGlyIGNoYWlucy4KCSogY3BwbGliLmMgKGRvX3VuZGVmKTogTGV0IF9jcHBfZnJlZV9kZWZpbml0aW9uIG1ha2UgdGhlIG5vZGUgdm9pZC4KCShkb191bmFzc2VydCk6IEZyZWUgdGhlIGFzc2VydCB3aXRoIF9jcHBfZnJlZV9kZWZpbml0aW9uLgoJKiBjcHBtYWNyby5jIChfY3BwX2ZyZWVfZGVmaW5pdGlvbik6IEZyZWUgbWVtb3J5IGFsbG9jYXRlZCBmb3IKCWFzc2VydGlvbnMuICBNYWtlIHRoZSBub2RlIGEgVF9WT0lEIG5vZGUuCgoyMDAwLTA4LTE3ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGluaXQuYyAocGF0aF9pbmNsdWRlLCBhcHBlbmRfaW5jbHVkZV9jaGFpbik6CglSZW1vdmUgMm5kIHBhcmFtZXRlciAoc3RydWN0IGNwcF9wZW5kaW5nICopLgoJKHBhdGhfaW5jbHVkZSwgaW5pdGlhbGl6ZV9zdGFuZGFyZF9pbmNsdWRlcywgY3BwX2hhbmRsZV9vcHRpb24pOgoJVXBkYXRlIGNhbGxlcnMgYXBwcm9wcmlhdGVseS4KCShjcHBfaGFuZGxlX29wdGlvbik6IFVzZSBwZW5kLgoKMjAwMC0wOC0xNyAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBpbml0LmMgKHNvcnRfb3B0aW9ucyk6IFJlbW92ZSwgcHV0IGZ1bmN0aW9uYWxpdHkgaW4KCWNwcF9pbml0LgoJKGNwcF9pbml0KTogTmV3LgoJKGluaXRpYWxpemVfYnVpbHRpbnMpOiBGcmVlIG1lbW9yeS4KCShjcHBfc3RhcnRfcmVhZCk6IE1vdmUgaW5pdF9JU3RhYmxlIHRvIGNwcF9pbml0LgoKCSogY3BwbGliLmggKGNwcF9pbml0KTogTmV3IHByb3RvdHlwZS4KCSogY3BwbWFpbi5jIChtYWluKTogQ2FsbCBjcHBfaW5pdC4KClRodSBBdWcgMTcgMTM6MjA6MzIgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIHJ0bGFuYWwuYyAocnR4X3Vuc3RhYmxlX3ApOiBVc2UgQ09OU1RBTlRfUC4KCShydHhfdW5zdGFibGVfcCwgcnR4X3Zhcmllc19wKTogUHJvY2VzcyB2ZWN0b3JzLgoKMjAwMC0wOC0xNiAgTmlpYmUgWXV0YWthICA8Z25paWJlQG0xN24ub3JnPiwgS2F6IEtvamltYSAgPGtrb2ppbWFAcnIuaWlqNHUub3IuanA+CgoJKiBjb25maWcvc2gvbGliMWZ1bmNzLmFzbSAoR0xPQkFMKTogRGVmaW5lLiAgVXNlIGZvciBhbGwKCXJlZmVyZW5jZXMgdG8gR0xPQkFMIHN5bWJvbHMuICBVc2UgTE9DQUwgd2hlcmUgYXBwcm9wcmlhdGUuCgoyMDAwLTA4LTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW4gKCotaWJtLWFpeDQuWzEyXSopOiBEZWxldGUgdGVzdCBmb3IgZ251IGxkLiAgQWx3YXlzCgl1c2UgdC1haXg0MSB3aGVuIGhvc3QgPT0gdGFyZ2V0LgoKMjAwMC0wOC0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlbG9hZC5jIChwdXNoX3NlY29uZGFyeV9yZWxvYWQpOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCglJZiB3ZSB1c2UgYSByZWxvYWRfaW4vb3V0IHBhdHRlcm4sIG1ha2UgdGhlIHdoZW4gdGhlIHNhbWUKCWFzIHRoZSBwcmltYXJ5IHJlbG9hZC4KCShmaW5kX3JlbG9hZHMpOiBMaWtld2lzZS4KCjIwMDAtMDgtMTYgIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAobGlic3RkY3h4LXYzKTogRml4IHRlc3QuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCldlZCBBdWcgMTYgMDg6MTA6MzIgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNhbGxzLmMgKGNhbGxzX2Z1bmN0aW9uXzEsIGV4cGFuZF9jYWxsKTogT25seSB0ZXN0CglUWVBFX1JFVFVSTlNfU1RBQ0tfREVQUkVTU0VEIGZvciBGVU5DVElPTl9UWVBFLgoJKiBmdW5jdGlvbi5jICh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogTGlrZXdpc2UuCgoyMDAwLTA4LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9zaGlmdF9jb25zdCk6IFJldmVydCBwcmV2aW91cyB0d28KCWNoYW5nZXMuICBJZiBTSElGVF9DT1VOVF9UUlVOQ0FURUQsIGNyb3AgdGhlIHNoaWZ0IGNvdW50CgliZWZvcmUgdGhlIG1haW4gbG9vcC4KCjIwMDAtMDgtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X3NoaWZ0X2NvbnN0KTogQm91bmQgc2hpZnQgY291bnQgd2hlbgoJY29tYmluaW5nIHNoaWZ0cy4KClR1ZSBBdWcgMTUgMTc6MzM6MDUgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNhbGxzLmMgKEVDRl9TUF9ERVBSRVNTRUQpOiBOZXcgbWFjcm8uCgkoY2FsbHNfZnVuY3Rpb25fMSk6IFRyZWF0IGNhbGxpbmcgc3AtZGVwcmVzc2VkIGZ1bmN0aW9uIGFzIGFsbG9jYS4KCShlbWl0X2NhbGxfMSk6IERvbid0IGFkanVzdCBTUCBpZiBjYWxsaW5nIHNwLWRlcHJlc3NlZCBmdW5jdGlvbi4KCShleHBhbmRfY2FsbCk6IFNldCBFQ0ZfU1BfREVQUkVTU0VEIGlmIFRZUEVfUkVUVVJOU19TVEFDS19ERVBSRVNTRUQuCglJZiBzcC1kZXByZXNzZWQsIGVuc3VyZSBibG9jayBzYXZlcyBhbmQgcmVzdG9yZXMgU1AuCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXYpOiBPbmx5IGNoZWNrIFRZUEVfSVNfU0laRVRZUEUKCWZvciBJTlRFR0VSX1RZUEUuCgkqIGZ1bmN0aW9uLmMgKGtlZXBfc3RhY2tfZGVwcmVzc2VkKTogTmV3IGZ1bmN0aW9uLgoJKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBDYWxsIGl0LgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBVc2UgSE9TVF9XSURFX0lOVF9QUklOVF9VTlNJR05FRAoJdG8gcHJpbnQgREVDTF9PRkZTRVRfQUxJR04uCglQcmludCBuby1mb3JjZS1ibGsgYW5kIHRyYW5zcGFyZW50LXVuaW9uIGZsYWdzIHByb3Blcmx5LgoJKiBzdG10LmMgKGV4cGFuZF9nb3RvX2ludGVybmFsKTogRG9uJ3QgcmVzdG9yZSBzdGFjayBpZiBsYXN0IGJsb2NrCglhbmQgZnVuY3Rpb24gcmV0dXJucyB3aXRoIHNwIGRlcHJlc3NlZC4KCShmaXh1cF9nb3Rvcyk6IExpa2V3aXNlLgoJKHNhdmVfc3RhY2tfcG9pbnRlcik6IE5ldyBmdW5jdGlvbiwgZnJvbSBjb2RlIGluIGV4cGFuZF9kZWNsLgoJKGV4cGFuZF9kZWNsKTogQ2FsbCBuZXcgZnVuY3Rpb24uCgkqIHRyZWUuaCAoVFlQRV9JU19TSVpFVFlQRSk6IENhbGwgSU5URUdFUl9UWVBFX0NIRUNLLgoJKFRZUEVfUkVUVVJOU19TVEFDS19ERVBSRVNTRUQpOiBOZXcgbWFjcm8uCgkoc2F2ZV9zdGFja19wb2ludGVyKTogTmV3IGRlY2xhcmF0aW9uLgoKCSogZGlhZ25vc3RpYy5jIChmYXRhbF9mdW5jdGlvbik6IE5ldyB2YXJpYWJsZS4KCShzZXRfZmF0YWxfZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoZmF0YWwpOiBDYWxsIGl0LgoJKiBkaWFnbm9zdGljLmggKHNldF9mYXRhbF9mdW5jdGlvbik6IE5ldyBkZWNsYXJhdGlvbi4KCjIwMDAtMDgtMTUgIFdpbGxpYW0gQ29oZW4gIDx3Y29oZW5AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9lbGYuaCAoRFdBUkYyX0RFQlVHR0lOR19JTkZPKTogRGVmaW5lZC4KCShQUkVGRVJSRURfREVCVUdHSU5HX1RZUEUpOiBTZXQgdG8gZHdhcmYyIGluZm8uCgkoRFdBUkYyX0FTTV9MSU5FX0RFQlVHX0lORk8pOiBEZWZpbmVkLgoKMjAwMC0wOC0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAobWFya191c2VkX3JlZyk6IFNldCByZWdfY29uZF9yZWcgYXBwcm9wcmlhdGVseS4KCjIwMDAtMDgtMTUgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAoYXJtX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogTmV3IGZ1bmN0aW9uLgoJKiBhcm0uaCAoRlVOQ1RJT05fT0tfRk9SX1NJQkNBTEwpOiBEZWZpbmUuCgkqIGFybS5tZCAoY2FsbCBleHBhbmRlcnMpOiBEb24ndCBjaGVjayBoZXJlIGZvciBjYWxscyB0aGF0IGNhbid0CgliZSBzaWJsaW5nIGNhbGxzLgoKMjAwMC0wOC0xNSAgUmljaGFyZCBFYXJuc2hhdyA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZCAoc3BsaXRzIGdlbmVyYXRpbmcgY29uZF9leGVjKTogRGlzYWJsZS4KCjIwMDAtMDgtMTUgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0vbGludXgtZWxmLmggKHRleHRfc2VjdGlvbik6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCjIwMDAtMDgtMTUgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJQVJNIHN1cHBvcnQgZm9yIHVub3JkZXJlZCBGUCBvcGVyYXRpb25zLgoJKiBhcm0tcHJvdG9zLmggKGFybV9jb21wYXJpc29uX29wZXJhdG9yKTogRGVjbGFyZS4KCSogYXJtLmMgKGFybV9jb21wYXJpc29uX29wZXJhdG9yKTogTmV3IGZ1bmN0aW9uLgoJKGFybV9zZWxlY3RfY2NfbW9kZSk6IEFkZCB1bm9yZGVyZWQgY29tcGFyaXNvbiBjb2Rlcy4KCShnZXRfYXJtX2NvbmRpdGlvbl9jb2RlKTogTGlrZXdpc2UuCgkoYXJtX2ZpbmFsX3ByZXNjYW5faW5zbik6IENhbid0IGhhbmRsZSB1bm9yZGVyZWQganVtcHMgdGhhdCBjYW4ndAoJYmUgZG9uZSBpbiBvbmUgaW5zbi4KCSogYXJtLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBhcm1fY29tcGFyaXNvbl9vcGVyYXRvci4KCSogYXJtLm1kIChhbGwgdXNlcyBvZiBjb21wYXJpc29uX29wZXJhdG9yKTogUmVwbGFjZSB3aXRoCglhcm1fY29tcGFyaXNvbl9vcGVyYXRvci4KCShidW5vcmRlcmVkLCBib3JkZXJlZCwgYnVndCwgYnVubHQsIGJ1bmdlLCBidW5sZSwgYnVuZXEsIGJsdGd0KTogTmV3CglleHBhbmRzLgoJKGFybV9idW5lcSwgYXJtX2JsdGd0LCBhcm1fYnVuZXFfcmV2ZXJzZWQsIGFybV9ibHRndF9yZXZlcmVzZWQpOiBOZXcKCXBhdHRlcm5zLgoKVHVlIEF1ZyAxNSAwMDozNjozNiAyMDAwICBPdmlkaXUgUHJlZGVzY3UgIDxvdmlkaXVAY3VwLmhwLmNvbT4KCgkqIGd0aHItcG9zaXguaDogQ29uZGl0aW9uYWxseSBpbmNsdWRlIDxzY2hlZC5oPjsgaW5jbHVkZQoJPGNvbmZpZy5oPiBmcm9tIGxpYm9iamMvLgoKMjAwMC0wOC0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IFVzZSBQbW9kZQoJZm9yIGFsbCBDT05TVHMuCgoyMDAwLTA4LTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIChpYTY0LSopOiBTZXQgZmxvYXRfZm9ybWF0IGZvciBpMzg2IGxvbmcgZG91YmxlLgoKCSogcmVhbC5jIChHRVRfUkVBTCk6IFRyZWF0IDEyOC1iaXQgSU5URUxfRVhURU5ERURfSUVFRV9GT1JNQVQKCWFzIHdlIHdvdWxkIGZvciBpMzg2IFhGbW9kZS4KCShQVVRfUkVBTCk6IExpa2V3aXNlLgoJKGVuZGlhbiwgZXJlYWxfYXRvZiwgcmVhbF92YWx1ZV90cnVuY2F0ZSk6IExpa2V3aXNlLgoJKGVyZWFsX2lzbmVnLCB0b2U2NCwgZXRlbnMsIG1ha2VfbmFuKTogTGlrZXdpc2UuCgkqIHJlYWwuaCAoUkVBTF9WQUxVRV9UT19UQVJHRVRfTE9OR19ET1VCTEUpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChnZW5lcmFsX3RmbW9kZV9vcGVyYW5kKTogTmV3LgoJKGRlc3RpbmF0aW9uX3RmbW9kZV9vcGVyYW5kKTogTmV3LgoJKHRmcmVnX29yX2ZwMDFfb3BlcmFuZCk6IE5ldy4KCShpYTY0X3NwbGl0X3RpbW9kZSk6IE5ldy4KCShzcGlsbF90Zm1vZGVfb3BlcmFuZCk6IE5ldy4KCShpYTY0X2V4cGFuZF9wcm9sb2d1ZSk6IFVzZSBURm1vZGUgbm90IFhGbW9kZS4KCShpYTY0X2V4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKGlhNjRfZnVuY3Rpb25fYXJnKTogTGlrZXdpc2UuCgkoaWE2NF9mdW5jdGlvbl9hcmdfYWR2YW5jZSk6IExpa2V3aXNlLgoJKGlhNjRfcmV0dXJuX2luX21lbW9yeSk6IExpa2V3aXNlLgoJKGlhNjRfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCShpYTY0X3ByaW50X29wZXJhbmQpOiBMaWtld2lzZS4KCShpYTY0X3JlZ2lzdGVyX21vdmVfY29zdCk6IFNldCBHUjwtPkZSIHRvIDUuCgkoaWE2NF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogR2V0IEdSIGZvciBUSW1vZGUgbWVtb3J5IG9wLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFJPVU5EX1RZUEVfU0laRSk6IFJlbW92ZS4KCShST1VORF9UWVBFX0FMSUdOKTogUmVtb3ZlLgoJKExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IFNldCB0byAxMjguCgkoSU5URUxfRVhURU5ERURfSUVFRV9GT1JNQVQpOiBEZWZpbmUuCgkoSEFSRF9SRUdOT19OUkVHUyk6IFVzZSBURm1vZGUsIG5vdCBYRm1vZGUuCgkoSEFSRF9SRUdOT19NT0RFX09LKTogTGlrZXdpc2UuICBEaXNhbGxvdyBUSW1vZGUgaW4gRlJzLgoJKE1PREVTX1RJRUFCTEVfUCk6IFVzZSBURm1vZGUsIG5vdCBYRm1vZGUuCgkoQ0xBU1NfTUFYX05SRUdTKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9MT05HX0RPVUJMRSk6IE91dHB1dCBieSA0IGJ5dGUgaHVua3MuCgkoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3Z0aSk6IE5ldy4KCShtb3Z0aV9pbnRlcm5hbCk6IFVzZSBhIGNsb2JiZXIgZm9yIG1lbW9yeSBhbHRlcm5hdGl2ZXMuCgkocmVsb2FkX2ludGksIHJlbG9hZF9vdXR0aSk6IE5ldy4KCShtb3ZzZmNjX2FzdGVwKTogUHJlZGljYXRlIHByb3Blcmx5LgoJKG1vdmRmY2NfYXN0ZXApOiBMaWtld2lzZS4KCShtb3Z4Zik6IFJlbW92ZS4KCShtb3Z0Zik6IE5ldy4KCShleHRlbmRzZnRmMiwgZXh0ZW5kZGZ0ZjIpOiBOZXcuCgkodHJ1bmN0ZnNmMiwgdHJ1bmN0ZmRmMik6IE5ldy4KCShmbG9hdGRpdGYyLCBmaXhfdHJ1bmN0ZmRpMik6IE5ldy4KCShmbG9hdHVuc2RpdGYyLCBmaXh1bnNfdHJ1bmN0ZmRpMik6IE5ldy4KCShhZGR0ZjMsIHN1YnRmMywgbXVsdGYzLCBhYnN0ZjIpOiBOZXcuCgkobmVndGYyLCBuYWJzdGYyLCBtaW50ZjMsIG1heHRmMyk6IE5ldy4KCShtYWRkdGYzLCBtc3VidGYzLCBubXVsdGYzLCBubWFkZHRmMyk6IE5ldy4KCShjbXB0Zik6IE5ldy4KCShmcl9zcGlsbCk6IFVzZSBURm1vZGUsIG5vdCBYRm1vZGUuCgkoZnJfcmVzdG9yZSk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9saWIxZnVuY3MuYXNtIChfX2RpdnRmMyk6IE5ldy4KCSogY29uZmlnL2lhNjQvdC1pYTY0IChMSUIxQVNNRlVOQ1MpOiBBZGQgaXQuCgoyMDAwLTA4LTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjc2UuYyAoZm9sZF9ydHgpOiBBdm9pZCBlbXB0eSBib2R5IGluIGFuIGlmLXN0YXRlbWVudC4KCgkqIGRvbG9vcC5jIChkb2xvb3BfaXRlcmF0aW9uc19tYXgsIGRvbG9vcF9tb2RpZnkpOiBBdm9pZCB1c2luZyB0aGUKCWBVJyBpbnRlZ2VyIGNvbnN0YW50IHN1ZmZpeC4KCgkqIGR3YXJmMm91dC5jIChhZGRfc3Vic2NyaXB0X2luZm8pOiBBdm9pZCBlbXB0eSBib2R5IGluIGFuCgllbHNlLXN0YXRlbWVudC4KCgkqIHNwYXJjL3NvbDIuaCAoX19lbmFibGVfZXhlY3V0ZV9zdGFjayk6IFByb3RvdHlwZS4KCjIwMDAtMDgtMTQgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbGxlY3QyLmM6IFJlbW92ZSB1c2Ugb2YgQUlYIGltcG9ydCBmaWxlLgoKCSogbG9uZ2xvbmcuaDogVGVzdCBBUkNIX1BXUiBub3QgQVJDSF9QT1dFUi4KCgkqIHJzNjAwMC5jIChwcmludF9vcGVyYW5kLCBjYXNlICdFJyk6IEFkZCBlbHNlLgoKMjAwMC0wOC0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdmRpKTogRGVsYXkgY2FsbGluZyBpYTY0X2V4cGFuZF9sb2FkX2FkZHJlc3MuCgkobW92ZGlfc3ltYm9saWMpOiBOZXcuCgoyMDAwLTA4LTE0ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEFTTV9TUEVDKTogUGFzcyAtbWNvbnN0YW50LWdwIGFuZCAtbWF1dG8tcGljCgl0byBHTlUgYXMuICBGb3IgSW50ZWwgYXMsIHBhc3MgLU0gY29uc3RfZ3AgYW5kIC1NIG5vX3BsYWJlbC4KCSogY29uZmlnL2lhNjQvbGludXguaCAoQVNNX1NQRUMpOiBQYXNzIC1tY29uc3RhbnQtZ3AgYW5kIC1tYXV0by1waWMKCXRvIEdOVSBhcy4KCjIwMDAtMDgtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGVtaXRfZ3JvdXBfbG9hZCk6IERvbid0IGZvcmNlIGNvbnN0YW50cyBpbnRvIHJlZ2lzdGVycy4KCVNwZWNpYWwgY2FzZSBzb3VyY2UgYWxyZWFkeSBpbiB0aGUgY29ycmVjdCBtb2RlLgoKMjAwMC0wOC0xNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY29uZmlndXJlLmluOiBBY2NlcHQgKi0qLWxpbnV4KiBub3QganVzdCAqLSotbGludXgtZ251Ki4KCSogZml4aW5jL2luY2xoYWNrLmRlZjogTGlrZXdpc2UuCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCSogaW5zdGFsbC50ZXhpOiBEb2N1bWVudCBlcXVpdmFsZW5jZSBvZiBsaW51eCBhbmQgbGludXgtZ251LgoKTW9uIEF1ZyAxNCAxODo1MTo0NCAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBjc2UuYyAoaW5zZXJ0X3JlZ3MpOiBBbHNvIGluIFJFRyBjYXNlOiBXaGVuIGZpbmRpbmcgYW4gaW52YWxpZAoJdmFsdWUsIGFuZCB3ZSBtYWtlIGEgbmV3IHF1YW50aXR5LCBtYWtlIHN1cmUgdGhhdCBpdCB3b24ndCBiZQoJbWlzdGFrZW4gYnkgZm9yIGEgdmFsaWQgb25lIGJ5IG1lbnRpb25fcmVncy4KCjIwMDAtMDgtMTMgIFJhbGYgR/x0bGVpbiA8cmFsZi5ndWV0bGVpbkBhcmFuZWEuZGU+CgoJKiBoODMwMC5tZDogUmVtb3ZlIG9ic29sZXRlIHBlZXBob2xlcy4KCjIwMDAtMDgtMTMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaW52b2tlLnRleGkgKEg4LzMwMCBPcHRpb25zKTogRml4IHR5cG9zLgoJKiBjb25maWcvaDgzMDAuYzogRml4IGZvcm1hdHRpbmcuCgkqIGNvbmZpZy9oODMwMC5oOiBGaXggY29tbWVudCB0eXBvcy4KCShPVkVSUklERV9PUFRJT05TKTogRml4IGZvcm1hdHRpbmcuCgoJKiBmdW5jdGlvbi5jOiBGaXggZm9ybWF0dGluZy4KCgkqIGNzZS5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDgtMTMgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoYXR0ZW1wdF9hdXRvX2luYyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGJiJy4KCShhdHRlbXB0X2F1dG9faW5jKTogU3VwcHJlc3MgcGFyZW50aGVzZXMgd2FybmluZy4KCSogZnVuY3Rpb24uYyAocHV0X3JlZ19pbnRvX3N0YWNrKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgdW5zaWduZWRfcCcuCgkqIGxvb3AuYyAobG9hZF9tZW1zKTogUmVtb3ZlIGB1JyBzdWZmaXggaW4gdHdvIHBsYWNlcy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogUmVtb3ZlIHVubmVjZXNzYXJ5IGB1JyBzdWZmaXhlcyBmcm9tCgloZXggY29uc3RhbnRzLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9zb2wtYzAuYzogUHJvdG90eXBlIHNvbWUgZnVuY3Rpb25zLiAgUmVtb3ZlIHRoZQoJX19lYWJpIGR1bW15IHJvdXRpbmUuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlIGBidWZfcHRyJy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9zZWxlY3Rfc2VjdGlvbik6IFJld3JpdGUgdG8KCW5vdCBwdXQgc3R1ZmYgaW4gLnNkYXRhIHVubmVjZXNzYXJpbHkuCgkocnM2MDAwX3VuaXF1ZV9zZWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaDogQWRkIHJzNjAwMF91bmlxdWVfc2VjdGlvbi4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChVTklRVUVfU0VDVElPTik6IERlZmluZS4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2FycmF5X3JlZik6IERvbid0IGNvbXBsYWluIGFib3V0IG5vbi1sdmFsdWUKCWFycmF5cyBpbiBDOTkuICBEb24ndCB0cnkgdG8gbG9vayBhdCBERUNMX1JFR0lTVEVSIG9mIGEKCUNPTVBPTkVOVF9SRUYuICBEb24ndCBjb21wbGFpbiB0d2ljZSBhYm91dCB0aGUgc2FtZSBlcnJvci4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGFpeF9wdGhyZWFkKTogTmV3IGZpeC4KCShhaXhfc3lzbWFjaGluZSk6IE5ldyBmaXguCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogQ2FsbCBjb252ZXJ0X21vZGVzIHdoZW4gdHVybmluZyBhIGxhcmdlCgltdWx0aXBseSBpbnRvIGEgc21hbGwgb25lLgoKMjAwMC0wOC0xMiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogdHJlZS5oIChERUNMX09GRlNFVF9BTElHTik6IE1ha2UgdGhlIG9mZl9hbGlnbiBmaWVsZCBvZgoJdGhlIHRyZWUgc3RydWN0dXJlIGFuIGV4cG9uZW50IHJhdGhlciB0aGFuIGFuIGV4cGxpY2l0IGFsaWdubWVudAoJc28gaXQgZG9lc24ndCBvdmVyZmxvdy4KCShTRVRfREVDTF9PRkZTRVRfQUxJR04pOiBOZXcgbWFjcm8uCgkqIHN0b3ItbGF5b3V0LmMgKHBsYWNlX3VuaW9uX2ZpZWxkKTogVXNlIFNFVF9ERUNMX09GRlNFVF9BTElHTgoJcmF0aGVyIHRoYW4gREVDTF9PRkZTRVRfQUxJR04uCgkocGxhY2VfZmllbGQpOiBMaWtld2lzZS4KCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IEFib3J0IG9uIGFsaWduPT0wIHRvIGF2b2lkCglhbnRpc29jaWFsIG1hY2hpbmUgYmVoYXZpb3IuCgoyMDAwLTA4LTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc2liY2FsbC5jICh1c2VzX2FkZHJlc3NvZik6IEFjY2VwdCBib3RoIGFkZHJlc3NvZiBhbmQKCWN1cnJlbnRfZnVuY3Rpb25faW50ZXJuYWxfYXJnX3BvaW50ZXIgaW5zaWRlIGEgbWVtLgoJKG9wdGltaXplX3NpYmxpbmdfYW5kX3RhaWxfcmVjdXJzaXZlX2NhbGwpOiBGYWlsIHRhaWwgcmVjdXJzaW9uCglpZiBjdXJyZW50X2Z1bmN0aW9uX3VzZXNfYWRkcmVzc29mLgoJKiBzdG10LmMgKGV4cGFuZF9yZXR1cm4pOiBLaWxsIHRhaWwgcmVjdXJzaW9uIGFuZCBIQVZFX3JldHVybgoJb3B0aW1pemF0aW9ucy4KCjIwMDAtMDgtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChhZGRzaTMpOiBSZW1vdmUgZXhwYW5kZXIuCgkoc3Vic2kzLCBtdWxzaTMsIG5lZ3NpMiwgb25lX2NtcGxzaTIpOiBMaWtld2lzZS4KCSgqYWRkc2kzX3NobGFkZCk6IE5ldy4KCjIwMDAtMDgtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGRvX3NwaWxsKTogUGFzcyBjZmEgb2Zmc2V0IHRvIG1vdmUgZXhwYW5kZXIuCgkoZG9fcmVzdG9yZSk6IExpa2V3aXNlLgoJKGdlbl9tb3ZkaV94LCBnZW5fZnJfc3BpbGxfeCwgZ2VuX2ZyX3Jlc3RvcmVfeCk6IE5ldy4KCShpYTY0X2V4cGFuZF9wcm9sb2d1ZSwgaWE2NF9leHBhbmRfZXBpbG9ndWUpOiBVc2UgdGhlbS4KCShydHhfbmVlZHNfYmFycmllcik6IFRyYWNrIGFjdHVhbCBiaXQgbWFuaXB1bGF0aW9uIGZvcgoJYXIudW5hdCBtb3ZlcywgZ3Jfc3BpbGwsIGFuZCBncl9yZXN0b3JlLgoJKGVtaXRfaW5zbl9ncm91cF9iYXJyaWVycyk6IFNwZWNpYWwgY2FzZSBncl9zcGlsbC9ncl9yZXN0b3JlLgoJKHByb2Nlc3Nfc2V0KTogRG9uJ3QgaGFuZGxlIHZhcmFyZ3Mgc3BpbGxzLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChncl9zcGlsbCk6IEFjY2VwdCBjZmEgb2Zmc2V0LiAgRW1pdAoJLm1lbS5vZmZzZXQgaGVyZSBpbnN0ZWFkIG9mIGluIHByb2Nlc3Nfc2V0LgoJKGdyX3Jlc3RvcmUpOiBMaWtld2lzZS4KCjIwMDAtMDgtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFBST01PVEVfTU9ERSk6IE9ubHkgZXh0ZW5kIHRvIFNJbW9kZS4KCjIwMDAtMDgtMTEgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBnY2MudGV4aSAoVGhlIENvbmZpZ3VyYXRpb24gRmlsZSk6IERvY3VtZW50CglDT0xMRUNUMl9IT1NUX0lOSVRJQUxJWkFUSU9OLCBHQ0NfRFJJVkVSX0hPU1RfSU5JVElBTElaQVRJT04sIGFuZAoJVVBEQVRFX1BBVEhfSE9TVF9DQU5PTklDQUxJWkFUSU9OLgoKMjAwMC0wOC0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1wYXJzZS5pbiAoY2FzdF9leHByKTogQXZvaWQgLVdzdHJpY3QtcHJvdG90eXBlIHdhcm5pbmdzIGZvcgoJdW5wcm90b3R5cGVkIGZ1bmN0aW9uIHBvaW50ZXIgY2FzdHMgb24gaW50ZWdlciBjb25zdGFudHMuCgoyMDAwLTA4LTExIExhdXJ5bmFzIEJpdmVpbmlzIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogZml4cHJvdG86IFJlY29nbml6ZSBET1MgcGF0aHMgd2l0aCBkcml2ZSBsZXR0ZXJzIGFzIGFic29sdXRlIHBhdGhzLgoKMjAwMC0wOC0xMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4dGVuZC50ZXhpIChWb2xhdGlsZXMpOiBGaXggdHlwb3MuCgoyMDAwLTA4LTExICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGZsb3cuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA4LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcmVsb2FkLmMgKHB1c2hfc2Vjb25kYXJ5X3JlbG9hZCk6IFdoZW4gaW52b2tpbmcgYSByZWxvYWRfe2luLG91dH0KCXBhdHRlcm4sIGFsd2F5cyBhbGxvY2F0ZSBhIHRlcnRpYXJ5IHNjcmF0Y2ggcmVnaXN0ZXIuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKHJlbG9hZF9pbnFpKTogVXNlIGEgREltb2RlIHNjcmF0Y2guCgkocmVsb2FkX2luaGkpOiBMaWtld2lzZS4KCjIwMDAtMDgtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmdW5jdGlvbi5jIChwdXRfcmVnX2ludG9fc3RhY2spOiBBbGxvdyB0eXBlIHRvIGJlIE5VTEwuCgkoc2NoZWR1bGVfZml4dXBfdmFyX3JlZnMpOiBMaWtld2lzZS4KCShnZW5fbWVtX2FkZHJlc3NvZik6IEFsbG93IGRlY2wgdG8gYmUgTlVMTC4KCShwdXRfYWRkcmVzc29mX2ludG9fc3RhY2spOiBMaWtld2lzZS4KCgkqIGZsb3cuYyAobWVyZ2VfYmxvY2tzX25vbW92ZSk6IEJlIG1vcmUgY2FyZWZ1bCBhYm91dAoJbG9jYXRpbmcgdGhlIGJlZ2lubmluZyBvZiBibG9jayBBLgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9zaGlmdF9jb25zdCk6IE9iZXkgU0hJRlRfQ09VTlRfVFJVTkNBVEVELgoKVGh1IEF1ZyAxMCAyMjo0NzowOSAyMDAwICBPdmlkaXUgUHJlZGVzY3UgIDxvdmlkaXVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjoKCSogY29uZmlndXJlOgoJKiBndGhyLXBvc2l4Lmg6CgkqIGNvbmZpZy5pbjogUmV2ZXJ0ZWQgdGhlIGNoZWNrIGZvciA8c2NoZWQuaD4uCgoyMDAwLTA4LTEwICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAc2lieXRlLmNvbT4KCgkqIG1pcHMvZWxmLmggKENUT1JfU0VDVElPTl9OQU1FLCBEVE9SX1NFQ1RJT05fTkFNRSk6IE5ldwoJbWFjcm9zIGRlZmluZSB0aGUgbmFtZSBvZiBDVE9SIGFuZCBEVE9SIHNlY3Rpb25zLgoJKENUT1JfTElTVF9CRUdJTiwgQ1RPUl9MSVNUX0VORCwgRFRPUl9MSVNUX0JFR0lOLAoJRFRPUl9MSVNUX0VORCk6IENoYW5nZSB0byB1c2UgYXR0cmlidXRlcyB0byBzcGVjaWZ5CglzZWN0aW9ucy4KCSogbWlwcy9lbGY2NC5oIChDVE9SX1NFQ1RJT05fTkFNRSwgRFRPUl9TRUNUSU9OX05BTUUsCgkoQ1RPUl9MSVNUX0JFR0lOLCBDVE9SX0xJU1RfRU5ELCBEVE9SX0xJU1RfQkVHSU4sCglEVE9SX0xJU1RfRU5EKTogU2FtZSBhcyBpbiBtaXBzL2VsZi5oLgoKMjAwMC0wOC0xMCAgRHJldyBNb3NlbGV5ICA8ZG1vc2VsZXlAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaDogQWRkZWQgbm8tY3J0MCBvcHRpb24gZm9yIGV4cGxpY2l0bHkKCWRpc2FibGluZyBqdXN0IGNydDAuby4KCjIwMDAtMDgtMTAgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhd0Bhcm0uY29tPiAmIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBhcm0uaCAoQ1BQX1NQRUMpOiBVc2Ugc3ViLXNwZWMgY3BwX2ludGVyd29yay4KCShDUFBfSU5URVJXT1JLX1NQRUMsIENQUF9JTlRFUldPUktfREVGQVVMVF9TUEVDKTogTmV3IHN1Yi1zcGVjcy4KCShFWFRSQV9TUEVDUyk6IEFkZCB0aGVtLgoJKiBhcm0vbGliMWZ1bmNzLmFzbTogU3VwcG9ydCBidWlsZHMgZm9yIGludGVyd29ya2luZy4KCVVzZSBtYWNyb3MgdG8gZWxpbWluYXRlIGR1cGxpY2F0ZWQgcGllY2VzIG9mIGNvZGUuCgoyMDAwLTA4LTEwICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGg4MzAwLmMgKGV4cGFuZF9hX3JvdGF0ZSk6IE5ldy4KCShlbWl0X2Ffcm90YXRlKTogTGlrZXdpc2UuCgkoaDgzMDBfYWRqdXN0X2luc25fbGVuZ3RoKTogQWRkIHN1cHBvcnQgZm9yIHRoZSByb3RhdGUgaW5zbnMuCgkqIGg4MzAwLm1kIChyb3RscWkzKTogTmV3LgoJKCpyb3RscWkzXzEpOiBMaWtld2lzZS4KCShyb3RsaGkzKTogTGlrZXdpc2UuCgkoKnJvdGxoaTNfMSk6IExpa2V3aXNlLgoJKHJvdGxoaTMpOiBMaWtld2lzZS4KCSgqcm90bGhpM18xKTogTGlrZXdpc2UuCgkqIGg4MzAwLXByb3RvLmg6IEFkZCBwcm90b3R5cGVzIGZvciBleHBhbmRfYV9yb3RhdGUgYW5kCgllbWl0X2Ffcm90YXRlLgoKCSogaDgzMDAuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkoZG9zaXplKTogRGVjbGFyZSB0aGUgdmFyaWFibGUgYW1vdW50IGFzIHVuc2lnbmVkLgoJKGdldF9zaGlmdF9hbGcpOiBGaXggYSBjb21wYXJpc29uIGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZC4KCShlbWl0X2Ffc2hpZnQpOiBMaWtld2lzZS4KCShoODMwMF9hZGp1c3RfaW5zbl9sZW5ndGgpOiBTaW1wbGlmeSB0aGUgY29kZS4KCgkqIGMtZGVjbC5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDgtMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtbGV4LmMgKHBhcnNlX2Zsb2F0LCB5eWxleCk6IEZvciAtV3RyYWRpdGlvbmFsLCBpc3N1ZSBhCgl3YXJuaW5nIGFib3V0IG5vbi10cmFkaXRpb25hbCBudW1lcmljIGNvbnN0YW50IHN1ZmZpeGVzLgoKCSogY3BwZXhwLmMgKHBhcnNlX251bWJlcik6IExpa2V3aXNlLgoKCSogaW52b2tlLnRleGk6ICgtV3RyYWRpdGlvbmFsKTogRG9jdW1lbnQgbmV3IGJlaGF2aW9yLgoKVGh1IEF1ZyAxMCAwMDoxMTowNCAyMDAwICBPdmlkaXUgUHJlZGVzY3UgIDxvdmlkaXVAY3VwLmhwLmNvbT4KCgkqIGd0aHItcG9zaXguaDogSW5jbHVkZSBhdXRvLWhvc3QuaC4gQ29uZGl0aW9uYWxseSBpbmNsdWRlCgk8c2NoZWQuaD4uCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIHRoZSA8c2NoZWQuaD4gaGVhZGVyIGZpbGUuCgkqIGNvbmZpZy5pbjogQWRkZWQgZGVmaW5lIGZvciBIQVZFX1NDSEVEX0guCgoyMDAwLTA4LTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLXR5cGVjay5jIChwcm9jZXNzX2luaXRfZWxlbWVudCk6IEZvciAtV3RyYWRpdGlvbmFsLCB3YXJuIGFib3V0Cglpbml0aWFsaXphdGlvbiBvZiB1bmlvbnMuCgoJKiBpbnZva2UudGV4aSAoLVd0cmFkaXRpb25hbCk6IERvY3VtZW50IG5ldyBiZWhhdmlvci4KCjIwMDAtMDgtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtYy1jcHBsaWIpOiBVbmNvbW1lbnQuICBVc2UgQUNfREVGSU5FCglpbnN0ZWFkIG9mIGV4dHJhX2NfZmxhZ3MuCgkoLS1lbmFibGUtYy1tYmNoYXIpOiBVc2UgQUNfREVGSU5FIGluc3RlYWQgb2YgZXh0cmFfY19mbGFncy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoJKiBjcHBlcnJvci5jIChjcHBfdHlwZTJuYW1lKTogTmV3IGZ1bmN0aW9uLgoJKiBjcHBsZXguYyAobGV4X2xpbmUpOiBJZiB3ZSBpc3N1ZWQgYW4gZXJyb3IgZm9yIGFuIGludmFsaWQKCXByZXByb2Nlc3NpbmcgZGlyZWN0aXZlLCBkaXNjYXJkIHRoYXQgbG9naWNhbCBsaW5lLgoJKiBjcHBsaWIuYyAoZG9fbGluZSk6IENhbGwgYSBob29rIGZ1bmN0aW9uIGlmIHRoZSBjdXJyZW50IGZpbGUKCWlzIHJlbmFtZWQgYnkgI2xpbmUuCgkoZG9faWRlbnQpOiBQYXNzIHRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nLCBub3QgdGhlIGVudGlyZQoJdG9rZW4sIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4KCSogY3BwbGliLmggKENQUF9MQVNUX1BVTkNUVUFUT1IpOiBOZXcgI2RlZmluZS4KCShjYi5yZW5hbWVfZmlsZSk6IE5ldyBob29rIGZ1bmN0aW9uLgoJKGNiLmlkZW50KTogQWRqdXN0IHByb3RvdHlwZS4KCShjcHBfdHlwZTJuYW1lKTogUHJvdG90eXBlLgoJKiBjcHBtYWNyby5jIChkdW1wX21hY3JvX2FyZ3MpOiBDb3JyZWN0IHByZWNlZGVuY2UgbG9zc2FnZS4KCgkqIGNwcG1haW4uYyAoY2JfaWRlbnQpOiBVcGRhdGUgZm9yIGNoYW5nZWQgaW50ZXJmYWNlLgoJKGNiX3JlbmFtZV9maWxlKTogTmV3IGZ1bmN0aW9uLgoJKG1haW4pOiBTZXQgcmVuYW1lIGNhbGxiYWNrLgoKMjAwMC0wOC0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjYWxsZXItc2F2ZS5jIChtYXJrX3JlZmVyZW5jZWRfcmVncyk6IE1hcmsgcGFydGlhbGx5LW92ZXJ3cml0dGVuCgltdWx0aS13b3JkIHJlZ2lzdGVycy4KCjIwMDAtMDgtMDggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGNvbWJpbmVfc3RyaW5ncywgY2hlY2tfZm9ybWF0X2luZm8pOiBSZWZlciB0byBJU08gQwoJb3IgSVNPIEM4OSBpbnN0ZWFkIG9mIEFOU0kgQy4KCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yLCB4cmVmX3RhZywgZmluaXNoX3N0cnVjdCwKCWJ1aWxkX2VudW1lcmF0b3IsIGRvX2Nhc2UpOiBMaWtld2lzZS4KCSogYy1sZXguYyAocGFyc2VfZmxvYXQsIHl5bGV4KTogTGlrZXdpc2UuCgkqIGMtcGFyc2UuaW46IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChjb21tb25fdHlwZSwgYnVpbGRfYXJyYXlfcmVmLCBidWlsZF9iaW5hcnlfb3AsCglidWlsZF91bmFyeV9vcCwgcGVkYW50aWNfbHZhbHVlX3dhcm5pbmcsIGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIsCglidWlsZF9jX2Nhc3QsIGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQsIHNldF9pbml0X2luZGV4LAoJc2V0X2luaXRfbGFiZWwsIGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zLCBkaXNwbGF5X2hlbHApOiBMaWtld2lzZS4KCjIwMDAtMDgtMDggIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAuYzogRml4IGZvcm1hdHRpbmcuCgkqIGg4MzAwLmg6IExpa2V3aXNlLgoJKiBoODMwMC5tZDogTGlrZXdpc2UuCgkobW92c2lfaDgzMDBocyk6IEZpeCBmb3JtYXR0aW5nIG9mIHRoZSByZXN1bHRpbmcgYXNzZW1ibHkgY29kZS4KCgkqIHJlbG9hZDEuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA4LTA4ICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIGFscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfeGZsb2F0aW5nX2xpYmNhbGwpOgoJVXNlIEdFTl9DQUxMX1ZBTFVFIGRlZmluZS4KCSogYWxwaGEvYWxwaGEubWQgKHVudHlwZWRfY2FsbCk6IFVzZSBHRU5fQ0FMTCBkZWZpbmUuCgkqIGNsaXBwZXIvY2xpcHBlci5tZCAodW50eXBlZF9jYWxsKTogTGlrZXdpc2UuCgkqIGRzcDE2eHgvZHNwMTZ4eC5tZCAodW50eXBlZF9jYWxsKTogTGlrZXdpc2UuCgkqIGZ4ODAvZng4MC5tZCAodW50eXBlZF9jYWxsKTogTGlrZXdpc2UuCgkqIG1pcHMvbWlwcy5tZCAodW50eXBlZF9jYWxsKTogTGlrZXdpc2UuCgkqIG5zMzJrL25zMzJrLm1kICh1bnR5cGVkX2NhbGwpOiBMaWtld2lzZS4KCSogcGEvcGEubWQgKHVudHlwZWRfY2FsbCk6IExpa2V3aXNlLgoJKiByb21wL3JvbXAubWQgKHVudHlwZWRfY2FsbCk6IExpa2V3aXNlLgoJKiBzcGFyYy9zcGFyYy5tZCAodW50eXBlZF9jYWxsKTogTGlrZXdpc2UuCgoyMDAwLTA4LTA4ICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogY29uZmlnL2k4NjAvaTg2MC5jIChzaW5nbGVtb3ZlX3N0cmluZyk6IERvIG5vdCBnZW5lcmF0ZSBhc3NlbWJsZXIKCXBzZXVkbyBpbnN0cnVjdGlvbnMgdGhhdCBtdXN0IGJlIGV4cGFuZGVkICh0aGF0IGlzLCB3aXRoIHNpZ25lZAoJY29uc3RhbnRzIGxhcmdlciB0aGFuIDE2IGJpdHMpLgoKMjAwMC0wOC0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAobGlmZV9hbmFseXNpcyk6IE9ubHkgdHVybiBvZmYgUFJPUF9MT0dfTElOS1MgYW5kCglQUk9QX0FVVE9JTkMgYXQgLU8wLiAgRG9uJ3QgY29sbGVjdCBhbGlhcyBpbmZvIGF0IC1PMC4KCShpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogRG9uJ3Qga2lsbCBtZW1vcnkgc3RvcmVzIGF0IC1PMC4KCShtYXJrX3NldF8xLCBtYXJrX3VzZWRfcmVncyk6IExpa2V3aXNlLgoKMjAwMC0wOC0wOCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcnM2MDAwLmMgKG9wdGltaXphdGlvbl9vcHRpb25zKTogRGVjb3JhdGUgJ2xldmVsJyBhcwoJQVRUUklCVVRFX1VOVVNFRC4KCShtYXNrNjRfb3BlcmFuZCk6IFJlbW92ZSBzaWduLWV4dGVuZCB0aGlua28uCgkocmxkaWNfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCShsb2FkX211bHRpcGxlX29wZXJhdGlvbik6IHJlZ25vJ3MgYXJlIHVuc2lnbmVkIGludHMuCgkoc3RvcmVfbXVsdGlwbGVfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkobG13X29wZXJhdGlvbik6IExpa2V3aXNlLgoJKHN0bXdfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkoaW5jbHVkZXNfbHNoaWZ0X3ApOiBzaGlmdF9tYXNrIGlzIHVuc2lnbmVkIGludC4KCShpbmNsdWRlc19sc2hpZnQ2NF9wKTogTmV3IGZ1bmN0aW9uLgoJKGFkZHJzX29rX2Zvcl9xdWFkX3BlZXApOiB1bnNpZ25lZCBpbnQgcmVnMS4KCShwcmludF9vcGVyYW5kKTogQ29uc2lzdGVudGx5IGFkZCAiZWxzZSIgYWZ0ZXIKCW91dHB1dF9vcGVyYW5kX2xvc3NhZ2UoKS4KCShwcmludF9vcGVyYW5kLCBjYXNlICdiJyk6IEZvbGQgaW4gY2FzZSAnVycuCgkocHJpbnRfb3BlcmFuZCwgY2FzZSAnVycpOiBQcmludCBybGRpYyBNQiB2YWx1ZS4KCShvdXRwdXRfZXBpbG9ndWUpOiBVcGRhdGUgT2JqZWN0aXZlLUMgbGFuZ3VhZ2Ugc3RyaW5nLgoJKG91dHB1dF90b2MpOiB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIGxvdywgY29tcGFyZSB1bnNpZ25lZC4KCSogcnM2MDAwLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBybGRpY19vcGVyYW5kLgoJKiByczYwMDAubWQgKGFzaGxkaTMpOiBBZGQgcmxkaWMgaW5zdHJ1Y3Rpb24uCgkoaW9yZGkzLCB4b3JkaTMpOiBSZW1vdmUgcmVkdW5kYW50ICJlbHNlIGlmIENPTlNUX0RPVUJMRSIuCgkoY21wc2lfaW50ZXJuYWwyLCBjbXBkaV9pbnRlcmFsMik6IFVzZSAnYicgb3V0cHV0IHRlbXBsYXRlCgltb2RpZmllci4KCjIwMDAtMDgtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBSZW1vdmUgZHVwbGljYXRlcy4gIFVwZGF0ZQoJZm9yIG1hc3NpdmUgY29kZSByZWFycmFuZ2VtZW50cy4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2FycGZzX3JlZ25vKTogUmVtb3ZlLgoJKGlhNjRfcnBfcmVnbm8sIGlhNjRfZnBfcmVnbm8sIGlhNjRfaW5wdXRfcmVncyk6IFJlbW92ZS4KCShpYTY0X2xvY2FsX3JlZ3MsIGlhNjRfbmVlZF9yZWdzdGspOiBSZW1vdmUuCgkoYXJfY2N2X3JlZ19vcGVyYW5kKTogTmV3LgoJKGlhNjRfZ3Bfc2F2ZV9yZWcpOiBOZXcuCgkoc3RydWN0IGlhNjRfZnJhbWVfaW5mbyk6IENvbWJpbmUgbW9zdCBvZiB0aGUgc2l6ZSBlbGVtZW50czsKCWFkZCBuZXcgZ3Igc2F2ZSBlbGVtZW50cy4KCShmaW5kX2dyX3NwaWxsKTogTmV3LgoJKG5leHRfc2NyYXRjaF9ncl9yZWcpOiBOZXcuCgkobWFya19yZWdfZ3JfdXNlZF9tYXNrKTogTmV3LgoJKGlhNjRfY29tcHV0ZV9mcmFtZV9zaXplKTogUmV3cml0ZS4gIEFsbG9jYXRlIHNwZWNpYWwgQVIgcmVncwoJdG8gR1IgYmFja2luZyBzdG9yZSByZWdzIHdoZW4gcG9zc2libGUuCgkoaWE2NF9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IE5ldy4KCShpYTY0X3JhcF9mcF9vZmZzZXQpOiBSZW1vdmUuCgkoc2F2ZV9yZXN0b3JlX2luc25zKTogUmVtb3ZlLgoJKHNldHVwX3NwaWxsX3BvaW50ZXJzKTogTmV3LgoJKGZpbmlzaF9zcGlsbF9wb2ludGVycyk6IE5ldy4KCShzcGlsbF9yZXN0b3JlX21lbSk6IE5ldy4KCShkb19zcGlsbCwgZG9fcmVzdG9yZSk6IE5ldy4KCShpYTY0X2V4cGFuZF9wcm9sb2d1ZSk6IFJld3JpdGUgdG8gdXNlIHRoZW0uCgkoaWE2NF9leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCShpYTY0X2RpcmVjdF9yZXR1cm4pOiBVcGRhdGUgZm9yIGN1cnJlbnRfZnJhbWVfaW5mbyBjaGFuZ2VzLgoJKGlhNjRfZnVuY3Rpb25fcHJvbG9ndWUpOiBTaW1wbGlmeSAucHJvbG9ndWUgZW1pc3Npb24uICBFbWl0Cgkuc3BpbGwgd2hlbiBuZWVkZWQuCgkoaWE2NF9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogRG9uJ3QgZXZlciBlbWl0IHJ0bC4KCShpYTY0X2RieF9yZWdpc3Rlcl9udW1iZXIpOiBOZXcuCgkoaWE2NF9pbml0aWFsaXplX3RyYW1wb2xpbmUpOiBOZXcuCgkoaWE2NF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogUmVxdWVzdCBHUl9SRUdTIGZvciBpbnRlZ2VyCglhcml0aG1ldGljIGRlc3RpbmVkIGZvciBGUl9SRUdTLgoJKGlhNjRfaW5pdF9tYWNoaW5lX3N0YXR1cyk6IERvbid0IHJlc2V0IHJldHVybl9hZGRyZXNzX3BvaW50ZXJfcnR4LgoJKGlhNjRfbWFya19tYWNoaW5lX3N0YXR1cyk6IE1hcmsgaWE2NF9ncF9zYXZlLgoJKHJ3c19hY2Nlc3NfcmVnbm8pOiBSZW5hbWUgZnJvbSByd3NfYWNjZXNzX3JlZzsgZG9uJ3QgdHJlYXQKCXByZWRpY2F0ZXMgc3BlY2lhbGx5LgoJKHJ3c19hY2Nlc3NfcmVnKTogTmV3LiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKHJ0eF9uZWVkc19iYXJyaWVyKTogUmVtb3ZlIGRlYWQgdW5zcGVjcy4KCShpYTY0X2VwaWxvZ3VlX3VzZXMpOiBNYXJrIGFyLnBmcyBhbmQgYXIudW5hdCBsaXZlIG9uIGV4aXQuCgkoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogU2lsZW5jZSBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MuCgkoc3BpbGxfb2Zmc2V0LCBzcF9vZmZzZXQsIHNwaWxsX29mZnNldF9lbWl0dGVkKTogUmVtb3ZlLgoJKHRtcF9yZWcsIHRtcF9zYXZlZCk6IFJlbW92ZS4KCShwcm9jZXNzX3NldCk6IFJld3JpdGUgdG8gZXhwZWN0IGNvbXBsaWNhdGVkIGJpdHMgdmlhCglSRUdfRlJBTUVfUkVMQVRFRF9FWFBSLgoJKGlhNjRfZXhwYW5kX2ZldGNoX2FuZF9vcCk6IFVzZSBlbWl0X21vdmVfaW5zbjsgYmUgZXhwbGljaXQKCWluIHRoZSB1c2Ugb2YgYXIuY2N2OyBuZXZlciBzZXQgUlRYX1VOQ0hBTkdJTkdfUC4KCShpYTY0X2V4cGFuZF9vcF9hbmRfZmV0Y2gpOiBMaWtld2lzZS4KCShpYTY0X2V4cGFuZF9jb21wYXJlX2FuZF9zd2FwKTogTGlrZXdpc2UuCgkoaWE2NF9leHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEFSX1VOQVRfUkVHTlVNKTogTmV3LgoJKEZJUlNUX1BTRVVET19SRUdJU1RFUik6IFVwZGF0ZS4KCShBUl9NX1JFR05PX1ApOiBVcGRhdGUuCgkoRklYRURfUkVHUyk6IERvbid0IG1hcmsgdGhyZWUgbG9jYWwgcmVnaXN0ZXJzIGFzIHVzZWQuCgkoRVhUUkFfQ0NfTU9ERVMpOiBOZXcuCgkoU0VMRUNUX0NDX01PREUpOiBOZXcuCgkoSEFSRF9SRUdOT19OUkVHUyk6IEFsbG93IERJbW9kZSBpbiBwMDsgaGFuZGxlIENDSW1vZGUuCgkoSEFSRF9SRUdOT19NT0RFX09LKTogRGlzYWxsb3cgQ0NJbW9kZSBmcm9tIG5vbi1wcmVkaWNhdGVzLgoJKEZSQU1FX0dST1dTX0RPV05XQVJEKTogVW5zZXQuCgkoU1RBUlRJTkdfRlJBTUVfT0ZGU0VUKTogWmVyby4KCShFTElNSU5BQkxFX1JFR1MpOiBFbGltaW5hdGUgZnJvbSB0aGUgc29mdCB0byBoYXJkIGZyYW1lIHBvaW50ZXIuCgkoSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiBEZWZlciB0byBvdXQgb2YgbGluZSBmdW5jdGlvbi4KCShIQVJEX0ZSQU1FX1BPSU5URVJfUkVHTlVNKTogTmV3LgoJKENBTl9ERUJVR19XSVRIT1VUX0ZQKTogRGVmaW5lLgoJKFRSQU1QT0xJTkVfVEVNUExBVEUpOiBSZW1vdmUuCgkoVFJBTVBPTElORV9TSVpFKTogTG93ZXIgdG8gMzIuCgkoVFJBTVBPTElORV9BTElHTk1FTlQpOiBMb3dlciB0byA2NC4KCShJTklUSUFMSVpFX1RSQU1QT0xJTkUpOiBEZWZlciB0byBvdXQgb2YgbGluZSBmdW5jdGlvbi4KCShQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgaWE2NF9ncF9zYXZlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kOiBQdXJnZSB1bnVzZWQgdW5zcGVjcy4KCShtb3ZzaSBwYXR0ZXJucyk6IEFsbG93IG1vdmVzIHRvL2Zyb20gQVJfTV9SRUdTLgoJKG1vdmRpIHBhdHRlcm5zKTogQWxsb3cgbW92ZXMgdG8vZnJvbSBwMC4KCShjYWxsIHBhdHRlcm5zKTogTW92ZSBtb3N0IHNldGptcCBoYWNrZXJ5IHRvIGlhNjRfZ3Bfc2F2ZV9yZWcuCgkoZ3Jfc3BpbGwsIGdyX3Jlc3RvcmUpOiBJbmRpY2F0ZSBhci51bmF0IHJlYWQvd3JpdHRlbi4KCShub25sb2NhbF9nb3RvKTogRG9uJ3QgcGFzcyBvbGQgZnJhbWVfcG9pbnRlci4KCShub25sb2NhbF9nb3RvX3JlY2VpdmVyKTogUmVtb3ZlLgoJKGV4Y2VwdGlvbl9yZWNlaXZlcik6IE5ldy4KCShidWlsdGluX3NldGptcF9zZXR1cCk6IE5ldy4KCShidWlsdGluX3NldGptcF9yZWNlaXZlcik6IE5ldy4KCSogY29uZmlnL2lhNjQvbGliMWZ1bmNzLmFzbSAoX19pYTY0X3NhdmVfc3RhY2tfbm9ubG9jYWwpOiBCdW5kbGUuCgkoX19pYTY0X25vbmxvY2FsX2dvdG8pOiBCdW5kbGUuICBEb24ndCBraWxsIHI3LgoJKF9faWE2NF9yZXN0b3JlX3N0YWNrX25vbmxvY2FsKTogTGlrZXdpc2UuCgkoX19pYTY0X3RyYW1wb2xpbmUpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKERCWF9SRUdJU1RFUl9OVU1CRVIpOiBEZWZlciB0byBvdXQgb2YgbGluZQoJZnVuY3Rpb24uCgkqIGNvbmZpZy9pYTY0L3QtaWE2NCAoTElCMUFTTUZVTkNTKTogQWRkIF9fdHJhbXBvbGluZS4KCjIwMDAtMDgtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmcmFtZS5oIChpYTY0X2ZyYW1lX3N0YXRlKTogQWRkIG15X3BzcC4KCSogbGliZ2NjMi5jIChpYTY0X3Rocm93X2hlbHBlcik6IEFkZCB0aHJvd19zcCBhcmd1bWVudC4KCShfX3Rocm93KTogUGFzcyBpdCBpbi4gIERvbid0IGNsb2JiZXIgcjcuCgkqIGNvbmZpZy9pYTY0L2ZyYW1lLWlhNjQuYyAoaW5pdF9pYTY0X3JlZ19sb2MpOiBNYXJrIGlubGluZS4KCShleGVjdXRlX29uZV9pYTY0X2Rlc2NyaXB0b3IpIFttZW1fc3RhY2tfdl06IFNldHMgcHNwLndoZW4KCWFuZCBub3RoaW5nIHRvIGRvIHdpdGggc3AuCgkobm9ybWFsaXplX3JlZ19sb2MpOiBVc2UgZnJhbWUtPm15X3BzcC4KCShmcmFtZV90cmFuc2xhdGUpOiBIYW5kbGUgZnJhbWUtcG9pbnRlci1sZXNzIGZ1bmN0aW9ucy4gIFNldAoJc3BpbGxfYmFzZSBjb3JyZWN0bHksIGluIGFic2VuY2Ugb2YgYmVpbmcgdG9sZC4KCShfX2J1aWxkX2lhNjRfZnJhbWVfc3RhdGUpOiBOZXcgc3AgYXJndW1lbnQuICBGaWxsIGluIGZyYW1lLT5teV9zcC4KCShfX2lhNjRfYmFja3RyYWNlX2hlbHBlcik6IE5ldyBzcCBhcmd1bWVudC4gIFVzZQoJYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyBpbnN0ZWFkIG9mIGxhYmVsIGFkZHJlc3Nlcy4KCShwcmludF9yZWNvcmQpIFttZW1fc3RhY2tfdl06IE5vIHNpemUgbWVtYmVyLgoKMjAwMC0wOC0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlZ2NsYXNzLmMgKGNob29zZV9oYXJkX3JlZ19tb2RlKTogSXRlcmF0ZSBvdmVyIGFsbCBDQyBtb2Rlcy4KCjIwMDAtMDgtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0bS50ZXhpIChMT0NBTF9SRUdOTyk6IERvY3VtZW50LgoJKiBmbG93LmMgKExPQ0FMX1JFR05PLCBFUElMT0dVRV9VU0VTKTogUHJvdmlkZSBkZWZhdWx0LgoJKG1hcmtfcmVnc19saXZlX2F0X2VuZCk6IERvbid0IG1hcmsgTE9DQUxfUkVHTk8gcmVnaXN0ZXJzLgoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IExpa2V3aXNlIHdoZW4gY29uc2lkZXJpbmcgbm9ubG9jYWwgbGFiZWxzLgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChMT0NBTF9SRUdOTyk6IE5ldy4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKExPQ0FMX1JFR05PKTogTmV3LgoKMjAwMC0wOC0wOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1sZXguYyAoeXlsZXgpOiBEb24ndCBhbGxvdyBpbnRlZ2VyIHN1ZmZpeGVzICdMVUwnLCAnTGwnLCAnbEwnLgoKMjAwMC0wOC0wNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYzogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5nIG1lc3NhZ2VzLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oOiBBZGQgcHJvdG90eXBlIGZvciBlcXVhbGl0eV9vcC4KCgkqIG1uMTAzMDAuaCAoVEFSR0VUX1NXSVRDSEVTKTogRG9jdW1lbnQgYC1tYW0zMycuCgoyMDAwLTA4LTA3ICBHcmFoYW0gU3RvdHQgIDxncmFoYW1zQGN5Z251cy5jby51az4KCgkqIG1uMTAzMDAubWQ6IFVzZSBub25pbW1lZGlhdGVfb3BlcmFuZCBpbnN0ZWFkIG9mIGdlbmVyYWxfb3BlcmFuZAoJb24gb3V0cHV0IG9wZXJhbmRzLgoKCSogbW4xMDMwMC5oIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogTGltaXQgbWVtb3J5IHJlbG9hZHMuCgoyMDAwLTA4LTA3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHNoLmggKEVYVFJBX0NPTlNUUkFJTlRfUSk6IEFkanVzdCB0byBHTlUgQ29kaW5nIFN0YW5kYXJkcy4KCSogc2guYyAoZXhwYW5kX2Jsb2NrX21vdmUpOiBCcmVhayBsb25nIGxpbmVzLgoJKGV4cGFuZF9hc2hpZnRydCwgZnBzY3Jfc2V0X2Zyb21fbWVtKTogTGlrZXdpc2UuCgkqIHNoLm1kIChtdWxzaTMpOiBMaWtld2lzZS4KCShtb3ZkaSk6IEFkanVzdCBzcGFjaW5nLgoKMjAwMC0wOC0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQpOiBEb24ndCByZXF1aXJlIE1FTV9JTl9TVFJVQ1RfUC4KCSogZXhwci5jIChlbWl0X2dyb3VwX3N0b3JlKTogRG9uJ3Qgc2V0IGl0LgoKMjAwMC0wOC0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBpbnZva2UudGV4aSAoT3B0aW9ucyBmb3IgRGVidWdnaW5nIFlvdXIgUHJvZ3JhbSBvciBHQ0MpOiBSZW1vdmUKCWR1cGxpY2F0ZSBlbnRyaWVzIGZvciAndycgYW5kICd6Jy4KCgkqIGZsb3cuYzogRml4IGEgY29tbWVudCB0eXBvLgoKU3VuIEF1ZyAgNiAyMzo0NzozNSAyMDAwICBPdmlkaXUgUHJlZGVzY3UgIDxvdmlkaXVAY3VwLmhwLmNvbT4KCgkqIGMtcGFyc2UuaW46IENoYW5nZWQgdGhlIGxhbmd1YWdlIHN0cmluZyBmb3IgT2JqZWN0aXZlLUMgdG8gIkdOVQoJT2JqZWN0aXZlLUMiLgoKU3VuIEF1ZyAgNiAxMTo1NDowMyAyMDAwICBPdmlkaXUgUHJlZGVzY3UgIDxvdmlkaXVAY3VwLmhwLmNvbT4KCgkqIGd0aHItcG9zaXguaDogSW50ZWdyYXRlZCBDaHJpcyBCYWxsJ3MgPGNiYWxsQGZtY28uY29tPiBjaGFuZ2VzCgl0byBpbXByb3ZlIHRoZSBQb3NpeCB0aHJlYWQgc3VwcG9ydCBmb3IgT2JqZWN0aXZlLUMuCgoyMDAwLTA4LTA2ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5oIChlbnVtIGNfdHJlZV9pbmRleCk6IEFkZCBDVElfU0lHTkVEX1NJWkVfVFlQRSBhbmQKCUNUSV9VTlNJR05FRF9QVFJESUZGX1RZUEUuCgkoc2lnbmVkX3NpemVfdHlwZV9ub2RlKTogRGVmaW5lLgoJKHVuc2lnbmVkX3B0cmRpZmZfdHlwZV9ub2RlKTogRGVmaW5lLgoJKiBjLWRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDcmVhdGUgdGhlCglzaWduZWRfc2l6ZV90eXBlX25vZGUgYW5kIHVuc2lnbmVkX3B0cmRpZmZfdHlwZV9ub2RlIHR5cGVzLgoJKiBjLWNvbW1vbi5jIChUX1NDKTogRGVmaW5lLgoJKFRfU1NUKTogRGVmaW5lLgoJKFRfVVBEKTogRGVmaW5lLgoJKHByaW50X2NoYXJfdGFibGUpOiBVc2UgVF9TU1QgZm9yICV6ZCwgJXppLCAlem4uICBVc2UgVF9VUEQgZm9yCgkldG8sICV0dSwgJXR4LCAldFguICBBbGxvdyAlaGhuIChUX1NDKS4gIEFkZCAiYyIgdG8gdGhlIGZsYWdzIGZvcgoJJXMgYW5kICVwLgoJKHNjYW5fY2hhcl90YWJsZSk6IFVzZSBUX1NDIGZvciAlaGhkLCAlaGhpLCAlaGhuLiAgVXNlIFRfU1NUIGZvcgoJJXpkLCAlemksICV6bi4gIFVzZSBUX1VQRCBmb3IgJXRvLCAldHUsICV0eCwgJXRYLiAgQWRkICJjIiB0byB0aGUKCWZsYWdzIGZvciAlYywgJXMgYW5kICVbLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogT25seSBhbGxvdyBsZW5pZW5jeSBmb3Igc2lnbmVkbmVzcyBvZiB0YXJnZXRzCglvZiBjaGFyYWN0ZXIgcG9pbnRlcnMgKHdoZW4gcGVkYW50aWMpIGZvciBmb3JtYXRzIGZsYWdnZWQgd2l0aAoJImMiLCBzbyBmb3Igc3RyaW5ncyBidXQgbm90IGZvciAlaGggZm9ybWF0cy4gIFdoZW4gcGVkYW50aWMsIGRvbid0CglhbGxvdyBjaGFyYWN0ZXIgcG9pbnRlcnMgdG8gc3Vic3RpdHV0ZSBmb3Igdm9pZCBwb2ludGVycyBpZiBhCglzZWNvbmQgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gaXMgcHJlc2VudC4KCjIwMDAtMDgtMDYgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaW52b2tlLnRleGkgKE9wdGlvbnMgZm9yIERlYnVnZ2luZyBZb3VyIFByb2dyYW0gb3IgR0NDKTogVXBkYXRlCgl0aGUgbmFtZXMgb2YgZHVtcCBmaWxlcy4KCgkqIGg4MzAwLmMgKGRvc2l6ZSk6IFJlYXJyYW5nZSBjb2RlIGZvciBjb25jaXNlbmVzcy4KCShzcGxpdF9hZGRzX3N1YnMpOiBMaWtld2lzZS4KCgkqIGxvb3AuYzogRml4IGZvcm1hdHRpbmcuCgoJKiBkd2FyZjJvdXQuYzogRml4IGZvcm1hdHRpbmcuCgoJKiB0bS50ZXhpIChGVU5DVElPTl9BUkdfUEFSVElBTF9OUkVHUyk6IEZpeCBhIHR5cG8uCgoJKiBleHByLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOC0wNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcnM2MDAwLmMgKHJzNjAwMF9tYXliZV9kZWFkKTogUHJvdG90eXBlLgoKMjAwMC0wOC0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2dvdG8pOiBEbyB2aXJ0dWFsX3N0YWNrX3ZhcnNfcnR4IHJlcGxhY2VtZW50IGZvcgoJSEFWRV9ub25sb2NhbF9nb3RvIGFzIHdlbGwuCgkqIGNvbmZpZy9pOTYwL2k5NjAubWQgKG5vbmxvY2FsX2dvdG8pOiBEb24ndCBkbyBpdCBoZXJlLgoJKiBjb25maWcvcGovcGoubWQgKG5vbmxvY2FsX2dvdG8pOiBMaWtld2lzZS4KCjIwMDAtMDgtMDcgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAodHJ5X3N3YXBfY29weV9wcm9wKTogTmV3IGZ1bmN0aW9uLgoJKGxvYWRfbWVtcyk6IFJlbmFtZSBjb3BpZXMgdG8gbG9hZF9jb3BpZXMgYW5kIGFkZCBuZXcgcmVnc2V0CglzdG9yZV9jb3BpZXMuICBDaGVjayBmb3Igc2V0cyBvZiBzaGFkb3cgcmVnaXN0ZXJzIGFuZCBtYXJrCglpbiBzdG9yZV9jb3BpZXMuICAgQ2FsbCB0cnlfc3dhcF9jb3B5X3Byb3AgZm9yIHJlZ2lzdGVycwoJbWFya2VkIGluIHN0b3JlX2NvcGllcy4KClN1biBBdWcgIDYgMDA6NTQ6NDIgMjAwMCAgT3ZpZGl1IFByZWRlc2N1ICA8b3ZpZGl1QGN1cC5ocC5jb20+CgoJKiBvYmpjL29iamMtYWN0LmM6IE5ldyBjb21tYW5kIGxpbmUgb3B0aW9uIC1mY29uc3RhbnQtc3RyaW5nLWNsYXNzCgl0byBhbGxvdyBzcGVjaWZ5aW5nIGEgdXNlciBkZWZpbmVkIGNvbnN0YW50IHN0cmluZyBjbGFzcywKCWRpZmZlcmVudCBmcm9tIE5YQ29uc3RhbnRTdHJpbmcuCgoJKiB0b3BsZXYuYzogTW92ZWQgdGhlIE9iamVjdGl2ZS1DIHNwZWNpZmljIG9wdGlvbnMgdG8KCW9iamMvbGFuZy1vcHRpb25zLmguCgoJKiBvYmpjL2xhbmctb3B0aW9ucy5oOiBNb3ZlZCB0aGUgT2JqZWN0aXZlLUMgc3BlY2lmaWMgb3B0aW9ucyBmcm9tCgl0b3BsZXYuYy4gQWRkZWQgLWZjb25zdGFudC1zdHJpbmctY2xhc3MuCgoyMDAwLTA4LTA1ICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAc2lieXRlLmNvbT4KCgkqIG1pcHMvZWxmLmggKENUT1JfTElTVF9CRUdJTiwgQ1RPUl9MSVNUX0VORCwKCURUT1JfTElTVF9CRUdJTiwgRFRPUl9MSVNUX0VORCk6IGNoYW5nZSB0eXBlIG9mCglfX0NUT1JfTElTVF9fIGZyb20gZnVuY19wdHIgYXJyYXkgdG8ganVzdCBmdW5jX3B0ciwgdG8KCWF2b2lkIGV4dHJhIGFsaWdubWVudCBpbXBvc2VkIG9uIGFycmF5cy4KCSogbWlwcy9lbGY2NC5oIChDVE9SX0xJU1RfQkVHSU4sIENUT1JfTElTVF9FTkQsCglEVE9SX0xJU1RfQkVHSU4sIERUT1JfTElTVF9FTkQpOiBMaWtld2lzZS4KCgkqIG1pcHMuaDogQ2xlYW4gdXAgY29tbWVudHMgYW5kIHNwYWNpbmcgbmVhciBNQVNLcy4KCShUQVJHRVRfVU5JWF9BU00pOiBEZWxldGUuCgkoTUFTS19NSVBTMTYsIE1BU0tfTk9fQ0hFQ0tfWkVST19ESVYsIE1BU0tfQ0hFQ0tfUkFOR0VfRElWLAoJTUFTS19VTklOSVRfQ09OU1RfSU5fUk9EQVRBKTogQ2hhbmdlIHZhbHVlcyB0byBtYWtlIG1hc2sKCXZhbHVlcyBjb250aWd1b3VzLgoKMjAwMC0wOC0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAocHJpbnRfY2hhcl90YWJsZSk6IEFkZCBlbnRyaWVzIGZvciB0aGUgWC9PcGVuICcKCWZvcm1hdCBmbGFnIChwcmludCBkZWNpbWFscyB3aXRoIGxvY2FsZSdzIHRob3VzYW5kcyBncm91cGluZwoJY2hhcmFjdGVyKS4gIE1ha2UgJUMgZXhwZWN0IHdpbnRfdC4KCShjaGVja19mb3JtYXRfaW5mbyk6IElmIHBlZGFudGljLCB3YXJuIHdoZW4gdGhlICVuJCBvcGVyYW5kCgludW1iZXIgZm9ybSBpcyB1c2VkLiAgQWxsb3cgZm9yIHRoZSAnIGZsYWc7IHdhcm4gYWJvdXQgaXQgaWYKCXBlZGFudGljLgoKMjAwMC0wOC0wNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogaTM4Ni5oIChGVU5DVElPTl9PS19GT1JfU0lCQ0FMTCk6ICBOb3QgT0sgaWYgREVDTCdzIHJldHVybgoJdHlwZSBpcyBhIGZsb2F0IG1vZGUsIGNmdW4tPmRlY2wncyByZXR1cm4gdHlwZSBpcyBub3QsIGFuZAoJVEFSR0VUX0ZMT0FUX1JFVFVSTlNfSU5fODAzODcuCgoyMDAwLTA4LTA0ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogY3BwbWFpbi5jIChjYl9kZWZfcHJhZ21hKTogU2tpcCB0aGUgZmlyc3QgdHdvIHRva2VucyBmcm9tIHRoZQoJdG9rZW4gbGlzdCwgd2hpY2ggYXJlIGFsd2F5cyBgIycgYW5kIGBwcmFnbWEnLgoKMjAwMC0wOC0wNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdHJlZS5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IE1vdmUgdG8uLi4KCSogZm9sZC1jb25zdC5jOiAuLi4gaGVyZS4gIEFsc28gaGFuZGxlIEJJTkRfRVhQUiBhbmQgUlRMX0VYUFIuCgkocnRsX2V4cHJfbm9ubmVnYXRpdmVfcCk6IE5ldy4KCSogdHJlZS5oOiBBZGQgcHJvdG90eXBlIGZvciBydGxfZXhwcl9ub25uZWdhdGl2ZV9wLgoKCSogcmVhbC5oIChDT05TVF9ET1VCTEVfTE9XLCBDT05TVF9ET1VCTEVfSElHSCwgQ09OU1RfRE9VQkxFX01FTSwKCUNPTlNUX0RPVUJMRV9DSEFJTjogTW92ZSB0by4uLgoJKiBydGwuaDogLi4uaGVyZS4gIFVzZSBYQ0lOVC9YQ0VYUC4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgdG9wbGV2Lm8gZnJvbSBPQkpTLiAgQWRkIHJ1bGUgdG8gbWFrZQoJbGliYmFja2VuZC5hOyBhZGQgbGliYmFja2VuZC5hIHRvIFNUQUdFU1RVRkYuICBBZGQgQkFDS0VORAoJdmFyaWFibGUuICBVc2UgQkFDS0VORCB3aGVuIGxpbmtpbmcgY2MxLCBub3QgT0JKUy4gIEFkZCBCQUNLRU5ECgl0byBWT0xfRklMRVMuCgoJKiBvYmpjL01ha2UtbGFuZy5pbiAoY2Mxb2JqKTogTGluayB3aXRoICQoQkFDS0VORCkuCgoyMDAwLTA4LTA1ICBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogY29uZmlnL2M0eC9jNHgubWQgKHJldHVybl9pbmRpcmVjdF9pbnRlcm5hbCk6IE5ldy4KCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2V4cGFuZF9lcGlsb2d1ZSk6IFVzZSBpdC4KCjIwMDAtMDgtMDQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKHRpbWVfY2hhcl90YWJsZSk6IE1hcmsgdXAgZm9ybWF0cyBhZGRlZCBpbiBDOTkgYW5kCgltYWtlIG90aGVyIGNvcnJlY3Rpb25zLiAgJUQgYW5kICVnIHdlcmUgYWRkZWQgaW4gQzk5LiAgJU9nIGlzIGFuCglleHRlbnNpb24uICAlRVggaXMgcGVybWl0dGVkLiAgJVIsICVULCAlbiwgJXIsICV0IHdlcmUgYWRkZWQgaW4KCUM5OS4gICVlIHdhcyBhZGRlZCBpbiBDOTkuICAlT2ogaXMgYW4gZXh0ZW5zaW9uLiAgJUcgYW5kICV6IGFyZSBpbgoJQzk5IHJhdGhlciB0aGFuIEdOVSBleHRlbnNpb25zLCBidXQgJU9HIGFuZCAlT3ogYXJlIGV4dGVuc2lvbnMuCgklaCB3YXMgYWRkZWQgaW4gQzk5LiAgJUMgd2FzIGFkZGVkIGluIEM5OS4gICVPWSBhbmQgJU9DIGFyZQoJZXh0ZW5zaW9ucy4gIEFkZCB0aGUgQzk5IGZvcm1hdCAlRi4KCShjaGVja19mb3JtYXRfaW5mbyk6IElmIHBlZGFudGljIGFuZCBub3QgaW4gQzk5IG1vZGUsIHdhcm4gZm9yIEM5OQoJZm9ybWF0cywgJUUgYW5kICVPLgoKRnJpIEF1ZyAgNCAyMzowMTo1OCAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBmdW5jdGlvbi5jIChzY2hlZHVsZV9maXh1cF92YXJfcmVmcyk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dAoJb2YgcHV0X3JlZ19pbnRvX3N0YWNrLgoJKHB1dF9yZWdfaW50b19zdGFjayk6IFVzZSBpdC4KCShwdXRfdmFyX2ludG9fc3RhY2spOiBJbiBDT05DQVQgY2FzZSwgZml4dXAgdXAgcmVmZXJlbmNlcyBmb3IKCWNvbXBvbmVudHMgb25seSBhZnRlciBmaXhpbmcgdXAgcmVmZXJlbmNlcyB0byB0aGUgd2hvbGUgY29uY2F0LgoKMjAwMC0wOC0wNCAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AcG1zYy5jb20+CgoJKiBhbGlhcy5jIChtYXJrX2NvbnN0YW50X2Z1bmN0aW9uKTogVXNlIElOU05fUC4KCShpbml0X2FsaWFzX2FuYWx5c2lzKTogTGlrZXdpc2UuCgkqIGNvbWJpbmUuYyAoY29tYmluZV9pbnN0cnVjdGlvbnMpOiBVc2UgSU5TTl9QLgoJKGNhbl9jb21iaW5lX3ApOiBMaWtld2lzZS4KCSh0cnlfY29tYmluZSk6IExpa2V3aXNlLgoJKGRpc3RyaWJ1dGVfbm90ZXMpOiBMaWtld2lzZS4KCShkaXN0cmlidXRlX2xpbmtzKTogTGlrZXdpc2UuCgkqIGNzZS5jIChjc2VfYXJvdW5kX2xvb3ApOiBVc2UgSU5TTl9QLgoJKGludmFsaWRhdGVfc2tpcHBlZF9ibG9jayk6IExpa2V3aXNlLgoJKGNzZV9zZXRfYXJvdW5kX2xvb3ApOiBMaWtld2lzZS4KCShjc2VfZW5kX29mX2Jhc2ljX2Jsb2NrKTogTGlrZXdpc2UuCgkoZGVsZXRlX3RyaXZpYWxseV9kZWFkX2luc25zKTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKHVuc2hhcmVfYWxsX3J0bF9hZ2Fpbik6IFVzZSBJTlNOX1AuCgkodW5zaGFyZV9hbGxfcnRsXzEpOiBMaWtld2lzZS4KCShuZXh0X2NjMF91c2VyKTogTGlrZXdpc2UuCgkodHJ5X3NwbGl0IG1ha2VfaW5zbl9yYXcpOiBMaWtld2lzZS4KCShyZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMpOiBMaWtld2lzZS4KCSogZmluYWwuYyAoc2hvcnRlbl9icmFuY2hlcyk6IFVzZSBJTlNOX1AuCgkobGVhZl9yZW51bWJlcl9yZWdzKTogTGlrZXdpc2UuCgkobGVhZl9yZW51bWJlcl9yZWdzX2luc24pOiBMaWtld2lzZS4KCSogZmxvdy5jIChmaW5kX2xhYmVsX3JlZnMpOiBVc2UgSU5TTl9QLgoJKHZlcmlmeV93aWRlX3JlZyk6IExpa2V3aXNlLgoJKG5vdGljZV9zdGFja19wb2ludGVyX21vZGlmaWNhdGlvbik6IExpa2V3aXNlLgoJKGNvdW50X29yX3JlbW92ZV9kZWF0aF9ub3Rlcyk6IExpa2V3aXNlLgoJKHZlcmlmeV9mbG93X2luZm8pOiBMaWtld2lzZS4KCShjbGVhcl9sb2dfbGlua3MpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoZml4dXBfdmFyX3JlZnNfaW5zbnMpOiBVc2UgSU5TTl9QLgoJKGNvbXB1dGVfaW5zbnNfZm9yX21lbSk6IExpa2V3aXNlLgoJKiBnY3NlLmMgKGFsbG9jX2djc2VfbWVtKTogVXNlIElOU05fUC4KCShjb21wdXRlX3NldHMpOiBMaWtld2lzZS4KCShjb21wdXRlX2hhc2hfdGFibGUpOiBMaWtld2lzZS4KCShjbGFzc2ljX2djc2UpOiBMaWtld2lzZS4KCShjcHJvcCk6IExpa2V3aXNlLgoJKGluc2VydF9pbnNuX2VuZF9iYik6IExpa2V3aXNlLgoJKGRlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzXzEpOiBMaWtld2lzZS4KCSogZ2xvYmFsLmMgKGV4cGFuZF9wcmVmZXJlbmNlcyk6IFVzZSBJTlNOX1AuCgkoYnVpbGRfaW5zbl9jaGFpbik6IExpa2V3aXNlLgoJKiBncmFwaC5jIChub2RlX2RhdGEpOiBVc2UgSU5TTl9QLgoJKiBoYWlmYS1zY2hlZC5jIChwcmlvcml0eSk6IFVzZSBJTlNOX1AuCgkocm1fbGluZV9ub3Rlcyk6IExpa2V3aXNlLgoJKHJtX290aGVyX25vdGVzKTogTGlrZXdpc2UuCgkoZmluZF9pbnNuX3JlZ193ZWlnaHQpOiBMaWtld2lzZS4KCShpbml0X3RhcmdldF91bml0cyk6IExpa2V3aXNlLgoJKHNjaGVkdWxlX2Jsb2NrKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9ibG9ja19mb3J3YXJkX2RlcGVuZGVuY2VzKTogTGlrZXdpc2UuCgkoZGVidWdfZGVwZW5kZW5jaWVzKTogTGlrZXdpc2UuCgkoc2V0X3ByaW9yaXRpZXMpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGZ1bmN0aW9uX2Nhbm5vdF9pbmxpbmVfcCk6IFVzZSBJTlNOX1AuCgkoc2F2ZV9wYXJtX2luc25zKTogTGlrZXdpc2UuCgkoY29weV9pbnNuX2xpc3QpOiBMaWtld2lzZS4KCSoganVtcC5jIChtYXJrX2FsbF9sYWJlbHMpOiBVc2UgSU5TTl9QLgoJKG5ldmVyX3JlYWNoZWRfd2FybmluZyk6IExpa2V3aXNlLgoJKiBsY20uYyAob3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBVc2UgSU5TTl9QLgoJKiBsb2NhbC1hbGxvYy5jICh2YWxpZGF0ZV9lcXVpdl9tZW0pOiBVc2UgSU5TTl9QLgoJKG1lbXJlZl91c2VkX2JldHdlZW5fcCk6IExpa2V3aXNlLgoJKHVwZGF0ZV9lcXVpdl9yZWdzKTogTGlrZXdpc2UuCgkoYmxvY2tfYWxsb2MpOiBMaWtld2lzZS4KCShub19jb25mbGljdF9wKTogTGlrZXdpc2UuCgkqIGxvb3AuYyAoc2Nhbl9sb29wKTogVXNlIElOU05fUC4KCShmaW5kX2FuZF92ZXJpZnlfbG9vcHMpOiBMaWtld2lzZS4KCShjb3VudF9sb29wX3JlZ3Nfc2V0KTogTGlrZXdpc2UuCgkobG9vcF9yZWdfdXNlZF9iZWZvcmVfcCk6IExpa2V3aXNlLgoJKHN0cmVuZ3RoX3JlZHVjZSk6IExpa2V3aXNlLgoJKHJlY29tYmluZV9naXZzKTogTGlrZXdpc2UuCgkoY2hlY2tfZGJyYV9sb29wKTogTGlrZXdpc2UuCgkobG9hZF9tZW1zKTogTGlrZXdpc2UuCgkodHJ5X2NvcHlfcHJvcCk6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogVXNlIElOU05fUC4KCSogcmVjb2cuYyAoZmluZF9zaW5nbGVfdXNlKTogVXNlIElOU05fUC4KCSogcmVnLXN0YWNrLmMgKHN0YWNrX3JlZ3NfbWVudGlvbmVkKTogVXNlIElOU05fUC4KCShuZXh0X2ZsYWdzX3VzZXIpOiBMaWtld2lzZS4KCShzd2FwX3J0eF9jb25kaXRpb24pOiBMaWtld2lzZS4KCSogcmVnbW92ZS5jIChtYXJrX2ZsYWdzX2xpZmVfem9uZXMpOiBVc2UgSU5TTl9QLgoJKG9wdGltaXplX3JlZ19jb3B5XzEpOiBMaWtld2lzZS4KCShvcHRpbWl6ZV9yZWdfY29weV8yKTogTGlrZXdpc2UuCgkob3B0aW1pemVfcmVnX2NvcHlfMyk6IExpa2V3aXNlLgoJKHJlZ19pc19yZW1vdGVfY29uc3RhbnRfcCk6IExpa2V3aXNlLgoJKGZpeHVwX21hdGNoXzIpOiBMaWtld2lzZS4KCShyZWdtb3ZlX29wdGltaXplKTogTGlrZXdpc2UuCgkoZml4dXBfbWF0Y2hfMSk6IExpa2V3aXNlLgoJKiByZWdyZW5hbWUuYyAoYnVpbGRfZGVmX3VzZSk6IFVzZSBJTlNOX1AuCgkocmVwbGFjZV9yZWdfaW5fYmxvY2spOiBMaWtld2lzZS4KCShjb25zaWRlcl91c2UpOiBMaWtld2lzZS4KCSogcmVsb2FkLmMgKGZpbmRfZXF1aXZfcmVnKTogVXNlIElOU05fUC4KCSogcmVsb2FkMS5jIChyZWxvYWQpOiBVc2UgSU5TTl9QLgoJKG1heWJlX2ZpeF9zdGFja19hc21zKTogTGlrZXdpc2UuCgkoY2FsY3VsYXRlX25lZWRzX2FsbF9pbnNucyk6IExpa2V3aXNlLgoJKHJlbG9hZF9hc19uZWVkZWQpOiBMaWtld2lzZS4KCShlbWl0X291dHB1dF9yZWxvYWRfaW5zbnMpOiBMaWtld2lzZS4KCShkZWxldGVfYWRkcmVzc19yZWxvYWRzXzEpOiBMaWtld2lzZS4KCShyZWxvYWRfY3NlX3JlZ3NfMSk6IExpa2V3aXNlLgoJKHJlbG9hZF9jb21iaW5lKTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9tb3ZlMmFkZCk6IExpa2V3aXNlLgoJKiByZW9yZy5jIChyZWR1bmRhbnRfaW5zbik6IFVzZSBJTlNOX1AuCgkoZGJyX3NjaGVkdWxlKTogTGlrZXdpc2UuCgkqIHJlc291cmNlLmMgKGZpbmRfZGVhZF9vcl9zZXRfcmVnaXN0ZXJzKTogVXNlIElOU05fUC4KCShtYXJrX3RhcmdldF9saXZlX3JlZ3MpOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jIChyZWdfdXNlZF9iZXR3ZWVuX3ApOiBVc2UgSU5TTl9QLgoJKHJlZ19yZWZlcmVuY2VkX2JldHdlZW5fcCk6IExpa2V3aXNlLgoJKHJlZ19zZXRfYmV0d2Vlbl9wKTogTGlrZXdpc2UuCgkocmVnX3NldF9wKTogTGlrZXdpc2UuCgkoc2luZ2xlX3NldCk6IExpa2V3aXNlLgoJKG11bHRpcGxlX3NldHMpOiBMaWtld2lzZS4KCShmaW5kX2xhc3RfdmFsdWUpOiBMaWtld2lzZS4KCShyZWdfc2V0X2xhc3QpOiBMaWtld2lzZS4KCShmaW5kX3JlZ19ub3RlKTogTGlrZXdpc2UuCgkoZmluZF9yZWdub19ub3RlKTogTGlrZXdpc2UuCgkqIHNpYmNhbGwuYyAoc2VxdWVuY2VfdXNlc19hZGRyZXNzb2YpOiBVc2UgSU5TTl9QLgoJKiBzaW1wbGlmeS1ydHguYyAoY3NlbGliX3Byb2Nlc3NfaW5zbik6IFVzZSBJTlNOX1AuCgkqIHNzYS5jIChmaW5kX2V2YWx1YXRpb25zKTogVXNlIElOU05fUC4KCShyZW5hbWVfYmxvY2spOiBMaWtld2lzZS4KCShyZW5hbWVfZXF1aXZhbGVudF9yZWdzKTogTGlrZXdpc2UuCgkqIHVucm9sbC5jIChsb29wX2ZpbmRfZXF1aXZfdmFsdWUpOiBVc2UgSU5TTl9QLgoJKHNldF9kb21pbmF0ZXNfdXNlKTogTGlrZXdpc2UuCgkqIHZhcmFzbS5jIChtYXJrX2NvbnN0YW50X3Bvb2wpOiBVc2UgSU5TTl9QLgoJKG1hcmtfY29uc3RhbnRzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9kb2VzX2Z1bmN0aW9uX25lZWRfZ3ApOiBVc2UgSU5TTl9QLgoJKGFscGhhZXY0X25leHRfZ3JvdXApOiBMaWtld2lzZS4KCShhbHBoYWV2NV9uZXh0X2dyb3VwKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9wcm9jZXNzX2FmdGVyX3JlbG9hZCk6IFVzZSBJTlNOX1AuCgkoYzR4X3JwdGJfcnB0c19wKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwczE2X29wdGltaXplX2dwKTogVXNlIElOU05fUC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAodXNlc19UT0MpOiBVc2UgSU5TTl9QLgoJKHJzNjAwMF9hZGp1c3RfcHJpb3JpdHkpOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmMgKHNoX2xvb3BfYWxpZ24pOiBVc2UgSU5TTl9QLgoJKG1hY2hpbmVfZGVwZW5kZW50X3Jlb3JnKTogTGlrZXdpc2UuCgkoc3BsaXRfYnJhbmNoZXMpOiBMaWtld2lzZS4KCSogY29uZmlnL3RhaG9lL3RhaG9lLmMgKHRhaG9lX2NtcF9jaGVjayk6IFVzZSBJTlNOX1AuCgpGcmkgQXVnICA0IDExOjQzOjQ5IDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGNvbWJpbmUuYyAocmVjb2dfZm9yX2NvbWJpbmUpOiBSZW1vdmUgdGhlIG9sZCBub3RlcwoJcHJpb3IgdG8gYXR0ZW1wdGluZyB0byByZWNvZ25pemUgdGhlIG5ldyBwYXR0ZXJuLgoJKGRpc3RyaWJ1dGVfbm90ZXMpOiBJZ25vcmUgUkVHX05PTk5FRyBub3Rlcy4KCjIwMDAtMDgtMDQgIENoYW5kcmFrYWxhIENoYXZ2YSAgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RydWN0b3IpOiBBZGQgLmFsaWduIDAgZm9yIHBhY2tlZCB2YXJzLgoKMjAwMC0wOC0wNCAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBjb25maWd1cmUuaW46IFVzZSBkZWZhdWx0IHRocmVhZF9maWxlIGV2ZW4gd2hlbiBlbmFibGVfdGhyZWFkcyBpcwoJeWVzIG9yIGRjZSBiZWNhdXNlIGhwdXgxMC4yMCBwYSBwb3J0IHVzZXMgTVVMVElMSUIgaW1wbGVtZW50YXRpb24uCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCgkqIGd0aHItZGNlLmggKF9fZ3RocmVhZF9vYmpjX2NvbmRpdGlvbl9hbGxvY2F0ZSk6IEZpeCB0eXBvLgoKMjAwMC0wOC0wNCAgRG9ubiBUZXJyeSAoZG9ubnRlQG1pY3Jvc29mdC5jb20pCgoJKiBwcmVmaXguYyAodHJhbnNsYXRlX25hbWUpOiBEb24ndCBzdHJpcCB0cmFpbGluZyBESVJfU0VQQVJBVE9SLgoKMjAwMC0wOC0wNCAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGkzODYveC1kamdwcDogRGVsZXRlIGNvZGUgdGhhdCBjb25kaXRpb25hbGx5IG1vZGlmaWVzIHRhcmdldF9hbGlhcy4KCURlbGV0ZSBjb2RlIHRoYXQgY29uZGl0aW9uYWxseSBtb2RpZmllcyAndmVyc2lvbicuCglEZWxldGUgWF9DUFBGTEFHUy4gQWRkIGNvbW1lbnQgZm9yIFNZU1RFTV9IRUFERVJfRElSLgoJKiBpMzg2L3htLWRqZ3BwLmggKEdDQ19EUklWRVJfSE9TVF9JTklUSUFMSVpBVElPTik6IE5ldyBtYWNyby4KCSogZ2NjLmMgKG1haW4pOiBVc2UgaXQuCgkqIGNvbmZpZy9pMzg2L3htLWRqZ3BwLmggKFVQREFURV9QQVRIX0hPU1RfQ0FOT05JQ0FMSVpFKTogTmV3IG1hY3JvLgoJKiBwcmVmaXguYyAodXBkYXRlX3BhdGgpOiBVc2UgaXQuCgkqIGkzODYvZGpncHAuaCAoU1RBTkRBUkRfSU5DTFVERV9ESVIpOiBEZWZpbmUuCgkoTURfRVhFQ19QUkVGSVgpOiBTZXQgdG8gJy9kZXYvZW52L0RKRElSL2Jpbi8nLgoJKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogQWRkIGNvZGUgYXR0cmlidXRlIHRvIHNlY3Rpb25zIGNvbnRhaW5pbmcKCWNvZGUuCgkoU1VQUE9SVFNfV0VBSywgU1VQUE9SVFNfT05FX09OTFkpOiBEZWZhdWx0IHRvIHRydWUuCgkoU1VCVEFSR0VUX1NXSVRDSEVTKTogQWRqdXN0LgoJKFdDSEFSX1VOU0lHTkVELCBXQ0hBUl9UWVBFX1NJWkUsIFdDSEFSX1RZUEUpOiBVbmRlZmluZSBiZWZvcmUKCWRlZmluaW5nLgoJKFdJTlRfVFlQRSwgU0laRV9UWVBFLCBQVFJESUZGX1RZUEUpOiBEZWZpbmUuCgoyMDAwLTA4LTA0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5oIChmbGFnX2lzb2M5NCk6IERlY2xhcmUuCgkqIGMtZGVjbC5jIChmbGFnX2lzb2M5NCk6IERlZmluZS4KCShjX2RlY29kZV9vcHRpb24pOiBTZXQgZmxhZ19pc29jOTQgYXMgYXBwcm9wcmlhdGUuCgkqIGMtY29tbW9uLmMgKFRfUEQsIFRfSU0sIFRfVUlNKTogRGVmaW5lLgoJKGZvcm1hdF9jaGFyX2luZm8pOiBBZGQgdGxlbiBhbmQgamxlbi4KCShwcmludF9jaGFyX3RhYmxlKTogQWRkIGVudHJpZXMgZm9yICV0IGFuZCAlai4gIEFsbG93ICV6bi4gIEFsbG93CgklRi4gIEFsbG93ICVsZi4KCShzY2FuX2NoYXJfdGFibGUpOiBBZGQgZW50cmllcyBmb3IgJXQgYW5kICVqLiAgQWxsb3cgJUYuICBBbGxvdwoJJWxbLgoJKHRpbWVfY2hhcl90YWJsZSk6IEFkZCBOVUxMIGVudHJpZXMgZm9yICV0IGFuZCAlai4KCShjaGVja19mb3JtYXRfaW5mbyk6IEFsbG93IGZvciAldCBhbmQgJWouICBXYXJuIGZvciAlRiBpZiBwZWRhbnRpYwoJYW5kIG5vdCBDOTkuICBXYXJuIGZvciAlbGMsICVscyBhbmQgJWxbIGlmIHBlZGFudGljIGFuZCBub3QgQzk0LgoJV2FybiBmb3IgcHJpbnRmICVsZiBpZiBwZWRhbnRpYyBhbmQgbm90IEM5OS4gIERvbid0IHdhcm4gZm9yIGVtcHR5CglwcmVjaXNpb24uICBBbGxvdyBwcmVjaXNpb24gYXJndW1lbnQgdG8gYmUgdW5zaWduZWQgaW50LiAgSWYKCXBlZGFudGljLCB3YXJuIGZvciAlcCBwYXNzZWQgYW4gYXJndW1lbnQgbm90IGEgcG9pbnRlciB0byBwb3NzaWJseQoJcXVhbGlmaWVkIHZvaWQgb3IgYSBwb3NzaWJseSBxdWFsaWZpZWQgY2hhcmFjdGVyIHR5cGUsIGFuZCBmb3IKCXBvaW50ZXIgdGFyZ2V0cyBvZiB0aGUgd3Jvbmcgc2lnbiwgZXhjZXB0IGZvciBjaGFyYWN0ZXIgcG9pbnRlcnMuCgoyMDAwLTA4LTA0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnaW5jbHVkZS9zdGRkZWYuaDogRG9uJ3QgZGVjbGFyZSB3aW50X3QgdW5sZXNzIF9fbmVlZF93aW50X3QuCgkqIGMtY29tbW9uLmggKGVudW0gY190cmVlX2luZGV4KTogQWRkIENUSV9XSU5UX1RZUEUuCgkod2ludF90eXBlX25vZGUpOiBEZWZpbmUuCgkqIGMtZGVjbC5jIChXSU5UX1RZUEUpOiBEZWZpbmUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDcmVhdGUgdGhlIHdpbnRfdHlwZV9ub2RlIHR5cGUuCgkqIGMtY29tbW9uLmMgKFRfV0kpOiBEZWZpbmUuCgkocHJpbnRfY2hhcl90YWJsZSk6IFVzZSBUX1dJIGZvciAlbGMgZm9ybWF0LgoKMjAwMC0wOC0wNCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvOiAgVmVyaWZpZWQgdGhhdCB0aGUgTVNET1MgcGF0Y2ggZG9lcyBub3QgYnJlYWsKCXRoZSBVTklYIGZ1bmN0aW9uYWxpdHkgYW5kIGFwcGxpZWQgdGhlIG5leHQgdGhyZWUgcGF0Y2hlcwoJZnJvbSBKdWx5OgoKMjAwMC0wNy0yOCAgRWxpIFphcmV0c2tpaSAgPGVsaXpAaXMuZWx0YS5jby5pbD4KCgkqIGZpeGluYy9maXhmaXhlcy5jIChtYWluKSBbX19NU0RPU19fXTogQXZvaWQgb3ZlcndyaXRpbmcgdGhlCglvdXRwdXQgZmlsZSB3aXRoIHRoZSB0ZW1wb3Jhcnkgb25lIGJ5IGFwcGVuZGluZyAiLlgiIHRvIGdlbmVyYXRlCgl0aGUgdGVtcG9yYXJ5IGZ1aWxlJ3MgbmFtZS4gIElmIHRoZSBvdXRwdXQgZmlsZSBhbHJlYWR5IGhhcyBhbgoJZXh0ZW5zaW9uLCByZXBsYWNlIGl0IHdpdGggIi5YIi4KCgkqIGZpeGluYy9maXhpbmNsLmMgKGZpeF93aXRoX3N5c3RlbSkgW19fTVNET1NfX106IFVzZSAkT1JJR0RJUiwKCW5vdCAkREVTVERJUiwgdG8gZmluZCBhcHBseWZpeC4gIFVzZSBzcHJpbnRmIGluc3RlYWQgb2Ygc25wcmludGY7CglyZWFsbG9jYXRlIHRoZSBjb21tYW5kIGJ1ZmZlciB3aGlsZSBjb3B5aW5nIHRoZSBjb21tYW5kLWxpbmUKCWFyZ3VtZW50LiAgUmVkaXJlY3QgdGhlIG91dHB1dCBkaXJlY3RseSB0byB0aGUgdGVtcG9yYXJ5IGZpbGUsCglpbnN0ZWFkIG9mIGdvaW5nIHRocm91Z2ggYW5vdGhlciB0ZW1wb3JhcnkgZmlsZS4KCShwcm9jZXNzKTogQ2xvc2UgdGhlIHRlbXBvcmFyeSBmaWxlIGJlZm9yZSB1bmxpbmtpbmcgaXQuCgkobWFjaGluZV9tYXRjaGVzKSBbX19NU0RPU19fXTogSWYgdGhlIG1hY2hpbmUgZG9lc24ndCBtYXRjaCwgc2V0Cgl0aGUgRkRfU0tJUF9URVNUIGZsYWcuICBQYXkgYXR0ZW50aW9uIHRvIHRoZSBGRF9NQUNIX0lGTk9UIGZsYWcuCgkocnVuX2NvbXBpbGVzKTogUGFzcyBwX2ZpeGQgYXJndW1lbnQgdG8gbWFjaGluZV9tYXRjaGVzLCBhcyBpdAoJZXhwZWN0cy4KCgkqIGZpeGluYy9maXhpbmNsLnNoOiBFeHBvcnQgT1JJR0RJUi4gIElmICRESkRJUiBpcyBzZXQgaW4gdGhlCgllbnZpcm9ubWVudCwgYXNzdW1lIHRoZXJlIGFyZSBubyBzeW1saW5rcyBpbiB0aGUgaW5jbHVkZQoJZGlyZWN0b3J5LiAgV2hlbiBjbGVhbmluZyB1cCB0aGUgRE9ORSBmaWxlcywgbG9vayBmb3IgdGhlbQoJY2FzZS1pbnNlbnNpdGl2ZWx5LiAgRG9uJ3QgdHJ5IHRvIHJlbW92ZSBzeW1saW5rcyBpZiB0aGV5IGFyZW4ndAoJdGhlcmUuCgoJKiBmaXhpbmMvZml4bGliLmMgKG1ha2VfcmF3X3NoZWxsX3N0cik6IEFjY2VwdCBuZXcgYXJndW1lbnQgc21heDsKCWFsbCBjYWxsZXJzIGNoYW5nZWQuICBEZWNsYXJlIHB6ICJjb25zdCBjaGFyICoiLCB0byBhdm9pZCBjb21waWxlcgoJd2FybmluZ3MuCgoJKiBmaXhpbmMvZml4bGliLmggKEVOVl9UQUJMRSk6IEdldCBPUklHRElSIGZyb20gdGhlIGVudmlyb25tZW50LgoJQ2hhbmdlIHByb3RvdHlwZSBvZiBtYWtlX3Jhd19zaGVsbF9zdHIuCgoyMDAwLTA3LTI3ICBFbGkgWmFyZXRza2lpICA8ZWxpekBpcy5lbHRhLmNvLmlsPgoKCSogZml4aW5jL2ZpeGluY2wuYyBbX19NU0RPU19fXTogRG9uJ3QgaW5jbHVkZSAic2VydmVyLmgiLgoJKGluaXRpYWxpemUpIFtfX01TRE9TX19dOiBVc2UgdGVtcG5hbS4KCShpbml0aWFsaXplKTogRG9uJ3QgdXNlIFNJR1BJUEUgaWYgaXQgaXMgbm90IGRlZmluZWQuCgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAobWFpbikgW19fTVNET1NfX106IGZyZW9wZW4gZm9yIHN0ZG91dCBzaG91bGQKCXJldHVybiBzdGRvdXQuCgoyMDAwLTA3LTI1ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9maXgqLltjaF06IHN1YnN0YW50aWFsbHkgcmV3b3JrZWQgdG8gbWFrZSBpdCBwb3NzaWJsZQoJdG8gcnVuIHRoaXMgcHJvZ3JhbSB3aXRob3V0IHVzaW5nIGZvcmsoMikgb3IgcGlwZSgyKSAoaS5lLiBpbgoJYSBET1MgZW52aXJvbm1lbnQpLgoKMjAwMC0wOC0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY3BwZGVmYXVsdC5oIChXSU5UX1RZUEUpOiBEZWZpbmUuCgkqIGNwcGluaXQuYyAoYnVpbHRpbl9hcnJheSk6IERlZmluZSBfX1dJTlRfVFlQRV9fLgoJKiB0cmFkY3BwLmMgKGluaXRpYWxpemVfYnVpbHRpbnMpOiBEZWZpbmUgX19XSU5UX1RZUEVfXy4KCSogdG0udGV4aSAoTk9fQlVJTFRJTl9XSU5UX1RZUEUsIFdJTlRfVFlQRSk6IERvY3VtZW50LgoKRnJpIEF1ZyAgNCAwNjo1Mzo0NiAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIChtaXBzX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogRG9uJ3QgYWxsb3cgcmVnaXN0ZXIrb2Zmc2V0CglpZiB0aGUgb2Zmc2V0IGlzIGxhcmdlIGFuZCBuZWdhdGl2ZSwgYW5kIHdlIGFyZSBjb21waWxpbmcKCWZvciA2NCBiaXQgcmVnaXN0ZXJzLgoKMjAwMC0wOC0wNCBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogZ2VuY29kZXMuYyAobWFpbik6IERlZmluZSBDT0RFX0ZPUl9ub3RoaW5nIGFzIHRoZSBsYXN0IHBvc3NpYmxlCglpbnNuX2NvZGVfbnVtYmVyICsgMS4KCjIwMDAtMDgtMDQgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAuYyAoZnVuY3Rpb25fcHJvbG9ndWUpOiBSZWFycmFuZ2UgY29kZSBmb3IgY29uY2lzZW5lc3MuCgkoZnVuY3Rpb25fZXBpbG9ndWUpOiBMaWtld2lzZS4KCSogaDgzMDAuaCAoT0tfRk9SX1UpOiBGaXggZm9ybWF0dGluZy4KCgkqIGNzZS5jOiBGaXggYSBjb21tZW50IHR5cG8uIEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOC0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHJldHVybl9pbmRpcmVjdF9pbnRlcm5hbCk6IE5ldy4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9lcGlsb2d1ZSk6IFVzZSBpdC4KCjIwMDAtMDgtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxleC5jIChwYXJzZV9uYW1lKTogTWlnaHQgaGF2ZSB0byBnbHVlIGEgQ1BQX09USEVSIHRva2VuCgliZWZvcmUgdGhlIG5hbWUuCgkobGV4X2xpbmUpOiBHbHVlIEAgb250byB0aGUgYmVnaW5uaW5nIG9mIGlkZW50aWZpZXJzIGFuZAoJc3RyaW5nIGNvbnN0YW50cywgaW4gT2JqZWN0aXZlLUMgbW9kZS4KCShvdXRwdXRfdG9rZW4sIHNwZWxsX3Rva2VuKTogSGFuZGxlIENQUF9PU1RSSU5HLgoJKGNhbl9wYXN0ZSwgbWF5YmVfcGFzdGVfd2l0aF9uZXh0KTogSGFuZGxlIHBhc3RpbmcgQCBvbnRvIHRoZQoJYmVnaW5uaW5nIG9mIGEgTkFNRSBvciBhIFNUUklORywgaW4gb2JqYyBtb2RlLgoKCSogY3BwbGliLmMgKGdldF9kZWZpbmVfbm9kZSk6IERvIG5vdCBwZXJtaXQgaWRlbnRpZmllcnMgdGhhdAoJYmVnaW4gd2l0aCBAIHRvIGJlICNkZWZpbmVkLgoJKiBjcHBtYWNyby5jIChDQU5fUEFTVEVfQUZURVIpOiBBZGQgQ1BQX09USEVSLgoJKiBjcHBsaWIuaCAoVFRZUEVfVEFCTEUpOiBBZGQgQ1BQX09TVFJJTkcuCgoJKiBjLWxhbmcuYywgb2JqYy9vYmpjLWFjdC5jIChidWlsZF9vYmpjX3N0cmluZyk6IERlbGV0ZS4KCSogYy10cmVlLmggKGJ1aWxkX29iamNfc3RyaW5nKTogRGVsZXRlIHByb3RvdHlwZS4KCSogb2JqYy9vYmpjLXRyZWUuZGVmOiBEZWxldGUgT0JKQ19TVFJJTkdfQ1NULgoJKiBjLWxleC5jICh5eWxleCk6IFVzZSBidWlsZF9zdHJpbmcgZm9yIGFsbCB0aHJlZSBraW5kcyBvZiBzdHJpbmdzLgoKCSogYy1wYXJzZS5pbiwgb2JqYy9vYmpjLWFjdC5jOiBVcGRhdGUgY29tbWVudGFyeS4KCjIwMDAtMDgtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHRlbmQudGV4aTogRml4IHR5cG8gaW4gbGFzdCBjaGFuZ2UuCgoJKiBleHRlbmQudGV4aTogQWRkIGNvbW1lbnRhcnkgb24gc3RhdGVtZW50LWV4cHJlc3Npb25zIGFuZCB0aGVpcgoJaW50ZXJhY3Rpb25zIHdpdGggQysrLgoKMjAwMC0wOC0wMyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGR3YXJmMi5oIChEV19MQU5HX0phdmEpOiBDaGFuZ2UgdmFsdWUgdG8gMHgwMDBiLgoJKiBkd2FyZi5oIChMQU5HX0pBVkEpOiBDaGFuZ2UgdmFsdWUgdG8gMHgwMDBiLgoKMjAwMC0wOC0wMyAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZ2VuX2NvbXBpbGVfdW5pdF9kaWUpOiBBZGQgamF2YSBsYW5ndWFnZSBzdXBwb3J0LgoJKGFkZF9ib3VuZF9pbmZvKTogQ2hlY2sgZm9yIGphdmEgbGFuZ3VhZ2UuCgkoaXNfamF2YSk6IE5ldyBmdW5jdGlvbi4KCSogZHdhcmZvdXQuYyAob3V0cHV0X2NvbXBpbGVfdW5pdF9kaWUpOiBEaXR0by4KCSogZHdhcmYuaCAoZHdhcmZfc291cmNlX2xhbmd1YWdlKTogQWRkIGphdmEgc291cmNlIGxhbmd1YWdlIHR5cGUuCgkqIGR3YXJmMi5oIChkd2FyZl9zb3VyY2VfbGFuZ3VhZ2UpOiBEaXR0by4KClRodSBBdWcgIDMgMjA6MzI6MjUgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWctc3RhY2suYyAoc3Vic3Rfc3RhY2tfcmVnc19wYXQpOiAgVXNlIHJlcGxhY2VfcmVnIHRvIHN3YXAKCW9wZXJhbmRzLgoKCSogaTM4Ni5jIChpeDg2X2V4cGFuZF9icmFuY2gpOiBNb2RlIG9mIGNvbXBhcmlzb24gaW4KCUlGX1RIRU5fRUxTRSBpcyBWT0lEbW9kZS4KClRodSBBdWcgIDMgMTA6MDU6NTMgMjAwMCAgQWtpa28gTWF0c3VzaGl0YSA8bWF0dXNpdGFAc3JhLmNvLmpwPgoKCSogZ2VuZ2VucnRsLmMsIHJ0bC5jOiBBdm9pZCAjZWxpZi4KCjIwMDAtMDgtMDMgIE1pY2hhZWwgUG9vbGUgIDxwb29sZUB0cm9pbHVzLm9yZz4KCgkqIHRtLnRleGkgKFJlZ2lzdGVyIENsYXNzZXMpOiBDbGFyaWZ5IG9yZGVyIG9mIHN1Yi1pbml0aWFsaXplcnMKCWluIFJFR19DTEFTU19DT05URU5UUy4KClRodSBBdWcgIDMgMTU6NTM6MDMgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCUZyb20gU0FJVE9IIE1hc2Fub2J1OgoJKiBzaC5oIChBU01fT1VUUFVUX1JFR19QVVNIKTogRml4IHN5bnRheC4KCjIwMDAtMDgtMDMgIERhdmlkIEJpbGxpbmdodXJzdCAgPERhdmlkLkJpbGxpbmdodXJzdEByaW90aW50by5jb20uYXU+CgoJKiBjb25maWcvaTM4Ni9jeWd3aW4uaDogUmVtb3ZlIC1yZW1hcCBmcm9tIENQUF9TUEVDIHNpbmNlIHRoaXMgb3B0aW9uCglpcyBub3Qgc3VwcG9ydGVkIGJ5IHRyYWRjcHAgYW5kIGlzbid0IGFjdHVhbGx5IG5lZWRlZCBmb3IgY3lnd2luLgoKMjAwMC0wOC0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBoODMwMC5jOiBGaXggYSBjb21tZW50IHR5cG8uCgkqIGg4MzAwLmggKE9LX0ZPUl9VKTogQWNjZXB0IGEgMzItYml0IGNvbnN0YW50IGFkZHJlc3Mgb24gSDhTLgoKCSoganVtcC5jOiBGaXggZm9ybWF0dGluZy4KCgkqIHRvcGxldi5jOiBGaXggZm9ybWF0dGluZy4KClRodSBBdWcgIDMgMDE6MDU6MzIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZmxvdy5jIChmaW5kX2F1dG9faW5jKTogVmVyaWZ5IHRoYXQgd2UndmUgZ290IGEgUkVHIGJlZm9yZQoJcGVla2luZyBhdCBpdHMgcmVnbm8uICBGYWlsLCBkb24ndCBhYm9ydCBpZiB3ZSBjYW4ndCBmaW5kCgl0aGUgaW5jcmVtZW50IG9mIHRoZSBkZXNpcmVkIHJlZ2lzdGVyLgoKCSogcGEubWQgKHNoYWRkIGhlaWdodCByZWR1Y3Rpb24gcGF0dGVybnMvc3BsaXR0ZXJzKTogUmVtb3ZlLgoKMjAwMC0wOC0wMiAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoZmxhZ19zc2EpOiBEZWNsYXJlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3Z0aV9pbnRlcm5hbCwgbW92dGlfaW50ZXJuYWwrMSk6IE5ldy4KCjIwMDAtMDgtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkY2UuYzogUmVtb3ZlIGFsbCB1c2VzIG9mIGFzc2VydC4KCSogZHdhcmYyb3V0LmM6IExpa2V3aXNlLgoJKiBkd2FyZm91dC5jOiBMaWtld2lzZS4KCSogc3NhLmM6IExpa2V3aXNlLgoKMjAwMC0wOC0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZ2NjLmggKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogQ29uc3RpZnkgc2Vjb25kIGFyZ3VtZW50LgoJKiBnY2MuYyAodHJhbnNsYXRlX29wdGlvbnMsIHByb2Nlc3NfY29tbWFuZCwgbWFpbik6IExpa2V3aXNlLgoJQ29uc3RpZnkgdmFyaWFibGVzIHRvIG1hdGNoLiAgQ2FzdCBzZWNvbmQgYXJndW1lbnQgdG8KCXBleGVjdXRlLgoKCSogY3Bwc3BlYy5jLCBnY2NzcGVjLmM6IEFkanVzdCB0eXBlIG9mIHNlY29uZCBhcmd1bWVudCB0bwoJbGFuZ19zcGVjaWZpY19kcml2ZXIsIGFuZCB1cGRhdGUgY29kZSBhcyBuZWNlc3NhcnkuCgoyMDAwLTA4LTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGxvb3AuYyAoc2Nhbl9sb29wKTogRW5zdXJlIHVwZGF0ZV9lbmQgbGFiZWwgZG9lcyBub3QKCWdvIGF3YXkgdW50aWwgcmVnX3NjYW5fdXBkYXRlIGlzIHJ1bi4KCjIwMDAtMDgtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtY29tbW9uLmg6IFByb3RvdHlwZSBtaW5fcHJlY2lzaW9uIGFuZCBjX2J1aWxkX3F1YWxpZmllZF90eXBlIGhlcmUuLi4KCSogYy10cmVlLmg6IC4uLiBub3QgaGVyZS4KCSogZXJyb3JzLmg6IFByb3RvdHlwZSBmYW5jeV9hYm9ydC4KCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0X2NvbW1vbik6IE1vdmUgdmFyaWFibGUgJ2MnIGludG8KCUhPU1RfQklUU19QRVJfV0lERV9JTlQgPT0gNjQgaWZkZWYgYmxvY2suCgkqIHJlZ3JlbmFtZS5jIChyZWdyZW5hbWVfb3B0aW1pemUpOiBNYWtlIGNvbnRyb2wgZmxvdyBleHBsaWNpdC4KCShyZXBsYWNlX3JlZ19pbl9ibG9jayk6IEluaXRpYWxpemUgcmVnX3VzZSB0byAwLgoKCSogaTM4Ni5jIChsZWdpdGltYXRlX2FkZHJlc3NfcCk6IFJlbmFtZSBlcnJvciBsYWJlbCB0bwoJcmVwb3J0X2Vycm9yIHRvIGF2b2lkIG5hbWVzcGFjZSBjbGFzaC4KCjIwMDAtMDgtMDIgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogZm9sZC1jb25zdC5jOiBGaXggZm9ybWF0dGluZy4KCldlZCBBdWcgIDIgMTY6MjY6MTUgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGxlZ2l0aW1hdGVfYWRkcmVzc19wKTogQWNjZXB0IG90aGVyIGJhc2VzIHRoYW4KCXBpY19vZmZzZXRfdGFibGVfcnR4IGZvciBHT1RPRkYgY29uc3RydWN0cy4KCldlZCBBdWcgIDIgMTU6NTk6MzQgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChzaGlmdCB0byBsZWEgc3BsaXR0ZXIpOiBVc2UgY29uc3RfaW50X29wZXJhbmQuCgoyMDAwLTA4LTAyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBleHAuYywgY3BwaW5pdC5jLCBjcHBsZXguYywgY3BwbGliLmMsIGNwcG1hY3JvLmMsCgljcHBzcGVjLmM6IERvIG5vdCB1c2UgJ2xlZ2FsJyBvciAnaWxsZWdhbCcgaW4gZXJyb3IgbWVzc2FnZXMKCWFuZCBjb21tZW50cy4KCgkqIGNwcG1haW4uYyAoY2JfZGVmaW5lLCBjYl91bmRlZik6IERvbid0IGdlbmVyYXRlIGFueSBvdXRwdXQKCWlmIG5vdCBkb25lX2luaXRpYWxpemluZy4KCSogY3BwbGV4LmMgKG1heWJlX3Bhc3RlX3dpdGhfbmV4dCk6IFdoZW4gdGhlIHRva2VuIGFmdGVyIGEgIyMKCWlzIGFuIG9taXR0ZWQgcmVzdCBhcmd1bWVudCwgb25seSBkZWxldGUgdGhlIHRva2VuIGJlZm9yZSBpdAoJaWYgdGhhdCB0b2tlbiBpcyBhIGNvbW1hLiAgRG8gbm90IHdhcm4gYWJvdXQgYm9ndXMgdG9rZW4KCXBhc3RlcyBmb3IgLCAjIyByZXN0X2FyZy4KCgkqIGNwcC50ZXhpOiBVcGRhdGUuCgkqIGNwcC4xOiBSZWdlbmVyYXRlLgoKMjAwMC0wOC0wMiAgRnJlZCBGaXNoICA8Zm5mQGJlLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2Jlb3MtZWxmLmggKFNUQVJURklMRV9TUEVDKTogQWRkIGkzODYtbWNvdW50Lm8KCXdoZW4gdXNlciBnaXZlcyAtcCBvcHRpb24uICBBZGQgaW5pdF90ZXJtX2R5bi5vIGZvciBCZU9TIDUuMAoJYW5kIGxhdGVyLgoKCSogY29uZmlnL2kzODYvYmVvcy1lbGYuaCAoSU5DTFVERV9ERUZBVUxUUyk6IEFkZCBhZGRpdGlvbmFsCglCZSBkaXJlY3RvcmllcyB0byBzZWFyY2ggcGF0aC4KCglSZW1vdmUgc3VwcG9ydCBmb3IgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGFuZCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkuCglUaGlzIGlzIGxlZnRvdmVyIGNydWZ0IGZyb20gdGhlIGVhcmxpZXIgQmVPUyBnY2MgcG9ydCB3aGVuIEJlT1MKCXVzZWQgTWljcm9zb2Z0J3MgUEUgb2JqZWN0IGZpbGUgZm9ybWF0LgoJKiBjb25maWd1cmUuaW4gKGkqODYtKi1iZW9zZWxmKTogUmVtb3ZlIGV4dHJhX29ianM9d2lubnQuby4KCSogY29uZmlnL2kzODYvdC1iZW9zICh3aW5udC5vKTogUmVtb3ZlIE1ha2VmaWxlIGZyYWcuCgkqIGNvbmZpZy9pMzg2L2Jlb3MtZWxmLmggKFRBUkdFVF9OT1BfRlVOX0RMTElNUE9SVCk6IFJlbW92ZS4KCShWQUxJRF9NQUNISU5FX0RFQ0xfQVRUUklCVVRFKTogUmVtb3ZlLgoJKFZBTElEX01BQ0hJTkVfVFlQRV9BVFRSSUJVVEUpOiBSZW1vdmUuCgkoTUVSR0VfTUFDSElORV9ERUNMX0FUVFJJQlVURVMpOiBSZW1vdmUuCgkoUkVET19TRUNUSU9OX0lORk9fUCk6IFJlbW92ZS4KCShBU01fRVhQT1JUX0RFQ0wpOiBSZW1vdmUuCgkoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IFJlbW92ZS4KCShBU01fREVDTEFSRV9PQkpFQ1RfTkFNRSk6IFJlbW92ZS4KCShBU01fT1VUUFVUX0FMSUdORURfQ09NTU9OKTogUmVtb3ZlLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9ERUNMX0NPTU1PTik6IFJlbW92ZS4KCShBU01fT1VUUFVUX0FMSUdORURfTE9DQUwpOiBSZW1vdmUuCgkoU1RSSVBfTkFNRV9FTkNPRElORyk6IFJlbW92ZS4KCglSZW1vdmUgc3VwcG9ydCBmb3Igb2Jzb2xldGUgdmVyc2lvbiBvZiBCZU9TIHRoYXQgaXMgbm8gbG9uZ2VyCglzdXBwb3J0ZWQgYnkgQmUuCgkqIGNvbmZpZ3VyZS5pbiAoaSo4Ni0qLWJlb3NwZSopOiBSZW1vdmUuCgkqIGNvbmZpZy9pMzg2L2Jlb3MtcGUuaDogUmVtb3ZlLgoKMjAwMC0wOC0wMSAgSmVmZnJleSBPbGRoYW0gIDxvbGRoYW1AY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBNYXJrIE1pdGNoZWxsIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZGVkIGRjZS5vLgoJKHNzYS5vKTogVXBkYXRlZCB0YXJnZXQgdG8gaW5jbHVkZSBzc2EuaC4KCShmbG93Lm8pOiBMaWtld2lzZS4KCSh0b3BsZXYubyk6IExpa2V3aXNlLgoJKGRjZS5vKTogQ3JlYXRlZCB0YXJnZXQuCgkqIGJhc2ljLWJsb2NrLmg6IEFkZGVkIGNvbW1lbnRzLgoJKElOVkFMSURfQkxPQ0spOiBBZGRlZCBkZWZpbml0aW9uLgoJKGNvbm5lY3RfaW5maW5pdGVfbG9vcHNfdG9fZXhpdCk6IEFkZGVkIGRlY2xhcmF0aW9uLgoJTW92ZWQgU1NBIGRlY2xhcmF0aW9ucyB0byBzc2EuaC4KCSogZmxvdy5jOiBBZGRlZCBpbmNsdXNpb24gb2Ygc3NhLmguCgkoc3RydWN0IGRlcHRoX2ZpcnN0X3NlYXJjaF9kc1MsIGRlcHRoX2ZpcnN0X3NlYXJjaF9kcyk6CglBZGRlZCBkZWZpbml0aW9ucy4KCShjb21wdXRlX2ltbWVkaWF0ZV9wb3N0ZG9taW5hdG9ycyk6IEFkZGVkIGRlZmluaXRpb24uCgkoY29ubmVjdF9pbmZpbml0ZV9sb29wc190b19leGl0KTogTGlrZXdpc2UuCgkoZmxvd19kZnNfY29tcHV0ZV9yZXZlcnNlX2luaXQpOiBMaWtld2lzZS4KCShmbG93X2Rmc19jb21wdXRlX3JldmVyc2VfYWRkX2JiKTogTGlrZXdpc2UuCgkoZmxvd19kZnNfY29tcHV0ZV9yZXZlcnNlX2V4ZWN1dGUpOiBMaWtld2lzZS4KCShmbG93X2Rmc19jb21wdXRlX3JldmVyc2VfZmluaXNoKTogTGlrZXdpc2UuCgkqIHJ0bC5oIChydHgvaW5fc3RydWN0KTogQWRkZWQgdXNlIHRvIGRldGVybWluZSBpbnNuIG5lY2Vzc2l0eS4KCShMQUJFTF9QKTogQWRkZWQgZGVmaW5pdGlvbi4KCShKVU1QX1ApOiBMaWtld2lzZS4KCShOT1RFX1ApOiBMaWtld2lzZS4KCShCQVJSSUVSX1ApOiBMaWtld2lzZS4KCShKVU1QX1RBQkxFX0RBVEFfUCk6IExpa2V3aXNlLgoJKElOU05fREVBRF9DT0RFX1ApOiBMaWtld2lzZS4KCSogc3NhLmM6IFJlcGxhY2VkIGluY2x1c2lvbnMgd2l0aCBzc2EuaCBpbmNsdXNpb24uCgkoQ09OVkVSVF9IQVJEX1JFR0lTVEVSX1RPX1NTQV9QKTogTW92ZWQgdG8gc3NhLmguCgkocmVuYW1lX3JlZ2lzdGVycyk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgdmFyaWFibGVzLgoJKiBzc2EuaDogQ3JlYXRlZCBieSBtb3ZpbmcgZGVjbGFyYXRpb25zIGZyb20gc3NhLmMgYW5kCgliYXNpYy1ibG9jay5oLgoJKiB0aW1ldmFyLmRlZjogRGVmaW5lZCBUVl9ERUFEX0NPREVfRUxJTS4KCSogdG9wbGV2LmM6IEFkZGVkIHNzYS5oIGluY2x1c2lvbi4KCShkdW1wX2ZpbGVfaW5kZXgpOiBBZGRlZCBERklfZGNlLgoJKGR1bXBfZmlsZSk6IEFkZGVkICJkY2UiIGVudHJ5LgoJRGVmaW5lZCBmbGFnX3NzYS4KCShmX29wdGlvbnMpOiBBZGRlZCBkY2UgZW50cnkuCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCAtZmRjZS4gIEVtcGhhc2l6ZSBleHBlcmltZW50YWwgc3RhdHVzIG9mCgktZnNzYS4KCSogZGNlLmM6IE5ldyBmaWxlLgoKMjAwMC0wOC0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXJyb3IuYyAodl9tZXNzYWdlKTogU3BsaXQgaW50byBfY3BwX2JlZ2luX21lc3NhZ2UgYW5kCgl2X21lc3NhZ2UgbWFjcm8uICBBbGwgY2FsbGVycyB1cGRhdGVkLgoJKF9jcHBfYmVnaW5fbWVzc2FnZSk6IERvIGluaGliaXRfZXJyb3JzL2luaGliaXRfd2FybmluZ3MKCWNoZWNrcyBoZXJlLgoKCSogY3BwZmlsZXMuYyAoY3BwX3N5c2hkcl9mbGFncyk6IE5ldyBmdW5jdGlvbi4KCShyZWFkX2luY2x1ZGVfZmlsZSk6IERvbid0IGNhbGwgY3BwX291dHB1dF90b2tlbnMuICBDYWxsCgllbnRlcl9maWxlIGhvb2suCgkqIGNwcGluaXQuYyAoZHVtcF9tYWNyb3NfaGVscGVyKTogTW92ZWQgdG8gY3BwbWFpbi5jLgoJKGNwcF9yZWFkZXJfaW5pdCk6IERvbid0IGluaXRpYWxpemUgdG9rZW5fYnVmZmVyLiAgQ2FsbAoJX2NwcF9pbml0X2ludGVybmFsX3ByYWdtYXMuCgkoY3BwX2NsZWFudXApOiBEb24ndCBjbGVhciB0b2tlbl9idWZmZXIuCgkoY3BwX3N0YXJ0X3JlYWQpOiBEb24ndCB3b3JyeSBhYm91dCBvdXRwdXQgZnJvbSAtRCBwcm9jZXNzaW5nLgoJRG9uJ3QgY2FsbCBjcHBfb3V0cHV0X3Rva2Vucy4KCShjcHBfZmluaXNoKTogRG9uJ3QgZHVtcCBtYWNyb3MgaGVyZS4gIERvbid0IGNhbGwKCWNwcF9vdXRwdXRfdG9rZW5zLgoJKiBjcHBtYWNyby5jIChfY3BwX2R1bXBfZGVmaW5pdGlvbik6IFJlbmFtZQoJY3BwX2R1bXBfZGVmaW5pdGlvbi4gIFdyaXRlIGRpcmVjdGx5IHRvIGEgRklMRSAqLgoJKGR1bXBfZnVubGlrZV9tYWNybyk6IERlbGV0ZS4KCShkdW1wX21hY3JvX2FyZ3MpOiBOZXcuCgoJKiBjcHBsZXguYyAoVE9LRU5fTEVOKTogQ29udmVydCB0byBpbmxpbmUgZnVuY3Rpb24uCgkoX2NwcF9ncm93X3Rva2VuX2J1ZmZlciwgc2FmZV9md3JpdGUsIGNwcF9vdXRwdXRfdG9rZW5zLAoJY3BwX3NjYW5fbGluZSwgX2NwcF9kdW1wX2xpc3QpOiBEZWxldGUuCgkoY3BwX3ByaW50ZiwgY3BwX291dHB1dF9saXN0KTogTmV3LgoJKG91dHB1dF9saW5lX2NvbW1hbmQpOiBEb24ndCB3b3JyeSBhYm91dCBlbnRlcmluZyBvciBsZWF2aW5nIGZpbGVzLgoJKGNwcF9zY2FuX2J1ZmZlcik6IEp1c3Qgb3V0cHV0IGVhY2ggdG9rZW4gYXMgd2UgaGl0IGl0LgoJKHByb2Nlc3NfZGlyZWN0aXZlKTogRG9uJ3QgY2FsbCBjcHBfb3V0cHV0X3Rva2Vucy4KCShfY3BwX2dsdWVfaGVhZGVyX25hbWUpOiBEb24ndCB1c2UgdG9rZW5fYnVmZmVyLgoJKG91dHB1dF90b2tlbiwgZHVtcF9wYXJhbV9zcGVsbGluZyk6IFdyaXRlIGRpcmVjdGx5IHRvIGEgRklMRSAqLgoKCSogY3BwbGliLmMgKHBhc3NfdGhydV9kaXJlY3RpdmUsIGR1bXBfbWFjcm9fbmFtZSwKCXByYWdtYV9kaXNwYXRjaCwgZG9fcHJhZ21hX2djYyk6IERlbGV0ZS4KCShkb19kZWZpbmUsIGRvX3VuZGVmLCBwYXJzZV9pbmNsdWRlLCBkb19saW5lLCBkb19pZGVudCwgZG9fcHJhZ21hLAoJZG9fcHJhZ21hX3BvaXNvbiwgY3BwX3BvcF9idWZmZXIpOiBDYWxsIHRoZSBhcHByb3ByaWF0ZSBob29rCglmdW5jdGlvbnMuCgkoZG9fZXJyb3IsIGRvX3dhcm5pbmcsIHByYWdtYV9kZXBlbmRlbmN5KTogQ2FsbAoJX2NwcF9iZWdpbl9tZXNzYWdlLCB0aGVuIGNwcF9vdXRwdXRfbGlzdC4KCShjcHBfcmVnaXN0ZXJfcHJhZ21hLCBjcHBfcmVnaXN0ZXJfcHJhZ21hX3NwYWNlLAoJX2NwcF9pbml0X2ludGVybmFsX3ByYWdtYXMpOiBOZXcuCgkoZG9fcHJhZ21hKTogV2FsayB0aGUgcHJhZ21hcyB0YWJsZSBoZXJlLgoJKGRvX3ByYWdtYV9vbmNlLCBkb19wcmFnbWFfcG9pc29uLCBkb19wcmFnbWFfc3lzdGVtX2hlYWRlciwKCWRvX3ByYWdtYV9kZXBlbmRlbmN5KTogUmV0dXJuIHZvaWQuCgkoZG9fcHJhZ21hX2ltcGxlbWVudGF0aW9uKTogTW92ZWQgdG8gY3BwbWFpbi5jLgoKCSogY3BwbGliLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJIChzdHJ1Y3QgY3BwX3JlYWRlcik6IFJlbW92ZSBwcmludGVyLCB0b2tlbl9idWZmZXIsCgl0b2tlbl9idWZmZXJfc2l6ZSwgYW5kIGxpbWl0LiAgQWRkIHN0cnVjdCBjYiwgYW5kIHByYWdtYXMuCgkoc3RydWN0IGNwcF9wcmludGVyKTogUmVtb3ZlIGxhc3RfaWQgYW5kIHdyaXR0ZW4uCgkoQ1BQX1dSSVRURU4sIENQUF9QV1JJVFRFTiwgQ1BQX1NFVF9XUklUVEVOLAoJQ1BQX0FESlVTVF9XUklUVEVOKTogRGVsZXRlLgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKHVmcHV0cyk6IE5ldyB3cmFwcGVyLgoKCSogY3BwbWFpbi5jIChjYl9kZWZpbmUsIGNiX3VuZGVmLCBjYl9pbmNsdWRlLCBjYl9pZGVudCwKCWNiX2VudGVyX2ZpbGUsIGNiX2xlYXZlX2ZpbGUsIGNiX2RlZl9wcmFnbWEpOiBOZXcgZnVuY3Rpb25zLgoJKG1haW4pOiBTZXQgdXAgY2FsbGJhY2tzLiAgUmVnaXN0ZXIgI3ByYWdtYSBpbXBsZW1lbnRhdGlvbi4KCUR1bXAgbWFjcm9zIGZyb20gaGVyZS4KCjIwMDAtMDgtMDEgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJ0bC5oIChlbnVtIHJlZ19ub3RlKTogQWRkIFJFR19NQVlCRV9ERUFELgoJKiBydGwuYyAocmVnX25vdGVfbmFtZSk6IEFkZCBSRUdfTUFZQkVfREVBRC4KCSogZmxvdy5jIChwcm9wYWdhdGVfb25lX2luc24pOiBBbGxvdyBkZWxldGlvbiBvZiBwcm9sb2d1ZS9lcGlsb2d1ZQoJaW5zbnMgaWYgdGhleSBoYXZlIGEgUkVHX01BWUJFX0RFQUQgbm90ZSBhdHRhY2hlZC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX21heWJlX2RlYWQpOiBOZXcgZnVuY3Rpb24uCgkocnM2MDAwX2VtaXRfbG9hZF90b2NfdGFibGUpOiBUT0MgbG9hZHMgbWF5IGdvIGRlYWQuCgoyMDAwLTA4LTAxICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZnVuY3Rpb25fYXJnKTogRml4IGxhc3QgY2hhbmdlLiAgVmVyaWZ5Cgl0eXBlIGV4aXN0cyBiZWZvcmUgdXNpbmcgaXQuICBVc2UgbnVtYmVyIG9mIHdvcmRzIGFzIGFsaWdubWVudAoJb3RoZXJ3aXNlLgoJKGlhNjRfZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MsIGlhNjRfZnVuY3Rpb25fYXJnX2FkdmFuY2UsCglpYTY0X3ZhX2FyZyk6IFByb3BhZ2F0ZSBpYTY0X2Z1bmN0aW9uX2FyZ3MgY2hhbmdlcyBoZXJlLgoKMjAwMC0wOC0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9lbGZvcy5oIChBU01fREVDTEFSRV9PQkpFQ1RfTkFNRSk6IENhcmUgZm9yIG51bGwgREVDTC4KCSogY29uZmlnL2lhNjQvc3lzdjQuaCAoQVNNX09VVFBVVF9BTElHTkVEX0RFQ0xfTE9DQUwpOiBMaWtld2lzZS4KCjIwMDAtMDgtMDEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCUZyb20gSm9lcm4gUmVubmVja2U6CgkqIHNoLmggKENQUF9TUEVDLCBUQVJHRVRfU1dJVENIRVMpOiBBZGQgbTQtbm9mcHUuCgkqIHNoLm1kICh1ZGl2c2kzLCBkaXZzaTMpOiBEb24ndCB1c2UgbGliY2FsbHMgdGhhdCB1c2UgdGhlIEZQVQoJdW5sZXNzIFRBUkdFVF9TSDNFIGlzIHNldC4KCSogdC1zaCAoTVVMVElMSUJfTUFUQ0hFUyk6IEFkZCBtMj1tNC1ub2ZwdS4KCgkqIHNoLm1kIChhc2hsc2kzX2QsIGFzaGxzaTNfayk6IFJlbW92ZSwgcmVwbGFjZSB3aXRoCgkoYXNobHNpM19zdGQpOiBOZXcgcGF0dGVybi4KCShhc2hsc2kzIGV4cGFuZGVyKTogVXNlIGl0IGZvciBUQVJHRVRfU0gzLgoJKiBzaC5jIChnZW5fYXNoaWZ0KTogVXNlIGl0IGluc3RlYWQgb2YgYXNobHNpM19rLgoKVHVlIEF1ZyAgMSAxMjozNDoyMSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGxvb3AuYyAoY2Fub25pY2FsaXplX2NvbmRpdGlvbik6ICBVc2UgZGVzdGluYXRpb24sIG5vdCBzb3VyY2UgdG8KCWRldGVybWluZSBTRVQncyBtb2RlLgoKMjAwMC0wNy0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZsb3cuYyAoY2xlYXJfbG9nX2xpbmtzKTogRml4IHR5cG8uCgpNb24gSnVsIDMxIDIyOjE5OjI0IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGxvb3AuYyAoY2hlY2tfZGJyYV9sb29wKTogTWFrZSBjaGFuZ2UgZnJvbSBKdWx5IDE3LCAyMDAwIHdvcmsKCW9uIHRhcmdldHMgd2hpY2ggbmVlZCBtb3JlIHRoYW4gb25lIGluc24gZm9yIGEgY29tcGFyZS9jYnJhbmNoCglvcGVyYXRpb24uCgoyMDAwLTA3LTMxICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZnVuY3Rpb25fYXJnKTogVXNlIGFsaWdubWVudCBub3Qgc2l6ZQoJd2hlbiBjb21wdXRpbmcgb2Zmc2V0LgoKTW9uIEp1bCAzMSAyMDozNTo1MCAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogZ2VucGVlcC5jIChtYWluKTogSGFuZGxlIERFRklORV9QRUVQSE9MRTIuCgoyMDAwLTA3LTMxICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGNsZWFyX2xvZ19saW5rcyk6IE51a2UgZ2xvYmFsX2xpdmVfYXRfc3RhcnQgYW5kCglnbG9iYWxfbGl2ZV9hdF9lbmQgZGF0YSwgc2luY2UgaWYgdGhlIGxvZ19saW5rcyBzdHVmZiBpcyBpbnZhbGlkCglzbyBpcyBnbG9iYWxfbGl2ZV9hdF8qLgoKMjAwMC0wNy0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHRtLnRleGkgKEFkZHJlc3NpbmcgTW9kZXMpOiBDbGFyaWZ5IFBSRS9QT1NUX01PRElGWSBkZXNjcmlwdGlvbnMuCgoyMDAwLTA3LTMxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNwcGxleC5jIChfY3BwX2dldF9saW5lKTogSWYgaW5kZXggaXMgMCwgcmV0dXJuIGxpbmUgMCBjb2wgMC4KCShfY3BwX2dldF90b2tlbik6IERvbid0IG1hY3JvIGV4cGFuZCBhIGp1c3QgcGFzdGVkIHRva2VuIGlmIGl0Cgl3YXMgcGFzdGVkIGF0IG5vX2V4cGFuZF9sZXZlbC4KCjIwMDAtMDctMzEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcG1hY3JvLmMgKGZpbmRfcGFyYW0sIGNvdW50X3BhcmFtcywgc2F2ZV9leHBhbnNpb24pOgoJUGVybWl0ICdkZWZpbmVkJyBhcyBhIG1hY3JvIHBhcmFtZXRlciBuYW1lLgoKMjAwMC0wNy0zMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogTWFrZWZpbGUuaW46IFJlbmFtZSBjcHAgdG8gY3BwMCwgdHJhZGNwcCB0byB0cmFkY3BwMCwgYW5kCgl4Y3BwIHRvIGNwcCB0aHJvdWdob3V0LgoJKG5hdGl2ZSk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBkZXBlbmRlbmN5IG9uIGNwcC4KCgkqIGdjYy5jICh0cmFkX2NhcGFibGVfY3BwLCBDIHNwZWNzKTogUmVuYW1lIGNwcCB0byBjcHAsCgl0cmFkY3BwIHRvIHRyYWRjcHAwLgoJKC5pIHNwZWMpOiBBZGQgbWlzc2luZyBvdXRwdXQtZmlsZSBzcGVjIHRvIGNjMSBjb21tYW5kIGxpbmUuCgkqIG9iamMvbGFuZy1zcGVjcy5oOiBSZW5hbWUgY3BwIHRvIGNwcDAgYW5kL29yIHRyYWRjcHAgdG8gdHJhZGNwcDAuCgoyMDAwLTA3LTMxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLWRlY2wuYyAobWVzZ19pbXBsaWNpdF9mdW5jdGlvbl9kZWNsYXJhdGlvbik6IEluaXQgdG8gLTEuCgkoaW1wbGljaXRfZGVjbF93YXJuaW5nKTogTmV3IGZ1bmN0aW9uLgoJKGltcGxpY2l0bHlfZGVjbGFyZSk6IFVzZSBpdC4KCSogYy10eXBlY2suYyAoYnVpbGRfZXh0ZXJuYWxfcmVmKTogVXNlIGltcGxpY2l0X2RlY2xfd2FybmluZwoJdG8gY29tcGxhaW4gYWJvdXQgaW1wbGljaXQgZGVjbHMgb2YgYnVpbHRpbnMuCgoJKiBjLWxhbmcuYyAobGFuZ19pbml0KTogU2V0IG1lc2dfaW1wbGljaXRfZnVuY3Rpb25fZGVjbGFyYXRpb24KCWJhc2VkIG9uIHBlZGFudGljICYmIGZsYWdfaXNvYzk5LCBpZiBub3QgYWxyZWFkeSBzZXQuCgkqIGMtdHJlZS5oOiBEZWNsYXJlIG1lc2dfaW1wbGljaXRfZnVuY3Rpb25fZGVjbGFyYXRpb24uCglQcm90b3R5cGUgaW1wbGljaXRfZGVjbF93YXJuaW5nLgoKMjAwMC0wNy0zMCAgSmVmZnJleSBELiBPbGRoYW0gIDxvbGRoYW1AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChzc2Eubyk6IFVwZGF0ZWQgaGVhZGVyIGZpbGVzIGluIGRlcGVuZGVuY2VzLgoJKiBiYXNpYy1ibG9jay5oOiBBZGRlZCBjb21wdXRlX2ltbWVkaWF0ZV9wb3N0ZG9taW5hdG9ycyBkZWNsYXJhdGlvbi4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChDT05WRVJUX0hBUkRfUkVHSVNURVJfVE9fU1NBX1ApOiBBZGRlZAoJZGVmaW5pdGlvbi4KCSogZmxvdy5jIChjb21wdXRlX2ltbWVkaWF0ZV9kb21pbmF0b3JzKTogVXBkYXRlZCBjb21tZW50LgoJKGNvbXB1dGVfaW1tZWRpYXRlX3Bvc3Rkb21pbmF0b3JzKTogQWRkZWQgZGVmaW5pdGlvbi4KCSogcnRsLmggKEhBUkRfUkVHSVNURVJfUCk6IEFkZGVkIGRlZmluaXRpb24uCgkqIHNzYS5jOiBJbmNsdWRlIGFkZGl0aW9uYWwgaGVhZGVyIGZpbGVzLgoJKGFzc2VydCk6IEFkZGVkIGRlZmluaXRpb24uCgkoc3NhX3JlbmFtZV90b19sb29rdXApOiBBZGRlZCB0byByZWltcGxlbWVudCBzc2FfcmVuYW1lX3RvIHRvCglpbmNsdWRlIHNlbGVjdCBoYXJkIHJlZ2lzdGVycy4KCShzc2FfcmVuYW1lX3RvX2luc2VydCk6IExpa2V3aXNlLgoJKHNzYV9yZW5hbWVfZnJvbV9pbml0aWFsaXplKTogTGlrZXdpc2UuCgkoc3NhX3JlbmFtZV9mcm9tX2xvb2t1cCk6IExpa2V3aXNlLgoJKG9yaWdpbmFsX3JlZ2lzdGVyKTogTGlrZXdpc2UuCgkoc3NhX3JlbmFtZV9mcm9tX2luc2VydCk6IEFkZGVkIHRvIHJlaW1wbGVtZW50IHNzYV9yZW5hbWVfZnJvbSB0bwoJaW5jbHVkZSBzZWxlY3QgaGFyZCByZWlnc3RlcnMuCgkoc3NhX3JlbmFtZV9mcm9tX3RyYXZlcnNlKTogTGlrZXdpc2UuCgkoc3NhX3JlbmFtZV9mcm9tX2ZyZWUpOiBMaWtld2lzZS4KCShzc2FfcmVuYW1lX2Zyb21fcHJpbnQpOiBMaWtld2lzZS4KCShzc2FfcmVuYW1lX2Zyb21fcHJpbnRfMSk6IExpa2V3aXNlLgoJKHNzYV9yZW5hbWVfZnJvbV9oYXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoc3NhX3JlbmFtZV9mcm9tX2VxdWFsKTogTGlrZXdpc2UuCgkoc3NhX3JlbmFtZV9mcm9tX2RlbGV0ZSk6IExpa2V3aXNlLgoJKHNpbXBsaWZ5X3RvX2ltbWVkaWF0ZV9kb21pbmF0b3JzKTogUmVtb3ZlZCBpbiBmYXZvciBvZgoJZmxvdy5jOmNvbXB1dGVfaW1tZWRpYXRlX2RvbWluYXRvcnMuCgkoZmluZF9ldmFsdWF0aW9uc18xKTogTW9kaWZpZWQgdG8gd29yayB3aXRoIGhhcmQgcmVnaXN0ZXJzLgoJKGluc2VydF9waGlfbm9kZSk6IExpa2V3aXNlLgoJKGluc2VydF9waGlfbm9kZXMpOiBMaWtld2lzZS4KCShzdHJ1Y3QgcmVuYW1lX3NldF9kYXRhKTogVXBkYXRlZCBwcmV2X3JlZyBjb21tZW50LgoJKGNyZWF0ZV9kZWxheWVkX3JlbmFtZSk6IE1vZGlmaWVkIHRvIHdvcmsgd2l0aCBoYXJkIHJlZ2lzdGVycy4KCShSRU5BTUVfTk9fUlRYKTogVXBkYXRlZCBjb21tZW50LgoJKGFwcGx5X2RlbGF5ZWRfcmVuYW1lcyk6IE1vZGlmaWVkIHRvIHdvcmsgd2l0aCBoYXJkIHJlZ2lzdGVycy4KCShyZW5hbWVfaW5zbl8xKTogTGlrZXdpc2UgYW5kIGFkZGVkIGhhbmRsaW5nIG9mIENMT0JCRVIgcnRscy4KCShyZW5hbWVfYmxvY2spOiBVcGRhdGVkIHRvIHVzZSByZXZpc2VkIHNzYV9yZW5hbWVfdG8gaW50ZXJmYWNlLgoJKHJlbmFtZV9yZWdpc3RlcnMpOiBVcGRhdGVkIHRvIHVzZSByZXZpc2VkIHNzYV9yZW5hbWVfdG8gYW5kCglzc2FfcmVuYW1lX2Zyb20gaW50ZXJmYWNlLgoJKGNvbnZlcnRfdG9fc3NhKTogUmV2aXNlZCB0byB1c2UgY29tcHV0ZV9pbW1lZGlhdGVfZG9taW5hdG9ycyBhbmQKCWRlYWwgd2l0aCBoYXJkIHJlZ2lzdGVycy4KCShtYWtlX3JlZ3NfZXF1aXZhbGVudF9vdmVyX2JhZF9lZGdlcyk6IE1vZGlmaWVkIHRvIHdvcmsgd2l0aCBoYXJkCglyZWdpc3RlcnMuICBBZGRlZCBjaGVjayBmb3IgaWxsZWdhbCB1bmlmaWNhdGlvbiBvZiBoYXJkIHJlZ2lzdGVyLgoJKG1ha2VfZXF1aXZhbGVudF9waGlfYWx0ZXJuYXRpdmVzX2VxdWl2YWxlbnQpOiBNb2RpZmllZCB0byB3b3JrCgl3aXRoIGhhcmQgcmVnaXN0ZXJzLgoJKGNvbXB1dGVfY29uc2VydmF0aXZlX3JlZ19wYXJ0aXRpb24pOiBMaWtld2lzZS4KCShjb2FsZXNjZV9pZl91bmNvbmZsaWN0aW5nKTogTW9kaWZpZWQgdG8gd29yayB3aXRoIGhhcmQgcmVnaXN0ZXJzCglhbmQgY2hlY2sgZm9yIGNvbmZsaWN0aW5nIGhhcmQgcmVnaXN0ZXJzLgoJKG1hcmtfcGhpX2FuZF9jb3B5X3JlZ3MpOiBSZXZpc2VkIGxvb3AgdG8gd29yayBvbmx5IG9uIHBzZXVkbwoJcmVnaXN0ZXJzLgoJKHJlbmFtZV9lcXVpdmFsZW50X3JlZ3NfaW5faW5zbik6IE1vZGlmaWVkIHRvIHdvcmsgd2l0aCBoYXJkCglyZWdpc3RlcnMuCgkocmVjb3JkX2Nhbm9uaWNhbF9lbGVtZW50XzEpOiBBZGRlZCBkZWZpbml0aW9uLgoJKGNoZWNrX2hhcmRfcmVnc19pbl9wYXJ0aXRpb24pOiBBZGRlZCBkZWZpbml0aW9uLgoJKGNvbnZlcnRfZnJvbV9zc2EpOiBBZGRlZCBkYXRhIHN0cnVjdHVyZSBkZWFsbG9jYXRpb24gYW5kIGNoZWNrCglmb3IgaWxsZWdhbCBoYXJkIHJlZ2lzdGVyIHVuaWZpY2F0aW9uLgoJKGNvbmZsaWN0X2hhcmRfcmVnc19wKTogQWRkZWQgZGVmaW5pdGlvbi4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBBZGRlZCBjb21tZW50LgoKMjAwMC0wNy0zMSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9jcnRiZWdpbi5hc20gKF9fRUhfRlJBTUVfQkVHSU5fXyk6IEFsaWduIGNvcnJlY3RseS4KCjIwMDAtMDctMzEgIEphc29uIE1jTXVsbGFuICA8am1jbXVsbGFuQGxpbnV4Y2FyZS5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9hcHBseSk6IERvbid0IGRlZmVyIHBvcCBkdXJpbmcKCWFyZ3VtZW50IHNldHVwLgoKMjAwMC0wNy0zMSBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogY2FsbHMuYyAoY29tYmluZV9wZW5kaW5nX3N0YWNrX2FkanVzdG1lbnRfYW5kX2NhbGwpOiBPbmx5IHVzZQoJcHJlZmVycmVkX3VuaXRfc3RhY2tfYm91bmRhcnkgd2hlbiBpdCBpcyA+IDEuCgoyMDAwLTA3LTMxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChpbml0X2Z1bmN0aW9uX2Zvcm1hdF9pbmZvKTogQWRkIEM5OSBmb3JtYXQgZnVuY3Rpb25zCglpbiBDOTkgbW9kZS4KCgkqIGMtZGVjbC5jIChnZXRfcGFybV9pbmZvKTogRG9uJ3QgdHJlYXQgJ2NvbnN0IHZvaWQnLCAndm9sYXRpbGUKCXZvaWQnIG9yICdyZWdpc3RlciB2b2lkJyBhcyBiZWluZyB0aGUgc3BlY2lhbCBjYXNlIG9mICd2b2lkJyBhbG9uZQoJaW4gYSBwYXJhbWV0ZXIgbGlzdC4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6IENoYW5nZSAtV2Nhc3QtcXVhbCBwZWR3YXJuIGZvcgoJZGlzY2FyZGluZyBxdWFsaWZpZXJzIGludG8gYSBwbGFpbiB3YXJuaW5nLgoKMjAwMC0wNy0zMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb21iaW5lLmM6IEZpeCBmb3JtYXR0aW5nLgoKCSogaDgzMDAubWQ6IEZpeCBmb3JtYXR0aW5nLgoKCSogbG9jYWwtYWxsb2MuYzogRml4IGZvcm1hdHRpbmcuCgoJKiBoODMwMC5jIChnZXRfc2hpZnRfYWxnKTogUmVtb3ZlIHRoZSB2YXJpYWJsZSBhbGcuCgkoZW1pdF9hX3NoaWZ0KTogUmVhcnJhbmdlIGNvZGUgdG8gaW1wcm92ZSByZWFkYWJpbGl0eS4KCgkqIGg4MzAwLm1kIChtb3ZzaV9oODMwMGhzKTogUmVhcnJhbmdlIGNvZGUgdG8gaW1wcm92ZSByZWFkYWJpbGl0eS4KCgkqIGg4MzAwLmggKE1PREVTX1RJRUFCTEVfUCk6IEFjY2VwdCBhIGNvbWJpbmF0aW9uIG9mIFFJbW9kZSBhbmQKCUhJbW9kZSBvbiBhbGwgYXJjaGl0ZWN0dXJlcyBhbmQgYSBjb21iaW5hdGlvbiBvZiBISW1vZGUgYW5kIFNJbW9kZQoJb24gSDgvMzAwSCBhbmQgSDhTLgoKCSogaDgzMDAuYyAoc3BsaXRfYWRkc19zdWJzKTogUmVhcnJhbmdlIGNvZGUgZm9yIGNvbmNpc2VuZXNzLgoKTW9uIEp1bCAzMSAxMjoyNzo1NSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGFkZHNpIHRvIGxlYSBzcGxpdHRlciwgYXNobHFpM18xX2xlYSk6IEZpeCBidWdzCglpbiBteSBsYXN0IGNoZWNraW4uCgpNb24gSnVsIDMxIDEwOjQxOjAxIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVjb2cuYyAoZXh0cmFjdF9pbnNuKTogU2V0IG9wZXJhbmRfbW9kZSBhY2NvcmRpbmcgdG8KCW9wZXJhbmQgaWYgbWF0Y2hfb3BlcmFuZCBpcyBWT0lEbW9kZS4KCk1vbiBKdWwgMzEgMTA6MzY6MzggTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWNvZy5jICh2YWxpZGF0ZV9yZXBsYWNlX3J0eF8xKTogRG8gbm90IGFib3J0IGZvciAobmlsKSBleHByZXNzaW9uLgoKMjAwMC0wNy0zMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogYy1wYXJzZS5pbiAoZXh0ZGVmcyk6IENhbGwgZ2djX2NvbGxlY3QgYmV0d2VlbiBleHRlcm5hbAoJZGVmaW5pdGlvbnMuCgoyMDAwLTA3LTMwICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkIGRvbG9vcC5vLgoJKiBkb2xvb3AuYzogTmV3IGZpbGUuCgoJKiBmaW5hbC5jIChpbnNuX2N1cnJlbnRfcmVmZXJlbmNlX2FkZHJlc3MpOiBSZXR1cm4gMCBiZWZvcmUgZmluYWwuCgkqIGZsYWdzLmggKGZsYWdfYnJhbmNoX29uX2NvdW50X3JlZyk6IEZpeCB0eXBvcyBpbiBjb21tZW50YXJ5LgoJKiBqdW1wLmMgKGFueV91bmNvbmRqdW1wX3ApOiBMaWtld2lzZS4KCSogbG9vcC5jIChpbmRpcmVjdF9qdW1wX2luX2Z1bmN0aW9uKTogTWFrZSBzdGF0aWMuCgkoc3RyZW5ndGhfcmVkdWNlKTogQ2FsbCBkb2xvb3Bfb3B0aW1pemUuCgkoaW5zZXJ0X2JjdCwgaW5zdHJ1bWVudF9sb29wX2JjdCk6IFJlbW92ZS4KCSogbG9vcC5oIChkb2xvb3Bfb3B0aW1pemUpOiBQcm90b3R5cGUuCgkqIHJlY29nLmMgKHNwbGl0X2FsbF9pbnNucyk6IFNwbGl0IGFsbCBJTlNOX1AuCgkqIHRvcGxldi5jIChmbGFnX2JyYW5jaF9vbl9jb3VudF9yZWcpOiBEZWZhdWx0IG9uLgoKCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X29wdGltaXphdGlvbl9vcHRpb25zKTogRG9uJ3Qgc2V0CglmbGFnX2JyYW5jaF9vbl9jb3VudF9yZWcuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChvcHRpbWl6YXRpb25fb3B0aW9ucyk6IExpa2V3aXNlLgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoZGVjcmVtZW50X2FuZF9icmFuY2hfb25fY291bnQpOiBSZW1vdmUuCgkoZG9sb29wX2VuZCk6IE5ldy4KCShkYnJhX2dlKTogUmVtb3ZlLCBhcyB3ZWxsIGFzIGFsbCBpdCdzIHNwbGl0dGVycy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChkZWNyZW1lbnRfYW5kX2JyYW5jaF9vbl9jb3VudCk6IFJlbW92ZS4KCShkb2xvb3BfZW5kKTogTmV3LgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoYXJfbGNfcmVnX29wZXJhbmQpOiBEZWNsYXJlLgoJKGlhNjRfcmVnaXN0ZXJfbW92ZV9jb3N0KTogRGVjbGFyZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChhcl9sY19yZWdfb3BlcmFuZCk6IE5ldy4KCShzdHJ1Y3QgaWE2NF9mcmFtZV9pbmZvKTogQWRkIGFyX3NpemUuCgkoaWE2NF9jb21wdXRlX2ZyYW1lX3NpemUpOiBTZXQgaXQuCgkoc2F2ZV9yZXN0b3JlX2luc25zKTogU2F2ZSBhbmQgcmVzdG9yZSBhci5sYy4KCShpYTY0X3JlZ2lzdGVyX21vdmVfY29zdCk6IE5ldywgbW92ZWQgZnJvbSBoZWFkZXIgZmlsZS4gIEhhbmRsZQoJYXBwbGljYXRpb24gcmVnaXN0ZXJzLgoJKFJFR19BUl9QRlMsIFJFR19BUl9FQyk6IFJlbW92ZS4gIFJlcGxhY2Ugd2l0aCBBUl8qX1JFR05VTSBudW1iZXJzLgoJKGVtaXRfaW5zbl9ncm91cF9iYXJyaWVycyk6IFNwZWNpYWwgY2FzZSBkb2xvb3BfZW5kX2ludGVybmFsLgoJKGlhNjRfZXBpbG9ndWVfdXNlcyk6IE1hcmsgYXIubGMgbGl2ZSBhdCBlbmQuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQVJfQ0NWX1JFR05VTSwgQVJfTENfUkVHTlVNKTogTmV3IHJlZ2lzdGVycy4KCShBUl9FQ19SRUdOVU0sIEFSX1BGU19SRUdOVU0pOiBOZXcgcmVnaXN0ZXJzLgoJKEZJUlNUX1BTRVVET19SRUdJU1RFUik6IE1ha2Ugcm9vbS4KCShBUl9NX1JFR05PX1AsIEFSX0lfUkVHTk9fUCwgQVJfUkVHTk9fUCk6IE5ldy4KCShGSVhFRF9SRUdJU1RFUlMsIENBTExfVVNFRF9SRUdJU1RFUlMpOiBVcGRhdGUuCgkoUkVHX0FMTE9DX09SREVSKTogVXBkYXRlLgoJKEhBUkRfUkVHTk9fTU9ERV9PSyk6IFVwZGF0ZS4KCShSRUdJU1RFUl9OQU1FUyk6IFVwZGF0ZS4KCShlbnVtIHJlZ19jbGFzcyk6IEFkZCBBUl9NX1JFR1MgYW5kIEFSX0lfUkVHUy4KCShSRUdfQ0xBU1NfTkFNRVMsIFJFR19DTEFTU19DT05URU5UUyk6IFVwZGF0ZS4KCShSRUdOT19SRUdfQ0xBU1MpOiBVcGRhdGUuCgkoTEVHSVRJTUFURV9BRERSRVNTX0RJU1ApOiBEaXNwbGFjZW1lbnQgcmFuZ2UgaXMgOSBiaXRzLCBub3QgMTAuCgkoUkVHSVNURVJfTU9WRV9DT1NUKTogTW92ZSBvdXQgb2YgbGluZS4KCShQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdmRpIHBhdHRlcm5zKTogSGFuZGxlIGFyIHJlZ2lzdGVyIGNsYXNzZXMuCgkoYWRkc2kzX3BsdXMxX2FsdCwgYWRkZGkzX3BsdXMxX2FsdCk6IE5ldy4KCShzaGxhZGRfZWxpbSBzcGxpdHRlcik6IEFsbG93IGNvbnN0YW50cyBpbiB0aGUgcHJlZGljYXRlLgoJKGRvbG9vcF9lbmQsIGRvbG9vcF9lbmRfaW50ZXJuYWwpOiBOZXcuCgoyMDAwLTA3LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZ2VuYXR0cnRhYi5jIChzdHJ1Y3QgaW5zbl9kZWYpOiBBZGQgbGluZW5vIG1lbWJlci4KCShzdHJ1Y3QgaW5zbl9lbnQpOiBMaWtld2lzZS4KCShzdHJ1Y3QgYXR0cl9kZXNjKTogTGlrZXdpc2UuCgkoc3RydWN0IGRlbGF5X2Rlc2MpOiBMaWtld2lzZS4KCShzdHJ1Y3QgZnVuY3Rpb25fdW5pdF9vcCk6IExpa2V3aXNlLgoJKHN0cnVjdCBmdW5jdGlvbl91bml0KTogTGlrZXdpc2UuCgkoY2hlY2tfYXR0cl92YWx1ZSk6IFVzZSBtZXNzYWdlX3dpdGhfbGluZS4KCShjaGVja19kZWZzKTogTGlrZXdpc2UuCgkoZXhwYW5kX3VuaXRzKTogTGlrZXdpc2UuCgkoY2hlY2tfYXR0cl90ZXN0KTogVGFrZSBhIGxpbmVubyBhcmd1bWVudC4KCShnZW5fYXR0cik6IExpa2V3aXNlLgoJKGdlbl9pbnNuKTogTGlrZXdpc2UuCgkoZ2VuX2RlbGF5KTogTGlrZXdpc2UuCgkoZ2VuX3VuaXQpOiBMaWtld2lzZS4KCShtYWluKTogR2l2ZSBpdCB0byB0aGVtLgoJKGNvbnZlcnRfc2V0X2F0dHJfYWx0ZXJuYXRpdmUpOiBUYWtlIGFuIGluc25fZGVmIGFyZ3VtZW50CglpbnN0ZWFkIG9mIG51bV9hbHQgYW5kIGluc25faW5kZXguCgkoY29udmVydF9zZXRfYXR0cik6IExpa2V3aXNlLgoJKHdyaXRlX3Rlc3RfZXhwcik6IFByb3RlY3QgSU5TTl9BRERSRVNTRVMgbG9hZAoJd2l0aCBJTlNOX0FERFJFU1NFU19TRVRfUC4KCjIwMDAtMDctMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBVc2UgcGNfc2V0LgoKU3VuIEp1bCAzMCAyMDo1ODozNCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKCpsZWFfZ2VuZXJhbF9bMTIzXSkgTmV3IGluc25zIGFuZCBzcGxpdHMuCgkoYWRkc2kzIHRvIGxlYSBzcGxpdHRlcik6IEhhbmRsZSBvdGhlciBtb2RlcyB0b28uCgkoc2hsc2kzIHRvIGxlYSBzcGxpdHRlcik6IExpa2V3aXNlLgoJKGFkZGhpXzFfbGVhLCBzaGxoaV8xX2xlYSk6IE5ldyBwYXR0ZXJucy4KCShhZGRoaV8xLCBzaGxoaV8xKTogQ29uZGl0aW9uaXplIGJ5IFBBUlRJQUxfUkVHX1NUQUxMLgoKU3VuIEp1bCAzMCAyMDo1MToyNSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlY29nLmMgKGdlbmVyYWxfb3BlcmFuZCwgbm9uaW1tZWRpYXRlX29wZXJhbmQpOiBBY2NlcHQKCWFueSBtb2RlIGZvciBWT0lEbW9kZSBDT05TVEFOVF9QIG9wZXJhbmRzLgoKU3VuIEp1bCAzMCAyMDo0MjoyMSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGdjc2UuYyAodHJ5X3JlcGxhY2VfcmVnKTogVXNlIHZhbGlkYXRlX3JlcGxhY2VfcnR4X3N1YmV4cAoJaW5zdGVhZCBvZiByZXBsYWNlX3J0eC4KCSogcmVjb2cuYyAodmFsaWRhdGVfcmVwbGFjZV9ydHhfc3ViZXhwKTogTmV3IGZ1bmN0aW9uLgoJKiByZWNvZy5oICh2YWxpZGF0ZV9yZXBsYWNlX3J0eF9zdWJleHApOiBEZWNsYXJlLgoKU3VuIEp1bCAzMCAyMDozODoyNiBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfc2V0LCBtYWtlX2V4dHJhY3Rpb24sIG1ha2VfY29tcG91bmRfb3BlcmF0aW9uCgltYWtlX2ZpZWxkX2Fzc2lnbm1lbnQpOiBVc2UgZnVsbCBtYXNrIGluc3RlYWQgb2YgR0VUX01PREVfTUFTSyAobW9kZSkKCWFzIGZvcmNlX3RvX21vZGUgYXJndW1lbnQuCgpTdW4gSnVsIDMwIDIwOjMwOjQxIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29tYmluZS5jIChpZl90aGVuX2Vsc2VfY29uZCk6IEJlIHN1cmUgdGhhdCBtb2RlIGZpdHMgaW4KCUhPU1RfV0lERV9JTlQuCgpTdW4gSnVsIDMwIDIwOjI3OjM2IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29tYmluZS5jIChyZWNvcmRfcHJvbW90ZWRfdmFsdWUpOiAgQWxsb3cgYml0c2l6ZSBvZiBtb2RlCgl0byBiZSBlcXVpdmFsZW50IHRvIEhPU1RfQklUU19QRVJfV0lTRV9JTlQuCgpTdW4gSnVsIDMwIDIwOjI1OjIxIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3N0YWNrX2xvY2FsXzEsIGFzc2lnbl9zdGFja190ZW1wX2Zvcl90eXBlKToKCURvIG5vdCBjYWxsIGdlbl9tb2RlX2FsaWdubWVudCB3aGVuIG1vZGUgaXMgQkxLbW9kZS4KClN1biBKdWwgMzAgMjA6MjE6NTQgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBsb29wLmMgKGV4cHJlc3NfZnJvbV8xKTogRml4IGNhbGwgb2Ygc2ltcGxpZnlfZ2VuX2JpbmFyeS4KClN1biBKdWwgMzAgMjA6MDg6MzcgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBWZXJpZnkgdGhhdCBtb2RlID09CglWT0lEbW9kZSBpbXBsaWVzIGJvdGggb3BlcmFuZHMgdG8gYmUgVk9JRG1vZGUuCgkoc2ltcGxpZnlfdGVybmFyeV9vcGVyYXRpb24pOiBDb21wdXRlIHByb3Blcmx5IHRoZSBtb2RlIG9mIGNvbXBhcmlzb24uCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBMaWtld2lzZS4KCjIwMDAtMDctMjUgIE1pY2hhZWwgSGF5ZXMgIDxtcGhAcGFyYWRpc2UubmV0Lm56PgoKCSogYmFzaWMtYmxvY2suaCAoc3RydWN0IGxvb3BzKTogTmV3IGZpZWxkIHJjX29yZGVyLgoJKiBmbG93LmMgKGZsb3dfbG9vcHNfY2ZnX2R1bXApOiBEdW1wIHJjX29yZGVyIGlmIGNvbXB1dGVkLgoJKGZsb3dfbG9vcHNfZnJlZSk6IEZyZWUgcmNfb3JkZXIuCgkoZmxvd19kZXB0aF9maXJzdF9vcmRlcl9jb21wdXRlKTogTmV3IHBhcmFtZXRlciByY19vcmRlci4KCShmbG93X2xvb3BzX2ZpbmQpOiBBbGxvY2F0ZSByY19vcmRlciBhbmQgc3dhcCB1c2FnZSB3aXRoCglkZnNfb3JkZXIuCgoyMDAwLTA3LTMwIEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgkgICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5tZCAoc2V0X2xkcF9wcm9sb2d1ZSk6IEFkZCBmb3IgUlRMIHByb2xvZ3VlL2VwaWxvZ3VlLgoJKHB1c2hfc3QsIHB1c2hfZHAsIHBvcF9zdCwgcG9wX2RwLCBwb3BxaV91bnNwZWMpOiBMaWtld2lzZS4KCShub2RiX2NhbGwsIHJldHVybl9mcm9tX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkocmV0dXJuX2Zyb21faW50ZXJydXB0X2VwaWxvZ3VlLCBwcm9sb2d1ZSwgZXBpbG9ndWUpOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2V4cGFuZF9wcm9sb2d1ZSwgYzR4X2V4cGFuZF9lcGxpbG9ndWUpOiBBZGQuCgkqIGNvbmZpZy9jNHgvYzR4LXByb3Rvcy5oIChjNHhfaW50ZXJydXB0X2Z1bmN0aW9uX3ApOiBBZGQuCgkoYzR4X2V4cGFuZF9wcm9sb2d1ZSwgYzR4X2V4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKGM0eF92YWxpZF90eXBlX2F0dHJpYnV0ZV9wKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jNHgvYzR4LmggKEZVTkNUSU9OX1BST0xPR1VFLCBGVU5DVElPTl9FUElMT0dVRSk6IERlbGV0ZS4KCShGVU5DVElPTl9CTE9DS19QUk9GSUxFUl9FWElUKTogQ29udmVydCB0byBlbWl0IFJUTC4KCjIwMDAtMDctMzAgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9lbWl0X21vdmVfc2VxdWVuY2UpOiBVc2UgbG9hZHFpX2JpZ19jb25zdGFudAoJYW5kIGxvYWRoaV9iaWdfY29uc3RhbnQgaWYgYXBwbGljYWJsZS4KCSogY29uZmlnL2M0eC9jNHgubWQgKGxvYWRxaV9iaWdfY29uc3RhbnQsIGxvYWRoaV9iaWdfY29uc3RhbnQpOiBUd2VhawoJYW5kIGFkZCBuZXcgc3BsaXR0ZXIucwoKMjAwMC0wNy0zMCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X3JwdGJfaW5zZXJ0KTogTWFrZSBtb3JlIHJvYnVzdC4KCjIwMDAtMDctMzAgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKEFTTV9GT1JNQVRfUFJJVkFURV9OQU1FKTogT3V0cHV0ICQgaW4gbGFiZWwuCgoyMDAwLTA3LTMwICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChJU19YWFhfUkVHTk8pOiBSZXdyaXRlIHRvIGF2b2lkIHVuc2lnbmVkIHdhcm5pbmdzLgoKMjAwMC0wNy0zMCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9saWJnY2MuUyAoZGl2cWYzKTogSW1wcm92ZSBhY2N1cmFjeS4KCjIwMDAtMDctMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUHV0IHBoaSBub2RlcyBhZnRlciBOT1RFX0lOU05fQkFTSUNfQkxPQ0suCgkqIHJ0bC5oIChOT1RFX0lOU05fQkFTSUNfQkxPQ0tfUCk6IE5ldyBtYWNyby4KCSogYmItcmVvcmRlci5jIChnZXRfbmV4dF9iYl9ub3RlKTogVXNlIE5PVEVfSU5TTl9CQVNJQ19CTE9DS19QLgoJKGdldF9wcmV2X2JiX25vdGUpOiBMaWtld2lzZS4KCShyZW1vdmVfc2NvcGVfbm90ZXMpOiBMaWtld2lzZS4KCSogZmxvdy5jIChjb21taXRfb25lX2VkZ2VfaW5zZXJ0aW9uKTogTGlrZXdpc2UuCgkobWVyZ2VfYmxvY2tzX25vbW92ZSk6IExpa2V3aXNlLgoJKHZlcmlmeV9mbG93X2luZm8pOiBMaWtld2lzZS4KCSogZ2NzZS5jIChpbnNlcnRfaW5zbl9lbmRfYmIpOiBMaWtld2lzZS4KCSogcmVnLXN0YWNrLmMgKGVtaXRfc3dhcF9pbnNuKTogTGlrZXdpc2UuCgkqIHNzYS5jIChmaXJzdF9pbnNuX2FmdGVyX2Jhc2ljX2Jsb2NrX25vdGUpOiBOZXcgZnVuY3Rpb24uCgkoaW5zZXJ0X3BoaV9ub2RlKTogVXNlIGl0LgoJKHJlbmFtZV9ibG9jayk6IExpa2V3aXNlLgoJKGVsaW1pbmF0ZV9waGkpOiBMaWtld2lzZS4KCShtYWtlX3JlZ3NfZXF1aXZhbGVudF9vdmVyX2JhZF9lZGdlcyk6IExpa2V3aXNlLgoJKG1ha2VfZXF1aXZhbGVudF9waGlfYWx0ZXJuYXRpdmVzX2VxdWl2YWxlbnQpOiBMaWtld2lzZS4KCShmb3JfZWFjaF9zdWNjZXNzb3JfcGhpKTogTGlrZXdpc2UuCgkoY29udmVydF9mcm9tX3NzYSk6IE1vZGlmeSBwaGktbm9kZSBkZWxldGlvbiBhbGdvcml0aG0uCgoyMDAwLTA3LTI5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWd1cmUuaW4gKG1pcHMqLSotbGludXgqKTogVXNlIG1pcHMqZWwgdG8gY2hlY2sgZm9yIGxpdHRsZQoJZW5kaWFuIE1JUFMsIGFkZCB0bWFrZV9maWxlLgoKCSogY29uZmlnL21pcHMvbGludXguaCAoVEFSR0VUX1ZFUlNJT04pOiBVc2UgR05VL0xpbnV4LgoJKFNVQlRBUkdFVF9DUFBfU1BFQyk6IERlZmF1bHQgTUlQU19JU0EgaXMgMS4KCVBhdGNoZXMgYnkgTWFjaWVqIFcuIFJvenlja2kgPG1hY3JvQGRzMi5wZy5nZGEucGw+LgoKMjAwMC0wNy0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9wcmludF9vcGVyYW5kKTogRml4IHR5cG9zLgoJU2lnbiBleHRlbmQgbW9kZSBzaXplIGJlZm9yZSBuZWdhdGluZy4KCjIwMDAtMDctMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbWl0LXJ0bC5jIChnZW5fbG93cGFydF9jb21tb24pOiBBZGQgbWlzc2luZyAnYycgdmFyaWFibGUuCgoyMDAwLTA3LTI4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNzZS5jIChjYW5vbl9oYXNoKTogSGFuZGxlIFBSRV9NT0RJRlkvUE9TVF9NT0RJRlkuCgkoY3NlX2luc24pOiBMaWtld2lzZS4KCShhZGRyX2FmZmVjdHNfc3BfcCk6IExpa2V3aXNlLgoJKiBleHByLmMgKG1vdmVfYnlfcGllY2VzKTogTGlrZXdpc2UuCgkoY2xlYXJfYnlfcGllY2VzKTogTGlrZXdpc2UuCgkqIGdjc2UuYyAob3Byc191bmNoYW5nZWRfcCk6IExpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZF9hbmFseXplXzIpOiBMaWtld2lzZS4KCSogcmVjb2cuYyAob2Zmc2V0dGFibGVfYWRkcmVzc19wKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKHJlY29yZF9hZGRyZXNzX3JlZ3MpOiBMaWtld2lzZS4KCSogcmVsb2FkLmMgKGZpbmRfcmV1c2FibGVfcmVsb2FkKTogTGlrZXdpc2UuCgkocHVzaF9yZWxvYWQpOiBMaWtld2lzZS4KCShvcGVyYW5kc19tYXRjaF9wKTogTGlrZXdpc2UuCgkoZGVjb21wb3NlKTogTGlrZXdpc2UuCgkoZmluZF9yZWxvYWRzX2FkZHJlc3NfMSk6IExpa2V3aXNlLgoJKGZpbmRfaW5jX2Ftb3VudCk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKGVsaW1pbmF0aW9uX2VmZmVjdHMpOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuYyAobWFya19zZXRfcmVzb3VyY2VzKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoYXR0ZW1wdF9hdXRvX2luYyk6IE5ldyBmdW5jdGlvbjsgbW9zdGx5IGJyb2tlbiBvdXQKCW9mIGZpbmRfYXV0b19pbmMuCgkoZmluZF9hdXRvX2luYyk6IFNwbGl0IGludG8gdHdvIGZ1bmN0aW9ucyBhbmQgZW5oYW5jZWQgdG8KCWdlbmVyYXRlIFBPU1RfTU9ESUZZLgoJKiBydGwuZGVmIChQUkVfTU9ESUZZLCBQT1NUX01PRElGWSk6IEFkanVzdCBjb21tZW50LgoJKiBydGwuaCAoY291bnRfYWxsX29jY3VycmVuY2VzKTogIERlY2xhcmUuCgkoSEFWRV97UFJFLFBPU1R9X01PRElGWV97RElTUCxSRUd9KTogUHJvdmlkZSBkZWZhdWx0IG9mIDAgaWYgbm90CglkZWZpbmVkLgoJKiBydGxhbmFsLmMgKGNvdW50X2FsbF9vY2N1cnJlbmNlcyk6IE5ldyBmdW5jdGlvbi4KCSogdG0udGV4aSAoSEFWRV9QT1NUX01PRElGWV9ESVNQLCBIQVZFX1BSRV9NT0RJRllfRElTUCwKCUhBVkVfUE9TVF9NT0RJRllfUkVHLCBIQVZFX1BSRV9NT0RJRllfUkVHKTogRG9jdW1lbnQuCgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChkZXN0aW5hdGlvbl9vcGVyYW5kKTogRGVjbGFyZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChkZXN0aW5hdGlvbl9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLgoJKGlhNjRfcHJpbnRfb3BlcmFuZCk6IEhhbmRsZSBQT1NUX01PRElGWS4KCShydHhfbmVlZHNfYmFycmllcik6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEhBVkVfUE9TVF9NT0RJRllfRElTUCk6IERlZmluZSB0byAxLgoJKEhBVkVfUE9TVF9NT0RJRllfUkVHKTogRGVmaW5lIHRvIDEuCgkoTUFYX1JFR1NfUEVSX0FERFJFU1MpOiBDaGFuZ2UgdG8gMi4KCShHT19JRl9MRUdJVElNQVRFX0FERFJFU1MpOiBBY2NlcHQgUE9TVF9NT0RJRlkgdG9vLgoJKExFR0lUSU1BVEVfQUREUkVTU19SRUcpOiBOZXcgaGVscGVyIG1hY3JvLgoJKExFR0lUSU1BVEVfQUREUkVTU19ESVNQKTogTGlrZXdpc2UuCgkoUFJFRElDQVRFX0NPREVTKTogQWRkIGVudHJ5IGZvciBkZXN0aW5hdGlvbl9vcGVyYW5kLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChhbGwgbW92IHBhdHRlcm5zKTogVXNlIGRlc3RpbmF0aW9uX29wZXJhbmQKCXByZWRpY2F0ZSBmb3Igb3BlcmFuZCAwLgoKMjAwMC0wNy0yOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZHdhcmYyb3V0LmM6IEluZGVudCAjZXJyb3IgZGlyZWN0aXZlLgoKCSogZ2JsLWN0b3JzLmg6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkoX19kb19nbG9iYWxfY3RvcnMpOiBQcm90b3R5cGUuCgoJKiBnY3NlLmMgKHJlY29yZF9vbmVfc2V0LCBwcmVfZGVsZXRlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgoJKiByczYwMDAuYyAocnM2MDAwX21heWJlX2RlYWQpOiBEZWxldGUgdW51c2VkIHByb3RvdHlwZS4KCShwcmludF9vcGVyYW5kKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgdCcuCgoyMDAwLTA3LTI3ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZCAoImNhbGxfdmFsdWUiKTogcmVtb3ZlZCBjb25zdHJhaW50cy4KCUNvbnN0cmFpbnRzIGFyZSBpZ25vcmVkIGluIGV4cGFuZGVycy4KCSgqY2FsbF92YWx1ZV9yZWcpOiBzcGxpdCA9cmYgaW50byB2YXJpb3VzIGNvbnN0cmFpbnRzLgoJKCpjYWxsX3ZhbHVlX21lbSk6IHNhbWUKCSgqY2FsbF92YWx1ZV9zeW1ib2wpOiBzYW1lCgkoKnNpYmNhbGxfdmFsdWVfaW5zbik6IHNhbWUKCjIwMDAtMDctMjggIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogaW5zdGFsbC50ZXhpICgtLWVuYWJsZS1ubHMpOiBDaGFuZ2UgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBOTFMKCXJlbGF0ZWQgY29uZmlndXJlIG9wdGlvbnMgdG8gbWF0Y2ggdGhlIGN1cnJlbnQgc3RhdGUuCgkoLS13aXRoLWluY2x1ZGVkLWdldHRleHQpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUpOiBOZXcgZGVzY3JpcHRpb24gYWRkZWQuCgkqIGV4dGVuZC50ZXhpICgtZnN0cmljdC1wcm90b3R5cGUpOiBBZGQgbWlzc2luZyAnLicuCgoyMDAwLTA3LTI3ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZ2VuX2RlY2xfZGllKTogRG9uJ3QgY2FsbCBnZW5fYWJzdHJhY3RfZnVuY3Rpb24gaWYKCURFQ0xfSU5JVElBTCAoZGVjbCkgPT0gTlVMTF9UUkVFLgoKMjAwMC0wNy0yNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoSU5TTl9BVFRSX0gpOiBOZXcgbWFjcm8uICBSZXBsYWNlIGFsbCBkZXBlbmRlbmNpZXMKCW9uIGluc24tYXR0ci5oIHdpdGggaXQuCgkqIGdlbmF0dHIuYzogR2VuZXJhdGUgYCNpbmNsdWRlICJpbnNuLWFkZHIuaCInIGlmIEhBVkVfQVRUUl9sZW5ndGguCgkqIGluc24tYWRkci5oOiBOZXcgaGVhZGVyLgoJKGluc25fYWRkcmVzc2VzXyk6IFJlbmFtZWQgZnJvbSBpbnNuX2FkZHJlc3Nlcy4KCShJTlNOX0FERFJFU1NFU19ERUZOLCBJTlNOX0FERFJFU1NFUywgSU5TTl9BRERSRVNTRVNfQUxMT0MsCglJTlNOX0FERFJFU1NFU19GUkVFLCBJTlNOX0FERFJFU1NFU19TRVRfUCwgSU5TTl9BRERSRVNTRVNfU0laRSwKCUlOU05fQUREUkVTU0VTX05FVyk6IE5ldyBtYWNyb3MuCgkqIGdlbmF0dHJ0YWIuYyAod3JpdGVfdGVzdF9leHByKTogVXNlIG5ldyBtYWNyb3MuCgkqIGZpbmFsLmMgKGluc25fYWRkcmVzc2VzLCBpbml0X2luc25fbGVuZ3Rocyk6IExpa2V3aXNlLgoJKGFsaWduX2Z1enosIHNob3J0ZW5fYnJhbmNoZXMpOiBMaWtld2lzZS4KCShmaW5hbCk6IExpa2V3aXNlLiAgRG8gbm90IHJlamVjdCBuZXcgaW5zbnMgaWYgdGhlaXIgYWRkcmVzc2VzCgloYXZlIGJlZW4gYWRkZWQgdG8gSU5TTl9BRERSRVNTRVMuCgkqIGNvbmZpZy9hcm0vYXJtLmMsIGNvbmZpZy9hdnIvYXZyLmM6IFVzZSBuZXcgbWFjcm9zLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYywgY29uZmlnL2kzNzAvaTM3MC5jOiBMaWtld2lzZS4KCSogY29uZmlnL204OGsvbTg4ay5jLCBjb25maWcvcGEvcGEuYywgY29uZmlnL3BhL3BhLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMsIGNvbmZpZy9zcGFyYy9zcGFyYy5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jOiBMaWtld2lzZS4KCShvdXRwdXRfYnJhbmNoeV9pbnNuKTogVXNlIElOU05fQUREUkVTU0VTX05FVy4KCgkqIE1ha2VmaWxlLmluIChib290c3RyYXApOiBNb3ZlIC1Cc3RhZ2VOLyBiYWNrIHRvIHRoZSBiZWdpbm5pbmcuCgoyMDAwLTA3LTI3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBnY2MuYyAoc3RydWN0IHByZWZpeF9saXN0KTogQWRkIG1lbWJlciBwcmlvcml0eS4KCShlbnVtIHBhdGhfcHJlZml4X3ByaW9yaXR5KTogRGVjbGFyZS4KCShhZGRfcHJlZml4KTogUmVwbGFjZSBgYGZpcnN0Jycgd2l0aCBgYHByaW9yaXR5JycuICBBcHBlbmQgbmV3CgllbnRyeSBidXQga2VlcCBsaXN0IGluIHByaW9yaXR5IG9yZGVyLgoJKHByb2Nlc3NfY29tbWFuZCk6IFVwZGF0ZS4gIFBhc3MgUFJFRklYX1BSSU9SSVRZX0JfT1BUIG9yCglQUkVGSVhfUFJJT1JJVFlfTEFTVCB0byBhZGRfcHJlZml4LgoJKHByb2Nlc3NfY29tbWFuZCk6IE1vdmUgaW5jbHVkZSBrbHVkZ2UgLSBmb28vc3RhZ2VOIC0gdG8gYmVmb3JlCglmb28vaW5jbHVkZS4KCjIwMDAtMDctMjcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGdlbl90eXBlZGVmX2RpZSk6IEFib3J0IGlmIHdlIGdldCBpZGVudGljYWwKCVRSRUVfVFlQRSBhbmQgREVDTF9PUklHSU5BTF9UWVBFIG9uIGEgdHlwZWRlZi4KCjIwMDAtMDctMjcgIFJvZG5leUJyb3duICA8Um9kbmV5QnJvd25AcG1zYy5jb20+CgoJKiBleHByLmggKGdldF9hbGlhc19zZXQsIGxhbmdfZ2V0X2FsaWFzX3NldCk6IERlbGV0ZSBwcm90b3R5cGVzLgoJKiB0cmVlLmggKGdldF9hbGlhc19zZXQsIGxhbmdfZ2V0X2FsaWFzX3NldCk6IFByb3RvdHlwZS4KCjIwMDAtMDctMjcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBEb24ndCB0cmVhdCAnbWFpbicgc3BlY2lhbGx5IHVubGVzcwoJZmxhZ19ob3N0ZWQuICBJbiBDOTkgbW9kZSwgcmV0dXJuIDAgZnJvbSAnbWFpbicgdW5sZXNzCglERUZBVUxUX01BSU5fUkVUVVJOIGlzIG90aGVyd2lzZSBkZWZpbmVkLgoKCSogYy1kZWNsLmMgKHN0b3JlX3Bhcm1fZGVjbHMpOiBJbiBDOTkgbW9kZSwgcGVkd2FybiBmb3IgZnVuY3Rpb24KCXBhcmFtZXRlcnMgZGVmYXVsdGluZyB0byBpbnQgaW4gYW4gb2xkLXN0eWxlIGZ1bmN0aW9uIGRlZmluaXRpb24uCgoyMDAwLTA3LTI3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLXBhcnNlLmluIChzdHJpbmcpOiBGb3IgLVd0cmFkaXRpb25hbCwgd2FybiBhYm91dCBzdHJpbmcKCWNvbmNhdGVuYXRpb24gb25seSBvbmNlIHBlciBsaW5lLgoKVGh1IEp1bCAyNyAwOToyNToxNyAyMDAwICBBa2lrbyBNYXRzdXNoaXRhICA8bWF0dXNpdGFAc3JhLmNvLmpwPgoKCSogcGEveC1wYS1ocHV4OiBBZGQgLURfSElVWF9TT1VSQ0UgdG8gRklYUFJPVE9fREVGSU5FUwoJZm9yIEhJLVVYL1dFMiBzeXN0ZW1zLgoKMjAwMC0wNy0yNCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmNsL2ZpeGZpeGVzLmMoZW1pdF9nbnVfdHlwZSk6IHJld3JvdGUgdG8gKnJlbHkqIG9uIEdDQwoJZGVmaW5pbmcgdGhlIF9feHh4X1RZUEVfXyBtYWNyb3MuCgkqIGZpeGluY2wvZml4aW5jbC50cGwoZ251X3R5cGVfbWFwKTogbm93IG9ic29sZXRlCgkqIGZpeGluY2wvZml4bGliLmg6IGRvbid0IG5lZWQgdG8gaW5jbHVkZSAidG0uaCIgYW55bW9yZQoJKiBmaXhpbmNsL2luY2xoYWNrLmRlZih0eXBlX21hcCk6IG5vdyBvYnNvbGV0ZQoKVGh1IEp1bCAyNyAxMTo1NDoxNyAyMDAwICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBjcHAudGV4aTogQXBwZW5kIGEgdHJhaWxpbmcgZnVsbC1zdG9wIHRvIHhyZWZzIHdoZXJlIG5lZWRlZC4KCjIwMDAtMDctMjYgIERhdmUgUGl0dHMgIDxkcGl0dHNAY296eC5jb20+CgoJKiBpMzcwLmM6IFJlbW92ZSBMT05HRVhURVJOQUwgaWZkZWYgZnJvbSBhbGlhc19udW1iZXIuIEFkZGVkIGhhc2gKCXJvdXRpbmUgY29uc3RhbnRzLgoJKG12c19oYXNoX2FsaWFzKTogTmV3IGZ1bmN0aW9uLgoJKG12c19hZGRfYWxpYXMpOiBDaGFuZ2UgYXJndW1lbnQgc3BhY2luZy4KCShtdnNfbmVlZF9hbGlhcyk6IENoYW5nZSBhbGlhc2luZyBjcml0ZXJpYS4gQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShtdnNfZ2V0X2FsaWFzKTogQ2hhbmdlIHRvIHVzZSBoYXNoZWQgbmFtZS4gVGhlIGhhc2hlZCBuYW1lIHByZXZlbnRzCglDU0VDVCBuYW1lIGNvbGxpc2lvbnMuCgkobXZzX2NoZWNrX2FsaWFzKTogTGlrZXdpc2UuCgkoaGFuZGxlX3ByYWdtYSk6IENoYW5nZSBkb2N1bWVudGF0aW9uLgoJKiBpMzcwLm1kIChtdWxzaTMsIGRpdnNpMywgdWRpdnNpMywgbW9kc2kzLCB1bW9kc2kzKTogQ2hhbmdlZCBnZW5fcnR4Cgltb2RlIGZyb20gU0ltb2RlIHRvIERJbW9kZS4KCShpb3JoaTMpOiBDaGFuZ2VkIExUT1JHIHNpemUgZm9yIGluc24uCgpXZWQgSnVsIDI2IDE5OjQ0OjA1IDIwMDAgICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHNfdG9wbGV2KTogUmVsb2FkIGEgcGFyYWRveGljYWwgc3VicmVnIG9mIGEKCW1lbSBpZiB0aGUgYWRkcmVzcyBpcyBhIG1vZGVfZGVwZW5kZW50X2FkZHJlc3NfcC4KCjIwMDAtMDctMjYgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAuYyAocHJpbnRfb3BlcmFuZCk6IFByaW50ICI6OCIgd2hlbiB0aGUgJ1InIG9wZXJhbmQgaXMKCXN1aXRhYmxlIGZvciA4LWJpdCBhYnNvbHV0ZS4KCSogaDgzMDAuaCAoRUlHSFRCSVRfQ09OU1RBTlRfQUREUkVTU19QKTogTmV3LgoJKE9LX0ZPUl9VKTogQWRkIGEgY2FzZSBmb3IgdGhlIDgtYml0IGNvbnN0YW50IGFkZHJlc3Mgb24gdGhlCglIOC8zMDBILgoKV2VkIEp1bCAyNiAxOToyNjoyMSAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSkgWyEgZGVmaW5lZChBU01fT1VUUFVUX0FMSUdORURfQ09NTU9OKQoJJiYgISBkZWZpbmVkIChBU01fT1VUUFVUX0FMSUdORURfQlNTXSk6IEFsc28gdGVzdAoJISBkZWZpbmVkKEFTTV9PVVRQVVRfQUxJR05FRF9ERUNMX0NPTU1PTikgYmVmb3JlIGNvbXBsYWluaW5nIGFib3V0CglsYWNrIG9mIGltcGxlbWVudGVkIGFsaWdubWVudC4KCjIwMDAtMDctMjYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0X2NvbW1vbikgW1JFQUxfQVJJVEhNRVRJQ106IEhhbmRsZQoJY3Jvc3MtY29tcGlsaW5nIGJldHdlZW4gNjQtYml0IGFuZCAzMi1iaXQgbWFjaGluZXMuCgoyMDAwLTA3LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92cWljY19hc3RlcCwgbW92cWlfaW50ZXJuYWxfYXN0ZXApOiBOZXcuCgkobW92aGljY19hc3RlcCwgbW92aGlfaW50ZXJuYWxfYXN0ZXApOiBOZXcuCgkobW92c2ljY19hc3RlcCwgbW92c2lfaW50ZXJuYWxfYXN0ZXApOiBOZXcuCgkobW92ZGljY19hc3RlcCwgbW92ZGlfaW50ZXJuYWxfYXN0ZXApOiBOZXcuCgkobW92c2ZjY19hc3RlcCwgbW92c2ZfaW50ZXJuYWxfYXN0ZXApOiBOZXcuCgkobW92ZGZjY19hc3RlcCwgbW92ZGZfaW50ZXJuYWxfYXN0ZXApOiBOZXcuCgkobW92eGZjY19hc3RlcCwgbW92eGZfaW50ZXJuYWxfYXN0ZXApOiBOZXcuCgkoY21vdmRpX2ludGVybmFsX2FzdGVwLCBjbW92c2lfaW50ZXJuYWxfYXN0ZXApOiBOZXcuCglVbmlmeSB0aGUgY21vdltkc11pIHNwbGl0dGVycy4KCjIwMDAtMDctMjcgIFJvZG5leSBCcm93biAgPFJvZG5leUJyb3duQHBtc2MuY29tPgoKCSogcmVhbC5jIChhc2N0b2VnKTogUmVuYW1lIGBlcnJvcicgbGFiZWwgdG8gdW5leHBlY3RlZF9jaGFyX2Vycm9yCgoyMDAwLTA3LTI2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS92eGFybS5oIChDUFBfUFJFREVGSU5FUyk6IFJlbW92ZSBkZWZpbml0aW9uIG9mCglfX2FybV9fLiAgQWxsb3cgaXQgdG8gYmUgZGVmaW5lZCBieSBDUFBfSVNBX1NQRUMgaW4gYXJtLmgKCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwcik6IEFjY2VwdCBTRVFVRU5DRSBhcwoJd2VsbCBhcyBQQVJBTExFTCBibG9ja3MgaW4gRlJBTUVfUkVMQVRFRF9FWFBSIG5vdGVzLgoKMjAwMC0wNy0yNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZmluaXNoX2VudW0pOiBDb252ZXJ0IGVudW1lcmF0aW9ucyB0aGF0IGZpdCBpbiBhbgoJYGludCcgdG8gYGludCcuCgkoYnVpbGRfZW51bWVyYXRvcik6IEluIHBlZGFudGljIG1vZGUsIGNhc3QgdG8gYGludCcgdGhvc2UgdGhhdAoJZG9uJ3QuCgoyMDAwLTA3LTI1ICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBwbXNjLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9vc2YuaCAoU0laRV9UWVBFLCBQVFJESUZGX1RZUEUpOiBOZXcuCgpUdWUgSnVsIDI1IDIzOjA4OjMzIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLm1kIChjbXBndGRpX3QpOiBNdXN0IGJlIHNwbGl0LgoJKGNtcGd0ZGlfdCsxKTogTmV3IHNwbGl0dGVyLgoKMjAwMC0wNy0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKF9jcHBfY2hlY2tfZGlyZWN0aXZlKTogSXNzdWUgLVd0cmFkaXRpb25hbAoJd2FybmluZ3MgZm9yIGluZGVudGVkIGRpcmVjdGl2ZXMgZXZlbiBpZiB3ZSBhcmUgc2tpcHBpbmcuCgoyMDAwLTA3LTI1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogaW52b2tlLnRleGkgKHN0cmljdC1wcm90b3R5cGVzKTogUmVtb3ZlLgoJKiBleHRlbmQudGV4aSAoRGVwcmVjYXRlZCBGZWF0dXJlcyk6IEFkZCBzdHJpY3QtcHJvdG90eXBlcy4KCShCYWNrd2FyZHMgQ29tcGF0aWJpbGl0eSk6IE5ldyBub2RlLgoKMjAwMC0wNy0yNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChhbmRzaV8xKzEpOiBBbGxvdyBISW1vZGUuCgkoYW5kc2lfMSsyKTogUmVxdWlyZSBxX3JlZ3Nfb3BlcmFuZC4KCjIwMDAtMDctMjUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoY2FsbF9wb3ApOiBDaGVjayBvcGVyYW5kc1swXSwKCW5vdCBvcGVyYW5kc1sxXS4gT25seSBjaGVjayBTWU1CT0xfUkVGX0ZMQUcgZm9yIGEgU1lNQk9MX1JFRi4KCShjYWxsKTogTGlrZXdpc2UuCgkoY2FsbF92YWx1ZV9wb3ApOiBPbmx5IGNoZWNrIFNZTUJPTF9SRUZfRkxBRyBmb3IgYSBTWU1CT0xfUkVGLgoJKGNhbGxfdmFsdWUpOiBMaWtld2lzZS4KCjIwMDAtMDctMjUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHRvcGxldi5jIChwaXBlX2Nsb3NlZCk6IERlbGV0ZS4KCShjcmFzaF9zaWduYWwpOiBOZXcuICBHZW5lcmF0ZSBJQ0UgZm9yIGEgZmF0YWwgc2lnbmFsLgoJKGZsb2F0X3NpZ25hbCk6IENhbGwgY3Jhc2hfc2lnbmFsIG91dHNpZGUgYSBmbG9hdC1oYW5kbGVyCglibG9jaywgbm90IGFib3J0LgoJKG1haW4pOiBJbnN0YWxsIGNyYXNoX3NpZ25hbCBhcyBoYW5kbGVyIGZvciBjb3JlLWR1bXBpbmcgc2lnbmFscy4KCjIwMDAtMDctMjUgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5jIChwcmludF9vcGVyYW5kLCBjYXNlICdUJyk6IE5ldyBjYXNlLgoKCSogcnM2MDAwLm1kIChjYWxsX2luZGlyZWN0X2FpeDMyKTogQ29udmVydCB0byBleHBhbmRlciBvZgoJc2NoZWR1bGVkIGluc3RydWN0aW9ucy4KCShjYWxsX2luZGlyZWN0X2FpeDY0KTogTGlrZXdpc2UuCgkoY2FsbF92YWx1ZV9pbmRpcmVjdF9haXh7MzIsNjR9KTogTGlrZXdpc2UuCgkoY2FsbCwgY2FsbF92YWx1ZSk6IEludm9rZSBleHBhbmRlcnMgZm9yIEFJWC4gIEZhbGwgdGhyb3VnaCB0bwoJbWF0Y2hlcnMgZm9yIFN5c1YuCgkoY2FsbF9pbmRpcmVjdF9ub25sb2NhbF9haXh7MzIsNjR9KTogTmV3IHBhdHRlcm5zIChjdHIgYW5kIGxyKS4KCShjYWxsX3ZhbHVlX2luZGlyZWN0X25vbmxvY2FsX2FpeHszMiw2NH0pOiBOZXcgcGF0dGVybnMuCgkoY2FsbF9ub25sb2NhbF9haXgzMik6IFJlbW92ZSBDQUxMX0xPTkcgYWx0ZXJuYXRpdmUuICBPcGVyYW5kIDEKCW9ubHkgImciIGNvbnN0cmFpbnQuCgkoY2FsbF9ub25sb2NhbF9haXg2NCk6IExpa2V3aXNlLgoJKGNhbGxfdmFsdWVfbm9ubG9jYWxfYWl4ezMyLDY0fSk6IExpa2V3aXNlLgoJKGNhbGxfbm9ubG9jYWxfc3lzdik6IE5ldyBwYXR0ZXJuIGZvciBjdHIsIGxyLCBhbmQgc3ltYm9saWMKCW9wZXJhbmRzLgoJKGNhbGxfdmFsdWVfbm9ubG9jYWxfc3lzdik6IE5ldyBwYXR0ZXJuLgoJKGluZGlyZWN0X2p1bXB7c2ksZGl9KTogVXNlIG5ldyAnVCcgbW9kaWZpZXIuCgkodGFibGVqdW1we3NpLGRpfSBtYXRjaGVycyk6IExpa2V3aXNlLgoJKHJldHVybl9pbnRlcm5hbF97c2ksZGl9KTogTGlrZXdpc2UuCgkocmV0dXJuX2VoX3tzaSxkaX0pOiBMaWtld2lzZS4KCjIwMDAtMDctMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfcHJpbnRfb3BlcmFuZCk6IEhhbmRsZSAiJSwiLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFBSSU5UX09QRVJBTkRfUFVOQ1RfVkFMSURfUCk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3ZkaV9pbnRlcm5hbCk6IFVzZSBpdC4KCjIwMDAtMDctMjQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGV4cC5jOiBXYXJuIGFib3V0IHVuYXJ5ICsgaWYgLVd0cmFkaXRpb25hbC4KCSogY3BwbGV4LmMgKGxleF9saW5lKTogQWx3YXlzIHNldCBCT0wgb24gdGhlIGZpcnN0IHRva2VuIG9mIGEgbGluZS4KCjIwMDAtMDctMjQgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogZDMwdi5oIChGVU5DVElPTl9BUkdfS0VFUF9BU19SRUZFUkVOQ0UpOiBEZWxldGUgcmVmZXJlbmNlcyB0bwoJdW5zdXBwb3J0ZWQgbWFjcm8uCgoyMDAwLTA3LTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoZW1pdF9tdWx0aV9yZWdfcHVzaCk6IEdlbmVyYXRlIGEKCVJFR19GUkFNRV9SRUxFQVRFRF9OT1RFIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBjb2RlIGluCglkd2FyZjJvdXRfZGVidWdfZnJhbWVfZXhwci4KCjIwMDAtMDctMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmM6IENvbXBsYWluIGlmIERXQVJGMl9ERUJVR0dJTkdfSU5GTyBpcyBkZWZpbmVkIHdpdGhvdXQKCVVOQUxJR05FRF9JTlRfQVNNX09QLgoJKGRlZl9jZmFfMSk6IERvbid0IGVtaXQgZGVmX2NmYV9yZWdpc3RlciBvciBkZWZfY2ZhX29mZnNldCB0byBhZGp1c3QKCWEgbG9jYXRpb24gZXhwcmVzc2lvbi4KCShkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwcik6IExvc2UgY2ZhX29sZF9yZWcgc3R1ZmYuICBEb24ndAoJYXNzdW1lIGluZGlyZWN0IGFjY2VzcyBpZiB3ZSdyZSBzYXZpbmcgdGhlIENGQSBhZGRyZXNzIGV4YWN0bHkuCgoJKiBNYWtlZmlsZS5pbiAoYm9vdHN0cmFwKTogTW92ZSAtQnN0YWdlTi8gdG8gdGhlIGVuZC4KCjIwMDAtMDctMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogdHJhZGNwcC5jIChtYWluKTogVXBkYXRlIG1heF9pbmNsdWRlX2xlbiBmb3IgY3BwX2luY2x1ZGVfZGVmYXVsdHMKCWFzIHdlbGwuCgoyMDAwLTA3LTI0ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAcmVkaGF0LmNvbT4KCgkqIGludm9rZS50ZXhpIChEMzBWIE9wdGlvbnMpOiBBZGQgZDMwdiBvcHRpb25zLgoKTW9uIEp1bCAyNCAwMjowNDo1MiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnY3NlLmMgKGFsbG9jX3ByZV9tZW0pOiBEbyBub3QgYWxsb2MgVFJBTlNQT1VULCBpdCBpcyBub3QKCW5lZWRlZCBieSBvdXIgZ2NzZSBwYXNzIGFueW1vcmUuCgkoZnJlZV9wcmVfbWVtKTogQ29ycmVzcG9uZGluZyBjaGFuZ2VzLgoJKGNvbXB1dGVfcHJlX2RhdGEpOiBEbyBub3QgY2FsbCBjb21wdXRlX3RyYW5zcG91dCBhbnltb3JlLgoKCSogZ2NzZS5jIChhbGxvY19hdmFpbF9leHByX21lbSk6IEtpbGwgdW51c2VkICd1X2JpdG1hcCcuCgkoZnJlZV9hdmFpbF9leHByX21lbSwgYWxsb2NfcHJlX21lbSwgZnJlZV9wcmVfbWVtKTogQ29ycmVzcG9uZGluZwoJY2hhbmdlcy4KCgkqIGdjc2UuYyAoZnJlZV9wcmVfbWVtKTogRG8gbm90IGZyZWUgQU5UTE9DIGFuZCBBRV9LSUxMIGhlcmUuCgkoY29tcHV0ZV9wcmVfZGF0YSk6IERvIGl0IGhlcmUgaW5zdGVhZC4KCgkqIGdjc2UuYyAoYWxsb2NfcHJlX21lbSwgZnJlZV9wcmVfbWVtKTogRGVsZXRlIHVudXNlZCBiaXRtYXAKCSd0ZW1wX2JpdG1hcCcuCgkocHJlX2RlbGV0ZSk6IENvcnJlc3BvbmRpbmcgY2hhbmdlcy4KCjIwMDAtMDctMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXNlbWFudGljcy5jIChtYWtlX3J0bF9mb3JfbG9jYWxfc3RhdGljKTogVXNlIFRSRUVfQVNNX1dSSVRURU4KCXRvIGZpZ3VyZSBvdXQgd2hldGhlciBvciBub3QgYSB2YXJpYWJsZSBoYXMgYWxyZWFkeSBiZWVuIGVtaXR0ZWQuCgpTdW4gSnVsIDIzIDE0OjQ5OjEyIDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTg2MC9pODYwLm1kICh1bnR5cGVkX2NhbGwgZXhwYW5kZXIpOiBVc2UgR0VOX0NBTEwKCWluc3RlYWQgb2YgZ2VuX2NhbGwuCgpTdW4gSnVsIDIzIDExOjUyOjAzIDIwMDAgIEdlb3JnZSBIZWxmZnJpY2ggKGdlb3JnZUBnbHkuYnJpcy5hYy51aykKCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSwgY2FzZSBDT01QTEVYX1RZUEUpOiBGaXggbGVuZ3RoIGZpZWxkIGluIHN0YWIuCgoyMDAwLTA3LTIzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGg4MzAwLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wNy0yMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy10eXBlY2suYyAoY19leHBhbmRfc3RhcnRfY2FzZSk6IENoYW5nZSAtV3RyYWRpdGlvbmFsIHBlZHdhcm4KCWZvciBgbG9uZycgc3dpdGNoIGV4cHJlc3Npb24gaW50byBhIHBsYWluIHdhcm5pbmcuCgoJKiBjLWxleC5jIChpbml0X2xleCk6IEtlZXAgdGhlICJpbmxpbmUiIGtleXdvcmQgaW4gQzk5IG1vZGUuCgkoeXlsZXgpOiBEb24ndCBwZWR3YXJuIGZvciAiaW5saW5lIiBpbiBDOTkgbW9kZS4KCgkqIGJpdG1hcC5jIChkZWJ1Z19iaXRtYXBfZmlsZSk6IENhc3QgcG9pbnRlcnMgdG8gUFRSIGZvciBwcmludGluZwoJd2l0aCAlcC4KCSogZ2djLXBhZ2UuYyAoZGVidWdfcHJpbnRfcGFnZV9saXN0LCBhbGxvY19wYWdlLCBmcmVlX3BhZ2UsCglnZ2NfYWxsb2MpOiBMaWtld2lzZS4KCSogYmItcmVvcmRlci5jIChkdW1wX3Njb3BlX2ZvcmVzdF8xKTogTGlrZXdpc2UuCgoyMDAwLTA3LTIyICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX3RvcGxldik6IEFkZCBuZXcgcGFyYW1ldGVyCgkiYWRkcmVzc19yZWxvYWRlZCIuCgkoZmluZF9yZWxvYWRzKTogQWRkIG5ldyBwYXJhbWV0ZXIgdG8gZmluZF9yZWxvYWRzX3RvcGxldiBjYWxscy4KCjIwMDAtMDctMjIgIEplZmZyZXkgT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb2xsZWN0Mi5jIChtYWluKTogVHlwbyBmaXhlZC4KCSogZGlhZ25vc3RpYy5jOiBUeXBvIGZpeGVkLgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2ZyYW1lX2RlYnVnX2V4cHIpOiBUeXBvIGZpeGVkLgoJKiBlaC1jb21tb24uaDogVHlwbyBmaXhlZC4KCSogZW1pdC1ydGwuYyAoc3RhcnRfc2VxdWVuY2UpOiBUeXBvIGZpeGVkLgoJKiBmbG93LmMgKGZpbmRfbGFiZWxfcmVmcyk6IFR5cG8gZml4ZWQuCgkoY2FsY3VsYXRlX2dsb2JhbF9yZWdzX2xpdmUpOiBUeXBvIGZpeGVkLgoJKG1hcmtfcmVnbm9fY29uZF9kZWFkKTogVHlwbyBmaXhlZC4KCShjcmVhdGVfZWRnZV9saXN0KTogVHlwb3MgZml4ZWQuCgkodmVyaWZ5X2VkZ2VfbGlzdCk6IFR5cG8gZml4ZWQuCgkqIGdnYy1jb21tb24uYyAoZ2djX21hcmtfcnR4X2NoaWxkcmVuKTogVHlwbyBmaXhlZC4KCSogbG9vcC5jIChzdHJlbmd0aF9yZWR1Y2UpOiBUeXBvIGluIGZ1bmN0aW9uIG5hbWUgZml4ZWQuCgkqIHJ0bC5oOiBBZGRlZCBjb21tZW50cy4gIFR5cG8gaW4gZnVuY3Rpb24gbmFtZSBmaXhlZC4KCSogcnRsYW5hbC5jOiBUeXBvIGluIGZ1bmN0aW9uIG5hbWUgZml4ZWQuCgkoaW5zbl9kZXBlbmRhbnRfcCk6IFJlbmFtZSB0byAuLi4KCShpbnNuX2RlcGVuZGVudF9wKTogLi4uIHRoaXMuCgkoY29tcHV0ZWRfanVtb19wKTogVHlwbyBmaXhlZC4KCjIwMDAtMDctMjIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHN5c3RlbS5oIChfX0ZVTkNUSU9OX18pOiBXcmFwIGRlZmluaXRpb24gaW4gI2lmbmRlZi4KCjIwMDAtMDctMjEgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5oIChTSVpFX1RZUEUpOiBEZWZpbmUuCgoyMDAwLTA3LTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3NhLmMgKHJlbmFtZV9pbnNuXzEpOiBEb24ndCByZW5hbWUgcmVnaXN0ZXJzIHRoYXQgYXJlCglDTE9CQkVSZWQuCgoyMDAwLTA3LTIxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBkaWFnbm9zdGljLmMgKHRyaW1fZmlsZW5hbWUsIGZhbmN5X2Fib3J0KTogTW92ZWQgaGVyZSBmcm9tCglydGwuYy4KCShmYXRhbF9mdW5jdGlvbiwgc2V0X2ZhdGFsX2Z1bmN0aW9uKTogUmVtb3ZlZC4KCShmYXRhbCk6IERvbid0IHByZXBhcmUgZm9yIG9yIGNhbGwgdGhlIGZhdGFsX2Z1bmN0aW9uLgoJKGRpYWdub3N0aWNfbG9jaywgZXJyb3JfcmVjdXJzaW9uKTogTmV3LgoJKGRpYWdub3N0aWNfZm9yX2RlY2wsIHJlcG9ydF9kaWFnbm9zdGljKTogR3VhcmQgYWdhaW5zdAoJcmUtZW50ZXJpbmcgdGhlIGVycm9yIHJlcG9ydGluZyByb3V0aW5lcy4KCShmYW5jeV9hYm9ydCk6IEFzc3VtZSBmdW5jdGlvbiBpcyBub3QgTlVMTC4KCgkqIGVycm9ycy5jIChmYW5jeV9hYm9ydCk6IE5ldy4gIEFzc3VtZSBmdW5jdGlvbiBpcyBub3QgTlVMTC4KCSogdHJhZGNwcC5jIChmYW5jeV9hYm9ydCk6IEFzc3VtZSBmdW5jdGlvbiBpcyBub3QgTlVMTC4KCgkqIHN5c3RlbS5oOiBQcm92aWRlIGRlZmF1bHQgZGVmaW5pdGlvbiBvZiBfX0ZVTkNUSU9OX18uCgkqIHJ0bC5oOiBVc2UgX19GVU5DVElPTl9fIG5vdCBfX1BSRVRUWV9GVU5DVElPTl9fIHRocm91Z2hvdXQuCglBbHdheXMgdXNlIF9fRlVOQ1RJT05fXyBpbiBkZWZpbml0aW9uIG9mIGFib3J0LgoJKiB0cmVlLmg6IExpa2V3aXNlLgoJKiB2YXJyYXkuaDogTGlrZXdpc2UuCgkqIHRvcGxldi5oOiBMaWtld2lzZS4gIERvbid0IHByb3RvdHlwZSBzZXRfZmF0YWxfZnVuY3Rpb24uCgoyMDAwLTA3LTIwICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL2FpeDQzLmggKENQUF9TUEVDKTogRGVmaW5lIF9fTE9OR19NQVhfXyBjb3JyZWN0bHkKCWluIDY0LWJpdCBtb2RlLgoJKiBnbGltaXRzLmg6IERvbid0IGRvICNpZiBkZWZpbmVkIGZvciBBUkNIX1BQQy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEFTTV9PVVRQVVRfU1BFQ0lBTF9QT09MX0VOVFJZX1ApOiBBbGwKCWNvbnN0YW50cyBvZiBzaXplIG5vIGxhcmdlciB0aGFuIGEgcG9pbnRlciBzaG91bGQgZ28gaW4gdGhlIFRPQy4KCUFkZCAnTU9ERScgcGFyYW1ldGVyLgoJKExFR0lUSU1JWkVfUkVMT0FEX0FERFJFU1MpOiBBZGQgTU9ERSBwYXJhbWV0ZXIgdG8KCUFTTV9PVVRQVVRfU1BFQ0lBTF9QT09MX0VOVFJZX1AuCgkoQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUlkpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9haXguaCAoU0VMRUNUX1JUWF9TRUNUSU9OKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvbmV0d2FyZS5oIChTRUxFQ1RfUlRYX1NFQ1RJT04pOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoY29uc3RhbnRfcG9vbF9leHByXzEpOiBMaWtld2lzZS4KCShyczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzKTogTGlrZXdpc2UuCgkocnM2MDAwX2VtaXRfbW92ZSk6IExpa2V3aXNlLgoJKHJzNjAwMF9zZWxlY3RfcnR4X3NlY3Rpb24pOiBMaWtld2lzZS4KCShvdXRwdXRfdG9jKTogRGVhbCBwcm9wZXJseSB3aXRoIG91dHB1dHRpbmcgc21hbGwgY29uc3RhbnRzIGxpa2UKCUhJbW9kZSwgYW5kIFNGbW9kZSBpbiAzMi1iaXQgbW9kZSwgYW5kIERGbW9kZSBpbiA2NC1iaXQgbW9kZS4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChBU01fT1VUUFVUX1NQRUNJQUxfUE9PTF9FTlRSWV9QKTogQWRkCglNT0RFIHBhcmFtZXRlci4gIFB1dCBzbWFsbCBjb25zdGFudHMgaW4gdGhlIFRPQy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGVhc3lfZnBfY29uc3RhbnRfcCk6IEFsbCBjb25zdGFudHMgYXJlCgllYXN5IGluIFNJbW9kZS4KCShyczYwMDBfZW1pdF9tb3ZlKTogV2hlbiByZWxvYWQgY2FsbHMgdXMgd2l0aCBhbiBpbGxlZ2l0aW1hdGUKCWFkZHJlc3MsIGV4aXQgZWFybHkuICBNb3ZlIHRoZSBjaGFuZ2VfYWRkcmVzcyBjYWxscyB0byBvbmUgcGxhY2UKCWF0IHRoZSBlbmQgb2YgdGhlIHJvdXRpbmUuICBNZXJnZSB0aGUgU0ltb2RlIGFuZCBESW1vZGUgZXhwYW5kZXJzLgoJV2hlbiBjYWxsZWQgYnkgcmVsb2FkIHRvIHB1dCBhbiBpbnRlZ2VyIGludG8gYSBGUCByZWdpc3RlciwgZm9yY2UKCWl0IHRvIG1lbW9yeS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHN0cnVjdCB0b2NfaGFzaF9zdHJ1Y3QpOiBBZGQgJ2tleV9tb2RlJwoJZmllbGQuCgkocnM2MDAwX2hhc2hfY29uc3RhbnQpOiBIYXNoIG1vZGUgdG9vLgoJKHRvY19oYXNoX2Z1bmN0aW9uKTogQWxsb3cgZm9yIGtleV9tb2RlLgoJKHRvY19oYXNoX2VxKTogU3RydWN0dXJlcyBhcmUgZGlmZmVyZW50IGlmIGtleV9tb2RlIGRpZmZlcnMuCgkob3V0cHV0X3RvYyk6IEFkZCAnbW9kZScgcGFyYW1ldGVyLiAgU2F2ZSBrZXlfbW9kZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUlkpOgoJUGFzcyAnbW9kZScgcGFyYW1ldGVyLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAob3V0cHV0X3RvYyk6IEFkZCAnbW9kZScgcGFyYW0uCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChvdXRwdXRfdG9jKTogVXNlIFJTNjAwMF9PVVRQVVRfQkFTRU5BTUUKCWZvciB2dGFibGUgcmVmZXJlbmNlcy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBJZiB3ZSBoYXZlIGEKCWNob2ljZSwgZG9uJ3QgcHV0IGludGVnZXIgdmFsdWVzIGluIEZQIHJlZ3MuCgpUaHUgSnVsIDIwIDE4OjEzOjUyIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGZsb3cuYyAodmVyaWZ5X2Zsb3dfaW5mbyk6IFJldmFtcCBjb2RlIHRvIHZlcmlmeSB0aGF0IHRoZQoJaGVhZCBhbmQgZW5kIG9mIGVhY2ggYmFzaWMgYmxvY2sgYXJlIGluIHRoZSBpbnNuIGNoYWluLgoKVGh1IEp1bCAyMCAxODowMjozNSAyMDAwICBNaWNoYWVsIE1hdHogPG1hdHptaWNoQGNzLnR1LWJlcmxpbi5kZT4KCgkqIGdjc2UuYyAocmVjb3JkX29uZV9zZXQpOiBQcmVwZW5kIGluc3RlYWQgb2YgYXBwZW5kIG9udG8KCXJlZ19zZXRfdGFibGUsIG1ha2luZyBpdCBPKG4pIGluc3RlYWQgTyhuXjIpLgoJKiBsY20uYyAoY29tcHV0ZV9hbnRpbm91dF9lZGdlLGNvbXB1dGVfbGF0ZXJpbixjb21wdXRlX2F2YWlsYWJsZSk6CglVc2UgYSBxdWV1ZSBpbnN0ZWFkIG9mIGEgc3RhY2sgYXMgd29ya2xpc3QuCgoyMDAwLTA3LTIwICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGg4MzAwLmMgKHR3b19pbnNuX2FkZHNfc3Vic19vcGVyYW5kKTogRml4IGEgdHlwby4KCSogaDgzMDAuaCAoT0tfRk9SX1QpOiBOZXcuCgkoRVhUUkFfQ09OU1RSQUlOVCk6IFN1cHBvcnQgT0tfRk9SX1QuCgkqIGg4MzAwLm1kOiBVc2UgaW5jL2RlYy5bd2xdIGZvciBpbmNyZW1lbnQvZGVjcmVtZW50CglieSAxIGFuZCAyIGluIEhJIGFuZCBTSSBtb2Rlcy4KCjIwMDAtMDctMjAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IEhhbmRsZSBERUxUQSB2YWx1ZXMKCWxhcmdlciB0aGFuIDE0IGJpdHMuCgoyMDAwLTA3LTIwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBtYWNyby5jIChDQU5fUEFTVEVfQUZURVIpOiBOZXcgbWFjcm8uCgkoY291bnRfcGFyYW1zKTogRG9uJ3Qgc2V0IEdOVV9SRVNUX0FSR1Mgb24gYW55dGhpbmcuCgkoc2F2ZV9leHBhbnNpb24pOiBTZXQgUEFTVEVfTEVGVCBvbmx5IG9uIHRva2VucyBmb3Igd2hpY2gKCUNBTl9QQVNURV9BRlRFUiBpcyB0cnVlLCBvciB3aGljaCBhcmUgbmFtZWQgb3BlcmF0b3JzLgoKCSogY3BwbGV4LmMgKHBhcnNlX2FyZ3MpOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgcmVzdCBhcmd1bWVudAoJZ2l2ZW4gb25lIGVtcHR5IGFyZ3VtZW50LCBhbmQgYSByZXN0IGFyZ3VtZW50IGdpdmVuIHplcm8gYXJndW1lbnRzLgoJKG1heWJlX3Bhc3RlX3dpdGhfbmV4dCk6IExvb2sgZm9yIFZPSURfUkVTVCB0YWcsIGFuZCB0cmlnZ2VyCglkZWxldGlvbiBvZiBwcmV2aW91cyB0b2tlbiBiYXNlZCBvbiB0aGF0LgoJKGdldF9yYXdfdG9rZW4pOiBGbGF0dGVuIHNvbWUgY29udHJvbCBzdHJ1Y3R1cmUuCgoJKiBjcHBsaWIuaCAoQ1BQX0xBU1RfRVEpOiBDb3JyZWN0LgoJKFZPSURfUkVTVCk6IE5ldyB0b2tlbiBmbGFnLgoJKEdOVV9SRVNUX0FSR1MpOiBEZWxldGUuCgoJKiB0cmFkY3BwLmMgKG1haW4pOiBEb24ndCBtdW5nZSAtRCBvcHRpb25zLgoJKG1ha2VfZGVmaW5pdGlvbik6IEJyaW5nIC1EIGhhbmRsaW5nIGluIGxpbmUgd2l0aCBjcHBsaWIuCgkoZG9fZGVmaW5lKTogU3RyaXAgYWxsIGxlYWRpbmcgd2hpdGVzcGFjZSBmcm9tIG1hY3JvIGRlZmluaXRpb25zLgoKMjAwMC0wNy0yMCAgRGF2aWQgQmlsbGluZ2h1cnN0IDxEYXZpZC5CaWxsaW5naHVyc3RAcmlvdGludG8uY29tLmF1PgoKCSogTWFrZWZpbGUuaW4gKHRyYWRjcHApOiBEZXBlbmQgb24gaW50bC5vIGFuZCB2ZXJzaW9uLm8uCgoyMDAwLTA3LTIwICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluY2wvY2hlY2sudHBsOiBzdHJpcCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgdHlwZXMgYmVmb3JlIHRlc3RpbmcKCSogZml4aW5jbC9maXhmaXhlcy5jKGdudV90eXBlX2ZpeCk6IHVzZSBwbGF0Zm9ybSBzcGVjaWZpYyB0eXBlcwoJKiBmaXhpbmNsL2ZpeGluY2wudHBsOiB1c2UgcGxhdGZvcm0gc3BlY2lmaWMgdHlwZXMKCSogZml4aW5jbC9maXhsaWIuaDogaW5jbHVkZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgdHlwZXMKCSogZml4aW5jbC9pbmNsaGFjay5kZWYoZ251X3R5cGVzKTogZG9uJ3Qgc3VwcGx5IHRoZSB0eXBlcwoJKiBmaXhpbmNsL2ZpeGluY2wueDogcmVnZW4KCjIwMDAtMDctMTkgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoSEFSRF9SRUdOT19NT0RFX09LKTogRG9uJ3QgYWxsb3cgWEZtb2RlIGluCglHUl9SRUdTLgoKMjAwMC0wNy0xOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdHJhZGNwcC5jIChyZXNjYW4pOiBEbyBub3QgcmVjb2duaXplIGRpcmVjdGl2ZXMgd2hlbiB0aGUgIwoJaXMgaW5kZW50ZWQuCgoyMDAwLTA3LTE5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJSW1wbGVtZW50IEMrKyBuYW1lZCBvcGVyYXRvcnMuCgoJKiBjcHBsaWIuaCAoVFRZUEVfVEFCTEUpOiBNb3ZlIENQUF9NSU4gYW5kIENQUF9NQVggaW50byBibG9jawoJb2Ygb3BlcmF0b3JzIGFsbG93ZWQgaW4gI2lmIGFuZCBoYXZpbmcgYW4gX0VRIHZhcmlhbnQuICBBZGQKCUNQUF9NSU5fRVEsIENQUF9NQVhfRVEsIGFuZCBDUFBfREVGSU5FRC4KCShjcHBfdG9rZW4gZmxhZ3MpOiBBZGQgTkFNRURfT1AuCgkoZW51bSBub2RlX3R5cGUpOiBBZGQgVF9PUEVSQVRPUi4KCShzdHJ1Y3QgY3BwX2hhc2hub2RlKTogQWRkIGNvZGUgc2xvdCB0byB2YWx1ZSB1bmlvbi4KCSogY3BwaGFzaC5oIChzcGVjX25vZGVzKTogUmVtb3ZlIG5fZGVmaW5lZC4KCgkqIGNwcGxleC5jIChsZXhfbGluZSk6IENvbnZlcnQgVF9PUEVSQVRPUiBub2RlcyB0byB0aGVpciBwcm9wZXIgdHlwZXMuCgkoc3BlbGxfdG9rZW4sIGNhbl9wYXN0ZSwgbWF5YmVfcGFzdGVfd2l0aF9uZXh0KTogSGFuZGxlIG5hbWVkIG9wZXJhdG9ycy4KCShpc19tYWNyb19kaXNhYmxlZCk6IFR3ZWFrIGVycm9yIG1lc3NhZ2VzLgoKCSogY3BwbGliLmMgKGdldF9kZWZpbmVfbm9kZSk6IERpc2FsbG93IGFsbCBuYW1lZCBvcGVyYXRvcnMgYXMKCW1hY3JvIG5hbWVzLiAgVHdlYWsgZXJyb3IgbWVzc2FnZXMuCgkoX2NwcF9pbml0X3N0YWNrcyk6IERvbid0IHNldCB1cCBzcGVjX25vZGVzLT5uX2RlZmluZWQuCgoJKiBjcHBpbml0LmMgKGJ1aWx0aW5fYXJyYXkpOiBBZGQgZW50cmllcyBmb3IgdGhlIG5hbWVkIG9wZXJhdG9ycy4KCSogY3BwZXhwLmMgKGxleCk6IENoZWNrIGZvciBDUFBfREVGSU5FRCB0b2tlbi4KCShwcmlvcml0eSB0YWJsZSk6IEFkZCBlbnRyaWVzIGZvciBDUFBfTUlOIGFuZCBDUFBfTUFYLgoJKF9jcHBfcGFyc2VfZXhwcik6IEhhbmRsZSBDUFBfTUlOIGFuZCBDUFBfTUFYLgoKMjAwMC0wNy0xOSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBnY3NlLmMgKElOU05fQ1VJRCk6IElmIEVOQUJMRV9DSEVDS0lORywgYWJvcnQgaWYgdGhlIHVpZCBpcwoJbGFyZ2VyIHRoYW4gdGhlIGFycmF5IG9mIGN1aWRzLgoJKGFsbG9jX2djc2VfbWVtKTogVXNlIHVpZF9jdWlkIHJhdGhlciB0aGFuIElOU05fQ1VJRCB3aGVuIGNvbXB1dGluZwoJY3VpZHMuCgoyMDAwLTA3LTE5ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9maXhpbmNsLmM6ICBDb252ZXJ0IHRvIHVzaW5nIGEgdGFibGUgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzCglhbmQgYWN0aXZhdGUgdGhlIGF1dG8tZWRpdCBtYXJrZXIgb24gdGhlIGZpeGVkIG91dHB1dCBmaWxlcy4KCSogZml4aW5jL2ZpeGxpYi5oOiAgRGVmaW5lIHRoZSBlbnZpcm9ubWVudCB0YWJsZQoJKiBmaXhpbmMvZml4aW5jbC5zaDogZXhwb3J0IHRoZSAke0lOUFVUfSBkaXIKCSogZml4aW5jL2NoZWNrLnRwbDogbGlrZXdpc2UKCjIwMDAtMDctMTggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGdjYy5jICguaCBzcGVjKTogRml4IHR5cG8uCgpXZWQgSnVsIDE5IDAxOjIyOjE1IENFU1QgMjAwMCAgTWFyYyBFc3BpZSAgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIE1ha2VmaWxlLmluOiBGaXggdHJhZGNpZi5jIHBhdGguCgoyMDAwLTA3LTE4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaCAoVFRZUEVfVEFCTEUpOiBSZWFycmFuZ2UgdG8gdXNlIG9ubHkgdHdvIHBlci1lbnRyeQoJICBtYWNyb3MsIG5vdCBmaXZlLgoKCSogY3BwaGFzaC5oIChUT0tFTl9OQU1FKTogTmV3IG1hY3JvLgoJKF9jcHBfc3BlbGxfb3BlcmF0b3IpOiBEZWxldGVkLgoJKHRva2VuX3NwZWxsaW5ncyk6IE5vdyBfY3BwX3Rva2VuX3NwZWxsaW5ncy4KCgkqIGNwcGV4cC5jOiBVc2UgVE9LRU5fTkFNRSBvciBUWVBFX05BTUUsIG5vdCBfY3BwX3NwZWxsX29wZXJhdG9yLgoJKiBjcHBsZXguYzogVXNlIE9QIGFuZCBUSyBtYWNyb3Mgd2hlbiBleHBhbmRpbmcgdGhlCglUVFlQRV9UQUJMRS4gIEVsaW1pbmF0ZSB0b2tlbl9uYW1lcy4gIEZvciBub24tT1BFUkFUT1IgdG9rZW5zLAoJc3RvcmUgdGhlIHN0cmluZ2lmaWNhdGlvbiBvZiB0aGUgZW51bWVyYXRpb24gbmFtZSAoQ1BQX0NIQVIsCglldGMuKSBpbiB0aGUgbmFtZSBzbG90IG9mIHRva2VuX3NwZWxsaW5ncy4KCVVzZSBUT0tFTl9OQU1FIGFuZC9vciBUT0tFTl9TUEVMTCwgZG8gbm90IHJlZmVyZW5jZQoJdG9rZW5fc3BlbGxpbmdzIGRpcmVjdGx5LgoJKiBjcHBsaWIuYzogVXNlIFRPS0VOX1NQRUxMLgoKCSogY3BwbGV4LmMgKF9jcHBfcHVzaF90b2tlbik6IElmIHRoZSB0b2tlbiBiZWluZyBwdXNoZWQgYmFjawoJaXMgdGhlIHByZXZpb3VzIHRva2VuIGluIHRoaXMgY29udGV4dCwganVzdCBzdWJ0cmFjdCBvbmUgZnJvbQoJY29udGV4dC0+cG9zbi4KCSogY3BwbWFjcm8uYyAoc2F2ZV9leHBhbnNpb24pOiBDbGVhciBhdXggZmllbGQgd2hlbiBzdG9yaW5nIGEKCXBsYWNlbWFya2VyLgoKMjAwMC0wNy0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjcHBsZXguYyAoY3BwX3NjYW5fYnVmZmVyKTogT3V0cHV0IGxpbmUgY29tbWFuZCBldmVuIGF0IHRoZSBzdG9wCglidWZmZXIsIHByb3ZpZGVkIGl0IGlzIG5vdCBOVUxMLgoKMjAwMC0wNy0xOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG8gbm90IGNhbGwgbWFrZV92YXJfdm9sYXRpbGUoKSBpbgoJY2FzZSBvZiBpbnZhbGlkIHZvbGF0aWxlIHJlLWRlY2xhcmF0aW9uLgoKMjAwMC0wNy0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChzdG9yZV9hcmcpOiBSZXR1cm4gbm9uemVybyBpZiBzaWJjYWxsX2ZhaWx1cmUgaXMgZGVzaXJlZC4KCShleHBhbmRfY2FsbCk6IEFkanVzdCBjYWxsZXIuCgoyMDAwLTA3LTE3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmggKHJlcG9ydF9kaWFnbm9zdGljKTogQ2hhbmdlIHByb3RvdHlwZS4KCgkqIGRpYWdub3N0aWMuYyAob3V0cHV0X2RvX3ZlcmJhdGltLCBkaWFnbm9zdGljX2Zvcl9hc20sCglkaWFnbm9zdGljX2Zvcl9kZWNsKTogIENoYW5nZSBwcm90b3R5cGUuCgkoZXJyb3Jfd2l0aF9kZWNsLCB3YXJuaW5nX3dpdGhfZGVjbCwgcGVkd2Fybl93aXRoX2RlY2wsIHdhcm5pbmcsCgllcnJvciwgd2FybmluZywgZXJyb3Jfd2l0aF9maWxlX2FuZF9saW5lLAoJd2FybmluZ193aXRoX2ZpbGVfYW5kX2xpbmUsIHBlZHdhcm5fd2l0aF9maWxlX2FuZF9saW5lLCBmYXRhbCk6CglBZGp1c3QgY2FsbCB0byByZXBvcnRfZGlhZ25vc3RpYywgZGlhZ25vc3RpY19mb3JfZGVjbC4KCShlcnJvcl9mb3JfYXNtLCB3YXJuaW5nX2Zvcl9hc20pOiBBZGp1c3QgY2FsbCB0byBkaWFnbm9zdGljX2Zvcl9hc20uCgkob3V0cHV0X3ZlcmJhdGltLCB2ZXJiYXRpbSk6IEFkanVzdCBjYWxsIHRvIG91dHB1dF9kb192ZXJiYXRpbS4KCgkqIGMtZXJyb3JzLmMgKHBlZHdhcm5fYzk5KTogQWRqdXN0IGNhbGwgdG8gcmVwb3J0X2RpYWdub3N0aWMuIEVuZAoJdmFyYWlibGUgYXJndW1lbnQgbGlzdC4KCjIwMDAtMDctMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYzogRG9uJ3QgaW5jbHVkZSBoYXNodGFiLmguICBNb3N0IG1hY3JvLWhhbmRsaW5nIGNvZGUKCW1vdmVkIHRvIGNwcG1hY3JvLmMuCgkoaGFzaF9IQVNITk9ERSwgZXFfSEFTSE5PREUsIF9jcHBfZHVtcF9tYWNyb19oYXNoLAoJZHVtcF9oYXNoX2hlbHBlcik6IERlbGV0ZS4KCShleHBhbmRfaGFzaCwgaGlnaGVyX3ByaW1lX251bWJlciwgX2NwcF9sb29rdXBfd2l0aF9oYXNoLAoJY3BwX2ZvcmFsbF9pZGVudGlmaWVycyk6IE5ldy4gSW1wbGVtZW50IHNwZWNpYWxpemVkIHZlcnNpb24gb2YKCVZsYWQncyBleHBhbmRhYmxlIGhhc2ggdGFibGUuCgkoY3BwX2xvb2t1cCk6IFVzZSBuZXcgZnVuY3Rpb25zLgoJKF9jcHBfaW5pdF9tYWNyb3MsIF9jcHBfY2xlYW51cF9tYWNyb3MpOiBBZGp1c3QgZm9yIG5ldwoJaW1wbGVtZW50YXRpb24uCgkqIGNwcG1hY3JvLmM6IE5ldyBmaWxlLgoJKiBjcHBpbml0LmMgKGR1bXBfbWFjcm9zX2hlbHBlcik6IE5ldy4KCShjcHBfZmluaXNoKTogSXRlcmF0ZSBvdmVyIHRoZSBpZGVudGlmaWVyIHRhYmxlIGRpcmVjdGx5LgoJKiBjcHBsZXguYyAocGFyc2VfbmFtZSk6IENhbGN1bGF0ZSB0aGUgaGFzaCBvZiB0aGUgaWRlbnRpZmllcgoJd2hpbGUgd2Ugc2NhbiBpdC4gIFVzZSBfY3BwX2xvb2t1cF93aXRoX2hhc2ggd2hlbiB3ZSBjYW4uCgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKHhjbmV3dmVjLCBIQVNIU1RFUCk6IE5ldyBoZWxwZXIgbWFjcm9zLgoJKiBjcHBsaWIuaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIE1ha2VmaWxlLmluIChMSUJDUFBfT0JKUyk6IEFkZCBjcHBtYWNyby5vLgoJKGNwcG1hY3JvLm8pOiBOZXcgcnVsZS4KCShjcHBoYXNoLm8pOiBVcGRhdGUgZGVwcy4KCgkqIGNwcG1haW4uYzogRG8gbm90IHNldCBwZmlsZS0+cHJpbnRlciBpZiBub19vdXRwdXQgaXMgb24uCgoyMDAwLTA3LTE1ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxpYi5jOiBDaGFuZ2UgYWxsIGRpcmVjdGl2ZS1oYW5kbGVyIGZ1bmN0aW9ucyB0byByZXR1cm4KCXZvaWQsIG5vdCBpbnQuCgkqIGNwcGhhc2guaDogVXBkYXRlIHR5cGVkZWZzLgoKMjAwMC0wNy0xNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogZXh0ZW5kLnRleGkgKEV4dGVuZGVkIEFzbSk6IE1lbnRpb24gdGhhdCBhIG1lbW9yeSBjbG9iYmVyCglkb2VzIG5vdCBjb3VudCBhcyBhIHNpZGUtZWZmZWN0LgoKCSogdW5yb2xsLmMgKGNvcHlfbG9vcF9ib2R5KTogRml4IG9uZSBpbnN0YW5jZSBvZiB1c2luZyBob3N0Cglhcml0aG1ldGljIG9uIHRoZSB0YXJnZXQ7IGZpeGVzIGxvb3AtNCBvbiBhIDMyLWJpdCAtPiA2NC1iaXQKCWNyb3NzLWNvbXBpbGUuCgoJKiB0bGluay5jIChzY2FuX2xpbmtlcl9vdXRwdXQpOiBUd2VhayBmb3Igb3V0cHV0IG9mIEFJWCBsZC4KCjIwMDAtMDctMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3ZkaSk6IFNwbGl0IG91dCBsb2FkIGFkZHJlc3MgY29kZS4KCU5ldyBwb3N0LXJlbG9hZCBzcGxpdHRlciBmb3Igc3ltYm9saWMgb3BlcmFuZHMuCgkobW92ZGlfaW50ZXJuYWwpOiBBYm9ydCBpZiB3ZSBkaWRuJ3Qgc3BsaXQgc3ltYm9saWMgb3BlcmFuZHMKCXdoZW4gd2Ugc2hvdWxkIGhhdmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfbG9hZF9hZGRyZXNzKTogTmV3LCBmcm9tIG1vdmRpIGJpdHMuCgkoaWE2NF9yZW9yZyk6IFNwbGl0IGluc25zIHdoZW4gbm90IG9wdGltaXppbmcuCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGlhNjRfZXhwYW5kX2xvYWRfYWRkcmVzcyk6IERlY2xhcmUuCgpNb24gSnVsIDE3IDIzOjQzOjI2IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVhbC5oIChSRUFMX1ZBTFVFX1RPX1RBUkdFVF9MT05HX0RPVUJMRSk6IFVzZSBMT05HX0RPVUJMRV9UWVBFX1NJWkUKCWluc3RlYWQgb2YgTUFYX0xPTkdfRE9VQkxFX1RZUEVfU0laRSB0byBkZWNpZGUgb3V0cHV0IGZvcm1hdC4KCjIwMDAtMDctMTcgIENoYW5kcmFrYWxhIENoYXZ2YSAgIDxjY2hhdnZhQGN5Z251cy5jb20+CgoJKiBsb29wLmMgKGNoZWNrX2RicmFfbG9vcCkgOiBDaGFuZ2VkIGxvb3BfY29udGludWUgdG8gbG9vcC0+Y29udC4KCjIwMDAtMDctMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGNsZWFuKTogUmVtb3ZlIGxpYmdjYyBkaXJlY3RvcnkuCgoJKiBjb25maWd1cmUuaW4gKC1Xbm8tbG9uZy1sb25nIGNoZWNrKTogVXNlIGhpZ2hlci1sZXZlbCBtYWNyb3MuCgoyMDAwLTA3LTE3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbik6IFJlY29nbml6ZQoJICAgKGNvbXBhcmUgKGd0W3VdIChjYykgMCkgKGx0W3VdIChjYykgMCkpLgoJKHNpbXBsaWZ5X3Rlcm5hcnlfb3BlcmF0aW9uKTogIERvIG5vdCBleGFtaW5lIE1PREVfQklUU0laRSBvZgoJICAgYSBDT05TVF9JTlQsIGl0IHdpbGwgYWx3YXlzIGJlIHplcm8uCgoyMDAwLTA3LTE3ICBDaGFuZHJha2FsYSBDaGF2dmEgICA8Y2NoYXZ2YUBjeWdudXMuY29tPgoKCSogbG9vcC5jIChjaGVja19kYnJhX2xvb3ApIDogUmV0dXJuIGlmIG1vcmUgdGhhbiBvbmUgY29uZGl0aW9uIGlzCglwcmVzZW50IHRvIGNvbnRyb2wgdGhlIGxvb3AuCgpNb24gSnVsIDE3IDA4OjI2OjM1IDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogbWlwcy5jIChtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IERvbid0IGNhbGN1bGF0ZSB0aGUgbGFzdCBhcmd1bWVudAoJcmVnaXN0ZXIgdW5sZXNzIHdlIG5lZWQgaXQuICBXaGVuIHdlIGFyZSBjYWxjdWxhdGluZyB0aGlzLCBtYWtlCglzdXJlIEZVTkNUSU9OX0FSRyBpcyBnaXZpbmcgdXMgYSBSRUcuCgoyMDAwLTA3LTE3ICBTdGVwaGFuZSBDYXJyZXogIDxTdGVwaGFuZS5DYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBmbG93LmMgKGxpYmNhbGxfZGVhZF9wKTogVXNlIHNpbmdsZV9zZXQgdG8gdmVyaWZ5IHRoZSBpbnNuCgloYXMgb25seSBvbmUgc2V0IGFuZCBnZXQgZm9yIGFuYWx5c2lzLgoJKHByb3BhZ2F0ZV9vbmVfaW5zbik6IERvbid0IHBhc3MgdGhlIFBBVFRFUk4gb2YgdGhlIGluc24uCgoyMDAwLTA3LTE3ICBNYXJrIEtsZWluIDxta2xlaW5AZGlzLmNvbT4KCgkgKiBwYS5jIChlbWl0X2hwZGl2X2NvbnN0KTogVXBkYXRlIHRvIG1hdGNoIG5ldyBwYXR0ZXJuIGZvciB1ZGl2c2kzLgoKMjAwMC0wNy0xNyAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBNYWtlZmlsZS5pbiAoVEFSR0VUX0dFVEdST1VQU19UKTogTmV3IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuCgkqIGNvbmZpZ3VyZS5pbiAoVEFSR0VUX0dFVEdST1VQU19UKTogRXZhbHVhdGUuCgkqIHN5cy1wcm90b3MuaCAoZ2V0Z3JvdXBzKTogVXNlIFRBUkdFVF9HRVRHUk9VUFNfVCBmb3IgYXJyYXkgdHlwZQoJb2Ygc2Vjb25kIGFyZ3VtZW50IG9mIGdldGdyb3Vwcy4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlYnVpbHQuCgoyMDAwLTA3LTE3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBUd28gc2lnbmVkCgl2YWx1ZXMgd2l0aCBlcXVhbCBoaWdoIHdvcmRzIGFyZSBsZXNzL2dyZWF0ZXIgdGhhbiBlYWNoIG90aGVyIGlmCgl0aGVpciBsb3cgd29yZHMgYXJlIGxlc3MvZ3JlYXRlciB3aGVuIGNvbnNpZGVyZWQgYXMgdW5zaWduZWQuCgpNb24gSnVsIDE3IDAyOjM3OjA2IDIwMDAgIE1hcmMgRXNwaWUgPGVzcGllQG9wZW5ic2Qub3JnPgoKCSogY29uZmlndXJlLmluICh2YXgtKi1vcGVuYnNkKTogIENoYW5nZSB0byBuZXcgc3R5bGUgY29uZmlndXJhdGlvbiwKCWFkZCBjb2xsZWN0Mi9mbG9hdF9mb3JtYXQgaW5mb3JtYXRpb24uCgkqIGNvbmZpZ3VyZTogIFJlYnVpbHQuCgkqIGNvbmZpZy92YXgvb3BlbmJzZDEuaDogIE5ldy4KCSogY29uZmlnL3ZheC9vcGVuYnNkLmg6ICBOZXcuCgkqIGNvbmZpZy92YXgvdC1vcGVuYnNkOiAgTmV3LgoKMjAwMC0wNy0xNyAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCgkqIGMtY29tbW9uLmMgKHNob3J0ZW5fY29tcGFyZSk6IFF1aWV0IHdhcm5pbmdzIGFib3V0IHVuc2lnbmVkCgljb21wYXJpc29ucyB3aXRoIHplcm8gd2hlbiB0aGV5IG9jY3VyIGluIGEgc3lzdGVtIGhlYWRlci4KCjIwMDAtMDctMTcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGludm9rZS50ZXhpICgtcGVkYW50aWMpOiBSZWZlciB0byBJU08gQyBpbnN0ZWFkIG9mIEFOU0kgQywgYW5kCgl1cGRhdGUgdG8gZGVzY3JpYmUgY3VycmVudCBwcmFjdGljZS4KCgkqIGdsaW1pdHMuaCAoTExPTkdfTUlOLCBMTE9OR19NQVgsIFVMTE9OR19NQVgpOiBEZWZpbmUgZm9yIEM5OS4KCgkqIGNvbnRyaWIudGV4aSwgY3BwLnRleGksIGV4dGVuZC50ZXhpLCBpbnZva2UudGV4aTogVXBkYXRlCglyZWZlcmVuY2VzIHRvIEM5WC4gIENoYW5nZSByZWZlcmVuY2VzIHRvIC1mc3RkIGFuZCAtZmxhbmctaXNvYzl4Cgl0byByZWZlciB0byAtc3RkLgoKCSogYy1jb21tb24uYyAoc2Nhbl9jaGFyX3RhYmxlKTogQWxsb3cgInoiIGxlbmd0aCBtb2RpZmllcnMgb24KCWRpb3V4WG4gZm9ybWF0cy4KCShjaGVja19mb3JtYXRfaW5mbyk6IFVzZSBUWVBFX0RPTUFJTiBvbiB0aGUgdHlwZSBtYXRjaGVkIGFnYWluc3QKCWZvciAieiIgZm9ybWF0cywgdG8gcmV0cmlldmUgdGhlIGxhbmd1YWdlIHNpemVfdCByYXRoZXIgdGhhbiB0aGUKCWludGVybmFsIG9uZS4KCgkqIGMtY29tbW9uLmMgKGNoZWNrX2Zvcm1hdF9pbmZvKTogRG8gbm90IG1ha2UgYSBwZWRhbnRpYyBvYmplY3Rpb24KCXRvIHRoZSAnTCcgbGVuZ3RoIG1vZGlmaWVyIGlmIHVzZWQgd2l0aCBhIGZsb2F0aW5nIHBvaW50IHR5cGUKCWNoYXJhY3Rlci4KCgkqIGMtbGV4LmMgKHl5bGV4KTogRG9uJ3QgcGVkd2FybiBmb3IgaGV4YWRlY2ltYWwgZmxvYXRpbmcgcG9pbnQKCWNvbnN0YW50cyBpbiBDOTkgbW9kZS4KCjIwMDAtMDctMTcgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAubWQ6IEZpeCB0aGUgZm9ybWF0IG9mIG1hYy4KCShtb3ZzaV9oODMwMGhzKTogT3V0cHV0IGEgdGFiIGFmdGVyIHN0bWFjIGluc3RlYWQgb2YgYSBzcGFjZS4KCgkqIGg4MzAwLmMgKHR3b19pbnNuX2FkZHNfc3Vic19vcGVyYW5kKTogSW1wcm92ZSBjb2RlIGZvciBkZXRlY3RpbmcKCXByb2ZpdGFibGUgYWRkcy9zdWJzIHNlcXVlbmNlcy4KCgkqIGZvbGQtY29uc3QuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDAwLTA3LTE2ICBMYXVyeW5hcyBCaXZlaW5pcyAgPGxhdXJhc0Bzb2Z0aG9tZS5uZXQ+CgoJKiBjcHBmaWxlcy5jIChyZWFkX25hbWVfbWFwKTogU2V0IG1hcF9saXN0X3B0ci0+bWFwX2xpc3RfbWFwIHRvIE5VTEwuCgoyMDAwLTA3LTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAoZW1pdF9nbnVfdHlwZSk6IEF2b2lkIHN0cmluZyBjb25jYXRlbmF0aW9uLgoKMjAwMC0wNy0xNiAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYzogVXBkYXRlIGNvbW1lbnRzLgoJKiBSRUFETUUuUG9ydGFiaWxpdHk6IFNtYWxsIHVwZGF0ZS4KCjIwMDAtMDctMTYgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogUkVBRE1FLlBvcnRhYmlsaXR5OiAgU21hbGwgdXBkYXRlLgoKMjAwMC0wNy0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGlhNjRfbW92ZV9vayk6IFByb3RvdHlwZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X21vdmVfb2spOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdnFpLCBtb3ZxaV9pbnRlcm5hbCk6IFVzZSBpdC4KCShtb3ZoaSwgbW92c2ksIG1vdmRpLCBtb3ZzZiwgbW92ZGYsIG1vdnhmKTogTGlrZXdpc2UuCgoyMDAwLTA3LTE1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKHNhdmVfZXhwYW5zaW9uKTogQ2xlYXIgUFJFVl9XSElURSBvbiB0b2tlbnMKCWltbWVkaWF0ZWx5IGZvbGxvd2luZyBhIHBhc3RlIG9wZXJhdG9yLgoJKiBjcHBpbml0LmMgKHNvcnRfb3B0aW9ucyk6IE5ldyBmdW5jdGlvbiAob25seSBmb3IgSE9TVF9FQkNESUMpLgoJKGNwcF9yZWFkZXJfaW5pdCk6IENhbGwgaXQsIGlmIEhPU1RfRUJDRElDLgoJKGNwcF9oYW5kbGVfb3B0aW9ucyk6IERvIG5vdCBzb3J0IG9wdGlvbiBsaXN0IGhlcmUuCgkoaGFuZGxlX29wdGlvbik6IFJlbmFtZSB0byBjcHBfaGFuZGxlX29wdGlvbiBhbmQgZXhwb3J0LgoJKiBjcHBsZXguYyAoY3BwX3NjYW5fYnVmZmVyX25vb3V0cHV0LCBjcHBfc2Nhbl9idWZmZXIpOiBVc2UKCV9jcHBfZ2V0X3Rva2VuIGRpcmVjdGx5LgoJKGNwcF9zY2FuX2xpbmUpOiBSZXR1cm4gMCBhdCBFT0YsIDEgb3RoZXJ3aXNlLgoJKiBjcHBsaWIuYyAoY3BwX3B1c2hfYnVmZmVyKTogRG9uJ3Qgc2V0IG5ldy0+bGluZW5vIHRvIDEuCgkqIGNwcGxpYi5oOiBQcm90b3R5cGUgY3BwX2hhbmRsZV9vcHRpb24uICBVcGRhdGUgcHJvdG90eXBlIG9mCgljcHBfc2Nhbl9saW5lLgoKMjAwMC0wNy0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXYpOiBEb24ndCBvcHRpbWl6ZSBwYXN0IGFuIHVuc2lnbmVkCgljYXN0IGFyb3VuZCBhbiBleHByZXNzaW9uLiAgVGlkeSBvdGhlciB1bnNpZ25lZCB0ZXN0cy4KCjIwMDAtMDctMTUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuYyAoZG9pbmdfbGluZV93cmFwcGluZywgbGluZV93cmFwcGVyX3ByaW50Ziwgbm90aWNlLAoJdl9lcnJvcl93aXRoX2RlY2wsIHZfd2FybmluZ193aXRoX2RlY2wsIHZfcGVkd2Fybl93aXRoX2RlY2wpOiBSZW1vdmUuCgkodl9tZXNzYWdlX3dpdGhfZGVjbCk6IFJlbmFtZSB0byAuLi4KCShmb3JtYXRfd2l0aF9kZWNsKTogLi4uIHRoaXMuIFR3ZWFrCgkoZGlhZ25vc3RpY19mb3JfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShmYXRhbF9pb19lcnJvcik6IFVzZSB2ZXJiYXRpbSBpbiBsaWV1IG9mIG5vdGljZS4KCShhbm5vdW5jZV9mdW5jdGlvbik6IFVzZSB2ZXJiYXRpbS4KCShkZWZhdWx0X3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZXJyb3Jfd2l0aF9kZWNsLCB3YXJuaW5nX3dpdGhfZGVjbCwgcGVkd2Fybl93aXRoX2RlY2wpOiBVc2UgbmV3CglpbmZyYXRydWN0dXJlLgoKMjAwMC0wNy0xNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWlwcy5jIChmdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UpOiBEb24ndCBkbyBhdXRvbWF0aWMKCWFnZ3JlZ2F0ZSBpbml0aWFsaXphdGlvbi4KCShtYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6IEluaXRpYWxpemUgdmFyaWFibGUgYG1vZGUnLgoKCSogbWlwcy5tZCAoYWJzZGkyKTogQ2hhbmdlIHZhcmlhYmxlIGByZWdubzEnIHRvIHVuc2lnbmVkIGludC4KCShyZWxvYWRfaW5kaSk6IFJlbmFtZSBsb3dvcmQvaGl3b3JkIHRvIGxvX3dvcmQvaGlfd29yZCB0byBhdm9pZAoJY29uZmxpY3RzIHdpdGggc3lzL3BhcmFtLmggbWFjcm8gb2YgdGhlIHNhbWUgbmFtZS4KCShyZWxvYWRfb3V0ZGkpOiBMaWtld2lzZS4KCjIwMDAtMDctMTUgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogV2hlbiBvcHRpbWl6aW5nIEZPTysrID09IENPTlNUIGludG8gKytGT08KCT09IENPTlNUICsgSU5DUkVNRU5ULCBkb24ndCBvdmVyd3JpdGUgdGhlIHRyZWUgbm9kZSBmb3IgRk9PKyssCgljcmVhdGUgYSBuZXcgbm9kZSBpbnN0ZWFkLgoKMjAwMC0wNy0xNSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBSRUFETUUuUG9ydGFiaWxpdHk6IENvcnJlY3QgZXhhbXBsZSBhYm91dCBjYWxsaW5nIGEgZnVuY3Rpb24KCXRocm91Z2ggYSBwb2ludGVyIHRvIGZ1bmN0aW9uLiAgRm9ybWF0IHdpZGUgcGFyYWdyYXBocy4KCjIwMDAtMDctMTUgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogUkVBRE1FLlBvcnRhYmlsaXR5OiBVcGRhdGUgaW50ZWdlciBzdWZmaXhlcyBhbmQgZnVuY3Rpb24KCXByb3RvdHlwZSBzZWN0aW9ucy4KCjIwMDAtMDctMTUgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogUkVBRE1FLlBvcnRhYmlsaXR5OiBTbWFsbCB1cGRhdGUuCgoyMDAwLTA3LTE1ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIFJFQURNRS5Qb3J0YWJpbGl0eTogTmV3IGZpbGUuCgpGcmkgSnVsIDE0IDE4OjEzOjUzIDIwMDAgIE1hcmsgUCBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIElOU1RBTEw6IEdpdmUgc3BlY2lhbCBpbnN0cnVjdGlvbnMgZm9yIGJ1aWxkaW5nIEdDQyBvbiBJcml4IDYuCgkqIGNvbmZpZy9taXBzL3gtaXJpczYgKENDKTogRG9uJ3Qgc2V0IGl0LgoJKE9MRENDKTogTGlrZXdpc2UuCgoyMDAwLTA3LTE0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwcik6IElmIHdlIHN0b3JlIHRoZSBDRkEKCXJlZ2lzdGVyIGluIHRoZSBzdGFjayBhbmQgbGF0ZXIgaW4gYW5vdGhlciByZWdpc3RlciwgdXNlIHRoZSBuZXcKCXJlZ2lzdGVyLgoKRnJpIEp1bCAxNCAxMDoyNTo1MyAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IChhYnNkaTIpOiBIYW5kbGUgc2lnbl9leHRlbmQgZm9yCglzZWNvbmQgb3BlcmFuZC4KCjIwMDAtMDctMTQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHBsaWIuYyAoZG9fcHJhZ21hX2RlcGVuZGVuY3kpOiBUaWR5IHdhcm5pbmcgbWVzc2FnZXMuCgoyMDAwLTA3LTE0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiAuY3ZzaWdub3JlOiBDb3JyZWN0IHR5cG8uCgoyMDAwLTA3LTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogLmN2c2lnbm9yZTogQWRkIGdlbmVyYXRlZCBZQUNDIGZpbGVzLgoJKiBvYmpjLy5jdnNpZ25vcmU6IE5ldyBmaWxlLgoKMjAwMC0wNy0xNCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoYWRqdXN0X2NvbHVtbik6IE5ldyBmdW5jdGlvbi4KCShza2lwX3doaXRlc3BhY2UpOiBVc2UgaXQuCgkoc2tpcF9ibG9ja19jb21tZW50KTogVXNlIGl0LCBhbmQgd2FybiBhYm91dCAvKi8qIHdpdGgKCS1XY29tbWVudHMuCgoyMDAwLTA3LTE0ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guYyAoc3RydWN0IG1hY3JvX2luZm8pOiBBZGQgbmV3IG1lbWJlcnMuCgkoX2NwcF9mcmVlX2RlZmluaXRpb24pOiBEZWxldGUgdGhlIG1hY3JvIGRpcmVjdGx5LgoJKGNvdW50X3BhcmFtcyk6IFJldHVybiB2b2lkLCB3aXRoIGZpcnN0IHRva2VuIG9mCglleHBhbnNpb24gaW4gc3RydWN0IG1hY3JvX2luZm8gb24gc3VjY2Vzcy4KCShwYXJzZV9kZWZpbmUpOiBSZXR1cm4gaW50LiAgSG9pc3Qgc3ludGF4IGNoZWNraW5nIGZyb20KCXNhdmVfbWFjcm9fZXhwYW5zaW9uLiAgTGVhdmUgY2FsbCB0byBzYXZlX2V4cGFuc2lvbiB0bwoJX2NwcF9jcmVhdGVfZGVmaW5pdGlvbi4KCShhbGxvY19tYWNybyk6IE5lZWRzIGp1c3QgMiBhcmd1bWVudHMuCgkoZnJlZV9tYWNybyk6IERlbGV0ZS4KCShzYXZlX2V4cGFuc2lvbik6IERvbid0IHBlcmZvcm0gc3ludGF4IGNoZWNrLgoJKF9jcHBfY3JlYXRlX2RlZmluaXRpb24pOiBDYWxsIHNhdmVfZXhwYW5zaW9uLgoKMjAwMC0wNy0xMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2VucmVjb2cuYyAod3JpdGVfaGVhZGVyKTogU3BsaXQgbG9uZyBzdHJpbmcuCgoJKiBjcHBoYXNoLmMgKG1hY3JvX2luZm8pOiBEb24ndCB1c2UgdGhlIGBzaWduZWQnIGtleXdvcmQuCgoJKiBzeXN0ZW0uaCAoYWxsb2NhKTogUHJvdG90eXBlIGlmIF9fR05VQ19fICYmIF9fU0laRV9UWVBFX18uCgoyMDAwLTA3LTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKHN0b3JlZF9hcmdzX21hcCk6IE5ldyB2YXJpYWJsZS4KCShjaGVja19zaWJjYWxsX2FyZ3VtZW50X292ZXJsYXBfMSk6IE5ldy4KCShjaGVja19zaWJjYWxsX2FyZ3VtZW50X292ZXJsYXApOiBOZXcuCgkoZXhwYW5kX2NhbGwpOiBJbml0aWFsaXplIHN0b3JlZF9hcmdzX21hcC4KCUNhbGwgY2hlY2tfc2liY2FsbF9hcmd1bWVudF9vdmVybGFwLgoKMjAwMC0wNy0xMyAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYzogbW92ZSBFWElUX0JST0tFTiB0byBoZWFkZXIsIGFkZCBzdWItZXhwciBtYXggY291bnQKCShlbWl0X2dudV90eXBlKTogdXRpbGl0eSBwcm9jZWR1cmUgZm9yIGdudV90eXBlX2ZpeAoJKGdudV90eXBlX2ZpeCk6IGltcGxlbWVudCB2YXJpb3VzIHByZS1wcm9jZXNzb3IgZ3VhcmRzIGFyb3VuZAoJc3RhbmRhcmQgdHlwZXMgc28gdGhlc2UgdHlwZXMgY2FuIGJlIGRlZmluZWQgb3ZlciBhbmQgb3ZlcgoJKiBmaXhpbmMvZml4aW5jbC50cGw6IGFkZCBhICJnbnVfdHlwZV9tYXAiIHRoYXQgZm9yY2VzIHRoZSBzdGFuZGFyZAoJdHlwZXMgYWxsdWRlZCB0byBhYm92ZSB3aWxsIGhhdmUgR05VLWNvbXBsaWFudCBiYXNlIHR5cGVzCgkqIGZpeGluYy9maXhsaWIuaDogYWRkIEVYSVRfQlJPS0VOIGRlZmluZSBhbmQgdGhlIGdudV90eXBlX21hcCBzdHJ1Y3QKCSogZml4aW5jL2luY2xoYWNrLmRlZjogYWRkIHRlc3RfdGV4dCBlbnRyaWVzIGFuZCB1dGlsaXplIHRoZSBuZXcKCSJnbnVfdHlwZXMiIGZpeCBmb3IgdGhlIHB0cmRpZmZfdCwgc2l6ZV90IGFuZCB3Y2hhcl90IHR5cGVzLgoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbmVyYXRlCgoyMDAwLTA3LTEyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQG1lcmxpbi5jb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jICh2bGluZV93cmFwcGVyX21lc3NhZ2Vfd2l0aF9sb2NhdGlvbiwKCXZfbWVzc2FnZV93aXRoX2ZpbGVfYW5kX2xpbmUsIHZfZXJyb3Jfd2l0aF9maWxlX2FuZF9maWxlLAoJdl9lcnJvcl9mb3JfYXNtLCB2X3dhcm5pbmdfZm9yX2FzbSwgdmZhdGFsLAoJdl93YXJuaW5nX3dpdGhfZmlsZV9hbmRfbGluZSwgdl9wZWR3YXJuX3dpdGhfZmlsZV9hbmRfbGluZSwKCXZzb3JyeSwgdmVycm9yLCB2d2FybmluZywgdnBlZHdhcm4pOiBSZW1vdmUuCgkoZGlhZ25vc3RpY19mb3JfYXNtKTogTmV3IGZ1bmN0aW9uLgoJKHBlZHdhcm4sIGVycm9yLCB3YXJuaW5nLCBwZWR3YXJuX3dpdGhfZmlsZV9hbmRfbGluZSwKCWVycm9yX3dpdGhfZmlsZV9hbmRfbGluZSwgd2FybmluZ193aXRoX2ZpbGVfYW5kX2xpbmUsIHNvcnJ5LAoJZXJyb3JfZm9yX2FzbSwgd2FybmluZ19mb3JfYXNtLCBmYXRhbCk6IFJlaW1wbGVtZW50LgoJKGZpbmlzaF9kaWFnbm9zdGljKTogQ2xlYXIgZGlhZ25vc3RpYyBpbmZvIGFzIHdlbGwuCgoyMDAwLTA3LTEzICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGMtY29tbW9uLmggKGZsYWdfZGlncmFwaHMpOiBOZXcuCgkqIGMtZGVjbC5jIChjX2RlY29kZV9vcHRpb24pOiBTZXQgZmxhZ19kaWdyYXBocyBhcyBhcHByb3ByaWF0ZS4KCSogYy1sZXguYyAoeXlsZXgpOiBVc2UgZmxhZ19kaWdyYXBocyB0byBkZWNpZGUgd2hldGhlciB0bwoJaG9ub3IgZGlncmFwaHMuCgoyMDAwLTA3LTEzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBnY2MuYyAoZG9fc3BlY18xKTogQWRkIG5ldyAlQiBvcGVyYXRvci4KCShzZXRfaW5wdXQpOiBQcmVwYXJlIGZvciAlQi4KCgkobGlua19jb21tYW5kX3NwZWMpOiBNb3ZlIHVwIHdpdGggdGhlIG90aGVyIHRtLmgtCglvdmVycmlkZWFibGUgc3BlY3MuICBGYWN0b3Igb3V0IHRoZSBwb3J0aW9uIGNvbmRpdGlvbmFsIG9uCglMSU5LX0xJQkdDQ19TUEVDSUFMIGludG8gYSBuZXcgc3BlYywgJShsaW5rX2xpYmdjYykuCgkoc3RydWN0IGNvbXBpbGVyKTogSnVzdCBoYXZlIGEgc2luZ2xlIHNwZWMgc3RyaW5nLiAgQWxsIHVzZXJzCgl1cGRhdGVkLgoJKGRlZmF1bHRfY29tcGlsZXJzKTogUmVtb3ZlIHVubmVjZXNzYXJ5IGJyYWNlcy4KCShzdGF0aWNfc3BlY3MpOiBVcGRhdGUuCgoJKHRyYWRfY2FwYWJsZV9jcHAsIGNwcF9vcHRpb25zLCBjYzFfb3B0aW9ucywgYXNtX29wdGlvbnMpOiBOZXcKCW5hbWVkIHNwZWNzLgoJKEMgYW5kIGFzc2VtYmx5IHNwZWNzKTogVXNlIHRoZSBuZXcgbmFtZWQgc3BlY3MsIGFzIGFwcHJvcHJpYXRlLgoKCSogb2JqYy9sYW5nLXNwZWNzLmg6IFVzZSB0aGUgbmV3IG5hbWVkIHNwZWNzLgoJUmVtb3ZlIHVubmVjZXNzYXJ5IGJyYWNlcy4KCjIwMDAtMDctMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGdjYy5jIChleGVjdXRlKTogSWYgYSBzdWJwcm9jZXNzIGdldHMgYSBmYXRhbCBzaWduYWwsIHJlcG9ydAoJc3Ryc2lnbmFsKCkgb2YgdGhlIHNpZ25hbCBudW1iZXIsIGFuZCBhc2sgZm9yIGEgYnVnIHJlcG9ydC4KCURvIG5vdCBkbyB0aGlzIGZvciBTSUdQSVBFIGlmIHRoZXJlJ3MgYWxyZWFkeSBiZWVuIGFuIGVycm9yLgoKCSogdHJhZGNwcC5jOiBEb24ndCBpbmNsdWRlIHNpZ25hbC5oLiAgRG9uJ3QgY2F0Y2ggU0lHUElQRS4KCURlbGV0ZSBwaXBlX2Nsb3NlZC4KCgkqIHRyYWRjaWYuYzogUmVtb3ZlLgoKMjAwMC0wNy0xMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZmluYWwuYyAocHJvZmlsZV9mdW5jdGlvbik6IERvIG5vdCBlbWl0IHByb2ZpbGUgY291bnRlcnMgaW4KCXRoZSBkYXRhIHNlY3Rpb24sIGlmIE5PX1BST0ZJTEVfQ09VTlRFUlMgaXMgZGVmaW5lZC4KCSogdG0udGV4aTogRG9jdW1lbnQgTk9fUFJPRklMRV9DT1VOVEVSUy4gIFVwZGF0ZSBkb2MgZm9yCglGVU5DVElPTl9QUk9GSUxFUi4KCgkqIGNvbmZpZy9pMzg2L2xpbnV4LmggKE5PX1BST0ZJTEVfQ09VTlRFUlMpOiBEZWZpbmUuCgkoRlVOQ1RJT05fUFJPRklMRVIpOiBKdXN0IGVtaXQgYSBjYWxsIHRvIG1jb3VudC4KCjIwMDAtMDctMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHRyYWRjcHAuYyAobWFpbik6IFJlbmFtZSAncGVycm9yJyBsYWJlbCB0byAnc3lzX2Vycm9yJy4KCgkqIGNwcGV4cC5jLCBjcHBoYXNoLmMsIGNwcGhhc2guaCwgY3BwaW5pdC5jLCBjcHBsZXguYywKCWNwcGxpYi5jLCBjcHBsaWIuaDogRXJhZGljYXRlIGFsbCB0cmFjZXMgb2YgY29kZSBkZXBlbmRlbnQgb24KCXRyYWRpdGlvbmFsLCBsYW5nX2NoaWxsLCBvciBsYW5nX2ZvcnRyYW4uCgoJKiBjcHBmaWxlcy5jOiAjdW5kZWYgc3RyY21wIHRvIHN1cHByZXNzIHdhcm5pbmcgYWJvdXQgbWFjcm9zCgl1c2VkIHdpdGhvdXQgYXJndW1lbnRzLgoJKF9jcHBfZXhlY3V0ZV9pbmNsdWRlKTogVXNlIGYsIG5vdCBmbmFtZSwgaW4gIk5vIGluY2x1ZGUgcGF0aCIKCWVycm9yLgoJKF9jcHBfcG9wX2ZpbGVfYnVmZmVyKTogTmV3IGZ1bmN0aW9uLgoJKiBjcHBsaWIuYzogRG9uJ3QgaW5jbHVkZSA8c3lzL21tYW4uaD4uCgkoY3BwX3B1c2hfYnVmZmVyKTogU2V0IGxpbmVfYmFzZSBhbmQgbGluZW5vIGluIG5ldyBidWZmZXIuCgkoY3BwX3BvcF9idWZmZXIpOiBVc2UgX2NwcF9wb3BfZmlsZV9idWZmZXIuCgoJKiBjcHBsZXguYzogTW92ZSBhbGwgcHJvdG90eXBlcyBhbmQgc3RydWN0dXJlIGRlY2xhcmF0aW9ucyB0byB0aGUKCXRvcCBvZiB0aGUgZmlsZS4gIFByb3Blcmx5IHBhcmVudGhlc2lzZSBzb21lIG1hY3JvIGFyZ3VtZW50cy4KCShjcHBfc2Nhbl9saW5lKTogTmV3IGZ1bmN0aW9uLgoJKHNwZWNpYWxfc3ltYm9sIFtjYXNlIFRfSU5DTFVERV9ERVBUSF0pOiBVc2UgcGZpbGUtPmluY2x1ZGVfZGVwdGgsCglkb24ndCBuZWVkIHRvIHdhbGsgdXAgdGhlIHN0YWNrIGNvdW50aW5nLgoKMjAwMC0wNy0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1jb21tb24uYyAoY29tYmluZV9zdHJpbmdzKTogRW1pdCBhIHBlZGFudGljIHdhcm5pbmcgd2hlbiBhCglzdHJpbmcgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSBBTlNJIEMgaXMgcmVxdWlyZWQKCXRvIHN1cHBvcnQuCgpXZWQgSnVsIDEyIDEzOjI0OjMwIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHBhL3htLXBhNjQuaCAoTk9fU1lTX1NJR0xJU1QpOiBLaWxsLgoJKiBkMzB2L3htLWQzMHYuaCAoTk9fU1lTX1NJR0xJU1QpOiBLaWxsLgoKMjAwMC0wNy0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1kZWNsLmMgKGRlZmluZV9sYWJlbCk6IFdhcm4gYWJvdXQgaWRlbnRpZmllciBjb25mbGljdHMgd2l0aAoJbGFiZWxzIGluIHRyYWRpdGlvbmFsIEMuCgoJKiBjLXBhcnNlLmluICh1bm9wICspOiBXYXJuIGFib3V0IHRoZSB1bmFyeSBwbHVzIG9wZXJhdG9yIGZvcgoJdHJhZGl0aW9uYWwgQy4KCgkqIGMtdHlwZWNrLmMgKHN0b3JlX2luaXRfdmFsdWUpOiBXYXJuIGFib3V0IGF1dG9tYXRpYyBhZ2dyZWdhdGUKCWluaXRpYWxpemF0aW9uIGZvciB0cmFkaXRpb25hbCBDLgoKCSogaW52b2tlLnRleGkgKC1XdHJhZGl0aW9uYWwpOiBEb2N1bWVudCBuZXcgd2FybmluZ3MuCgoyMDAwLTA3LTEyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoYy1lcnJvcnMubyk6IEZpeCB0aGlua28gaW4gZGVwZW5kZW5jeS4KCjIwMDAtMDctMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGdjYy5jIChDIHNwZWNzIFshVVNFX0NQUExJQl0pOiBJbnZva2UgdHJhZGNwcCBpZiBhbnkgb2YKCS10cmFkaXRpb25hbCwgLWZ0cmFkaXRpb25hbCwgb3IgLXRyYWRpdGlvbmFsLWNwcCB3YXMgZ2l2ZW4uCglEbyBub3QgcGFzcyAtdHJhZGl0aW9uYWwgdG8gdGhlIHByZXByb2Nlc3Nvci4KCSguUyBzcGVjKTogTGlrZXdpc2UuICBEb24ndCBib3RoZXIgZGVmaW5pbmcgX19BU1NFTUJMRVJfXywgdGhlCglwcmVwcm9jZXNzb3IgZG9lcyBpdCBhdXRvbWF0aWNhbGx5LgoJKiBvYmpjL2xhbmctc3BlY3MuaDogTGlrZXdpc2UuICBEb24ndCBib3RoZXIgZGVmaW5pbmcgX19PQkpDX18uCgoJKiBjaC9sYW5nLXNwZWNzLmg6IEFsd2F5cyB1c2UgdHJhZGNwcC4gIERvIG5vdCBwYXNzCgktdHJhZGl0aW9uYWwsIC10cmlncmFwaHMsIG9yIC1wZWRhbnRpYyB0byB0aGUgcHJlcHJvY2Vzc29yLgoJKiBmL2xhbmctc3BlY3MuaCAoLkYgc3BlYyk6IExpa2V3aXNlLiAgRG9uJ3QgYm90aGVyIGRlZmluaW5nCglfTEFOR1VBR0VfRk9SVFJBTi4KCjIwMDAtMDctMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGV4cC5jIChMT0dJQ0FMKTogRGVsZXRlIG1hY3JvLgoJKF9jcHBfcGFyc2VfZXhwcik6IERvIG5vdCB1c2UgVU5BUlkgZm9yIHVuYXJ5ICsuICBJbXBsZW1lbnQgfHwKCWFuZCAmJiBkaXJlY3RseS4KCgkqIGNwcGhhc2guYyAoSEFTSFNJWkUpOiBJbmNyZWFzZSB0byA0MDk2LgoJKHN0cnVjdCBoYXNoZHVtbXkpOiBBZGQgaGFzaCBmaWVsZC4KCShlcV9IQVNITk9ERSk6IENvbXBhcmUgdW5yZWR1Y2VkIGhhc2hlcywgdGhlbiBsZW5ndGhzLCB0aGVuCgl0aGUgc3RyaW5nIHZhbHVlcyB1c2luZyBtZW1jbXAuCgkoY3BwX2xvb2t1cCk6IFNldCBkdW1teS5oYXNoLgoKV2VkIEp1bCAxMiAxMzoxNToxNiAyMDAwICBNYXJjIEVzcGllIDxlc3BpZUBvcGVuYnNkLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAobTg4ay1vcGVuYnNkKTogRXhwcmVzcyBjb25maWd1cmF0aW9uIHVzaW5nIG5ldyBmcmFnbWVudAoJc3R5bGUuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogbTg4ay9hb3V0LWRieC5oOiBOZXcuCgkqIG04OGsvb3BlbmJzZC5oOiBOZXcuCgkqIG04OGsveG0tb3BlbmJzZC5oOiBOZXcuCgoyMDAwLTA3LTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogUmV0dXJuIGNvbnN0MF9ydHgsIG5vdCBlcnJvcl9tYXJrX25vZGUuCgoyMDAwLTA3LTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcmVsb2FkLmMgKHB1c2hfc2Vjb25kYXJ5X3JlbG9hZCk6IE1ha2Ugc3VyZSB0byBhZGQgdGhlIG5ldwoJcmVsb2FkIGF0IHRoZSBlbmQsIGFmdGVyIGFjcXVpcmluZyBzZWNvbmRhcnkgbWVtb3J5LgoKMjAwMC0wNy0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BwbGV4LmMgKGlzX21hY3JvX2Rpc2FibGVkKTogVXNlIENQUF9XVFJBRElUSU9OQUwuCgoJKiBjLWRlY2wuYyAoc2V0X2N1cnJlbnRfZnVuY3Rpb25fbmFtZV9kZWNsYXJlZCwgYW5vbl9hZ2dyX3R5cGVfcCwKCWxhbmdfZXhwYW5kX3N0bXQpOiBNYXJrIHBhcmFtZXRlcnMgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKCSogYy1wYXJzZS5pbiAoc3RtdCk6IERlbGV0ZSB1bnVzZWQgdmFyaWFibGVzLgoKCSogY29udmVydC5jIChjb252ZXJ0X3RvX3ZlY3Rvcik6IExpa2V3aXNlLgoKCSogZ2Vuc3VwcG9ydC5jIChwcm9jZXNzX3J0eCk6IERlY2xhcmUgYXR0ciBhcyBgcnR2ZWMnIG5vdCBgcnR4Jy4KCgkqIHRyZWUuYyAoZmluaXNoX3ZlY3Rvcl90eXBlKTogUHJvdG90eXBlLgoKMjAwMC0wNy0xMiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYzogdXNlIHhtYWxsb2MKCSogZml4aW5jL2ZpeGluY2wuYyhpbml0aWFsaXplKTogc2V0IHByb2dyYW0gbmFtZSBmb3IgeG1hbGxvYwoJKiBmaXhpbmMvZml4bGliLmMobXVzdF9tYWxsb2MpOiBvYnNvbGV0ZQoJKGlzX2N4eF9oZWFkZXIpOiBubyBsb25nZXIgdXNlZCAtIGRpc2FibGVkCgkoc2tpcF9xdW90ZSk6IGluc2VydGVkIGFuZCBkaXNhYmxlZCBmb3IgZnV0dXJlIHVzZQoJKiBmaXhpbmMvZml4bGliLmg6IHJlZmxlY3RzIGFib3ZlCgkqIGZpeGluYy9maXh0ZXN0cy5jOiByZW1vdmVkIGRpbmtsZWJlcnJpZXMKCjIwMDAtMDctMTIgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaGFzaC5oOiAoVE9LRU5fU1BFTEwpIFB1bGxlZCBmcm9tIGNwcGxleC5jLgoJKiBjcHBsZXguYyAoVE9LRU5fU1BFTEwpIE1vdmUgdG8gY3BwaGFzaC5oLgoKCSogY3BwaGFzaC5jOiAoc3RydWN0IG1hY3JvX2luZm8sIGFsbG9jX21hY3JvLCBmcmVlX21hY3JvLAoJc3RydWN0IHRva2xpc3RfZHVtbXkpOiBOZXcuCgkoY3BwX2ZyZWVfZGVmaW5pdGlvbik6IEZyZWUgbWFjcm9zIHdpdGggZnJlZV9tYWNyby4KCShjb3VudF9wYXJhbXMpOiBEb24ndCBzYXZlIHBhcmFtZXRlciBzcGVsbGluZ3MuICBTYXZlIG1hY3JvCglpbmZvcm1hdGlvbiBpbiBhIHN0cnVjdCBtYWNyb19pbmZvLgoJKHBhcnNlX2RlZmluZSk6IERvbid0IGFsbG9jYXRlIGEgdG9rZW4gbGlzdC4KCShzYXZlX2V4cGFuc2lvbik6IEFsbG9jYXRlIHRoZSBtYWNybydzIHRva2VuIGxpc3QsIGFuZAoJc2F2ZSBwYXJhbWV0ZXIgc3BlbGxpbmdzIGlmIG5lY2Vzc2FyeS4gIFVzZSBUT0tFTl9TUEVMTC4KCShjcHBfY3JlYXRlX2RlZmluaXRpb24pOiBNYWtlIGxpc3QgY29uc3QuCgoyMDAwLTA3LTEyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXR5cGVjay5jIChwZWR3YXJuX2M5OSk6IE1vdmUgdG8KCSogYy1lcnJvcnMuYzogLi4uIEhlcmUuCgkqIHRvcGxldi5oICh2ZXJyb3IsIHZ3YXJuaW5nLCB2cGVkd2Fybik6IFJlbW92ZSBwcm90b3R5cGVzLgoJKiBkaWFnbm9zdGljLmMgKHZlcnJvciwgdndhcm5pbmcsIHZwZWR3YXJuKTogTWFrZSBzdGF0aWMuCgkqIE1ha2VmaWxlLmluIChDX0FORF9PQkpDX09CSlMpOiBJbmNsdWRlIGMtZXJyb3JzLm8KCShjLWVycm9ycy5vKTogTGlzdCBkZXBlbmRlbmN5LgoKMjAwMC0wNy0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtcGFyc2UuYzogUmVtb3ZlLgoJKiBjLXBhcnNlLmg6IExpa2V3aXNlLgoJKiBjLXBhcnNlLnk6IExpa2V3aXNlLgoJKiBvYmpjL29iamMtcGFyc2UuYzogTGlrZXdpc2UuCgkqIG9iamMvb2JqYy1wYXNyZS55OiBMaWtld2lzZS4KCjIwMDAtMDctMTEgIFJvZG5leSBCcm93biAgPFJvZG5leUJyb3duQHBtc2MuY29tPgoKCSogZ2NjLnRleGk6IEZpeCBtaW5vciB0eXBvcwoJKiBleHRlbmQudGV4aTogRml4IG1pbm9yIHR5cG9zCgoyMDAwLTA3LTExICBNYXJjIEVzcGllIDxlc3BpZUBvcGVuYnNkLm9yZz4KCgkqIGNvbGxlY3QyLmMgKG1haW4pOiBSZWNvZ25pemUgLmxvIGFzIG9iamVjdCBmaWxlcy4KCjIwMDAtMDctMTEgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogcGEuYyAoaHBwYV9lbmNvZGVfbGFiZWwpOiBTdG9yZSBsYWJlbHMgaW4gZ2MgbWVtb3J5IHdoZW4gZ2djX3AgaXMKCXRydWUuCgoJKiBhY2xvY2FsLm00IChBQ19GVU5DX01NQVBfQU5ZV0hFUkUpOiBFeHRlbmQgdGVzdCB0byBkZXRlY3Qgc3lzdGVtcwoJd2l0aCBNQVBfQU5PTllNT1VTIGFuZCBNQVBfQU5PTi4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlYnVpbHQuCgoyMDAwLTA3LTEyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmMgKHNhdmVfb3V0cHV0X3N0YXRlKTogUmVtb3ZlLgoJKHJlc3RvcmVfb3V0cHV0X3N0YXRlKTogTGlrZXdpc2UuCgkoY2xlYXJfdGV4dF9pbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGNsZWFyX2RpYWdub3N0aWNfaW5mbyk6IExpa2V3aXNlLgoJKG91dHB1dF90ZXh0X2xlbmd0aCwgaXNfc3RhcnRpbmdfbmV3bGluZSwgb3V0cHV0X3ByZWZpeCwKCWxpbmVfd3JhcF9jdXRvZmYsIGlkZWFsX2xpbmVfd3JhcF9jdXRvZmYsIHByZWZpeF93YXNfZW1pdHRlZF9mb3IsCglwcmVmaXhpbmdfcG9saWN5LCBvdXRwdXRfYnVmZmVyX3B0cl90b19mb3JtYXRfYXJncyk6IE5ldyBtYWNyb3MKCShzZXRfcmVhbF9tYXhpbXVtX2xlbmd0aCwgb3V0cHV0X3NldF9tYXhpbXVtX2xlbmd0aCwKCW91dHB1dF9zZXRfcHJlZml4LCBvdXRwdXRfZ2V0X3ByZWZpeCwgb3V0cHV0X3NldF9tYXhpbXVtX2xlbmd0aCwKCW91dHB1dF9kZXN0cm95X3ByZWZpeCwgaW5pdF9vdXRwdXRfYnVmZmVyLAoJcmVzaGFwZV9kaWFnbm9zdGljX2J1ZmZlciwgb3V0cHV0X3NwYWNlX2xlZnQsIG91dHB1dF9lbWl0X3ByZWZpeCwKCW91dHB1dF9hZGRfbmV3bGluZSwgb3V0cHV0X2FkZF9jaGFyYWN0ZXIsIG91dHB1dF9hZGRfc3BhY2UsCglvdXRwdXRfYXBwZW5kX3IsIG91dHB1dF9hcHBlbmQsIHdyYXBfdGV4dCwgb3V0cHV0X2Zvcm1hdCwKCW91dHB1dF9kb19wcmludGYsIG91dHB1dF9wcmludGYsIG91dHB1dF9kb192ZXJiYXRpbSwKCW91dHB1dF92ZXJiYXRpbSwgdmVyYmF0aW0pOiBVc2UgdGhlbS4KCShvdXRwdXRfY2xlYXIpOiBTcGxpdCBpbnRvIGNsZWF0X3RleHRfaW5mbyBhbmQKCWNsZWFyX2RpYWdub3N0aWNfaW5mby4KCShzdHJ1Y3Qgb3V0cHV0X3N0YXRlKTogTW92ZSB0by4uLgoKCSogZGlhZ25vc3RpYy5oOiAuLi5IZXJlCgkoc3RydWN0IG91dHB1dF9idWZmZXIpOiBBZGp1c3QuCgoyMDAwLTA3LTExICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAocGFyc2VfbmFtZSk6IE5vIGxvbmdlciBpbmxpbmUgKHByZW1hdHVyZSBvcHRpbWl6YXRpb24pLgoJKGRvX3BvcF9jb250ZXh0KTogRm9sZCBpbnRvIHBvcF9jb250ZXh0LgoJKHBvcF9jb250ZXh0KTogUmV0dXJucyBpbnQuCgkobGV4X25leHQpOiBIb2lzdCB0ZXN0IGZvciBlbmQgb2YgZGlyZWN0aXZlIGludG8gcG9wX2NvbnRleHQuCgkocHVzaF9tYWNyb19jb250ZXh0KTogUmV0dXJucyBpbnQ7IHRha2VzIGp1c3QgcmVhZGVyIGFuZCB0b2tlbi4KCUhvaXN0IHRlc3QgZm9yIGV4Y2Vzc2l2ZSBuZXN0aW5nIHRvIGNhbGxlci4KCShwdXNoX2FyZ19jb250ZXh0KTogUmV0dXJucyB2b2lkOyB0YWtlcyBqdXN0IHJlYWRlciBhbmQgdG9rZW4uCglEbyBub3QgY2FsbCBzdHJpbmdpZnlfYXJnIG9yIGdldF9yYXdfdG9rZW4uCgkoZ2V0X3Jhd190b2tlbik6IENvbnZlcnQgdGFpbCByZWN1cnNpb24gdGhyb3VnaAlwdXNoX2FyZ19jb250ZXh0Cgl0byBhIGxvb3AgYXQgdGhpcyBsZXZlbC4gIENhbGwgc3RyaW5naWZ5X2FyZyBoZXJlIGlmIGFwcHJvcHJpYXRlLgoJKG1heWJlX3Bhc3RlX3dpdGhfbmV4dCk6IENvbnZlcnQgdGFpbCByZWN1cnNpb24gdG8gYSB3aGlsZSBsb29wLgoJSG9pc3QgdGVzdCBvZiBwYXN0ZV9sZXZlbCB0byBjYWxsZXIuCgoJKHN0cmluZ2lmeV9hcmcpOiBQdXNoIGFyZyBjb250ZXh0IGF0IGJlZ2lubmluZy4KCShjcHBfZ2V0X3Rva2VuKTogU3BsaXQgb3V0IGNvcmUgaW50byBfY3BwX2dldF90b2tlbi4gIENhbGwKCXByb2Nlc3NfZGlyZWN0aXZlIGhlcmUuICBUaHJvdyBhd2F5IENQUF9QTEFDRU1BUktFUiB0b2tlbnMuCgkoX2NwcF9nZXRfdG9rZW4pOiBDb252ZXJ0IHRhaWwgcmVjdXJzaW9uIHRocm91Z2gKCXB1c2hfbWFjcm9fY29udGV4dCB0byBhIGxvb3AgYXQgdGhpcyBsZXZlbC4KCShfY3BwX2dsdWVfaGVhZGVyX25hbWUsIGlzX21hY3JvX2Rpc2FibGVkLCBzdHJpbmdpZnlfYXJnLAoJX2NwcF9nZXRfcmF3X3Rva2VuKTogVXNlIF9jcHBfZ2V0X3Rva2VuLgoJKF9jcHBfc2tpcF9yZXN0X29mX2xpbmUpOiBEcm9wIHRoZSBjb250ZXh0IHN0YWNrIGRpcmVjdGx5OyBkbwoJbm90IGNhbGwgcG9wX2NvbnRleHQuCgkoX2NwcF9ydW5fZGlyZWN0aXZlKTogQ2FsbCBsZXhfbmV4dCBkaXJlY3RseS4KCgkqIGNwcGhhc2guaDogUHJvdG90eXBlIF9jcHBfZ2V0X3Rva2VuLgoJKiBjcHBleHAuYyAobGV4KTogVXNlIGl0LgoJKiBjcHBoYXNoLmMgKHBhcnNlX2RlZmluZSk6IFVzZSBpdC4KCSogY3BwbGliLmMgKGdldF9kZWZpbmVfbm9kZSwgZG9fdW5kZWYsIHBhcnNlX2luY2x1ZGUsCglyZWFkX2xpbmVfbnVtYmVyLCBkb19saW5lLCBkb19pZGVudCwgZG9fcHJhZ21hLCBkb19wcmFnbWFfZ2NjLAoJZG9fcHJhZ21hX2ltcGxlbWVudGF0aW9uLCBkb19wcmFnbWFfcG9pc29uLCBkb19wcmFnbWFfZGVwZW5kZW5jeSwKCXBhcnNlX2lmZGVmLCB2YWxpZGF0ZV9lbHNlKTogVXNlIGl0LgoJKGNwcF9wdXNoX2J1ZmZlcik6IFR3ZWFrIGVycm9yIG1lc3NhZ2U7IGFib3J0IGlmIGFueW9uZSB0cmllcwoJdG8gcHVzaCBhIGJ1ZmZlciB3aGlsZSBtYWNybyBleHBhbnNpb25zIGFyZSBzdGFja2VkLgoKMjAwMC0wNy0xMSAgRG9ubiBUZXJyeSAgPGRvbm50ZUBtaWNyb3NvZnQuY29tPgoKCSogY3BwbGV4LmMgKGZyZWVfbWFjcm9fYXJncywgc2F2ZV90b2tlbik6IENhc3QgYXJnIG9mIGZyZWUKCWFuZC9vciB4cmVhbGxvYyB0byBQVFIuCgkoX2NwcF9pbml0X2lucHV0X2J1ZmZlcik6IENsZWFyIGFsbCBmaWVsZHMgb2YgdGhlIGJhc2UgY29udGV4dC4KClR1ZSBKdWwgMTEgMTU6Mjg6MjEgQ0RUIDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogZ2Vuc3VwcG9ydC5jIChwcm9jZXNzX3J0eCk6IE1ha2UgcnRsIGNoZWNraW5nIHN0b3AKCWNvbXBsYWluaW5nIGFib3V0IHRoZSBkZWZpbmVfaW5zbiB3aGlsZSBpdCBpcyBiZWluZwoJY29udmVydGVkIGZyb20gYSBkZWZpbmVfaW5zbl9hbmRfc3BsaXQuCgpUdWUgSnVsIDExIDE2OjI2OjE3IDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChzaW1wbGVfbWVtb3J5X29wZXJhbmQpOiBBY2Nlc3MgdGhlCglJTlRWQUwgb2YgdGhlIGFkZHJlc3MsIG5vdCBpdCdzIGNvbnRhaW5pbmcgTUVNLgoKMjAwMC0wNy0xMSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZml4dGVzdHMuYyhkb3VibGVfc2xhc2gpOiBvYnNvbGV0ZQoJKGVsc2VfZW5kaWZfbGFiZWwpOiBsaWtld2lzZQoJKiBmaXhpbmMvaW5jbGhhY2suZGVmKGlyaXhfbXVsdGlsaW5lX2NtbnQpOiBvYnNvbGV0ZQoJKGxpYmMxX2lmZGVmZF9tZW14KTogY29ycmVjdCBpbml0aWFsIGNvbW1lbnQKCWFuZCBvbWl0IHRoZSAjaWYvI2VuZGlmIHBhaXIgZnJvbSB0aGUgbWVteHh4IGRlY2xhcmF0aW9ucwoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbgoKMjAwMC0wNy0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BwbGV4LmMgKFQsIEksIFMsIEMsIE4pOiBBdm9pZCBub24tY29uc3RhbnQgaW5pdGlhbGl6ZXJzLgoKMjAwMC0wNy0xMSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHAudGV4aTogVXBkYXRlLgoKMjAwMC0wNy0xMSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBpbml0LmM6IChjcHBfcmVhZGVyX2luaXQpOiBBbGxvdyBkaWdyYXBocyBieSBkZWZhdWx0LgoJKGhhbmRsZV9vcHRpb24pOiBTZXQgZGlncmFwaHMgYWNjb3JkaW5nIHRvIHN0YW5kYXJkLgoJTWVyZ2UgT1BUX2xhbmdfYzg5IGhhbmRsZXIgd2l0aCBPUFRfc3RkX2M4OS4KCgkqIGNwcGxleC5jOiAobGV4X2xpbmUsIGNhbl9wYXN0ZSk6IEhvbm9yIGRpZ3JhcGhzIGluCglhY2NvcmRhbmNlIHdpdGgJdGhlIGRpZ3JhcGhzIGZsYWcuCgoJKiBjcHBsaWIuaDogKHN0cnVjdCBjcHBfb3B0aW9ucyk6IE5ldyBvcHRpb24gZGlncmFwaHMuCgoyMDAwLTA3LTEwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCSAgICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGxpYmMxX2lmZGVmZF9tZW14KTogTmV3IGZpeC4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCSogZml4aW5jL3Rlc3RzL2Jhc2UvdGVzdGluZy5oOiBBZGQgdGVzdGNhc2UuCgoyMDAwLTA3LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChnb3Rfc3ltYm9saWNfb3BlcmFuZCk6IE5ldy4KCShzeW1ib2xpY19vcGVyYW5kLCBtb3ZlX29wZXJhbmQpOiBSZXZlcnQgMDcwMSBjaGFuZ2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChnb3Rfc3ltYm9saWNfb3BlcmFuZCk6IERlY2xhcmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdmRpKTogUmV2ZXJ0IDA3MDEgd3J0IHN5bWJvbGljX29wZXJhbmQ7CglzcGxpdCB0aGUgb2Zmc2V0IGludG8gYSAxNC1iaXQgbG93IHBhcnQgaW5zdGVhZCBvZiBhIDEzLWJpdCBsb3cgcGFydC4KCShsb2FkX2ZwdHIpOiBNYXJrIHRoZSBtZW0gYXMgdW5jaGFuZ2luZy4KCShsb2FkX3N5bXB0cik6IFVzZSBnb3Rfc3ltYm9saWNfb3BlcmFuZC4KCjIwMDAtMDctMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBsaWJnY2MyLmMgKG5leHRfc3RhY2tfbGV2ZWwpOiBDYXN0IHJlc3VsdCBvZiBjb21wdXRhdGlvbiB0bwoJKHZvaWQgKiopIHNvIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3QgZ2VuZXJhdGUgYSB3YXJuaW5nLgoKMjAwMC0wNy0xMCAgQ2hhbmRyYWthbGEgQ2hhdnZhICA8Y2NoYXZ2YUByZWRoYXQuY29tPgoKCSogZmxhZ3MuaCA6IEFkZCBuZXcgdmFyaWFibGUgZmxhZ19zaW5nbGVfcHJlY2lzaW9uX2NvbnN0YW50LgoJKiB0b3BsZXYuYyAoZGlzcGxheV9oZWxwKSA6IEFkZCAtZnNpbmdsZS1wcmVjaXNpb24tY29uc3RhbnQgb3B0aW9uLgoJKGZsYWdfc2luZ2xlX3ByZWNpc2lvbl9jb25zdGFudCk6IE5ldy4KCSogYy1sZXguYyAoeXlsZXgpOiBDb252ZXJ0IGZsb2F0aW5nIHBvaW50IGNvbnN0YW50IHRvIHNpbmdsZQoJcHJlY2lzaW9uIGNvbnN0YW50LgoJKiBpbnZva2UudGV4aSA6IEFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGlzIG5ldyBvcHRpb24uCgoyMDAwLTA3LTEwICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmMgKG91dHB1dF9vY3RhbCk6IFNlY29uZCBwYXJhbWV0ZXIgaXMgdW5zaWduZWQuCgkob3V0cHV0X2xvbmdfb2N0YWwpOiBMaWtld2lzZS4KCShvdXRwdXRfaGV4YWRlY2ltYWwpOiBMaWtld2lzZS4KCShvdXRwdXRfbG9uZ19oZXhhZGVjaW1hbCk6IExpa2V3aXNlLgoJKG91dHB1dF9mb3JtYXQpOiBBZGp1c3QgYXJndW1lbnRzIGV4dHJhY3Rpb24uIFR3ZWFrLgoJKG91dHB1dF92ZXJiYXRpbSwgdmVyYmF0aW0pOiBFbmQgdmFyaWFibGUgYXJndW1lbnQgbGlzdC4KCShyZXBvcnRfZGlhZ25vc3RpYyk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCjIwMDAtMDctMTAgIEJlbmphbWluIENoZWxmICA8Y2hlbGZAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmggKGJ1aWxkX3N0bXQpOiBEZWNsYXJlLgoJKGJ1aWxkX2NvbnRpbnVlX3N0bXQpOiBMaWtld2lzZS4KCShidWlsZF9icmVha19zdG10KTogTGlrZXdpc2UuCgkoYnVpbGRfcmV0dXJuX3N0bXQpOiBMaWtld2lzZS4KCgkqIGMtZGVjbC5jIChkb19jYXNlKTogUmV3cml0ZSB0byBkbyB3aGF0IHByZXZpb3VzbHkgZG9uZSBpbgoJYy1wYXJzZS5pbi4KCgkqIGMtc2VtYW50aWNzLmMgKGJ1aWxkX3N0bXQpOiBEZWZpbmUuCgkoYnVpbGRfcmV0dXJuX3N0bXQpOiBMaWtld2lzZS4KCShidWlsZF9icmVha19zdG10KTogTGlrZXdpc2UuCgkoYnVpbGRfY29udGludWVfc3RtdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2Nhc2VfbGFiZWwpOiBMaWtld2lzZS4KCgkqIGMtcGFyc2UuaW4gKEJSRUFLKTogQ2hhbmdlIHRvIGJ1aWxkIHRyZWUsIHRoZW4gZ2VuZXJhdGUgUlRMLgoJKENPTlRJTlVFKTogTGlrZXdpc2UuCgkoUkVUVVJOKTogTGlrZXdpc2UuCgkoQ0FTRSk6IExpa2V3aXNlLgoJKERFRkFVTFQpOiBMaWtld2lzZS4KCgkqIGMtcGFyc2UueTogUmVnZW5lcmF0ZS4KCSogYy1wYXNyZS5jOiBMaWtld2lzZS4KCjIwMDAtMDctMDkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwcik6IEJhaWwgZWFybGllciBpZiB3ZSBnZXQgYW4gZXJyb3JfbWFya19ub2RlLgoKCSogdHJlZS5oIChTVFJJUF9OT1BTKTogQ2hlY2sgZm9yIGVycm9yX21hcmtfbm9kZS4KCShTVFJJUF9TSUdOX05PUFMsIFNUUklQX1RZUEVfTk9QUyk6IExpa2V3aXNlLgoJKGR3YXJmMm91dF8qKTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbnMuCgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQ29weSBERUNMX0FCU1RSQUNUX09SSUdJTiBmcm9tCglERUNMX0FCU1RSQUNUX09SSUdJTiwgbm90IERFQ0xfT1JJR0lOLgoKMjAwMC0wNy0xMCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jICh3cmFwX3RleHQpOiBOZXcgZnVuY3Rpb24uCgkobWF5YmVfd3JhcF90ZXh0KTogTGlrZXdpc2UuCgkob3V0cHV0X2FkZF9zdHJpbmcpOiBVc2UgaXQuCgkob3V0cHV0X2Zvcm1hdCk6IExpa2V3aXNlLgoJKGNvdW50X2Vycm9yKTogVXNlIHZlcmJhdGltIGluc3RlYWQgb2Ygbm90aWNlLgoJKHJlcG9ydF9lcnJvcl9mdW5jdGlvbik6IExpa2V3aXNlLiBEb24ndCB1c2UgcGxhaW4gZnByaW50Zi4KCShmaW5pc2hfZGlhZ25vc3RpYyk6IE5ldyBmdW5jdGlvbi4KCShvdXRwdXRfZG9fdmVyYmF0aW0pOiBUd2Vhay4gIENvbW1vbmFsaXplIGZ1bmN0aW9uYWxpdGllcyBpbgoJb3V0cHV0X3ZlcmJhdGltIGFuZCB2ZXJiYXRpbS4KCShvdXRwdXRfdmVyYmF0aW0pOiBBZGp1c3QuCgkodmVyYmF0aW0pOiBMaWtld2lzZS4KCShyZXBvcnRfZGlhZ25vc3RpYyk6IERlZmluZS4KCgkqIGRpYWdub3N0aWMuaCAocmVwb3J0X2RpYWdub3N0aWMpOiBQcm90b3R5cGUuCgoyMDAwLTA3LTA5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBleHAuYyAoX2NwcF9wYXJzZV9leHByKTogRG9uJ3QgdXNlIHVuYXJ5IHBsdXMuCgoyMDAwLTA3LTA5ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guaDogSVN2c3BhY2UsIGlzX3ZzcGFjZSwgaXNfbnZzcGFjZTogTmV3LgoJSVNoc3BhY2UsIElTc3BhY2U6IFVwZGF0ZS4KCgkqIGNwcGluaXQuYzogSVNUQUJMRTogVXBkYXRlLgoJVjogTmV3LgoKCSogY3BwbGV4LmMgKElTX0hTUEFDRSwgU19ORVdMSU5FKTogUmVtb3ZlLgoJKElTX0RJUkVDVElWRSk6IFJlbmFtZSBLTk9XTl9ESVJFQ1RJVkUuCgkoc2tpcF9ibG9ja19jb21tZW50LCBza2lwX2xpbmVfY29tbWVudCwJcGFyc2Vfc3RyaW5nLAoJbGV4X2xpbmUpOiBVc2UgaXNfdnNwYWNlIHJhdGhlciB0aGFuIElTX05FV0xJTkUuCgkoc2tpcF93aGl0ZXNwYWNlLCBsZXhfbGluZSk6IENsZWFuIHVwIHRvIHVzZSBpc19udnNwYWNlLgoJKGxleF9saW5lKTogVXNlIEtOT1dOX0RJUkVDVElWRS4gIEFueSBraW5kIG9mIGRpcmVjdGl2ZQoJZ2V0cyBhIEJPTCBmbGFnLgoJKGxleF9uZXh0KTogVW5jb25kaXRpb25hbGx5IHN0b3AgaWYgd2l0aGluIGEgZGlyZWN0aXZlLgoJVHJlYXQgZGlyZWN0aXZlcyB3aXRoaW4gbWFjcm8gaW52b2NhdGlvbnMgYXMgZGlyZWN0aXZlcwoJKGFmdGVyIHBhcnNlX2FyZ3MgZW1pdHMgZXJyb3IpLCBub3QgYXMgdGhlIGFyZ3VtZW50LgoKMjAwMC0wNy0wOSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jIChkaWFnbm9zdGljX2FyZ3MpOiBOZXcgbWFjcm8uCgkoZGlhZ25vc3RpY19tc2cpOiBMaWtld2lzZS4KCShvdXRwdXRfZm9ybWF0dGVkX2ludGVnZXIpOiBMaWtld2lzZS4KCShvdXRwdXRfc3RhdGUpOiBOZXcgZGF0YSB0eXBlLgoJKGRpZ2l0X2J1ZmZlcik6IE1ha2UgZ2xvYmFsLgoJKG91dHB1dF9hZGRfaW50ZWdlcik6IFJlbmFtZSB0byBvdXRwdXRfZGVjaW1hbC4gU3F1ZWV6ZQoJZGlnaXRfYnVmZmVyLgoJKG91dHB1dF9sb25nX2RlY2ltYWwsIG91dHB1dF91bnNpZ25lZF9kZWNpbWFsLAoJb3V0cHV0X2xvbmdfdW5zaWduZWRfZGVjaW1hbCwgb3V0cHV0X29jdGFsLCBvdXRwdXRfbG9uZ19vY3RhbCwKCW91dHB1dF9oZXhhZGVjaW1hbCwgb3V0cHV0X2xvbmdfaGV4YWRlY2ltYWwpOiBOZXcgZnVuY3Rpb25zLgoJKG91dHB1dF9hcHBlbmRfcik6IE5ldyBmdW5jdGlvbi4KCShvdXRwdXRfYXBwZW5kKTogVHdlYWsuCgkob3V0cHV0X2ZsdXNoX29uKTogUmVuYW1lIHRvIG91dHB1dF90b19zdHJlYW0uCgkob3V0cHV0X2Zvcm1hdCk6IENoYW5nZSBwcm90b3R5cGUuICBJbXByb3ZlIGRvY3VtZW50YXRpb24uIEhhbmRsZQoJbW9yZSBmb3JtYXQgc3BlY2lmaWVycy4KCShidWlsZF9sb2NhdGlvbl9wcmVmaXgpOiBSZW5hbWUgdG8gY29udGV4dF9hc19wcmVmaXguCgkob3V0cHV0X25vdGljZSk6IFJlbmFtZSB0byBvdXRwdXRfZG9fcHJpbnRmLgoJKG91dHB1dF9wcmludGYpOiBUd2Vhay4KCShsaW5lX3dyYXBwZXJfcHJpbnRmKTogTGlrZXdpc2UuCgkodmxpbmVfd3JhcHBlcl9tZXNzYWdlX3dpdGhfbG9jYXRpb24pOiBBZGp1c3QgY2FsbCB0byByZW5hbWVkCglmdW5jdGlvbnMuCgkodl9tZXNzYWdlX3dpdGhfZGVjbCk6IExpa2V3aXNlLgoJKGRlZmF1bHRfcHJpbnRfZXJyb3JfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShzYXZlX291dHB1dF9zdGF0ZSk6IE5ldyBmdW5jdGlvbi4KCShyZXN0b3JlX291dHB1dF9zdGF0ZSk6IExpa2V3aXNlLgoJKG91dHB1dF9kb192ZXJiYXRpbSk6IExpa2V3aXNlLgoJKG91dHB1dF92ZXJiYXRpbSk6IERlZmluZS4KCSh2ZXJiYXRpbSk6IExpa2V3aXNlLgoKCSogZGlhZ25vc3RpYy5oIChwcmludGVyX2ZuKTogQ2hhbmdlIHJldHVybiB0eXBlIGZyb20gdm9pZCB0byBpbnQuCglJbXByb3ZlIGRvY3VtZW50YXRpb24uCgkob3V0cHV0X2FkZF9pbnRlZ2VyKTogUmVuYW1lIHRvIG91dHB1dF9kZWNpbWFsLgoJKG91dHB1dF9mbHVzaF9vbiwgb3V0cHV0X2Zvcm1hdCk6IERvbid0IGV4cG9ydC4KCShvdXRwdXRfdmVyYmF0aW0sIHZlcmJhdGltKTogRGVjbGFyZS4KCjIwMDAtMDctMDggIFRvb24gTW9lbmUgIDx0b29uQG1vZW5lLmluZGl2Lm5sdXVnLm5sPgoKCSogZm9sZC1jb25zdC5jIChleHRyYWN0X211bGRpdikgY2FzZSBQTFVTX0VYUFIsIE1JTlVTX0VYUFI6CglDaGVjayB3aGV0aGVyIGMgZGl2aWRlcyBvcDEgZXhhY3RseSBpZiBvcGVyYXRpb24gaXMgbm90CgltdWx0aXBsaWNhdGlvbi4KCjIwMDAtMDctMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmaW5hbC5jIChmaW5hbCk6IERvIG5vdCBhYm9ydCB3aGVuIHJlZy1zdGFjayBpbnRyb2R1Y2VzCglhIG5ldyBpbnNuLgoKMjAwMC0wNy0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmggKHN0cnVjdCBjcHBfbmFtZSk6IE5vdyBzdHJ1Y3QgY3BwX3N0cmluZy4KCShDUFBfSU5ULCBDUFBfRkxPQVQsIENQUF9OVU1CRVIsIENQUF9DT01NRU5ULAoJQ1BQX0hFQURFUl9OQU1FKTogQ2hhbmdlIHRvIHR5cGUgUy4KCShzdHJ1Y3QgY3BwX3Rva2VuKTogUmVuYW1lICduYW1lJyBmaWVsZCB0byAnc3RyJy4gIEFkZCAnbm9kZScKCWZpZWxkLCBhIGNwcF9oYXNobm9kZSAqLiAgQWxsIHJlZmVyZW5jZXMgdG8gdmFsLm5hbWUgdXBkYXRlZAoJdG8gdXNlIHZhbC5zdHIgb3IgdmFsLm5vZGUgYXMgYXBwcm9wcmlhdGUuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBBZGQgc3BlY19ub2RlcyBmaWVsZC4KCShjcHBfaWRjbXApOiBOb3cgY3BwX2lkZXE7IHRha2VzIGEgdG9rZW4gKiBhbmQgYSBjaGFyICouCgoJKiBjcHBoYXNoLmggKHN0cnVjdCBzcGVjX25vZGVzKTogTmV3LgoJKGVudW0gc3BlbGxfdHlwZSk6IFJlb3JkZXIuICBPbmx5IFNQRUxMX1NUUklORyB0b2tlbnMgdXNlCgl2YWwuc3RyLiAgQWxsIHJlZmVyZW5jZXMgdG8gJ3NwZWxsaW5nID4gU1BFTExfTk9ORScgdXBkYXRlZCB0bwoJbWF0Y2guCgoJKENQUF9JTl9TWVNURU1fSEVBREVSKTogQ2hlY2sgcGZpbGUtPmJ1ZmZlciBhbmQKCXBmaWxlLT5idWZmZXItPmluYyBhcmUgbm90IE5VTEwgYmVmb3JlIGRlcmVmZXJlbmNpbmcgdGhlbS4KCgkqIGNwcGxleC5jIChwYXJzZV9uYW1lKTogVGFrZSBhIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgdG9rZW4sCglwbHVzIGN1cnJlbnQgcG9zaXRpb24gYW5kIGxpbWl0IGFzIGFyZ3M7IHJldHVybiB0aGUgbmV3Cglwb3NpdGlvbjsgZG9uJ3QgY29weSB0aGUgdGV4dCBvZiBhIG5hbWUgaW50byB0aGUgc3RyaW5nCglidWZmZXIsIGluc3RlYWQgY2FsbCBjcHBfbG9va3VwIGFuZCBzdG9yZSB0aGUgbm9kZSBwb2ludGVyLgoJSWYgZXh0ZW5kaW5nIGEgdG9rZW4sIGNvcHkgb3V0IHRoZSB0ZXh0IG9mIHRoZSBvbGQgaW50byBhCglzY3JhdGNoIGJ1ZmZlciwgYXBwZW5kIHRoZSBuZXcsIGxvb2sgdGhhdCB1cCBhbmQgc3RvcmUgdGhlIG5ldwoJbm9kZSBwb2ludGVyLiAgSW5saW5lLgoJKG1heWJlX3Bhc3RlX3dpdGhfbmV4dCk6IElmIHRoZSByZXN1bHQgb2YgcGFzdGUgaXMgYSBOQU1FLAoJdGhlbiBsb29rIHVwIHRoZSBwYXN0ZWQgdGV4dCBhbmQgc3RvcmUgaXRzIG5vZGUgcG9pbnRlci4KCShsZXhfbGluZSk6IEFkanVzdCBmb3IgbmV3IHBhcnNlX25hbWUgaW50ZXJmYWNlLgoJQ2hlY2sgZm9yIEwic3RyIiwgTCdzdHInIHVzaW5nIHNwZWNfbm9kZXMtPm5fTC4KCShzcGVsbF90b2tlbik6IFNQRUxMX0lERU5UIHRva2VucyBoYXZlIHRoZWlyIHNwZWxsaW5nIGluCgl2YWwubm9kZS0+bmFtZS4gIEhhbmRsZSBTUEVMTF9TVFJJTkcgdG9rZW5zIHRoYXQgZG9uJ3QgaGF2ZQoJc3RyaW5nIGRlbGltaXRlcnMuCgkoX2NwcF9leHBhbmRfbmFtZV9zcGFjZSwKCShjYW5fcGFzdGUpOiBDaGVjayBmb3IgTCAjIyAic3RyIiB1c2luZyBzcGVjX25vZGVzLT5uX0wuCgkoY3BwX2dldF90b2tlbiwgc3BlY2lhbF9zeW1ib2wpOiBObyBuZWVkIHRvIGNhbGwgY3BwX2xvb2t1cC4KCShjcHBfaWRjbXApOiBOb3cgY3BwX2lkZXE7IHRha2UgYSB0b2tlbiAqIGFuZCBhIGNvbnN0IGNoYXIgKjsKCXJldHVybiAxPWVxdWFsIDA9bm90LCBub3QgYSB0cmlzdGF0ZS4KCgkqIGNwcGhhc2guYyAodmFyX2FyZ3Nfc3RyKTogRGVsZXRlLgoJKGZpbmRfcGFyYW0pOiBDb21wYXJlIG5vZGUgZmllbGRzIGRpcmVjdGx5LgoJKGlzX192YV9hcmdzX18pOiBVc2UgQ1BQX1BFREFOVElDLiAgSnVzdCBjb21wYXJlCgl0b2tlbi0+dmFsLm5vZGUgd2l0aCBzcGVjX25vZGVzLT5uX19WQV9BUkdTX18uCgkoZHVtcF9mdW5saWtlX21hY3JvKTogRG9uJ3QgdXNlIHZhcl9hcmdzX3N0ci4KCgkqIGNwcGxpYi5jIChfY3BwX2NoZWNrX2RpcmVjdGl2ZSk6IEp1c3Qgd2FsayB0aHJvdWdoCglzcGVjX25vZGVzLT5kaXJzIGNvbXBhcmluZyBwb2ludGVycy4KCShnZXRfZGVmaW5lX25vZGUsIGRvX3ByYWdtYV9wb2lzb24sIGRldGVjdF9pZl9ub3RfZGVmaW5lZCwKCXBhcnNlX2lmZGVmKTogVGhlIGlkZW50aWZpZXIgaGFzIGFscmVhZHkgYmVlbiBsb29rZWQgdXAuCgkoZG9faWZkZWYsIGRvX2lmbmRlZik6IHBhcnNlX2lmZGVmIHdvbid0IHJldHVybiBhIHBvaXNvbmVkCglub2RlLgoJKGRvX2lmKTogT25seSBjYWxsIGRldGVjdF9pZl9ub3RfZGVmaW5lZCBhdCBiZWdpbm5pbmcgb2YgZmlsZS4KCShfY3BwX3BhcnNlX2Fzc2VydGlvbik6IE9ubHkgY29weSBzdHJpbmcgcG9pbnRlcnMgZm9yCglTUEVMTF9TVFJJTkcgdG9rZW5zLgoJKHByYWdtYV9kaXNwYXRjaCk6IFRha2UgYSBub2RlIHBvaW50ZXIgYW5kIGV4YW1pbmUgaXRzIG5hbWUKCWZpZWxkLgoJKF9jcHBfaW5pdF9zdGFja3MpOiBBbHNvIGluaXRpYWxpemUgdGhlIHNwZWNfbm9kZXMgc3RydWN0dXJlLgoKCSogY3BwaW5pdC5jIChjcHBfcmVhZGVyX2luaXQpOiBDYWxsIF9jcHBfaW5pdF9zdGFja3MgYWZ0ZXIKCV9jcHBfaW5pdF9tYWNyb3MuCgkoY3BwX2NsZWFudXApOiBGcmVlIHBmaWxlLT5zcGVjX25vZGVzLiAgQ2FsbCBfY3BwX2NsZWFudXBfKiBpbgoJcmV2ZXJzZSBvcmRlciBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIF9jcHBfaW5pdF8qIHJvdXRpbmVzLgoKCSogY3BwZXhwLmMgKHBhcnNlX251bWJlciwgcGFyc2VfY2hhcmNvbnN0LCBwYXJzZV9kZWZpbmVkLAoJbGV4KTogQ2hlY2sgdmFsLm5vZGUtPnR5cGUgaW5zdGVhZCBvZiBjYWxsaW5nIGNwcF9kZWZpbmVkLgoJVXNlIHNwZWNfbm9kZXMgZW50cmllcyB3aGVyZSBhcHByb3ByaWF0ZS4KCgkqIGZpeC1oZWFkZXIuYywgc2Nhbi1kZWNscy5jOiBVcGRhdGUgZm9yIGludGVyZmFjZSBjaGFuZ2VzLgoKMjAwMC0wNy0wOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfbW92ZSk6IEZpeCBjb25kaXRpb25zIGZvcgoJZW1pdHRpbmcgYXV4X3RydW5jZGZzZjIuCgoyMDAwLTA3LTAzICBEb25uIFRlcnJ5ICAoZG9ubnRlQG1pY3Jvc29mdC5jb20pCgoJKiBjcHBpbml0LmMgKHByaW50X2hlbHApOiBzcGxpdCBvdmVybG9uZyBsaW5lIGludG8gSVNPIEM4OQoJbWF4aW11bSBjaHVua3MuCgoyMDAwLTA3LTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBleHAuYzogVXBkYXRlIGFsbCBjb2RlIGZvciBuZXcgbGV4ZXIgaW50ZXJmYWNlLgoJKG9wX3QsIG9wZXJhdG9yIGNvZGVzLCBzdHJ1Y3QgdG9rZW4sIHRva2VudGFiMiwgb3BfdG9fc3RyKTogUmVtb3ZlLgoJKHN0cnVjdCBzdWZmaXgsIHZzdWZfMSwgdnN1Zl8yLCB2c3VmXzMsIG9wX3RvX3ByaW8pOiBOZXcuCgkqIGNwcGxleC5jICh0b2tlbl9uYW1lcyk6IFRyaW0gbGVhZGluZyBDUFBfIGZyb20gbmFtZXM7IG1ha2UKCXRoZSBzdHJpbmdzIHVuc2lnbmVkLgoJKF9jcHBfc3BlbGxfb3BlcmF0b3IpOiBOZXcuCgkoaXNfbWFjcm9fZGlzYWJsZWQpOiBEaXNhYmxlIGFsbCBtYWNyb3MgaWYgcmVzY2FubmluZwoJcHJlcHJvY2Vzc2VkIHRleHQuCgkoX2NwcF9nZXRfZGlyZWN0aXZlX3Rva2VuKTogUmVtb3ZlLgoKCSogY3BwaW5pdC5jOiBEb24ndCBzZXQgbm9fbWFjcm9fZXhwYW5kLgoJKiBjcHBsaWIuYyAocmVhZF9saW5lX251bWJlciwgZG9fbGluZSk6IENoZWNrIG9ubHkgZm9yIEVPRiwKCW5vdCBWU1BBQ0UuCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGNwcGxpYi5oIChDUFBfVlNQQUNFKTogUmVtb3ZlLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogUmVtb3ZlIG5vX21hY3JvX2V4cGFuZC4KCjIwMDAtMDctMDggIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaGFzaC5jIChpc19fdmFfYXJnc19fKTogTmV3IGZ1bmN0aW9uLgoJKGNvdW50X3BhcmFtcyk6IEZpeCBsaW5lIHJlcG9ydGVkIGluIGVycm9yIG1lc3NhZ2VzLiAgVXNlCglpc19fdmFfYXJnc19fLiAgRG9uJ3QgcmV0dXJuICcpJyBvbiBlcnJvci4gIEZsYWcgR05VIHN0eWxlCglyZXN0IGFyZ3MgbWFjcm8gZGVmaW5pdGlvbnMuCgkocGFyc2VfZGVmaW5lKTogQ2hlY2sgbWFjcm8gbmFtZSBpcyBub3QgX19WQV9BUkdTX18uCgkoc2F2ZV9leHBhbnNpb24pOiBDaGVjayBpZGVudGlmaWVyIGluIG5vbi12YXJhcmdzLW1hY3JvIGlzCglub3QgX19WQV9BUkdTX18uICBEb24ndCBmbGFnIEdOVV9WQVJBUkdTLgoJKiBjcHBsZXguYyAocGFyc2VfYXJncyk6IEFjY2VwdCBubyBhcmd1bWVudCBpZmYgR05VX1JFU1RfQVJHUy4KCShtYXliZV9wYXN0ZV93aXRoX25leHQpOiBVc2UgcGVyLW1hY3JvIEdOVV9SRVNUX0FSR1MgcmF0aGVyCgkgdGhhbiBwZXItdG9rZW4gR05VX1ZBUkFSR1MuCgkqIGNwcGxpYi5oIChHTlVfVkFSQVJHUyk6IFJlbW92ZS4KCShHTlVfUkVTVF9BUkdTKTogTmV3LgoKU2F0IEp1bCAgOCAwMTozODoyNSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGNhbGxfcG9wLCBjYWxsLCBjYWxsX3ZhbHVlX3BvcCk6IERvIG5vdCBzZXQKCWN1cnJlbnRfZnVuY3Rpb25fdXNlc19waWNfb2Zmc2V0X3RhYmxlIGZvciBjYWxscyB0byBzdGF0aWMKCWZ1bmN0aW9ucyBvciBpbmRpcmVjdCBjYWxscy4KCjIwMDAtMDctMDcgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAocndzX2FjY2Vzc19yZWcpOiBOZXcgbG9jYWwgd3JpdGVfY291bnQuICBJZgoJaXNfcHJlZGljYXRlX3JlZywgdGhlbiB0YWtlIG1heCB3cml0ZV9jb3VudCBvZiByZWdpc3RlciBwYWlyLgoKMjAwMC0wNy0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogdHJhZGNwcC5jIChtYWluKTogUmVuYW1lIGxhYmVsIGBpbmNsdWRlJyB0byBgYWRkX2luY2x1ZGUnIHRvCglhdm9pZCBjb25mbGljdHMgd2l0aCB2YXJpYWJsZSBgaW5jbHVkZScgaW4gdHJhZGl0aW9uYWwgQy4KCjIwMDAtMDctMDcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogaW50ZWdyYXRlLmMgKGNvcHlfaW5zbl9saXN0KTogUmVtb3ZlIFJFR19MQUJFTCBub3Rlcy4KCjIwMDAtMDctMDcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogc2liY2FsbC5jICh1c2VzX2FkZHJlc3NvZik6IEFkZCBJTk1FTSBhcmd1bWVudCwgY2hlY2sgZm9yCgljdXJyZW50X2Z1bmN0aW9uX2ludGVybmFsX2FyZ19wb2ludGVyIG91dHNpZGUgb2YgTUVNIHJ0eHMgaW4gYWRkaXRpb24KCXRvIEFERFJFU1NPRnMuCgkoc2VxdWVuY2VfdXNlc19hZGRyZXNzb2YpOiBVcGRhdGUgY2FsbGVyLgoKMjAwMC0wNy0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdHJhZGNwcC5jIChpbml0aWFsaXplX2J1aWx0aW5zKTogSG9ub3IgTk9fQlVJTFRJTl9TSVpFX1RZUEUKCWFuZCBmcmllbmRzLgoKMjAwMC0wNy0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc3lzdGVtLmggKFVOSU9OX0lOSVRfWkVSTyk6IE5ldyBtYWNybyBmb3IgaW5pdGlhbGl6aW5nIHVuaW9uCgltZW1iZXJzIGluIHN0cnVjdHMuCgoJKiBjcHBsZXguYyAocGxhY2VtYXJrZXJfdG9rZW4sIGVvZl90b2tlbik6IFVzZSBVTklPTl9JTklUX1pFUk8uCgoyMDAwLTA3LTA3ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcC50ZXhpOiBVcGRhdGUuCgpGcmkgSnVsICA3IDA3OjQ3OjM1IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGZpbmFsLmMgKGZpbmFsKTogRGV0ZWN0IG91dCBvZiBib3VuZHMgYXJyYXkgYWNjZXNzIHRvCgl0aGUgaW5zbl9sZW5ndGhzIGFycmF5LgoKMjAwMC0wNy0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDAwLTA3LTA3ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcC50ZXhpOiBVcGRhdGUgdG8gbmV3IGxleGVyLgoKMjAwMC0wNy0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdHJhZGNwcC5jOiBOZXcgZmlsZS4KCSogdHJhZGNpZi55OiBOZXcgZmlsZS4KCSogdHJhZGNpZi5jOiBOZXcgZ2VuZXJhdGVkIGZpbGUuCgoJKiBNYWtlZmlsZS5pbjogQWRkIHJ1bGVzIHRvIGJ1aWxkIHRyYWRjcHAubywgdHJhZGNpZi5vLAoJJChzcmNkaXIpL3RyYWRjaWYuYy4gIEFkZCB0cmFkY3BwIHRvIFNUQUdFU1RVRkYgYW5kCglkZXBlbmRlbmNpZXMgb2YgQy4gIEluc3RhbGwgdHJhZGNwcCBmcm9tIGluc3RhbGwtY29tbW9uLCBpbgoJJChsaWJzdWJkaXIpLgoKMjAwMC0wNy0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaW5pdC5jOiBJbmNsdWRlIGNwcGRlZmF1bHQuaC4gIFJlZmVyIHRvCgljcHBfR0NDX0lOQ0xVREVfRElSIGFuZCBjcHBfR0NDX0lOQ0xVREVfRElSX2xlbiwgbm90IGRpcmVjdGx5Cgl0byBHQ0NfSU5DTFVERV9ESVIgYW5kIGl0cyBsZW5ndGguCgkoU0laRV9UWVBFLCBQVFJESUZGX1RZUEUsIFdDSEFSX1RZUEUsCglVU0VSX0xBQkVMX1BSRUZJWCwgUkVHSVNURVJfUFJFRklYLCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlLAoJU1RBTkRBUkRfSU5DTFVERV9ESVIsIFNUQU5EQVJEX0lOQ0xVREVfQ09NUE9ORU5UKTogIE1vdmUgdG8KCWNwcGRlZmF1bHQuaC4KCShpbmNsdWRlX2RlZmF1bHRzX2FycmF5KTogTW92ZSB0byBjcHBkZWZhdWx0LmMuCgoJKiBjcHBkZWZhdWx0Lmg6IE5ldyBmaWxlLgoJKiBjcHBkZWZhdWx0LmM6IE5ldyBmaWxlLgoKCSogTWFrZWZpbGUuaW4gKExJQkNQUF9PQkpTKTogQWRkIGNwcGRlZmF1bHQuby4KCShjcHBpbml0Lm8pOiBEb24ndCBhcHBseSAkKFBSRVBST0NFU1NPUl9ERUZJTkVTKSB0byB0aGlzIGZpbGUuCgkoY3BwZGVmYXVsdC5vKTogTmV3IHJ1bGU7IGFwcGx5ICQoUFJFUFJPQ0VTU09SX0RFRklORVMpIHRvCgl0aGlzIGZpbGUuCgpUaHUgSnVsICA2IDE4OjMwOjM2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiByZWxvYWQuYyAocHVzaF9yZWxvYWQpOiBXaGVuIHNlZWluZyBpZiBjYW4gcmV1c2UgYSByZWdpc3RlciwKCWNoZWNrIGV4dHJhIHJlZ2lzdGVycyBhZ2FpbnN0IHdpZGVzdCBvZiBJTk1PREUgYW5kIE9VVE1PREUuCgoyMDAwLTA3LTA2ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxpYi5jOiAoX2NwcF9wYXJzZV9hc3NlcnRpb24pOiAgUGVyZm9ybSBoYXNoIGxvb2t1cHMKCWJhc2VkIG9uIGZ1bGwgbGVuZ3RoIG9mIHByZWRpY2F0ZS4KCjIwMDAtMDctMDYgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogdGltZXZhci5jOiBbSEFWRV9TWVNfUkVTT1VSQ0VfSF06IEluY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPi4KCVtORUVEX0RFQ0xBUkFUSU9OX0dFVFJVU0FHRV06IERlY2xhcmUgZ2V0cnVzYWdlLgoKMjAwMC0wNy0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBoODMwMC1wcm90by5oOiBGaXggZm9ybWF0dGluZy4KCSogaDgzMDAuYzogTGlrZXdpc2UuCgkqIGg4MzAwLmg6IExpa2V3aXNlLgoKMjAwMC0wNy0wNSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChIQVJEX1JFR05PX01PREVfT0spOiBJZiBGUl9SRUdOT19QLCBkaXNhbGxvdwoJQ0Ntb2RlLgoKMjAwMC0wNy0wNSAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AcG1zYy5jb20+CgoJKiBpbnZva2UudGV4aTogRml4IG1pbm9yIHR5cG9zCgkqIG1kLnRleGk6IEZpeCBtaW5vciB0eXBvcwoKMjAwMC0wNy0wNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKF9jcHBfcGFyc2VfYXNzZXJ0aW9uKTogRml4IGJ1ZmZlciBvdmVycnVuLgoKMjAwMC0wNy0wNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGV4LmM6IERvbid0IGluY2x1ZGUgc3lzL21tYW4uaC4KCShjcHBfcHVzaF9idWZmZXIsIGNwcF9wb3BfYnVmZmVyKTogTW92ZWQgdG8gY3BwbGliLmMuCgoJKiBjcHBsaWIuYzogSW5jbHVkZSBzeXMvbW1hbi5oIGFuZCBvYnN0YWNrLmguCgkoY3BwX3B1c2hfYnVmZmVyKTogTW92ZWQgZnJvbSBjcHBsZXguYzsgYWxsb2NhdGUgYnVmZmVycyBvbiBhbgoJb2JzdGFjay4KCShjcHBfcG9wX2J1ZmZlcik6IE1vdmVkIGZyb20gY3BwbGV4LmM7IGZyZWUgYnVmZmVycyBmcm9tIGFuIG9ic3RhY2suCgkoX2NwcF91bndpbmRfaWZfc3RhY2spOiBOb3cgc3RhdGljLCB1bndpbmRfaWZfc3RhY2suICBEb24ndAoJYm90aGVyIGZyZWVpbmcgaWYgc3RhY2sgZW50cmllcyAodGhleSB3aWxsIGJlIGZyZWVkIHdpdGggdGhlaXIgYnVmZmVyKS4KCShkb19lbmRpZik6IEZyZWUgaWYgc3RhY2sgZW50cmllcyBmcm9tIHRoZSBidWZmZXIgb2JzdGFjay4KCShwdXNoX2NvbmRpdGlvbmFsKTogQWxsb2NhdGUgaWYgc3RhY2sgZW50cmllcyBmcm9tIHRoZSBidWZmZXIgb2JzdGFjay4KCgkoZmluZF9hbnN3ZXIpOiBSZW5hbWUgdG8gX2NwcF9maW5kX2Fuc3dlci4KCShkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogVXBkYXRlLgoKCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSh4b2JuZXcpOiBOZXcgY29udmVuaWVuY2UgbWFjcm8uCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX3JlYWRlcik6IEFkZCBoYXNoX29iIGFuZCBidWZmZXJfb2IgZmllbGRzLgoJVXBkYXRlIGNvbW1lbnRzLgoJKHN0cnVjdCBjcHBfaGFzaG5vZGUpOiBSZW1vdmUgZGlzYWJsZWQgZmllbGQuCgoJKiBjcHBpbml0LmM6IERvbid0IGluY2x1ZGUgaGFzaHRhYi5oIG9yIHNwbGF5LXRyZWUuaC4KCShyZXBvcnRfbWlzc2luZ19ndWFyZCk6IE1vdmVkIHRvIGNwcGZpbGVzLmMuCgkoY3BwX3JlYWRlcl9pbml0KTogQ2FsbCBjcHBfaW5pdF9zdGFja3MsIGNwcF9pbml0X21hY3JvcywKCWNwcF9pbml0X2luY2x1ZGVzLgoJKGNwcF9jbGVhbnVwKTogQ2FsbCBjcHBfY2xlYW51cF9zdGFja3MsIGNwcF9jbGVhbnVwX21hY3JvcywKCWNwcF9jbGVhbnVwX2luY2x1ZGVzLiAgRG9uJ3QgZGVzdHJveSBoYXNodGFiIG9yCglhbGxfaW5jbHVkZV9maWxlcyBoZXJlLgoJKGNwcF9maW5pc2gpOiBVc2UgX2NwcF9yZXBvcnRfbWlzc2luZ19ndWFyZHMuCgoJKiBjcHBmaWxlcy5jIChyZXBvcnRfbWlzc2luZ19ndWFyZCk6IE1vdmVkIGZyb20gY3BwaW5pdC5jLgoJKF9jcHBfaW5pdF9pbmNsdWRlX3RhYmxlKTogUmVuYW1lIF9jcHBfaW5pdF9pbmNsdWRlcy4KCShfY3BwX2NsZWFudXBfaW5jbHVkZXMsIF9jcHBfcmVwb3J0X21pc3NpbmdfZ3VhcmRzKTogTmV3LgoKCSogY3BwZXhwLmMgKHBhcnNlX2Fzc2VydGlvbik6IFVwZGF0ZSBmb3IgbmV3IG5hbWUgb2YKCWZpbmRfYW5zd2VyLgoKCSogTWFrZWZpbGUuaW4gKGNwcGxpYi5vLCBjcHBoYXNoLm8sIGNwcGluaXQubyk6IFVwZGF0ZSBkZXBzLgoKMjAwMC0wNy0wNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKGRvX2lkZW50KTogcy9WU1BBQ0UvRU9GLwoKMjAwMC0wNy0wNSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYzogRml4IHRyaWdyYXBoIHJlcGxhY2VtZW50IHdpdGhpbiBzdHJpbmdzLgoKMjAwMC0wNy0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcnM2MDAwL2FpeC5oIChBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwpOiBGaXggZm9ybWF0IHNwZWNpZmllci4KCgkqIHhjb2Zmb3V0LmMgKGFzc2lnbl90eXBlX251bWJlcik6IENvbnN0aWZ5LgoJKHhjb2Zmb3V0X3NvdXJjZV9maWxlKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuICBEb24ndCBuZWVkbGVzc2x5CgljYXN0IGF3YXkgY29uc3QtbmVzcy4KCjIwMDAtMDctMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZnJhbWUuaCAoZnJhbWVfc3RhdGUpOiBNb3ZlIGJhc2Vfb2Zmc2V0IHRvIGVuZC4KCk1vbiBKdWwgIDMgMjE6MzE6NDMgMjAwMCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZS4KCjIwMDAtMDctMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZpeC1oZWFkZXIuYyAoc3RydWN0IHBhcnRpYWxfcHJvdG8pOiBSZW1vdmUgdW5uZWNlc3NhcnkgZmllbGRzLgoJKHJlY29nbml6ZWRfZXh0ZXJuLCByZWNvZ25pemVkX2Z1bmN0aW9uLCByZWFkX3NjYW5fZmlsZSk6CglVcGRhdGUgZm9yIG5ldyBzY2hlbWUuCgkoY2hlY2tfcHJvdGVjdGlvbik6IEl0J3Mgc3RpbGwgYSBtdWx0aXBsZSBpbmNsdWRlIGd1YXJkIGV2ZW4KCWlmIGl0IGRvZXNuJ3QgYWx3YXlzIHRyaWdnZXIuCgkqIHNjYW4tZGVjbHMuYyAoc2tpcF90b19jbG9zaW5nX2JyYWNlLCBzY2FuX2RlY2xzKTogVXBkYXRlIGZvcgoJbmV3IHNjaGVtZS4KCSogc2Nhbi5oOiBEZWNsYXJlIHN0cnVjdCBjcHBfdG9rZW4uICBVcGRhdGUgcHJvdG90eXBlcy4KCjIwMDAtMDctMDMgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoJICAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCglDb21wbGV0ZSBvdmVyaGF1bCBvZiB0aGUgbGV4ZXIgYW5kIG1hY3JvIGV4cGFuZGVyLgoKCSogY3BwaGFzaC5jIChvYmplY3RfZGVmbiwgZnVuY3RfZGVmbiwgcHVzaF9tYWNyb19leHBhbnNpb24sCglhcmcsIGFyZ2xpc3QsIGFyZ2RhdGEsIHJlZmxpc3QsIGNvbGxlY3Rfb2JqbGlrZV9leHBhbnNpb24sCgljb2xsZWN0X2Z1bmxpa2VfZXhwYW5zaW9uLCBjb2xsZWN0X3BhcmFtcywKCXdhcm5fdHJhZF9zdHJpbmdpZnksIHRyYWRfc3RyaW5naWZ5LCBkdXBsaWNhdGVfYXJnX3AsIGFkZF9wYXQsCgl1bnNhZmVfY2hhcnMsIG1hY2FyZywgY29tcGFyZV9kZWZzLCBzcGVjaWFsX3N5bWJvbCwKCXNjYW5fYXJndW1lbnRzLCBzdHJpbmdpZnksIGZ1bmxpa2VfbWFjcm9leHBhbmQsCglfY3BwX3F1b3RlX3N0cmluZywgbW9udGhuYW1lcyk6IERlbGV0ZS4KCShjcHBfbG9va3VwLCBfY3BwX2ZyZWVfZGVmaW5pdGlvbiwgZHVtcF9mdW5saWtlX21hY3JvLAoJX2NwcF9jcmVhdGVfZGVmaW5pdGlvbiwgX2NwcF9kdW1wX2RlZmluaXRpb24sCglkdW1wX2hhc2hfaGVscGVyKTogQWRqdXN0LgoJKGZpbmRfcGFyYW0sIGNvdW50X3BhcmFtcywgcGFyc2VfZGVmaW5lLCB2YXJfYXJnc19zdHIsCgljaGVja19tYWNyb19yZWRlZmluaXRpb24sIHNhdmVfZXhwYW5zaW9uKTogTmV3LgoKCSogY3BwbGV4LmMgKHNraXBfYmxvY2tfY29tbWVudCwgc2tpcF9saW5lX2NvbW1lbnQsIHBhcnNlX25hbWUsCglwYXJzZV9zdHJpbmcsIG91dHB1dF9saW5lX2NvbW1hbmQsIHRyaWdyYXBoX3JlcGxhY2UsCglsZXhfbGluZSwgY3BwX3B1c2hfYnVmZmVyLCBjcHBfcG9wX2J1ZmZlciwgY3BwX291dHB1dF90b2tlbnMsCgljcHBfc2Nhbl9idWZmZXJfbm9vdXRwdXQsIGNwcF9zY2FuX2J1ZmZlciwgY3BwX2ZyZWVfdG9rbGlzdCwKCWNwcF9pZGNtcCwgX2NwcF9nZXRfZGlyZWN0aXZlX3Rva2VuLCBfY3BwX2luaXRfaW5wdXRfYnVmZmVyLAoJX2NwcF9za2lwX3Jlc3Rfb2ZfbGluZSk6IE1vZGlmeS4KCgkobWF5YmVfbWFjcm9leHBhbmQsIHNraXBfY29tbWVudCwgY29weV9jb21tZW50LCBza2lwX3N0cmluZywKCWZpbmRfcG9zaXRpb24sIG51bGxfd2FybmluZywgYnVtcF9jb2x1bW4sIGV4cGFuZF9uYW1lX3NwYWNlLAoJcGVkYW50aWNfd2hpdGVzcGFjZSwgX2NwcF9vdXRwdXRfbGlzdCwgX2NwcF9zbGljZV90b2tsaXN0LAoJX2NwcF9zcXVlZXplX3Rva2xpc3QsIF9jcHBfc2Nhbl91bnRpbCwgX2NwcF9za2lwX2hzcGFjZSwKCV9jcHBfcGFyc2VfbmFtZSwgX2NwcF9sZXhfdG9rZW4sIGNwcF9nZXRfbm9uX3NwYWNlX3Rva2VuLAoJX2NwcF9wcmVzY2FuKTogRGVsZXRlLgoKCShkdW1wX3BhcmFtX3NwZWxsaW5nLCBwcm9jZXNzX2RpcmVjdGl2ZSwgbGV4X25leHQsCglpc19tYWNyb19kaXNhYmxlZCwgc3RyaW5naWZ5X2FyZywgZXhwYW5kX2NvbnRleHRfc3RhY2ssCglvdXRwdXRfdG9rZW4sIG1ha2Vfc3RyaW5nX3Rva2VuLCBhbGxvY19udW1iZXJfdG9rZW4sCglzcGVjaWFsX3N5bWJvbCwgZHVwbGljYXRlX3Rva2VuLCBtYXliZV9wYXN0ZV93aXRoX25leHQsCgljYW5fcGFzdGUsIHByZXZlbnRfbWFjcm9fZXhwYW5zaW9uLCByZXN0b3JlX21hY3JvX2V4cGFuc2lvbiwKCWdldF90ZW1wX3Rva2VuLCByZWxlYXNlX3RlbXBfdG9rZW5zLCBxdW90ZV9zdHJpbmcsCgl0b2tlbl9uYW1lcywgdG9rZW5fc3BlbGxpbmdzLCBfY3BwX2V4cGFuZF9uYW1lX3NwYWNlLAoJX2NwcF9nbHVlX2hlYWRlcl9uYW1lLCBfY3BwX3Jlc2VydmVfbmFtZV9zcGFjZSwKCWRpZ3JhcGhfc3BlbGxpbmdzLCB0cmlncmFwaF9vaywgc2tpcF93aGl0ZXNwYWNlLCBzYXZlX2NvbW1lbnQsCglwbGFjZW1hcmtlcl90b2tlbiwgZW9mX3Rva2VuLCBjcHBfY29udGV4dCwgbWFjcm9fYXJncywKCWdldF9yYXdfdG9rZW4sIHBhcnNlX2FyZywgcGFyc2VfYXJncywgc2F2ZV90b2tlbiwKCXB1c2hfYXJnX2NvbnRleHQsIHB1c2hfbWFjcm9fY29udGV4dCwgcG9wX2NvbnRleHQsCglkb19wb3BfY29udGV4dCwgZnJlZV9tYWNyb19hcmdzLCBfY3BwX2dldF9saW5lLAoJX2NwcF9ydW5fZGlyZWN0aXZlKTogTmV3LgoKCSogY3BwbGliLmMgKHZhbGlkYXRlX2Vsc2UsIHBhcnNlX2luY2x1ZGUsIHB1c2hfY29uZGl0aW9uYWwsCglwYXNzX3RocnVfZGlyZWN0aXZlLCByZWFkX2xpbmVfbnVtYmVyLCBwYXJzZV9pZmRlZiwKCWRldGVjdF9pZl9ub3RfZGVmaW5lZCwgX2NwcF9jaGVja19kaXJlY3RpdmUsIGRvX2RlZmluZSwKCWRvX3VuZGVmLCBkb19pbmNsdWRlLCBkb19pbXBvcnQsIGRvX2luY2x1ZGVfbmV4dCwgZG9fZXJyb3IsCglkb193YXJuaW5nLCBkb19pZGVudCwgZG9fcHJhZ21hLCBwcmFnbWFfZGlzcGF0Y2gsIGdjY19wcmFnbWFzLAoJdG9wX3ByYWdtYXMsIGRvX3ByYWdtYV9nY2MsIGRvX3ByYWdtYV9pbXBsZW1lbnRhdGlvbiwKCWRvX3ByYWdtYV9wb2lzb24sIGRvX3ByYWdtYV9zeXN0ZW1faGVhZGVyLAoJZG9fcHJhZ21hX2RlcGVuZGVuY3ksIGRvX3NjY3MsIGRvX2lmZGVmLCBkb19pZm5kZWYsIGRvX2Vsc2UsCglkbF9lbGlmLCBkb19lbmRpZiwgX2NwcF91bndpbmRfaWZfc3RhY2ssIGRvX2Fzc2VydCwKCWRvX3VuYXNzZXJ0LCBjcHBfZGVmaW5lLCBjcHBfdW5kZWYsIGNwcF9hc3NlcnQsIGNwcF91bmFzc2VydCwKCWNwcF9kZWZpbmVkKTogVXBkYXRlIGZvciBuZXcgc2NoZW1lLgoJKHN0cnRvdWxfZm9yX2xpbmUsIGdldF9kZWZpbmVfbm9kZSwgZHVtcF9tYWNyb19uYW1lLAoJX2NwcF9jaGVja19saW5lbWFya2VyLCBfY3BwX3BhcnNlX2Fzc2VydGlvbik6IE5ldy4KCShfY3BwX2hhbmRsZV9kaXJlY3RpdmUsIGRvX3ByYWdtYV9kZWZhdWx0KTogRGVsZXRlLgoKCSogY3BwaGFzaC5oIChzdHJ1Y3QgcHJlZGljYXRlKTogTm93IHN0cnVjdCBhbnN3ZXIuCgkoZW51bSBzcGVsbF90eXBlLCBzdHJ1Y3QgdG9rZW5fc3BlbGxpbmcsIHN0cnVjdCBkaXJlY3RpdmUsCglkaXJlY3RpdmVfaGFuZGxlcik6IE5ldy4KCVVwZGF0ZSBwcm90b3R5cGVzLiAgUmVtb3ZlIHVudXNlZCBtYWNyb3MuCgkqIGNwcGxpYi5oOiBVcGRhdGUgcHJvdG90eXBlcy4gIFJlbW92ZSB1bnVzZWQgbWFjcm9zLAoJc3RydWN0dXJlIGRlZmluaXRpb25zLCBhbmQgZmllbGRzLgoKCSogY3BwZXJyb3IuYyAocHJpbnRfY29udGFpbmluZ19maWxlcywgdl9tZXNzYWdlKTogQWRqdXN0LgoJKiBjcHBleHAuYyAocGFyc2VfYXNzZXJ0aW9uLCBsZXgsIHBhcnNlX2VzY2FwZSwKCV9jcHBfcGFyc2VfZXhwcik6IEFkanVzdC4KCSogY3BwZmlsZXMuYyAob3Blbl9pbmNsdWRlX2ZpbGUsIF9jcHBfZXhlY3V0ZV9pbmNsdWRlLAoJX2NwcF9jb21wYXJlX2ZpbGVfZGF0ZSwgY3BwX3JlYWRfZmlsZSwgcmVhZF9pbmNsdWRlX2ZpbGUpOgoJQWRqdXN0LgoJKiBjcHBpbml0LmMgKGR1bXBfc3BlY2lhbF90b19idWZmZXIpOiBEZWxldGUuCgkoYXBwZW5kX2luY2x1ZGVfY2hhaW4sIG1lcmdlX2luY2x1ZGVfY2hhaW5zLCBjcHBfcmVhZGVyX2luaXQsCgljcHBfY2xlYW51cCwgaW5pdGlhbGl6ZV9idWlsdGlucywgYnVpbHRpbl9hcnJheSwgY3BwX3N0YXJ0X3JlYWQsCgljcHBfZmluaXNoLCBoYW5kbGVfb3B0aW9uLCBwcmludF9oZWxwKTogQWRqdXN0LgoJKiBjcHBtYWluLmMgKG1haW4pOiBBZGp1c3QuCgoyMDAwLTA3LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogVXNlIGRvdWJsZSBxdW90ZXMgaW4gZXJyb3IKCW1lc3NhZ2UuCgpNb24gSnVsICAzIDE2OjUzOjQzIDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IFVzZSB2YWxyZWcgaW5zdGVhZAoJb2YgaGFyZF9saWJjYWxsX3ZhbHVlLgoKMjAwMC0wNy0wMyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfbW92ZSk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG8uaDogUHJvdG90eXBlIHJzNjAwMF9lbWl0X21vdmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZzaSk6IFVzZSByczYwMDBfZW1pdF9tb3ZlLgoJKG1vdmhpKTogTGlrZXdpc2UuCgkobW92cWkpOiBMaWtld2lzZS4KCShtb3ZkZik6IExpa2V3aXNlLgoJKG1vdnNmKTogTGlrZXdpc2UuCgkobW92ZGkpOiBMaWtld2lzZS4KCShtb3Z0aSk6IExpa2V3aXNlLgoKCSogZXhwbWVkLmMgKGV4cGFuZF9tdWx0X2hpZ2hwYXJ0KTogVXNlIG9wMSBpbnN0ZWFkIG9mIHdpZGVfb3AxIHdoZW4KCW1vZGUgaW5zdGVhZCBvZiB3aWRlcl9tb2RlIGlzIGJlaW5nIHVzZWQuCgoyMDAwLTA3LTAzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKG1vdnN0cmljdHFpX3hvcik6IFVzZSAncScgY29uc3RyYWludCBpbnN0ZWFkCglvZiAncicuIFVzZSBxX3JlZ3Nfb3BlcmFuZC4KCShhbmRzaV8xKzIpOiBVc2UgcV9yZWdzX29wZXJhbmQuCgoyMDAwLTA3LTAzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGdldF9tZW1vcnlfcnR4KTogQWx3YXlzIHB1dCBpbnRvIGFsaWFzIHNldCAwLgoKMjAwMC0wNy0wMyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBGaXggcG9zdCBpbmNyZW1lbnQgYW5kIHByZSBpbmNyZW1lbnQKCXBlZXBob2xlcyBzbyB0aGF0IHRoZXkgZG8gbm90IGdlbmVyYXRlIFVOUFJFRElDQVRCTEUgb3Bjb2Rlcy4KCShpZSBvbmVzIHdoZXJlIHRoZSBpbmNyZW1lbnQgY2xvYmJlcnMgdGhlIHNvdXJjZS9kZXN0aW5hdGlvbikuCgoyMDAwLTA3LTAxICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dF9hZGpfZnJhbWVfcHRyKTogTWFrZSAiZnJhbWUgcG9pbnRlcgoJY2hhbmdlIHRvbyBiaWcgZm9yIC1tdGlueS1zdGFjayIgYSB3YXJuaW5nLCBpZiBsYXJnZXIgdGhhbiA2My4KCShvdXRfc2V0X3N0YWNrX3B0cik6IENoYW5nZSB0aGUgbG9naWMgc28gLW1uby1pbnRlcnJ1cHRzIGlzCglhbHdheXMgc2FmZSB0byB1c2Ugb24gcG9zc2libGUgZnV0dXJlIGRldmljZXMuCgkoZnVuY3Rpb25fcHJvbG9ndWUpOiBXcml0ZSBTUEggYmVmb3JlIFNQTCwgZm9yIGNvbnNpc3RlbmN5LgoJSWYgaW50ZXJydXB0X2Z1bmNfcCB0cnVlLCB3ZSBrbm93IHdlIGhhdmUgZW5hYmxlZCBpbnRlcnJ1cHRzLgoJKGF2cl9udW1fYXJnX3JlZ3MpOiBOZXcgZnVuY3Rpb24uICBSb3VuZCB1cCB0byBldmVuIG51bWJlciBvZgoJYnl0ZXMgaWYgbm8gLW1wYWNrLWFyZ3Mgb3IgaWYgY2FsbGluZyBhIGxpYmdjYyBmdW5jdGlvbi4KCShmdW5jdGlvbl9hcmcsIGZ1bmN0aW9uX2FyZ19hZHZhbmNlKTogVXNlIGl0LgoJKG91dHB1dF9tb3ZzaXNmLCBhc2hsc2kzX291dCwgYXNocnNpM19vdXQsIGxzaHJzaTNfb3V0KToKCU91dHB1dCAibW92dyIgaWYgYXZhaWxhYmxlLgoJKG91dF90c3RoaSwgb3V0X3RzdHNpLCBhc2hscWkzX291dCwgbHNocnFpM19vdXQpOiBDaGFuZ2UgdXNlcwoJb2YgVEVTVF9IQVJEX1JFR19DTEFTUyBtYWNybyB0byB0ZXN0X2hhcmRfcmVnX2NsYXNzIGZ1bmN0aW9uLgoJKGFzbV9vdXRwdXRfc2VjdGlvbl9uYW1lKTogQWRkIGJsYW5rcyBmb3IgY29uc2lzdGVudCBvdXRwdXQuCgkoZW5jb2RlX3NlY3Rpb25faW5mbyk6IFNldCBUUkVFX1JFQURPTkxZIGZvciBwcm9nbWVtIGRhdGEgdG8KCWF2b2lkIGdhcyB3YXJuaW5ncyBhYm91dCBjaGFuZ2VkIHNlY3Rpb24gYXR0cmlidXRlcy4KCShhdnJfaGFyZF9yZWdub19tb2RlX29rKTogRm9yY2Ugbm9uLVFJbW9kZSBkYXRhIHRvIHN0YXJ0IGluCglldmVuIG51bWJlcmVkIHJlZ2lzdGVycyBvbiBkZXZpY2VzIHdpdGggIm1vdnciLgoJKiBjb25maWcvYXZyL2F2ci5oIChNQVNLXyopOiBEZWZpbmUgYml0cyBmb3IgdGFyZ2V0X2ZsYWdzLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IE1hcmsgaGVscCBzdHJpbmdzIGZvciB0cmFuc2xhdGlvbi4KCUFkZCBuZXcgLW1wYWNrLWFyZ3MgYW5kIC1tZW5oYW5jZWQgc3dpdGNoZXMuCgkoVEFSR0VUX09QVElPTlMpOiBNYXJrIGhlbHAgc3RyaW5ncyBmb3IgdHJhbnNsYXRpb24uCgkocHJvZ21lbV9zZWN0aW9uKTogQWRkIHNlY3Rpb24gYXR0cmlidXRlcy4KCSogY29uZmlnL2F2ci9hdnIubWQgKCptb3ZoaSwgY2FsbF9pbnNuLCBjYWxsX3ZhbHVlX2luc24pOgoJT3V0cHV0ICJtb3Z3IiBpZiBhdmFpbGFibGUuCgkobXVscWkzLCBtdWxxaWhpMywgdW11bHFpaGkzLCBtdWxoaTMsICp0YWJsZWp1bXBfZW5oKToKCU5ldyBwYXR0ZXJucy4KCSogY29uZmlnL2F2ci9saWJnY2MuUyAoX211bHFpMywgX2RpdnFpMyk6IFVwZGF0ZSB0byB0aGUgbmV3CgljYWxsIGNvbnZlbnRpb24gKGFyZ3VtZW50cyBhbGlnbmVkIG9uIGV2ZW4gcmVnaXN0ZXJzKS4KCShfY2xlYW51cCwgX2V4aXQpOiBNYWtlIHdlYWsgc3ltYm9scyBsaWJjIGNhbiBvdmVycmlkZS4KCjIwMDAtMDctMDMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZwLWJpdC5oOiBOZXcgZmlsZS4KCgkqIGZwLWJpdC5jOiBNb3ZlIGNvbW1vbiBjb2RlLCBwcm90b3R5cGVzLCBldGMgaW50byBmcC1iaXQuaC4KCUNvbW1lbnQgI2VuZGlmIHN0YXRlbWVudHMuCgkoX190aGVuYW5fc2YsIF9fdGhlbmFuX2RmKTogQWRkIG1pc3NpbmcgYnJhY2VzIGFyb3VuZCBpbml0aWFsaXplci4KCk1vbiBKdWwgIDMgMDA6MzI6NDcgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZ2NzZS5jIChjb21wdXRlX3ByZV9kYXRhKTogQ29tcHV0ZSBhZV9raWxsIHVzaW5nIG90aGVyIGxvY2FsCglwcm9wZXJ0aWVzIGluc3RlYWQgb2YgY2FsbGluZyBjb21wdXRlX2FlX2tpbGwuCgoJKiBhbGlhcy5jIChpbml0X2FsaWFzX2FuYWx5c2lzKTogRG8gbm90IGNhbGwKCXByb2xvZ3VlX2VwaWxvZ3VlX2NvbnRhaW5zIHVudGlsIGFmdGVyIHJlbG9hZCBoYXMgY29tcGxldGVkLgoKMjAwMC0wNy0wMiAgQmVuamFtaW4gQ2hlbGYgIDxjaGVsZkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uaCAoZ2VucnRsX2JlZ2luX2NvbXBvdW5kX3N0bXQpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoZ2VucnRsX2ZpbmlzaF9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2NvbXBvdW5kX3N0bXQpOiBDaGFuZ2UgdG8gcmV0dXJuIHZvaWQuCgoJKiBjLXNlbWFudGljcy5jIChnZW5ydGxfYmVnaW5fY29tcG91bmRfc3RtdCk6IFJlbW92ZSBmdW5jdGlvbiBhbmQKCW1vdmUgY29kZSBmcm9tIGhlcmUgdG8gLi4uCgkoZ2VucnRsX2NvbXBvdW5kX3N0bXQpOiAuLi4gaGVyZS4KCShnZW5ydGxfZmluaXNoX2NvbXBvdW5kX3N0bXQpOiBSZW1vdmUuCgkoZXhwYW5kX3N0bXQpOiBBZGQgY29tbWVudC4KCjIwMDAtMDctMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2luZGlyZWN0X3JlZik6IFVzZSBDT01QTEVURV9PUl9WT0lEX1RZUEVfUAoJYW5kIFZPSURfVFlQRV9QLgoKMjAwMC0wNy0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBOZXcgZmllbGQgaW5jbHVkZV9kZXB0aC4KCShzdHJ1Y3QgY3BwX3ByaW50ZXIpOiBSZW5hbWUgbGFzdF9ic2QgdG8gbGFzdF9pZC4KCSogY3BwZmlsZXMuYyAocmVhZF9pbmNsdWRlX2ZpbGUpOiBCdW1wIGluY2x1ZGVfZGVwdGguCgkqIGNwcGxleC5jIChjcHBfcG9wX2J1ZmZlcik6IERlY3JlbWVudCBpbmNsdWRlX2RlcHRoLgoJKG91dHB1dF9saW5lX2NvbW1hbmQpOiBPdXRwdXQgY29ycmVjdCAjbGluZSBpZiBhIGhlYWRlcgoJaXMgaW5jbHVkaW5nIGl0c2VsZiBhbmQgaXMgbm90IHByb3RlY3RlZCBhZ2FpbnN0IG11bHRpcGxlIGluY2x1c2lvbi4KCVVzZSBpbmNsdWRlX2RlcHRoIGluc3RlYWQgb2YgYnVmZmVyX3N0YWNrX2RlcHRoLCBsYXN0X2lkIGluc3RlYWQgb2YKCWxhc3RfYnNkLgoJKiBjcHBpbml0LmMgKGNwcF9zdGFydF9yZWFkKTogSW5pdGlhbGl6ZSBsYXN0X2lkIGluc3RlYWQgb2YKCWxhc3RfYnNkLgoKMjAwMC0wNy0wMSAgQmVuamFtaW4gQ2hlbGYgIDxjaGVsZkBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKENfQU5EX09CSkNfT0JKUyk6IEFkZGVkIGMtc2VtYW50aWNzLm8uCgkoYy1zZW1hbnRpY3Mubyk6IE5ldyB0YXJnZXQuCgoJKiBjLWNvbW1vbi5oIChUUkVFX0xBTkdfRkxBR18/KTogQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShnZW5ydGxfZG9fcHVzaGxldmVsKTogTW92ZWQgZnJvbSBjcC9jcC10cmVlLmguCgkoZ2VucnRsX2NsZWFyX291dF9ibG9jayk6IExpa2V3aXNlLgoJKGdlbnJ0bF9nb3RvX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZXhwcl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2RlY2xfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9pZl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3doaWxlX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZG9fc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9yZXR1cm5fc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9mb3Jfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9icmVha19zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2NvbnRpbnVlX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfc2NvcGVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9zd2l0Y2hfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jYXNlX2xhYmVsKTogTGlrZXdpc2UuCgkoZ2VucnRsX2JlZ2luX2NvbXBvdW5kX3N0bXQpOiBMaWtld2lzZS4KCShnZXJudGxfZmluaXNoX2NvbXBvdW5kX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9hc21fc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kZWNsX2NsZWFudXApOiBMaWtld2lzZS4KCShERUNMX0FOT05fVU5JT05fRUxFTVMpOiBMaWtld2lzZS4KCShlbWl0X2xvY2FsX3Zhcik6IExpa2V3aXNlLgoJKG1ha2VfcnRsX2Zvcl9sb2NhbF9zdGF0aWMpOiBMaWtld2lzZS4KCShleHBhbmRfY29uZCk6IExpa2V3aXNlLgoJKGV4cGFuZF9zdG10KTogTGlrZXdpc2UuCgkoY19leHBhbmRfcmV0dXJuKTogTGlrZXdpc2UuCgkoY19leHBhbmRfc3RhcnRfY2FzZSk6IExpa2V3aXNlLgoJKGRvX2Nhc2UpOiBMaWtld2lzZS4KCShDT01QT1VORF9TVE1UX05PX1NDT1BFKTogTGlrZXdpc2UuCgkoY19leHBhbmRfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuCgkoTkVXX0ZPUl9TQ09QRV9QKTogTmV3IG1hY3JvLgoJKGV4cGFuZF9leHByX3N0bXRfZm4pOiBOZXcgdHlwZS4KCgkoc2V0X2N1cnJlbnRfZnVuY3Rpb25fbmFtZV9kZWNsYXJlZCk6IExpa2V3aXNlLgoJKGN1cnJlbnRfZnVuY3Rpb25fbmFtZV9kZWNsYXJlZCk6IExpa2V3aXNlLgoJKGxhbmdfZXhwYW5kX3N0bXQpOiBMaWtld2lzZS4KCShzdG10c19hcmVfZnVsbF9leHByc19wKTogTGlrZXdpc2UuCgkoYW5vbl9hZ2dyX3R5cGVfcCk6IExpa2V3aXNlLgoJKGxhbmdfZXhwYW5kX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2Nhc2VfbGFiZWwpOiBMaWtld2lzZS4KCgkqIGMtZGVjbC5jIChsYW5nX2V4cGFuZF9leHByX3N0bXQpOiBJbml0aWFsaXplLgoJKHN0bXRzX2FyZV9mdWxsX2V4cHJzX3ApOiBEZWZpbmUuCgkoY3VycmVudF9mdW5jdGlvbl9uYW1lX2RlY2xhcmVkKTogTGlrZXdpc2UuCgkoZG9fY2FzZSk6IExpa2V3aXNlLgoJKGxhbmdfZXhwYW5kX3N0bXQpOiBMaWtld2lzZS4KCShzZXRfY3VycmVudF9mdW5jdGlvbl9uYW1lX2RlY2xhcmVkKTogTGlrZXdpc2UuCgkoYW5vbl9hZ2dyX3R5cGVfcCk6IExpa2V3aXNlLgoKCSogYy1zZW1hbnRpY3MuYzogTmV3IGZpbGUuCgkoZXhwYW5kX2NvbmQpOiBNb3ZlZCBmcm9tIGNwL3NlbWFudGljcy5jLgoJKGdlbnJ0bF9kb19wdXNobGV2ZWwpOiBMaWtld2lzZS4KCShnZW5ydGxfY2xlYXJfb3V0X2Jsb2NrKTogTGlrZXdpc2UuCgkoZ2VucnRsX2dvdG9fc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9leHByX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2lmX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfd2hpbGVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kb19zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3JldHVybl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2Zvcl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2JyZWFrX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfY29udGludWVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9zY29wZV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3N3aXRjaF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2Nhc2VfbGFiZWwpOiBMaWtld2lzZS4KCShnZW5ydGxfYmVnaW5fY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9maW5pc2hfY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2FzbV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2RlY2xfY2xlYW51cCk6IExpa2V3aXNlLgoJKG1ha2VfcnRsX2Zvcl9sb2NhbF9zdGF0aWMpOiBNb3ZlZCBmcm9tIGNwL2RlY2wuYy4KCShlbWl0X2xvY2FsX3Zhcik6IExpa2V3aXNlLgoJKGV4cGFuZF9zdG10KTogRGVmaW5lLgoKCSogYy10cmVlLmg6IChjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiBNb3ZlZCB0byBjLWNvbW1vbi5oLgoJKGNfZXhwYW5kX3JldHVybik6IExpa2V3aXNlLgoJKGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBMaWtld2lzZS4KCjIwMDAtMDctMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHN5bWJvbGljX29wZXJhbmQpOiBSZWplY3QgQ09OU1QgZXhwcmVzc2lvbnMKCXdpdGggdGhlIGxvdyAxMyBiaXRzIHNldC4KCShtb3ZlX29wZXJhbmQpOiBDaGVjayBmb3IgQ09OU1R8U1lNQk9MX1JFRnxMQUJFTF9SRUYgZGlyZWN0bHkuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdmRpKTogTGlrZXdpc2UuICBFeHBhbmQgYSBDT05TVCB3aXRoIG9uZQoJb2YgdGhlIGxvdyAxMyBiaXRzIGludG8gYSBDT05TVCBwbHVzIGFuIGFkZGRpMy4KCShsb2FkX3N5bXB0cik6IFNldCBSVFhfVU5DSEFOR0lOR19QLgoKU2VlIENoYW5nZUxvZy4zIGZvciBlYXJsaWVyIGNoYW5nZXMuCg==