Skyhigh Security Policy Code Function Reference
- Last updated
- Save as PDF
×
A searchable reference of MOWGLI (Policy Code) functions, including each function's signature, parameters, return type, and a code example.
W3sicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIkFwcGVuZHMgdGhlIHNlY29uZCBzdHJpbmcgYXJndW1lbnQgdG8gdGhlIGZpcnN0IGFuZCByZXR1cm5zIHRoZSBjb25jYXRlbmF0ZWQgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHN0cjEgPSBcIkhlbGxvXCJcblNUUklORyBzdHIyID0gXCJXb3JsZFwiXG5TVFJJTkcgcmVzdWx0ID0gQXBwZW5kKHN0cjEsIHN0cjIpXG4vLyBUaGlzIHNob3VsZCBwcmludCBcIkhlbGxvV29ybGRcIiIsICJuYW1lIjogIkFwcGVuZCAoU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNvbmNhdGVuYXRlZCBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgZmlyc3Qgc3RyaW5nLlxuMi4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gYXBwZW5kIHRvIHRoZSBmaXJzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJKU09OIiwgImRlc2NyaXB0aW9uIjogIkFwcGVuZHMgdGhlIHNlY29uZCBKU09OIGFyZ3VtZW50IHRvIHRoZSBmaXJzdCBKU09OIGFycmF5IGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgYXJyYXkuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIGEgSlNPTiBhcnJheVxuSlNPTiBqc29uQXJyYXkgPSBKU09OLlBhcnNlKFwiW11cIilcblxuLy8gQ3JlYXRlIGEgSlNPTiBvYmplY3QgdG8gYXBwZW5kXG5KU09OIGpzb25PYmplY3QxID0gSlNPTi5QYXJzZShcIntcXFwia2V5MVxcXCI6IFxcXCJ2YWx1ZTFcXFwifVwiKVxuSlNPTiBqc29uT2JqZWN0MiA9IEpTT04uUGFyc2UoXCJ7XFxcImtleTJcXFwiOiBcXFwidmFsdWUyXFxcIn1cIilcblxuLy8gQXBwZW5kIHRoZSBKU09OIG9iamVjdHMgdG8gdGhlIEpTT04gYXJyYXlcbmpzb25BcnJheSA9IEFycmF5QXBwZW5kKGpzb25BcnJheSwganNvbk9iamVjdDEpXG5qc29uQXJyYXkgPSBBcnJheUFwcGVuZChqc29uQXJyYXksIGpzb25PYmplY3QyKVxuXG4vLyBUaGlzIGxpbmUgd2FzIHByZXZpb3VzbHkgdXNlZCB0byBwcmludCB0aGUgdXBkYXRlZCBKU09OIGFycmF5IHRvIHRoZSBjb25zb2xlXG4vLyBqc29uQXJyYXkuVG9TdHJpbmcoKSIsICJuYW1lIjogIkFycmF5QXBwZW5kIChKU09OLCBKU09OKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSB1cGRhdGVkIEpTT04gYXJyYXksIGEgY2xvbmUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbnVsbCwgb3IgYW4gZW1wdHkgYXJyYXkgaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIG51bGwgb3Igbm90IGEgSlNPTiBhcnJheS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgSlNPTiBhcnJheSB0byBhcHBlbmQgdG8uXG4yLiBgSlNPTmA6IFRoZSBKU09OIHZhbHVlIHRvIGFwcGVuZCB0byB0aGUgZmlyc3QgYXJndW1lbnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGNoYXJhY3RlciBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcuIElmIHRoZSBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBhbmQgYSB3YXJuaW5nIGlzIHRyaWdnZXJlZC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBleGFtcGxlU3RyaW5nID0gXCJIZWxsbywgV29ybGQhXCJcbk5VTUJFUiBwb3NpdGlvbiA9IDdcblNUUklORyBjaGFyYWN0ZXJBdFBvc2l0aW9uID0gQXQoZXhhbXBsZVN0cmluZywgcG9zaXRpb24pXG5cbi8vIFRoZSBjaGFyYWN0ZXIgYXQgcG9zaXRpb24gNyBpczogY2hhcmFjdGVyQXRQb3NpdGlvbiIsICJuYW1lIjogIkF0IChTVFJJTkcsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHNpbmdsZSBjaGFyYWN0ZXIgKGFzIGEgc3RyaW5nKSBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGluZGV4IGlzIG91dCBvZiByYW5nZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gYWNjZXNzLlxuMi4gYE5VTUJFUmA6IFRoZSB6ZXJvLWJhc2VkIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgdG8gcmV0cmlldmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiREFUQVJFRiIsICJkZXNjcmlwdGlvbiI6ICJDb21wcmVzc2VzIGJpbmFyeSBkYXRhIHVzaW5nIHRoZSBkZWZsYXRlIGFsZ29yaXRobS4iLCAiY29kZV9leGFtcGxlIjogIkRBVEFSRUYgc291cmNlUGF5bG9hZCA9IFRvRGF0YVJlZihcIlNhbXBsZSBmaWxlIGNvbnRlbnQgdG8gY29tcHJlc3MgYmVmb3JlIHVwbG9hZFwiKVxuREFUQVJFRiBjb21wcmVzc2VkUGF5bG9hZCA9IENvbXByZXNzLkRlZmxhdGUoc291cmNlUGF5bG9hZClcblNUUklORyBjb21wcmVzc2VkUGF5bG9hZEJhc2U2NCA9IEVuY29kaW5nLkJhc2U2NEVuY29kZShjb21wcmVzc2VkUGF5bG9hZCkiLCAibmFtZSI6ICJDb21wcmVzcy5EZWZsYXRlIChEQVRBUkVGKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBjb21wcmVzc2VkIGRhdGEgYXMgYSBgREFUQVJFRmAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBEQVRBUkVGYDogVGhlIGJpbmFyeSBkYXRhIHRvIGNvbXByZXNzLiJ9LCB7InJldHVybl90eXBlIjogIkRBVEFSRUYiLCAiZGVzY3JpcHRpb24iOiAiQ29tcHJlc3NlcyBiaW5hcnkgZGF0YSB1c2luZyB0aGUgZGVmbGF0ZSBhbGdvcml0aG0uIiwgImNvZGVfZXhhbXBsZSI6ICJEQVRBUkVGIHNvdXJjZURhdGEgPSBcIlBPU1QgL2FwaS91cGxvYWQgcGF5bG9hZFwiXG5OVU1CRVIgY29tcHJlc3Npb25MZXZlbCA9IDZcbkRBVEFSRUYgY29tcHJlc3NlZERhdGEgPSBDb21wcmVzcy5EZWZsYXRlKHNvdXJjZURhdGEsIGNvbXByZXNzaW9uTGV2ZWwpIiwgIm5hbWUiOiAiQ29tcHJlc3MuRGVmbGF0ZSAoREFUQVJFRiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBjb21wcmVzc2VkIGRhdGEgYXMgYSBgREFUQVJFRmAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBEQVRBUkVGYDogVGhlIGJpbmFyeSBkYXRhIHRvIGNvbXByZXNzLlxuMi4gYE5VTUJFUmA6IFRoZSBjb21wcmVzc2lvbiBsZXZlbC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiQ29tcHJlc3NlcyB0ZXh0IHVzaW5nIHRoZSBkZWZsYXRlIGFsZ29yaXRobS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBzb3VyY2VUZXh0ID0gXCJzZXNzaW9uX2lkPWFiYzEyMyZ1c2VyPWpzbWl0aCZhY3Rpb249ZG93bmxvYWRcIlxuU1RSSU5HIGNvbXByZXNzZWRQYXlsb2FkID0gQ29tcHJlc3MuRGVmbGF0ZShzb3VyY2VUZXh0KVxuLy8gY29tcHJlc3NlZFBheWxvYWQgbm93IGNvbnRhaW5zIHRoZSBkZWZsYXRlLWNvbXByZXNzZWQgdGV4dCBwYXlsb2FkIiwgIm5hbWUiOiAiQ29tcHJlc3MuRGVmbGF0ZSAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBjb21wcmVzc2VkIHRleHQgYXMgYSBgU1RSSU5HYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSB0ZXh0IHRvIGNvbXByZXNzLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJDb21wcmVzc2VzIHRleHQgdXNpbmcgdGhlIGRlZmxhdGUgYWxnb3JpdGhtLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHNvdXJjZVRleHQgPSBcInVzZXI9YWxpY2UmYWN0aW9uPXVwbG9hZCZzdGF0dXM9c3VjY2Vzc1wiXG5OVU1CRVIgY29tcHJlc3Npb25MZXZlbCA9IDZcblNUUklORyBjb21wcmVzc2VkUGF5bG9hZCA9IENvbXByZXNzLkRlZmxhdGUoc291cmNlVGV4dCwgY29tcHJlc3Npb25MZXZlbCkiLCAibmFtZSI6ICJDb21wcmVzcy5EZWZsYXRlIChTVFJJTkcsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY29tcHJlc3NlZCB0ZXh0IGFzIGEgYFNUUklOR2AuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgdGV4dCB0byBjb21wcmVzcy5cbjIuIGBOVU1CRVJgOiBUaGUgY29tcHJlc3Npb24gbGV2ZWwuIn0sIHsicmV0dXJuX3R5cGUiOiAiREFUQVJFRiIsICJkZXNjcmlwdGlvbiI6ICJEZWNvbXByZXNzZXMgZ3ppcC1jb21wcmVzc2VkIGJpbmFyeSBkYXRhLiIsICJjb2RlX2V4YW1wbGUiOiAiREFUQVJFRiBnemlwQm9keSA9IHJlcXVlc3QuR2V0Qm9keSgpXG5EQVRBUkVGIHBsYWluQm9keSA9IENvbXByZXNzLkdVbnppcChnemlwQm9keSlcbnJlcXVlc3QuU2V0Qm9keShwbGFpbkJvZHkpIiwgIm5hbWUiOiAiQ29tcHJlc3MuR1VuemlwIChEQVRBUkVGKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBkZWNvbXByZXNzZWQgZGF0YSBhcyBhIGBEQVRBUkVGYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYERBVEFSRUZgOiBUaGUgZ3ppcC1jb21wcmVzc2VkIGJpbmFyeSBkYXRhIHRvIGRlY29tcHJlc3MuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIkRlY29tcHJlc3NlcyBnemlwLWNvbXByZXNzZWQgdGV4dCBwYXlsb2FkLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGNvbXByZXNzZWRQYXlsb2FkID0gXCI8Z3ppcC1jb21wcmVzc2VkLWxvZy1vci1oZWFkZXItdmFsdWU+XCJcblNUUklORyBkZWNvbXByZXNzZWRQYXlsb2FkID0gQ29tcHJlc3MuR1VuemlwKGNvbXByZXNzZWRQYXlsb2FkKVxuU1RSSU5HIGF1ZGl0TWVzc2FnZSA9IFwiRGVjb2RlZCBwYXlsb2FkOiBcIiArIGRlY29tcHJlc3NlZFBheWxvYWQiLCAibmFtZSI6ICJDb21wcmVzcy5HVW56aXAgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZGVjb21wcmVzc2VkIHRleHQgYXMgYSBgU1RSSU5HYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBnemlwLWNvbXByZXNzZWQgdGV4dCB0byBkZWNvbXByZXNzLiJ9LCB7InJldHVybl90eXBlIjogIkRBVEFSRUYiLCAiZGVzY3JpcHRpb24iOiAiQ29tcHJlc3NlcyBiaW5hcnkgZGF0YSB1c2luZyBnemlwLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ29tcHJlc3MuR1ppcChEQVRBUkVGKSAtPiBEQVRBUkVGXG5EQVRBUkVGIHJlcG9ydEJvZHkgPSByZXF1ZXN0X2JvZHlcbkRBVEFSRUYgZ3ppcHBlZFJlcG9ydEJvZHkgPSBDb21wcmVzcy5HWmlwIChyZXBvcnRCb2R5KSIsICJuYW1lIjogIkNvbXByZXNzLkdaaXAgKERBVEFSRUYpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGd6aXAtY29tcHJlc3NlZCBkYXRhIGFzIGEgYERBVEFSRUZgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgREFUQVJFRmA6IFRoZSBiaW5hcnkgZGF0YSB0byBjb21wcmVzcy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJEQVRBUkVGIiwgImRlc2NyaXB0aW9uIjogIkNvbXByZXNzZXMgYmluYXJ5IGRhdGEgdXNpbmcgZ3ppcC4iLCAiY29kZV9leGFtcGxlIjogIkRBVEFSRUYgc291cmNlRGF0YSA9IFRvRGF0YVJlZihcIlBPU1QgL3VwbG9hZCBIVFRQLzEuMVxcclxcbkhvc3Q6IGV4YW1wbGUuY29tXFxyXFxuXFxyXFxuZmlsZS1ieXRlc1wiKVxuTlVNQkVSIGNvbXByZXNzaW9uTGV2ZWwgPSA2XG5EQVRBUkVGIGd6aXBwZWREYXRhID0gQ29tcHJlc3MuR1ppcChzb3VyY2VEYXRhLCBjb21wcmVzc2lvbkxldmVsKVxuU1RSSU5HIGd6aXBwZWRQcmV2aWV3ID0gRW5jb2RpbmcuQmFzZTY0RW5jb2RlKGd6aXBwZWREYXRhKSIsICJuYW1lIjogIkNvbXByZXNzLkdaaXAgKERBVEFSRUYsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZ3ppcC1jb21wcmVzc2VkIGRhdGEgYXMgYSBgREFUQVJFRmAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBEQVRBUkVGYDogVGhlIGJpbmFyeSBkYXRhIHRvIGNvbXByZXNzLlxuMi4gYE5VTUJFUmA6IFRoZSBjb21wcmVzc2lvbiBsZXZlbC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiQ29tcHJlc3NlcyB0ZXh0IHVzaW5nIGd6aXAuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgcmVwb3J0Qm9keSA9IFwidXNlcj1qc21pdGg7YWN0aW9uPWRvd25sb2FkO3N0YXR1cz1hbGxvd2VkXCJcblNUUklORyBnemlwUGF5bG9hZCA9IENvbXByZXNzLkdaaXAocmVwb3J0Qm9keSlcbi8vIGd6aXBQYXlsb2FkIG5vdyBjb250YWlucyB0aGUgZ3ppcC1jb21wcmVzc2VkIHJlcG9ydCB0ZXh0IiwgIm5hbWUiOiAiQ29tcHJlc3MuR1ppcCAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBnemlwLWNvbXByZXNzZWQgdGV4dCBhcyBhIGBTVFJJTkdgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHRleHQgdG8gY29tcHJlc3MuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIkNvbXByZXNzZXMgdGV4dCB1c2luZyBnemlwLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHJlcG9ydFRleHQgPSBcIkRhaWx5IGluY2lkZW50IHN1bW1hcnk6IDEyIHN1c3BpY2lvdXMgZG93bmxvYWRzIGJsb2NrZWQuXCJcbk5VTUJFUiBjb21wcmVzc2lvbkxldmVsID0gNlxuU1RSSU5HIGd6aXBQYXlsb2FkID0gQ29tcHJlc3MuR1ppcChyZXBvcnRUZXh0LCBjb21wcmVzc2lvbkxldmVsKVxuLy8gZ3ppcFBheWxvYWQgbm93IGNvbnRhaW5zIHRoZSBnemlwLWNvbXByZXNzZWQgcmVwb3J0IHRleHQiLCAibmFtZSI6ICJDb21wcmVzcy5HWmlwIChTVFJJTkcsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZ3ppcC1jb21wcmVzc2VkIHRleHQgYXMgYSBgU1RSSU5HYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSB0ZXh0IHRvIGNvbXByZXNzLlxuMi4gYE5VTUJFUmA6IFRoZSBjb21wcmVzc2lvbiBsZXZlbC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJEQVRBUkVGIiwgImRlc2NyaXB0aW9uIjogIkRlY29tcHJlc3NlcyBkZWZsYXRlLWNvbXByZXNzZWQgYmluYXJ5IGRhdGEuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgY29tcHJlc3NlZEJvZHlCNjQgPSBcImVKenpTTTNKeVZjb3p5L0tTUUVBR2dzRVhRPT1cIlxuREFUQVJFRiBjb21wcmVzc2VkQm9keSA9IEVuY29kaW5nLkRhdGFSZWZCYXNlNjREZWNvZGUoY29tcHJlc3NlZEJvZHlCNjQpXG5EQVRBUkVGIHVuY29tcHJlc3NlZEJvZHkgPSBDb21wcmVzcy5JbmZsYXRlKGNvbXByZXNzZWRCb2R5KVxuU1RSSU5HIGJvZHlUZXh0ID0gVG9TdHJpbmcodW5jb21wcmVzc2VkQm9keSkiLCAibmFtZSI6ICJDb21wcmVzcy5JbmZsYXRlIChEQVRBUkVGKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBkZWNvbXByZXNzZWQgZGF0YSBhcyBhIGBEQVRBUkVGYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYERBVEFSRUZgOiBUaGUgZGVmbGF0ZS1jb21wcmVzc2VkIGJpbmFyeSBkYXRhIHRvIGRlY29tcHJlc3MuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIkRlY29tcHJlc3NlcyBkZWZsYXRlLWNvbXByZXNzZWQgdGV4dCBwYXlsb2FkLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGNvbXByZXNzZWRQYXlsb2FkID0gXCJlSnlyVmtyTHoxZXlVa3BLTEZLcUJRQWRlZ1EwXCJcblNUUklORyBwYWdlVGV4dCA9IENvbXByZXNzLkluZmxhdGUoY29tcHJlc3NlZFBheWxvYWQpXG5cbkJPT0xFQU4gaGFzV2VsY29tZUJhbm5lciA9IEZpbmQocGFnZVRleHQsIFwiV2VsY29tZVwiKSAhPSAtMVxuLy8gaGFzV2VsY29tZUJhbm5lciBub3cgZXF1YWxzIFRSVUUiLCAibmFtZSI6ICJDb21wcmVzcy5JbmZsYXRlIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGRlY29tcHJlc3NlZCB0ZXh0IGFzIGEgYFNUUklOR2AuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgZGVmbGF0ZS1jb21wcmVzc2VkIHRleHQgdG8gZGVjb21wcmVzcy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIkNoZWNrcyB3aGV0aGVyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gbGlzdCBjb250YWlucyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgdGhlIGxpc3Qgb2YgcmVndWxhciBleHByZXNzaW9ucyBieSBuYW1lXG5SZWdFeEpTaS5MaXN0IHJlZ2V4TGlzdCA9IE1XRy5SZWdleExpc3RCeU5hbWUoXCJleGFtcGxlX3JlZ2V4X2xpc3RcIilcblxuLy8gR2V0IHRoZSBjdXJyZW50IFVSTFxuTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5cbi8vIENoZWNrIGlmIHRoZSBjdXJyZW50IFVSTCBtYXRjaGVzIGFueSByZWdleCBpbiB0aGUgbGlzdFxuSUYgQ29udGFpbnMocmVnZXhMaXN0LCBjdXJyZW50VXJsKSBUSEVOIHtcbiAgICAvLyBJZiBhIG1hdGNoIGlzIGZvdW5kLCBibG9jayB0aGUgcmVxdWVzdFxuICAgIE1XRy5CbG9jayhcIlVSTCBtYXRjaGVzIGEgYmxvY2tlZCBwYXR0ZXJuXCIpXG59IEVMU0Uge1xuICAgIC8vIElmIG5vIG1hdGNoIGlzIGZvdW5kLCBhbGxvdyB0aGUgcmVxdWVzdFxuICAgIE1XRy5BbGxvdyhcIlVSTCBkb2VzIG5vdCBtYXRjaCBhbnkgYmxvY2tlZCBwYXR0ZXJuXCIpXG59IiwgIm5hbWUiOiAiQ29udGFpbnMgKFJlZ0V4SlNpLkxpc3QsIFJlZ0V4SlNpKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgcmVndWxhciBleHByZXNzaW9uIGxpc3QgY29udGFpbnMgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbiwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaS5MaXN0YDogTGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zIHRvIGNoZWNrLlxuMi4gYFJlZ0V4SlNpYDogUmVndWxhciBleHByZXNzaW9uIHRvIGxvb2sgZm9yLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGxpc3QgY29udGFpbnMgYW4gZW50cnkgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBkb21haW4gYW5kIG1lZGlhIHR5cGUuIiwgImNvZGVfZXhhbXBsZSI6ICJVQ0UuRmlsZVRyYW5zZmVyQ29udHJvbExpc3QgYWxsb3dlZEZpbGVUeXBlcyA9IFtcIkFsbG93ZWRGaWxlVHlwZXNMaXN0XCJdXG5TVFJJTkcgZmlsZU5hbWUgPSBcImV4YW1wbGUucGRmXCJcbk1lZGlhVHlwZSBmaWxlVHlwZSA9IFwiYXBwbGljYXRpb24vcGRmXCJcblxuSUYgYWxsb3dlZEZpbGVUeXBlcy5Db250YWlucyhmaWxlTmFtZSwgZmlsZVR5cGUpIFRIRU4ge1xuICAgIC8vIEZpbGUgdHJhbnNmZXIgaXMgYWxsb3dlZC5cbiAgICBNV0cuQWxsb3coXCJGaWxlIHRyYW5zZmVyIGFsbG93ZWQgYnkgcG9saWN5XCIpXG59IEVMU0Uge1xuICAgIC8vIEZpbGUgdHJhbnNmZXIgaXMgbm90IGFsbG93ZWQuXG4gICAgTVdHLkJsb2NrKFwiRmlsZSB0cmFuc2ZlciBibG9ja2VkIGJ5IHBvbGljeVwiKVxufSIsICJuYW1lIjogIkNvbnRhaW5zIChVQ0UuRmlsZVRyYW5zZmVyQ29udHJvbExpc3QsIFNUUklORywgTWVkaWFUeXBlKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgbGlzdCBjb250YWlucyBhbiBlbnRyeSBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIGRvbWFpbiBhbmQgbWVkaWEgdHlwZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBVQ0UuRmlsZVRyYW5zZmVyQ29udHJvbExpc3RgOiBUaGUgbGlzdCB0byBjaGVjay5cbjIuIGBTVFJJTkdgOiBUaGUgZG9tYWluIHRvIHNlYXJjaCBmb3IuXG4zLiBgTWVkaWFUeXBlYDogVGhlIG1lZGlhIHR5cGUgdG8gc2VhcmNoIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIkNoZWNrcyB3aGV0aGVyIHRoZSBsaXN0IGNvbnRhaW5zIGFuIGVudHJ5IG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgZG9tYWluIGFuZCBhbnkgb2YgdGhlIGdpdmVuIG1lZGlhIHR5cGVzLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBkb21haW4gdG8gY2hlY2tcblNUUklORyBkb21haW4gPSBcImV4YW1wbGUuY29tXCJcblxuLy8gRGVmaW5lIHRoZSBtZWRpYSB0eXBlcyB0byBjaGVjayBhZ2FpbnN0XG5WRUNUT1I8TWVkaWFUeXBlPiBtZWRpYVR5cGVzID0gTWVkaWFUeXBlLlBERiwgTWVkaWFUeXBlLkRPQ1gsIE1lZGlhVHlwZS5YTFNYXG5cbi8vIERlZmluZSB0aGUgZmlsZSB0cmFuc2ZlciBjb250cm9sIGxpc3RcblVDRS5GaWxlVHJhbnNmZXJDb250cm9sTGlzdCBmaWxlVHJhbnNmZXJMaXN0ID0gW1wiZXhhbXBsZV9maWxlX3RyYW5zZmVyX2xpc3RcIl1cblxuLy8gQ2hlY2sgaWYgdGhlIGxpc3QgY29udGFpbnMgdGhlIHNwZWNpZmllZCBkb21haW4gYW5kIGFueSBvZiB0aGUgbWVkaWEgdHlwZXNcbklGIENvbnRhaW5zKGZpbGVUcmFuc2Zlckxpc3QsIGRvbWFpbiwgbWVkaWFUeXBlcykgVEhFTiB7XG4gICAgLy8gVGhlIGRvbWFpbiBhbmQgbWVkaWEgdHlwZSBjb21iaW5hdGlvbiBpcyBmb3VuZCBpbiB0aGUgZmlsZSB0cmFuc2ZlciBjb250cm9sIGxpc3QuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBkb21haW4gYW5kIG1lZGlhIHR5cGUgY29tYmluYXRpb24gaXMgTk9UIGZvdW5kIGluIHRoZSBmaWxlIHRyYW5zZmVyIGNvbnRyb2wgbGlzdC5cbn0iLCAibmFtZSI6ICJDb250YWlucyAoVUNFLkZpbGVUcmFuc2ZlckNvbnRyb2xMaXN0LCBTVFJJTkcsIFZFQ1RPUjxNZWRpYVR5cGU+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgbGlzdCBjb250YWlucyBhbiBlbnRyeSBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIGRvbWFpbiBhbmQgYW55IG9mIHRoZSBnaXZlbiBtZWRpYSB0eXBlcywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBVQ0UuRmlsZVRyYW5zZmVyQ29udHJvbExpc3RgOiBUaGUgbGlzdCB0byBzZWFyY2ggaW4uXG4yLiBgU1RSSU5HYDogVGhlIGRvbWFpbiB0byBsb29rIGZvci5cbjMuIGBWRUNUT1I8TWVkaWFUeXBlPmA6IFRoZSBtZWRpYSB0eXBlcyB0byBjaGVjayBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiB2ZWN0b3IgY29udGFpbnMgdGhlIGdpdmVuIGBNZWRpYVR5cGVgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgVkVDVE9SIG9mIE1lZGlhVHlwZVxuVkVDVE9SPE1lZGlhVHlwZT4gbWVkaWFUeXBlcyA9IE1lZGlhVHlwZShcImltYWdlL2pwZWdcIiksIE1lZGlhVHlwZShcImltYWdlL3BuZ1wiKSwgTWVkaWFUeXBlKFwiYXBwbGljYXRpb24vcGRmXCIpXG5cbi8vIERlZmluZSB0aGUgTWVkaWFUeXBlIHRvIGNoZWNrIGZvclxuTWVkaWFUeXBlIHRhcmdldFR5cGUgPSBNZWRpYVR5cGUoXCJpbWFnZS9wbmdcIilcblxuLy8gQ2hlY2sgaWYgdGhlIHRhcmdldFR5cGUgaXMgaW4gdGhlIG1lZGlhVHlwZXMgdmVjdG9yXG5JRiBDb250YWlucyhtZWRpYVR5cGVzLCB0YXJnZXRUeXBlKSBUSEVOIHtcbiAgICAvLyBUaGUgbWVkaWEgdHlwZSBpbWFnZS9wbmcgaXMgcHJlc2VudCBpbiB0aGUgbGlzdC5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIG1lZGlhIHR5cGUgaW1hZ2UvcG5nIGlzIG5vdCBwcmVzZW50IGluIHRoZSBsaXN0LlxufSIsICJuYW1lIjogIkNvbnRhaW5zIChWRUNUT1I8TWVkaWFUeXBlPiwgTWVkaWFUeXBlKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgdmVjdG9yIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgYE1lZGlhVHlwZWAsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1lZGlhVHlwZT5gOiBBIHZlY3RvciBvZiBNZWRpYVR5cGVzIHRvIHNlYXJjaC5cbjIuIGBNZWRpYVR5cGVgOiBBIE1lZGlhVHlwZSB0byBzZWFyY2ggZm9yLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiB2ZWN0b3IgY29udGFpbnMgdGhlIGdpdmVuIGBNV0cuSG9zdEFuZENlcnRpZmljYXRlYC4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSBhIFZFQ1RPUiBvZiBNV0cuSG9zdEFuZENlcnRpZmljYXRlXG5WRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4gdHJ1c3RlZEhvc3RzID0gW1widHJ1c3RlZF9ob3N0c19saXN0XCJdXG5cbi8vIENyZWF0ZSBhbiBNV0cuSG9zdEFuZENlcnRpZmljYXRlIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcmVxdWVzdFxuTVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZSBjdXJyZW50SG9zdCA9IE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGUoKVxuXG4vLyBDaGVjayBpZiB0aGUgY3VycmVudCBob3N0IGlzIGluIHRoZSBsaXN0IG9mIHRydXN0ZWQgaG9zdHNcbklGIENvbnRhaW5zKHRydXN0ZWRIb3N0cywgY3VycmVudEhvc3QpIFRIRU4ge1xuICAgIC8vIFRoZSBjdXJyZW50IGhvc3QgaXMgdHJ1c3RlZC5cbiAgICBNV0cuQWxsb3coXCJUcnVzdGVkIEhvc3RcIilcbn0gRUxTRSB7XG4gICAgLy8gVGhlIGN1cnJlbnQgaG9zdCBpcyBub3QgdHJ1c3RlZC5cbiAgICBNV0cuQmxvY2soXCJVbnRydXN0ZWQgSG9zdFwiKVxufSIsICJuYW1lIjogIkNvbnRhaW5zIChWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4sIE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGUpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSB2ZWN0b3IgY29udGFpbnMgdGhlIHNwZWNpZmllZCBgTVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZWAsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+YDogQSBWRUNUT1Igb2YgTVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZXMgdG8gc2VhcmNoLlxuMi4gYE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGVgOiBBIE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGUgdG8gc2VhcmNoIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIkRldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmVjdG9yIGNvbnRhaW5zIHRoZSBnaXZlbiBgTVdHLlVybENhdGVnb3J5YC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+IGFsbG93ZWRDYXRlZ29yaWVzID0gW1wiU29jaWFsIE1lZGlhXCIsIFwiTmV3c1wiLCBcIkVkdWNhdGlvblwiXVxuTVdHLlVybENhdGVnb3J5IGN1cnJlbnRDYXRlZ29yeSA9IE1XRy5VcmwoKS5DYXRlZ29yeSgpXG5cbi8vIENoZWNrIGlmIHRoZSBjdXJyZW50IGNhdGVnb3J5IGlzIGluIHRoZSBhbGxvd2VkIGNhdGVnb3JpZXNcbklGIENvbnRhaW5zKGFsbG93ZWRDYXRlZ29yaWVzLCBjdXJyZW50Q2F0ZWdvcnkpIFRIRU4ge1xuICAgIE1XRy5BbGxvdyhcIkNhdGVnb3J5IGFsbG93ZWRcIilcbn0gRUxTRSB7XG4gICAgTVdHLkJsb2NrKFwiQ2F0ZWdvcnkgbm90IGFsbG93ZWRcIilcbn0iLCAibmFtZSI6ICJDb250YWlucyAoVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4sIE1XRy5VcmxDYXRlZ29yeSkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHZlY3RvciBjb250YWlucyB0aGUgc3BlY2lmaWVkIGBNV0cuVXJsQ2F0ZWdvcnlgLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+YDogQSB2ZWN0b3Igb2YgTVdHLlVybENhdGVnb3J5cyB0byBzZWFyY2guXG4yLiBgTVdHLlVybENhdGVnb3J5YDogQSBNV0cuVXJsQ2F0ZWdvcnkgdG8gc2VhcmNoIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIkRldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmVjdG9yIGNvbnRhaW5zIHRoZSBnaXZlbiBgTmV0LklQYC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxOZXQuSVA+IGFsbG93ZWRJUHMgPSBcIjE5Mi4xNjguMS4xXCIsIFwiMTkyLjE2OC4xLjJcIiwgXCIxOTIuMTY4LjEuM1wiXG5OZXQuSVAgY3VycmVudElQID0gTVdHLkNsaWVudC5JUCgpXG5cbklGIENvbnRhaW5zKGFsbG93ZWRJUHMsIGN1cnJlbnRJUCkgVEhFTiB7XG4gICAgLy8gSVAgaXMgYWxsb3dlZFxuICAgIE1XRy5BbGxvdygpXG59IEVMU0Uge1xuICAgIC8vIElQIGlzIG5vdCBhbGxvd2VkXG4gICAgTVdHLkJsb2NrKClcbn0iLCAibmFtZSI6ICJDb250YWlucyAoVkVDVE9SPE5ldC5JUD4sIE5ldC5JUCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHZlY3RvciBjb250YWlucyB0aGUgc3BlY2lmaWVkIGBOZXQuSVBgLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOZXQuSVA+YDogQSBWRUNUT1Igb2YgTmV0LklQcyB0byBzZWFyY2guXG4yLiBgTmV0LklQYDogQSBOZXQuSVAgdG8gc2VhcmNoIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBJUCByYW5nZSBsaXN0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgSVAgcmFuZ2UsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgVkVDVE9SIG9mIE5ldC5JUFJhbmdlXG5WRUNUT1I8TmV0LklQUmFuZ2U+IGFsbG93ZWRJUFJhbmdlcyA9IFtcImFsbG93ZWRfaXBfcmFuZ2VzX2xpc3RcIl1cblxuLy8gRGVmaW5lIHRoZSBJUCByYW5nZSB0byBjaGVja1xuTmV0LklQUmFuZ2UgaXBUb0NoZWNrID0gTmV0LklQUmFuZ2UoXCIxOTIuMTY4LjEuMC8yNFwiKVxuXG4vLyBDaGVjayBpZiB0aGUgSVAgcmFuZ2UgaXMgaW4gdGhlIGFsbG93ZWQgbGlzdFxuSUYgQ29udGFpbnMoYWxsb3dlZElQUmFuZ2VzLCBpcFRvQ2hlY2spIFRIRU4ge1xuICAgIC8vIElQIHJhbmdlIGlzIGFsbG93ZWRcbiAgICBNV0cuQWxsb3coXCJJUCByYW5nZSBpcyBpbiB0aGUgYWxsb3dlZCBsaXN0XCIpXG59IEVMU0Uge1xuICAgIC8vIElQIHJhbmdlIGlzIG5vdCBhbGxvd2VkXG4gICAgTVdHLkJsb2NrKFwiSVAgcmFuZ2UgaXMgbm90IGluIHRoZSBhbGxvd2VkIGxpc3RcIilcbn0iLCAibmFtZSI6ICJDb250YWlucyAoVkVDVE9SPE5ldC5JUFJhbmdlPiwgTmV0LklQUmFuZ2UpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBJUCByYW5nZSBsaXN0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgSVAgcmFuZ2UsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5ldC5JUFJhbmdlPmA6IExpc3QgdG8gc2VhcmNoIHRocm91Z2guXG4yLiBgTmV0LklQUmFuZ2VgOiBWYWx1ZSB0byBzZWFyY2ggZm9yLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIElQIHJhbmdlIGxpc3QgY29udGFpbnMgYXQgbGVhc3Qgb25lIElQIGZyb20gdGhlIElQIGxpc3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgdmVjdG9yIG9mIElQIHJhbmdlc1xuVkVDVE9SPE5ldC5JUFJhbmdlPiBpcFJhbmdlcyA9IFwiMTkyLjE2OC4xLjAvMjRcIiwgXCIxMC4wLjAuMC84XCJcblxuLy8gRGVmaW5lIGEgdmVjdG9yIG9mIGNsaWVudCBJUHNcblZFQ1RPUjxOZXQuSVA+IGNsaWVudElQcyA9IFwiMTkyLjE2OC4xLjEwXCIsIFwiMTcyLjE2LjAuMVwiXG5cbi8vIENoZWNrIGlmIGFueSBvZiB0aGUgY2xpZW50IElQcyBhcmUgd2l0aGluIHRoZSBkZWZpbmVkIElQIHJhbmdlc1xuSUYgQ29udGFpbnMoaXBSYW5nZXMsIGNsaWVudElQcykgVEhFTiB7XG4gICAgLy8gSVAgaXMgd2l0aGluIHRoZSBhbGxvd2VkIHJhbmdlXG4gICAgTVdHLkFsbG93KFwiSVAgaXMgd2l0aGluIHRoZSBhbGxvd2VkIHJhbmdlXCIpXG59IEVMU0Uge1xuICAgIC8vIElQIGlzIG5vdCB3aXRoaW4gdGhlIGFsbG93ZWQgcmFuZ2VcbiAgICBNV0cuQmxvY2soXCJJUCBpcyBub3Qgd2l0aGluIHRoZSBhbGxvd2VkIHJhbmdlXCIpXG59IiwgIm5hbWUiOiAiQ29udGFpbnMgKFZFQ1RPUjxOZXQuSVBSYW5nZT4sIFZFQ1RPUjxOZXQuSVA+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhdCBsZWFzdCBvbmUgSVAgZnJvbSB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGZvdW5kIHdpdGhpbiBhbnkgcmFuZ2UgaW4gdGhlIGZpcnN0IGFyZ3VtZW50LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOZXQuSVBSYW5nZT5gOiBUaGUgSVAgcmFuZ2VsaXN0LlxuMi4gYFZFQ1RPUjxOZXQuSVA+YDogVGhlIElQIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIHZlY3RvciBjb250YWlucyB0aGUgZ2l2ZW4gbnVtYmVyLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5VTUJFUj4gbnVtYmVyTGlzdCA9IDEsIDIsIDMsIDQsIDVcbk5VTUJFUiBudW1iZXJUb0NoZWNrID0gM1xuXG5JRiBDb250YWlucyhudW1iZXJMaXN0LCBudW1iZXJUb0NoZWNrKSBUSEVOIHtcbiAgICAvLyBOdW1iZXIgaXMgcHJlc2VudCBpbiB0aGUgbGlzdC5cbn0gRUxTRSB7XG4gICAgLy8gTnVtYmVyIGlzIG5vdCBwcmVzZW50IGluIHRoZSBsaXN0LlxufSIsICJuYW1lIjogIkNvbnRhaW5zIChWRUNUT1I8TlVNQkVSPiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgdmVjdG9yIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgbnVtYmVyLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOVU1CRVI+YDogQSB2ZWN0b3Igb2YgbnVtYmVycyB0byBzZWFyY2guXG4yLiBgTlVNQkVSYDogQSBudW1iZXIgdG8gc2VhcmNoIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIkRldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmVjdG9yIGNvbnRhaW5zIHRoZSBnaXZlbiBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8U1RSSU5HPiBibG9ja2VkVXJscyA9IFwiZXhhbXBsZS5jb21cIiwgXCJibG9ja2Vkc2l0ZS5jb21cIiwgXCJtYWxpY2lvdXMuY29tXCJcblNUUklORyBjdXJyZW50VXJsID0gTVdHLlVybCgpLkhvc3RcblxuSUYgQ29udGFpbnMoYmxvY2tlZFVybHMsIGN1cnJlbnRVcmwpIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byB0aGlzIHNpdGUgaXMgYmxvY2tlZC5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiVVJMIGlzIGFsbG93ZWRcIilcbn0iLCAibmFtZSI6ICJDb250YWlucyAoVkVDVE9SPFNUUklORz4sIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHZlY3RvciBjb250YWlucyB0aGUgc3BlY2lmaWVkIHN0cmluZywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8U1RSSU5HPmA6IEEgdmVjdG9yIG9mIHN0cmluZ3MgdG8gc2VhcmNoLlxuMi4gYFNUUklOR2A6IEEgc3RyaW5nIHRvIHNlYXJjaCBmb3IuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIHZlY3RvciBjb250YWlucyB0aGUgZ2l2ZW4gYFlvdVR1YmVWaWRlb0NhdGVnb3J5YC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxZb3VUdWJlVmlkZW9DYXRlZ29yeT4gYWxsb3dlZENhdGVnb3JpZXMgPSBbXCJFZHVjYXRpb25cIiwgXCJTY2llbmNlXCIsIFwiVGVjaG5vbG9neVwiXVxuWW91VHViZVZpZGVvQ2F0ZWdvcnkgY3VycmVudENhdGVnb3J5ID0gTVdHLkdldFlvdVR1YmVWaWRlb0NhdGVnb3J5KClcblxuSUYgQ29udGFpbnMoYWxsb3dlZENhdGVnb3JpZXMsIGN1cnJlbnRDYXRlZ29yeSkgVEhFTiB7XG4gICAgLy8gQ2F0ZWdvcnkgaXMgYWxsb3dlZFxuICAgIE1XRy5BbGxvdygpXG59IEVMU0Uge1xuICAgIC8vIENhdGVnb3J5IGlzIG5vdCBhbGxvd2VkXG4gICAgTVdHLkJsb2NrKClcbn0iLCAibmFtZSI6ICJDb250YWlucyAoVkVDVE9SPFlvdVR1YmVWaWRlb0NhdGVnb3J5PiwgWW91VHViZVZpZGVvQ2F0ZWdvcnkpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSB2ZWN0b3IgY29udGFpbnMgdGhlIHNwZWNpZmllZCBgWW91VHViZVZpZGVvQ2F0ZWdvcnlgLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxZb3VUdWJlVmlkZW9DYXRlZ29yeT5gOiBBIFZFQ1RPUiBvZiBZb3VUdWJlVmlkZW9DYXRlZ29yeXMgdG8gc2VhcmNoLlxuMi4gYFlvdVR1YmVWaWRlb0NhdGVnb3J5YDogQSBZb3VUdWJlVmlkZW9DYXRlZ29yeSB0byBzZWFyY2ggZm9yLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIElQIHJhbmdlIGxpc3QgY29udGFpbnMgYWxsIG9mIHRoZSBJUHMgZnJvbSB0aGUgSVAgbGlzdCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TmV0LklQUmFuZ2U+IGlwUmFuZ2VzID0gW1wiYWxsb3dlZF9pcF9yYW5nZXNcIl1cblZFQ1RPUjxOZXQuSVA+IGlwQWRkcmVzc2VzID0gW1wiY2xpZW50X2lwX2FkZHJlc3Nlc1wiXVxuXG5JRiBDb250YWluc0FsbChpcFJhbmdlcywgaXBBZGRyZXNzZXMpIFRIRU4ge1xuICAgIC8vIEFsbCBJUHMgYXJlIHdpdGhpbiB0aGUgYWxsb3dlZCByYW5nZXNcbiAgICBNV0cuQWxsb3coKVxufSBFTFNFIHtcbiAgICAvLyBTb21lIElQcyBhcmUgbm90IHdpdGhpbiB0aGUgYWxsb3dlZCByYW5nZXNcbiAgICBNV0cuQmxvY2soKVxufSIsICJuYW1lIjogIkNvbnRhaW5zQWxsIChWRUNUT1I8TmV0LklQUmFuZ2U+LCBWRUNUT1I8TmV0LklQPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIElQIHJhbmdlIGxpc3QgY29udGFpbnMgYWxsIG9mIHRoZSBJUHMgZnJvbSB0aGUgSVAgbGlzdCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TmV0LklQUmFuZ2U+YDogTGlzdCB0byBzZWFyY2ggdGhyb3VnaC5cbjIuIGBWRUNUT1I8TmV0LklQPmA6IFZhbHVlcyB0byBzZWFyY2ggZm9yLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiB2ZWN0b3IgY29udGFpbnMgdGhlIGdpdmVuIHN0cmluZywgaWdub3JpbmcgY2FzZS4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxTVFJJTkc+IGJsb2NrZWRVcmxzID0gXCJleGFtcGxlLmNvbVwiLCBcInRlc3RzaXRlLmNvbVwiLCBcImJsb2NrZWRzaXRlLm9yZ1wiXG5TVFJJTkcgY3VycmVudFVybCA9IE1XRy5VcmwoKS5Ib3N0XG5cbklGIENvbnRhaW5zQ2FzZUluc2Vuc2l0aXZlKGJsb2NrZWRVcmxzLCBjdXJyZW50VXJsKSBUSEVOIHtcbiAgICAvLyBBY2Nlc3MgdG8gdGhpcyBzaXRlIGlzIGJsb2NrZWQuXG4gICAgTVdHLkJsb2NrKClcbn0gRUxTRSB7XG4gICAgLy8gVVJMIGlzIG5vdCBibG9ja2VkLlxuICAgIE1XRy5BbGxvdygpXG59IiwgIm5hbWUiOiAiQ29udGFpbnNDYXNlSW5zZW5zaXRpdmUgKFZFQ1RPUjxTVFJJTkc+LCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSB2ZWN0b3IgY29udGFpbnMgdGhlIHNwZWNpZmllZCBzdHJpbmcgKGNhc2UtaW5zZW5zaXRpdmUpLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGxpc3Qgb2Ygc3RyaW5ncyB0byBzZWFyY2guXG4yLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaW4gdGhlIHZlY3RvciBtYXRjaGVzIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgVkVDVE9SIG9mIE1lZGlhVHlwZVxuVkVDVE9SPE1lZGlhVHlwZT4gbWVkaWFUeXBlcyA9IFtcInRleHQvaHRtbFwiLCBcImFwcGxpY2F0aW9uL2pzb25cIiwgXCJpbWFnZS9wbmdcIl1cblxuLy8gRGVmaW5lIGEgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gdG8gbWF0Y2ggbWVkaWEgdHlwZXMgdGhhdCBhcmUgdGV4dC1iYXNlZFxuUmVnRXhKU2kgdGV4dFBhdHRlcm4gPSBcIi90ZXh0XFwvLiovXCJcblxuLy8gQ2hlY2sgaWYgYW55IG9mIHRoZSBtZWRpYSB0eXBlcyBtYXRjaCB0aGUgdGV4dCBwYXR0ZXJuXG5CT09MRUFOIGhhc1RleHRNZWRpYVR5cGUgPSBDb250YWluc01hdGNoKG1lZGlhVHlwZXMsIHRleHRQYXR0ZXJuKVxuXG4vLyBQcmludCB0aGUgcmVzdWx0IHRvIHRoZSBjb25zb2xlXG5JRiBoYXNUZXh0TWVkaWFUeXBlIFRIRU4ge1xuICAgIC8vIFRoZSBtZWRpYSB0eXBlcyBjb250YWluIGEgdGV4dC1iYXNlZCBtZWRpYSB0eXBlLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgbWVkaWEgdHlwZXMgZG8gbm90IGNvbnRhaW4gYSB0ZXh0LWJhc2VkIG1lZGlhIHR5cGUuXG59IiwgIm5hbWUiOiAiQ29udGFpbnNNYXRjaCAoVkVDVE9SPE1lZGlhVHlwZT4sIFJlZ0V4SlNpKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpbiB0aGUgdmVjdG9yIG1hdGNoZXMgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbiwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TWVkaWFUeXBlPmA6IFRoZSBpbnB1dCBsaXN0IHRvIGJlIHNlYXJjaGVkLlxuMi4gYFJlZ0V4SlNpYDogVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHRvIG1hdGNoLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaW4gdGhlIHZlY3RvciBtYXRjaGVzIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgdmVjdG9yIG9mIHN0cmluZ3NcblZFQ1RPUjxTVFJJTkc+IHN0cmluZ0xpc3QgPSBcImFwcGxlXCIsIFwiYmFuYW5hXCIsIFwiY2hlcnJ5XCIsIFwiZGF0ZVwiXG5cbi8vIERlZmluZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHRvIG1hdGNoIGFueSBzdHJpbmcgY29udGFpbmluZyB0aGUgbGV0dGVyICdhJ1xuUmVnRXhKU2kgcGF0dGVybiA9IFJlZ0V4SlNpKFwiYVwiKVxuXG4vLyBDaGVjayBpZiBhbnkgc3RyaW5nIGluIHRoZSB2ZWN0b3IgbWF0Y2hlcyB0aGUgcGF0dGVyblxuQk9PTEVBTiBoYXNNYXRjaCA9IENvbnRhaW5zTWF0Y2goc3RyaW5nTGlzdCwgcGF0dGVybilcblxuLy8gUHJpbnQgdGhlIHJlc3VsdCB0byB0aGUgY29uc29sZVxuSUYgaGFzTWF0Y2ggVEhFTiB7XG4gICAgLy8gQSBtYXRjaCB3YXMgZm91bmQgaW4gdGhlIGxpc3QuXG59IEVMU0Uge1xuICAgIC8vIE5vIG1hdGNoIHdhcyBmb3VuZCBpbiB0aGUgbGlzdC5cbn0iLCAibmFtZSI6ICJDb250YWluc01hdGNoIChWRUNUT1I8U1RSSU5HPiwgUmVnRXhKU2kpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIHRoZSB2ZWN0b3IgbWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGxpc3Qgb2Ygc3RyaW5ncyB0byBzZWFyY2guXG4yLiBgUmVnRXhKU2lgOiBUaGUgcmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIGFnYWluc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBub25lIG9mIHRoZSBJUHMgZnJvbSB0aGUgSVAgbGlzdCBhcmUgZm91bmQgaW4gYW55IHJhbmdlIGluIHRoZSBJUCByYW5nZSBsaXN0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxOZXQuSVBSYW5nZT4gaXBSYW5nZXMgPSBbXCJ0cnVzdGVkX2lwX3Jhbmdlc1wiXVxuVkVDVE9SPE5ldC5JUD4gaXBMaXN0ID0gW1wiMTkyLjE2OC4xLjFcIiwgXCIxMC4wLjAuMVwiXVxuXG5JRiBDb250YWluc05vbmUoaXBSYW5nZXMsIGlwTGlzdCkgVEhFTiB7XG4gICAgLy8gTm9uZSBvZiB0aGUgSVBzIGFyZSBpbiB0aGUgdHJ1c3RlZCByYW5nZXMuXG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIGRlbmllZDogSVAgbm90IGluIHRydXN0ZWQgcmFuZ2VzLlwiKVxufSBFTFNFIHtcbiAgICAvLyBBdCBsZWFzdCBvbmUgSVAgaXMgaW4gdGhlIHRydXN0ZWQgcmFuZ2VzLlxuICAgIE1XRy5BbGxvdyhcIklQIGluIHRydXN0ZWQgcmFuZ2VcIilcbn0iLCAibmFtZSI6ICJDb250YWluc05vbmUgKFZFQ1RPUjxOZXQuSVBSYW5nZT4sIFZFQ1RPUjxOZXQuSVA+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBub25lIG9mIHRoZSBJUHMgZnJvbSB0aGUgSVAgbGlzdCBhcmUgZm91bmQgaW4gYW55IHJhbmdlIGluIHRoZSBJUCByYW5nZSBsaXN0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOZXQuSVBSYW5nZT5gOiBMaXN0IHRvIHNlYXJjaCB0aHJvdWdoLlxuMi4gYFZFQ1RPUjxOZXQuSVA+YDogVmFsdWVzIHRvIHNlYXJjaCBmb3IuIn0sIHsicmV0dXJuX3R5cGUiOiAiTUFQPFNUUklORyxTVFJJTkc+IiwgImRlc2NyaXB0aW9uIjogIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcgZW1wdHkgYE1BUDxTVFJJTkcsIFNUUklORz5gLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGFuIGVtcHR5IG1hcCBvZiBTVFJJTkcgdG8gU1RSSU5HXG5NQVA8U1RSSU5HLCBTVFJJTkc+IG15TWFwID0gQ3JlYXRlTWFwU3RyaW5nVG9TdHJpbmcoKVxuXG4vLyBBZGQgc29tZSBrZXktdmFsdWUgcGFpcnMgdG8gdGhlIG1hcFxubXlNYXBbXCJrZXkxXCJdID0gXCJ2YWx1ZTFcIlxubXlNYXBbXCJrZXkyXCJdID0gXCJ2YWx1ZTJcIlxubXlNYXBbXCJrZXkzXCJdID0gXCJ2YWx1ZTNcIlxuXG4vLyBNYXAgY29udGVudHM6IFxuLy8gbXlNYXAiLCAibmFtZSI6ICJDcmVhdGVNYXBTdHJpbmdUb1N0cmluZyAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbmV3IGVtcHR5IGBNQVA8U1RSSU5HLCBTVFJJTkc+YC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJEQVRBUkVGIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgY3J5cHRvZ3JhcGhpY2FsbHkgcmFuZG9tIGJ5dGVzIGFzIGEgYERBVEFSRUZgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIHlvdSB3YW50IHRvIGdlbmVyYXRlXG5OVU1CRVIgbnVtQnl0ZXMgPSAxNlxuXG4vLyBHZW5lcmF0ZSB0aGUgcmFuZG9tIGJ5dGVzXG5WRUNUT1I8QllURT4gcmFuZG9tQnl0ZXMgPSBDcnlwdG9ncmFwaHkuQ3JlYXRlUmFuZG9tQnl0ZXMobnVtQnl0ZXMpXG5cbi8vIENvbnZlcnQgdGhlIHJhbmRvbSBieXRlcyB0byBhIHN0cmluZyBmb3IgZGlzcGxheVxuU1RSSU5HIHJhbmRvbUJ5dGVzU3RyaW5nID0gQmFzZTY0LkVuY29kZShyYW5kb21CeXRlcylcblxuLy8gR2VuZXJhdGVkIFJhbmRvbSBCeXRlczogXCIgKyByYW5kb21CeXRlc1N0cmluZyIsICJuYW1lIjogIkNyeXB0b2dyYXBoeS5DcmVhdGVSYW5kb21CeXRlcyAoTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBzcGVjaWZpZWQgYW1vdW50IG9mIHJhbmRvbWx5IGdlbmVyYXRlZCBkYXRhLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTlVNQkVSYDogVGhlIG51bWJlciBvZiByYW5kb20gYnl0ZXMgdG8gZ2VuZXJhdGUuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgY3J5cHRvZ3JhcGhpY2FsbHkgcmFuZG9tIGJ5dGVzIGVuY29kZWQgYXMgYSBiYXNlNjQgc3RyaW5nLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpZiBsZW5ndGggaXMgemVybyBvciBuZWdhdGl2ZTsgYSBuZWdhdGl2ZSBsZW5ndGggYWxzbyB0cmlnZ2VycyBhbiBlcnJvci4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBieXRlTGVuZ3RoID0gMTZcblNUUklORyByYW5kb21CYXNlNjRTdHJpbmcgPSBDcnlwdG9ncmFwaHkuQ3JlYXRlUmFuZG9tQnl0ZXNBc0Jhc2U2NFN0cmluZyhieXRlTGVuZ3RoKVxuLy8gR2VuZXJhdGVkIEJhc2U2NCBTdHJpbmc6ICsgcmFuZG9tQmFzZTY0U3RyaW5nIiwgIm5hbWUiOiAiQ3J5cHRvZ3JhcGh5LkNyZWF0ZVJhbmRvbUJ5dGVzQXNCYXNlNjRTdHJpbmcgKE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGJhc2U2NCBlbmNvZGVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTlVNQkVSYDogVGhlIGxlbmd0aCBvZiB0aGUgcmFuZG9tIGRhdGEgaW4gYnl0ZXMgdG8gYmUgZ2VuZXJhdGVkLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGNyeXB0b2dyYXBoaWNhbGx5IHJhbmRvbSBieXRlcyBlbmNvZGVkIGFzIGEgYmFzZTY0LVVSTCBzdHJpbmcuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIGxlbmd0aCBpcyB6ZXJvIG9yIG5lZ2F0aXZlOyBhIG5lZ2F0aXZlIGxlbmd0aCBhbHNvIHRyaWdnZXJzIGFuIGVycm9yLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIGxlbmd0aCA9IDE2XG5TVFJJTkcgcmFuZG9tU3RyaW5nID0gQ3J5cHRvZ3JhcGh5LkNyZWF0ZVJhbmRvbUJ5dGVzQXNCYXNlNjRVUkxTdHJpbmcobGVuZ3RoKVxuLy8gR2VuZXJhdGVkIFJhbmRvbSBTdHJpbmc6ICsgcmFuZG9tU3RyaW5nIiwgIm5hbWUiOiAiQ3J5cHRvZ3JhcGh5LkNyZWF0ZVJhbmRvbUJ5dGVzQXNCYXNlNjRVUkxTdHJpbmcgKE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGJhc2U2NC1VUkwgZW5jb2RlZCBzdHJpbmcgb2YgcmFuZG9tIGJ5dGVzIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgbnVtYmVyLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTlVNQkVSYDogVGhlIGxlbmd0aCBvZiB0aGUgcmFuZG9tIGRhdGEgdG8gZ2VuZXJhdGUuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBoZXgtZW5jb2RlZCBzdHJpbmcgb2YgZXhhY3RseSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBjaGFyYWN0ZXJzIGdlbmVyYXRlZCBmcm9tIGNyeXB0b2dyYXBoaWNhbGx5IHJhbmRvbSBieXRlcy4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgbGVuZ3RoIGlzIHplcm8gb3IgbmVnYXRpdmU7IGEgbmVnYXRpdmUgbGVuZ3RoIGFsc28gdHJpZ2dlcnMgYW4gZXJyb3IuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgbGVuZ3RoID0gMTZcblNUUklORyByYW5kb21CeXRlcyA9IENyeXB0b2dyYXBoeS5DcmVhdGVSYW5kb21CeXRlc0FzU3RyaW5nKGxlbmd0aClcbi8vIEdlbmVyYXRlZCBSYW5kb20gQnl0ZXM6ICsgcmFuZG9tQnl0ZXMiLCAibmFtZSI6ICJDcnlwdG9ncmFwaHkuQ3JlYXRlUmFuZG9tQnl0ZXNBc1N0cmluZyAoTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgaGV4LWVuY29kZWQgc3RyaW5nIG9mIGV4YWN0bHkgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgY2hhcmFjdGVycywgcHJvZHVjZWQgZnJvbSBjcnlwdG9ncmFwaGljYWxseSByYW5kb20gYnl0ZXMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBOVU1CRVJgOiBUaGUgbnVtYmVyIG9mIHJhbmRvbSBieXRlcyB0byBnZW5lcmF0ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIHJhbmRvbWx5IGdlbmVyYXRlZCBVVUlEIGFzIGEgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHV1aWQgPSBDcnlwdG9ncmFwaHkuQ3JlYXRlUmFuZG9tVVVJRCgpXG4vLyBHZW5lcmF0ZWQgVVVJRDogKyB1dWlkXG5NV0cuU2V0VXNlckRlZmluZWRWYXIoXCJHZW5lcmF0ZWRVVUlEXCIsIHV1aWQpIiwgIm5hbWUiOiAiQ3J5cHRvZ3JhcGh5LkNyZWF0ZVJhbmRvbVVVSUQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHJhbmRvbWx5IGdlbmVyYXRlZCBVVUlEIGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkRBVEFSRUYiLCAiZGVzY3JpcHRpb24iOiAiRGVjcnlwdHMgZGF0YSB3aXRoIGdpdmVuIGFsZ29yaXRobSBhbmQgcGFzc3dvcmQuIFRoZSBhbGdvcml0aG0gY2FuIGJlIGFueSB0aGF0IE9wZW5TU0wgc3VwcG9ydHMsIGxpa2UgXCJhZXMtMTI4LWNiY1wiIG9yIFwiYWVzLTI1Ni1lY2JcIi4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0sIGVuY3J5cHRlZCBkYXRhLCBhbmQgcGFzc3dvcmRcblNUUklORyBhbGdvcml0aG0gPSBcImFlcy0yNTYtY2JjXCJcbkRBVEFSRUYgZW5jcnlwdGVkRGF0YSA9IC4uLiAvLyBBc3N1bWUgdGhpcyBpcyB5b3VyIGVuY3J5cHRlZCBkYXRhIHJlZmVyZW5jZVxuU1RSSU5HIHBhc3N3b3JkID0gXCJ5b3VyX3Bhc3N3b3JkXCJcblxuLy8gRGVjcnlwdCB0aGUgZGF0YVxuREFUQVJFRiBkZWNyeXB0ZWREYXRhID0gQ3J5cHRvZ3JhcGh5LkRhdGFSZWZEZWNyeXB0KGFsZ29yaXRobSwgZW5jcnlwdGVkRGF0YSwgcGFzc3dvcmQpXG5cbi8vIERlY3J5cHRlZCBEYXRhOiBcIiArIGRlY3J5cHRlZERhdGEiLCAibmFtZSI6ICJDcnlwdG9ncmFwaHkuRGF0YVJlZkRlY3J5cHQgKFNUUklORywgREFUQVJFRiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBkZWNyeXB0ZWQgZGF0YSByZWZlcmVuY2UgdXNpbmcgdGhlIHNwZWNpZmllZCBhbGdvcml0aG0gYW5kIHBhc3N3b3JkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGRlY3J5cHRpb24gYWxnb3JpdGhtLiBUaGlzIGNhbiBiZSBhbnkgdGhhdCBPcGVuU1NMIHN1cHBvcnRzLCBsaWtlIFwiYWVzLTEyOC1jYmNcIiBvciBcImFlcy0yNTYtZWNiXCIuXG4yLiBgREFUQVJFRmA6IFRoZSBlbmNyeXB0ZWQgZGF0YSB0byBkZWNyeXB0LlxuMy4gYFNUUklOR2A6IFRoZSBkZWNyeXB0aW9uIGtleS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiRGVjcnlwdHMgZGF0YSB3aXRoIHRoZSBnaXZlbiBhbGdvcml0aG0gYW5kIGtleS4gVGhlIGFsZ29yaXRobSBjYW4gYmUgYW55IHRoYXQgT3BlblNTTCBzdXBwb3J0cywgbGlrZSBcImFlcy0xMjgtY2JjXCIgb3IgXCJhZXMtMjU2LWVjYlwiLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBlbmNyeXB0ZWQgc3RyaW5nLCBrZXksIGFuZCBhbGdvcml0aG1cblNUUklORyBlbmNyeXB0ZWRTdHJpbmcgPSBcIkVuY3J5cHRlZERhdGFIZXJlXCJcbkRBVEFSRUYga2V5ID0gXCJZb3VyRGVjcnlwdGlvbktleVwiXG5TVFJJTkcgYWxnb3JpdGhtID0gXCJBRVNcIlxuXG4vLyBEZWNyeXB0IHRoZSBzdHJpbmdcblNUUklORyBkZWNyeXB0ZWRTdHJpbmcgPSBDcnlwdG9ncmFwaHkuRGVjcnlwdChlbmNyeXB0ZWRTdHJpbmcsIGtleSwgYWxnb3JpdGhtKVxuXG4vLyBEZWNyeXB0ZWQgU3RyaW5nOiBcbi8vICsgZGVjcnlwdGVkU3RyaW5nIiwgIm5hbWUiOiAiQ3J5cHRvZ3JhcGh5LkRlY3J5cHQgKFNUUklORywgREFUQVJFRiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBkZWNyeXB0ZWQgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIGFuZCBwYXNzd29yZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBkZWNyeXB0aW9uIGFsZ29yaXRobSAoZS5nLiwgXCJhZXMtMTI4LWNiY1wiIG9yIFwiYWVzLTI1Ni1lY2JcIikuXG4yLiBgREFUQVJFRmA6IFRoZSBkYXRhIHRvIGRlY3J5cHQuXG4zLiBgU1RSSU5HYDogVGhlIGRlY3J5cHRpb24ga2V5LiJ9LCB7InJldHVybl90eXBlIjogIkRBVEFSRUYiLCAiZGVzY3JpcHRpb24iOiAiRW5jcnlwdHMgZGF0YSB3aXRoIGEgZ2l2ZW4gYWxnb3JpdGhtIGFuZCBwYXNzd29yZC4gVGhlIGFsZ29yaXRobSBjYW4gYmUgYW55IHRoYXQgT3BlblNTTCBzdXBwb3J0cywgbGlrZSBcImFlcy0xMjgtY2JjXCIgb3IgXCJhZXMtMjU2LWVjYlwiLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBhbGdvcml0aG0gdG8gdXNlIGZvciBlbmNyeXB0aW9uXG5TVFJJTkcgYWxnb3JpdGhtID0gXCJhZXMtMjU2LWNiY1wiXG5cbi8vIERlZmluZSB0aGUgZGF0YSB0byBlbmNyeXB0XG5EQVRBUkVGIGRhdGFUb0VuY3J5cHQgPSBcIlRoaXMgaXMgc29tZSBzZW5zaXRpdmUgZGF0YS5cIlxuXG4vLyBEZWZpbmUgdGhlIHBhc3N3b3JkIHRvIHVzZSBmb3IgZW5jcnlwdGlvblxuU1RSSU5HIHBhc3N3b3JkID0gXCJzdHJvbmdwYXNzd29yZDEyM1wiXG5cbi8vIEVuY3J5cHQgdGhlIGRhdGFcbkRBVEFSRUYgZW5jcnlwdGVkRGF0YSA9IENyeXB0b2dyYXBoeS5FbmNyeXB0KGFsZ29yaXRobSwgZGF0YVRvRW5jcnlwdCwgcGFzc3dvcmQpXG5cbi8vIEVuY3J5cHRlZCBEYXRhOiBcIiArIGVuY3J5cHRlZERhdGEiLCAibmFtZSI6ICJDcnlwdG9ncmFwaHkuRW5jcnlwdCAoU1RSSU5HLCBEQVRBUkVGLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGVuY3J5cHRlZCBkYXRhIHJlZmVyZW5jZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBhbGdvcml0aG0uIFRoaXMgY2FuIGJlIGFueSB0aGF0IE9wZW5TU0wgc3VwcG9ydHMsIGxpa2UgXCJhZXMtMTI4LWNiY1wiIG9yIFwiYWVzLTI1Ni1lY2JcIi5cbjIuIGBEQVRBUkVGYDogRGF0YSB0byBlbmNyeXB0LlxuMy4gYFNUUklOR2A6IFRoZSBlbmNyeXB0aW9uIGtleS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJEQVRBUkVGIiwgImRlc2NyaXB0aW9uIjogIkVuY3J5cHRzIGEgc3RyaW5nIHdpdGggdGhlIGdpdmVuIGFsZ29yaXRobSBhbmQga2V5LiBUaGUgYWxnb3JpdGhtIGNhbiBiZSBhbnkgdGhhdCBPcGVuU1NMIHN1cHBvcnRzLCBsaWtlIFwiYWVzLTEyOC1jYmNcIiBvciBcImFlcy0yNTYtZWNiXCIuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgYWxnb3JpdGhtID0gXCJhZXMtMjU2LWNiY1wiXG5TVFJJTkcgbWVzc2FnZSA9IFwiVGhpcyBpcyBhIHNlY3JldCBtZXNzYWdlLlwiXG5TVFJJTkcga2V5ID0gXCJteXNlY3JldGtleTEyMzQ1Njc4OTBcIlxuXG5EQVRBUkVGIGVuY3J5cHRlZE1lc3NhZ2UgPSBDcnlwdG9ncmFwaHkuRW5jcnlwdChhbGdvcml0aG0sIG1lc3NhZ2UsIGtleSlcblxuLy8gXCJFbmNyeXB0ZWQgTWVzc2FnZTogXCIgKyBlbmNyeXB0ZWRNZXNzYWdlIiwgIm5hbWUiOiAiQ3J5cHRvZ3JhcGh5LkVuY3J5cHQgKFNUUklORywgU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYW4gZW5jcnlwdGVkIGRhdGEgcmVmZXJlbmNlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzdHJpbmcsIGFsZ29yaXRobSwgYW5kIHBhc3N3b3JkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGFsZ29yaXRobSB0byB1c2UgZm9yIGVuY3J5cHRpb24uXG4yLiBgU1RSSU5HYDogVGhlIG1lc3NhZ2UgdG8gZW5jcnlwdC5cbjMuIGBTVFJJTkdgOiBUaGUga2V5LiJ9LCB7InJldHVybl90eXBlIjogIkRBVEFSRUYiLCAiZGVzY3JpcHRpb24iOiAiSGFzaGVzIHRoZSBnaXZlbiBkYXRhIHVzaW5nIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgYSBgREFUQVJFRmAuIFRoZSBhbGdvcml0aG0gY2FuIGJlIGFueSB0aGF0IE9wZW5TU0wgc3VwcG9ydHMsIGxpa2UgXCJtZDVcIiBvciBcInNoYTUxMlwiLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGRhdGFUb0hhc2ggPSBcIkhlbGxvLCBXb3JsZCFcIlxuU1RSSU5HIGhhc2hBbGdvcml0aG0gPSBcIlNIQS0yNTZcIlxuREFUQVJFRiBoYXNoZWREYXRhXG5cbi8vIEdlbmVyYXRlIHRoZSBoYXNoXG5DcnlwdG9ncmFwaHkuSGFzaChoYXNoQWxnb3JpdGhtLCBkYXRhVG9IYXNoLCBoYXNoZWREYXRhKVxuXG4vLyBIYXNoZWQgRGF0YTogXCIgKyBoYXNoZWREYXRhIiwgIm5hbWUiOiAiQ3J5cHRvZ3JhcGh5Lkhhc2ggKFNUUklORywgREFUQVJFRikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgaGFzaGVkIGRhdGEgZ2VuZXJhdGVkIHVzaW5nIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogU3BlY2lmaWVzIHRoZSBoYXNoIGFsZ29yaXRobS5cbjIuIGBEQVRBUkVGYDogVGhlIGRhdGEgdG8gYmUgaGFzaGVkLiJ9LCB7InJldHVybl90eXBlIjogIkRBVEFSRUYiLCAiZGVzY3JpcHRpb24iOiAiSGFzaGVzIHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcgdGhlIHNwZWNpZmllZCBhbGdvcml0aG0gYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhIGBEQVRBUkVGYC4gVGhlIGFsZ29yaXRobSBjYW4gYmUgYW55IHRoYXQgT3BlblNTTCBzdXBwb3J0cywgbGlrZSBcIm1kNVwiIG9yIFwic2hhNTEyXCIuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgZGF0YVRvSGFzaCA9IFwiSGVsbG8sIFdvcmxkIVwiXG5TVFJJTkcgaGFzaGluZ0FsZ29yaXRobSA9IFwiU0hBLTI1NlwiXG5cblNUUklORyBoYXNoZWREYXRhID0gQ3J5cHRvZ3JhcGh5Lkhhc2goZGF0YVRvSGFzaCwgaGFzaGluZ0FsZ29yaXRobSlcblxuLy8gT3JpZ2luYWwgRGF0YTogXCIgKyBkYXRhVG9IYXNoXG4vLyBIYXNoZWQgRGF0YTogXCIgKyBoYXNoZWREYXRhIiwgIm5hbWUiOiAiQ3J5cHRvZ3JhcGh5Lkhhc2ggKFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIHJlcHJlc2VudGluZyB0aGUgaGFzaCBvZiB0aGUgaW5wdXQgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGhhc2ggYWxnb3JpdGhtIChlLmcuLCBcIm1kNVwiIG9yIFwic2hhNTEyXCIpLlxuMi4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gaGFzaC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJEQVRBUkVGIiwgImRlc2NyaXB0aW9uIjogIkNvbXB1dGVzIHRoZSBITUFDIG9mIHRoZSBnaXZlbiBkYXRhIHVzaW5nIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIGFuZCBwYXNzd29yZC4gVGhlIGFsZ29yaXRobSBjYW4gYmUgYW55IHRoYXQgT3BlblNTTCBzdXBwb3J0cywgbGlrZSBcIm1kNVwiIG9yIFwic2hhNTEyXCIuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgYWxnb3JpdGhtID0gXCJzaGEyNTZcIlxuU1RSSU5HIHBhc3N3b3JkID0gXCJteV9zZWNyZXRfcGFzc3dvcmRcIlxuREFUQVJFRiBkYXRhID0gXCJUaGlzIGlzIHRoZSBkYXRhIHRvIGJlIGhhc2hlZFwiXG5cbkRBVEFSRUYgaG1hY1ZhbHVlID0gQ3J5cHRvZ3JhcGh5LkhNQUMoYWxnb3JpdGhtLCBwYXNzd29yZCwgZGF0YSlcblxuLy8gR2VuZXJhdGVkIEhNQUMgdmFsdWU6IFwiICsgaG1hY1ZhbHVlIiwgIm5hbWUiOiAiQ3J5cHRvZ3JhcGh5LkhNQUMgKFNUUklORywgU1RSSU5HLCBEQVRBUkVGKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBITUFDIHZhbHVlIGdlbmVyYXRlZCBmcm9tIHRoZSBnaXZlbiBkYXRhLCBhbGdvcml0aG0sIGFuZCBwYXNzd29yZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBoYXNoaW5nIGFsZ29yaXRobSB0byBiZSB1c2VkLiBUaGlzIGNhbiBiZSBhbnkgdGhhdCBPcGVuU1NMIHN1cHBvcnRzLCBsaWtlIFwibWQ1XCIgb3IgXCJzaGE1MTJcIi5cbjIuIGBTVFJJTkdgOiBUaGUga2V5IGZvciB0aGUgSE1BQy5cbjMuIGBEQVRBUkVGYDogVGhlIGRhdGEgdG8gYmUgaGFzaGVkLiJ9LCB7InJldHVybl90eXBlIjogIkRBVEFSRUYiLCAiZGVzY3JpcHRpb24iOiAiQ29tcHV0ZXMgdGhlIEhNQUMgb2YgdGhlIGdpdmVuIHN0cmluZyB1c2luZyB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBhbmQgcGFzc3dvcmQuIFRoZSBhbGdvcml0aG0gY2FuIGJlIGFueSB0aGF0IE9wZW5TU0wgc3VwcG9ydHMsIGxpa2UgXCJtZDVcIiBvciBcInNoYTUxMlwiLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGRhdGEgPSBcIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dcIlxuU1RSSU5HIGtleSA9IFwic2VjcmV0a2V5XCJcblNUUklORyBhbGdvcml0aG0gPSBcIlNIQS0yNTZcIlxuXG5TVFJJTkcgaG1hY1Jlc3VsdCA9IENyeXB0b2dyYXBoeS5ITUFDKGRhdGEsIGtleSwgYWxnb3JpdGhtKVxuXG4vLyBITUFDIFJlc3VsdDogXCIgKyBobWFjUmVzdWx0IiwgIm5hbWUiOiAiQ3J5cHRvZ3JhcGh5LkhNQUMgKFNUUklORywgU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIEhNQUMgb2YgdGhlIGdpdmVuIHN0cmluZyB1c2luZyB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBhbmQgcGFzc3dvcmQgYXMgYSBgREFUQVJFRmAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgYWxnb3JpdGhtIHRvIHVzZS5cbjIuIGBTVFJJTkdgOiBUaGUga2V5LlxuMy4gYFNUUklOR2A6IFRoZSBkYXRhIHRvIGhhc2guIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGN1cnJlbnQgZGF0ZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBmb3JtYXQgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYSBkYXRlIGluIGEgc3RyaW5nIGZvcm1hdFxuU1RSSU5HIGRhdGVTdHJpbmcgPSBcIjIwMjMtMTAtMDVcIlxuXG4vLyBDb252ZXJ0IHRoZSBkYXRlIHN0cmluZyB0byBhIGZvcm1hdHRlZCBkYXRlIHN0cmluZ1xuU1RSSU5HIGZvcm1hdHRlZERhdGUgPSBEYXRlVGltZS5EYXRlVG9TdHJpbmcoZGF0ZVN0cmluZylcblxuLy8gRm9ybWF0dGVkIERhdGU6IGZvcm1hdHRlZERhdGUiLCAibmFtZSI6ICJEYXRlVGltZS5EYXRlVG9TdHJpbmcgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY3VycmVudCBkYXRlIGFzIGEgZm9ybWF0dGVkIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0aGUgb3V0cHV0IGRhdGUuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGN1cnJlbnQgZGF5IG9mIHRoZSBtb250aCBhcyBhIG51bWJlci4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBjdXJyZW50RGF5ID0gRGF0ZVRpbWUuRGF5T2ZNb250aCgpXG4vLyBUb2RheSBpcyBkYXkgXCIgKyBjdXJyZW50RGF5ICsgXCIgb2YgdGhlIG1vbnRoLlxuXG5JRiBjdXJyZW50RGF5ID09IDEgVEhFTiB7XG4gICAgLy8gSXQncyB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCFcbiAgICAvLyBQZXJmb3JtIHNvbWUgYWN0aW9uIGZvciB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aFxufSBFTFNFIHtcbiAgICAvLyBJdCdzIG5vdCB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aC5cbiAgICAvLyBQZXJmb3JtIHNvbWUgb3RoZXIgYWN0aW9uXG59IiwgIm5hbWUiOiAiRGF0ZVRpbWUuRGF5T2ZNb250aCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1lcmljYWwgZGF5IG9mIHRoZSBjdXJyZW50IG1vbnRoLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjdXJyZW50IGRheSBvZiB0aGUgd2VlayBhcyBhIG51bWJlciB3aGVyZSAxIHJlcHJlc2VudHMgTW9uZGF5IGFuZCA3IHJlcHJlc2VudHMgU3VuZGF5LiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIGRheU9mV2VlayA9IERhdGVUaW1lLkRheU9mV2VlaygpXG5cbklGIGRheU9mV2VlayA9PSAxIFRIRU4ge1xuICAgIC8vIFRvZGF5IGlzIE1vbmRheVxufSBFTFNFIElGIGRheU9mV2VlayA9PSAyIFRIRU4ge1xuICAgIC8vIFRvZGF5IGlzIFR1ZXNkYXlcbn0gRUxTRSBJRiBkYXlPZldlZWsgPT0gMyBUSEVOIHtcbiAgICAvLyBUb2RheSBpcyBXZWRuZXNkYXlcbn0gRUxTRSBJRiBkYXlPZldlZWsgPT0gNCBUSEVOIHtcbiAgICAvLyBUb2RheSBpcyBUaHVyc2RheVxufSBFTFNFIElGIGRheU9mV2VlayA9PSA1IFRIRU4ge1xuICAgIC8vIFRvZGF5IGlzIEZyaWRheVxufSBFTFNFIElGIGRheU9mV2VlayA9PSA2IFRIRU4ge1xuICAgIC8vIFRvZGF5IGlzIFNhdHVyZGF5XG59IEVMU0UgSUYgZGF5T2ZXZWVrID09IDcgVEhFTiB7XG4gICAgLy8gVG9kYXkgaXMgU3VuZGF5XG59IEVMU0Uge1xuICAgIC8vIEludmFsaWQgZGF5IG9mIHRoZSB3ZWVrXG59IiwgIm5hbWUiOiAiRGF0ZVRpbWUuRGF5T2ZXZWVrICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGN1cnJlbnQgZGF5IG9mIHRoZSB3ZWVrIGFzIGEgbnVtYmVyLCB3aGVyZSAxID0gTW9uZGF5IGFuZCA3ID0gU3VuZGF5LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjdXJyZW50IGRheSBvZiB0aGUgeWVhciBhcyBhIG51bWJlci4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBjdXJyZW50RGF5ID0gRGF0ZVRpbWUuRGF5T2ZZZWFyKClcbi8vIFwiVG9kYXkgaXMgZGF5IG51bWJlciBcIiArIGN1cnJlbnREYXkgKyBcIiBvZiB0aGUgeWVhci5cIiIsICJuYW1lIjogIkRhdGVUaW1lLkRheU9mWWVhciAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBjdXJyZW50IGRheSBvZiB0aGUgeWVhciBhcyBhIG51bWJlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgb2Zmc2V0IChpbiBzZWNvbmRzKSBvZiB0aGUgbG9jYWwgdGltZSB6b25lIG9mIHRoZSBtYWNoaW5lIHJ1bm5pbmcgdGhpcyBjb2RlLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gR2V0IHRoZSBsb2NhbCB0aW1lem9uZSBvZmZzZXQgaW4gc2Vjb25kc1xuTlVNQkVSIGxvY2FsT2Zmc2V0ID0gRGF0ZVRpbWUuR2V0TG9jYWxUaW1lem9uZU9mZnNldCgpXG5cbi8vIExvY2FsIFRpbWV6b25lIE9mZnNldCAoaW4gc2Vjb25kcyk6IFwiICsgbG9jYWxPZmZzZXQiLCAibmFtZSI6ICJEYXRlVGltZS5HZXRMb2NhbFRpbWV6b25lT2Zmc2V0ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG9mZnNldCAoaW4gc2Vjb25kcykgb2YgdGhlIGxvY2FsIHRpbWUgem9uZSBvZiB0aGUgbWFjaGluZSBydW5uaW5nIHRoaXMgY29kZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY3VycmVudCBob3VyIGFzIGEgbnVtYmVyLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIGN1cnJlbnRIb3VyID0gRGF0ZVRpbWUuSG91cigpXG4vLyBDdXJyZW50IGhvdXIgaXM6IGN1cnJlbnRIb3VyXG5cbklGIGN1cnJlbnRIb3VyIDwgMTIgVEhFTiB7XG4gICAgLy8gR29vZCBtb3JuaW5nIVxufSBFTFNFIHtcbiAgICAvLyBHb29kIGFmdGVybm9vbiFcbn0iLCAibmFtZSI6ICJEYXRlVGltZS5Ib3VyICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGN1cnJlbnQgaG91ciBhcyBhIG51bWVyaWNhbCB2YWx1ZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIkNoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUgKGluIGxvY2FsIHRpbWUgem9uZSBkZWZpbmVkIGJ5IHRpbWV6b25lT2Zmc2V0IHN0b3JlZCBpbiB0aGUgY29udGV4dCkgaXMgaW4gdGhlIGdpdmVuIHJhbmdlLCBzcGVjaWZpZWQgaW4gSVNPIGZvcm1hdC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBzdGFydFRpbWUgPSBcIjIwMjMtMTAtMDFUMDA6MDA6MDBaXCJcblNUUklORyBlbmRUaW1lID0gXCIyMDIzLTEwLTMxVDIzOjU5OjU5WlwiXG5cbklGIERhdGVUaW1lLklzSW5SYW5nZUlTTyhzdGFydFRpbWUsIGVuZFRpbWUpIFRIRU4ge1xuICAgIC8vIEN1cnJlbnQgZGF0ZSBhbmQgdGltZSBpcyB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZS5cbiAgICBNV0cuQWxsb3coXCJUaW1lUmFuZ2VDaGVja1wiKVxufSBFTFNFIHtcbiAgICAvLyBDdXJyZW50IGRhdGUgYW5kIHRpbWUgaXMgb3V0c2lkZSB0aGUgc3BlY2lmaWVkIHJhbmdlLlxuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBvdXRzaWRlIGFsbG93ZWQgdGltZSByYW5nZS5cIilcbn0iLCAibmFtZSI6ICJEYXRlVGltZS5Jc0luUmFuZ2VJU08gKFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIGZhbGxzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIElTTyByYW5nZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBTdGFydCB0aW1lIGluIElTTyBmb3JtYXQuXG4yLiBgU1RSSU5HYDogRW5kIHRpbWUgaW4gSVNPIGZvcm1hdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY3VycmVudCBtaW51dGUgYXMgYSBudW1iZXIuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgY3VycmVudE1pbnV0ZSA9IERhdGVUaW1lLk1pbnV0ZSgpXG4vLyBDdXJyZW50IG1pbnV0ZTogY3VycmVudE1pbnV0ZSIsICJuYW1lIjogIkRhdGVUaW1lLk1pbnV0ZSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBjdXJyZW50IG1pbnV0ZSBhcyBhIG51bWJlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY3VycmVudCBtb250aCBhcyBhIG51bWJlci4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBjdXJyZW50TW9udGggPSBEYXRlVGltZS5Nb250aE51bWJlcigpXG4vLyBUaGUgY3VycmVudCBtb250aCBudW1iZXIgaXM6IGN1cnJlbnRNb250aFxuXG5JRiBjdXJyZW50TW9udGggPT0gMTIgVEhFTiB7XG4gICAgLy8gSXQncyBEZWNlbWJlciFcbn0gRUxTRSB7XG4gICAgLy8gSXQncyBub3QgRGVjZW1iZXIuXG59IiwgIm5hbWUiOiAiRGF0ZVRpbWUuTW9udGhOdW1iZXIgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgbW9udGguIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGN1cnJlbnQgc2Vjb25kIGFzIGEgbnVtYmVyLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIGN1cnJlbnRTZWNvbmQgPSBEYXRlVGltZS5TZWNvbmQoKVxuLy8gVGhlIGN1cnJlbnQgc2Vjb25kIGlzOiBjdXJyZW50U2Vjb25kIiwgIm5hbWUiOiAiRGF0ZVRpbWUuU2Vjb25kICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGN1cnJlbnQgc2Vjb25kIGFzIGEgbnVtYmVyLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgVVRDIHRpbWUgZmFsbHMgd2l0aGluIHRoZSBnaXZlbiByYW5nZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgdGltZVJhbmdlID0gXCIwOTowMC0xNzowMFwiICAvLyBUaW1lIHJhbmdlIGluIEhIOk1NLUhIOk1NIGZvcm1hdCAoVVRDKVxuXG5JRiBEYXRlVGltZS5UaW1lSXNJblJhbmdlKHRpbWVSYW5nZSkgVEhFTiB7XG4gICAgLy8gQ3VycmVudCB0aW1lIGlzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHJhbmdlLlxufSBFTFNFIHtcbiAgICAvLyBDdXJyZW50IHRpbWUgaXMgb3V0c2lkZSB0aGUgc3BlY2lmaWVkIHJhbmdlLlxufSIsICJuYW1lIjogIkRhdGVUaW1lLlRpbWVJc0luUmFuZ2UgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgVVRDIHRpbWUgZmFsbHMgd2l0aGluIHRoZSBnaXZlbiByYW5nZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgdGltZSByYW5nZSB0byBjaGVjayBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBVbml4IHRpbWVzdGFtcCBpbiBHTVQgZm9ybWF0IChlLmcuLCBUaHUsIDEgU2VwdGVtYmVyIDIwMTIgMjI6MDY6MDMgR01UKS4iLCAiY29kZV9leGFtcGxlIjogIi8vIEV4YW1wbGUgdGltZXN0YW1wIChVbml4IGVwb2NoIHRpbWUpXG5OVU1CRVIgdGltZXN0YW1wID0gMTY3MjUzMTE5OVxuXG4vLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gYSBHTVQgc3RyaW5nXG5TVFJJTkcgZ210U3RyaW5nID0gRGF0ZVRpbWUuVGltZXN0YW1wVG9HTVRTdHJpbmcodGltZXN0YW1wKVxuXG4vLyBUaGUgR01UIHRpbWUgaXM6IFxuLy8gZ210U3RyaW5nIiwgIm5hbWUiOiAiRGF0ZVRpbWUuVGltZXN0YW1wVG9HTVRTdHJpbmcgKE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gVW5peCB0aW1lc3RhbXAgaW4gdGhlIGZvcm1hdDogVGh1LCAxIFNlcHRlbWJlciAyMDEyIDIyOjA2OjAzIEdNVC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5VTUJFUmA6IFRoZSBVbml4IHRpbWVzdGFtcCB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBVbml4IHRpbWVzdGFtcCBpbiBJU08gZm9ybWF0IChlLmcuLCAyMDEwLTAzLTIyIDIyOjQ1OjEyKSBpbiB0aGUgR01UIHRpbWUgem9uZS4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiB0aW1lc3RhbXAgPSAxNjE3MTg0ODAwICAvLyBFeGFtcGxlIFVOSVggdGltZXN0YW1wXG5TVFJJTkcgaXNvU3RyaW5nID0gRGF0ZVRpbWUuVGltZXN0YW1wVG9JU09TdHJpbmcodGltZXN0YW1wKVxuLy8gXCJJU08gU3RyaW5nOiBcIiArIGlzb1N0cmluZyIsICJuYW1lIjogIkRhdGVUaW1lLlRpbWVzdGFtcFRvSVNPU3RyaW5nIChOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIFVuaXggdGltZXN0YW1wIGluIElTTyBmb3JtYXQgKGUuZy4sIDIwMTAtMDMtMjIgMjI6NDU6MTIpIGluIHRoZSBHTVQgdGltZSB6b25lLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTlVNQkVSYDogVGhlIFVuaXggdGltZXN0YW1wIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGN1cnJlbnQgdGltZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBmb3JtYXQgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGN1cnJlbnRUaW1lID0gRGF0ZVRpbWUuVGltZVRvU3RyaW5nKFwiSEg6bW06c3NcIilcbi8vIEN1cnJlbnQgVGltZTogKyBjdXJyZW50VGltZSIsICJuYW1lIjogIkRhdGVUaW1lLlRpbWVUb1N0cmluZyAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBjdXJyZW50IHRpbWUgZm9ybWF0dGVkIGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRoZSBvdXRwdXQgdGltZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIGZvcm1hdHRlZCBhcyBhIEdNVCBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgd2UgaGF2ZSBhIERhdGVUaW1lIG9iamVjdFxuRGF0ZVRpbWUgY3VycmVudERhdGVUaW1lID0gRGF0ZVRpbWUuTm93KClcblxuLy8gQ29udmVydCB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIHRvIEdNVCBzdHJpbmdcblNUUklORyBnbXRTdHJpbmcgPSBjdXJyZW50RGF0ZVRpbWUuVG9HTVRTdHJpbmcoKVxuXG4vLyBDdXJyZW50IERhdGUgYW5kIFRpbWUgaW4gR01UOiBcbi8vIGdtdFN0cmluZyIsICJuYW1lIjogIkRhdGVUaW1lLlRvR01UU3RyaW5nICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBhcyBhIHN0cmluZyBmb3JtYXR0ZWQgaW4gR01ULiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUgZm9ybWF0dGVkIGFzIGFuIElTTyA4NjAxIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBjdXJyZW50VGltZSA9IERhdGVUaW1lLlRvSVNPU3RyaW5nKClcbi8vIEN1cnJlbnQgdGltZSBpbiBJU08gODYwMSBmb3JtYXQ6ICsgY3VycmVudFRpbWUiLCAibmFtZSI6ICJEYXRlVGltZS5Ub0lTT1N0cmluZyAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0IGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBpbiBJU08gZm9ybWF0IGluY2x1ZGluZyBtaWxsaXNlY29uZHMgaW4gR01UIHRpbWUgem9uZSwgZS5nLiAyMDEwLTAzLTIyIDIyOjQ1OjEyLjEyMy4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBjdXJyZW50RGF0ZVRpbWUgPSBEYXRlVGltZS5Ub0lTT1N0cmluZ1dpdGhNcygpXG4vLyBjdXJyZW50RGF0ZVRpbWUiLCAibmFtZSI6ICJEYXRlVGltZS5Ub0lTT1N0cmluZ1dpdGhNcyAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBpbiBJU08gZm9ybWF0IGluY2x1ZGluZyBtaWxsaXNlY29uZHMgaW4gR01UIHRpbWUgem9uZSwgZS5nLiAyMDEwLTAzLTIyIDIyOjQ1OjEyLjEyMy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY3VycmVudCBVbml4IGVwb2NoIHRpbWUgaW4gc2Vjb25kcy4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBjdXJyZW50TW9udGggPSBEYXRlVGltZS5Nb250aE51bWJlcigpXG4vLyBUaGUgY3VycmVudCBtb250aCBudW1iZXIgaXM6IGN1cnJlbnRNb250aFxuXG5JRiBjdXJyZW50TW9udGggPT0gMTIgVEhFTiB7XG4gICAgLy8gSXQncyBEZWNlbWJlciFcbn0gRUxTRSB7XG4gICAgLy8gSXQncyBub3QgRGVjZW1iZXIuXG59IiwgIm5hbWUiOiAiRGF0ZVRpbWUuVG9OdW1iZXIgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgVW5peCBlcG9jaCB0aW1lIGluIHNlY29uZHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBhcyBhIHN0cmluZyBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBmb3JtYXQgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGN1cnJlbnREYXRlVGltZSA9IERhdGVUaW1lLlRvU3RyaW5nKFwieXl5eS1NTS1kZCBISDptbTpzc1wiKVxuLy8gT3V0cHV0IGN1cnJlbnREYXRlVGltZSB0byB0aGUgY29uc29sZSIsICJuYW1lIjogIkRhdGVUaW1lLlRvU3RyaW5nIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBhcyBhIGZvcm1hdHRlZCBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgZm9ybWF0IGluIHdoaWNoIHRvIHJldHVybiB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUgZm9ybWF0dGVkIGFzIGEgc3RyaW5nIGluIENvbW1vbiBMb2cgRm9ybWF0IChERC9Nb24vWVlZWTpISDpNTTpTUyArWlpaWiksIHdpdGggdGhlIHRpbWUgYWRqdXN0ZWQgdG8gdGhlIGNvbnRleHQgdGltZXpvbmUgYW5kIHRoZSB0aW1lem9uZSBvZmZzZXQgYXBwZW5kZWQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBHZXQgdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZVxuRGF0ZVRpbWUgY3VycmVudERhdGVUaW1lID0gRGF0ZVRpbWUuTm93KClcblxuLy8gQ29udmVydCB0aGUgRGF0ZVRpbWUgb2JqZWN0IHRvIGEgd2ViIHJlcG9ydGVyIHN0cmluZ1xuU1RSSU5HIHdlYlJlcG9ydGVyU3RyaW5nID0gY3VycmVudERhdGVUaW1lLlRvV2ViUmVwb3J0ZXJTdHJpbmcoKVxuXG4vLyBMb2cgdGhlIHdlYiByZXBvcnRlciBzdHJpbmdcbi8vIEN1cnJlbnQgRGF0ZVRpbWUgaW4gV2ViIFJlcG9ydGVyIGZvcm1hdDogXCIgKyB3ZWJSZXBvcnRlclN0cmluZyIsICJuYW1lIjogIkRhdGVUaW1lLlRvV2ViUmVwb3J0ZXJTdHJpbmcgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIGFzIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQgREQvTW9uL1lZWVk6SEg6TU06U1MgK1paWlosIHdoZXJlIHRoZSB0aW1lIGlzIGFkanVzdGVkIGJ5IHRoZSBjb250ZXh0IHRpbWV6b25lIG9mZnNldCBhbmQgdGhlIG9mZnNldCBpcyBhcHBlbmRlZCBhcyBhIHNpZ25lZCBmb3VyLWRpZ2l0IHZhbHVlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjdXJyZW50IHllYXIgYXMgYSBudW1iZXIuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgY3VycmVudFllYXIgPSBEYXRlVGltZS5ZZWFyKClcbi8vIFRoZSBjdXJyZW50IHllYXIgaXM6IGN1cnJlbnRZZWFyIiwgIm5hbWUiOiAiRGF0ZVRpbWUuWWVhciAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBjdXJyZW50IHllYXIgYXMgYSBudW1iZXIuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGxhc3QgdHdvIGRpZ2l0cyBvZiB0aGUgY3VycmVudCB5ZWFyLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHllYXJUd29EaWdpdHMgPSBEYXRlVGltZS5ZZWFyVHdvRGlnaXRzKClcbi8vIFRoZSBsYXN0IHR3byBkaWdpdHMgb2YgdGhlIGN1cnJlbnQgeWVhciBhcmU6IHllYXJUd29EaWdpdHMiLCAibmFtZSI6ICJEYXRlVGltZS5ZZWFyVHdvRGlnaXRzICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGxhc3QgdHdvIGRpZ2l0cyBvZiB0aGUgY3VycmVudCB5ZWFyIGFzIGEgc3RyaW5nLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgZm9ybWF0dGluZyBmYWlscy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBETFAgc2VydmljZSB3YXMgY2FsbGVkIGZvciB0aGUgZ2l2ZW4gY2xhc3NpZmllci4iLCAiY29kZV9leGFtcGxlIjogIkRMUC5DbGFzc2lmaWVyIGNsYXNzaWZpZXIgPSAvLyBJbml0aWFsaXplIHlvdXIgY2xhc3NpZmllciBoZXJlXG5OVU1CRVIgY2FsbENvdW50ID0gRExQLkRMUFNlcnZpY2VDYWxsQ291bnQoY2xhc3NpZmllcilcblxuLy8gRExQIFNlcnZpY2UgQ2FsbCBDb3VudDogXCIgKyBjYWxsQ291bnRcblxuSUYgY2FsbENvdW50ID4gMTAgVEhFTiB7XG4gICAgLy8gRExQIFNlcnZpY2UgaGFzIGJlZW4gY2FsbGVkIG1vcmUgdGhhbiAxMCB0aW1lcy5cbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGNhbiBiZSBhZGRlZCBoZXJlXG59IiwgIm5hbWUiOiAiRExQLkRMUFNlcnZpY2VDYWxsQ291bnQgKERMUC5DbGFzc2lmaWVyKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIERMUCBzZXJ2aWNlIHdhcyBpbnZva2VkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgRExQLkNsYXNzaWZpZXJgOiBTcGVjaWZpZXMgdGhlIGNsYXNzaWZpZXIgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGNvdW50IERMUCBzZXJ2aWNlIGNhbGxzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHNldmVyaXR5IGxldmVsIG9mIHRoZSBnaXZlbiBpbmNpZGVudCBjb2xsZWN0b3IgaXMgYXQgbGVhc3QgdGhlIHNwZWNpZmllZCBsZXZlbCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJETFAuSW5jaWRlbnRDb2xsZWN0b3IgY29sbGVjdG9yXG5OVU1CRVIgdGhyZXNob2xkID0gNVxuXG4vLyBTdGFydCBhIERMUCBydWxlXG5ETFAuU3RhcnRSdWxlKGNvbGxlY3RvciwgXCJDaGVjayBmb3IgaW5jaWRlbnRzXCIpXG5cbi8vIENoZWNrIGlmIHRoZSBjb2xsZWN0b3IgaGFzIGF0IGxlYXN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGluY2lkZW50c1xuSUYgRExQLkhhc0F0TGVhc3QoY29sbGVjdG9yLCB0aHJlc2hvbGQpIFRIRU4ge1xuICAgIC8vIFRoZSBETFAgaW5jaWRlbnQgY29sbGVjdG9yIGhhcyBhdCBsZWFzdCB0aHJlc2hvbGQgaW5jaWRlbnRzLlxuICAgIC8vIFRha2Ugc29tZSBhY3Rpb24sIGZvciBleGFtcGxlLCBibG9jayB0aGUgY29ubmVjdGlvblxuICAgIE1XRy5CbG9jayhcIlRvbyBtYW55IERMUCBpbmNpZGVudHMgZGV0ZWN0ZWRcIilcbn0gRUxTRSB7XG4gICAgLy8gVGhlIERMUCBpbmNpZGVudCBjb2xsZWN0b3IgaGFzIGZld2VyIHRoYW4gdGhyZXNob2xkIGluY2lkZW50cy5cbiAgICAvLyBBbGxvdyB0aGUgY29ubmVjdGlvblxuICAgIE1XRy5BbGxvdyhcIkRMUCBpbmNpZGVudCBjb3VudCBpcyB3aXRoaW4gYWNjZXB0YWJsZSBsaW1pdHNcIilcbn0iLCAibmFtZSI6ICJETFAuSGFzQXRMZWFzdCAoRExQLkluY2lkZW50Q29sbGVjdG9yLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBzZXZlcml0eSBsZXZlbCBvZiB0aGUgaW5jaWRlbnQgaXMgYXQgbGVhc3QgdGhlIHNwZWNpZmllZCBsZXZlbCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBETFAuSW5jaWRlbnRDb2xsZWN0b3JgOiBDb2xsZWN0b3Igb2YgaW5jaWRlbnRzLlxuMi4gYE5VTUJFUmA6IFNldmVyaXR5IGxldmVsIHRvIHRlc3QgYWdhaW5zdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIkNoZWNrcyB3aGV0aGVyIGEgRExQIGNsYXNzaWZpY2F0aW9uIG1hdGNoZXMgdGhlIHJlcXVpcmVkIGRhdGEgbG9jYXRpb24uIiwgImNvZGVfZXhhbXBsZSI6ICJETFAuQ2xhc3NpZmllciBjbGFzc2lmaWVyID0gTVdHLkdldERMUENsYXNzaWZpZXIoKVxuRExQLkNsYXNzaWZpY2F0aW9uIGNsYXNzaWZpY2F0aW9uID0gVG9ETFBDbGFzc2lmaWNhdGlvbihcIkNvbmZpZGVudGlhbFwiKVxuTlVNQkVSIHVwbG9hZExvY2F0aW9uTWFzayA9IDFcbkJPT0xFQU4gaXNVcGxvYWRNYXRjaCA9IERMUC5Mb2NhdGlvbk1hdGNoKGNsYXNzaWZpZXIsIGNsYXNzaWZpY2F0aW9uLCB1cGxvYWRMb2NhdGlvbk1hc2spXG4vLyBpc1VwbG9hZE1hdGNoIGlzIFRSVUUgd2hlbiB0aGUgY2xhc3NpZmljYXRpb24gYXBwbGllcyB0byB1cGxvYWRzIiwgIm5hbWUiOiAiRExQLkxvY2F0aW9uTWF0Y2ggKERMUC5DbGFzc2lmaWVyLCBETFAuQ2xhc3NpZmljYXRpb24sIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGNsYXNzaWZpY2F0aW9uIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBsb2NhdGlvbiwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBETFAuQ2xhc3NpZmllcmA6IFRoZSBjbGFzc2lmaWVyIGNvbnRleHQuXG4yLiBgRExQLkNsYXNzaWZpY2F0aW9uYDogVGhlIGNsYXNzaWZpY2F0aW9uIHRvIHRlc3QuXG4zLiBgTlVNQkVSYDogVGhlIHJlcXVpcmVkIGxvY2F0aW9uIGlkZW50aWZpZXIgb3IgbWFzay4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBvYmplY3QgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIGNsYXNzaWZpY2F0aW9uLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIkRMUC5DbGFzc2lmaWVyIGNsYXNzaWZpZXIgPSBbUHJlZGVmaW5lZENsYXNzaWZpZXJdXG5ETFAuQ2xhc3NpZmljYXRpb24gY2xhc3NpZmljYXRpb24gPSBbT2JqZWN0VG9DbGFzc2lmeV1cblxuSUYgRExQLk1hdGNoKGNsYXNzaWZpZXIsIGNsYXNzaWZpY2F0aW9uKSBUSEVOIHtcbiAgICAvLyBUaGUgb2JqZWN0IG1hdGNoZXMgdGhlIHNwZWNpZmllZCBjbGFzc2lmaWNhdGlvbi5cbiAgICAvLyBUYWtlIHNvbWUgYWN0aW9uLCBlLmcuLCBibG9jayB0aGUgcmVxdWVzdFxuICAgIE1XRy5CbG9jayhcIkNvbnRlbnQgbWF0Y2hlcyByZXN0cmljdGVkIGNsYXNzaWZpY2F0aW9uLlwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGUgb2JqZWN0IGRvZXMgbm90IG1hdGNoIHRoZSBzcGVjaWZpZWQgY2xhc3NpZmljYXRpb24uXG4gICAgLy8gQWxsb3cgdGhlIHJlcXVlc3QgdG8gcHJvY2VlZFxuICAgIE1XRy5BbGxvdyhcIkNvbnRlbnQgZG9lcyBub3QgbWF0Y2ggcmVzdHJpY3RlZCBjbGFzc2lmaWNhdGlvbi5cIilcbn0iLCAibmFtZSI6ICJETFAuTWF0Y2ggKERMUC5DbGFzc2lmaWVyLCBETFAuQ2xhc3NpZmljYXRpb24pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBvYmplY3QgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIGNsYXNzaWZpY2F0aW9uLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYERMUC5DbGFzc2lmaWVyYDogVGhlIHByZWRlZmluZWQgY3JpdGVyaWEgb3IgbW9kZWwgb2JqZWN0IGZvciBjbGFzc2lmaWNhdGlvbi5cbjIuIGBETFAuQ2xhc3NpZmljYXRpb25gOiBUaGUgb2JqZWN0IG9yIGVudGl0eSB0byBiZSB0ZXN0ZWQgYWdhaW5zdCB0aGUgY2xhc3NpZmllci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY29uc3RhbnQgZW51bWVyYXRlZCB2YWx1ZSBmb3IgdGhlICdhdHRhY2htZW50cycgc2NhbiBsb2NhdGlvbiwgZm9yIHVzZSB3aXRoIGBETFAuTG9jYXRpb25NYXRjaGAuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgRExQLlNjYW5BdHRhY2htZW50cygpXG5OVU1CRVIgc2NhbkxvY2F0aW9uID0gRExQLlNjYW5BdHRhY2htZW50cygpXG5OVU1CRVIgcmVxdWVzdGVkTG9jYXRpb24gPSBzY2FuTG9jYXRpb25cbkJPT0xFQU4gaXNBdHRhY2htZW50U2NhbiA9IHJlcXVlc3RlZExvY2F0aW9uID09IHNjYW5Mb2NhdGlvblxuLy8gaXNBdHRhY2htZW50U2NhbiBub3cgZXF1YWxzIFRSVUUiLCAibmFtZSI6ICJETFAuU2NhbkF0dGFjaG1lbnRzICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGVudW1lcmF0ZWQgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSAnYXR0YWNobWVudHMnIHNjYW4gbG9jYXRpb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGNvbnN0YW50IGVudW1lcmF0ZWQgdmFsdWUgZm9yIHRoZSAnZXZlcnl3aGVyZScgc2NhbiBsb2NhdGlvbiwgZm9yIHVzZSB3aXRoIGBETFAuTG9jYXRpb25NYXRjaGAuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgc2NhbkxvY2F0aW9uID0gRExQLlNjYW5FdmVyeXdoZXJlXG5OVU1CRVIgcmVxdWlyZWRMb2NhdGlvbiA9IERMUC5TY2FuRXZlcnl3aGVyZVxuQk9PTEVBTiBzY2FuQWxsTG9jYXRpb25zID0gc2NhbkxvY2F0aW9uID09IHJlcXVpcmVkTG9jYXRpb25cbi8vIHNjYW5BbGxMb2NhdGlvbnMgbm93IGVxdWFscyBUUlVFIiwgIm5hbWUiOiAiRExQLlNjYW5FdmVyeXdoZXJlICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGVudW1lcmF0ZWQgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSAnZXZlcnl3aGVyZScgc2NhbiBsb2NhdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY29uc3RhbnQgZW51bWVyYXRlZCB2YWx1ZSBmb3IgdGhlICdoZWFkZXJzJyBzY2FuIGxvY2F0aW9uLCBmb3IgdXNlIHdpdGggYERMUC5Mb2NhdGlvbk1hdGNoYC4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBoZWFkZXJMb2NhdGlvbiA9IERMUC5TY2FuSGVhZGVycygpXG5OVU1CRVIgc2NhbkxvY2F0aW9uID0gaGVhZGVyTG9jYXRpb25cbkJPT0xFQU4gaW5zcGVjdFJlcXVlc3RIZWFkZXJzID0gRkFMU0VcbklGIChzY2FuTG9jYXRpb24gPT0gaGVhZGVyTG9jYXRpb24pIFRIRU4ge1xuICBpbnNwZWN0UmVxdWVzdEhlYWRlcnMgPSBUUlVFXG59IiwgIm5hbWUiOiAiRExQLlNjYW5IZWFkZXJzICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGVudW1lcmF0ZWQgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSAnaGVhZGVycycgc2NhbiBsb2NhdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbnVtZXJpYyBjb25zdGFudCByZXByZXNlbnRpbmcgdGhlIGNyaXRpY2FsIGluY2lkZW50IHNldmVyaXR5IGxldmVsLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIHNldmVyaXR5TGV2ZWwgPSBETFAuU2V2ZXJpdHlDcml0aWNhbCgpXG5cbklGIHNldmVyaXR5TGV2ZWwgPiA1IFRIRU4ge1xuICAgIC8vIEluY2lkZW50IHNldmVyaXR5IGlzIGNyaXRpY2FsLlxuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBibG9ja2VkIGR1ZSB0byBjcml0aWNhbCBpbmNpZGVudCBzZXZlcml0eS5cIilcbn0gRUxTRSB7XG4gICAgLy8gSW5jaWRlbnQgc2V2ZXJpdHkgaXMgbm90IGNyaXRpY2FsLlxuICAgIE1XRy5BbGxvdyhcIkluY2lkZW50IHNldmVyaXR5IGlzIGFjY2VwdGFibGUuXCIpXG59IiwgIm5hbWUiOiAiRExQLlNldmVyaXR5Q3JpdGljYWwgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIG51bWJlciByZXByZXNlbnRpbmcgdGhlIHNldmVyaXR5IGxldmVsIG9mIGEgY3JpdGljYWwgaW5jaWRlbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG51bWVyaWMgY29uc3RhbnQgcmVwcmVzZW50aW5nIHRoZSBpbmZvcm1hdGlvbmFsIGluY2lkZW50IHNldmVyaXR5IGxldmVsLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIHNldmVyaXR5TGV2ZWwgPSBETFAuU2V2ZXJpdHlJbmZvKClcbi8vIFRoZSBzZXZlcml0eSBsZXZlbCBvZiBhbiBpbmZvcm1hdGlvbmFsIGluY2lkZW50IGlzOiBcIiArIHNldmVyaXR5TGV2ZWxcblxuSUYgc2V2ZXJpdHlMZXZlbCA+IDAgVEhFTiB7XG4gICAgLy8gVGhpcyBpcyBhbiBpbmZvcm1hdGlvbmFsIGluY2lkZW50IHdpdGggYSBub24temVybyBzZXZlcml0eSBsZXZlbC5cbn0gRUxTRSB7XG4gICAgLy8gVGhpcyBpcyBhbiBpbmZvcm1hdGlvbmFsIGluY2lkZW50IHdpdGggYSB6ZXJvIHNldmVyaXR5IGxldmVsLlxufSIsICJuYW1lIjogIkRMUC5TZXZlcml0eUluZm8gKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIG51bWVyaWMgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBzZXZlcml0eSBsZXZlbCBvZiBhbiBpbmZvcm1hdGlvbmFsIGluY2lkZW50LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBudW1lcmljIGNvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgbWFqb3IgaW5jaWRlbnQgc2V2ZXJpdHkgbGV2ZWwuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgbWFqb3JTZXZlcml0eSA9IERMUC5TZXZlcml0eU1ham9yKClcblxuLy8gU2ltdWxhdGUgZ2V0dGluZyB0aGUgY3VycmVudCBpbmNpZGVudCBzZXZlcml0eSAodGhpcyBwYXJ0IGlzIGh5cG90aGV0aWNhbClcbk5VTUJFUiBjdXJyZW50U2V2ZXJpdHkgPSBHZXRDdXJyZW50SW5jaWRlbnRTZXZlcml0eSgpIC8vIEFzc3VtZSB0aGlzIGZ1bmN0aW9uIGV4aXN0cyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBpbmNpZGVudCBzZXZlcml0eVxuXG5JRiBjdXJyZW50U2V2ZXJpdHkgPT0gbWFqb3JTZXZlcml0eSBUSEVOIHtcbiAgICAvLyBcIkluY2lkZW50IHNldmVyaXR5IGlzIG1ham9yLlwiXG4gICAgLy8gVGFrZSBhcHByb3ByaWF0ZSBhY3Rpb24gZm9yIG1ham9yIGluY2lkZW50c1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBibG9ja2VkIGR1ZSB0byBtYWpvciBpbmNpZGVudCBzZXZlcml0eS5cIilcbn0gRUxTRSB7XG4gICAgLy8gXCJJbmNpZGVudCBzZXZlcml0eSBpcyBub3QgbWFqb3IuXCJcbiAgICAvLyBUYWtlIGFwcHJvcHJpYXRlIGFjdGlvbiBmb3Igbm9uLW1ham9yIGluY2lkZW50c1xuICAgIE1XRy5BbGxvdyhcIkluY2lkZW50IHNldmVyaXR5IGlzIG5vdCBtYWpvci5cIilcbn0iLCAibmFtZSI6ICJETFAuU2V2ZXJpdHlNYWpvciAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgY29uc3RhbnQgbnVtZXJpYyB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIHNldmVyaXR5IGxldmVsIG9mIGEgbWFqb3IgaW5jaWRlbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG51bWVyaWMgY29uc3RhbnQgcmVwcmVzZW50aW5nIHRoZSBtaW5vciBpbmNpZGVudCBzZXZlcml0eSBsZXZlbC4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBzZXZlcml0eUxldmVsID0gRExQLlNldmVyaXR5TWFqb3IoKVxuXG5JRiBzZXZlcml0eUxldmVsID4gNSBUSEVOIHtcbiAgICAvLyBNYWpvciBzZXZlcml0eSBsZXZlbCBkZXRlY3RlZDogXG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIGJsb2NrZWQgZHVlIHRvIG1ham9yIHNldmVyaXR5IGxldmVsXCIpXG59IEVMU0Uge1xuICAgIC8vIFNldmVyaXR5IGxldmVsIGlzIGFjY2VwdGFibGU6IFxuICAgIE1XRy5BbGxvdyhcIlNldmVyaXR5IGxldmVsIGNoZWNrIHBhc3NlZFwiKVxufSIsICJuYW1lIjogIkRMUC5TZXZlcml0eU1pbm9yICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBjb25zdGFudCBudW1lcmljYWwgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBzZXZlcml0eSBsZXZlbCBvZiBhIG1pbm9yIGluY2lkZW50LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBudW1lcmljIGNvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgd2FybmluZyBpbmNpZGVudCBzZXZlcml0eSBsZXZlbC4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBzZXZlcml0eSA9IERMUC5TZXZlcml0eVdhcm5pbmcoKVxuXG5JRiBzZXZlcml0eSA+IDUgVEhFTiB7XG4gICAgLy8gSGlnaCBzZXZlcml0eSB3YXJuaW5nIGRldGVjdGVkOiBcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgYmxvY2tlZCBkdWUgdG8gaGlnaCBzZXZlcml0eSB3YXJuaW5nLlwiKVxufSBFTFNFIHtcbiAgICAvLyBMb3cgc2V2ZXJpdHkgd2FybmluZyBkZXRlY3RlZDogXG4gICAgTVdHLkFsbG93KFwiTG93IHNldmVyaXR5IHdhcm5pbmcsIGFjY2VzcyBhbGxvd2VkLlwiKVxufSIsICJuYW1lIjogIkRMUC5TZXZlcml0eVdhcm5pbmcgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIHNldmVyaXR5IGxldmVsIG9mIGEgd2FybmluZyBpbmNpZGVudC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJETFAuSW5jaWRlbnRDb2xsZWN0b3IiLCAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIG5ldyBgRExQLkluY2lkZW50Q29sbGVjdG9yYCBmb3IgdGhlIHNwZWNpZmllZCBjbGFzc2lmaWVyIGFuZCByb3V0aW5lIG5hbWUuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgYSBETFAuQ2xhc3NpZmllciBvYmplY3RcbkRMUC5DbGFzc2lmaWVyIGNsYXNzaWZpZXIgPSBETFAuQ2xhc3NpZmllcihcIlNlbnNpdGl2ZURhdGFcIik7XG5cbi8vIFN0YXJ0IGEgRExQIHJvdXRpbmUgd2l0aCB0aGUgY2xhc3NpZmllciBhbmQgYSBuYW1lIGZvciB0aGUgcm91dGluZVxuRExQLkluY2lkZW50Q29sbGVjdG9yIGluY2lkZW50Q29sbGVjdG9yID0gRExQLlN0YXJ0Um91dGluZShjbGFzc2lmaWVyLCBcIkV4YW1wbGVSb3V0aW5lXCIpO1xuXG4vLyBQZXJmb3JtIGFkZGl0aW9uYWwgYWN0aW9ucyB3aXRoIHRoZSBpbmNpZGVudENvbGxlY3RvciBpZiBuZWVkZWRcbi8vIEZvciBleGFtcGxlLCB5b3UgbWlnaHQgd2FudCB0byBsb2cgdGhlIGluY2lkZW50IG9yIHRha2Ugc29tZSBhY3Rpb24gYmFzZWQgb24gdGhlIGNsYXNzaWZpY2F0aW9uXG4vLyBETFAgcm91dGluZSBzdGFydGVkIHdpdGggY2xhc3NpZmllcjogXCIgKyBjbGFzc2lmaWVyICsgXCIgYW5kIHJvdXRpbmUgbmFtZTogRXhhbXBsZVJvdXRpbmUiLCAibmFtZSI6ICJETFAuU3RhcnRSb3V0aW5lIChETFAuQ2xhc3NpZmllciwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbmV3IGBETFAuSW5jaWRlbnRDb2xsZWN0b3JgIG9iamVjdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYERMUC5DbGFzc2lmaWVyYDogU3BlY2lmaWVzIHRoZSBkYXRhIGNsYXNzaWZpY2F0aW9uIG1ldGhvZCB0byB1c2UuXG4yLiBgU1RSSU5HYDogVGhlIGlkZW50aWZpZXIgb3IgbmFtZSBmb3IgdGhlIHJvdXRpbmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIkRlY29kZXMgYSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgZW5jb2RlZFN0cmluZyA9IFwiU0dWc2JHOGdWMjl5YkdRaFwiICAvLyBUaGlzIGlzIFwiSGVsbG8gV29ybGQhXCIgaW4gYmFzZTY0XG5TVFJJTkcgZGVjb2RlZFN0cmluZyA9IEVuY29kaW5nLkJhc2U2NERlY29kZShlbmNvZGVkU3RyaW5nKVxuLy8gRGVjb2RlZCBTdHJpbmc6IFwiICsgZGVjb2RlZFN0cmluZyIsICJuYW1lIjogIkVuY29kaW5nLkJhc2U2NERlY29kZSAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBvcmlnaW5hbCBzdHJpbmcgdGhhdCB3YXMgYmFzZTY0IGVuY29kZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgYmFzZTY0LWVuY29kZWQgc3RyaW5nIHRvIGRlY29kZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYmFzZTY0LWVuY29kZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRhdGEuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgZGF0YSA9IFwiSGVsbG8sIFdvcmxkIVwiXG5TVFJJTkcgZW5jb2RlZERhdGEgPSBFbmNvZGluZy5CYXNlNjRVUkxFbmNvZGUoZGF0YSlcbi8vIEVuY29kZWQgRGF0YTogXCIgKyBlbmNvZGVkRGF0YSIsICJuYW1lIjogIkVuY29kaW5nLkJhc2U2NEVuY29kZSAoREFUQVJFRikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYmFzZTY0LWVuY29kZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlucHV0IGRhdGEsIG9yIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgZGF0YSByZWZlcmVuY2UgaXMgbnVsbC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYERBVEFSRUZgOiBUaGUgZGF0YSB0byBiZSBlbmNvZGVkIGluIGJhc2U2NCBmb3JtYXQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGJhc2U2NC1lbmNvZGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgb3JpZ2luYWxUZXh0ID0gXCJIZWxsbywgV29ybGQhXCJcblNUUklORyBlbmNvZGVkVGV4dCA9IEVuY29kaW5nLkJhc2U2NEVuY29kZShvcmlnaW5hbFRleHQpXG4vLyBPcmlnaW5hbCBUZXh0OiBIZWxsbywgV29ybGQhXG4vLyBFbmNvZGVkIFRleHQ6IFNHVnNiRzhzSUZkdmNteGtJUT09IiwgIm5hbWUiOiAiRW5jb2RpbmcuQmFzZTY0RW5jb2RlIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIEJhc2U2NC1lbmNvZGVkIHZlcnNpb24gb2YgdGhlIGlucHV0IHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBpbnB1dCB0ZXh0IHRvIGJlIGVuY29kZWQgaW4gYmFzZTY0IGZvcm1hdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiRGVjb2RlcyBhIGJhc2U2NC1VUkwtZW5jb2RlZCBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgZW5jb2RlZFN0cmluZyA9IFwiU0dWc2JHOGdWMjl5YkdRaFwiICAvLyBUaGlzIGlzIFwiSGVsbG8gV29ybGQhXCIgaW4gYmFzZTY0LVVSTC1lbmNvZGVkIGZvcm1cblNUUklORyBkZWNvZGVkU3RyaW5nID0gRW5jb2RpbmcuQmFzZTY0VVJMRGVjb2RlKGVuY29kZWRTdHJpbmcpXG4vLyBEZWNvZGVkIFN0cmluZzogXCIgKyBkZWNvZGVkU3RyaW5nIiwgIm5hbWUiOiAiRW5jb2RpbmcuQmFzZTY0VVJMRGVjb2RlIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGRlY29kZWQgc3RyaW5nIGZyb20gYSBiYXNlNjQtVVJMLWVuY29kZWQgaW5wdXQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgYmFzZTY0LVVSTC1lbmNvZGVkIHN0cmluZyB0byBkZWNvZGUuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGJhc2U2NC1VUkwtZW5jb2RlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZGF0YS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBkYXRhID0gXCJIZWxsbywgV29ybGQhXCJcblNUUklORyBlbmNvZGVkRGF0YSA9IEVuY29kaW5nLkJhc2U2NFVSTEVuY29kZShkYXRhKVxuLy8gRW5jb2RlZCBEYXRhOiBcIiArIGVuY29kZWREYXRhIiwgIm5hbWUiOiAiRW5jb2RpbmcuQmFzZTY0VVJMRW5jb2RlIChEQVRBUkVGKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBiYXNlNjQtVVJMLWVuY29kZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnB1dCBkYXRhLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGlucHV0IGRhdGEgaXMgbnVsbC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYERBVEFSRUZgOiBUaGUgZGF0YSB0byBiZSBlbmNvZGVkIGludG8gYmFzZTY0IFVSTC1zYWZlIGZvcm1hdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYmFzZTY0LVVSTC1lbmNvZGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgb3JpZ2luYWxTdHJpbmcgPSBcIkhlbGxvLCBXb3JsZCFcIlxuU1RSSU5HIGVuY29kZWRTdHJpbmcgPSBFbmNvZGluZy5CYXNlNjRVUkxFbmNvZGUob3JpZ2luYWxTdHJpbmcpXG4vLyBPcmlnaW5hbCBTdHJpbmc6IEhlbGxvLCBXb3JsZCFcbi8vIEVuY29kZWQgU3RyaW5nOiBTR1ZzYkc4c0lGZHZjbXhrSVE9PSIsICJuYW1lIjogIkVuY29kaW5nLkJhc2U2NFVSTEVuY29kZSAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBpbnB1dCBzdHJpbmcgZW5jb2RlZCBpbiBhIEJhc2U2NCBmb3JtYXQgc3VpdGFibGUgZm9yIHVzZSBpbiBVUkxzLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byBlbmNvZGUgaW4gYmFzZTY0LVVSTCBmb3JtYXQuIn0sIHsicmV0dXJuX3R5cGUiOiAiREFUQVJFRiIsICJkZXNjcmlwdGlvbiI6ICJEZWNvZGVzIGEgYmFzZTY0LWVuY29kZWQgc3RyaW5nIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgYmluYXJ5IGRhdGEgYXMgYSBgREFUQVJFRmAuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgZW5jb2RlZFN0cmluZyA9IFwiU0dWc2JHOGdWMjl5YkdRaFwiICAvLyBUaGlzIGlzIFwiSGVsbG8gV29ybGQhXCIgaW4gQmFzZTY0XG5TVFJJTkcgZGVjb2RlZFN0cmluZyA9IEVuY29kaW5nLkRhdGFSZWZCYXNlNjREZWNvZGUoZW5jb2RlZFN0cmluZylcblxuLy8gRW5jb2RlZCBTdHJpbmc6IFwiICsgZW5jb2RlZFN0cmluZ1xuLy8gRGVjb2RlZCBTdHJpbmc6IFwiICsgZGVjb2RlZFN0cmluZyIsICJuYW1lIjogIkVuY29kaW5nLkRhdGFSZWZCYXNlNjREZWNvZGUgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGBEQVRBUkVGYCBjb250YWluaW5nIHRoZSBiaW5hcnkgZGF0YSBkZWNvZGVkIGZyb20gdGhlIGdpdmVuIGJhc2U2NC1lbmNvZGVkIHN0cmluZywgb3IgYW4gZW1wdHkgYERBVEFSRUZgIGlmIGRlY29kaW5nIGZhaWxzLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGJhc2U2NCBlbmNvZGVkIGRhdGEgdG8gYmUgZGVjb2RlZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJEQVRBUkVGIiwgImRlc2NyaXB0aW9uIjogIkRlY29kZXMgYSBiYXNlNjQtVVJMLWVuY29kZWQgc3RyaW5nIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgZGF0YSBhcyBhIGBEQVRBUkVGYC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBlbmNvZGVkU3RyaW5nID0gXCJVMjl0WlVKaGMyVTJORlZTVEVWdVkyOWtaV1JUZEhKcGJtY1wiICAvLyBFeGFtcGxlIEJhc2U2NFVSTCBlbmNvZGVkIHN0cmluZ1xuU1RSSU5HIGRlY29kZWRTdHJpbmcgPSBFbmNvZGluZy5EYXRhUmVmQmFzZTY0VVJMRGVjb2RlKGVuY29kZWRTdHJpbmcpXG5cbi8vIEVuY29kZWQgU3RyaW5nOiBcIiArIGVuY29kZWRTdHJpbmdcbi8vIERlY29kZWQgU3RyaW5nOiBcIiArIGRlY29kZWRTdHJpbmciLCAibmFtZSI6ICJFbmNvZGluZy5EYXRhUmVmQmFzZTY0VVJMRGVjb2RlIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBgREFUQVJFRmAgY29udGFpbmluZyB0aGUgZGF0YSBkZWNvZGVkIGZyb20gdGhlIGdpdmVuIGJhc2U2NC1VUkwtZW5jb2RlZCBzdHJpbmcsIG9yIGFuIGVtcHR5IGBEQVRBUkVGYCBpZiBkZWNvZGluZyBmYWlscy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBiYXNlNjQtVVJMLWVuY29kZWQgZGF0YSB0byBiZSBkZWNvZGVkLiJ9LCB7InJldHVybl90eXBlIjogIkRBVEFSRUYiLCAiZGVzY3JpcHRpb24iOiAiRGVjb2RlcyBhIGhleC1lbmNvZGVkIHN0cmluZyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIGRhdGEgYXMgYSBgREFUQVJFRmAuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgaGV4RW5jb2RlZFN0cmluZyA9IFwiNDg2NTZjNmM2ZjIwNTc2ZjcyNmM2NFwiICAvLyBUaGlzIGlzIFwiSGVsbG8gV29ybGRcIiBpbiBoZXhcblNUUklORyBkZWNvZGVkU3RyaW5nID0gRW5jb2RpbmcuRGF0YVJlZkhleERlY29kZShoZXhFbmNvZGVkU3RyaW5nKVxuLy8gRGVjb2RlZCBTdHJpbmc6IFwiICsgZGVjb2RlZFN0cmluZ1xuXG5JbiB0aGlzIGV4YW1wbGU6XG4tIFdlIGluaXRpYWxpemUgYSBgU1RSSU5HYCB2YXJpYWJsZSBgaGV4RW5jb2RlZFN0cmluZ2Agd2l0aCBhIGhleGFkZWNpbWFsLWVuY29kZWQgc3RyaW5nLlxuLSBXZSB1c2UgdGhlIGBFbmNvZGluZy5EYXRhUmVmSGV4RGVjb2RlYCBmdW5jdGlvbiB0byBkZWNvZGUgdGhlIGhleGFkZWNpbWFsIHN0cmluZyBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUgYGRlY29kZWRTdHJpbmdgIHZhcmlhYmxlLlxuLSBGaW5hbGx5LCB3ZSBwcmludCB0aGUgZGVjb2RlZCBzdHJpbmcgdG8gdGhlIGNvbnNvbGUgdXNpbmcgdGhlIGBERUJVRygpYCBmdW5jdGlvbi5cblxuV2hlbiB0aGlzIHJvdXRpbmUgcnVucywgaXQgd2lsbCBvdXRwdXQ6XG5cbkRlY29kZWQgU3RyaW5nOiBIZWxsbyBXb3JsZCIsICJuYW1lIjogIkVuY29kaW5nLkRhdGFSZWZIZXhEZWNvZGUgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGBEQVRBUkVGYCBjb250YWluaW5nIHRoZSBkYXRhIGRlY29kZWQgZnJvbSB0aGUgZ2l2ZW4gaGV4LWVuY29kZWQgc3RyaW5nLCBvciBhIG51bGwgYERBVEFSRUZgIGlmIHRoZSBpbnB1dCBzdHJpbmcgaXMgZW1wdHkuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgaGV4LWVuY29kZWQgaW5wdXQgdG8gYmUgZGVjb2RlZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiRGVjb2RlcyBhIGhleC1lbmNvZGVkIHN0cmluZyBhbmQgcmV0dXJucyB0aGUgZGVjb2RlZCByZXN1bHQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgaGV4U3RyaW5nID0gXCI0ODY1NmM2YzZmMjA1NzZmNzI2YzY0XCIgIC8vIEhleC1lbmNvZGVkIHN0cmluZyBmb3IgXCJIZWxsbyBXb3JsZFwiXG5TVFJJTkcgZGVjb2RlZFN0cmluZyA9IEVuY29kaW5nLkhleERlY29kZShoZXhTdHJpbmcpXG4vLyBEZWNvZGVkIFN0cmluZzogXCIgKyBkZWNvZGVkU3RyaW5nIiwgIm5hbWUiOiAiRW5jb2RpbmcuSGV4RGVjb2RlIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdHJpbmcgZGVjb2RlZCBmcm9tIHRoZSBpbnB1dCBoZXggc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGhleC1lbmNvZGVkIHN0cmluZyB0byBkZWNvZGUuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGhleGFkZWNpbWFsLWVuY29kZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRhdGEuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgd2UgaGF2ZSBhIGRhdGEgcmVmZXJlbmNlLCBmb3IgZXhhbXBsZSwgYSBzdHJpbmdcblNUUklORyBkYXRhID0gXCJIZWxsbywgTU9XR0xJIVwiXG5cbi8vIEVuY29kZSB0aGUgZGF0YSBpbnRvIGhleGFkZWNpbWFsIGZvcm1hdFxuU1RSSU5HIGhleEVuY29kZWREYXRhID0gRW5jb2RpbmcuSGV4RW5jb2RlKGRhdGEpXG5cbi8vIEhleCBFbmNvZGVkIERhdGE6IFxuLy8gKyBoZXhFbmNvZGVkRGF0YSIsICJuYW1lIjogIkVuY29kaW5nLkhleEVuY29kZSAoREFUQVJFRikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMgcmVwcmVzZW50aW5nIHRoZSBlbmNvZGVkIGlucHV0IGRhdGEuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBEQVRBUkVGYDogVGhlIGRhdGEgcmVmZXJlbmNlIHRvIGJlIGVuY29kZWQgaW50byBoZXggZGlnaXRzLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBoZXhhZGVjaW1hbC1lbmNvZGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgb3JpZ2luYWxTdHJpbmcgPSBcIkhlbGxvLCBNT1dHTEkhXCJcblNUUklORyBoZXhFbmNvZGVkU3RyaW5nID0gRW5jb2RpbmcuSGV4RW5jb2RlKG9yaWdpbmFsU3RyaW5nKVxuLy8gT3JpZ2luYWwgU3RyaW5nOiBIZWxsbywgTU9XR0xJIVxuLy8gSGV4IEVuY29kZWQgU3RyaW5nOiBIZXggZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBvcmlnaW5hbCBzdHJpbmciLCAibmFtZSI6ICJFbmNvZGluZy5IZXhFbmNvZGUgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbG93ZXJjYXNlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnB1dCBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgdGV4dCBpbnB1dCB0byBiZSBlbmNvZGVkIGludG8gaGV4YWRlY2ltYWwgZGlnaXRzLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJEZWNvZGVzIGEgVVJMIGVuY29kaW5nIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGVuY29kZWRVUkwgPSBcImh0dHBzJTNBJTJGJTJGd3d3LmV4YW1wbGUuY29tJTJGc2VhcmNoJTNGcSUzRHRlc3QlMjZsYW5nJTNEZW5cIlxuU1RSSU5HIGRlY29kZWRVUkwgPSBFbmNvZGluZy5VUkxEZWNvZGUoZW5jb2RlZFVSTClcbi8vIERlY29kZWQgVVJMOiBcIiArIGRlY29kZWRVUkwiLCAibmFtZSI6ICJFbmNvZGluZy5VUkxEZWNvZGUgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHRoZSBkZWNvZGVkIHZlcnNpb24gb2YgdGhlIGdpdmVuIFVSTC1lbmNvZGVkIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBVUkwtZW5jb2RlZCBzdHJpbmcgdG8gZGVjb2RlLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBVUkwtZW5jb2RlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIG9yaWdpbmFsU3RyaW5nID0gXCJIZWxsbyBXb3JsZCEgVGhpcyBpcyBhIHRlc3QuXCJcblNUUklORyBlbmNvZGVkU3RyaW5nID0gRW5jb2RpbmcuVVJMRW5jb2RlKG9yaWdpbmFsU3RyaW5nKVxuLy8gT3JpZ2luYWwgU3RyaW5nOiBIZWxsbyBXb3JsZCEgVGhpcyBpcyBhIHRlc3QuXG4vLyBFbmNvZGVkIFN0cmluZzogSGVsbG8lMjBXb3JsZCUyMSUyMFRoaXMlMjBpcyUyMGElMjB0ZXN0LiIsICJuYW1lIjogIkVuY29kaW5nLlVSTEVuY29kZSAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBpbnB1dCBzdHJpbmcgZW5jb2RlZCBpbiBhIGZvcm1hdCBzdWl0YWJsZSBmb3IgaW5jbHVzaW9uIGluIGEgVVJMLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHRleHQgaW5wdXQgdG8gYmUgZW5jb2RlZCBhcyBhIFVSTC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBmaXJzdCBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzZWNvbmQgc3RyaW5nLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuU1RSSU5HIHVybFN0cmluZyA9IGN1cnJlbnRVcmwuVG9TdHJpbmcoKVxuXG5JRiBFbmRzV2l0aCh1cmxTdHJpbmcsIFwiLmV4ZVwiKSBUSEVOIHtcbiAgICAvLyBFeGVjdXRhYmxlIGZpbGVzIGFyZSBub3QgYWxsb3dlZFxuICAgIE1XRy5CbG9jaygpXG59IEVMU0Uge1xuICAgIC8vIFVSTCBkb2VzIG5vdCBlbmQgd2l0aCAuZXhlXG4gICAgTVdHLkFsbG93KClcbn0iLCAibmFtZSI6ICJFbmRzV2l0aCAoU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBmaXJzdCBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzZWNvbmQgc3RyaW5nLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gY2hlY2suXG4yLiBgU1RSSU5HYDogVGhlIHN1ZmZpeCB0byBtYXRjaCBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGZpcnN0IHN0cmluZyBlbmRzIHdpdGggdGhlIHNlY29uZCBzdHJpbmcsIGlnbm9yaW5nIGNhc2UsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5TVFJJTkcgdXJsU3RyaW5nID0gY3VycmVudFVybC5Ub1N0cmluZygpXG5cbklGIEVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKHVybFN0cmluZywgXCIuanBnXCIpIFRIRU4ge1xuICAgIC8vIFRoZSBVUkwgZW5kcyB3aXRoIC5qcGcgKGNhc2UgaW5zZW5zaXRpdmUpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBVUkwgZG9lcyBub3QgZW5kIHdpdGggLmpwZyAoY2FzZSBpbnNlbnNpdGl2ZSlcbn0iLCAibmFtZSI6ICJFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSAoU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBmaXJzdCBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzZWNvbmQgc3RyaW5nIChjYXNlLWluc2Vuc2l0aXZlKSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc3RyaW5nIHRvIGNoZWNrLlxuMi4gYFNUUklOR2A6IFRoZSBzdWZmaXggdG8gbWF0Y2ggYWdhaW5zdCAoY2FzZS1pbnNlbnNpdGl2ZSkuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgdHdvIHN0cmluZ3MgYXJlIGVxdWFsLCBpZ25vcmluZyBjYXNlLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBzdHJpbmcxID0gXCJIZWxsb1dvcmxkXCJcblNUUklORyBzdHJpbmcyID0gXCJoZWxsb3dvcmxkXCJcblxuSUYgRXF1YWxzQ2FzZUluc2Vuc2l0aXZlKHN0cmluZzEsIHN0cmluZzIpIFRIRU4ge1xuICAgIC8vIFRoZSBzdHJpbmdzIGFyZSBlcXVhbCAoY2FzZSBpbnNlbnNpdGl2ZSkuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBzdHJpbmdzIGFyZSBub3QgZXF1YWwuXG59IiwgIm5hbWUiOiAiRXF1YWxzQ2FzZUluc2Vuc2l0aXZlIChTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHR3byBzdHJpbmdzIGFyZSBlcXVhbCAoY2FzZS1pbnNlbnNpdGl2ZSksIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGZpcnN0IHN0cmluZyB0byBjb21wYXJlIGZvciBjYXNlLWluc2Vuc2l0aXZlIGVxdWFsaXR5LlxuMi4gYFNUUklOR2A6IFRoZSBzZWNvbmQgc3RyaW5nIHRvIGNvbXBhcmUgZm9yIGNhc2UtaW5zZW5zaXRpdmUgZXF1YWxpdHkuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIkVyYXNlcyBmcm9tIHRoZSBnaXZlbiBwb3NpdGlvbiB1cCB0byB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgb3JpZ2luYWxTdHJpbmcgPSBcIkhlbGxvLCBXb3JsZCFcIlxuTlVNQkVSIHBvc2l0aW9uID0gNVxuXG5TVFJJTkcgcmVzdWx0U3RyaW5nID0gRXJhc2Uob3JpZ2luYWxTdHJpbmcsIHBvc2l0aW9uKVxuXG4vLyBPcmlnaW5hbCBTdHJpbmc6IFwiICsgb3JpZ2luYWxTdHJpbmdcbi8vIFBvc2l0aW9uOiBcIiArIHBvc2l0aW9uXG4vLyBSZXN1bHRpbmcgU3RyaW5nOiBcIiArIHJlc3VsdFN0cmluZyIsICJuYW1lIjogIkVyYXNlIChTVFJJTkcsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLCBvciB0aGUgb3JpZ2luYWwgc3RyaW5nIHVuY2hhbmdlZCBpZiB0aGUgcG9zaXRpb24gaXMgbmVnYXRpdmUgb3IgZXhjZWVkcyB0aGUgc3RyaW5nIGxlbmd0aC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gZXJhc2UgY2hhcmFjdGVycyBmcm9tLlxuMi4gYE5VTUJFUmA6IFRoZSBwb3NpdGlvbiBmcm9tIHdoaWNoIHRvIGVyYXNlIHRvIHRoZSBlbmQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIkVyYXNlcyBmcm9tIGdpdmVuIHBvc2l0aW9uIHRoZSBnaXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycyAob3IgdXAgdG8gdGhlIGVuZCBpZiBsZW5ndGggaXMgbmVnYXRpdmUpIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgb3JpZ2luYWxTdHJpbmcgPSBcIkhlbGxvLCBXb3JsZCFcIlxuTlVNQkVSIHN0YXJ0UG9zaXRpb24gPSA3XG5OVU1CRVIgbGVuZ3RoVG9SZW1vdmUgPSA1XG5cbi8vIFVzaW5nIHRoZSBFcmFzZSBmdW5jdGlvbiB0byByZW1vdmUgXCJXb3JsZFwiIGZyb20gdGhlIG9yaWdpbmFsIHN0cmluZ1xuU1RSSU5HIG1vZGlmaWVkU3RyaW5nID0gRXJhc2Uob3JpZ2luYWxTdHJpbmcsIHN0YXJ0UG9zaXRpb24sIGxlbmd0aFRvUmVtb3ZlKVxuXG4vLyBQcmludCB0aGUgbW9kaWZpZWQgc3RyaW5nIHRvIHRoZSBjb25zb2xlXG4vLyBPdXRwdXQgd2lsbCBiZSBcIkhlbGxvLCAhXCIiLCAibmFtZSI6ICJFcmFzZSAoU1RSSU5HLCBOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc3RyaW5nIHdpdGggdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXJzIGVyYXNlZCwgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyB1bmNoYW5nZWQgaWYgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGlzIG5lZ2F0aXZlIG9yIGV4Y2VlZHMgdGhlIHN0cmluZyBsZW5ndGguIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgaW5wdXQgc3RyaW5nLlxuMi4gYE5VTUJFUmA6IFRoZSBzdGFydGluZyBwb3NpdGlvbi5cbjMuIGBOVU1CRVJgOiBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gZXJhc2UgKG5lZ2F0aXZlIHRvIGVyYXNlIHVwIHRvIHRoZSBlbmQpLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlIHNwZWNpZmllZCBzdWJzdHJpbmcgcmVtb3ZlZC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBvcmlnaW5hbFN0cmluZyA9IFwiSGVsbG8sIHRoaXMgaXMgYSB0ZXN0IHN0cmluZy4gVGhpcyBzdHJpbmcgaXMgZm9yIHRlc3RpbmcuXCJcblNUUklORyBzdWJTdHJpbmdUb1JlbW92ZSA9IFwiaXNcIlxuXG5TVFJJTkcgcmVzdWx0U3RyaW5nID0gRXJhc2VBbGwob3JpZ2luYWxTdHJpbmcsIHN1YlN0cmluZ1RvUmVtb3ZlKVxuXG4vLyBPcmlnaW5hbCBTdHJpbmc6IFwiICsgb3JpZ2luYWxTdHJpbmdcbi8vIFN1YlN0cmluZyB0byBSZW1vdmU6IFwiICsgc3ViU3RyaW5nVG9SZW1vdmVcbi8vIFJlc3VsdGluZyBTdHJpbmc6IFwiICsgcmVzdWx0U3RyaW5nIiwgIm5hbWUiOiAiRXJhc2VBbGwgKFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBvcmlnaW5hbCBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlIHNwZWNpZmllZCBzdWJzdHJpbmcgcmVtb3ZlZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBtYWluIHN0cmluZyB0byBzZWFyY2ggaW4uXG4yLiBgU1RSSU5HYDogVGhlIHN1YnN0cmluZyB0byBiZSBlcmFzZWQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG1lc3NhZ2UgdGV4dCBvZiB0aGUgY3VycmVudCBlcnJvci4gQXZhaWxhYmxlIGluIHRoZSBlcnJvciBoYW5kbGVyIG9ubHkuIiwgImNvZGVfZXhhbXBsZSI6ICJST1VUSU5FIGV4YW1wbGVfZXJyb3JfaGFuZGxlciBPTiAoKSB7XG4vLyBTVFJJTkcgRXJyb3IuTWVzc2FnZVxuU1RSSU5HIGVyck1zZyA9IEVycm9yLk1lc3NhZ2VcblNUUklORyBhdWRpdExpbmUgPSBcIlVwbG9hZCBzY2FuIGZhaWxlZDogXCIgKyBlcnJNc2dcbn0iLCAibmFtZSI6ICJFcnJvci5NZXNzYWdlICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG1lc3NhZ2UgdGV4dCBvZiB0aGUgY3VycmVudCBlcnJvci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgc2V2ZXJpdHkgbGV2ZWwgb2YgdGhlIGN1cnJlbnQgZXJyb3IuIEF2YWlsYWJsZSBpbiB0aGUgZXJyb3IgaGFuZGxlciBvbmx5LiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIEVycm9yLlNldmVyaXR5KClcbk5VTUJFUiBzZXZlcml0eSA9IEVycm9yLlNldmVyaXR5KClcbklGIHNldmVyaXR5ID4gMyBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJSZXF1ZXN0IGJsb2NrZWQgZHVlIHRvIGEgaGlnaC1zZXZlcml0eSBwcm9jZXNzaW5nIGVycm9yLlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJMb3ctc2V2ZXJpdHkgZXJyb3IgaGFuZGxlZC5cIilcbn0iLCAibmFtZSI6ICJFcnJvci5TZXZlcml0eSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBzZXZlcml0eSBsZXZlbCBvZiB0aGUgY3VycmVudCBlcnJvciBhcyBhIG51bWJlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiRW5jb2RlcyBhIGdpdmVuIHN0cmluZyBpbnRvIHNhZmUgSFRNTC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBpbnB1dFN0cmluZyA9IFwiPHNjcmlwdD5hbGVydCgnSGVsbG8sIHdvcmxkIScpOzwvc2NyaXB0PlwiO1xuU1RSSU5HIGVzY2FwZWRTdHJpbmcgPSBFc2NhcGVIVE1MKGlucHV0U3RyaW5nKTtcbi8vIE9yaWdpbmFsIFN0cmluZzogPHNjcmlwdD5hbGVydCgnSGVsbG8sIHdvcmxkIScpOzwvc2NyaXB0PlxuLy8gRXNjYXBlZCBTdHJpbmc6ICZsdDtzY3JpcHQmZ3Q7YWxlcnQoJ0hlbGxvLCB3b3JsZCEnKTsmbHQ7L3NjcmlwdCZndDsiLCAibmFtZSI6ICJFc2NhcGVIVE1MIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdHJpbmcgd2l0aCBIVE1MIHNwZWNpYWwgY2hhcmFjdGVycyBlbmNvZGVkIHRvIHByZXZlbnQgSFRNTCBpbmplY3Rpb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgaW5wdXQgdGV4dCB0byBiZSBlbmNvZGVkIGludG8gc2FmZSBIVE1MLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBhIHN0cmluZyBmb3Igc2FmZSBpbmNsdXNpb24gaW4gYSBKU09OIHN0cmluZyB2YWx1ZS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBqc29uU3RyaW5nID0gXCJ7XFxcImtleVxcXCI6IFxcXCJ2YWx1ZSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVyczogXFxcXFxcXCIgXFxcXG4gXFxcXHRcXFwifVwiXG5TVFJJTkcgZXNjYXBlZEpzb25TdHJpbmcgPSBFc2NhcGVKU09OKGpzb25TdHJpbmcpXG4vLyBPcmlnaW5hbCBKU09OIFN0cmluZzogXCIgKyBqc29uU3RyaW5nXG4vLyBFc2NhcGVkIEpTT04gU3RyaW5nOiBcIiArIGVzY2FwZWRKc29uU3RyaW5nIiwgIm5hbWUiOiAiRXNjYXBlSlNPTiAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCBKU09OIHNwZWNpYWwgY2hhcmFjdGVycyAoYmFja3NsYXNoLCBmb3J3YXJkIHNsYXNoLCBkb3VibGUgcXVvdGUsIGFuZCBjb250cm9sIGNoYXJhY3RlcnMpIHJlcGxhY2VkIHdpdGggdGhlaXIgZXNjYXBlIHNlcXVlbmNlcy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gZXNjYXBlIGZvciBzYWZlIGluY2x1c2lvbiBpbiBhIEpTT04gc3RyaW5nIHZhbHVlLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJTZWFyY2hlcyBmb3IgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbiB0aGUgbGlzdCBhbmQgcmV0dXJucyBpdHMgcG9zaXRpb24sIG9yIC0xIGlmIG5vdCBmb3VuZC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgcmVndWxhciBleHByZXNzaW9uc1xuUmVnRXhKU2kuTGlzdCByZWdFeExpc3QgPSBbXCJleGFtcGxlX2xpc3RcIl1cblxuLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBmaW5kXG5SZWdFeEpTaSB0YXJnZXRSZWdFeCA9IFJlZ0V4SlNpKFwidGFyZ2V0X3BhdHRlcm5cIilcblxuLy8gVmFyaWFibGUgdG8gc3RvcmUgaWYgdGhlIHRhcmdldCByZWdleCBpcyBmb3VuZFxuQk9PTEVBTiBmb3VuZCA9IEZBTFNFXG5cbi8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgbGlzdCB0byBmaW5kIHRoZSB0YXJnZXQgcmVnZXhcbkZPUiBFQUNIIHJlZ0V4IElOIHJlZ0V4TGlzdCB7XG4gICAgSUYgcmVnRXggPT0gdGFyZ2V0UmVnRXggVEhFTiB7XG4gICAgICAgIGZvdW5kID0gVFJVRVxuICAgICAgICBCUkVBS1xuICAgIH1cbn1cblxuLy8gT3V0cHV0IHRoZSByZXN1bHRcbklGIGZvdW5kIFRIRU4ge1xuICAgIC8vIFRhcmdldCByZWd1bGFyIGV4cHJlc3Npb24gZm91bmQgaW4gdGhlIGxpc3QuXG59IEVMU0Uge1xuICAgIC8vIFRhcmdldCByZWd1bGFyIGV4cHJlc3Npb24gbm90IGZvdW5kIGluIHRoZSBsaXN0LlxufSIsICJuYW1lIjogIkZpbmQgKFJlZ0V4SlNpLkxpc3QsIFJlZ0V4SlNpKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgcmVndWxhciBleHByZXNzaW9uIGluIHRoZSBsaXN0LCBvciAtMSBpZiBub3QgZm91bmQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaS5MaXN0YDogQSBsaXN0IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gYmUgc2VhcmNoZWQuXG4yLiBgUmVnRXhKU2lgOiBUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gdG8gc2VhcmNoIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiU2VhcmNoZXMgdGhlIGZpcnN0IHN0cmluZyBmb3IgdGhlIHRoaXJkIHN0cmluZyBiZWdpbm5pbmcgYXQgdGhlIGdpdmVuIG9mZnNldCwgYW5kIHJldHVybnMgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIG9yIC0xIGlmIG5vdCBmb3VuZC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyB0ZXh0ID0gXCJUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nXCJcblNUUklORyBzZWFyY2hTdHJpbmcgPSBcImZveFwiXG5OVU1CRVIgc3RhcnRQb3NpdGlvbiA9IDBcblxuTlVNQkVSIGZvdW5kUG9zaXRpb24gPSBGaW5kKHRleHQsIHN0YXJ0UG9zaXRpb24sIHNlYXJjaFN0cmluZylcblxuSUYgZm91bmRQb3NpdGlvbiAhPSAtMSBUSEVOIHtcbiAgICAvLyBGb3VuZCAnc2VhcmNoU3RyaW5nJyBhdCBwb3NpdGlvbjogZm91bmRQb3NpdGlvblxufSBFTFNFIHtcbiAgICAvLyBEaWQgbm90IGZpbmQgJ3NlYXJjaFN0cmluZycgaW4gdGhlIHN0cmluZy5cbn0iLCAibmFtZSI6ICJGaW5kIChTVFJJTkcsIE5VTUJFUiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgc2Vjb25kIHN0cmluZyB3aXRoaW4gdGhlIGZpcnN0IHN0cmluZywgYmVnaW5uaW5nIGF0IHRoZSBnaXZlbiBvZmZzZXQsIG9yIC0xIGlmIG5vdCBmb3VuZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gc2VhcmNoIHdpdGhpbi5cbjIuIGBOVU1CRVJgOiBUaGUgY2hhcmFjdGVyIG9mZnNldCBhdCB3aGljaCB0byBiZWdpbiBzZWFyY2hpbmcuXG4zLiBgU1RSSU5HYDogVGhlIHN1YnN0cmluZyB0byBzZWFyY2ggZm9yLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJTZWFyY2hlcyB0aGUgZmlyc3Qgc3RyaW5nIGZvciB0aGUgc2Vjb25kIHN0cmluZyBhbmQgcmV0dXJucyB0aGUgc3RhcnRpbmcgcG9zaXRpb24sIG9yIC0xIGlmIG5vdCBmb3VuZC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBtYWluU3RyaW5nID0gXCJIZWxsbywgd29ybGQhXCJcblNUUklORyBzZWFyY2hTdHJpbmcgPSBcIndvcmxkXCJcblxuTlVNQkVSIHBvc2l0aW9uID0gUmV2ZXJzZUZpbmQobWFpblN0cmluZywgc2VhcmNoU3RyaW5nKVxuXG5JRiBwb3NpdGlvbiAhPSAtMSBUSEVOIHtcbiAgICAvLyBUaGUgcG9zaXRpb24gb2YgJ3NlYXJjaFN0cmluZycgaW4gJ21haW5TdHJpbmcnIGlzOiBwb3NpdGlvblxufSBFTFNFIHtcbiAgICAvLyAnc2VhcmNoU3RyaW5nJyBub3QgZm91bmQgaW4gJ21haW5TdHJpbmcnXG59IiwgIm5hbWUiOiAiRmluZCAoU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHN0YXJ0aW5nIGluZGV4IG9mIHRoZSBzZWNvbmQgc3RyaW5nIHdpdGhpbiB0aGUgZmlyc3Qgc3RyaW5nLCBvciAtMSBpZiBub3QgZm91bmQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc3RyaW5nIHRvIHNlYXJjaCB3aXRoaW4uXG4yLiBgU1RSSU5HYDogVGhlIHN1YnN0cmluZyB0byBzZWFyY2ggZm9yLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgc3RyaW5nIGluIHRoZSBsaXN0IHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLCBvciAtMSBpZiBubyBtYXRjaCBpcyBmb3VuZC4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSBhIFZFQ1RPUiBvZiBTVFJJTkdzXG5WRUNUT1I8U1RSSU5HPiBzdHJpbmdMaXN0ID0gXCJhcHBsZVwiLCBcImJhbmFuYVwiLCBcImNoZXJyeVwiLCBcImRhdGVcIiwgXCJlbGRlcmJlcnJ5XCJcblxuLy8gRGVmaW5lIGEgcmVndWxhciBleHByZXNzaW9uIHRvIHNlYXJjaCBmb3IgYSBTVFJJTkcgdGhhdCBjb250YWlucyB0aGUgbGV0dGVyICdhJ1xuUmVnRXhKU2kgcmVnZXggPSBSZWdFeEpTaShcImFcIilcblxuLy8gVXNlIHRoZSBGaW5kIGZ1bmN0aW9uIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IFNUUklORyB0aGF0IG1hdGNoZXMgdGhlIHJlZ2V4XG5OVU1CRVIgaW5kZXggPSBGaW5kKHN0cmluZ0xpc3QsIHJlZ2V4KVxuXG4vLyBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IG1hdGNoIGlzOiBcIiArIGluZGV4IiwgIm5hbWUiOiAiRmluZCAoVkVDVE9SPFNUUklORz4sIFJlZ0V4SlNpKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgc3RyaW5nIGluIHRoZSB2ZWN0b3IgdGhhdCBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24sIG9yIC0xIGlmIG5vIG1hdGNoIGlzIGZvdW5kLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgbGlzdCBvZiBzdHJpbmdzIHRvIHNlYXJjaCB3aXRoaW4uXG4yLiBgUmVnRXhKU2lgOiBUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiU2VhcmNoZXMgdGhlIGZpcnN0IHN0cmluZyBmb3IgdGhlIHRoaXJkIHN0cmluZywgY2FzZS1pbnNlbnNpdGl2ZWx5LCBiZWdpbm5pbmcgYXQgdGhlIGdpdmVuIG9mZnNldCwgYW5kIHJldHVybnMgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIG9yIC0xIGlmIG5vdCBmb3VuZC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBtYWluU3RyaW5nID0gXCJIZWxsbyBXb3JsZCwgaGVsbG8gdW5pdmVyc2VcIlxuU1RSSU5HIHNlYXJjaFN0cmluZyA9IFwiaGVsbG9cIlxuTlVNQkVSIHN0YXJ0UG9zaXRpb24gPSAwXG5cbi8vIFVzZSB0aGUgRmluZENhc2VJbnNlbnNpdGl2ZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBwb3NpdGlvbiBvZiBzZWFyY2hTdHJpbmcgaW4gbWFpblN0cmluZ1xuTlVNQkVSIHBvc2l0aW9uID0gRmluZENhc2VJbnNlbnNpdGl2ZShtYWluU3RyaW5nLCBzdGFydFBvc2l0aW9uLCBzZWFyY2hTdHJpbmcpXG5cbi8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgc2VhcmNoIHN0cmluZyBpczogXCIgKyBwb3NpdGlvbiIsICJuYW1lIjogIkZpbmRDYXNlSW5zZW5zaXRpdmUgKFNUUklORywgTlVNQkVSLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIG9mIHRoZSBzZWFyY2ggc3RyaW5nIHdpdGhpbiB0aGUgZmlyc3Qgc3RyaW5nLCBpZ25vcmluZyBjYXNlLCBvciAtMSBpZiBub3QgZm91bmQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc3RyaW5nIHRvIHNlYXJjaCB3aXRoaW4uXG4yLiBgTlVNQkVSYDogVGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRvIGJlZ2luIHNlYXJjaGluZy5cbjMuIGBTVFJJTkdgOiBUaGUgc3Vic3RyaW5nIHRvIHNlYXJjaCBmb3IuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlNlYXJjaGVzIHRoZSBmaXJzdCBzdHJpbmcgZm9yIHRoZSBzZWNvbmQgc3RyaW5nLCBjYXNlLWluc2Vuc2l0aXZlbHksIGFuZCByZXR1cm5zIHRoZSBzdGFydGluZyBwb3NpdGlvbiBvciAtMSBpZiBub3QgZm91bmQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgdXJsID0gTVdHLlVybCgpLlRvU3RyaW5nKClcblNUUklORyBrZXl3b3JkID0gXCJleGFtcGxlXCJcblxuSUYgRmluZENhc2VJbnNlbnNpdGl2ZSh1cmwsIGtleXdvcmQpIFRIRU4ge1xuICAgIC8vIEtleXdvcmQgZm91bmQgaW4gVVJMXG59IEVMU0Uge1xuICAgIC8vIEtleXdvcmQgbm90IGZvdW5kIGluIFVSTFxufSIsICJuYW1lIjogIkZpbmRDYXNlSW5zZW5zaXRpdmUgKFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSB6ZXJvLWJhc2VkIHN0YXJ0IGluZGV4IG9mIHRoZSBzZWNvbmQgc3RyaW5nIGluIHRoZSBmaXJzdCBzdHJpbmcsIG9yIC0xIGlmIG5vdCBmb3VuZCwgaW4gYSBjYXNlLWluc2Vuc2l0aXZlIG1hbm5lci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gc2VhcmNoIHdpdGhpbi5cbjIuIGBTVFJJTkdgOiBUaGUgc3Vic3RyaW5nIHRvIHNlYXJjaCBmb3IuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlNlYXJjaGVzIHdpdGhpbiBnaXZlbiBzdHJpbmcgZm9yIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdGhhdCBpcyBlcXVhbCB0byBhbnkgY2hhcmFjdGVyIHdpdGhpbiBnaXZlbiBzZWNvbmQgc3RyaW5nLiBJZiBmb3VuZCwgcG9zaXRpb24gaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgLTEgaXMgcmV0dXJuZWQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgaW5wdXRTdHJpbmcgPSBcImhlbGxvIHdvcmxkXCJcblNUUklORyBjaGFyYWN0ZXJzVG9NYXRjaCA9IFwiYWVpb3VcIlxuXG5OVU1CRVIgcG9zaXRpb24gPSBGaW5kRmlyc3RPZihpbnB1dFN0cmluZywgY2hhcmFjdGVyc1RvTWF0Y2gpXG5cbklGIHBvc2l0aW9uICE9IC0xIFRIRU4ge1xuICAgIC8vIEZpcnN0IHZvd2VsIGZvdW5kIGF0IHBvc2l0aW9uOiBcIiArIHBvc2l0aW9uXG59IEVMU0Uge1xuICAgIC8vIE5vIHZvd2VscyBmb3VuZCBpbiB0aGUgaW5wdXQgc3RyaW5nLlxufSIsICJuYW1lIjogIkZpbmRGaXJzdE9mIChTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgZmlyc3Qgc3RyaW5nIHRoYXQgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIGluIHRoZSBzZWNvbmQgc3RyaW5nLCBvciAtMSBpZiBubyBtYXRjaCBpcyBmb3VuZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gc2VhcmNoIHdpdGhpbi5cbjIuIGBTVFJJTkdgOiBUaGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gc2VhcmNoIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiU2VhcmNoZXMgd2l0aGluIGdpdmVuIHN0cmluZywgYmVnaW5uaW5nIGF0IGdpdmVuIHBvc2l0aW9uIChvciBmcm9tIHN0YXJ0IG9mIHN0cmluZyksIGZvciB0aGUgZmlyc3QgY2hhcmFjdGVyIHRoYXQgaXMgZXF1YWwgdG8gYW55IGNoYXJhY3RlciB3aXRoaW4gZ2l2ZW4gc2Vjb25kIHN0cmluZy4gSWYgZm91bmQsIHBvc2l0aW9uIGlzIHJldHVybmVkLiBPdGhlcndpc2UsIC0xIGlzIHJldHVybmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHRleHQgPSBcIkhlbGxvLCBXb3JsZCFcIlxuU1RSSU5HIHNlYXJjaENoYXJzID0gXCJvV1wiXG5OVU1CRVIgc3RhcnRQb3NpdGlvbiA9IDBcblxuTlVNQkVSIHBvc2l0aW9uID0gRmluZEZpcnN0T2YodGV4dCwgc2VhcmNoQ2hhcnMsIHN0YXJ0UG9zaXRpb24pXG5cbklGIHBvc2l0aW9uICE9IC0xIFRIRU4ge1xuICAgIC8vIEZpcnN0IG9jY3VycmVuY2Ugb2YgYW55IGNoYXJhY3RlciBmcm9tICdcIiArIHNlYXJjaENoYXJzICsgXCInIGluICdcIiArIHRleHQgKyBcIicgaXMgYXQgcG9zaXRpb246IFwiICsgcG9zaXRpb25cbn0gRUxTRSB7XG4gICAgLy8gTm8gY2hhcmFjdGVycyBmcm9tICdcIiArIHNlYXJjaENoYXJzICsgXCInIGZvdW5kIGluICdcIiArIHRleHQgKyBcIidcIlxufSIsICJuYW1lIjogIkZpbmRGaXJzdE9mIChTVFJJTkcsIFNUUklORywgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhbnkgY2hhcmFjdGVyIGZyb20gdGhlIHNlY29uZCBzdHJpbmcgZm91bmQgYXQgb3IgYWZ0ZXIgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBpbiB0aGUgZmlyc3Qgc3RyaW5nLCBvciAtMSBpZiBubyBzdWNoIGNoYXJhY3RlciBpcyBmb3VuZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gc2VhcmNoIHdpdGhpbi5cbjIuIGBTVFJJTkdgOiBUaGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gc2VhcmNoIGZvci5cbjMuIGBOVU1CRVJgOiBUaGUgcG9zaXRpb24gZnJvbSB3aGljaCB0byBiZWdpbiBzZWFyY2hpbmcuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlNlYXJjaGVzIHdpdGhpbiBnaXZlbiBzdHJpbmcsIGJlZ2lubmluZyBhdCB0aGUgZW5kLCBmb3IgdGhlIHNlY29uZCBzdHJpbmcuIElmIGZvdW5kLCB0aGUgc3RhcnQgcG9zaXRpb24gaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgLTEgaXMgcmV0dXJuZWQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgdGV4dCA9IFwiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gVGhlIHF1aWNrIGJyb3duIGZveCBpcyBmYXN0LlwiXG5TVFJJTkcgc2VhcmNoU3RyaW5nID0gXCJmb3hcIlxuXG5OVU1CRVIgcG9zaXRpb24gPSBGaW5kTGFzdCh0ZXh0LCBzZWFyY2hTdHJpbmcpXG5cbklGIHBvc2l0aW9uICE9IC0xIFRIRU4ge1xuICAgIC8vIFRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgJ3NlYXJjaFN0cmluZycgaXMgYXQgcG9zaXRpb246IHBvc2l0aW9uXG59IEVMU0Uge1xuICAgIC8vIFRoZSBzdHJpbmcgJ3NlYXJjaFN0cmluZycgd2FzIG5vdCBmb3VuZC5cbn0iLCAibmFtZSI6ICJGaW5kTGFzdCAoU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIHNlY29uZCBzdHJpbmcgd2l0aGluIHRoZSBmaXJzdCBzdHJpbmcsIG9yIC0xIGlmIGl0IGlzIG5vdCBmb3VuZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gc2VhcmNoIHdpdGhpbi5cbjIuIGBTVFJJTkdgOiBUaGUgc3Vic3RyaW5nIHRvIHNlYXJjaCBmb3IuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlNlYXJjaGVzIHdpdGhpbiBnaXZlbiBzdHJpbmcsIGJlZ2lubmluZyBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24gKG9yIGZyb20gZW5kIG9mIHN0cmluZyksIGZvciB0aGUgc2Vjb25kIHN0cmluZy4gSWYgZm91bmQsIHRoZSBzdGFydCBwb3NpdGlvbiBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCAtMSBpcyByZXR1cm5lZC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyB0ZXh0ID0gXCJUaGlzIGlzIGEgc2FtcGxlIHN0cmluZyB0byBkZW1vbnN0cmF0ZSB0aGUgRmluZExhc3QgZnVuY3Rpb24uXCJcblNUUklORyBzZWFyY2hTdHJpbmcgPSBcInNcIlxuTlVNQkVSIHN0YXJ0UG9zaXRpb24gPSAzMFxuXG5OVU1CRVIgbGFzdEluZGV4ID0gRmluZExhc3QodGV4dCwgc2VhcmNoU3RyaW5nLCBzdGFydFBvc2l0aW9uKVxuXG5JRiBsYXN0SW5kZXggIT0gLTEgVEhFTiB7XG4gICAgLy8gVGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAnc2VhcmNoU3RyaW5nJyBiZWZvcmUgcG9zaXRpb24gc3RhcnRQb3NpdGlvbiBpcyBhdCBpbmRleDogbGFzdEluZGV4XG59IEVMU0Uge1xuICAgIC8vIFRoZSBzdHJpbmcgJ3NlYXJjaFN0cmluZycgd2FzIG5vdCBmb3VuZCBiZWZvcmUgcG9zaXRpb24gc3RhcnRQb3NpdGlvblxufSIsICJuYW1lIjogIkZpbmRMYXN0IChTVFJJTkcsIFNUUklORywgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBzZWNvbmQgc3RyaW5nIGluIHRoZSBmaXJzdCBzdHJpbmcsIHN0YXJ0aW5nIGZyb20gdGhlIHNwZWNpZmllZCBwb3NpdGlvbiwgb3IgLTEgaWYgbm90IGZvdW5kLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byBzZWFyY2ggd2l0aGluLlxuMi4gYFNUUklOR2A6IFRoZSBzdWJzdHJpbmcgdG8gc2VhcmNoIGZvci5cbjMuIGBOVU1CRVJgOiBUaGUgcG9zaXRpb24gZnJvbSB3aGljaCB0byBiZWdpbiB0aGUgYmFja3dhcmQgc2VhcmNoLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJTZWFyY2hlcyBiYWNrd2FyZCB3aXRoaW4gZ2l2ZW4gc3RyaW5nLCBiZWdpbm5pbmcgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBmb3IgdGhlIGZpcnN0IGNoYXJhY3RlciB0aGF0IGlzIGVxdWFsIHRvIGFueSBjaGFyYWN0ZXIgd2l0aGluIHRoZSBnaXZlbiBzZWNvbmQgc3RyaW5nLiBJZiBmb3VuZCwgcG9zaXRpb24gaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgLTEgaXMgcmV0dXJuZWQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgaW5wdXRTdHJpbmcgPSBcIkhlbGxvLCBXb3JsZCFcIlxuU1RSSU5HIHNlYXJjaFN0cmluZyA9IFwib1wiXG5cbk5VTUJFUiBwb3NpdGlvbiA9IEZpbmRMYXN0T2YoaW5wdXRTdHJpbmcsIHNlYXJjaFN0cmluZylcblxuSUYgcG9zaXRpb24gIT0gLTEgVEhFTiB7XG4gICAgLy8gVGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhbnkgY2hhcmFjdGVyIGluICdvJyBpbiB0aGUgc3RyaW5nICdIZWxsbywgV29ybGQhJyBpcyBhdCBwb3NpdGlvbjogcG9zaXRpb25cbn0gRUxTRSB7XG4gICAgLy8gTm8gY2hhcmFjdGVycyBmcm9tICdvJyB3ZXJlIGZvdW5kIGluIHRoZSBzdHJpbmcgJ0hlbGxvLCBXb3JsZCEnXG59IiwgIm5hbWUiOiAiRmluZExhc3RPZiAoU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgZmlyc3Qgc3RyaW5nIHRoYXQgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIGluIHRoZSBzZWNvbmQgc3RyaW5nLCBvciAtMSBpZiBubyBzdWNoIGNoYXJhY3RlciBpcyBmb3VuZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gc2VhcmNoIHdpdGhpbi5cbjIuIGBTVFJJTkdgOiBUaGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gc2VhcmNoIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiU2VhcmNoZXMgYmFja3dhcmQgd2l0aGluIGdpdmVuIHN0cmluZywgYmVnaW5uaW5nIGF0IGdpdmVuIHBvc2l0aW9uIChvciBmcm9tIGVuZCBvZiBzdHJpbmcpLCBmb3IgdGhlIGZpcnN0IGNoYXJhY3RlciB0aGF0IGlzIGVxdWFsIHRvIGFueSBjaGFyYWN0ZXIgd2l0aGluIGdpdmVuIHNlY29uZCBzdHJpbmcuIElmIGZvdW5kLCBwb3NpdGlvbiBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCAtMSBpcyByZXR1cm5lZC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyB0ZXh0ID0gXCJIZWxsbywgd29ybGQhIFdlbGNvbWUgdG8gTU9XR0xJLlwiXG5TVFJJTkcgc2VhcmNoQ2hhciA9IFwib1wiXG5OVU1CRVIgc3RhcnRQb3NpdGlvbiA9IDIwXG5cbk5VTUJFUiBsYXN0SW5kZXggPSBGaW5kTGFzdE9mKHRleHQsIHNlYXJjaENoYXIsIHN0YXJ0UG9zaXRpb24pXG5cbi8vIFRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgJ28nIGluIHRoZSB0ZXh0IHN0YXJ0aW5nIGZyb20gcG9zaXRpb24gMjAgaXMgYXQgaW5kZXg6IGxhc3RJbmRleCIsICJuYW1lIjogIkZpbmRMYXN0T2YgKFNUUklORywgU1RSSU5HLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgYW55IGNoYXJhY3RlciBmcm9tIHRoZSBzZWNvbmQgc3RyaW5nIGZvdW5kIGF0IG9yIGJlZm9yZSB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIHRoZSBmaXJzdCBzdHJpbmcsIG9yIC0xIGlmIG5vIHN1Y2ggY2hhcmFjdGVyIGlzIGZvdW5kLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byBzZWFyY2ggd2l0aGluLlxuMi4gYFNUUklOR2A6IFRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBzZWFyY2ggZm9yLlxuMy4gYE5VTUJFUmA6IFRoZSBwb3NpdGlvbiBmcm9tIHdoaWNoIHRvIGJlZ2luIHRoZSBiYWNrd2FyZCBzZWFyY2guIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBzdHJpbmcgaW4gdGhlIGxpc3QgdGhhdCBtYXRjaGVzIHRoZSB3aWxkY2FyZCBwYXR0ZXJuLCBvciAtMSBpZiBub3QgZm91bmQuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8U1RSSU5HPiB1cmxQYXR0ZXJucyA9IFwiKi5leGFtcGxlLmNvbVwiLCBcIioudGVzdC5jb21cIiwgXCIqLnNhbXBsZS5vcmdcIlxuU1RSSU5HIGN1cnJlbnRVcmwgPSBNV0cuVXJsKCkuSG9zdFxuXG5JRiBGaW5kV2lsZENhcmRNYXRjaCh1cmxQYXR0ZXJucywgY3VycmVudFVybCkgVEhFTiB7XG4gICAgLy8gTWF0Y2ggZm91bmQgZm9yIFVSTDogY3VycmVudFVybFxuICAgIE1XRy5BbGxvdyhcIlVSTCBtYXRjaGVkIHdpdGggd2lsZGNhcmQgcGF0dGVyblwiKVxufSBFTFNFIHtcbiAgICAvLyBObyBtYXRjaCBmb3VuZCBmb3IgVVJMOiBjdXJyZW50VXJsXG4gICAgTVdHLkJsb2NrKFwiVVJMIGRpZCBub3QgbWF0Y2ggYW55IHdpbGRjYXJkIHBhdHRlcm5cIilcbn0iLCAibmFtZSI6ICJGaW5kV2lsZENhcmRNYXRjaCAoVkVDVE9SPFNUUklORz4sIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHN0cmluZyBpbiB0aGUgbGlzdCB0aGF0IG1hdGNoZXMgdGhlIHdpbGRjYXJkIHBhdHRlcm4sIG9yIC0xIGlmIG5vIG1hdGNoIGlzIGZvdW5kLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgbGlzdCBvZiBzdHJpbmdzIHRvIHNlYXJjaC5cbjIuIGBTVFJJTkdgOiBUaGUgd2lsZGNhcmQgcGF0dGVybiB0byBtYXRjaCBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGtleSBpbiB0aGUgbWFwLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgbWFwIHdpdGggc29tZSBrZXktdmFsdWUgcGFpcnNcbk1BUDxTVFJJTkcsIFNUUklORz4gZXhhbXBsZU1hcCA9IHtcbiAgICBcImtleTFcIjogXCJ2YWx1ZTFcIixcbiAgICBcImtleTJcIjogXCJ2YWx1ZTJcIixcbiAgICBcImtleTNcIjogXCJ2YWx1ZTNcIlxufVxuXG4vLyBSZXRyaWV2ZSBhIHZhbHVlIGZyb20gdGhlIG1hcCB1c2luZyB0aGUgR2V0IGZ1bmN0aW9uXG5TVFJJTkcgdmFsdWUgPSBHZXQoZXhhbXBsZU1hcCwgXCJrZXkyXCIpXG5cbi8vIFRoZSB2YWx1ZSBmb3IgJ2tleTInIGlzOiBcIiArIHZhbHVlIiwgIm5hbWUiOiAiR2V0IChNQVA8U1RSSU5HLCBTVFJJTkc+LCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgZ2l2ZW4ga2V5LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTUFQPFNUUklORyxTVFJJTkc+YDogVGhlIG1hcCB0byByZXRyaWV2ZSBmcm9tLlxuMi4gYFNUUklOR2A6IFRoZSBrZXkgdG8gbG9vayB1cC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJSZWdFeEpTaSIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBlbGVtZW50IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggZnJvbSB0aGUgZ2l2ZW4gbGlzdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSByZWdleExpc3QgaXMgYSBwcmVkZWZpbmVkIFJlZ0V4SlNpLkxpc3RcblJlZ0V4SlNpLkxpc3QgcmVnZXhMaXN0ID0gW1wiZXhhbXBsZV9yZWdleF9saXN0XCJdXG5cbi8vIFJldHJpZXZlIHRoZSBlbGVtZW50IGF0IGluZGV4IDJcblJlZ0V4SlNpIHJlZ2V4RWxlbWVudCA9IEdldChyZWdleExpc3QsIDIpXG5cbi8vIFByaW50IHRoZSByZXRyaWV2ZWQgZWxlbWVudCB0byB0aGUgY29uc29sZVxuLy8gUmV0cmlldmVkIFJlZ0V4SlNpIGVsZW1lbnQ6IFwiICsgcmVnZXhFbGVtZW50IiwgIm5hbWUiOiAiR2V0IChSZWdFeEpTaS5MaXN0LCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGVsZW1lbnQgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBmcm9tIHRoZSBgUmVnRXhKU2kuTGlzdGAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaS5MaXN0YDogVGhlIGxpc3QgdG8gcmV0cmlldmUgZnJvbS5cbjIuIGBOVU1CRVJgOiBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmV0cmlldmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gdGhlIGdpdmVuIG1hcC4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSBhIG1hcCB3aXRoIHNvbWUga2V5LXZhbHVlIHBhaXJzXG5NQVA8U1RSSU5HLCBTVFJJTkc+IGV4YW1wbGVNYXAgPSB7XG4gICAgXCJrZXkxXCI6IFwidmFsdWUxXCIsXG4gICAgXCJrZXkyXCI6IFwidmFsdWUyXCIsXG4gICAgXCJrZXkzXCI6IFwidmFsdWUzXCJcbn1cblxuLy8gR2V0IHRoZSBrZXlzIGZyb20gdGhlIG1hcFxuVkVDVE9SPFNUUklORz4ga2V5cyA9IEdldEtleXMoZXhhbXBsZU1hcClcblxuLy8gUHJpbnQgdGhlIGtleXMgdG8gdGhlIGNvbnNvbGVcbkZPUiBFQUNIIGtleSBJTiBrZXlzIHtcbiAgICAvLyBLZXk6IFwiICsga2V5XG59IiwgIm5hbWUiOiAiR2V0S2V5cyAoTUFQPFNUUklORywgU1RSSU5HPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGtleXMgZm9yIHRoZSBnaXZlbiBtYXAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNQVA8U1RSSU5HLFNUUklORz5gOiBUaGUgbWFwIHRvIHJldHJpZXZlIGtleXMgZnJvbS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJSZWdFeEpTaS5MaXN0IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBuZXcgbGlzdCBjb250YWluaW5nIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBsaXN0IGJldHdlZW4gdGhlIHNwZWNpZmllZCBzdGFydCAoaW5jbHVzaXZlKSBhbmQgZW5kIChleGNsdXNpdmUpIGluZGljZXMuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgd2UgaGF2ZSBhIFJlZ0V4SlNpLkxpc3QgbmFtZWQgXCJleGFtcGxlTGlzdFwiIHdpdGggc29tZSByZWdleCBwYXR0ZXJuc1xuUmVnRXhKU2kuTGlzdCBleGFtcGxlTGlzdCA9IFtcImV4YW1wbGVMaXN0XCJdXG5cbi8vIERlZmluZSB0aGUgc3RhcnQgYW5kIGVuZCBpbmRpY2VzXG5OVU1CRVIgc3RhcnRJbmRleCA9IDFcbk5VTUJFUiBlbmRJbmRleCA9IDNcblxuLy8gR2V0IHRoZSBzdWJsaXN0IG9mIHJlZ2V4IHBhdHRlcm5zIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHJhbmdlXG5SZWdFeEpTaS5MaXN0IHN1Ykxpc3QgPSBHZXRSYW5nZShleGFtcGxlTGlzdCwgc3RhcnRJbmRleCwgZW5kSW5kZXgpXG5cbi8vIFByaW50IHRoZSBzdWJsaXN0IHRvIHRoZSBjb25zb2xlIGZvciBkZWJ1Z2dpbmdcbi8vIHN1Ykxpc3QiLCAibmFtZSI6ICJHZXRSYW5nZSAoUmVnRXhKU2kuTGlzdCwgTlVNQkVSLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdWJsaXN0IGNvbnRhaW5pbmcgZWxlbWVudHMgZnJvbSB0aGUgaW5wdXQgbGlzdCBiZXR3ZWVuIHRoZSBzcGVjaWZpZWQgc3RhcnQgYW5kIGVuZCBpbmRpY2VzLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgUmVnRXhKU2kuTGlzdGA6IFRoZSBsaXN0IHRvIGdldCBhIHJhbmdlIGZyb20uXG4yLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIGluZGV4IChpbmNsdXNpdmUpLlxuMy4gYE5VTUJFUmA6IFRoZSBlbmRpbmcgaW5kZXggKGV4Y2x1c2l2ZSkuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1lZGlhVHlwZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnRzIGZyb20gdGhlIGdpdmVuIGxpc3QgYmV0d2VlbiB0aGUgc3BlY2lmaWVkIHN0YXJ0IChpbmNsdXNpdmUpIGFuZCBlbmQgKGV4Y2x1c2l2ZSkgaW5kaWNlcy4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBWRUNUT1Igb2YgTWVkaWFUeXBlXG5WRUNUT1I8TWVkaWFUeXBlPiBtZWRpYUxpc3QgPSBNZWRpYVR5cGUoXCJpbWFnZS9qcGVnXCIpLCBNZWRpYVR5cGUoXCJpbWFnZS9wbmdcIiksIE1lZGlhVHlwZShcInZpZGVvL21wNFwiKSwgTWVkaWFUeXBlKFwiYXBwbGljYXRpb24vcGRmXCIpXG5cbi8vIERlZmluZSB0aGUgc3RhcnQgYW5kIGVuZCBpbmRpY2VzXG5OVU1CRVIgc3RhcnRJbmRleCA9IDFcbk5VTUJFUiBlbmRJbmRleCA9IDNcblxuLy8gR2V0IHRoZSBzdWJsaXN0IG9mIE1lZGlhVHlwZSBlbGVtZW50cyB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZVxuVkVDVE9SPE1lZGlhVHlwZT4gc3ViTGlzdCA9IEdldFJhbmdlKG1lZGlhTGlzdCwgc3RhcnRJbmRleCwgZW5kSW5kZXgpXG5cbi8vIFN1Ymxpc3Qgb2YgTWVkaWFUeXBlIGVsZW1lbnRzOiBcbi8vICsgc3ViTGlzdCIsICJuYW1lIjogIkdldFJhbmdlIChWRUNUT1I8TWVkaWFUeXBlPiwgTlVNQkVSLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdWJsaXN0IG9mIHRoZSBlbGVtZW50cyB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZSBvZiBpbmRpY2VzIGZyb20gdGhlIG9yaWdpbmFsIGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TWVkaWFUeXBlPmA6IFRoZSBsaXN0IHRvIGdldCBhIHJhbmdlIGZyb20uXG4yLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIGluZGV4IChpbmNsdXNpdmUpLlxuMy4gYE5VTUJFUmA6IFRoZSBlbmRpbmcgaW5kZXggKGV4Y2x1c2l2ZSkuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnRzIGZyb20gdGhlIGdpdmVuIGxpc3QgYmV0d2VlbiB0aGUgc3BlY2lmaWVkIHN0YXJ0IChpbmNsdXNpdmUpIGFuZCBlbmQgKGV4Y2x1c2l2ZSkgaW5kaWNlcy4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGEgVkVDVE9SIG9mIE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZVxuVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT4gYXBwQ2F0ZWdvcmllcyA9IFtcIlNvY2lhbE1lZGlhXCIsIFwiU3RyZWFtaW5nTWVkaWFcIiwgXCJGaWxlU2hhcmluZ1wiLCBcIkdhbWluZ1wiLCBcIk5ld3NcIl1cblxuLy8gRGVmaW5lIHRoZSBzdGFydCBhbmQgZW5kIGluZGljZXMgZm9yIHRoZSByYW5nZVxuTlVNQkVSIHN0YXJ0SW5kZXggPSAxXG5OVU1CRVIgZW5kSW5kZXggPSA0XG5cbi8vIEdldCB0aGUgcmFuZ2Ugb2YgYXBwbGljYXRpb24gY2F0ZWdvcmllc1xuVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT4gc2VsZWN0ZWRDYXRlZ29yaWVzID0gR2V0UmFuZ2UoYXBwQ2F0ZWdvcmllcywgc3RhcnRJbmRleCwgZW5kSW5kZXgpXG5cbi8vIFNlbGVjdGVkIENhdGVnb3JpZXM6IHNlbGVjdGVkQ2F0ZWdvcmllcyIsICJuYW1lIjogIkdldFJhbmdlIChWRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPiwgTlVNQkVSLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdWJsaXN0IG9mIHRoZSBlbGVtZW50cyB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZSBvZiBpbmRpY2VzIGZyb20gdGhlIG9yaWdpbmFsIGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPmA6IFRoZSBsaXN0IHRvIGdldCBhIHJhbmdlIGZyb20uXG4yLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIGluZGV4IChpbmNsdXNpdmUpLlxuMy4gYE5VTUJFUmA6IFRoZSBlbmRpbmcgaW5kZXggKGV4Y2x1c2l2ZSkuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5BcHBsaWNhdGlvblR5cGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBuZXcgbGlzdCBjb250YWluaW5nIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBsaXN0IGJldHdlZW4gdGhlIHNwZWNpZmllZCBzdGFydCAoaW5jbHVzaXZlKSBhbmQgZW5kIChleGNsdXNpdmUpIGluZGljZXMuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIGEgVkVDVE9SIG9mIE1XRy5BcHBsaWNhdGlvblR5cGVcblZFQ1RPUjxNV0cuQXBwbGljYXRpb25UeXBlPiBhcHBMaXN0ID0gW1wiQXBwVHlwZUxpc3RcIl1cblxuLy8gRGVmaW5lIHRoZSBzdGFydCBhbmQgZW5kIGluZGljZXNcbk5VTUJFUiBzdGFydEluZGV4ID0gMVxuTlVNQkVSIGVuZEluZGV4ID0gM1xuXG4vLyBHZXQgdGhlIHN1Ymxpc3QgdXNpbmcgR2V0UmFuZ2VcblZFQ1RPUjxNV0cuQXBwbGljYXRpb25UeXBlPiBzdWJMaXN0ID0gR2V0UmFuZ2UoYXBwTGlzdCwgc3RhcnRJbmRleCwgZW5kSW5kZXgpXG5cbi8vIFN1Ymxpc3Q6IFwiICsgc3ViTGlzdCIsICJuYW1lIjogIkdldFJhbmdlIChWRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT4sIE5VTUJFUiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgc3VibGlzdCBvZiB0aGUgZWxlbWVudHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgaW5kaWNlcyBmcm9tIHRoZSBvcmlnaW5hbCBsaXN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1XRy5BcHBsaWNhdGlvblR5cGU+YDogVGhlIGxpc3QgdG8gZ2V0IGEgcmFuZ2UgZnJvbS5cbjIuIGBOVU1CRVJgOiBUaGUgc3RhcnRpbmcgaW5kZXggKGluY2x1c2l2ZSkuXG4zLiBgTlVNQkVSYDogVGhlIGVuZGluZyBpbmRleCAoZXhjbHVzaXZlKS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnRzIGZyb20gdGhlIGdpdmVuIGxpc3QgYmV0d2VlbiB0aGUgc3BlY2lmaWVkIHN0YXJ0IChpbmNsdXNpdmUpIGFuZCBlbmQgKGV4Y2x1c2l2ZSkgaW5kaWNlcy4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGEgVkVDVE9SIG9mIE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGUgb2JqZWN0c1xuVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+IGhvc3RBbmRDZXJ0cyA9IE1XRy5TZXJ2ZXJIb3N0QW5kQ2VydCgpLCBNV0cuU2VydmVySG9zdEFuZENlcnQoKSwgTVdHLlNlcnZlckhvc3RBbmRDZXJ0KCksIE1XRy5TZXJ2ZXJIb3N0QW5kQ2VydCgpXG5cbi8vIERlZmluZSB0aGUgc3RhcnQgaW5kZXggYW5kIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gZ2V0XG5OVU1CRVIgc3RhcnRJbmRleCA9IDFcbk5VTUJFUiBjb3VudCA9IDJcblxuLy8gVXNlIHRoZSBHZXRSYW5nZSBmdW5jdGlvbiB0byBnZXQgYSBzdWJyYW5nZSBvZiB0aGUgVkVDVE9SXG5WRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4gc3ViUmFuZ2UgPSBHZXRSYW5nZShob3N0QW5kQ2VydHMsIHN0YXJ0SW5kZXgsIGNvdW50KVxuXG4vLyBTdWJyYW5nZSBvZiBob3N0IGFuZCBjZXJ0aWZpY2F0ZXM6IFwiICsgc3ViUmFuZ2UiLCAibmFtZSI6ICJHZXRSYW5nZSAoVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+LCBOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN1Ymxpc3Qgb2YgdGhlIGVsZW1lbnRzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIGluZGljZXMgZnJvbSB0aGUgb3JpZ2luYWwgbGlzdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPmA6IFRoZSBsaXN0IHRvIGdldCBhIHJhbmdlIGZyb20uXG4yLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIGluZGV4IChpbmNsdXNpdmUpLlxuMy4gYE5VTUJFUmA6IFRoZSBlbmRpbmcgaW5kZXggKGV4Y2x1c2l2ZSkuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnRzIGZyb20gdGhlIGdpdmVuIGxpc3QgYmV0d2VlbiB0aGUgc3BlY2lmaWVkIHN0YXJ0IChpbmNsdXNpdmUpIGFuZCBlbmQgKGV4Y2x1c2l2ZSkgaW5kaWNlcy4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGEgVkVDVE9SIG9mIE1XRy5VcmxDYXRlZ29yeVxuVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gdXJsQ2F0ZWdvcmllcyA9IFtcImV4YW1wbGVfbGlzdFwiXVxuXG4vLyBEZWZpbmUgdGhlIHN0YXJ0IGFuZCBlbmQgaW5kaWNlcyBmb3IgdGhlIHJhbmdlXG5OVU1CRVIgc3RhcnRJbmRleCA9IDFcbk5VTUJFUiBlbmRJbmRleCA9IDNcblxuLy8gR2V0IHRoZSByYW5nZSBvZiBVUkwgY2F0ZWdvcmllc1xuVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gcmFuZ2VDYXRlZ29yaWVzID0gR2V0UmFuZ2UodXJsQ2F0ZWdvcmllcywgc3RhcnRJbmRleCwgZW5kSW5kZXgpXG5cbi8vIFJhbmdlIG9mIFVSTCBDYXRlZ29yaWVzOiBcbi8vIHJhbmdlQ2F0ZWdvcmllcyIsICJuYW1lIjogIkdldFJhbmdlIChWRUNUT1I8TVdHLlVybENhdGVnb3J5PiwgTlVNQkVSLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdWJsaXN0IG9mIHRoZSBlbGVtZW50cyB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZSBvZiBpbmRpY2VzIGZyb20gdGhlIG9yaWdpbmFsIGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLlVybENhdGVnb3J5PmA6IFRoZSBsaXN0IHRvIGdldCBhIHJhbmdlIGZyb20uXG4yLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIGluZGV4IChpbmNsdXNpdmUpLlxuMy4gYE5VTUJFUmA6IFRoZSBlbmRpbmcgaW5kZXggKGV4Y2x1c2l2ZSkuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE5ldC5JUD4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnRzIGZyb20gdGhlIGdpdmVuIGxpc3QgYmV0d2VlbiB0aGUgc3BlY2lmaWVkIHN0YXJ0IChpbmNsdXNpdmUpIGFuZCBlbmQgKGV4Y2x1c2l2ZSkgaW5kaWNlcy4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSBhIHZlY3RvciBvZiBJUCBhZGRyZXNzZXNcblZFQ1RPUjxOZXQuSVA+IGlwQWRkcmVzc2VzID0gTmV0LklQKFwiMTkyLjE2OC4xLjFcIiksIE5ldC5JUChcIjE5Mi4xNjguMS4yXCIpLCBOZXQuSVAoXCIxOTIuMTY4LjEuM1wiKSwgTmV0LklQKFwiMTkyLjE2OC4xLjRcIiksIE5ldC5JUChcIjE5Mi4xNjguMS41XCIpXG5cbi8vIEV4dHJhY3QgYSBzdWJyYW5nZSBvZiBJUCBhZGRyZXNzZXMgZnJvbSB0aGUgdmVjdG9yXG5WRUNUT1I8TmV0LklQPiBzdWJSYW5nZSA9IEdldFJhbmdlKGlwQWRkcmVzc2VzLCAxLCAzKVxuXG4vLyBQcmludCB0aGUgZXh0cmFjdGVkIHN1YnJhbmdlIHRvIHRoZSBjb25zb2xlXG4vLyBFeHRyYWN0ZWQgSVAgUmFuZ2U6IFwiICsgc3ViUmFuZ2UiLCAibmFtZSI6ICJHZXRSYW5nZSAoVkVDVE9SPE5ldC5JUD4sIE5VTUJFUiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgc3VibGlzdCBvZiB0aGUgZWxlbWVudHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgaW5kaWNlcyBmcm9tIHRoZSBvcmlnaW5hbCBsaXN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5ldC5JUD5gOiBUaGUgbGlzdCB0byBnZXQgYSByYW5nZSBmcm9tLlxuMi4gYE5VTUJFUmA6IFRoZSBzdGFydGluZyBpbmRleCAoaW5jbHVzaXZlKS5cbjMuIGBOVU1CRVJgOiBUaGUgZW5kaW5nIGluZGV4IChleGNsdXNpdmUpLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVBSYW5nZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnRzIGZyb20gdGhlIGdpdmVuIGxpc3QgYmV0d2VlbiB0aGUgc3BlY2lmaWVkIHN0YXJ0IChpbmNsdXNpdmUpIGFuZCBlbmQgKGV4Y2x1c2l2ZSkgaW5kaWNlcy4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSBhIHZlY3RvciBvZiBJUCByYW5nZXNcblZFQ1RPUjxOZXQuSVBSYW5nZT4gaXBSYW5nZXMgPSBcIjE5Mi4xNjguMS4wLzI0XCIsIFwiMTAuMC4wLjAvOFwiLCBcIjE3Mi4xNi4wLjAvMTJcIlxuXG4vLyBEZWZpbmUgdGhlIHN0YXJ0IGFuZCBlbmQgaW5kaWNlcyBmb3IgdGhlIHJhbmdlIHlvdSB3YW50IHRvIGdldFxuTlVNQkVSIHN0YXJ0SW5kZXggPSAxXG5OVU1CRVIgZW5kSW5kZXggPSAyXG5cbi8vIEdldCB0aGUgc3VicmFuZ2Ugb2YgSVAgcmFuZ2VzXG5WRUNUT1I8TmV0LklQUmFuZ2U+IHN1YlJhbmdlID0gR2V0UmFuZ2UoaXBSYW5nZXMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KVxuXG4vLyBTdWJyYW5nZSBvZiBJUCByYW5nZXM6IFxuLy8gQ29tbWVudGVkIG91dCB0aGUgREVCVUcgbGluZSwgcmVwbGFjZSBpdCB3aXRoIHlvdXIgb3duIGNvbnNvbGUgbG9nIG9yIHByaW50IHN0YXRlbWVudCBpZiBuZWVkZWRcbi8vIFwiU3VicmFuZ2Ugb2YgSVAgcmFuZ2VzOiBcIiArIHN1YlJhbmdlIiwgIm5hbWUiOiAiR2V0UmFuZ2UgKFZFQ1RPUjxOZXQuSVBSYW5nZT4sIE5VTUJFUiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgc3VibGlzdCBvZiB0aGUgZWxlbWVudHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgaW5kaWNlcyBmcm9tIHRoZSBvcmlnaW5hbCBsaXN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5ldC5JUFJhbmdlPmA6IFRoZSBsaXN0IHRvIGdldCBhIHJhbmdlIGZyb20uXG4yLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIGluZGV4IChpbmNsdXNpdmUpLlxuMy4gYE5VTUJFUmA6IFRoZSBlbmRpbmcgaW5kZXggKGV4Y2x1c2l2ZSkuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE5VTUJFUj4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnRzIGZyb20gdGhlIGdpdmVuIGxpc3QgYmV0d2VlbiB0aGUgc3BlY2lmaWVkIHN0YXJ0IChpbmNsdXNpdmUpIGFuZCBlbmQgKGV4Y2x1c2l2ZSkgaW5kaWNlcy4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBWRUNUT1Igb2YgTlVNQkVSc1xuVkVDVE9SPE5VTUJFUj4gbnVtYmVycyA9IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXG5cbi8vIERlZmluZSB0aGUgc3RhcnQgYW5kIGVuZCBpbmRpY2VzXG5OVU1CRVIgc3RhcnRJbmRleCA9IDJcbk5VTUJFUiBlbmRJbmRleCA9IDVcblxuLy8gR2V0IHRoZSBzdWJsaXN0IG9mIG51bWJlcnMgd2l0aGluIHRoZSBzcGVjaWZpZWQgcmFuZ2VcblZFQ1RPUjxOVU1CRVI+IHN1Ymxpc3QgPSBHZXRSYW5nZShudW1iZXJzLCBzdGFydEluZGV4LCBlbmRJbmRleClcblxuLy8gU3VibGlzdDogXCIgKyBzdWJsaXN0IiwgIm5hbWUiOiAiR2V0UmFuZ2UgKFZFQ1RPUjxOVU1CRVI+LCBOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN1Ymxpc3Qgb2YgdGhlIGVsZW1lbnRzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIGluZGljZXMgZnJvbSB0aGUgb3JpZ2luYWwgbGlzdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOVU1CRVI+YDogVGhlIGxpc3QgdG8gZ2V0IGEgcmFuZ2UgZnJvbS5cbjIuIGBOVU1CRVJgOiBUaGUgc3RhcnRpbmcgaW5kZXggKGluY2x1c2l2ZSkuXG4zLiBgTlVNQkVSYDogVGhlIGVuZGluZyBpbmRleCAoZXhjbHVzaXZlKS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgbmV3IGxpc3QgY29udGFpbmluZyB0aGUgZWxlbWVudHMgZnJvbSB0aGUgZ2l2ZW4gbGlzdCBiZXR3ZWVuIHRoZSBzcGVjaWZpZWQgc3RhcnQgKGluY2x1c2l2ZSkgYW5kIGVuZCAoZXhjbHVzaXZlKSBpbmRpY2VzLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIFZFQ1RPUiBvZiBTVFJJTkdzXG5WRUNUT1I8U1RSSU5HPiBleGFtcGxlTGlzdCA9IFwiYXBwbGVcIiwgXCJiYW5hbmFcIiwgXCJjaGVycnlcIiwgXCJkYXRlXCIsIFwiZWxkZXJiZXJyeVwiLCBcImZpZ1wiLCBcImdyYXBlXCJcblxuLy8gRGVmaW5lIHRoZSBzdGFydCBhbmQgZW5kIGluZGljZXNcbk5VTUJFUiBzdGFydEluZGV4ID0gMlxuTlVNQkVSIGVuZEluZGV4ID0gNVxuXG4vLyBHZXQgdGhlIHN1Ymxpc3QgdXNpbmcgR2V0UmFuZ2VcblZFQ1RPUjxTVFJJTkc+IHN1Ymxpc3QgPSBHZXRSYW5nZShleGFtcGxlTGlzdCwgc3RhcnRJbmRleCwgZW5kSW5kZXgpXG5cbi8vIFN1Ymxpc3Q6IFwiICsgc3VibGlzdCB3YXMgcHJpbnRlZCB0byB0aGUgY29uc29sZVxuLy8gU3VibGlzdDogXCIgKyBzdWJsaXN0IiwgIm5hbWUiOiAiR2V0UmFuZ2UgKFZFQ1RPUjxTVFJJTkc+LCBOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN1Ymxpc3Qgb2YgdGhlIGVsZW1lbnRzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIGluZGljZXMgZnJvbSB0aGUgb3JpZ2luYWwgbGlzdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGxpc3QgdG8gZ2V0IGEgcmFuZ2UgZnJvbS5cbjIuIGBOVU1CRVJgOiBUaGUgc3RhcnRpbmcgaW5kZXggKGluY2x1c2l2ZSkuXG4zLiBgTlVNQkVSYDogVGhlIGVuZGluZyBpbmRleCAoZXhjbHVzaXZlKS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgZ2l2ZW4gSlNPTiBub2RlIGFzIGEgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGEgSlNPTiBvYmplY3RcbkpTT04gbXlKc29uID0ge31cblxuLy8gQ3JlYXRlIGEgTUFQIHRvIGhvbGQgdGhlIHZhbHVlXG5NQVA8U1RSSU5HLCBNV0cuSW50ZXJuYWxWYXJpYW50PiB2YWx1ZU1hcFxudmFsdWVNYXBbXCJrZXkxXCJdID0gXCJ2YWx1ZTFcIlxudmFsdWVNYXBbXCJrZXkyXCJdID0gMTIzXG5cbi8vIFNldCB0aGUgdmFsdWUgaW4gdGhlIEpTT04gb2JqZWN0XG5teUpzb24gPSBKU09OLlNldChteUpzb24sIFwiZXhhbXBsZUtleVwiLCB2YWx1ZU1hcClcblxuLy8gU2V0IGEgdXNlci1kZWZpbmVkIHZhcmlhYmxlIHdpdGggdGhlIG1vZGlmaWVkIEpTT05cbk1XRy5TZXRVc2VyRGVmaW5lZFZhcihcImV4YW1wbGVWYXJcIiwgbXlKc29uKVxuXG4vLyBQcmludCB0aGUgSlNPTiBvYmplY3QgdG8gdGhlIGNvbnNvbGUgZm9yIGRlYnVnZ2luZ1xuLy8gbXlKc29uIiwgIm5hbWUiOiAiR2V0VHlwZSAoSlNPTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZGF0YSB0eXBlIG9mIHRoZSBnaXZlbiBKU09OIG5vZGUgYXMgYSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIEpTT04gbm9kZSB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2YuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gbWFwIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQga2V5LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk1BUDxTVFJJTkcsIFNUUklORz4gaGVhZGVycyA9IE1XRy5HZXRSZXF1ZXN0SGVhZGVycygpXG5TVFJJTkcga2V5VG9DaGVjayA9IFwiVXNlci1BZ2VudFwiXG5cbklGIEhhc0tleShoZWFkZXJzLCBrZXlUb0NoZWNrKSBUSEVOIHtcbiAgICAvLyBLZXkgZXhpc3RzIGluIHRoZSBoZWFkZXJzIG1hcC5cbn0gRUxTRSB7XG4gICAgLy8gS2V5IGRvZXMgbm90IGV4aXN0IGluIHRoZSBoZWFkZXJzIG1hcC5cbn0iLCAibmFtZSI6ICJIYXNLZXkgKE1BUDxTVFJJTkcsIFNUUklORz4sIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIG1hcCBjb250YWlucyB0aGUgZ2l2ZW4ga2V5LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1BUDxTVFJJTkcsU1RSSU5HPmA6IFRoZSBtYXAgdG8gc2VhcmNoLlxuMi4gYFNUUklOR2A6IFRoZSBrZXkgdG8gc2VhcmNoIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgaW5pdGlhbCB0cmlnZ2VyIGFzIGEgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUm91dGluZSB0cmlnZ2VyZWQgb24gV2ViLlJlcXVlc3Qgb3IgV2ViLlJlc3BvbnNlXG5cbi8vIEV4YW1wbGUgY29uZGl0aW9uXG5JRiBNV0cuVXJsKCkuSG9zdCA9PSBcImV4YW1wbGUuY29tXCIgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIGV4YW1wbGUuY29tIGlzIGJsb2NrZWRcIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiQWNjZXNzIGFsbG93ZWRcIilcbn0iLCAibmFtZSI6ICJJbml0aWFsVHJpZ2dlciAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBpbml0aWFsIHRyaWdnZXIgYXMgYSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiUmVnRXhKU2kuTGlzdCIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIHRoZSBnaXZlbiBlbGVtZW50IGluc2VydGVkIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDcmVhdGUgYSBuZXcgUmVnRXhKU2kuTGlzdFxuUmVnRXhKU2kuTGlzdCByZWdleExpc3QgPSBSZWdFeEpTaS5MaXN0KClcblxuLy8gQ3JlYXRlIGEgbmV3IFJlZ0V4SlNpIG9iamVjdFxuUmVnRXhKU2kgcmVnZXgxID0gUmVnRXhKU2koXCJwYXR0ZXJuMVwiKVxuUmVnRXhKU2kgcmVnZXgyID0gUmVnRXhKU2koXCJwYXR0ZXJuMlwiKVxuXG4vLyBJbnNlcnQgdGhlIGZpcnN0IHJlZ2V4IGF0IHBvc2l0aW9uIDBcbnJlZ2V4TGlzdC5JbnNlcnQocmVnZXgxLCAwKVxuXG4vLyBJbnNlcnQgdGhlIHNlY29uZCByZWdleCBhdCBwb3NpdGlvbiAxXG5yZWdleExpc3QuSW5zZXJ0KHJlZ2V4MiwgMSlcblxuLy8gRGVidWcgb3V0cHV0IHRvIHZlcmlmeSB0aGUgaW5zZXJ0aW9uIHdhcyByZXBsYWNlZCB3aXRoIGEgY29tbWVudFxuLy8gRmlyc3QgcmVnZXggcGF0dGVybjogcmVnZXhMaXN0WzBdLlBhdHRlcm4oKVxuLy8gU2Vjb25kIHJlZ2V4IHBhdHRlcm46IHJlZ2V4TGlzdFsxXS5QYXR0ZXJuKCkiLCAibmFtZSI6ICJJbnNlcnQgKFJlZ0V4SlNpLkxpc3QsIFJlZ0V4SlNpLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBsaXN0IHdpdGggdGhlIGVsZW1lbnQgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFJlZ0V4SlNpLkxpc3RgOiBUaGUgbGlzdCB0byBpbnNlcnQgaW50by5cbjIuIGBSZWdFeEpTaWA6IFRoZSBlbGVtZW50IHRvIGluc2VydC5cbjMuIGBOVU1CRVJgOiBUaGUgcG9zaXRpb24gYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBlbGVtZW50LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJJbnNlcnRzIHRoZSBzdHJpbmcgYXQgdGhlIGdpdmVuIHBvc2l0aW9uIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgb3JpZ2luYWxTdHJpbmcgPSBcIkhlbGxvIFdvcmxkXCJcbk5VTUJFUiBwb3NpdGlvbiA9IDZcblNUUklORyBzdHJpbmdUb0luc2VydCA9IFwiQmVhdXRpZnVsIFwiXG5cblNUUklORyByZXN1bHRTdHJpbmcgPSBJbnNlcnQob3JpZ2luYWxTdHJpbmcsIHBvc2l0aW9uLCBzdHJpbmdUb0luc2VydClcbi8vIE91dHB1dCB3aWxsIGJlIFwiSGVsbG8gQmVhdXRpZnVsIFdvcmxkXCIiLCAibmFtZSI6ICJJbnNlcnQgKFNUUklORywgTlVNQkVSLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBuZXcgc3RyaW5nIHdpdGggdGhlIHNlY29uZCBzdHJpbmcgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBpbiB0aGUgZmlyc3Qgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG9yaWdpbmFsIHN0cmluZy5cbjIuIGBOVU1CRVJgOiBUaGUgcG9zaXRpb24gYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBuZXcgc3RyaW5nLlxuMy4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gaW5zZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxNZWRpYVR5cGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBsaXN0IHdpdGggdGhlIGdpdmVuIGVsZW1lbnQgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBWRUNUT1Igb2YgTWVkaWFUeXBlIHdpdGggc29tZSBpbml0aWFsIHZhbHVlc1xuVkVDVE9SPE1lZGlhVHlwZT4gbWVkaWFUeXBlcyA9IE1lZGlhVHlwZShcInRleHQvaHRtbFwiKSwgTWVkaWFUeXBlKFwiaW1hZ2UvcG5nXCIpLCBNZWRpYVR5cGUoXCJhcHBsaWNhdGlvbi94bWxcIilcblxuLy8gQ3JlYXRlIGEgbmV3IE1lZGlhVHlwZSBvYmplY3QgdG8gaW5zZXJ0XG5NZWRpYVR5cGUgbmV3TWVkaWFUeXBlID0gTWVkaWFUeXBlKFwiYXBwbGljYXRpb24vanNvblwiKVxuXG4vLyBTcGVjaWZ5IHRoZSBwb3NpdGlvbiB0byBpbnNlcnQgdGhlIG5ldyBNZWRpYVR5cGVcbk5VTUJFUiBwb3NpdGlvbiA9IDFcblxuLy8gSW5zZXJ0IHRoZSBuZXcgTWVkaWFUeXBlIGludG8gdGhlIFZFQ1RPUiBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uXG5tZWRpYVR5cGVzID0gSW5zZXJ0KG1lZGlhVHlwZXMsIG5ld01lZGlhVHlwZSwgcG9zaXRpb24pXG5cbi8vIERlYnVnIG91dHB1dCB0byB2ZXJpZnkgdGhlIGluc2VydGlvblxuLy8gXCJVcGRhdGVkIG1lZGlhVHlwZXM6IFwiICsgbWVkaWFUeXBlcyIsICJuYW1lIjogIkluc2VydCAoVkVDVE9SPE1lZGlhVHlwZT4sIE1lZGlhVHlwZSwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgdmVjdG9yIHdpdGggdGhlIG5ldyBlbGVtZW50IGluc2VydGVkIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TWVkaWFUeXBlPmA6IFRoZSBsaXN0IHRvIGluc2VydCBpbnRvLlxuMi4gYE1lZGlhVHlwZWA6IFRoZSBlbGVtZW50IHRvIGluc2VydC5cbjMuIGBOVU1CRVJgOiBUaGUgcG9zaXRpb24gYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBlbGVtZW50LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxNV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBsaXN0IHdpdGggdGhlIGdpdmVuIGVsZW1lbnQgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBWRUNUT1Igb2YgTVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlXG5WRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPiBhcHBDYXRlZ29yaWVzID0gW1wiY2F0ZWdvcnkxXCIsIFwiY2F0ZWdvcnkyXCIsIFwiY2F0ZWdvcnkzXCJdXG5cbi8vIENyZWF0ZSBhIG5ldyBNV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGUgdG8gaW5zZXJ0XG5NV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGUgbmV3Q2F0ZWdvcnkgPSBcIm5ld0NhdGVnb3J5XCJcblxuLy8gU3BlY2lmeSB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIG5ldyBjYXRlZ29yeSBzaG91bGQgYmUgaW5zZXJ0ZWRcbk5VTUJFUiBwb3NpdGlvbiA9IDFcblxuLy8gSW5zZXJ0IHRoZSBuZXcgY2F0ZWdvcnkgaW50byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uXG5JbnNlcnQoYXBwQ2F0ZWdvcmllcywgbmV3Q2F0ZWdvcnksIHBvc2l0aW9uKVxuXG4vLyBEZWJ1ZyB0byBjaGVjayB0aGUgdXBkYXRlZCBWRUNUT1Jcbi8vIERFQlVHKGFwcENhdGVnb3JpZXMpIHJlcGxhY2VkIHdpdGggYSBjb21tZW50IHRvIGV4cGxhaW4gdGhlIGNvZGVcbi8vIENoZWNrIHRoZSB1cGRhdGVkIFZFQ1RPUiIsICJuYW1lIjogIkluc2VydCAoVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT4sIE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZSwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgdmVjdG9yIHdpdGggdGhlIGdpdmVuIGVsZW1lbnQgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGU+YDogVGhlIGxpc3QgdG8gaW5zZXJ0IGludG8uXG4yLiBgTVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlYDogVGhlIGVsZW1lbnQgdG8gaW5zZXJ0LlxuMy4gYE5VTUJFUmA6IFRoZSBwb3NpdGlvbiBhdCB3aGljaCB0byBpbnNlcnQgdGhlIGVsZW1lbnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5BcHBsaWNhdGlvblR5cGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBsaXN0IHdpdGggdGhlIGdpdmVuIGVsZW1lbnQgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBWRUNUT1Igb2YgTVdHLkFwcGxpY2F0aW9uVHlwZVxuVkVDVE9SPE1XRy5BcHBsaWNhdGlvblR5cGU+IGFwcFR5cGVzID0gW1wiZXhhbXBsZUFwcExpc3RcIl1cblxuLy8gQ3JlYXRlIGFuIE1XRy5BcHBsaWNhdGlvblR5cGUgb2JqZWN0IHRvIGluc2VydFxuTVdHLkFwcGxpY2F0aW9uVHlwZSBuZXdBcHBUeXBlXG5uZXdBcHBUeXBlLm5hbWUgPSBcIk5ldyBBcHBsaWNhdGlvblwiXG5uZXdBcHBUeXBlLmNhdGVnb3J5ID0gXCJFeGFtcGxlIENhdGVnb3J5XCJcblxuLy8gU3BlY2lmeSB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIG5ldyBhcHBsaWNhdGlvbiB0eXBlIHNob3VsZCBiZSBpbnNlcnRlZFxuTlVNQkVSIHBvc2l0aW9uID0gMlxuXG4vLyBJbnNlcnQgdGhlIG5ldyBhcHBsaWNhdGlvbiB0eXBlIGludG8gdGhlIHZlY3RvciBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uXG5JbnNlcnQoYXBwVHlwZXMsIG5ld0FwcFR5cGUsIHBvc2l0aW9uKVxuXG4vLyBJbnNlcnRlZCBuZXcgYXBwbGljYXRpb24gdHlwZSBhdCBwb3NpdGlvblxuLy8gUHJldmlvdXNseTogREVCVUcoXCJJbnNlcnRlZCBuZXcgYXBwbGljYXRpb24gdHlwZSBhdCBwb3NpdGlvbiBcIiArIHBvc2l0aW9uKSIsICJuYW1lIjogIkluc2VydCAoVkVDVE9SPE1XRy5BcHBsaWNhdGlvblR5cGU+LCBNV0cuQXBwbGljYXRpb25UeXBlLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3Igd2l0aCB0aGUgYE1XRy5BcHBsaWNhdGlvblR5cGVgIGVsZW1lbnQgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuQXBwbGljYXRpb25UeXBlPmA6IFRoZSBsaXN0IHRvIGluc2VydCBpbnRvLlxuMi4gYE1XRy5BcHBsaWNhdGlvblR5cGVgOiBUaGUgZWxlbWVudCB0byBpbnNlcnQuXG4zLiBgTlVNQkVSYDogVGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRvIGluc2VydCB0aGUgZWxlbWVudC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCB0aGUgZ2l2ZW4gZWxlbWVudCBpbnNlcnRlZCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIFZFQ1RPUiBvZiBNV0cuSG9zdEFuZENlcnRpZmljYXRlXG5WRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4gaG9zdENlcnRMaXN0ID0gW1wiZXhpc3RpbmdIb3N0Q2VydExpc3RcIl1cblxuLy8gQ3JlYXRlIGEgbmV3IE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGUgb2JqZWN0XG5NV0cuSG9zdEFuZENlcnRpZmljYXRlIG5ld0hvc3RDZXJ0XG5uZXdIb3N0Q2VydC5Ib3N0ID0gXCJleGFtcGxlLmNvbVwiXG5uZXdIb3N0Q2VydC5DZXJ0aWZpY2F0ZSA9IFwiZXhhbXBsZUNlcnRpZmljYXRlXCJcblxuLy8gU3BlY2lmeSB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIG5ldyBlbGVtZW50IHNob3VsZCBiZSBpbnNlcnRlZFxuTlVNQkVSIHBvc2l0aW9uID0gMVxuXG4vLyBJbnNlcnQgdGhlIG5ldyBNV0cuSG9zdEFuZENlcnRpZmljYXRlIGludG8gdGhlIFZFQ1RPUiBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uXG5ob3N0Q2VydExpc3QgPSBJbnNlcnQoaG9zdENlcnRMaXN0LCBuZXdIb3N0Q2VydCwgcG9zaXRpb24pXG5cbi8vIFVwZGF0ZWQgaG9zdENlcnRMaXN0OiBcIiArIGhvc3RDZXJ0TGlzdCIsICJuYW1lIjogIkluc2VydCAoVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+LCBNV0cuSG9zdEFuZENlcnRpZmljYXRlLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3Igd2l0aCB0aGVgTVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZWBlbGVtZW50IGluc2VydGVkIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT5gOiBUaGUgbGlzdCB0byBpbnNlcnQgaW50by5cbjIuIGBNV0cuSG9zdEFuZENlcnRpZmljYXRlYDogVGhlIGVsZW1lbnQgdG8gaW5zZXJ0LlxuMy4gYE5VTUJFUmA6IFRoZSBwb3NpdGlvbiBhdCB3aGljaCB0byBpbnNlcnQgdGhlIGVsZW1lbnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCB0aGUgZ2l2ZW4gZWxlbWVudCBpbnNlcnRlZCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIFZFQ1RPUiBvZiBNV0cuVXJsQ2F0ZWdvcnlcblZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+IHVybENhdGVnb3JpZXMgPSBbXCJjYXRlZ29yeV9saXN0XCJdXG5cbi8vIENyZWF0ZSBhIG5ldyBNV0cuVXJsQ2F0ZWdvcnkgb2JqZWN0XG5NV0cuVXJsQ2F0ZWdvcnkgbmV3Q2F0ZWdvcnkgPSBNV0cuVXJsQ2F0ZWdvcnkoKVxubmV3Q2F0ZWdvcnkuTmFtZSA9IFwiTmV3IENhdGVnb3J5XCJcbm5ld0NhdGVnb3J5LkRlc2NyaXB0aW9uID0gXCJUaGlzIGlzIGEgbmV3IFVSTCBjYXRlZ29yeVwiXG5cbi8vIEluc2VydCB0aGUgbmV3IGNhdGVnb3J5IGF0IHBvc2l0aW9uIDIgKGluZGV4IDEpXG51cmxDYXRlZ29yaWVzID0gSW5zZXJ0KHVybENhdGVnb3JpZXMsIG5ld0NhdGVnb3J5LCAxKVxuXG4vLyBVcGRhdGVkIFVSTCBDYXRlZ29yaWVzOiBcIiArIHVybENhdGVnb3JpZXMiLCAibmFtZSI6ICJJbnNlcnQgKFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+LCBNV0cuVXJsQ2F0ZWdvcnksIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCB0aGUgZ2l2ZW4gZWxlbWVudCBpbnNlcnRlZCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT5gOiBUaGUgbGlzdCB0byBpbnNlcnQgaW50by5cbjIuIGBNV0cuVXJsQ2F0ZWdvcnlgOiBUaGUgZWxlbWVudCB0byBpbnNlcnQuXG4zLiBgTlVNQkVSYDogVGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRvIGluc2VydCB0aGUgZWxlbWVudC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TlVNQkVSPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIHRoZSBnaXZlbiBlbGVtZW50IGluc2VydGVkIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TlVNQkVSPiBudW1iZXJzID0gMSwgMiwgMywgNSwgNlxuTlVNQkVSIG5ld051bWJlciA9IDRcbk5VTUJFUiBwb3NpdGlvbiA9IDNcblxuLy8gSW5zZXJ0IHRoZSBuZXcgbnVtYmVyIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb25cbm51bWJlcnMgPSBJbnNlcnQobnVtYmVycywgbmV3TnVtYmVyLCBwb3NpdGlvbilcblxuLy8gUHJpbnQgdGhlIHVwZGF0ZWQgdmVjdG9yIHRvIHRoZSBjb25zb2xlXG4vLyBudW1iZXJzIiwgIm5hbWUiOiAiSW5zZXJ0IChWRUNUT1I8TlVNQkVSPiwgTlVNQkVSLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3Igd2l0aCB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgaW5zZXJ0ZWQgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5VTUJFUj5gOiBUaGUgbGlzdCB0byBpbnNlcnQgaW50by5cbjIuIGBOVU1CRVJgOiBUaGUgZWxlbWVudCB0byBpbnNlcnQuXG4zLiBgTlVNQkVSYDogVGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRvIGluc2VydCB0aGUgZWxlbWVudC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIHRoZSBnaXZlbiBlbGVtZW50IGluc2VydGVkIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIGEgVkVDVE9SIG9mIFNUUklOR3NcblZFQ1RPUjxTVFJJTkc+IGZydWl0cyA9IFwiQXBwbGVcIiwgXCJCYW5hbmFcIiwgXCJDaGVycnlcIlxuXG4vLyBJbnNlcnQgYSBuZXcgZnJ1aXQgYXQgdGhlIHNlY29uZCBwb3NpdGlvbiAoaW5kZXggMSlcbmZydWl0cyA9IEluc2VydChmcnVpdHMsIFwiT3JhbmdlXCIsIDEpXG5cbi8vIFRoZSB1cGRhdGVkIFZFQ1RPUiB3YXMgcHJldmlvdXNseSBwcmludGVkIHRvIHRoZSBjb25zb2xlXG4vLyBmcnVpdHMiLCAibmFtZSI6ICJJbnNlcnQgKFZFQ1RPUjxTVFJJTkc+LCBTVFJJTkcsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHZlY3RvciB3aXRoIHRoZSBzdHJpbmcgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGxpc3QgdG8gaW5zZXJ0IGludG8uXG4yLiBgU1RSSU5HYDogVGhlIGVsZW1lbnQgdG8gaW5zZXJ0LlxuMy4gYE5VTUJFUmA6IFRoZSBwb3NpdGlvbiBhdCB3aGljaCB0byBpbnNlcnQgdGhlIGVsZW1lbnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgdHdvIGxpc3RzIGhhdmUgbm8gZWxlbWVudHMgaW4gY29tbW9uLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0d28gUmVnRXhKU2kuTGlzdCBvYmplY3RzXG5SZWdFeEpTaS5MaXN0IGxpc3QxID0gW1wiZXhhbXBsZV9saXN0MVwiXVxuUmVnRXhKU2kuTGlzdCBsaXN0MiA9IFtcImV4YW1wbGVfbGlzdDJcIl1cblxuLy8gQ2hlY2sgaWYgdGhlIGxpc3RzIGFyZSBkaXNqb2luZWRcbkJPT0xFQU4gYXJlRGlzam9pbmVkID0gSXNEaXNqb2luZWQobGlzdDEsIGxpc3QyKVxuXG4vLyBQcmludCB0aGUgcmVzdWx0IHRvIHRoZSBjb25zb2xlXG5JRiBhcmVEaXNqb2luZWQgVEhFTiB7XG4gICAgLy8gVGhlIGxpc3RzIGFyZSBkaXNqb2luZWQuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBsaXN0cyBhcmUgbm90IGRpc2pvaW5lZC5cbn0iLCAibmFtZSI6ICJJc0Rpc2pvaW5lZCAoUmVnRXhKU2kuTGlzdCwgUmVnRXhKU2kuTGlzdCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJuc2BUUlVFYGlmIHRoZSB0d28gbGlzdHMgaGF2ZSB6ZXJvIGl0ZW1zIGluIGNvbW1vbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFJlZ0V4SlNpLkxpc3RgOiBUaGUgZmlyc3QgbGlzdC5cbjIuIGBSZWdFeEpTaS5MaXN0YDogVGhlIHNlY29uZCBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHR3byBsaXN0cyBoYXZlIG5vIGVsZW1lbnRzIGluIGNvbW1vbiwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TWVkaWFUeXBlPiBtZWRpYVR5cGVzMSA9IFtcIm1lZGlhVHlwZUxpc3QxXCJdXG5WRUNUT1I8TWVkaWFUeXBlPiBtZWRpYVR5cGVzMiA9IFtcIm1lZGlhVHlwZUxpc3QyXCJdXG5cbklGIElzRGlzam9pbmVkKG1lZGlhVHlwZXMxLCBtZWRpYVR5cGVzMikgVEhFTiB7XG4gICAgLy8gVGhlIG1lZGlhIHR5cGVzIGFyZSBkaXNqb2ludC5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIG1lZGlhIHR5cGVzIGFyZSBub3QgZGlzam9pbnQuXG59IiwgIm5hbWUiOiAiSXNEaXNqb2luZWQgKFZFQ1RPUjxNZWRpYVR5cGU+LCBWRUNUT1I8TWVkaWFUeXBlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJuc2BUUlVFYGlmIHRoZSB0d28gbGlzdHMgaGF2ZSB6ZXJvIGl0ZW1zIGluIGNvbW1vbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNZWRpYVR5cGU+YDogVGhlIGZpcnN0IGxpc3QuXG4yLiBgVkVDVE9SPE1lZGlhVHlwZT5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgdHdvIGxpc3RzIGhhdmUgbm8gZWxlbWVudHMgaW4gY29tbW9uLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgdHdvIHZlY3RvcnMgb2YgTVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZSBvYmplY3RzXG5WRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4gaG9zdExpc3QxID0gTVdHLlNlcnZlckhvc3RBbmRDZXJ0KCksIE1XRy5TZXJ2ZXJIb3N0QW5kQ2VydCgpXG5WRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4gaG9zdExpc3QyID0gTVdHLlNlcnZlckhvc3RBbmRDZXJ0KCksIE1XRy5TZXJ2ZXJIb3N0QW5kQ2VydCgpXG5cbi8vIENoZWNrIGlmIHRoZSB0d28gdmVjdG9ycyBhcmUgZGlzam9pbnRcbklGIElzRGlzam9pbmVkKGhvc3RMaXN0MSwgaG9zdExpc3QyKSBUSEVOIHtcbiAgICAvLyBUaGUgaG9zdCBsaXN0cyBhcmUgZGlzam9pbnQuXG4gICAgLy8gQWRkaXRpb25hbCBhY3Rpb25zIGlmIHRoZSBsaXN0cyBhcmUgZGlzam9pbnRcbn0gRUxTRSB7XG4gICAgLy8gVGhlIGhvc3QgbGlzdHMgYXJlIG5vdCBkaXNqb2ludC5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgaWYgdGhlIGxpc3RzIGFyZSBub3QgZGlzam9pbnRcbn0iLCAibmFtZSI6ICJJc0Rpc2pvaW5lZCAoVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+LCBWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnNgVFJVRWBpZiB0aGUgdHdvIGxpc3RzIGhhdmUgemVybyBpdGVtcyBpbiBjb21tb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT5gOiBUaGUgZmlyc3QgbGlzdC5cbjIuIGBWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgdHdvIGxpc3RzIGhhdmUgbm8gZWxlbWVudHMgaW4gY29tbW9uLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+IGNhdGVnb3J5TGlzdDEgPSBbXCJDYXRlZ29yeUxpc3QxXCJdXG5WRUNUT1I8TVdHLlVybENhdGVnb3J5PiBjYXRlZ29yeUxpc3QyID0gW1wiQ2F0ZWdvcnlMaXN0MlwiXVxuXG5JRiBJc0Rpc2pvaW5lZChjYXRlZ29yeUxpc3QxLCBjYXRlZ29yeUxpc3QyKSBUSEVOIHtcbiAgICAvLyBUaGUgVVJMIGNhdGVnb3JpZXMgYXJlIGRpc2pvaW50LlxufSBFTFNFIHtcbiAgICAvLyBUaGUgVVJMIGNhdGVnb3JpZXMgYXJlIG5vdCBkaXNqb2ludC5cbn0iLCAibmFtZSI6ICJJc0Rpc2pvaW5lZCAoVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4sIFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zYFRSVUVgaWYgdGhlIHR3byBsaXN0cyBoYXZlIHplcm8gaXRlbXMgaW4gY29tbW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT5gOiBUaGUgZmlyc3QgbGlzdC5cbjIuIGBWRUNUT1I8TVdHLlVybENhdGVnb3J5PmA6IFRoZSBzZWNvbmQgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSB0d28gbGlzdHMgaGF2ZSBubyBlbGVtZW50cyBpbiBjb21tb24sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5ldC5JUD4gdmVjdG9yMSA9IFtcIjE5Mi4xNjguMS4xXCIsIFwiMTkyLjE2OC4xLjJcIiwgXCIxOTIuMTY4LjEuM1wiXVxuVkVDVE9SPE5ldC5JUD4gdmVjdG9yMiA9IFtcIjE5Mi4xNjguMi4xXCIsIFwiMTkyLjE2OC4yLjJcIiwgXCIxOTIuMTY4LjIuM1wiXVxuXG5CT09MRUFOIGlzRGlzam9pbnQgPSBUUlVFXG5cbkZPUiBFQUNIIGlwMSBJTiB2ZWN0b3IxIHtcbiAgICBGT1IgRUFDSCBpcDIgSU4gdmVjdG9yMiB7XG4gICAgICAgIElGIGlwMSA9PSBpcDIgVEhFTiB7XG4gICAgICAgICAgICBpc0Rpc2pvaW50ID0gRkFMU0VcbiAgICAgICAgICAgIEJSRUFLXG4gICAgICAgIH1cbiAgICB9XG4gICAgSUYgTk9UIGlzRGlzam9pbnQgVEhFTiB7XG4gICAgICAgIEJSRUFLXG4gICAgfVxufVxuXG5JRiBpc0Rpc2pvaW50IFRIRU4ge1xuICAgIC8vIFRoZSB2ZWN0b3JzIGFyZSBkaXNqb2ludC5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIHZlY3RvcnMgYXJlIG5vdCBkaXNqb2ludC5cbn0iLCAibmFtZSI6ICJJc0Rpc2pvaW5lZCAoVkVDVE9SPE5ldC5JUD4sIFZFQ1RPUjxOZXQuSVA+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zYFRSVUVgaWYgdGhlIHR3byBsaXN0cyBoYXZlIHplcm8gaXRlbXMgaW4gY29tbW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5ldC5JUD5gOiBUaGUgZmlyc3QgbGlzdC5cbjIuIGBWRUNUT1I8TmV0LklQPmA6IFRoZSBzZWNvbmQgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSB0d28gbGlzdHMgaGF2ZSBubyBlbGVtZW50cyBpbiBjb21tb24sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5ldC5JUFJhbmdlPiBsaXN0MSA9IFwiMTkyLjE2OC4xLjAvMjRcIiwgXCIxMC4wLjAuMC84XCJcblZFQ1RPUjxOZXQuSVBSYW5nZT4gbGlzdDIgPSBcIjE3Mi4xNi4wLjAvMTJcIiwgXCIxOTIuMTY4LjIuMC8yNFwiXG5cbkJPT0xFQU4gcmVzdWx0ID0gSXNEaXNqb2luZWQobGlzdDEsIGxpc3QyKVxuXG5JRiByZXN1bHQgVEhFTiB7XG4gICAgLy8gVGhlIElQIHJhbmdlcyBhcmUgZGlzam9pbmVkLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgSVAgcmFuZ2VzIGFyZSBub3QgZGlzam9pbmVkLlxufSIsICJuYW1lIjogIklzRGlzam9pbmVkIChWRUNUT1I8TmV0LklQUmFuZ2U+LCBWRUNUT1I8TmV0LklQUmFuZ2U+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zYFRSVUVgaWYgdGhlIHR3byBsaXN0cyBoYXZlIHplcm8gaXRlbXMgaW4gY29tbW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5ldC5JUFJhbmdlPmA6IFRoZSBmaXJzdCBsaXN0LlxuMi4gYFZFQ1RPUjxOZXQuSVBSYW5nZT5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgdHdvIGxpc3RzIGhhdmUgbm8gZWxlbWVudHMgaW4gY29tbW9uLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxOVU1CRVI+IHZlY3RvcjEgPSAxLCAyLCAzXG5WRUNUT1I8TlVNQkVSPiB2ZWN0b3IyID0gNCwgNSwgNlxuXG5CT09MRUFOIHJlc3VsdCA9IElzRGlzam9pbmVkKHZlY3RvcjEsIHZlY3RvcjIpXG5cbklGIHJlc3VsdCBUSEVOIHtcbiAgICAvLyBUaGUgbnVtYmVyIHZlY3RvcnMgYXJlIGRpc2pvaW50LlxufSBFTFNFIHtcbiAgICAvLyBUaGUgbnVtYmVyIHZlY3RvcnMgYXJlIG5vdCBkaXNqb2ludC5cbn0iLCAibmFtZSI6ICJJc0Rpc2pvaW5lZCAoVkVDVE9SPE5VTUJFUj4sIFZFQ1RPUjxOVU1CRVI+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zYFRSVUVgaWYgdGhlIHR3byBsaXN0cyBoYXZlIHplcm8gaXRlbXMgaW4gY29tbW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5VTUJFUj5gOiBUaGUgZmlyc3QgbGlzdC5cbjIuIGBWRUNUT1I8TlVNQkVSPmA6IFRoZSBzZWNvbmQgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSB0d28gbGlzdHMgaGF2ZSBubyBlbGVtZW50cyBpbiBjb21tb24sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPFNUUklORz4gbGlzdDEgPSBcImFwcGxlXCIsIFwiYmFuYW5hXCIsIFwiY2hlcnJ5XCJcblZFQ1RPUjxTVFJJTkc+IGxpc3QyID0gXCJkYXRlXCIsIFwiZmlnXCIsIFwiZ3JhcGVcIlxuXG5JRiBJc0Rpc2pvaW5lZChsaXN0MSwgbGlzdDIpIFRIRU4ge1xuICAgIC8vIFRoZSBsaXN0cyBhcmUgZGlzam9pbmVkLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgbGlzdHMgYXJlIG5vdCBkaXNqb2luZWQuXG59IiwgIm5hbWUiOiAiSXNEaXNqb2luZWQgKFZFQ1RPUjxTVFJJTkc+LCBWRUNUT1I8U1RSSU5HPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJuc2BUUlVFYGlmIHRoZSB0d28gbGlzdHMgaGF2ZSB6ZXJvIGl0ZW1zIGluIGNvbW1vbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGZpcnN0IGxpc3QuXG4yLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgdHdvIGxpc3RzIGhhdmUgbm8gZWxlbWVudHMgaW4gY29tbW9uLCBpZ25vcmluZyBjYXNlLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxTVFJJTkc+IHZlY3RvcjEgPSBcImFwcGxlXCIsIFwiYmFuYW5hXCIsIFwiY2hlcnJ5XCJcblZFQ1RPUjxTVFJJTkc+IHZlY3RvcjIgPSBcImRhdGVcIiwgXCJlbGRlcmJlcnJ5XCIsIFwiZmlnXCJcblxuSUYgSXNEaXNqb2luZWRDYXNlSW5zZW5zaXRpdmUodmVjdG9yMSwgdmVjdG9yMikgVEhFTiB7XG4gICAgLy8gVGhlIHZlY3RvcnMgYXJlIGRpc2pvaW50LlxufSBFTFNFIHtcbiAgICAvLyBUaGUgdmVjdG9ycyBhcmUgbm90IGRpc2pvaW50LlxufSIsICJuYW1lIjogIklzRGlzam9pbmVkQ2FzZUluc2Vuc2l0aXZlIChWRUNUT1I8U1RSSU5HPiwgVkVDVE9SPFNUUklORz4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSB0d28gbGlzdHMgaGF2ZSBubyBlbGVtZW50cyBpbiBjb21tb24gKGNhc2UtaW5zZW5zaXRpdmUpLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGZpcnN0IGxpc3QuXG4yLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGVtcHR5LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBteVN0cmluZyA9IFwiSGVsbG8sIFdvcmxkIVwiXG5cbklGIElzRW1wdHkobXlTdHJpbmcpIFRIRU4ge1xuICAgIC8vIFRoZSBzdHJpbmcgaXMgZW1wdHkuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBzdHJpbmcgaXMgbm90IGVtcHR5LlxufSIsICJuYW1lIjogIklzRW1wdHkgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIHN0cmluZyBoYXMgbm8gY2hhcmFjdGVycywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc3RyaW5nIHRvIGNoZWNrIGZvciBlbXB0aW5lc3MuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBldmVyeSBlbGVtZW50IG9mIHRoZSBmaXJzdCBsaXN0IGlzIHByZXNlbnQgaW4gdGhlIHNlY29uZCBsaXN0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0d28gUmVnRXhKU2kuTGlzdCBvYmplY3RzXG5SZWdFeEpTaS5MaXN0IGxpc3QxID0gW1wiZXhhbXBsZV9saXN0MVwiXVxuUmVnRXhKU2kuTGlzdCBsaXN0MiA9IFtcImV4YW1wbGVfbGlzdDJcIl1cblxuLy8gQ2hlY2sgaWYgbGlzdDEgaXMgYSBzdWJzZXQgb2YgbGlzdDJcbklGIElzU3ViU2V0KGxpc3QxLCBsaXN0MikgVEhFTiB7XG4gICAgLy8gbGlzdDEgaXMgYSBzdWJzZXQgb2YgbGlzdDJcbn0gRUxTRSB7XG4gICAgLy8gbGlzdDEgaXMgbm90IGEgc3Vic2V0IG9mIGxpc3QyXG59IiwgIm5hbWUiOiAiSXNTdWJTZXQgKFJlZ0V4SlNpLkxpc3QsIFJlZ0V4SlNpLkxpc3QpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGZpcnN0IGxpc3QgaXMgcHJlc2VudCBpbiB0aGUgc2Vjb25kIGxpc3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgUmVnRXhKU2kuTGlzdGA6IFRoZSBsaXN0IHRvIGNoZWNrIGFzIGEgcG90ZW50aWFsIHN1YnNldC5cbjIuIGBSZWdFeEpTaS5MaXN0YDogVGhlIGxpc3QgdG8gY2hlY2sgYWdhaW5zdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGZpcnN0IGxpc3QgaXMgcHJlc2VudCBpbiB0aGUgc2Vjb25kIGxpc3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE1lZGlhVHlwZT4gYWxsb3dlZE1lZGlhVHlwZXMgPSBbXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiYXBwbGljYXRpb24vcGRmXCJdO1xuVkVDVE9SPE1lZGlhVHlwZT4gcmVxdWVzdE1lZGlhVHlwZXMgPSBbXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCJdO1xuXG5JRiBJc1N1YlNldChyZXF1ZXN0TWVkaWFUeXBlcywgYWxsb3dlZE1lZGlhVHlwZXMpIFRIRU4ge1xuICAgIC8vIFwiUmVxdWVzdCBtZWRpYSB0eXBlcyBhcmUgYWxsb3dlZC5cIlxuICAgIE1XRy5BbGxvdyhcIk1lZGlhIHR5cGVzIGFyZSBhbGxvd2VkXCIpO1xufSBFTFNFIHtcbiAgICAvLyBcIlJlcXVlc3QgbWVkaWEgdHlwZXMgYXJlIG5vdCBhbGxvd2VkLlwiXG4gICAgTVdHLkJsb2NrKFwiTWVkaWEgdHlwZXMgYXJlIG5vdCBhbGxvd2VkXCIpO1xufSIsICJuYW1lIjogIklzU3ViU2V0IChWRUNUT1I8TWVkaWFUeXBlPiwgVkVDVE9SPE1lZGlhVHlwZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGZpcnN0IGxpc3QgaXMgcHJlc2VudCBpbiB0aGUgc2Vjb25kIGxpc3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1lZGlhVHlwZT5gOiBUaGUgbGlzdCB0byBjaGVjayBhcyBhIHBvdGVudGlhbCBzdWJzZXQuXG4yLiBgVkVDVE9SPE1lZGlhVHlwZT5gOiBUaGUgbGlzdCB0byBjaGVjayBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgZXZlcnkgZWxlbWVudCBvZiB0aGUgZmlyc3QgbGlzdCBpcyBwcmVzZW50IGluIHRoZSBzZWNvbmQgbGlzdCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4gYWxsb3dlZEhvc3RzID0gW1wiYWxsb3dlZF9ob3N0c19saXN0XCJdXG5WRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4gY3VycmVudEhvc3RzID0gW1wiY3VycmVudF9ob3N0c19saXN0XCJdXG5cbklGIElzU3ViU2V0KGN1cnJlbnRIb3N0cywgYWxsb3dlZEhvc3RzKSBUSEVOIHtcbiAgICAvLyBDdXJyZW50IGhvc3RzIGFyZSBhIHN1YnNldCBvZiBhbGxvd2VkIGhvc3RzXG4gICAgTVdHLkFsbG93KFwiU3Vic2V0Q2hlY2tQYXNzZWRcIilcbn0gRUxTRSB7XG4gICAgLy8gQ3VycmVudCBob3N0cyBhcmUgTk9UIGEgc3Vic2V0IG9mIGFsbG93ZWQgaG9zdHNcbiAgICBNV0cuQmxvY2soXCJTdWJzZXRDaGVja0ZhaWxlZFwiKVxufSIsICJuYW1lIjogIklzU3ViU2V0IChWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4sIFZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgZXZlcnkgZWxlbWVudCBvZiB0aGUgZmlyc3QgbGlzdCBpcyBwcmVzZW50IGluIHRoZSBzZWNvbmQgbGlzdCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT5gOiBUaGUgbGlzdCB0byBjaGVjayBhcyBhIHBvdGVudGlhbCBzdWJzZXQuXG4yLiBgVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+YDogVGhlIGxpc3QgdG8gY2hlY2sgYWdhaW5zdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGZpcnN0IGxpc3QgaXMgcHJlc2VudCBpbiB0aGUgc2Vjb25kIGxpc3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gYWxsb3dlZENhdGVnb3JpZXMgPSBbXCJhbGxvd2VkX2NhdGVnb3JpZXNfbGlzdFwiXVxuVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gY3VycmVudENhdGVnb3JpZXMgPSBbXCJjdXJyZW50X2NhdGVnb3JpZXNfbGlzdFwiXVxuXG5JRiBJc1N1YlNldChjdXJyZW50Q2F0ZWdvcmllcywgYWxsb3dlZENhdGVnb3JpZXMpIFRIRU4ge1xuICAgIC8vIFRoZSBjdXJyZW50IFVSTCBjYXRlZ29yaWVzIGFyZSBhIHN1YnNldCBvZiB0aGUgYWxsb3dlZCBjYXRlZ29yaWVzLlxuICAgIE1XRy5BbGxvdyhcIlVSTCBjYXRlZ29yaWVzIGFyZSBhbGxvd2VkXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBjdXJyZW50IFVSTCBjYXRlZ29yaWVzIGFyZSBOT1QgYSBzdWJzZXQgb2YgdGhlIGFsbG93ZWQgY2F0ZWdvcmllcy5cbiAgICBNV0cuQmxvY2soXCJVUkwgY2F0ZWdvcmllcyBhcmUgbm90IGFsbG93ZWRcIilcbn0iLCAibmFtZSI6ICJJc1N1YlNldCAoVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4sIFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBldmVyeSBlbGVtZW50IG9mIHRoZSBmaXJzdCBsaXN0IGlzIHByZXNlbnQgaW4gdGhlIHNlY29uZCBsaXN0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+YDogVGhlIGxpc3QgdG8gY2hlY2sgYXMgYSBwb3RlbnRpYWwgc3Vic2V0LlxuMi4gYFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+YDogVGhlIGxpc3QgdG8gY2hlY2sgYWdhaW5zdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGZpcnN0IGxpc3QgaXMgcHJlc2VudCBpbiB0aGUgc2Vjb25kIGxpc3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5ldC5JUD4gYWxsb3dlZElQcyA9IFtcImFsbG93ZWRfaXBfbGlzdFwiXVxuVkVDVE9SPE5ldC5JUD4gcmVxdWVzdElQcyA9IFtcInJlcXVlc3RfaXBfbGlzdFwiXVxuXG5JRiBJc1N1YlNldChyZXF1ZXN0SVBzLCBhbGxvd2VkSVBzKSBUSEVOIHtcbiAgICAvLyBSZXF1ZXN0IElQcyBhcmUgYSBzdWJzZXQgb2YgYWxsb3dlZCBJUHNcbiAgICBNV0cuQWxsb3coXCJJUCBDaGVjayBQYXNzZWRcIilcbn0gRUxTRSB7XG4gICAgLy8gUmVxdWVzdCBJUHMgYXJlIG5vdCBhIHN1YnNldCBvZiBhbGxvd2VkIElQc1xuICAgIE1XRy5CbG9jayhcIklQIENoZWNrIEZhaWxlZFwiKVxufSIsICJuYW1lIjogIklzU3ViU2V0IChWRUNUT1I8TmV0LklQPiwgVkVDVE9SPE5ldC5JUD4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGZpcnN0IGxpc3QgaXMgcHJlc2VudCBpbiB0aGUgc2Vjb25kIGxpc3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5ldC5JUD5gOiBUaGUgbGlzdCB0byBjaGVjayBhcyBhIHBvdGVudGlhbCBzdWJzZXQuXG4yLiBgVkVDVE9SPE5ldC5JUD5gOiBUaGUgbGlzdCB0byBjaGVjayBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgZXZlcnkgZWxlbWVudCBvZiB0aGUgZmlyc3QgbGlzdCBpcyBwcmVzZW50IGluIHRoZSBzZWNvbmQgbGlzdCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TmV0LklQUmFuZ2U+IGFsbG93ZWRSYW5nZXMgPSBbXCJhbGxvd2VkX2lwX3Jhbmdlc1wiXVxuVkVDVE9SPE5ldC5JUFJhbmdlPiByZXF1ZXN0UmFuZ2VzID0gW1wicmVxdWVzdF9pcF9yYW5nZXNcIl1cblxuSUYgSXNTdWJTZXQocmVxdWVzdFJhbmdlcywgYWxsb3dlZFJhbmdlcykgVEhFTiB7XG4gICAgLy8gSVAgcmFuZ2VzIGFyZSB3aXRoaW4gdGhlIGFsbG93ZWQgc2V0XG4gICAgTVdHLkFsbG93KClcbn0gRUxTRSB7XG4gICAgLy8gSVAgcmFuZ2VzIGFyZSBub3Qgd2l0aGluIHRoZSBhbGxvd2VkIHNldFxuICAgIE1XRy5CbG9jaygpXG59IiwgIm5hbWUiOiAiSXNTdWJTZXQgKFZFQ1RPUjxOZXQuSVBSYW5nZT4sIFZFQ1RPUjxOZXQuSVBSYW5nZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGZpcnN0IGxpc3QgaXMgcHJlc2VudCBpbiB0aGUgc2Vjb25kIGxpc3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5ldC5JUFJhbmdlPmA6IFRoZSBsaXN0IHRvIGNoZWNrIGFzIGEgcG90ZW50aWFsIHN1YnNldC5cbjIuIGBWRUNUT1I8TmV0LklQUmFuZ2U+YDogVGhlIGxpc3QgdG8gY2hlY2sgYWdhaW5zdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGZpcnN0IGxpc3QgaXMgcHJlc2VudCBpbiB0aGUgc2Vjb25kIGxpc3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5VTUJFUj4gc3Vic2V0ID0gMSwgMiwgM1xuVkVDVE9SPE5VTUJFUj4gc3VwZXJzZXQgPSAxLCAyLCAzLCA0LCA1XG5cbklGIElzU3ViU2V0KHN1YnNldCwgc3VwZXJzZXQpIFRIRU4ge1xuICAgIC8vIFRoZSBmaXJzdCB2ZWN0b3IgaXMgYSBzdWJzZXQgb2YgdGhlIHNlY29uZCB2ZWN0b3IuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBmaXJzdCB2ZWN0b3IgaXMgbm90IGEgc3Vic2V0IG9mIHRoZSBzZWNvbmQgdmVjdG9yLlxufSIsICJuYW1lIjogIklzU3ViU2V0IChWRUNUT1I8TlVNQkVSPiwgVkVDVE9SPE5VTUJFUj4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGZpcnN0IGxpc3QgaXMgcHJlc2VudCBpbiB0aGUgc2Vjb25kIGxpc3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5VTUJFUj5gOiBUaGUgbGlzdCB0byBjaGVjayBhcyBhIHBvdGVudGlhbCBzdWJzZXQuXG4yLiBgVkVDVE9SPE5VTUJFUj5gOiBUaGUgbGlzdCB0byBjaGVjayBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgZXZlcnkgZWxlbWVudCBvZiB0aGUgZmlyc3QgbGlzdCBpcyBwcmVzZW50IGluIHRoZSBzZWNvbmQgbGlzdCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8U1RSSU5HPiBzdWJzZXQgPSBcImFwcGxlXCIsIFwiYmFuYW5hXCJcblZFQ1RPUjxTVFJJTkc+IHN1cGVyc2V0ID0gXCJhcHBsZVwiLCBcImJhbmFuYVwiLCBcImNoZXJyeVwiLCBcImRhdGVcIlxuXG5JRiBJc1N1YlNldChzdWJzZXQsIHN1cGVyc2V0KSBUSEVOIHtcbiAgICAvLyBUaGUgZmlyc3QgdmVjdG9yIGlzIGEgc3Vic2V0IG9mIHRoZSBzZWNvbmQgdmVjdG9yLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgZmlyc3QgdmVjdG9yIGlzIE5PVCBhIHN1YnNldCBvZiB0aGUgc2Vjb25kIHZlY3Rvci5cbn0iLCAibmFtZSI6ICJJc1N1YlNldCAoVkVDVE9SPFNUUklORz4sIFZFQ1RPUjxTVFJJTkc+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBldmVyeSBlbGVtZW50IG9mIHRoZSBmaXJzdCBsaXN0IGlzIHByZXNlbnQgaW4gdGhlIHNlY29uZCBsaXN0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGxpc3QgdG8gY2hlY2sgYXMgYSBwb3RlbnRpYWwgc3Vic2V0LlxuMi4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGxpc3QgdG8gY2hlY2sgYWdhaW5zdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGZpcnN0IGxpc3QgaXMgcHJlc2VudCBpbiB0aGUgc2Vjb25kIGxpc3QsIGlnbm9yaW5nIGNhc2UsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPFNUUklORz4gc3Vic2V0ID0gXCJhcHBsZVwiLCBcImJhbmFuYVwiXG5WRUNUT1I8U1RSSU5HPiBzdXBlcnNldCA9IFwiQXBwbGVcIiwgXCJCYW5hbmFcIiwgXCJDaGVycnlcIlxuXG5JRiBJc1N1YlNldENhc2VJbnNlbnNpdGl2ZShzdWJzZXQsIHN1cGVyc2V0KSBUSEVOIHtcbiAgICAvLyBUaGUgc3Vic2V0IGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHN1cGVyc2V0IChjYXNlIGluc2Vuc2l0aXZlKS5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIHN1YnNldCBpcyBOT1QgY29udGFpbmVkIHdpdGhpbiB0aGUgc3VwZXJzZXQgKGNhc2UgaW5zZW5zaXRpdmUpLlxufSIsICJuYW1lIjogIklzU3ViU2V0Q2FzZUluc2Vuc2l0aXZlIChWRUNUT1I8U1RSSU5HPiwgVkVDVE9SPFNUUklORz4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGZpcnN0IGxpc3QgaXMgcHJlc2VudCBpbiB0aGUgc2Vjb25kIGxpc3QgKGNhc2UtaW5zZW5zaXRpdmUpLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGxpc3QgdG8gY2hlY2sgYXMgYSBwb3RlbnRpYWwgc3Vic2V0LlxuMi4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGxpc3QgdG8gY2hlY2sgYWdhaW5zdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJSZWdFeEpTaS5MaXN0IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB0d28gZ2l2ZW4gbGlzdHMuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdHdvIFJlZ0V4SlNpLkxpc3QgdmFyaWFibGVzXG5SZWdFeEpTaS5MaXN0IGxpc3QxID0gW1wicGF0dGVybjFcIiwgXCJwYXR0ZXJuMlwiLCBcInBhdHRlcm4zXCJdXG5SZWdFeEpTaS5MaXN0IGxpc3QyID0gW1wicGF0dGVybjRcIiwgXCJwYXR0ZXJuNVwiXVxuXG4vLyBVc2UgdGhlIEpvaW4gZnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgdGhlIHR3byBsaXN0c1xuUmVnRXhKU2kuTGlzdCBjb21iaW5lZExpc3QgPSBKb2luKGxpc3QxLCBsaXN0MilcblxuLy8gVGhlIERFQlVHIGxpbmUgd2FzIHVzZWQgdG8gcHJpbnQgdGhlIGNvbWJpbmVkIGxpc3QgdG8gdGhlIGNvbnNvbGUgZm9yIGRlYnVnZ2luZ1xuLy8gY29tYmluZWRMaXN0IiwgIm5hbWUiOiAiSm9pbiAoUmVnRXhKU2kuTGlzdCwgUmVnRXhKU2kuTGlzdCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHNpbmdsZSBsaXN0IHRoYXQgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHR3byBpbnB1dCBsaXN0cy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFJlZ0V4SlNpLkxpc3RgOiBUaGUgZmlyc3QgbGlzdC5cbjIuIGBSZWdFeEpTaS5MaXN0YDogVGhlIHNlY29uZCBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxNZWRpYVR5cGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB0d28gZ2l2ZW4gbGlzdHMuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdHdvIFZFQ1RPUjxNZWRpYVR5cGU+IHZhcmlhYmxlc1xuVkVDVE9SPE1lZGlhVHlwZT4gbWVkaWFMaXN0MSA9IE1lZGlhVHlwZShcImltYWdlL2pwZWdcIiksIE1lZGlhVHlwZShcImltYWdlL3BuZ1wiKTtcblZFQ1RPUjxNZWRpYVR5cGU+IG1lZGlhTGlzdDIgPSBNZWRpYVR5cGUoXCJhcHBsaWNhdGlvbi9wZGZcIiksIE1lZGlhVHlwZShcInRleHQvcGxhaW5cIik7XG5cbi8vIFVzZSB0aGUgSm9pbiBmdW5jdGlvbiB0byBjb21iaW5lIHRoZSB0d28gbGlzdHNcblZFQ1RPUjxNZWRpYVR5cGU+IGNvbWJpbmVkTWVkaWFMaXN0ID0gSm9pbihtZWRpYUxpc3QxLCBtZWRpYUxpc3QyKTtcblxuLy8gQ29tYmluZWQgTWVkaWEgTGlzdDogY29tYmluZWRNZWRpYUxpc3QiLCAibmFtZSI6ICJKb2luIChWRUNUT1I8TWVkaWFUeXBlPiwgVkVDVE9SPE1lZGlhVHlwZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB0d28gZ2l2ZW4gbGlzdHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TWVkaWFUeXBlPmA6IFRoZSBmaXJzdCBsaXN0LlxuMi4gYFZFQ1RPUjxNZWRpYVR5cGU+YDogVGhlIHNlY29uZCBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxNV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB0d28gZ2l2ZW4gbGlzdHMuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdHdvIHZlY3RvcnMgb2YgTVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlXG5WRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPiB2ZWN0b3IxID0gW1wiQ2F0ZWdvcnlMaXN0MVwiXVxuVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT4gdmVjdG9yMiA9IFtcIkNhdGVnb3J5TGlzdDJcIl1cblxuLy8gSm9pbiB0aGUgdHdvIHZlY3RvcnNcblZFQ1RPUjxNV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGU+IGNvbWJpbmVkVmVjdG9yID0gSm9pbih2ZWN0b3IxLCB2ZWN0b3IyKVxuXG4vLyBDb21iaW5lZCBWZWN0b3I6IFwiICsgY29tYmluZWRWZWN0b3IiLCAibmFtZSI6ICJKb2luIChWRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPiwgVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB0d28gZ2l2ZW4gbGlzdHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPmA6IFRoZSBmaXJzdCBsaXN0LlxuMi4gYFZFQ1RPUjxNV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGU+YDogVGhlIHNlY29uZCBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxNV0cuQXBwbGljYXRpb25UeXBlPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgbmV3IGxpc3QgdGhhdCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgdHdvIGdpdmVuIGxpc3RzLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHR3byB2ZWN0b3JzIG9mIE1XRy5BcHBsaWNhdGlvblR5cGVcblZFQ1RPUjxNV0cuQXBwbGljYXRpb25UeXBlPiB2ZWN0b3IxID0gW1wiQXBwVHlwZUxpc3QxXCJdXG5WRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT4gdmVjdG9yMiA9IFtcIkFwcFR5cGVMaXN0MlwiXVxuXG4vLyBVc2UgdGhlIEpvaW4gZnVuY3Rpb24gdG8gY29tYmluZSB0aGUgdHdvIHZlY3RvcnNcblZFQ1RPUjxNV0cuQXBwbGljYXRpb25UeXBlPiBjb21iaW5lZFZlY3RvciA9IEpvaW4odmVjdG9yMSwgdmVjdG9yMilcblxuLy8gQ29tYmluZWQgVmVjdG9yOiBcIiArIGNvbWJpbmVkVmVjdG9yIiwgIm5hbWUiOiAiSm9pbiAoVkVDVE9SPE1XRy5BcHBsaWNhdGlvblR5cGU+LCBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB0d28gZ2l2ZW4gbGlzdHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT5gOiBUaGUgZmlyc3QgbGlzdC5cbjIuIGBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB0d28gZ2l2ZW4gbGlzdHMuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdHdvIFZFQ1RPUnMgb2YgTVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZVxuVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+IGxpc3QxID0gW1wiaG9zdF9jZXJ0X2xpc3QxXCJdXG5WRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4gbGlzdDIgPSBbXCJob3N0X2NlcnRfbGlzdDJcIl1cblxuLy8gVXNlIHRoZSBKb2luIGZ1bmN0aW9uIHRvIGNvbWJpbmUgdGhlIHR3byBsaXN0c1xuVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+IGNvbWJpbmVkTGlzdCA9IEpvaW4obGlzdDEsIGxpc3QyKVxuXG4vLyBDb21iaW5lZCBIb3N0IGFuZCBDZXJ0aWZpY2F0ZSBMaXN0OiBjb21iaW5lZExpc3QiLCAibmFtZSI6ICJKb2luIChWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4sIFZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIG5ldyBsaXN0IHRoYXQgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHR3byBnaXZlbiBsaXN0cy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPmA6IFRoZSBmaXJzdCBsaXN0LlxuMi4gYFZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPmA6IFRoZSBzZWNvbmQgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TVdHLlVybENhdGVnb3J5PiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgbmV3IGxpc3QgdGhhdCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgdHdvIGdpdmVuIGxpc3RzLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHR3byBWRUNUT1JzIG9mIE1XRy5VcmxDYXRlZ29yeVxuVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gY2F0ZWdvcnlMaXN0MSA9IFtcIlNvY2lhbE1lZGlhXCIsIFwiTmV3c1wiXVxuVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gY2F0ZWdvcnlMaXN0MiA9IFtcIlNob3BwaW5nXCIsIFwiRW50ZXJ0YWlubWVudFwiXVxuXG4vLyBVc2UgdGhlIEpvaW4gZnVuY3Rpb24gdG8gY29tYmluZSB0aGUgdHdvIGxpc3RzXG5WRUNUT1I8TVdHLlVybENhdGVnb3J5PiBjb21iaW5lZENhdGVnb3JpZXMgPSBKb2luKGNhdGVnb3J5TGlzdDEsIGNhdGVnb3J5TGlzdDIpXG5cbi8vIENvbWJpbmVkIFVSTCBDYXRlZ29yaWVzOiBjb21iaW5lZENhdGVnb3JpZXMiLCAibmFtZSI6ICJKb2luIChWRUNUT1I8TVdHLlVybENhdGVnb3J5PiwgVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB0d28gZ2l2ZW4gbGlzdHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLlVybENhdGVnb3J5PmA6IFRoZSBmaXJzdCBsaXN0LlxuMi4gYFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+YDogVGhlIHNlY29uZCBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVA+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB0d28gZ2l2ZW4gbGlzdHMuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TmV0LklQPiBsaXN0MSA9IFwiMTkyLjE2OC4xLjFcIiwgXCIxOTIuMTY4LjEuMlwiLCBcIjE5Mi4xNjguMS4zXCJcblZFQ1RPUjxOZXQuSVA+IGxpc3QyID0gXCIxMC4wLjAuMVwiLCBcIjEwLjAuMC4yXCIsIFwiMTAuMC4wLjNcIlxuXG5WRUNUT1I8TmV0LklQPiBjb21iaW5lZExpc3QgPSBKb2luKGxpc3QxLCBsaXN0MilcblxuLy8gQ29tYmluZWQgSVAgTGlzdDogXCIgKyBjb21iaW5lZExpc3QiLCAibmFtZSI6ICJKb2luIChWRUNUT1I8TmV0LklQPiwgVkVDVE9SPE5ldC5JUD4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB0d28gZ2l2ZW4gbGlzdHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TmV0LklQPmA6IFRoZSBmaXJzdCBsaXN0LlxuMi4gYFZFQ1RPUjxOZXQuSVA+YDogVGhlIHNlY29uZCBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVBSYW5nZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIG5ldyBsaXN0IHRoYXQgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHR3byBnaXZlbiBsaXN0cy4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0d28gdmVjdG9ycyBvZiBOZXQuSVBSYW5nZVxuVkVDVE9SPE5ldC5JUFJhbmdlPiBpcFJhbmdlVmVjdG9yMSA9IE5ldC5JUFJhbmdlKFwiMTkyLjE2OC4xLjAvMjRcIiksIE5ldC5JUFJhbmdlKFwiMTAuMC4wLjAvOFwiKTtcblZFQ1RPUjxOZXQuSVBSYW5nZT4gaXBSYW5nZVZlY3RvcjIgPSBOZXQuSVBSYW5nZShcIjE3Mi4xNi4wLjAvMTJcIiksIE5ldC5JUFJhbmdlKFwiMTkyLjE2OC4yLjAvMjRcIik7XG5cbi8vIEpvaW4gdGhlIHR3byB2ZWN0b3JzXG5WRUNUT1I8TmV0LklQUmFuZ2U+IGNvbWJpbmVkSVBSYW5nZXMgPSBKb2luKGlwUmFuZ2VWZWN0b3IxLCBpcFJhbmdlVmVjdG9yMik7XG5cbi8vIENvbWJpbmVkIElQIFJhbmdlczogY29tYmluZWRJUFJhbmdlcyIsICJuYW1lIjogIkpvaW4gKFZFQ1RPUjxOZXQuSVBSYW5nZT4sIFZFQ1RPUjxOZXQuSVBSYW5nZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB0d28gZ2l2ZW4gbGlzdHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TmV0LklQUmFuZ2U+YDogVGhlIGZpcnN0IGxpc3QuXG4yLiBgVkVDVE9SPE5ldC5JUFJhbmdlPmA6IFRoZSBzZWNvbmQgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TlVNQkVSPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgbmV3IGxpc3QgdGhhdCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgdHdvIGdpdmVuIGxpc3RzLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5VTUJFUj4gbGlzdDEgPSAxLCAyLCAzXG5WRUNUT1I8TlVNQkVSPiBsaXN0MiA9IDQsIDUsIDZcblxuVkVDVE9SPE5VTUJFUj4gY29tYmluZWRMaXN0ID0gSm9pbihsaXN0MSwgbGlzdDIpXG5cbi8vIE91dHB1dCBjb21iaW5lZExpc3QiLCAibmFtZSI6ICJKb2luIChWRUNUT1I8TlVNQkVSPiwgVkVDVE9SPE5VTUJFUj4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSB0d28gZ2l2ZW4gbGlzdHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TlVNQkVSPmA6IFRoZSBmaXJzdCBsaXN0LlxuMi4gYFZFQ1RPUjxOVU1CRVI+YDogVGhlIHNlY29uZCBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJDb21iaW5lcyBhbGwgb2YgdGhlIHN0cmluZ3MgZm91bmQgaW4gdGhlIHZlY3RvciBpbnRvIG9uZSB3aXRoIHRoZSBzcGVjaWZpZWQgZGVsaW1pdGVyIGluIGJldHdlZW4gZWFjaCBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8U1RSSU5HPiB3b3JkcyA9IFwiSGVsbG9cIiwgXCJ3b3JsZFwiLCBcInRoaXNcIiwgXCJpc1wiLCBcIk1PV0dMSVwiXG5TVFJJTkcgZGVsaW1pdGVyID0gXCIgXCJcblNUUklORyByZXN1bHQgPSBKb2luKHdvcmRzLCBkZWxpbWl0ZXIpXG4vLyBPdXRwdXQ6IFwiSGVsbG8gd29ybGQgdGhpcyBpcyBNT1dHTElcIiIsICJuYW1lIjogIkpvaW4gKFZFQ1RPUjxTVFJJTkc+LCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHZlY3RvciBjb252ZXJ0ZWQgaW50byBhIHNpbmdsZSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8U1RSSU5HPmA6IFRoZSBsaXN0IG9mIHN0cmluZ3MgdG8gY29tYmluZS5cbjIuIGBTVFJJTkdgOiBUaGUgZGVsaW1pdGVyIHRvIHBsYWNlIGJldHdlZW4gZWFjaCBzdHJpbmcuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIG5ldyBsaXN0IHRoYXQgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHR3byBnaXZlbiBsaXN0cy4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxTVFJJTkc+IHZlY3RvcjEgPSBcImFwcGxlXCIsIFwiYmFuYW5hXCIsIFwiY2hlcnJ5XCJcblZFQ1RPUjxTVFJJTkc+IHZlY3RvcjIgPSBcImRhdGVcIiwgXCJlbGRlcmJlcnJ5XCIsIFwiZmlnXCJcblxuVkVDVE9SPFNUUklORz4gcmVzdWx0ID0gSm9pbih2ZWN0b3IxLCB2ZWN0b3IyKVxuXG4vLyBSZXN1bHRpbmcgdmVjdG9yOiBcIiArIHJlc3VsdCIsICJuYW1lIjogIkpvaW4gKFZFQ1RPUjxTVFJJTkc+LCBWRUNUT1I8U1RSSU5HPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIG5ldyBsaXN0IHRoYXQgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHR3byBnaXZlbiBsaXN0cy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGZpcnN0IGxpc3QuXG4yLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJBZGRzIGEgQm9vbGVhbiBhdCB0aGUgZW5kIG9mIGFuIGFycmF5LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIEpTT04gYXJyYXlcbkpTT04ganNvbkFycmF5ID0gW3RydWUsIGZhbHNlLCB0cnVlXVxuXG4vLyBCb29sZWFuIHZhbHVlIHRvIGFwcGVuZFxuQk9PTEVBTiBuZXdWYWx1ZSA9IGZhbHNlXG5cbi8vIEFwcGVuZCB0aGUgYm9vbGVhbiB2YWx1ZSB0byB0aGUgSlNPTiBhcnJheVxuSlNPTiB1cGRhdGVkQXJyYXkgPSBKU09OLkFycmF5QXBwZW5kKGpzb25BcnJheSwgbmV3VmFsdWUpXG5cbi8vIFByaW50IHRoZSB1cGRhdGVkIGFycmF5IHRvIHRoZSBjb25zb2xlXG4vLyB1cGRhdGVkQXJyYXkiLCAibmFtZSI6ICJKU09OLkFycmF5QXBwZW5kIChKU09OLCBCT09MRUFOKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgSlNPTiBhcnJheSB3aXRoIHRoZSBnaXZlbiBgQk9PTEVBTmAgdmFsdWUgYXBwZW5kZWQgdG8gaXRzIGVuZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgYXJyYXkgdG8gYXBwZW5kIHRvLlxuMi4gYEJPT0xFQU5gOiBUaGUgdmFsdWUgdG8gYXBwZW5kLiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiQWRkcyBhIEpTT04gb2JqZWN0IGF0IHRoZSBlbmQgb2YgYW4gYXJyYXkuIiwgImNvZGVfZXhhbXBsZSI6ICJKU09OIGFycmF5MSA9IFsxLCAyLCAzXVxuSlNPTiBhcnJheTIgPSBbNCwgNSwgNl1cblxuSlNPTiBjb21iaW5lZEFycmF5ID0gQXJyYXlBcHBlbmQoYXJyYXkxLCBhcnJheTIpXG5cbi8vIE91dHB1dCBjb21iaW5lZEFycmF5IiwgIm5hbWUiOiAiSlNPTi5BcnJheUFwcGVuZCAoSlNPTiwgSlNPTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIEpTT04gYXJyYXkgd2l0aCB0aGUgc3BlY2lmaWVkIEpTT04gb2JqZWN0IGFwcGVuZGVkIHRvIHRoZSBlbmQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIGFycmF5IHRvIGFwcGVuZCB0by5cbjIuIGBKU09OYDogVGhlIG9iamVjdCB0byBhcHBlbmQuIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJBZGRzIGEgbnVtYmVyIGF0IHRoZSBlbmQgb2YgYW4gYXJyYXkuIiwgImNvZGVfZXhhbXBsZSI6ICJKU09OIGpzb25BcnJheSA9IFsxLCAyLCAzXVxuTlVNQkVSIG51bWJlclRvQWRkID0gNFxuSlNPTiBudW1iZXJBc0pzb24gPSBbbnVtYmVyVG9BZGRdICAvLyBDb252ZXJ0IHRoZSBudW1iZXIgdG8gYSBKU09OIGFycmF5XG5KU09OIGNvbWJpbmVkQXJyYXkgPSBBcnJheUFwcGVuZChqc29uQXJyYXksIG51bWJlckFzSnNvbilcbi8vIERlYnVnOiBjb21iaW5lZEFycmF5IiwgIm5hbWUiOiAiSlNPTi5BcnJheUFwcGVuZCAoSlNPTiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgSlNPTiBhcnJheSB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyIGFwcGVuZGVkIHRvIGl0cyBlbmQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIGFycmF5IHRvIGFwcGVuZCB0by5cbjIuIGBOVU1CRVJgOiBUaGUgdmFsdWUgdG8gYXBwZW5kLiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiQWRkcyBhIHN0cmluZyBhdCB0aGUgZW5kIG9mIGFuIGFycmF5LiIsICJjb2RlX2V4YW1wbGUiOiAiSlNPTiBhcnJheTEgPSBbXCJ7XFxcIm5hbWVcXFwiOiBcXFwiSm9oblxcXCJ9XCIsIFwie1xcXCJuYW1lXFxcIjogXFxcIkphbmVcXFwifVwiXVxuSlNPTiBhcnJheTIgPSBbXCJ7XFxcIm5hbWVcXFwiOiBcXFwiRG9lXFxcIn1cIiwgXCJ7XFxcIm5hbWVcXFwiOiBcXFwiU21pdGhcXFwifVwiXVxuXG5KU09OIGNvbWJpbmVkQXJyYXkgPSBBcnJheUFwcGVuZChhcnJheTEsIGFycmF5MilcblxuLy8gT3V0cHV0OiBjb21iaW5lZEFycmF5IiwgIm5hbWUiOiAiSlNPTi5BcnJheUFwcGVuZCAoSlNPTiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBvcmlnaW5hbCBKU09OIGFycmF5IHdpdGggdGhlIHNwZWNpZmllZCBzdHJpbmcgYXBwZW5kZWQgdG8gdGhlIGVuZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgYXJyYXkgdG8gYXBwZW5kIHRvLlxuMi4gYFNUUklOR2A6IFRoZSB2YWx1ZSB0byBhcHBlbmQuIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJJbnNlcnRzIHRoZSBzZWNvbmQgSlNPTiBwYXJhbWV0ZXIgaW50byB0aGUgaW5wdXQgSlNPTiBhcnJheSAoZmlyc3QgcGFyYW1ldGVyKSBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdGhlIG9yaWdpbmFsIEpTT04gYXJyYXlcbkpTT04gb3JpZ2luYWxBcnJheSA9IEpTT04uUGFyc2UoJ1t7XCJuYW1lXCI6IFwiQWxpY2VcIn0sIHtcIm5hbWVcIjogXCJCb2JcIn1dJylcblxuLy8gRGVmaW5lIHRoZSBKU09OIGVsZW1lbnQgdG8gaW5zZXJ0XG5KU09OIG5ld0VsZW1lbnQgPSBKU09OLlBhcnNlKCd7XCJuYW1lXCI6IFwiQ2hhcmxpZVwifScpXG5cbi8vIERlZmluZSB0aGUgcG9zaXRpb24gdG8gaW5zZXJ0IHRoZSBuZXcgZWxlbWVudFxuTlVNQkVSIHBvc2l0aW9uID0gMVxuXG4vLyBJbnNlcnQgdGhlIG5ldyBlbGVtZW50IGludG8gdGhlIG9yaWdpbmFsIGFycmF5IGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb25cbkpTT04gdXBkYXRlZEFycmF5ID0gSlNPTi5BcnJheUluc2VydEF0KG9yaWdpbmFsQXJyYXksIHBvc2l0aW9uLCBuZXdFbGVtZW50KVxuXG4vLyBQcmludCB0aGUgdXBkYXRlZCBKU09OIGFycmF5IHRvIHRoZSBjb25zb2xlXG4vLyB1cGRhdGVkQXJyYXkuVG9TdHJpbmcoKVxuXG5JbiB0aGlzIGV4YW1wbGU6XG4xLiBXZSBzdGFydCBieSBkZWZpbmluZyBhbiBvcmlnaW5hbCBKU09OIGFycmF5IHdpdGggdHdvIGVsZW1lbnRzLlxuMi4gV2UgdGhlbiBkZWZpbmUgYSBuZXcgSlNPTiBlbGVtZW50IHRoYXQgd2Ugd2FudCB0byBpbnNlcnQgaW50byB0aGUgYXJyYXkuXG4zLiBXZSBzcGVjaWZ5IHRoZSBwb3NpdGlvbiBhdCB3aGljaCB3ZSB3YW50IHRvIGluc2VydCB0aGUgbmV3IGVsZW1lbnQgKGluIHRoaXMgY2FzZSwgcG9zaXRpb24gYDFgKS5cbjQuIFdlIHVzZSB0aGUgYEpTT04uQXJyYXlJbnNlcnRBdGAgZnVuY3Rpb24gdG8gaW5zZXJ0IHRoZSBuZXcgZWxlbWVudCBpbnRvIHRoZSBvcmlnaW5hbCBhcnJheSBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLlxuNS4gRmluYWxseSwgd2UgcHJpbnQgdGhlIHVwZGF0ZWQgSlNPTiBhcnJheSB0byB0aGUgY29uc29sZSB1c2luZyB0aGUgYERFQlVHYCBmdW5jdGlvbi5cblxuV2hlbiB0aGlzIHJvdXRpbmUgaXMgZXhlY3V0ZWQsIHRoZSBvdXRwdXQgd2lsbCBiZTpcblxuW3tcIm5hbWVcIjogXCJBbGljZVwifSwge1wibmFtZVwiOiBcIkNoYXJsaWVcIn0sIHtcIm5hbWVcIjogXCJCb2JcIn1dIiwgIm5hbWUiOiAiSlNPTi5BcnJheUluc2VydEF0IChKU09OLCBOVU1CRVIsIEpTT04pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG9yaWdpbmFsIEpTT04gYXJyYXkgd2l0aCB0aGUgc3BlY2lmaWVkIEpTT04gZWxlbWVudCBpbnNlcnRlZCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSBhcnJheSB0byBpbnNlcnQgaW50by5cbjIuIGBOVU1CRVJgOiBUaGUgcG9zaXRpb24gYXQgd2hpY2ggdG8gaW5zZXJ0LlxuMy4gYEpTT05gOiBUaGUgZWxlbWVudCB0byBpbnNlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJSZW1vdmVzIHRoZSBuLXRoIHZhbHVlIGZyb20gYSBKU09OIGFycmF5LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gU2FtcGxlIEpTT04gYXJyYXlcbkpTT04ganNvbkFycmF5ID0gSlNPTi5QYXJzZShcIltcXFwiYXBwbGVcXFwiLCBcXFwiYmFuYW5hXFxcIiwgXFxcImNoZXJyeVxcXCJdXCIpXG5cbi8vIFJlbW92ZSB0aGUgc2Vjb25kIGVsZW1lbnQgKGluZGV4IDEpXG5KU09OIHVwZGF0ZWRBcnJheSA9IEpTT04uQXJyYXlSZW1vdmUoanNvbkFycmF5LCAxKVxuXG4vLyBVcGRhdGVkIEpTT04gQXJyYXk6IFwiICsgSlNPTi5TdHJpbmdpZnkodXBkYXRlZEFycmF5KSIsICJuYW1lIjogIkpTT04uQXJyYXlSZW1vdmUgKEpTT04sIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIEpTT04gYXJyYXkgd2l0aCB0aGUgbi10aCBlbGVtZW50IHJlbW92ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIGFycmF5IHRvIHJlbW92ZSBmcm9tLlxuMi4gYE5VTUJFUmA6IFRoZSB6ZXJvLWJhc2VkIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJlbW92ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJKU09OIiwgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSBKU09OIGVsZW1lbnQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBpbiB0aGUgaW5wdXQgSlNPTiAoZmlyc3QgcGFyYW1ldGVyKSB3aXRoIHRoZSBzcGVjaWZpZWQgSlNPTiBlbGVtZW50IChsYXN0IHBhcmFtZXRlcikuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBPcmlnaW5hbCBKU09OIGFycmF5XG5KU09OIG9yaWdpbmFsQXJyYXkgPSBKU09OLlBhcnNlKCdbe1wibmFtZVwiOiBcIkFsaWNlXCJ9LCB7XCJuYW1lXCI6IFwiQm9iXCJ9LCB7XCJuYW1lXCI6IFwiQ2hhcmxpZVwifV0nKVxuXG4vLyBOZXcgSlNPTiBlbGVtZW50IHRvIHJlcGxhY2Ugd2l0aFxuSlNPTiBuZXdFbGVtZW50ID0gSlNPTi5QYXJzZSgne1wibmFtZVwiOiBcIkRhdmlkXCJ9JylcblxuLy8gUG9zaXRpb24gdG8gcmVwbGFjZSAoMC1iYXNlZCBpbmRleClcbk5VTUJFUiBwb3NpdGlvbiA9IDFcblxuLy8gUmVwbGFjZSB0aGUgZWxlbWVudCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uXG5KU09OIHVwZGF0ZWRBcnJheSA9IEpTT04uQXJyYXlSZXBsYWNlQXQob3JpZ2luYWxBcnJheSwgcG9zaXRpb24sIG5ld0VsZW1lbnQpXG5cbi8vIFByaW50IHRoZSB1cGRhdGVkIEpTT04gYXJyYXkgdG8gdGhlIGNvbnNvbGVcbi8vIHVwZGF0ZWRBcnJheS5Ub1N0cmluZygpXG5cbi8vIEluIHRoaXMgZXhhbXBsZTpcbi8vIC0gV2Ugc3RhcnQgd2l0aCBhbiBvcmlnaW5hbCBKU09OIGFycmF5IGNvbnRhaW5pbmcgdGhyZWUgb2JqZWN0cy5cbi8vIC0gV2UgY3JlYXRlIGEgbmV3IEpTT04gZWxlbWVudCB0aGF0IHdlIHdhbnQgdG8gaW5zZXJ0IGludG8gdGhlIGFycmF5LlxuLy8gLSBXZSBzcGVjaWZ5IHRoZSBwb3NpdGlvbiAoaW5kZXggMSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIHNlY29uZCBlbGVtZW50IGluIHRoZSBhcnJheSkgd2hlcmUgd2Ugd2FudCB0byByZXBsYWNlIHRoZSBleGlzdGluZyBlbGVtZW50LlxuLy8gLSBXZSB1c2UgdGhlIGBKU09OLkFycmF5UmVwbGFjZUF0YCBmdW5jdGlvbiB0byByZXBsYWNlIHRoZSBlbGVtZW50IGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gd2l0aCB0aGUgbmV3IGVsZW1lbnQuXG4vLyAtIEZpbmFsbHksIHdlIHByaW50IHRoZSB1cGRhdGVkIEpTT04gYXJyYXkgdG8gdGhlIGNvbnNvbGUgdXNpbmcgdGhlIGBERUJVR2AgZnVuY3Rpb24uXG5cbi8vIFdoZW4gZXhlY3V0ZWQsIHRoZSBvdXRwdXQgd2lsbCBiZTpcblxuLy8gW3tcIm5hbWVcIjogXCJBbGljZVwifSwge1wibmFtZVwiOiBcIkRhdmlkXCJ9LCB7XCJuYW1lXCI6IFwiQ2hhcmxpZVwifV0iLCAibmFtZSI6ICJKU09OLkFycmF5UmVwbGFjZUF0IChKU09OLCBOVU1CRVIsIEpTT04pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG9yaWdpbmFsIEpTT04gYXJyYXkgd2l0aCB0aGUgc3BlY2lmaWVkIEpTT04gZWxlbWVudCByZXBsYWNpbmcgd2hhdCB3YXMgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuMi4gYE5VTUJFUmA6IFRoZSBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudCB0byByZXBsYWNlLlxuMy4gYEpTT05gOiBUaGUgcmVwbGFjZW1lbnQgZWxlbWVudC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIkNvbnZlcnRzIEpTT04gdmFsdWUgdG8gYSBCT09MRUFOLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRXhhbXBsZSBKU09OIG9iamVjdFxuSlNPTiBleGFtcGxlSnNvbiA9IHtcImlzQWN0aXZlXCI6IHRydWV9XG5cbi8vIEV4dHJhY3QgdGhlIFwiaXNBY3RpdmVcIiBmaWVsZCBmcm9tIHRoZSBKU09OIG9iamVjdFxuSlNPTiBpc0FjdGl2ZUZpZWxkID0gZXhhbXBsZUpzb25bXCJpc0FjdGl2ZVwiXVxuXG4vLyBDb252ZXJ0IHRoZSBKU09OIGZpZWxkIHRvIGEgQk9PTEVBTlxuQk9PTEVBTiBpc0FjdGl2ZSA9IEpTT04uQXNCb29sKGlzQWN0aXZlRmllbGQpXG5cbi8vIFVzZSB0aGUgQk9PTEVBTiB2YWx1ZSBpbiBhIGNvbmRpdGlvblxuSUYgaXNBY3RpdmUgVEhFTiB7XG4gICAgLy8gVGhlIGlzQWN0aXZlIGZpZWxkIGlzIFRSVUVcbn0gRUxTRSB7XG4gICAgLy8gVGhlIGlzQWN0aXZlIGZpZWxkIGlzIEZBTFNFXG59IiwgIm5hbWUiOiAiSlNPTi5Bc0Jvb2wgKEpTT04pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBCT09MRUFOYCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHJvdmlkZWQgSlNPTiB2YWx1ZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhIEJPT0xFQU4uIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIkNvbnZlcnRzIEpTT04gdmFsdWUgdG8gYSBudW1iZXIuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBFeGFtcGxlIEpTT04gb2JqZWN0XG5KU09OIGpzb25PYmplY3QgPSBKU09OLlBhcnNlKCd7XCJ2YWx1ZVwiOiA0Mi41fScpXG5cbi8vIEV4dHJhY3QgdGhlIG51bWVyaWMgdmFsdWUgZnJvbSB0aGUgSlNPTiBvYmplY3Rcbk5VTUJFUiBleHRyYWN0ZWRWYWx1ZSA9IEpTT04uQXNEb3VibGUoanNvbk9iamVjdC52YWx1ZSlcblxuLy8gRXh0cmFjdGVkIFZhbHVlOiBcbi8vICsgZXh0cmFjdGVkVmFsdWUiLCAibmFtZSI6ICJKU09OLkFzRG91YmxlIChKU09OKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGV4dHJhY3RlZCBmcm9tIHRoZSBnaXZlbiBKU09OIG9iamVjdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgSlNPTiB2YWx1ZSB0byBjb252ZXJ0IHRvIGEgTlVNQkVSLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJDb252ZXJ0cyBhIEpTT04gdmFsdWUgdG8gYSA2NC1iaXQgaW50ZWdlci4iLCAiY29kZV9leGFtcGxlIjogIi8vIEV4YW1wbGUgSlNPTiBvYmplY3RcbkpTT04ganNvbk9iamVjdCA9IHtcInZhbHVlXCI6IDEyMzQ1fVxuXG4vLyBFeHRyYWN0IHRoZSB2YWx1ZSBmcm9tIHRoZSBKU09OIG9iamVjdFxuSlNPTiBqc29uVmFsdWUgPSBqc29uT2JqZWN0W1widmFsdWVcIl1cblxuLy8gQ29udmVydCB0aGUgSlNPTiB2YWx1ZSB0byBhIDY0LWJpdCBpbnRlZ2VyXG5OVU1CRVIgaW50VmFsdWUgPSBKU09OLkFzSW50NjQoanNvblZhbHVlKVxuXG4vLyBDb252ZXJ0ZWQgdmFsdWU6IGludFZhbHVlIiwgIm5hbWUiOiAiSlNPTi5Bc0ludDY0IChKU09OKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBKU09OIHZhbHVlIGNvbnZlcnRlZCB0byBhIDY0LWJpdCBpbnRlZ2VyIChgTlVNQkVSYCkuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYSA2NC1iaXQgaW50ZWdlciBOVU1CRVIuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIkNvbnZlcnRzIEpTT04gdmFsdWUgdG8gYSBudW1iZXIuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgd2UgaGF2ZSBhIEpTT04gb2JqZWN0XG5KU09OIGpzb25PYmplY3QgPSB7XG4gICAgXCJrZXkxXCI6IFwidmFsdWUxXCIsXG4gICAgXCJrZXkyXCI6IDQyLFxuICAgIFwia2V5M1wiOiAzLjE0XG59XG5cbi8vIEV4dHJhY3QgdGhlIG51bWJlciBhc3NvY2lhdGVkIHdpdGggXCJrZXkyXCJcbk5VTUJFUiBleHRyYWN0ZWROdW1iZXIgPSBKU09OLkdldEFzTnVtYmVyKGpzb25PYmplY3QsIFwia2V5MlwiKVxuXG4vLyBFeHRyYWN0ZWQgTnVtYmVyOiA0MlxuLy8gREVCVUcoXCJFeHRyYWN0ZWQgTnVtYmVyOiBcIiArIGV4dHJhY3RlZE51bWJlcikiLCAibmFtZSI6ICJKU09OLkFzTnVtYmVyIChKU09OKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1lcmljYWwgdmFsdWUgZXh0cmFjdGVkIGZyb20gdGhlIGdpdmVuIEpTT04gaW5wdXQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIEpTT04gdmFsdWUgdG8gY29udmVydCB0byBhIE5VTUJFUi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgSlNPTiB2YWx1ZSB0byBhIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIi8vIEV4YW1wbGUgSlNPTiBvYmplY3RcbkpTT04gZXhhbXBsZUpzb24gPSB7XG4gICAgXCJuYW1lXCI6IFwiSm9obiBEb2VcIixcbiAgICBcImFnZVwiOiAzMCxcbiAgICBcImVtYWlsXCI6IFwiam9obi5kb2VAZXhhbXBsZS5jb21cIlxufVxuXG4vLyBDb252ZXJ0IEpTT04gb2JqZWN0IHRvIFNUUklOR1xuU1RSSU5HIGpzb25TdHJpbmcgPSBKU09OLkFzU3RyaW5nKGV4YW1wbGVKc29uKVxuXG4vLyBQcmludCB0aGUgU1RSSU5HIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBKU09OIG9iamVjdFxuLy8ganNvblN0cmluZyIsICJuYW1lIjogIkpTT04uQXNTdHJpbmcgKEpTT04pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHByb3ZpZGVkIEpTT04uIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYSBTVFJJTkcuIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBuLXRoIHZhbHVlIG9mIGEgSlNPTiBhcnJheS4iLCAiY29kZV9leGFtcGxlIjogIi8vIFNhbXBsZSBKU09OIGFycmF5XG5KU09OIGpzb25BcnJheSA9IFtcIntcXFwibmFtZVxcXCI6IFxcXCJKb2huXFxcIn1cIiwgXCJ7XFxcIm5hbWVcXFwiOiBcXFwiSmFuZVxcXCJ9XCIsIFwie1xcXCJuYW1lXFxcIjogXFxcIkRvZVxcXCJ9XCJdXG5cbi8vIFJldHJpZXZlIHRoZSB0aGlyZCBlbGVtZW50IChpbmRleCAyLCBhcyBpbmRleGluZyBpcyB6ZXJvLWJhc2VkKVxuSlNPTiB0aGlyZEVsZW1lbnQgPSBKU09OLkF0KGpzb25BcnJheSwgMilcblxuLy8gVGhpcyBsaW5lIHdhcyBvcmlnaW5hbGx5IGEgREVCVUcoKSBmdW5jdGlvbiBjYWxsIHRvIHByaW50IHRoZSB0aGlyZCBlbGVtZW50IHRvIHRoZSBjb25zb2xlXG4vLyB0aGlyZEVsZW1lbnQiLCAibmFtZSI6ICJKU09OLkF0IChKU09OLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG4tdGggZWxlbWVudCBmcm9tIGEgSlNPTiBhcnJheS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgYXJyYXkgdG8gcmV0cmlldmUgZnJvbS5cbjIuIGBOVU1CRVJgOiBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmV0cmlldmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJDcmVhdGVzIGFuIGVtcHR5IEpTT04gYXJyYXkuIiwgImNvZGVfZXhhbXBsZSI6ICJKU09OIGVtcHR5T2JqZWN0ID0gSlNPTi5DcmVhdGVFbXB0eU9iamVjdCgpXG4vLyBDcmVhdGVkIGFuIGVtcHR5IEpTT04gb2JqZWN0OiArIGVtcHR5T2JqZWN0IiwgIm5hbWUiOiAiSlNPTi5DcmVhdGVFbXB0eUFycmF5ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYW4gZW1wdHkgSlNPTiBhcnJheS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJKU09OIiwgImRlc2NyaXB0aW9uIjogIkNyZWF0ZXMgYW4gZW1wdHkgSlNPTiBvYmplY3QuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDcmVhdGUgYW4gZW1wdHkgSlNPTiBvYmplY3RcbkpTT04gZW1wdHlKc29uID0gSlNPTi5DcmVhdGVFbXB0eU9iamVjdCgpXG5cbi8vIFByaW50IHRoZSBlbXB0eSBKU09OIG9iamVjdCB0byB0aGUgY29uc29sZVxuLy8gZW1wdHlKc29uIiwgIm5hbWUiOiAiSlNPTi5DcmVhdGVFbXB0eU9iamVjdCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGFuIGVtcHR5IEpTT04gb2JqZWN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlcyBhIG51bGwgSlNPTiBvYmplY3QuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDcmVhdGUgYSBudWxsIEpTT04gb2JqZWN0XG5KU09OIG51bGxPYmplY3QgPSBKU09OLkNyZWF0ZU51bGwoKVxuXG4vLyBDcmVhdGVkIEpTT04gb2JqZWN0OiBcIiArIG51bGxPYmplY3Rcbi8vIFRoaXMgbGluZSB3YXMgb3JpZ2luYWxseSBhIERFQlVHKCkgZnVuY3Rpb24gY2FsbC4iLCAibmFtZSI6ICJKU09OLkNyZWF0ZU51bGwgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIG51bGwgSlNPTiBvYmplY3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBvYmplY3Qgb2YgYW4gYXJyYXkgb2Ygb2JqZWN0cyBmb3Igd2hpY2ggdGhlIGdpdmVuIGtleSBtYXRjaGVzIGEgZ2l2ZW4gdmFsdWUuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBTYW1wbGUgSlNPTiBvYmplY3RcbkpTT04gc2FtcGxlSnNvbiA9IHtcbiAgICBcIml0ZW1zXCI6IFtcbiAgICAgICAge1wiaWRcIjogMSwgXCJuYW1lXCI6IFwiSXRlbTFcIn0sXG4gICAgICAgIHtcImlkXCI6IDIsIFwibmFtZVwiOiBcIkl0ZW0yXCJ9LFxuICAgICAgICB7XCJpZFwiOiAzLCBcIm5hbWVcIjogXCJJdGVtM1wifVxuICAgIF1cbn1cblxuLy8gVXNlIEpTT04uRWxlbWVudE1hdGNoaW5nIHRvIGZpbmQgYW4gZWxlbWVudCB3aXRoIGEgc3BlY2lmaWMgaWRcbkpTT04gbWF0Y2hpbmdFbGVtZW50ID0gSlNPTi5FbGVtZW50TWF0Y2hpbmcoc2FtcGxlSnNvbiwgXCJpdGVtcy5pZFwiLCAyKVxuXG4vLyBDaGVjayBpZiBhIG1hdGNoaW5nIGVsZW1lbnQgd2FzIGZvdW5kXG5JRiBtYXRjaGluZ0VsZW1lbnQgIT0gTlVMTCBUSEVOIHtcbiAgICAvLyBGb3VuZCBtYXRjaGluZyBlbGVtZW50OiArIG1hdGNoaW5nRWxlbWVudFxufSBFTFNFIHtcbiAgICAvLyBObyBtYXRjaGluZyBlbGVtZW50IGZvdW5kXG59IiwgIm5hbWUiOiAiSlNPTi5FbGVtZW50TWF0Y2hpbmcgKEpTT04sIFNUUklORywgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBKU09OIG9iamVjdCBmcm9tIGFuIGFycmF5IHdoZXJlIHRoZSBzcGVjaWZpZWQga2V5IGVxdWFscyB0aGUgZ2l2ZW4gdmFsdWUuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIGFycmF5IG9mIG9iamVjdHMgdG8gc2VhcmNoLlxuMi4gYFNUUklOR2A6IFRoZSBrZXkgdG8gbWF0Y2guXG4zLiBgTlVNQkVSYDogVGhlIHZhbHVlIHRvIG1hdGNoLiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgb2JqZWN0IG9mIGFuIGFycmF5IG9mIG9iamVjdHMgZm9yIHdoaWNoIHRoZSBnaXZlbiBrZXkgbWF0Y2hlcyBhIGdpdmVuIHZhbHVlLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gU2FtcGxlIEpTT04gYXJyYXlcbkpTT04ganNvbkFycmF5ID0gW1xuICAgIHtcImlkXCI6IFwiMVwiLCBcIm5hbWVcIjogXCJBbGljZVwifSxcbiAgICB7XCJpZFwiOiBcIjJcIiwgXCJuYW1lXCI6IFwiQm9iXCJ9LFxuICAgIHtcImlkXCI6IFwiM1wiLCBcIm5hbWVcIjogXCJDaGFybGllXCJ9XG5dXG5cbi8vIEtleSBhbmQgdmFsdWUgdG8gbWF0Y2hcblNUUklORyBrZXkgPSBcIm5hbWVcIlxuU1RSSU5HIHZhbHVlID0gXCJCb2JcIlxuXG4vLyBGaW5kIGVsZW1lbnRzIG1hdGNoaW5nIHRoZSBrZXktdmFsdWUgcGFpclxuSlNPTiBtYXRjaGluZ0VsZW1lbnRzID0gSlNPTi5FbGVtZW50TWF0Y2hpbmcoanNvbkFycmF5LCBrZXksIHZhbHVlKVxuXG4vLyBUaGUgbWF0Y2hpbmcgZWxlbWVudHMgd291bGQgYmUgcHJpbnRlZCB0byB0aGUgY29uc29sZSBoZXJlXG4vLyBtYXRjaGluZ0VsZW1lbnRzXG5cbkluIHRoaXMgZXhhbXBsZTpcbi0gV2UgZGVmaW5lIGEgSlNPTiBhcnJheSBganNvbkFycmF5YCBjb250YWluaW5nIHNldmVyYWwgb2JqZWN0cy5cbi0gV2Ugc3BlY2lmeSB0aGUga2V5IGBcIm5hbWVcImAgYW5kIHRoZSB2YWx1ZSBgXCJCb2JcImAgdGhhdCB3ZSB3YW50IHRvIG1hdGNoLlxuLSBXZSB1c2UgdGhlIGBKU09OLkVsZW1lbnRNYXRjaGluZ2AgZnVuY3Rpb24gdG8gZmluZCBlbGVtZW50cyBpbiB0aGUgYGpzb25BcnJheWAgdGhhdCBoYXZlIHRoZSBrZXkgYFwibmFtZVwiYCB3aXRoIHRoZSB2YWx1ZSBgXCJCb2JcImAuXG4tIEZpbmFsbHksIHdlIHdvdWxkIHByaW50IHRoZSBtYXRjaGluZyBlbGVtZW50cyB0byB0aGUgY29uc29sZS5cblxuV2hlbiB0aGlzIGNvZGUgcnVucywgaXQgd291bGQgb3V0cHV0IHRoZSBKU09OIG9iamVjdChzKSB0aGF0IG1hdGNoIHRoZSBzcGVjaWZpZWQga2V5LXZhbHVlIHBhaXIuIEluIHRoaXMgY2FzZSwgaXQgd291bGQgb3V0cHV0OlxuanNvblxuW1xuICAgIHtcImlkXCI6IFwiMlwiLCBcIm5hbWVcIjogXCJCb2JcIn1cbl0iLCAibmFtZSI6ICJKU09OLkVsZW1lbnRNYXRjaGluZyAoSlNPTiwgU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBKU09OIG9iamVjdCBmcm9tIGFuIGFycmF5IHdoZXJlIHRoZSBzcGVjaWZpZWQga2V5IGhhcyB0aGUgc3BlY2lmaWVkIHZhbHVlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSBhcnJheSBvZiBvYmplY3RzIHRvIHNlYXJjaC5cbjIuIGBTVFJJTkdgOiBUaGUga2V5IHRvIG1hdGNoLlxuMy4gYFNUUklOR2A6IFRoZSB2YWx1ZSB0byBtYXRjaC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBKU09OIHZhbHVlIGlzIGFuIGVtcHR5IG9iamVjdCwgYXJyYXksIHN0cmluZywgb3IgbnVsbCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUganNvbk9iamVjdCBpcyBpbml0aWFsaXplZCB3aXRoIHNvbWUgSlNPTiBkYXRhXG5KU09OIGpzb25PYmplY3QgPSAuLi4gXG5cbi8vIENoZWNrIGlmIHRoZSBKU09OIG9iamVjdCBpcyBlbXB0eVxuSUYgSlNPTi5FbXB0eShqc29uT2JqZWN0KSBUSEVOIHtcbiAgICAvLyBUaGUgSlNPTiBvYmplY3QgaXMgZW1wdHkuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBKU09OIG9iamVjdCBpcyBub3QgZW1wdHkuXG59IiwgIm5hbWUiOiAiSlNPTi5FbXB0eSAoSlNPTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIEpTT04gdmFsdWUgaXMgYW4gZW1wdHkgb2JqZWN0LCBhcnJheSwgc3RyaW5nLCBvciBudWxsLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgSlNPTiB2YWx1ZSB0byBjaGVjayBmb3IgZW1wdGluZXNzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHR3byBKU09OIHZhbHVlcyBhcmUgaWRlbnRpY2FsIGluIGNvbnRlbnQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiSlNPTiBqc29uMSA9IHtcIm5hbWVcIjogXCJKb2huXCIsIFwiYWdlXCI6IDMwLCBcImNpdHlcIjogXCJOZXcgWW9ya1wifVxuSlNPTiBqc29uMiA9IHtcIm5hbWVcIjogXCJKb2huXCIsIFwiYWdlXCI6IDMwLCBcImNpdHlcIjogXCJOZXcgWW9ya1wifVxuSlNPTiBqc29uMyA9IHtcIm5hbWVcIjogXCJKYW5lXCIsIFwiYWdlXCI6IDI1LCBcImNpdHlcIjogXCJMb3MgQW5nZWxlc1wifVxuXG5JRiBKU09OLkVxdWFscyhqc29uMSwganNvbjIpIFRIRU4ge1xuICAgIC8vIGpzb24xIGFuZCBqc29uMiBhcmUgaWRlbnRpY2FsLlxufSBFTFNFIHtcbiAgICAvLyBqc29uMSBhbmQganNvbjIgYXJlIG5vdCBpZGVudGljYWwuXG59XG5cbklGIEpTT04uRXF1YWxzKGpzb24xLCBqc29uMykgVEhFTiB7XG4gICAgLy8ganNvbjEgYW5kIGpzb24zIGFyZSBpZGVudGljYWwuXG59IEVMU0Uge1xuICAgIC8vIGpzb24xIGFuZCBqc29uMyBhcmUgbm90IGlkZW50aWNhbC5cbn0iLCAibmFtZSI6ICJKU09OLkVxdWFscyAoSlNPTiwgSlNPTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHR3byBKU09OIHZhbHVlcyBhcmUgaWRlbnRpY2FsIGluIGNvbnRlbnQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSBmaXJzdCBKU09OIHZhbHVlLlxuMi4gYEpTT05gOiBUaGUgc2Vjb25kIEpTT04gdmFsdWUgdG8gY29tcGFyZSBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgdGhlIGdpdmVuIGBCT09MRUFOYCB2YWx1ZSB0byBhIEpTT04gb2JqZWN0LiIsICJjb2RlX2V4YW1wbGUiOiAiQk9PTEVBTiBpc0FjdGl2ZSA9IFRSVUVcbkpTT04ganNvbk9iamVjdCA9IEpTT04uRnJvbUJvb2woaXNBY3RpdmUpXG4vLyBKU09OIE9iamVjdDogXCIgKyBqc29uT2JqZWN0IiwgIm5hbWUiOiAiSlNPTi5Gcm9tQm9vbCAoQk9PTEVBTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIEpTT04gb2JqZWN0IGNyZWF0ZWQgZnJvbSB0aGUgZ2l2ZW4gYEJPT0xFQU5gIHZhbHVlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgQk9PTEVBTmA6IFRoZSBCT09MRUFOIHZhbHVlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJDb252ZXJ0cyB0aGUgZ2l2ZW4gYE5VTUJFUmAgdmFsdWUgdG8gYSBKU09OIG9iamVjdC4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBteU51bWJlciA9IDQyXG5KU09OIG15SnNvbiA9IEpTT04uRnJvbU51bWJlcihteU51bWJlcilcbi8vIENvbnZlcnRlZCBKU09OOiBcIiArIG15SnNvbiIsICJuYW1lIjogIkpTT04uRnJvbU51bWJlciAoTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgSlNPTiBvYmplY3QgY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBgTlVNQkVSYCB2YWx1ZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5VTUJFUmA6IFRoZSBOVU1CRVIgdmFsdWUgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJKU09OIiwgImRlc2NyaXB0aW9uIjogIkNvbnZlcnRzIHRoZSBnaXZlbiBsaXN0IG9mIG51bWJlcnMgdG8gYSBKU09OIGFycmF5LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIFZFQ1RPUjxOVU1CRVI+IHdpdGggc29tZSB2YWx1ZXNcblZFQ1RPUjxOVU1CRVI+IG51bWJlclZlY3RvciA9IDEsIDIsIDMuNSwgNC43NVxuXG4vLyBDb252ZXJ0IHRoZSBWRUNUT1I8TlVNQkVSPiB0byBhIEpTT04gb2JqZWN0XG5KU09OIGpzb25PYmplY3QgPSBKU09OLkZyb21OdW1iZXJWZWN0b3IobnVtYmVyVmVjdG9yKVxuXG4vLyBQcmludCB0aGUgSlNPTiBvYmplY3QgdG8gdGhlIGNvbnNvbGUgd2FzIGhlcmVcbi8vIGpzb25PYmplY3QiLCAibmFtZSI6ICJKU09OLkZyb21OdW1iZXJWZWN0b3IgKFZFQ1RPUjxOVU1CRVI+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbmV3IEpTT04gYXJyYXkgY29udGFpbmluZyBlYWNoIGVsZW1lbnQgZnJvbSB0aGUgZ2l2ZW4gYFZFQ1RPUjxOVU1CRVI+YC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOVU1CRVI+YDogVGhlIGxpc3Qgb2YgbnVtYmVycyB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgYSBzdHJpbmcgdG8gYSBKU09OIG9iamVjdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSBhIEpTT04tZm9ybWF0dGVkIHN0cmluZ1xuU1RSSU5HIGpzb25TdHJpbmcgPSAne1wibmFtZVwiOiBcIkpvaG4gRG9lXCIsIFwiYWdlXCI6IDMwLCBcImlzRW1wbG95ZWVcIjogdHJ1ZX0nXG5cbi8vIENvbnZlcnQgdGhlIEpTT04tZm9ybWF0dGVkIHN0cmluZyB0byBhIEpTT04gb2JqZWN0XG5KU09OIGpzb25PYmplY3QgPSBKU09OLkZyb21TdHJpbmcoanNvblN0cmluZylcblxuLy8gVXNlIHRoZSBKU09OIG9iamVjdCAoZm9yIGV4YW1wbGUsIHNldCBhIHVzZXItZGVmaW5lZCB2YXJpYWJsZSlcbk1XRy5TZXRVc2VyRGVmaW5lZFZhcihcInVzZXJJbmZvXCIsIGpzb25PYmplY3QpXG5cbi8vIFByaW50IHRoZSBKU09OIG9iamVjdCB0byB0aGUgY29uc29sZSBmb3IgZGVidWdnaW5nXG4vLyBqc29uT2JqZWN0IiwgIm5hbWUiOiAiSlNPTi5Gcm9tU3RyaW5nIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBKU09OIG9iamVjdCBwYXJzZWQgZnJvbSB0aGUgaW5wdXQgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byBwYXJzZSBhcyBhIEpTT04gb2JqZWN0LiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgYSBzdHJpbmcgdG8gYSBKU09OIG9iamVjdCB3aGlsZSBpZ25vcmluZyBiYWQgZm9ybWF0LiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGpzb25TdHJpbmcgPSBcInsgXFxcIm5hbWVcXFwiOiBcXFwiSm9obiBEb2VcXFwiLCBcXFwiYWdlXFxcIjogMzAgfVwiXG5KU09OIGpzb25PYmplY3QgPSBKU09OLkZyb21TdHJpbmdJZ25vcmVFcnJvcnMoanNvblN0cmluZylcblxuLy8gQ29udmVydGVkIEpTT04gT2JqZWN0OiBcIiArIGpzb25PYmplY3QiLCAibmFtZSI6ICJKU09OLkZyb21TdHJpbmdJZ25vcmVFcnJvcnMgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIEpTT04gb2JqZWN0IHBhcnNlZCBmcm9tIHRoZSBpbnB1dCBzdHJpbmcsIHdpdGggZXJyb3JzIGluIGZvcm1hdHRpbmcgaWdub3JlZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gcGFyc2UgYXMgYSBKU09OIG9iamVjdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJKU09OIiwgImRlc2NyaXB0aW9uIjogIkNvbnZlcnRzIHRoZSBnaXZlbiBsaXN0IG9mIHN0cmluZ3MgdG8gYSBKU09OIGFycmF5LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIFZFQ1RPUjxTVFJJTkc+XG5WRUNUT1I8U1RSSU5HPiBzdHJpbmdWZWN0b3IgPSBcImFwcGxlXCIsIFwiYmFuYW5hXCIsIFwiY2hlcnJ5XCJcblxuLy8gQ29udmVydCB0aGUgVkVDVE9SPFNUUklORz4gdG8gYSBKU09OIG9iamVjdFxuSlNPTiBqc29uT2JqZWN0ID0gSlNPTi5Gcm9tU3RyaW5nVmVjdG9yKHN0cmluZ1ZlY3RvcilcblxuLy8gVGhlIGZvbGxvd2luZyBsaW5lIHdvdWxkIHByaW50IHRoZSBKU09OIG9iamVjdCB0byB0aGUgY29uc29sZSBmb3IgZGVidWdnaW5nXG4vLyBqc29uT2JqZWN0IiwgIm5hbWUiOiAiSlNPTi5Gcm9tU3RyaW5nVmVjdG9yIChWRUNUT1I8U1RSSU5HPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIEpTT04gYXJyYXkgY29udGFpbmluZyBlYWNoIGVsZW1lbnQgZnJvbSB0aGUgZ2l2ZW4gYFZFQ1RPUjxTVFJJTkc+YC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGxpc3Qgb2Ygc3RyaW5ncyB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBKU09OIHZhbHVlIGF0IHRoZSBnaXZlbiBrZXkgb2YgYSBKU09OIGZpZWxkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gU2FtcGxlIEpTT04gb2JqZWN0XG5KU09OIHNhbXBsZUpzb24gPSB7XG4gICAgXCJuYW1lXCI6IFwiSm9obiBEb2VcIixcbiAgICBcImFnZVwiOiAzMCxcbiAgICBcImVtYWlsXCI6IFwiam9obi5kb2VAZXhhbXBsZS5jb21cIlxufVxuXG4vLyBSZXRyaWV2ZSB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXkgXCJlbWFpbFwiXG5TVFJJTkcgZW1haWwgPSBKU09OLkdldChzYW1wbGVKc29uLCBcImVtYWlsXCIpXG5cbi8vIFJldHJpZXZlZCBlbWFpbDogXCJqb2huLmRvZUBleGFtcGxlLmNvbVwiXG4vLyBERUJVRyhcIlJldHJpZXZlZCBlbWFpbDogXCIgKyBlbWFpbCkiLCAibmFtZSI6ICJKU09OLkdldCAoSlNPTiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBKU09OIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBpbiB0aGUgZ2l2ZW4gSlNPTiBvYmplY3QsIG9yIGFuIGVtcHR5IEpTT04gc3RyaW5nIGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSBKU09OIG9iamVjdCB0byByZXRyaWV2ZSBmcm9tLlxuMi4gYFNUUklOR2A6IFRoZSBrZXkgd2hvc2UgdmFsdWUgaXMgdG8gYmUgcmV0cmlldmVkLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIGtleSBpbiB0aGUgSlNPTiBvYmplY3QgYXMgYSBgQk9PTEVBTmAuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgd2UgaGF2ZSBhIEpTT04gb2JqZWN0XG5KU09OIGpzb25PYmplY3QgPSBKU09OLlBhcnNlKCd7XCJpc0FjdGl2ZVwiOiB0cnVlLCBcImlzVmVyaWZpZWRcIjogZmFsc2V9JylcblxuLy8gUmV0cmlldmUgdGhlIGJvb2xlYW4gdmFsdWUgZm9yIHRoZSBrZXkgXCJpc0FjdGl2ZVwiXG5CT09MRUFOIGlzQWN0aXZlID0gSlNPTi5HZXRBc0Jvb2woanNvbk9iamVjdCwgXCJpc0FjdGl2ZVwiKVxuLy8gXCJpc0FjdGl2ZTogXCIgKyBpc0FjdGl2ZVxuXG4vLyBSZXRyaWV2ZSB0aGUgYm9vbGVhbiB2YWx1ZSBmb3IgdGhlIGtleSBcImlzVmVyaWZpZWRcIlxuQk9PTEVBTiBpc1ZlcmlmaWVkID0gSlNPTi5HZXRBc0Jvb2woanNvbk9iamVjdCwgXCJpc1ZlcmlmaWVkXCIpXG4vLyBcImlzVmVyaWZpZWQ6IFwiICsgaXNWZXJpZmllZFxuXG4vLyBDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB0aGUgYm9vbGVhbiB2YWx1ZXNcbklGIGlzQWN0aXZlIFRIRU4ge1xuICAgIC8vIFwiVGhlIHVzZXIgaXMgYWN0aXZlLlwiXG59IEVMU0Uge1xuICAgIC8vIFwiVGhlIHVzZXIgaXMgbm90IGFjdGl2ZS5cIlxufVxuXG5JRiBpc1ZlcmlmaWVkIFRIRU4ge1xuICAgIC8vIFwiVGhlIHVzZXIgaXMgdmVyaWZpZWQuXCJcbn0gRUxTRSB7XG4gICAgLy8gXCJUaGUgdXNlciBpcyBub3QgdmVyaWZpZWQuXCJcbn0iLCAibmFtZSI6ICJKU09OLkdldEFzQm9vbCAoSlNPTiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4ga2V5IGluIHRoZSBKU09OIG9iamVjdCBhcyBhIGBCT09MRUFOYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgSlNPTiBvYmplY3QgdG8gcmV0cmlldmUgZnJvbS5cbjIuIGBTVFJJTkdgOiBUaGUga2V5IG9mIHRoZSBlbGVtZW50IHRvIHJldHJpZXZlLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4ga2V5IGluIHRoZSBKU09OIG9iamVjdCBhcyBhIGBOVU1CRVJgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYSBKU09OIG9iamVjdFxuSlNPTiBqc29uT2JqZWN0ID0ge1xuICAgIFwidGVtcGVyYXR1cmVcIjogMjMuNSxcbiAgICBcImh1bWlkaXR5XCI6IDYwLFxuICAgIFwicHJlc3N1cmVcIjogMTAxM1xufVxuXG4vLyBFeHRyYWN0IHRoZSB0ZW1wZXJhdHVyZSBhcyBhIE5VTUJFUlxuTlVNQkVSIHRlbXBlcmF0dXJlID0gSlNPTi5HZXRBc051bWJlcihqc29uT2JqZWN0LCBcInRlbXBlcmF0dXJlXCIpXG4vLyBUZW1wZXJhdHVyZTogXCIgKyB0ZW1wZXJhdHVyZVxuXG4vLyBFeHRyYWN0IHRoZSBodW1pZGl0eSBhcyBhIE5VTUJFUlxuTlVNQkVSIGh1bWlkaXR5ID0gSlNPTi5HZXRBc051bWJlcihqc29uT2JqZWN0LCBcImh1bWlkaXR5XCIpXG4vLyBIdW1pZGl0eTogXCIgKyBodW1pZGl0eVxuXG4vLyBFeHRyYWN0IHRoZSBwcmVzc3VyZSBhcyBhIE5VTUJFUlxuTlVNQkVSIHByZXNzdXJlID0gSlNPTi5HZXRBc051bWJlcihqc29uT2JqZWN0LCBcInByZXNzdXJlXCIpXG4vLyBQcmVzc3VyZTogXCIgKyBwcmVzc3VyZSIsICJuYW1lIjogIkpTT04uR2V0QXNOdW1iZXIgKEpTT04sIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgZnJvbSB0aGUgSlNPTiBvYmplY3QgYXMgYSBudW1iZXIuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIEpTT04gb2JqZWN0IHRvIHJldHJpZXZlIGZyb20uXG4yLiBgU1RSSU5HYDogVGhlIGtleSBvZiB0aGUgZWxlbWVudCB0byByZXRyaWV2ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIGtleSBpbiB0aGUgSlNPTiBvYmplY3QgYXMgYSBgU1RSSU5HYC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGEgSlNPTiBvYmplY3RcbkpTT04ganNvbk9iamVjdCA9IHtcbiAgICBcIm5hbWVcIjogXCJKb2huIERvZVwiLFxuICAgIFwiYWdlXCI6IDMwLFxuICAgIFwiZW1haWxcIjogXCJqb2huLmRvZUBleGFtcGxlLmNvbVwiXG59XG5cbi8vIEV4dHJhY3QgdGhlIFwibmFtZVwiIGZpZWxkIGZyb20gdGhlIEpTT04gb2JqZWN0XG5TVFJJTkcgbmFtZSA9IEpTT04uR2V0QXNTdHJpbmcoanNvbk9iamVjdCwgXCJuYW1lXCIpXG4vLyBOYW1lOiBKb2huIERvZVxuXG4vLyBFeHRyYWN0IHRoZSBcImVtYWlsXCIgZmllbGQgZnJvbSB0aGUgSlNPTiBvYmplY3RcblNUUklORyBlbWFpbCA9IEpTT04uR2V0QXNTdHJpbmcoanNvbk9iamVjdCwgXCJlbWFpbFwiKVxuLy8gRW1haWw6IGpvaG4uZG9lQGV4YW1wbGUuY29tIiwgIm5hbWUiOiAiSlNPTi5HZXRBc1N0cmluZyAoSlNPTiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBKU09OIGVsZW1lbnQgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQga2V5IGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSBKU09OIG9iamVjdCB0byByZXRyaWV2ZSBmcm9tLlxuMi4gYFNUUklOR2A6IFRoZSBrZXkgb2YgdGhlIGVsZW1lbnQgdG8gcmV0cmlldmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIGtleSBpbiB0aGUgSlNPTiBvYmplY3QgYXMgYSBgVkVDVE9SPFNUUklORz5gLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYSBKU09OIG9iamVjdFxuSlNPTiBqc29uT2JqZWN0ID0ge1xuICAgIFwia2V5MVwiOiBbXCJ2YWx1ZTFcIiwgXCJ2YWx1ZTJcIiwgXCJ2YWx1ZTNcIl0sXG4gICAgXCJrZXkyXCI6IFtcInZhbHVlNFwiLCBcInZhbHVlNVwiXVxufVxuXG4vLyBSZXRyaWV2ZSB0aGUgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCBcImtleTFcIiBhcyBhIFZFQ1RPUjxTVFJJTkc+XG5WRUNUT1I8U1RSSU5HPiB2YWx1ZXMgPSBKU09OLkdldEFzU3RyaW5nVmVjdG9yKGpzb25PYmplY3QsIFwia2V5MVwiKVxuXG4vLyBWYWx1ZXMgZm9yIGtleTE6IFwiICsgdmFsdWVzIiwgIm5hbWUiOiAiSlNPTi5HZXRBc1N0cmluZ1ZlY3RvciAoSlNPTiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBzcGVjaWZpZWQgSlNPTiBlbGVtZW50IGFzIGEgdmVjdG9yIG9mIHN0cmluZ3MuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIEpTT04gb2JqZWN0IHRvIHJldHJpZXZlIGZyb20uXG4yLiBgU1RSSU5HYDogVGhlIGtleSBvZiB0aGUgZWxlbWVudCB0byByZXRyaWV2ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBKU09OIG9iamVjdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIGtleSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBFeGFtcGxlIEpTT04gb2JqZWN0XG5KU09OIGV4YW1wbGVKc29uID0gSlNPTi5QYXJzZSgne1wibmFtZVwiOiBcIkpvaG5cIiwgXCJhZ2VcIjogMzAsIFwiY2l0eVwiOiBcIk5ldyBZb3JrXCJ9JylcblxuLy8gQ2hlY2sgaWYgdGhlIEpTT04gb2JqZWN0IGhhcyB0aGUgbWVtYmVyIFwiYWdlXCJcbklGIEpTT04uSGFzTWVtYmVyKGV4YW1wbGVKc29uLCBcImFnZVwiKSBUSEVOIHtcbiAgICAvLyBUaGUgSlNPTiBvYmplY3QgaGFzIHRoZSBtZW1iZXIgJ2FnZScuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBKU09OIG9iamVjdCBkb2VzIG5vdCBoYXZlIHRoZSBtZW1iZXIgJ2FnZScuXG59IiwgIm5hbWUiOiAiSlNPTi5IYXNNZW1iZXIgKEpTT04sIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIEpTT04gb2JqZWN0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQga2V5LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgSlNPTiBvYmplY3QgdG8gY2hlY2suXG4yLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIG1lbWJlciB0byBsb29rIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBKU09OIHZhbHVlIGlzIGFuIGFycmF5LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIkpTT04ganNvbkRhdGEgPSAne1wia2V5MVwiOiBcInZhbHVlMVwiLCBcImtleTJcIjogW1wiaXRlbTFcIiwgXCJpdGVtMlwiLCBcIml0ZW0zXCJdfSdcblxuSUYgSlNPTi5Jc0FycmF5KGpzb25EYXRhLmtleTIpIFRIRU4ge1xuICAgIC8vIFRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggJ2tleTInIGlzIGFuIGFycmF5LlxufSBFTFNFIHtcbiAgICAvLyBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoICdrZXkyJyBpcyBub3QgYW4gYXJyYXkuXG59IiwgIm5hbWUiOiAiSlNPTi5Jc0FycmF5IChKU09OKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gSlNPTiB2YWx1ZSBpcyBhbiBhcnJheSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIHZhbHVlIHRvIGNoZWNrLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIEpTT04gdmFsdWUgaXMgb2YgdHlwZSBgQk9PTEVBTmAsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiSlNPTiBqc29uVmFsdWUgPSBKU09OLlBhcnNlKCd7XCJrZXlcIjogdHJ1ZX0nKVxuSlNPTiBib29sVmFsdWUgPSBqc29uVmFsdWVbXCJrZXlcIl1cblxuSUYgSlNPTi5Jc0Jvb2woYm9vbFZhbHVlKSBUSEVOIHtcbiAgICAvLyBUaGUgdmFsdWUgaXMgYSBib29sZWFuLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgdmFsdWUgaXMgbm90IGEgYm9vbGVhbi5cbn0iLCAibmFtZSI6ICJKU09OLklzQm9vbCAoSlNPTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIEpTT04gdmFsdWUgaXMgb2YgdHlwZSBgQk9PTEVBTmAsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSB2YWx1ZSB0byBjaGVjay4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBKU09OIHZhbHVlIGlzIGEgZG91YmxlLXByZWNpc2lvbiByZWFsIGBOVU1CRVJgLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEV4YW1wbGUgSlNPTiBvYmplY3RcbkpTT04gZXhhbXBsZUpzb24gPSBKU09OLlBhcnNlKCd7XCJ2YWx1ZVwiOiA0Mi4wfScpXG5cbi8vIEV4dHJhY3QgdGhlIHZhbHVlIGZyb20gdGhlIEpTT04gb2JqZWN0XG5KU09OIHZhbHVlID0gZXhhbXBsZUpzb25bXCJ2YWx1ZVwiXVxuXG4vLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYSBkb3VibGVcbkJPT0xFQU4gaXNEb3VibGUgPSBKU09OLklzRG91YmxlKHZhbHVlKVxuXG4vLyBQcmludCB0aGUgcmVzdWx0IHRvIHRoZSBjb25zb2xlXG5JRiBpc0RvdWJsZSBUSEVOIHtcbiAgICAvLyBUaGUgdmFsdWUgaXMgYSBkb3VibGUuXG59IEVMU0Uge1xuICAgIC8vIFRoZSB2YWx1ZSBpcyBub3QgYSBkb3VibGUuXG59IiwgIm5hbWUiOiAiSlNPTi5Jc0RvdWJsZSAoSlNPTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIEpTT04gdmFsdWUgaXMgYSBkb3VibGUtcHJlY2lzaW9uIHJlYWwgYE5VTUJFUmAsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSB2YWx1ZSB0byBjaGVjay4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBKU09OIHZhbHVlIGlzIGEgNjQtYml0IGludGVnZXIgYE5VTUJFUmAsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRXhhbXBsZSBKU09OIG9iamVjdFxuSlNPTiBleGFtcGxlSnNvbiA9IEpTT04uUGFyc2UoJ3tcInZhbHVlXCI6IDEyMzQ1fScpXG5cbi8vIEV4dHJhY3QgdGhlIHZhbHVlIGZyb20gdGhlIEpTT04gb2JqZWN0XG5KU09OIHZhbHVlID0gZXhhbXBsZUpzb25bXCJ2YWx1ZVwiXVxuXG4vLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlciBOVU1CRVJcbklGIEpTT04uSXNJbnQ2NCh2YWx1ZSkgVEhFTiB7XG4gICAgLy8gVGhlIHZhbHVlIGlzIGFuIGludGVnZXIgTlVNQkVSLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgdmFsdWUgaXMgbm90IGFuIGludGVnZXIgTlVNQkVSLlxufSIsICJuYW1lIjogIkpTT04uSXNJbnQ2NCAoSlNPTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIEpTT04gdmFsdWUgaXMgYSA2NC1iaXQgaW50ZWdlciBgTlVNQkVSYCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIHZhbHVlIHRvIGNoZWNrLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIEpTT04gdmFsdWUgaXMgbnVsbCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJKU09OIGpzb25EYXRhID0gSlNPTi5QYXJzZSgne1wia2V5MVwiOiBcInZhbHVlMVwiLCBcImtleTJcIjogbnVsbH0nKVxuXG5JRiBKU09OLklzTnVsbChqc29uRGF0YVtcImtleTJcIl0pIFRIRU4ge1xuICAgIC8vIFRoZSB2YWx1ZSBvZiBrZXkyIGlzIG51bGwuXG59IEVMU0Uge1xuICAgIC8vIFRoZSB2YWx1ZSBvZiBrZXkyIGlzIG5vdCBudWxsLlxufSIsICJuYW1lIjogIkpTT04uSXNOdWxsIChKU09OKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gSlNPTiB2YWx1ZSBpcyBudWxsLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgdmFsdWUgdG8gY2hlY2suIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gSlNPTiB2YWx1ZSBpcyBhIGBOVU1CRVJgLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIkpTT04ganNvblZhbHVlID0gSlNPTi5QYXJzZShcIntcXFwia2V5XFxcIjogMTIzfVwiKVxuXG5JRiBKU09OLklzTnVtYmVyKGpzb25WYWx1ZVtcImtleVwiXSkgVEhFTiB7XG4gICAgLy8gVGhlIHZhbHVlIGlzIGEgbnVtYmVyLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgdmFsdWUgaXMgbm90IGEgbnVtYmVyLlxufSIsICJuYW1lIjogIkpTT04uSXNOdW1iZXIgKEpTT04pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBKU09OIHZhbHVlIGlzIGEgYE5VTUJFUmAsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSB2YWx1ZSB0byBjaGVjay4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBKU09OIHZhbHVlIGlzIGFuIG9iamVjdCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJKU09OIGpzb25EYXRhID0gJ3tcIm5hbWVcIjogXCJKb2huXCIsIFwiYWdlXCI6IDMwLCBcImNpdHlcIjogXCJOZXcgWW9ya1wifSdcblxuSUYgSlNPTi5Jc09iamVjdChqc29uRGF0YSkgVEhFTiB7XG4gICAgLy8gVGhlIEpTT04gZGF0YSBpcyBhbiBvYmplY3QuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBKU09OIGRhdGEgaXMgbm90IGFuIG9iamVjdC5cbn0iLCAibmFtZSI6ICJKU09OLklzT2JqZWN0IChKU09OKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gSlNPTiB2YWx1ZSBpcyBhbiBvYmplY3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSB2YWx1ZSB0byBjaGVjay4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBKU09OIHZhbHVlIGlzIGEgYFNUUklOR2AsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYSBKU09OIG9iamVjdFxuSlNPTiBqc29uT2JqZWN0ID0gSlNPTi5QYXJzZSgne1wia2V5XCI6IFwidmFsdWVcIn0nKVxuXG4vLyBDaGVjayBpZiB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIFwia2V5XCIgaXMgYSBzdHJpbmdcbklGIEpTT04uSXNTdHJpbmcoanNvbk9iamVjdFtcImtleVwiXSkgVEhFTiB7XG4gICAgLy8gVGhlIHZhbHVlIGlzIGEgc3RyaW5nLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgdmFsdWUgaXMgbm90IGEgc3RyaW5nLlxufSIsICJuYW1lIjogIkpTT04uSXNTdHJpbmcgKEpTT04pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBKU09OIHZhbHVlIGlzIGEgYFNUUklOR2AsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSB2YWx1ZSB0byBjaGVjay4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgdmFsaWQgSlNPTiwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcganNvblN0cmluZyA9ICd7XCJuYW1lXCI6IFwiSm9oblwiLCBcImFnZVwiOiAzMCwgXCJjaXR5XCI6IFwiTmV3IFlvcmtcIn0nXG5cbklGIEpTT04uSXNWYWxpZChqc29uU3RyaW5nKSBUSEVOIHtcbiAgICAvLyBUaGUgSlNPTiBzdHJpbmcgaXMgdmFsaWQuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBKU09OIHN0cmluZyBpcyBub3QgdmFsaWQuXG59IiwgIm5hbWUiOiAiSlNPTi5Jc1ZhbGlkIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgdmFsaWQgSlNPTiwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc3RyaW5nIHRvIHZhbGlkYXRlIGFzIEpTT04uIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gdGhlIGdpdmVuIEpTT04gb2JqZWN0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgSlNPTiBvYmplY3RcbkpTT04ganNvbk9iamVjdCA9IHtcbiAgICBcIm5hbWVcIjogXCJKb2huIERvZVwiLFxuICAgIFwiYWdlXCI6IDMwLFxuICAgIFwiZW1haWxcIjogXCJqb2huLmRvZUBleGFtcGxlLmNvbVwiXG59XG5cbi8vIFJldHJpZXZlIHRoZSBrZXlzIG9mIHRoZSBKU09OIG9iamVjdFxuVkVDVE9SPFNUUklORz4ga2V5cyA9IEpTT04uS2V5cyhqc29uT2JqZWN0KVxuXG4vLyBQcmludCB0aGUga2V5cyB0byB0aGUgY29uc29sZVxuRk9SIFNUUklORyBrZXkgSU4ga2V5cyB7XG4gICAgLy8gS2V5OiBcIiArIGtleVxufSIsICJuYW1lIjogIkpTT04uS2V5cyAoSlNPTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIGFsbCB0aGUga2V5cyBmcm9tIGEgSlNPTiBvYmplY3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIEpTT04gb2JqZWN0IHRvIHJldHJpZXZlIGtleXMgZnJvbS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJKU09OIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBuZXcgSlNPTiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gU2FtcGxlIEpTT04gb2JqZWN0XG5KU09OIHNhbXBsZUpzb24gPSB7XG4gICAgXCJuYW1lXCI6IFwiSm9obiBEb2VcIixcbiAgICBcImFnZVwiOiAzMCxcbiAgICBcImVtYWlsXCI6IFwiam9obi5kb2VAZXhhbXBsZS5jb21cIlxufVxuXG4vLyBLZXkgdG8gYmUgcmVtb3ZlZFxuU1RSSU5HIGtleVRvUmVtb3ZlID0gXCJlbWFpbFwiXG5cbi8vIFJlbW92ZSB0aGUga2V5IGZyb20gdGhlIEpTT04gb2JqZWN0XG5KU09OIHVwZGF0ZWRKc29uID0gSlNPTi5SZW1vdmUoc2FtcGxlSnNvbiwga2V5VG9SZW1vdmUpXG5cbi8vIFRoaXMgbGluZSB3YXMgb3JpZ2luYWxseSBhIERFQlVHIHN0YXRlbWVudC4gSXQgd2FzIHVzZWQgdG8gcHJpbnQgdGhlIHVwZGF0ZWQgSlNPTiBvYmplY3QgdG8gdGhlIGNvbnNvbGUuXG4vLyB1cGRhdGVkSnNvbiIsICJuYW1lIjogIkpTT04uUmVtb3ZlIChKU09OLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBKU09OIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IHJlbW92ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIGtleSBmcm9tLlxuMi4gYFNUUklOR2A6IFRoZSBrZXkgdG8gcmVtb3ZlLiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiQXNzaWducyBhIEJPT0xFQU4gdmFsdWUgdG8gYSBKU09OIGZpZWxkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIEpTT04gb2JqZWN0XG5KU09OIG15SnNvbiA9IEpTT04uUGFyc2UoXCJ7fVwiKVxuXG4vLyBTZXQgYSBCT09MRUFOIGZpZWxkIGluIHRoZSBKU09OIG9iamVjdFxubXlKc29uID0gSlNPTi5TZXQobXlKc29uLCBcImlzQWN0aXZlXCIsIFRSVUUpXG5cbi8vIFByaW50IHRoZSB1cGRhdGVkIEpTT04gb2JqZWN0IHRvIHRoZSBjb25zb2xlXG4vLyBKU09OLlN0cmluZ2lmeShteUpzb24pIiwgIm5hbWUiOiAiSlNPTi5TZXQgKEpTT04sIFNUUklORywgQk9PTEVBTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdXBkYXRlZCBKU09OIG9iamVjdCBhZnRlciBhc3NpZ25pbmcgdGhlIGdpdmVuIEJvb2xlYW4gdmFsdWUgdG8gdGhlIHNwZWNpZmllZCBmaWVsZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbjIuIGBTVFJJTkdgOiBUaGUgZmllbGQgbmFtZS5cbjMuIGBCT09MRUFOYDogVGhlIHZhbHVlIHRvIGFzc2lnbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJKU09OIiwgImRlc2NyaXB0aW9uIjogIkFzc2lnbnMgYSBKU09OIHN1Yi1vYmplY3QgdG8gYSBKU09OIGZpZWxkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGEgSlNPTiBvYmplY3RcbkpTT04gbXlKc29uID0gSlNPTi5QYXJzZSgne1wibmFtZVwiOiBcIkpvaG5cIiwgXCJhZ2VcIjogMzB9JylcblxuLy8gQ3JlYXRlIGEgTUFQIHRvIGhvbGQgdGhlIG5ldyB2YWx1ZVxuTUFQPFNUUklORywgTVdHLkludGVybmFsVmFyaWFudD4gbmV3VmFsdWVcbm5ld1ZhbHVlW1wiY2l0eVwiXSA9IE1XRy5JbnRlcm5hbFZhcmlhbnQoXCJOZXcgWW9ya1wiKVxuXG4vLyBTZXQgdGhlIG5ldyB2YWx1ZSBpbiB0aGUgSlNPTiBvYmplY3Rcbm15SnNvbiA9IEpTT04uU2V0KG15SnNvbiwgXCJhZGRyZXNzXCIsIG5ld1ZhbHVlKVxuXG4vLyBUaGlzIGxpbmUgd2FzIG9yaWdpbmFsbHkgYSBERUJVRygpIGZ1bmN0aW9uIHRvIHByaW50IHRoZSBtb2RpZmllZCBKU09OIG9iamVjdFxuLy8gSlNPTi5TdHJpbmdpZnkobXlKc29uKSIsICJuYW1lIjogIkpTT04uU2V0IChKU09OLCBTVFJJTkcsIEpTT04pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHVwZGF0ZWQgSlNPTiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIHN1Yi1vYmplY3QgYXNzaWduZWQgdG8gdGhlIGdpdmVuIGZpZWxkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuMi4gYFNUUklOR2A6IFRoZSBrZXkgdG8gYXNzaWduIHRvLlxuMy4gYEpTT05gOiBUaGUgdmFsdWUgdG8gYXNzaWduLiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiQXNzaWducyBhIG1hcCB2YWx1ZSB0byBhIEpTT04gZmllbGQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIGEgSlNPTiBvYmplY3RcbkpTT04gbXlKc29uID0gSlNPTi5QYXJzZSgne1wibmFtZVwiOiBcIkpvaG5cIiwgXCJhZ2VcIjogMzB9JylcblxuLy8gQ3JlYXRlIGEgTUFQIHRvIGhvbGQgdGhlIG5ldyB2YWx1ZVxuTUFQPFNUUklORywgTVdHLkludGVybmFsVmFyaWFudD4gbmV3VmFsdWVcbm5ld1ZhbHVlW1wiY2l0eVwiXSA9IE1XRy5JbnRlcm5hbFZhcmlhbnQoXCJOZXcgWW9ya1wiKVxuXG4vLyBTZXQgdGhlIG5ldyBrZXktdmFsdWUgcGFpciBpbiB0aGUgSlNPTiBvYmplY3Rcbm15SnNvbiA9IEpTT04uU2V0KG15SnNvbiwgXCJjaXR5XCIsIG5ld1ZhbHVlKVxuXG4vLyBUaGlzIGxpbmUgd291bGQgcHJpbnQgdGhlIG1vZGlmaWVkIEpTT04gb2JqZWN0IHRvIHRoZSBjb25zb2xlXG4vLyBteUpzb24uVG9TdHJpbmcoKSIsICJuYW1lIjogIkpTT04uU2V0IChKU09OLCBTVFJJTkcsIE1BUDxTVFJJTkcsIE1XRy5JbnRlcm5hbFZhcmlhbnQ+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBtb2RpZmllZCBKU09OIG9iamVjdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgSlNPTiBvYmplY3QgdG8gbW9kaWZ5LlxuMi4gYFNUUklOR2A6IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbjMuIGBNQVA8U1RSSU5HLE1XRy5JbnRlcm5hbFZhcmlhbnQ+YDogVGhlIHZhbHVlIHRvIHNldC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJKU09OIiwgImRlc2NyaXB0aW9uIjogIkFzc2lnbnMgYSBudW1lcmljIHZhbHVlIHRvIGEgSlNPTiBmaWVsZC4iLCAiY29kZV9leGFtcGxlIjogIi8vIENyZWF0ZSBhIEpTT04gb2JqZWN0XG5KU09OIG15SnNvbiA9IEpTT04uUGFyc2UoXCJ7fVwiKVxuXG4vLyBDcmVhdGUgYSBNQVAgdG8gaG9sZCB0aGUgbnVtYmVyIHZhbHVlXG5NQVA8U1RSSU5HLCBNV0cuSW50ZXJuYWxWYXJpYW50PiBudW1iZXJNYXBcbm51bWJlck1hcFtcInZhbHVlXCJdID0gTVdHLkludGVybmFsVmFyaWFudCg0MikgLy8gQXNzdW1pbmcgNDIgaXMgdGhlIG51bWJlciB5b3Ugd2FudCB0byBzZXRcblxuLy8gU2V0IHRoZSBudW1iZXIgaW4gdGhlIEpTT04gb2JqZWN0XG5teUpzb24gPSBKU09OLlNldChteUpzb24sIFwibXlOdW1iZXJLZXlcIiwgbnVtYmVyTWFwKVxuXG4vLyBQcmludCB0aGUgbW9kaWZpZWQgSlNPTiBvYmplY3QgdG8gdGhlIGNvbnNvbGVcbi8vIG15SnNvbiIsICJuYW1lIjogIkpTT04uU2V0IChKU09OLCBTVFJJTkcsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdXBkYXRlZCBKU09OIHdpdGggdGhlIHNwZWNpZmllZCBmaWVsZCBzZXQgdG8gdGhlIGdpdmVuIG51bWVyaWMgdmFsdWUuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIEpTT04gb2JqZWN0IHRvIGFzc2lnbiBhIHZhbHVlIHRvLlxuMi4gYFNUUklOR2A6IFRoZSBmaWVsZCBuYW1lLlxuMy4gYE5VTUJFUmA6IFRoZSB2YWx1ZSB0byBhc3NpZ24uIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJBc3NpZ25zIGEgbnVtZXJpYyB2YWx1ZSB0byBhIEpTT04gZmllbGQgdXNpbmcgdGhlIHNwZWNpZmllZCBudW1iZXIgZm9ybWF0LiBBY2NlcHRlZCBmb3JtYXQgdmFsdWVzIGFyZSBcImRvdWJsZVwiLCBcImludDY0XCIsIFwidWludDY0XCIsIFwiaW50MzJcIiwgYW5kIFwidWludDMyXCI7IGFuIHVucmVjb2duaXplZCBmb3JtYXQgdHJpZ2dlcnMgYSB3YXJuaW5nIGFuZCByZXR1cm5zIGFuIGVtcHR5IEpTT04gb2JqZWN0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGEgSlNPTiBvYmplY3RcbkpTT04gbXlKc29uID0gSlNPTi5QYXJzZShcInt9XCIpXG5cbi8vIFNldCBhIHZhbHVlIGluIHRoZSBKU09OIG9iamVjdFxuSlNPTi5TZXQobXlKc29uLCBcInVzZXIuYWdlXCIsIDMwLCBcIm51bWJlclwiKVxuXG4vLyBQcmludCB0aGUgSlNPTiBvYmplY3QgdG8gdGhlIGNvbnNvbGVcbi8vIEpTT04uU3RyaW5naWZ5KG15SnNvbikiLCAibmFtZSI6ICJKU09OLlNldCAoSlNPTiwgU1RSSU5HLCBOVU1CRVIsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbW9kaWZpZWQgSlNPTiBvYmplY3Qgd2l0aCB0aGUgbnVtZXJpYyB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgZ2l2ZW4gZmllbGQsIG9yIGFuIGVtcHR5IEpTT04gb2JqZWN0IGlmIHRoZSBmb3JtYXQgc3BlY2lmaWVyIGlzIG5vdCByZWNvZ25pemVkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSBKU09OIG9iamVjdCB0byBtb2RpZnkuXG4yLiBgU1RSSU5HYDogVGhlIGZpZWxkIG5hbWUuXG4zLiBgTlVNQkVSYDogVGhlIG51bWVyaWMgdmFsdWUgdG8gYXNzaWduLlxuNC4gYFNUUklOR2A6IFRoZSBOVU1CRVIgdHlwZSBzcGVjaWZpZXIuIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJBc3NpZ25zIGEgc3RyaW5nIHZhbHVlIHRvIGEgSlNPTiBmaWVsZC4iLCAiY29kZV9leGFtcGxlIjogIi8vIENyZWF0ZSBhIEpTT04gb2JqZWN0XG5KU09OIG15SnNvbiA9IEpTT04uUGFyc2UoXCJ7fVwiKVxuXG4vLyBDcmVhdGUgYSBtYXAgdG8gaG9sZCB0aGUgdmFsdWUgdG8gc2V0XG5NQVA8U1RSSU5HLCBNV0cuSW50ZXJuYWxWYXJpYW50PiB2YWx1ZU1hcFxudmFsdWVNYXBbXCJrZXkxXCJdID0gTVdHLkludGVybmFsVmFyaWFudChcInZhbHVlMVwiKVxudmFsdWVNYXBbXCJrZXkyXCJdID0gTVdHLkludGVybmFsVmFyaWFudChcInZhbHVlMlwiKVxuXG4vLyBTZXQgdGhlIHZhbHVlIGluIHRoZSBKU09OIG9iamVjdFxubXlKc29uID0gSlNPTi5TZXQobXlKc29uLCBcIm15S2V5XCIsIHZhbHVlTWFwKVxuXG4vLyBUaGlzIGxpbmUgd291bGQgcHJpbnQgdGhlIG1vZGlmaWVkIEpTT04gb2JqZWN0IHRvIHRoZSBjb25zb2xlXG4vLyBKU09OLlN0cmluZ2lmeShteUpzb24pIiwgIm5hbWUiOiAiSlNPTi5TZXQgKEpTT04sIFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgSlNPTiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGZpZWxkIHNldCB0byB0aGUgZ2l2ZW4gYFNUUklOR2AgdmFsdWUuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIEpTT04gb2JqZWN0IHRvIG1vZGlmeS5cbjIuIGBTVFJJTkdgOiBUaGUga2V5LlxuMy4gYFNUUklOR2A6IFRoZSB2YWx1ZSB0byBhc3NpZ24uIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJBc3NpZ25zIGEgdmVjdG9yIHRvIGEgSlNPTiBmaWVsZC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBKU09OIG9iamVjdFxuSlNPTiBqc29uT2JqZWN0ID0gSlNPTi5QYXJzZShcInt9XCIpXG5cbi8vIEluaXRpYWxpemUgYSBWRUNUT1I8U1RSSU5HPlxuVkVDVE9SPFNUUklORz4gc3RyaW5nVmVjdG9yID0gXCJ2YWx1ZTFcIiwgXCJ2YWx1ZTJcIiwgXCJ2YWx1ZTNcIlxuXG4vLyBDb252ZXJ0IFZFQ1RPUjxTVFJJTkc+IHRvIE1BUDxTVFJJTkcsIE1XRy5JbnRlcm5hbFZhcmlhbnQ+XG5NQVA8U1RSSU5HLCBNV0cuSW50ZXJuYWxWYXJpYW50PiBtYXBWYXJpYW50XG5GT1IgU1RSSU5HIHZhbHVlIElOIHN0cmluZ1ZlY3RvciB7XG4gICAgbWFwVmFyaWFudFt2YWx1ZV0gPSBNV0cuSW50ZXJuYWxWYXJpYW50KHZhbHVlKVxufVxuXG4vLyBTZXQgdGhlIHZhbHVlIGluIHRoZSBKU09OIG9iamVjdFxuanNvbk9iamVjdCA9IEpTT04uU2V0KGpzb25PYmplY3QsIFwia2V5XCIsIG1hcFZhcmlhbnQpXG5cbi8vIFByaW50IHRoZSBtb2RpZmllZCBKU09OIG9iamVjdFxuLy8ganNvbk9iamVjdCIsICJuYW1lIjogIkpTT04uU2V0IChKU09OLCBTVFJJTkcsIFZFQ1RPUjxTVFJJTkc+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSB1cGRhdGVkIEpTT04gd2l0aCB0aGUgc3BlY2lmaWVkIHZlY3RvciBhc3NpZ25lZCB0byB0aGUgZ2l2ZW4gc3RyaW5nIGZpZWxkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSBKU09OIG9iamVjdCB0byBtb2RpZnkuXG4yLiBgU1RSSU5HYDogVGhlIGZpZWxkIG5hbWUuXG4zLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgdmVjdG9yIHZhbHVlIHRvIGFzc2lnbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBnaXZlbiBKU09OIGFycmF5IG9yIG9iamVjdC4gUmV0dXJucyAwIGlmIHRoZSBpbnB1dCBoYXMgbm8gbm9kZSBvciBpcyBub3QgYW4gYXJyYXksIG9iamVjdCwgb3IgY29tcGlsZWQgb2JqZWN0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRXhhbXBsZSBKU09OIG9iamVjdFxuSlNPTiBleGFtcGxlSnNvbiA9IHtcbiAgICBcIm5hbWVcIjogXCJKb2huIERvZVwiLFxuICAgIFwiYWdlXCI6IDMwLFxuICAgIFwiZW1haWxcIjogXCJqb2huLmRvZUBleGFtcGxlLmNvbVwiXG59XG5cbi8vIEdldCB0aGUgc2l6ZSBvZiB0aGUgSlNPTiBvYmplY3Rcbk5VTUJFUiBqc29uU2l6ZSA9IEpTT04uU2l6ZShleGFtcGxlSnNvbilcblxuLy8gVGhlIEpTT04gb2JqZWN0IGNvbnRhaW5zIFwiICsganNvblNpemUgKyBcIiBlbGVtZW50cy4iLCAibmFtZSI6ICJKU09OLlNpemUgKEpTT04pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgSlNPTiBhcnJheSBvciBvYmplY3QsIG9yIDAgaWYgdGhlIGlucHV0IGlzIG51bGwsIG5vdCBhIG5vZGUsIG9yIG5vdCBhbiBhcnJheSBvciBvYmplY3QgdHlwZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgSlNPTiBhcnJheSBvciBvYmplY3Qgd2hvc2UgZWxlbWVudCBjb3VudCBpcyByZXR1cm5lZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJKU09OIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIEpTT04gdmFsdWUgYXQgdGhlIGdpdmVuIHBhdGggb2YgYSBjb21wbGV4IEpTT04gb2JqZWN0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYSBKU09OIG9iamVjdFxuSlNPTiBqc29uT2JqZWN0ID0ge1xuICAgIFwidXNlclwiOiB7XG4gICAgICAgIFwiaWRcIjogMTIzLFxuICAgICAgICBcIm5hbWVcIjogXCJKb2huIERvZVwiLFxuICAgICAgICBcImVtYWlsXCI6IFwiam9obi5kb2VAZXhhbXBsZS5jb21cIlxuICAgIH0sXG4gICAgXCJzZXR0aW5nc1wiOiB7XG4gICAgICAgIFwidGhlbWVcIjogXCJkYXJrXCIsXG4gICAgICAgIFwibm90aWZpY2F0aW9uc1wiOiB0cnVlXG4gICAgfVxufVxuXG4vLyBFeHRyYWN0IHRoZSBzdWItbm9kZSBmb3IgdXNlciBpbmZvcm1hdGlvblxuSlNPTiB1c2VyU3ViTm9kZSA9IEpTT04uU3ViTm9kZShqc29uT2JqZWN0LCBcInVzZXJcIilcblxuLy8gUHJldmlvdXNseSBwcmludGVkIHRoZSBleHRyYWN0ZWQgc3ViLW5vZGUgdG8gdGhlIGNvbnNvbGVcbi8vIHVzZXJTdWJOb2RlIiwgIm5hbWUiOiAiSlNPTi5TdWJOb2RlIChKU09OLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIEpTT04gdmFsdWUgbG9jYXRlZCBhdCB0aGUgc3BlY2lmaWVkIHBhdGggd2l0aGluIGEgY29tcGxleCBKU09OIG9iamVjdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgY29tcGxleCBKU09OIG9iamVjdC5cbjIuIGBTVFJJTkdgOiBUaGUgcGF0aCB0byB0aGUgZGVzaXJlZCB2YWx1ZSB3aXRoaW4gdGhlIEpTT04gb2JqZWN0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJDb252ZXJ0cyBhIEpTT04gb2JqZWN0IHRvIGEgcHJldHR5IHN0cmluZyB3aXRoIGdpdmVuIGluZGVudGF0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGEgSlNPTiBvYmplY3RcbkpTT04gbXlKc29uID0gSlNPTi5QYXJzZSgne1wibmFtZVwiOiBcIkpvaG4gRG9lXCIsIFwiYWdlXCI6IDMwLCBcImNpdHlcIjogXCJOZXcgWW9ya1wifScpXG5cbi8vIENvbnZlcnQgdGhlIEpTT04gb2JqZWN0IHRvIGEgZm9ybWF0dGVkIHN0cmluZ1xuU1RSSU5HIGZvcm1hdHRlZEpzb25TdHJpbmcgPSBKU09OLlRvRm9ybWF0dGVkU3RyaW5nKG15SnNvbiwgXCIgIFwiKVxuXG4vLyBQcmludCB0aGUgZm9ybWF0dGVkIEpTT04gc3RyaW5nIHRvIHRoZSBjb25zb2xlXG4vLyBERUJVRyhmb3JtYXR0ZWRKc29uU3RyaW5nKSIsICJuYW1lIjogIkpTT04uVG9Gb3JtYXR0ZWRTdHJpbmcgKEpTT04sIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGh1bWFuLXJlYWRhYmxlIGZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBKU09OIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgaW5kZW50YXRpb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIEpTT04gb2JqZWN0IHRvIGJlIGZvcm1hdHRlZC5cbjIuIGBTVFJJTkdgOiBUaGUgaW5kZW50YXRpb24gdG8gYXBwbHkgaW4gdGhlIGZvcm1hdHRlZCBvdXRwdXQuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgYSBKU09OIGFycmF5IHRvIGEgYFZFQ1RPUjxTVFJJTkc+YCBieSBjb252ZXJ0aW5nIGVhY2ggZWxlbWVudCB0byBpdHMgc3RyaW5nIHZhbHVlLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRXhhbXBsZSBKU09OIG9iamVjdFxuSlNPTiBqc29uT2JqZWN0ID0ge1xuICAgIFwia2V5MVwiOiBcInZhbHVlMVwiLFxuICAgIFwia2V5MlwiOiBcInZhbHVlMlwiLFxuICAgIFwia2V5M1wiOiBcInZhbHVlM1wiXG59XG5cbi8vIENvbnZlcnQgSlNPTiBvYmplY3QgdG8gVkVDVE9SPFNUUklORz5cblZFQ1RPUjxTVFJJTkc+IHN0cmluZ1ZlY3RvciA9IEpTT04uVG9TdHJpbmdWZWN0b3IoanNvbk9iamVjdClcblxuLy8gUHJpbnQgZWFjaCBlbGVtZW50IGluIHRoZSBWRUNUT1I8U1RSSU5HPlxuRk9SIFNUUklORyBlbGVtZW50IElOIHN0cmluZ1ZlY3RvciB7XG4gICAgLy8gZWxlbWVudFxufSIsICJuYW1lIjogIkpTT04uVG9TdHJpbmdWZWN0b3IgKEpTT04pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBuZXcgbGlzdCBjb250YWluaW5nIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgZWFjaCBlbGVtZW50IGluIHRoZSBnaXZlbiBKU09OIGFycmF5LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgSlNPTmA6IFRoZSBKU09OIGFycmF5IHRvIGNvbnZlcnQgdG8gYSBzdHJpbmcgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJKU09OIiwgImRlc2NyaXB0aW9uIjogIkFwcGVuZHMgdGhlIHZhbHVlcyBvZiB0aGUgc2Vjb25kIEpTT04gYXJyYXkgdG8gdGhlIGZpcnN0IGFycmF5LiIsICJjb2RlX2V4YW1wbGUiOiAiSlNPTiBhcnJheTEgPSBbIHtcImlkXCI6IDEsIFwibmFtZVwiOiBcIkFsaWNlXCJ9LCB7XCJpZFwiOiAyLCBcIm5hbWVcIjogXCJCb2JcIn0gXVxuSlNPTiBhcnJheTIgPSBbIHtcImlkXCI6IDMsIFwibmFtZVwiOiBcIkNoYXJsaWVcIn0sIHtcImlkXCI6IDQsIFwibmFtZVwiOiBcIkRpYW5hXCJ9IF1cblxuSlNPTiBjb21iaW5lZEFycmF5ID0gQXJyYXlBcHBlbmQoYXJyYXkxLCBhcnJheTIpXG5cbi8vIERFQlVHKGNvbWJpbmVkQXJyYXkpIiwgIm5hbWUiOiAiSlNPTi5VbmlvbkFycmF5cyAoSlNPTiwgSlNPTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIEpTT04gYXJyYXkgY29tYmluaW5nIGVsZW1lbnRzIGZyb20gYm90aCBpbnB1dCBhcnJheXMgd2l0aCB0aGUgc2Vjb25kIGFycmF5J3MgZWxlbWVudHMgYXBwZW5kZWQgdG8gdGhlIGZpcnN0LCBvciBhbiBlbXB0eSBKU09OIG9iamVjdCBpZiBlaXRoZXIgaW5wdXQgaXMgbm90IGEgSlNPTiBhcnJheS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgZmlyc3QgSlNPTiBhcnJheS5cbjIuIGBKU09OYDogVGhlIHNlY29uZCBKU09OIGFycmF5IHdob3NlIHZhbHVlcyBhcmUgYXBwZW5kZWQgdG8gdGhlIGZpcnN0LiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBleGFtcGxlU3RyaW5nID0gXCJIZWxsbywgV29ybGQhXCJcbk5VTUJFUiBzdHJpbmdMZW5ndGggPSBMZW5ndGgoZXhhbXBsZVN0cmluZylcblxuLy8gVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGlzOiArIHN0cmluZ0xlbmd0aFxuXG5JRiBzdHJpbmdMZW5ndGggPiAxMCBUSEVOIHtcbiAgICAvLyBUaGUgc3RyaW5nIGlzIGxvbmdlciB0aGFuIDEwIGNoYXJhY3RlcnMuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBzdHJpbmcgaXMgMTAgY2hhcmFjdGVycyBvciBzaG9ydGVyLlxufSIsICJuYW1lIjogIkxlbmd0aCAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgZ2l2ZW4gc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGlucHV0IHN0cmluZyBmb3Igd2hpY2ggdGhlIGxlbmd0aCBpcyB0byBiZSBjYWxjdWxhdGVkLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gbnVtYmVyLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIHZhbHVlID0gLTQyXG5OVU1CRVIgYWJzb2x1dGVWYWx1ZVxuXG5JRiB2YWx1ZSA8IDAgVEhFTiB7XG4gICAgYWJzb2x1dGVWYWx1ZSA9IDAgLSB2YWx1ZVxufSBFTFNFIHtcbiAgICBhYnNvbHV0ZVZhbHVlID0gdmFsdWVcbn1cblxuLy8gVGhlIGFic29sdXRlIHZhbHVlIGlzOiBcIiArIGFic29sdXRlVmFsdWUiLCAibmFtZSI6ICJNYXRoLkFicyAoTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBub24tbmVnYXRpdmUgdmFsdWUgb2YgdGhlIGdpdmVuIG51bWJlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5VTUJFUmA6IFRoZSBudW1iZXIgZm9yIHdoaWNoIHRoZSBhYnNvbHV0ZSB2YWx1ZSBpcyB0byBiZSBjYWxjdWxhdGVkLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjZWlsaW5nIG9mIHRoZSBnaXZlbiBudW1iZXIuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgdmFsdWUgPSA0Ljdcbk5VTUJFUiBjZWlsaW5nVmFsdWUgPSBNYXRoLkNlaWwodmFsdWUpXG4vLyBUaGUgY2VpbGluZyB2YWx1ZSBvZiB2YWx1ZSBpcyBjZWlsaW5nVmFsdWUiLCAibmFtZSI6ICJNYXRoLkNlaWwgKE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc21hbGxlc3QgaW50ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGdpdmVuIG51bWJlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5VTUJFUmA6IFRoZSBudW1iZXIgZm9yIHdoaWNoIHRoZSBjZWlsaW5nIHZhbHVlIGlzIHRvIGJlIGZvdW5kLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZWdlciBkaXZpc2lvbiBvZiB0aGUgZ2l2ZW4gdHdvIG51bWJlcnMuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgbnVtZXJhdG9yID0gMTBcbk5VTUJFUiBkZW5vbWluYXRvciA9IDJcbk5VTUJFUiByZXN1bHQgPSBudW1lcmF0b3IgLyBkZW5vbWluYXRvclxuLy8gVGhlIHJlc3VsdCBvZiB0aGUgZGl2aXNpb24gaXM6IHJlc3VsdCIsICJuYW1lIjogIk1hdGguRGl2IChOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdHJ1bmNhdGVkIGludGVnZXIgcXVvdGllbnQgb2YgZGl2aWRpbmcgdGhlIGZpcnN0IG51bWJlciBieSB0aGUgc2Vjb25kIG51bWJlcjsgcmV0dXJucyBpbmZpbml0eSBpZiB0aGUgZGl2aXNvciBpcyB6ZXJvLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTlVNQkVSYDogVGhlIGRpdmlkZW5kLlxuMi4gYE5VTUJFUmA6IFRoZSBkaXZpc29yLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSByb3VuZGVkIGRvd24gdmFsdWUgb2YgdGhlIGdpdmVuIG51bWJlci4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBvcmlnaW5hbFZhbHVlID0gNS43NVxuTlVNQkVSIGZsb29yZWRWYWx1ZSA9IE1hdGguRmxvb3Iob3JpZ2luYWxWYWx1ZSlcblxuLy8gT3JpZ2luYWwgVmFsdWU6IDUuNzVcbi8vIEZsb29yZWQgVmFsdWU6IDUiLCAibmFtZSI6ICJNYXRoLkZsb29yIChOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGxhcmdlc3QgaW50ZWdlciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGdpdmVuIG51bWJlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5VTUJFUmA6IFRoZSB2YWx1ZSB0byBiZSByb3VuZGVkIGRvd24uIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG1heGltdW0gb2YgdGhlIGdpdmVuIG51bWJlcnMuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgYSA9IDEwXG5OVU1CRVIgYiA9IDIwXG5OVU1CRVIgbWF4X3ZhbHVlID0gTWF0aC5NYXgoYSwgYilcbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzOiBtYXhfdmFsdWUiLCAibmFtZSI6ICJNYXRoLk1heCAoTlVNQkVSLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGxhcmdlciBvZiB0aGUgdHdvIGlucHV0IG51bWJlcnMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBOVU1CRVJgOiBUaGUgZmlyc3QgbnVtYmVyLlxuMi4gYE5VTUJFUmA6IFRoZSBzZWNvbmQgbnVtYmVyLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBtaW5pbXVtIG9mIHRoZSBnaXZlbiBudW1iZXJzLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIGEgPSAxMFxuTlVNQkVSIGIgPSAyMFxuTlVNQkVSIG1pblZhbHVlID0gTWF0aC5NaW4oYSwgYilcblxuLy8gVGhlIG1pbmltdW0gdmFsdWUgaXM6IG1pblZhbHVlIiwgIm5hbWUiOiAiTWF0aC5NaW4gKE5VTUJFUiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBzbWFsbGVzdCB2YWx1ZSBiZXR3ZWVuIHRoZSB0d28gcHJvdmlkZWQgbnVtYmVycy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5VTUJFUmA6IFRoZSBmaXJzdCBudW1iZXIuXG4yLiBgTlVNQkVSYDogVGhlIHNlY29uZCBudW1iZXIuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIkNvbXB1dGVzIHRoZSByZW1haW5kZXIgb2YgZGl2aXNpb24gKG1vZCkuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgbnVtZXJhdG9yID0gMTBcbk5VTUJFUiBkZW5vbWluYXRvciA9IDNcbk5VTUJFUiByZXN1bHQgPSBNYXRoLk1vZHVsdXMobnVtZXJhdG9yLCBkZW5vbWluYXRvcilcblxuLy8gVGhlIHJlbWFpbmRlciBvZiBudW1lcmF0b3IgZGl2aWRlZCBieSBkZW5vbWluYXRvciBpcyByZXN1bHQiLCAibmFtZSI6ICJNYXRoLk1vZHVsdXMgKE5VTUJFUiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBmbG9hdGluZy1wb2ludCByZW1haW5kZXIgb2YgZGl2aWRpbmcgdGhlIGZpcnN0IG51bWJlciBieSB0aGUgc2Vjb25kIG51bWJlcjsgcmV0dXJucyBOYU4gaWYgdGhlIGRpdmlzb3IgaXMgemVyby4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5VTUJFUmA6IFRoZSBkaXZpZGVuZC5cbjIuIGBOVU1CRVJgOiBUaGUgZGl2aXNvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcmVzdWx0IG9mIGJhc2UgdG8gdGhlIHBvd2VyIG9mIHRoZSBleHBvbmVudC4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBiYXNlID0gMlxuTlVNQkVSIGV4cG9uZW50ID0gM1xuTlVNQkVSIHJlc3VsdCA9IE1hdGguUG93KGJhc2UsIGV4cG9uZW50KVxuLy8gVGhlIHJlc3VsdCBvZiBiYXNlIHJhaXNlZCB0byB0aGUgcG93ZXIgb2YgZXhwb25lbnQgaXMgcmVzdWx0IiwgIm5hbWUiOiAiTWF0aC5Qb3cgKE5VTUJFUiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgbnVtYmVyIHJhaXNlZCB0byB0aGUgcG93ZXIgb2YgdGhlIHNlY29uZCBudW1iZXIuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBOVU1CRVJgOiBUaGUgYmFzZS5cbjIuIGBOVU1CRVJgOiBUaGUgZXhwb25lbnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGludGVncmFsIHZhbHVlIG5lYXJlc3QgdG8gdGhlIGdpdmVuIG51bWJlciwgd2l0aCBoYWxmd2F5IGNhc2VzIHJvdW5kZWQgYXdheSBmcm9tIHplcm8uIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgb3JpZ2luYWxWYWx1ZSA9IDMuN1xuTlVNQkVSIHJvdW5kZWRWYWx1ZSA9IE1hdGguUm91bmQob3JpZ2luYWxWYWx1ZSlcbi8vIE9yaWdpbmFsIFZhbHVlOiAzLjdcbi8vIFJvdW5kZWQgVmFsdWU6IDQiLCAibmFtZSI6ICJNYXRoLlJvdW5kIChOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG5lYXJlc3QgaW50ZWdlciB0byB0aGUgZ2l2ZW4gbnVtYmVyLCB3aXRoIGhhbGZ3YXkgY2FzZXMgcm91bmRlZCBhd2F5IGZyb20gemVyby4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5VTUJFUmA6IFRoZSB2YWx1ZSB0byBiZSByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IGludGVnZXIuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHNpZ24gb2YgdGhlIGdpdmVuIG51bWJlciAoLTEsIDAsIDEpLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIHZhbHVlID0gLTQyXG5OVU1CRVIgc2lnbiA9IE1hdGguU2duKHZhbHVlKVxuXG5JRiBzaWduID09IDEgVEhFTiB7XG4gICAgLy8gVGhlIG51bWJlciBpcyBwb3NpdGl2ZS5cbn0gRUxTRSBJRiBzaWduID09IC0xIFRIRU4ge1xuICAgIC8vIFRoZSBudW1iZXIgaXMgbmVnYXRpdmUuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBudW1iZXIgaXMgemVyby5cbn0iLCAibmFtZSI6ICJNYXRoLlNnbiAoTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIC0xIGlmIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUsIDAgaWYgaXQgaXMgemVybywgYW5kIDEgaWYgaXQgaXMgcG9zaXRpdmUuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBOVU1CRVJgOiBUaGUgaW5wdXQgdmFsdWUgZm9yIHdoaWNoIHRvIGRldGVybWluZSB0aGUgc2lnbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIGdpdmVuIG51bWJlci4gVHJpZ2dlcnMgYSB3YXJuaW5nIGFuZCByZXR1cm5zIE5hTiBpZiB0aGUgaW5wdXQgaXMgbmVnYXRpdmUuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgdmFsdWUgPSAxNlxuTlVNQkVSIHJlc3VsdCA9IE1hdGguU3FydCh2YWx1ZSlcbi8vIFRoZSBzcXVhcmUgcm9vdCBvZiB2YWx1ZSBpcyByZXN1bHQiLCAibmFtZSI6ICJNYXRoLlNxcnQgKE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIGdpdmVuIG51bWJlcjsgcmV0dXJucyBOYU4gaWYgdGhlIG51bWJlciBpcyBuZWdhdGl2ZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5VTUJFUmA6IFRoZSBudW1iZXIgZm9yIHdoaWNoIHRvIGZpbmQgdGhlIHNxdWFyZSByb290LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIGN1c3RvbWVyIGlzIGF1dGhlbnRpY2F0ZWQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSB0aGUgTUNQLlNldHRpbmcgb2JqZWN0IHdpdGggYXBwcm9wcmlhdGUgc2V0dGluZ3Ncbk1DUC5TZXR0aW5nIGF1dGhTZXR0aW5nID0gTUNQLlNldHRpbmcoKVxuYXV0aFNldHRpbmcuc2VydmVyID0gXCJhdXRoLmV4YW1wbGUuY29tXCJcbmF1dGhTZXR0aW5nLnBvcnQgPSAzODlcbmF1dGhTZXR0aW5nLnVzZVNTTCA9IFRSVUVcblxuLy8gVGhlIHVzZXJuYW1lIHRvIGF1dGhlbnRpY2F0ZVxuU1RSSU5HIHVzZXJuYW1lID0gXCJleGFtcGxlVXNlclwiXG5cbi8vIENhbGwgdGhlIE1DUC5BdXRoZW50aWNhdGUgZnVuY3Rpb25cbkJPT0xFQU4gaXNBdXRoZW50aWNhdGVkID0gTUNQLkF1dGhlbnRpY2F0ZShhdXRoU2V0dGluZywgdXNlcm5hbWUpXG5cbi8vIENoZWNrIHRoZSByZXN1bHQgb2YgdGhlIGF1dGhlbnRpY2F0aW9uXG5JRiBpc0F1dGhlbnRpY2F0ZWQgVEhFTiB7XG4gICAgLy8gVXNlciBhdXRoZW50aWNhdGVkIHN1Y2Nlc3NmdWxseS5cbiAgICAvLyBBZGRpdGlvbmFsIGNvZGUgZm9yIGF1dGhlbnRpY2F0ZWQgdXNlcnNcbn0gRUxTRSB7XG4gICAgLy8gVXNlciBhdXRoZW50aWNhdGlvbiBmYWlsZWQuXG4gICAgLy8gQWRkaXRpb25hbCBjb2RlIGZvciBmYWlsZWQgYXV0aGVudGljYXRpb25cbn0iLCAibmFtZSI6ICJNQ1AuQXV0aGVudGljYXRlIChNQ1AuU2V0dGluZywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gY3VzdG9tZXIgaXMgYXV0aGVudGljYXRlZCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNQ1AuU2V0dGluZ2A6IFRoZSBNQ1AgY29uZmlndXJhdGlvbiBzZXR0aW5nLlxuMi4gYFNUUklOR2A6IFRoZSBjdXN0b21lciBJRC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNQ1AuU2V0dGluZyIsICJkZXNjcmlwdGlvbiI6ICJHZXRzIGFuIE1DUCBzZXR0aW5nIHdpdGggYW4gaWRlbnRpZnlpbmcgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgYSBzZXR0aW5nIHZhbHVlIHVzaW5nIE1DUC5HZXRTZXR0aW5nXG5TVFJJTkcgc2V0dGluZ1ZhbHVlID0gTUNQLkdldFNldHRpbmcoXCJleGFtcGxlU2V0dGluZ1wiKVxuXG4vLyBUaGUgdmFsdWUgb2YgZXhhbXBsZVNldHRpbmcgaXM6IHNldHRpbmdWYWx1ZVxuXG4vLyBVc2UgdGhlIHJldHJpZXZlZCBzZXR0aW5nIHZhbHVlIGluIHNvbWUgbG9naWNcbklGIHNldHRpbmdWYWx1ZSA9PSBcImJsb2NrXCIgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQmxvY2tlZCBkdWUgdG8gc2V0dGluZyB2YWx1ZVwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJBbGxvd2VkIGR1ZSB0byBzZXR0aW5nIHZhbHVlXCIpXG59IiwgIm5hbWUiOiAiTUNQLkdldFNldHRpbmcgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYE1DUC5TZXR0aW5nYCBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgaWRlbnRpZmllciBmb3IgdGhlIGRlc2lyZWQgc2V0dGluZy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TWVkaWFUeXBlPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBsaXN0IG9mIG1lZGlhIHR5cGVzIGRldGVjdGVkIHdpdGggaGlnaCBjb25maWRlbmNlIChlbnN1cmVkKS4iLCAiY29kZV9leGFtcGxlIjogIi8vIEVuc3VyZSB0aGUgbWVkaWEgdHlwZSBvZiB0aGUgY29udGVudFxuTWVkaWFUeXBlIG1lZGlhVHlwZSA9IE1lZGlhVHlwZS5FbnN1cmVkKClcblxuLy8gRW5zdXJlZCBNZWRpYVR5cGU6IFxuLy8gQ29tbWVudGVkIG91dCBERUJVRyBzdGF0ZW1lbnQuIE9yaWdpbmFsIGxpbmU6IFwiREVCVUcoXCJFbnN1cmVkIE1lZGlhVHlwZTogXCIgKyBtZWRpYVR5cGUpXCIiLCAibmFtZSI6ICJNZWRpYVR5cGUuRW5zdXJlZCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbGlzdCBvZiBtZWRpYSB0eXBlcyBkZXRlY3RlZCB3aXRoIGhpZ2ggY29uZmlkZW5jZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiB3aWxkY2FyZCBleHByZXNzaW9uLiBSZXR1cm5zIC0xIGlmIHRoZXJlIGlzIG5vIG1hdGNoLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgdmVjdG9yIG9mIE1lZGlhVHlwZSBvYmplY3RzXG5WRUNUT1I8TWVkaWFUeXBlPiBtZWRpYVR5cGVzID0gW1wiYXBwbGljYXRpb24vanNvblwiLCBcInRleHQvaHRtbFwiLCBcImltYWdlL3BuZ1wiXVxuXG4vLyBEZWZpbmUgdGhlIG1lZGlhIHR5cGUgc3RyaW5nIHRvIHNlYXJjaCBmb3JcblNUUklORyBtZWRpYVR5cGVUb0ZpbmQgPSBcInRleHQvaHRtbFwiXG5cbi8vIFVzZSBNZWRpYVR5cGUuRmluZE1hdGNoIHRvIGNoZWNrIGlmIHRoZSBtZWRpYSB0eXBlIGV4aXN0cyBpbiB0aGUgdmVjdG9yXG5CT09MRUFOIGlzTWF0Y2ggPSBNZWRpYVR5cGUuRmluZE1hdGNoKG1lZGlhVHlwZXMsIG1lZGlhVHlwZVRvRmluZClcblxuLy8gUHJpbnQgdGhlIHJlc3VsdCB0byB0aGUgY29uc29sZVxuSUYgaXNNYXRjaCBUSEVOIHtcbiAgICAvLyBNZWRpYSB0eXBlIGZvdW5kOiBcIiArIG1lZGlhVHlwZVRvRmluZFxufSBFTFNFIHtcbiAgICAvLyBNZWRpYSB0eXBlIG5vdCBmb3VuZDogXCIgKyBtZWRpYVR5cGVUb0ZpbmRcbn0iLCAibmFtZSI6ICJNZWRpYVR5cGUuRmluZE1hdGNoIChWRUNUT1I8TWVkaWFUeXBlPiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIHdpbGRjYXJkIGV4cHJlc3Npb24gKC0xIGlmIHRoZXJlIGlzIG5vIG1hdGNoKS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNZWRpYVR5cGU+YDogVGhlIGxpc3Qgb2YgbWVkaWEgdHlwZXMgdG8gc2VhcmNoIHRocm91Z2guXG4yLiBgU1RSSU5HYDogVGhlIHdpbGRjYXJkIGV4cHJlc3Npb24gdG8gc2VhcmNoIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TWVkaWFUeXBlPiIsICJkZXNjcmlwdGlvbiI6ICJEZXRlcm1pbmVzIG1lZGlhIHR5cGUgYmFzZWQgb24gZmlsZSBuYW1lIGV4dGVuc2lvbi4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBtZWRpYVR5cGUgPSBcImFwcGxpY2F0aW9uL2pzb25cIlxuTWVkaWFUeXBlIG5vcm1hbGl6ZWRNZWRpYVR5cGUgPSBNZWRpYVR5cGUuTm9ybWFsaXplZE5hbWUobWVkaWFUeXBlKVxuLy8gTm9ybWFsaXplZCBNZWRpYSBUeXBlOiArIG5vcm1hbGl6ZWRNZWRpYVR5cGUiLCAibmFtZSI6ICJNZWRpYVR5cGUuRnJvbUV4dGVuc2lvbiAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1lZGlhIHR5cGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gZmlsZSBuYW1lIGV4dGVuc2lvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJNZWRpYVR5cGUiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBtZWRpYSB0eXBlIGdpdmVuIGluIEhUVFAgaGVhZGVyLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgdGhlIG1lZGlhIHR5cGUgZnJvbSB0aGUgSFRUUCBoZWFkZXJcbk1lZGlhVHlwZSBtZWRpYVR5cGUgPSBNZWRpYVR5cGUuRnJvbUhlYWRlcigpXG5cbi8vIE1lZGlhIFR5cGUgZnJvbSBIZWFkZXI6IFxuLy8gbWVkaWFUeXBlXG5cbi8vIEV4YW1wbGUgY29uZGl0aW9uIHRvIGJsb2NrIGNlcnRhaW4gbWVkaWEgdHlwZXNcbklGIG1lZGlhVHlwZSA9PSBcImFwcGxpY2F0aW9uL2pzb25cIiBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJCbG9ja2luZyBKU09OIGNvbnRlbnRcIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiQWxsb3dlZCBjb250ZW50XCIpXG59IiwgIm5hbWUiOiAiTWVkaWFUeXBlLkZyb21IZWFkZXIgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbWVkaWEgdHlwZSBzcGVjaWZpZWQgaW4gdGhlIEhUVFAgaGVhZGVyLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGRldGVjdGVkIG1lZGlhIHR5cGUgaXMgYW4gYXJjaGl2ZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJNZWRpYVR5cGUgbWVkaWFUeXBlID0gTWVkaWFUeXBlKCkgIC8vIEFzc3VtZSB0aGlzIGdldHMgdGhlIG1lZGlhIHR5cGUgb2YgdGhlIGN1cnJlbnQgcmVzcG9uc2VcblxuSUYgbWVkaWFUeXBlLklzQXJjaGl2ZSgpIFRIRU4ge1xuICAgIC8vIFRoZSBtZWRpYSB0eXBlIGlzIGFuIGFyY2hpdmUuXG4gICAgLy8gQWRkaXRpb25hbCBsb2dpYyBmb3IgaGFuZGxpbmcgYXJjaGl2ZSBmaWxlcyBjYW4gYmUgYWRkZWQgaGVyZVxufSBFTFNFIHtcbiAgICAvLyBUaGUgbWVkaWEgdHlwZSBpcyBub3QgYW4gYXJjaGl2ZS5cbn0iLCAibmFtZSI6ICJNZWRpYVR5cGUuSXNBcmNoaXZlICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBtZWRpYSB0eXBlIGlzIGFuIGFyY2hpdmUsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGRldGVjdGVkIG1lZGlhIHR5cGUgaXMgYXVkaW8sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiSUYgTWVkaWFUeXBlLklzQXVkaW8oKSBUSEVOIHtcbiAgICAvLyBUaGUgbWVkaWEgdHlwZSBpcyBhdWRpby5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUsIHN1Y2ggYXMgYWxsb3dpbmcgb3IgYmxvY2tpbmcgdGhlIHJlcXVlc3RcbiAgICBNV0cuQWxsb3coXCJBdWRpbyBtZWRpYSB0eXBlIGRldGVjdGVkXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBtZWRpYSB0eXBlIGlzIG5vdCBhdWRpby5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUsIHN1Y2ggYXMgYWxsb3dpbmcgb3IgYmxvY2tpbmcgdGhlIHJlcXVlc3RcbiAgICBNV0cuQmxvY2soXCJOb24tYXVkaW8gbWVkaWEgdHlwZSBkZXRlY3RlZFwiKVxufSIsICJuYW1lIjogIk1lZGlhVHlwZS5Jc0F1ZGlvICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBtZWRpYSB0eXBlIGlzIGF1ZGlvLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGRldGVjdGVkIG1lZGlhIHR5cGUgaXMgYSBjb21wb3NpdGUgb2JqZWN0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIklGIE1lZGlhVHlwZS5Jc0NvbXBvc2l0ZW9iamVjdCgpIFRIRU4ge1xuICAgIC8vIFRoZSBtZWRpYSB0eXBlIGlzIGEgY29tcG9zaXRlIG9iamVjdC5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIG1lZGlhIHR5cGUgaXMgbm90IGEgY29tcG9zaXRlIG9iamVjdC5cbn0iLCAibmFtZSI6ICJNZWRpYVR5cGUuSXNDb21wb3NpdGVvYmplY3QgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIG1lZGlhIHR5cGUgaXMgYSBjb21wb3NpdGUgb2JqZWN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGRldGVjdGVkIG1lZGlhIHR5cGUgaXMgYSBkYXRhYmFzZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBNZWRpYVR5cGUuSXNEYXRhYmFzZSgpIFRIRU4ge1xuICAgIC8vIFRoZSBtZWRpYSB0eXBlIGlzIGEgZGF0YWJhc2UuXG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIGRhdGFiYXNlIG1lZGlhIHR5cGVzIGlzIG5vdCBhbGxvd2VkLlwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGUgbWVkaWEgdHlwZSBpcyBub3QgYSBkYXRhYmFzZS5cbiAgICBNV0cuQWxsb3coXCJNZWRpYSB0eXBlIGNoZWNrIHBhc3NlZC5cIilcbn0iLCAibmFtZSI6ICJNZWRpYVR5cGUuSXNEYXRhYmFzZSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgbWVkaWEgdHlwZSBpcyBhIGRhdGFiYXNlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGRldGVjdGVkIG1lZGlhIHR5cGUgaXMgYSBkb2N1bWVudCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBNZWRpYVR5cGUuSXNEb2N1bWVudCgpIFRIRU4ge1xuICAgIC8vIFRoZSBtZWRpYSB0eXBlIGlzIGEgZG9jdW1lbnQuXG4gICAgLy8gQWRkaXRpb25hbCBhY3Rpb25zIGNhbiBiZSB0YWtlbiBoZXJlIGlmIHRoZSBtZWRpYSB0eXBlIGlzIGEgZG9jdW1lbnRcbn0gRUxTRSB7XG4gICAgLy8gVGhlIG1lZGlhIHR5cGUgaXMgbm90IGEgZG9jdW1lbnQuXG4gICAgLy8gQWRkaXRpb25hbCBhY3Rpb25zIGNhbiBiZSB0YWtlbiBoZXJlIGlmIHRoZSBtZWRpYSB0eXBlIGlzIG5vdCBhIGRvY3VtZW50XG59IiwgIm5hbWUiOiAiTWVkaWFUeXBlLklzRG9jdW1lbnQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIG1lZGlhIHR5cGUgaXMgYSBkb2N1bWVudC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBkZXRlY3RlZCBtZWRpYSB0eXBlIGlzIGV4ZWN1dGFibGUsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiSUYgTWVkaWFUeXBlLklzRXhlY3V0YWJsZSgpIFRIRU4ge1xuICAgIC8vIEV4ZWN1dGFibGUgZmlsZXMgYXJlIG5vdCBhbGxvd2VkLlxuICAgIE1XRy5CbG9jayhcIkV4ZWN1dGFibGUgZmlsZXMgYXJlIG5vdCBhbGxvd2VkLlwiKVxufSIsICJuYW1lIjogIk1lZGlhVHlwZS5Jc0V4ZWN1dGFibGUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGRldGVjdGVkIG1lZGlhIHR5cGUgaXMgZXhlY3V0YWJsZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZGV0ZWN0ZWQgbWVkaWEgdHlwZSBpcyBhbiBpbWFnZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBNZWRpYVR5cGUuSXNJbWFnZSgpIFRIRU4ge1xuICAgIC8vIFRoZSBtZWRpYSB0eXBlIGlzIGFuIGltYWdlLlxuICAgIC8vIEFkZGl0aW9uYWwgYWN0aW9ucyBjYW4gYmUgdGFrZW4gaGVyZSBpZiB0aGUgbWVkaWEgdHlwZSBpcyBhbiBpbWFnZVxufSBFTFNFIHtcbiAgICAvLyBUaGUgbWVkaWEgdHlwZSBpcyBub3QgYW4gaW1hZ2UuXG4gICAgLy8gQWRkaXRpb25hbCBhY3Rpb25zIGNhbiBiZSB0YWtlbiBoZXJlIGlmIHRoZSBtZWRpYSB0eXBlIGlzIG5vdCBhbiBpbWFnZVxufSIsICJuYW1lIjogIk1lZGlhVHlwZS5Jc0ltYWdlICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBkZXRlY3RlZCBtZWRpYSB0eXBlIGlzIGFuIGltYWdlLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBtYWdpYyBieXRlcyBvZiB0aGUgZGV0ZWN0ZWQgbWVkaWEgdHlwZSBkbyBub3QgbWF0Y2ggdGhlIEhUVFAgaGVhZGVyLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIklGIE1lZGlhVHlwZS5Jc01hZ2ljQnl0ZXNNaXNtYXRjaCgpIFRIRU4ge1xuICAgIC8vIE1hZ2ljIGJ5dGVzIG1pc21hdGNoIGRldGVjdGVkLlxuICAgIE1XRy5CbG9jayhcIk1hZ2ljIGJ5dGVzIG1pc21hdGNoIGRldGVjdGVkIGluIHRoZSBmaWxlLlwiKVxufSBFTFNFIHtcbiAgICAvLyBObyBtYWdpYyBieXRlcyBtaXNtYXRjaCBkZXRlY3RlZC5cbiAgICBNV0cuQWxsb3coXCJObyBtYWdpYyBieXRlcyBtaXNtYXRjaCBkZXRlY3RlZC5cIilcbn0iLCAibmFtZSI6ICJNZWRpYVR5cGUuSXNNYWdpY0J5dGVzTWlzbWF0Y2ggKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIG1hZ2ljIGJ5dGVzIG9mIHRoZSBkZXRlY3RlZCBtZWRpYSB0eXBlIGRvIG5vdCBtYXRjaCB0aGUgSFRUUCBoZWFkZXIsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGRldGVjdGVkIG1lZGlhIHR5cGUgaXMgdGV4dCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBNZWRpYVR5cGUuSXNUZXh0KCkgVEhFTiB7XG4gICAgLy8gVGhlIG1lZGlhIHR5cGUgaXMgdGV4dC5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUgaWYgdGhlIG1lZGlhIHR5cGUgaXMgdGV4dFxufSBFTFNFIHtcbiAgICAvLyBUaGUgbWVkaWEgdHlwZSBpcyBub3QgdGV4dC5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUgaWYgdGhlIG1lZGlhIHR5cGUgaXMgbm90IHRleHRcbn0iLCAibmFtZSI6ICJNZWRpYVR5cGUuSXNUZXh0ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBkZXRlY3RlZCBtZWRpYSB0eXBlIGlzIHRleHQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGRldGVjdGVkIG1lZGlhIHR5cGUgaXMgdmlkZW8sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiSUYgTWVkaWFUeXBlLklzVmlkZW8oKSBUSEVOIHtcbiAgICAvLyBUaGUgbWVkaWEgdHlwZSBpcyBhIHZpZGVvLlxuICAgIC8vIEFkZGl0aW9uYWwgYWN0aW9ucyBjYW4gYmUgdGFrZW4gaGVyZSwgc3VjaCBhcyBibG9ja2luZyBvciBhbGxvd2luZyB0aGUgcmVxdWVzdFxuICAgIE1XRy5BbGxvdyhcIlZpZGVvIGNvbnRlbnQgYWxsb3dlZFwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGUgbWVkaWEgdHlwZSBpcyBub3QgYSB2aWRlby5cbiAgICAvLyBBY3Rpb25zIGZvciBub24tdmlkZW8gY29udGVudFxuICAgIE1XRy5CbG9jayhcIk5vbi12aWRlbyBjb250ZW50IGJsb2NrZWRcIilcbn0iLCAibmFtZSI6ICJNZWRpYVR5cGUuSXNWaWRlbyAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZGV0ZWN0ZWQgbWVkaWEgdHlwZSBpcyB2aWRlbywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiTWVkaWFUeXBlIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG5vcm1hbGl6ZWQgYE1lZGlhVHlwZWAgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gTUlNRSB0eXBlIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBtZWRpYVR5cGVTdHJpbmcgPSBcImFwcGxpY2F0aW9uL2pzb25cIlxuU1RSSU5HIG5vcm1hbGl6ZWRNZWRpYVR5cGUgPSBNZWRpYVR5cGUuTm9ybWFsaXplZE5hbWUobWVkaWFUeXBlU3RyaW5nKVxuXG4vLyBPcmlnaW5hbCBNZWRpYSBUeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4vLyBOb3JtYWxpemVkIE1lZGlhIFR5cGU6IG5vcm1hbGl6ZWRNZWRpYVR5cGUiLCAibmFtZSI6ICJNZWRpYVR5cGUuTm9ybWFsaXplZE5hbWUgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbm9ybWFsaXplZCBgTWVkaWFUeXBlYCBmb3IgdGhlIGdpdmVuIE1JTUUgdHlwZSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgTUlNRSB0eXBlIHN0cmluZyB0byBub3JtYWxpemUuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1lZGlhVHlwZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGxpc3Qgb2YgTUlNRSB0eXBlcyBkZXRlY3RlZCB3aXRoIGxvdyBjb25maWRlbmNlIChub3QgZW5zdXJlZCkuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TWVkaWFUeXBlPiBsb3dQcm9iYWJpbGl0eU1lZGlhVHlwZXMgPSBNZWRpYVR5cGUuTm90RW5zdXJlZCgpXG5cbklGIGxvd1Byb2JhYmlsaXR5TWVkaWFUeXBlcyAhPSBOVUxMIFRIRU4ge1xuICAgIC8vIExvdyBwcm9iYWJpbGl0eSBtZWRpYSB0eXBlcyBkZXRlY3RlZDpcbiAgICBGT1IgRUFDSCBtZWRpYVR5cGUgSU4gbG93UHJvYmFiaWxpdHlNZWRpYVR5cGVzIHtcbiAgICAgICAgLy8gbWVkaWFUeXBlXG4gICAgfVxufSBFTFNFIHtcbiAgICAvLyBObyBsb3cgcHJvYmFiaWxpdHkgbWVkaWEgdHlwZXMgZGV0ZWN0ZWQuXG59IiwgIm5hbWUiOiAiTWVkaWFUeXBlLk5vdEVuc3VyZWQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGxpc3Qgb2YgTUlNRSB0eXBlcyBkZXRlY3RlZCBieSBzaWduYXR1cmVzIHdpdGggbG93IHByb2JhYmlsaXR5IG9mIGRldGVjdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IiwgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBCT09MRUFOIHZhbHVlIHRvIGFuIE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIGFuIGVtcHR5IE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3Rcbk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QgcGFyYW1MaXN0ID0gTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCgpXG5cbi8vIEFkZCBhIEJPT0xFQU4gdmFsdWUgdG8gdGhlIHBhcmFtZXRlciBsaXN0XG5wYXJhbUxpc3QgPSBNV0cuQWRkKHBhcmFtTGlzdCwgVFJVRSlcblxuLy8gQWRkIGFub3RoZXIgQk9PTEVBTiB2YWx1ZSB0byB0aGUgcGFyYW1ldGVyIGxpc3RcbnBhcmFtTGlzdCA9IE1XRy5BZGQocGFyYW1MaXN0LCBGQUxTRSlcblxuLy8gUGFyYW1ldGVyIExpc3Q6IFwiICsgcGFyYW1MaXN0IiwgIm5hbWUiOiAiTVdHLkFkZCAoTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCwgQk9PTEVBTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdXBkYXRlZCBgTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdGAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0YDogVGhlIHBhcmFtZXRlciBsaXN0IHRvIGFkZCB0by5cbjIuIGBCT09MRUFOYDogVGhlIGJvb2xlYW4gdmFsdWUgdG8gYWRkLiJ9LCB7InJldHVybl90eXBlIjogIk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QiLCAiZGVzY3JpcHRpb24iOiAiQWRkcyBhIEpTT04gdmFsdWUgdG8gYW4gTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYW4gSW50ZXJuYWxQYXJhbWV0ZXJMaXN0XG5NV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IHBhcmFtTGlzdCA9IE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QoKVxuXG4vLyBDcmVhdGUgYSBKU09OIG9iamVjdFxuSlNPTiBqc29uT2JqZWN0ID0gSlNPTigpXG5qc29uT2JqZWN0W1wia2V5MVwiXSA9IFwidmFsdWUxXCJcbmpzb25PYmplY3RbXCJrZXkyXCJdID0gXCJ2YWx1ZTJcIlxuXG4vLyBBZGQgdGhlIEpTT04gb2JqZWN0IHRvIHRoZSBJbnRlcm5hbFBhcmFtZXRlckxpc3RcbnBhcmFtTGlzdCA9IE1XRy5BZGQocGFyYW1MaXN0LCBqc29uT2JqZWN0KVxuXG4vLyBJbnRlcm5hbFBhcmFtZXRlckxpc3QgYWZ0ZXIgYWRkaXRpb246IFxuLy8gcGFyYW1MaXN0IiwgIm5hbWUiOiAiTVdHLkFkZCAoTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCwgSlNPTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdXBkYXRlZCBgTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdGAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0YDogVGhlIHBhcmFtZXRlciBsaXN0IHRvIGFkZCB0by5cbjIuIGBKU09OYDogVGhlIEpTT04gdmFsdWUgdG8gYWRkLiJ9LCB7InJldHVybl90eXBlIjogIk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QiLCAiZGVzY3JpcHRpb24iOiAiQWRkcyBhIE1BUCB2YWx1ZSB0byBhbiBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhbiBlbXB0eSBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0XG5NV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IHBhcmFtTGlzdCA9IE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QoKVxuXG4vLyBDcmVhdGUgYSBNQVA8U1RSSU5HLCBNV0cuSW50ZXJuYWxWYXJpYW50PiB0byBhZGQgdG8gdGhlIGxpc3Rcbk1BUDxTVFJJTkcsIE1XRy5JbnRlcm5hbFZhcmlhbnQ+IHBhcmFtTWFwID0gTUFQPFNUUklORywgTVdHLkludGVybmFsVmFyaWFudD4oKVxucGFyYW1NYXBbXCJrZXkxXCJdID0gTVdHLkludGVybmFsVmFyaWFudChcInZhbHVlMVwiKVxucGFyYW1NYXBbXCJrZXkyXCJdID0gTVdHLkludGVybmFsVmFyaWFudCgxMjM0KVxucGFyYW1NYXBbXCJrZXkzXCJdID0gTVdHLkludGVybmFsVmFyaWFudChUUlVFKVxuXG4vLyBBZGQgdGhlIE1BUCB0byB0aGUgTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdFxucGFyYW1MaXN0ID0gTVdHLkFkZChwYXJhbUxpc3QsIHBhcmFtTWFwKVxuXG4vLyBVcGRhdGVkIHBhcmFtZXRlciBsaXN0OiBwYXJhbUxpc3QiLCAibmFtZSI6ICJNV0cuQWRkIChNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0LCBNQVA8U1RSSU5HLCBNV0cuSW50ZXJuYWxWYXJpYW50PikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdXBkYXRlZCBgTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdGAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0YDogVGhlIHBhcmFtZXRlciBsaXN0IHRvIGFkZCB0by5cbjIuIGBNQVA8U1RSSU5HLE1XRy5JbnRlcm5hbFZhcmlhbnQ+YDogVGhlIG1hcCB0byBhZGQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCIsICJkZXNjcmlwdGlvbiI6ICJBZGRzIGFuIE1XRy5JbnRlcm5hbFZhcmlhbnQgdmFsdWUgdG8gYW4gTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYW4gZW1wdHkgTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdFxuTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCBwYXJhbUxpc3QgPSBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0KClcblxuLy8gQ3JlYXRlIGFuIE1XRy5JbnRlcm5hbFZhcmlhbnQgdmFsdWVcbk1XRy5JbnRlcm5hbFZhcmlhbnQgdmFyaWFudFZhbHVlID0gTVdHLkludGVybmFsVmFyaWFudChcImV4YW1wbGVWYWx1ZVwiKVxuXG4vLyBBZGQgdGhlIE1XRy5JbnRlcm5hbFZhcmlhbnQgdmFsdWUgdG8gdGhlIE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3RcbnBhcmFtTGlzdCA9IE1XRy5BZGQocGFyYW1MaXN0LCB2YXJpYW50VmFsdWUpXG5cbi8vIFVwZGF0ZWQgcGFyYW1ldGVyIGxpc3Q6IFwiICsgcGFyYW1MaXN0IiwgIm5hbWUiOiAiTVdHLkFkZCAoTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCwgTVdHLkludGVybmFsVmFyaWFudCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdXBkYXRlZCBgTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdGAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0YDogVGhlIHBhcmFtZXRlciBsaXN0IHRvIGFkZCB0by5cbjIuIGBNV0cuSW50ZXJuYWxWYXJpYW50YDogVGhlIHZhbHVlIHRvIGFkZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IiwgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBOZXQuSVAgdmFsdWUgdG8gYW4gTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIENyZWF0ZSBhbiBJbnRlcm5hbFBhcmFtZXRlckxpc3Rcbk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QgcGFyYW1MaXN0ID0gTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCgpXG5cbi8vIENyZWF0ZSBhIE5ldC5JUCBvYmplY3Rcbk5ldC5JUCBpcEFkZHJlc3MgPSBOZXQuSVAoXCIxOTIuMTY4LjEuMVwiKVxuXG4vLyBBZGQgdGhlIElQIGFkZHJlc3MgdG8gdGhlIEludGVybmFsUGFyYW1ldGVyTGlzdFxucGFyYW1MaXN0ID0gTVdHLkFkZChwYXJhbUxpc3QsIGlwQWRkcmVzcylcblxuLy8gSVAgQWRkcmVzcyBhZGRlZCB0byBJbnRlcm5hbFBhcmFtZXRlckxpc3Q6IFwiICsgaXBBZGRyZXNzIiwgIm5hbWUiOiAiTVdHLkFkZCAoTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCwgTmV0LklQKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSB1cGRhdGVkIGBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0YC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3RgOiBUaGUgcGFyYW1ldGVyIGxpc3QgdG8gYWRkIHRvLlxuMi4gYE5ldC5JUGA6IFRoZSBJUCBhZGRyZXNzIHZhbHVlIHRvIGFkZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IiwgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBudW1iZXIgdmFsdWUgdG8gYW4gTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QgcGFyYW1MaXN0ID0gTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCgpXG5OVU1CRVIgdmFsdWVUb0FkZCA9IDQyXG5cbnBhcmFtTGlzdCA9IE1XRy5BZGQocGFyYW1MaXN0LCB2YWx1ZVRvQWRkKVxuXG4vLyBVcGRhdGVkIHBhcmFtZXRlciBsaXN0OiBcbi8vICsgcGFyYW1MaXN0IiwgIm5hbWUiOiAiTVdHLkFkZCAoTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSB1cGRhdGVkIGBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0YC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3RgOiBUaGUgcGFyYW1ldGVyIGxpc3QgdG8gYWRkIHRvLlxuMi4gYE5VTUJFUmA6IFRoZSBudW1lcmljIHZhbHVlIHRvIGFkZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IiwgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBzdHJpbmcgdmFsdWUgdG8gYW4gTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYW4gZW1wdHkgTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdFxuTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCBwYXJhbUxpc3QgPSBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0KClcblxuLy8gQWRkIGEgc3RyaW5nIHZhbHVlIHRvIHRoZSBwYXJhbWV0ZXIgbGlzdFxucGFyYW1MaXN0ID0gTVdHLkFkZChwYXJhbUxpc3QsIFwiZXhhbXBsZVZhbHVlMVwiKVxucGFyYW1MaXN0ID0gTVdHLkFkZChwYXJhbUxpc3QsIFwiZXhhbXBsZVZhbHVlMlwiKVxucGFyYW1MaXN0ID0gTVdHLkFkZChwYXJhbUxpc3QsIFwiZXhhbXBsZVZhbHVlM1wiKVxuXG4vLyBEZWJ1ZyBvdXRwdXQgdG8gdmVyaWZ5IHRoZSB2YWx1ZXMgaW4gdGhlIHBhcmFtZXRlciBsaXN0XG4vLyBQYXJhbWV0ZXIgTGlzdDogXCIgKyBwYXJhbUxpc3QiLCAibmFtZSI6ICJNV0cuQWRkIChNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0LCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHVwZGF0ZWQgYE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3RgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdGA6IFRoZSBwYXJhbWV0ZXIgbGlzdCB0byBhZGQgdG8uXG4yLiBgU1RSSU5HYDogVGhlIHN0cmluZyB2YWx1ZSB0byBhZGQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCIsICJkZXNjcmlwdGlvbiI6ICJBZGRzIGEgdmVjdG9yIG9mIHZhbHVlcyB0byBhbiBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhbiBJbnRlcm5hbFBhcmFtZXRlckxpc3Rcbk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QgcGFyYW1MaXN0ID0gTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCgpXG5cbi8vIERlZmluZSBhIFZFQ1RPUiBvZiBNV0cuVXJsQ2F0ZWdvcnlcblZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+IHVybENhdGVnb3JpZXMgPSBNV0cuVXJsQ2F0ZWdvcnkoXCJTb2NpYWwgTWVkaWFcIiksIE1XRy5VcmxDYXRlZ29yeShcIlN0cmVhbWluZyBNZWRpYVwiKVxuXG4vLyBBZGQgdGhlIFZFQ1RPUiBvZiBVcmxDYXRlZ29yaWVzIHRvIHRoZSBJbnRlcm5hbFBhcmFtZXRlckxpc3RcbnBhcmFtTGlzdCA9IE1XRy5BZGQocGFyYW1MaXN0LCB1cmxDYXRlZ29yaWVzKVxuXG4vLyBEZWJ1ZyBvdXRwdXQgdG8gdmVyaWZ5IHRoZSBhZGRpdGlvblxuLy8gVXBkYXRlZCBJbnRlcm5hbFBhcmFtZXRlckxpc3Q6IFwiICsgcGFyYW1MaXN0IiwgIm5hbWUiOiAiTVdHLkFkZCAoTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCwgVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHVwZGF0ZWQgYE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3RgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdGA6IFRoZSBwYXJhbWV0ZXIgbGlzdCB0byBhZGQgdG8uXG4yLiBgVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT5gOiBUaGUgdmVjdG9yIHRvIGFkZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IiwgImRlc2NyaXB0aW9uIjogIkFkZHMgYSB2ZWN0b3Igb2YgdmFsdWVzIHRvIGFuIE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIGFuIEludGVybmFsUGFyYW1ldGVyTGlzdFxuTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCBwYXJhbUxpc3QgPSBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0KClcblxuLy8gQ3JlYXRlIGEgVkVDVE9SIG9mIFNUUklOR3MgdG8gYWRkIHRvIHRoZSBJbnRlcm5hbFBhcmFtZXRlckxpc3RcblZFQ1RPUjxTVFJJTkc+IHZhbHVlc1RvQWRkID0gXCJ2YWx1ZTFcIiwgXCJ2YWx1ZTJcIiwgXCJ2YWx1ZTNcIlxuXG4vLyBBZGQgdGhlIFZFQ1RPUiBvZiBTVFJJTkdzIHRvIHRoZSBJbnRlcm5hbFBhcmFtZXRlckxpc3RcbnBhcmFtTGlzdCA9IE1XRy5BZGQocGFyYW1MaXN0LCB2YWx1ZXNUb0FkZClcblxuLy8gRGVidWcgb3V0cHV0IHRvIHZlcmlmeSB0aGUgYWRkaXRpb25cbi8vIFVwZGF0ZWQgSW50ZXJuYWxQYXJhbWV0ZXJMaXN0OiBcIiArIHBhcmFtTGlzdCIsICJuYW1lIjogIk1XRy5BZGQgKE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QsIFZFQ1RPUjxTVFJJTkc+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSB1cGRhdGVkIGBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0YC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3RgOiBUaGUgcGFyYW1ldGVyIGxpc3QgdG8gYWRkIHRvLlxuMi4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIHZlY3RvciBvZiBzdHJpbmdzIHRvIGFkZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhbiBhbm9ueW1pemVkIHZlcnNpb24gb2YgdGhlIGdpdmVuIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgYW5vbnltaXphdGlvbiBzZXR0aW5nXG5NV0cuQW5vbnltaXphdGlvblNldHRpbmcgYW5vbnltaXphdGlvblNldHRpbmcgPSBbeW91cl9hbm9ueW1pemF0aW9uX3NldHRpbmddXG5cbi8vIERlZmluZSB0aGUgc3RyaW5nIHRvIGJlIGFub255bWl6ZWRcblNUUklORyBzZW5zaXRpdmVEYXRhID0gXCJUaGlzIGlzIHNvbWUgc2Vuc2l0aXZlIGRhdGFcIlxuXG4vLyBBbm9ueW1pemUgdGhlIHN0cmluZ1xuU1RSSU5HIGFub255bWl6ZWREYXRhID0gTVdHLkFub255bWl6ZShhbm9ueW1pemF0aW9uU2V0dGluZywgc2Vuc2l0aXZlRGF0YSlcblxuLy8gUHJpbnQgdGhlIGFub255bWl6ZWQgZGF0YSB0byB0aGUgY29uc29sZSBmb3IgZGVidWdnaW5nXG4vLyBERUJVRyhhbm9ueW1pemVkRGF0YSkiLCAibmFtZSI6ICJNV0cuQW5vbnltaXplIChNV0cuQW5vbnltaXphdGlvblNldHRpbmcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYW5vbnltaXplZCB2ZXJzaW9uIG9mIHRoZSBnaXZlbiBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuQW5vbnltaXphdGlvblNldHRpbmdgOiBUaGUgc2V0dGluZ3MgdG8gdXNlIGZvciBhbm9ueW1pemF0aW9uLlxuMi4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gYW5vbnltaXplLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBuYW1lIG9mIGFuIGFwcGxpY2F0aW9uIGNhdGVnb3J5LiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGFwcENhdGVnb3J5ID0gTVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnkoKVxuXG5JRiBhcHBDYXRlZ29yeSA9PSBcIlNvY2lhbCBNZWRpYVwiIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byBTb2NpYWwgTWVkaWEgaXMgbm90IGFsbG93ZWRcIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiQXBwbGljYXRpb24gY2F0ZWdvcnkgaXMgYWxsb3dlZFwiKVxufSIsICJuYW1lIjogIk1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG5hbWUgb2YgYW4gYXBwbGljYXRpb24gY2F0ZWdvcnkgYXMgYSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGBNV0cuQXBwbGljYXRpb25DYXRlZ29yeUlEYCBvZiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZSBjYXRlZ29yeSA9IE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5SUQoKVxuXG5JRiBjYXRlZ29yeSA9PSBcIlNvY2lhbCBNZWRpYVwiIFRIRU4ge1xuICAgIC8vIEFjY2VzcyB0byBzb2NpYWwgbWVkaWEgaXMgbm90IGFsbG93ZWRcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gc29jaWFsIG1lZGlhIGlzIG5vdCBhbGxvd2VkXCIpXG59IEVMU0Uge1xuICAgIC8vIEFwcGxpY2F0aW9uIGNhdGVnb3J5IGlzIGFsbG93ZWRcbiAgICBNV0cuQWxsb3coXCJBcHBsaWNhdGlvbiBjYXRlZ29yeSBpcyBhbGxvd2VkXCIpXG59IiwgIm5hbWUiOiAiTVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlJRCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBjYXRlZ29yeSB0eXBlIG9mIGFuIGFwcGxpY2F0aW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGRldGVjdGVkIGFwcGxpY2F0aW9uIGhhcyBhIGhpZ2ggcmlzayBzY29yZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWluZyBNV0cuQXBwbGljYXRpb25IYXNIaWdoUmlzaygpIHJldHVybnMgYSBCT09MRUFOIGluZGljYXRpbmcgaWYgdGhlIGFwcGxpY2F0aW9uIGhhcyBoaWdoIHJpc2tcbkJPT0xFQU4gaXNIaWdoUmlzayA9IE1XRy5BcHBsaWNhdGlvbkhhc0hpZ2hSaXNrKClcblxuSUYgaXNIaWdoUmlzayBUSEVOIHtcbiAgICAvLyBIaWdoIHJpc2sgYXBwbGljYXRpb24gZGV0ZWN0ZWQuXG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIGhpZ2ggcmlzayBhcHBsaWNhdGlvbiBpcyBibG9ja2VkLlwiKVxufSBFTFNFIHtcbiAgICAvLyBBcHBsaWNhdGlvbiBpcyBub3QgaGlnaCByaXNrLlxuICAgIE1XRy5BbGxvdyhcIkFwcGxpY2F0aW9uIGlzIGFsbG93ZWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLkFwcGxpY2F0aW9uSGFzSGlnaFJpc2sgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGRldGVjdGVkIGFwcGxpY2F0aW9uIGhhcyBhIGhpZ2ggcmlzayBzY29yZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZGV0ZWN0ZWQgYXBwbGljYXRpb24gaGFzIGEgbG93IHJpc2sgc2NvcmUsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiSUYgTVdHLkFwcGxpY2F0aW9uSGFzTG93UmlzaygpIFRIRU4ge1xuICAgIC8vIFRoZSBhcHBsaWNhdGlvbiBoYXMgYSBsb3cgcmlzayBzY29yZS5cbiAgICBNV0cuQWxsb3coXCJMb3dSaXNrQXBwbGljYXRpb25cIilcbn0gRUxTRSB7XG4gICAgLy8gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IGhhdmUgYSBsb3cgcmlzayBzY29yZS5cbiAgICBNV0cuQmxvY2soXCJIaWdoUmlza0FwcGxpY2F0aW9uXCIpXG59IiwgIm5hbWUiOiAiTVdHLkFwcGxpY2F0aW9uSGFzTG93UmlzayAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZGV0ZWN0ZWQgYXBwbGljYXRpb24gaGFzIGEgbG93IHJpc2sgc2NvcmUsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGRldGVjdGVkIGFwcGxpY2F0aW9uIGhhcyBhIG1lZGl1bSByaXNrIHNjb3JlLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIi8vIENoZWNrIGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgYSBtZWRpdW0gcmlza1xuSUYgTVdHLkFwcGxpY2F0aW9uSGFzTWVkaXVtUmlzaygpIFRIRU4ge1xuICAgIC8vIExvZyB0aGUgbWVkaXVtIHJpc2sgYXBwbGljYXRpb25cbiAgICAvLyBcIkFwcGxpY2F0aW9uIGhhcyBtZWRpdW0gcmlza1wiXG5cbiAgICAvLyBCbG9jayB0aGUgcmVxdWVzdCBhbmQgcHJvdmlkZSBhIHJlYXNvblxuICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byB0aGlzIGFwcGxpY2F0aW9uIGlzIGJsb2NrZWQgZHVlIHRvIG1lZGl1bSByaXNrIGxldmVsXCIpXG59IEVMU0Uge1xuICAgIC8vIEFsbG93IHRoZSByZXF1ZXN0IGlmIHRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGEgbWVkaXVtIHJpc2tcbiAgICBNV0cuQWxsb3coXCJBcHBsaWNhdGlvbiByaXNrIGxldmVsIGlzIGFjY2VwdGFibGVcIilcbn0iLCAibmFtZSI6ICJNV0cuQXBwbGljYXRpb25IYXNNZWRpdW1SaXNrICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGFuIGFwcGxpY2F0aW9uIGhhcyBhIG1lZGl1bSByaXNrIHNjb3JlLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSByaXNrIGxldmVsIG9mIHRoZSBkZXRlY3RlZCBhcHBsaWNhdGlvbiBoYXMgbm90IGJlZW4gdmVyaWZpZWQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiSUYgTVdHLkFwcGxpY2F0aW9uSGFzVW52ZXJpZmllZFJpc2MoKSBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgYmxvY2tlZCBkdWUgdG8gdW52ZXJpZmllZCBhcHBsaWNhdGlvbiByaXNrLlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJBcHBsaWNhdGlvbiByaXNrIHZlcmlmaWVkLlwiKVxufSIsICJuYW1lIjogIk1XRy5BcHBsaWNhdGlvbkhhc1VudmVyaWZpZWRSaXNjICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSByaXNrIGxldmVsIG9mIHRoZSBkZXRlY3RlZCBhcHBsaWNhdGlvbiBoYXMgbm90IGJlZW4gdmVyaWZpZWQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk1XRy5BcHBsaWNhdGlvblR5cGUiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZGV0ZWN0ZWQgYXBwbGljYXRpb24gdHlwZS4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5BcHBsaWNhdGlvblR5cGUgYXBwVHlwZSA9IE1XRy5BcHBsaWNhdGlvbklEKClcblxuSUYgYXBwVHlwZSA9PSBcIlNvbWVTcGVjaWZpY0FwcGxpY2F0aW9uXCIgVEhFTiB7XG4gICAgLy8gRGV0ZWN0ZWQgYXBwbGljYXRpb24gaXMgU29tZVNwZWNpZmljQXBwbGljYXRpb25cbiAgICBNV0cuQWxsb3coXCJBbGxvd2VkIGR1ZSB0byBzcGVjaWZpYyBhcHBsaWNhdGlvblwiKVxufSBFTFNFIHtcbiAgICAvLyBEZXRlY3RlZCBhcHBsaWNhdGlvbiBpcyBub3QgU29tZVNwZWNpZmljQXBwbGljYXRpb25cbiAgICBNV0cuQmxvY2soXCJCbG9ja2VkIGR1ZSB0byB1bnJlY29nbml6ZWQgYXBwbGljYXRpb25cIilcbn0iLCAibmFtZSI6ICJNV0cuQXBwbGljYXRpb25JRCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBkZXRlY3RlZCBhcHBsaWNhdGlvbiB0eXBlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gYmVsb25ncyB0byB0aGUgc3BlY2lmaWVkIHNlcnZpY2UgZ3JvdXAsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLkFwcGxpY2F0aW9uU2VydmljZUdyb3VwVHlwZSBzZXJ2aWNlR3JvdXAgPSBcIlNvY2lhbE1lZGlhXCJcblxuSUYgTVdHLkFwcGxpY2F0aW9uSXNJblNlcnZpY2VHcm91cChzZXJ2aWNlR3JvdXApIFRIRU4ge1xuICAgIC8vIFRoZSBhcHBsaWNhdGlvbiBpcyBwYXJ0IG9mIHRoZSBTb2NpYWwgTWVkaWEgc2VydmljZSBncm91cC5cbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gU29jaWFsIE1lZGlhIGFwcGxpY2F0aW9ucyBpcyBub3QgYWxsb3dlZC5cIilcbn0gRUxTRSB7XG4gICAgLy8gVGhlIGFwcGxpY2F0aW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSBTb2NpYWwgTWVkaWEgc2VydmljZSBncm91cC5cbiAgICBNV0cuQWxsb3coXCJBcHBsaWNhdGlvbiBpcyBhbGxvd2VkLlwiKVxufSIsICJuYW1lIjogIk1XRy5BcHBsaWNhdGlvbklzSW5TZXJ2aWNlR3JvdXAgKE1XRy5BcHBsaWNhdGlvblNlcnZpY2VHcm91cFR5cGUpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGlzIGluIHRoZSBzcGVjaWZpZWQgc2VydmljZSBncm91cCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuQXBwbGljYXRpb25TZXJ2aWNlR3JvdXBUeXBlYDogVGhlIHNlcnZpY2UgZ3JvdXAgdG8gY2hlY2sgYWdhaW5zdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGJlbG9uZ3MgdG8gdGhlIHNwZWNpZmllZCBzZXJ2aWNlIGdyb3VwLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBzZXJ2aWNlR3JvdXBOYW1lID0gXCJTb2NpYWxNZWRpYVwiXG5cbklGIE1XRy5BcHBsaWNhdGlvbklzSW5TZXJ2aWNlR3JvdXAoc2VydmljZUdyb3VwTmFtZSkgVEhFTiB7XG4gICAgLy8gVGhlIGN1cnJlbnQgYXBwbGljYXRpb24gYmVsb25ncyB0byB0aGUgc2VydmljZSBncm91cDogU29jaWFsTWVkaWFcbiAgICBNV0cuQWxsb3coXCJBcHBsaWNhdGlvbiBpcyBpbiB0aGUgYWxsb3dlZCBzZXJ2aWNlIGdyb3VwXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGRvZXMgbm90IGJlbG9uZyB0byB0aGUgc2VydmljZSBncm91cDogU29jaWFsTWVkaWFcbiAgICBNV0cuQmxvY2soXCJBcHBsaWNhdGlvbiBpcyBub3QgaW4gdGhlIGFsbG93ZWQgc2VydmljZSBncm91cFwiKVxufSIsICJuYW1lIjogIk1XRy5BcHBsaWNhdGlvbklzSW5TZXJ2aWNlR3JvdXAgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gYmVsb25ncyB0byB0aGUgc3BlY2lmaWVkIHNlcnZpY2UgZ3JvdXAsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgZ3JvdXAgdG8gY2hlY2sgYWdhaW5zdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcmlzayBzY29yZSBvZiBhbiBhcHBsaWNhdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiByaXNrU2NvcmUgPSBNV0cuQXBwbGljYXRpb25SaXNrKClcblxuSUYgcmlza1Njb3JlID4gNTAgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQXBwbGljYXRpb24gcmlzayBzY29yZSB0b28gaGlnaDogXCIgKyByaXNrU2NvcmUpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIkFwcGxpY2F0aW9uIHJpc2sgc2NvcmUgYWNjZXB0YWJsZTogXCIgKyByaXNrU2NvcmUpXG59IiwgIm5hbWUiOiAiTVdHLkFwcGxpY2F0aW9uUmlzayAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1lcmljYWwgcmlzayBzY29yZSBvZiBhbiBhcHBsaWNhdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcmlzayBzY29yZSByYW5nZSBvZiBhbiBhcHBsaWNhdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIEdldCB0aGUgcmlzayB0eXBlIG9mIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uXG5TVFJJTkcgcmlza1R5cGUgPSBNV0cuQXBwbGljYXRpb25SaXNrVHlwZSgpXG5cbi8vIEFwcGxpY2F0aW9uIFJpc2sgVHlwZTogXCIgKyByaXNrVHlwZVxuXG4vLyBQZXJmb3JtIGFjdGlvbnMgYmFzZWQgb24gdGhlIHJpc2sgdHlwZVxuSUYgcmlza1R5cGUgPT0gXCJIaWdoXCIgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIGhpZ2gtcmlzayBhcHBsaWNhdGlvbnMgaXMgbm90IGFsbG93ZWQuXCIpXG59IEVMU0UgSUYgcmlza1R5cGUgPT0gXCJNZWRpdW1cIiBUSEVOIHtcbiAgICAvLyBNZWRpdW0gcmlzayBhcHBsaWNhdGlvbiBkZXRlY3RlZC5cbn0gRUxTRSB7XG4gICAgLy8gTG93IHJpc2sgb3IgdW5rbm93biBhcHBsaWNhdGlvbiBkZXRlY3RlZC5cbn0iLCAibmFtZSI6ICJNV0cuQXBwbGljYXRpb25SaXNrVHlwZSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSByaXNrIHNjb3JlIHJhbmdlIGFzc29jaWF0ZWQgd2l0aCBhbiBhcHBsaWNhdGlvbiBhcyBhIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgdmVjdG9yIG9mIGFwcGxpY2F0aW9ucyBpbiBhIHNlcnZpY2UgZ3JvdXAuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuQXBwbGljYXRpb25TZXJ2aWNlR3JvdXBUeXBlIGFwcFNlcnZpY2VHcm91cCA9IE1XRy5HZXRBcHBsaWNhdGlvblNlcnZpY2VHcm91cCgpXG5cbklGIGFwcFNlcnZpY2VHcm91cCA9PSBcIlNvY2lhbE1lZGlhXCIgVEhFTiB7XG4gICAgLy8gQWNjZXNzIHRvIFNvY2lhbCBNZWRpYSBhcHBsaWNhdGlvbiBzZXJ2aWNlIGdyb3VwIGRldGVjdGVkLlxuICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byBTb2NpYWwgTWVkaWEgaXMgbm90IGFsbG93ZWQuXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIkFwcGxpY2F0aW9uIHNlcnZpY2UgZ3JvdXAgaXMgYWxsb3dlZC5cIilcbn0iLCAibmFtZSI6ICJNV0cuQXBwbGljYXRpb25TZXJ2aWNlR3JvdXAgKE1XRy5BcHBsaWNhdGlvblNlcnZpY2VHcm91cFR5cGUpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyBhbGwgdGhlIGFwcGxpY2F0aW9ucyB3aXRoaW4gYSBzcGVjaWZpZWQgc2VydmljZSBncm91cC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5BcHBsaWNhdGlvblNlcnZpY2VHcm91cFR5cGVgOiBUaGUgdHlwZSBvZiBzZXJ2aWNlIGdyb3VwIGZvciB3aGljaCB0aGUgdmVjdG9yIG9mIGFwcGxpY2F0aW9ucyBpcyByZXR1cm5lZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbmFtZSBvZiBhbiBhcHBsaWNhdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIFJldHJpZXZlIHRoZSBhcHBsaWNhdGlvbidzIG5hbWVcblNUUklORyBhcHBOYW1lID0gTVdHLkFwcGxpY2F0aW9uU2VydmljZU5hbWUoKVxuXG4vLyBBcHBsaWNhdGlvbiBTZXJ2aWNlIE5hbWU6IFwiICsgYXBwTmFtZVxuXG4vLyBFeGFtcGxlIGNvbmRpdGlvbjogQmxvY2sgdGhlIHJlcXVlc3QgaWYgdGhlIGFwcGxpY2F0aW9uIHNlcnZpY2UgbmFtZSBpcyBcIkJsb2NrZWRBcHBcIlxuSUYgYXBwTmFtZSA9PSBcIkJsb2NrZWRBcHBcIiBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gdGhpcyBhcHBsaWNhdGlvbiBpcyBibG9ja2VkLlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJBcHBsaWNhdGlvbiBzZXJ2aWNlIGlzIGFsbG93ZWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLkFwcGxpY2F0aW9uU2VydmljZU5hbWUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYXBwbGljYXRpb24ncyBuYW1lIGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBuYW1lIG9mIGFuIGFwcGxpY2F0aW9uIHN1Yi1jYXRlZ29yeS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBzdWJDYXRlZ29yeSA9IE1XRy5BcHBsaWNhdGlvblN1YkNhdGVnb3J5KClcblxuLy8gQ2hlY2tpbmcgaWYgdGhlIHN1YkNhdGVnb3J5IGlzIFwiU29jaWFsIE1lZGlhXCJcbklGIHN1YkNhdGVnb3J5ID09IFwiU29jaWFsIE1lZGlhXCIgVEhFTiB7XG4gICAgLy8gQmxvY2tpbmcgYWNjZXNzIHRvIFNvY2lhbCBNZWRpYSBzaXRlc1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byBTb2NpYWwgTWVkaWEgc2l0ZXMgaXMgbm90IGFsbG93ZWQuXCIpXG59IEVMU0Uge1xuICAgIC8vIEFsbG93aW5nIGFjY2VzcyBpZiBzdWItY2F0ZWdvcnkgaXMgbm90IGJsb2NrZWRcbiAgICBNV0cuQWxsb3coXCJTdWItY2F0ZWdvcnkgaXMgbm90IGJsb2NrZWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLkFwcGxpY2F0aW9uU3ViQ2F0ZWdvcnkgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbmFtZSBvZiBhbiBhcHBsaWNhdGlvbiBzdWItY2F0ZWdvcnkgYXMgYSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkFwcGxpY2F0aW9uU3ViQ2F0ZWdvcnlUeXBlIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGRldGVjdGVkIGFwcGxpY2F0aW9uIHN1Yi1jYXRlZ29yeSB0eXBlLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLkFwcGxpY2F0aW9uU3ViQ2F0ZWdvcnlUeXBlIHN1YkNhdGVnb3J5ID0gTVdHLkdldEFwcGxpY2F0aW9uU3ViQ2F0ZWdvcnkoKVxuXG5JRiBzdWJDYXRlZ29yeSA9PSBcIlNvY2lhbCBNZWRpYVwiIFRIRU4ge1xuICAgIC8vIE91dHB1dDogQWNjZXNzIHRvIHNvY2lhbCBtZWRpYSBpcyBub3QgYWxsb3dlZFxuICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byBzb2NpYWwgbWVkaWEgaXMgbm90IGFsbG93ZWRcIilcbn0gRUxTRSB7XG4gICAgLy8gT3V0cHV0OiBBcHBsaWNhdGlvbiBzdWJjYXRlZ29yeSBpcyBhbGxvd2VkXG4gICAgTVdHLkFsbG93KFwiQXBwbGljYXRpb24gc3ViY2F0ZWdvcnkgaXMgYWxsb3dlZFwiKVxufSIsICJuYW1lIjogIk1XRy5BcHBsaWNhdGlvblN1YkNhdGVnb3J5SUQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZGV0ZWN0ZWQgYXBwbGljYXRpb24gc3ViLWNhdGVnb3J5IHR5cGUgYXMgYW4gYE1XRy5BcHBsaWNhdGlvblN1YkNhdGVnb3J5VHlwZWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlwiUmV0dXJucyB0aGUgcmVtYWluaW5nIHRpbWUgY3JlZGVudGlhbHMgYXJlIHN0b3JlZCBpbiBhdXRoZW50aWNhdGlvbiBjYWNoZS4gTm90IGFwcGxpY2FibGUgZm9yIGNsb3VkLlwiIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgcmVtYWluaW5nVGltZSA9IE1XRy5BdXRoZW50aWNhdGlvbkNhY2hlUmVtYWluaW5nVGltZSgpXG5cbklGIHJlbWFpbmluZ1RpbWUgPCA2MCBUSEVOIHtcbiAgICAvLyBcIkF1dGhlbnRpY2F0aW9uIGNhY2hlIHRpbWUgaXMgbGVzcyB0aGFuIDYwIHNlY29uZHMuXCJcbn0gRUxTRSB7XG4gICAgLy8gXCJBdXRoZW50aWNhdGlvbiBjYWNoZSB0aW1lIGlzIHN1ZmZpY2llbnQuXCJcbn0iLCAibmFtZSI6ICJNV0cuQXV0aGVudGljYXRpb25DYWNoZVJlbWFpbmluZ1RpbWUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgcmVtYWluaW5nIHRpbWUgdGhhdCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgY2FjaGUuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBjcmVkZW50aWFscyBhcmUgcHJvdmlkZWQgYnV0IGF1dGhlbnRpY2F0aW9uIGZhaWxzLCBvdGhlcndpc2UgYEZBTFNFYC4gTm90IGFwcGxpY2FibGUgZm9yIGNsb3VkLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGZhaWx1cmVNZXNzYWdlID0gTVdHLkF1dGhlbnRpY2F0aW9uRmFpbHVyZU1lc3NhZ2UoKVxuLy8gQXV0aGVudGljYXRpb24gZmFpbGVkOiBcIiArIGZhaWx1cmVNZXNzYWdlXG5NV0cuQmxvY2soXCJBdXRoZW50aWNhdGlvbiBmYWlsZWQ6IFwiICsgZmFpbHVyZU1lc3NhZ2UpIiwgIm5hbWUiOiAiTVdHLkF1dGhlbnRpY2F0aW9uRmFpbGVkICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBwcm92aWRlZCBjcmVkZW50aWFscyBmYWlsIHRvIGF1dGhlbnRpY2F0ZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYXV0aGVudGljYXRpb24gZmFpbHVyZSByZWFzb24gSUQsIGxpa2UgaW52YWxpZCBjcmVkZW50aWFscyBvciBEQyBub3QgYXZhaWxhYmxlLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIGF1dGhGYWlsdXJlSUQgPSBNV0cuQXV0aGVudGljYXRpb25GYWlsdXJlSUQoKVxuXG5JRiBhdXRoRmFpbHVyZUlEID09IDEgVEhFTiB7XG4gICAgLy8gQXV0aGVudGljYXRpb24gZmFpbGVkOiBJbnZhbGlkIGNyZWRlbnRpYWxzXG4gICAgTVdHLkJsb2NrKFwiSW52YWxpZCBjcmVkZW50aWFsc1wiKVxufVxuRUxTRSBJRiBhdXRoRmFpbHVyZUlEID09IDIgVEhFTiB7XG4gICAgLy8gQXV0aGVudGljYXRpb24gZmFpbGVkOiBEb21haW4gY29udHJvbGxlciBub3QgYXZhaWxhYmxlXG4gICAgTVdHLkJsb2NrKFwiRG9tYWluIGNvbnRyb2xsZXIgbm90IGF2YWlsYWJsZVwiKVxufVxuRUxTRSB7XG4gICAgLy8gQXV0aGVudGljYXRpb24gZmFpbGVkOiBVbmtub3duIHJlYXNvblxuICAgIE1XRy5CbG9jayhcIlVua25vd24gYXV0aGVudGljYXRpb24gZmFpbHVyZVwiKVxufSIsICJuYW1lIjogIk1XRy5BdXRoZW50aWNhdGlvbkZhaWx1cmVJRCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbnVtZXJpYyBJRCByZXByZXNlbnRpbmcgdGhlIHNwZWNpZmljIHJlYXNvbiBmb3IgYXV0aGVudGljYXRpb24gZmFpbHVyZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIHN0cmluZyBleHBsYWluaW5nIHRoZSByZWFzb24gZm9yIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgZmFpbHVyZU1lc3NhZ2UgPSBNV0cuQXV0aGVudGljYXRpb25GYWlsdXJlTWVzc2FnZSgpXG4vLyBcIkF1dGhlbnRpY2F0aW9uIGZhaWxlZDogXCIgKyBmYWlsdXJlTWVzc2FnZVxuTVdHLkJsb2NrKFwiQXV0aGVudGljYXRpb24gZmFpbGVkOiBcIiArIGZhaWx1cmVNZXNzYWdlKSIsICJuYW1lIjogIk1XRy5BdXRoZW50aWNhdGlvbkZhaWx1cmVNZXNzYWdlICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdHJpbmcgZXhwbGFpbmluZyB3aHkgYXV0aGVudGljYXRpb24gZmFpbGVkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJHZXRzIGF1dGhlbnRpY2F0aW9uIHJlYWxtLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHJlYWxtID0gTVdHLkF1dGhlbnRpY2F0aW9uR2V0UmVhbG0oKVxuLy8gVGhlIGF1dGhlbnRpY2F0aW9uIHJlYWxtIGlzOiBcIiArIHJlYWxtXG5cbklGIHJlYWxtID09IFwiZXhhbXBsZVJlYWxtXCIgVEhFTiB7XG4gICAgTVdHLkFsbG93KFwiUmVhbG0gaXMgZXhhbXBsZVJlYWxtXCIpXG59IEVMU0Uge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBkZW5pZWQ6IEludmFsaWQgcmVhbG1cIilcbn0iLCAibmFtZSI6ICJNV0cuQXV0aGVudGljYXRpb25HZXRSZWFsbSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBhdXRoZW50aWNhdGlvbiByZWFsbSBhcyBhIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGF1dGhlbnRpY2F0aW9uIGlzIGxhbmRpbmcgb24gdGhlIHNlcnZlciwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDYWxsIHRoZSBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgYXV0aGVudGljYXRpb24gaXMgbGFuZGluZyBvbiB0aGUgc2VydmVyXG5CT09MRUFOIGlzTGFuZGluZyA9IE1XRy5BdXRoZW50aWNhdGlvbklzTGFuZGluZ09uU2VydmVyKClcblxuLy8gUGVyZm9ybSBhY3Rpb25zIGJhc2VkIG9uIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uXG5JRiBpc0xhbmRpbmcgVEhFTiB7XG4gICAgLy8gXCJBdXRoZW50aWNhdGlvbiBpcyBsYW5kaW5nIG9uIHRoZSBzZXJ2ZXIuXCJcbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGZvciB3aGVuIGF1dGhlbnRpY2F0aW9uIGlzIGxhbmRpbmcgb24gdGhlIHNlcnZlclxufSBFTFNFIHtcbiAgICAvLyBcIkF1dGhlbnRpY2F0aW9uIGlzIG5vdCBsYW5kaW5nIG9uIHRoZSBzZXJ2ZXIuXCJcbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGZvciB3aGVuIGF1dGhlbnRpY2F0aW9uIGlzIG5vdCBsYW5kaW5nIG9uIHRoZSBzZXJ2ZXJcbn0iLCAibmFtZSI6ICJNV0cuQXV0aGVudGljYXRpb25Jc0xhbmRpbmdPblNlcnZlciAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgYXV0aGVudGljYXRpb24gaXMgbGFuZGluZyBvbiB0aGUgc2VydmVyLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBhdXRoZW50aWNhdGlvbiBpcyBhIHNlcnZlciByZXF1ZXN0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIklGIE1XRy5BdXRoZW50aWNhdGlvbklzU2VydmVyUmVxdWVzdCgpIFRIRU4ge1xuICAgIC8vIFRoaXMgaXMgYSBzZXJ2ZXIgYXV0aGVudGljYXRpb24gcmVxdWVzdC5cbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGZvciBzZXJ2ZXIgYXV0aGVudGljYXRpb24gcmVxdWVzdHMgY2FuIGJlIGFkZGVkIGhlcmVcbn0gRUxTRSB7XG4gICAgLy8gVGhpcyBpcyBub3QgYSBzZXJ2ZXIgYXV0aGVudGljYXRpb24gcmVxdWVzdC5cbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGZvciBub24tc2VydmVyIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3RzIGNhbiBiZSBhZGRlZCBoZXJlXG59IiwgIm5hbWUiOiAiTVdHLkF1dGhlbnRpY2F0aW9uSXNTZXJ2ZXJSZXF1ZXN0ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBhdXRoZW50aWNhdGlvbiBpcyBhIHNlcnZlciByZXF1ZXN0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgbGFzdCBzdWNjZXNzZnVsIGF1dGhlbnRpY2F0aW9uIG1ldGhvZC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5BdXRoZW50aWNhdGlvblNldE1ldGhvZChcIkJhc2ljXCIpXG4vLyBBdXRoZW50aWNhdGlvbiBtZXRob2Qgc2V0IHRvIEJhc2ljIiwgIm5hbWUiOiAiTVdHLkF1dGhlbnRpY2F0aW9uTWV0aG9kICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgbmFtZSBvZiB0aGUgbW9zdCByZWNlbnRseSBzdWNjZXNzZnVsIGF1dGhlbnRpY2F0aW9uIG1ldGhvZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSByYXcgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbCBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgY3JlZGVudGlhbHMgPSBNV0cuQXV0aGVudGljYXRpb25SYXdDcmVkZW50aWFscygpXG4vLyBcIkF1dGhlbnRpY2F0aW9uIENyZWRlbnRpYWxzOiBcIiArIGNyZWRlbnRpYWxzIiwgIm5hbWUiOiAiTVdHLkF1dGhlbnRpY2F0aW9uUmF3Q3JlZGVudGlhbHMgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyByYXcgYXV0aGVudGljYXRpb24gdXNlciBuYW1lLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHJhd1VzZXJuYW1lID0gTVdHLkF1dGhlbnRpY2F0aW9uUmF3VXNlcm5hbWUoKVxuLy8gUmF3IFVzZXJuYW1lOiArIHJhd1VzZXJuYW1lIiwgIm5hbWUiOiAiTVdHLkF1dGhlbnRpY2F0aW9uUmF3VXNlcm5hbWUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdW5wcm9jZXNzZWQgdXNlcm5hbWUgdXNlZCBmb3IgYXV0aGVudGljYXRpb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYXV0aGVudGljYXRpb24gdG9rZW4uIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBSZXRyaWV2ZSB0aGUgYXV0aGVudGljYXRpb24gdG9rZW5cblNUUklORyBhdXRoVG9rZW4gPSBNV0cuQXV0aGVudGljYXRpb25Ub2tlbigpXG5cbi8vIEF1dGhlbnRpY2F0aW9uIFRva2VuOiBcIiArIGF1dGhUb2tlblxuXG4vLyBVc2UgdGhlIGF1dGhlbnRpY2F0aW9uIHRva2VuIGluIHNvbWUgbG9naWNcbklGIGF1dGhUb2tlbiAhPSBcIlwiIFRIRU4ge1xuICAgIC8vIEFsbG93IHRoZSBjb25uZWN0aW9uIGFuZCBsb2cgdGhlIHJ1bGVcbiAgICBNV0cuQWxsb3coXCJBdXRoZW50aWNhdGVkIHdpdGggdG9rZW5cIilcbn0gRUxTRSB7XG4gICAgLy8gQmxvY2sgdGhlIGNvbm5lY3Rpb24gaWYgbm8gdG9rZW4gaXMgcHJlc2VudFxuICAgIE1XRy5CbG9jayhcIk5vIGF1dGhlbnRpY2F0aW9uIHRva2VuIGZvdW5kXCIpXG59IiwgIm5hbWUiOiAiTVdHLkF1dGhlbnRpY2F0aW9uVG9rZW4gKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYXV0aGVudGljYXRpb24gdG9rZW4uIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGlzdCBvZiBNSVRSRSB0YWdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBhbnRpbWFsd2FyZSBzY2FuIHJlc3VsdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBNV0cuQW50aW1hbHdhcmVTZXR0aW5nXG5NV0cuQW50aW1hbHdhcmVTZXR0aW5nIGFudGltYWx3YXJlU2V0dGluZyA9IE1XRy5BbnRpbWFsd2FyZVNldHRpbmcoKVxuXG4vLyBSZXRyaWV2ZSB0aGUgTUlUUkUgdGFnc1xuVkVDVE9SPFNUUklORz4gbWl0cmVUYWdzID0gTVdHLkFWTWl0cmVUYWdzKGFudGltYWx3YXJlU2V0dGluZylcblxuLy8gQ2hlY2sgaWYgc3BlY2lmaWMgTUlUUkUgdGFnIGV4aXN0c1xuSUYgXCJUMTA1OVwiIElOIG1pdHJlVGFncyBUSEVOIHtcbiAgICAvLyBNSVRSRSB0YWcgVDEwNTkgZGV0ZWN0ZWRcbiAgICBNV0cuQmxvY2soXCJEZXRlY3RlZCBNSVRSRSB0YWcgVDEwNTlcIilcbn0gRUxTRSB7XG4gICAgLy8gTm8gcmVsZXZhbnQgTUlUUkUgdGFncyBkZXRlY3RlZFxuICAgIE1XRy5BbGxvdyhcIk5vIHJlbGV2YW50IE1JVFJFIHRhZ3NcIilcbn0iLCAibmFtZSI6ICJNV0cuQVZNaXRyZVRhZ3MgKE1XRy5BbnRpbWFsd2FyZVNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBsaXN0IG9mIE1JVFJFIHRhZ3MgZm9yIHRoZSBjdXJyZW50IGFudGltYWx3YXJlIHNjYW4gcmVzdWx0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkFudGltYWx3YXJlU2V0dGluZ2A6IFRoZSBhbnRpbWFsd2FyZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiJ9LCB7InJldHVybl90eXBlIjogIk1XRy5IZWFkZXJNYXAiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgSFRUUCBoZWFkZXJzIHRvIGJlIHVzZWQgaW4gYmxvY2sgcmVzcG9uc2VzLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgdGhlIGhlYWRlcnMgY29uZmlndXJlZCBmb3IgYmxvY2tpbmcgbmV0d29yayByZXF1ZXN0c1xuTVdHLkhlYWRlck1hcCBibG9ja0hlYWRlcnMgPSBNV0cuQmxvY2tIZWFkZXJzKClcblxuLy8gQWRkIGEgY3VzdG9tIGhlYWRlciB0byB0aGUgYmxvY2sgaGVhZGVyc1xuYmxvY2tIZWFkZXJzW1wiWC1DdXN0b20tSGVhZGVyXCJdID0gXCJCbG9ja2VkIGJ5IHBvbGljeVwiXG5cbi8vIEJsb2NrIHRoZSByZXF1ZXN0IHdpdGggYSBjdXN0b20gbWVzc2FnZVxuTVdHLkJsb2NrKFwiUmVxdWVzdCBibG9ja2VkIGR1ZSB0byBwb2xpY3kgdmlvbGF0aW9uXCIpIiwgIm5hbWUiOiAiTVdHLkJsb2NrSGVhZGVycyAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBoZWFkZXJzIGNvbmZpZ3VyZWQgZm9yIGJsb2NraW5nIG5ldHdvcmsgcmVxdWVzdHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHJlYXNvbiBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgYWN0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHJlYXNvbiA9IFwiQWNjZXNzIHRvIHRoaXMgc2l0ZSBpcyBibG9ja2VkIGR1ZSB0byBwb2xpY3kgcmVzdHJpY3Rpb25zLlwiXG4vLyBUaGUgZm9sbG93aW5nIGxpbmUgYmxvY2tzIGFjY2VzcyB3aXRoIHRoZSBnaXZlbiByZWFzb25cbi8vIE1XRy5CbG9jayhyZWFzb24pIiwgIm5hbWUiOiAiTVdHLkJsb2NrUmVhc29uICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdHJpbmcgdGhhdCBleHBsYWlucyB3aHkgYW4gYWN0aW9uIHdhcyBibG9ja2VkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBudW1lcmljIElEIG9mIHRoZSBibG9jayByZWFzb24uIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgYmxvY2tSZWFzb25JZCA9IE1XRy5CbG9ja1JlYXNvbklkKClcbi8vIFwiQmxvY2sgUmVhc29uIElEOiBcIiArIGJsb2NrUmVhc29uSWQiLCAibmFtZSI6ICJNV0cuQmxvY2tSZWFzb25JZCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1lcmljIGlkZW50aWZpZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWFzb24gZm9yIGEgYmxvY2suIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSRUFNIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGJvZHkgb2YgdGhlIGdpdmVuIHJlcXVlc3Qgb3IgcmVzcG9uc2UgYXMgYSBzdHJlYW0uIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuUmVxdWVzdFJlc3BvbnNlIHJlc3BvbnNlID0gTVdHLlVybCgpXG5TVFJFQU0gcmVzcG9uc2VCb2R5ID0gTVdHLkJvZHkocmVzcG9uc2UpXG5cbi8vIEFzc3VtaW5nIHRoZXJlJ3MgYSBmdW5jdGlvbiB0byBjb252ZXJ0IFNUUkVBTSB0byBTVFJJTkcgZm9yIGRlYnVnZ2luZ1xuU1RSSU5HIHJlc3BvbnNlQm9keVN0cmluZyA9IENvbnZlcnRTdHJlYW1Ub1N0cmluZyhyZXNwb25zZUJvZHkpXG5cbi8vIERlYnVnOiByZXNwb25zZUJvZHlTdHJpbmdcblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgU1RSRUFNIHRvIFNUUklORyAoaHlwb3RoZXRpY2FsLCBmb3IgaWxsdXN0cmF0aW9uIHB1cnBvc2VzKVxuRlVOQ1RJT04gQ29udmVydFN0cmVhbVRvU3RyaW5nKFNUUkVBTSBzdHJlYW0pIFJFVFVSTlMgU1RSSU5HIHtcbiAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBjb252ZXJ0IHN0cmVhbSB0byBzdHJpbmdcbiAgICAvLyBUaGlzIGlzIGp1c3QgYSBwbGFjZWhvbGRlciBhbmQgbWF5IG5vdCBiZSBhbiBhY3R1YWwgTU9XR0xJIGZ1bmN0aW9uXG4gICAgUkVUVVJOIFwiQ29udmVydGVkIFN0cmVhbSBDb250ZW50XCJcbn0iLCAibmFtZSI6ICJNV0cuQm9keSAoTVdHLlJlcXVlc3RSZXNwb25zZSkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYm9keSBvZiB0aGUgcmVxdWVzdCBvciByZXNwb25zZSBhcyBhIHN0cmVhbS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5SZXF1ZXN0UmVzcG9uc2VgOiBUaGUgcmVxdWVzdCBvciByZXNwb25zZSBvYmplY3QgY29udGFpbmluZyB0aGUgYm9keSB0byBiZSBzdHJlYW1lZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVtYmVkZGVkIG9iamVjdHMgd2l0aGluIGFyY2hpdmVzIG9yIGRvY3VtZW50cy4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBlbWJlZGRlZE9iamVjdENvdW50ID0gTVdHLkJvZHlBbGxNZW1iZXJDb3VudCgpXG5cbklGIGVtYmVkZGVkT2JqZWN0Q291bnQgPiAwIFRIRU4ge1xuICAgIC8vIE51bWJlciBvZiBlbWJlZGRlZCBvYmplY3RzOiBcIiArIGVtYmVkZGVkT2JqZWN0Q291bnRcbn0gRUxTRSB7XG4gICAgLy8gTm8gZW1iZWRkZWQgb2JqZWN0cyBmb3VuZC5cbn0iLCAibmFtZSI6ICJNV0cuQm9keUFsbE1lbWJlckNvdW50ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBlbWJlZGRlZCBvYmplY3RzIHdpdGhpbiBhcmNoaXZlcyBvciBkb2N1bWVudHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbmFtZXMgb2YgYWxsIG1lbWJlcnMgaW4gdGhlIGN1cnJlbnQgYXJjaGl2ZSBvciBkb2N1bWVudC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxTVFJJTkc+IG1lbWJlck5hbWVzID0gTVdHLkJvZHlBbGxNZW1iZXJOYW1lcygpXG4vLyBNZW1iZXJzIGluIHRoZSBhcmNoaXZlOiAgKyBtZW1iZXJOYW1lcyIsICJuYW1lIjogIk1XRy5Cb2R5QWxsTWVtYmVyTmFtZXMgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGxpc3Qgb2YgYWxsIG1lbWJlciBuYW1lcyBpbiB0aGUgY3VycmVudCBhcmNoaXZlIG9yIGRvY3VtZW50LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgcG9ydGlvbiBvZiB0aGUgYm9keSBhcyBhIG51bWVyaWMgdmFsdWUgYnkgcmVhZGluZyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHNwZWNpZmllZCBvZmZzZXQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uLCBsZW5ndGgsIGFuZCBlbmRpYW5uZXNzXG5OVU1CRVIgc3RhcnRQb3NpdGlvbiA9IDBcbk5VTUJFUiBsZW5ndGggPSA0XG5CT09MRUFOIGlzTGl0dGxlRW5kaWFuID0gVFJVRVxuXG4vLyBFeHRyYWN0IHRoZSBudW1iZXIgZnJvbSB0aGUgYm9keVxuTlVNQkVSIGV4dHJhY3RlZE51bWJlciA9IE1XRy5Cb2R5QXNOdW1iZXIoc3RhcnRQb3NpdGlvbiwgbGVuZ3RoLCBpc0xpdHRsZUVuZGlhbilcblxuLy8gUHJpbnQgdGhlIGV4dHJhY3RlZCBudW1iZXIgdG8gdGhlIGRlYnVnIGNvbnNvbGVcbi8vIFwiRXh0cmFjdGVkIE51bWJlcjogXCIgKyBleHRyYWN0ZWROdW1iZXIiLCAibmFtZSI6ICJNV0cuQm9keUFzTnVtYmVyIChOVU1CRVIsIE5VTUJFUiwgQk9PTEVBTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHBvcnRpb24gb2YgdGhlIGJvZHkgaW50ZXJwcmV0ZWQgYXMgYSBudW1lcmljIHZhbHVlLCByZWFkIGZyb20gdGhlIGdpdmVuIGJ5dGUgb2Zmc2V0IGFuZCBsZW5ndGguIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBOVU1CRVJgOiBUaGUgc3RhcnRpbmcgcG9zaXRpb24gaW4gdGhlIGJvZHkuXG4yLiBgTlVNQkVSYDogVGhlIGxlbmd0aCB0byByZWFkLlxuMy4gYEJPT0xFQU5gOiBgVFJVRWAgZm9yIGxpdHRsZS1lbmRpYW4gYnl0ZSBvcmRlci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIHBvcnRpb24gb2YgdGhlIGJvZHkgYXMgYSBzdHJpbmcsIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBieXRlIG9mZnNldCBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiBieXRlcy4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbnMgZm9yIHRoZSBzdWJzdHJpbmdcbk5VTUJFUiBzdGFydFBvc2l0aW9uID0gMTBcbk5VTUJFUiBlbmRQb3NpdGlvbiA9IDUwXG5cbi8vIFVzZSB0aGUgTVdHLkJvZHlBc1N0cmluZyBmdW5jdGlvbiB0byBnZXQgdGhlIHN1YnN0cmluZ1xuU1RSSU5HIGJvZHlTdWJzdHJpbmcgPSBNV0cuQm9keUFzU3RyaW5nKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKVxuXG4vLyBFeHRyYWN0ZWQgU3Vic3RyaW5nOiBcIiArIGJvZHlTdWJzdHJpbmciLCAibmFtZSI6ICJNV0cuQm9keUFzU3RyaW5nIChOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc3Vic3RyaW5nIG9mIHRoZSBib2R5IHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBvZmZzZXQgd2l0aCB0aGUgZ2l2ZW4gbGVuZ3RoLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIG9mZnNldCBpbiB0aGUgYm9keS5cbjIuIGBOVU1CRVJgOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHJldHVybi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY2xhc3MgSUQgZm9yIGVtYmVkZGVkIE1pY3Jvc29mdCBXaW5kb3dzIG9iamVjdHMuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgY2xhc3NJRCA9IE1XRy5Cb2R5Q2xhc3NJRCgpXG4vLyBUaGUgY2xhc3MgSUQgb2YgdGhlIGVtYmVkZGVkIE1pY3Jvc29mdCBXaW5kb3dzIG9iamVjdCBpczogXCIgKyBjbGFzc0lEXG5cbklGIGNsYXNzSUQgPT0gXCJkZXNpcmVkX2NsYXNzX2lkXCIgVEhFTiB7XG4gICAgTVdHLkFsbG93KFwiQ2xhc3MgSUQgbWF0Y2hlZFwiKVxufSBFTFNFIHtcbiAgICBNV0cuQmxvY2soXCJDbGFzcyBJRCBkaWQgbm90IG1hdGNoXCIpXG59IiwgIm5hbWUiOiAiTVdHLkJvZHlDbGFzc0lEICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNsYXNzIElEIG9mIGVtYmVkZGVkIE1pY3Jvc29mdCBXaW5kb3dzIG9iamVjdHMgYXMgYSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiREFUQVJFRiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjb21wbGV0ZSBib2R5IG9mIHRoZSBnaXZlbiByZXF1ZXN0IG9yIHJlc3BvbnNlIGFzIGEgYERBVEFSRUZgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgdGhlIGJvZHkgZGF0YSBvZiB0aGUgY3VycmVudCByZXNwb25zZVxuREFUQVJFRiBib2R5RGF0YSA9IE1XRy5Cb2R5RGF0YShXZWIuUmVzcG9uc2UpXG5cbi8vIENvbnZlcnQgdGhlIERBVEFSRUYgdG8gYSBTVFJJTkcgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlc1xuU1RSSU5HIGJvZHlTdHJpbmcgPSBib2R5RGF0YS5Ub1N0cmluZygpXG5cbi8vIEJvZHkgRGF0YTogYm9keVN0cmluZyIsICJuYW1lIjogIk1XRy5Cb2R5RGF0YSAoTVdHLlJlcXVlc3RSZXNwb25zZSkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYm9keSBhcyBhIGBEQVRBUkVGYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5SZXF1ZXN0UmVzcG9uc2VgOiBUaGUgcmVxdWVzdCBvciByZXNwb25zZSBvYmplY3QgZnJvbSB3aGljaCB0byByZXRyaWV2ZSB0aGUgYm9keS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBib2R5IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgcGF0dGVybiBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBib2R5SW5kZXggPSAwXG5TVFJJTkcgcGF0dGVybiA9IFwiZXhhbXBsZVBhdHRlcm5cIlxuXG5JRiBNV0cuQm9keUVxdWFsc1BhdHRlcm4oYm9keUluZGV4LCBwYXR0ZXJuKSBUSEVOIHtcbiAgICAvLyBQYXR0ZXJuIG1hdGNoZWQgaW4gdGhlIGJvZHkgb2YgdGhlIHJlc3BvbnNlXG4gICAgTVdHLkJsb2NrKFwiQmxvY2tlZCBkdWUgdG8gcGF0dGVybiBtYXRjaCBpbiByZXNwb25zZSBib2R5XCIpXG59IEVMU0Uge1xuICAgIC8vIFBhdHRlcm4gbm90IGZvdW5kIGluIHRoZSBib2R5IG9mIHRoZSByZXNwb25zZVxuICAgIE1XRy5BbGxvdyhcIk5vIHBhdHRlcm4gbWF0Y2ggZm91bmRcIilcbn0iLCAibmFtZSI6ICJNV0cuQm9keUVxdWFsc1BhdHRlcm4gKE5VTUJFUiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgYm9keSBjb250YWlucyB0aGUgc3BlY2lmaWVkIHBhdHRlcm4gYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBOVU1CRVJgOiBUaGUgcG9zaXRpb24gaW4gdGhlIGJvZHkgdG8gY2hlY2sgZm9yIHRoZSBwYXR0ZXJuLlxuMi4gYFNUUklOR2A6IFRoZSBwYXR0ZXJuIHRvIG1hdGNoLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBleHRyYWN0ZWQgdGV4dCBmcm9tIHRoZSBjdXJyZW50IG9iamVjdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEV4dHJhY3QgdGV4dCBmcm9tIHRoZSBjdXJyZW50IG9iamVjdFxuU1RSSU5HIGV4dHJhY3RlZFRleHQgPSBNV0cuQm9keUV4dHJhY3RlZFRleHQoKVxuXG4vLyBFeHRyYWN0ZWQgVGV4dDogXCIgKyBleHRyYWN0ZWRUZXh0XG5cbi8vIENoZWNrIGlmIHRoZSBleHRyYWN0ZWQgdGV4dCBjb250YWlucyBhIHNwZWNpZmljIGtleXdvcmRcbklGIGV4dHJhY3RlZFRleHQgQ09OVEFJTlMgXCJjb25maWRlbnRpYWxcIiBUSEVOIHtcbiAgICAvLyBCbG9jayB0aGUgY29ubmVjdGlvbiBpZiB0aGUga2V5d29yZCBpcyBmb3VuZFxuICAgIE1XRy5CbG9jayhcIkJsb2NrZWQgZHVlIHRvIHByZXNlbmNlIG9mIGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvblwiKVxufSBFTFNFIHtcbiAgICAvLyBBbGxvdyB0aGUgY29ubmVjdGlvbiBpZiB0aGUga2V5d29yZCBpcyBub3QgZm91bmRcbiAgICBNV0cuQWxsb3coXCJObyBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24gZm91bmRcIilcbn0iLCAibmFtZSI6ICJNV0cuQm9keUV4dHJhY3RlZFRleHQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdGV4dCBleHRyYWN0ZWQgZnJvbSB0aGUgY3VycmVudCBvYmplY3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGZpbGVuYW1lIG9mIHRoZSBib2R5LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgdGhlIGZpbGVuYW1lIG9mIHRoZSBib2R5XG5TVFJJTkcgYm9keUZpbGVOYW1lID0gTVdHLkJvZHlGaWxlTmFtZSgpXG5cbi8vIFRoZSBmaWxlbmFtZSBvZiB0aGUgYm9keSBpczogXCIgKyBib2R5RmlsZU5hbWVcbi8vIEZvcm1lcmx5OiBERUJVRyhcIlRoZSBmaWxlbmFtZSBvZiB0aGUgYm9keSBpczogXCIgKyBib2R5RmlsZU5hbWUpIiwgIm5hbWUiOiAiTVdHLkJvZHlGaWxlTmFtZSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBmaWxlbmFtZSBvZiB0aGUgYm9keSBhcyBhIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZnVsbCBmaWxlbmFtZSBvZiB0aGUgYm9keSwgaW5jbHVkaW5nIHRoZSBwYXJlbnQgYXJjaGl2ZSB3aXRoIGVhY2ggZmlsZSBuYW1lIHNlcGFyYXRlZCBieSB2ZXJ0aWNhbCBwaXBlcy4gRm9yIGV4YW1wbGUsIGluZGV4Lmh0bWwgaW5zaWRlIG9mIHh5ei56aXAgd291bGQgYmUgcmVwcmVzZW50ZWQgYXMgXHUyMDFjeHl6LnppcHxpbmRleC5odG1sXHUyMDFkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgdGhlIGZ1bGwgZmlsZSBuYW1lIG9mIHRoZSBib2R5IGNvbnRlbnRcblNUUklORyBmaWxlTmFtZSA9IE1XRy5Cb2R5RnVsbEZpbGVOYW1lKClcblxuLy8gVGhlIGZ1bGwgZmlsZSBuYW1lIGlzOiBcIiArIGZpbGVOYW1lXG5cbi8vIENoZWNrIGlmIHRoZSBmaWxlIG5hbWUgY29udGFpbnMgYSBzcGVjaWZpYyBleHRlbnNpb25cbklGIGZpbGVOYW1lIENPTlRBSU5TIFwiLmV4ZVwiIFRIRU4ge1xuICAgIC8vIEJsb2NrIHRoZSByZXF1ZXN0IGlmIHRoZSBmaWxlIGlzIGFuIGV4ZWN1dGFibGVcbiAgICBNV0cuQmxvY2soXCJFeGVjdXRhYmxlIGZpbGVzIGFyZSBub3QgYWxsb3dlZC5cIilcbn0gRUxTRSB7XG4gICAgLy8gQWxsb3cgdGhlIHJlcXVlc3QgaWYgdGhlIGZpbGUgaXMgbm90IGFuIGV4ZWN1dGFibGVcbiAgICBNV0cuQWxsb3coXCJGaWxlIGlzIGFsbG93ZWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLkJvZHlGdWxsRmlsZU5hbWUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZnVsbCBmaWxlbmFtZSBvZiB0aGUgYm9keSBhcyBhIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgU0hBMSBoYXNoIG9mIHRoZSBib2R5LiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGhhc2hBbGdvcml0aG0gPSBcIlNIQS0yNTZcIlxuU1RSSU5HIGJvZHlIYXNoID0gTVdHLkJvZHlIYXNoKGhhc2hBbGdvcml0aG0pXG4vLyBUaGUgaGFzaCBvZiB0aGUgYm9keSB1c2luZyBTSEEtMjU2IGlzOiBib2R5SGFzaCIsICJuYW1lIjogIk1XRy5Cb2R5SGFzaCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBTSEExIGhhc2ggb2YgdGhlIGJvZHkuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGhhc2ggb2YgdGhlIGJvZHkuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgaGFzaEFsZ29yaXRobSA9IFwiU0hBLTI1NlwiXG5TVFJJTkcgYm9keUhhc2ggPSBNV0cuQm9keUhhc2goaGFzaEFsZ29yaXRobSlcbi8vIFRoZSBoYXNoIG9mIHRoZSBib2R5IHVzaW5nIFNIQS0yNTYgaXM6IGJvZHlIYXNoIiwgIm5hbWUiOiAiTVdHLkJvZHlIYXNoIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgaGFzaCBvZiBib2R5IHVzaW5nIGdpdmVuIGhhc2ggYWxnb3JpdGhtLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGhhc2hpbmcgYWxnb3JpdGhtIHRvIHVzZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBzcGVjaWZpZWQgTUlNRSBoZWFkZXIgaXMgcHJlc2VudCBpbiB0aGUgYm9keSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgbWltZUhlYWRlciA9IFwiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXCJcblxuSUYgTVdHLkJvZHlIYXNNaW1lSGVhZGVyKG1pbWVIZWFkZXIpIFRIRU4ge1xuICAgIC8vIE1JTUUgaGVhZGVyIGZvdW5kOiBcIiArIG1pbWVIZWFkZXJcbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUgaWYgdGhlIE1JTUUgaGVhZGVyIGlzIGZvdW5kXG59IEVMU0Uge1xuICAgIC8vIE1JTUUgaGVhZGVyIG5vdCBmb3VuZDogXCIgKyBtaW1lSGVhZGVyXG4gICAgLy8gQWN0aW9ucyB0byB0YWtlIGlmIHRoZSBNSU1FIGhlYWRlciBpcyBub3QgZm91bmRcbn0iLCAibmFtZSI6ICJNV0cuQm9keUhhc01pbWVIZWFkZXIgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHNwZWNpZmllZCBNSU1FIGhlYWRlciBpcyBmb3VuZCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgbmFtZSBvZiB0aGUgTUlNRSBoZWFkZXIgdG8gY2hlY2sgZm9yLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHNwZWNpZmllZCBNSU1FIGhlYWRlciBjb250YWlucyB0aGUgZ2l2ZW4gcGFyYW1ldGVyLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBoZWFkZXJOYW1lID0gXCJDb250ZW50LVR5cGVcIlxuU1RSSU5HIGhlYWRlclZhbHVlID0gXCJ0ZXh0L2h0bWxcIlxuXG5JRiBNV0cuQm9keUhhc01pbWVIZWFkZXJQYXJhbWV0ZXIoaGVhZGVyTmFtZSwgaGVhZGVyVmFsdWUpIFRIRU4ge1xuICAgIC8vIE1JTUUgaGVhZGVyIHBhcmFtZXRlciBmb3VuZFxuICAgIE1XRy5BbGxvdyhcIk1JTUUgaGVhZGVyIHBhcmFtZXRlciBmb3VuZFwiKVxufSBFTFNFIHtcbiAgICAvLyBNSU1FIGhlYWRlciBwYXJhbWV0ZXIgbm90IGZvdW5kXG4gICAgTVdHLkJsb2NrKFwiTUlNRSBoZWFkZXIgcGFyYW1ldGVyIG5vdCBmb3VuZFwiKVxufSIsICJuYW1lIjogIk1XRy5Cb2R5SGFzTWltZUhlYWRlclBhcmFtZXRlciAoU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBNSU1FIGhlYWRlciBjb250YWlucyB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlciwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgbmFtZSBvZiB0aGUgTUlNRSBoZWFkZXIgdG8gY2hlY2suXG4yLiBgU1RSSU5HYDogVGhlIHBhcmFtZXRlciB0byBmaW5kIHdpdGhpbiB0aGUgTUlNRSBoZWFkZXIuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgYm9keSBpcyBkZXRlY3RlZCB0byBiZSBpbmZlY3RlZCB3aXRoIGEgdmlydXMgdXNpbmcgdGhlIEdBTSBtZXRob2QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLkFudGltYWx3YXJlU2V0dGluZyBhbnRpbWFsd2FyZVNldHRpbmdzID0gW1lvdXJBbnRpbWFsd2FyZVNldHRpbmdzXVxuXG5JRiBNV0cuQm9keUluZmVjdGVkKGFudGltYWx3YXJlU2V0dGluZ3MpIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIlZpcnVzIGRldGVjdGVkIGluIHRoZSBib2R5IG9mIHRoZSByZXF1ZXN0L3Jlc3BvbnNlLlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJObyB2aXJ1cyBkZXRlY3RlZC5cIilcbn0iLCAibmFtZSI6ICJNV0cuQm9keUluZmVjdGVkIChNV0cuQW50aW1hbHdhcmVTZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgYm9keSBpcyBkZXRlY3RlZCB0byBiZSBpbmZlY3RlZCB3aXRoIGEgdmlydXMgdXNpbmcgdGhlIEdBTSBtZXRob2QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkFudGltYWx3YXJlU2V0dGluZ2A6IFRoZSBhbnRpbWFsd2FyZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGJvZHkgaXMgZGV0ZWN0ZWQgdG8gYmUgaW5mZWN0ZWQgd2l0aCBhIHZpcnVzLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5JbnRlcm5hbFNldHRpbmcgc2V0dGluZ3MgPSAvLyBJbml0aWFsaXplIG9yIG9idGFpbiB0aGUgbmVjZXNzYXJ5IHNldHRpbmdzIG9iamVjdFxuXG5JRiBNV0cuQm9keUluZmVjdGVkKHNldHRpbmdzKSBUSEVOIHtcbiAgICAvLyBWaXJ1cyBkZXRlY3RlZCBpbiB0aGUgYm9keS4gQmxvY2tpbmcgdGhlIHJlcXVlc3QvcmVzcG9uc2UuXG4gICAgTVdHLkJsb2NrKFwiVGhlIGNvbnRlbnQgaXMgaW5mZWN0ZWQgd2l0aCBhIHZpcnVzLlwiKVxufSBFTFNFIHtcbiAgICAvLyBObyB2aXJ1cyBkZXRlY3RlZCBpbiB0aGUgYm9keS4gQWxsb3dpbmcgdGhlIHJlcXVlc3QvcmVzcG9uc2UuXG4gICAgTVdHLkFsbG93KFwiTm8gdmlydXMgZGV0ZWN0ZWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLkJvZHlJbmZlY3RlZCAoTVdHLkludGVybmFsU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGJvZHkgY29udGFpbnMgYSB2aXJ1cyBpbmZlY3Rpb24sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBpbnRlcm5hbCBjb25maWd1cmF0aW9uIHNldHRpbmdzIHVzZWQgdG8gY2hlY2sgZm9yIHZpcnVzIGluZmVjdGlvbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IGJvZHkgaXMgZmxhZ2dlZCBhcyBpbmZlY3RlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIElWWCBDbG91ZCBzZXR0aW5ncy4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5JVlhDbG91ZFNldHRpbmcgaXZ4U2V0dGluZ3MgPSBbXCJEZWZhdWx0IElWWCBDbG91ZCBTZXR0aW5nc1wiXVxuXG5JRiBNV0cuQm9keUluZmVjdGVkKGl2eFNldHRpbmdzKSBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJCbG9ja2VkIHVwbG9hZCBkdWUgdG8gaW5mZWN0ZWQgZmlsZSBjb250ZW50LlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJGaWxlIHBhc3NlZCBJVlggQ2xvdWQgbWFsd2FyZSBpbnNwZWN0aW9uLlwiKVxufSIsICJuYW1lIjogIk1XRy5Cb2R5SW5mZWN0ZWQgKE1XRy5JVlhDbG91ZFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IGJvZHkgaXMgZmxhZ2dlZCBhcyBpbmZlY3RlZCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSVZYQ2xvdWRTZXR0aW5nYDogVGhlIElWWCBDbG91ZCBzZXR0aW5ncyBvYmplY3QgdXNlZCB0byBkZXRlcm1pbmUgaW5mZWN0aW9uIHN0YXRlLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGJvZHkgaXMgaW5mZWN0ZWQgYXMgZGV0ZXJtaW5lZCBieSBBZHZhbmNlZCBUaHJlYXQgRGV0ZWN0aW9uIChBVEQpLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5NQVREU2V0dGluZyBhdGRTZXR0aW5ncyA9IFtcIkRlZmF1bHQgQVREIFNldHRpbmdzXCJdXG5cbklGIE1XRy5Cb2R5SW5mZWN0ZWQoYXRkU2V0dGluZ3MpIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIlRoZSBjb250ZW50IGlzIGluZmVjdGVkIHdpdGggYSB2aXJ1cy5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiQ29udGVudCBpcyBjbGVhbi5cIilcbn0iLCAibmFtZSI6ICJNV0cuQm9keUluZmVjdGVkIChNV0cuTUFURFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBib2R5IGlzIGluZmVjdGVkIGFzIGRldGVybWluZWQgYnkgQWR2YW5jZWQgVGhyZWF0IERldGVjdGlvbiAoQVREKSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuTUFURFNldHRpbmdgOiBUaGUgQWR2YW5jZWQgVGhyZWF0IERldGVjdGlvbiAoQVREKSBzZXR0aW5ncyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgYm9keSBpcyB2aXJ1cyBpbmZlY3RlZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IG9iamVjdCBoYXMgYWNjZXNzIHBlcm1pc3Npb24gcmVzdHJpY3Rpb25zIChQREYpLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIklGIE1XRy5Cb2R5SXNBY2Nlc3NSZXN0cmljdGVkT2JqZWN0KCkgVEhFTiB7XG4gICAgLy8gQWNjZXNzIHJlc3RyaWN0aW9uIGRldGVjdGVkIG9uIHRoZSBvYmplY3QuXG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIHRoaXMgZG9jdW1lbnQgaXMgcmVzdHJpY3RlZCBkdWUgdG8gcGVybWlzc2lvbiBzZXR0aW5ncy5cIilcbn0gRUxTRSB7XG4gICAgLy8gTm8gYWNjZXNzIHJlc3RyaWN0aW9ucyBkZXRlY3RlZCBvbiB0aGUgb2JqZWN0LlxuICAgIE1XRy5BbGxvdyhcIk5vIGFjY2VzcyByZXN0cmljdGlvbnNcIilcbn0iLCAibmFtZSI6ICJNV0cuQm9keUlzQWNjZXNzUmVzdHJpY3RlZE9iamVjdCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgY3VycmVudCBvYmplY3QgaGFzIGFjY2VzcyBwZXJtaXNzaW9uIHJlc3RyaWN0aW9ucyAoUERGKSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgYm9keSBpcyBjb21wbGV0ZSB3aXRoaW4gdGhlIGdpdmVuIHRpbWVvdXQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIHRpbWVvdXQgPSAxMCAgLy8gVGltZW91dCBwZXJpb2QgaW4gc2Vjb25kc1xuXG5JRiBNV0cuQm9keUlzQ29tcGxldGVXaXRoVGltZW91dCh0aW1lb3V0KSBUSEVOIHtcbiAgICAvLyBCb2R5IGlzIGNvbXBsZXRlIHdpdGhpbiB0aGUgdGltZW91dCBwZXJpb2QuXG4gICAgTVdHLkFsbG93KFwiQm9keUNvbXBsZXRlXCIpXG59IEVMU0Uge1xuICAgIC8vIEJvZHkgaXMgbm90IGNvbXBsZXRlIHdpdGhpbiB0aGUgdGltZW91dCBwZXJpb2QuXG4gICAgTVdHLkJsb2NrKFwiUmVxdWVzdCBib2R5IG5vdCBjb21wbGV0ZSB3aXRoaW4gdGltZW91dC5cIilcbn0iLCAibmFtZSI6ICJNV0cuQm9keUlzQ29tcGxldGVXaXRoVGltZW91dCAoTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgYm9keSBpcyBjb21wbGV0ZSB3aXRoaW4gdGhlIGdpdmVuIHRpbWVvdXQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTlVNQkVSYDogVGhlIHRpbWVvdXQgdmFsdWUgaW4gbWlsbGlzZWNvbmRzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgb2JqZWN0IGlzIGRldGVjdGVkIHRvIGJlIGNvcnJ1cHRlZCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBNV0cuQm9keUlzQ29ycnVwdGVkT2JqZWN0KCkgVEhFTiB7XG4gICAgLy8gVGhlIG9iamVjdCBpcyBjb3JydXB0ZWQuXG4gICAgTVdHLkJsb2NrKFwiVGhlIG9iamVjdCBpcyBjb3JydXB0ZWQgYW5kIGNhbm5vdCBiZSBwcm9jZXNzZWQuXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBvYmplY3QgaXMgbm90IGNvcnJ1cHRlZC5cbiAgICBNV0cuQWxsb3coXCJPYmplY3QgaXMgY2xlYW4gYW5kIGFsbG93ZWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLkJvZHlJc0NvcnJ1cHRlZE9iamVjdCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgY3VycmVudCBvYmplY3QgaXMgZGV0ZWN0ZWQgdG8gYmUgY29ycnVwdGVkLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IG9iamVjdCBpcyBlbmNyeXB0ZWQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiSUYgTVdHLkJvZHlJc0VuY3J5cHRlZE9iamVjdCgpIFRIRU4ge1xuICAgIC8vIFRoZSBib2R5IG9mIHRoZSByZXNwb25zZSBpcyBlbmNyeXB0ZWQuXG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIGVuY3J5cHRlZCBjb250ZW50IGlzIGJsb2NrZWQuXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBib2R5IG9mIHRoZSByZXNwb25zZSBpcyBub3QgZW5jcnlwdGVkLlxuICAgIE1XRy5BbGxvdyhcIkNvbnRlbnQgaXMgYWxsb3dlZC5cIilcbn0iLCAibmFtZSI6ICJNV0cuQm9keUlzRW5jcnlwdGVkT2JqZWN0ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IG9iamVjdCBpcyBlbmNyeXB0ZWQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgYm9keSBoYXMgYmVlbiBtb2RpZmllZCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBNV0cuQm9keUlzTW9kaWZpZWQoKSBUSEVOIHtcbiAgICAvLyBUaGUgYm9keSBoYXMgYmVlbiBtb2RpZmllZC5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIGJvZHkgaGFzIG5vdCBiZWVuIG1vZGlmaWVkLlxufSIsICJuYW1lIjogIk1XRy5Cb2R5SXNNb2RpZmllZCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgY3VycmVudCBib2R5IGhhcyBiZWVuIG1vZGlmaWVkLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IG9iamVjdCBpcyBhIG11bHRpcGFydCBhcmNoaXZlLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIklGIE1XRy5Cb2R5SXNNdWx0aXBhcnRPYmplY3QoKSBUSEVOIHtcbiAgICAvLyBUaGUgY3VycmVudCBvYmplY3QgaXMgYSBtdWx0aXBhcnQgYXJjaGl2ZS5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUgaWYgdGhlIG9iamVjdCBpcyBhIG11bHRpcGFydCBhcmNoaXZlXG59IEVMU0Uge1xuICAgIC8vIFRoZSBjdXJyZW50IG9iamVjdCBpcyBub3QgYSBtdWx0aXBhcnQgYXJjaGl2ZS5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUgaWYgdGhlIG9iamVjdCBpcyBub3QgYSBtdWx0aXBhcnQgYXJjaGl2ZVxufSIsICJuYW1lIjogIk1XRy5Cb2R5SXNNdWx0aXBhcnRPYmplY3QgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgb2JqZWN0IGlzIGEgbXVsdGlwYXJ0IGFyY2hpdmUsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIG9wZW5lciBjYW4gZXh0cmFjdCBkYXRhIGZyb20gdGhlIGN1cnJlbnQgZmlsZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBNV0cuQm9keUlzU3VwcG9ydGVkQnlPcGVuZXIoKSBUSEVOIHtcbiAgICAvLyBUaGUgYm9keSBpcyBzdXBwb3J0ZWQgYnkgdGhlIG9wZW5lci5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIGJvZHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgb3BlbmVyLlxuICAgIE1XRy5CbG9jayhcIlVuc3VwcG9ydGVkIGJvZHkgZm9ybWF0XCIpXG59IiwgIm5hbWUiOiAiTVdHLkJvZHlJc1N1cHBvcnRlZEJ5T3BlbmVyICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBvcGVuZXIgY2FuIGV4dHJhY3QgZGF0YSBmcm9tIHRoZSBjdXJyZW50IGZpbGUsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk1lZGlhVHlwZSIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBNSU1FIHR5cGUgZXh0cmFjdGVkIGZyb20gdGhlIGNvbnRlbnQtdHlwZSBoZWFkZXIgb2YgdGhlIGN1cnJlbnQgYm9keS4iLCAiY29kZV9leGFtcGxlIjogIk1lZGlhVHlwZSBtZWRpYVR5cGUgPSBNV0cuQm9keU1lZGlhVHlwZUZyb21IZWFkZXIoKVxuLy8gVGhlIG1lZGlhIHR5cGUgb2YgdGhlIGN1cnJlbnQgYm9keSBpczogXCIgKyBtZWRpYVR5cGVcblxuSUYgbWVkaWFUeXBlID09IFwiYXBwbGljYXRpb24vanNvblwiIFRIRU4ge1xuICAgIC8vIFRoZSBjb250ZW50IGlzIEpTT04uXG59IEVMU0Uge1xuICAgIC8vIFRoZSBjb250ZW50IGlzIG5vdCBKU09OLlxufSIsICJuYW1lIjogIk1XRy5Cb2R5TWVkaWFUeXBlRnJvbUhlYWRlciAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBNSU1FIHR5cGUgZXh0cmFjdGVkIGZyb20gdGhlIGNvbnRlbnQtdHlwZSBoZWFkZXIgb2YgdGhlIGN1cnJlbnQgYm9keS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBNSU1FIGhlYWRlciBwYXJhbWV0ZXIuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdGhlIE1JTUUgaGVhZGVyIGFuZCBwYXJhbWV0ZXIgeW91IHdhbnQgdG8gY2hlY2tcblNUUklORyBtaW1lSGVhZGVyID0gXCJDb250ZW50LVR5cGVcIlxuU1RSSU5HIHBhcmFtZXRlciA9IFwiY2hhcnNldFwiXG5cbi8vIFJldHJpZXZlIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlciBmcm9tIHRoZSBNSU1FIGhlYWRlclxuU1RSSU5HIGNoYXJzZXRWYWx1ZSA9IE1XRy5Cb2R5TWltZUhlYWRlclBhcmFtZXRlclZhbHVlKG1pbWVIZWFkZXIsIHBhcmFtZXRlcilcblxuLy8gQ2hhcnNldCB2YWx1ZTogXCIgKyBjaGFyc2V0VmFsdWVcblxuLy8gUGVyZm9ybSBhbiBhY3Rpb24gYmFzZWQgb24gdGhlIHJldHJpZXZlZCB2YWx1ZVxuSUYgY2hhcnNldFZhbHVlID09IFwidXRmLThcIiBUSEVOIHtcbiAgICAvLyBUaGUgY2hhcnNldCBpcyBVVEYtOFxufSBFTFNFIHtcbiAgICAvLyBUaGUgY2hhcnNldCBpcyBub3QgVVRGLThcbn0iLCAibmFtZSI6ICJNV0cuQm9keU1pbWVIZWFkZXJQYXJhbWV0ZXJWYWx1ZSAoU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgTUlNRSBoZWFkZXIgcGFyYW1ldGVyIGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIE1JTUUgaGVhZGVyLlxuMi4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgd2l0aGluIHRoZSBNSU1FIGhlYWRlci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIE1JTUUgaGVhZGVyIGluIHRoZSBib2R5LiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIG1pbWVIZWFkZXIgPSBcIkNvbnRlbnQtVHlwZVwiXG5TVFJJTkcgaGVhZGVyVmFsdWUgPSBNV0cuQm9keU1pbWVIZWFkZXJWYWx1ZShtaW1lSGVhZGVyKVxuLy8gVGhlIE1JTUUgaGVhZGVyIHZhbHVlIGZvciBDb250ZW50LVR5cGUgaXM6IGhlYWRlclZhbHVlIiwgIm5hbWUiOiAiTVdHLkJvZHlNaW1lSGVhZGVyVmFsdWUgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIE1JTUUgaGVhZGVyIGluIHRoZSBib2R5LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIE1JTUUgaGVhZGVyIHdob3NlIHZhbHVlIHRvIHJldHJpZXZlLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjdXJyZW50IGFyY2hpdmUgbGV2ZWwuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgbmVzdGVkTGV2ZWwgPSBNV0cuQm9keU5lc3RlZEFyY2hpdmVMZXZlbCgpXG5cbklGIG5lc3RlZExldmVsID4gMyBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJUaGUgYXJjaGl2ZSBpcyBuZXN0ZWQgdG9vIGRlZXBseS5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiQXJjaGl2ZSBuZXN0aW5nIGxldmVsIGlzIGFjY2VwdGFibGUuXCIpXG59IiwgIm5hbWUiOiAiTVdHLkJvZHlOZXN0ZWRBcmNoaXZlTGV2ZWwgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY3VycmVudCBsZXZlbCBvZiB0aGUgbmVzdGVkIGFyY2hpdmUgYXMgYSBudW1lcmljIHZhbHVlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgZ2l2ZW4gcGF0dGVybiBpbiB0aGUgYm9keSwgc3RhcnRpbmcgZnJvbSB0aGUgc3BlY2lmaWVkIG9mZnNldCB3aXRoaW4gdGhlIGdpdmVuIHNlYXJjaCByYW5nZS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBwYXR0ZXJuID0gXCJleGFtcGxlUGF0dGVyblwiXG5OVU1CRVIgc3RhcnRQb3NpdGlvbiA9IDBcbk5VTUJFUiBsZW5ndGhUb1NlYXJjaCA9IDEwMDBcblxuTlVNQkVSIHBvc2l0aW9uID0gTVdHLkJvZHlQb3NpdGlvbk9mUGF0dGVybihwYXR0ZXJuLCBzdGFydFBvc2l0aW9uLCBsZW5ndGhUb1NlYXJjaClcblxuSUYgcG9zaXRpb24gPj0gMCBUSEVOIHtcbiAgICAvLyBQYXR0ZXJuIGZvdW5kIGF0IHBvc2l0aW9uOiBcIiArIHBvc2l0aW9uXG4gICAgTVdHLkJsb2NrKFwiUGF0dGVybiBmb3VuZCBpbiByZXF1ZXN0IGJvZHlcIilcbn0gRUxTRSB7XG4gICAgLy8gUGF0dGVybiBub3QgZm91bmQgaW4gdGhlIHNwZWNpZmllZCByYW5nZVxuICAgIE1XRy5BbGxvdyhcIlBhdHRlcm4gbm90IGZvdW5kXCIpXG59IiwgIm5hbWUiOiAiTVdHLkJvZHlQb3NpdGlvbk9mUGF0dGVybiAoU1RSSU5HLCBOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIGdpdmVuIHN0cmluZyBpbiB0aGUgYm9keS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBwYXR0ZXJuIHRvIHNlYXJjaCBmb3IuXG4yLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGluIHRoZSBib2R5LlxuMy4gYE5VTUJFUmA6IFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2VhcmNoLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIEdUSSBjbG91ZCBzZXJ2aWNlIHJhdGVzIHRoZSBjdXJyZW50IGJvZHkgYXMgYSB2aXJ1cywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVVJMIHVybCA9IE1XRy5VcmwoKVxuU1RSSU5HIHJlcHV0YXRpb24gPSBHZXRSZXB1dGF0aW9uKHVybCkgIC8vIEFzc3VtaW5nIEdldFJlcHV0YXRpb24gaXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlcHV0YXRpb24gb2YgdGhlIFVSTFxuXG5JRiByZXB1dGF0aW9uID09IFwiYmFkXCIgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQ29udGVudCBibG9ja2VkIGR1ZSB0byBiYWQgcmVwdXRhdGlvblwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJDb250ZW50IGFsbG93ZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuQm9keVJlcHV0YXRpb25Jc0JhZCAoTVdHLkludGVybmFsU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIEdUSSBjbG91ZCBzZXJ2aWNlIHJhdGVzIHRoZSBjdXJyZW50IGJvZHkgYXMgYSB2aXJ1cywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxTZXR0aW5nYDogVGhlIGludGVybmFsIGNvbmZpZ3VyYXRpb24gdXNlZCB0byBjaGVjayB0aGUgcmVwdXRhdGlvbiBvZiB0aGUgYm9keSB3aXRoIHRoZSBHVEkgY2xvdWQgc2VydmljZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBHVEkgY2xvdWQgc2VydmljZSByYXRlcyB0aGUgY3VycmVudCBib2R5IGFzIGEgdmlydXMsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZyBjYXRlZ29yaXphdGlvblNldHRpbmcgPSAvLyBJbml0aWFsaXplIHlvdXIgY2F0ZWdvcml6YXRpb24gc2V0dGluZyBoZXJlXG5cbklGIE5PVCBNV0cuQm9keVJlcHV0YXRpb25Jc0dvb2QoY2F0ZWdvcml6YXRpb25TZXR0aW5nKSBUSEVOIHtcbiAgICAvLyBCb2R5IHJlcHV0YXRpb24gaXMgYmFkXG4gICAgTVdHLkJsb2NrKFwiVGhlIGNvbnRlbnQgaGFzIGJlZW4gYmxvY2tlZCBkdWUgdG8gYmFkIGJvZHkgcmVwdXRhdGlvbi5cIilcbn0gRUxTRSB7XG4gICAgLy8gQm9keSByZXB1dGF0aW9uIGlzIGdvb2RcbiAgICBNV0cuQWxsb3coXCJCb2R5IHJlcHV0YXRpb24gY2hlY2sgcGFzc2VkXCIpXG59IiwgIm5hbWUiOiAiTVdHLkJvZHlSZXB1dGF0aW9uSXNCYWQgKE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBHVEkgY2xvdWQgc2VydmljZSByYXRlcyB0aGUgY3VycmVudCBib2R5IGFzIGEgdmlydXMsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZ2A6IFRoZSBVUkwgY2F0ZWdvcml6YXRpb24gc2V0dGluZyB1c2VkIHRvIGFzc2VzcyB0aGUgYm9keSByZXB1dGF0aW9uIHZpYSB0aGUgR1RJIGNsb3VkIHNlcnZpY2UuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgR1RJIGNsb3VkIHNlcnZpY2UgcmF0ZXMgdGhlIGN1cnJlbnQgYm9keSBhcyBjbGVhbiwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuSW50ZXJuYWxTZXR0aW5nIGJvZHlSZXB1dGF0aW9uU2V0dGluZyA9IE1XRy5Cb2R5UmVwdXRhdGlvbklzR29vZCgpXG5TVFJJTkcgcmVwdXRhdGlvblJlc3VsdCA9IE1XRy5FeGVjdXRlRXZlbnQoYm9keVJlcHV0YXRpb25TZXR0aW5nLCBcIkNoZWNrUmVwdXRhdGlvblwiLCBNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0KCkpXG5cbklGIHJlcHV0YXRpb25SZXN1bHQgPT0gXCJHb29kXCIgVEhFTiB7XG4gICAgLy8gQm9keSByZXB1dGF0aW9uIGlzIGdvb2QuIEFsbG93aW5nIHRoZSByZXNwb25zZS5cbiAgICBNV0cuQWxsb3coXCJCb2R5UmVwdXRhdGlvbkNoZWNrXCIpXG59IEVMU0Uge1xuICAgIC8vIEJvZHkgcmVwdXRhdGlvbiBpcyBub3QgZ29vZC4gQmxvY2tpbmcgdGhlIHJlc3BvbnNlLlxuICAgIE1XRy5CbG9jayhcIkJvZHlSZXB1dGF0aW9uQ2hlY2tcIilcbn0iLCAibmFtZSI6ICJNV0cuQm9keVJlcHV0YXRpb25Jc0dvb2QgKE1XRy5JbnRlcm5hbFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBHVEkgY2xvdWQgc2VydmljZSByYXRlcyB0aGUgY3VycmVudCBib2R5IGFzIGNsZWFuLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFNldHRpbmdgOiBUaGUgY29uZmlndXJhdGlvbiBzZXR0aW5nIHVzZWQgdG8gZXZhbHVhdGUgdGhlIGJvZHkncyByZXB1dGF0aW9uIHRocm91Z2ggdGhlIEdUSSBjbG91ZCBzZXJ2aWNlLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIEdUSSBjbG91ZCBzZXJ2aWNlIHJhdGVzIHRoZSBjdXJyZW50IGJvZHkgYXMgY2xlYW4sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZyBjYXRlZ29yaXphdGlvblNldHRpbmcgPSAvLyBJbml0aWFsaXplIHdpdGggYXBwcm9wcmlhdGUgc2V0dGluZ3NcblxuSUYgTVdHLkJvZHlSZXB1dGF0aW9uSXNHb29kKGNhdGVnb3JpemF0aW9uU2V0dGluZykgVEhFTiB7XG4gICAgLy8gQm9keSByZXB1dGF0aW9uIGlzIGdvb2RcbiAgICBNV0cuQWxsb3coXCJCb2R5IHJlcHV0YXRpb24gaXMgZ29vZFwiKVxufSBFTFNFIHtcbiAgICAvLyBCb2R5IHJlcHV0YXRpb24gaXMgbm90IGdvb2RcbiAgICBNV0cuQmxvY2soXCJCb2R5IHJlcHV0YXRpb24gaXMgbm90IGdvb2RcIilcbn0iLCAibmFtZSI6ICJNV0cuQm9keVJlcHV0YXRpb25Jc0dvb2QgKE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBHVEkgY2xvdWQgc2VydmljZSByYXRlcyB0aGUgY3VycmVudCBib2R5IGFzIGNsZWFuLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmdgOiBUaGUgY2F0ZWdvcml6YXRpb24gc2V0dGluZ3MgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIGN1cnJlbnQgYm9keSBpcyByYXRlZCBhcyBjbGVhbiBieSB0aGUgR1RJIGNsb3VkIHNlcnZpY2UuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgR1RJIGNsb3VkIHNlcnZpY2UgaGFzIGEgcmF0aW5nIGZvciB0aGUgY3VycmVudCBib2R5LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5JbnRlcm5hbFNldHRpbmcgc2V0dGluZyA9IC8vIEluaXRpYWxpemUgb3Igb2J0YWluIHRoZSBhcHByb3ByaWF0ZSBNV0cuSW50ZXJuYWxTZXR0aW5nIG9iamVjdFxuXG5JRiBNV0cuQm9keVJlcHV0YXRpb25Jc0tub3duKHNldHRpbmcpIFRIRU4ge1xuICAgIC8vIEdUSSBjbG91ZCBzZXJ2aWNlIGhhcyBhIHJhdGluZyBmb3IgdGhlIGN1cnJlbnQgYm9keS5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUsIHN1Y2ggYXMgYWxsb3dpbmcgdGhlIGNvbm5lY3Rpb25cbiAgICBNV0cuQWxsb3coXCJCb2R5IHJlcHV0YXRpb24ga25vd25cIilcbn0gRUxTRSB7XG4gICAgLy8gR1RJIGNsb3VkIHNlcnZpY2UgZG9lcyBub3QgaGF2ZSBhIHJhdGluZyBmb3IgdGhlIGN1cnJlbnQgYm9keS5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUsIHN1Y2ggYXMgYmxvY2tpbmcgdGhlIGNvbm5lY3Rpb25cbiAgICBNV0cuQmxvY2soXCJCb2R5IHJlcHV0YXRpb24gdW5rbm93blwiKVxufSIsICJuYW1lIjogIk1XRy5Cb2R5UmVwdXRhdGlvbklzS25vd24gKE1XRy5JbnRlcm5hbFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBHVEkgY2xvdWQgc2VydmljZSBoYXMgYSByYXRpbmcgZm9yIHRoZSBjdXJyZW50IGJvZHksIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHVzZWQgdG8gY2hlY2sgaWYgdGhlIEdUSSBjbG91ZCBzZXJ2aWNlIGhhcyBhIHJhdGluZyBmb3IgdGhlIGN1cnJlbnQgYm9keS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBHVEkgY2xvdWQgc2VydmljZSBoYXMgYSByYXRpbmcgZm9yIHRoZSBjdXJyZW50IGJvZHksIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZyBjYXRlZ29yaXphdGlvblNldHRpbmcgPSBNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nKClcblxuSUYgTVdHLkJvZHlSZXB1dGF0aW9uSXNHb29kKGNhdGVnb3JpemF0aW9uU2V0dGluZykgVEhFTiB7XG4gICAgLy8gQm9keSByZXB1dGF0aW9uIGlzIGdvb2QuXG4gICAgTVdHLkFsbG93KFwiQm9keVJlcHV0YXRpb25DaGVja1wiKVxufSBFTFNFIHtcbiAgICAvLyBCb2R5IHJlcHV0YXRpb24gaXMgbm90IGdvb2QuXG4gICAgTVdHLkJsb2NrKFwiQm9keVJlcHV0YXRpb25DaGVja1wiKVxufSIsICJuYW1lIjogIk1XRy5Cb2R5UmVwdXRhdGlvbklzS25vd24gKE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBHVEkgY2xvdWQgc2VydmljZSBoYXMgYSByYXRpbmcgZm9yIHRoZSBjdXJyZW50IGJvZHksIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmcgZGljdGF0aW5nIGhvdyBVUkxzIGFyZSBjYXRlZ29yaXplZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgYm9keS4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBib2R5U2l6ZSA9IE1XRy5Cb2R5U2l6ZSgpXG4vLyBUaGUgc2l6ZSBvZiB0aGUgYm9keSBpczogYm9keVNpemVcblxuSUYgYm9keVNpemUgPiAxMDAwMDAwIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIlRoZSBib2R5IHNpemUgZXhjZWVkcyB0aGUgYWxsb3dlZCBsaW1pdC5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiQm9keSBzaXplIGlzIHdpdGhpbiB0aGUgYWxsb3dlZCBsaW1pdC5cIilcbn0iLCAibmFtZSI6ICJNV0cuQm9keVNpemUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIHNpemUgb2YgdGhlIGJvZHkuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGRldGVjdGVkIGxhbmd1YWdlIChJU08gNjM5LTEgY29kZSkgZm9yIHRoZSBleHRyYWN0ZWQgdGV4dC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBkZXRlY3RlZExhbmd1YWdlID0gTVdHLkJvZHlUZXh0TGFuZ3VhZ2UoKVxuXG5JRiBkZXRlY3RlZExhbmd1YWdlID09IFwiZW5cIiBUSEVOIHtcbiAgICAvLyBUaGUgZGV0ZWN0ZWQgbGFuZ3VhZ2UgaXMgRW5nbGlzaC5cbiAgICBNV0cuQWxsb3coXCJMYW5ndWFnZSBpcyBFbmdsaXNoXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBkZXRlY3RlZCBsYW5ndWFnZSBpcyBub3QgRW5nbGlzaC4gSXQgaXM6IFwiICsgZGV0ZWN0ZWRMYW5ndWFnZVxuICAgIE1XRy5CbG9jayhcIk5vbi1FbmdsaXNoIGNvbnRlbnQgaXMgbm90IGFsbG93ZWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLkJvZHlUZXh0TGFuZ3VhZ2UgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgSVNPIDYzOS0xIGNvZGUgcmVwcmVzZW50aW5nIHRoZSBkZXRlY3RlZCBsYW5ndWFnZSBvZiB0aGUgZXh0cmFjdGVkIHRleHQuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHVuY29tcHJlc3NlZCBzaXplIG9mIGFuIGFyY2hpdmUgb3IgZG9jdW1lbnQuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgdW5jb21wcmVzc2VkU2l6ZSA9IE1XRy5Cb2R5VW5jb21wcmVzc2VkU2l6ZSgpXG5OVU1CRVIgc2l6ZVRocmVzaG9sZCA9IDEwNDg1NzYwICAvLyAxMCBNQiBpbiBieXRlc1xuXG5JRiB1bmNvbXByZXNzZWRTaXplID4gc2l6ZVRocmVzaG9sZCBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJUaGUgdW5jb21wcmVzc2VkIHNpemUgb2YgdGhlIGRvY3VtZW50IGV4Y2VlZHMgdGhlIGFsbG93ZWQgbGltaXQgb2YgMTAgTUIuXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIlVuY29tcHJlc3NlZCBzaXplIGlzIHdpdGhpbiB0aGUgYWxsb3dlZCBsaW1pdC5cIilcbn0iLCAibmFtZSI6ICJNV0cuQm9keVVuY29tcHJlc3NlZFNpemUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc2l6ZSBvZiBhbiBhcmNoaXZlIG9yIGRvY3VtZW50IGluIGl0cyB1bmNvbXByZXNzZWQgZm9ybS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY291bnQgb2Ygb2NjdXJyZW5jZXMgb2YgdGhlIGdpdmVuIHdvcmQgb3IgcGhyYXNlIGluIHRoZSBleHRyYWN0ZWQgdGV4dCBvZiB0aGUgY3VycmVudCBib2R5LiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGJvZHlDb250ZW50ID0gTVdHLkJvZHkoKVxuTlVNQkVSIHdvcmRDb3VudCA9IE1XRy5Cb2R5V29yZENvdW50KGJvZHlDb250ZW50KVxuXG5JRiB3b3JkQ291bnQgPiAxMDAwIFRIRU4ge1xuICAgIC8vIFJlcXVlc3QgYmxvY2tlZDogQm9keSB3b3JkIGNvdW50IGV4Y2VlZHMgbGltaXQuXG4gICAgTVdHLkJsb2NrKClcbn0gRUxTRSB7XG4gICAgLy8gQm9keSB3b3JkIGNvdW50IHdpdGhpbiBhY2NlcHRhYmxlIHJhbmdlLlxuICAgIE1XRy5BbGxvdygpXG59IiwgIm5hbWUiOiAiTVdHLkJvZHlXb3JkQ291bnQgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY291bnQgb2Ygc3BlY2lmaWVkIHdvcmRzIGluIHRoZSBjdXJyZW50IHRleHQgYm9keS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSB3b3JkIG9yIHdvcmRzIHRvIGNvdW50IG9jY3VycmVuY2VzIG9mIGluIHRoZSBib2R5LiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgZnJvbSB0aGUgY2xpZW50LiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIGJ5dGVzUmVjZWl2ZWQgPSBNV0cuQnl0ZXNSZWN2RnJvbUNsaWVudCgpXG4vLyBcIkJ5dGVzIHJlY2VpdmVkIGZyb20gY2xpZW50OiBcIiArIGJ5dGVzUmVjZWl2ZWQiLCAibmFtZSI6ICJNV0cuQnl0ZXNSZWN2RnJvbUNsaWVudCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgZnJvbSB0aGUgY2xpZW50LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIGJ5dGVzUmVjZWl2ZWQgPSBNV0cuQnl0ZXNSZWN2RnJvbVNlcnZlcigpXG4vLyBcIkJ5dGVzIHJlY2VpdmVkIGZyb20gc2VydmVyOiBcIiArIGJ5dGVzUmVjZWl2ZWQiLCAibmFtZSI6ICJNV0cuQnl0ZXNSZWN2RnJvbVNlcnZlciAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCB0byB0aGUgY2xpZW50LiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIGJ5dGVzU2VudCA9IE1XRy5CeXRlc1NlbnRUb0NsaWVudCgpXG4vLyBCeXRlcyBzZW50IHRvIGNsaWVudDogKyBieXRlc1NlbnQiLCAibmFtZSI6ICJNV0cuQnl0ZXNTZW50VG9DbGllbnQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgdG8gdGhlIGNsaWVudC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgdG8gdGhlIHNlcnZlci4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBieXRlc1NlbnQgPSBNV0cuQnl0ZXNTZW50VG9TZXJ2ZXIoKVxuLy8gXCJCeXRlcyBzZW50IHRvIHNlcnZlcjogXCIgKyBieXRlc1NlbnQiLCAibmFtZSI6ICJNV0cuQnl0ZXNTZW50VG9TZXJ2ZXIgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgdG8gdGhlIHNlcnZlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIkNhY2hlcyB0aGUgbGlzdCBtYXRjaCBpbmZvIGluIHRoZSBjb250ZXh0IGFuZCByZXR1cm5zIHRoZSBtYXRjaCByZXN1bHQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgcnVsZU5hbWUgPSBcImV4YW1wbGVSdWxlXCJcblxuLy8gU3RvcmUgdGhlIGxpc3QgbWF0Y2ggaW5mbyBmb3IgdGhlIHNwZWNpZmllZCBydWxlXG5NV0cuU3RvcmVMaXN0TWF0Y2hJbmZvKHJ1bGVOYW1lKVxuXG4vLyBBZGRpdGlvbmFsIGxvZ2ljIGNhbiBiZSBhZGRlZCBoZXJlXG4vLyBMaXN0IG1hdGNoIGluZm8gc3RvcmVkIGZvciBydWxlOiBcIiArIHJ1bGVOYW1lIiwgIm5hbWUiOiAiTVdHLkNhY2hlTGlzdE1hdGNoSW5mbyAoQk9PTEVBTiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBnaXZlbiBsaXN0IG1hdGNoIHJlc3VsdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEJPT0xFQU5gOiBXaGV0aGVyIHRoZSBsaXN0IG1hdGNoZWQgb3Igbm90LlxuMi4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIk1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY2VydGlmaWNhdGUgYXV0aG9yaXR5IGxpc3QgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gbmFtZSwgb3IgYW4gZW1wdHkgbGlzdCBpZiBub3QgZm91bmQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgY2FMaXN0TmFtZSA9IFwiRXhhbXBsZUNBTGlzdFwiXG5NV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0IGNhTGlzdCA9IE1XRy5DQUxpc3RCeU5hbWUoY2FMaXN0TmFtZSlcblxuLy8gUmV0cmlldmVkIENBIExpc3Q6IFwiICsgY2FMaXN0IiwgIm5hbWUiOiAiTVdHLkNBTGlzdEJ5TmFtZSAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbGlzdCBvZiBjZXJ0aWZpY2F0ZSBhdXRob3JpdGllcy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGEgY2VydGlmaWNhdGUgYXV0aG9yaXR5IGxpc3Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGNhTGlzdE5hbWUgPSBcIk15Q0FMaXN0XCJcblxuSUYgTVdHLkNBTGlzdEJ5TmFtZUV4aXN0cyhjYUxpc3ROYW1lKSBUSEVOIHtcbiAgICAvLyBUaGUgQ0EgbGlzdCArIGNhTGlzdE5hbWUgKyBleGlzdHMuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBDQSBsaXN0ICsgY2FMaXN0TmFtZSArIGRvZXMgbm90IGV4aXN0LlxufSIsICJuYW1lIjogIk1XRy5DQUxpc3RCeU5hbWVFeGlzdHMgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgYSBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgbGlzdCB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgbmFtZSBvZiB0aGUgY2VydGlmaWNhdGUgYXV0aG9yaXR5IGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhIGNsaWVudCBjZXJ0aWZpY2F0ZSB3YXMgcmVxdWVzdGVkIGR1cmluZyB0aGUgaW5pdGlhbCBUTFMgaGFuZHNoYWtlLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIkJPT0xFQU4gY2xpZW50Q2VydFJlcXVlc3RlZCA9IE1XRy5DbGllbnRDZXJ0UmVxdWVzdGVkKClcblxuSUYgY2xpZW50Q2VydFJlcXVlc3RlZCBUSEVOIHtcbiAgICAvLyBDbGllbnQgY2VydGlmaWNhdGUgaXMgcmVxdWVzdGVkLlxufSBFTFNFIHtcbiAgICAvLyBDbGllbnQgY2VydGlmaWNhdGUgaXMgbm90IHJlcXVlc3RlZC5cbn0iLCAibmFtZSI6ICJNV0cuQ2xpZW50Q2VydFJlcXVlc3RlZCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhIGNsaWVudCBjZXJ0aWZpY2F0ZSB3YXMgcmVxdWVzdGVkIGR1cmluZyB0aGUgaW5pdGlhbCBUTFMgaGFuZHNoYWtlLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOZXQuSVAiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgY2xpZW50IGNvbm5lY3Rpb24uIiwgImNvZGVfZXhhbXBsZSI6ICJOZXQuSVAgY2xpZW50SVAgPSBNV0cuQ2xpZW50RUdyZXNzSVAoKVxuLy8gQ2xpZW50IEVncmVzcyBJUDogKyBjbGllbnRJUCIsICJuYW1lIjogIk1XRy5DbGllbnRFR3Jlc3NJUCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSBjbGllbnQgY29ubmVjdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBwb3J0IG9mIHRoZSBjbGllbnQgY29ubmVjdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBjbGllbnRQb3J0ID0gTVdHLkNsaWVudEVHcmVzc1BvcnQoKVxuXG5JRiBjbGllbnRQb3J0ID09IDgwIFRIRU4ge1xuICAgIC8vIENsaWVudCBpcyB1c2luZyBIVFRQIHBvcnQgODBcbn0gRUxTRSBJRiBjbGllbnRQb3J0ID09IDQ0MyBUSEVOIHtcbiAgICAvLyBDbGllbnQgaXMgdXNpbmcgSFRUUFMgcG9ydCA0NDNcbn0gRUxTRSB7XG4gICAgLy8gQ2xpZW50IGlzIHVzaW5nIGEgZGlmZmVyZW50IHBvcnQ6IFwiICsgY2xpZW50UG9ydFxufSIsICJuYW1lIjogIk1XRy5DbGllbnRFR3Jlc3NQb3J0ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHBvcnQgb2YgdGhlIGNsaWVudCBjb25uZWN0aW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5ldC5JUCIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSBjbGllbnQuIiwgImNvZGVfZXhhbXBsZSI6ICJOZXQuSVAgY2xpZW50SVAgPSBNV0cuQ2xpZW50SVAoKVxuLy8gXCJDbGllbnQgSVAgQWRkcmVzczogXCIgKyBjbGllbnRJUCIsICJuYW1lIjogIk1XRy5DbGllbnRJUCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSBjbGllbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY2xpZW50IGxvY2F0aW9uIG5hbWUuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgY2xpZW50TG9jYXRpb24gPSBNV0cuQ2xpZW50TG9jYXRpb24oKVxuLy8gQ2xpZW50IExvY2F0aW9uOiBcIiArIGNsaWVudExvY2F0aW9uXG5cbklGIGNsaWVudExvY2F0aW9uID09IFwiT2ZmaWNlXCIgVEhFTiB7XG4gICAgTVdHLkFsbG93KFwiQWNjZXNzIGZyb20gT2ZmaWNlXCIpXG59IEVMU0Uge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyByZXN0cmljdGVkIHRvIE9mZmljZSBvbmx5XCIpXG59IiwgIm5hbWUiOiAiTVdHLkNsaWVudExvY2F0aW9uICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNsaWVudCBsb2NhdGlvbiBuYW1lLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgY2xpZW50IGxvY2F0aW9uIHR5cGUgaXMgc2V0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBjbGllbnRMb2NhdGlvbiA9IE1XRy5DbGllbnRMb2NhdGlvbigpXG4vLyBDbGllbnQgbG9jYXRpb24gZGV0ZWN0ZWQ6ICsgY2xpZW50TG9jYXRpb25cblxuSUYgY2xpZW50TG9jYXRpb24gPT0gXCJSZXN0cmljdGVkQXJlYVwiIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBmcm9tIHRoaXMgbG9jYXRpb24gaXMgbm90IGFsbG93ZWQuXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIkNsaWVudCBsb2NhdGlvbiBpcyBhbGxvd2VkLlwiKVxufSIsICJuYW1lIjogIk1XRy5DbGllbnRMb2NhdGlvbkRldGVjdGVkICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjbGllbnQgbG9jYXRpb24gdHlwZSBpcyBzZXQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjbGllbnQgbG9jYXRpb24gSUQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgY2xpZW50TG9jYXRpb24gPSBNV0cuQ2xpZW50TG9jYXRpb24oKVxuLy8gQ2xpZW50IExvY2F0aW9uOiBcIiArIGNsaWVudExvY2F0aW9uIiwgIm5hbWUiOiAiTVdHLkNsaWVudExvY2F0aW9uSUQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY2xpZW50IGxvY2F0aW9uIElELiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHByb2Nlc3MgZXhlIHBhdGggb2YgdGhlIEhUVFAoUykgY2xpZW50IChNQ1Agb25seSkuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgY2xpZW50RXhlUGF0aCA9IE1XRy5DbGllbnRQcm9jZXNzRXhlUGF0aCgpXG4vLyBDbGllbnQgUHJvY2VzcyBFeGVjdXRhYmxlIFBhdGg6IFwiICsgY2xpZW50RXhlUGF0aCIsICJuYW1lIjogIk1XRy5DbGllbnRQcm9jZXNzRXhlUGF0aCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBwcm9jZXNzIGV4ZSBwYXRoIG9mIHRoZSBIVFRQKFMpIGNsaWVudCAoTUNQIG9ubHkpLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHByb2Nlc3MgbmFtZSBvZiB0aGUgSFRUUChTKSBjbGllbnQgKE1DUCBvbmx5KS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBjbGllbnRQcm9jZXNzTmFtZSA9IE1XRy5DbGllbnRQcm9jZXNzTmFtZSgpXG5cbklGIGNsaWVudFByb2Nlc3NOYW1lID09IFwidW53YW50ZWRfcHJvY2Vzcy5leGVcIiBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgYmxvY2tlZCBkdWUgdG8gdW53YW50ZWQgcHJvY2Vzc1wiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJQcm9jZXNzIGFsbG93ZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuQ2xpZW50UHJvY2Vzc05hbWUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgcHJvY2VzcyBuYW1lIG9mIHRoZSBIVFRQKFMpIGNsaWVudCAoTUNQIG9ubHkpLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBzeXN0ZW0gaW5mbyBhcyBwcm92aWRlZCBieSBNQ1AuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBSZXRyaWV2ZSBjbGllbnQgc3lzdGVtIGluZm9ybWF0aW9uXG5NQVA8U1RSSU5HPjxTVFJJTkc+IGNsaWVudEluZm8gPSBNV0cuQ2xpZW50U3lzdGVtSW5mbygpXG5cbi8vIEV4dHJhY3Qgc3BlY2lmaWMgaW5mb3JtYXRpb24gZnJvbSB0aGUgY2xpZW50SW5mbyBtYXBcblNUUklORyBvcyA9IGNsaWVudEluZm9bXCJvc1wiXVxuU1RSSU5HIGJyb3dzZXIgPSBjbGllbnRJbmZvW1wiYnJvd3NlclwiXVxuU1RSSU5HIGlwID0gY2xpZW50SW5mb1tcImlwXCJdXG5cbi8vIExvZyB0aGUgY2xpZW50IHN5c3RlbSBpbmZvcm1hdGlvblxuLy8gQ2xpZW50IE9TOiBcIiArIG9zXG4vLyBDbGllbnQgQnJvd3NlcjogXCIgKyBicm93c2VyXG4vLyBDbGllbnQgSVA6IFwiICsgaXAiLCAibmFtZSI6ICJNV0cuQ2xpZW50U3lzdGVtSW5mbyAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBzeXN0ZW0gaW5mbyBhcyBwcm92aWRlZCBieSBNQ1AuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuQXBwbGljYXRpb25UeXBlIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGRldGVjdGVkIGFwcGxpY2F0aW9uIHR5cGUsIGV4Y2x1ZGluZyBhY3Rpdml0eS1iYXNlZCBkZXRlY3Rpb24uIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgY2xvdWRTZXJ2aWNlTmFtZSA9IE1XRy5DbG91ZFNlcnZpY2VOYW1lKClcbi8vIENsb3VkIFNlcnZpY2UgTmFtZTogKyBjbG91ZFNlcnZpY2VOYW1lIiwgIm5hbWUiOiAiTVdHLkNsb3VkU2VydmljZUlEICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGRldGVjdGVkIGFwcGxpY2F0aW9uIHR5cGUsIGV4Y2x1ZGluZyBhY3Rpdml0eS1iYXNlZCBkZXRlY3Rpb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG5hbWUgb2YgYW4gYXBwbGljYXRpb24gd2l0aG91dCBhY3Rpdml0eS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBjbG91ZFNlcnZpY2VOYW1lID0gTVdHLkNsb3VkU2VydmljZU5hbWUoKVxuXG5JRiBjbG91ZFNlcnZpY2VOYW1lID09IFwiRXhhbXBsZVNlcnZpY2VcIiBUSEVOIHtcbiAgICAvLyBUaGUgY2xvdWQgc2VydmljZSBuYW1lIGlzIEV4YW1wbGVTZXJ2aWNlXG59IEVMU0Uge1xuICAgIC8vIFRoZSBjbG91ZCBzZXJ2aWNlIG5hbWUgaXMgXCIgKyBjbG91ZFNlcnZpY2VOYW1lXG59IiwgIm5hbWUiOiAiTVdHLkNsb3VkU2VydmljZU5hbWUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbmFtZSBvZiBhbiBhcHBsaWNhdGlvbiB3aXRob3V0IGFjdGl2aXR5LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxTVFJJTkc+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGNhdGVnb3JpZXMgZm9yIGEgcGFydGljdWxhciBwcm90b2NvbCBjb21tYW5kLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPFNUUklORz4gY2F0ZWdvcmllcyA9IE1XRy5Db21tYW5kQ2F0ZWdvcmllcygpXG5cbi8vIENvbW1hbmQgQ2F0ZWdvcmllczogKyBjYXRlZ29yaWVzXG5cbklGIFwiTWFsaWNpb3VzXCIgSU4gY2F0ZWdvcmllcyBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJCbG9ja2VkIGR1ZSB0byBtYWxpY2lvdXMgY29tbWFuZCBjYXRlZ29yeVwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJBbGxvd2VkIGFzIG5vIG1hbGljaW91cyBjb21tYW5kIGNhdGVnb3J5IGZvdW5kXCIpXG59IiwgIm5hbWUiOiAiTVdHLkNvbW1hbmRDYXRlZ29yaWVzICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNhdGVnb3JpZXMgZm9yIGEgcGFydGljdWxhciBwcm90b2NvbCBjb21tYW5kLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjb21tYW5kIG5hbWUsIHN1Y2ggYXMgR0VUIG9yIFBPU1QuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgY29tbWFuZCA9IE1XRy5Db21tYW5kTmFtZSgpXG5cbklGIGNvbW1hbmQgPT0gXCJQT1NUXCIgVEhFTiB7XG4gICAgLy8gVGhpcyBpcyBhIFBPU1QgcmVxdWVzdC5cbn0gRUxTRSBJRiBjb21tYW5kID09IFwiR0VUXCIgVEhFTiB7XG4gICAgLy8gVGhpcyBpcyBhIEdFVCByZXF1ZXN0LlxufSBFTFNFIHtcbiAgICAvLyBUaGlzIGlzIGEgZGlmZmVyZW50IHR5cGUgb2YgcmVxdWVzdDogXCIgKyBjb21tYW5kXG59IiwgIm5hbWUiOiAiTVdHLkNvbW1hbmROYW1lICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNvbW1hbmQgbmFtZS4gRS5nLiBHRVQsIFBPU1QuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSB1bmlxdWUgSUQgZm9yIHRoZSBjb25uZWN0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGNvbm5lY3Rpb25JRCA9IE1XRy5Db25uZWN0aW9uSUQoKVxuLy8gQ29ubmVjdGlvbiBJRDogKyBjb25uZWN0aW9uSUQiLCAibmFtZSI6ICJNV0cuQ29ubmVjdGlvbklEICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB1bmlxdWUgSUQgZm9yIHRoZSBjb25uZWN0aW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGNvbm5lY3Rpb24gcHJvdG9jb2wgYXMgYSBzdHJpbmcsIGUuZy4gSFRUUCwgSFRUUFMsIEZUUC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBwcm90b2NvbCA9IE1XRy5Db25uZWN0aW9uUHJvdG9jb2woKVxuLy8gVGhlIGNvbm5lY3Rpb24gcHJvdG9jb2wgaXM6IFwiICsgcHJvdG9jb2xcblxuSUYgcHJvdG9jb2wgPT0gXCJIVFRQU1wiIFRIRU4ge1xuICAgIC8vIFNlY3VyZSBjb25uZWN0aW9uIGRldGVjdGVkLlxufSBFTFNFIHtcbiAgICAvLyBOb24tc2VjdXJlIGNvbm5lY3Rpb24gZGV0ZWN0ZWQuXG59IiwgIm5hbWUiOiAiTVdHLkNvbm5lY3Rpb25Qcm90b2NvbCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBjb25uZWN0aW9uIHByb3RvY29sIGFzIGEgc3RyaW5nLiBFLmcuIEhUVFAsIEhUVFBTLCBGVFAuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjb25uZWN0aW9uIHByb3RvY29sIGlzIGluc3RhbnQgbWVzc2FnaW5nLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIklGIE1XRy5Db25uZWN0aW9uUHJvdG9jb2xJc0lNKCkgVEhFTiB7XG4gICAgLy8gVGhlIGNvbm5lY3Rpb24gaXMgdXNpbmcgYW4gaW5zdGFudCBtZXNzYWdpbmcgcHJvdG9jb2wuXG4gICAgTVdHLkJsb2NrKFwiSW5zdGFudCBtZXNzYWdpbmcgaXMgbm90IGFsbG93ZWQuXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBjb25uZWN0aW9uIGlzIG5vdCB1c2luZyBhbiBpbnN0YW50IG1lc3NhZ2luZyBwcm90b2NvbC5cbiAgICBNV0cuQWxsb3coXCJOb24tSU0gdHJhZmZpYyBhbGxvd2VkLlwiKVxufSIsICJuYW1lIjogIk1XRy5Db25uZWN0aW9uUHJvdG9jb2xJc0lNICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjb25uZWN0aW9uIHByb3RvY29sIGlzIGluc3RhbnQgbWVzc2FnaW5nLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY29ubmVjdGlvbiB0cmFjaW5nIElEIChlbXB0eSwgaWYgdHJhY2luZyBpcyB0dXJuZWQgb2ZmKS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBjb25uZWN0aW9uSUQgPSBNV0cuQ29ubmVjdGlvbklEKClcbi8vIENvbm5lY3Rpb24gSUQ6IGNvbm5lY3Rpb25JRCIsICJuYW1lIjogIk1XRy5Db25uZWN0aW9uVHJhY2luZ0lEICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNvbm5lY3Rpb24gdHJhY2luZyBJRCAoZW1wdHksIGlmIHRyYWNpbmcgaXMgdHVybmVkIG9mZikuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0cmlldmVzIHZhcmlhYmxlIChjb25uZWN0aW9uIHNjb3BlKS4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgbmFtZSBvZiB0aGUgY29ubmVjdGlvbiB2YXJpYWJsZSB0byByZXRyaWV2ZVxuU1RSSU5HIHZhcmlhYmxlTmFtZSA9IFwiZXhhbXBsZVZhcmlhYmxlXCJcblxuLy8gUmV0cmlldmUgdGhlIHZhbHVlIG9mIHRoZSBjb25uZWN0aW9uIHZhcmlhYmxlXG5TVFJJTkcgdmFyaWFibGVWYWx1ZSA9IE1XRy5Db25uZWN0aW9uVmFyaWFibGVzR2V0KHZhcmlhYmxlTmFtZSlcblxuLy8gVGhlIHZhbHVlIG9mIFwiICsgdmFyaWFibGVOYW1lICsgXCIgaXM6IFwiICsgdmFyaWFibGVWYWx1ZVxuXG4vLyBVc2UgdGhlIGNvbm5lY3Rpb24gdmFyaWFibGUgaW4gYSBjb25kaXRpb25hbCBzdGF0ZW1lbnRcbklGIHZhcmlhYmxlVmFsdWUgPT0gXCJzb21lVmFsdWVcIiBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJCbG9ja2luZyBiZWNhdXNlIHRoZSBjb25uZWN0aW9uIHZhcmlhYmxlIG1hdGNoZWQgJ3NvbWVWYWx1ZSdcIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiQWxsb3dpbmcgYmVjYXVzZSB0aGUgY29ubmVjdGlvbiB2YXJpYWJsZSBkaWQgbm90IG1hdGNoICdzb21lVmFsdWUnXCIpXG59IiwgIm5hbWUiOiAiTVdHLkNvbm5lY3Rpb25WYXJpYWJsZXNHZXQgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIGEgY29ubmVjdGlvbi1zY29wZWQgdmFyaWFibGUuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgdG8gcmV0cmlldmUgd2l0aGluIHRoZSBjb25uZWN0aW9uIHNjb3BlLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBUUlVFIGlmIGl0IGhhcyB2YXJpYWJsZXMgKGNvbm5lY3Rpb24gc2NvcGUpLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGtleSA9IFwiZXhhbXBsZUtleVwiXG5cbklGIE1XRy5Db25uZWN0aW9uVmFyaWFibGVzSGF2ZShrZXkpIFRIRU4ge1xuICAgIC8vIENvbm5lY3Rpb24gdmFyaWFibGUgd2l0aCBrZXkgJ2V4YW1wbGVLZXknIGV4aXN0cy5cbn0gRUxTRSB7XG4gICAgLy8gQ29ubmVjdGlvbiB2YXJpYWJsZSB3aXRoIGtleSAnZXhhbXBsZUtleScgZG9lcyBub3QgZXhpc3QuXG59IiwgIm5hbWUiOiAiTVdHLkNvbm5lY3Rpb25WYXJpYWJsZXNIYXZlIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBzcGVjaWZpZWQgY29ubmVjdGlvbiBzY29wZSBjb250YWlucyB0aGUgc3BlY2lmaWVkIHZhcmlhYmxlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGNoZWNrIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0IiwgImRlc2NyaXB0aW9uIjogIkNyZWF0ZXMgYW4gZW1wdHkgbGlzdCBvZiBjZXJ0aWZpY2F0ZSBhdXRob3JpdGllcy4iLCAiY29kZV9leGFtcGxlIjogIi8vIENyZWF0ZSBhbiBlbXB0eSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgTGlzdFxuTVdHLkNlcnRpZmljYXRlQXV0aG9yaXR5TGlzdCBjYUxpc3QgPSBNV0cuQ3JlYXRlQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0KClcblxuLy8gQ3JlYXRlZCBhbiBlbXB0eSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgTGlzdFxuXG4vLyBGdXJ0aGVyIHByb2Nlc3NpbmcgY2FuIGJlIGRvbmUgaGVyZSwgc3VjaCBhcyBhZGRpbmcgY2VydGlmaWNhdGVzIHRvIHRoZSBsaXN0XG4vLyBGb3IgZXhhbXBsZTpcbi8vIGNhTGlzdC5BZGRDZXJ0aWZpY2F0ZShcInBhdGgvdG8vY2VydGlmaWNhdGVcIilcblxuLy8gRXhhbXBsZSBvZiB1c2luZyB0aGUgY2FMaXN0IGluIHNvbWUgY29udGV4dFxuLy8gTVdHLlNvbWVGdW5jdGlvblRoYXRVc2VzQ0FMaXN0KGNhTGlzdCkiLCAibmFtZSI6ICJNV0cuQ3JlYXRlQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYW4gZW1wdHkgYE1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3RgIG9iamVjdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QiLCAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlcyBhbiBlbXB0eSBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIENyZWF0ZSBhIGxpc3Qgb2YgcGFyYW1ldGVyc1xuTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCBwYXJhbXMgPSBNV0cuQ3JlYXRlUGFyYW1zKClcblxuLy8gQWRkIHBhcmFtZXRlcnMgdG8gdGhlIGxpc3RcbnBhcmFtcy5BZGQoXCJwYXJhbTFcIiwgXCJ2YWx1ZTFcIilcbnBhcmFtcy5BZGQoXCJwYXJhbTJcIiwgXCJ2YWx1ZTJcIilcblxuLy8gVXNlIHRoZSBwYXJhbWV0ZXJzIGluIGEgZnVuY3Rpb24gY2FsbFxuTVdHLkV4ZWN1dGVFdmVudChcIlNvbWVFdmVudFwiLCBwYXJhbXMpXG5cbi8vIFBhcmFtZXRlcnMgY3JlYXRlZCBhbmQgZXZlbnQgZXhlY3V0ZWQgd2l0aCBwYXJhbXM6IFxuLy8gKyBwYXJhbXMuVG9TdHJpbmcoKSIsICJuYW1lIjogIk1XRy5DcmVhdGVQYXJhbXMgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhbiBlbXB0eSBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QiLCAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlcyBhbiBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdCB3aXRoIHRoZSBwcm92aWRlZCBKU09OIG9iamVjdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIENyZWF0ZSBhIEpTT04gb2JqZWN0IHdpdGggcGFyYW1ldGVyc1xuSlNPTiBwYXJhbXMgPSB7XG4gICAgXCJwYXJhbTFcIjogXCJ2YWx1ZTFcIixcbiAgICBcInBhcmFtMlwiOiBcInZhbHVlMlwiLFxuICAgIFwicGFyYW0zXCI6IFwidmFsdWUzXCJcbn1cblxuLy8gVXNlIHRoZSBNV0cuQ3JlYXRlUGFyYW1zIGZ1bmN0aW9uIHdpdGggdGhlIEpTT04gb2JqZWN0XG5NV0cuQ3JlYXRlUGFyYW1zKHBhcmFtcylcblxuLy8gUGFyYW1ldGVycyBjcmVhdGVkOiBcIiArIHBhcmFtcyIsICJuYW1lIjogIk1XRy5DcmVhdGVQYXJhbXMgKEpTT04pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNyZWF0ZWQgaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBKU09OYDogVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IiwgImRlc2NyaXB0aW9uIjogIkNyZWF0ZXMgYW4gaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3Qgd2l0aCB0aGUgcHJvdmlkZWQgbWFwLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGEgbWFwIHRvIGhvbGQgdGhlIHBhcmFtZXRlcnNcbk1BUDxTVFJJTkcsIE1XRy5JbnRlcm5hbFZhcmlhbnQ+IHBhcmFtc01hcFxuXG4vLyBBZGQgc29tZSBwYXJhbWV0ZXJzIHRvIHRoZSBtYXBcbnBhcmFtc01hcFtcInBhcmFtMVwiXSA9IE1XRy5JbnRlcm5hbFZhcmlhbnQoXCJ2YWx1ZTFcIilcbnBhcmFtc01hcFtcInBhcmFtMlwiXSA9IE1XRy5JbnRlcm5hbFZhcmlhbnQoMTIzNDUpXG5wYXJhbXNNYXBbXCJwYXJhbTNcIl0gPSBNV0cuSW50ZXJuYWxWYXJpYW50KFRSVUUpXG5cbi8vIENyZWF0ZSB0aGUgaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3QgdXNpbmcgdGhlIG1hcFxuTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCBwYXJhbXNMaXN0ID0gTVdHLkNyZWF0ZVBhcmFtcyhwYXJhbXNNYXApXG5cbi8vIENyZWF0ZWQgaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3Qgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4vLyBwYXJhbTE6IFwiICsgcGFyYW1zTGlzdFtcInBhcmFtMVwiXS5Ub1N0cmluZygpXG4vLyBwYXJhbTI6IFwiICsgcGFyYW1zTGlzdFtcInBhcmFtMlwiXS5Ub1N0cmluZygpXG4vLyBwYXJhbTM6IFwiICsgcGFyYW1zTGlzdFtcInBhcmFtM1wiXS5Ub1N0cmluZygpIiwgIm5hbWUiOiAiTVdHLkNyZWF0ZVBhcmFtcyAoTUFQPFNUUklORywgTVdHLkludGVybmFsVmFyaWFudD4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNyZWF0ZWQgaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNQVA8U1RSSU5HLE1XRy5JbnRlcm5hbFZhcmlhbnQ+YDogVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IiwgImRlc2NyaXB0aW9uIjogIkNyZWF0ZXMgYW4gaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3Qgd2l0aCB0aGUgcHJvdmlkZWQgbWFwLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGEgbWFwIHdpdGggaW5pdGlhbCB2YWx1ZXNcbk1BUDxTVFJJTkcsIFNUUklORz4gaW5pdGlhbFBhcmFtcyA9IHtcbiAgICBcInBhcmFtMVwiOiBcInZhbHVlMVwiLFxuICAgIFwicGFyYW0yXCI6IFwidmFsdWUyXCIsXG4gICAgXCJwYXJhbTNcIjogXCJ2YWx1ZTNcIlxufVxuXG4vLyBDcmVhdGUgYW4gaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3QgdXNpbmcgdGhlIG1hcFxuTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCBwYXJhbXNMaXN0ID0gTVdHLkNyZWF0ZVBhcmFtcyhpbml0aWFsUGFyYW1zKVxuXG4vLyBDcmVhdGVkIHBhcmFtZXRlciBsaXN0OiBwYXJhbXNMaXN0IiwgIm5hbWUiOiAiTVdHLkNyZWF0ZVBhcmFtcyAoTUFQPFNUUklORywgU1RSSU5HPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY3JlYXRlZCBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1BUDxTVFJJTkcsU1RSSU5HPmA6IFRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCIsICJkZXNjcmlwdGlvbiI6ICJDcmVhdGVzIGFuIGludGVybmFsIHBhcmFtZXRlciBsaXN0IHdpdGggdGhlIHByb3ZpZGVkIG1lZGlhIHR5cGUuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgYSBNZWRpYVR5cGUgb2JqZWN0XG5NZWRpYVR5cGUgbWVkaWFUeXBlID0gXCJhcHBsaWNhdGlvbi9qc29uXCJcblxuLy8gQ3JlYXRlIGFuIGludGVybmFsIHBhcmFtZXRlciBsaXN0IHVzaW5nIHRoZSBNZWRpYVR5cGVcbk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QgcGFyYW1zID0gTVdHLkNyZWF0ZVBhcmFtcyhtZWRpYVR5cGUpXG5cbi8vIENyZWF0ZWQgaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3Qgd2l0aCBtZWRpYSB0eXBlOiBcIiArIG1lZGlhVHlwZSIsICJuYW1lIjogIk1XRy5DcmVhdGVQYXJhbXMgKE1lZGlhVHlwZSkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY3JlYXRlZCBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1lZGlhVHlwZWA6IFRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCIsICJkZXNjcmlwdGlvbiI6ICJDcmVhdGVzIGFuIGludGVybmFsIHBhcmFtZXRlciBsaXN0IHdpdGggdGhlIHByb3ZpZGVkIGludGVybmFsIHZhcmlhbnQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDcmVhdGUgYW4gaW50ZXJuYWwgdmFyaWFudCB3aXRoIHNvbWUgaW5pdGlhbCB2YWx1ZVxuTVdHLkludGVybmFsVmFyaWFudCBpbml0aWFsVmFyaWFudCA9IE1XRy5JbnRlcm5hbFZhcmlhbnQoKVxuaW5pdGlhbFZhcmlhbnQuc29tZVByb3BlcnR5ID0gXCJpbml0aWFsVmFsdWVcIlxuXG4vLyBDcmVhdGUgYW4gaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3QgdXNpbmcgdGhlIGluaXRpYWwgdmFyaWFudFxuTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCBwYXJhbUxpc3QgPSBNV0cuQ3JlYXRlUGFyYW1zKGluaXRpYWxWYXJpYW50KVxuXG4vLyBVc2UgdGhlIHBhcmFtZXRlciBsaXN0IGluIHNvbWUgd2F5XG4vLyBDcmVhdGVkIHBhcmFtZXRlciBsaXN0IHdpdGggaW5pdGlhbCB2YXJpYW50IHZhbHVlOiBcIiArIHBhcmFtTGlzdFxuXG4vLyBBZGRpdGlvbmFsIGxvZ2ljIGNhbiBiZSBhZGRlZCBoZXJlIiwgIm5hbWUiOiAiTVdHLkNyZWF0ZVBhcmFtcyAoTVdHLkludGVybmFsVmFyaWFudCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY3JlYXRlZCBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFZhcmlhbnRgOiBUaGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlciBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QiLCAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlcyBhbiBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdCB3aXRoIHRoZSBwcm92aWRlZCBOZXQuSVAuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgYW4gaW5pdGlhbCBJUCB2YWx1ZVxuTmV0LklQIGluaXRpYWxJUCA9IFwiMTkyLjE2OC4xLjFcIlxuXG4vLyBDcmVhdGUgYW4gaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3Qgd2l0aCB0aGUgaW5pdGlhbCBJUCB2YWx1ZVxuTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCBwYXJhbUxpc3QgPSBNV0cuQ3JlYXRlUGFyYW1zKGluaXRpYWxJUClcblxuLy8gQ3JlYXRlZCBwYXJhbWV0ZXIgbGlzdDogXCIgKyBwYXJhbUxpc3QiLCAibmFtZSI6ICJNV0cuQ3JlYXRlUGFyYW1zIChOZXQuSVApIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNyZWF0ZWQgaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBOZXQuSVBgOiBUaGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlciBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QiLCAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlcyBhbiBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdCB3aXRoIHRoZSBwcm92aWRlZCBudW1iZXIuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgd2UgaGF2ZSBhbiBNV0cuSW50ZXJuYWxWYXJpYW50IHRoYXQgY29udGFpbnMgYSBOVU1CRVJcbk1XRy5JbnRlcm5hbFZhcmlhbnQgbnVtYmVyVmFyaWFudCA9IE1XRy5JbnRlcm5hbFZhcmlhbnQoNDIpXG5cbi8vIENyZWF0ZSBhbiBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdCB1c2luZyB0aGUgbnVtYmVyVmFyaWFudFxuTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCBwYXJhbUxpc3QgPSBNV0cuQ3JlYXRlUGFyYW1zKG51bWJlclZhcmlhbnQpXG5cbi8vIENyZWF0ZWQgcGFyYW1ldGVyIGxpc3Qgd2l0aCBudW1iZXI6IFwiICsgcGFyYW1MaXN0IiwgIm5hbWUiOiAiTVdHLkNyZWF0ZVBhcmFtcyAoTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBjcmVhdGVkIGludGVybmFsIHBhcmFtZXRlciBsaXN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTlVNQkVSYDogVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IiwgImRlc2NyaXB0aW9uIjogIkNyZWF0ZXMgYW4gaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3Qgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiTUFQPFNUUklORywgU1RSSU5HPiBwYXJhbXMgPSB7XG4gICAgXCJwYXJhbTFcIiA6IFwidmFsdWUxXCIsXG4gICAgXCJwYXJhbTJcIiA6IFwidmFsdWUyXCIsXG4gICAgXCJwYXJhbTNcIiA6IFwidmFsdWUzXCJcbn1cblxuTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCBwYXJhbUxpc3QgPSBNV0cuQ3JlYXRlUGFyYW1zKHBhcmFtcylcblxuLy8gQ3JlYXRlZCBwYXJhbWV0ZXIgbGlzdDogKyBwYXJhbUxpc3QiLCAibmFtZSI6ICJNV0cuQ3JlYXRlUGFyYW1zIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNyZWF0ZWQgaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlciBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QiLCAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlcyBhbiBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdCB3aXRoIHRoZSBwcm92aWRlZCB2ZWN0b3IuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgYSBWRUNUT1Igb2YgTWVkaWFUeXBlXG5WRUNUT1I8TWVkaWFUeXBlPiBtZWRpYVR5cGVzID0gXCJhcHBsaWNhdGlvbi9qc29uXCIsIFwidGV4dC9odG1sXCIsIFwiaW1hZ2UvcG5nXCJcblxuLy8gQ3JlYXRlIGFuIGludGVybmFsIHBhcmFtZXRlciBsaXN0IHVzaW5nIHRoZSBtZWRpYVR5cGVzIFZFQ1RPUlxuTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCBwYXJhbXMgPSBNV0cuQ3JlYXRlUGFyYW1zKG1lZGlhVHlwZXMpXG5cbi8vIEludGVybmFsIFBhcmFtZXRlciBMaXN0IGNyZWF0ZWQgd2l0aCBtZWRpYSB0eXBlczogXG4vLyBwYXJhbXMiLCAibmFtZSI6ICJNV0cuQ3JlYXRlUGFyYW1zIChWRUNUT1I8TWVkaWFUeXBlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY3JlYXRlZCBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNZWRpYVR5cGU+YDogVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IiwgImRlc2NyaXB0aW9uIjogIkNyZWF0ZXMgYW4gaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3Qgd2l0aCB0aGUgcHJvdmlkZWQgdmVjdG9yLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgVkVDVE9SIG9mIE1XRy5VcmxDYXRlZ29yeVxuVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gdXJsQ2F0ZWdvcmllcyA9IFtcIlNvY2lhbE1lZGlhXCIsIFwiU3RyZWFtaW5nTWVkaWFcIiwgXCJTaG9wcGluZ1wiXVxuXG4vLyBDcmVhdGUgYW4gaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3QgdXNpbmcgdGhlIE1XRy5DcmVhdGVQYXJhbXMgZnVuY3Rpb25cbk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QgcGFyYW1zID0gTVdHLkNyZWF0ZVBhcmFtcyh1cmxDYXRlZ29yaWVzKVxuXG4vLyBDcmVhdGVkIGludGVybmFsIHBhcmFtZXRlciBsaXN0IHdpdGggVVJMIGNhdGVnb3JpZXM6IFwiICsgcGFyYW1zIiwgIm5hbWUiOiAiTVdHLkNyZWF0ZVBhcmFtcyAoVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNyZWF0ZWQgaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLlVybENhdGVnb3J5PmA6IFRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCIsICJkZXNjcmlwdGlvbiI6ICJDcmVhdGVzIGFuIGludGVybmFsIHBhcmFtZXRlciBsaXN0IHdpdGggdGhlIHByb3ZpZGVkIHZlY3Rvci4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSBhIFZFQ1RPUiBvZiBOZXQuSVBcblZFQ1RPUjxOZXQuSVA+IGlwTGlzdCA9IFwiMTkyLjE2OC4xLjFcIiwgXCIxOTIuMTY4LjEuMlwiLCBcIjE5Mi4xNjguMS4zXCJcblxuLy8gQ3JlYXRlIGFuIGludGVybmFsIHBhcmFtZXRlciBsaXN0IHVzaW5nIHRoZSBWRUNUT1Igb2YgTmV0LklQXG5NV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IHBhcmFtcyA9IE1XRy5DcmVhdGVQYXJhbXMoaXBMaXN0KVxuXG4vLyBJbnRlcm5hbCBQYXJhbWV0ZXIgTGlzdCBjcmVhdGVkIHdpdGggSVBzOiBcbi8vIENvbW1lbnRlZCBvdXQgREVCVUcgbGluZTogREVCVUcoXCJJbnRlcm5hbCBQYXJhbWV0ZXIgTGlzdCBjcmVhdGVkIHdpdGggSVBzOiBcIiArIHBhcmFtcykiLCAibmFtZSI6ICJNV0cuQ3JlYXRlUGFyYW1zIChWRUNUT1I8TmV0LklQPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY3JlYXRlZCBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOZXQuSVA+YDogVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IiwgImRlc2NyaXB0aW9uIjogIkNyZWF0ZXMgYW4gaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3Qgd2l0aCB0aGUgcHJvdmlkZWQgdmVjdG9yLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5VTUJFUj4gcGFyYW1zID0gMSwgMiwgMywgNCwgNVxuTVdHLkNyZWF0ZVBhcmFtcyhwYXJhbXMpXG4vLyBQYXJhbWV0ZXJzIGNyZWF0ZWQ6IFwiICsgcGFyYW1zIiwgIm5hbWUiOiAiTVdHLkNyZWF0ZVBhcmFtcyAoVkVDVE9SPE5VTUJFUj4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNyZWF0ZWQgaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TlVNQkVSPmA6IFRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCIsICJkZXNjcmlwdGlvbiI6ICJDcmVhdGVzIGFuIGludGVybmFsIHBhcmFtZXRlciBsaXN0IHdpdGggdGhlIHByb3ZpZGVkIHZlY3Rvci4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBWRUNUT1Igb2YgU1RSSU5Hc1xuVkVDVE9SPFNUUklORz4gaW5pdGlhbFBhcmFtcyA9IFwicGFyYW0xXCIsIFwicGFyYW0yXCIsIFwicGFyYW0zXCJcblxuLy8gQ3JlYXRlIGFuIGludGVybmFsIHBhcmFtZXRlciBsaXN0IHVzaW5nIHRoZSBWRUNUT1Jcbk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QgcGFyYW1MaXN0ID0gTVdHLkNyZWF0ZVBhcmFtcyhpbml0aWFsUGFyYW1zKVxuXG4vLyBDcmVhdGVkIHBhcmFtZXRlciBsaXN0OiBcIiArIHBhcmFtTGlzdCIsICJuYW1lIjogIk1XRy5DcmVhdGVQYXJhbXMgKFZFQ1RPUjxTVFJJTkc+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBjcmVhdGVkIGludGVybmFsIHBhcmFtZXRlciBsaXN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlciBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjYXJyaWFnZS1yZXR1cm4gbGluZS1mZWVkIGNoYXJhY3RlciBzZXF1ZW5jZSBhcyBhIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIi8vIEdldCB0aGUgQ1JMRiBzdHJpbmdcblNUUklORyBjcmxmID0gTVdHLkNSTEZTdHJpbmcoKVxuXG4vLyBDb25zdHJ1Y3QgYSBtdWx0aS1saW5lIG1lc3NhZ2UgdXNpbmcgdGhlIENSTEYgc3RyaW5nXG5TVFJJTkcgbWVzc2FnZSA9IFwiSGVsbG8sXCIgKyBjcmxmICsgXCJXb3JsZCFcIlxuXG4vLyBQcmludCB0aGUgbWVzc2FnZSB0byB0aGUgY29uc29sZVxuLy8gREVCVUcobWVzc2FnZSkiLCAibmFtZSI6ICJNV0cuQ1JMRlN0cmluZyAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBjYXJyaWFnZS1yZXR1cm4gYW5kIGxpbmUtZmVlZCBjaGFyYWN0ZXIgc2VxdWVuY2UuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLlJlcXVlc3RSZXNwb25zZSIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGVpdGhlciBhIHJlcXVlc3Qgb3IgcmVzcG9uc2UgaGVhZGVyIGFuZCBib2R5LiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlJlcXVlc3RSZXNwb25zZSByZXF1ZXN0ID0gTVdHLlJlcXVlc3QoKVxuLy8gXCJSZXF1ZXN0IFVSTDogXCIgKyByZXF1ZXN0LlVybCIsICJuYW1lIjogIk1XRy5DdXJyZW50UmVxdWVzdE9yUmVzcG9uc2UgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBlaXRoZXIgYSByZXF1ZXN0IG9yIHJlc3BvbnNlIGhlYWRlciBhbmQgYm9keS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbWV0aG9kIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGN1cnJlbnQgY3VzdG9tZXIuIiwgImNvZGVfZXhhbXBsZSI6ICJST1VUSU5FIGV4YW1wbGUgT04gKCkge1xuICBTVFJJTkcgY3VzdG9tZXJJZGVudGlmaWNhdGlvbk1ldGhvZCA9IE1XRy5DdXN0b21lcklkZW50aWZpY2F0aW9uTWV0aG9kXG4gIElGIGN1c3RvbWVySWRlbnRpZmljYXRpb25NZXRob2QgPT0gXCJIZWFkZXJcIiBUSEVOIHtcbiAgICBTVFJJTkcgaGFuZGxpbmcgPSBcIlVzZSBoZWFkZXItYmFzZWQgY3VzdG9tZXIgaWRlbnRpZmljYXRpb25cIlxuICB9IEVMU0Uge1xuICAgIFNUUklORyBoYW5kbGluZyA9IFwiVXNlIGNvbmZpZ3VyZWQgZGVmYXVsdCBpZGVudGlmaWNhdGlvbiBmbG93XCJcbiAgfVxufSIsICJuYW1lIjogIk1XRy5DdXN0b21lcklkZW50aWZpY2F0aW9uTWV0aG9kICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGN1c3RvbWVyIGlkZW50aWZpY2F0aW9uIG1ldGhvZCBhcyBhIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBjeWNsZSAoUmVxdWVzdCwgUmVzcG9uc2UsIEVtYmVkZGVkT2JqZWN0KS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBjeWNsZU5hbWUgPSBNV0cuQ3ljbGVOYW1lKClcbi8vIEN1cnJlbnQgY3ljbGUgbmFtZTogKyBjeWNsZU5hbWVcblxuSUYgY3ljbGVOYW1lID09IFwiV2ViLlJlcXVlc3RcIiBUSEVOIHtcbiAgICAvLyBUaGlzIGlzIGEgV2ViIFJlcXVlc3QgY3ljbGUuXG59IEVMU0UgSUYgY3ljbGVOYW1lID09IFwiV2ViLlJlc3BvbnNlXCIgVEhFTiB7XG4gICAgLy8gVGhpcyBpcyBhIFdlYiBSZXNwb25zZSBjeWNsZS5cbn0gRUxTRSBJRiBjeWNsZU5hbWUgPT0gXCJFbWJlZGRlZE9iamVjdFwiIFRIRU4ge1xuICAgIC8vIFRoaXMgaXMgYW4gRW1iZWRkZWQgT2JqZWN0IGN5Y2xlLlxufSBFTFNFIHtcbiAgICAvLyBVbmtub3duIGN5Y2xlLlxufSIsICJuYW1lIjogIk1XRy5DeWNsZU5hbWUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBjeWNsZSAoUmVxdWVzdCwgUmVzcG9uc2UsIEVtYmVkZGVkT2JqZWN0KS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgdG9wIGN5Y2xlIChSZXF1ZXN0LCBSZXNwb25zZSkuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBSZXRyaWV2ZSB0aGUgbmFtZSBvZiB0aGUgdG9wbW9zdCBjeWNsZVxuU1RSSU5HIHRvcEN5Y2xlTmFtZSA9IE1XRy5DeWNsZVRvcE5hbWUoKVxuXG4vLyBUaGUgdG9wIGN5Y2xlIG5hbWUgaXM6IFwiICsgdG9wQ3ljbGVOYW1lXG5cbi8vIFBlcmZvcm0gYW4gYWN0aW9uIGJhc2VkIG9uIHRoZSB0b3AgY3ljbGUgbmFtZVxuSUYgdG9wQ3ljbGVOYW1lID09IFwiQmxvY2tDeWNsZVwiIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBibG9ja2VkIGR1ZSB0byBCbG9ja0N5Y2xlXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIkFjY2VzcyBhbGxvd2VkXCIpXG59IiwgIm5hbWUiOiAiTVdHLkN5Y2xlVG9wTmFtZSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSB0b3AgY3ljbGUgKFJlcXVlc3QsIFJlc3BvbnNlKS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGRhdGEgdHJpY2tsaW5nIGlzIGVuYWJsZWQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLkRhdGFUcmlja2xpbmdTZXR0aW5nIGRhdGFUcmlja2xpbmdTZXR0aW5nID0gTVdHLkRhdGFUcmlja2xpbmdTZXR0aW5nKClcbmRhdGFUcmlja2xpbmdTZXR0aW5nLmVuYWJsZSA9IFRSVUVcbmRhdGFUcmlja2xpbmdTZXR0aW5nLmNodW5rU2l6ZSA9IDEwMjQgIC8vIFNldCB0aGUgY2h1bmsgc2l6ZSB0byAxMDI0IGJ5dGVzXG5kYXRhVHJpY2tsaW5nU2V0dGluZy5pbnRlcnZhbCA9IDUgICAgICAvLyBTZXQgdGhlIGludGVydmFsIHRvIDUgc2Vjb25kc1xuXG4vLyBBcHBseSB0aGUgZGF0YSB0cmlja2xpbmcgc2V0dGluZ1xuTVdHLkFwcGx5RGF0YVRyaWNrbGluZ1NldHRpbmcoZGF0YVRyaWNrbGluZ1NldHRpbmcpXG5cbi8vIERhdGEgdHJpY2tsaW5nIGhhcyBiZWVuIGVuYWJsZWQgd2l0aCBjaHVuayBzaXplIDEwMjQgYnl0ZXMgYW5kIGludGVydmFsIDUgc2Vjb25kcy4iLCAibmFtZSI6ICJNV0cuRGF0YVRyaWNrbGluZ0VuYWJsZWQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgZGF0YSB0cmlja2xpbmcgaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgY3VycmVudCBkYXkgb2YgbW9udGggZmFsbHMgd2l0aGluIHRoZSBnaXZlbiByYW5nZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIE1vbnRoIGRheSByYW5nZXMgZnJvbSAxIHRvIDMxOyB1c2UgaHlwaGVucyBmb3IgcmFuZ2VzIGFuZCBjb21tYXMgZm9yIG11bHRpcGxlIHZhbHVlcyB3aXRob3V0IHdoaXRlc3BhY2UgKGUuZy4sIGAzLTcsMjVgKS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBkYXlSYW5nZSA9IFwiMy03LDI1XCJcblxuSUYgTVdHLkRheU9mTW9udGhJc0luUmFuZ2UoZGF5UmFuZ2UpIFRIRU4ge1xuICAgIC8vIFRoZSBjdXJyZW50IGRheSBpcyB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZS5cbiAgICBNV0cuQWxsb3coXCJEYXlJblJhbmdlXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBjdXJyZW50IGRheSBpcyBub3Qgd2l0aGluIHRoZSBzcGVjaWZpZWQgcmFuZ2UuXG4gICAgTVdHLkJsb2NrKFwiRGF5T3V0T2ZSYW5nZVwiKVxufSIsICJuYW1lIjogIk1XRy5EYXlPZk1vbnRoSXNJblJhbmdlIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IGRheSBvZiBtb250aCBmYWxscyB3aXRoaW4gdGhlIGdpdmVuIHJhbmdlLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBkZXNpcmVkIGRheS1vZi1tb250aCByYW5nZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IGRheSBvZiB0aGUgd2VlayBmYWxscyB3aXRoaW4gdGhlIGdpdmVuIHJhbmdlLCBvdGhlcndpc2UgYEZBTFNFYC4gV2Vla2RheSByYW5nZXMgZnJvbSAwIChTdW5kYXkpIHRvIDYgKFNhdHVyZGF5KTsgdXNlIGh5cGhlbnMgZm9yIHJhbmdlcyBhbmQgY29tbWFzIGZvciBtdWx0aXBsZSB2YWx1ZXMgd2l0aG91dCB3aGl0ZXNwYWNlIChlLmcuLCBgMCwzLTQsNmApLiIsICJjb2RlX2V4YW1wbGUiOiAiSUYgTVdHLkRheU9mV2Vla0lzSW5SYW5nZShcIjEtNVwiKSBUSEVOIHtcbiAgICBNV0cuQWxsb3coXCJBY2Nlc3MgYWxsb3dlZCBvbiB3ZWVrZGF5c1wiKVxufSBFTFNFIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgaXMgb25seSBhbGxvd2VkIG9uIHdlZWtkYXlzXCIpXG59IiwgIm5hbWUiOiAiTVdHLkRheU9mV2Vla0lzSW5SYW5nZSAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgY3VycmVudCBkYXkgb2YgdGhlIHdlZWsgZmFsbHMgd2l0aGluIHRoZSBnaXZlbiByYW5nZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgZGVzaXJlZCBkYXktb2Ytd2VlayByYW5nZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IGRheSBvZiB0aGUgeWVhciBmYWxscyB3aXRoaW4gdGhlIGdpdmVuIHJhbmdlLCBvdGhlcndpc2UgYEZBTFNFYC4gWWVhciBkYXkgcmFuZ2VzIGZyb20gMCAoSmFudWFyeSAxKSB0byAzNjU7IHVzZSBoeXBoZW5zIGZvciByYW5nZXMgYW5kIGNvbW1hcyBmb3IgbXVsdGlwbGUgdmFsdWVzIHdpdGhvdXQgd2hpdGVzcGFjZSAoZS5nLiwgYDUsMTEwLTExNSwyMzBgKS4iLCAiY29kZV9leGFtcGxlIjogIklGIE1XRy5EYXlPZlllYXJJc0luUmFuZ2UoXCI1LDExMC0xMTUsMjMwXCIpIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBpcyBibG9ja2VkIG9uIHRoZXNlIHNwZWNpZmljIGRheXMgb2YgdGhlIHllYXIuXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIkFjY2VzcyBpcyBhbGxvd2VkLlwiKVxufSIsICJuYW1lIjogIk1XRy5EYXlPZlllYXJJc0luUmFuZ2UgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgZGF5IG9mIHRoZSB5ZWFyIGZhbGxzIHdpdGhpbiB0aGUgZ2l2ZW4gcmFuZ2UsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGRlc2lyZWQgZGF5LW9mLXllYXIgcmFuZ2UuIn0sIHsicmV0dXJuX3R5cGUiOiAiTmV0LklQIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgb25lIElQIGFkZHJlc3Mgb2YgdGhlIGRlc3RpbmF0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiTmV0LklQIGRlc3RpbmF0aW9uSVAgPSBNV0cuRGVzdGluYXRpb25JUCgpXG4vLyBEZXN0aW5hdGlvbiBJUDogZGVzdGluYXRpb25JUFxuXG4vLyBFeGFtcGxlIGNvbmRpdGlvbiB0byBibG9jayBhIHNwZWNpZmljIElQXG5JRiBkZXN0aW5hdGlvbklQID09IFwiMTkyLjE2OC4xLjFcIiBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gdGhpcyBJUCBpcyBibG9ja2VkLlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJEZXN0aW5hdGlvbiBJUCBpcyBhbGxvd2VkLlwiKVxufSIsICJuYW1lIjogIk1XRy5EZXN0aW5hdGlvbklQICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgb25lIElQIGFkZHJlc3Mgb2YgdGhlIGRlc3RpbmF0aW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBob3N0IG9mIHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UgdGhhdCB3YXMgZGlzY2FyZGVkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gR2V0IHRoZSBkaXNjYXJkZWQgaG9zdFxuU1RSSU5HIGRpc2NhcmRlZEhvc3QgPSBNV0cuRGlzY2FyZGVkSG9zdCgpXG5cbi8vIERpc2NhcmRlZCBIb3N0OiBcIiArIGRpc2NhcmRlZEhvc3RcblxuLy8gUGVyZm9ybSBzb21lIGFjdGlvbiBiYXNlZCBvbiB0aGUgZGlzY2FyZGVkIGhvc3RcbklGIGRpc2NhcmRlZEhvc3QgPT0gXCJleGFtcGxlLmNvbVwiIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byBleGFtcGxlLmNvbSBpcyBibG9ja2VkIGR1ZSB0byBkaXNjYXJkZWQgaG9zdC5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiSG9zdCBpcyBub3QgZGlzY2FyZGVkLlwiKVxufSIsICJuYW1lIjogIk1XRy5EaXNjYXJkZWRIb3N0ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGhvc3RuYW1lIG9mIHRoZSBkaXNjYXJkZWQgcmVzb3VyY2UuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGlzdCBvZiBjbGFzc2lmaWNhdGlvbnMgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBzZXR0aW5nIGluIHRoZSBib2R5IHRleHQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdGhlIERMUCBjbGFzc2lmaWNhdGlvbiBzZXR0aW5nXG5NV0cuRExQQ2xhc3NpZmljYXRpb25TZXR0aW5nIGRscFNldHRpbmcgPSBNV0cuR2V0RExQQ2xhc3NpZmljYXRpb25TZXR0aW5nKFwiZXhhbXBsZV9zZXR0aW5nXCIpXG5cbi8vIERlZmluZSB0aGUgdGV4dCB0byBiZSBjbGFzc2lmaWVkXG5TVFJJTkcgdGV4dFRvQ2xhc3NpZnkgPSBcIlRoaXMgaXMgYSBzYW1wbGUgdGV4dCB0aGF0IG5lZWRzIHRvIGJlIGNsYXNzaWZpZWQuXCJcblxuLy8gR2V0IHRoZSBtYXRjaGVkIGNsYXNzaWZpY2F0aW9uc1xuVkVDVE9SPFNUUklORz4gbWF0Y2hlZENsYXNzaWZpY2F0aW9ucyA9IE1XRy5ETFBDbGFzc2lmaWNhdGlvbk1hdGNoZWRDbGFzc2lmaWNhdGlvbnMoZGxwU2V0dGluZywgdGV4dFRvQ2xhc3NpZnkpXG5cbi8vIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgbWF0Y2hlZCBjbGFzc2lmaWNhdGlvbnNcbklGIG1hdGNoZWRDbGFzc2lmaWNhdGlvbnMuU0laRSgpID4gMCBUSEVOIHtcbiAgICAvLyBMb2cgdGhlIG1hdGNoZWQgY2xhc3NpZmljYXRpb25zXG4gICAgLy8gRExQIGNsYXNzaWZpY2F0aW9ucyBtYXRjaGVkOiBcIiArIG1hdGNoZWRDbGFzc2lmaWNhdGlvbnMuU0laRSgpXG4gICAgRk9SIFNUUklORyBjbGFzc2lmaWNhdGlvbiBJTiBtYXRjaGVkQ2xhc3NpZmljYXRpb25zIHtcbiAgICAgICAgLy8gTWF0Y2hlZCBjbGFzc2lmaWNhdGlvbjogXCIgKyBjbGFzc2lmaWNhdGlvblxuICAgIH1cblxuICAgIC8vIEJsb2NrIHRoZSByZXF1ZXN0IHdpdGggYSBtZXNzYWdlIGluZGljYXRpbmcgYSBETFAgcG9saWN5IHZpb2xhdGlvblxuICAgIE1XRy5CbG9jayhcIkRMUCBwb2xpY3kgdmlvbGF0aW9uIGRldGVjdGVkXCIpXG59IEVMU0Uge1xuICAgIC8vIEFsbG93IHRoZSByZXF1ZXN0IHRvIHByb2NlZWRcbiAgICBNV0cuQWxsb3coXCJObyBETFAgcG9saWN5IHZpb2xhdGlvbnNcIilcbn0iLCAibmFtZSI6ICJNV0cuRExQQ2xhc3NpZmljYXRpb25NYXRjaGVkQ2xhc3NpZmljYXRpb25zIChNV0cuRExQQ2xhc3NpZmljYXRpb25TZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbGlzdCBvZiBjbGFzc2lmaWNhdGlvbnMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gY2xhc3NpZmljYXRpb24gc2V0dGluZyBpbiB0aGUgYm9keSB0ZXh0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkRMUENsYXNzaWZpY2F0aW9uU2V0dGluZ2A6IFRoZSBjbGFzc2lmaWNhdGlvbiBzZXR0aW5ncyB0byBiZSBtYXRjaGVkIGFnYWluc3QgdGhlIGJvZHkgdGV4dC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBsaXN0IG9mIGNsYXNzaWZpY2F0aW9ucyBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIHNldHRpbmcgaW4gdGhlIGdpdmVuIHRleHQuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuRExQRGljdGlvbmFyeVNldHRpbmcgZGxwU2V0dGluZyA9IFtcIlNlbnNpdGl2ZURhdGFEaWN0aW9uYXJ5XCJdXG5TVFJJTkcgdGV4dFRvQ2hlY2sgPSBcIlRoaXMgaXMgYSBzYW1wbGUgdGV4dCBjb250YWluaW5nIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cIlxuXG5JRiBNV0cuRExQRGljdGlvbmFyeU1hdGNoZXMoZGxwU2V0dGluZywgdGV4dFRvQ2hlY2spIFRIRU4ge1xuICAgIC8vIFNlbnNpdGl2ZSBkYXRhIGRldGVjdGVkIGluIHRoZSByZXF1ZXN0LlxuICAgIE1XRy5CbG9jayhcIlNlbnNpdGl2ZSBkYXRhIGRldGVjdGVkIGluIHRoZSByZXF1ZXN0LlwiKVxufSBFTFNFIHtcbiAgICAvLyBObyBzZW5zaXRpdmUgZGF0YSBkZXRlY3RlZC5cbiAgICBNV0cuQWxsb3coXCJObyBzZW5zaXRpdmUgZGF0YSBkZXRlY3RlZC5cIilcbn0iLCAibmFtZSI6ICJNV0cuRExQQ2xhc3NpZmljYXRpb25NYXRjaGVkQ2xhc3NpZmljYXRpb25zIChNV0cuRExQQ2xhc3NpZmljYXRpb25TZXR0aW5nLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyBjbGFzc2lmaWNhdGlvbnMgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIGNsYXNzaWZpY2F0aW9uIHdpdGhpbiB0aGUgcHJvdmlkZWQgdGV4dC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5ETFBDbGFzc2lmaWNhdGlvblNldHRpbmdgOiBUaGUgY2xhc3NpZmljYXRpb24gc2V0dGluZ3MgdG8gYmUgdXNlZC5cbjIuIGBTVFJJTkdgOiBUaGUgdGV4dCB0byBiZSBjbGFzc2lmaWVkLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxTVFJJTkc+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGxpc3Qgb2YgY2xhc3NpZmljYXRpb25zIG1hdGNoaW5nIHRoZSBpbnRlcm5hbCBzZXR0aW5nIGluIHRoZSBib2R5IHRleHQuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuSW50ZXJuYWxTZXR0aW5nIHNldHRpbmcgPSBNV0cuRExQQ2xhc3NpZmljYXRpb25NYXRjaGVkQ2xhc3NpZmljYXRpb25zKClcblNUUklORyBjbGFzc2lmaWNhdGlvbiA9IFwiQ29uZmlkZW50aWFsXCJcbk1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QgcGFyYW1zID0gTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCgpXG5cbi8vIEFkZCBwYXJhbWV0ZXJzIHRvIHRoZSBsaXN0IGlmIG5lZWRlZFxucGFyYW1zLkFkZChcIkNsYXNzaWZpY2F0aW9uXCIsIGNsYXNzaWZpY2F0aW9uKVxuXG4vLyBFeGVjdXRlIHRoZSBldmVudCB3aXRoIHRoZSBpbnRlcm5hbCBzZXR0aW5nLCBhIHN0cmluZyBpZGVudGlmaWVyLCBhbmQgdGhlIHBhcmFtZXRlciBsaXN0XG5NV0cuRXhlY3V0ZUV2ZW50KHNldHRpbmcsIFwiQ2hlY2tDbGFzc2lmaWNhdGlvblwiLCBwYXJhbXMpXG5cbi8vIEV4YW1wbGUgY29uZGl0aW9uIHRvIGJsb2NrIGJhc2VkIG9uIGNsYXNzaWZpY2F0aW9uXG5JRiBjbGFzc2lmaWNhdGlvbiA9PSBcIkNvbmZpZGVudGlhbFwiIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byBjb25maWRlbnRpYWwgZGF0YSBpcyBub3QgYWxsb3dlZC5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiQ2xhc3NpZmljYXRpb24gY2hlY2sgcGFzc2VkLlwiKVxufSIsICJuYW1lIjogIk1XRy5ETFBDbGFzc2lmaWNhdGlvbk1hdGNoZWRDbGFzc2lmaWNhdGlvbnMgKE1XRy5JbnRlcm5hbFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyBjbGFzc2lmaWNhdGlvbnMgdGhhdCBtYXRjaCB0aGUgY2xhc3NpZmljYXRpb24gZm91bmQgaW4gdGhlIGJvZHkgdGV4dC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFNldHRpbmdgOiBUaGUgaW50ZXJuYWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgdGhlIGNsYXNzaWZpY2F0aW9uIG1hdGNoaW5nIHByb2Nlc3MuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGlzdCBvZiB0ZXJtcyBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIERMUCBjbGFzc2lmaWNhdGlvbiBpbiB0aGUgYm9keSB0ZXh0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBETFAgY2xhc3NpZmljYXRpb24gc2V0dGluZ1xuTVdHLkRMUENsYXNzaWZpY2F0aW9uU2V0dGluZyBkbHBTZXR0aW5nID0gW1wiWW91ckRMUENsYXNzaWZpY2F0aW9uU2V0dGluZ1wiXVxuXG4vLyBEZWZpbmUgdGhlIHRleHQgdG8gYmUgYW5hbHl6ZWRcblNUUklORyB0ZXh0VG9BbmFseXplID0gXCJUaGlzIGlzIGEgc2FtcGxlIHRleHQgY29udGFpbmluZyBzZW5zaXRpdmUgaW5mb3JtYXRpb24gbGlrZSBjcmVkaXQgY2FyZCBudW1iZXJzIGFuZCBzb2NpYWwgc2VjdXJpdHkgbnVtYmVycy5cIlxuXG4vLyBHZXQgdGhlIG1hdGNoZWQgdGVybXNcblZFQ1RPUjxTVFJJTkc+IG1hdGNoZWRUZXJtcyA9IE1XRy5ETFBDbGFzc2lmaWNhdGlvbk1hdGNoZWRUZXJtcyhkbHBTZXR0aW5nLCB0ZXh0VG9BbmFseXplKVxuXG4vLyBNYXRjaGVkIFRlcm1zOiBcbi8vIERFQlVHKFwiTWF0Y2hlZCBUZXJtczogXCIgKyBtYXRjaGVkVGVybXMpIiwgIm5hbWUiOiAiTVdHLkRMUENsYXNzaWZpY2F0aW9uTWF0Y2hlZFRlcm1zIChNV0cuRExQQ2xhc3NpZmljYXRpb25TZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgdmVjdG9yIGNvbnRhaW5pbmcgYSBsaXN0IG9mIHRlcm1zIHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCBjbGFzc2lmaWNhdGlvbiBpbiB0aGUgYm9keSB0ZXh0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkRMUENsYXNzaWZpY2F0aW9uU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNwZWNpZnlpbmcgdGhlIGNsYXNzaWZpY2F0aW9uIGNyaXRlcmlhIHRvIG1hdGNoIHRlcm1zIGluIHRoZSBib2R5IHRleHQuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGlzdCBvZiB0ZXJtcyBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIERMUCBjbGFzc2lmaWNhdGlvbiBpbiB0aGUgZ2l2ZW4gdGV4dC4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgRExQIGNsYXNzaWZpY2F0aW9uIHNldHRpbmdcbk1XRy5ETFBDbGFzc2lmaWNhdGlvblNldHRpbmcgZGxwU2V0dGluZyA9IFtcIk15RExQQ2xhc3NpZmljYXRpb25TZXR0aW5nXCJdXG5cbi8vIERlZmluZSB0aGUgdGV4dCB0byBiZSBhbmFseXplZFxuU1RSSU5HIHRleHRUb0FuYWx5emUgPSBcIlRoaXMgaXMgYSBzYW1wbGUgdGV4dCBjb250YWluaW5nIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBsaWtlIGNyZWRpdCBjYXJkIG51bWJlcnMgYW5kIHNvY2lhbCBzZWN1cml0eSBudW1iZXJzLlwiXG5cbi8vIEdldCB0aGUgbWF0Y2hlZCB0ZXJtc1xuVkVDVE9SPFNUUklORz4gbWF0Y2hlZFRlcm1zID0gTVdHLkRMUENsYXNzaWZpY2F0aW9uTWF0Y2hlZFRlcm1zKGRscFNldHRpbmcsIHRleHRUb0FuYWx5emUpXG5cbi8vIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgbWF0Y2hlZCB0ZXJtc1xuSUYgbWF0Y2hlZFRlcm1zLlNJWkUoKSA+IDAgVEhFTiB7XG4gICAgLy8gTWF0Y2hlZCBETFAgVGVybXM6IFwiICsgbWF0Y2hlZFRlcm1zLlRPX1NUUklORygpXG4gICAgLy8gQmxvY2sgdGhlIGNvbm5lY3Rpb24gd2l0aCBhIHJlYXNvblxuICAgIE1XRy5CbG9jayhcIlNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBkZXRlY3RlZDogXCIgKyBtYXRjaGVkVGVybXMuVE9fU1RSSU5HKCkpXG59IEVMU0Uge1xuICAgIC8vIEFsbG93IHRoZSBjb25uZWN0aW9uIGlmIG5vIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBpcyBkZXRlY3RlZFxuICAgIE1XRy5BbGxvdyhcIk5vIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBkZXRlY3RlZFwiKVxufSIsICJuYW1lIjogIk1XRy5ETFBDbGFzc2lmaWNhdGlvbk1hdGNoZWRUZXJtcyAoTVdHLkRMUENsYXNzaWZpY2F0aW9uU2V0dGluZywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgdmVjdG9yIGNvbnRhaW5pbmcgdGVybXMgZnJvbSB0aGUgdGV4dCB0aGF0IG1hdGNoIHRoZSBETFAgY2xhc3NpZmljYXRpb24gc2V0dGluZ3MuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuRExQQ2xhc3NpZmljYXRpb25TZXR0aW5nYDogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIERMUCBjbGFzc2lmaWNhdGlvbi5cbjIuIGBTVFJJTkdgOiBUaGUgdGV4dCB0byBiZSBhbmFseXplZCBmb3IgbWF0Y2hpbmcgdGVybXMuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGlzdCBvZiB0ZXJtcyBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIERMUCBjbGFzc2lmaWNhdGlvbiBpbiB0aGUgYm9keSB0ZXh0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBETFAgY2xhc3NpZmljYXRpb24gc2V0dGluZ3Ncbk1XRy5ETFBDbGFzc2lmaWNhdGlvblNldHRpbmcgZGxwU2V0dGluZ3MgPSAuLi4gLy8gSW5pdGlhbGl6ZSB3aXRoIGFwcHJvcHJpYXRlIHNldHRpbmdzXG5cbi8vIERlZmluZSB0aGUgdGV4dCB0byBiZSBhbmFseXplZFxuU1RSSU5HIHRleHRUb0FuYWx5emUgPSBcIlRoaXMgaXMgYSBzYW1wbGUgdGV4dCBjb250YWluaW5nIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cIlxuXG4vLyBHZXQgdGhlIG1hdGNoZWQgdGVybXNcblZFQ1RPUjxTVFJJTkc+IG1hdGNoZWRUZXJtcyA9IE1XRy5ETFBDbGFzc2lmaWNhdGlvbk1hdGNoZWRUZXJtcyhkbHBTZXR0aW5ncywgdGV4dFRvQW5hbHl6ZSlcblxuLy8gTWF0Y2hlZCBUZXJtczogXCIgKyBtYXRjaGVkVGVybXMiLCAibmFtZSI6ICJNV0cuRExQQ2xhc3NpZmljYXRpb25NYXRjaGVkVGVybXMgKE1XRy5JbnRlcm5hbFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0ZXJtcyBmcm9tIHRoZSBib2R5IHRleHQgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIGNsYXNzaWZpY2F0aW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBpbnRlcm5hbCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGUgY2xhc3NpZmljYXRpb24gbWF0Y2hpbmcgcHJvY2Vzcy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBib2R5IHRleHQgY29udGFpbnMgYW55IERMUCBjbGFzc2lmaWNhdGlvbiBtYXRjaGVzLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5ETFBEaWN0aW9uYXJ5U2V0dGluZyBkaWN0aW9uYXJ5U2V0dGluZyA9IFtcIlNlbnNpdGl2ZURhdGFEaWN0aW9uYXJ5XCJdXG5TVFJJTkcgdGV4dFRvQ2hlY2sgPSBcIlRoaXMgaXMgYSBzYW1wbGUgdGV4dCBjb250YWluaW5nIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cIlxuXG5JRiBNV0cuRExQRGljdGlvbmFyeU1hdGNoZXMoZGljdGlvbmFyeVNldHRpbmcsIHRleHRUb0NoZWNrKSBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJTZW5zaXRpdmUgZGF0YSBkZXRlY3RlZCBpbiB0aGUgcmVxdWVzdC5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiTm8gc2Vuc2l0aXZlIGRhdGEgZm91bmQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLkRMUENsYXNzaWZpY2F0aW9uTWF0Y2hlcyAoTVdHLkRMUENsYXNzaWZpY2F0aW9uU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGJvZHkgdGV4dCBjb250YWlucyBhbnkgRExQIGNsYXNzaWZpY2F0aW9uIG1hdGNoZXMsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkRMUENsYXNzaWZpY2F0aW9uU2V0dGluZ2A6IFRoZSBzZXR0aW5ncyB1c2VkIGZvciBkZXRlY3RpbmcgY2xhc3NpZmljYXRpb24gbWF0Y2hlcyBpbiB0aGUgYm9keSB0ZXh0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIHRleHQgY29udGFpbnMgYW55IERMUCBjbGFzc2lmaWNhdGlvbiBtYXRjaGVzLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5ETFBDbGFzc2lmaWNhdGlvblNldHRpbmcgZGxwU2V0dGluZyA9IFtcIkRMUF9TZXR0aW5nX05hbWVcIl1cblNUUklORyBjbGFzc2lmaWNhdGlvblRvQ2hlY2sgPSBcIkNvbmZpZGVudGlhbFwiXG5cbklGIE1XRy5ETFBDbGFzc2lmaWNhdGlvbk1hdGNoZXMoZGxwU2V0dGluZywgY2xhc3NpZmljYXRpb25Ub0NoZWNrKSBUSEVOIHtcbiAgICAvLyBETFAgY2xhc3NpZmljYXRpb24gbWF0Y2hlczogQ29uZmlkZW50aWFsXG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvbiBpcyBub3QgYWxsb3dlZC5cIilcbn0gRUxTRSB7XG4gICAgLy8gRExQIGNsYXNzaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoOiBDb25maWRlbnRpYWxcbiAgICBNV0cuQWxsb3coXCJETFAgY2hlY2sgcGFzc2VkXCIpXG59IiwgIm5hbWUiOiAiTVdHLkRMUENsYXNzaWZpY2F0aW9uTWF0Y2hlcyAoTVdHLkRMUENsYXNzaWZpY2F0aW9uU2V0dGluZywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gdGV4dCBjb250YWlucyBhbnkgRExQIGNsYXNzaWZpY2F0aW9uIG1hdGNoZXMsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkRMUENsYXNzaWZpY2F0aW9uU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBETFAgY2xhc3NpZmljYXRpb24uXG4yLiBgU1RSSU5HYDogVGhlIHRleHQgdG8gYmUgc2VhcmNoZWQgZm9yIGNsYXNzaWZpY2F0aW9uIG1hdGNoZXMuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgYm9keSB0ZXh0IGNvbnRhaW5zIGFueSBETFAgY2xhc3NpZmljYXRpb24gbWF0Y2hlcywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuRExQRGljdGlvbmFyeVNldHRpbmcgZGxwU2V0dGluZyA9IFtcIlNlbnNpdGl2ZURhdGFEaWN0aW9uYXJ5XCJdXG5TVFJJTkcgdGV4dFRvQ2hlY2sgPSBcIlRoaXMgaXMgYSBzYW1wbGUgdGV4dCBjb250YWluaW5nIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cIlxuXG5JRiBNV0cuRExQRGljdGlvbmFyeU1hdGNoZXMoZGxwU2V0dGluZywgdGV4dFRvQ2hlY2spIFRIRU4ge1xuICAgIC8vIERMUCBtYXRjaCBmb3VuZC4gQmxvY2tpbmcgdGhlIHJlcXVlc3QuXG4gICAgTVdHLkJsb2NrKFwiU2Vuc2l0aXZlIGRhdGEgZGV0ZWN0ZWQuXCIpXG59IEVMU0Uge1xuICAgIC8vIE5vIERMUCBtYXRjaCBmb3VuZC4gQWxsb3dpbmcgdGhlIHJlcXVlc3QuXG4gICAgTVdHLkFsbG93KFwiTm8gc2Vuc2l0aXZlIGRhdGEgZGV0ZWN0ZWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLkRMUENsYXNzaWZpY2F0aW9uTWF0Y2hlcyAoTVdHLkludGVybmFsU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgY2xhc3NpZmljYXRpb24gbWF0Y2hlcyBhcmUgZm91bmQgaW4gdGhlIGJvZHkgdGV4dCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxTZXR0aW5nYDogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdXNlZCBmb3Igc2VhcmNoaW5nIGNsYXNzaWZpY2F0aW9uIG1hdGNoZXMgaW4gdGhlIGJvZHkgdGV4dC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBsaXN0IG9mIHRlcm1zIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgRExQIGRpY3Rpb25hcnkgaW4gdGhlIGJvZHkgdGV4dC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5ETFBEaWN0aW9uYXJ5U2V0dGluZyBteURMUERpY3Rpb25hcnlTZXR0aW5nID0gW1wibXlETFBEaWN0aW9uYXJ5XCJdXG5TVFJJTkcgdGV4dFRvQ2hlY2sgPSBcIlRoaXMgaXMgYSBzYW1wbGUgdGV4dCB0byBjaGVjayBhZ2FpbnN0IHRoZSBETFAgZGljdGlvbmFyeS5cIlxuXG5WRUNUT1I8U1RSSU5HPiBtYXRjaGVkVGVybXMgPSBNV0cuRExQRGljdGlvbmFyeU1hdGNoZWRUZXJtcyhteURMUERpY3Rpb25hcnlTZXR0aW5nLCB0ZXh0VG9DaGVjaylcblxuSUYgbWF0Y2hlZFRlcm1zLlNJWkUoKSA+IDAgVEhFTiB7XG4gICAgLy8gTWF0Y2hlZCB0ZXJtcyBmb3VuZDogXCIgKyBtYXRjaGVkVGVybXMuVE9fU1RSSU5HKClcbiAgICBNV0cuQmxvY2soXCJETFAgcG9saWN5IHZpb2xhdGlvbjogU2Vuc2l0aXZlIHRlcm1zIGRldGVjdGVkLlwiKVxufSBFTFNFIHtcbiAgICAvLyBObyBtYXRjaGVkIHRlcm1zIGZvdW5kLlxuICAgIE1XRy5BbGxvdyhcIk5vIERMUCBwb2xpY3kgdmlvbGF0aW9uLlwiKVxufSIsICJuYW1lIjogIk1XRy5ETFBEaWN0aW9uYXJ5TWF0Y2hlZFRlcm1zIChNV0cuRExQRGljdGlvbmFyeVNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3Igb2YgdGVybXMgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIGRpY3Rpb25hcnkgd2l0aGluIHRoZSBib2R5IHRleHQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuRExQRGljdGlvbmFyeVNldHRpbmdgOiBUaGUgc2V0dGluZ3MgdG8gdXNlIGZvciBtYXRjaGluZyB0ZXJtcyBpbiB0aGUgYm9keSB0ZXh0LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxTVFJJTkc+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGxpc3Qgb2YgdGVybXMgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBETFAgZGljdGlvbmFyeSBpbiB0aGUgZ2l2ZW4gdGV4dC4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgRExQIGRpY3Rpb25hcnkgc2V0dGluZ1xuTVdHLkRMUERpY3Rpb25hcnlTZXR0aW5nIGRpY3Rpb25hcnlTZXR0aW5nID0gW1wiU2Vuc2l0aXZlVGVybXNEaWN0aW9uYXJ5XCJdXG5cbi8vIERlZmluZSB0aGUgdGV4dCB0byBzZWFyY2hcblNUUklORyB0ZXh0VG9TZWFyY2ggPSBcIlRoaXMgaXMgYSBzYW1wbGUgdGV4dCBjb250YWluaW5nIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cIlxuXG4vLyBHZXQgdGhlIG1hdGNoZWQgdGVybXNcblZFQ1RPUjxTVFJJTkc+IG1hdGNoZWRUZXJtcyA9IE1XRy5ETFBEaWN0aW9uYXJ5TWF0Y2hlZFRlcm1zKGRpY3Rpb25hcnlTZXR0aW5nLCB0ZXh0VG9TZWFyY2gpXG5cbi8vIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgbWF0Y2hlZCB0ZXJtc1xuSUYgbWF0Y2hlZFRlcm1zLlNJWkUoKSA+IDAgVEhFTiB7XG4gICAgLy8gQmxvY2sgdGhlIGNvbm5lY3Rpb24gaWYgc2Vuc2l0aXZlIHRlcm1zIGFyZSBmb3VuZFxuICAgIE1XRy5CbG9jayhcIlNlbnNpdGl2ZSB0ZXJtcyBkZXRlY3RlZDogXCIgKyBtYXRjaGVkVGVybXMuVE9fU1RSSU5HKCkpXG59IEVMU0Uge1xuICAgIC8vIEFsbG93IHRoZSBjb25uZWN0aW9uIGlmIG5vIHNlbnNpdGl2ZSB0ZXJtcyBhcmUgZm91bmRcbiAgICBNV0cuQWxsb3coXCJObyBzZW5zaXRpdmUgdGVybXMgZGV0ZWN0ZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuRExQRGljdGlvbmFyeU1hdGNoZWRUZXJtcyAoTVdHLkRMUERpY3Rpb25hcnlTZXR0aW5nLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0ZXJtcyBmcm9tIHRoZSB0ZXh0IHRoYXQgbWF0Y2ggZW50cmllcyBpbiB0aGUgc3BlY2lmaWVkIGRpY3Rpb25hcnkgc2V0dGluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5ETFBEaWN0aW9uYXJ5U2V0dGluZ2A6IFRoZSBkaWN0aW9uYXJ5IHNldHRpbmdzIHRvIG1hdGNoIGFnYWluc3QuXG4yLiBgU1RSSU5HYDogVGhlIHRleHQgdG8gc2VhcmNoIGZvciBtYXRjaGluZyB0ZXJtcy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBsaXN0IG9mIHRlcm1zIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgRExQIGRpY3Rpb25hcnkgaW4gdGhlIGJvZHkgdGV4dC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5ETFBEaWN0aW9uYXJ5U2V0dGluZyBkaWN0aW9uYXJ5U2V0dGluZyA9IFtcImV4YW1wbGVfZGljdGlvbmFyeVwiXVxuU1RSSU5HIHRleHRUb1NlYXJjaCA9IFwiVGhpcyBpcyBhIHNhbXBsZSB0ZXh0IHRvIHNlYXJjaCBmb3IgZGljdGlvbmFyeSB0ZXJtcy5cIlxuXG5WRUNUT1I8U1RSSU5HPiBtYXRjaGVkVGVybXMgPSBNV0cuRExQRGljdGlvbmFyeU1hdGNoZWRUZXJtcyhkaWN0aW9uYXJ5U2V0dGluZywgdGV4dFRvU2VhcmNoKVxuXG5JRiBtYXRjaGVkVGVybXMuU0laRSgpID4gMCBUSEVOIHtcbiAgICAvLyBNYXRjaGVkIHRlcm1zIGZvdW5kOiBcIiArIG1hdGNoZWRUZXJtcy5UT19TVFJJTkcoKVxufSBFTFNFIHtcbiAgICAvLyBObyBtYXRjaGVkIHRlcm1zIGZvdW5kLlxufSIsICJuYW1lIjogIk1XRy5ETFBEaWN0aW9uYXJ5TWF0Y2hlZFRlcm1zIChNV0cuSW50ZXJuYWxTZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgdmVjdG9yIG9mIHRlcm1zIGZyb20gdGhlIGJvZHkgdGV4dCB0aGF0IG1hdGNoIHRoZSBkaWN0aW9uYXJ5IHNwZWNpZmllZCBpbiBgTVdHLkludGVybmFsU2V0dGluZ2AuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxTZXR0aW5nYDogVGhlIGludGVybmFsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBkaWN0aW9uYXJ5IG1hdGNoaW5nIHByb2Nlc3MuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgYm9keSB0ZXh0IGNvbnRhaW5zIGFueSBETFAgZGljdGlvbmFyeSBtYXRjaGVzLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5ETFBEaWN0aW9uYXJ5U2V0dGluZyBkbHBTZXR0aW5nID0gW1wiU2Vuc2l0aXZlRGF0YURpY3Rpb25hcnlcIl1cblNUUklORyByZXF1ZXN0RGF0YSA9IFwiVGhpcyBpcyBzb21lIHNhbXBsZSB0ZXh0IHRvIGNoZWNrIGZvciBzZW5zaXRpdmUgZGF0YS5cIlxuXG5JRiBNV0cuRExQRGljdGlvbmFyeU1hdGNoZXMoZGxwU2V0dGluZywgcmVxdWVzdERhdGEpIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIlNlbnNpdGl2ZSBkYXRhIGRldGVjdGVkIGluIHRoZSByZXF1ZXN0LlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJObyBzZW5zaXRpdmUgZGF0YSBkZXRlY3RlZC5cIilcbn0iLCAibmFtZSI6ICJNV0cuRExQRGljdGlvbmFyeU1hdGNoZXMgKE1XRy5ETFBEaWN0aW9uYXJ5U2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgZGljdGlvbmFyeSBtYXRjaGVzIGFyZSBmb3VuZCBpbiB0aGUgYm9keSB0ZXh0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5ETFBEaWN0aW9uYXJ5U2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGUgZGljdGlvbmFyeSBhZ2FpbnN0IHdoaWNoIHRoZSBib2R5IHRleHQgd2lsbCBiZSBjaGVja2VkLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIHRleHQgY29udGFpbnMgYW55IERMUCBkaWN0aW9uYXJ5IG1hdGNoZXMsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBETFAgZGljdGlvbmFyeSBzZXR0aW5nXG5NV0cuRExQRGljdGlvbmFyeVNldHRpbmcgZGxwRGljdGlvbmFyeSA9IFtcIlNlbnNpdGl2ZURhdGFEaWN0aW9uYXJ5XCJdXG5cbi8vIERlZmluZSB0aGUgdGV4dCB0byBzZWFyY2hcblNUUklORyB0ZXh0VG9TZWFyY2ggPSBcIlRoaXMgaXMgYSBzYW1wbGUgdGV4dCBjb250YWluaW5nIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cIlxuXG4vLyBDaGVjayBmb3IgZGljdGlvbmFyeSBtYXRjaGVzXG5CT09MRUFOIGhhc01hdGNoZXMgPSBNV0cuRExQRGljdGlvbmFyeU1hdGNoZXMoZGxwRGljdGlvbmFyeSwgdGV4dFRvU2VhcmNoKVxuXG4vLyBUYWtlIGFjdGlvbiBiYXNlZCBvbiB0aGUgcmVzdWx0XG5JRiBoYXNNYXRjaGVzIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIlNlbnNpdGl2ZSBkYXRhIGRldGVjdGVkIGluIHRoZSByZXF1ZXN0LlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJObyBzZW5zaXRpdmUgZGF0YSBkZXRlY3RlZC5cIilcbn0iLCAibmFtZSI6ICJNV0cuRExQRGljdGlvbmFyeU1hdGNoZXMgKE1XRy5ETFBEaWN0aW9uYXJ5U2V0dGluZywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBkaWN0aW9uYXJ5IG1hdGNoZXMgYXJlIGZvdW5kIGluIHRoZSBwcm92aWRlZCB0ZXh0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5ETFBEaWN0aW9uYXJ5U2V0dGluZ2A6IFRoZSBkaWN0aW9uYXJ5IHNldHRpbmdzIHRvIHVzZSBmb3IgbWF0Y2hpbmcuXG4yLiBgU1RSSU5HYDogVGhlIHRleHQgdG8gc2VhcmNoIGZvciBkaWN0aW9uYXJ5IG1hdGNoZXMuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgYm9keSB0ZXh0IGNvbnRhaW5zIGFueSBETFAgZGljdGlvbmFyeSBtYXRjaGVzLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5ETFBEaWN0aW9uYXJ5U2V0dGluZyBkaWN0aW9uYXJ5U2V0dGluZyA9IFtcIlNlbnNpdGl2ZURhdGFEaWN0aW9uYXJ5XCJdXG5TVFJJTkcgdGV4dFRvQ2hlY2sgPSBcIlRoaXMgaXMgYSBzYW1wbGUgdGV4dCB0aGF0IG1pZ2h0IGNvbnRhaW4gc2Vuc2l0aXZlIGRhdGEuXCJcblxuSUYgTVdHLkRMUERpY3Rpb25hcnlNYXRjaGVzKGRpY3Rpb25hcnlTZXR0aW5nLCB0ZXh0VG9DaGVjaykgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiU2Vuc2l0aXZlIGRhdGEgZGV0ZWN0ZWQgaW4gdGhlIHJlcXVlc3QuXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIk5vIHNlbnNpdGl2ZSBkYXRhIGZvdW5kLlwiKVxufSIsICJuYW1lIjogIk1XRy5ETFBEaWN0aW9uYXJ5TWF0Y2hlcyAoTVdHLkludGVybmFsU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGJvZHkgdGV4dCBjb250YWlucyBhbnkgRExQIGRpY3Rpb25hcnkgbWF0Y2hlcywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxTZXR0aW5nYDogVGhlIGludGVybmFsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBkaWN0aW9uYXJ5IG1hdGNoaW5nIHByb2Nlc3MuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE5ldC5JUD4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGlzdCBvZiBJUCBhZGRyZXNzZXMgcmVzb2x2ZWQgYnkgRE5TIGZvciB0aGUgZ2l2ZW4gaG9zdG5hbWUuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgaG9zdCA9IFwiZXhhbXBsZS5jb21cIlxuU1RSSU5HIGlwQWRkcmVzcyA9IE1XRy5ETlNMb29rdXBIb3N0KGhvc3QpXG5cbi8vIFRoZSBJUCBhZGRyZXNzIGZvciBleGFtcGxlLmNvbSBpczogaXBBZGRyZXNzIiwgIm5hbWUiOiAiTVdHLkROU0xvb2t1cEhvc3QgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGxpc3Qgb2YgSVAgYWRkcmVzc2VzIHJlc29sdmVkIGZvciB0aGUgc3BlY2lmaWVkIGhvc3RuYW1lLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGhvc3RuYW1lIHRvIGxvb2sgdXAuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGlzdCBvZiBkb21haW4gbmFtZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBJUCBhZGRyZXNzIHZpYSByZXZlcnNlIEROUyBsb29rdXAuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdGhlIElQIGFkZHJlc3MgZm9yIHdoaWNoIHRvIHBlcmZvcm0gdGhlIHJldmVyc2UgRE5TIGxvb2t1cFxuTmV0LklQIGlwQWRkcmVzcyA9IFwiOC44LjguOFwiXG5cbi8vIFBlcmZvcm0gdGhlIHJldmVyc2UgRE5TIGxvb2t1cFxuVkVDVE9SPFNUUklORz4gZG9tYWluTmFtZXMgPSBNV0cuRE5TTG9va3VwSG9zdFJldmVyc2UoaXBBZGRyZXNzKVxuXG4vLyBSZXZlcnNlIEROUyBsb29rdXAgcmVzdWx0cyBmb3IgSVAgXG5GT1IgRUFDSCBkb21haW5OYW1lIElOIGRvbWFpbk5hbWVzIHtcbiAgICAvLyBkb21haW5OYW1lXG59IiwgIm5hbWUiOiAiTVdHLkROU0xvb2t1cEhvc3RSZXZlcnNlIChOZXQuSVApIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgZG9tYWluIG5hbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gSVAgYWRkcmVzcy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5ldC5JUGA6IFRoZSBJUCBhZGRyZXNzIGZvciB3aGljaCB0byBwZXJmb3JtIHRoZSByZXZlcnNlIEROUyBsb29rdXAuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGRvbWFpbiBuYW1lIGV4dHJhY3RlZCBmcm9tIHRoZSBnaXZlbiBVUkwuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblNUUklORyBkb21haW5TdWZmaXggPSBNV0cuRG9tYWluU3VmZml4KGN1cnJlbnRVcmwpXG5cbi8vIFRoZSBkb21haW4gc3VmZml4IG9mIHRoZSBjdXJyZW50IFVSTCBpczogZG9tYWluU3VmZml4XG5cbklGIGRvbWFpblN1ZmZpeCA9PSBcImNvbVwiIFRIRU4ge1xuICAgIE1XRy5BbGxvdyhcIkFsbG93ZWQgLmNvbSBkb21haW5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkJsb2NrKFwiQmxvY2tlZCBub24tLmNvbSBkb21haW5cIilcbn0iLCAibmFtZSI6ICJNV0cuRG9tYWluIChNV0cuVVJMKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBkb21haW4gbmFtZSBleHRyYWN0ZWQgZnJvbSB0aGUgZ2l2ZW4gVVJMLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVSTGA6IFRoZSBVUkwgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBkb21haW4uIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGRvbWFpbiBmb3IgdGhlIGdpdmVuIGhvc3QuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblNUUklORyBkb21haW4gPSBjdXJyZW50VXJsLkRvbWFpbigpXG5cbklGIGRvbWFpbiA9PSBcImV4YW1wbGUuY29tXCIgVEhFTiB7XG4gICAgLy8gQWNjZXNzIHRvIGV4YW1wbGUuY29tIGlzIG5vdCBhbGxvd2VkLlxuICAgIE1XRy5CbG9jaygpXG59IEVMU0Uge1xuICAgIC8vIERvbWFpbiBpcyBhbGxvd2VkLlxuICAgIE1XRy5BbGxvdygpXG59IiwgIm5hbWUiOiAiTVdHLkRvbWFpbiAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBkb21haW4gbmFtZSBleHRyYWN0ZWQgZnJvbSB0aGUgZ2l2ZW4gaG9zdCBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgaG9zdCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGRvbWFpbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgdG9wLWxldmVsIGRvbWFpbiAoVExEKSBzdWZmaXggZXh0cmFjdGVkIGZyb20gdGhlIGdpdmVuIFVSTC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuU1RSSU5HIGRvbWFpblN1ZmZpeCA9IE1XRy5Eb21haW5TdWZmaXgoY3VycmVudFVybClcbi8vIFRoZSBkb21haW4gc3VmZml4IG9mIHRoZSBjdXJyZW50IFVSTCBpczogZG9tYWluU3VmZml4IiwgIm5hbWUiOiAiTVdHLkRvbWFpblN1ZmZpeCAoTVdHLlVSTCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdG9wLWxldmVsIGRvbWFpbiAoVExEKSBwYXJ0IG9mIGEgZ2l2ZW4gVVJMIGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVSTGA6IFRoZSBVUkwgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBkb21haW4gc3VmZml4LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBkb21haW4gc3VmZml4IGZvciB0aGUgZ2l2ZW4gaG9zdC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuU1RSSU5HIGRvbWFpblN1ZmZpeCA9IE1XRy5Eb21haW5TdWZmaXgoY3VycmVudFVybClcbi8vIFRoZSBkb21haW4gc3VmZml4IGlzOiBkb21haW5TdWZmaXgiLCAibmFtZSI6ICJNV0cuRG9tYWluU3VmZml4IChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHRvcC1sZXZlbCBkb21haW4gc3VmZml4IG9mIHRoZSBzcGVjaWZpZWQgaG9zdCBuYW1lLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGhvc3QgbmFtZSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGRvbWFpbiBzdWZmaXguIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGNvbGxlY3Rpb24gbmFtZSBvZiBlcnJvciBtZXNzYWdlcy4gT25seSB2YWxpZCBhZnRlciBhIGJsb2NrIGFjdGlvbiBpcyBleGVjdXRlZC4iLCAiY29kZV9leGFtcGxlIjogIi8vIENyZWF0ZSBhIG5ldyBFbmRVc2VyTWVzc2FnZUNvbGxlY3Rpb24gb2JqZWN0XG5NV0cuRW5kVXNlck1lc3NhZ2VDb2xsZWN0aW9uIG1lc3NhZ2VDb2xsZWN0aW9uID0gTVdHLkVuZFVzZXJNZXNzYWdlQ29sbGVjdGlvbigpXG5cbi8vIEFkZCBhIG1lc3NhZ2UgdG8gdGhlIGNvbGxlY3Rpb25cbm1lc3NhZ2VDb2xsZWN0aW9uLkFkZE1lc3NhZ2UoXCJUaGlzIGlzIGEgdGVzdCBtZXNzYWdlIGZvciB0aGUgZW5kIHVzZXIuXCIpXG5cbi8vIEFkZCBhbm90aGVyIG1lc3NhZ2UgdG8gdGhlIGNvbGxlY3Rpb25cbm1lc3NhZ2VDb2xsZWN0aW9uLkFkZE1lc3NhZ2UoXCJQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgcHJvdmlkZWQuXCIpXG5cbi8vIERpc3BsYXkgdGhlIG1lc3NhZ2VzIHRvIHRoZSBlbmQgdXNlclxubWVzc2FnZUNvbGxlY3Rpb24uRGlzcGxheSgpXG5cbi8vIE9wdGlvbmFsbHksIGJsb2NrIHRoZSBjb25uZWN0aW9uIHdpdGggYSBjdXN0b20gbWVzc2FnZVxuTVdHLkJsb2NrKFwiRW5kIHVzZXIgbWVzc2FnZXMgaGF2ZSBiZWVuIGRpc3BsYXllZC5cIikiLCAibmFtZSI6ICJNV0cuRW5kVXNlck1lc3NhZ2VDb2xsZWN0aW9uICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNvbGxlY3Rpb24gY29udGFpbmluZyBlcnJvciBtZXNzYWdlcyB0aGF0IGlzIHZhbGlkIGFmdGVyIGV4ZWN1dGluZyBhIGJsb2NrIGFjdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhbiBpbnRlcm5hbCBVUkwgZm9yIGFkZHJlc3NpbmcgZW5kIHVzZXIgcmVxdWVzdHMsIHN1Y2ggYXMgZXJyb3IgbWVzc2FnZXMuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcbi8vIFRoZSBjdXJyZW50IFVSTCBpczogKyBjdXJyZW50VXJsIiwgIm5hbWUiOiAiTVdHLkVuZFVzZXJVUkwgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhbiBpbnRlcm5hbCBVUkwgYXMgYSBzdHJpbmcgdG8gaGFuZGxlIGVuZCB1c2VyIHJlcXVlc3RzIHN1Y2ggYXMgZXJyb3IgbWVzc2FnZXMuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYW4gaW50ZXJuYWwgVVJMIGZvciBhZGRyZXNzaW5nIGVuZCB1c2VyIHJlcXVlc3RzLCBzdWNoIGFzIGVycm9yIG1lc3NhZ2VzLCBhbHdheXMgcG9pbnRpbmcgdG8gZ2xvYmFsIHJlc291cmNlcy4iLCAiY29kZV9leGFtcGxlIjogIi8vIFJldHJpZXZlIHRoZSBVUkwgb2YgdGhlIGdsb2JhbCByZXNvdXJjZSBmb3IgdGhlIGVuZCB1c2VyXG5NV0cuVVJMIGVuZFVzZXJSZXNvdXJjZVVSTCA9IE1XRy5FbmRVc2VyVVJMR2xvYmFsUmVzb3VyY2UoKVxuXG4vLyBFbmQgVXNlciBHbG9iYWwgUmVzb3VyY2UgVVJMOiBcIiArIGVuZFVzZXJSZXNvdXJjZVVSTFxuXG4vLyBFeGFtcGxlIGNvbmRpdGlvbiB0byBibG9jayBhY2Nlc3MgYmFzZWQgb24gdGhlIFVSTFxuSUYgZW5kVXNlclJlc291cmNlVVJMID09IFwiaHR0cDovL2V4YW1wbGUuY29tL3Jlc3RyaWN0ZWRcIiBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gdGhpcyByZXNvdXJjZSBpcyByZXN0cmljdGVkLlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJBY2Nlc3MgZ3JhbnRlZCB0byB0aGUgcmVzb3VyY2UuXCIpXG59IiwgIm5hbWUiOiAiTVdHLkVuZFVzZXJVUkxHbG9iYWxSZXNvdXJjZSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBpbnRlcm5hbCBwYXRoIGZvciBnbG9iYWwgcmVzb3VyY2VzIGFzIGEgc3RyaW5nIHRvIGFkZHJlc3MgZW5kLXVzZXIgcmVxdWVzdHMsIHN1Y2ggYXMgZXJyb3IgbWVzc2FnZXMuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZSBvZiB0aGUgbGFzdCBxdWVyaWVkIGV4dGVybmFsIGRhdGEgc291cmNlLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGxhc3RDb25maWcgPSBNV0cuRXh0ZXJuYWxEYXRhTGFzdENvbmZpZygpXG4vLyBUaGUgbGFzdCBleHRlcm5hbCBkYXRhIGNvbmZpZ3VyYXRpb24gdXNlZCB3YXM6IFwiICsgbGFzdENvbmZpZ1xuXG5JRiBsYXN0Q29uZmlnID09IFwiU3BlY2lmaWNDb25maWdOYW1lXCIgVEhFTiB7XG4gICAgTVdHLkFsbG93KFwiQWxsb3dlZCBiYXNlZCBvbiBzcGVjaWZpYyBleHRlcm5hbCBkYXRhIGNvbmZpZ3VyYXRpb25cIilcbn0gRUxTRSB7XG4gICAgTVdHLkJsb2NrKFwiQmxvY2tlZCBiZWNhdXNlIHRoZSBleHRlcm5hbCBkYXRhIGNvbmZpZ3VyYXRpb24gZGlkIG5vdCBtYXRjaFwiKVxufSIsICJuYW1lIjogIk1XRy5FeHRlcm5hbERhdGFMYXN0Q29uZmlnICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgdGhlIG1vc3QgcmVjZW50IHF1ZXJ5IHRvIGFuIGV4dGVybmFsIGRhdGEgc291cmNlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBmaWxlIGV4dGVuc2lvbiBjb21wb25lbnQgcGFyc2VkIGZyb20gdGhlIFVSTCBwYXRoLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgdGhlIGN1cnJlbnQgVVJMXG5NV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblxuLy8gR2V0IHRoZSBmaWxlIGV4dGVuc2lvbiBmcm9tIHRoZSBVUkxcblNUUklORyBmaWxlRXh0ZW5zaW9uID0gTVdHLkZpbGVFeHRlbnNpb24oY3VycmVudFVybClcblxuLy8gQ2hlY2sgaWYgdGhlIGZpbGUgZXh0ZW5zaW9uIGlzIFwiZXhlXCJcbklGIGZpbGVFeHRlbnNpb24gPT0gXCJleGVcIiBUSEVOIHtcbiAgICAvLyBCbG9jayB0aGUgcmVxdWVzdCBpZiB0aGUgZmlsZSBleHRlbnNpb24gaXMgXCJleGVcIlxuICAgIE1XRy5CbG9jayhcIkV4ZWN1dGFibGUgZmlsZXMgYXJlIG5vdCBhbGxvd2VkXCIpXG59IEVMU0Uge1xuICAgIC8vIEFsbG93IHRoZSByZXF1ZXN0IGlmIHRoZSBmaWxlIGV4dGVuc2lvbiBpcyBub3QgXCJleGVcIlxuICAgIE1XRy5BbGxvdyhcIkZpbGUgZXh0ZW5zaW9uIGNoZWNrIHBhc3NlZFwiKVxufSIsICJuYW1lIjogIk1XRy5GaWxlRXh0ZW5zaW9uIChNV0cuVVJMKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBmaWxlIGV4dGVuc2lvbiBmcm9tIHRoZSBVUkwgcGF0aC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5VUkxgOiBUaGUgVVJMIGZyb20gd2hpY2ggdG8gZXh0cmFjdCB0aGUgZmlsZSBleHRlbnNpb24uIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGZpbGUgbmFtZSBjb21wb25lbnQgcGFyc2VkIGZyb20gdGhlIFVSTCBwYXRoLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG4vLyBDdXJyZW50IFVSTDogKyBjdXJyZW50VXJsIiwgIm5hbWUiOiAiTVdHLkZpbGVOYW1lIChNV0cuVVJMKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBmaWxlIG5hbWUgZnJvbSB0aGUgVVJMIHBhdGguIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVVJMYDogVGhlIFVSTCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGZpbGUgbmFtZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZHVyYXRpb24gYmV0d2VlbiB0aGUgZmlyc3QgYnl0ZSByZWNlaXZlZCBmcm9tIHRoZSBjbGllbnQgYW5kIHdoZW4gdGhhdCBmaXJzdCBieXRlIHdhcyBzZW50IGJhY2suIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDYWxsIHRoZSBNV0cuRmlyc3RTZW50Rmlyc3RSZWNlaXZlZENsaWVudCgpIGZ1bmN0aW9uXG5CT09MRUFOIHJlc3VsdCA9IE1XRy5GaXJzdFNlbnRGaXJzdFJlY2VpdmVkQ2xpZW50KClcblxuLy8gQ2hlY2sgdGhlIHJlc3VsdCBhbmQgdGFrZSBhY3Rpb24gYmFzZWQgb24gaXRcbklGIHJlc3VsdCBUSEVOIHtcbiAgICAvLyBGaXJzdCBzZW50IGZpcnN0IHJlY2VpdmVkIGNsaWVudCBkZXRlY3RlZC5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmVcbn0gRUxTRSB7XG4gICAgLy8gRmlyc3Qgc2VudCBmaXJzdCByZWNlaXZlZCBjbGllbnQgbm90IGRldGVjdGVkLlxuICAgIC8vIEFkZGl0aW9uYWwgYWN0aW9ucyBjYW4gYmUgdGFrZW4gaGVyZVxufSIsICJuYW1lIjogIk1XRy5GaXJzdFNlbnRGaXJzdFJlY2VpdmVkQ2xpZW50ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGR1cmF0aW9uIGJldHdlZW4gdGhlIGZpcnN0IGJ5dGUgcmVjZWl2ZWQgZnJvbSB0aGUgY2xpZW50IGFuZCB3aGVuIHRoYXQgZmlyc3QgYnl0ZSB3YXMgc2VudCBiYWNrLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBkdXJhdGlvbiBiZXR3ZWVuIHRoZSBmaXJzdCBieXRlIHNlbnQgdG8gdGhlIHNlcnZlciBhbmQgd2hlbiB0aGF0IGZpcnN0IGJ5dGUgd2FzIGFjdHVhbGx5IHJlY2VpdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gR2V0IHRoZSBkdXJhdGlvbiBiZXR3ZWVuIHRoZSBmaXJzdCBieXRlIHNlbnQgdG8gdGhlIHNlcnZlciBhbmQgd2hlbiBpdCB3YXMgcmVjZWl2ZWRcbk5VTUJFUiByZXNwb25zZVRpbWUgPSBNV0cuRmlyc3RTZW50Rmlyc3RSZWNlaXZlZFNlcnZlcigpXG5cbi8vIFNlcnZlciByZXNwb25zZSB0aW1lIChmaXJzdCBieXRlIHNlbnQgdG8gZmlyc3QgYnl0ZSByZWNlaXZlZCk6IFwiICsgcmVzcG9uc2VUaW1lXG5cbi8vIEltcGxlbWVudCBsb2dpYyBiYXNlZCBvbiB0aGUgcmVzcG9uc2UgdGltZVxuSUYgcmVzcG9uc2VUaW1lID4gMTAwMCBUSEVOIHtcbiAgICAvLyBJZiB0aGUgcmVzcG9uc2UgdGltZSBpcyBncmVhdGVyIHRoYW4gMTAwMCBtaWxsaXNlY29uZHMsIGJsb2NrIHRoZSBjb25uZWN0aW9uXG4gICAgTVdHLkJsb2NrKFwiU2VydmVyIHJlc3BvbnNlIHRpbWUgdG9vIGhpZ2g6IFwiICsgcmVzcG9uc2VUaW1lICsgXCIgbXNcIilcbn0gRUxTRSB7XG4gICAgLy8gT3RoZXJ3aXNlLCBhbGxvdyB0aGUgY29ubmVjdGlvblxuICAgIE1XRy5BbGxvdyhcIlNlcnZlciByZXNwb25zZSB0aW1lIGFjY2VwdGFibGU6IFwiICsgcmVzcG9uc2VUaW1lICsgXCIgbXNcIilcbn0iLCAibmFtZSI6ICJNV0cuRmlyc3RTZW50Rmlyc3RSZWNlaXZlZFNlcnZlciAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBkdXJhdGlvbiBiZXR3ZWVuIHRoZSBmaXJzdCBieXRlIHNlbnQgdG8gdGhlIHNlcnZlciBhbmQgd2hlbiB0aGF0IGZpcnN0IGJ5dGUgd2FzIGFjdHVhbGx5IHJlY2VpdmVkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBmaXJzdCB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGhlYWRlciBmcm9tIHRoZSBnaXZlbiBoZWFkZXIgbWFwLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGhlYWRlciBpcyBub3QgcHJlc2VudC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5IZWFkZXJNYXAgaGVhZGVycyA9IE1XRy5HZXRSZXF1ZXN0SGVhZGVycygpXG5TVFJJTkcgdXNlckFnZW50ID0gTVdHLkdldChoZWFkZXJzLCBcIlVzZXItQWdlbnRcIilcbi8vIFVzZXItQWdlbnQ6IFwiICsgdXNlckFnZW50IiwgIm5hbWUiOiAiTVdHLkdldCAoTVdHLkhlYWRlck1hcCwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBmaXJzdCB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGhlYWRlciBmcm9tIHRoZSBoZWFkZXIgbWFwLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGhlYWRlciBpcyBub3QgcHJlc2VudC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5IZWFkZXJNYXBgOiBUaGUgaGVhZGVyIG1hcCB0byByZXRyaWV2ZSBmcm9tLlxuMi4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgdG8gcmV0cmlldmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhbGwgdmFsdWVzIGZvciBhIGhlYWRlciBuYW1lIGZyb20gdGhlIGdpdmVuIGhlYWRlciBtYXAuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgaGVhZGVycyBpcyBhbiBNV0cuSGVhZGVyTWFwIG9iamVjdCBjb250YWluaW5nIHRoZSByZXF1ZXN0IGhlYWRlcnNcbk1XRy5IZWFkZXJNYXAgaGVhZGVycyA9IC4uLiAvLyBUaGlzIHdvdWxkIGJlIGluaXRpYWxpemVkIHdpdGggdGhlIGFjdHVhbCBoZWFkZXIgbWFwXG5cbi8vIFJldHJpZXZlIGFsbCB2YWx1ZXMgZm9yIHRoZSBcIlVzZXItQWdlbnRcIiBoZWFkZXJcblZFQ1RPUjxTVFJJTkc+IHVzZXJBZ2VudFZhbHVlcyA9IE1XRy5HZXRBbGwoaGVhZGVycywgXCJVc2VyLUFnZW50XCIpXG5cbi8vIFByaW50IGFsbCBVc2VyLUFnZW50IHZhbHVlcyB0byB0aGUgY29uc29sZVxuRk9SIEVBQ0ggdmFsdWUgSU4gdXNlckFnZW50VmFsdWVzIHtcbiAgICAvLyBVc2VyLUFnZW50OiBcIiArIHZhbHVlXG59IiwgIm5hbWUiOiAiTVdHLkdldEFsbCAoTVdHLkhlYWRlck1hcCwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgYFZFQ1RPUjxTVFJJTkc+YCBvZiBhbGwgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIG5hbWUsIG9yIGFuIGVtcHR5IGBWRUNUT1I8U1RSSU5HPmAgaWYgbm8gdmFsdWVzIGFyZSBwcmVzZW50LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkhlYWRlck1hcGA6IFRoZSBoZWFkZXIgbWFwIHRvIHF1ZXJ5LlxuMi4gYFNUUklOR2A6IFRoZSBoZWFkZXIgbmFtZSB3aG9zZSB2YWx1ZXMgYXJlIHRvIGJlIHJldHVybmVkLiJ9LCB7InJldHVybl90eXBlIjogIk1BUDxTVFJJTkcsU1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGFsbCBjb29raWVzIGZyb20gdGhlIGdpdmVuIGhlYWRlciBtYXAgYXMgYSBtYXAgb2YgY29va2llIG5hbWUgdG8gY29va2llIHZhbHVlLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIGhlYWRlcnMgaXMgYW4gTVdHLkhlYWRlck1hcCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBIVFRQIGhlYWRlcnNcbk1XRy5IZWFkZXJNYXAgaGVhZGVycyA9IC4uLiAvLyBPYnRhaW4gdGhlIGhlYWRlcnMgZnJvbSB0aGUgcmVxdWVzdCBjb250ZXh0XG5cbi8vIEdldCBhbGwgY29va2llcyBmcm9tIHRoZSBoZWFkZXJzXG5NQVA8U1RSSU5HLCBTVFJJTkc+IGNvb2tpZXMgPSBNV0cuR2V0QWxsQ29va2llcyhoZWFkZXJzKVxuXG4vLyBJdGVyYXRlIHRocm91Z2ggdGhlIGNvb2tpZXMgYW5kIHByaW50IGVhY2ggbmFtZSBhbmQgdmFsdWVcbkZPUiBFQUNIIGNvb2tpZU5hbWUgSU4gY29va2llcyB7XG4gICAgU1RSSU5HIGNvb2tpZVZhbHVlID0gY29va2llc1tjb29raWVOYW1lXVxuICAgIC8vIENvb2tpZSBOYW1lOiBcIiArIGNvb2tpZU5hbWUgKyBcIiwgQ29va2llIFZhbHVlOiBcIiArIGNvb2tpZVZhbHVlXG59IiwgIm5hbWUiOiAiTVdHLkdldEFsbENvb2tpZXMgKE1XRy5IZWFkZXJNYXApIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBgTUFQPFNUUklORyxTVFJJTkc+YCBvZiBjb29raWUgbmFtZSB0byBjb29raWUgdmFsdWUgcGFpcnMsIG9yIGFuIGVtcHR5IG1hcCBpZiBubyBjb29raWVzIGFyZSBwcmVzZW50LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkhlYWRlck1hcGA6IFRoZSBoZWFkZXIgbWFwIGNvbnRhaW5pbmcgY29va2llIGhlYWRlcnMuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhbGwgdmFsdWVzIG9mIHRoZSBzcGVjaWZpZWQgaGVhZGVyIGZyb20gdGhlIGdpdmVuIGhlYWRlciBtYXAgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLkhlYWRlck1hcCBoZWFkZXJzID0gTVdHLkdldFJlcXVlc3RIZWFkZXJzKClcblNUUklORyBoZWFkZXJLZXkgPSBcIlgtQ3VzdG9tLUhlYWRlclwiXG5SZWdFeEpTaSByZWdleCA9IFJlZ0V4SlNpKFwicGF0dGVyblwiKVxuXG5NV0cuUmVtb3ZlQWxsTWF0Y2hpbmcoaGVhZGVycywgaGVhZGVyS2V5LCByZWdleClcbi8vIFJlbW92ZWQgYWxsIG1hdGNoaW5nIGhlYWRlcnMiLCAibmFtZSI6ICJNV0cuR2V0QWxsTWF0Y2hpbmcgKE1XRy5IZWFkZXJNYXAsIFNUUklORywgUmVnRXhKU2kpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBgVkVDVE9SPFNUUklORz5gIG9mIGFsbCB2YWx1ZXMgb2YgdGhlIHNwZWNpZmllZCBoZWFkZXIgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLCBvciBhbiBlbXB0eSBgVkVDVE9SPFNUUklORz5gIGlmIG5vbmUgbWF0Y2guIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSGVhZGVyTWFwYDogVGhlIGhlYWRlciBtYXAgdG8gc2VhcmNoLlxuMi4gYFNUUklOR2A6IFRoZSBoZWFkZXIgbmFtZSB0byBtYXRjaC5cbjMuIGBSZWdFeEpTaWA6IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gYXBwbHkgdG8gZWFjaCBjYW5kaWRhdGUgaGVhZGVyIHZhbHVlLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBmaXJzdCB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGhlYWRlciBmcm9tIHRoZSBnaXZlbiBoZWFkZXIgbWFwIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBoZWFkZXIgbWFwLCBoZWFkZXIgbmFtZSwgYW5kIHJlZ3VsYXIgZXhwcmVzc2lvblxuTVdHLkhlYWRlck1hcCBoZWFkZXJzID0gTVdHLkdldFJlcXVlc3RIZWFkZXJzKClcblNUUklORyBoZWFkZXJOYW1lID0gXCJVc2VyLUFnZW50XCJcblJlZ0V4SlNpIHJlZ2V4ID0gUmVnRXhKU2koXCIuKk1vemlsbGEuKlwiKVxuXG4vLyBVc2UgTVdHLkdldEFueU1hdGNoaW5nIHRvIGZpbmQgdGhlIGZpcnN0IG1hdGNoaW5nIGhlYWRlclxuU1RSSU5HIG1hdGNoaW5nSGVhZGVyID0gTVdHLkdldEFueU1hdGNoaW5nKGhlYWRlcnMsIGhlYWRlck5hbWUsIHJlZ2V4KVxuXG4vLyBNYXRjaGluZyBIZWFkZXI6ICsgbWF0Y2hpbmdIZWFkZXIiLCAibmFtZSI6ICJNV0cuR2V0QW55TWF0Y2hpbmcgKE1XRy5IZWFkZXJNYXAsIFNUUklORywgUmVnRXhKU2kpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGZpcnN0IHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgaGVhZGVyIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uIGFzIGEgYFNUUklOR2AsIG9yIGFuIGVtcHR5IHN0cmluZyBpZiBubyB2YWx1ZXMgbWF0Y2guIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSGVhZGVyTWFwYDogVGhlIGhlYWRlciBtYXAgdG8gc2VhcmNoLlxuMi4gYFNUUklOR2A6IFRoZSBoZWFkZXIgbmFtZSB0byBtYXRjaC5cbjMuIGBSZWdFeEpTaWA6IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gYXBwbHkgdG8gZWFjaCBjYW5kaWRhdGUgaGVhZGVyIHZhbHVlLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJCdWlsZHMgYW5kIHJlc29sdmVzIHRoZSByZW5kZXJlZCBibG9jay1wYWdlIEhUTUwgZm9yIHRoZSBzdXBwbGllZCBibG9jayBzZXR0aW5nIGFuZCBydWxlIGNvbnRleHQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDcmVhdGUgYSBibG9jayBzZXR0aW5nIG9iamVjdFxuTVdHLkJsb2NrU2V0dGluZyBibG9ja1NldHRpbmcgPSBNV0cuQmxvY2tTZXR0aW5nKClcblxuLy8gU2V0IHNvbWUgcHJvcGVydGllcyBvbiB0aGUgYmxvY2sgc2V0dGluZyAoZXhhbXBsZSBwcm9wZXJ0aWVzKVxuYmxvY2tTZXR0aW5nLnRpdGxlID0gXCJBY2Nlc3MgRGVuaWVkXCJcbmJsb2NrU2V0dGluZy5tZXNzYWdlID0gXCJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGFjY2VzcyB0aGlzIHNpdGUuXCJcblxuLy8gRGVmaW5lIHRoZSBVUkwgYW5kIHJlYXNvbiBmb3IgYmxvY2tpbmdcblNUUklORyB1cmwgPSBcImh0dHA6Ly9leGFtcGxlLmNvbVwiXG5TVFJJTkcgcmVhc29uID0gXCJCbG9ja2VkIGJ5IHBvbGljeVwiXG5cbi8vIEdldCB0aGUgYmxvY2sgcGFnZVxuU1RSSU5HIGJsb2NrUGFnZSA9IE1XRy5HZXRCbG9ja1BhZ2UoYmxvY2tTZXR0aW5nLCB1cmwsIHJlYXNvbilcblxuLy8gQmxvY2sgdGhlIGNvbm5lY3Rpb24gYW5kIGRpc3BsYXkgdGhlIGJsb2NrIHBhZ2Vcbk1XRy5CbG9jayhibG9ja1BhZ2UpIiwgIm5hbWUiOiAiTVdHLkdldEJsb2NrUGFnZSAoTVdHLkJsb2NrU2V0dGluZywgU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHJlbmRlcmVkIGJsb2NrLXBhZ2UgSFRNTCBjb250ZW50IHN0cmluZywgaW5jbHVkaW5nIHJlc29sdmVkIHRlbXBsYXRlIHZhcmlhYmxlcy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5CbG9ja1NldHRpbmdgOiBUaGUgYmxvY2stcGFnZSB0ZW1wbGF0ZSBhbmQgbGFuZ3VhZ2UgY29uZmlndXJhdGlvbi5cbjIuIGBTVFJJTkdgOiBUaGUgY3VycmVudCBydWxlIG5hbWUgdG8gYW5ub3RhdGUgaW4gdGhlIGJsb2NrIGNvbnRleHQuXG4zLiBgU1RSSU5HYDogVGhlIGN1cnJlbnQgcnVsZSBzZXQgbmFtZSBvciBwYXRoIHRvIGFubm90YXRlIGluIHRoZSBibG9jayBjb250ZXh0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IHRocm91Z2ggdGhlIHByb3BlcnR5IGRpc3BhdGNoZXIgYW5kIHJldHVybnMgaXQgYXMgYSBgQk9PTEVBTmAuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgcHJvcGVydHlOYW1lID0gXCJleGFtcGxlLnByb3BlcnR5XCJcbkJPT0xFQU4gcHJvcGVydHlWYWx1ZSA9IE1XRy5HZXRCb29sZWFuUHJvcGVydHkocHJvcGVydHlOYW1lKVxuXG5JRiBwcm9wZXJ0eVZhbHVlIFRIRU4ge1xuICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBzZXQgdG8gVFJVRVxufSBFTFNFIHtcbiAgICAvLyBUaGUgcHJvcGVydHkgaXMgc2V0IHRvIEZBTFNFXG59IiwgIm5hbWUiOiAiTVdHLkdldEJvb2xlYW5Qcm9wZXJ0eSAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgQk9PTEVBTmAgdmFsdWUgb2YgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSwgb3IgYEZBTFNFYCBpZiBhY2Nlc3MgaXMgZGlzYWxsb3dlZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBwcm9wZXJ0eSBJRCBvciBuYW1lIGFzIHVuZGVyc3Rvb2QgYnkgdGhlIHByb3BlcnR5IGRpc3BhdGNoZXIuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGN1cnJlbnQgZHVyYXRpb24gb2YgY29ubmVjdGlvbiBpbiBzZWNvbmRzIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgY29ubmVjdGlvblJ1blRpbWUgPSBNV0cuR2V0Q29ubmVjdGlvblJ1blRpbWUoKVxuLy8gQ29ubmVjdGlvbiBSdW4gVGltZTogY29ubmVjdGlvblJ1blRpbWUiLCAibmFtZSI6ICJNV0cuR2V0Q29ubmVjdGlvblJ1blRpbWUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY3VycmVudCBkdXJhdGlvbiBvZiBjb25uZWN0aW9uIGluIHNlY29uZHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBjb29raWUgZnJvbSB0aGUgZ2l2ZW4gaGVhZGVyIG1hcC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSBoZWFkZXJzIGlzIGFuIE1XRy5IZWFkZXJNYXAgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIEhUVFAgaGVhZGVyc1xuTVdHLkhlYWRlck1hcCBoZWFkZXJzID0gTVdHLkdldFJlcXVlc3RIZWFkZXJzKClcblxuLy8gVGhlIG5hbWUgb2YgdGhlIGNvb2tpZSB3ZSB3YW50IHRvIHJldHJpZXZlXG5TVFJJTkcgY29va2llTmFtZSA9IFwic2Vzc2lvbl9pZFwiXG5cbi8vIFJldHJpZXZlIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGNvb2tpZVxuU1RSSU5HIGNvb2tpZVZhbHVlID0gTVdHLkdldENvb2tpZShoZWFkZXJzLCBjb29raWVOYW1lKVxuXG4vLyBUaGUgdmFsdWUgb2YgdGhlIGNvb2tpZSBzZXNzaW9uX2lkIGlzOiBjb29raWVWYWx1ZSIsICJuYW1lIjogIk1XRy5HZXRDb29raWUgKE1XRy5IZWFkZXJNYXAsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBjb29raWUuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSGVhZGVyTWFwYDogVGhlIGhlYWRlciBtYXAgY29udGFpbmluZyBjb29raWVzLlxuMi4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSBjb29raWUgdG8gcmV0cmlldmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIElEIG9mIHRoZSBjdXJyZW50IGN1c3RvbWVyLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGN1c3RvbWVyID0gTVdHLkdldEN1c3RvbWVyKClcbi8vIEN1cnJlbnQgY3VzdG9tZXI6IFwiICsgY3VzdG9tZXIiLCAibmFtZSI6ICJNV0cuR2V0Q3VzdG9tZXIgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgSUQgb2YgdGhlIGN1cnJlbnQgY3VzdG9tZXIuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJSZXRyaWV2ZXMgYSBjdXN0b21lciBwb2xpY3kgcmVzb3VyY2UgYXMgSlNPTiBieSBjdXN0b21lciBJRCBhbmQgcmVsYXRpdmUgcmVzb3VyY2UgcGF0aC4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGZ1bmN0aW9uXG5TVFJJTkcgcmVzb3VyY2VUeXBlID0gXCJjb25maWdcIlxuU1RSSU5HIHJlc291cmNlTmFtZSA9IFwiY3VzdG9tZXJTZXR0aW5nc1wiXG5cbi8vIENhbGwgdGhlIGZ1bmN0aW9uIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluIGEgSlNPTiB2YXJpYWJsZVxuSlNPTiBjdXN0b21lclJlc291cmNlID0gTVdHLkdldEN1c3RvbWVyUmVzb3VyY2VBc0pTT04ocmVzb3VyY2VUeXBlLCByZXNvdXJjZU5hbWUpXG5cbi8vIENoZWNrIGlmIHRoZSByZXNvdXJjZSB3YXMgc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZFxuSUYgY3VzdG9tZXJSZXNvdXJjZSAhPSBOVUxMIFRIRU4ge1xuICAgIC8vIEN1c3RvbWVyIFJlc291cmNlIEpTT046IFxuICAgIC8vIGN1c3RvbWVyUmVzb3VyY2UudG9TdHJpbmcoKVxufSBFTFNFIHtcbiAgICAvLyBGYWlsZWQgdG8gcmV0cmlldmUgY3VzdG9tZXIgcmVzb3VyY2UuXG59IiwgIm5hbWUiOiAiTVdHLkdldEN1c3RvbWVyUmVzb3VyY2VBc0pTT04gKFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIHNwZWNpZmllZCBwb2xpY3kgcmVzb3VyY2UuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgY3VzdG9tZXIgSUQuXG4yLiBgU1RSSU5HYDogVGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIHBvbGljeSByZXNvdXJjZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJETFAuQ2xhc3NpZmllciIsICJkZXNjcmlwdGlvbiI6ICJDcmVhdGVzIGEgRExQIGNsYXNzaWZpZXIgd2l0aCBhbGwgTVdHLXNwZWNpZmljIGF0dHJpYnV0ZXMgaW5pdGlhbGl6ZWQuIiwgImNvZGVfZXhhbXBsZSI6ICJETFAuQ2xhc3NpZmllciBjbGFzc2lmaWVyID0gTVdHLkdldERMUENsYXNzaWZpZXIoKVxuXG5JRiBjbGFzc2lmaWVyICE9IE5VTEwgVEhFTiB7XG4gICAgLy8gRExQIENsYXNzaWZpZXIgZm91bmQ6IFwiICsgY2xhc3NpZmllclxufSBFTFNFIHtcbiAgICAvLyBObyBETFAgQ2xhc3NpZmllciBmb3VuZC5cbn0iLCAibmFtZSI6ICJNV0cuR2V0RExQQ2xhc3NpZmllciAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgYERMUC5DbGFzc2lmaWVyYCB3aXRoIGFsbCBNV0ctc3BlY2lmaWMgYXR0cmlidXRlcyBpbml0aWFsaXplZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIHNob3J0IGBTVFJJTkdgIChlLmcuLCBlbiwgZGUsIGphKSBpbmRpY2F0aW5nIHRoZSBsYW5ndWFnZSBjb25maWd1cmVkIGZvciBibG9jayBtZXNzYWdlcy4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBsYW5ndWFnZSA9IFwiZW5cIlxuTVdHLlNldEVuZHVzZXJNZXNzYWdlTGFuZ3VhZ2UobGFuZ3VhZ2UpXG4vLyBFbmQtdXNlciBtZXNzYWdlIGxhbmd1YWdlIHNldCB0bzogZW4iLCAibmFtZSI6ICJNV0cuR2V0RW5kdXNlck1lc3NhZ2VMYW5ndWFnZSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgc2hvcnQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbGFuZ3VhZ2UgY29kZSBmb3IgYSBibG9jayBtZXNzYWdlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBlcnJvciBpZCIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSHlwb3RoZXRpY2FsIGZ1bmN0aW9uIHRvIGdldCB0aGUgZXJyb3IgSURcbk5VTUJFUiBlcnJvcklkID0gTVdHLkdldEVycm9ySWQoKVxuXG4vLyBDaGVjayBpZiBhbiBlcnJvciBJRCB3YXMgcmV0cmlldmVkXG5JRiBlcnJvcklkICE9IDAgVEhFTiB7XG4gICAgLy8gRXJyb3IgSUQ6IFwiICsgZXJyb3JJZFxuICAgIC8vIEJsb2NrIHRoZSBjb25uZWN0aW9uIHdpdGggYSBtZXNzYWdlIGluY2x1ZGluZyB0aGUgZXJyb3IgSURcbiAgICBNV0cuQmxvY2soXCJDb25uZWN0aW9uIGJsb2NrZWQgZHVlIHRvIGVycm9yIElEOiBcIiArIGVycm9ySWQpXG59IEVMU0Uge1xuICAgIC8vIEFsbG93IHRoZSBjb25uZWN0aW9uIGlmIG5vIGVycm9yIElEIGlzIGZvdW5kXG4gICAgTVdHLkFsbG93KFwiTm8gZXJyb3IgZGV0ZWN0ZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuR2V0RXJyb3JJZCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBlcnJvciBJRC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJKU09OIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGN1cnJlbnQgR0RQUiBjb25maWd1cmF0aW9uIHNldHRpbmdzLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRnVuY3Rpb24gc2lnbmF0dXJlOiBKU09OIE1XRy5HZXRHRFBSQ29uZmlndXJhdGlvbigpXG5KU09OIGdkcHJDb25maWcgPSBNV0cuR2V0R0RQUkNvbmZpZ3VyYXRpb24oKVxuSUYgTVdHLklzQXV0aGVudGljYXRlZCgpIFRIRU4ge1xuICBNV0cuU2V0VXNlckRlZmluZWRWYXIoXCJnZHByX2NvbmZpZ1wiLCBnZHByQ29uZmlnKVxufSIsICJuYW1lIjogIk1XRy5HZXRHRFBSQ29uZmlndXJhdGlvbiAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBHRFBSIGNvbmZpZ3VyYXRpb24gYXMgYSBgSlNPTmAgb2JqZWN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkhUVFBIZWFkZXIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgSFRUUCBoZWFkZXIgZnJvbSB0aGUgZ2l2ZW4gaGVhZGVyIG1hcC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSBoZWFkZXJzTWFwIGlzIGEgcHJlZGVmaW5lZCBNV0cuSGVhZGVyTWFwIG9iamVjdCBjb250YWluaW5nIEhUVFAgaGVhZGVyc1xuTVdHLkhlYWRlck1hcCBoZWFkZXJzTWFwID0gLi4uIC8vIFRoaXMgd291bGQgYmUgZGVmaW5lZCBlbHNld2hlcmUgaW4geW91ciBhY3R1YWwgY29kZVxuXG4vLyBSZXRyaWV2ZSBhIHNwZWNpZmljIEhUVFAgaGVhZGVyIGZyb20gdGhlIGhlYWRlcnMgbWFwXG5IVFRQSGVhZGVyIGhlYWRlciA9IE1XRy5HZXRIVFRQSGVhZGVyKGhlYWRlcnNNYXApXG5cbi8vIFJldHJpZXZlZCBIVFRQIEhlYWRlcjogXCIgKyBoZWFkZXIiLCAibmFtZSI6ICJNV0cuR2V0SFRUUEhlYWRlciAoTVdHLkhlYWRlck1hcCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgSFRUUCBoZWFkZXIgZnJvbSBhIGhlYWRlciBtYXAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSGVhZGVyTWFwYDogVGhlIGhlYWRlciBtYXAgZnJvbSB3aGljaCB0byByZXRyaWV2ZSB0aGUgSFRUUCBoZWFkZXIuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBgU1RSSU5HYCBjb250YWluaW5nIGFsbCBvcmlnaW5hbCBIVFRQIGhlYWRlcnMgZnJvbSB0aGUgcmVxdWVzdCBvciByZXNwb25zZSwgY29uY2F0ZW5hdGVkIGFuZCBzZXBhcmF0ZWQgYnkgQ1JMRi4iLCAiY29kZV9leGFtcGxlIjogIi8vIENyZWF0ZSBhIHZhcmlhYmxlIHRvIGhvbGQgdGhlIGhlYWRlcnMgbWFwXG5NV0cuSGVhZGVyTWFwIGhlYWRlcnNNYXAgPSBNV0cuR2V0UmVxdWVzdEhlYWRlcnMoKVxuXG4vLyBHZXQgdGhlIG9yaWdpbmFsIGhlYWRlcnMgYXMgYSBjb25jYXRlbmF0ZWQgc3RyaW5nXG5TVFJJTkcgb3JpZ2luYWxIZWFkZXJzID0gTVdHLkdldEhUVFBPcmlnaW5hbEhlYWRlcnMoaGVhZGVyc01hcClcblxuLy8gT3JpZ2luYWwgSGVhZGVyczogXCIgKyBvcmlnaW5hbEhlYWRlcnMiLCAibmFtZSI6ICJNV0cuR2V0SFRUUE9yaWdpbmFsSGVhZGVycyAoTVdHLkhlYWRlck1hcCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBvcmlnaW5hbCBIVFRQIGhlYWRlcnMgZnJvbSB0aGUgcmVxdWVzdCBvciByZXNwb25zZSwgY29uY2F0ZW5hdGVkIGFuZCBzZXBhcmF0ZWQgYnkgQ1JMRiAoXFxyXFxuKS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5IZWFkZXJNYXBgOiBUaGUgaGVhZGVyIG1hcCBmcm9tIHRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjb25maWd1cmVkIElQU2VjIGRldmljZS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBpcFNlY0RldmljZU5hbWUgPSBNV0cuR2V0SVBTZWNEZXZpY2UoKVxuLy8gSVBTZWMgRGV2aWNlIE5hbWU6IFwiICsgaXBTZWNEZXZpY2VOYW1lXG5cbklGIGlwU2VjRGV2aWNlTmFtZSA9PSBcIkV4cGVjdGVkRGV2aWNlTmFtZVwiIFRIRU4ge1xuICAgIE1XRy5BbGxvdyhcIklQU2VjIGRldmljZSBpcyBhcyBleHBlY3RlZFwiKVxufSBFTFNFIHtcbiAgICBNV0cuQmxvY2soXCJVbmV4cGVjdGVkIElQU2VjIGRldmljZVwiKVxufSIsICJuYW1lIjogIk1XRy5HZXRJUFNlY0RldmljZSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBJUFNlYyBkZXZpY2UgYXMgYSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHN0b3JhZ2UgcmVnaW9uIG9mIHRoZSBsb2cgZmlsZXMuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgbG9nUmVnaW9uID0gTVdHLkdldExvZ1N0b3JhZ2VSZWdpb24oKVxuLy8gVGhlIGN1cnJlbnQgbG9nIHN0b3JhZ2UgcmVnaW9uIGlzOiBcIiArIGxvZ1JlZ2lvblxuXG5JRiBsb2dSZWdpb24gPT0gXCJVU1wiIFRIRU4ge1xuICAgIC8vIExvZyBzdG9yYWdlIHJlZ2lvbiBpcyBzZXQgdG8gVVMuXG59IEVMU0Uge1xuICAgIC8vIExvZyBzdG9yYWdlIHJlZ2lvbiBpcyBub3Qgc2V0IHRvIFVTLlxufSIsICJuYW1lIjogIk1XRy5HZXRMb2dTdG9yYWdlUmVnaW9uICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgc3RvcmFnZSByZWdpb24gb2YgdGhlIGxvZyBmaWxlcy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJNQVA8U1RSSU5HLFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGBNQVA8U1RSSU5HLFNUUklORz5gIHdpdGggdGhlIGdpdmVuIG5hbWUsIG9yIGFuIGVtcHR5IG1hcCBpZiBubyBtYXAgd2l0aCB0aGF0IG5hbWUgaXMgZm91bmQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBSZXRyaWV2ZSBhIG1hcCBieSBpdHMgbmFtZVxuTUFQPFNUUklORz48TlVNQkVSPiBleGFtcGxlTWFwID0gTVdHLkdldE1hcEJ5TmFtZShcImV4YW1wbGVfbWFwX25hbWVcIilcblxuLy8gQ2hlY2sgaWYgYSBzcGVjaWZpYyBrZXkgZXhpc3RzIGluIHRoZSBtYXBcbklGIFwiZXhhbXBsZV9rZXlcIiBJTiBleGFtcGxlTWFwIFRIRU4ge1xuICAgIC8vIFJldHJpZXZlIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGtleVxuICAgIE5VTUJFUiB2YWx1ZSA9IGV4YW1wbGVNYXBbXCJleGFtcGxlX2tleVwiXVxuICAgIC8vIFRoZSB2YWx1ZSBmb3IgJ2V4YW1wbGVfa2V5JyBpczogdmFsdWVcbn0gRUxTRSB7XG4gICAgLy8gVGhlIGtleSAnZXhhbXBsZV9rZXknIGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAuXG59IiwgIm5hbWUiOiAiTVdHLkdldE1hcEJ5TmFtZSAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgTUFQPFNUUklORyxTVFJJTkc+YCB3aXRoIHRoZSBnaXZlbiBuYW1lLCBvciBhbiBlbXB0eSBtYXAgaWYgbm8gbWFwIHdpdGggdGhhdCBuYW1lIGlzIGZvdW5kLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIG1hcCB0byByZXRyaWV2ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgdGVtcGxhdGUgbmFtZSBmb3IgYSBibG9jayBtZXNzYWdlIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgdGVtcGxhdGVOYW1lID0gTVdHLkdldE1lc3NhZ2VUZW1wbGF0ZU5hbWUoKVxuLy8gQ3VycmVudCBtZXNzYWdlIHRlbXBsYXRlIG5hbWU6IFwiICsgdGVtcGxhdGVOYW1lXG5cbklGIHRlbXBsYXRlTmFtZSA9PSBcIkJsb2NrUGFnZVwiIFRIRU4ge1xuICAgIC8vIFRoZSBtZXNzYWdlIHRlbXBsYXRlIGlzIHNldCB0byBCbG9ja1BhZ2UuXG4gICAgLy8gQWRkaXRpb25hbCBsb2dpYyBmb3IgQmxvY2tQYWdlIHRlbXBsYXRlXG59IEVMU0Uge1xuICAgIC8vIFRoZSBtZXNzYWdlIHRlbXBsYXRlIGlzIG5vdCBCbG9ja1BhZ2UuXG4gICAgLy8gQWRkaXRpb25hbCBsb2dpYyBmb3Igb3RoZXIgdGVtcGxhdGVzXG59IiwgIm5hbWUiOiAiTVdHLkdldE1lc3NhZ2VUZW1wbGF0ZU5hbWUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdGVtcGxhdGUgbmFtZSBmb3IgYSBibG9jayBtZXNzYWdlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBhZGRyZXNzIG9mIE5leHQgSG9wIFByb3h5IChob3N0OnBvcnQpIHVzZWQgZm9yIHRoaXMgY29ubmVjdGlvbiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIG5ocEFkZHJlc3MgPSBNV0cuR2V0TVdHTkhQQWRkcmVzcygpXG4vLyBOZXh0IEhvcCBQcm94eSBBZGRyZXNzOiArIG5ocEFkZHJlc3MiLCAibmFtZSI6ICJNV0cuR2V0TVdHTkhQQWRkcmVzcyAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBhZGRyZXNzIG9mIE5leHQgSG9wIFByb3h5IChob3N0OnBvcnQpIHVzZWQgZm9yIHRoaXMgY29ubmVjdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYE5VTUJFUmAgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBwcm9wZXJ0eSBkaXNwYXRjaGVyLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgYSBudW1lcmljYWwgcHJvcGVydHlcbk5VTUJFUiBwcm9wZXJ0eVZhbHVlID0gTVdHLkdldE51bWJlclByb3BlcnR5KFwiZXhhbXBsZVByb3BlcnR5XCIpXG5cbi8vIFRoZSB2YWx1ZSBvZiAnZXhhbXBsZVByb3BlcnR5JyBpczogXCIgKyBwcm9wZXJ0eVZhbHVlXG5cbi8vIFVzZSB0aGUgcmV0cmlldmVkIHByb3BlcnR5IHZhbHVlIGluIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50XG5JRiBwcm9wZXJ0eVZhbHVlID4gMTAgVEhFTiB7XG4gICAgLy8gVGhlIHByb3BlcnR5IHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiAxMC5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIHByb3BlcnR5IHZhbHVlIGlzIDEwIG9yIGxlc3MuXG59IiwgIm5hbWUiOiAiTVdHLkdldE51bWJlclByb3BlcnR5IChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG51bWJlciBzZXR0aW5nIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBwcm9wZXJ0eSBJRCBvciBuYW1lIGFzIHVuZGVyc3Rvb2QgYnkgdGhlIHByb3BlcnR5IGRpc3BhdGNoZXIuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBmcm9tIHRoZSBQT1NUIHJlcXVlc3QgYm9keS4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgbmFtZSBvZiB0aGUgZm9ybSBlbGVtZW50IHlvdSB3YW50IHRvIHJldHJpZXZlXG5TVFJJTkcgZm9ybUVsZW1lbnROYW1lID0gXCJ1c2VybmFtZVwiXG5cbi8vIFJldHJpZXZlIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBlbGVtZW50XG5TVFJJTkcgZm9ybUVsZW1lbnRWYWx1ZSA9IE1XRy5HZXRQT1NURm9ybUVsZW1lbnQoZm9ybUVsZW1lbnROYW1lKVxuXG4vLyBDaGVjayBpZiB0aGUgZm9ybSBlbGVtZW50IHZhbHVlIGlzIGVtcHR5XG5JRiBmb3JtRWxlbWVudFZhbHVlID09IFwiXCIgVEhFTiB7XG4gICAgLy8gQmxvY2sgdGhlIHJlcXVlc3QgaWYgdGhlIGZvcm0gZWxlbWVudCBpcyBlbXB0eVxuICAgIE1XRy5CbG9jayhcIkZvcm0gZWxlbWVudCAndXNlcm5hbWUnIGlzIG1pc3Npbmcgb3IgZW1wdHkuXCIpXG59IEVMU0Uge1xuICAgIC8vIEFsbG93IHRoZSByZXF1ZXN0IGFuZCBsb2cgdGhlIGZvcm0gZWxlbWVudCB2YWx1ZVxuICAgIC8vIEZvcm0gZWxlbWVudCAndXNlcm5hbWUnIGhhcyB2YWx1ZTogXCIgKyBmb3JtRWxlbWVudFZhbHVlXG4gICAgTVdHLkFsbG93KFwiRm9ybSBlbGVtZW50ICd1c2VybmFtZScgaXMgcHJlc2VudC5cIilcbn0iLCAibmFtZSI6ICJNV0cuR2V0UE9TVEZvcm1FbGVtZW50IChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBmcm9tIHRoZSBQT1NUIHJlcXVlc3QgYm9keS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSBlbGVtZW50IHRvIGV4dHJhY3QgZnJvbSB0aGUgUE9TVCByZXF1ZXN0IGJvZHkuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkludGVybmFsVmFyaWFudCIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgdGhlIHZhbHVlIG9mIGEgcHJvcGVydHlcblNUUklORyBwcm9wZXJ0eVZhbHVlID0gTVdHLkdldFN0cmluZ1Byb3BlcnR5KFwiZXhhbXBsZVByb3BlcnR5XCIpXG5cbi8vIFRoZSB2YWx1ZSBvZiBleGFtcGxlUHJvcGVydHkgaXM6IFwiICsgcHJvcGVydHlWYWx1ZVxuXG4vLyBVc2UgdGhlIHByb3BlcnR5IHZhbHVlIGluIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50XG5JRiBwcm9wZXJ0eVZhbHVlID09IFwic29tZVZhbHVlXCIgVEhFTiB7XG4gICAgLy8gUGVyZm9ybSBzb21lIGFjdGlvbiBpZiB0aGUgcHJvcGVydHkgdmFsdWUgbWF0Y2hlcyBcInNvbWVWYWx1ZVwiXG4gICAgTVdHLkFsbG93KFwiUHJvcGVydHkgdmFsdWUgbWF0Y2hlZFwiKVxufSBFTFNFIHtcbiAgICAvLyBQZXJmb3JtIGEgZGlmZmVyZW50IGFjdGlvbiBpZiB0aGUgcHJvcGVydHkgdmFsdWUgZG9lcyBub3QgbWF0Y2hcbiAgICBNV0cuQmxvY2soXCJQcm9wZXJ0eSB2YWx1ZSBkaWQgbm90IG1hdGNoXCIpXG59IiwgIm5hbWUiOiAiTVdHLkdldFByb3BlcnR5VmFsdWUgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxWYXJpYW50IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgZnJvbSB0aGUgZ2l2ZW4gaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3QuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdGhlIGludGVybmFsIHBhcmFtZXRlciBsaXN0XG5NV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IHBhcmFtTGlzdCA9IE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QoKVxuXG4vLyBBZGQgc29tZSBwcm9wZXJ0aWVzIHRvIHRoZSBwYXJhbWV0ZXIgbGlzdCAoZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMpXG5wYXJhbUxpc3QuQWRkKFwiZXhhbXBsZVByb3BlcnR5XCIsIFwiZXhhbXBsZVZhbHVlXCIpXG5cbi8vIFJldHJpZXZlIHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHlcbk1XRy5JbnRlcm5hbFZhcmlhbnQgcHJvcGVydHlWYWx1ZSA9IE1XRy5HZXRQcm9wZXJ0eVZhbHVlKFwiZXhhbXBsZVByb3BlcnR5XCIsIHBhcmFtTGlzdClcblxuLy8gVGhlIHZhbHVlIG9mICdleGFtcGxlUHJvcGVydHknIGlzOiBcIiArIHByb3BlcnR5VmFsdWUuVG9TdHJpbmcoKSIsICJuYW1lIjogIk1XRy5HZXRQcm9wZXJ0eVZhbHVlIChTVFJJTkcsIE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4yLiBgTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdGA6IFRoZSBpbnRlcm5hbCBwYXJhbWV0ZXIgbGlzdCB0byBjaGVjay4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxWYXJpYW50IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgZnJvbSB0aGUgaW50ZXJuYWwgcGFyYW1ldGVycyB1c2luZyB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgaW50ZXJuYWwgc2V0dGluZyBjb25maWd1cmF0aW9uXG5NV0cuSW50ZXJuYWxTZXR0aW5nIGNvbmZpZyA9IE1XRy5JbnRlcm5hbFNldHRpbmcoKVxuXG4vLyBEZWZpbmUgdGhlIHByb3BlcnR5IG5hbWUgeW91IHdhbnQgdG8gcmV0cmlldmVcblNUUklORyBwcm9wZXJ0eU5hbWUgPSBcImV4YW1wbGVQcm9wZXJ0eVwiXG5cbi8vIFJldHJpZXZlIHRoZSBwcm9wZXJ0eSB2YWx1ZSB1c2luZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgcHJvcGVydHkgbmFtZVxuTVdHLkludGVybmFsVmFyaWFudCBwcm9wZXJ0eVZhbHVlID0gTVdHLkdldFByb3BlcnR5VmFsdWVXaXRoQ29uZmlnKGNvbmZpZywgcHJvcGVydHlOYW1lKVxuXG4vLyBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGlzOiBcIiArIHByb3BlcnR5VmFsdWUiLCAibmFtZSI6ICJNV0cuR2V0UHJvcGVydHlWYWx1ZVdpdGhDb25maWcgKE1XRy5JbnRlcm5hbFNldHRpbmcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFNldHRpbmdgOiBUaGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy5cbjIuIGBTVFJJTkdgOiBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkludGVybmFsVmFyaWFudCIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IGZyb20gdGhlIGdpdmVuIGludGVybmFsIHBhcmFtZXRlciBsaXN0IHVzaW5nIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBpbnRlcm5hbCBzZXR0aW5nXG5NV0cuSW50ZXJuYWxTZXR0aW5nIGNvbmZpZyA9IC4uLiAvLyBJbml0aWFsaXplIHdpdGggeW91ciBzcGVjaWZpYyBjb25maWd1cmF0aW9uXG5cbi8vIERlZmluZSB0aGUgcHJvcGVydHkgbmFtZSB5b3Ugd2FudCB0byBnZXQgdGhlIHZhbHVlIG9mXG5TVFJJTkcgcHJvcGVydHlOYW1lID0gXCJleGFtcGxlUHJvcGVydHlcIlxuXG4vLyBEZWZpbmUgdGhlIGludGVybmFsIHBhcmFtZXRlciBsaXN0XG5NV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IHBhcmFtTGlzdCA9IC4uLiAvLyBJbml0aWFsaXplIHdpdGggeW91ciBzcGVjaWZpYyBwYXJhbWV0ZXIgbGlzdFxuXG4vLyBHZXQgdGhlIHByb3BlcnR5IHZhbHVlIHVzaW5nIE1XRy5HZXRQcm9wZXJ0eVZhbHVlV2l0aENvbmZpZ1xuTVdHLkludGVybmFsVmFyaWFudCBwcm9wZXJ0eVZhbHVlID0gTVdHLkdldFByb3BlcnR5VmFsdWVXaXRoQ29uZmlnKGNvbmZpZywgcHJvcGVydHlOYW1lLCBwYXJhbUxpc3QpXG5cbi8vIFByb3BlcnR5IFZhbHVlOiBcbi8vIENvbW1lbnRlZCBvdXQgREVCVUcgbGluZTogXCJQcm9wZXJ0eSBWYWx1ZTogXCIgKyBwcm9wZXJ0eVZhbHVlIiwgIm5hbWUiOiAiTVdHLkdldFByb3BlcnR5VmFsdWVXaXRoQ29uZmlnIChNV0cuSW50ZXJuYWxTZXR0aW5nLCBTVFJJTkcsIE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3QpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxTZXR0aW5nYDogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuXG4yLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LlxuMy4gYE1XRy5JbnRlcm5hbFBhcmFtZXRlckxpc3RgOiBUaGUgaW50ZXJuYWwgcGFyYW1ldGVyIGxpc3QgdG8gY2hlY2suIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLlNBTUxDb25maWd1cmF0aW9uIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIFNBTUwgY29uZmlndXJhdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBJRC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBzYW1sQ29uZmlnSUQgPSBcImV4YW1wbGVJRFwiXG5NV0cuU0FNTENvbmZpZ3VyYXRpb24gc2FtbENvbmZpZyA9IE1XRy5HZXRTQU1MQ29uZmlndXJhdGlvbihzYW1sQ29uZmlnSUQpXG5cbi8vIFJldHJpZXZlZCBTQU1MIENvbmZpZ3VyYXRpb246IiwgIm5hbWUiOiAiTVdHLkdldFNBTUxDb25maWd1cmF0aW9uIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIFNBTUwgY29uZmlndXJhdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBJRC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBJRCBvZiB0aGUgU0FNTCBjb25maWd1cmF0aW9uIHRvIHJldHJpZXZlLiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGFzc2lnbm1lbnQgZGV0YWlscyBmb3IgdGhlIHNwZWNpZmllZCB0ZW5hbnQgSUQgYW5kIHNlcnZpY2UgZnJvbSB0aGUgR1NELiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSB0ZW5hbnQgSUQgYW5kIHNlcnZpY2UgbmFtZVxuU1RSSU5HIHRlbmFudElEID0gXCJleGFtcGxlVGVuYW50SURcIlxuU1RSSU5HIHNlcnZpY2VOYW1lID0gXCJleGFtcGxlU2VydmljZVwiXG5cbi8vIENhbGwgdGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc2VydmljZSBhc3NpZ25tZW50XG5KU09OIGFzc2lnbm1lbnREZXRhaWxzID0gTVdHLkdldFNlcnZpY2VBc3NpZ25tZW50RnJvbVRlbmFudCh0ZW5hbnRJRCwgc2VydmljZU5hbWUpXG5cbi8vIEFzc2lnbm1lbnQgRGV0YWlsczogXCIgKyBhc3NpZ25tZW50RGV0YWlscy50b1N0cmluZygpIiwgIm5hbWUiOiAiTVdHLkdldFNlcnZpY2VBc3NpZ25tZW50RnJvbVRlbmFudCAoU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBhc3NpZ25tZW50IGRldGFpbHMgZm9yIGEgc3BlY2lmaWVkIHRlbmFudElEIGFuZCBzZXJ2aWNlIGZyb20gdGhlIEdTRC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSB0ZW5hbnQgSUQuXG4yLiBgU1RSSU5HYDogVGhlIHNlcnZpY2UgbmFtZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgU1NMIGNsaWVudCBjZXJ0aWZpY2F0ZSBzZXJpYWwiLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBjZXJ0aWZpY2F0ZVNlcmlhbCA9IE1XRy5HZXRTU0xDbGllbnRDZXJ0aWZpY2F0ZVNlcmlhbCgpXG4vLyBTU0wgQ2xpZW50IENlcnRpZmljYXRlIFNlcmlhbDogXCIgKyBjZXJ0aWZpY2F0ZVNlcmlhbFxuXG4vLyBZb3UgY2FuIGFkZCBhZGRpdGlvbmFsIGxvZ2ljIGhlcmUgYmFzZWQgb24gdGhlIGNlcnRpZmljYXRlIHNlcmlhbFxuSUYgY2VydGlmaWNhdGVTZXJpYWwgPT0gXCIxMjM0NTY3ODkwQUJDREVGXCIgVEhFTiB7XG4gICAgTVdHLkFsbG93KFwiVmFsaWQgQ2VydGlmaWNhdGVcIilcbn0gRUxTRSB7XG4gICAgTVdHLkJsb2NrKFwiSW52YWxpZCBDZXJ0aWZpY2F0ZVwiKVxufSIsICJuYW1lIjogIk1XRy5HZXRTU0xDbGllbnRDZXJ0aWZpY2F0ZVNlcmlhbCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBTU0wgY2xpZW50IGNlcnRpZmljYXRlIHNlcmlhbC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYFNUUklOR2AgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBwcm9wZXJ0eSBkaXNwYXRjaGVyLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBwcm9wZXJ0eSBuYW1lIHlvdSB3YW50IHRvIHJldHJpZXZlXG5TVFJJTkcgcHJvcGVydHlOYW1lID0gXCJleGFtcGxlLnByb3BlcnR5Lm5hbWVcIlxuXG4vLyBHZXQgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eVxuU1RSSU5HIHByb3BlcnR5VmFsdWUgPSBNV0cuR2V0U3RyaW5nUHJvcGVydHkocHJvcGVydHlOYW1lKVxuXG4vLyBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGlzOiBcbi8vIHByb3BlcnR5VmFsdWUiLCAibmFtZSI6ICJNV0cuR2V0U3RyaW5nUHJvcGVydHkgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBwcm9wZXJ0eSBJRCBvciBuYW1lIGFzIHVuZGVyc3Rvb2QgYnkgdGhlIHByb3BlcnR5IGRpc3BhdGNoZXIuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGlzdCBvZiBBenVyZSBBRCBncm91cHMgZm9yIHRoZSBzcGVjaWZpZWQgdXNlci4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgQXp1cmUgRGlyZWN0b3J5IExvb2t1cCBTZXR0aW5nXG5NV0cuQXp1cmVEaXJMb29rdXBTZXR0aW5nIGF6dXJlU2V0dGluZyA9IE1XRy5BenVyZURpckxvb2t1cFNldHRpbmcoKVxuXG4vLyBEZWZpbmUgdGhlIHVzZXIgZm9yIHdob20gdG8gcmV0cmlldmUgdGhlIEF6dXJlIGdyb3Vwc1xuU1RSSU5HIHVzZXJuYW1lID0gXCJ1c2VyQGV4YW1wbGUuY29tXCJcblxuLy8gUmV0cmlldmUgdGhlIEF6dXJlIGdyb3VwcyBmb3IgdGhlIHNwZWNpZmllZCB1c2VyXG5WRUNUT1I8U1RSSU5HPiB1c2VyR3JvdXBzID0gTVdHLkdldFVzZXJBenVyZUdyb3VwcyhhenVyZVNldHRpbmcsIHVzZXJuYW1lKVxuXG4vLyBBenVyZSBBRCBHcm91cHMgZm9yIHVzZXJAZXhhbXBsZS5jb206IHVzZXJHcm91cHNcblxuLy8gRXhhbXBsZSBjb25kaXRpb24gdG8gYmxvY2sgYWNjZXNzIGlmIHRoZSB1c2VyIGlzIG5vdCBpbiBhIHNwZWNpZmljIGdyb3VwXG5JRiBcInJlcXVpcmVkLWdyb3VwXCIgTk9UIElOIHVzZXJHcm91cHMgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiVXNlciBpcyBub3QgaW4gdGhlIHJlcXVpcmVkIEF6dXJlIEFEIGdyb3VwLlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJVc2VyIGlzIGluIHRoZSByZXF1aXJlZCBBenVyZSBBRCBncm91cC5cIilcbn0iLCAibmFtZSI6ICJNV0cuR2V0VXNlckF6dXJlR3JvdXBzIChNV0cuQXp1cmVEaXJMb29rdXBTZXR0aW5nLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIEF6dXJlIEFEIGdyb3VwIGxpc3QgZm9yIHRoZSBnaXZlbiB1c2VyLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkF6dXJlRGlyTG9va3VwU2V0dGluZ2A6IFRoZSBBenVyZSBkaXJlY3RvcnkgbG9va3VwIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuXG4yLiBgU1RSSU5HYDogVGhlIHVzZXIgdG8gbG9vayB1cC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgYSBnbG9iIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiBmcm9tIFhNTC1NV0cgZm9ybWF0IHRvIGEgYFJlZ0V4SlNpYCBvYmplY3QuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgYSBnbG9iIHBhdHRlcm5cblNUUklORyBnbG9iUGF0dGVybiA9IFwiKi5leGFtcGxlLmNvbS8qXCJcblxuLy8gQ29udmVydCB0aGUgZ2xvYiBwYXR0ZXJuIHRvIGEgcmVndWxhciBleHByZXNzaW9uXG5TVFJJTkcgcmVnZXhQYXR0ZXJuID0gTVdHLkdsb2JPclJlZ0V4VG9SZWdFeChnbG9iUGF0dGVybilcblxuLy8gR2V0IHRoZSBjdXJyZW50IFVSTFxuTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5cbi8vIENoZWNrIGlmIHRoZSBjdXJyZW50IFVSTCBtYXRjaGVzIHRoZSBjb252ZXJ0ZWQgcmVndWxhciBleHByZXNzaW9uXG5JRiBjdXJyZW50VXJsIE1BVENIRVMgcmVnZXhQYXR0ZXJuIFRIRU4ge1xuICAgIC8vIFRoZSBVUkwgbWF0Y2hlcyB0aGUgcGF0dGVybi5cbiAgICAvLyBQZXJmb3JtIHNvbWUgYWN0aW9uLCBlLmcuLCBhbGxvdyB0aGUgcmVxdWVzdFxuICAgIE1XRy5BbGxvdyhcIk1hdGNoZWRQYXR0ZXJuXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBVUkwgZG9lcyBub3QgbWF0Y2ggdGhlIHBhdHRlcm4uXG4gICAgLy8gUGVyZm9ybSBzb21lIG90aGVyIGFjdGlvbiwgZS5nLiwgYmxvY2sgdGhlIHJlcXVlc3RcbiAgICBNV0cuQmxvY2soXCJQYXR0ZXJuTWlzbWF0Y2hcIilcbn0iLCAibmFtZSI6ICJNV0cuR2xvYk9yUmVnRXhUb1JlZ0V4IChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBgUmVnRXhKU2lgLWZvcm1hdCByZWd1bGFyIGV4cHJlc3Npb24gY29udmVydGVkIGZyb20gYW4gWE1MLU1XRyBnbG9iIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IEEgZ2xvYiBvciByZWd1bGFyIGV4cHJlc3Npb24gaW4gWE1MLU1XRyBmb3JtYXQgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IHRpbWUgaXMgd2l0aGluIHRoZSBnaXZlbiBHTVQgdGltZSByYW5nZSwgb3RoZXJ3aXNlIGBGQUxTRWAuIERhdGVzIG11c3QgYmUgaW4gR01UIGZvcm1hdCAoZS5nLiwgMSBTZXB0ZW1iZXIgMjAxMiAwOTowNjowMyBQTSBvciBUaHUsIDEgU2VwdGVtYmVyIDIwMTIgMjE6MDY6MDMpLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHN0YXJ0VGltZSA9IFwiMDg6MDBcIlxuU1RSSU5HIGVuZFRpbWUgPSBcIjE3OjAwXCJcblxuSUYgTVdHLkdNVFRpbWVJc0luUmFuZ2Uoc3RhcnRUaW1lLCBlbmRUaW1lKSBUSEVOIHtcbiAgICAvLyBDdXJyZW50IHRpbWUgaXMgd2l0aGluIHRoZSByYW5nZS5cbiAgICBNV0cuQWxsb3coXCJUaW1lUmFuZ2VDaGVja1wiKVxufSBFTFNFIHtcbiAgICAvLyBDdXJyZW50IHRpbWUgaXMgb3V0c2lkZSB0aGUgcmFuZ2UuXG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIG91dHNpZGUgYWxsb3dlZCB0aW1lIHJhbmdlLlwiKVxufSIsICJuYW1lIjogIk1XRy5HTVRUaW1lSXNJblJhbmdlIChTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgdGltZSBpcyB3aXRoaW4gdGhlIGdpdmVuIEdNVCB0aW1lIHJhbmdlLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdGFydCB0aW1lIGluIEdNVCBmb3JtYXQuXG4yLiBgU1RSSU5HYDogVGhlIGVuZCB0aW1lIGluIEdNVCBmb3JtYXQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIEhUVFAvMiBzdHJlYW0gSUQgZm9yIHRoZSBjdXJyZW50IHJlcXVlc3QsIG9yIGAwYCBmb3IgSFRUUC8xIGNvbm5lY3Rpb25zLiIsICJjb2RlX2V4YW1wbGUiOiAiUk9VVElORSBleGFtcGxlIE9OIChXZWIuUmVxdWVzdCkge1xuICAgIE5VTUJFUiBoMlN0cmVhbUlkID0gTVdHLkgyU3RyZWFtSURcbiAgICBTVFJJTkcgcHJvdG9jb2xMYWJlbCA9IFwiSFRUUFwiXG4gICAgSUYgaDJTdHJlYW1JZCA+IDAgVEhFTiB7XG4gICAgICAgIHByb3RvY29sTGFiZWwgPSBcIkhUVFAvMlwiXG4gICAgfVxufSIsICJuYW1lIjogIk1XRy5IMlN0cmVhbUlEICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIEhUVFAvMiBzdHJlYW0gSUQgZm9yIHRoZSBjdXJyZW50IHJlcXVlc3QsIG9yIGAwYCBmb3IgSFRUUC8xIGNvbm5lY3Rpb25zLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBkdXJhdGlvbiBvZiB0aGUgVENQIGhhbmRzaGFrZSB3aXRoIHRoZSBzZXJ2ZXIiLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBzZXJ2ZXJVcmwgPSBNV0cuQ29ubmVjdGlvblZhcmlhYmxlc0dldChcInNlcnZlci51cmxcIilcbi8vIEF0dGVtcHRpbmcgdG8gY29ubmVjdCB0byBzZXJ2ZXI6IFwiICsgc2VydmVyVXJsXG5cbi8vIEhhbmRsZSB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyXG5NV0cuSGFuZGxlQ29ubmVjdFRvU2VydmVyKHNlcnZlclVybClcblxuLy8gQWRkaXRpb25hbCBsb2dpYyBjYW4gYmUgYWRkZWQgaGVyZVxuSUYgc2VydmVyVXJsID09IFwiaHR0cDovL2V4YW1wbGUuY29tXCIgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIGV4YW1wbGUuY29tIGlzIGJsb2NrZWRcIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiQ29ubmVjdGlvbiBhbGxvd2VkXCIpXG59IiwgIm5hbWUiOiAiTVdHLkhhbmRsZUNvbm5lY3RUb1NlcnZlciAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSB0aW1lIHRha2VuIHRvIGNvbXBsZXRlIHRoZSBUQ1AgaGFuZHNoYWtlIHdpdGggdGhlIHNlcnZlciBpbiBudW1lcmljYWwgZm9ybWF0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHNwZWNpZmllZCBoZWFkZXIgZXhpc3RzIGluIHRoZSBnaXZlbiBoZWFkZXIgbWFwLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5IZWFkZXJNYXAgaGVhZGVycyA9IE1XRy5HZXRSZXF1ZXN0SGVhZGVycygpXG5TVFJJTkcgaGVhZGVyTmFtZSA9IFwiVXNlci1BZ2VudFwiXG5cbklGIE1XRy5IYXNIZWFkZXIoaGVhZGVycywgaGVhZGVyTmFtZSkgVEhFTiB7XG4gICAgLy8gSGVhZGVyIFVzZXItQWdlbnQgZXhpc3RzIGluIHRoZSByZXF1ZXN0LlxufSBFTFNFIHtcbiAgICAvLyBIZWFkZXIgVXNlci1BZ2VudCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgcmVxdWVzdC5cbn0iLCAibmFtZSI6ICJNV0cuSGFzSGVhZGVyIChNV0cuSGVhZGVyTWFwLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBzcGVjaWZpZWQgaGVhZGVyIGV4aXN0cyBpbiB0aGUgZ2l2ZW4gaGVhZGVyIG1hcCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSGVhZGVyTWFwYDogVGhlIGhlYWRlciBtYXAgdG8gY2hlY2suXG4yLiBgU1RSSU5HYDogVGhlIGhlYWRlciBuYW1lIHRvIGNoZWNrIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGEgbWF0Y2hpbmcgY2VydGlmaWNhdGUgaXMgYXZhaWxhYmxlIGZvciB0aGUgc3BlY2lmaWVkIGhvc3QgaW4gdGhlIHJldmVyc2UgcHJveHkgc2V0dGluZ3MsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLkNsaWVudENvbnRleHRSZXZQcm94eVNldHRpbmcgcmV2UHJveHlTZXR0aW5nID0gLy8gSW5pdGlhbGl6ZSB5b3VyIHJldmVyc2UgcHJveHkgc2V0dGluZ3MgaGVyZVxuU1RSSU5HIGhvc3ROYW1lID0gXCJleGFtcGxlLmNvbVwiXG5cbkJPT0xFQU4gaGFzQ2VydGlmaWNhdGUgPSBNV0cuSGFzTWF0Y2hpbmdDZXJ0aWZpY2F0ZShyZXZQcm94eVNldHRpbmcsIGhvc3ROYW1lKVxuXG5JRiBoYXNDZXJ0aWZpY2F0ZSBUSEVOIHtcbiAgICAvLyBBIG1hdGNoaW5nIGNlcnRpZmljYXRlIGlzIGF2YWlsYWJsZSBmb3IgXCIgKyBob3N0TmFtZVxufSBFTFNFIHtcbiAgICAvLyBObyBtYXRjaGluZyBjZXJ0aWZpY2F0ZSBmb3VuZCBmb3IgXCIgKyBob3N0TmFtZVxufSIsICJuYW1lIjogIk1XRy5IYXNNYXRjaGluZ0NlcnRpZmljYXRlIChNV0cuQ2xpZW50Q29udGV4dFJldlByb3h5U2V0dGluZywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhIG1hdGNoaW5nIGNlcnRpZmljYXRlIGlzIGF2YWlsYWJsZSBmb3IgdGhlIHNwZWNpZmllZCBob3N0IGluIHRoZSByZXZlcnNlIHByb3h5IHNldHRpbmdzLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5DbGllbnRDb250ZXh0UmV2UHJveHlTZXR0aW5nYDogVGhlIHJldmVyc2UgcHJveHkgc2V0dGluZ3MuXG4yLiBgU1RSSU5HYDogVGhlIGhvc3QgbmFtZSB0byBjaGVjay4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGFueSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGhlYWRlciBpbiB0aGUgZ2l2ZW4gaGVhZGVyIG1hcCBtYXRjaGVzIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLkhlYWRlck1hcCBoZWFkZXJzID0gTVdHLlJlcXVlc3RIZWFkZXJzKClcblNUUklORyBoZWFkZXJOYW1lID0gXCJVc2VyLUFnZW50XCJcblJlZ0V4SlNpIHJlZ2V4ID0gUmVnRXhKU2koXCJNb3ppbGxhXCIpXG5cbklGIE1XRy5IYXNNYXRjaGluZ0hlYWRlcihoZWFkZXJzLCBoZWFkZXJOYW1lLCByZWdleCkgVEhFTiB7XG4gICAgLy8gQmxvY2tlZCBkdWUgdG8gVXNlci1BZ2VudCBjb250YWluaW5nICdNb3ppbGxhJ1xuICAgIE1XRy5CbG9jayhcIkJsb2NrZWQgZHVlIHRvIFVzZXItQWdlbnQgY29udGFpbmluZyAnTW96aWxsYSdcIilcbn0iLCAibmFtZSI6ICJNV0cuSGFzTWF0Y2hpbmdIZWFkZXIgKE1XRy5IZWFkZXJNYXAsIFNUUklORywgUmVnRXhKU2kpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGFueSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGhlYWRlciBpbiB0aGUgZ2l2ZW4gaGVhZGVyIG1hcCBtYXRjaGVzIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkhlYWRlck1hcGA6IFRoZSBoZWFkZXIgbWFwIHRvIGNoZWNrLlxuMi4gYFNUUklOR2A6IFRoZSBoZWFkZXIgbmFtZSB0byBjaGVjay5cbjMuIGBSZWdFeEpTaWA6IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggdGhlIGhlYWRlciB2YWx1ZSBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgZGF0YSBleHRyYWN0aW9uIGZvciB0aGUgY3VycmVudCBmaWxlIHR5cGUgaXMgc3VwcG9ydGVkLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIi8vIENoZWNrIGlmIHRoZSBvcGVuZXIgZm9yIGEgc3BlY2lmaWMgY29udGVudCB0eXBlIGlzIGF2YWlsYWJsZVxuSUYgTVdHLkhhc09wZW5lcihcImFwcGxpY2F0aW9uL3BkZlwiKSBUSEVOIHtcbiAgICAvLyBQREYgb3BlbmVyIGlzIGF2YWlsYWJsZS5cbn0gRUxTRSB7XG4gICAgLy8gUERGIG9wZW5lciBpcyBub3QgYXZhaWxhYmxlLlxufSIsICJuYW1lIjogIk1XRy5IYXNPcGVuZXIgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgZGF0YSBleHRyYWN0aW9uIGZvciB0aGUgZmlsZSB0eXBlIGlzIHN1cHBvcnRlZCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgVVJMIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgcXVlcnktcGFyYW1ldGVyIGtleSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblNUUklORyBwYXJhbWV0ZXJUb0NoZWNrID0gXCJleGFtcGxlUGFyYW1cIlxuXG5JRiBNV0cuSGFzUGFyYW1ldGVyKGN1cnJlbnRVcmwsIHBhcmFtZXRlclRvQ2hlY2spIFRIRU4ge1xuICAgIC8vIFRoZSBVUkwgaGFzIHRoZSBwYXJhbWV0ZXI6IGV4YW1wbGVQYXJhbVxufSBFTFNFIHtcbiAgICAvLyBUaGUgVVJMIGRvZXMgbm90IGhhdmUgdGhlIHBhcmFtZXRlcjogZXhhbXBsZVBhcmFtXG59IiwgIm5hbWUiOiAiTVdHLkhhc1BhcmFtZXRlciAoTVdHLlVSTCwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgc3BlY2lmaWVkIHF1ZXJ5LXBhcmFtZXRlciBrZXkgZXhpc3RzIGluIHRoZSBnaXZlbiBVUkwsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVSTGA6IFRoZSBVUkwgb2JqZWN0IHRvIGluc3BlY3QuXG4yLiBgU1RSSU5HYDogVGhlIHF1ZXJ5LXBhcmFtZXRlciBrZXkgbmFtZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSGVhZGVyTWFwIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGhlYWRlciBtYXAgb2YgdGhlIGdpdmVuIHJlcXVlc3Qgb3IgcmVzcG9uc2UuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBSZXRyaWV2ZSB0aGUgaGVhZGVycyBmcm9tIHRoZSB3ZWIgcmVxdWVzdFxuTVdHLkhlYWRlck1hcCBoZWFkZXJzID0gTVdHLkhlYWRlcnMoV2ViLlJlcXVlc3QpXG5cbi8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgaGVhZGVycyBhbmQgcHJpbnQgZWFjaCBvbmVcbkZPUiBFQUNIIGhlYWRlciBJTiBoZWFkZXJzIHtcbiAgICAvLyBIZWFkZXI6IFwiICsgaGVhZGVyICsgXCIgVmFsdWU6IFwiICsgaGVhZGVyc1toZWFkZXJdXG59IiwgIm5hbWUiOiAiTVdHLkhlYWRlcnMgKE1XRy5SZXF1ZXN0UmVzcG9uc2UpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBtYXAgb2YgaGVhZGVycyBmcm9tIHRoZSBnaXZlbiByZXF1ZXN0IG9yIHJlc3BvbnNlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlJlcXVlc3RSZXNwb25zZWA6IFRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlIG9iamVjdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgaG9zdCBjb21wb25lbnQgZnJvbSB0aGUgVVJMIG9iamVjdC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuU1RSSU5HIGhvc3QgPSBNV0cuSG9zdChjdXJyZW50VXJsKVxuLy8gVGhlIGhvc3QgcGFydCBvZiB0aGUgVVJMIGlzOiArIGhvc3QiLCAibmFtZSI6ICJNV0cuSG9zdCAoTVdHLlVSTCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgaG9zdCBzdHJpbmcgZXh0cmFjdGVkIGZyb20gdGhlIGdpdmVuIFVSTC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5VUkxgOiBUaGUgVVJMIG9iamVjdCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGhvc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHJpZXZlcyBhIEhvc3RBbmRDZXJ0aWZpY2F0ZSBsaXN0IGJ5IGxpc3QgbmFtZSIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBuYW1lIG9mIHRoZSBIb3N0IGFuZCBDZXJ0aWZpY2F0ZSBsaXN0IHlvdSB3YW50IHRvIHJldHJpZXZlXG5TVFJJTkcgbGlzdE5hbWUgPSBcInRydXN0ZWRIb3N0c1wiXG5cbi8vIFJldHJpZXZlIHRoZSBIb3N0IGFuZCBDZXJ0aWZpY2F0ZSBsaXN0IGJ5IG5hbWVcblZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPiBob3N0QW5kQ2VydExpc3QgPSBNV0cuSG9zdEFuZENlcnRpZmljYXRlTGlzdEJ5TmFtZShsaXN0TmFtZSlcblxuLy8gQ2hlY2sgaWYgdGhlIGxpc3QgaXMgbm90IGVtcHR5XG5JRiBob3N0QW5kQ2VydExpc3QgIT0gTlVMTCBBTkQgaG9zdEFuZENlcnRMaXN0LlNJWkUoKSA+IDAgVEhFTiB7XG4gICAgLy8gSG9zdCBhbmQgQ2VydGlmaWNhdGUgbGlzdCAnbGlzdE5hbWUnIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkuXG4gICAgXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBsaXN0IGFuZCBwZXJmb3JtIHNvbWUgYWN0aW9uXG4gICAgRk9SIEVBQ0ggaG9zdEFuZENlcnQgSU4gaG9zdEFuZENlcnRMaXN0IERPIHtcbiAgICAgICAgLy8gSG9zdDogaG9zdEFuZENlcnQuSG9zdCwgQ2VydGlmaWNhdGU6IGhvc3RBbmRDZXJ0LkNlcnRpZmljYXRlXG4gICAgICAgIC8vIEFkZGl0aW9uYWwgbG9naWMgYmFzZWQgb24gdGhlIGhvc3QgYW5kIGNlcnRpZmljYXRlXG4gICAgfVxufSBFTFNFIHtcbiAgICAvLyBIb3N0IGFuZCBDZXJ0aWZpY2F0ZSBsaXN0ICdsaXN0TmFtZScgaXMgZW1wdHkgb3Igbm90IGZvdW5kLlxufSIsICJuYW1lIjogIk1XRy5Ib3N0QW5kQ2VydGlmaWNhdGVMaXN0QnlOYW1lIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIEhvc3RBbmRDZXJ0aWZpY2F0ZSBsaXN0IHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIEhvc3RBbmRDZXJ0aWZpY2F0ZSBsaXN0IHRvIHJldHJpZXZlLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgYSBIb3N0QW5kQ2VydGlmaWNhdGUgbGlzdCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBleGlzdHMsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGxpc3ROYW1lID0gXCJleGFtcGxlX2xpc3RfbmFtZVwiXG5cbklGIE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGVMaXN0QnlOYW1lRXhpc3RzKGxpc3ROYW1lKSBUSEVOIHtcbiAgICAvLyBUaGUgaG9zdCBhbmQgY2VydGlmaWNhdGUgbGlzdCBleGlzdHMuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBob3N0IGFuZCBjZXJ0aWZpY2F0ZSBsaXN0IGRvZXMgbm90IGV4aXN0LlxufSIsICJuYW1lIjogIk1XRy5Ib3N0QW5kQ2VydGlmaWNhdGVMaXN0QnlOYW1lRXhpc3RzIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgSG9zdEFuZENlcnRpZmljYXRlIGxpc3Qgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgZXhpc3RzLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSBIb3N0QW5kQ2VydGlmaWNhdGUgbGlzdCB0byBjaGVjayBmb3IuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgaG9zdCBjb21wb25lbnQgb2YgdGhlIGdpdmVuIFVSTCBpcyBhbiBJUCBhZGRyZXNzLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuQk9PTEVBTiBpc0lQID0gTVdHLkhvc3RJc0lQKGN1cnJlbnRVcmwpXG5cbklGIGlzSVAgVEhFTiB7XG4gICAgLy8gVGhlIGhvc3QgaXMgYW4gSVAgYWRkcmVzcy5cbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gSVAgYWRkcmVzc2VzIGlzIG5vdCBhbGxvd2VkLlwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGUgaG9zdCBpcyBub3QgYW4gSVAgYWRkcmVzcy5cbiAgICBNV0cuQWxsb3coXCJIb3N0IGlzIG5vdCBhbiBJUCBhZGRyZXNzLlwiKVxufSIsICJuYW1lIjogIk1XRy5Ib3N0SXNJUCAoTVdHLlVSTCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGhvc3QgY29tcG9uZW50IG9mIHRoZSBnaXZlbiBVUkwgaXMgYW4gSVAgYWRkcmVzcywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVVJMYDogVGhlIFVSTCBvYmplY3QgdG8gaW5zcGVjdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBob3N0IG9mIHRoZSBnaXZlbiBVUkwgaXMgYSBzdWJkb21haW4gb2YgYW55IG9mIHRoZSBwcm92aWRlZCBkb21haW5zLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuVkVDVE9SPFNUUklORz4gYWxsb3dlZERvbWFpbnMgPSBcImV4YW1wbGUuY29tXCIsIFwidGVzdC5jb21cIiwgXCJzYW1wbGUub3JnXCJcblxuSUYgTVdHLkhvc3RJc1N1YmRvbWFpbk9mQW55KGN1cnJlbnRVcmwsIGFsbG93ZWREb21haW5zKSBUSEVOIHtcbiAgICAvLyBUaGUgaG9zdCBpcyBhIHN1YmRvbWFpbiBvZiBvbmUgb2YgdGhlIGFsbG93ZWQgZG9tYWlucy5cbiAgICBNV0cuQWxsb3coXCJTdWJkb21haW4gY2hlY2sgcGFzc2VkXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBob3N0IGlzIG5vdCBhIHN1YmRvbWFpbiBvZiBhbnkgYWxsb3dlZCBkb21haW5zLlxuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBkZW5pZWQ6IEhvc3QgaXMgbm90IGEgc3ViZG9tYWluIG9mIGFsbG93ZWQgZG9tYWluc1wiKVxufSIsICJuYW1lIjogIk1XRy5Ib3N0SXNTdWJkb21haW5PZkFueSAoTVdHLlVSTCwgVkVDVE9SPFNUUklORz4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBob3N0IG9mIHRoZSBnaXZlbiBVUkwgaXMgYSBzdWJkb21haW4gb2YgYW55IG9mIHRoZSBwcm92aWRlZCBkb21haW5zLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5VUkxgOiBUaGUgVVJMIHdob3NlIGhvc3QgdG8gY2hlY2suXG4yLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgbGlzdCBvZiBkb21haW5zIHRvIGNoZWNrIGFnYWluc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGhvc3RuYW1lIG9mIHRoZSBwcm94eS4iLCAiY29kZV9leGFtcGxlIjogIi8vIENhbGwgdGhlIE1XRy5Ib3N0TmFtZSgpIGZ1bmN0aW9uIHRvIGdldCB0aGUgaG9zdG5hbWUgb2YgdGhlIHByb3h5XG5TVFJJTkcgcHJveHlIb3N0TmFtZSA9IE1XRy5Ib3N0TmFtZSgpXG5cbi8vIFRoZSBob3N0bmFtZSBvZiB0aGUgcHJveHkgaXM6IFwiICsgcHJveHlIb3N0TmFtZSIsICJuYW1lIjogIk1XRy5Ib3N0TmFtZSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBob3N0bmFtZSBvZiB0aGUgcHJveHkuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGVsZW1lbnQgbmFtZSBpbiBIVE1MIG9wZW5lciIsICJjb2RlX2V4YW1wbGUiOiAiLy8gR2V0IHRoZSBuYW1lIG9mIHRoZSBIVE1MIGVsZW1lbnRcblNUUklORyBlbGVtZW50TmFtZSA9IE1XRy5IVE1MRWxlbWVudE5hbWUoKVxuXG4vLyBDaGVjayBpZiB0aGUgZWxlbWVudCBuYW1lIGlzIFwic2NyaXB0XCJcbklGIGVsZW1lbnROYW1lID09IFwic2NyaXB0XCIgVEhFTiB7XG4gICAgLy8gQmxvY2sgdGhlIHJlc3BvbnNlIGlmIHRoZSBlbGVtZW50IGlzIGEgc2NyaXB0XG4gICAgTVdHLkJsb2NrKFwiQmxvY2tpbmcgc2NyaXB0IGVsZW1lbnRzIGZvciBzZWN1cml0eSByZWFzb25zXCIpXG59IEVMU0Uge1xuICAgIC8vIEFsbG93IHRoZSByZXNwb25zZSBpZiB0aGUgZWxlbWVudCBpcyBub3QgYSBzY3JpcHRcbiAgICBNV0cuQWxsb3coXCJFbGVtZW50IGlzIG5vdCBhIHNjcmlwdFwiKVxufSIsICJuYW1lIjogIk1XRy5IVE1MRWxlbWVudE5hbWUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZWxlbWVudCBuYW1lIGluIEhUTUwgb3BlbmVyLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgSFRUUCB0dW5uZWxpbmcgaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBNV0cuSFRUUFR1bm5lbEVuYWJsZWQoKSBUSEVOIHtcbiAgICAvLyBIVFRQIFR1bm5lbCBpcyBlbmFibGVkXG4gICAgLy8gQWRkaXRpb25hbCBhY3Rpb25zIGNhbiBiZSB0YWtlbiBoZXJlIGlmIEhUVFAgVHVubmVsIGlzIGVuYWJsZWRcbn0gRUxTRSB7XG4gICAgLy8gSFRUUCBUdW5uZWwgaXMgbm90IGVuYWJsZWRcbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUgaWYgSFRUUCBUdW5uZWwgaXMgbm90IGVuYWJsZWRcbn0iLCAibmFtZSI6ICJNV0cuSFRUUFR1bm5lbEVuYWJsZWQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgSFRUUCB0dW5uZWxpbmcgaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIElBTSBhdXRoZW50aWNhdGlvbiBlcnJvciBtZXNzYWdlLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGVycm9yTWVzc2FnZSA9IE1XRy5JQU1BdXRoRXJyb3JNZXNzYWdlKClcblxuSUYgZXJyb3JNZXNzYWdlICE9IFwiXCIgVEhFTiB7XG4gICAgLy8gSUFNIEF1dGhlbnRpY2F0aW9uIEVycm9yOiBcIiArIGVycm9yTWVzc2FnZVxufSIsICJuYW1lIjogIk1XRy5JQU1BdXRoRXJyb3JNZXNzYWdlICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIElBTSBhdXRoZW50aWNhdGlvbiBlcnJvciBtZXNzYWdlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgYXV0aG9yaXplZCBzY29wZXMgZm9yIHRoZSBzcGVjaWZpZWQgYXVkaWVuY2UuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgdXNlciA9IFwiZXhhbXBsZVVzZXJcIlxuU1RSSU5HIHJlc291cmNlID0gXCJleGFtcGxlUmVzb3VyY2VcIlxuXG4vLyBDaGVjayBpZiB0aGUgdXNlciBpcyBhdXRob3JpemVkIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2VcblNUUklORyBhdXRob3JpemF0aW9uU3RhdHVzID0gTVdHLklBTUF1dGhvcml6ZWQodXNlciArIFwiOlwiICsgcmVzb3VyY2UpXG5cbklGIGF1dGhvcml6YXRpb25TdGF0dXMgPT0gXCJBVVRIT1JJWkVEXCIgVEhFTiB7XG4gICAgTVdHLkFsbG93KFwiVXNlciBpcyBhdXRob3JpemVkXCIpXG59IEVMU0Uge1xuICAgIE1XRy5CbG9jayhcIlVzZXIgaXMgbm90IGF1dGhvcml6ZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuSUFNQXV0aG9yaXplZCAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgYXV0aG9yaXplZCBzY29wZXMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgZXhwZWN0ZWQgYXVkaWVuY2UuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkhlYWRlck1hcCIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBJQ0FQIHJlcXVlc3QgbW9kaWZpY2F0aW9uIGhlYWRlcnMgYXMgYSBoZWFkZXIgbWFwLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLklDQVBDbGllbnRTZXR0aW5nIGljYXBTZXR0aW5nID0gLi4uIC8vIEluaXRpYWxpemUgeW91ciBJQ0FQIGNsaWVudCBzZXR0aW5nIGhlcmVcblxuLy8gQWRkIGEgY3VzdG9tIGhlYWRlciB0byB0aGUgSUNBUCByZXF1ZXN0XG5NV0cuSUNBUENsaWVudEFkZFJlcXVlc3RIZWFkZXIoaWNhcFNldHRpbmcsIFwiWC1DdXN0b20tSGVhZGVyXCIsIFwiQ3VzdG9tVmFsdWVcIilcblxuLy8gT3B0aW9uYWxseSwgeW91IGNhbiBhZGQgbW9yZSBoZWFkZXJzIGFzIG5lZWRlZFxuTVdHLklDQVBDbGllbnRBZGRSZXF1ZXN0SGVhZGVyKGljYXBTZXR0aW5nLCBcIlgtQW5vdGhlci1IZWFkZXJcIiwgXCJBbm90aGVyVmFsdWVcIilcblxuLy8gQ29udGludWUgd2l0aCBvdGhlciBsb2dpYyBvciBhbGxvdyB0aGUgcmVxdWVzdFxuTVdHLkFsbG93KFwiSUNBUCBoZWFkZXJzIGFkZGVkXCIpIiwgIm5hbWUiOiAiTVdHLklDQVBDbGllbnRSZXFNb2RIZWFkZXJzIChNV0cuSUNBUENsaWVudFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIElDQVAgcmVxdWVzdCBoZWFkZXJzIGFzIGEgYE1XRy5IZWFkZXJNYXBgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLklDQVBDbGllbnRTZXR0aW5nYDogVGhlIElDQVAgY2xpZW50IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgSUNBUCBzZXJ2ZXIgcmVzcG9uZHMgdG8gYSBSZXFNb2QgcmVxdWVzdCB3aXRoIGEgcmVzcG9uc2UgaGVhZGVyLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGFuIElDQVAgY2xpZW50IHNldHRpbmcgb2JqZWN0XG5NV0cuSUNBUENsaWVudFNldHRpbmcgaWNhcFNldHRpbmcgPSBNV0cuSUNBUENsaWVudFNldHRpbmcoKVxuXG4vLyBBc3N1bWluZyBNV0cuSUNBUENsaWVudFJlcU1vZFNhdGlzZmFjdGlvbiBpcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gSUNBUCBjbGllbnQgc2V0dGluZ1xuTVdHLklDQVBDbGllbnRSZXFNb2RTYXRpc2ZhY3Rpb24oaWNhcFNldHRpbmcpXG5cbi8vIENhbGxlZCBNV0cuSUNBUENsaWVudFJlcU1vZFNhdGlzZmFjdGlvbiB3aXRoIHRoZSBJQ0FQIGNsaWVudCBzZXR0aW5nIiwgIm5hbWUiOiAiTVdHLklDQVBDbGllbnRSZXFNb2RTYXRpc2ZhY3Rpb24gKE1XRy5JQ0FQQ2xpZW50U2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIElDQVAgc2VydmVyIHJlc3BvbmRzIHRvIGEgUmVxTW9kIHJlcXVlc3Qgd2l0aCBhIHJlc3BvbnNlIGhlYWRlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JQ0FQQ2xpZW50U2V0dGluZ2A6IFRoZSBJQ0FQIHNlcnZlciBjb25maWd1cmF0aW9uIHNldHRpbmdzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIElDQVAgc2VydmVyIGNoYW5nZXMgdGhlIEhUVFAgc3RhdGUgb2YgdGhlIHJlc3BvbnNlLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLklDQVBDbGllbnRTZXR0aW5nIGljYXBTZXR0aW5ncyA9IC4uLiAvLyBJbml0aWFsaXplIHdpdGggYXBwcm9wcmlhdGUgc2V0dGluZ3NcblxuSUYgTVdHLklDQVBDbGllbnRSZXNwTW9kRW5jYXBzdWxhdGVkSFRUUENoYW5nZWQoaWNhcFNldHRpbmdzKSBUSEVOIHtcbiAgICAvLyBJQ0FQIHNlcnZlciBjaGFuZ2VkIHRoZSBIVFRQIHN0YXRlIG9mIHRoZSByZXNwb25zZS5cbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGlmIHRoZSBIVFRQIHN0YXRlIHdhcyBjaGFuZ2VkXG59IEVMU0Uge1xuICAgIC8vIElDQVAgc2VydmVyIGRpZCBub3QgY2hhbmdlIHRoZSBIVFRQIHN0YXRlIG9mIHRoZSByZXNwb25zZS5cbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGlmIHRoZSBIVFRQIHN0YXRlIHdhcyBub3QgY2hhbmdlZFxufSIsICJuYW1lIjogIk1XRy5JQ0FQQ2xpZW50UmVzcE1vZEVuY2Fwc3VsYXRlZEhUVFBDaGFuZ2VkIChNV0cuSUNBUENsaWVudFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBJQ0FQIHNlcnZlciBjaGFuZ2VzIHRoZSBIVFRQIHN0YXRlIG9mIHRoZSByZXNwb25zZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JQ0FQQ2xpZW50U2V0dGluZ2A6IFRoZSBJQ0FQIHNlcnZlciBjb25maWd1cmF0aW9uIHNldHRpbmdzLiJ9LCB7InJldHVybl90eXBlIjogIk1XRy5IZWFkZXJNYXAiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgSUNBUCByZXNwb25zZSBtb2RpZmljYXRpb24gaGVhZGVycyBhcyBhIGhlYWRlciBtYXAuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuSUNBUENsaWVudFNldHRpbmcgaWNhcFNldHRpbmcgPSAuLi4gLy8gSW5pdGlhbGl6ZSB5b3VyIElDQVAgY2xpZW50IHNldHRpbmcgaGVyZVxuU1RSSU5HIGhlYWRlck5hbWUgPSBcIlgtQ3VzdG9tLUhlYWRlclwiXG5TVFJJTkcgaGVhZGVyVmFsdWUgPSBcIkN1c3RvbVZhbHVlXCJcblxuTVdHLklDQVBDbGllbnRBZGRSZXF1ZXN0SGVhZGVyKGljYXBTZXR0aW5nLCBoZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZSlcbi8vIEFkZGVkIElDQVAgcmVxdWVzdCBoZWFkZXI6IFwiICsgaGVhZGVyTmFtZSArIFwiIHdpdGggdmFsdWU6IFwiICsgaGVhZGVyVmFsdWUiLCAibmFtZSI6ICJNV0cuSUNBUENsaWVudFJlc3BNb2RIZWFkZXJzIChNV0cuSUNBUENsaWVudFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIElDQVAgcmVzcG9uc2UgbW9kaWZpY2F0aW9uIGhlYWRlcnMgYXMgYSBgTVdHLkhlYWRlck1hcGAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSUNBUENsaWVudFNldHRpbmdgOiBUaGUgSUNBUCBjbGllbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgVVJJIG9mIHRoZSBjdXJyZW50IElDQVAgcmVxdWVzdCBhcyBhIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIi8vIFNUUklORyBNV0cuSUNBUFVyaVN0cmluZygpXG5TVFJJTkcgaWNhcFVyaSA9IE1XRy5JQ0FQVXJpU3RyaW5nXG5CT09MRUFOIGlzQXZSZXF1ZXN0ID0gaWNhcFVyaSA9PSBcImljYXA6Ly9hdi1nYXRld2F5LmxvY2FsL3JlcW1vZFwiIiwgIm5hbWUiOiAiTVdHLklDQVBVcmlTdHJpbmcgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgVVJJIG9mIHRoZSBjdXJyZW50IElDQVAgcmVxdWVzdCBhcyBhIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IHBvbGljeSBpcyBjdXN0b21lciBjb250cm9sbGVkLiIsICJjb2RlX2V4YW1wbGUiOiAiSUYgTVdHLkluQ3VzdG9tZXJDb250cm9sbGVkUG9saWN5KCkgVEhFTiB7XG4gICAgLy8gXCJSZXF1ZXN0IGlzIHdpdGhpbiBjdXN0b21lci1jb250cm9sbGVkIHBvbGljeS5cIlxuICAgIC8vIEFkZGl0aW9uYWwgbG9naWMgZm9yIHJlcXVlc3RzIHdpdGhpbiBjdXN0b21lci1jb250cm9sbGVkIHBvbGljeVxufSBFTFNFIHtcbiAgICAvLyBcIlJlcXVlc3QgaXMgbm90IHdpdGhpbiBjdXN0b21lci1jb250cm9sbGVkIHBvbGljeS5cIlxuICAgIC8vIEFkZGl0aW9uYWwgbG9naWMgZm9yIHJlcXVlc3RzIG91dHNpZGUgY3VzdG9tZXItY29udHJvbGxlZCBwb2xpY3lcbn0iLCAibmFtZSI6ICJNV0cuSW5DdXN0b21lckNvbnRyb2xsZWRQb2xpY3kgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgcG9saWN5IGlzIGN1c3RvbWVyIGNvbnRyb2xsZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgb3JpZ2luYWwgVVJMIGZvciB0aGUgY3VycmVudCByZXF1ZXN0LiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIG9yaWdpbmFsVXJsID0gXCJodHRwOi8vaW50ZXJuYWwuZXhhbXBsZS5jb20vcmVzb3VyY2VcIlxuTVdHLlNldE9yaWdpbmFsSW50ZXJuYWxVcmwob3JpZ2luYWxVcmwpXG4vLyBPcmlnaW5hbCBpbnRlcm5hbCBVUkwgc2V0IHRvOiBcIiArIG9yaWdpbmFsVXJsIiwgIm5hbWUiOiAiTVdHLkludGVybmFsT3JpZ2luYWxVUkwgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgb3JpZ2luYWwgVVJMIGZvciB0aGUgY3VycmVudCByZXF1ZXN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgcnVubmluZyBpbiBhIGNsb3VkIGVudmlyb25tZW50LiIsICJjb2RlX2V4YW1wbGUiOiAiSUYgTVdHLkluVGhlQ2xvdWQoKSBUSEVOIHtcbiAgICAvLyBcIlJ1bm5pbmcgaW4gdGhlIGNsb3VkIGVudmlyb25tZW50LlwiXG59IEVMU0Uge1xuICAgIC8vIFwiUnVubmluZyBpbiBhbiBvbi1wcmVtaXNlcyBlbnZpcm9ubWVudC5cIlxufSIsICJuYW1lIjogIk1XRy5JblRoZUNsb3VkICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjb2RlIGlzIGV4ZWN1dGluZyBpbiBhIGNsb3VkIGVudmlyb25tZW50LiBPdGhlcndpc2UsIGl0IHJldHVybnMgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSB0ZW5hbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBJUCBhZGRyZXNzLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLklQUmFuZ2VBdXRoZW50aWNhdGlvbiBpcFJhbmdlQXV0aCA9IC4uLiAvLyBJbml0aWFsaXplIG9yIG9idGFpbiB0aGUgSVAgcmFuZ2UgYXV0aGVudGljYXRpb24gb2JqZWN0XG5OZXQuSVAgY2xpZW50SVAgPSAuLi4gLy8gSW5pdGlhbGl6ZSBvciBvYnRhaW4gdGhlIGNsaWVudCdzIElQIGFkZHJlc3NcblxuU1RSSU5HIHRlbmFudE5hbWUgPSBNV0cuSVBBdXRoR2V0VGVuYW50KGlwUmFuZ2VBdXRoLCBjbGllbnRJUClcblxuSUYgdGVuYW50TmFtZSAhPSBcIlwiIFRIRU4ge1xuICAgIC8vIFwiVGVuYW50IE5hbWU6IFwiICsgdGVuYW50TmFtZVxufSBFTFNFIHtcbiAgICAvLyBcIk5vIHRlbmFudCBmb3VuZCBmb3IgdGhlIGdpdmVuIElQIGFkZHJlc3MuXCJcbn0iLCAibmFtZSI6ICJNV0cuSVBBdXRoR2V0VGVuYW50IChNV0cuSVBSYW5nZUF1dGhlbnRpY2F0aW9uLCBOZXQuSVApIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHRlbmFudC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JUFJhbmdlQXV0aGVudGljYXRpb25gOiBUaGUgY3VzdG9tZXIncyBJUCByYW5nZSBjb25maWd1cmF0aW9uLlxuMi4gYE5ldC5JUGA6IFRoZSBJUCBhZGRyZXNzIHRvIGNoZWNrLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVA+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGBWRUNUT1I8TmV0LklQPmAgd2l0aCB0aGUgc3BlY2lmaWVkIGxpc3QgSUQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgaXBMaXN0SUQgPSBcImV4YW1wbGVfaXBfbGlzdF9pZFwiXG5WRUNUT1I8TmV0LklQPiBpcExpc3QgPSBNV0cuSVBMaXN0QnlJRChpcExpc3RJRClcblxuTmV0LklQIGNsaWVudElQID0gTVdHLkNsaWVudElQKClcblxuSUYgY2xpZW50SVAgSU4gaXBMaXN0IFRIRU4ge1xuICAgIC8vIEFjY2VzcyBkZW5pZWQ6IFlvdXIgSVAgaXMgaW4gdGhlIHJlc3RyaWN0ZWQgbGlzdC5cbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgZGVuaWVkOiBZb3VyIElQIGlzIGluIHRoZSByZXN0cmljdGVkIGxpc3QuXCIpXG59IEVMU0Uge1xuICAgIC8vIElQIG5vdCBpbiByZXN0cmljdGVkIGxpc3RcbiAgICBNV0cuQWxsb3coXCJJUCBub3QgaW4gcmVzdHJpY3RlZCBsaXN0XCIpXG59IiwgIm5hbWUiOiAiTVdHLklQTGlzdEJ5SUQgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxOZXQuSVA+YCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm92aWRlZCBsaXN0IElELiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIElQIGxpc3QgdG8gcmV0cmlldmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE5ldC5JUD4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxOZXQuSVA+YCB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdCBuYW1lLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5ldC5JUFJhbmdlPiBpcFJhbmdlcyA9IE1XRy5JUFJhbmdlTGlzdEJ5TmFtZShcInRydXN0ZWRfaXBfcmFuZ2VzXCIpXG5cbk5ldC5JUCBjbGllbnRJUCA9IE1XRy5DbGllbnQuSVAoKVxuXG5CT09MRUFOIGlzVHJ1c3RlZCA9IEZBTFNFXG5cbkZPUiBFQUNIIE5ldC5JUFJhbmdlIHJhbmdlIElOIGlwUmFuZ2VzIHtcbiAgICBJRiByYW5nZS5Db250YWlucyhjbGllbnRJUCkgVEhFTiB7XG4gICAgICAgIGlzVHJ1c3RlZCA9IFRSVUVcbiAgICAgICAgQlJFQUtcbiAgICB9XG59XG5cbklGIGlzVHJ1c3RlZCBUSEVOIHtcbiAgICAvLyBDbGllbnQgSVAgaXMgaW4gdHJ1c3RlZCByYW5nZVxuICAgIE1XRy5BbGxvdyhcIkNsaWVudCBJUCBpcyBpbiB0cnVzdGVkIHJhbmdlXCIpXG59IEVMU0Uge1xuICAgIC8vIENsaWVudCBJUCBpcyBub3QgaW4gdHJ1c3RlZCByYW5nZVxuICAgIE1XRy5CbG9jayhcIkNsaWVudCBJUCBpcyBub3QgaW4gdHJ1c3RlZCByYW5nZVwiKVxufSIsICJuYW1lIjogIk1XRy5JUExpc3RCeU5hbWUgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxOZXQuSVA+YCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzcGVjaWZpZWQgbGlzdCBuYW1lLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIElQIGxpc3QgdG8gcmV0cmlldmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhIGBWRUNUT1I8TmV0LklQPmAgbGlzdCB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cy4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBsaXN0TmFtZSA9IFwiZXhhbXBsZV9pcF9saXN0XCJcblxuSUYgTVdHLklQTGlzdEJ5TmFtZUV4aXN0cyhsaXN0TmFtZSkgVEhFTiB7XG4gICAgLy8gVGhlIElQIGxpc3QgZXhpc3RzLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgSVAgbGlzdCBkb2VzIG5vdCBleGlzdC5cbn0iLCAibmFtZSI6ICJNV0cuSVBMaXN0QnlOYW1lRXhpc3RzIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgYFZFQ1RPUjxOZXQuSVA+YCBsaXN0IHdpdGggdGhlIGdpdmVuIG5hbWUgZXhpc3RzLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIElQIGxpc3QgdG8gY2hlY2sgZm9yLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVBSYW5nZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxOZXQuSVBSYW5nZT5gIHdpdGggdGhlIHNwZWNpZmllZCBsaXN0IElELiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBJRCBvZiB0aGUgSVAgcmFuZ2UgbGlzdCB5b3Ugd2FudCB0byByZXRyaWV2ZVxuU1RSSU5HIGlwUmFuZ2VMaXN0SUQgPSBcImV4YW1wbGVfaXBfcmFuZ2VfbGlzdF9pZFwiXG5cbi8vIFJldHJpZXZlIHRoZSBJUCByYW5nZSBsaXN0IHVzaW5nIHRoZSBJRFxuTmV0LklQUmFuZ2UgaXBSYW5nZUxpc3QgPSBNV0cuSVBSYW5nZUxpc3RCeUlEKGlwUmFuZ2VMaXN0SUQpXG5cbi8vIFNldCBhIHVzZXItZGVmaW5lZCB2YXJpYWJsZSB3aXRoIHRoZSByZXRyaWV2ZWQgSVAgcmFuZ2UgbGlzdFxuTVdHLlNldFVzZXJEZWZpbmVkVmFyKFwiVXNlcklQUmFuZ2VcIiwgaXBSYW5nZUxpc3QpXG5cbi8vIERlYnVnIG91dHB1dCB0byB2ZXJpZnkgdGhlIElQIHJhbmdlIGxpc3Rcbi8vIFJldHJpZXZlZCBJUCBSYW5nZSBMaXN0OiBcIiArIGlwUmFuZ2VMaXN0XG5cbi8vIEV4YW1wbGUgY29uZGl0aW9uIHRvIGJsb2NrIGEgcmVxdWVzdCBpZiB0aGUgY2xpZW50J3MgSVAgaXMgd2l0aGluIHRoZSByZXRyaWV2ZWQgSVAgcmFuZ2VcbklGIE1XRy5DbGllbnQuSVAgSU4gaXBSYW5nZUxpc3QgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIGRlbmllZDogWW91ciBJUCBpcyB3aXRoaW4gYSByZXN0cmljdGVkIHJhbmdlLlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJJUCBpcyBub3QgaW4gdGhlIHJlc3RyaWN0ZWQgcmFuZ2UuXCIpXG59IiwgIm5hbWUiOiAiTVdHLklQUmFuZ2VMaXN0QnlJRCAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgVkVDVE9SPE5ldC5JUFJhbmdlPmAgY29ycmVzcG9uZGluZyB0byB0aGUgc3BlY2lmaWVkIGxpc3QgSUQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIElQIHJhbmdlIGxpc3QgdG8gcmV0cmlldmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE5ldC5JUFJhbmdlPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBgVkVDVE9SPE5ldC5JUFJhbmdlPmAgd2l0aCB0aGUgc3BlY2lmaWVkIGxpc3QgbmFtZS4iLCAiY29kZV9leGFtcGxlIjogIi8vIFJldHJpZXZlIHRoZSBJUCByYW5nZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaXN0IG5hbWUgXCJleGFtcGxlX2lwX2xpc3RcIlxuVkVDVE9SPE5ldC5JUFJhbmdlPiBpcFJhbmdlcyA9IE1XRy5JUFJhbmdlTGlzdEJ5TmFtZShcImV4YW1wbGVfaXBfbGlzdFwiKVxuXG4vLyBJdGVyYXRlIHRocm91Z2ggdGhlIElQIHJhbmdlcyBhbmQgcHJpbnQgZWFjaCBvbmVcbkZPUiBFQUNIIGlwUmFuZ2UgSU4gaXBSYW5nZXMge1xuICAgIC8vIGlwUmFuZ2Vcbn0iLCAibmFtZSI6ICJNV0cuSVBSYW5nZUxpc3RCeU5hbWUgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxOZXQuSVBSYW5nZT5gIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBsaXN0IG5hbWUuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgbmFtZSBvZiB0aGUgSVAgcmFuZ2UgbGlzdCB0byByZXRyaWV2ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGEgYFZFQ1RPUjxOZXQuSVBSYW5nZT5gIGxpc3Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgbGlzdE5hbWUgPSBcImV4YW1wbGVfaXBfcmFuZ2VfbGlzdFwiXG5cbklGIE1XRy5JUFJhbmdlTGlzdEJ5TmFtZUV4aXN0cyhsaXN0TmFtZSkgVEhFTiB7XG4gICAgLy8gVGhlIElQIHJhbmdlIGxpc3QgJ2V4YW1wbGVfaXBfcmFuZ2VfbGlzdCcgZXhpc3RzLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgSVAgcmFuZ2UgbGlzdCAnZXhhbXBsZV9pcF9yYW5nZV9saXN0JyBkb2VzIG5vdCBleGlzdC5cbn0iLCAibmFtZSI6ICJNV0cuSVBSYW5nZUxpc3RCeU5hbWVFeGlzdHMgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgYSBgVkVDVE9SPE5ldC5JUFJhbmdlPmAgbGlzdCB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSBJUCByYW5nZSBsaXN0IHRvIGNoZWNrIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBhZ2VudGxlc3MgcG9wdXAgaXMgZW5hYmxlZCBmb3IgdGhlIGN1cnJlbnQgcmVxdWVzdC4iLCAiY29kZV9leGFtcGxlIjogIlJPVVRJTkUgZXhhbXBsZSBPTiAoV2ViLlJlcXVlc3QpIHtcbiAgICBCT09MRUFOIGFnZW50bGVzc1BvcHVwRW5hYmxlZCA9IE1XRy5Jc0FnZW50bGVzc1BvcHVwRW5hYmxlZFxuICAgIFNUUklORyBwb3B1cE1vZGUgPSBcImRpc2FibGVkXCJcbiAgICBJRiBhZ2VudGxlc3NQb3B1cEVuYWJsZWQgVEhFTiB7XG4gICAgICAgIHBvcHVwTW9kZSA9IFwiZW5hYmxlZFwiXG4gICAgfVxufSIsICJuYW1lIjogIk1XRy5Jc0FnZW50bGVzc1BvcHVwRW5hYmxlZCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgYWdlbnRsZXNzIHBvcHVwIGlzIGVuYWJsZWQgZm9yIHRoZSBjdXJyZW50IHJlcXVlc3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZC4iLCAiY29kZV9leGFtcGxlIjogIkJPT0xFQU4gaXNBdXRoZW50aWNhdGVkID0gTVdHLklzQXV0aGVudGljYXRlZCgpXG5cbklGIGlzQXV0aGVudGljYXRlZCBUSEVOIHtcbiAgICAvLyBVc2VyIGlzIGF1dGhlbnRpY2F0ZWRcbiAgICBNV0cuQWxsb3coKVxufSBFTFNFIHtcbiAgICAvLyBVc2VyIGlzIG5vdCBhdXRoZW50aWNhdGVkXG4gICAgTVdHLkJsb2NrKClcbn0iLCAibmFtZSI6ICJNV0cuSXNBdXRoZW50aWNhdGVkICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIHdoZW4gdGhlIGNvbm5lY3Rpb24gb3JpZ2luYXRlcyBmcm9tIGEgR1JFIHR1bm5lbC4iLCAiY29kZV9leGFtcGxlIjogIklGIE1XRy5Jc0dSRSgpIFRIRU4ge1xuICAgIC8vIFwiR1JFIHBhY2tldCBkZXRlY3RlZFwiXG4gICAgTVdHLkJsb2NrKFwiR1JFIHBhY2tldHMgYXJlIG5vdCBhbGxvd2VkXCIpXG59IEVMU0Uge1xuICAgIC8vIFwiTm9uLUdSRSBwYWNrZXQgZGV0ZWN0ZWRcIlxuICAgIE1XRy5BbGxvdyhcIk5vbi1HUkUgdHJhZmZpY1wiKVxufSIsICJuYW1lIjogIk1XRy5Jc0dSRSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCB3aGVuIHRoZSBjb25uZWN0aW9uIG9yaWdpbmF0ZXMgZnJvbSBhIEdSRSB0dW5uZWwuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIHdoZW4gdGhlIGNvbm5lY3Rpb24gb3JpZ2luYXRlcyBmcm9tIGFuIElQU2VjIHR1bm5lbC4iLCAiY29kZV9leGFtcGxlIjogIklGIE1XRy5Jc0lQU2VjKCkgVEhFTiB7XG4gICAgLy8gVGhlIGNvbm5lY3Rpb24gaXMgdXNpbmcgSVBTZWMuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBjb25uZWN0aW9uIGlzIG5vdCB1c2luZyBJUFNlYy5cbn0iLCAibmFtZSI6ICJNV0cuSXNJUFNlYyAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCB3aGVuIHRoZSBjb25uZWN0aW9uIG9yaWdpbmF0ZXMgZnJvbSBhbiBJUFNlYyB0dW5uZWwuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgaXMgc2VsZi1zaWduZWQuIiwgImNvZGVfZXhhbXBsZSI6ICJCT09MRUFOIGlzU2VsZlNpZ25lZCA9IE1XRy5Jc1NlcnZlckNlcnRTZWxmU2lnbmVkKClcblxuSUYgaXNTZWxmU2lnbmVkIFRIRU4ge1xuICAgIC8vIFRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgaXMgc2VsZi1zaWduZWQuXG4gICAgTVdHLkJsb2NrKFwiU2VsZi1zaWduZWQgY2VydGlmaWNhdGVzIGFyZSBub3QgYWxsb3dlZC5cIilcbn0gRUxTRSB7XG4gICAgLy8gVGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBpcyBub3Qgc2VsZi1zaWduZWQuXG4gICAgTVdHLkFsbG93KFwiQ2VydGlmaWNhdGUgaXMgdmFsaWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLklzU2VydmVyQ2VydFNlbGZTaWduZWQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBpcyBzZWxmLXNpZ25lZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIHNtYXJ0LW1hdGNoIGV4cHJlc3Npb24gaXMgc3ludGFjdGljYWxseSB2YWxpZC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBzbWFydE1hdGNoUnVsZSA9IFwiZmluYW5jZSogT1IgcGF5cm9sbCpcIlxuQk9PTEVBTiBpc1ZhbGlkUnVsZSA9IE1XRy5Jc1NtYXJ0TWF0Y2hTdHJpbmdWYWxpZChzbWFydE1hdGNoUnVsZSlcbi8vIGlzVmFsaWRSdWxlIGlzIFRSVUUgd2hlbiB0aGUgYWRtaW4tZW50ZXJlZCBzbWFydC1tYXRjaCBleHByZXNzaW9uIGlzIHN5bnRhY3RpY2FsbHkgdmFsaWQiLCAibmFtZSI6ICJNV0cuSXNTbWFydE1hdGNoU3RyaW5nVmFsaWQgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIHNtYXJ0LW1hdGNoIGV4cHJlc3Npb24gaXMgc3ludGFjdGljYWxseSB2YWxpZCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc21hcnQtbWF0Y2ggZXhwcmVzc2lvbiB0byB2YWxpZGF0ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIFRMUyBjbGllbnQgY29udGV4dCBpcyBhcHBsaWVkLiIsICJjb2RlX2V4YW1wbGUiOiAiSUYgTVdHLklzU1NMQ2xpZW50Q29udGV4dEFwcGxpZWQoKSBUSEVOIHtcbiAgICAvLyBcIlNTTCBDbGllbnQgQ29udGV4dCBpcyBhcHBsaWVkLlwiXG59IEVMU0Uge1xuICAgIC8vIFwiU1NMIENsaWVudCBDb250ZXh0IGlzIG5vdCBhcHBsaWVkLlwiXG59IiwgIm5hbWUiOiAiTVdHLklzU1NMQ2xpZW50Q29udGV4dEFwcGxpZWQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgVExTIGNsaWVudCBjb250ZXh0IGlzIGFwcGxpZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBib2R5IGlzIGFuIGF1ZGlvIG9yIHZpZGVvIHN0cmVhbS4iLCAiY29kZV9leGFtcGxlIjogIklGIE1XRy5Jc1N0cmVhbSgpIFRIRU4ge1xuICAgIC8vIFRoaXMgaXMgYSBzdHJlYW0uXG59IEVMU0Uge1xuICAgIC8vIFRoaXMgaXMgbm90IGEgc3RyZWFtLlxufSIsICJuYW1lIjogIk1XRy5Jc1N0cmVhbSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgYm9keSBpcyBhbiBhdWRpbyBvciB2aWRlbyBzdHJlYW0uIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGEgVExTIGNvbm5lY3Rpb24gaXMgdHJhbnNwYXJlbnQuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBNV0cuSXNUcmFuc3BhcmVudFRMUygpIFRIRU4ge1xuICAgIC8vIFRoZSBUTFMgY29ubmVjdGlvbiBpcyB0cmFuc3BhcmVudC5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgdHJhbnNwYXJlbnRcbn0gRUxTRSB7XG4gICAgLy8gVGhlIFRMUyBjb25uZWN0aW9uIGlzIG5vdCB0cmFuc3BhcmVudC5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgbm90IHRyYW5zcGFyZW50XG59IiwgIm5hbWUiOiAiTVdHLklzVHJhbnNwYXJlbnRUTFMgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgYSBUTFMgY29ubmVjdGlvbiBpcyB0cmFuc3BhcmVudC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGZpbHRlcmVkIG9iamVjdCBpcyBhbiB1cGxvYWQuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBNV0cuSXNVcGxvYWQoKSBUSEVOIHtcbiAgICAvLyBUaGlzIGlzIGFuIHVwbG9hZCByZXF1ZXN0LlxuICAgIC8vIEFkZGl0aW9uYWwgbG9naWMgZm9yIGhhbmRsaW5nIHVwbG9hZCByZXF1ZXN0c1xufSBFTFNFIHtcbiAgICAvLyBUaGlzIGlzIG5vdCBhbiB1cGxvYWQgcmVxdWVzdC5cbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGZvciBoYW5kbGluZyBub24tdXBsb2FkIHJlcXVlc3RzXG59IiwgIm5hbWUiOiAiTVdHLklzVXBsb2FkICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBmaWx0ZXJlZCBvYmplY3QgaXMgYW4gdXBsb2FkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIEtlcmJlcm9zIHByb3RlY3Rpb24gbGV2ZWwgZm9yIHRoZSBjb25uZWN0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgdGhlIEtlcmJlcm9zIHByb3RlY3Rpb24gbGV2ZWxcblNUUklORyBwcm90ZWN0aW9uTGV2ZWwgPSBNV0cuS2VyYmVyb3NQcm90ZWN0aW9uTGV2ZWwoKVxuXG4vLyBLZXJiZXJvcyBQcm90ZWN0aW9uIExldmVsOiBcIiArIHByb3RlY3Rpb25MZXZlbFxuXG4vLyBQZXJmb3JtIGFjdGlvbnMgYmFzZWQgb24gdGhlIHByb3RlY3Rpb24gbGV2ZWxcbklGIHByb3RlY3Rpb25MZXZlbCA9PSBcIkhJR0hcIiBUSEVOIHtcbiAgICAvLyBIaWdoIGxldmVsIG9mIEtlcmJlcm9zIHByb3RlY3Rpb24gZGV0ZWN0ZWQuXG4gICAgLy8gQWRkaXRpb25hbCBsb2dpYyBmb3IgaGlnaCBwcm90ZWN0aW9uIGxldmVsXG59IEVMU0UgSUYgcHJvdGVjdGlvbkxldmVsID09IFwiTUVESVVNXCIgVEhFTiB7XG4gICAgLy8gTWVkaXVtIGxldmVsIG9mIEtlcmJlcm9zIHByb3RlY3Rpb24gZGV0ZWN0ZWQuXG4gICAgLy8gQWRkaXRpb25hbCBsb2dpYyBmb3IgbWVkaXVtIHByb3RlY3Rpb24gbGV2ZWxcbn0gRUxTRSBJRiBwcm90ZWN0aW9uTGV2ZWwgPT0gXCJMT1dcIiBUSEVOIHtcbiAgICAvLyBMb3cgbGV2ZWwgb2YgS2VyYmVyb3MgcHJvdGVjdGlvbiBkZXRlY3RlZC5cbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGZvciBsb3cgcHJvdGVjdGlvbiBsZXZlbFxufSBFTFNFIHtcbiAgICAvLyBVbmtub3duIEtlcmJlcm9zIHByb3RlY3Rpb24gbGV2ZWwgZGV0ZWN0ZWQuXG4gICAgLy8gQWRkaXRpb25hbCBsb2dpYyBmb3IgdW5rbm93biBwcm90ZWN0aW9uIGxldmVsXG59IiwgIm5hbWUiOiAiTVdHLktlcmJlcm9zUHJvdGVjdGlvbkxldmVsICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIEtlcmJlcm9zIHByb3RlY3Rpb24gbGV2ZWwgZm9yIHRoZSBjb25uZWN0aW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGBWRUNUT1I8U1RSSU5HPmAgY29udGFpbmluZyBhbGwgdGhlIGtleXMgZnJvbSB0aGUgZ2l2ZW4gaGVhZGVyIG1hcC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSBoZWFkZXJzIGlzIGFuIE1XRy5IZWFkZXJNYXAgb2JqZWN0IGNvbnRhaW5pbmcgSFRUUCBoZWFkZXJzXG5NV0cuSGVhZGVyTWFwIGhlYWRlcnMgPSBNV0cuR2V0UmVxdWVzdEhlYWRlcnMoKVxuXG4vLyBSZXRyaWV2ZSB0aGUga2V5cyBmcm9tIHRoZSBoZWFkZXJzXG5WRUNUT1I8U1RSSU5HPiBoZWFkZXJLZXlzID0gTVdHLktleXMoaGVhZGVycylcblxuLy8gSXRlcmF0ZSBvdmVyIHRoZSBrZXlzIGFuZCBwcmludCB0aGVtXG5GT1IgRUFDSCBrZXkgSU4gaGVhZGVyS2V5cyB7XG4gICAgLy8gSGVhZGVyIEtleTogXCIgKyBrZXlcbn0iLCAibmFtZSI6ICJNV0cuS2V5cyAoTVdHLkhlYWRlck1hcCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGBWRUNUT1I8U1RSSU5HPmAgY29udGFpbmluZyBhbGwgdGhlIGtleXMgZnJvbSB0aGUgZ2l2ZW4gaGVhZGVyIG1hcC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5IZWFkZXJNYXBgOiBUaGUgaGVhZGVyIG1hcCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGtleXMuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkludGVybmFsU2V0dGluZyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBsYXN0IHVzZWQgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4iLCAiY29kZV9leGFtcGxlIjogIi8vIFJldHJpZXZlIHRoZSBsYXN0IHVzZWQgY29uZmlndXJhdGlvbiBzZXR0aW5nc1xuTVdHLkludGVybmFsU2V0dGluZyBsYXN0Q29uZmlnID0gTVdHLkxBU1RfVVNFRF9jb25maWcoKVxuXG4vLyBMYXN0IHVzZWQgY29uZmlndXJhdGlvbiBzZXR0aW5nczogXCIgKyBsYXN0Q29uZmlnXG5cbi8vIEV4ZWN1dGUgYW4gZXZlbnQgd2l0aCB0aGUgcmV0cmlldmVkIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYW5kIGEgc3RyaW5nIHBhcmFtZXRlclxuTVdHLkV4ZWN1dGVFdmVudChsYXN0Q29uZmlnLCBcIkV4YW1wbGVFdmVudFwiKSIsICJuYW1lIjogIk1XRy5MQVNUX1VTRURfY29uZmlnICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGxhc3QgdXNlZCBjb25maWd1cmF0aW9uIHNldHRpbmdzLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHJ1bGUgdGhhdCB0ZXJtaW5hdGVzIHBvbGljeSBwcm9jZXNzaW5nIChgTVdHLkV4aXRgLCBgTVdHLkFsbG93YCwgYE1XRy5CbG9ja2AsIG9yIGBNV0cuUmVkaXJlY3RgKS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBsYXN0UnVsZSA9IE1XRy5MYXN0UnVsZSgpXG4vLyBUaGUgbGFzdCBydWxlIHRoYXQgdGVybWluYXRlZCB0aGUgcG9saWN5IHByb2Nlc3NpbmcgaXM6ICsgbGFzdFJ1bGUiLCAibmFtZSI6ICJNV0cuTGFzdFJ1bGUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgcnVsZSB0aGF0IHRlcm1pbmF0ZXMgcG9saWN5IHByb2Nlc3NpbmcgKGBNV0cuRXhpdGAsIGBNV0cuQWxsb3dgLCBgTVdHLkJsb2NrYCwgb3IgYE1XRy5SZWRpcmVjdGApLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHBhdGggb2YgdGhlIHJ1bGUgc2V0IHRoYXQgdGVybWluYXRlcyBwb2xpY3kgcHJvY2Vzc2luZyAoYE1XRy5FeGl0YCwgYE1XRy5BbGxvd2AsIGBNV0cuQmxvY2tgLCBvciBgTVdHLlJlZGlyZWN0YCkuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgbGFzdFJ1bGVTZXRQYXRoID0gTVdHLkxhc3RSdWxlU2V0UGF0aCgpXG4vLyBUaGUgbGFzdCBydWxlIHNldCBwYXRoIHRoYXQgdGVybWluYXRlZCB0aGUgcG9saWN5IHByb2Nlc3NpbmcgaXM6IFwiICsgbGFzdFJ1bGVTZXRQYXRoIiwgIm5hbWUiOiAiTVdHLkxhc3RSdWxlU2V0UGF0aCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBwYXRoIG9mIHRoZSBydWxlIHNldCB0aGF0IHRlcm1pbmF0ZXMgcG9saWN5IHByb2Nlc3NpbmcgKGBNV0cuRXhpdGAsIGBNV0cuQWxsb3dgLCBgTVdHLkJsb2NrYCwgb3IgYE1XRy5SZWRpcmVjdGApLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGR1cmF0aW9uIGJldHdlZW4gdGhlIGxhc3QgYnl0ZSBzZW50IHRvIHRoZSBzZXJ2ZXIgYW5kIHdoZW4gdGhlIGZpcnN0IGJ5dGUgd2FzIGFjdHVhbGx5IHJlY2VpdmVkLCBpZiBhbnkuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDYWxsIHRoZSBNV0cuTGFzdFNlbnRGaXJzdFJlY2VpdmVkU2VydmVyKCkgZnVuY3Rpb24gYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gYSB2YXJpYWJsZVxuU1RSSU5HIGxhc3RTZXJ2ZXIgPSBNV0cuTGFzdFNlbnRGaXJzdFJlY2VpdmVkU2VydmVyKClcblxuLy8gTGFzdCBzZW50IGZpcnN0IHJlY2VpdmVkIHNlcnZlcjogXCIgKyBsYXN0U2VydmVyXG5cbi8vIEV4YW1wbGUgY29uZGl0aW9uIHRvIGJsb2NrIGEgcmVxdWVzdCBiYXNlZCBvbiB0aGUgc2VydmVyIGFkZHJlc3NcbklGIGxhc3RTZXJ2ZXIgPT0gXCJtYWxpY2lvdXMuc2VydmVyLmNvbVwiIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byB0aGlzIHNlcnZlciBpcyBibG9ja2VkIGR1ZSB0byBzZWN1cml0eSBjb25jZXJucy5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiU2VydmVyIGlzIGFsbG93ZWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLkxhc3RTZW50Rmlyc3RSZWNlaXZlZFNlcnZlciAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBkdXJhdGlvbiBiZXR3ZWVuIHRoZSBsYXN0IGJ5dGUgc2VudCB0byB0aGUgc2VydmVyIGFuZCB3aGVuIHRoZSBmaXJzdCBieXRlIHdhcyBhY3R1YWxseSByZWNlaXZlZCwgaWYgYW55LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGR1cmF0aW9uIGJldHdlZW4gdGhlIGxhc3QgYnl0ZSByZWNlaXZlZCBmcm9tIHRoZSBjbGllbnQgYW5kIHdoZW4gdGhhdCBsYXN0IGJ5dGUgd2FzIHNlbnQgYmFjay4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBkdXJhdGlvbiA9IE1XRy5MYXN0U2VudExhc3RSZWNlaXZlZENsaWVudCgpXG5OVU1CRVIgdGhyZXNob2xkID0gMTAwMCAgLy8gRXhhbXBsZSB0aHJlc2hvbGQgaW4gbWlsbGlzZWNvbmRzXG5cbklGIGR1cmF0aW9uID4gdGhyZXNob2xkIFRIRU4ge1xuICAgIC8vIFdhcm5pbmc6IFJlc3BvbnNlIHRpbWUgZXhjZWVkZWQgdGhyZXNob2xkLiBEdXJhdGlvbjogXCIgKyBkdXJhdGlvbiArIFwiIG1zXG59IEVMU0Uge1xuICAgIC8vIFJlc3BvbnNlIHRpbWUgaXMgd2l0aGluIGFjY2VwdGFibGUgbGltaXRzLiBEdXJhdGlvbjogXCIgKyBkdXJhdGlvbiArIFwiIG1zXG59IiwgIm5hbWUiOiAiTVdHLkxhc3RTZW50TGFzdFJlY2VpdmVkQ2xpZW50ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGR1cmF0aW9uIGJldHdlZW4gdGhlIGxhc3QgYnl0ZSByZWNlaXZlZCBmcm9tIHRoZSBjbGllbnQgYW5kIHdoZW4gdGhhdCBsYXN0IGJ5dGUgd2FzIHNlbnQgYmFjay4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBkdXJhdGlvbiBiZXR3ZWVuIHRoZSBsYXN0IGJ5dGUgc2VudCB0byB0aGUgc2VydmVyIGFuZCB3aGVuIHRoYXQgbGFzdCBieXRlIHdhcyBhY3R1YWxseSByZWNlaXZlZC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEh5cG90aGV0aWNhbCBmdW5jdGlvbiB0byBnZXQgdGhlIGxhc3Qgc2VudCBhbmQgbGFzdCByZWNlaXZlZCBzZXJ2ZXIgaW5mb3JtYXRpb25cblNUUklORyBsYXN0U2VydmVySW5mbyA9IE1XRy5MYXN0U2VudExhc3RSZWNlaXZlZFNlcnZlcigpXG5cbi8vIENoZWNrIGlmIHRoZSBsYXN0IHNlcnZlciBpbmZvcm1hdGlvbiBjb250YWlucyBhIHNwZWNpZmljIHNlcnZlciBuYW1lXG5JRiBsYXN0U2VydmVySW5mbyBDT05UQUlOUyBcImV4YW1wbGUuY29tXCIgVEhFTiB7XG4gICAgLy8gQmxvY2sgdGhlIGNvbm5lY3Rpb24gaWYgdGhlIHNlcnZlciBpcyBcImV4YW1wbGUuY29tXCJcbiAgICBNV0cuQmxvY2soXCJDb25uZWN0aW9uIHRvIGV4YW1wbGUuY29tIGlzIG5vdCBhbGxvd2VkLlwiKVxufSBFTFNFIHtcbiAgICAvLyBBbGxvdyB0aGUgY29ubmVjdGlvbiBvdGhlcndpc2VcbiAgICBNV0cuQWxsb3coXCJDb25uZWN0aW9uIGFsbG93ZWQuXCIpXG59XG5cbi8vIERlYnVnIG91dHB1dCBmb3IgbG9nZ2luZyBwdXJwb3Nlc1xuLy8gXCJMYXN0IHNlbnQvcmVjZWl2ZWQgc2VydmVyIGluZm86IFwiICsgbGFzdFNlcnZlckluZm8iLCAibmFtZSI6ICJNV0cuTGFzdFNlbnRMYXN0UmVjZWl2ZWRTZXJ2ZXIgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZHVyYXRpb24gYmV0d2VlbiB0aGUgbGFzdCBieXRlIHNlbnQgdG8gdGhlIHNlcnZlciBhbmQgd2hlbiB0aGF0IGxhc3QgYnl0ZSB3YXMgYWN0dWFsbHkgcmVjZWl2ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGluZS1mZWVkIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBtZXNzYWdlID0gXCJUaGlzIGlzIHRoZSBmaXJzdCBsaW5lLlwiICsgTVdHLkxGU3RyaW5nKCkgKyBcIlRoaXMgaXMgdGhlIHNlY29uZCBsaW5lLlwiXG4vLyBUaGlzIGxpbmUgd2FzIG9yaWdpbmFsbHkgYSBERUJVRygpIGZ1bmN0aW9uIHRoYXQgcHJpbnRlZCB0aGUgbWVzc2FnZSB0byB0aGUgY29uc29sZS4gVGhlIG1lc3NhZ2UgaXMgYSBjb25jYXRlbmF0aW9uIG9mIHR3byBzdHJpbmdzIHdpdGggYSBsaW5lLWZlZWQgc3RyaW5nIChyZXR1cm5lZCBieSBNV0cuTEZTdHJpbmcoKSkgaW4gYmV0d2Vlbi4gV2hlbiB0aGlzIGxpbmUgcnVucywgaXQgd291bGQgb3V0cHV0OiBcIlRoaXMgaXMgdGhlIGZpcnN0IGxpbmUuIFRoaXMgaXMgdGhlIHNlY29uZCBsaW5lLlwiIiwgIm5hbWUiOiAiTVdHLkxGU3RyaW5nICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgbGluZS1mZWVkIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBlbGVtZW50IGZvdW5kIGluIHRoZSBtb3N0IHJlY2VudCBsaXN0IHNlYXJjaCBvcGVyYXRpb24uIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgc29tZSBsaXN0IHNlYXJjaCBvcGVyYXRpb24gaGFzIGJlZW4gcGVyZm9ybWVkIGJlZm9yZSB0aGlzIHJvdXRpbmUgaXMgdHJpZ2dlcmVkXG5cbi8vIFJldHJpZXZlIHRoZSBsYXN0IG1hdGNoIGZyb20gdGhlIGxpc3Qgc2VhcmNoIG9wZXJhdGlvblxuU1RSSU5HIGxhc3RNYXRjaCA9IE1XRy5MaXN0TGFzdE1hdGNoZXMoKVxuXG4vLyBDaGVjayBpZiBhIG1hdGNoIHdhcyBmb3VuZFxuSUYgbGFzdE1hdGNoICE9IE5VTEwgVEhFTiB7XG4gICAgLy8gTGFzdCBtYXRjaCBmb3VuZDogXCIgKyBsYXN0TWF0Y2hcbn0gRUxTRSB7XG4gICAgLy8gTm8gbWF0Y2hlcyBmb3VuZC5cbn0iLCAibmFtZSI6ICJNV0cuTGlzdExhc3RNYXRjaGVzICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGVsZW1lbnQgZm91bmQgaW4gdGhlIG1vc3QgcmVjZW50IGxpc3Qgc2VhcmNoIG9wZXJhdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBudW1lcmljYWwgcHJvYmFiaWxpdHkgdGhhdCB0aGUgY3VycmVudCBmaWxlIGlzIG1hbHdhcmUsIGFzIGRldGVybWluZWQgYnkgR0FNIGFuYWx5c2lzIHVzaW5nIHRoZSBwcm92aWRlZCBhbnRpbWFsd2FyZSBzZXR0aW5ncy4iLCAiY29kZV9leGFtcGxlIjogIi8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBNV0cuQW50aW1hbHdhcmVTZXR0aW5nXG5NV0cuQW50aW1hbHdhcmVTZXR0aW5nIGFudGltYWx3YXJlU2V0dGluZ1xuXG4vLyBFbmFibGUgdGhlIGFudGktbWFsd2FyZSBzdHJlYW0gc2Nhbm5lciB3aXRoIHRoZSBnaXZlbiBzZXR0aW5nc1xuTVdHLkFudGltYWx3YXJlRW5hYmxlU3RyZWFtU2Nhbm5lcihhbnRpbWFsd2FyZVNldHRpbmcpXG5cbi8vIEFudGltYWx3YXJlIHN0cmVhbSBzY2FubmVyIGVuYWJsZWQuIiwgIm5hbWUiOiAiTVdHLk1hbHdhcmVQcm9iYWJpbGl0eSAoTVdHLkFudGltYWx3YXJlU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbnVtZXJpY2FsIHByb2JhYmlsaXR5IHRoYXQgYSBmaWxlIGlzIG1hbHdhcmUgYmFzZWQgb24gR0FNIGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBhbnRpbWFsd2FyZSBzZXR0aW5ncy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5BbnRpbWFsd2FyZVNldHRpbmdgOiBUaGUgYW50aW1hbHdhcmUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIG51bWVyaWNhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbGlrZWxpaG9vZCB0aGF0IHRoZSBjdXJyZW50IGZpbGUgaXMgbWFsd2FyZS4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5JbnRlcm5hbFNldHRpbmcgbWFsd2FyZVByb2JhYmlsaXR5U2V0dGluZyA9IE1XRy5HZXRJbnRlcm5hbFNldHRpbmcoXCJNYWx3YXJlUHJvYmFiaWxpdHlcIilcblxuSUYgbWFsd2FyZVByb2JhYmlsaXR5U2V0dGluZyA+IDAuOCBUSEVOIHtcbiAgICAvLyBIaWdoIHByb2JhYmlsaXR5IG9mIG1hbHdhcmUgZGV0ZWN0ZWRcbiAgICBNV0cuQmxvY2soXCJIaWdoIHByb2JhYmlsaXR5IG9mIG1hbHdhcmUgZGV0ZWN0ZWRcIilcbn0gRUxTRSB7XG4gICAgLy8gTWFsd2FyZSBjaGVjayBwYXNzZWRcbiAgICBNV0cuQWxsb3coXCJNYWx3YXJlIGNoZWNrIHBhc3NlZFwiKVxufSIsICJuYW1lIjogIk1XRy5NYWx3YXJlUHJvYmFiaWxpdHkgKE1XRy5JbnRlcm5hbFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBudW1lcmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGxpa2VsaWhvb2Qgb2YgbWFsd2FyZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFNldHRpbmdgOiBUaGUgaW50ZXJuYWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgY2FsY3VsYXRpbmcgbWFsd2FyZSBwcm9iYWJpbGl0eS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGlrZWxpaG9vZCBvZiBtYWx3YXJlIHByZXNlbmNlIGluIHRoZSBjdXJyZW50IGZpbGUsIGFzIGRldGVybWluZWQgYnkgQVRELiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGFuIGluc3RhbmNlIG9mIE1XRy5NQVREU2V0dGluZ1xuTVdHLk1BVERTZXR0aW5nIG1hdGRTZXR0aW5nID0gTVdHLk1BVERTZXR0aW5nKClcblxuLy8gQ29uZmlndXJlIHRoZSBNQVREIHNldHRpbmcgYXMgbmVlZGVkXG4vLyBUaGlzIGlzIGEgcGxhY2Vob2xkZXIgZm9yIGFjdHVhbCBjb25maWd1cmF0aW9uXG4vLyBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHNldCBzb21lIHByb3BlcnRpZXMgb24gdGhlIG1hdGRTZXR0aW5nIG9iamVjdFxuLy8gbWF0ZFNldHRpbmcuU2V0UHJvcGVydHkoXCJleGFtcGxlUHJvcGVydHlcIiwgXCJleGFtcGxlVmFsdWVcIilcblxuLy8gQ2FsbCB0aGUgTVdHLk1hbHdhcmVQcm9iYWJpbGl0eSBmdW5jdGlvbiB3aXRoIHRoZSBjb25maWd1cmVkIE1BVEQgc2V0dGluZ1xuTlVNQkVSIHByb2JhYmlsaXR5ID0gTVdHLk1hbHdhcmVQcm9iYWJpbGl0eShtYXRkU2V0dGluZylcblxuLy8gTWFsd2FyZSBQcm9iYWJpbGl0eTogXCIgKyBwcm9iYWJpbGl0eVxuXG4vLyBDaGVjayB0aGUgcHJvYmFiaWxpdHkgYW5kIHRha2UgYWN0aW9uXG5JRiBwcm9iYWJpbGl0eSA+IDAuNSBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJIaWdoIG1hbHdhcmUgcHJvYmFiaWxpdHkgZGV0ZWN0ZWRcIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiTG93IG1hbHdhcmUgcHJvYmFiaWxpdHlcIilcbn0iLCAibmFtZSI6ICJNV0cuTWFsd2FyZVByb2JhYmlsaXR5IChNV0cuTUFURFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG51bWVyaWNhbCBwcm9iYWJpbGl0eSBvZiBtYWx3YXJlIHByZXNlbmNlLCBhcyBkZXRlcm1pbmVkIGJ5IEFURC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5NQVREU2V0dGluZ2A6IFRoZSBNQVREIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIGNhbGN1bGF0aW5nIG1hbHdhcmUgcHJvYmFiaWxpdHkuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHN0cmluZyBmcm9tIHRoZSBzZWNvbmQgbGlzdCBhdCB0aGUgc2FtZSBpbmRleCBhcyB0aGUgbWF0Y2hpbmcgZW50cnkgZm91bmQgaW4gdGhlIGZpcnN0IGxpc3QuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8U1RSSU5HPiB1cmxzID0gXCJleGFtcGxlLmNvbVwiLCBcInRlc3RzaXRlLmNvbVwiLCBcIm15d2Vic2l0ZS5vcmdcIlxuVkVDVE9SPFNUUklORz4gY2F0ZWdvcmllcyA9IFwiTmV3c1wiLCBcIkJsb2dcIiwgXCJQZXJzb25hbFwiXG5cblNUUklORyBjdXJyZW50VXJsID0gTVdHLlVybCgpLlRvU3RyaW5nKClcblNUUklORyBjYXRlZ29yeSA9IE1XRy5NYXBJbkxpc3QodXJscywgY2F0ZWdvcmllcywgY3VycmVudFVybClcblxuSUYgY2F0ZWdvcnkgIT0gXCJcIiBUSEVOIHtcbiAgICAvLyBUaGUgY2F0ZWdvcnkgZm9yIGN1cnJlbnRVcmwgaXMgY2F0ZWdvcnlcbn0gRUxTRSB7XG4gICAgLy8gVGhlIFVSTCBjdXJyZW50VXJsIGlzIG5vdCBpbiB0aGUgbGlzdC5cbn0iLCAibmFtZSI6ICJNV0cuTWFwSW5MaXN0IChWRUNUT1I8U1RSSU5HPiwgVkVDVE9SPFNUUklORz4sIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc3RyaW5nIGZyb20gdGhlIHNlY29uZCB2ZWN0b3IgY29ycmVzcG9uZGluZyB0byB0aGUgaW5kZXggb2YgdGhlIHN0cmluZyBmb3VuZCBpbiB0aGUgZmlyc3QgdmVjdG9yLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgbGlzdCB0byBzZWFyY2guXG4yLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgbGlzdCB0byByZXR1cm4gZnJvbS5cbjMuIGBTVFJJTkdgOiBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgc3RyaW5nIGZyb20gdGhlIHNlY29uZCBsaXN0IGF0IHRoZSBzYW1lIGluZGV4IGFzIHRoZSB3aWxkY2FyZC1tYXRjaGluZyBlbnRyeSBmb3VuZCBpbiB0aGUgZmlyc3QgbGlzdC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxTVFJJTkc+IHVybFBhdHRlcm5zID0gXCJleGFtcGxlLmNvbS8qXCIsIFwidGVzdC5jb20vKlwiLCBcInNhbXBsZS5vcmcvKlwiXG5WRUNUT1I8U1RSSU5HPiBhY3Rpb25zID0gXCJCbG9ja1wiLCBcIkFsbG93XCIsIFwiTW9uaXRvclwiXG5TVFJJTkcgY3VycmVudFVybCA9IE1XRy5VcmwoKS5Ub1N0cmluZygpXG5cblNUUklORyBhY3Rpb24gPSBNV0cuTWFwTWF0Y2hJbkxpc3QodXJsUGF0dGVybnMsIGFjdGlvbnMsIGN1cnJlbnRVcmwpXG5cbklGIGFjdGlvbiA9PSBcIkJsb2NrXCIgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIHRoaXMgc2l0ZSBpcyBibG9ja2VkLlwiKVxufSBFTFNFIElGIGFjdGlvbiA9PSBcIkFsbG93XCIgVEhFTiB7XG4gICAgTVdHLkFsbG93KFwiQWNjZXNzIHRvIHRoaXMgc2l0ZSBpcyBhbGxvd2VkLlwiKVxufSBFTFNFIElGIGFjdGlvbiA9PSBcIk1vbml0b3JcIiBUSEVOIHtcbiAgICAvLyBNb25pdG9yaW5nIGFjY2VzcyB0byB0aGlzIHNpdGUuXG59IEVMU0Uge1xuICAgIC8vIE5vIG1hdGNoaW5nIHBhdHRlcm4gZm91bmQgZm9yIHRoZSBVUkwuXG59IiwgIm5hbWUiOiAiTVdHLk1hcE1hdGNoSW5MaXN0IChWRUNUT1I8U1RSSU5HPiwgVkVDVE9SPFNUUklORz4sIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc3RyaW5nIGZyb20gdGhlIHNlY29uZCB2ZWN0b3IgY29ycmVzcG9uZGluZyB0byB0aGUgaW5kZXggb2YgdGhlIHN0cmluZyBmb3VuZCBpbiB0aGUgZmlyc3QgdmVjdG9yLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgbGlzdCB0byBzZWFyY2ggKHdpbGRjYXJkIG1hdGNoaW5nKS5cbjIuIGBWRUNUT1I8U1RSSU5HPmA6IFRoZSBsaXN0IHRvIHJldHVybiBmcm9tLlxuMy4gYFNUUklOR2A6IFRoZSB3aWxkY2FyZCBwYXR0ZXJuIHRvIHNlYXJjaCBmb3IuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1lZGlhVHlwZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbWVkaWEgdHlwZSBsaXN0IHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBuYW1lIG9mIHRoZSBtZWRpYSB0eXBlIGxpc3QgdG8gcmV0cmlldmVcblNUUklORyBtZWRpYVR5cGVMaXN0TmFtZSA9IFwiZXhhbXBsZV9tZWRpYV90eXBlX2xpc3RcIlxuXG4vLyBSZXRyaWV2ZSB0aGUgbWVkaWEgdHlwZSBsaXN0XG5WRUNUT1I8TWVkaWFUeXBlPiBtZWRpYVR5cGVzID0gTVdHLk1lZGlhVHlwZUxpc3RCeU5hbWUobWVkaWFUeXBlTGlzdE5hbWUpXG5cbi8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgbWVkaWEgdHlwZXMgYW5kIHByaW50IHRoZW0gdG8gdGhlIGNvbnNvbGVcbkZPUiBFQUNIIE1lZGlhVHlwZSBtZWRpYVR5cGUgSU4gbWVkaWFUeXBlcyB7XG4gICAgLy8gTWVkaWEgVHlwZTogXCIgKyBtZWRpYVR5cGVcbn1cblxuLy8gRXhhbXBsZSBjb25kaXRpb24gdG8gYmxvY2sgYSByZXF1ZXN0IGlmIGEgY2VydGFpbiBtZWRpYSB0eXBlIGlzIGZvdW5kXG5JRiBcImFwcGxpY2F0aW9uL2pzb25cIiBJTiBtZWRpYVR5cGVzIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkJsb2NrZWQgZHVlIHRvIG1lZGlhIHR5cGUgYXBwbGljYXRpb24vanNvblwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJNZWRpYSB0eXBlIGNoZWNrIHBhc3NlZFwiKVxufSIsICJuYW1lIjogIk1XRy5NZWRpYVR5cGVMaXN0QnlOYW1lIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBWRUNUT1I8TWVkaWFUeXBlPmAgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgbmFtZSBvZiB0aGUgbWVkaWEgdHlwZSBsaXN0IHRvIHJldHJpZXZlLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgYSBtZWRpYSB0eXBlIGxpc3Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgbGlzdE5hbWUgPSBcImV4YW1wbGVfbWVkaWFfdHlwZV9saXN0XCJcblxuSUYgTVdHLk1lZGlhVHlwZUxpc3RCeU5hbWVFeGlzdHMobGlzdE5hbWUpIFRIRU4ge1xuICAgIC8vIE1lZGlhIHR5cGUgbGlzdCBleGlzdHM6IFwiICsgbGlzdE5hbWVcbn0gRUxTRSB7XG4gICAgLy8gTWVkaWEgdHlwZSBsaXN0IGRvZXMgbm90IGV4aXN0OiBcIiArIGxpc3ROYW1lXG59IiwgIm5hbWUiOiAiTVdHLk1lZGlhVHlwZUxpc3RCeU5hbWVFeGlzdHMgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgYSBtZWRpYSB0eXBlIGxpc3Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgbmFtZSBvZiB0aGUgbWVkaWEgdHlwZSBsaXN0IHRvIGNoZWNrIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcmVtYWluZGVyIG9mIGRpdmlkaW5nIHRoZSBmaXJzdCBudW1iZXIgYnkgdGhlIHNlY29uZCBudW1iZXIuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgbnVtZXJhdG9yID0gMTBcbk5VTUJFUiBkZW5vbWluYXRvciA9IDNcbk5VTUJFUiByZXN1bHQgPSBNV0cuTW9kdWxvTnVtYmVyKG51bWVyYXRvciwgZGVub21pbmF0b3IpXG5cbi8vIFRoZSByZXN1bHQgb2YgMTAgJSAzIGlzIDEiLCAibmFtZSI6ICJNV0cuTW9kdWxvTnVtYmVyIChOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgcmVtYWluZGVyIHdoZW4gdGhlIGZpcnN0IG51bWJlciBpcyBkaXZpZGVkIGJ5IHRoZSBzZWNvbmQgbnVtYmVyLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTlVNQkVSYDogVGhlIGRpdmlkZW5kIChudW1lcmF0b3IpLlxuMi4gYE5VTUJFUmA6IFRoZSBkaXZpc29yIChkZW5vbWluYXRvcikuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE5VTUJFUj4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxOVU1CRVI+YCB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdCBuYW1lLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBuYW1lIG9mIHRoZSBudW1iZXIgbGlzdFxuU1RSSU5HIGxpc3ROYW1lID0gXCJleGFtcGxlTnVtYmVyTGlzdFwiXG5cbi8vIFJldHJpZXZlIHRoZSBudW1iZXIgbGlzdCBieSBuYW1lXG5WRUNUT1I8TlVNQkVSPiBudW1iZXJMaXN0ID0gTVdHLk51bWJlckxpc3RCeU5hbWUobGlzdE5hbWUpXG5cbi8vIENoZWNrIGlmIHRoZSBudW1iZXIgbGlzdCBpcyBub3QgZW1wdHlcbklGIG51bWJlckxpc3QuU0laRSA+IDAgVEhFTiB7XG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBudW1iZXIgbGlzdCBhbmQgcHJpbnQgZWFjaCBudW1iZXJcbiAgICBGT1IgTlVNQkVSIG51bSBJTiBudW1iZXJMaXN0IHtcbiAgICAgICAgLy8gTnVtYmVyOiBudW1cbiAgICB9XG5cbiAgICAvLyBFeGFtcGxlIGNvbmRpdGlvbiB0byBibG9jayBpZiBhIHNwZWNpZmljIG51bWJlciBpcyBmb3VuZCBpbiB0aGUgbGlzdFxuICAgIElGIDQyIElOIG51bWJlckxpc3QgVEhFTiB7XG4gICAgICAgIE1XRy5CbG9jayhcIkFjY2VzcyBibG9ja2VkIGR1ZSB0byBudW1iZXIgNDIgaW4gdGhlIGxpc3RcIilcbiAgICB9IEVMU0Uge1xuICAgICAgICBNV0cuQWxsb3coXCJBY2Nlc3MgYWxsb3dlZFwiKVxuICAgIH1cbn0gRUxTRSB7XG4gICAgLy8gVGhlIG51bWJlciBsaXN0IGlzIGVtcHR5XG4gICAgTVdHLkFsbG93KFwiQWNjZXNzIGFsbG93ZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuTnVtYmVyTGlzdEJ5TmFtZSAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgVkVDVE9SPE5VTUJFUj5gIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIG51bWJlciBsaXN0IHRvIHJldHJpZXZlLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgYSBgVkVDVE9SPE5VTUJFUj5gIGxpc3Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgbGlzdE5hbWUgPSBcImV4YW1wbGVfbnVtYmVyX2xpc3RcIlxuXG5JRiBNV0cuTnVtYmVyTGlzdEJ5TmFtZUV4aXN0cyhsaXN0TmFtZSkgVEhFTiB7XG4gICAgLy8gVGhlIG51bWJlciBsaXN0ICdleGFtcGxlX251bWJlcl9saXN0JyBleGlzdHMuXG4gICAgLy8gQWRkaXRpb25hbCBhY3Rpb25zIGNhbiBiZSB0YWtlbiBoZXJlIGlmIHRoZSBsaXN0IGV4aXN0c1xufSBFTFNFIHtcbiAgICAvLyBUaGUgbnVtYmVyIGxpc3QgJ2V4YW1wbGVfbnVtYmVyX2xpc3QnIGRvZXMgbm90IGV4aXN0LlxuICAgIC8vIEFkZGl0aW9uYWwgYWN0aW9ucyBjYW4gYmUgdGFrZW4gaGVyZSBpZiB0aGUgbGlzdCBkb2VzIG5vdCBleGlzdFxufSIsICJuYW1lIjogIk1XRy5OdW1iZXJMaXN0QnlOYW1lRXhpc3RzIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgYFZFQ1RPUjxOVU1CRVI+YCBsaXN0IHdpdGggdGhlIGdpdmVuIG5hbWUgZXhpc3RzLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIG51bWJlciBsaXN0IHRvIGNoZWNrIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOZXQuSVAiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgb3JpZ2luYWwgZGVzdGluYXRpb24gd2hlbiBvcGVyYXRpbmcgaW4gdHJhbnNwYXJlbnQgbW9kZS4iLCAiY29kZV9leGFtcGxlIjogIk5ldC5JUCBkZXN0aW5hdGlvbklQID0gTVdHLkRlc3RpbmF0aW9uSVAoKVxuLy8gRGVzdGluYXRpb24gSVA6IGRlc3RpbmF0aW9uSVBcblxuLy8gRXhhbXBsZSBjb25kaXRpb24gdG8gYmxvY2sgYSBzcGVjaWZpYyBJUFxuSUYgZGVzdGluYXRpb25JUCA9PSBcIjE5Mi4xNjguMS4xXCIgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIHRoaXMgSVAgaXMgYmxvY2tlZC5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiSVAgaXMgYWxsb3dlZC5cIilcbn0iLCAibmFtZSI6ICJNV0cuT3JpZ2luYWxEZXN0aW5hdGlvbklQICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIG9yaWdpbmFsIGRlc3RpbmF0aW9uIHdoZW4gb3BlcmF0aW5nIGluIHRyYW5zcGFyZW50IG1vZGUuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJOZXQuSVAiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcHJveHkgb3V0Ym91bmQgSVAgYWRkcmVzcyBhdCB0aGUgc3BlY2lmaWVkIHBvb2wgaW5kZXguIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgaXBJbmRleCA9IDJcblNUUklORyBzZWxlY3RlZElQID0gTVdHLk91dGJvdW5kSVBGcm9tUG9vbChpcEluZGV4KVxuXG4vLyBTZWxlY3RlZCBPdXRib3VuZCBJUDogKyBzZWxlY3RlZElQIiwgIm5hbWUiOiAiTVdHLk91dGJvdW5kSVBGcm9tUG9vbCAoTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBwcm94eSBvdXRib3VuZCBJUCBhZGRyZXNzIGF0IHRoZSBzcGVjaWZpZWQgcG9vbCBpbmRleC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5VTUJFUmA6IFRoZSBpbmRleCBpbnRvIHRoZSBvdXRib3VuZCBJUCBwb29sLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBvdXRib3VuZCBwb3J0LiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIHBvcnQgPSBNV0cuT3V0Ym91bmRQb3J0KClcblxuSUYgcG9ydCA9PSA4MCBUSEVOIHtcbiAgICBNV0cuQWxsb3coXCJBbGxvd2VkIG91dGJvdW5kIHBvcnQgODBcIilcbn0gRUxTRSB7XG4gICAgTVdHLkJsb2NrKFwiQmxvY2tlZCBvdXRib3VuZCBwb3J0XCIpXG59IiwgIm5hbWUiOiAiTVdHLk91dGJvdW5kUG9ydCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBvdXRib3VuZCBwb3J0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHZhbHVlIG9mIGEgc2luZ2xlIHF1ZXJ5IHBhcmFtZXRlciBmcm9tIHRoZSBVUkwgb2JqZWN0LiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5TVFJJTkcga2V5ID0gXCJleGFtcGxlS2V5XCJcblNUUklORyB2YWx1ZSA9IFwiZXhhbXBsZVZhbHVlXCJcblxuTVdHLlNldFBhcmFtZXRlcihjdXJyZW50VXJsLCBrZXksIHZhbHVlKVxuXG4vLyBNb2RpZmllZCBVUkw6IGN1cnJlbnRVcmwiLCAibmFtZSI6ICJNV0cuUGFyYW1ldGVyIChNV0cuVVJMLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgcXVlcnkgcGFyYW1ldGVyIGZyb20gdGhlIFVSTC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5VUkxgOiBUaGUgVVJMIG9iamVjdCB0byBpbnNwZWN0LlxuMi4gYFNUUklOR2A6IFRoZSBxdWVyeS1wYXJhbWV0ZXIga2V5IG5hbWUuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhbGwgVVJMIHF1ZXJ5IHBhcmFtZXRlcnMgYXMga2V5PXZhbHVlIGVudHJpZXMuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblNUUklORyBwYXJhbWV0ZXJOYW1lID0gXCJleGFtcGxlUGFyYW1cIlxuU1RSSU5HIHBhcmFtZXRlclZhbHVlID0gTVdHLlBhcmFtZXRlcihjdXJyZW50VXJsLCBwYXJhbWV0ZXJOYW1lKVxuXG4vLyBUaGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciAnZXhhbXBsZVBhcmFtJyBpczogcGFyYW1ldGVyVmFsdWUiLCAibmFtZSI6ICJNV0cuUGFyYW1ldGVycyAoTVdHLlVSTCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGBWRUNUT1I8U1RSSU5HPmAgY29udGFpbmluZyBrZXk9dmFsdWUgc3RyaW5ncyBmb3IgYWxsIHF1ZXJ5IHBhcmFtZXRlcnMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVVJMYDogVGhlIFVSTCBvYmplY3QgdG8gaW5zcGVjdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBVUkwgcXVlcnkgc3RyaW5nIHdpdGggbGVhZGluZyBxdWVzdGlvbiBtYXJrIHdoZW4gcGFyYW1ldGVycyBleGlzdC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuTVdHLlNldFBhcmFtZXRlcihjdXJyZW50VXJsLCBcImtleVwiLCBcInZhbHVlXCIpXG4vLyBNb2RpZmllZCBVUkw6ICsgY3VycmVudFVybCIsICJuYW1lIjogIk1XRy5QYXJhbWV0ZXJTdHJpbmcgKE1XRy5VUkwpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIFVSTCBxdWVyeSBzdHJpbmcgcHJlZml4ZWQgd2l0aCBgP2Agd2hlbiBwYXJhbWV0ZXJzIGV4aXN0LCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlcmUgYXJlIG5vbmUuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVVJMYDogVGhlIFVSTCBvYmplY3QgdG8gaW5zcGVjdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcGF0aCBjb21wb25lbnQgZnJvbSB0aGUgVVJMIG9iamVjdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEdldCB0aGUgY3VycmVudCBVUkxcbk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuXG4vLyBFeHRyYWN0IHRoZSBwYXRoIGZyb20gdGhlIFVSTFxuU1RSSU5HIHVybFBhdGggPSBNV0cuUGF0aChjdXJyZW50VXJsKVxuXG4vLyBUaGUgcGF0aCBvZiB0aGUgY3VycmVudCBVUkwgaXM6IFwiICsgdXJsUGF0aCIsICJuYW1lIjogIk1XRy5QYXRoIChNV0cuVVJMKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHBhdGggc3RyaW5nIGZyb20gVVJMLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVSTGA6IFRoZSBVUkwgb2JqZWN0IGZyb20gd2hpY2ggdG8gZXh0cmFjdCB0aGUgcGF0aC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgdGltZSBzcGVudCBmb3IgcG9saWN5IGV2YWx1YXRpb24gKHdpdGhvdXQgd2FpdGluZyB0aW1lKS4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBkdXJhdGlvbiA9IE1XRy5Qb2xpY3lFeGVjdXRpb25EdXJhdGlvbigpXG4vLyBQb2xpY3kgZXhlY3V0aW9uIGR1cmF0aW9uOiBcIiArIGR1cmF0aW9uICsgXCIgbWlsbGlzZWNvbmRzIiwgIm5hbWUiOiAiTVdHLlBvbGljeUV4ZWN1dGlvbkR1cmF0aW9uICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHRpbWUgc3BlbnQgZm9yIHBvbGljeSBldmFsdWF0aW9uICh3aXRob3V0IHdhaXRpbmcgdGltZSkuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZXJyb3IgZGVzY3JpcHRpb24gZm9yIHBvbGljeSBleGVjdXRpb24gZXJyb3JzLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGVycm9yRGVzY3JpcHRpb24gPSBNV0cuUG9saWN5RXhlY3V0aW9uRXJyb3IoKVxuXG5JRiBlcnJvckRlc2NyaXB0aW9uICE9IFwiXCIgVEhFTiB7XG4gICAgLy8gUG9saWN5IEV4ZWN1dGlvbiBFcnJvcjogXCIgKyBlcnJvckRlc2NyaXB0aW9uXG59IEVMU0Uge1xuICAgIC8vIE5vIHBvbGljeSBleGVjdXRpb24gZXJyb3JzLlxufSIsICJuYW1lIjogIk1XRy5Qb2xpY3lFeGVjdXRpb25FcnJvciAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGVycm9yIGRlc2NyaXB0aW9uIGZvciBwb2xpY3kgZXhlY3V0aW9uIGVycm9ycy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBwb3J0IG51bWJlciBmcm9tIHRoZSBVUkwgb2JqZWN0LCBvciAwIGlmIG5vIHBvcnQgaXMgc3BlY2lmaWVkLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5OVU1CRVIgcG9ydCA9IE1XRy5Qb3J0KGN1cnJlbnRVcmwpXG5cbi8vIFRoZSBwb3J0IG51bWJlciBpczogXCIgKyBwb3J0XG5cbklGIHBvcnQgPT0gODAgVEhFTiB7XG4gICAgLy8gVGhlIHJlcXVlc3QgaXMgdXNpbmcgdGhlIHN0YW5kYXJkIEhUVFAgcG9ydC5cbn0gRUxTRSBJRiBwb3J0ID09IDQ0MyBUSEVOIHtcbiAgICAvLyBUaGUgcmVxdWVzdCBpcyB1c2luZyB0aGUgc3RhbmRhcmQgSFRUUFMgcG9ydC5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIHJlcXVlc3QgaXMgdXNpbmcgYSBub24tc3RhbmRhcmQgcG9ydDogXCIgKyBwb3J0XG59IiwgIm5hbWUiOiAiTVdHLlBvcnQgKE1XRy5VUkwpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgcG9ydCBudW1iZXIsIG9yIDAgd2hlbiBubyBwb3J0IGlzIHByZXNlbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVVJMYDogVGhlIFVSTCBvYmplY3QgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBwb3J0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgYSBwcm9ncmVzcyBwYWdlIGhhcyBiZWVuIGVuYWJsZWQgZm9yIHRoZSBjdXJyZW50IHJlcXVlc3QuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuUHJvZ3Jlc3NQYWdlU2V0dGluZyBwcm9ncmVzc1BhZ2VTZXR0aW5nID0gTVdHLlByb2dyZXNzUGFnZVNldHRpbmcoKVxuLy8gQ29uZmlndXJlIHlvdXIgcHJvZ3Jlc3NQYWdlU2V0dGluZyBhcyBuZWVkZWRcbi8vIEZvciBleGFtcGxlLCB5b3UgbWlnaHQgc2V0IHNvbWUgcHJvcGVydGllcyBvbiB0aGUgcHJvZ3Jlc3NQYWdlU2V0dGluZyBvYmplY3QgaGVyZVxuXG5NV0cuRW5hYmxlUHJvZ3Jlc3NQYWdlKHByb2dyZXNzUGFnZVNldHRpbmcpXG4vLyBQcm9ncmVzcyBwYWdlIGhhcyBiZWVuIGVuYWJsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHNldHRpbmdzLiIsICJuYW1lIjogIk1XRy5Qcm9ncmVzc1BhZ2VFbmFibGVkICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgcHJvZ3Jlc3MgcGFnZSBoYXMgYmVlbiBlbmFibGVkIGZvciB0aGUgY3VycmVudCByZXF1ZXN0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgYSBwcm9ncmVzcyBwYWdlIGhhcyBiZWVuIHNlbnQgZm9yIHRoZSBjdXJyZW50IHJlcXVlc3QuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBNV0cuUHJvZ3Jlc3NQYWdlU2VudCgpIFRIRU4ge1xuICAgIC8vIEEgcHJvZ3Jlc3MgcGFnZSBoYXMgYmVlbiBzZW50IGZvciB0aGlzIHJlcXVlc3QuXG59IEVMU0Uge1xuICAgIC8vIE5vIHByb2dyZXNzIHBhZ2UgaGFzIGJlZW4gc2VudCBmb3IgdGhpcyByZXF1ZXN0LlxufSIsICJuYW1lIjogIk1XRy5Qcm9ncmVzc1BhZ2VTZW50ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgcHJvZ3Jlc3MgcGFnZSBoYXMgYmVlbiBzZW50IGZvciB0aGUgY3VycmVudCByZXF1ZXN0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBwcm90b2NvbC9zY2hlbWUgY29tcG9uZW50IGZyb20gdGhlIFVSTCBvYmplY3QuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblNUUklORyBwcm90b2NvbCA9IGN1cnJlbnRVcmwuUHJvdG9jb2xcblxuSUYgcHJvdG9jb2wgPT0gXCJodHRwc1wiIFRIRU4ge1xuICAgIC8vIFRoZSBwcm90b2NvbCBpcyBIVFRQU1xufSBFTFNFIHtcbiAgICAvLyBUaGUgcHJvdG9jb2wgaXMgbm90IEhUVFBTXG59IiwgIm5hbWUiOiAiTVdHLlByb3RvY29sIChNV0cuVVJMKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHByb3RvY29sIHN0cmluZzsgcmV0dXJucyBlbXB0eSBzdHJpbmcgd2hlbiBVUkwgb2JqZWN0IGlzIG5vdCBzZXQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVVJMYDogVGhlIFVSTCBvYmplY3QgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBwcm90b2NvbC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcHJvdG9jb2wgYW5kIHZlcnNpb24gb2YgYSByZXF1ZXN0IG9yIHJlc3BvbnNlIChlLmcuLCBIVFRQLzEuMSkuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuUmVxdWVzdFJlc3BvbnNlIHJlcXVlc3QgPSBNV0cuUmVxdWVzdFJlc3BvbnNlKClcblNUUklORyBwcm90b2NvbFZlcnNpb24gPSBNV0cuUHJvdG9jb2xBbmRWZXJzaW9uKHJlcXVlc3QpXG5cbi8vIFByb3RvY29sIGFuZCBWZXJzaW9uOiBwcm90b2NvbFZlcnNpb25cblxuSUYgcHJvdG9jb2xWZXJzaW9uID09IFwiSFRUUC8xLjFcIiBUSEVOIHtcbiAgICBNV0cuQWxsb3coXCJIVFRQLzEuMSByZXF1ZXN0IGFsbG93ZWRcIilcbn0gRUxTRSB7XG4gICAgTVdHLkJsb2NrKFwiVW5zdXBwb3J0ZWQgcHJvdG9jb2wgdmVyc2lvblwiKVxufSIsICJuYW1lIjogIk1XRy5Qcm90b2NvbEFuZFZlcnNpb24gKE1XRy5SZXF1ZXN0UmVzcG9uc2UpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHByb3RvY29sIGFuZCB2ZXJzaW9uIG9mIGEgcmVxdWVzdCBvciByZXNwb25zZSAoZS5nLiwgSFRUUC8xLjEpLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlJlcXVlc3RSZXNwb25zZWA6IFRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlIG9iamVjdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZmFpbHVyZSBkZXNjcmlwdGlvbiBmb3IgdGhlIGN1cnJlbnQgcHJvdG9jb2wgZXJyb3IuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgZmFpbHVyZURlc2NyaXB0aW9uID0gTVdHLlByb3RvY29sRmFpbHVyZURlc2NyaXB0aW9uKClcblxuSUYgZmFpbHVyZURlc2NyaXB0aW9uICE9IFwiXCIgVEhFTiB7XG4gICAgLy8gUHJvdG9jb2wgRmFpbHVyZSBEZXRlY3RlZDogXCIgKyBmYWlsdXJlRGVzY3JpcHRpb25cbn0iLCAibmFtZSI6ICJNV0cuUHJvdG9jb2xGYWlsdXJlRGVzY3JpcHRpb24gKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZmFpbHVyZSBkZXNjcmlwdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gdXBncmFkZWQgdG8gV2ViU29ja2V0LiIsICJjb2RlX2V4YW1wbGUiOiAiSUYgTVdHLlByb3RvY29sSXNXZWJTb2NrZXQoKSBUSEVOIHtcbiAgICAvLyBUaGUgY3VycmVudCBwcm90b2NvbCBpcyBXZWJTb2NrZXQuXG4gICAgLy8gQWRkIGFkZGl0aW9uYWwgbG9naWMgZm9yIFdlYlNvY2tldCBjb25uZWN0aW9ucyBoZXJlXG59IEVMU0Uge1xuICAgIC8vIFRoZSBjdXJyZW50IHByb3RvY29sIGlzIG5vdCBXZWJTb2NrZXQuXG4gICAgLy8gQWRkIGFkZGl0aW9uYWwgbG9naWMgZm9yIG5vbi1XZWJTb2NrZXQgY29ubmVjdGlvbnMgaGVyZVxufSIsICJuYW1lIjogIk1XRy5Qcm90b2NvbElzV2ViU29ja2V0ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIHVwZ3JhZGVkIHRvIFdlYlNvY2tldCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgaW5ncmVzcyBwcm94eSBwb3J0LiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIHBvcnQgPSBNV0cuUHJveHlQb3J0KClcbi8vIFRoZSBpbmdyZXNzIHByb3h5IHBvcnQgaXM6IHBvcnRcblxuSUYgcG9ydCA9PSA4MDgwIFRIRU4ge1xuICAgIC8vIFRoZSBwcm94eSBwb3J0IGlzIDgwODAsIGFsbG93aW5nIHRoZSBjb25uZWN0aW9uLlxuICAgIE1XRy5BbGxvdyhcIlBvcnQgODA4MFwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGUgcHJveHkgcG9ydCBpcyBub3QgODA4MCwgYmxvY2tpbmcgdGhlIGNvbm5lY3Rpb24uXG4gICAgTVdHLkJsb2NrKFwiQmxvY2tlZCBkdWUgdG8gaW5jb3JyZWN0IHByb3h5IHBvcnRcIilcbn0iLCAibmFtZSI6ICJNV0cuUHJveHlQb3J0ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgaW5ncmVzcyBwcm94eSBwb3J0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZS4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBtaW4gPSAxXG5OVU1CRVIgbWF4ID0gMTAwXG5OVU1CRVIgcmFuZG9tTnVtYmVyID0gTVdHLlJhbmRvbU51bWJlcihtaW4sIG1heClcbi8vIEdlbmVyYXRlZCByYW5kb20gbnVtYmVyOiBcIiArIHJhbmRvbU51bWJlciIsICJuYW1lIjogIk1XRy5SYW5kb21OdW1iZXIgKE5VTUJFUiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgcmFuZG9tIGludGVnZXIgd2l0aGluIHRoZSBzcGVjaWZpZWQgcmFuZ2UuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBOVU1CRVJgOiBUaGUgbWluaW11bSB2YWx1ZSAoaW5jbHVzaXZlKS5cbjIuIGBOVU1CRVJgOiBUaGUgbWF4aW11bSB2YWx1ZSAoaW5jbHVzaXZlKS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcmF3IFVSTCB0ZXh0IGFzIHN0b3JlZCBpbiB0aGUgVVJMIG9iamVjdCAod2l0aG91dCBub3JtYWxpemVkIHJlbmRlcmluZykuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblNUUklORyByYXdVcmwgPSBNV0cuUmF3KGN1cnJlbnRVcmwpXG4vLyBUaGUgcmF3IFVSTCBpczogXCIgKyByYXdVcmwiLCAibmFtZSI6ICJNV0cuUmF3IChNV0cuVVJMKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHJhdyBVUkwgc3RyaW5nOyByZXR1cm5zIGVtcHR5IHN0cmluZyB3aGVuIFVSTCBvYmplY3QgaXMgbm90IHNldC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5VUkxgOiBUaGUgVVJMIG9iamVjdCB3aG9zZSByYXcgdmFsdWUgaXMgcmV0dXJuZWQuIn0sIHsicmV0dXJuX3R5cGUiOiAiUmVnRXhKU2kuTGlzdCIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBgUmVnRXhKU2kuTGlzdGAgY29ycmVzcG9uZGluZyB0byB0aGUgc3BlY2lmaWVkIGxpc3QgSUQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgcmVnZXhMaXN0SUQgPSBcImV4YW1wbGVfcmVnZXhfbGlzdF9pZFwiXG5NV0cuVVJMIGN1cnJlbnRVUkwgPSBNV0cuVXJsKClcblxuSUYgTVdHLlJlZ2V4TGlzdEJ5SUQocmVnZXhMaXN0SUQpLk1hdGNoZXMoY3VycmVudFVSTCkgVEhFTiB7XG4gICAgLy8gVVJMIG1hdGNoZXMgdGhlIHJlZ2V4IGxpc3RcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gdGhpcyBVUkwgaXMgYmxvY2tlZCBiYXNlZCBvbiByZWdleCBsaXN0XCIpXG59IEVMU0Uge1xuICAgIC8vIFVSTCBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnZXggbGlzdFxuICAgIE1XRy5BbGxvdyhcIlVSTCBhbGxvd2VkXCIpXG59IiwgIm5hbWUiOiAiTVdHLlJlZ2V4TGlzdEJ5SUQgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYFJlZ0V4SlNpLkxpc3RgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBsaXN0IElELiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIElEIG9mIHRoZSByZWdleCBsaXN0IHRvIHJldHJpZXZlLiJ9LCB7InJldHVybl90eXBlIjogIlJlZ0V4SlNpLkxpc3QiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYFJlZ0V4SlNpLkxpc3RgIGlkZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBsaXN0IG5hbWUuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBSZXRyaWV2ZSB0aGUgbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zIGJ5IG5hbWVcblJlZ0V4SlNpLkxpc3QgcmVnZXhMaXN0ID0gTVdHLlJlZ2V4TGlzdEJ5TmFtZShcImV4YW1wbGVfcmVnZXhfbGlzdFwiKVxuXG4vLyBHZXQgdGhlIGN1cnJlbnQgVVJMXG5NV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblxuLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSByZWdleCBsaXN0IGFuZCBjaGVjayBpZiB0aGUgVVJMIG1hdGNoZXMgYW55IHJlZ2V4XG5GT1IgRUFDSCByZWdleCBJTiByZWdleExpc3Qge1xuICAgIElGIHJlZ2V4Lk1hdGNoZXMoY3VycmVudFVybC5Ub1N0cmluZygpKSBUSEVOIHtcbiAgICAgICAgLy8gSWYgYSBtYXRjaCBpcyBmb3VuZCwgYmxvY2sgdGhlIHJlcXVlc3QgYW5kIHByb3ZpZGUgYSByZWFzb25cbiAgICAgICAgTVdHLkJsb2NrKFwiVVJMIG1hdGNoZXMgYSBibG9ja2VkIHBhdHRlcm5cIilcbiAgICAgICAgUkVUVVJOXG4gICAgfVxufVxuXG4vLyBJZiBubyBtYXRjaCBpcyBmb3VuZCwgYWxsb3cgdGhlIHJlcXVlc3Rcbk1XRy5BbGxvdyhcIk5vIG1hdGNoaW5nIHJlZ2V4IGZvdW5kXCIpIiwgIm5hbWUiOiAiTVdHLlJlZ2V4TGlzdEJ5TmFtZSAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgUmVnRXhKU2kuTGlzdGAgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gbGlzdCBuYW1lLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIHJlZ2V4IGxpc3QgdG8gcmV0cmlldmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhIHJlZ2V4IGxpc3Qgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgZXhpc3RzLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHJlZ2V4TGlzdE5hbWUgPSBcImV4YW1wbGVfcmVnZXhfbGlzdFwiXG5cbklGIE1XRy5SZWdleExpc3RCeU5hbWVFeGlzdHMocmVnZXhMaXN0TmFtZSkgVEhFTiB7XG4gICAgLy8gVGhlIHJlZ2V4IGxpc3QgZXhpc3RzLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgcmVnZXggbGlzdCBkb2VzIG5vdCBleGlzdC5cbn0iLCAibmFtZSI6ICJNV0cuUmVnZXhMaXN0QnlOYW1lRXhpc3RzIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgcmVnZXggbGlzdCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBleGlzdHMsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG5hbWUgb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXN0IHRvIGNoZWNrIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuUmVxdWVzdFJlc3BvbnNlIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBgTVdHLlJlcXVlc3RSZXNwb25zZWAgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBIVFRQIHJlcXVlc3QuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuUmVxdWVzdFJlc3BvbnNlIHJlcXVlc3QgPSBNV0cuUmVxdWVzdCgpXG5TVFJJTkcgdXJsID0gcmVxdWVzdC5VcmwoKVxuU1RSSU5HIG1ldGhvZCA9IHJlcXVlc3QuTWV0aG9kKClcblxuLy8gUmVxdWVzdCBVUkw6IFwiICsgdXJsXG4vLyBSZXF1ZXN0IE1ldGhvZDogXCIgKyBtZXRob2QiLCAibmFtZSI6ICJNV0cuUmVxdWVzdCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgcmVxdWVzdCBvYmplY3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZmlyc3QgbGluZSBvZiB0aGUgY3VycmVudCBIVFRQIHJlcXVlc3QuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgcmVxdWVzdExpbmUgPSBNV0cuUmVxdWVzdEZpcnN0TGluZSgpXG4vLyBcIlJlcXVlc3QgRmlyc3QgTGluZTogXCIgKyByZXF1ZXN0TGluZSIsICJuYW1lIjogIk1XRy5SZXF1ZXN0Rmlyc3RMaW5lICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHJlcXVlc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIHVuaXF1ZSBpZGVudGlmaWVyIHN0cmluZyBmb3IgdGhlIGN1cnJlbnQgcmVxdWVzdC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyByZXF1ZXN0SUQgPSBNV0cuUmVxdWVzdElEKClcbi8vIFwiUmVxdWVzdCBJRDogXCIgKyByZXF1ZXN0SUQiLCAibmFtZSI6ICJNV0cuUmVxdWVzdElEICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB1bmlxdWUgaWRlbnRpZmllciBzdHJpbmcgZm9yIHRoZSBjdXJyZW50IHJlcXVlc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZHVyYXRpb24gb2YgdGhlIEROUyBsb29rdXAgZm9yIHRoZSBjdXJyZW50IGhvc3QuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBHZXQgdGhlIGN1cnJlbnQgVVJMXG5NV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblxuLy8gRXh0cmFjdCB0aGUgaG9zdCBmcm9tIHRoZSBVUkxcblNUUklORyBob3N0ID0gY3VycmVudFVybC5Ib3N0XG5cbi8vIFJlc29sdmUgdGhlIGhvc3QgdmlhIEROU1xuU1RSSU5HIGlwQWRkcmVzcyA9IE1XRy5SZXNvbHZlSG9zdFZpYUROUyhob3N0KVxuXG4vLyBSZXNvbHZlZCBJUCBBZGRyZXNzOiBcbi8vIGlwQWRkcmVzc1xuXG4vLyBBbGxvdyB0aGUgcmVxdWVzdCB0byBwcm9jZWVkXG5NV0cuQWxsb3coXCJETlMgUmVzb2x1dGlvbiBDb21wbGV0ZWRcIikiLCAibmFtZSI6ICJNV0cuUmVzb2x2ZUhvc3RWaWFETlMgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZHVyYXRpb24gZm9yIEROUyBsb29rdXAgZm9yIHRoZSBob3N0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLlJlcXVlc3RSZXNwb25zZSIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgYE1XRy5SZXF1ZXN0UmVzcG9uc2VgIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgSFRUUCByZXNwb25zZS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyByZXNwb25zZUJvZHkgPSBcIlRoaXMgaXMgYSBjdXN0b20gcmVzcG9uc2UgYm9keS5cIlxuTVdHLkdlbmVyYXRlUmVzcG9uc2UocmVzcG9uc2VCb2R5KSIsICJuYW1lIjogIk1XRy5SZXNwb25zZSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgcmVzcG9uc2Ugb2JqZWN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiTUFQPFNUUklORyxTVFJJTkc+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBsaXN0IG9mIFNBTUwgYXR0cmlidXRlcy4iLCAiY29kZV9leGFtcGxlIjogIi8vIFJldHJpZXZlIFNBTUwgYXR0cmlidXRlc1xuTUFQPFNUUklORz48U1RSSU5HPiBzYW1sQXR0cmlidXRlcyA9IE1XRy5TQU1MQXR0cmlidXRlcygpXG5cbi8vIENoZWNrIGlmIGEgc3BlY2lmaWMgYXR0cmlidXRlIGV4aXN0c1xuSUYgc2FtbEF0dHJpYnV0ZXNbXCJyb2xlXCJdID09IFwiYWRtaW5cIiBUSEVOIHtcbiAgICAvLyBVc2VyIGhhcyBhZG1pbiByb2xlXG4gICAgTVdHLkFsbG93KFwiQWRtaW4gYWNjZXNzIGdyYW50ZWRcIilcbn0gRUxTRSB7XG4gICAgLy8gVXNlciBkb2VzIG5vdCBoYXZlIGFkbWluIHJvbGVcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgZGVuaWVkOiBBZG1pbiByb2xlIHJlcXVpcmVkXCIpXG59IiwgIm5hbWUiOiAiTVdHLlNBTUxBdHRyaWJ1dGVzICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBsaXN0IG9mIFNBTUwgYXR0cmlidXRlcy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBTQU1MIGNvbmZpZ3VyYXRpb24gSUQgZm9yIHRoZSBjdXJyZW50IGNsaWVudCBsb2NhdGlvbi4gQ2FsbCBhZnRlciBgTVdHLkRldGVybWluZUNsaWVudExvY2F0aW9uUHJvcGVydGllc2AuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBGaXJzdCwgZGV0ZXJtaW5lIHRoZSBjbGllbnQgbG9jYXRpb24gcHJvcGVydGllc1xuTVdHLkRldGVybWluZUNsaWVudExvY2F0aW9uUHJvcGVydGllcygpXG5cbi8vIEdldCB0aGUgU0FNTCBjb25maWd1cmF0aW9uIElEIGJhc2VkIG9uIHRoZSBjbGllbnQgbG9jYXRpb25cblNUUklORyBzYW1sQ29uZmlnSUQgPSBNV0cuU2FtbENvbmZpZ0J5TG9jYXRpb24oKVxuXG4vLyBTQU1MIENvbmZpZ3VyYXRpb24gSUQ6IFwiICsgc2FtbENvbmZpZ0lEXG4vLyB3YXMgcHJpbnRlZCB0byB0aGUgY29uc29sZSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzIiwgIm5hbWUiOiAiTVdHLlNhbWxDb25maWdCeUxvY2F0aW9uICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIFNBTUwgY29uZmlndXJhdGlvbiBJRCBmb3IgdGhlIGN1cnJlbnQgY2xpZW50IGxvY2F0aW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBnZW5lcmF0ZWQgU0FNTCBhdXRoZW50aWNhdGlvbiByZXF1ZXN0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBTQU1MIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3Qgc2V0dGluZ3Ncbk1XRy5TYW1sQXV0aG5SZXF1ZXN0U2V0dGluZyBzYW1sU2V0dGluZ3MgPSBNV0cuU2FtbEF1dGhuUmVxdWVzdFNldHRpbmcoKVxuXG4vLyBTZXQgdGhlIG5lY2Vzc2FyeSBwcm9wZXJ0aWVzIGZvciB0aGUgU0FNTCBzZXR0aW5nc1xuc2FtbFNldHRpbmdzLklzc3VlciA9IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9pc3N1ZXJcIlxuc2FtbFNldHRpbmdzLkRlc3RpbmF0aW9uID0gXCJodHRwczovL2lkcC5leGFtcGxlLmNvbS9zc29cIlxuc2FtbFNldHRpbmdzLkFzc2VydGlvbkNvbnN1bWVyU2VydmljZVVSTCA9IFwiaHR0cHM6Ly9zcC5leGFtcGxlLmNvbS9hY3NcIlxuc2FtbFNldHRpbmdzLlByb3RvY29sQmluZGluZyA9IFwidXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmJpbmRpbmdzOkhUVFAtUE9TVFwiXG5zYW1sU2V0dGluZ3MuTmFtZUlERm9ybWF0ID0gXCJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3NcIlxuXG4vLyBEZWZpbmUgdGhlIHRhcmdldCBVUkwgZm9yIHRoZSBTQU1MIHJlcXVlc3RcblNUUklORyB0YXJnZXRVUkwgPSBcImh0dHBzOi8vc3AuZXhhbXBsZS5jb20vdGFyZ2V0XCJcblxuLy8gQ3JlYXRlIHRoZSBTQU1MIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3RcblNUUklORyBzYW1sUmVxdWVzdCA9IE1XRy5TQU1MQ3JlYXRlQXV0aG5SZXF1ZXN0KHNhbWxTZXR0aW5ncywgdGFyZ2V0VVJMKVxuXG4vLyBQcmludCB0aGUgU0FNTCByZXF1ZXN0IHRvIHRoZSBkZWJ1ZyBjb25zb2xlXG4vLyBzYW1sUmVxdWVzdCIsICJuYW1lIjogIk1XRy5TQU1MQ3JlYXRlQXV0aG5SZXF1ZXN0IChNV0cuU2FtbEF1dGhuUmVxdWVzdFNldHRpbmcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGdlbmVyYXRlZCBTQU1MIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuU2FtbEF1dGhuUmVxdWVzdFNldHRpbmdgOiBUaGUgc2V0dGluZ3MgZm9yIHRoZSBTQU1MIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QuXG4yLiBgU1RSSU5HYDogVGhlIEFzc2VydGlvbiBDb25zdW1lciBTZXJ2aWNlIChBQ1MpIFVSTC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgU0FNTCByZXNwb25zZSB2YWxpZGF0aW9uIGVycm9yIGRlc2NyaXB0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHNhbWxFcnJvciA9IE1XRy5TQU1MRXJyb3IoKVxuXG5JRiBzYW1sRXJyb3IgIT0gXCJcIiBUSEVOIHtcbiAgICAvLyBcIlNBTUwgRXJyb3I6IFwiICsgc2FtbEVycm9yXG4gICAgTVdHLkJsb2NrKFwiU0FNTCBBdXRoZW50aWNhdGlvbiBGYWlsZWQ6IFwiICsgc2FtbEVycm9yKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJTQU1MIEF1dGhlbnRpY2F0aW9uIFN1Y2Nlc3NmdWxcIilcbn0iLCAibmFtZSI6ICJNV0cuU0FNTEVycm9yICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIFNBTUwgcmVzcG9uc2UgdmFsaWRhdGlvbiBlcnJvciBkZXNjcmlwdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY29uZmlndXJlZCBwcm9jZXNzaW5nIG9wdGlvbnMgZm9yIFNBTUwgZm9yIHRoZSBnaXZlbiB0ZW5hbnQgYW5kIGNvbmZpZ3VyYXRpb24uIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgcGFyYW0xID0gXCJleGFtcGxlUGFyYW0xXCJcblNUUklORyBwYXJhbTIgPSBcImV4YW1wbGVQYXJhbTJcIlxuXG4vLyBBc3N1bWluZyBNV0cuU0FNTEdldFByb2Nlc3NpbmdPcHRpb25zIHJldHVybnMgc29tZSB2YWx1ZVxuLy8gUmVwbGFjZSAncmVzdWx0VHlwZScgd2l0aCB0aGUgYWN0dWFsIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvblxucmVzdWx0VHlwZSByZXN1bHQgPSBNV0cuU0FNTEdldFByb2Nlc3NpbmdPcHRpb25zKHBhcmFtMSwgcGFyYW0yKVxuXG4vLyBVc2UgdGhlIHJlc3VsdCBpbiBzb21lIHdheVxuLy8gVGhlIHJlc3VsdCBvZiBNV0cuU0FNTEdldFByb2Nlc3NpbmdPcHRpb25zIGlzOiByZXN1bHQiLCAibmFtZSI6ICJNV0cuU0FNTEdldFByb2Nlc3NpbmdPcHRpb25zIChTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY29uZmlndXJlZCBwcm9jZXNzaW5nIG9wdGlvbnMgZm9yIFNBTUwgZm9yIHRoZSBnaXZlbiB0ZW5hbnQgYW5kIGNvbmZpZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSB0ZW5hbnQgSUQuXG4yLiBgU1RSSU5HYDogVGhlIGNvbmZpZ3VyYXRpb24gSUQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLlNhbWxBdXRoblJlcXVlc3RTZXR0aW5nIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGNvbmZpZ3VyZWQgcmVxdWVzdCBzZXR0aW5ncyBmb3IgU0FNTCBmb3IgdGhlIGdpdmVuIHRlbmFudCBhbmQgY29uZmlndXJhdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgdGVuYW50IElEIGFuZCBjb25maWcgSURcblNUUklORyB0ZW5hbnRJRCA9IFwidGVuYW50MTIzXCJcblNUUklORyBjb25maWdJRCA9IFwiY29uZmlnQUJDXCJcblxuLy8gUmV0cmlldmUgdGhlIFNBTUwgcmVxdWVzdCBzZXR0aW5nc1xuTVdHLlNhbWxBdXRoblJlcXVlc3RTZXR0aW5nIHNhbWxSZXF1ZXN0U2V0dGluZ3MgPSBNV0cuU0FNTEdldFJlcXVlc3RTZXR0aW5nKHRlbmFudElELCBjb25maWdJRClcblxuLy8gUGVyZm9ybSBzb21lIGFjdGlvbiB3aXRoIHRoZSByZXRyaWV2ZWQgc2V0dGluZ3Ncbi8vIEZvciBkZW1vbnN0cmF0aW9uLCB3ZSdsbCBqdXN0IHByaW50IHRoZSBzZXR0aW5ncyB0byB0aGUgZGVidWcgY29uc29sZVxuLy8gU0FNTCBSZXF1ZXN0IFNldHRpbmdzOiBcIiArIHNhbWxSZXF1ZXN0U2V0dGluZ3MiLCAibmFtZSI6ICJNV0cuU0FNTEdldFJlcXVlc3RTZXR0aW5nIChTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY29uZmlndXJlZCByZXF1ZXN0IHNldHRpbmdzIGZvciBTQU1MIGZvciB0aGUgZ2l2ZW4gdGVuYW50IGFuZCBjb25maWcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgdGVuYW50IElELlxuMi4gYFNUUklOR2A6IFRoZSBjb25maWd1cmF0aW9uIElELiJ9LCB7InJldHVybl90eXBlIjogIk1XRy5TYW1sQXV0aG5SZXNwb25zZVNldHRpbmciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY29uZmlndXJlZCByZXNwb25zZSBzZXR0aW5ncyBmb3IgU0FNTCBmb3IgdGhlIGdpdmVuIHRlbmFudCBhbmQgY29uZmlndXJhdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgdGVuYW50IElEIGFuZCBjb25maWcgSURcblNUUklORyB0ZW5hbnRJRCA9IFwidGVuYW50MTIzXCJcblNUUklORyBjb25maWdJRCA9IFwiY29uZmlnNDU2XCJcblxuLy8gUmV0cmlldmUgdGhlIFNBTUwgcmVzcG9uc2Ugc2V0dGluZ3Ncbk1XRy5TYW1sQXV0aG5SZXNwb25zZVNldHRpbmcgcmVzcG9uc2VTZXR0aW5nID0gTVdHLlNBTUxHZXRSZXNwb25zZVNldHRpbmcodGVuYW50SUQsIGNvbmZpZ0lEKVxuXG4vLyBQZXJmb3JtIHNvbWUgYWN0aW9uIGJhc2VkIG9uIHRoZSByZXNwb25zZSBzZXR0aW5nc1xuSUYgcmVzcG9uc2VTZXR0aW5nICE9IE5VTEwgVEhFTiB7XG4gICAgLy8gU0FNTCBSZXNwb25zZSBTZXR0aW5nIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkuXG4gICAgLy8gQWRkaXRpb25hbCBsb2dpYyBjYW4gYmUgYWRkZWQgaGVyZSB0byB3b3JrIHdpdGggdGhlIHJlc3BvbnNlU2V0dGluZyBvYmplY3Rcbn0gRUxTRSB7XG4gICAgLy8gRmFpbGVkIHRvIHJldHJpZXZlIFNBTUwgUmVzcG9uc2UgU2V0dGluZy5cbn0iLCAibmFtZSI6ICJNV0cuU0FNTEdldFJlc3BvbnNlU2V0dGluZyAoU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGNvbmZpZ3VyZWQgcmVzcG9uc2Ugc2V0dGluZ3MgZm9yIFNBTUwgZm9yIHRoZSBnaXZlbiB0ZW5hbnQgYW5kIGNvbmZpZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSB0ZW5hbnQgSUQuXG4yLiBgU1RSSU5HYDogVGhlIGNvbmZpZ3VyYXRpb24gSUQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHRlbmFudCBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIG1haWwgZG9tYWluLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIG1haWxEb21haW4gPSBcImV4YW1wbGUuY29tXCJcblNUUklORyB0ZW5hbnRJRCA9IE1XRy5TQU1MR2V0VGVuYW50QnlNYWlsRG9tYWluKG1haWxEb21haW4pXG4vLyBUZW5hbnQgSUQgZm9yIGV4YW1wbGUuY29tIGlzIHRlbmFudElEIiwgIm5hbWUiOiAiTVdHLlNBTUxHZXRUZW5hbnRCeU1haWxEb21haW4gKE1XRy5TQU1MRG9tYWluQXV0aGVudGljYXRpb24sIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdGVuYW50IElEIGZvciB0aGUgZ2l2ZW4gbWFpbCBkb21haW4uIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuU0FNTERvbWFpbkF1dGhlbnRpY2F0aW9uYDogVGhlIFNBTUwgZG9tYWluIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uXG4yLiBgU1RSSU5HYDogVGhlIG1haWwgZG9tYWluLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSB0ZW5hbnQgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBtYWlsIGRvbWFpbi4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBtYWlsRG9tYWluID0gXCJleGFtcGxlLmNvbVwiXG5TVFJJTkcgdGVuYW50SUQgPSBNV0cuU0FNTEdldFRlbmFudEJ5TWFpbERvbWFpbihtYWlsRG9tYWluKVxuLy8gVGhlIHRlbmFudCBJRCBmb3IgdGhlIG1haWwgZG9tYWluIGV4YW1wbGUuY29tIGlzIHRlbmFudElEIiwgIm5hbWUiOiAiTVdHLlNBTUxHZXRUZW5hbnRCeU1haWxEb21haW4gKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdGVuYW50IElEIGZvciB0aGUgZ2l2ZW4gbWFpbCBkb21haW4uIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgbWFpbCBkb21haW4uIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIFNBTUwgSURQIFNTTyBlbmRwb2ludC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgdGhlIFNBTUwgSURQIFNTTyBFbmRwb2ludFxuTVdHLlNBTUxJRFBTU09FbmRwb2ludCBzYW1sRW5kcG9pbnQgPSBNV0cuU0FNTElEUFNTT0VuZHBvaW50KClcblxuLy8gU2V0IHNvbWUgcHJvcGVydGllcyBmb3IgdGhlIFNBTUwgZW5kcG9pbnRcbnNhbWxFbmRwb2ludC5zZXRVUkwoXCJodHRwczovL2lkcC5leGFtcGxlLmNvbS9zc29cIilcbnNhbWxFbmRwb2ludC5zZXRCaW5kaW5nKFwidXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmJpbmRpbmdzOkhUVFAtUmVkaXJlY3RcIilcblxuLy8gUGVyZm9ybSBzb21lIGFjdGlvbiB3aXRoIHRoZSBTQU1MIGVuZHBvaW50XG5JRiBzYW1sRW5kcG9pbnQuaXNWYWxpZCgpIFRIRU4ge1xuICAgIC8vIFNBTUwgSURQIFNTTyBFbmRwb2ludCBpcyB2YWxpZC5cbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGNhbiBiZSBhZGRlZCBoZXJlXG59IEVMU0Uge1xuICAgIC8vIFNBTUwgSURQIFNTTyBFbmRwb2ludCBpcyBub3QgdmFsaWQuXG4gICAgTVdHLkJsb2NrKFwiSW52YWxpZCBTQU1MIElEUCBTU08gRW5kcG9pbnRcIilcbn0iLCAibmFtZSI6ICJNV0cuU0FNTElEUFNTT0VuZHBvaW50ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIFNBTUwgSURQIFNTTyBFbmRwb2ludC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUGFyc2VzIGEgU0FNTCBhdXRoZW50aWNhdGlvbiByZXNwb25zZSBhbmQgcmV0dXJucyB3aGV0aGVyIGl0IHdhcyBzdWNjZXNzZnVsbHkgcGFyc2VkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBTQU1MIHJlc3BvbnNlIHNldHRpbmdzXG5NV0cuU2FtbEF1dGhuUmVzcG9uc2VTZXR0aW5nIHNhbWxTZXR0aW5ncyA9IE1XRy5TYW1sQXV0aG5SZXNwb25zZVNldHRpbmcoKVxuXG4vLyBEZWZpbmUgdGhlIEhUVFAgbWV0aG9kLCBpc3N1ZXIgVVJMLCBhbmQgU0FNTCByZXNwb25zZVxuU1RSSU5HIGh0dHBNZXRob2QgPSBcIlBPU1RcIlxuU1RSSU5HIGlzc3VlclVybCA9IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9pc3N1ZXJcIlxuU1RSSU5HIHNhbWxSZXNwb25zZSA9IFwiYmFzZTY0LWVuY29kZWQtc2FtbC1yZXNwb25zZVwiXG5cbi8vIFBhcnNlIHRoZSBTQU1MIHJlc3BvbnNlXG5CT09MRUFOIGlzUGFyc2VkID0gTVdHLlNBTUxQYXJzZUF1dGhuUmVzcG9uc2Uoc2FtbFNldHRpbmdzLCBodHRwTWV0aG9kLCBpc3N1ZXJVcmwsIHNhbWxSZXNwb25zZSlcblxuLy8gQ2hlY2sgaWYgdGhlIFNBTUwgcmVzcG9uc2Ugd2FzIHN1Y2Nlc3NmdWxseSBwYXJzZWRcbklGIGlzUGFyc2VkIFRIRU4ge1xuICAgIC8vIFNBTUwgcmVzcG9uc2UgcGFyc2VkIHN1Y2Nlc3NmdWxseS5cbn0gRUxTRSB7XG4gICAgLy8gRmFpbGVkIHRvIHBhcnNlIFNBTUwgcmVzcG9uc2UuXG59IiwgIm5hbWUiOiAiTVdHLlNBTUxQYXJzZUF1dGhuUmVzcG9uc2UgKE1XRy5TYW1sQXV0aG5SZXNwb25zZVNldHRpbmcsIFNUUklORywgU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBTQU1MIGF1dGhlbnRpY2F0aW9uIHJlc3BvbnNlIHdhcyBzdWNjZXNzZnVsbHkgcGFyc2VkLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5TYW1sQXV0aG5SZXNwb25zZVNldHRpbmdgOiBUaGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgcGFyc2luZy5cbjIuIGBTVFJJTkdgOiBUaGUgSFRUUCBtZXRob2QuXG4zLiBgU1RSSU5HYDogVGhlIGlzc3VlciBVUkwuXG40LiBgU1RSSU5HYDogVGhlIFNBTUwgcmVzcG9uc2UuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIFNBTUwgcmVsYXkgc3RhdGUuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgcmVsYXlTdGF0ZSA9IE1XRy5TQU1MUmVsYXlTdGF0ZSgpXG4vLyBTQU1MIFJlbGF5IFN0YXRlOiBcIiArIHJlbGF5U3RhdGVcblxuSUYgcmVsYXlTdGF0ZSA9PSBcImV4cGVjdGVkU3RhdGVcIiBUSEVOIHtcbiAgICBNV0cuQWxsb3coXCJSZWxheSBzdGF0ZSBpcyBhcyBleHBlY3RlZFwiKVxufSBFTFNFIHtcbiAgICBNV0cuQmxvY2soXCJVbmV4cGVjdGVkIFNBTUwgUmVsYXkgU3RhdGVcIilcbn0iLCAibmFtZSI6ICJNV0cuU0FNTFJlbGF5U3RhdGUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgU0FNTCBSZWxheSBzdGF0ZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxTVFJJTkc+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGxpc3Qgb2YgYWx0ZXJuYXRpdmUgQ29tbW9uIE5hbWVzIGZyb20gdGhlIGN1cnJlbnQgd2ViIHNlcnZlciBjZXJ0aWZpY2F0ZS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBjb21tb25OYW1lID0gTVdHLlNlcnZlckNlcnRDTigpXG4vLyBTZXJ2ZXIgQ2VydGlmaWNhdGUgQ29tbW9uIE5hbWU6IFwiICsgY29tbW9uTmFtZVxuXG5JRiBjb21tb25OYW1lID09IFwiZXhhbXBsZS5jb21cIiBUSEVOIHtcbiAgICBNV0cuQWxsb3coXCJDZXJ0aWZpY2F0ZSBpcyB2YWxpZFwiKVxufSBFTFNFIHtcbiAgICBNV0cuQmxvY2soXCJJbnZhbGlkIHNlcnZlciBjZXJ0aWZpY2F0ZVwiKVxufSIsICJuYW1lIjogIk1XRy5TZXJ2ZXJDZXJ0QWx0ZXJuYXRpdmVDTnMgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhbHRlcm5hdGl2ZSBDTnMgb2Ygd2ViIHNlcnZlciBjZXJ0aWZpY2F0ZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBDb21tb24gTmFtZSBvZiB0aGUgY3VycmVudCB3ZWIgc2VydmVyIGNlcnRpZmljYXRlLiIsICJjb2RlX2V4YW1wbGUiOiAiSUYgTVdHLlNlcnZlckNlcnRDTkhhc1dpbGRDYXJkKCkgVEhFTiB7XG4gICAgLy8gVGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBoYXMgYSB3aWxkY2FyZC5cbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgYmxvY2tlZCBkdWUgdG8gd2lsZGNhcmQgaW4gc2VydmVyIGNlcnRpZmljYXRlLlwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGUgc2VydmVyIGNlcnRpZmljYXRlIGRvZXMgbm90IGhhdmUgYSB3aWxkY2FyZC5cbiAgICBNV0cuQWxsb3coXCJObyB3aWxkY2FyZCBpbiBzZXJ2ZXIgY2VydGlmaWNhdGUuXCIpXG59IiwgIm5hbWUiOiAiTVdHLlNlcnZlckNlcnRDTiAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBDb21tb24gTmFtZSBvZiBhIHdlYiBzZXJ2ZXIgY2VydGlmaWNhdGUuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgQ04gY29udGFpbnMgYSB3aWxkY2FyZC4iLCAiY29kZV9leGFtcGxlIjogIklGIE1XRy5TZXJ2ZXJDZXJ0Q05IYXNXaWxkQ2FyZCgpIFRIRU4ge1xuICAgIC8vIFRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUncyBDTiBjb250YWlucyBhIHdpbGRjYXJkLlxuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBibG9ja2VkIGR1ZSB0byB3aWxkY2FyZCBpbiBzZXJ2ZXIgY2VydGlmaWNhdGUgQ04uXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUncyBDTiBkb2VzIG5vdCBjb250YWluIGEgd2lsZGNhcmQuXG4gICAgTVdHLkFsbG93KFwiTm8gd2lsZGNhcmQgaW4gc2VydmVyIGNlcnRpZmljYXRlIENOLlwiKVxufSIsICJuYW1lIjogIk1XRy5TZXJ2ZXJDZXJ0Q05IYXNXaWxkQ2FyZCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgc2VydmVyIGNlcnRpZmljYXRlIENvbW1vbiBOYW1lIGNvbnRhaW5zIGEgd2lsZGNhcmQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIHVudGlsIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgZXhwaXJlcy4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBkYXlzRXhwaXJlZCA9IE1XRy5TZXJ2ZXJDZXJ0RGF5c0V4cGlyZWQoKVxuXG5JRiBkYXlzRXhwaXJlZCA+IDAgVEhFTiB7XG4gICAgLy8gVGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBleHBpcmVkIFwiICsgZGF5c0V4cGlyZWQgKyBcIiBkYXlzIGFnby5cbiAgICBNV0cuQmxvY2soXCJUaGUgc2VydmVyIGNlcnRpZmljYXRlIGhhcyBleHBpcmVkLlwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGUgc2VydmVyIGNlcnRpZmljYXRlIGlzIHZhbGlkLlxuICAgIE1XRy5BbGxvdyhcIkNlcnRpZmljYXRlIGlzIHZhbGlkXCIpXG59IiwgIm5hbWUiOiAiTVdHLlNlcnZlckNlcnREYXlzRXhwaXJlZCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyB1bnRpbCB0aGUgc2VydmVyIGNlcnRpZmljYXRlIGV4cGlyZXMuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgaGV4LWVuY29kZWQgU0hBMSBkaWdlc3Qgb2YgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBjZXJ0RGlnZXN0ID0gTVdHLlNlcnZlckNlcnRTaGExRGlnZXN0KClcbi8vIFNlcnZlciBDZXJ0aWZpY2F0ZSBTSEExIERpZ2VzdDogXCIgKyBjZXJ0RGlnZXN0IiwgIm5hbWUiOiAiTVdHLlNlcnZlckNlcnRTaGExRGlnZXN0ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGhleC1lbmNvZGVkIFNIQTEgZGlnZXN0IG9mIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgaGV4LWVuY29kZWQgU0hBMjU2IGRpZ2VzdCBvZiB0aGUgc2VydmVyIGNlcnRpZmljYXRlLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGNlcnREaWdlc3QgPSBNV0cuU2VydmVyQ2VydFNoYTI1NkRpZ2VzdCgpXG4vLyBTZXJ2ZXIgQ2VydGlmaWNhdGUgU0hBLTI1NiBEaWdlc3Q6IiwgIm5hbWUiOiAiTVdHLlNlcnZlckNlcnRTaGEyNTZEaWdlc3QgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgaGV4LWVuY29kZWQgU0hBMjU2IGRpZ2VzdCBvZiB0aGUgc2VydmVyIGNlcnRpZmljYXRlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHNpZ25hdHVyZSBtZXRob2Qgb2YgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBzaWduYXR1cmVNZXRob2QgPSBNV0cuU2VydmVyQ2VydFNpZ25hdHVyZU1ldGhvZCgpXG4vLyBTZXJ2ZXIgQ2VydGlmaWNhdGUgU2lnbmF0dXJlIE1ldGhvZDogXCIgKyBzaWduYXR1cmVNZXRob2QiLCAibmFtZSI6ICJNV0cuU2VydmVyQ2VydFNpZ25hdHVyZU1ldGhvZCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBzaWduYXR1cmUgbWV0aG9kIG9mIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgdGhlIGN1cnJlbnQgc2VydmVyIGNlcnRpZmljYXRlIGlzIHZhbGlkLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIE1XRy5TZXJ2ZXJDZXJ0VmFsaWRpdHlEYXlzKClcbk5VTUJFUiBjZXJ0VmFsaWRpdHlEYXlzID0gTVdHLlNlcnZlckNlcnRWYWxpZGl0eURheXNcbkJPT0xFQU4gcmVuZXdTb29uID0gRkFMU0VcbklGIGNlcnRWYWxpZGl0eURheXMgPCAzMCBUSEVOIHtcbiAgcmVuZXdTb29uID0gVFJVRVxufSIsICJuYW1lIjogIk1XRy5TZXJ2ZXJDZXJ0VmFsaWRpdHlEYXlzICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIHRoZSBjdXJyZW50IHNlcnZlciBjZXJ0aWZpY2F0ZSBpcyB2YWxpZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW4gZW5kcyB3aXRoIGEgc2VsZi1zaWduZWQgcm9vdCBDQS4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIHNldHRpbmdzXG5NV0cuQ2VydGlmaWNhdGVWZXJpZmljYXRpb25TZXR0aW5nIGNlcnRWZXJpZmljYXRpb25TZXR0aW5nID0gTVdHLkNlcnRpZmljYXRlVmVyaWZpY2F0aW9uU2V0dGluZygpXG5cbi8vIERlZmluZSB0aGUgY2VydGlmaWNhdGUgYXV0aG9yaXR5IGxpc3Rcbk1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QgY2VydEF1dGhvcml0eUxpc3QgPSBNV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0KClcblxuLy8gQ2hlY2sgaWYgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBjaGFpbiBpcyBjb21wbGV0ZVxuQk9PTEVBTiBpc0NoYWluQ29tcGxldGUgPSBNV0cuU2VydmVyQ2hhaW5Db21wbGV0ZShjZXJ0VmVyaWZpY2F0aW9uU2V0dGluZywgY2VydEF1dGhvcml0eUxpc3QpXG5cbi8vIFRha2UgYWN0aW9uIGJhc2VkIG9uIHRoZSByZXN1bHRcbklGIGlzQ2hhaW5Db21wbGV0ZSBUSEVOIHtcbiAgICAvLyBTZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW4gaXMgY29tcGxldGUuXG4gICAgTVdHLkFsbG93KFwiQ2VydGlmaWNhdGUgY2hhaW4gdmVyaWZpZWRcIilcbn0gRUxTRSB7XG4gICAgLy8gU2VydmVyIGNlcnRpZmljYXRlIGNoYWluIGlzIGluY29tcGxldGUuXG4gICAgTVdHLkJsb2NrKFwiSW5jb21wbGV0ZSBjZXJ0aWZpY2F0ZSBjaGFpblwiKVxufSIsICJuYW1lIjogIk1XRy5TZXJ2ZXJDaGFpbkNvbXBsZXRlIChNV0cuQ2VydGlmaWNhdGVWZXJpZmljYXRpb25TZXR0aW5nLCBNV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgc2VydmVyIGNlcnRpZmljYXRlIGNoYWluIGVuZHMgd2l0aCBhIHNlbGYtc2lnbmVkIHJvb3QgQ0EsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkNlcnRpZmljYXRlVmVyaWZpY2F0aW9uU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB2ZXJpZnlpbmcgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZS5cbjIuIGBNV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0YDogVGhlIGxpc3Qgb2YgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBhdXRob3JpdGllcy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW4gY29udGFpbnMgYW4gZXhwaXJlZCBDQS4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5DZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblNldHRpbmcgY2VydFZlcmlmaWNhdGlvblNldHRpbmdcbk1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QgY2FMaXN0XG5cbi8vIEFzc3VtaW5nIGNlcnRWZXJpZmljYXRpb25TZXR0aW5nIGFuZCBjYUxpc3QgYXJlIGluaXRpYWxpemVkIGFuZCBjb25maWd1cmVkIGFwcHJvcHJpYXRlbHlcblxuQk9PTEVBTiBjb250YWluc0V4cGlyZWRDQSA9IE1XRy5TZXJ2ZXJDaGFpbkNvbnRhaW5zRXhwaXJlZENBKGNlcnRWZXJpZmljYXRpb25TZXR0aW5nLCBjYUxpc3QpXG5cbklGIGNvbnRhaW5zRXhwaXJlZENBIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkNvbm5lY3Rpb24gYmxvY2tlZCBkdWUgdG8gZXhwaXJlZCBDQSBpbiB0aGUgc2VydmVyIGNlcnRpZmljYXRlIGNoYWluLlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJObyBleHBpcmVkIENBIGZvdW5kIGluIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW4uXCIpXG59IiwgIm5hbWUiOiAiTVdHLlNlcnZlckNoYWluQ29udGFpbnNFeHBpcmVkQ0EgKE1XRy5DZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblNldHRpbmcsIE1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW4gaW5jbHVkZXMgYW55IGV4cGlyZWQgY2VydGlmaWNhdGUgYXV0aG9yaXR5IChDQSksIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkNlcnRpZmljYXRlVmVyaWZpY2F0aW9uU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24uXG4yLiBgTVdHLkNlcnRpZmljYXRlQXV0aG9yaXR5TGlzdGA6IFRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGUgYXV0aG9yaXRpZXMuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgY2VydGlmaWNhdGUgaW4gdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBjaGFpbiBpcyByZXZva2VkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSB0aGUgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIHNldHRpbmdzXG5NV0cuQ2VydGlmaWNhdGVWZXJpZmljYXRpb25TZXR0aW5nIGNlcnRWZXJpZmljYXRpb25TZXR0aW5nID0gLi4uIC8vIEluaXRpYWxpemUgd2l0aCBhcHByb3ByaWF0ZSBzZXR0aW5nc1xuXG4vLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGUgYXV0aG9yaXRpZXNcbk1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QgY2FMaXN0ID0gLi4uIC8vIEluaXRpYWxpemUgd2l0aCB0aGUgbGlzdCBvZiB0cnVzdGVkIGNlcnRpZmljYXRlIGF1dGhvcml0aWVzXG5cbi8vIENoZWNrIGlmIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZSBjaGFpbiBjb250YWlucyBhIHJldm9rZWQgY2VydGlmaWNhdGVcbklGIE1XRy5TZXJ2ZXJDaGFpbkNvbnRhaW5zUmV2b2tlZChjZXJ0VmVyaWZpY2F0aW9uU2V0dGluZywgY2FMaXN0KSBUSEVOIHtcbiAgICAvLyBCbG9jayB0aGUgY29ubmVjdGlvbiBpZiBhIHJldm9rZWQgY2VydGlmaWNhdGUgaXMgZm91bmRcbiAgICBNV0cuQmxvY2soXCJDb25uZWN0aW9uIGJsb2NrZWQgZHVlIHRvIHJldm9rZWQgY2VydGlmaWNhdGUgaW4gdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlIGNoYWluLlwiKVxufSBFTFNFIHtcbiAgICAvLyBBbGxvdyB0aGUgY29ubmVjdGlvbiBpZiBubyByZXZva2VkIGNlcnRpZmljYXRlIGlzIGZvdW5kXG4gICAgTVdHLkFsbG93KFwiQ2VydGlmaWNhdGUgY2hhaW4gaXMgdmFsaWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLlNlcnZlckNoYWluQ29udGFpbnNSZXZva2VkIChNV0cuQ2VydGlmaWNhdGVWZXJpZmljYXRpb25TZXR0aW5nLCBNV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgY2VydGlmaWNhdGUgaW4gdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlIGNoYWluIGlzIHJldm9rZWQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkNlcnRpZmljYXRlVmVyaWZpY2F0aW9uU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24uXG4yLiBgTVdHLkNlcnRpZmljYXRlQXV0aG9yaXR5TGlzdGA6IFRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGUgYXV0aG9yaXRpZXMuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgc2VydmVyIGNlcnRpZmljYXRlIGNoYWluIGNvbnRhaW5zIGEgdmlvbGF0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLkNlcnRpZmljYXRlVmVyaWZpY2F0aW9uU2V0dGluZyBjZXJ0VmVyaWZpY2F0aW9uU2V0dGluZyA9IC4uLiAvLyBJbml0aWFsaXplIHdpdGggYXBwcm9wcmlhdGUgc2V0dGluZ3Ncbk1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QgY2VydEF1dGhvcml0eUxpc3QgPSAuLi4gLy8gSW5pdGlhbGl6ZSB3aXRoIGFwcHJvcHJpYXRlIENBIGxpc3RcblxuQk9PTEVBTiBoYXNWaW9sYXRpb24gPSBNV0cuU2VydmVyQ2hhaW5Db250YWluc1Zpb2xhdGlvbihjZXJ0VmVyaWZpY2F0aW9uU2V0dGluZywgY2VydEF1dGhvcml0eUxpc3QpXG5cbklGIGhhc1Zpb2xhdGlvbiBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJDZXJ0aWZpY2F0ZSBjaGFpbiBjb250YWlucyBhIHZpb2xhdGlvbi5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiQ2VydGlmaWNhdGUgY2hhaW4gaXMgdmFsaWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLlNlcnZlckNoYWluQ29udGFpbnNWaW9sYXRpb24gKE1XRy5DZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblNldHRpbmcsIE1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgdmlvbGF0aW9uIGlzIGRldGVjdGVkIHdpdGhpbiB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUgY2hhaW4sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkNlcnRpZmljYXRlVmVyaWZpY2F0aW9uU2V0dGluZ2A6IFRoZSB2ZXJpZmljYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBjZXJ0aWZpY2F0ZS5cbjIuIGBNV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0YDogVGhlIGxpc3Qgb2YgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBhdXRob3JpdGllcy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBmaXJzdCBrbm93biBDQSBpbiB0aGUgc2VydmVyIGNlcnRpZmljYXRlIGNoYWluIGlzIHRydXN0ZWQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIHRoZSBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gc2V0dGluZ1xuTVdHLkNlcnRpZmljYXRlVmVyaWZpY2F0aW9uU2V0dGluZyBjZXJ0VmVyaWZpY2F0aW9uU2V0dGluZyA9IC8vIE9idGFpbiBvciBkZWZpbmUgdGhlIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBzZXR0aW5nXG5cbi8vIEluaXRpYWxpemUgdGhlIGNlcnRpZmljYXRlIGF1dGhvcml0eSBsaXN0XG5NV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0IGNhTGlzdCA9IC8vIE9idGFpbiBvciBkZWZpbmUgdGhlIGNlcnRpZmljYXRlIGF1dGhvcml0eSBsaXN0XG5cbi8vIENoZWNrIGlmIHRoZSBmaXJzdCBrbm93biBDQSBpbiB0aGUgc2VydmVyIGNoYWluIGlzIHRydXN0ZWRcbkJPT0xFQU4gaXNUcnVzdGVkID0gTVdHLlNlcnZlckNoYWluRmlyc3RLbm93bkNBSXNUcnVzdGVkKGNlcnRWZXJpZmljYXRpb25TZXR0aW5nLCBjYUxpc3QpXG5cbi8vIFRha2UgYWN0aW9uIGJhc2VkIG9uIHdoZXRoZXIgdGhlIENBIGlzIHRydXN0ZWRcbklGIGlzVHJ1c3RlZCBUSEVOIHtcbiAgICAvLyBUaGUgZmlyc3Qga25vd24gQ0EgaW4gdGhlIHNlcnZlciBjaGFpbiBpcyB0cnVzdGVkLlxuICAgIE1XRy5BbGxvdyhcIkNBIGlzIHRydXN0ZWRcIilcbn0gRUxTRSB7XG4gICAgLy8gVGhlIGZpcnN0IGtub3duIENBIGluIHRoZSBzZXJ2ZXIgY2hhaW4gaXMgbm90IHRydXN0ZWQuXG4gICAgTVdHLkJsb2NrKFwiQ0EgaXMgbm90IHRydXN0ZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuU2VydmVyQ2hhaW5GaXJzdEtub3duQ0FJc1RydXN0ZWQgKE1XRy5DZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblNldHRpbmcsIE1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBmaXJzdCBrbm93biBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgaW4gdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlIGNoYWluIGlzIHRydXN0ZWQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkNlcnRpZmljYXRlVmVyaWZpY2F0aW9uU2V0dGluZ2A6IFRoZSB2ZXJpZmljYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBjZXJ0aWZpY2F0ZS5cbjIuIGBNV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0YDogVGhlIGxpc3Qgb2YgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBhdXRob3JpdGllcy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW4gY29udGFpbnMgYSBrbm93biBDQS4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIHNldHRpbmdzXG5NV0cuQ2VydGlmaWNhdGVWZXJpZmljYXRpb25TZXR0aW5nIGNlcnRWZXJpZmljYXRpb25TZXR0aW5nXG4vLyBEZWZpbmUgdGhlIGtub3duIENBIGxpc3Rcbk1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3Qga25vd25DQUxpc3QgPSBbXCJLbm93bkNBTGlzdFwiXVxuXG4vLyBDaGVjayBpZiB0aGUgc2VydmVyIGNlcnRpZmljYXRlIGNoYWluIGlzIGZvdW5kIGluIHRoZSBrbm93biBDQSBsaXN0XG5CT09MRUFOIGlzS25vd25DQSA9IE1XRy5TZXJ2ZXJDaGFpbkZvdW5kS25vd25DQShjZXJ0VmVyaWZpY2F0aW9uU2V0dGluZywga25vd25DQUxpc3QpXG5cbi8vIFRha2UgYWN0aW9uIGJhc2VkIG9uIHRoZSByZXN1bHRcbklGIGlzS25vd25DQSBUSEVOIHtcbiAgICAvLyBTZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW4gaXMgZm91bmQgaW4gdGhlIGtub3duIENBIGxpc3QuXG4gICAgTVdHLkFsbG93KFwiQ2VydGlmaWNhdGUgdmVyaWZpZWQgd2l0aCBrbm93biBDQVwiKVxufSBFTFNFIHtcbiAgICAvLyBTZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW4gaXMgTk9UIGZvdW5kIGluIHRoZSBrbm93biBDQSBsaXN0LlxuICAgIE1XRy5CbG9jayhcIkNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IFVua25vd24gQ0FcIilcbn0iLCAibmFtZSI6ICJNV0cuU2VydmVyQ2hhaW5Gb3VuZEtub3duQ0EgKE1XRy5DZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblNldHRpbmcsIE1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW4gaW5jbHVkZXMgYSBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgZnJvbSB0aGUga25vd24gQ0EgbGlzdCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuQ2VydGlmaWNhdGVWZXJpZmljYXRpb25TZXR0aW5nYDogVGhlIHZlcmlmaWNhdGlvbiBzZXR0aW5ncyBmb3IgdGhlIGNlcnRpZmljYXRlLlxuMi4gYE1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3RgOiBUaGUgbGlzdCBvZiB0cnVzdGVkIGNlcnRpZmljYXRlIGF1dGhvcml0aWVzLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxTVFJJTkc+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBsaXN0IG9mIHRoZSBjb21tb24gbmFtZXMgKENOcykgb2YgdGhlIGlzc3VlcnMgaW4gdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBjaGFpbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIHNldHRpbmdzIGFuZCB0aGUgY2VydGlmaWNhdGUgYXV0aG9yaXR5IGxpc3Rcbk1XRy5DZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblNldHRpbmcgY2VydFZlcmlmaWNhdGlvblNldHRpbmcgPSAuLi4gLy8geW91ciBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gc2V0dGluZ3Ncbk1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QgY2VydEF1dGhvcml0eUxpc3QgPSAuLi4gLy8geW91ciBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgbGlzdFxuXG4vLyBHZXQgdGhlIGxpc3Qgb2YgaXNzdWVyIENOcyBmcm9tIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgYW5kIGl0cyBjaGFpblxuVkVDVE9SPFNUUklORz4gaXNzdWVyQ05zID0gTVdHLlNlcnZlckNoYWluSXNzdWVyQ05zKGNlcnRWZXJpZmljYXRpb25TZXR0aW5nLCBjZXJ0QXV0aG9yaXR5TGlzdClcblxuLy8gSXNzdWVyIENOczogaXNzdWVyQ05zXG5cbi8vIEV4YW1wbGUgbG9naWM6IEJsb2NrIHRoZSByZXF1ZXN0IGlmIGEgc3BlY2lmaWMgaXNzdWVyIENOIGlzIGZvdW5kXG5JRiBcIlVudHJ1c3RlZElzc3VlckNOXCIgSU4gaXNzdWVyQ05zIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkNvbm5lY3Rpb24gYmxvY2tlZCBkdWUgdG8gdW50cnVzdGVkIGlzc3VlciBDTlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJJc3N1ZXIgQ05zIGFyZSB0cnVzdGVkXCIpXG59IiwgIm5hbWUiOiAiTVdHLlNlcnZlckNoYWluSXNzdWVyQ05zIChNV0cuQ2VydGlmaWNhdGVWZXJpZmljYXRpb25TZXR0aW5nLCBNV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbGlzdCBvZiB0aGUgY29tbW9uIG5hbWVzIChDTnMpIG9mIHRoZSBpc3N1ZXJzIGluIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgYW5kIGl0cyBjaGFpbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5DZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblNldHRpbmdgOiBUaGUgdmVyaWZpY2F0aW9uIHNldHRpbmdzIGZvciB0aGUgY2VydGlmaWNhdGUuXG4yLiBgTVdHLkNlcnRpZmljYXRlQXV0aG9yaXR5TGlzdGA6IFRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGUgYXV0aG9yaXRpZXMuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG51bWJlciBvZiBjZXJ0aWZpY2F0ZXMgaW4gdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBjaGFpbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgb3Igb2J0YWluIHRoZSBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gc2V0dGluZ1xuTVdHLkNlcnRpZmljYXRlVmVyaWZpY2F0aW9uU2V0dGluZyBjZXJ0VmVyaWZpY2F0aW9uU2V0dGluZyA9IC8vIFlvdXIgaW5pdGlhbGl6YXRpb24gY29kZSBoZXJlXG5cbi8vIEluaXRpYWxpemUgb3Igb2J0YWluIHRoZSBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgbGlzdFxuTVdHLkNlcnRpZmljYXRlQXV0aG9yaXR5TGlzdCBjZXJ0QXV0aG9yaXR5TGlzdCA9IC8vIFlvdXIgaW5pdGlhbGl6YXRpb24gY29kZSBoZXJlXG5cbi8vIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW5cbk5VTUJFUiBjaGFpbkxlbmd0aCA9IE1XRy5TZXJ2ZXJDaGFpbkxlbmd0aChjZXJ0VmVyaWZpY2F0aW9uU2V0dGluZywgY2VydEF1dGhvcml0eUxpc3QpXG5cbi8vIFNlcnZlciBjaGFpbiBsZW5ndGg6IFwiICsgY2hhaW5MZW5ndGhcblxuLy8gQ29uZGl0aW9uYWwgY2hlY2sgdG8gYmxvY2sgb3IgYWxsb3cgYmFzZWQgb24gY2hhaW4gbGVuZ3RoXG5JRiBjaGFpbkxlbmd0aCA+IDUgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQ2VydGlmaWNhdGUgY2hhaW4gbGVuZ3RoIGV4Y2VlZHMgdGhlIGFsbG93ZWQgbGltaXQuXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIkNlcnRpZmljYXRlIGNoYWluIGxlbmd0aCBpcyB3aXRoaW4gdGhlIGFsbG93ZWQgbGltaXQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLlNlcnZlckNoYWluTGVuZ3RoIChNV0cuQ2VydGlmaWNhdGVWZXJpZmljYXRpb25TZXR0aW5nLCBNV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2VydGlmaWNhdGVzIGluIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW4uIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuQ2VydGlmaWNhdGVWZXJpZmljYXRpb25TZXR0aW5nYDogVGhlIHZlcmlmaWNhdGlvbiBzZXR0aW5ncyBmb3IgdGhlIGNlcnRpZmljYXRlLlxuMi4gYE1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3RgOiBUaGUgbGlzdCBvZiB0cnVzdGVkIGNlcnRpZmljYXRlIGF1dGhvcml0aWVzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHJldm9jYXRpb24gc3RhdHVzIG9mIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgb3IgY2VydGlmaWNhdGUgY2hhaW4gaXMga25vd24uIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIHRoZSBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gc2V0dGluZ1xuTVdHLkNlcnRpZmljYXRlVmVyaWZpY2F0aW9uU2V0dGluZyBjZXJ0VmVyaWZpY2F0aW9uU2V0dGluZyA9IE1XRy5DZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblNldHRpbmcoKVxuXG4vLyBJbml0aWFsaXplIHRoZSBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgbGlzdFxuTVdHLkNlcnRpZmljYXRlQXV0aG9yaXR5TGlzdCBjZXJ0QXV0aG9yaXR5TGlzdCA9IE1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QoKVxuXG4vLyBDYWxsIHRoZSBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgc2VydmVyIGNoYWluIHJldm9jYXRpb24gc3RhdHVzIGlzIGtub3duXG5CT09MRUFOIGlzUmV2b2NhdGlvblN0YXR1c0tub3duID0gTVdHLlNlcnZlckNoYWluUmV2b2NhdGlvblN0YXRpS25vd24oY2VydFZlcmlmaWNhdGlvblNldHRpbmcsIGNlcnRBdXRob3JpdHlMaXN0KVxuXG4vLyBUYWtlIGFjdGlvbiBiYXNlZCBvbiB0aGUgcmV2b2NhdGlvbiBzdGF0dXNcbklGIGlzUmV2b2NhdGlvblN0YXR1c0tub3duIFRIRU4ge1xuICAgIC8vIENlcnRpZmljYXRlIHJldm9jYXRpb24gc3RhdHVzIGlzIGtub3duLlxuICAgIC8vIEFkZGl0aW9uYWwgbG9naWMgaWYgcmV2b2NhdGlvbiBzdGF0dXMgaXMga25vd25cbn0gRUxTRSB7XG4gICAgLy8gQ2VydGlmaWNhdGUgcmV2b2NhdGlvbiBzdGF0dXMgaXMgbm90IGtub3duLlxuICAgIC8vIEFkZGl0aW9uYWwgbG9naWMgaWYgcmV2b2NhdGlvbiBzdGF0dXMgaXMgbm90IGtub3duXG59IiwgIm5hbWUiOiAiTVdHLlNlcnZlckNoYWluUmV2b2NhdGlvblN0YXRpS25vd24gKE1XRy5DZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblNldHRpbmcsIE1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSByZXZvY2F0aW9uIHN0YXR1cyBvZiB0aGUgc2VydmVyIGNlcnRpZmljYXRlIG9yIGNlcnRpZmljYXRlIGNoYWluIGNhbiBiZSBkZXRlcm1pbmVkLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5DZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblNldHRpbmdgOiBUaGUgdmVyaWZpY2F0aW9uIHNldHRpbmdzIGZvciB0aGUgY2VydGlmaWNhdGUuXG4yLiBgTVdHLkNlcnRpZmljYXRlQXV0aG9yaXR5TGlzdGA6IFRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGUgYXV0aG9yaXRpZXMuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHRoZSBzaWduYXR1cmUgYWxnb3JpdGhtcyB1c2VkIGluIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW4uIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuQ2VydGlmaWNhdGVWZXJpZmljYXRpb25TZXR0aW5nIGNlcnRWZXJpZmljYXRpb25TZXR0aW5nID0gLy8gSW5pdGlhbGl6ZSB3aXRoIGFwcHJvcHJpYXRlIHNldHRpbmdzXG5NV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0IGNlcnRBdXRob3JpdHlMaXN0ID0gLy8gSW5pdGlhbGl6ZSB3aXRoIGFwcHJvcHJpYXRlIENBIGxpc3RcblxuVkVDVE9SPFNUUklORz4gc2lnbmF0dXJlQWxnb3JpdGhtcyA9IE1XRy5TZXJ2ZXJDaGFpblNpZ25hdHVyZUFsZ29yaXRobXMoY2VydFZlcmlmaWNhdGlvblNldHRpbmcsIGNlcnRBdXRob3JpdHlMaXN0KVxuXG4vLyBTZXJ2ZXIgQ2hhaW4gU2lnbmF0dXJlIEFsZ29yaXRobXM6IFwiICsgc2lnbmF0dXJlQWxnb3JpdGhtcyIsICJuYW1lIjogIk1XRy5TZXJ2ZXJDaGFpblNpZ25hdHVyZUFsZ29yaXRobXMgKE1XRy5DZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblNldHRpbmcsIE1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWxnb3JpdGhtcyB1c2VkIGluIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgY2hhaW4gc2lnbmF0dXJlcy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5DZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblNldHRpbmdgOiBUaGUgdmVyaWZpY2F0aW9uIHNldHRpbmdzIGZvciB0aGUgY2VydGlmaWNhdGUuXG4yLiBgTVdHLkNlcnRpZmljYXRlQXV0aG9yaXR5TGlzdGA6IFRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGUgYXV0aG9yaXRpZXMuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZSIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBzZXJ2ZXIgaG9zdG5hbWUgYW5kIGNlcnRpZmljYXRlLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZSBzZXJ2ZXJJbmZvID0gTVdHLlNlcnZlckhvc3RBbmRDZXJ0KClcbi8vIFNlcnZlciBIb3N0bmFtZTogXCIgKyBzZXJ2ZXJJbmZvLkhvc3RuYW1lXG4vLyBTZXJ2ZXIgQ2VydGlmaWNhdGU6IFwiICsgc2VydmVySW5mby5DZXJ0aWZpY2F0ZSIsICJuYW1lIjogIk1XRy5TZXJ2ZXJIb3N0QW5kQ2VydCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBzZXJ2ZXIgaG9zdG5hbWUgYW5kIGNlcnRpZmljYXRlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG51bWJlciBvZiBiaXRzIHVzZWQgZm9yIHRoZSBrZXkgZXhjaGFuZ2Ugd2l0aCB0aGUgc2VydmVyLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIGtleUV4Y2hhbmdlQml0cyA9IE1XRy5TZXJ2ZXJLZXlFeENoYW5nZUJpdHMoKVxuXG5JRiBrZXlFeGNoYW5nZUJpdHMgPCAyMDQ4IFRIRU4ge1xuICAgIC8vIEtleSBleGNoYW5nZSBiaXRzIGFyZSBsZXNzIHRoYW4gMjA0OC4gQmxvY2tpbmcgY29ubmVjdGlvbi5cbiAgICBNV0cuQmxvY2soXCJJbnNlY3VyZSBrZXkgZXhjaGFuZ2U6IGxlc3MgdGhhbiAyMDQ4IGJpdHNcIilcbn0gRUxTRSB7XG4gICAgLy8gS2V5IGV4Y2hhbmdlIGJpdHMgYXJlIHNlY3VyZS5cbiAgICBNV0cuQWxsb3coXCJTZWN1cmUga2V5IGV4Y2hhbmdlXCIpXG59IiwgIm5hbWUiOiAiTVdHLlNlcnZlcktleUV4Q2hhbmdlQml0cyAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyB1c2VkIGZvciB0aGUga2V5IGV4Y2hhbmdlIHdpdGggdGhlIHNlcnZlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIk1XRy5Ib3N0QW5kQ2VydGlmaWNhdGUiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgc2VydmVyIGNlcnRpZmljYXRlLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZSBzZXJ2ZXJDZXJ0ID0gTVdHLlNlcnZlck9ubHlDZXJ0KClcblxuLy8gU2VydmVyIENlcnRpZmljYXRlOiBcIiArIHNlcnZlckNlcnRcblxuLy8gWW91IGNhbiBhZGQgYWRkaXRpb25hbCBsb2dpYyBoZXJlIHRvIGluc3BlY3QgdGhlIGNlcnRpZmljYXRlIGFuZCB0YWtlIGFjdGlvblxuLy8gRm9yIGV4YW1wbGUsIGJsb2NraW5nIHRoZSByZXF1ZXN0IGlmIHRoZSBjZXJ0aWZpY2F0ZSBpcyBub3QgdHJ1c3RlZFxuSUYgTk9UIHNlcnZlckNlcnQuaXNUcnVzdGVkIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIlVudHJ1c3RlZCBzZXJ2ZXIgY2VydGlmaWNhdGVcIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiU2VydmVyIGNlcnRpZmljYXRlIGlzIHRydXN0ZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuU2VydmVyT25seUNlcnQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc2VydmVyIGNlcnRpZmljYXRlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgY3VycmVudCBzZXJ2aWNlIGNhdGVnb3J5IGFuZCBhY3Rpdml0eSBhcmUgZm91bmQgaW4gdGhlIHByb3ZpZGVkIGxpc3QuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TVdHLlNlcnZpY2VDYXRlZ29yeUFuZEFjdGl2aXR5VHlwZT4gc2VydmljZUFjdGl2aXRpZXMgPSBbXCJleGFtcGxlX3NlcnZpY2VfYWN0aXZpdHlfbGlzdFwiXVxuXG5JRiBNV0cuU2VydmljZUFuZEFjdGl2aXR5Q29udGFpbmVkKHNlcnZpY2VBY3Rpdml0aWVzKSBUSEVOIHtcbiAgICAvLyBTZXJ2aWNlIGFuZCBBY3Rpdml0eSBhcmUgY29udGFpbmVkIGluIHRoZSBsaXN0LlxuICAgIE1XRy5BbGxvdyhcIlNlcnZpY2UgYW5kIEFjdGl2aXR5IENoZWNrIFBhc3NlZFwiKVxufSBFTFNFIHtcbiAgICAvLyBTZXJ2aWNlIGFuZCBBY3Rpdml0eSBhcmUgTk9UIGNvbnRhaW5lZCBpbiB0aGUgbGlzdC5cbiAgICBNV0cuQmxvY2soXCJTZXJ2aWNlIGFuZCBBY3Rpdml0eSBDaGVjayBGYWlsZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuU2VydmljZUFuZEFjdGl2aXR5Q29udGFpbmVkIChWRUNUT1I8TVdHLlNlcnZpY2VDYXRlZ29yeUFuZEFjdGl2aXR5VHlwZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IHNlcnZpY2UgY2F0ZWdvcnkgYW5kIGFjdGl2aXR5IGFyZSBwcmVzZW50IGluIHRoZSBwcm92aWRlZCBsaXN0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuU2VydmljZUNhdGVnb3J5QW5kQWN0aXZpdHlUeXBlPmA6IFRoZSBsaXN0IG9mIHNlcnZpY2Ugc3ViY2F0ZWdvcmllcyBhbmQgYWN0aXZpdGllcyB0byBjaGVjayBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgc2VydmljZSBhbmQgYWN0aXZpdHkgYXJlIGZvdW5kIGluIHRoZSBwcm92aWRlZCBsaXN0LiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE1XRy5TZXJ2aWNlR3JvdXBBbmRBY3Rpdml0eVR5cGU+IHNlcnZpY2VBbmRBY3Rpdml0eUxpc3QgPSBbXCJleGFtcGxlX3NlcnZpY2VfYW5kX2FjdGl2aXR5X2xpc3RcIl1cblxuSUYgTVdHLlNlcnZpY2VBbmRBY3Rpdml0eUNvbnRhaW5lZChzZXJ2aWNlQW5kQWN0aXZpdHlMaXN0KSBUSEVOIHtcbiAgICAvLyBTZXJ2aWNlIGFuZCBBY3Rpdml0eSBpcyBjb250YWluZWQgaW4gdGhlIGxpc3QuXG4gICAgTVdHLkFsbG93KFwiU2VydmljZSBhbmQgQWN0aXZpdHkgYWxsb3dlZFwiKVxufSBFTFNFIHtcbiAgICAvLyBTZXJ2aWNlIGFuZCBBY3Rpdml0eSBpcyBub3QgY29udGFpbmVkIGluIHRoZSBsaXN0LlxuICAgIE1XRy5CbG9jayhcIlNlcnZpY2UgYW5kIEFjdGl2aXR5IGJsb2NrZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuU2VydmljZUFuZEFjdGl2aXR5Q29udGFpbmVkIChWRUNUT1I8TVdHLlNlcnZpY2VHcm91cEFuZEFjdGl2aXR5VHlwZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IHNlcnZpY2UgYW5kIGFjdGl2aXR5IGFyZSBmb3VuZCBpbiB0aGUgcHJvdmlkZWQgbGlzdCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLlNlcnZpY2VHcm91cEFuZEFjdGl2aXR5VHlwZT5gOiBUaGUgbGlzdCBvZiBzZXJ2aWNlIGdyb3VwcyBhbmQgYWN0aXZpdGllcyB0byBjaGVjayBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgc2VydmljZSBzdWJjYXRlZ29yeSBhbmQgYWN0aXZpdHkgYXJlIGZvdW5kIGluIHRoZSBwcm92aWRlZCBsaXN0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgdmVjdG9yIG9mIE1XRy5TZXJ2aWNlU3ViQ2F0ZWdvcnlBbmRBY3Rpdml0eVR5cGVcblZFQ1RPUjxNV0cuU2VydmljZVN1YkNhdGVnb3J5QW5kQWN0aXZpdHlUeXBlPiBzZXJ2aWNlQWN0aXZpdGllcyA9IFtcIlNvY2lhbE1lZGlhXCIsIFwiU3RyZWFtaW5nTWVkaWFcIl1cblxuLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgcmVxdWVzdCdzIHNlcnZpY2UgYW5kIGFjdGl2aXR5IHR5cGUgaXMgY29udGFpbmVkIGluIHRoZSB2ZWN0b3JcbklGIE1XRy5TZXJ2aWNlQW5kQWN0aXZpdHlDb250YWluZWQoc2VydmljZUFjdGl2aXRpZXMpIFRIRU4ge1xuICAgIC8vIEJsb2NrIHRoZSByZXF1ZXN0IGlmIHRoZSBzZXJ2aWNlIGFuZCBhY3Rpdml0eSB0eXBlIGlzIGNvbnRhaW5lZCBpbiB0aGUgdmVjdG9yXG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIHRoaXMgc2VydmljZSBhbmQgYWN0aXZpdHkgdHlwZSBpcyBub3QgYWxsb3dlZC5cIilcbn0gRUxTRSB7XG4gICAgLy8gQWxsb3cgdGhlIHJlcXVlc3QgaWYgdGhlIHNlcnZpY2UgYW5kIGFjdGl2aXR5IHR5cGUgaXMgbm90IGNvbnRhaW5lZCBpbiB0aGUgdmVjdG9yXG4gICAgTVdHLkFsbG93KFwiU2VydmljZSBhbmQgYWN0aXZpdHkgdHlwZSBpcyBhbGxvd2VkLlwiKVxufSIsICJuYW1lIjogIk1XRy5TZXJ2aWNlQW5kQWN0aXZpdHlDb250YWluZWQgKFZFQ1RPUjxNV0cuU2VydmljZVN1YkNhdGVnb3J5QW5kQWN0aXZpdHlUeXBlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgc2VydmljZSBzdWJjYXRlZ29yeSBhbmQgYWN0aXZpdHkgYXJlIGluIHRoZSBwcm92aWRlZCBsaXN0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuU2VydmljZVN1YkNhdGVnb3J5QW5kQWN0aXZpdHlUeXBlPmA6IFRoZSBsaXN0IG9mIHNlcnZpY2Ugc3ViY2F0ZWdvcmllcyBhbmQgYWN0aXZpdGllcyB0byBjaGVjayBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgc2VydmljZSBpcyBjb250YWluZWQgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgc2VydmljZSBncm91cHMuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TVdHLkFwcGxpY2F0aW9uU2VydmljZUdyb3VwVHlwZT4gc2VydmljZUdyb3VwcyA9IFtcIkdyb3VwMVwiLCBcIkdyb3VwMlwiLCBcIkdyb3VwM1wiXVxuXG5JRiBNV0cuU2VydmljZUlzQ29udGFpbmVkSW5TZXJ2aWNlR3JvdXBzKHNlcnZpY2VHcm91cHMpIFRIRU4ge1xuICAgIC8vIFRoZSBzZXJ2aWNlIGlzIGNvbnRhaW5lZCBpbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBncm91cHMuXG4gICAgTVdHLkFsbG93KFwiU2VydmljZSBpcyBhbGxvd2VkIGJlY2F1c2UgaXQgaXMgaW4gdGhlIHNwZWNpZmllZCBncm91cHNcIilcbn0gRUxTRSB7XG4gICAgLy8gVGhlIHNlcnZpY2UgaXMgbm90IGNvbnRhaW5lZCBpbiBhbnkgb2YgdGhlIHNwZWNpZmllZCBncm91cHMuXG4gICAgTVdHLkJsb2NrKFwiU2VydmljZSBpcyBibG9ja2VkIGJlY2F1c2UgaXQgaXMgbm90IGluIHRoZSBzcGVjaWZpZWQgZ3JvdXBzXCIpXG59IiwgIm5hbWUiOiAiTVdHLlNlcnZpY2VJc0NvbnRhaW5lZEluU2VydmljZUdyb3VwcyAoVkVDVE9SPE1XRy5BcHBsaWNhdGlvblNlcnZpY2VHcm91cFR5cGU+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgY3VycmVudCBzZXJ2aWNlIGlzIHBhcnQgb2YgdGhlIHNwZWNpZmllZCBzZXJ2aWNlIGdyb3Vwcywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uU2VydmljZUdyb3VwVHlwZT5gOiBUaGUgbGlzdCBvZiBhcHBsaWNhdGlvbiBzZXJ2aWNlIGdyb3VwcyB0byBjaGVjayBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIFVSTCBtYXRjaGVzIGFueSBwYXR0ZXJuIGluIHRoZSBwcm92aWRlZCBTbWFydE1hdGNoTGlzdC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuVkVDVE9SPFNUUklORz4gc21hcnRNYXRjaExpc3QgPSBbXCJleGFtcGxlX3NtYXJ0X21hdGNoX2xpc3RcIl1cblxuSUYgTVdHLlNtYXJ0TWF0Y2goY3VycmVudFVybCwgc21hcnRNYXRjaExpc3QpIFRIRU4ge1xuICAgIC8vIFVSTCBtYXRjaGVzIHRoZSBzbWFydCBtYXRjaCBsaXN0XG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIHRoaXMgVVJMIGlzIGJsb2NrZWQgYXMgaXQgbWF0Y2hlcyBhIHJlc3RyaWN0ZWQgY2F0ZWdvcnkuXCIpXG59IEVMU0Uge1xuICAgIC8vIFVSTCBkb2VzIG5vdCBtYXRjaCB0aGUgc21hcnQgbWF0Y2ggbGlzdFxuICAgIE1XRy5BbGxvdyhcIlVSTCBpcyBhbGxvd2VkXCIpXG59IiwgIm5hbWUiOiAiTVdHLlNtYXJ0TWF0Y2ggKE1XRy5VUkwsIE1XRy5TbWFydE1hdGNoTGlzdCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHByb3ZpZGVkIFVSTCBtYXRjaGVzIGFueSBwYXR0ZXJuIGluIHRoZSBTbWFydE1hdGNoTGlzdCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVVJMYDogVGhlIFVSTCB0byBldmFsdWF0ZS5cbjIuIGBNV0cuU21hcnRNYXRjaExpc3RgOiBUaGUgbGlzdCBvZiBwYXR0ZXJucyB0byBtYXRjaCBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIFVSTCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgcGF0dGVybi4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuU1RSSU5HIHBhdHRlcm4gPSBcImV4YW1wbGUuY29tXCJcblxuSUYgTVdHLlNtYXJ0TWF0Y2goY3VycmVudFVybCwgcGF0dGVybikgVEhFTiB7XG4gICAgLy8gVGhlIFVSTCBtYXRjaGVzIHRoZSBwYXR0ZXJuOiBcIiArIHBhdHRlcm5cbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gdGhpcyBVUkwgaXMgYmxvY2tlZC5cIilcbn0gRUxTRSB7XG4gICAgLy8gVGhlIFVSTCBkb2VzIG5vdCBtYXRjaCB0aGUgcGF0dGVybjogXCIgKyBwYXR0ZXJuXG4gICAgTVdHLkFsbG93KFwiVVJMIGRvZXMgbm90IG1hdGNoIHRoZSBibG9jayBwYXR0ZXJuLlwiKVxufSIsICJuYW1lIjogIk1XRy5TbWFydE1hdGNoIChNV0cuVVJMLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBVUkwgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHBhdHRlcm4sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVSTGA6IFRoZSBVUkwgdG8gZXZhbHVhdGUuXG4yLiBgU1RSSU5HYDogVGhlIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdCB0aGUgVVJMLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBnaXZlbiBzbWFydC1tYXRjaCBwYXR0ZXJucyBtYXRjaGVzIHRoZSBnaXZlbiBVUkwuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8U1RSSU5HPiBhcHByb3ZlZENsb3VkQXBwcyA9IFwiKi5zaGFyZXBvaW50LmNvbS8qXCIsIFwibG9naW4ubWljcm9zb2Z0b25saW5lLmNvbS8qXCIsIFwiZHJpdmUuZ29vZ2xlLmNvbS8qXCJcbk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VUkxcbkJPT0xFQU4gaXNBcHByb3ZlZENsb3VkQXBwID0gTVdHLlNtYXJ0TWF0Y2goY3VycmVudFVybCwgYXBwcm92ZWRDbG91ZEFwcHMpXG4vLyBpc0FwcHJvdmVkQ2xvdWRBcHAgaXMgVFJVRSB3aGVuIHRoZSBVUkwgbWF0Y2hlcyBvbmUgb2YgdGhlIGFwcHJvdmVkIGFwcCBwYXR0ZXJucyIsICJuYW1lIjogIk1XRy5TbWFydE1hdGNoIChNV0cuVVJMLCBWRUNUT1I8U1RSSU5HPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBnaXZlbiBzbWFydC1tYXRjaCBwYXR0ZXJucyBtYXRjaGVzIHRoZSBVUkwsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVSTGA6IFRoZSBVUkwgdG8gZXZhbHVhdGUuXG4yLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgbGlzdCBvZiBzbWFydC1tYXRjaCBwYXR0ZXJucyB0byBtYXRjaCBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgc29ydGVkIE1PV0dMSSB2ZWN0b3JzIGdlbmVyYXRlZCBmcm9tIHRoZSBwcm92aWRlZCB1bnNvcnRlZCBKU09OIGFycmF5LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRXhhbXBsZSBKU09OIGFycmF5IGlucHV0XG5TVFJJTkcganNvbkFycmF5ID0gJ1t7XCJuYW1lXCI6XCJKb2huXCIsXCJhZ2VcIjozMH0se1wibmFtZVwiOlwiSmFuZVwiLFwiYWdlXCI6MjV9LHtcIm5hbWVcIjpcIkRvZVwiLFwiYWdlXCI6MzV9XSdcblxuLy8gQ2FsbCB0aGUgTVdHLlNvcnRKU09OQXJyYXkgZnVuY3Rpb24gdG8gc29ydCB0aGUgSlNPTiBhcnJheVxuU1RSSU5HIHNvcnRlZEpzb25BcnJheSA9IE1XRy5Tb3J0SlNPTkFycmF5KGpzb25BcnJheSlcblxuLy8gUHJpbnQgdGhlIHNvcnRlZCBKU09OIGFycmF5IHRvIHRoZSBjb25zb2xlXG4vLyBzb3J0ZWRKc29uQXJyYXkiLCAibmFtZSI6ICJNV0cuU29ydEpTT05BcnJheSAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgc29ydGVkIHZlY3RvcnMgZnJvbSB0aGUgcHJvdmlkZWQgdW5zb3J0ZWQgSlNPTiBhcnJheS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSB1bnNvcnRlZCBKU09OIGFycmF5IHRvIHNvcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIFNTTCBjbGllbnQgY2lwaGVyLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGNpcGhlciA9IE1XRy5TU0xDbGllbnRDaXBoZXIoKVxuXG5JRiBjaXBoZXIgPT0gXCJUTFNfQUVTXzEyOF9HQ01fU0hBMjU2XCIgVEhFTiB7XG4gICAgLy8gQ2xpZW50IGlzIHVzaW5nIGEgc2VjdXJlIGNpcGhlcjogKyBjaXBoZXJcbiAgICBNV0cuQWxsb3coXCJTZWN1cmVDaXBoZXJcIilcbn0gRUxTRSB7XG4gICAgLy8gQ2xpZW50IGlzIHVzaW5nIGFuIGluc2VjdXJlIGNpcGhlcjogKyBjaXBoZXJcbiAgICBNV0cuQmxvY2soXCJJbnNlY3VyZUNpcGhlclwiKVxufSIsICJuYW1lIjogIk1XRy5TU0xDbGllbnRDaXBoZXIgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgU1NMIGNsaWVudCBjaXBoZXIuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgU1NMIGNsaWVudCBjaXBoZXIga2V5IGV4Y2hhbmdlIGJpdHMuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIga2V5RXhjaGFuZ2VCaXRzID0gTVdHLlNTTENsaWVudENpcGhlcktleUV4Y2hhbmdlQml0cygpXG5cbklGIGtleUV4Y2hhbmdlQml0cyA8IDEyOCBUSEVOIHtcbiAgICAvLyBDb25uZWN0aW9uIGJsb2NrZWQgZHVlIHRvIHdlYWsgU1NMIGNpcGhlciBrZXkgZXhjaGFuZ2UgYml0c1xuICAgIE1XRy5CbG9jayhcIkNvbm5lY3Rpb24gYmxvY2tlZCBkdWUgdG8gd2VhayBTU0wgY2lwaGVyIGtleSBleGNoYW5nZSBiaXRzOiBcIiArIGtleUV4Y2hhbmdlQml0cylcbn0gRUxTRSB7XG4gICAgLy8gU1NMIGNpcGhlciBrZXkgZXhjaGFuZ2UgYml0cyBhcmUgc3Ryb25nIGVub3VnaFxuICAgIE1XRy5BbGxvdyhcIlNTTCBjaXBoZXIga2V5IGV4Y2hhbmdlIGJpdHMgYXJlIHN0cm9uZyBlbm91Z2g6IFwiICsga2V5RXhjaGFuZ2VCaXRzKVxufSIsICJuYW1lIjogIk1XRy5TU0xDbGllbnRDaXBoZXJLZXlFeGNoYW5nZUJpdHMgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgU1NMIGNsaWVudCBjaXBoZXIga2V5IGV4Y2hhbmdlIGJpdHMuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgU1NMIGNsaWVudCBwcm90b2NvbC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtaW5nIE1XRy5TU0xDbGllbnRQcm90b2NvbCgpIGlzIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBubyBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIHNvbWUgdmFsdWVcbi8vIFJlcGxhY2UgdGhlIGZvbGxvd2luZyBsaW5lIHdpdGggdGhlIGNvcnJlY3QgdXNhZ2Ugb2YgTVdHLlNTTENsaWVudFByb3RvY29sKClcbnJlc3VsdCA9IE1XRy5TU0xDbGllbnRQcm90b2NvbCgpXG5cbi8vIEV4YW1wbGUgb2YgdXNpbmcgdGhlIHJlc3VsdCBpbiBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljXG5JRiByZXN1bHQgVEhFTiB7XG4gICAgLy8gU1NMIENsaWVudCBQcm90b2NvbCBpcyBlbmFibGVkXG59IEVMU0Uge1xuICAgIC8vIFNTTCBDbGllbnQgUHJvdG9jb2wgaXMgbm90IGVuYWJsZWRcbn0iLCAibmFtZSI6ICJNV0cuU1NMQ2xpZW50UHJvdG9jb2wgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgU1NMIGNsaWVudCBwcm90b2NvbC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBzZW50IGJ5IHRoZSB3ZWIgc2VydmVyIGFzIGEgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gU2lnbmF0dXJlOiBTVFJJTkcgTVdHLlNTTFNlcnZlckNlcnRpZmljYXRlQ2hhaW5cblNUUklORyBzZXJ2ZXJDZXJ0Q2hhaW4gPSBNV0cuU1NMU2VydmVyQ2VydGlmaWNhdGVDaGFpblxuSUYgc2VydmVyQ2VydENoYWluICE9IFwiXCIgVEhFTiB7XG4gICAgU1RSSU5HIGNlcnREYXRhRm9yTG9nID0gc2VydmVyQ2VydENoYWluXG59IiwgIm5hbWUiOiAiTVdHLlNTTFNlcnZlckNlcnRpZmljYXRlQ2hhaW4gKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY2VydGlmaWNhdGUgY2hhaW4gc2VudCBieSB0aGUgd2ViIHNlcnZlciBhcyBhIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBjaXBoZXIvYWxnb3JpdGhtcyBiZXR3ZWVuIHByb3h5IGFuZCBzZXJ2ZXIgKGUuZy4gRUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0KS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBjaXBoZXIgPSBNV0cuU1NMU2VydmVyQ2lwaGVyKClcbi8vIFRoZSBTU0wgc2VydmVyIGNpcGhlciBpczogXCIgKyBjaXBoZXJcblxuSUYgY2lwaGVyID09IFwiRUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0XCIgVEhFTiB7XG4gICAgLy8gVGhlIGNvbm5lY3Rpb24gaXMgdXNpbmcgYSBzdHJvbmcgY2lwaGVyLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgY29ubmVjdGlvbiBpcyBub3QgdXNpbmcgdGhlIHByZWZlcnJlZCBzdHJvbmcgY2lwaGVyLlxufSIsICJuYW1lIjogIk1XRy5TU0xTZXJ2ZXJDaXBoZXIgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBjaXBoZXIvYWxnb3JpdGhtcyBiZXR3ZWVuIHByb3h5IGFuZCBzZXJ2ZXIgKGUuZy4gRUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0KS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBTU0wgc2VydmVyIHByb3RvY29sLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHNzbFByb3RvY29sID0gTVdHLlNTTFNlcnZlclByb3RvY29sKClcblxuSUYgc3NsUHJvdG9jb2wgPT0gXCJUTFN2MS4yXCIgVEhFTiB7XG4gICAgLy8gVGhlIFNTTCBzZXJ2ZXIgcHJvdG9jb2wgaXMgVExTdjEuMlxufSBFTFNFIHtcbiAgICAvLyBUaGUgU1NMIHNlcnZlciBwcm90b2NvbCBpcyBub3QgVExTdjEuMiwgaXQgaXM6IFwiICsgc3NsUHJvdG9jb2xcbiAgICBNV0cuQmxvY2soXCJVbnN1cHBvcnRlZCBTU0wgcHJvdG9jb2w6IFwiICsgc3NsUHJvdG9jb2wpXG59IiwgIm5hbWUiOiAiTVdHLlNTTFNlcnZlclByb3RvY29sICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIFNTTCBzZXJ2ZXIgcHJvdG9jb2wuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgSFRUUCBzdGF0dXMgY29kZSBvZiB0aGUgZ2l2ZW4gcmVxdWVzdCBvciByZXNwb25zZS4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBjdXN0b21TdGF0dXNDb2RlID0gNDA0XG5NV0cuU2V0SFRUUFN0YXR1c0NvZGUoY3VzdG9tU3RhdHVzQ29kZSlcbi8vIEN1c3RvbSBzdGF0dXMgY29kZSBzZXQgdG8gNDA0IiwgIm5hbWUiOiAiTVdHLlN0YXR1c0NvZGUgKE1XRy5SZXF1ZXN0UmVzcG9uc2UpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIEhUVFAgc3RhdHVzIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiByZXF1ZXN0IG9yIHJlc3BvbnNlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlJlcXVlc3RSZXNwb25zZWA6IFRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlIG9iamVjdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcHJvYmFiaWxpdHkgb2YgdGhlIGJvZHkgYmVpbmcgYW4gYXVkaW8gb3IgdmlkZW8gc3RyZWFtLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIHByb2JhYmlsaXR5ID0gTVdHLlN0cmVhbVByb2JhYmlsaXR5KClcblxuSUYgcHJvYmFiaWxpdHkgPiAwLjUgVEhFTiB7XG4gICAgLy8gSGlnaCBwcm9iYWJpbGl0eSBkZXRlY3RlZDogXCIgKyBwcm9iYWJpbGl0eVxuICAgIE1XRy5CbG9jayhcIkhpZ2ggcHJvYmFiaWxpdHkgb2YgdW53YW50ZWQgY29udGVudFwiKVxufSBFTFNFIHtcbiAgICAvLyBMb3cgcHJvYmFiaWxpdHkgZGV0ZWN0ZWQ6IFwiICsgcHJvYmFiaWxpdHlcbiAgICBNV0cuQWxsb3coXCJMb3cgcHJvYmFiaWxpdHksIGFsbG93aW5nIHJlcXVlc3RcIilcbn0iLCAibmFtZSI6ICJNV0cuU3RyZWFtUHJvYmFiaWxpdHkgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgcHJvYmFiaWxpdHkgb2YgdGhlIGJvZHkgYmVpbmcgYW4gYXVkaW8gb3IgdmlkZW8gc3RyZWFtLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxTVFJJTkc+YCB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdCBJRC4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgSUQgb2YgdGhlIHN0cmluZyBsaXN0IHlvdSB3YW50IHRvIHJldHJpZXZlXG5TVFJJTkcgbGlzdElEID0gXCJleGFtcGxlX2xpc3RfaWRcIlxuXG4vLyBSZXRyaWV2ZSB0aGUgVkVDVE9SPFNUUklORz4gdXNpbmcgdGhlIE1XRy5TdHJpbmdMaXN0QnlJRCBmdW5jdGlvblxuVkVDVE9SPFNUUklORz4gdXJsTGlzdCA9IE1XRy5TdHJpbmdMaXN0QnlJRChsaXN0SUQpXG5cbi8vIEdldCB0aGUgY3VycmVudCBVUkxcbk1XRy5VUkwgY3VycmVudFVSTCA9IE1XRy5VcmwoKVxuXG4vLyBDaGVjayBpZiB0aGUgY3VycmVudCBVUkwgaXMgaW4gdGhlIHJldHJpZXZlZCBsaXN0XG5JRiBjdXJyZW50VVJMLlRvU3RyaW5nKCkgSU4gdXJsTGlzdCBUSEVOIHtcbiAgICAvLyBCbG9jayB0aGUgY29ubmVjdGlvbiBpZiB0aGUgVVJMIGlzIGluIHRoZSBsaXN0XG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIHRoaXMgVVJMIGlzIGJsb2NrZWQgYXMgaXQgaXMgaW4gdGhlIHJlc3RyaWN0ZWQgbGlzdC5cIilcbn0gRUxTRSB7XG4gICAgLy8gQWxsb3cgdGhlIGNvbm5lY3Rpb24gaWYgdGhlIFVSTCBpcyBub3QgaW4gdGhlIGxpc3RcbiAgICBNV0cuQWxsb3coXCJVUkwgaXMgbm90IGluIHRoZSByZXN0cmljdGVkIGxpc3QuXCIpXG59IiwgIm5hbWUiOiAiTVdHLlN0cmluZ0xpc3RCeUlEIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBWRUNUT1I8U1RSSU5HPmAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQgbGlzdCBJRC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBJRCBvZiB0aGUgc3RyaW5nIGxpc3QgdG8gcmV0cmlldmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxTVFJJTkc+YCB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdCBuYW1lLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgdGhlIGxpc3Qgb2Ygc3RyaW5ncyBieSBuYW1lXG5WRUNUT1I8U1RSSU5HPiBteUxpc3QgPSBNV0cuU3RyaW5nTGlzdEJ5TmFtZShcImV4YW1wbGVfbGlzdF9uYW1lXCIpXG5cbi8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgbGlzdCBhbmQgcHJpbnQgZWFjaCBzdHJpbmdcbkZPUiBFQUNIIFNUUklORyBpdGVtIElOIG15TGlzdCB7XG4gICAgLy8gaXRlbVxufSIsICJuYW1lIjogIk1XRy5TdHJpbmdMaXN0QnlOYW1lIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBWRUNUT1I8U1RSSU5HPmAgY29ycmVzcG9uZGluZyB0byB0aGUgc3BlY2lmaWVkIGxpc3QgbmFtZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSBzdHJpbmcgbGlzdCB0byByZXRyaWV2ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGEgYFZFQ1RPUjxTVFJJTkc+YCBsaXN0IHdpdGggdGhlIGdpdmVuIG5hbWUgZXhpc3RzLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGxpc3ROYW1lID0gXCJleGFtcGxlX2xpc3RcIlxuXG5JRiBNV0cuU3RyaW5nTGlzdEJ5TmFtZUV4aXN0cyhsaXN0TmFtZSkgVEhFTiB7XG4gICAgLy8gVGhlIGxpc3QgXCIgKyBsaXN0TmFtZSArIFwiIGV4aXN0cy5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIGxpc3QgXCIgKyBsaXN0TmFtZSArIFwiIGRvZXMgbm90IGV4aXN0LlxufSIsICJuYW1lIjogIk1XRy5TdHJpbmdMaXN0QnlOYW1lRXhpc3RzIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgYFZFQ1RPUjxTVFJJTkc+YCBsaXN0IHdpdGggdGhlIGdpdmVuIG5hbWUgZXhpc3RzLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSBzdHJpbmcgbGlzdCB0byBjaGVjayBmb3IuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBudW1lcmljYWwgcmVwdXRhdGlvbiByYXRpbmcgZm9yIHRoZSBjdXJyZW50IGZpbGUgYm9keSBmcm9tIHRoZSBUSUUgc2VydmVyLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlRJRUZpbGVSZXB1dGF0aW9uU2V0dGluZyByZXB1dGF0aW9uU2V0dGluZ1xuXG4vLyBBc3N1bWluZyB0aGVyZSdzIGEgZnVuY3Rpb24gdG8gZ2V0IHRoZSBmaWxlIHJlcHV0YXRpb24gc2V0dGluZ1xucmVwdXRhdGlvblNldHRpbmcgPSBNV0cuR2V0RmlsZVJlcHV0YXRpb25TZXR0aW5nKClcblxuSUYgcmVwdXRhdGlvblNldHRpbmcuSXNNYWxpY2lvdXMgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiRmlsZSBpcyBtYWxpY2lvdXNcIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiRmlsZSBpcyBzYWZlXCIpXG59IiwgIm5hbWUiOiAiTVdHLlRJRUZpbGVSZXB1dGF0aW9uIChNV0cuVElFRmlsZVJlcHV0YXRpb25TZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbnVtZXJpY2FsIHJhdGluZyBvZiB0aGUgZmlsZSdzIHJlcHV0YXRpb24gZnJvbSB0aGUgVElFIHNlcnZlciBmb3IgdGhlIGN1cnJlbnQgYm9keS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5USUVGaWxlUmVwdXRhdGlvblNldHRpbmdgOiBUaGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgcmV0cmlldmluZyB0aGUgZmlsZSByZXB1dGF0aW9uIGZyb20gdGhlIFRJRSBzZXJ2ZXIuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHRvdGFsIGFtb3VudCBvZiB0aW1lIHdhaXRlZCBmb3IgYSB0cmFuc2FjdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIEdldCB0aGUgdG90YWwgYW1vdW50IG9mIHRpbWUgd2FpdGVkIGZvciBhIHRyYW5zYWN0aW9uXG5OVU1CRVIgZXh0ZXJuYWxUaW1lID0gTVdHLlRpbWVGb3JFeHRlcm5hbHMoKVxuXG4vLyBUb3RhbCB0aW1lIHdhaXRlZCBmb3IgZXh0ZXJuYWxzOiBcIiArIGV4dGVybmFsVGltZVxuXG4vLyBJZiB0aGUgZXh0ZXJuYWwgdGltZSBleGNlZWRzIGEgY2VydGFpbiB0aHJlc2hvbGQsIGJsb2NrIHRoZSByZXF1ZXN0XG5JRiBleHRlcm5hbFRpbWUgPiA1MDAwIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIlJlcXVlc3QgYmxvY2tlZCBkdWUgdG8gZXhjZXNzaXZlIGV4dGVybmFsIHdhaXQgdGltZVwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJSZXF1ZXN0IGFsbG93ZWQgd2l0aCBhY2NlcHRhYmxlIGV4dGVybmFsIHdhaXQgdGltZVwiKVxufSIsICJuYW1lIjogIk1XRy5UaW1lRm9yRXh0ZXJuYWxzICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHRvdGFsIGFtb3VudCBvZiB0aW1lIHdhaXRlZCBmb3IgYSB0cmFuc2FjdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSB0b3RhbCBkdXJhdGlvbiBvZiB0aGUgdHJhbnNhY3Rpb24uIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgdHJhbnNhY3Rpb25UaW1lID0gTVdHLlRpbWVGb3JUcmFuc2FjdGlvbigpXG4vLyBUb3RhbCB0cmFuc2FjdGlvbiB0aW1lOiB0cmFuc2FjdGlvblRpbWUgbWlsbGlzZWNvbmRzIiwgIm5hbWUiOiAiTVdHLlRpbWVGb3JUcmFuc2FjdGlvbiAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSB0b3RhbCBkdXJhdGlvbiBvZiB0aGUgdHJhbnNhY3Rpb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxTZXR0aW5nIiwgImRlc2NyaXB0aW9uIjogIkNhc3RzIGFuIGBNV0cuQW50aW1hbHdhcmVTZXR0aW5nYCB0byBhIG1vcmUgZ2VuZXJhbCBgTVdHLkludGVybmFsU2V0dGluZ2AuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgTVdHLkFudGltYWx3YXJlU2V0dGluZ1xuTVdHLkFudGltYWx3YXJlU2V0dGluZyBhbnRpbWFsd2FyZVNldHRpbmcgPSBNV0cuVG9NV0dTZXR0aW5nKE1XRy5BbnRpbWFsd2FyZVNldHRpbmcpXG5cbi8vIENvbmZpZ3VyZSB0aGUgYW50aW1hbHdhcmUgc2V0dGluZyBhcyBuZWVkZWRcbmFudGltYWx3YXJlU2V0dGluZy5lbmFibGUgPSBUUlVFXG5hbnRpbWFsd2FyZVNldHRpbmcuc2NhbkxldmVsID0gXCJIaWdoXCJcbmFudGltYWx3YXJlU2V0dGluZy5hY3Rpb25PbkRldGVjdGlvbiA9IFwiQmxvY2tcIlxuXG4vLyBBcHBseSB0aGUgYW50aW1hbHdhcmUgc2V0dGluZ1xuTVdHLlNldEFudGltYWx3YXJlU2V0dGluZyhhbnRpbWFsd2FyZVNldHRpbmcpXG5cbi8vIEFudGltYWx3YXJlIHNldHRpbmcgYXBwbGllZCB3aXRoIGhpZ2ggc2NhbiBsZXZlbCBhbmQgYmxvY2sgYWN0aW9uLiIsICJuYW1lIjogIk1XRy5Ub01XR1NldHRpbmcgKE1XRy5BbnRpbWFsd2FyZVNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBNV0cuSW50ZXJuYWxTZXR0aW5nYCBlcXVpdmFsZW50IG9mIHRoZSBwcm92aWRlZCBzZXR0aW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkFudGltYWx3YXJlU2V0dGluZ2A6IFRoZSBzZXR0aW5nIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkludGVybmFsU2V0dGluZyIsICJkZXNjcmlwdGlvbiI6ICJDYXN0cyBhbiBgTVdHLkNsb3VkU3RvcmFnZUVuY3J5cHRpb25TZXR0aW5nYCB0byBhIG1vcmUgZ2VuZXJhbCBgTVdHLkludGVybmFsU2V0dGluZ2AuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgTVdHLkNsb3VkU3RvcmFnZUVuY3J5cHRpb25TdXBwb3J0U2V0dGluZ1xuTVdHLkNsb3VkU3RvcmFnZUVuY3J5cHRpb25TdXBwb3J0U2V0dGluZyBlbmNyeXB0aW9uU2V0dGluZyA9IE1XRy5DbG91ZFN0b3JhZ2VFbmNyeXB0aW9uU3VwcG9ydFNldHRpbmcoKVxuXG4vLyBDb252ZXJ0IHRoZSBNV0cuQ2xvdWRTdG9yYWdlRW5jcnlwdGlvblN1cHBvcnRTZXR0aW5nIHRvIGEgbW9yZSBnZW5lcmFsIE1XRy5JbnRlcm5hbFNldHRpbmdcbk1XRy5JbnRlcm5hbFNldHRpbmcgaW50ZXJuYWxTZXR0aW5nID0gTVdHLlRvTVdHU2V0dGluZyhlbmNyeXB0aW9uU2V0dGluZylcblxuLy8gVXNlIHRoZSBpbnRlcm5hbFNldHRpbmcgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZ1xuLy8gQ29udmVydGVkIHNldHRpbmc6IFwiICsgaW50ZXJuYWxTZXR0aW5nIiwgIm5hbWUiOiAiTVdHLlRvTVdHU2V0dGluZyAoTVdHLkNsb3VkU3RvcmFnZUVuY3J5cHRpb25TZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgTVdHLkludGVybmFsU2V0dGluZ2AgZXF1aXZhbGVudCBvZiB0aGUgcHJvdmlkZWQgc2V0dGluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5DbG91ZFN0b3JhZ2VFbmNyeXB0aW9uU2V0dGluZ2A6IFRoZSBzZXR0aW5nIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLkludGVybmFsU2V0dGluZyIsICJkZXNjcmlwdGlvbiI6ICJDYXN0cyBhbiBgTVdHLkNsb3VkU3RvcmFnZUVuY3J5cHRpb25TdXBwb3J0U2V0dGluZ2AgdG8gYSBtb3JlIGdlbmVyYWwgYE1XRy5JbnRlcm5hbFNldHRpbmdgLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLkNsb3VkU3RvcmFnZUVuY3J5cHRpb25TdXBwb3J0U2V0dGluZyBlbmNyeXB0aW9uU2V0dGluZ1xuLy8gQ29uZmlndXJlIHRoZSBlbmNyeXB0aW9uU2V0dGluZyBhcyBuZWVkZWRcbi8vIEZvciBleGFtcGxlLCB5b3UgbWlnaHQgc2V0IHNvbWUgcHJvcGVydGllcyBvbiB0aGUgZW5jcnlwdGlvblNldHRpbmcgb2JqZWN0IGhlcmVcblxuLy8gRW5hYmxlIGNsb3VkIHN0b3JhZ2UgZW5jcnlwdGlvbiB3aXRoIHRoZSBjb25maWd1cmVkIHNldHRpbmdcbk1XRy5FbmFibGVDbG91ZFN0b3JhZ2VFbmNyeXB0aW9uKGVuY3J5cHRpb25TZXR0aW5nKVxuXG4vLyBDbG91ZCBzdG9yYWdlIGVuY3J5cHRpb24gaGFzIGJlZW4gZW5hYmxlZC4iLCAibmFtZSI6ICJNV0cuVG9NV0dTZXR0aW5nIChNV0cuQ2xvdWRTdG9yYWdlRW5jcnlwdGlvblN1cHBvcnRTZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgTVdHLkludGVybmFsU2V0dGluZ2AgZXF1aXZhbGVudCBvZiB0aGUgcHJvdmlkZWQgc2V0dGluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5DbG91ZFN0b3JhZ2VFbmNyeXB0aW9uU3VwcG9ydFNldHRpbmdgOiBUaGUgc2V0dGluZyB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIk1XRy5JbnRlcm5hbFNldHRpbmciLCAiZGVzY3JpcHRpb24iOiAiQ2FzdHMgYW4gYE1XRy5NQVREU2V0dGluZ2AgdG8gYSBtb3JlIGdlbmVyYWwgYE1XRy5JbnRlcm5hbFNldHRpbmdgLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGFuIGluc3RhbmNlIG9mIE1XRy5NQVREU2V0dGluZ1xuTVdHLk1BVERTZXR0aW5nIG1hdGRTZXR0aW5nXG5cbi8vIENvbmZpZ3VyZSB0aGUgTUFURCBzZXR0aW5nICh0aGlzIGlzIGp1c3QgYW4gZXhhbXBsZSwgYWN0dWFsIGNvbmZpZ3VyYXRpb24gbWF5IHZhcnkpXG5tYXRkU2V0dGluZy5zb21lUHJvcGVydHkgPSBcInNvbWVWYWx1ZVwiXG5cbi8vIENvbnZlcnQgdGhlIE1BVEQgc2V0dGluZyB0byBhIGdlbmVyaWMgTVdHIHNldHRpbmdcbk1XRy5JbnRlcm5hbFNldHRpbmcgZ2VuZXJpY1NldHRpbmcgPSBNV0cuVG9NV0dTZXR0aW5nKG1hdGRTZXR0aW5nKVxuXG4vLyBVc2UgdGhlIGdlbmVyaWMgc2V0dGluZyBpbiBzb21lIHdheVxuTVdHLkV4ZWN1dGVFdmVudChnZW5lcmljU2V0dGluZywgXCJTb21lRXZlbnRcIiwgTVdHLkludGVybmFsUGFyYW1ldGVyTGlzdCgpKVxuXG4vLyBBbGxvdyB0aGUgY29ubmVjdGlvblxuTVdHLkFsbG93KFwiY29uZmlndXJlTUFURCBjb21wbGV0ZWRcIikiLCAibmFtZSI6ICJNV0cuVG9NV0dTZXR0aW5nIChNV0cuTUFURFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBNV0cuSW50ZXJuYWxTZXR0aW5nYCBlcXVpdmFsZW50IG9mIHRoZSBwcm92aWRlZCBzZXR0aW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLk1BVERTZXR0aW5nYDogVGhlIHNldHRpbmcgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgYW4gYE1XRy5VUkxgIG9iamVjdCB0byBpdHMgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5TVFJJTkcgdXJsU3RyaW5nID0gTVdHLlRvU3RyaW5nKGN1cnJlbnRVcmwpXG4vLyBDdXJyZW50IFVSTDogXCIgKyB1cmxTdHJpbmciLCAibmFtZSI6ICJNV0cuVG9TdHJpbmcgKE1XRy5VUkwpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIFVSTCBzdHJpbmc7IHJldHVybnMgZW1wdHkgc3RyaW5nIHdoZW4gVVJMIG9iamVjdCBpcyBub3Qgc2V0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVSTGA6IFRoZSBVUkwgb2JqZWN0IHRvIGNvbnZlcnQgdG8gYSBzdHJpbmcuIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBoZWFkZXIgZnJvbSB0aGUgdHJhY2luZyBmaWxlIGFzIGEgSlNPTiBvYmplY3QuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBSZXRyaWV2ZSB0cmFjaW5nIGluZm9ybWF0aW9uXG5TVFJJTkcgdHJhY2VJbmZvID0gTVdHLlRyYWNpbmdJbmZvcm1hdGlvbigpXG5cbi8vIFRoZSBmb2xsb3dpbmcgbGluZSB3b3VsZCBwcmludCB0aGUgdHJhY2luZyBpbmZvcm1hdGlvbiB0byB0aGUgY29uc29sZSBmb3IgZGVidWdnaW5nXG4vLyB0cmFjZUluZm8iLCAibmFtZSI6ICJNV0cuVHJhY2luZ0luZm9ybWF0aW9uICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGhlYWRlciBmcm9tIHRoZSB0cmFjaW5nIGZpbGUgYXMgYSBKU09OIG9iamVjdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIk1XRy5VUkwiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgVVJMIG9mIHRoZSBjdXJyZW50IHRyaWdnZXIuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcbi8vIFRoZSBjdXJyZW50IFVSTCBpczogKyBjdXJyZW50VXJsIiwgIm5hbWUiOiAiTVdHLlVybCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBVUkwgb2YgdGhlIGN1cnJlbnQgdHJpZ2dlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIEdUSSBjYXRlZ29yaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgVVJMLCB1c2luZyB0aGUgcHJvdmlkZWQgaW50ZXJuYWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcgdXJsQ2F0ZWdvcml6YXRpb24gPSBNV0cuVXJsQ2F0ZWdvcmllcygpXG5WRUNUT1I8TVdHLlVybENhdGVnb3J5PiBjYXRlZ29yaWVzID0gdXJsQ2F0ZWdvcml6YXRpb24uR2V0Q2F0ZWdvcmllcyhNV0cuVXJsKCkpXG5cbklGIFwiTWFsaWNpb3VzIFNpdGVzXCIgSU4gY2F0ZWdvcmllcyBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gbWFsaWNpb3VzIHNpdGVzIGlzIGJsb2NrZWQuXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIlVSTCBpcyBzYWZlLlwiKVxufSIsICJuYW1lIjogIk1XRy5VcmxDYXRlZ29yaWVzIChNV0cuSW50ZXJuYWxTZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgdmVjdG9yIG9mIEdUSSBjYXRlZ29yaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgVVJMLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGUgVVJMIGNhdGVnb3JpemF0aW9uIHByb2Nlc3MuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgR1RJIGNhdGVnb3JpZXMgb2YgdGhlIGN1cnJlbnQgVVJMIHVzaW5nIHRoZSBwcm92aWRlZCBjYXRlZ29yaXphdGlvbiBzZXR0aW5ncy4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcgdXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nID0gTVdHLlVybENhdGVnb3JpZXMoKVxuVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gY2F0ZWdvcmllcyA9IHVybENhdGVnb3JpemF0aW9uU2V0dGluZy5HZXRDYXRlZ29yaWVzKE1XRy5VcmwoKSlcblxuLy8gQ2hlY2sgaWYgdGhlIFVSTCBpcyBjYXRlZ29yaXplZCBhcyBcIk1hbGljaW91cyBTaXRlc1wiXG5GT1IgRUFDSCBjYXRlZ29yeSBJTiBjYXRlZ29yaWVzIHtcbiAgICBJRiBjYXRlZ29yeS5HZXROYW1lKCkgPT0gXCJNYWxpY2lvdXMgU2l0ZXNcIiBUSEVOIHtcbiAgICAgICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIG1hbGljaW91cyBzaXRlcyBpcyBibG9ja2VkLlwiKVxuICAgIH1cbn1cblxuLy8gSWYgbm8gbWFsaWNpb3VzIGNhdGVnb3J5IGlzIGZvdW5kLCBhbGxvdyB0aGUgcmVxdWVzdFxuTVdHLkFsbG93KFwiVVJMIGlzIHNhZmUuXCIpIiwgIm5hbWUiOiAiTVdHLlVybENhdGVnb3JpZXMgKE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgR1RJIGNhdGVnb3JpZXMgZm9yIHRoZSBnaXZlbiBVUkwuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nYDogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIFVSTCBjYXRlZ29yaXphdGlvbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TVdHLlVybENhdGVnb3J5PiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBHVEkgY2F0ZWdvcmllcyBvZiB0aGUgc3BlY2lmaWVkIFVSTC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgdGhlIFVSTCBjYXRlZ29yaXphdGlvbiBzZXR0aW5nXG5NV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nIGNhdGVnb3JpemF0aW9uU2V0dGluZyA9IFtcIkRlZmF1bHRDYXRlZ29yaXphdGlvblwiXVxuXG4vLyBHZXQgdGhlIGN1cnJlbnQgVVJMIGFzIGEgU1RSSU5HXG5TVFJJTkcgdXJsID0gTVdHLlVybCgpLlRvU3RyaW5nKClcblxuLy8gSHlwb3RoZXRpY2FsIGZ1bmN0aW9uIGNhbGwgdG8gZ2V0IFVSTCBjYXRlZ29yaWVzXG5WRUNUT1I8TVdHLlVybENhdGVnb3J5PiBjYXRlZ29yaWVzID0gTVdHLlVybENhdGVnb3JpZXMoY2F0ZWdvcml6YXRpb25TZXR0aW5nLCB1cmwpXG5cbi8vIFVSTDogXCIgKyB1cmxcbi8vIENhdGVnb3JpZXM6IFwiICsgY2F0ZWdvcmllcy5Ub1N0cmluZygpXG5cbi8vIENoZWNrIGlmIHRoZSBVUkwgaXMgY2F0ZWdvcml6ZWQgYXMgXCJNYWxpY2lvdXNcIiBhbmQgYmxvY2sgaXQgaWYgaXQgaXNcbklGIFwiTWFsaWNpb3VzXCIgSU4gY2F0ZWdvcmllcyBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gbWFsaWNpb3VzIHNpdGVzIGlzIGJsb2NrZWQuXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIlVSTCBpcyBhbGxvd2VkLlwiKVxufSIsICJuYW1lIjogIk1XRy5VcmxDYXRlZ29yaWVzIChNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgR1RJIGNhdGVnb3JpZXMgb2YgdGhlIHNwZWNpZmllZCBVUkwuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nYDogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIFVSTCBjYXRlZ29yaXphdGlvbi5cbjIuIGBTVFJJTkdgOiBUaGUgVVJMIHRvIGNhdGVnb3JpemUuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgbGFzdCBVUkwgY2F0ZWdvcml6YXRpb24gcmVxdWVzdCB3YXMgc2VudCB0byB0aGUgY2xvdWQuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVXJsIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcbk1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcgdXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nXG5cbi8vIFBlcmZvcm0gdGhlIFVSTCBjYXRlZ29yaXphdGlvbiBjbG91ZCBsb29rdXBcbk1XRy5VcmxDYXRlZ29yaXphdGlvbkNsb3VkTG9va3VwRG9uZSh1cmxDYXRlZ29yaXphdGlvblNldHRpbmcpXG5cbi8vIENoZWNrIHRoZSBjYXRlZ29yaXphdGlvbiByZXN1bHQgYW5kIHRha2UgYWN0aW9uXG5JRiB1cmxDYXRlZ29yaXphdGlvblNldHRpbmcuSXNDYXRlZ29yaXplZCBUSEVOIHtcbiAgICAvLyBVUkwgaGFzIGJlZW4gY2F0ZWdvcml6ZWQuXG4gICAgLy8gQWRkaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB0aGUgY2F0ZWdvcml6YXRpb25cbn0gRUxTRSB7XG4gICAgLy8gVVJMIGNhdGVnb3JpemF0aW9uIGZhaWxlZCBvciBpcyBub3QgY2F0ZWdvcml6ZWQuXG4gICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGNhdGVnb3JpemF0aW9uIGlzIG5vdCBkb25lXG59IiwgIm5hbWUiOiAiTVdHLlVybENhdGVnb3JpemF0aW9uQ2xvdWRMb29rdXBEb25lIChNV0cuSW50ZXJuYWxTZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgbGFzdCBVUkwgY2F0ZWdvcml6YXRpb24gcmVxdWVzdCB3YXMgc2VudCB0byB0aGUgY2xvdWQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGxhc3QgVVJMIGNhdGVnb3JpemF0aW9uIHJlcXVlc3Qgd2FzIHNlbnQgdG8gdGhlIGNsb3VkLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZyB1cmxDYXRlZ29yaXphdGlvblNldHRpbmcgPSBNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nKClcblxuLy8gUGVyZm9ybSB0aGUgVVJMIGNhdGVnb3JpemF0aW9uIGNsb3VkIGxvb2t1cFxuTVdHLlVybENhdGVnb3JpemF0aW9uQ2xvdWRMb29rdXBEb25lKHVybENhdGVnb3JpemF0aW9uU2V0dGluZylcblxuLy8gQ2hlY2sgdGhlIHJlc3VsdCBvZiB0aGUgVVJMIGNhdGVnb3JpemF0aW9uXG5JRiB1cmxDYXRlZ29yaXphdGlvblNldHRpbmcuSXNDYXRlZ29yaXplZCBUSEVOIHtcbiAgICBWRUNUT1I8TVdHLlVybENhdGVnb3J5PiBjYXRlZ29yaWVzID0gdXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nLkdldENhdGVnb3JpZXMoKVxuICAgIFxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgY2F0ZWdvcmllcyBhbmQgcGVyZm9ybSBhY3Rpb25zIGJhc2VkIG9uIHRoZSBjYXRlZ29yeVxuICAgIEZPUiBFQUNIIGNhdGVnb3J5IElOIGNhdGVnb3JpZXMge1xuICAgICAgICAvLyBDYXRlZ29yeTogXCIgKyBjYXRlZ29yeS5HZXROYW1lKClcbiAgICAgICAgXG4gICAgICAgIC8vIEV4YW1wbGUgYWN0aW9uOiBCbG9jayBpZiB0aGUgY2F0ZWdvcnkgaXMgXCJNYWxpY2lvdXNcIlxuICAgICAgICBJRiBjYXRlZ29yeS5HZXROYW1lKCkgPT0gXCJNYWxpY2lvdXNcIiBUSEVOIHtcbiAgICAgICAgICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byBtYWxpY2lvdXMgc2l0ZXMgaXMgYmxvY2tlZC5cIilcbiAgICAgICAgfVxuICAgIH1cbn0gRUxTRSB7XG4gICAgLy8gVVJMIGNhdGVnb3JpemF0aW9uIGZhaWxlZCBvciBubyBjYXRlZ29yaWVzIGZvdW5kLlxufSIsICJuYW1lIjogIk1XRy5VcmxDYXRlZ29yaXphdGlvbkNsb3VkTG9va3VwRG9uZSAoTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGxhc3QgVVJMIGNhdGVnb3JpemF0aW9uIHJlcXVlc3Qgd2FzIHNlbnQgdG8gdGhlIGNsb3VkLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmdgOiBUaGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgVVJMIGNhdGVnb3JpemF0aW9uLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgYSBHVEkgY2xvdWQgbG9va3VwIGRldGVybWluZWQgdGhlIFVSTCByYXRpbmcgcmVzdWx0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGFuIGludGVybmFsIHNldHRpbmcgZm9yIFVSTCBjYXRlZ29yaXphdGlvbiBieSBjbG91ZCBsb29rdXBcbk1XRy5JbnRlcm5hbFNldHRpbmcgdXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nID0gTVdHLlVybENhdGVnb3JpemVkQnlDbG91ZExvb2t1cCgpXG5cbi8vIEV4ZWN1dGUgdGhlIFVSTCBjYXRlZ29yaXphdGlvblxuTVdHLkV4ZWN1dGVFdmVudCh1cmxDYXRlZ29yaXphdGlvblNldHRpbmcsIFwiQ2F0ZWdvcml6ZVVSTFwiKVxuXG4vLyBSZXRyaWV2ZSB0aGUgVVJMIG9iamVjdFxuTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5cbi8vIENoZWNrIHRoZSBjYXRlZ29yeSBvZiB0aGUgVVJMXG5TVFJJTkcgdXJsQ2F0ZWdvcnkgPSBjdXJyZW50VXJsLkNhdGVnb3J5XG5cbi8vIFVSTCBDYXRlZ29yeTogXCIgKyB1cmxDYXRlZ29yeVxuLy8gQmxvY2sgb3IgYWxsb3cgYmFzZWQgb24gdGhlIGNhdGVnb3J5XG5JRiB1cmxDYXRlZ29yeSA9PSBcIk1hbGljaW91c1wiIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byBtYWxpY2lvdXMgc2l0ZXMgaXMgYmxvY2tlZC5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiVVJMIGlzIHNhZmUuXCIpXG59IiwgIm5hbWUiOiAiTVdHLlVybENhdGVnb3JpemVkQnlDbG91bmRMb29rdXAgKE1XRy5JbnRlcm5hbFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgR1RJIGNsb3VkIGxvb2t1cCBkZXRlcm1pbmVzIHRoZSByYXRpbmcgcmVzdWx0IG9mIHRoZSBVUkwsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgYSBHVEkgY2xvdWQgbG9va3VwIGRldGVybWluZWQgdGhlIFVSTCByYXRpbmcgcmVzdWx0LiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZyB1cmxDYXRlZ29yaXphdGlvblNldHRpbmcgPSAvLyBJbml0aWFsaXplIHdpdGggYXBwcm9wcmlhdGUgc2V0dGluZ3NcblxuSUYgTVdHLlVybENhdGVnb3JpemF0aW9uQ2xvdWRMb29rdXBEb25lKHVybENhdGVnb3JpemF0aW9uU2V0dGluZykgVEhFTiB7XG4gICAgLy8gVVJMIGNhdGVnb3JpemF0aW9uIHdhcyBkb25lIGJ5IGNsb3VkIGxvb2t1cC5cbn0gRUxTRSB7XG4gICAgLy8gVVJMIGNhdGVnb3JpemF0aW9uIHdhcyBub3QgZG9uZSBieSBjbG91ZCBsb29rdXAuXG59IiwgIm5hbWUiOiAiTVdHLlVybENhdGVnb3JpemVkQnlDbG91bmRMb29rdXAgKE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBVUkwncyByYXRpbmcgcmVzdWx0IHdhcyBkZXRlcm1pbmVkIGJ5IGEgR1RJIGNsb3VkIGxvb2t1cCwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nYDogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIFVSTCBjYXRlZ29yaXphdGlvbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBgR1RJLlVybENhdGVnb3JpZXNgIHZhbHVlIHdhcyBkZXRlcm1pbmVkIGJ5IHRoZSBEeW5hbWljIENvbnRlbnQgQ2xhc3NpZmllci4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcgdXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nID0gTVdHLlVybENhdGVnb3JpemVkQnlEQ0MoKVxuXG5JRiB1cmxDYXRlZ29yaXphdGlvblNldHRpbmcgVEhFTiB7XG4gICAgLy8gVVJMIGlzIGNhdGVnb3JpemVkIGJ5IERDQ1xuICAgIE1XRy5BbGxvdyhcIlVSTCBjYXRlZ29yaXplZCBieSBEQ0NcIilcbn0gRUxTRSB7XG4gICAgLy8gVVJMIGlzIG5vdCBjYXRlZ29yaXplZCBieSBEQ0NcbiAgICBNV0cuQmxvY2soXCJVUkwgbm90IGNhdGVnb3JpemVkIGJ5IERDQ1wiKVxufSIsICJuYW1lIjogIk1XRy5VcmxDYXRlZ29yaXplZEJ5RENDIChNV0cuSW50ZXJuYWxTZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgdmFsdWUgb2YgYEdUSS5VcmxDYXRlZ29yaWVzYCB3YXMgZGV0ZXJtaW5lZCBieSB0aGUgRHluYW1pYyBDb250ZW50IENsYXNzaWZpZXIsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGBHVEkuVXJsQ2F0ZWdvcmllc2AgdmFsdWUgd2FzIGRldGVybWluZWQgYnkgdGhlIER5bmFtaWMgQ29udGVudCBDbGFzc2lmaWVyLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZyBzZXR0aW5ncyA9IE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcoKVxuLy8gQ29uZmlndXJlIHRoZSBzZXR0aW5ncyBvYmplY3QgYXMgbmVlZGVkXG5zZXR0aW5ncy5zb21lUHJvcGVydHkgPSBzb21lVmFsdWVcblxuLy8gQXBwbHkgdGhlIHNldHRpbmdzXG5NV0cuU2V0SW50ZXJuYWxHVElTZXR0aW5ncyhzZXR0aW5ncylcblxuLy8gR1RJIHNldHRpbmdzIGhhdmUgYmVlbiBhcHBsaWVkLiIsICJuYW1lIjogIk1XRy5VcmxDYXRlZ29yaXplZEJ5RENDIChNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgYEdUSS5VcmxDYXRlZ29yaWVzYCB2YWx1ZSB3YXMgZGV0ZXJtaW5lZCBieSB0aGUgRHluYW1pYyBDb250ZW50IENsYXNzaWZpZXIsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBVUkwgY2F0ZWdvcml6YXRpb24uIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhIGZvcndhcmQgRE5TIGxvb2t1cCBkZXRlcm1pbmVkIHRoZSBVUkwgcmF0aW5nIHJlc3VsdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEdldCB0aGUgY3VycmVudCBVUkxcbk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuXG4vLyBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZ1xuTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZyB1cmxDYXRlZ29yaXphdGlvblNldHRpbmdcblxuLy8gU2V0IHRoZSBuZWNlc3NhcnkgcHJvcGVydGllcyBmb3IgdGhlIFVSTCBjYXRlZ29yaXphdGlvbiBzZXR0aW5nXG4vLyAoQXNzdW1pbmcgdGhlcmUgYXJlIHByb3BlcnRpZXMgdG8gc2V0LCB0aGlzIGlzIGp1c3QgYSBwbGFjZWhvbGRlcilcbi8vIHVybENhdGVnb3JpemF0aW9uU2V0dGluZy5zb21lUHJvcGVydHkgPSBzb21lVmFsdWVcblxuLy8gVXNlIHRoZSBNV0cuVXJsQ2F0ZWdvcml6ZWRCeUZvcndhcmRETlMgZnVuY3Rpb25cbk1XRy5JbnRlcm5hbFNldHRpbmcgZG5zQ2F0ZWdvcml6YXRpb24gPSBNV0cuVXJsQ2F0ZWdvcml6ZWRCeUZvcndhcmRETlModXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nKVxuXG4vLyBDaGVjayB0aGUgcmVzdWx0IG9mIHRoZSBETlMgY2F0ZWdvcml6YXRpb25cbklGIGRuc0NhdGVnb3JpemF0aW9uIFRIRU4ge1xuICAgIC8vIFVSTCBjYXRlZ29yaXplZCBieSBmb3J3YXJkIEROUzogXCIgKyBjdXJyZW50VXJsXG4gICAgLy8gQWxsb3cgdGhlIGNvbm5lY3Rpb25cbiAgICBNV0cuQWxsb3coXCJETlMgQ2F0ZWdvcml6YXRpb24gU3VjY2Vzc2Z1bFwiKVxufSBFTFNFIHtcbiAgICAvLyBVUkwgbm90IGNhdGVnb3JpemVkIGJ5IGZvcndhcmQgRE5TOiBcIiArIGN1cnJlbnRVcmxcbiAgICAvLyBCbG9jayB0aGUgY29ubmVjdGlvblxuICAgIE1XRy5CbG9jayhcIkROUyBDYXRlZ29yaXphdGlvbiBGYWlsZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuVXJsQ2F0ZWdvcml6ZWRCeUZvcndhcmRETlMgKE1XRy5JbnRlcm5hbFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgZm9yd2FyZCBETlMgbG9va3VwIGRldGVybWluZWQgdGhlIFVSTCByYXRpbmcgcmVzdWx0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFNldHRpbmdgOiBUaGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGEgZm9yd2FyZCBETlMgbG9va3VwIGRldGVybWluZWQgdGhlIFVSTCByYXRpbmcgcmVzdWx0LiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5NV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nIGNhdGVnb3JpemF0aW9uU2V0dGluZyA9IFtcImRlZmF1bHRfY2F0ZWdvcml6YXRpb25fc2V0dGluZ1wiXVxuXG4vLyBBc3N1bWluZyB0aGVyZSdzIGEgZnVuY3Rpb24gdG8gY2F0ZWdvcml6ZSB0aGUgVVJMXG5WRUNUT1I8TVdHLlVybENhdGVnb3J5PiBjYXRlZ29yaWVzID0gTVdHLkNhdGVnb3JpemVVcmwoY3VycmVudFVybCwgY2F0ZWdvcml6YXRpb25TZXR0aW5nKVxuXG4vLyBDaGVjayBpZiB0aGUgVVJMIGZhbGxzIHVuZGVyIGEgc3BlY2lmaWMgY2F0ZWdvcnlcbklGIFwiTWFsaWNpb3VzXCIgSU4gY2F0ZWdvcmllcyBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gbWFsaWNpb3VzIHNpdGVzIGlzIGJsb2NrZWQuXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIlVSTCBpcyBzYWZlLlwiKVxufSIsICJuYW1lIjogIk1XRy5VcmxDYXRlZ29yaXplZEJ5Rm9yd2FyZEROUyAoTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgYSBmb3J3YXJkIEROUyBsb29rdXAgZGV0ZXJtaW5lZCB0aGUgVVJMIHJhdGluZyByZXN1bHQsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBVUkwgY2F0ZWdvcml6YXRpb24uIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhIHJldmVyc2UgRE5TIGxvb2t1cCBkZXRlcm1pbmVkIHRoZSBVUkwgcmF0aW5nIHJlc3VsdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgaW50ZXJuYWwgc2V0dGluZyBmb3IgVVJMIGNhdGVnb3JpemF0aW9uIGJ5IHJldmVyc2UgRE5TXG5NV0cuSW50ZXJuYWxTZXR0aW5nIHJldmVyc2VETlNTZXR0aW5nID0gTVdHLlVybENhdGVnb3JpemVkQnlSZXZlcnNlRE5TXG5cbi8vIEV4ZWN1dGUgdGhlIGludGVybmFsIHNldHRpbmdcbk1XRy5FeGVjdXRlRXZlbnQocmV2ZXJzZUROU1NldHRpbmcpXG5cbi8vIFJldHJpZXZlIHRoZSBjYXRlZ29yaXplZCBVUkxcbk1XRy5VUkwgY2F0ZWdvcml6ZWRVcmwgPSBNV0cuVXJsKClcblxuLy8gQ2hlY2sgaWYgdGhlIFVSTCBoYXMgYmVlbiBjYXRlZ29yaXplZCBieSByZXZlcnNlIEROU1xuSUYgKGNhdGVnb3JpemVkVXJsLklzQ2F0ZWdvcml6ZWRCeVJldmVyc2VETlMoKSkgVEhFTiB7XG4gICAgLy8gUGVyZm9ybSBhY3Rpb25zIGJhc2VkIG9uIHRoZSBVUkwgY2F0ZWdvcml6YXRpb24gcmVzdWx0XG4gICAgLy8gVVJMIGNhdGVnb3JpemVkIGJ5IHJldmVyc2UgRE5TOiBcIiArIGNhdGVnb3JpemVkVXJsLlRvU3RyaW5nKClcbiAgICBNV0cuQWxsb3coXCJVUkxDYXRlZ29yaXplZEJ5UmV2ZXJzZUROU1wiKVxufSBFTFNFIHtcbiAgICAvLyBQZXJmb3JtIGFsdGVybmF0aXZlIGFjdGlvbnMgaWYgdGhlIFVSTCBpcyBub3QgY2F0ZWdvcml6ZWQgYnkgcmV2ZXJzZSBETlNcbiAgICAvLyBVUkwgbm90IGNhdGVnb3JpemVkIGJ5IHJldmVyc2UgRE5TOiBcIiArIGNhdGVnb3JpemVkVXJsLlRvU3RyaW5nKClcbiAgICBNV0cuQmxvY2soXCJVUkxOb3RDYXRlZ29yaXplZEJ5UmV2ZXJzZUROU1wiKVxufSIsICJuYW1lIjogIk1XRy5VcmxDYXRlZ29yaXplZEJ5UmV2ZXJzZUROUyAoTVdHLkludGVybmFsU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgYSByZXZlcnNlIEROUyBsb29rdXAgZGV0ZXJtaW5lcyB0aGUgcmF0aW5nIG9mIHRoZSBVUkwsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgYSByZXZlcnNlIEROUyBsb29rdXAgZGV0ZXJtaW5lZCB0aGUgVVJMIHJhdGluZyByZXN1bHQuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nIHVybENhdGVnb3JpemF0aW9uID0gTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZygpXG5NV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblxuSUYgdXJsQ2F0ZWdvcml6YXRpb24uR2V0Q2F0ZWdvcnkoY3VycmVudFVybCkgPT0gXCJTb2NpYWwgTWVkaWFcIiBUSEVOIHtcbiAgICAvLyBCbG9ja2luZyBhY2Nlc3MgdG8gc29jaWFsIG1lZGlhIHNpdGVzXG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIHNvY2lhbCBtZWRpYSBzaXRlcyBpcyBub3QgYWxsb3dlZC5cIilcbn0iLCAibmFtZSI6ICJNV0cuVXJsQ2F0ZWdvcml6ZWRCeVJldmVyc2VETlMgKE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgcmV2ZXJzZSBETlMgbG9va3VwIGRldGVybWluZWQgdGhlIFVSTCByYXRpbmcgcmVzdWx0LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmdgOiBUaGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgVVJMIGNhdGVnb3JpemF0aW9uLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBnZW9sb2NhdGlvbiBvZiB0aGUgY3VycmVudCBVUkwuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblNUUklORyBnZW9sb2NhdGlvbiA9IE1XRy5VcmxHZW9sb2NhdGlvbihjdXJyZW50VXJsKVxuLy8gR2VvbG9jYXRpb24gb2YgdGhlIFVSTDogXCIgKyBnZW9sb2NhdGlvbiIsICJuYW1lIjogIk1XRy5VcmxHZW9sb2NhdGlvbiAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBnZW9sb2NhdGlvbiBzdHJpbmcgb2YgdGhlIFVSTC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBnZW9sb2NhdGlvbiBvZiB0aGUgVVJMIHVzaW5nIHRoZSBwcm92aWRlZCBpbnRlcm5hbCBjb25maWd1cmF0aW9uIHNldHRpbmdzLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5TVFJJTkcgdXJsU3RyaW5nID0gY3VycmVudFVybC5Ub1N0cmluZygpXG5cbi8vIEFzc3VtaW5nIHRoZXJlIGlzIGEgZnVuY3Rpb24gdG8gZ2V0IGdlb2xvY2F0aW9uIGluZm9ybWF0aW9uXG4vLyBUaGlzIGlzIGEgcGxhY2Vob2xkZXIgYXMgdGhlIGFjdHVhbCBmdW5jdGlvbiBpcyBub3QgcHJvdmlkZWRcbi8vIE1BUDxTVFJJTkc+PFNUUklORz4gZ2VvbG9jYXRpb25JbmZvID0gTVdHLkdldFVybEdlb2xvY2F0aW9uKHVybFN0cmluZylcblxuLy8gRXhhbXBsZSBvZiBob3cgeW91IG1pZ2h0IHVzZSB0aGUgZ2VvbG9jYXRpb24gaW5mb3JtYXRpb25cbi8vIElGIGdlb2xvY2F0aW9uSW5mb1tcImNvdW50cnlcIl0gPT0gXCJVU1wiIFRIRU4ge1xuLy8gICAgIC8vIEFjY2Vzc2luZyBhIFVSTCBmcm9tIHRoZSBVbml0ZWQgU3RhdGVzOiBcIiArIHVybFN0cmluZ1xuLy8gfSBFTFNFIHtcbi8vICAgICAvLyBBY2Nlc3NpbmcgYSBVUkwgZnJvbSBvdXRzaWRlIHRoZSBVbml0ZWQgU3RhdGVzOiBcIiArIHVybFN0cmluZ1xuLy8gfSIsICJuYW1lIjogIk1XRy5VcmxHZW9sb2NhdGlvbiAoTVdHLkludGVybmFsU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZ2VvbG9jYXRpb24gc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGUgVVJMLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHJlcXVpcmVkIHRvIG9idGFpbiB0aGUgZ2VvbG9jYXRpb24gb2YgdGhlIFVSTC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBnZW9sb2NhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgVVJMIHVzaW5nIHRoZSBnaXZlbiBjYXRlZ29yaXphdGlvbiBzZXR0aW5ncy4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcgZ2VvU2V0dGluZyA9IFtcIkRlZmF1bHRDYXRlZ29yaXphdGlvblwiXVxuU1RSSU5HIHVybEdlbyA9IE1XRy5VcmxHZW9sb2NhdGlvbihnZW9TZXR0aW5nKVxuXG5JRiB1cmxHZW8gPT0gXCJSVVwiIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBibG9ja2VkIGR1ZSB0byBVUkwgZ2VvbG9jYXRpb25cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiVVJMIGdlb2xvY2F0aW9uIGFsbG93ZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuVXJsR2VvbG9jYXRpb24gKE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIFVSTCBnZW9sb2NhdGlvbiByZXN1bHQgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGNvbnRleHQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nYDogVGhlIGNhdGVnb3JpemF0aW9uIGFuZCBnZW9sb2NhdGlvbiBjb25maWd1cmF0aW9uLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBnZW9sb2NhdGlvbiBvZiB0aGUgZ2l2ZW4gVVJMLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGEgVVJMIGNhdGVnb3JpemF0aW9uIHNldHRpbmcgb2JqZWN0XG5NV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nIHVybENhdGVnb3JpemF0aW9uU2V0dGluZyA9IE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcoKVxuXG4vLyBHZXQgdGhlIGN1cnJlbnQgVVJMIGFzIGEgc3RyaW5nXG5TVFJJTkcgdXJsID0gTVdHLlVybCgpLlRvU3RyaW5nKClcblxuLy8gR2V0IHRoZSBnZW9sb2NhdGlvbiBvZiB0aGUgVVJMXG5TVFJJTkcgZ2VvbG9jYXRpb24gPSBNV0cuVXJsR2VvbG9jYXRpb24odXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nLCB1cmwpXG5cbi8vIEdlb2xvY2F0aW9uIG9mIHRoZSBVUkw6IFwiICsgZ2VvbG9jYXRpb25cblxuLy8gRXhhbXBsZSBjb25kaXRpb24gYmFzZWQgb24gZ2VvbG9jYXRpb25cbklGIGdlb2xvY2F0aW9uID09IFwiVVNcIiBUSEVOIHtcbiAgICAvLyBBY2Nlc3NpbmcgYSBVUy1iYXNlZCBVUkxcbiAgICBNV0cuQWxsb3coXCJVUy1iYXNlZCBVUkwgYWxsb3dlZFwiKVxufSBFTFNFIHtcbiAgICAvLyBBY2Nlc3NpbmcgYSBub24tVVMtYmFzZWQgVVJMXG4gICAgTVdHLkJsb2NrKFwiTm9uLVVTLWJhc2VkIFVSTCBibG9ja2VkXCIpXG59IiwgIm5hbWUiOiAiTVdHLlVybEdlb2xvY2F0aW9uIChNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGdlb2xvY2F0aW9uIHN0cmluZyBvZiB0aGUgZ2l2ZW4gVVJMLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBVUkwgY2F0ZWdvcml6YXRpb24uXG4yLiBgU1RSSU5HYDogVGhlIFVSTC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZ2VvbG9jYXRpb24gb2YgdGhlIGdpdmVuIFVSTC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEdldCB0aGUgY3VycmVudCBVUkxcbk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuXG4vLyBHZXQgdGhlIGdlb2xvY2F0aW9uIG9mIHRoZSBjdXJyZW50IFVSTFxuU1RSSU5HIGdlb2xvY2F0aW9uID0gTVdHLlVybEdlb2xvY2F0aW9uKGN1cnJlbnRVcmwpXG5cbi8vIEdlb2xvY2F0aW9uOiBcIiArIGdlb2xvY2F0aW9uXG4vLyBDaGVjayBpZiB0aGUgZ2VvbG9jYXRpb24gaXMgZnJvbSBhIHJlc3RyaWN0ZWQgY291bnRyeVxuSUYgZ2VvbG9jYXRpb24gPT0gXCJyZXN0cmljdGVkX2NvdW50cnlcIiBUSEVOIHtcbiAgICAvLyBCbG9jayBhY2Nlc3MgaWYgdGhlIGdlb2xvY2F0aW9uIGlzIGZyb20gYSByZXN0cmljdGVkIGNvdW50cnlcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgZnJvbSB0aGlzIGNvdW50cnkgaXMgcmVzdHJpY3RlZC5cIilcbn0gRUxTRSB7XG4gICAgLy8gQWxsb3cgYWNjZXNzIGlmIHRoZSBnZW9sb2NhdGlvbiBjaGVjayBwYXNzZXNcbiAgICBNV0cuQWxsb3coXCJHZW9sb2NhdGlvbiBjaGVjayBwYXNzZWQuXCIpXG59IiwgIm5hbWUiOiAiTVdHLlVybEdlb2xvY2F0aW9uIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGdlb2dyYXBoaWMgbG9jYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBVUkwgYXMgYSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgVVJMLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIFVSTCBpcyBjYXRlZ29yaXplZCBhcyBoaWdoIHJpc2suIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuSW50ZXJuYWxTZXR0aW5nIGludGVybmFsU2V0dGluZyA9IC8vIEluaXRpYWxpemUgd2l0aCBhcHByb3ByaWF0ZSBpbnRlcm5hbCBzZXR0aW5nc1xuXG5JRiBNV0cuVXJsSGFzSGlnaFJpc2soaW50ZXJuYWxTZXR0aW5nKSBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gdGhpcyBVUkwgaXMgYmxvY2tlZCBkdWUgdG8gaGlnaCByaXNrLlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJVUkwgaXMgc2FmZS5cIilcbn0iLCAibmFtZSI6ICJNV0cuVXJsSGFzSGlnaFJpc2sgKE1XRy5JbnRlcm5hbFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBVUkwgaXMgZGV0ZXJtaW5lZCB0byBiZSBvZiBoaWdoIHJpc2ssIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBVUkwgcmlzayBhc3Nlc3NtZW50LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIFVSTCBpcyBjYXRlZ29yaXplZCBhcyBoaWdoIHJpc2suIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nIHVybENhdGVnb3JpemF0aW9uU2V0dGluZyA9IE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcoKVxuXG5JRiBNV0cuVXJsSGFzSGlnaFJpc2sodXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nKSBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gaGlnaC1yaXNrIFVSTHMgaXMgbm90IGFsbG93ZWQuXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIlVSTCBpcyBub3QgaGlnaC1yaXNrLlwiKVxufSIsICJuYW1lIjogIk1XRy5VcmxIYXNIaWdoUmlzayAoTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIFVSTCBpcyBkZXRlcm1pbmVkIHRvIGJlIG9mIGhpZ2ggcmlzaywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nYDogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIFVSTCBjYXRlZ29yaXphdGlvbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBVUkwgaXMgY2F0ZWdvcml6ZWQgYXMgbWVkaXVtIHJpc2suIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuSW50ZXJuYWxTZXR0aW5nIHNldHRpbmdzID0gLy8gSW5pdGlhbGl6ZSBvciBvYnRhaW4gdGhlIHNldHRpbmdzIGFzIG5lZWRlZFxuXG5JRiBNV0cuVXJsSGFzTWVkaXVtUmlzayhzZXR0aW5ncykgVEhFTiB7XG4gICAgLy8gVGhlIFVSTCBpcyBjbGFzc2lmaWVkIGFzIG1lZGl1bSByaXNrLlxuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBibG9ja2VkIGR1ZSB0byBtZWRpdW0gcmlzayBjbGFzc2lmaWNhdGlvbi5cIilcbn0gRUxTRSB7XG4gICAgLy8gVGhlIFVSTCBpcyBub3QgY2xhc3NpZmllZCBhcyBtZWRpdW0gcmlzay5cbiAgICBNV0cuQWxsb3coXCJVUkwgcGFzc2VkIG1lZGl1bSByaXNrIGNoZWNrLlwiKVxufSIsICJuYW1lIjogIk1XRy5VcmxIYXNNZWRpdW1SaXNrIChNV0cuSW50ZXJuYWxTZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgVVJMIGlzIGRldGVybWluZWQgdG8gYmUgb2YgbWVkaXVtIHJpc2ssIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIFVSTCBpcyBjYXRlZ29yaXplZCBhcyBtZWRpdW0gcmlzay4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcgY2F0ZWdvcml6YXRpb25TZXR0aW5nID0gLy8gSW5pdGlhbGl6ZSB3aXRoIGFwcHJvcHJpYXRlIHNldHRpbmdzXG5cbklGIE1XRy5VcmxIYXNNZWRpdW1SaXNrKGNhdGVnb3JpemF0aW9uU2V0dGluZykgVEhFTiB7XG4gICAgLy8gVGhlIFVSTCBoYXMgYSBtZWRpdW0gbGV2ZWwgb2Ygcmlzay5cbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gdGhpcyBVUkwgaXMgYmxvY2tlZCBkdWUgdG8gbWVkaXVtIHJpc2sgY2F0ZWdvcml6YXRpb24uXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBVUkwgZG9lcyBub3QgaGF2ZSBhIG1lZGl1bSBsZXZlbCBvZiByaXNrLlxuICAgIE1XRy5BbGxvdyhcIlVSTCBpcyBzYWZlIHRvIGFjY2Vzcy5cIilcbn0iLCAibmFtZSI6ICJNV0cuVXJsSGFzTWVkaXVtUmlzayAoTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGNhdGVnb3JpemVkIFVSTCBpcyBkZXRlcm1pbmVkIHRvIGhhdmUgYSBtZWRpdW0gbGV2ZWwgb2Ygcmlzay4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmdgOiBUaGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgVVJMIGNhdGVnb3JpemF0aW9uLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIFVSTCBpcyBjYXRlZ29yaXplZCBhcyBtaW5pbWFsIHJpc2suIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuSW50ZXJuYWxTZXR0aW5nIHNldHRpbmdzID0gLy8gSW5pdGlhbGl6ZSBvciBvYnRhaW4gdGhlIHNldHRpbmdzIGFzIG5lZWRlZFxuXG5JRiBNV0cuVXJsSGFzTWluaW1hbFJpc2soc2V0dGluZ3MpIFRIRU4ge1xuICAgIC8vIFRoZSBVUkwgcG9zZXMgbWluaW1hbCBzZWN1cml0eSByaXNrLlxuICAgIE1XRy5BbGxvdyhcIk1pbmltYWxSaXNrUnVsZVwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGUgVVJMIHBvc2VzIGEgcG90ZW50aWFsIHNlY3VyaXR5IHJpc2suXG4gICAgTVdHLkJsb2NrKFwiSGlnaFJpc2tVUkxcIilcbn0iLCAibmFtZSI6ICJNV0cuVXJsSGFzTWluaW1hbFJpc2sgKE1XRy5JbnRlcm5hbFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBhbmFseXplZCBVUkwgcG9zZXMgbWluaW1hbCBzZWN1cml0eSByaXNrLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIFVSTCBpcyBjYXRlZ29yaXplZCBhcyBtaW5pbWFsIHJpc2suIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBPYnRhaW4gdGhlIGN1cnJlbnQgVVJMXG5NV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblxuLy8gSW5pdGlhbGl6ZSBvciBvYnRhaW4gdGhlIFVSTCBjYXRlZ29yaXphdGlvbiBzZXR0aW5nc1xuTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZyBjYXRlZ29yaXphdGlvblNldHRpbmcgPSAvLyBZb3VyIGNhdGVnb3JpemF0aW9uIHNldHRpbmdzIGhlcmVcblxuLy8gQ2hlY2sgaWYgdGhlIFVSTCBoYXMgbWluaW1hbCByaXNrXG5JRiBNV0cuVXJsSGFzTWluaW1hbFJpc2soY2F0ZWdvcml6YXRpb25TZXR0aW5nKSBUSEVOIHtcbiAgICAvLyBVUkwgaGFzIG1pbmltYWwgcmlza1xuICAgIE1XRy5BbGxvdyhcIk1pbmltYWxSaXNrQ2hlY2tcIilcbn0gRUxTRSB7XG4gICAgLy8gVVJMIGRvZXMgbm90IGhhdmUgbWluaW1hbCByaXNrXG4gICAgTVdHLkJsb2NrKFwiSGlnaFJpc2tVUkxcIilcbn0iLCAibmFtZSI6ICJNV0cuVXJsSGFzTWluaW1hbFJpc2sgKE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBVUkwgaXMgY2F0ZWdvcml6ZWQgYXMgbWluaW1hbCByaXNrLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBVUkwgY2F0ZWdvcml6YXRpb24uIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgVVJMIGlzIGNhdGVnb3JpemVkIGFzIHVudmVyaWZpZWQgcmlzay4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5JbnRlcm5hbFNldHRpbmcgcmlza1NldHRpbmcgPSAvLyBJbml0aWFsaXplIG9yIG9idGFpbiB0aGUgYXBwcm9wcmlhdGUgTVdHLkludGVybmFsU2V0dGluZ1xuXG5JRiBNV0cuVXJsSGFzVW52ZXJpZmllZFJpc2socmlza1NldHRpbmcpIFRIRU4ge1xuICAgIC8vIFRoZSBVUkwgaGFzIGFuIHVudmVyaWZpZWQgcmlzay5cbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gdGhpcyBVUkwgaXMgYmxvY2tlZCBkdWUgdG8gdW52ZXJpZmllZCByaXNrLlwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGUgVVJMIGRvZXMgbm90IGhhdmUgYW4gdW52ZXJpZmllZCByaXNrLlxuICAgIE1XRy5BbGxvdyhcIlVSTCBpcyBzYWZlXCIpXG59IiwgIm5hbWUiOiAiTVdHLlVybEhhc1VudmVyaWZpZWRSaXNrIChNV0cuSW50ZXJuYWxTZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgVVJMIGlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBhbiB1bnZlcmlmaWVkIHJpc2suIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxTZXR0aW5nYDogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgVVJMIGlzIGNhdGVnb3JpemVkIGFzIHVudmVyaWZpZWQgcmlzay4iLCAiY29kZV9leGFtcGxlIjogIi8vIE9idGFpbiB0aGUgY3VycmVudCBVUkxcbk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuXG4vLyBJbml0aWFsaXplIHRoZSBVUkwgY2F0ZWdvcml6YXRpb24gc2V0dGluZ1xuTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZyBjYXRlZ29yaXphdGlvblNldHRpbmcgPSAvLyBJbml0aWFsaXplIG9yIG9idGFpbiB0aGUgY2F0ZWdvcml6YXRpb24gc2V0dGluZ1xuXG4vLyBDaGVjayBpZiB0aGUgVVJMIGhhcyBhbiB1bnZlcmlmaWVkIHJpc2tcbkJPT0xFQU4gaGFzVW52ZXJpZmllZFJpc2sgPSBNV0cuVXJsSGFzVW52ZXJpZmllZFJpc2soY2F0ZWdvcml6YXRpb25TZXR0aW5nKVxuXG4vLyBUYWtlIGFjdGlvbiBiYXNlZCBvbiB0aGUgcmlzayBzdGF0dXNcbklGIGhhc1VudmVyaWZpZWRSaXNrIFRIRU4ge1xuICAgIC8vIFRoZSBVUkwgaGFzIHVudmVyaWZpZWQgcmlzay5cbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gdGhpcyBVUkwgaXMgYmxvY2tlZCBkdWUgdG8gdW52ZXJpZmllZCByaXNrLlwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGUgVVJMIGlzIHNhZmUuXG4gICAgTVdHLkFsbG93KFwiVVJMIGlzIHNhZmVcIilcbn0iLCAibmFtZSI6ICJNV0cuVXJsSGFzVW52ZXJpZmllZFJpc2sgKE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBVUkwgaGFzIGFuIHVudmVyaWZpZWQgcmlzayBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGNhdGVnb3JpemF0aW9uIHNldHRpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nYDogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIFVSTCBjYXRlZ29yaXphdGlvbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgR1RJIHJlcHV0YXRpb24gc2NvcmUgb2YgdGhlIGN1cnJlbnQgVVJMLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5NV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nIHVybENhdGVnb3J5ID0gY3VycmVudFVybC5HZXRDYXRlZ29yaXphdGlvbigpXG5cbklGIHVybENhdGVnb3J5LklzTWFsaWNpb3VzKCkgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIG1hbGljaW91cyBzaXRlcyBpcyBibG9ja2VkLlwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJVUkwgaXMgc2FmZS5cIilcbn0iLCAibmFtZSI6ICJNV0cuVVJMUmVwdXRhdGlvbiAoTVdHLkludGVybmFsU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgR1RJIHJlcHV0YXRpb24gc2NvcmUgb2YgdGhlIGdpdmVuIFVSTCBhcyBhIG51bWVyaWNhbCB2YWx1ZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFNldHRpbmdgOiBUaGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgVVJMIHJlcHV0YXRpb24gbG9va3VwLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBHVEkgcmVwdXRhdGlvbiBzY29yZSBvZiB0aGUgY3VycmVudCBVUkwuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nIGNhdGVnb3JpemF0aW9uU2V0dGluZyA9IC8vIEluaXRpYWxpemUgeW91ciBjYXRlZ29yaXphdGlvbiBzZXR0aW5ncyBoZXJlXG5NV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblNUUklORyB1cmxTdHJpbmcgPSBjdXJyZW50VXJsLlRvU3RyaW5nKClcblxuTlVNQkVSIHJlcHV0YXRpb25TY29yZSA9IE1XRy5VUkxSZXB1dGF0aW9uKGNhdGVnb3JpemF0aW9uU2V0dGluZywgdXJsU3RyaW5nKVxuXG5JRiByZXB1dGF0aW9uU2NvcmUgPiA1MCBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJVUkwgaGFzIGEgaGlnaCByaXNrIHJlcHV0YXRpb25cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiVVJMIGlzIHNhZmVcIilcbn0iLCAibmFtZSI6ICJNV0cuVVJMUmVwdXRhdGlvbiAoTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIG51bWVyaWNhbCBzY29yZSByZXByZXNlbnRpbmcgdGhlIEdUSSByZXB1dGF0aW9uIG9mIHRoZSBnaXZlbiBVUkwuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nYDogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIFVSTCBjYXRlZ29yaXphdGlvbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcmVwdXRhdGlvbiB2YWx1ZSBmb3IgdGhlIGdpdmVuIFVSTC4gUmFuZ2UgaXMgZnJvbSAtMTI3IHRvIDEyNywgd2hlcmUgLTEyNyBtZWFucyAnTWluaW1hbCBSaXNrJyBhbmQgMTI3IG1lYW5zICdIaWdoIFJpc2snIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nIHVybENhdGVnb3JpemF0aW9uU2V0dGluZyA9IE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcoKVxuTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5TVFJJTkcgdXJsQ2F0ZWdvcnkgPSB1cmxDYXRlZ29yaXphdGlvblNldHRpbmcuR2V0Q2F0ZWdvcnkoY3VycmVudFVybClcblxuSUYgdXJsQ2F0ZWdvcnkgPT0gXCJNYWxpY2lvdXNcIiBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gbWFsaWNpb3VzIHNpdGVzIGlzIGJsb2NrZWQuXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIlVSTCBpcyBzYWZlLlwiKVxufSIsICJuYW1lIjogIk1XRy5VUkxSZXB1dGF0aW9uIChNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBudW1lcmljIHZhbHVlIGluZGljYXRpbmcgdGhlIHJpc2sgbGV2ZWwgb2YgYSBnaXZlbiBVUkwsIHJhbmdpbmcgZnJvbSAtMTI3IChNaW5pbWFsIFJpc2spIHRvIDEyNyAoSGlnaCBSaXNrKS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmdgOiBUaGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgVVJMIGNhdGVnb3JpemF0aW9uLlxuMi4gYFNUUklOR2A6IFRoZSBVUkwgd2hvc2UgcmVwdXRhdGlvbiBpcyBiZWluZyBjaGVja2VkLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBHVEkgcmVwdXRhdGlvbiBzY29yZSBvZiB0aGUgY3VycmVudCBVUkwgYXMgYSBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblNUUklORyB1cmxSZXB1dGF0aW9uID0gY3VycmVudFVybC5SZXB1dGF0aW9uU3RyaW5nKClcblxuSUYgdXJsUmVwdXRhdGlvbiA9PSBcIk1hbGljaW91c1wiIFRIRU4ge1xuICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byBtYWxpY2lvdXMgc2l0ZSBibG9ja2VkXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIlVSTCBpcyBzYWZlXCIpXG59IiwgIm5hbWUiOiAiTVdHLlVSTFJlcHV0YXRpb25TdHJpbmcgKE1XRy5JbnRlcm5hbFNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIEdUSSByZXB1dGF0aW9uIG9mIHRoZSBVUkwgaW4gc3RyaW5nIGZvcm1hdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFNldHRpbmdgOiBUaGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgR1RJIHJlcHV0YXRpb24gc2NvcmUgb2YgdGhlIGN1cnJlbnQgVVJMIGFzIGEgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZyBjYXRlZ29yaXphdGlvblNldHRpbmcgPSBNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nKClcbk1XRy5VUkwgY3VycmVudFVybCA9IE1XRy5VcmwoKVxuU1RSSU5HIHVybFJlcHV0YXRpb24gPSBNV0cuVVJMUmVwdXRhdGlvblN0cmluZyhjYXRlZ29yaXphdGlvblNldHRpbmcsIGN1cnJlbnRVcmwpXG5cbklGIHVybFJlcHV0YXRpb24gPT0gXCJIaWdoIFJpc2tcIiBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gdGhpcyBVUkwgaXMgYmxvY2tlZCBkdWUgdG8gaGlnaCByaXNrIHJlcHV0YXRpb24uXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIlVSTCByZXB1dGF0aW9uIGlzIGFjY2VwdGFibGUuXCIpXG59IiwgIm5hbWUiOiAiTVdHLlVSTFJlcHV0YXRpb25TdHJpbmcgKE1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIEdUSSByZXB1dGF0aW9uIHNjb3JlIG9mIHRoZSBzcGVjaWZpZWQgVVJMIGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBVUkwgY2F0ZWdvcml6YXRpb24uIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIEdUSSByZXB1dGF0aW9uIG9mIHRoZSBnaXZlbiBVUkwgYXMgYSBzdHJpbmcgKCdNaW5pbWFsIFJpc2snLCAnVW52ZXJpZmllZCcsICdNZWRpdW0gUmlzaycsIG9yICdIaWdoIFJpc2snKS4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGEgVVJMIGNhdGVnb3JpemF0aW9uIHNldHRpbmcgb2JqZWN0XG5NV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nIHVybENhdGVnb3JpemF0aW9uU2V0dGluZyA9IC4uLiAvLyBJbml0aWFsaXplIHRoaXMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgc2V0dGluZ1xuXG4vLyBUaGUgVVJMIHRvIGNoZWNrXG5TVFJJTkcgdXJsVG9DaGVjayA9IE1XRy5VcmwoKS5Ub1N0cmluZygpXG5cbi8vIEdldCB0aGUgVVJMIHJlcHV0YXRpb24gc3RyaW5nXG5TVFJJTkcgcmVwdXRhdGlvbiA9IE1XRy5VUkxSZXB1dGF0aW9uU3RyaW5nKHVybENhdGVnb3JpemF0aW9uU2V0dGluZywgdXJsVG9DaGVjaylcblxuLy8gVVJMIFJlcHV0YXRpb246IHJlcHV0YXRpb25cblxuLy8gVGFrZSBhY3Rpb24gYmFzZWQgb24gdGhlIHJlcHV0YXRpb25cbklGIHJlcHV0YXRpb24gPT0gXCJIaWdoIFJpc2tcIiBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gdGhpcyBVUkwgaXMgYmxvY2tlZCBkdWUgdG8gaGlnaCByaXNrIHJlcHV0YXRpb24uXCIpXG59IEVMU0Uge1xuICAgIE1XRy5BbGxvdyhcIlVSTCByZXB1dGF0aW9uIGNoZWNrIHBhc3NlZC5cIilcbn0iLCAibmFtZSI6ICJNV0cuVVJMUmVwdXRhdGlvblN0cmluZyAoTVdHLlVybENhdGVnb3JpemF0aW9uU2V0dGluZywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBHVEkgcmVwdXRhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIFVSTCBhcyBhIHN0cmluZywgaW5kaWNhdGluZyBlaXRoZXIgJ01pbmltYWwgUmlzaycsICdVbnZlcmlmaWVkJywgJ01lZGl1bSBSaXNrJywgb3IgJ0hpZ2ggUmlzaycuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuVXJsQ2F0ZWdvcml6YXRpb25TZXR0aW5nYDogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIFVSTCBjYXRlZ29yaXphdGlvbi5cbjIuIGBTVFJJTkdgOiBUaGUgVVJMIHRvIGJlIGV2YWx1YXRlZCBmb3IgcmVwdXRhdGlvbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSB1c2VyLWRlZmluZWQgaW5pdGlhbGl6YXRpb24gaGFzIGNvbXBsZXRlZC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgc29tZSB1c2VyLWRlZmluZWQgc2V0dGluZ3NcblZFQ1RPUjxTVFJJTkc+IHVzZXJTZXR0aW5ncyA9IFwic2V0dGluZzFcIiwgXCJzZXR0aW5nMlwiLCBcInNldHRpbmczXCJcblxuLy8gUGVyZm9ybSBzb21lIG9wZXJhdGlvbnMgd2l0aCB0aGUgc2V0dGluZ3NcbkZPUiBFQUNIIHNldHRpbmcgSU4gdXNlclNldHRpbmdzIHtcbiAgICAvLyBJbml0aWFsaXppbmc6IFwiICsgc2V0dGluZ1xuICAgIC8vIEFkZCB5b3VyIGluaXRpYWxpemF0aW9uIGxvZ2ljIGhlcmVcbn1cblxuLy8gTWFyayB0aGUgdXNlci1kZWZpbmVkIGluaXRpYWxpemF0aW9uIGFzIGRvbmVcbk1XRy5TZXRVc2VyRGVmaW5lZEluaXREb25lKClcblxuLy8gVXNlci1kZWZpbmVkIGluaXRpYWxpemF0aW9uIGNvbXBsZXRlZC4iLCAibmFtZSI6ICJNV0cuVXNlckRlZmluZWRJbml0RG9uZSAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgdXNlci1kZWZpbmVkIGluaXRpYWxpemF0aW9uIGlzIGRvbmUuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuSW50ZXJuYWxWYXJpYW50IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHZhbHVlIG9mIGEgdXNlci1kZWZpbmVkIHZhcmlhYmxlIGJ5IG5hbWUuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgdmFyaWFibGVOYW1lID0gXCJleGFtcGxlVmFyXCJcblNUUklORyB2YXJpYWJsZVZhbHVlID0gXCJleGFtcGxlVmFsdWVcIlxuXG5NV0cuU2V0VXNlckRlZmluZWRWYXIodmFyaWFibGVOYW1lLCB2YXJpYWJsZVZhbHVlKVxuXG4vLyBVc2VyLWRlZmluZWQgdmFyaWFibGUgc2V0OiBleGFtcGxlVmFyID0gZXhhbXBsZVZhbHVlIiwgIm5hbWUiOiAiTVdHLlVzZXJEZWZpbmVkVmFyIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHZhbHVlIG9mIGEgdXNlci1kZWZpbmVkIHZhcmlhYmxlIGFzIGFuIGludGVybmFsIHZhcmlhbnQgdHlwZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSB1c2VyLWRlZmluZWQgdmFyaWFibGUgdG8gcmV0cmlldmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGlzdCBvZiBhdXRoZW50aWNhdGlvbiBncm91cHMgdGhlIGN1cnJlbnQgdXNlciBiZWxvbmdzIHRvLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPFNUUklORz4gdXNlckdyb3VwcyA9IE1XRy5Vc2VyR3JvdXBzKClcblxuSUYgXCJhZG1pblwiIElOIHVzZXJHcm91cHMgVEhFTiB7XG4gICAgLy8gVXNlciBpcyBpbiB0aGUgYWRtaW4gZ3JvdXBcbiAgICBNV0cuQWxsb3coXCJVc2VyIGlzIGFkbWluXCIpXG59IEVMU0Uge1xuICAgIC8vIFVzZXIgaXMgbm90IGluIHRoZSBhZG1pbiBncm91cFxuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBkZW5pZWQ6IFVzZXIgaXMgbm90IGFuIGFkbWluXCIpXG59IiwgIm5hbWUiOiAiTVdHLlVzZXJHcm91cHMgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGBWRUNUT1I8U1RSSU5HPmAgY29udGFpbmluZyB0aGUgYXV0aGVudGljYXRpb24gZ3JvdXBzIHRoZSBjdXJyZW50IHVzZXIgYmVsb25ncyB0by4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBhdXRoZW50aWNhdGVkIHVzZXIuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgdXNlcm5hbWUgPSBNV0cuVXNlcm5hbWUoKVxuLy8gQXV0aGVudGljYXRlZCB1c2VyOiBcIiArIHVzZXJuYW1lIiwgIm5hbWUiOiAiTVdHLlVzZXJuYW1lICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBzeXN0ZW0gVVVJRCBhcyBhIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyB1dWlkID0gTVdHLlVVSUQoKVxuLy8gR2VuZXJhdGVkIFVVSUQ6ICsgdXVpZCIsICJuYW1lIjogIk1XRy5VVUlEICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBVVUlEIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxTVFJJTkc+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG5hbWVzIG9mIHZpcnVzZXMgZGV0ZWN0ZWQgdXNpbmcgdGhlIEdhdGV3YXkgQW50aS1NYWx3YXJlIChHQU0pIGVuZ2luZS4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5BbnRpbWFsd2FyZVNldHRpbmcgYW50aW1hbHdhcmVTZXR0aW5nID0gLi4uIC8vIEFzc3VtZSB0aGlzIGlzIGluaXRpYWxpemVkIHdpdGggeW91ciBhbnRpbWFsd2FyZSBzZXR0aW5nc1xuVkVDVE9SPFNUUklORz4gdmlydXNOYW1lcyA9IE1XRy5WaXJ1c05hbWVzKGFudGltYWx3YXJlU2V0dGluZylcblxuSUYgdmlydXNOYW1lcy5TSVpFKCkgPiAwIFRIRU4ge1xuICAgIC8vIERldGVjdGVkIFZpcnVzZXM6XG4gICAgRk9SIFNUUklORyB2aXJ1c05hbWUgSU4gdmlydXNOYW1lcyB7XG4gICAgICAgIC8vIHZpcnVzTmFtZVxuICAgIH1cbiAgICBNV0cuQmxvY2soXCJWaXJ1cyBkZXRlY3RlZDogXCIgKyB2aXJ1c05hbWVzWzBdKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJObyB2aXJ1c2VzIGRldGVjdGVkXCIpXG59IiwgIm5hbWUiOiAiTVdHLlZpcnVzTmFtZXMgKE1XRy5BbnRpbWFsd2FyZVNldHRpbmcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBgVkVDVE9SPFNUUklORz5gIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHZpcnVzZXMgZGV0ZWN0ZWQgYnkgdGhlIGFudGltYWx3YXJlIGVuZ2luZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5BbnRpbWFsd2FyZVNldHRpbmdgOiBUaGUgYW50aW1hbHdhcmUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBuYW1lcyBvZiBkZXRlY3RlZCB2aXJ1c2VzLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPFNUUklORz4gdmlydXNOYW1lcyA9IE1XRy5WaXJ1c05hbWVzKClcblxuSUYgdmlydXNOYW1lcy5TSVpFKCkgPiAwIFRIRU4ge1xuICAgIC8vIFZpcnVzZXMgZGV0ZWN0ZWQ6IFwiICsgdmlydXNOYW1lcy5UT19TVFJJTkcoKVxuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBibG9ja2VkIGR1ZSB0byBkZXRlY3RlZCB2aXJ1c2VzOiBcIiArIHZpcnVzTmFtZXMuVE9fU1RSSU5HKCkpXG59IEVMU0Uge1xuICAgIC8vIE5vIHZpcnVzZXMgZGV0ZWN0ZWQuXG4gICAgTVdHLkFsbG93KFwiTm8gdmlydXNlcyBmb3VuZFwiKVxufSIsICJuYW1lIjogIk1XRy5WaXJ1c05hbWVzIChNV0cuSW50ZXJuYWxTZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgYFZFQ1RPUjxTVFJJTkc+YCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBkZXRlY3RlZCB2aXJ1c2VzLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsU2V0dGluZ2A6IFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxTVFJJTkc+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG5hbWVzIG9mIHZpcnVzZXMgZGV0ZWN0ZWQgaW4gdGhlIGN1cnJlbnQgYm9keSBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIElWWCBDbG91ZCBzZXR0aW5ncy4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5JVlhDbG91ZFNldHRpbmcgaXZ4Q2xvdWQgPSBbIFwiaXZ4Q2xvdWRcIiBdXG5WRUNUT1I8U1RSSU5HPiBkZXRlY3RlZFZpcnVzTmFtZXMgPSBNV0cuVmlydXNOYW1lcyAoaXZ4Q2xvdWQpXG5CT09MRUFOIGhhc0RldGVjdGVkVmlydXNlcyA9IExlbmd0aCAoZGV0ZWN0ZWRWaXJ1c05hbWVzKSA+IDAiLCAibmFtZSI6ICJNV0cuVmlydXNOYW1lcyAoTVdHLklWWENsb3VkU2V0dGluZykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGBWRUNUT1I8U1RSSU5HPmAgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdmlydXNlcyBkZXRlY3RlZCBpbiB0aGUgY3VycmVudCBib2R5LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLklWWENsb3VkU2V0dGluZ2A6IFRoZSBJVlggQ2xvdWQgc2V0dGluZ3Mgb2JqZWN0IHVzZWQgdG8gcmV0cmlldmUgdmlydXMgbmFtZXMuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbmFtZXMgb2YgdmlydXNlcyBkZXRlY3RlZCBieSB0aGUgQWR2YW5jZWQgVGhyZWF0IERlZmVuc2UgKEFURCkgc2VydmljZS4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGEgcHJlLWNvbmZpZ3VyZWQgTVdHLk1BVERTZXR0aW5nIG9iamVjdFxuTVdHLk1BVERTZXR0aW5nIG1hdGRTZXR0aW5nID0gW1lvdXJNQVREU2V0dGluZ11cblxuLy8gUmV0cmlldmUgdGhlIG5hbWVzIG9mIGRldGVjdGVkIHZpcnVzZXNcblZFQ1RPUjxTVFJJTkc+IHZpcnVzTmFtZXMgPSBNV0cuVmlydXNOYW1lcyhtYXRkU2V0dGluZylcblxuLy8gQ2hlY2sgaWYgYW55IHZpcnVzZXMgd2VyZSBkZXRlY3RlZFxuSUYgdmlydXNOYW1lcy5TSVpFKCkgPiAwIFRIRU4ge1xuICAgIC8vIERldGVjdGVkIFZpcnVzZXM6IFxuICAgIC8vIERFQlVHKFwiRGV0ZWN0ZWQgVmlydXNlczogXCIgKyB2aXJ1c05hbWVzLlRPX1NUUklORygpKVxuICAgIFxuICAgIC8vIE9wdGlvbmFsbHksIGJsb2NrIHRoZSBjb25uZWN0aW9uXG4gICAgTVdHLkJsb2NrKFwiQ29ubmVjdGlvbiBibG9ja2VkIGR1ZSB0byBkZXRlY3RlZCB2aXJ1c2VzOiBcIiArIHZpcnVzTmFtZXMuVE9fU1RSSU5HKCkpXG59IEVMU0Uge1xuICAgIC8vIEFsbG93IHRoZSBjb25uZWN0aW9uIGlmIG5vIHZpcnVzZXMgd2VyZSBkZXRlY3RlZFxuICAgIE1XRy5BbGxvdyhcIk5vIHZpcnVzZXMgZGV0ZWN0ZWRcIilcbn0iLCAibmFtZSI6ICJNV0cuVmlydXNOYW1lcyAoTVdHLk1BVERTZXR0aW5nKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgYFZFQ1RPUjxTVFJJTkc+YCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB2aXJ1c2VzIGRldGVjdGVkIGJ5IHRoZSBBZHZhbmNlZCBUaHJlYXQgRGVmZW5zZSAoQVREKSBzZXJ2aWNlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLk1BVERTZXR0aW5nYDogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSB2aXJ1cyBkZXRlY3Rpb24gc2VydmljZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TVdHLlVybENhdGVnb3J5PiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBHVEkgY2F0ZWdvcnkgbGlzdCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgY2F0ZWdvcnkgbmFtZSB0byBsb29rIHVwXG5TVFJJTkcgY2F0ZWdvcnlOYW1lID0gXCJTb2NpYWwgTWVkaWFcIlxuXG4vLyBHZXQgdGhlIGxpc3Qgb2YgVVJMIGNhdGVnb3JpZXMgZm9yIHRoZSBnaXZlbiBuYW1lXG5WRUNUT1I8TVdHLlVybENhdGVnb3J5PiB1cmxDYXRlZ29yaWVzID0gTVdHLldlYlVybENhdGVnb3J5TGlzdEJ5TmFtZShjYXRlZ29yeU5hbWUpXG5cbi8vIFNldCBhIHVzZXItZGVmaW5lZCB2YXJpYWJsZSB3aXRoIHRoZSByZXRyaWV2ZWQgVVJMIGNhdGVnb3JpZXNcbk1XRy5TZXRVc2VyRGVmaW5lZFZhcihcIlVzZXJEZWZpbmVkVXJsQ2F0ZWdvcmllc1wiLCB1cmxDYXRlZ29yaWVzKVxuXG4vLyBSZXRyaWV2ZWQgVVJMIENhdGVnb3JpZXM6IFwiICsgdXJsQ2F0ZWdvcmllcyIsICJuYW1lIjogIk1XRy5XZWJVcmxDYXRlZ29yeUxpc3RCeU5hbWUgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+YCBmb3IgdGhlIHNwZWNpZmllZCBHVEkgY2F0ZWdvcnkgbGlzdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBuYW1lIG9mIHRoZSBHVEkgY2F0ZWdvcnkgbGlzdCB0byByZXRyaWV2ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGEgR1RJIGNhdGVnb3J5IGxpc3Qgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgZXhpc3RzLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGxpc3ROYW1lID0gXCJleGFtcGxlX2xpc3RcIlxuXG5JRiBNV0cuU3RyaW5nTGlzdEJ5TmFtZUV4aXN0cyhsaXN0TmFtZSkgVEhFTiB7XG4gICAgLy8gVGhlIGxpc3QgXCJleGFtcGxlX2xpc3RcIiBleGlzdHMuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBsaXN0IFwiZXhhbXBsZV9saXN0XCIgZG9lcyBub3QgZXhpc3QuXG59IiwgIm5hbWUiOiAiTVdHLldlYlVybENhdGVnb3J5TGlzdEJ5TmFtZUV4aXN0cyAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhIEdUSSBjYXRlZ29yeSBsaXN0IHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGV4aXN0cywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgbmFtZSBvZiB0aGUgR1RJIGNhdGVnb3J5IGxpc3QgdG8gY2hlY2sgZm9yLiJ9LCB7InJldHVybl90eXBlIjogIlJlZ0V4SlNpLkxpc3QiLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgYSB2ZWN0b3Igb2YgQ04gd2lsZGNhcmQgc3RyaW5ncyB0byBhIGBSZWdFeEpTaS5MaXN0YCBvZiByZWd1bGFyIGV4cHJlc3Npb25zLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgVkVDVE9SIG9mIGNvbW1vbiBuYW1lc1xuVkVDVE9SPFNUUklORz4gY29tbW9uTmFtZXMgPSBcImV4YW1wbGUuY29tXCIsIFwidGVzdC5jb21cIiwgXCJzYW1wbGUub3JnXCJcblxuLy8gQ29udmVydCB0aGUgY29tbW9uIG5hbWVzIHRvIGEgbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zXG5SZWdFeEpTaS5MaXN0IHJlZ2V4TGlzdCA9IE1XRy5YNTA5Q29tbW9uTmFtZXNUb1JlZ0V4TGlzdChjb21tb25OYW1lcylcblxuLy8gQ29udmVydGVkIFJlZ3VsYXIgRXhwcmVzc2lvbnM6IHJlZ2V4TGlzdCIsICJuYW1lIjogIk1XRy5YNTA5Q29tbW9uTmFtZXNUb1JlZ0V4TGlzdCAoVkVDVE9SPFNUUklORz4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBsaXN0IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgY29ycmVzcG9uZGluZyB0byB0aGUgQ04gd2lsZGNhcmQgc3RyaW5ncyBwcm92aWRlZCBpbiB0aGUgaW5wdXQgdmVjdG9yLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPFNUUklORz5gOiBBIGNvbGxlY3Rpb24gb2Ygc3RyaW5ncyBpbiBDTiB3aWxkY2FyZCBmb3JtYXQuIn0sIHsicmV0dXJuX3R5cGUiOiAiUmVnRXhKU2kiLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgYSBDTiB3aWxkY2FyZC1mb3JtYXR0ZWQgY29tbW9uIG5hbWUgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24uIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgY29tbW9uTmFtZSA9IFwiZXhhbXBsZS5jb21cIlxuU1RSSU5HIHJlZ2V4ID0gTVdHLlg1MDlDb21tb25OYW1lVG9SZWdFeChjb21tb25OYW1lKVxuXG4vLyBDb252ZXJ0ZWQgcmVnZXg6IFwiICsgcmVnZXgiLCAibmFtZSI6ICJNV0cuWDUwOUNvbW1vbk5hbWVUb1JlZ0V4IChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSByZWd1bGFyIGV4cHJlc3Npb24gZXF1aXZhbGVudCBvZiBhIGdpdmVuIHdpbGRjYXJkLWZvcm1hdHRlZCBjb21tb24gbmFtZSAoQ04pLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGNvbW1vbiBuYW1lIGluIENOIHdpbGRjYXJkIGZvcm1hdCB0byBjb252ZXJ0IHRvIGEgcmVndWxhciBleHByZXNzaW9uLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBmaXJzdCBJUCBhZGRyZXNzIGluIHRoZSBnaXZlbiBJUCByYW5nZS4iLCAiY29kZV9leGFtcGxlIjogIk5ldC5JUFJhbmdlIGlwUmFuZ2UgPSBcIjE5Mi4xNjguMS4wLzI0XCJcblNUUklORyBmaXJzdElQID0gTmV0LkJlZ2luKGlwUmFuZ2UpXG4vLyBUaGUgZmlyc3QgSVAgaW4gdGhlIHJhbmdlIGlzOiBmaXJzdElQIiwgIm5hbWUiOiAiTmV0LkJlZ2luIChOZXQuSVBSYW5nZSkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZmlyc3QgSVAgYWRkcmVzcyBpbiB0aGUgZ2l2ZW4gSVAgcmFuZ2UgYXMgYSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBOZXQuSVBSYW5nZWA6IFRoZSBJUCBhZGRyZXNzIHJhbmdlLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBsYXN0IElQIGFkZHJlc3MgaW4gdGhlIGdpdmVuIElQIHJhbmdlLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGFuIElQIHJhbmdlXG5OZXQuSVBSYW5nZSBpcFJhbmdlID0gXCIxOTIuMTY4LjEuMC8yNFwiXG5cbi8vIEdldCB0aGUgbGFzdCBJUCBpbiB0aGUgcmFuZ2VcblNUUklORyBsYXN0SVAgPSBOZXQuRW5kKGlwUmFuZ2UpXG5cbi8vIFRoZSBsYXN0IElQIGluIHRoZSByYW5nZSBpczogXCIgKyBsYXN0SVAiLCAibmFtZSI6ICJOZXQuRW5kIChOZXQuSVBSYW5nZSkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZmluYWwgSVAgYWRkcmVzcyBpbiB0aGUgc3BlY2lmaWVkIElQIHJhbmdlIGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTmV0LklQUmFuZ2VgOiBUaGUgSVAgYWRkcmVzcyByYW5nZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TmV0LklQPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgc3Vic2V0IG9mIHRoZSBnaXZlbiBJUCBhZGRyZXNzIGxpc3QuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TmV0LklQPiBpcExpc3QgPSBcIjE5Mi4xNjguMS4xXCIsIFwiMTkyLjE2OC4xLjJcIiwgXCIxOTIuMTY4LjEuM1wiLCBcIjE5Mi4xNjguMS40XCIsIFwiMTkyLjE2OC4xLjVcIlxuTlVNQkVSIHN0YXJ0SW5kZXggPSAxXG5OVU1CRVIgY291bnQgPSAzXG5cblZFQ1RPUjxOZXQuSVA+IHN1YnNldCA9IE5ldC5HZXQoaXBMaXN0LCBzdGFydEluZGV4LCBjb3VudClcblxuLy8gU3Vic2V0IG9mIElQIGFkZHJlc3NlczogXCIgKyBzdWJzZXQiLCAibmFtZSI6ICJOZXQuR2V0IChWRUNUT1I8TmV0LklQPiwgTlVNQkVSLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBgVkVDVE9SPE5ldC5JUD5gIGNvbnRhaW5pbmcgdGhlIHNwZWNpZmllZCBzdWJzZXQgb2YgSVAgYWRkcmVzc2VzIGZyb20gdGhlIGlucHV0IGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TmV0LklQPmA6IFRoZSBsaXN0IG9mIElQIGFkZHJlc3Nlcy5cbjIuIGBOVU1CRVJgOiBUaGUgc3RhcnRpbmcgaW5kZXggb2YgdGhlIHN1YnNldC5cbjMuIGBOVU1CRVJgOiBUaGUgbnVtYmVyIG9mIElQIGFkZHJlc3NlcyB0byBpbmNsdWRlLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVBSYW5nZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIHN1YnNldCBvZiB0aGUgZ2l2ZW4gSVAgcmFuZ2UgbGlzdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSBhIFZFQ1RPUiBvZiBOZXQuSVBSYW5nZVxuVkVDVE9SPE5ldC5JUFJhbmdlPiBpcFJhbmdlcyA9IFtcIjE5Mi4xNjguMS4wLzI0XCIsIFwiMTAuMC4wLjAvOFwiLCBcIjE3Mi4xNi4wLjAvMTJcIl1cblxuLy8gRGVmaW5lIHRoZSBzdGFydGluZyBpbmRleCBhbmQgdGhlIG51bWJlciBvZiBJUCByYW5nZXMgdG8gaW5jbHVkZSBpbiB0aGUgc3Vic2V0XG5OVU1CRVIgc3RhcnRJbmRleCA9IDFcbk5VTUJFUiBjb3VudCA9IDJcblxuLy8gR2V0IHRoZSBzdWJzZXQgb2YgdGhlIElQIHJhbmdlIGxpc3RcblZFQ1RPUjxOZXQuSVBSYW5nZT4gc3Vic2V0ID0gTmV0LkdldChpcFJhbmdlcywgc3RhcnRJbmRleCwgY291bnQpXG5cbi8vIFN1YnNldCBvZiBJUCByYW5nZXM6IFxuLy8gREVCVUcoXCJTdWJzZXQgb2YgSVAgcmFuZ2VzOiBcIiArIHN1YnNldCkiLCAibmFtZSI6ICJOZXQuR2V0IChWRUNUT1I8TmV0LklQUmFuZ2U+LCBOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGBWRUNUT1I8TmV0LklQUmFuZ2U+YCBjb250YWluaW5nIHRoZSBzcGVjaWZpZWQgc3Vic2V0IG9mIElQIHJhbmdlcyBmcm9tIHRoZSBpbnB1dCBsaXN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5ldC5JUFJhbmdlPmA6IFRoZSBsaXN0IG9mIElQIHJhbmdlcy5cbjIuIGBOVU1CRVJgOiBUaGUgc3RhcnRpbmcgaW5kZXggb2YgdGhlIHN1YnNldC5cbjMuIGBOVU1CRVJgOiBUaGUgbnVtYmVyIG9mIElQIHJhbmdlcyB0byBpbmNsdWRlLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVA+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBJUCBhZGRyZXNzIGxpc3Qgd2l0aCB0aGUgZ2l2ZW4gSVAgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBWRUNUT1Igb2YgTmV0LklQXG5WRUNUT1I8TmV0LklQPiBpcExpc3QgPSBOZXQuSVAoXCIxOTIuMTY4LjEuMVwiKSwgTmV0LklQKFwiMTkyLjE2OC4xLjJcIiksIE5ldC5JUChcIjE5Mi4xNjguMS4zXCIpXG5cbi8vIERlZmluZSB0aGUgSVAgdG8gYmUgaW5zZXJ0ZWRcbk5ldC5JUCBuZXdJUCA9IE5ldC5JUChcIjE5Mi4xNjguMS40XCIpXG5cbi8vIERlZmluZSB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIG5ldyBJUCBzaG91bGQgYmUgaW5zZXJ0ZWRcbk5VTUJFUiBwb3NpdGlvbiA9IDJcblxuLy8gSW5zZXJ0IHRoZSBuZXcgSVAgaW50byB0aGUgVkVDVE9SIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb25cbk5ldC5JbnNlcnQoaXBMaXN0LCBuZXdJUCwgcG9zaXRpb24pXG5cbi8vIFVwZGF0ZWQgSVAgTGlzdDogXCIgKyBpcExpc3QiLCAibmFtZSI6ICJOZXQuSW5zZXJ0IChWRUNUT1I8TmV0LklQPiwgTmV0LklQLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBgVkVDVE9SPE5ldC5JUD5gIHdpdGggdGhlIGdpdmVuIElQIGFkZHJlc3MgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOZXQuSVA+YDogVGhlIGxpc3Qgb2YgSVAgYWRkcmVzc2VzLlxuMi4gYE5ldC5JUGA6IFRoZSBJUCBhZGRyZXNzIHRvIGluc2VydC5cbjMuIGBOVU1CRVJgOiBUaGUgcG9zaXRpb24gYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBJUCBhZGRyZXNzLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVBSYW5nZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIElQIHJhbmdlIGxpc3Qgd2l0aCB0aGUgZ2l2ZW4gSVAgcmFuZ2UgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSBhIFZFQ1RPUiBvZiBOZXQuSVBSYW5nZVxuVkVDVE9SPE5ldC5JUFJhbmdlPiBpcFJhbmdlcyA9IE5ldC5JUFJhbmdlKFwiMTkyLjE2OC4xLjAvMjRcIiksIE5ldC5JUFJhbmdlKFwiMTAuMC4wLjAvOFwiKVxuXG4vLyBEZWZpbmUgdGhlIElQIHJhbmdlIHRvIGluc2VydFxuTmV0LklQUmFuZ2UgbmV3UmFuZ2UgPSBOZXQuSVBSYW5nZShcIjE3Mi4xNi4wLjAvMTJcIilcblxuLy8gSW5zZXJ0IHRoZSBuZXcgSVAgcmFuZ2UgYXQgcG9zaXRpb24gMSAoc2Vjb25kIHBvc2l0aW9uIGluIHRoZSBWRUNUT1IpXG5OZXQuSW5zZXJ0KGlwUmFuZ2VzLCBuZXdSYW5nZSwgMSlcblxuLy8gUHJldmlvdXNseTogUHJpbnQgdGhlIHVwZGF0ZWQgVkVDVE9SIHRvIHRoZSBjb25zb2xlIGZvciBkZWJ1Z2dpbmdcbi8vIERFQlVHKGlwUmFuZ2VzKSIsICJuYW1lIjogIk5ldC5JbnNlcnQgKFZFQ1RPUjxOZXQuSVBSYW5nZT4sIE5ldC5JUFJhbmdlLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBgVkVDVE9SPE5ldC5JUFJhbmdlPmAgd2l0aCB0aGUgZ2l2ZW4gSVAgcmFuZ2UgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOZXQuSVBSYW5nZT5gOiBUaGUgbGlzdCBvZiBJUCByYW5nZXMuXG4yLiBgTmV0LklQUmFuZ2VgOiBUaGUgSVAgcmFuZ2UgdG8gaW5zZXJ0LlxuMy4gYE5VTUJFUmA6IFRoZSBwb3NpdGlvbiBhdCB3aGljaCB0byBpbnNlcnQgdGhlIElQIHJhbmdlLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHR3byBJUCBhZGRyZXNzZXMgYXJlIGlkZW50aWNhbC4iLCAiY29kZV9leGFtcGxlIjogIk5ldC5JUCBpcDEgPSBOZXQuSVAoXCIxOTIuMTY4LjEuMVwiKVxuTmV0LklQIGlwMiA9IE5ldC5JUChcIjE5Mi4xNjguMS4xXCIpXG5OZXQuSVAgaXAzID0gTmV0LklQKFwiMTAuMC4wLjFcIilcblxuSUYgTmV0LklzRXF1YWwoaXAxLCBpcDIpIFRIRU4ge1xuICAgIC8vIGlwMSBpcyBlcXVhbCB0byBpcDJcbn0gRUxTRSB7XG4gICAgLy8gaXAxIGlzIG5vdCBlcXVhbCB0byBpcDJcbn1cblxuSUYgTmV0LklzRXF1YWwoaXAxLCBpcDMpIFRIRU4ge1xuICAgIC8vIGlwMSBpcyBlcXVhbCB0byBpcDNcbn0gRUxTRSB7XG4gICAgLy8gaXAxIGlzIG5vdCBlcXVhbCB0byBpcDNcbn0iLCAibmFtZSI6ICJOZXQuSXNFcXVhbCAoTmV0LklQLCBOZXQuSVApIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSB0d28gSVAgYWRkcmVzc2VzIGFyZSBpZGVudGljYWwsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTmV0LklQYDogVGhlIGZpcnN0IElQIGFkZHJlc3MuXG4yLiBgTmV0LklQYDogVGhlIHNlY29uZCBJUCBhZGRyZXNzLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIElQIGFkZHJlc3MgZmFsbHMgd2l0aGluIHRoZSBnaXZlbiBJUCByYW5nZS4iLCAiY29kZV9leGFtcGxlIjogIk5ldC5JUCBjbGllbnRJUCA9IFwiMTkyLjE2OC4xLjEwXCJcbk5ldC5JUFJhbmdlIGFsbG93ZWRSYW5nZSA9IFwiMTkyLjE2OC4xLjAvMjRcIlxuXG5JRiBOZXQuSXNJblJhbmdlKGNsaWVudElQLCBhbGxvd2VkUmFuZ2UpIFRIRU4ge1xuICAgIC8vIENsaWVudCBJUCBpcyB3aXRoaW4gdGhlIGFsbG93ZWQgcmFuZ2UuXG4gICAgTVdHLkFsbG93KFwiSVAgaW4gYWxsb3dlZCByYW5nZVwiKVxufSBFTFNFIHtcbiAgICAvLyBDbGllbnQgSVAgaXMgbm90IHdpdGhpbiB0aGUgYWxsb3dlZCByYW5nZS5cbiAgICBNV0cuQmxvY2soXCJJUCBub3QgaW4gYWxsb3dlZCByYW5nZVwiKVxufSIsICJuYW1lIjogIk5ldC5Jc0luUmFuZ2UgKE5ldC5JUCwgTmV0LklQUmFuZ2UpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBJUCBhZGRyZXNzIGlzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHJhbmdlLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5ldC5JUGA6IFRoZSBJUCBhZGRyZXNzIHRvIGNoZWNrLlxuMi4gYE5ldC5JUFJhbmdlYDogVGhlIElQIHJhbmdlIHRvIGNoZWNrIGFnYWluc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gSVAgYWRkcmVzcyBmYWxscyB3aXRoaW4gYW55IElQIHJhbmdlIGluIHRoZSBsaXN0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBJUCBhZGRyZXNzIHRvIGNoZWNrXG5OZXQuSVAgY2xpZW50SVAgPSBXZWIuUmVxdWVzdC5DbGllbnQuSVBcblxuLy8gRGVmaW5lIGEgbGlzdCBvZiBJUCByYW5nZXNcblZFQ1RPUjxOZXQuSVBSYW5nZT4gaXBSYW5nZXMgPSBcIjE5Mi4xNjguMS4wLzI0XCIsIFwiMTAuMC4wLjAvOFwiLCBcIjE3Mi4xNi4wLjAvMTJcIlxuXG4vLyBDaGVjayBpZiB0aGUgY2xpZW50IElQIGlzIHdpdGhpbiBhbnkgb2YgdGhlIHNwZWNpZmllZCByYW5nZXNcbklGIE5ldC5Jc0luUmFuZ2VMaXN0KGNsaWVudElQLCBpcFJhbmdlcykgVEhFTiB7XG4gICAgLy8gQWxsb3cgdGhlIGNvbm5lY3Rpb24gaWYgdGhlIElQIGlzIHdpdGhpbiB0aGUgcmFuZ2VcbiAgICBNV0cuQWxsb3coXCJJUCBpcyB3aXRoaW4gdGhlIGFsbG93ZWQgcmFuZ2VcIilcbn0gRUxTRSB7XG4gICAgLy8gQmxvY2sgdGhlIGNvbm5lY3Rpb24gaWYgdGhlIElQIGlzIG5vdCB3aXRoaW4gdGhlIHJhbmdlXG4gICAgTVdHLkJsb2NrKFwiSVAgaXMgbm90IHdpdGhpbiB0aGUgYWxsb3dlZCByYW5nZVwiKVxufSIsICJuYW1lIjogIk5ldC5Jc0luUmFuZ2VMaXN0IChOZXQuSVAsIFZFQ1RPUjxOZXQuSVBSYW5nZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBJUCBhZGRyZXNzIGZhbGxzIHdpdGhpbiBhbnkgb2YgdGhlIHNwZWNpZmllZCBJUCByYW5nZXMgaW4gdGhlIGxpc3QsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTmV0LklQYDogVGhlIElQIGFkZHJlc3MgdG8gY2hlY2suXG4yLiBgVkVDVE9SPE5ldC5JUFJhbmdlPmA6IFRoZSBsaXN0IG9mIElQIHJhbmdlcyB0byBjaGVjayBhZ2FpbnN0LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIElQIGFkZHJlc3MgaXMgYW4gSVB2NCBhZGRyZXNzLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGlwU3RyaW5nID0gXCIxOTIuMTY4LjEuMVwiXG5OZXQuSVAgaXBBZGRyZXNzID0gTmV0LlRvSVAoaXBTdHJpbmcpXG5cbklGIE5ldC5Jc0lQdjQoaXBBZGRyZXNzKSBUSEVOIHtcbiAgICAvLyBUaGUgSVAgYWRkcmVzcyAxOTIuMTY4LjEuMSBpcyBhbiBJUHY0IGFkZHJlc3MuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBJUCBhZGRyZXNzIDE5Mi4xNjguMS4xIGlzIG5vdCBhbiBJUHY0IGFkZHJlc3MuXG59IiwgIm5hbWUiOiAiTmV0LklzSVB2NCAoTmV0LklQKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gSVAgYWRkcmVzcyBpcyBhbiBJUHY0IGFkZHJlc3MsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTmV0LklQYDogVGhlIElQIGFkZHJlc3MgdG8gY2hlY2suIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gSVAgYWRkcmVzcyBpcyBhbiBJUHY2IGFkZHJlc3MuIiwgImNvZGVfZXhhbXBsZSI6ICJOZXQuSVAgY2xpZW50SVAgPSBNV0cuQ2xpZW50LklQKClcblxuSUYgTmV0LklzSVB2NihjbGllbnRJUCkgVEhFTiB7XG4gICAgLy8gVGhlIGNsaWVudCBJUCBpcyBhbiBJUHY2IGFkZHJlc3MuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBjbGllbnQgSVAgaXMgbm90IGFuIElQdjYgYWRkcmVzcy5cbn0iLCAibmFtZSI6ICJOZXQuSXNJUHY2IChOZXQuSVApIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBJUCBhZGRyZXNzIGlzIGFuIElQdjYgYWRkcmVzcywgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBOZXQuSVBgOiBUaGUgSVAgYWRkcmVzcyB0byBjaGVjay4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSB0d28gSVAgcmFuZ2VzIG92ZXJsYXAuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TmV0LklQUmFuZ2U+IGxpc3QxID0gXCIxOTIuMTY4LjEuMC8yNFwiLCBcIjEwLjAuMC4wLzhcIlxuVkVDVE9SPE5ldC5JUFJhbmdlPiBsaXN0MiA9IFwiMTkyLjE2OC4xLjEyOC8yNVwiLCBcIjE3Mi4xNi4wLjAvMTJcIlxuXG5CT09MRUFOIG92ZXJsYXAgPSBPdmVybGFwcyhsaXN0MSwgbGlzdDIpXG5cbklGIG92ZXJsYXAgVEhFTiB7XG4gICAgLy8gVGhlIElQIHJhbmdlcyBvdmVybGFwLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgSVAgcmFuZ2VzIGRvIG5vdCBvdmVybGFwLlxufSIsICJuYW1lIjogIk5ldC5PdmVybGFwcyAoTmV0LklQUmFuZ2UsIE5ldC5JUFJhbmdlKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgdHdvIElQIHJhbmdlcyBvdmVybGFwLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5ldC5JUFJhbmdlYDogVGhlIGZpcnN0IElQIHJhbmdlLlxuMi4gYE5ldC5JUFJhbmdlYDogVGhlIHNlY29uZCBJUCByYW5nZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOZXQuSVAiLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgYSBzdHJpbmcgdG8gYSBgTmV0LklQYCBhZGRyZXNzLiBUaGlzIGZ1bmN0aW9uIGlzIHN5bm9ueW1vdXMgd2l0aCBgTmV0LlRvSVBBZGRyZXNzKClgLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGlwU3RyaW5nID0gXCIxOTIuMTY4LjEuMVwiXG5OZXQuSVAgaXBBZGRyZXNzID0gTmV0LlRvSVAoaXBTdHJpbmcpXG4vLyBDb252ZXJ0ZWQgSVAgQWRkcmVzczogKyBpcEFkZHJlc3MiLCAibmFtZSI6ICJOZXQuVG9JUCAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGFuIElQIGFkZHJlc3MgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBJUCBhZGRyZXNzIHN0cmluZyB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIk5ldC5JUCIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBgTmV0LklQYCB2YWx1ZSBwYXJzZWQgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjQgb3IgSVB2NiBhZGRyZXNzLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHNvdXJjZUlQVGV4dCA9IFwiMjAwMTpkYjg6OjI1XCJcbk5ldC5JUCBzb3VyY2VJUCA9IE5ldC5Ub0lQQWRkcmVzcyhzb3VyY2VJUFRleHQpXG5OZXQuSVBSYW5nZSB0cnVzdGVkUmFuZ2UgPSBcIjIwMDE6ZGI4OjovMzJcIlxuXG5CT09MRUFOIGlzVHJ1c3RlZFNvdXJjZSA9IE5ldC5Jc0luUmFuZ2Uoc291cmNlSVAsIHRydXN0ZWRSYW5nZSlcbi8vIGlzVHJ1c3RlZFNvdXJjZSBub3cgZXF1YWxzIFRSVUUiLCAibmFtZSI6ICJOZXQuVG9JUEFkZHJlc3MgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYE5ldC5JUGAgdmFsdWUgcGFyc2VkIGZyb20gdGhlIGdpdmVuIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBJUCBhZGRyZXNzIHN0cmluZyB0byBwYXJzZSAoSVB2NCBvciBJUHY2KS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOZXQuSVBSYW5nZSIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBgTmV0LklQUmFuZ2VgIHZhbHVlIHBhcnNlZCBmcm9tIHRoZSBnaXZlbiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gSVAgYWRkcmVzcyByYW5nZS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBvZmZpY2VSYW5nZVRleHQgPSBcIjEwLjIwLjMwLjEtMTAuMjAuMzAuMjU0XCJcbk5ldC5JUFJhbmdlIG9mZmljZVJhbmdlID0gTmV0LlRvSVBBZGRyZXNzUmFuZ2Uob2ZmaWNlUmFuZ2VUZXh0KSIsICJuYW1lIjogIk5ldC5Ub0lQQWRkcmVzc1JhbmdlIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBOZXQuSVBSYW5nZWAgdmFsdWUgcGFyc2VkIGZyb20gdGhlIGdpdmVuIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBJUCBhZGRyZXNzIHJhbmdlIHN0cmluZyB0byBwYXJzZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TmV0LklQPiIsICJkZXNjcmlwdGlvbiI6ICJDb252ZXJ0cyBhIGxpc3Qgb2Ygc3RyaW5ncyB0byBhIGxpc3Qgb2YgYE5ldC5JUGAgYWRkcmVzc2VzLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgdmVjdG9yIG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIElQIGFkZHJlc3Nlc1xuVkVDVE9SPFNUUklORz4gaXBTdHJpbmdzID0gXCIxOTIuMTY4LjEuMVwiLCBcIjEwLjAuMC4xXCIsIFwiMTcyLjE2LjAuMVwiXG5cbi8vIENvbnZlcnQgdGhlIHZlY3RvciBvZiBzdHJpbmdzIHRvIGEgbGlzdCBvZiBOZXQuSVAgb2JqZWN0c1xuVkVDVE9SPE5ldC5JUD4gaXBMaXN0ID0gTmV0LlRvSVBMaXN0KGlwU3RyaW5ncylcblxuLy8gQ29udmVydGVkIElQIExpc3Q6IFxuLy8gaXBMaXN0IiwgIm5hbWUiOiAiTmV0LlRvSVBMaXN0IChWRUNUT1I8U1RSSU5HPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGBWRUNUT1I8TmV0LklQPmAgd2hlcmUgZWFjaCBzdHJpbmcgaW4gdGhlIGlucHV0IGxpc3QgaGFzIGJlZW4gY29udmVydGVkIHRvIGEgYE5ldC5JUGAgYWRkcmVzcy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGxpc3Qgb2YgSVAgYWRkcmVzcyBzdHJpbmdzIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTmV0LklQUmFuZ2UiLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgYSBzdHJpbmcgdG8gYSBgTmV0LklQUmFuZ2VgIG9iamVjdC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBpcFJhbmdlU3RyaW5nID0gXCIxOTIuMTY4LjEuMC8yNFwiXG5OZXQuSVBSYW5nZSBpcFJhbmdlID0gTmV0LlRvSVBSYW5nZShpcFJhbmdlU3RyaW5nKVxuXG4vLyBBc3N1bWluZyB3ZSBoYXZlIGEgZnVuY3Rpb24gdG8gZ2V0IHRoZSBjbGllbnQncyBJUCBhZGRyZXNzXG5OZXQuSVAgY2xpZW50SVAgPSBHZXRDbGllbnRJUCgpXG5cbklGIGNsaWVudElQIElOIGlwUmFuZ2UgVEhFTiB7XG4gICAgLy8gQ2xpZW50IElQIGlzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHJhbmdlLlxuICAgIE1XRy5BbGxvdyhcIklQIHdpdGhpbiByYW5nZVwiKVxufSBFTFNFIHtcbiAgICAvLyBDbGllbnQgSVAgaXMgbm90IHdpdGhpbiB0aGUgc3BlY2lmaWVkIHJhbmdlLlxuICAgIE1XRy5CbG9jayhcIklQIG5vdCB3aXRoaW4gcmFuZ2VcIilcbn1cblxuLy8gRHVtbXkgZnVuY3Rpb24gdG8gc2ltdWxhdGUgZ2V0dGluZyB0aGUgY2xpZW50J3MgSVAgYWRkcmVzc1xuRlVOQ1RJT04gR2V0Q2xpZW50SVAoKSBSRVRVUk5TIE5ldC5JUCB7XG4gICAgLy8gVGhpcyB3b3VsZCBub3JtYWxseSBiZSByZXBsYWNlZCB3aXRoIGFjdHVhbCBsb2dpYyB0byBnZXQgdGhlIGNsaWVudCdzIElQXG4gICAgUkVUVVJOIE5ldC5Ub0lQKFwiMTkyLjE2OC4xLjVcIilcbn0iLCAibmFtZSI6ICJOZXQuVG9JUFJhbmdlIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYW4gSVAgcmFuZ2UgcGFyc2VkIGZyb20gdGhlIHByb3ZpZGVkIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IEFuIElQIGFkZHJlc3Mgb3IgcmFuZ2Ugc3RyaW5nIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE5ldC5JUFJhbmdlPiIsICJkZXNjcmlwdGlvbiI6ICJDb252ZXJ0cyBhIGxpc3Qgb2Ygc3RyaW5ncyB0byBhIGxpc3Qgb2YgYE5ldC5JUFJhbmdlYCBvYmplY3RzLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgVkVDVE9SIG9mIFNUUklOR3MgcmVwcmVzZW50aW5nIElQIGFkZHJlc3NlcyBvciByYW5nZXNcblZFQ1RPUjxTVFJJTkc+IGlwU3RyaW5ncyA9IFwiMTkyLjE2OC4xLjAvMjRcIiwgXCIxMC4wLjAuMVwiLCBcIjE3Mi4xNi4wLjAvMTZcIlxuXG4vLyBDb252ZXJ0IHRoZSBWRUNUT1Igb2YgU1RSSU5HcyB0byBhIFZFQ1RPUjxOZXQuSVBSYW5nZT4gb2JqZWN0XG5WRUNUT1I8TmV0LklQUmFuZ2U+IGlwUmFuZ2VzID0gTmV0LlRvSVBSYW5nZShpcFN0cmluZ3MpXG5cbi8vIFVzZSB0aGUgaXBSYW5nZXMgb2JqZWN0IGZvciBmdXJ0aGVyIHByb2Nlc3Npbmdcbk5ldC5JUCB0ZXN0SVAgPSBOZXQuSVAoXCIxOTIuMTY4LjEuNVwiKVxuQk9PTEVBTiBpc0luUmFuZ2UgPSBGQUxTRVxuXG4vLyBDaGVjayBpZiB0aGUgdGVzdElQIGlzIHdpdGhpbiBhbnkgb2YgdGhlIGRlZmluZWQgcmFuZ2VzXG5GT1IgRUFDSCByYW5nZSBJTiBpcFJhbmdlcyB7XG4gICAgSUYgcmFuZ2UuQ29udGFpbnModGVzdElQKSBUSEVOIHtcbiAgICAgICAgaXNJblJhbmdlID0gVFJVRVxuICAgICAgICBCUkVBS1xuICAgIH1cbn1cblxuLy8gUHJpbnQgdGhlIHJlc3VsdFxuSUYgaXNJblJhbmdlIFRIRU4ge1xuICAgIC8vIElQIGlzIHdpdGhpbiB0aGUgcmFuZ2Vcbn0gRUxTRSB7XG4gICAgLy8gSVAgaXMgbm90IHdpdGhpbiB0aGUgcmFuZ2Vcbn0iLCAibmFtZSI6ICJOZXQuVG9JUFJhbmdlIChWRUNUT1I8U1RSSU5HPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGBWRUNUT1I8TmV0LklQUmFuZ2U+YCBjb252ZXJ0ZWQgZnJvbSB0aGUgaW5wdXQgbGlzdCBvZiBzdHJpbmdzLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgbGlzdCBvZiBJUCBhZGRyZXNzIG9yIHJhbmdlIHN0cmluZ3MgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgYSBgTmV0LklQYCBhZGRyZXNzIHRvIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24uIiwgImNvZGVfZXhhbXBsZSI6ICJOZXQuSVAgaXBBZGRyZXNzID0gTmV0LklQKFwiMTkyLjE2OC4xLjFcIilcblNUUklORyBpcFN0cmluZyA9IE5ldC5Ub1N0cmluZyhpcEFkZHJlc3MpXG4vLyBUaGUgSVAgYWRkcmVzcyBhcyBhIHN0cmluZyBpczogXCIgKyBpcFN0cmluZyIsICJuYW1lIjogIk5ldC5Ub1N0cmluZyAoTmV0LklQKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBJUCBhZGRyZXNzIGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTmV0LklQYDogVGhlIElQIGFkZHJlc3MgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgYSBgTmV0LklQUmFuZ2VgIHRvIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24uIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgYW4gSVAgcmFuZ2Vcbk5ldC5JUFJhbmdlIGlwUmFuZ2UgPSBOZXQuSVBSYW5nZShcIjE5Mi4xNjguMS4wXCIsIFwiMTkyLjE2OC4xLjI1NVwiKVxuXG4vLyBDb252ZXJ0IHRoZSBJUCByYW5nZSB0byBhIHN0cmluZ1xuU1RSSU5HIGlwUmFuZ2VTdHJpbmcgPSBOZXQuVG9TdHJpbmcoaXBSYW5nZSlcblxuLy8gVGhlIElQIHJhbmdlIGlzOiBcbi8vIGlwUmFuZ2VTdHJpbmciLCAibmFtZSI6ICJOZXQuVG9TdHJpbmcgKE5ldC5JUFJhbmdlKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBJUCBhZGRyZXNzIHJhbmdlIGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTmV0LklQUmFuZ2VgOiBUaGUgSVAgYWRkcmVzcyByYW5nZSB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJDb252ZXJ0cyBhIGxpc3Qgb2YgYE5ldC5JUGAgYWRkcmVzc2VzIHRvIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24uIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgYSBWRUNUT1Igb2YgTmV0LklQXG5WRUNUT1I8TmV0LklQPiBpcExpc3QgPSBOZXQuSVAoXCIxOTIuMTY4LjEuMVwiKSwgTmV0LklQKFwiMTAuMC4wLjFcIiksIE5ldC5JUChcIjE3Mi4xNi4wLjFcIik7XG5cbi8vIENvbnZlcnQgdGhlIFZFQ1RPUiBvZiBOZXQuSVAgdG8gYSBTVFJJTkdcblNUUklORyBpcFN0cmluZyA9IE5ldC5Ub1N0cmluZyhpcExpc3QpO1xuXG4vLyBQcmludCB0aGUgcmVzdWx0aW5nIFNUUklORyB0byB0aGUgY29uc29sZSB3YXMgcHJldmlvdXNseSBkb25lIGhlcmVcbi8vIGlwU3RyaW5nIiwgIm5hbWUiOiAiTmV0LlRvU3RyaW5nIChWRUNUT1I8TmV0LklQPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBJUCBsaXN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5ldC5JUD5gOiBUaGUgbGlzdCBvZiBJUCBhZGRyZXNzZXMgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiQ29udmVydHMgYSBsaXN0IG9mIGBOZXQuSVBSYW5nZWAgb2JqZWN0cyB0byBpdHMgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgVkVDVE9SIG9mIE5ldC5JUFJhbmdlXG5WRUNUT1I8TmV0LklQUmFuZ2U+IGlwUmFuZ2VzID0gTmV0LklQUmFuZ2UoXCIxOTIuMTY4LjEuMC8yNFwiKSwgTmV0LklQUmFuZ2UoXCIxMC4wLjAuMC84XCIpO1xuXG4vLyBDb252ZXJ0IHRoZSBWRUNUT1Igb2YgTmV0LklQUmFuZ2UgdG8gYSBTVFJJTkdcblNUUklORyBpcFJhbmdlc1N0cmluZyA9IE5ldC5Ub1N0cmluZyhpcFJhbmdlcyk7XG5cbi8vIFByaW50IHRoZSByZXN1bHRpbmcgU1RSSU5HIHRvIHRoZSBjb25zb2xlXG4vLyBERUJVRyhpcFJhbmdlc1N0cmluZykiLCAibmFtZSI6ICJOZXQuVG9TdHJpbmcgKFZFQ1RPUjxOZXQuSVBSYW5nZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHByb3ZpZGVkIElQIHJhbmdlIGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TmV0LklQUmFuZ2U+YDogVGhlIGxpc3Qgb2YgSVAgcmFuZ2VzIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgZWxlbWVudCBpbiB0aGUgZmlyc3QgYFJlZ0V4SlNpLkxpc3RgIGNhbiBiZSBmb3VuZCBpbiB0aGUgc2Vjb25kLiIsICJjb2RlX2V4YW1wbGUiOiAiUmVnRXhKU2kuTGlzdCBsaXN0MSA9IFtcImV4YW1wbGVfbGlzdDFcIl1cblJlZ0V4SlNpLkxpc3QgbGlzdDIgPSBbXCJleGFtcGxlX2xpc3QyXCJdXG5cbklGIE92ZXJsYXBzKGxpc3QxLCBsaXN0MikgVEhFTiB7XG4gICAgLy8gVGhlIGxpc3RzIGhhdmUgb3ZlcmxhcHBpbmcgZWxlbWVudHMuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBsaXN0cyBkbyBub3QgaGF2ZSBvdmVybGFwcGluZyBlbGVtZW50cy5cbn0iLCAibmFtZSI6ICJPdmVybGFwcyAoUmVnRXhKU2kuTGlzdCwgUmVnRXhKU2kuTGlzdCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgYW55IGVsZW1lbnQgaW4gb25lIGxpc3QgY2FuIGJlIGZvdW5kIGluIHRoZSBvdGhlciwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaS5MaXN0YDogVGhlIGZpcnN0IGxpc3QuXG4yLiBgUmVnRXhKU2kuTGlzdGA6IFRoZSBzZWNvbmQgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGFueSBlbGVtZW50IGluIHRoZSBmaXJzdCBgVkVDVE9SPE1lZGlhVHlwZT5gIGNhbiBiZSBmb3VuZCBpbiB0aGUgc2Vjb25kLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE1lZGlhVHlwZT4gYWxsb3dlZE1lZGlhVHlwZXMgPSBbXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiYXBwbGljYXRpb24vcGRmXCJdXG5WRUNUT1I8TWVkaWFUeXBlPiByZXF1ZXN0TWVkaWFUeXBlcyA9IFtcImltYWdlL2dpZlwiLCBcImltYWdlL2pwZWdcIl1cblxuSUYgT3ZlcmxhcHMoYWxsb3dlZE1lZGlhVHlwZXMsIHJlcXVlc3RNZWRpYVR5cGVzKSBUSEVOIHtcbiAgICAvLyBUaGVyZSBpcyBhbiBvdmVybGFwIGluIG1lZGlhIHR5cGVzLlxuICAgIE1XRy5BbGxvdyhcIk1lZGlhVHlwZU92ZXJsYXBcIilcbn0gRUxTRSB7XG4gICAgLy8gTm8gb3ZlcmxhcCBpbiBtZWRpYSB0eXBlcy5cbiAgICBNV0cuQmxvY2soXCJOb01lZGlhVHlwZU92ZXJsYXBcIilcbn0iLCAibmFtZSI6ICJPdmVybGFwcyAoVkVDVE9SPE1lZGlhVHlwZT4sIFZFQ1RPUjxNZWRpYVR5cGU+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgZWxlbWVudCBpbiBvbmUgbGlzdCBjYW4gYmUgZm91bmQgaW4gdGhlIG90aGVyLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNZWRpYVR5cGU+YDogVGhlIGZpcnN0IGxpc3QuXG4yLiBgVkVDVE9SPE1lZGlhVHlwZT5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgZWxlbWVudCBpbiB0aGUgZmlyc3QgYFZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPmAgY2FuIGJlIGZvdW5kIGluIHRoZSBzZWNvbmQuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4gbGlzdDEgPSBbXCJob3N0X2NlcnRfbGlzdDFcIl1cblZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPiBsaXN0MiA9IFtcImhvc3RfY2VydF9saXN0MlwiXVxuXG5JRiBPdmVybGFwcyhsaXN0MSwgbGlzdDIpIFRIRU4ge1xuICAgIC8vIFRoZSBsaXN0cyBoYXZlIG92ZXJsYXBwaW5nIGVsZW1lbnRzLlxuICAgIE1XRy5CbG9jayhcIkFjY2VzcyBibG9ja2VkIGR1ZSB0byBvdmVybGFwcGluZyBob3N0IGFuZCBjZXJ0aWZpY2F0ZS5cIilcbn0gRUxTRSB7XG4gICAgLy8gVGhlIGxpc3RzIGRvIG5vdCBoYXZlIG92ZXJsYXBwaW5nIGVsZW1lbnRzLlxuICAgIE1XRy5BbGxvdyhcIk5vIG92ZXJsYXAgZGV0ZWN0ZWQuXCIpXG59IiwgIm5hbWUiOiAiT3ZlcmxhcHMgKFZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPiwgVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgZWxlbWVudCBpbiBvbmUgbGlzdCBjYW4gYmUgZm91bmQgaW4gdGhlIG90aGVyLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPmA6IFRoZSBmaXJzdCBsaXN0LlxuMi4gYFZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPmA6IFRoZSBzZWNvbmQgbGlzdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGFueSBlbGVtZW50IGluIHRoZSBmaXJzdCBgVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT5gIGNhbiBiZSBmb3VuZCBpbiB0aGUgc2Vjb25kLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gYWxsb3dlZENhdGVnb3JpZXMgPSBbXCJhbGxvd2VkX2NhdGVnb3JpZXNfbGlzdFwiXVxuVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gY3VycmVudENhdGVnb3JpZXMgPSBNV0cuVXJsKCkuQ2F0ZWdvcmllc1xuXG5JRiBPdmVybGFwcyhhbGxvd2VkQ2F0ZWdvcmllcywgY3VycmVudENhdGVnb3JpZXMpIFRIRU4ge1xuICAgIC8vIENhdGVnb3J5IGFsbG93ZWRcbiAgICBNV0cuQWxsb3coXCJDYXRlZ29yeSBhbGxvd2VkXCIpXG59IEVMU0Uge1xuICAgIC8vIENhdGVnb3J5IG5vdCBhbGxvd2VkXG4gICAgTVdHLkJsb2NrKFwiQ2F0ZWdvcnkgbm90IGFsbG93ZWRcIilcbn0iLCAibmFtZSI6ICJPdmVybGFwcyAoVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4sIFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgZWxlbWVudCBpbiBvbmUgbGlzdCBjYW4gYmUgZm91bmQgaW4gdGhlIG90aGVyLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+YDogVGhlIGZpcnN0IGxpc3QuXG4yLiBgVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgZWxlbWVudCBpbiB0aGUgZmlyc3QgYFZFQ1RPUjxOZXQuSVA+YCBjYW4gYmUgZm91bmQgaW4gdGhlIHNlY29uZC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxOZXQuSVA+IGxpc3QxID0gTmV0LklQKFwiMTkyLjE2OC4xLjFcIiksIE5ldC5JUChcIjE5Mi4xNjguMS4yXCIpLCBOZXQuSVAoXCIxOTIuMTY4LjEuM1wiKVxuVkVDVE9SPE5ldC5JUD4gbGlzdDIgPSBOZXQuSVAoXCIxOTIuMTY4LjEuM1wiKSwgTmV0LklQKFwiMTkyLjE2OC4xLjRcIiksIE5ldC5JUChcIjE5Mi4xNjguMS41XCIpXG5cbklGIE92ZXJsYXBzKGxpc3QxLCBsaXN0MikgVEhFTiB7XG4gICAgLy8gSVAgbGlzdHMgb3ZlcmxhcFxuICAgIE1XRy5CbG9jayhcIklQIG92ZXJsYXAgZGV0ZWN0ZWRcIilcbn0gRUxTRSB7XG4gICAgLy8gTm8gSVAgb3ZlcmxhcFxuICAgIE1XRy5BbGxvdyhcIk5vIElQIG92ZXJsYXAgZGV0ZWN0ZWRcIilcbn0iLCAibmFtZSI6ICJPdmVybGFwcyAoVkVDVE9SPE5ldC5JUD4sIFZFQ1RPUjxOZXQuSVA+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgZWxlbWVudCBpbiBvbmUgbGlzdCBjYW4gYmUgZm91bmQgaW4gdGhlIG90aGVyLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOZXQuSVA+YDogVGhlIGZpcnN0IGxpc3QuXG4yLiBgVkVDVE9SPE5ldC5JUD5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgZWxlbWVudCBpbiB0aGUgZmlyc3QgYFZFQ1RPUjxOZXQuSVBSYW5nZT5gIGNhbiBiZSBmb3VuZCBpbiB0aGUgc2Vjb25kLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5ldC5JUFJhbmdlPiBsaXN0MSA9IFtcIklQUmFuZ2VMaXN0MVwiXVxuVkVDVE9SPE5ldC5JUFJhbmdlPiBsaXN0MiA9IFtcIklQUmFuZ2VMaXN0MlwiXVxuXG5JRiBPdmVybGFwcyhsaXN0MSwgbGlzdDIpIFRIRU4ge1xuICAgIC8vIFRoZSBJUCByYW5nZXMgb3ZlcmxhcC5cbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgYmxvY2tlZCBkdWUgdG8gb3ZlcmxhcHBpbmcgSVAgcmFuZ2VzLlwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGUgSVAgcmFuZ2VzIGRvIG5vdCBvdmVybGFwLlxuICAgIE1XRy5BbGxvdyhcIk5vIG92ZXJsYXAgZGV0ZWN0ZWQuXCIpXG59IiwgIm5hbWUiOiAiT3ZlcmxhcHMgKFZFQ1RPUjxOZXQuSVBSYW5nZT4sIFZFQ1RPUjxOZXQuSVBSYW5nZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGFueSBlbGVtZW50IGluIG9uZSBsaXN0IGNhbiBiZSBmb3VuZCBpbiB0aGUgb3RoZXIsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5ldC5JUFJhbmdlPmA6IFRoZSBmaXJzdCBsaXN0LlxuMi4gYFZFQ1RPUjxOZXQuSVBSYW5nZT5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgZWxlbWVudCBpbiB0aGUgZmlyc3QgYFZFQ1RPUjxOVU1CRVI+YCBjYW4gYmUgZm91bmQgaW4gdGhlIHNlY29uZC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxOVU1CRVI+IHZlY3RvcjEgPSAxLCAyLCAzLCA0LCA1XG5WRUNUT1I8TlVNQkVSPiB2ZWN0b3IyID0gNCwgNSwgNiwgNywgOFxuXG5JRiBPdmVybGFwcyh2ZWN0b3IxLCB2ZWN0b3IyKSBUSEVOIHtcbiAgICAvLyBUaGUgdmVjdG9ycyBvdmVybGFwLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgdmVjdG9ycyBkbyBub3Qgb3ZlcmxhcC5cbn0iLCAibmFtZSI6ICJPdmVybGFwcyAoVkVDVE9SPE5VTUJFUj4sIFZFQ1RPUjxOVU1CRVI+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgZWxlbWVudCBpbiBvbmUgbGlzdCBjYW4gYmUgZm91bmQgaW4gdGhlIG90aGVyLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOVU1CRVI+YDogVGhlIGZpcnN0IGxpc3QuXG4yLiBgVkVDVE9SPE5VTUJFUj5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgZWxlbWVudCBmcm9tIGVpdGhlciBgVkVDVE9SPFNUUklORz5gIGlzIGZvdW5kIGluIHRoZSBvdGhlci4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxTVFJJTkc+IGxpc3QxID0gXCJhcHBsZVwiLCBcImJhbmFuYVwiLCBcImNoZXJyeVwiXG5WRUNUT1I8U1RSSU5HPiBsaXN0MiA9IFwiYmFuYW5hXCIsIFwiZGF0ZVwiLCBcImZpZ1wiXG5cbklGIE92ZXJsYXBzKGxpc3QxLCBsaXN0MikgVEhFTiB7XG4gICAgLy8gVGhlIGxpc3RzIGhhdmUgY29tbW9uIGVsZW1lbnRzLlxufSBFTFNFIHtcbiAgICAvLyBUaGUgbGlzdHMgZG8gbm90IGhhdmUgY29tbW9uIGVsZW1lbnRzLlxufSIsICJuYW1lIjogIk92ZXJsYXBzIChWRUNUT1I8U1RSSU5HPiwgVkVDVE9SPFNUUklORz4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGFueSBvZiB0aGUgZWxlbWVudHMgaW4gb25lIGxpc3QgY2FuIGJlIGZvdW5kIGluIHRoZSBvdGhlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGZpcnN0IGxpc3QuXG4yLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgc2Vjb25kIGxpc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBhbnkgZWxlbWVudCBmcm9tIGVpdGhlciBgVkVDVE9SPFNUUklORz5gIGlzIGZvdW5kIGluIHRoZSBvdGhlciwgaWdub3JpbmcgY2FzZS4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxTVFJJTkc+IGxpc3QxID0gXCJhcHBsZVwiLCBcImJhbmFuYVwiLCBcImNoZXJyeVwiXG5WRUNUT1I8U1RSSU5HPiBsaXN0MiA9IFwiQmFuYW5hXCIsIFwiZGF0ZVwiLCBcImVsZGVyYmVycnlcIlxuXG5JRiBPdmVybGFwc0Nhc2VJbnNlbnNpdGl2ZShsaXN0MSwgbGlzdDIpIFRIRU4ge1xuICAgIC8vIFRoZXJlIGlzIGFuIG92ZXJsYXAgYmV0d2VlbiB0aGUgdHdvIGxpc3RzLlxufSBFTFNFIHtcbiAgICAvLyBUaGVyZSBpcyBubyBvdmVybGFwIGJldHdlZW4gdGhlIHR3byBsaXN0cy5cbn0iLCAibmFtZSI6ICJPdmVybGFwc0Nhc2VJbnNlbnNpdGl2ZSAoVkVDVE9SPFNUUklORz4sIFZFQ1RPUjxTVFJJTkc+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGVyZSBpcyBhbnkgb3ZlcmxhcCAoY2FzZS1pbnNlbnNpdGl2ZSkgYmV0d2VlbiB0aGUgdHdvIHZlY3RvcnMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8U1RSSU5HPmA6IFRoZSBmaXJzdCBsaXN0LlxuMi4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIHNlY29uZCBsaXN0LiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBzZWF0IHVzYWdlIGluZm9ybWF0aW9uIGZvciB0aGUgUkJJIElzb2xhdGVBbGwgbGljZW5zZSBhcyBhIEpTT04gb2JqZWN0LiIsICJjb2RlX2V4YW1wbGUiOiAiSlNPTiBzZWF0SW5mbyA9IFJCSS5HZXRJc29sYXRlQWxsU2VhdEluZm8oKVxuLy8gQ3VycmVudCBSQkkgSXNvbGF0ZUFsbCBzZWF0cyB0YWtlbjogXCIgKyBzZWF0SW5mbyIsICJuYW1lIjogIlJCSS5HZXRJc29sYXRlQWxsU2VhdEluZm8gKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgc2VhdCB1c2FnZSBpbmZvcm1hdGlvbiBmb3IgdGhlIFJCSSBJc29sYXRlQWxsIGxpY2Vuc2UuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgUkJJIHJlcXVlc3QgSUQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgcmVxdWVzdElEID0gUkJJLkdldFJlcXVlc3RJRCgpXG4vLyBSQkkgUmVxdWVzdCBJRDogICsgcmVxdWVzdElEIiwgIm5hbWUiOiAiUkJJLkdldFJlcXVlc3RJRCAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBSQkkgcmVxdWVzdCBJRC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBSQkkgc2Vzc2lvbiBJRC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBzZXNzaW9uSUQgPSBSQkkuR2V0U2Vzc2lvbklEKClcbi8vIFJCSSBTZXNzaW9uIElEOiArIHNlc3Npb25JRCIsICJuYW1lIjogIlJCSS5HZXRTZXNzaW9uSUQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgUkJJIHNlc3Npb24gSUQuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgUkJJIHRhYiBJRC4iLCAiY29kZV9leGFtcGxlIjogIi8vIENhbGwgdGhlIFJCSS5HZXRUYWJJRCgpIGZ1bmN0aW9uIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluIGEgdmFyaWFibGVcblNUUklORyB0YWJJRCA9IFJCSS5HZXRUYWJJRCgpXG5cbi8vIFRoZSBSQkkgVGFiIElEIGlzOiBcIiArIHRhYklEIiwgIm5hbWUiOiAiUkJJLkdldFRhYklEICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIFJCSSB0YWIgSUQuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGEgc2VhdCBpcyBhdmFpbGFibGUgZm9yIHRoZSBjdXJyZW50IHVzZXIgb24gdGhlIFJCSSBJc29sYXRlQWxsIGxpY2Vuc2UuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBSQkkuSGFzVXNlcklzb2xhdGVBbGxTZWF0KCkgVEhFTiB7XG4gICAgLy8gQSBzZWF0IGlzIGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnQgdXNlciBvbiB0aGUgUkJJIElzb2xhdGVBbGwgbGljZW5zZS5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUgaWYgYSBzZWF0IGlzIGF2YWlsYWJsZVxufSBFTFNFIHtcbiAgICAvLyBObyBzZWF0IGlzIGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnQgdXNlciBvbiB0aGUgUkJJIElzb2xhdGVBbGwgbGljZW5zZS5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUgaWYgbm8gc2VhdCBpcyBhdmFpbGFibGVcbn0iLCAibmFtZSI6ICJSQkkuSGFzVXNlcklzb2xhdGVBbGxTZWF0ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgc2VhdCBpcyBhdmFpbGFibGUgZm9yIHRoZSBjdXJyZW50IHVzZXIgb24gdGhlIFJCSSBJc29sYXRlQWxsIGxpY2Vuc2UuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IHJlcXVlc3QgaXMgcGFydCBvZiBzZXNzaW9uIGVzdGFibGlzaG1lbnQuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBSQkkuSW5TZXNzaW9uQ3JlYXRpb24oKSBUSEVOIHtcbiAgICAvLyBUaGUgY3VycmVudCByZXF1ZXN0IGlzIHBhcnQgb2Ygc2Vzc2lvbiBlc3RhYmxpc2htZW50LlxufSBFTFNFIHtcbiAgICAvLyBUaGUgY3VycmVudCByZXF1ZXN0IGlzIG5vdCBwYXJ0IG9mIHNlc3Npb24gZXN0YWJsaXNobWVudC5cbn0iLCAibmFtZSI6ICJSQkkuSW5TZXNzaW9uQ3JlYXRpb24gKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgcmVxdWVzdCBpcyBwYXJ0IG9mIHNlc3Npb24gZXN0YWJsaXNobWVudC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgcmVxdWVzdCBpcyBpbiBhIGZ1bGwgaXNvbGF0aW9uIHNlc3Npb24uIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBSQkkuSXNGdWxsSXNvbGF0aW9uU2Vzc2lvbigpIFRIRU4ge1xuICAgIC8vIFRoaXMgaXMgYSBmdWxsIGlzb2xhdGlvbiBzZXNzaW9uLlxuICAgIC8vIEFkZGl0aW9uYWwgbG9naWMgZm9yIGZ1bGwgaXNvbGF0aW9uIHNlc3Npb25zXG59IEVMU0Uge1xuICAgIC8vIFRoaXMgaXMgbm90IGEgZnVsbCBpc29sYXRpb24gc2Vzc2lvbi5cbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGZvciBub24tZnVsbCBpc29sYXRpb24gc2Vzc2lvbnNcbn0iLCAibmFtZSI6ICJSQkkuSXNGdWxsSXNvbGF0aW9uU2Vzc2lvbiAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgY3VycmVudCByZXF1ZXN0IGlzIGluIGEgZnVsbCBpc29sYXRpb24gc2Vzc2lvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgcmVxdWVzdCBpcyBpc29sYXRlZC4iLCAiY29kZV9leGFtcGxlIjogIklGIFJCSS5Jc0luSXNvbGF0aW9uKCkgVEhFTiB7XG4gICAgLy8gVGhlIGN1cnJlbnQgcmVxdWVzdCBpcyBpc29sYXRlZC5cbiAgICAvLyBBZGRpdGlvbmFsIGFjdGlvbnMgY2FuIGJlIHRha2VuIGhlcmUgaWYgdGhlIHJlcXVlc3QgaXMgaXNvbGF0ZWRcbn0gRUxTRSB7XG4gICAgLy8gVGhlIGN1cnJlbnQgcmVxdWVzdCBpcyBub3QgaXNvbGF0ZWQuXG4gICAgLy8gQWRkaXRpb25hbCBhY3Rpb25zIGNhbiBiZSB0YWtlbiBoZXJlIGlmIHRoZSByZXF1ZXN0IGlzIG5vdCBpc29sYXRlZFxufSIsICJuYW1lIjogIlJCSS5Jc0luSXNvbGF0aW9uICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IHJlcXVlc3QgaXMgaXNvbGF0ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IHJlcXVlc3QgaXMgaW4gYSByaXNreSB3ZWIgaXNvbGF0aW9uIHNlc3Npb24uIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBSQkkuSXNSaXNreVdlYlNlc3Npb24oKSBUSEVOIHtcbiAgICAvLyBUaGlzIGlzIGEgcmlza3kgd2ViIHNlc3Npb24uXG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIGJsb2NrZWQgZHVlIHRvIHJpc2t5IHdlYiBzZXNzaW9uLlwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGlzIGlzIG5vdCBhIHJpc2t5IHdlYiBzZXNzaW9uLlxuICAgIE1XRy5BbGxvdyhcIlNhZmUgd2ViIHNlc3Npb24uXCIpXG59IiwgIm5hbWUiOiAiUkJJLklzUmlza3lXZWJTZXNzaW9uICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IHJlcXVlc3QgaXMgaW4gYSByaXNreSB3ZWIgaXNvbGF0aW9uIHNlc3Npb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIk5vbmUifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGxpY2Vuc2VkIHNlYXRzIGZvciBmdWxsIGlzb2xhdGlvbi4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBzZWF0cyA9IFJCSS5MaWNlbnNlZEZ1bGxJc29sYXRpb25TZWF0cygpXG4vLyBOdW1iZXIgb2YgbGljZW5zZWQgZnVsbCBpc29sYXRpb24gc2VhdHM6IFwiICsgc2VhdHMiLCAibmFtZSI6ICJSQkkuTGljZW5zZWRGdWxsSXNvbGF0aW9uU2VhdHMgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGxpY2Vuc2VkIHNlYXRzIGZvciBmdWxsIGlzb2xhdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgcmVxdWVzdCBzaG91bGQgaGF2ZSBiZWVuIGlzb2xhdGVkIGJ1dCBpc29sYXRpb24gd2FzIG5vdCBwb3NzaWJsZS4iLCAiY29kZV9leGFtcGxlIjogIklGIFJCSS5NdXN0QmVJc29sYXRlZCgpIFRIRU4ge1xuICAgIC8vIFRoZSBjdXJyZW50IHJlcXVlc3Qgc2hvdWxkIGhhdmUgYmVlbiBpc29sYXRlZCwgYnV0IGlzb2xhdGlvbiB3YXMgbm90IHBvc3NpYmxlLlxuICAgIE1XRy5CbG9jayhcIklzb2xhdGlvbiByZXF1aXJlZCBidXQgbm90IHBvc3NpYmxlXCIpXG59IEVMU0Uge1xuICAgIC8vIFRoZSBjdXJyZW50IHJlcXVlc3QgZG9lcyBub3QgcmVxdWlyZSBpc29sYXRpb24gb3IgaXNvbGF0aW9uIHdhcyBzdWNjZXNzZnVsLlxuICAgIE1XRy5BbGxvdyhcIklzb2xhdGlvbiBjaGVjayBwYXNzZWRcIilcbn0iLCAibmFtZSI6ICJSQkkuTXVzdEJlSXNvbGF0ZWQgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgcmVxdWVzdCBzaG91bGQgaGF2ZSBiZWVuIGlzb2xhdGVkIGJ1dCBpc29sYXRpb24gd2FzIG5vdCBwb3NzaWJsZS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGN1cnJlbnQgVVJMIGlzIGlkZW50aWZpZWQgYXMgcmlza3kuIiwgImNvZGVfZXhhbXBsZSI6ICJCT09MRUFOIFVybElzUmlza3koKVxuQk9PTEVBTiBpc1Jpc2t5ID0gUkJJLlVybElzUmlza3koKVxuSUYgaXNSaXNreSBUSEVOIHtcbiAgICBNV0cuQmxvY2soXCJCbG9ja2VkIGJlY2F1c2UgdGhlIGRlc3RpbmF0aW9uIFVSTCBpcyByaXNreVwiKVxufSIsICJuYW1lIjogIlJCSS5VcmxJc1Jpc2t5ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjdXJyZW50IFVSTCBpcyBpZGVudGlmaWVkIGFzIHJpc2t5LCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJSZWdFeEpTaS5MaXN0IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBnaXZlbiBsaXN0IHdpdGggdGhlIHNwZWNpZmllZCByZWd1bGFyIGV4cHJlc3Npb24gYXBwZW5kZWQuIiwgImNvZGVfZXhhbXBsZSI6ICJSZWdFeEpTaS5MaXN0IGJsb2NrZWRQYXR0ZXJucyA9IFsgXVxuUmVnRXhKU2kgbG9naW5QYXR0ZXJuID0gXCIvbG9naW5cIlxuXG5ibG9ja2VkUGF0dGVybnMgPSBibG9ja2VkUGF0dGVybnMuQXBwZW5kIChsb2dpblBhdHRlcm4pIiwgIm5hbWUiOiAiUmVnRXhKU2kuQXBwZW5kIChSZWdFeEpTaS5MaXN0LCBSZWdFeEpTaSkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uIGFwcGVuZGVkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgUmVnRXhKU2kuTGlzdGA6IFRoZSBsaXN0IHRvIGFwcGVuZCB0by5cbjIuIGBSZWdFeEpTaWA6IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gYXBwZW5kLiJ9LCB7InJldHVybl90eXBlIjogIlJlZ0V4SlNpLkxpc3QiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXN0IHdpdGggdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbiBhcHBlbmRlZC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBSZWdFeEpTaS5MaXN0XG5SZWdFeEpTaS5MaXN0IHJlZ2V4TGlzdFxuXG4vLyBEZWZpbmUgYSByZWd1bGFyIGV4cHJlc3Npb24gc3RyaW5nXG5TVFJJTkcgcmVnZXhQYXR0ZXJuID0gXCJeaHR0cHM/Oi8vLipcIlxuXG4vLyBBZGQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byB0aGUgbGlzdFxuUmVnRXhKU2kuQWRkKHJlZ2V4TGlzdCwgcmVnZXhQYXR0ZXJuKVxuXG4vLyBSZWd1bGFyIGV4cHJlc3Npb24gYWRkZWQgdG8gdGhlIGxpc3QuIiwgIm5hbWUiOiAiUmVnRXhKU2kuQXBwZW5kIChSZWdFeEpTaS5MaXN0LCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gbGlzdCB3aXRoIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24gYXBwZW5kZWQgdG8gdGhlIGVuZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFJlZ0V4SlNpLkxpc3RgOiBUaGUgbGlzdCB0byBhcHBlbmQgdG8uXG4yLiBgU1RSSU5HYDogVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBhcHBlbmQuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGxpc3Qgb2YgYWxsIG1hdGNoZXMsIG9yIGFsbCBjYXB0dXJlZCBncm91cHMgaWYgdGhlIHBhdHRlcm4gY29udGFpbnMgY2FwdHVyZSBncm91cHMuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdGhlIGlucHV0IHN0cmluZ1xuU1RSSU5HIGlucHV0U3RyaW5nID0gXCJDb250YWN0IHVzIGF0IHN1cHBvcnRAZXhhbXBsZS5jb20gb3Igc2FsZXNAZXhhbXBsZS5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXCJcblxuLy8gRGVmaW5lIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiB0byBtYXRjaCBlbWFpbCBhZGRyZXNzZXNcblJlZ0V4SlNpIGVtYWlsUGF0dGVybiA9IFJlZ0V4SlNpKFwiW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXFxcLlthLXpBLVpdezIsfVwiKVxuXG4vLyBVc2UgdGhlIFJlZ0V4SlNpLkZpbmRBbGwgZnVuY3Rpb24gdG8gZmluZCBhbGwgbWF0Y2hlc1xuVkVDVE9SPFNUUklORz4gZW1haWxNYXRjaGVzID0gUmVnRXhKU2kuRmluZEFsbChlbWFpbFBhdHRlcm4sIGlucHV0U3RyaW5nKVxuXG4vLyBGb3VuZCBlbWFpbCBhZGRyZXNzZXM6IFxuLy8gZW1haWxNYXRjaGVzIiwgIm5hbWUiOiAiUmVnRXhKU2kuRmluZEFsbCAoUmVnRXhKU2ksIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIGFsbCBtYXRjaGVzIG9yIGNhcHR1cmVkIGdyb3VwcyBmcm9tIHRoZSBnaXZlbiBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaWA6IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiB0byBtYXRjaCBhZ2FpbnN0LlxuMi4gYFNUUklOR2A6IFRoZSBpbnB1dCBzdHJpbmcgdG8gc2VhcmNoLiJ9LCB7InJldHVybl90eXBlIjogIlJlZ0V4SlNpIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBgUmVnRXhKU2lgIGJ1aWx0IGZyb20gdGhlIGdpdmVuIGdsb2Itc3R5bGUgcGF0dGVybi4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBnbG9iUGF0dGVybiA9IFwiKi5leGVcIlxuQk9PTEVBTiBjb252ZXJzaW9uTW9kZSA9IFRSVUVcblJlZ0V4SlNpIGV4ZWN1dGFibGVQYXR0ZXJuID0gUmVnRXhKU2kuR2xvYlRvUmVnRXhKU2koZ2xvYlBhdHRlcm4sIGNvbnZlcnNpb25Nb2RlKVxuU1RSSU5HIGRvd25sb2FkZWRGaWxlID0gXCJpbnZvaWNlLmV4ZVwiXG5CT09MRUFOIGlzRXhlY3V0YWJsZSA9IFJlZ0V4SlNpLk1hdGNoZXMoZXhlY3V0YWJsZVBhdHRlcm4sIGRvd25sb2FkZWRGaWxlKVxuLy8gaXNFeGVjdXRhYmxlIG5vdyBlcXVhbHMgVFJVRSIsICJuYW1lIjogIlJlZ0V4SlNpLkdsb2JUb1JlZ0V4SlNpIChTVFJJTkcsIEJPT0xFQU4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBgUmVnRXhKU2lgIGJ1aWx0IGZyb20gdGhlIGdpdmVuIGdsb2Itc3R5bGUgcGF0dGVybi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBnbG9iIHBhdHRlcm4gdG8gY29udmVydC5cbjIuIGBCT09MRUFOYDogSWYgYFRSVUVgLCBhbmNob3JzIHRoZSByZXN1bHRpbmcgcmVndWxhciBleHByZXNzaW9uIHRvIHN0cmluZyBib3VuZGFyaWVzOyBpZiBgRkFMU0VgLCB0aGUgcGF0dGVybiBpcyBsZWZ0IHVuYW5jaG9yZWQuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgcmVndWxhciBleHByZXNzaW9uIG1hdGNoZXMgdGhlIGdpdmVuIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIi8vIERlZmluZSB0aGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm5cblJlZ0V4SlNpIHBhdHRlcm4gPSBSZWdFeEpTaShcIi4qZXhhbXBsZS4qXCIpXG5cbi8vIEdldCB0aGUgY3VycmVudCBVUkwgYXMgYSBzdHJpbmdcblNUUklORyBjdXJyZW50VXJsID0gTVdHLlVybCgpLlRvU3RyaW5nKClcblxuLy8gQ2hlY2sgaWYgdGhlIFVSTCBtYXRjaGVzIHRoZSBwYXR0ZXJuXG5JRiBSZWdFeEpTaS5NYXRjaGVzKHBhdHRlcm4sIGN1cnJlbnRVcmwpIFRIRU4ge1xuICAgIC8vIEJsb2NrIHRoZSByZXF1ZXN0IGlmIHRoZSBwYXR0ZXJuIG1hdGNoZXNcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gVVJMcyBjb250YWluaW5nICdleGFtcGxlJyBpcyBub3QgYWxsb3dlZC5cIilcbn0gRUxTRSB7XG4gICAgLy8gQWxsb3cgdGhlIHJlcXVlc3QgaWYgdGhlIHBhdHRlcm4gZG9lcyBub3QgbWF0Y2hcbiAgICBNV0cuQWxsb3coXCJVUkwgZG9lcyBub3QgY29udGFpbiB0aGUgZm9yYmlkZGVuIHBhdHRlcm4uXCIpXG59IiwgIm5hbWUiOiAiUmVnRXhKU2kuTWF0Y2hlcyAoUmVnRXhKU2ksIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGVzIHRoZSBwcm92aWRlZCBgU1RSSU5HYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFJlZ0V4SlNpYDogVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuLlxuMi4gYFNUUklOR2A6IFRoZSBpbnB1dCBzdHJpbmcgdG8gbWF0Y2ggYWdhaW5zdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBzdHJpbmcgbWF0Y2hlcyBhbnkgcmVndWxhciBleHByZXNzaW9uIGluIHRoZSBsaXN0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zXG5SZWdFeEpTaS5MaXN0IHJlZ2V4TGlzdCA9IFtcImV4YW1wbGVfcmVnZXhfbGlzdFwiXVxuXG4vLyBHZXQgdGhlIGN1cnJlbnQgVVJMIGFzIGEgc3RyaW5nXG5TVFJJTkcgY3VycmVudFVSTCA9IE1XRy5VcmwoKS5Ub1N0cmluZygpXG5cbi8vIENoZWNrIGlmIHRoZSBjdXJyZW50IFVSTCBtYXRjaGVzIGFueSByZWd1bGFyIGV4cHJlc3Npb24gaW4gdGhlIGxpc3RcbklGIFJlZ0V4SlNpLk1hdGNoZXMocmVnZXhMaXN0LCBjdXJyZW50VVJMKSBUSEVOIHtcbiAgICAvLyBCbG9jayB0aGUgcmVxdWVzdCBpZiBhIG1hdGNoIGlzIGZvdW5kXG4gICAgTVdHLkJsb2NrKFwiQmxvY2tlZCBkdWUgdG8gbWF0Y2hpbmcgcmVnZXhcIilcbn0gRUxTRSB7XG4gICAgLy8gQWxsb3cgdGhlIHJlcXVlc3QgaWYgbm8gbWF0Y2ggaXMgZm91bmRcbiAgICBNV0cuQWxsb3coXCJObyBtYXRjaGluZyByZWdleCBmb3VuZFwiKVxufSIsICJuYW1lIjogIlJlZ0V4SlNpLk1hdGNoZXMgKFJlZ0V4SlNpLkxpc3QsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgYW55IHJlZ3VsYXIgZXhwcmVzc2lvbiBpbiB0aGUgbGlzdCBtYXRjaGVzIHRoZSBnaXZlbiBgU1RSSU5HYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFJlZ0V4SlNpLkxpc3RgOiBUaGUgbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zLlxuMi4gYFNUUklOR2A6IFRoZSBpbnB1dCBzdHJpbmcgdG8gY2hlY2suIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZmlyc3Qgc3RyaW5nLCB0cmVhdGVkIGFzIGEgcmVndWxhciBleHByZXNzaW9uLCBtYXRjaGVzIHRoZSBzZWNvbmQgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHVybCA9IE1XRy5VcmwoKS5Ub1N0cmluZygpXG5SZWdFeEpTaSBwYXR0ZXJuID0gXCIuKmV4YW1wbGVcXFxcLmNvbS4qXCJcblxuLy8gQ2hlY2tpbmcgaWYgdGhlIFVSTCBtYXRjaGVzIHRoZSBwYXR0ZXJuXG5JRiBSZWdFeEpTaS5NYXRjaGVzKHBhdHRlcm4sIHVybCkgVEhFTiB7XG4gICAgLy8gQmxvY2tpbmcgYWNjZXNzIGlmIHRoZSBVUkwgbWF0Y2hlcyB0aGUgcGF0dGVyblxuICAgIE1XRy5CbG9jayhcIkFjY2VzcyB0byBleGFtcGxlLmNvbSBpcyBub3QgYWxsb3dlZFwiKVxufSBFTFNFIHtcbiAgICAvLyBBbGxvd2luZyBhY2Nlc3MgaWYgdGhlIFVSTCBkb2VzIG5vdCBtYXRjaCB0aGUgcGF0dGVyblxuICAgIE1XRy5BbGxvdyhcIlVSTCBkb2VzIG5vdCBtYXRjaCB0aGUgYmxvY2tlZCBwYXR0ZXJuXCIpXG59IiwgIm5hbWUiOiAiUmVnRXhKU2kuTWF0Y2hlcyAoU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gZGVmaW5lZCBpbiB0aGUgZmlyc3QgYFNUUklOR2AgbWF0Y2hlcyB0aGUgZW50aXJldHkgb2YgdGhlIHNlY29uZCBgU1RSSU5HYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi5cbjIuIGBTVFJJTkdgOiBUaGUgaW5wdXQgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBnaXZlbiBTVFJJTkcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiByZXBsYWNlZCBieSB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nLiBGb3IgZXhhbXBsZSwgU1RSSU5HIFwicHJlOmFiYyMgcHJlOmNkZSNcIiwgcmVndWxhciBleHByZXNzaW9uIFwicmVnKHByZTooLio/KSMpXCIsIGFuZCByZXBsYWNlIFNUUklORyBcIlxcMVwiIHdpbGwgcmVzdWx0IGluIFwiYWJjIHByZTpjZGUjXCIgKG5vdGUgdGhhdCA/IGFmdGVyICogaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiByZXN1bHRzIGluIGEgbm9uLWdyZWVkeSBtYXRjaCkuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdGhlIGlucHV0IHN0cmluZ1xuU1RSSU5HIGlucHV0U3RyaW5nID0gXCJUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgcXVpY2sgYnJvd24gZm94IGlzIGZhc3QuXCJcblxuLy8gRGVmaW5lIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiB0byBtYXRjaCBcInF1aWNrIGJyb3duIGZveFwiXG5SZWdFeEpTaSByZWdleFBhdHRlcm4gPSBcInF1aWNrIGJyb3duIGZveFwiXG5cbi8vIERlZmluZSB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nXG5TVFJJTkcgcmVwbGFjZW1lbnRTdHJpbmcgPSBcInN3aWZ0IHJlZCBmb3hcIlxuXG4vLyBVc2UgdGhlIFJlcGxhY2VBbGxNYXRjaGVzIGZ1bmN0aW9uIHRvIHJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mIHRoZSBwYXR0ZXJuXG5TVFJJTkcgcmVzdWx0U3RyaW5nID0gUmVnRXhKU2kuUmVwbGFjZUFsbE1hdGNoZXMocmVnZXhQYXR0ZXJuLCBpbnB1dFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpXG5cbi8vIFRoZSByZXN1bHQgd2FzOiBcIlRoZSBzd2lmdCByZWQgZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgc3dpZnQgcmVkIGZveCBpcyBmYXN0LlwiXG5cbkluIHRoaXMgZXhhbXBsZTpcbi0gVGhlIGBpbnB1dFN0cmluZ2AgY29udGFpbnMgdGhlIHRleHQgd2hlcmUgd2Ugd2FudCB0byBwZXJmb3JtIHRoZSByZXBsYWNlbWVudHMuXG4tIFRoZSBgcmVnZXhQYXR0ZXJuYCBpcyB0aGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gdGhhdCBtYXRjaGVzIFwicXVpY2sgYnJvd24gZm94XCIuXG4tIFRoZSBgcmVwbGFjZW1lbnRTdHJpbmdgIGlzIHRoZSBzdHJpbmcgdGhhdCB3aWxsIHJlcGxhY2UgZWFjaCBvY2N1cnJlbmNlIG9mIHRoZSBwYXR0ZXJuLlxuLSBUaGUgYFJlZ0V4SlNpLlJlcGxhY2VBbGxNYXRjaGVzYCBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgcGF0dGVybiwgaW5wdXQgc3RyaW5nLCBhbmQgcmVwbGFjZW1lbnQgc3RyaW5nLCBhbmQgdGhlIHJlc3VsdCBpcyBzdG9yZWQgaW4gYHJlc3VsdFN0cmluZ2AuXG4tIEZpbmFsbHksIHRoZSByZXN1bHQgd2FzOiBcIlRoZSBzd2lmdCByZWQgZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgc3dpZnQgcmVkIGZveCBpcyBmYXN0LlwiIiwgIm5hbWUiOiAiUmVnRXhKU2kuUmVwbGFjZUFsbE1hdGNoZXMgKFJlZ0V4SlNpLCBTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIG5ldyBzdHJpbmcgd2hlcmUgYWxsIG9jY3VycmVuY2VzIG1hdGNoaW5nIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gaW4gdGhlIGlucHV0IHN0cmluZyBhcmUgcmVwbGFjZWQgYnkgdGhlIHNwZWNpZmllZCByZXBsYWNlbWVudCBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaWA6IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi5cbjIuIGBTVFJJTkdgOiBUaGUgaW5wdXQgc3RyaW5nIHRvIHNlYXJjaC5cbjMuIGBTVFJJTkdgOiBUaGUgcmVwbGFjZW1lbnQgc3RyaW5nLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgZ2l2ZW4gU1RSSU5HIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKGZpcnN0IHBhcmFtZXRlcikgcmVwbGFjZWQgYnkgdGhlIHJlcGxhY2VtZW50IHN0cmluZyAodGhpcmQgcGFyYW1ldGVyKS4gRm9yIGV4YW1wbGUsIFNUUklORyBcInByZTphYmMjIHByZTpjZGUjXCIsIHJlZ3VsYXIgZXhwcmVzc2lvbiBcInJlZyhwcmU6KC4qPykjKVwiLCBhbmQgcmVwbGFjZSBTVFJJTkcgXCJcXDFcIiB3aWxsIHJlc3VsdCBpbiBcImFiYyBwcmU6Y2RlI1wiIChub3RlIHRoYXQgPyBhZnRlciAqIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gcmVzdWx0cyBpbiBhIG5vbi1ncmVlZHkgbWF0Y2gpLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGlucHV0U3RyaW5nID0gXCJwcmU6YWJjIyBwcmU6Y2RlIyBwcmU6ZWZnI1wiXG5TVFJJTkcgcGF0dGVybiA9IFwicmVnKHByZTooLio/KSMpXCJcblNUUklORyByZXBsYWNlbWVudCA9IFwiXFwxXCJcblxuU1RSSU5HIHJlc3VsdCA9IFJlZ0V4SlNpLlJlcGxhY2VBbGxNYXRjaGVzKHBhdHRlcm4sIGlucHV0U3RyaW5nLCByZXBsYWNlbWVudClcblxuLy8gVGhpcyB3aWxsIG91dHB1dDogXCJhYmMgcHJlOmNkZSMgcHJlOmVmZyNcIiIsICJuYW1lIjogIlJlZ0V4SlNpLlJlcGxhY2VBbGxNYXRjaGVzIChTVFJJTkcsIFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgZ2l2ZW4gc3RyaW5nIHdoZXJlIGFsbCBvY2N1cnJlbmNlcyBtYXRjaGluZyB0aGUgcmVndWxhciBleHByZXNzaW9uIGFyZSByZXBsYWNlZCBieSB0aGUgc3BlY2lmaWVkIHJlcGxhY2VtZW50IHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi5cbjIuIGBTVFJJTkdgOiBUaGUgaW5wdXQgc3RyaW5nIHRvIHNlYXJjaC5cbjMuIGBTVFJJTkdgOiBUaGUgcmVwbGFjZW1lbnQgc3RyaW5nLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgZ2l2ZW4gU1RSSU5HIHdpdGggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiByZXBsYWNlZCBieSB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nICh0aGlyZCBwYXJhbWV0ZXIpLiBGb3IgZXhhbXBsZSwgU1RSSU5HIFwicHJlOmFiYyMgcHJlOmNkZSNcIiwgcmVndWxhciBleHByZXNzaW9uIFwicmVnKHByZTooLio/KSMpXCIsIGFuZCByZXBsYWNlIFNUUklORyBcIlxcMVwiIHdpbGwgcmVzdWx0IGluIFwiYWJjIHByZTpjZGUjXCIgKG5vdGUgdGhhdCA/IGFmdGVyICogaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiByZXN1bHRzIGluIGEgbm9uLWdyZWVkeSBtYXRjaCkuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdGhlIGlucHV0IHN0cmluZ1xuU1RSSU5HIGlucHV0U3RyaW5nID0gXCJwcmU6YWJjIyBwcmU6Y2RlI1wiXG5cbi8vIERlZmluZSB0aGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm5cblJlZ0V4SlNpIHJlZ2V4UGF0dGVybiA9IFwicmVnKHByZTooLio/KSMpXCJcblxuLy8gRGVmaW5lIHRoZSByZXBsYWNlbWVudCBzdHJpbmdcblNUUklORyByZXBsYWNlbWVudFN0cmluZyA9IFwiXFwxXCJcblxuLy8gVXNlIHRoZSBSZXBsYWNlRmlyc3RNYXRjaCBmdW5jdGlvbiB0byByZXBsYWNlIHRoZSBmaXJzdCBtYXRjaFxuU1RSSU5HIHJlc3VsdFN0cmluZyA9IFJlZ0V4SlNpLlJlcGxhY2VGaXJzdE1hdGNoKHJlZ2V4UGF0dGVybiwgaW5wdXRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKVxuXG4vLyBQcmludCB0aGUgcmVzdWx0IHRvIHRoZSBjb25zb2xlXG4vLyByZXN1bHRTdHJpbmciLCAibmFtZSI6ICJSZWdFeEpTaS5SZXBsYWNlRmlyc3RNYXRjaCAoUmVnRXhKU2ksIFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbmV3IHN0cmluZyB3aXRoIHRoZSBmaXJzdCBtYXRjaCBvZiB0aGUgcmVndWxhciBleHByZXNzaW9uIGluIHRoZSBpbnB1dCBzdHJpbmcgcmVwbGFjZWQgYnkgdGhlIHNwZWNpZmllZCByZXBsYWNlbWVudCBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaWA6IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi5cbjIuIGBTVFJJTkdgOiBUaGUgaW5wdXQgc3RyaW5nIHRvIHNlYXJjaC5cbjMuIGBTVFJJTkdgOiBUaGUgcmVwbGFjZW1lbnQgc3RyaW5nLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgZ2l2ZW4gU1RSSU5HIHdpdGggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAoZmlyc3QgcGFyYW1ldGVyKSByZXBsYWNlZCBieSB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nICh0aGlyZCBwYXJhbWV0ZXIpLiBGb3IgZXhhbXBsZSwgU1RSSU5HIFwicHJlOmFiYyMgcHJlOmNkZSNcIiwgcmVndWxhciBleHByZXNzaW9uIFwicmVnKHByZTooLio/KSMpXCIsIGFuZCByZXBsYWNlIFNUUklORyBcIlxcMVwiIHdpbGwgcmVzdWx0IGluIFwiYWJjIHByZTpjZGUjXCIgKG5vdGUgdGhhdCA/IGFmdGVyICogaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiByZXN1bHRzIGluIGEgbm9uLWdyZWVkeSBtYXRjaCkuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgaW5wdXRTdHJpbmcgPSBcIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dcIjtcblNUUklORyBwYXR0ZXJuID0gXCJxdWljayAoLio/KSBmb3hcIjtcblNUUklORyByZXBsYWNlbWVudCA9IFwic2xvdyBcXDEgY2F0XCI7XG5cblNUUklORyByZXN1bHQgPSBSZWdFeEpTaS5SZXBsYWNlRmlyc3RNYXRjaChwYXR0ZXJuLCBpbnB1dFN0cmluZywgcmVwbGFjZW1lbnQpO1xuXG4vLyBPdXRwdXQ6IFwiVGhlIHNsb3cgYnJvd24gY2F0IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nXCIiLCAibmFtZSI6ICJSZWdFeEpTaS5SZXBsYWNlRmlyc3RNYXRjaCAoU1RSSU5HLCBTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyB3aGVyZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBtYXRjaGluZyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uIGlzIHJlcGxhY2VkIGJ5IHRoZSBzcGVjaWZpZWQgcmVwbGFjZW1lbnQgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuLlxuMi4gYFNUUklOR2A6IFRoZSBpbnB1dCBzdHJpbmcgdG8gc2VhcmNoLlxuMy4gYFNUUklOR2A6IFRoZSByZXBsYWNlbWVudCBzdHJpbmcuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBtYXRjaCBvciBjYXB0dXJlIGdyb3VwIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgcmVndWxhciBleHByZXNzaW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVyblxuUmVnRXhKU2kgcGF0dGVybiA9IFJlZ0V4SlNpKFwiZXhhbXBsZS1wYXR0ZXJuXCIpXG5cbi8vIEdldCB0aGUgY3VycmVudCBVUkwgYXMgYSBzdHJpbmdcblNUUklORyBjdXJyZW50VVJMID0gTVdHLlVybCgpLlRvU3RyaW5nKClcblxuLy8gQ2hlY2sgaWYgdGhlIFVSTCBtYXRjaGVzIHRoZSBwYXR0ZXJuXG5JRiBSZWdFeEpTaS5TZWFyY2gocGF0dGVybiwgY3VycmVudFVSTCkgVEhFTiB7XG4gICAgLy8gQmxvY2sgdGhlIHJlcXVlc3QgaWYgdGhlIHBhdHRlcm4gaXMgZm91bmRcbiAgICBNV0cuQmxvY2soXCJCbG9ja2VkIGR1ZSB0byBtYXRjaGluZyBwYXR0ZXJuXCIpXG59IEVMU0Uge1xuICAgIC8vIEFsbG93IHRoZSByZXF1ZXN0IGlmIHRoZSBwYXR0ZXJuIGlzIG5vdCBmb3VuZFxuICAgIE1XRy5BbGxvdyhcIlBhdHRlcm4gbm90IGZvdW5kXCIpXG59IiwgIm5hbWUiOiAiUmVnRXhKU2kuU2VhcmNoIChSZWdFeEpTaSwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBtYXRjaCBvciBjYXB0dXJlIGdyb3VwIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgcmVndWxhciBleHByZXNzaW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgUmVnRXhKU2lgOiBUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdC5cbjIuIGBTVFJJTkdgOiBUaGUgaW5wdXQgc3RyaW5nIHRvIHNlYXJjaC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgbGlzdCBvZiBhbGwgc3Vic3RyaW5ncyBpbiB0aGUgZ2l2ZW4gc3RyaW5nIHRoYXQgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4gRm9yIGV4YW1wbGUsIHdpdGggU1RSSU5HICdhMWIyYzNkNGU1JyBhbmQgcmVndWxhciBleHByZXNzaW9uICdcXGQnLCB0aGUgcmVzdWx0IHdvdWxkIGJlICcxJywgJzInLCAnMycsICc0JywgJzUnLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBpbnB1dCBzdHJpbmdcblNUUklORyBpbnB1dFN0cmluZyA9IFwiYTFiMmMzZDRlNVwiO1xuXG4vLyBEZWZpbmUgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHRvIG1hdGNoIGRpZ2l0c1xuUmVnRXhKU2kgcmVnZXhQYXR0ZXJuID0gXCJcXGRcIjtcblxuLy8gVXNlIHRoZSBSZWdFeEpTaS5TZWFyY2hBbGxNYXRjaGVzIGZ1bmN0aW9uIHRvIGZpbmQgYWxsIG1hdGNoZXNcblZFQ1RPUjxTVFJJTkc+IG1hdGNoZXMgPSBSZWdFeEpTaS5TZWFyY2hBbGxNYXRjaGVzKHJlZ2V4UGF0dGVybiwgaW5wdXRTdHJpbmcpO1xuXG4vLyBNYXRjaGVzIGZvdW5kOiBcIiArIG1hdGNoZXNcbi8vIEluIHRoaXMgZXhhbXBsZTpcbi8vIC0gVGhlIGBpbnB1dFN0cmluZ2AgaXMgXCJhMWIyYzNkNGU1XCIuXG4vLyAtIFRoZSBgcmVnZXhQYXR0ZXJuYCBpcyBkZWZpbmVkIGFzIGBcIlxcZFwiYCwgd2hpY2ggbWF0Y2hlcyBhbnkgZGlnaXQuXG4vLyAtIFRoZSBgUmVnRXhKU2kuU2VhcmNoQWxsTWF0Y2hlc2AgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlIGByZWdleFBhdHRlcm5gIGFuZCBgaW5wdXRTdHJpbmdgIGFzIGFyZ3VtZW50cywgYW5kIGl0IHJldHVybnMgYSBgVkVDVE9SPFNUUklORz5gIGNvbnRhaW5pbmcgYWxsIHRoZSBtYXRjaGVkIGRpZ2l0IHNlcXVlbmNlcy5cbi8vIC0gVGhlIG1hdGNoZXMgYXJlIHRoZW4gcHJpbnRlZCB0byB0aGUgY29uc29sZSB1c2luZyB0aGUgYERFQlVHYCBmdW5jdGlvbi5cbi8vIFdoZW4gdGhpcyByb3V0aW5lIGlzIGV4ZWN1dGVkLCBpdCB3aWxsIG91dHB1dDpcbi8vIE1hdGNoZXMgZm91bmQ6IDEsIDIsIDMsIDQsIDUiLCAibmFtZSI6ICJSZWdFeEpTaS5TZWFyY2hBbGxNYXRjaGVzIChSZWdFeEpTaSwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgdmVjdG9yIGNvbnRhaW5pbmcgYWxsIHN1YnN0cmluZ3Mgb2YgdGhlIGlucHV0IHN0cmluZyB0aGF0IG1hdGNoIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaWA6IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi5cbjIuIGBTVFJJTkdgOiBUaGUgaW5wdXQgc3RyaW5nIHRvIHNlYXJjaC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcmVndWxhciBleHByZXNzaW9uIGFzIGEgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGEgUmVnRXhKU2kgb2JqZWN0XG5SZWdFeEpTaSBteVJlZ2V4ID0gUmVnRXhKU2koXCJeW2EtekEtWjAtOV0rJFwiKVxuXG4vLyBDb252ZXJ0IHRoZSBSZWdFeEpTaSBvYmplY3QgdG8gYSBTVFJJTkdcblNUUklORyByZWdleFN0cmluZyA9IFJlZ0V4SlNpLlRvU3RyaW5nKG15UmVnZXgpXG5cbi8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gaXM6IFxuLy8gcmVnZXhTdHJpbmciLCAibmFtZSI6ICJSZWdFeEpTaS5Ub1N0cmluZyAoUmVnRXhKU2kpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbiBzdHJpbmcgZm9ybWF0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgUmVnRXhKU2lgOiBUaGUgcmVndWxhciBleHByZXNzaW9uIHRvIGNvbnZlcnQgdG8gYSBzdHJpbmcuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGxpc3Qgb2Ygc3RyaW5ncyBtYXRjaGluZyB0aGUgY2FwdHVyZSBncm91cHMgb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4gRm9yIGV4YW1wbGUsIHdpdGggU1RSSU5HIFwiaHR0cDovL3d3dy5nb29nbGUuZGVcIiBhbmQgcmVndWxhciBleHByZXNzaW9uIFwiLyhmdHB8aHR0cHxodHRwcyk6XFwvXFwvKFxcdyspKlxcLihcXHcrXFwuKSooXFx3KykqL1wiLCB0aGUgcmVzdWx0IHdvdWxkIGJlICdodHRwJywgJ3d3dycsICdnb29nbGUuJywgYW5kICdkZScuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdGhlIHdpbGRjYXJkIHBhdHRlcm4gYW5kIHRoZSBzdHJpbmcgdG8gbWF0Y2hcblJlZ0V4SlNpIHBhdHRlcm4gPSBcImV4YW1wbGUqcGF0dGVyblwiXG5TVFJJTkcgaW5wdXRTdHJpbmcgPSBcImV4YW1wbGUxMjNwYXR0ZXJuXCJcblxuLy8gVXNlIHRoZSBXaWxkY2FyZE1hdGNoIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBpbnB1dCBzdHJpbmcgbWF0Y2hlcyB0aGUgcGF0dGVyblxuQk9PTEVBTiBpc01hdGNoID0gUmVnRXhKU2kuV2lsZGNhcmRNYXRjaChwYXR0ZXJuLCBpbnB1dFN0cmluZylcblxuLy8gUHJpbnQgdGhlIHJlc3VsdCB0byB0aGUgY29uc29sZVxuSUYgaXNNYXRjaCBUSEVOIHtcbiAgICAvLyBUaGUgaW5wdXQgc3RyaW5nIG1hdGNoZXMgdGhlIHdpbGRjYXJkIHBhdHRlcm4uXG59IEVMU0Uge1xuICAgIC8vIFRoZSBpbnB1dCBzdHJpbmcgZG9lcyBub3QgbWF0Y2ggdGhlIHdpbGRjYXJkIHBhdHRlcm4uXG59IiwgIm5hbWUiOiAiUmVnRXhKU2kuV2lsZGNhcmRNYXRjaCAoUmVnRXhKU2ksIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHRoZSBzdWJzdHJpbmdzIG9mIHRoZSBpbnB1dCBzdHJpbmcgdGhhdCBtYXRjaCB0aGUgZ3JvdXBzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHJlZ3VsYXIgZXhwcmVzc2lvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFJlZ0V4SlNpYDogVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHRvIG1hdGNoIGFnYWluc3QuXG4yLiBgU1RSSU5HYDogVGhlIGlucHV0IHN0cmluZyB0byBzZWFyY2guIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXN0IGFzIGEgZGVsaW1pdGVkIHN0cmluZy4gVGhlIGRlZmF1bHQgZGVsaW1pdGVyIGlzIFwiLCBcIi4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGEgUmVnRXhKU2kuTGlzdCBvYmplY3QgbmFtZWQgcmVnZXhMaXN0XG5SZWdFeEpTaS5MaXN0IHJlZ2V4TGlzdCA9IFtcImV4YW1wbGVfcmVnZXhfbGlzdFwiXVxuXG4vLyBDb252ZXJ0IHRoZSBSZWdFeEpTaS5MaXN0IHRvIGEgU1RSSU5HIHdpdGggYSBzcGVjaWZpZWQgZGVsaW1pdGVyXG5TVFJJTkcgZGVsaW1pdGVyID0gXCIsXCJcblNUUklORyByZWdleExpc3RTdHJpbmcgPSBSZWdFeEpTaUxpc3QuVG9TdHJpbmcocmVnZXhMaXN0LCBkZWxpbWl0ZXIpXG5cbi8vIFByaW50IHRoZSByZXN1bHRpbmcgU1RSSU5HIHRvIHRoZSBjb25zb2xlXG4vLyBERUJVRyhyZWdleExpc3RTdHJpbmcpIiwgIm5hbWUiOiAiUmVnRXhKU2lMaXN0LlRvU3RyaW5nIChSZWdFeEpTaS5MaXN0LCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXN0IGFzIGEgZGVsaW1pdGVkIChkZWZhdWx0IFwiLCBcIikgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgUmVnRXhKU2kuTGlzdGA6IFRoZSBsaXN0IHRvIGNvbnZlcnQgdG8gYSBzdHJpbmcuXG4yLiBgU1RSSU5HYDogVGhlIGRlbGltaXRlciB0byB1c2UgYmV0d2VlbiBlbGVtZW50cy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcmVndWxhciBleHByZXNzaW9uIGxpc3QgYXMgYSBkZWxpbWl0ZWQgc3RyaW5nLiBUaGUgZGVmYXVsdCBkZWxpbWl0ZXIgaXMgXCIsIFwiLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGEgbmV3IFJlZ0V4SlNpLkxpc3RcblJlZ0V4SlNpLkxpc3QgcmVnZXhMaXN0ID0gUmVnRXhKU2kuTGlzdCgpXG5cbi8vIEFkZCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byB0aGUgbGlzdFxuUmVnRXhKU2kuQWRkKHJlZ2V4TGlzdCwgXCJeW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXFxcLlthLXpBLVpdezIsfSRcIilcblxuLy8gQWRkIGFub3RoZXIgcmVndWxhciBleHByZXNzaW9uIHRvIHRoZSBsaXN0XG5SZWdFeEpTaS5BZGQocmVnZXhMaXN0LCBcIl5odHRwcz86Ly9bYS16QS1aMC05Li1dK1xcXFwuW2EtekEtWl17Mix9KC8uKik/JFwiKVxuXG4vLyBSZWd1bGFyIGV4cHJlc3Npb25zIGFkZGVkIHRvIHRoZSBsaXN0LiIsICJuYW1lIjogIlJlZ0V4SlNpTGlzdFB0ci5Ub1N0cmluZyAoUmVnRXhKU2kuTGlzdCwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gbGlzdCBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsIHdpdGggaXRlbXMgc2VwYXJhdGVkIGJ5IGEgc3BlY2lmaWVkIGRlbGltaXRlci4gRGVmYXVsdCBpcyBcIiwgXCIuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaS5MaXN0YDogVGhlIGxpc3Qgb2YgcmVndWxhciBleHByZXNzaW9ucyB0byBjb252ZXJ0LlxuMi4gYFNUUklOR2A6IFRoZSBkZWxpbWl0ZXIgdXNlZCB0byBqb2luIGVsZW1lbnRzLiJ9LCB7InJldHVybl90eXBlIjogIk1BUDxTVFJJTkcsU1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbWFwIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgcmVtb3ZlZC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBtYXAgd2l0aCBzb21lIGtleS12YWx1ZSBwYWlyc1xuTUFQPFNUUklORywgU1RSSU5HPiBleGFtcGxlTWFwID0ge1xuICAgIFwia2V5MVwiOiBcInZhbHVlMVwiLFxuICAgIFwia2V5MlwiOiBcInZhbHVlMlwiLFxuICAgIFwia2V5M1wiOiBcInZhbHVlM1wiXG59XG5cbi8vIE9yaWdpbmFsIE1hcDogZXhhbXBsZU1hcFxuXG4vLyBSZW1vdmUgYSBrZXkgZnJvbSB0aGUgbWFwXG5leGFtcGxlTWFwID0gUmVtb3ZlKGV4YW1wbGVNYXAsIFwia2V5MlwiKVxuXG4vLyBVcGRhdGVkIE1hcDogZXhhbXBsZU1hcCIsICJuYW1lIjogIlJlbW92ZSAoTUFQPFNUUklORywgU1RSSU5HPiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbWFwIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgcmVtb3ZlZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1BUDxTVFJJTkcsU1RSSU5HPmA6IFRoZSBtYXAgdG8gcmVtb3ZlIGZyb20uXG4yLiBgU1RSSU5HYDogVGhlIGtleSB0byByZW1vdmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiUmVnRXhKU2kuTGlzdCIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIHRoZSBlbnRyeSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IHJlbW92ZWQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIGEgUmVnRXhKU2kuTGlzdCB3aXRoIHNvbWUgZXhhbXBsZSByZWd1bGFyIGV4cHJlc3Npb25zXG5SZWdFeEpTaS5MaXN0IHJlZ2V4TGlzdCA9IFtcIl5hYmNcIiwgXCJkZWYkXCIsIFwiZ2hpLipcIl1cblxuLy8gU3BlY2lmeSB0aGUgaW5kZXggb2YgdGhlIGVudHJ5IHRvIHJlbW92ZVxuTlVNQkVSIGluZGV4VG9SZW1vdmUgPSAxXG5cbi8vIFJlbW92ZSB0aGUgZW50cnkgYXQgdGhlIHNwZWNpZmllZCBpbmRleFxuUmVnRXhKU2kuTGlzdCB1cGRhdGVkTGlzdCA9IFJlbW92ZShyZWdleExpc3QsIGluZGV4VG9SZW1vdmUpXG5cbi8vIFByaW50IHRoZSB1cGRhdGVkIGxpc3QgdG8gdGhlIGNvbnNvbGUgZm9yIGRlYnVnZ2luZ1xuLy8gdXBkYXRlZExpc3QiLCAibmFtZSI6ICJSZW1vdmUgKFJlZ0V4SlNpLkxpc3QsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGBSZWdFeEpTaS5MaXN0YCB3aXRoIHRoZSBzcGVjaWZpZWQgZW50cnkgcmVtb3ZlZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFJlZ0V4SlNpLkxpc3RgOiBUaGUgbGlzdCB0byByZW1vdmUgYW4gZW50cnkgZnJvbS5cbjIuIGBOVU1CRVJgOiBUaGUgemVyby1iYXNlZCBpbmRleCBvZiB0aGUgZW50cnkgdG8gcmVtb3ZlLiJ9LCB7InJldHVybl90eXBlIjogIlJlZ0V4SlNpLkxpc3QiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCBlbnRyaWVzIGJldHdlZW4gdGhlIGdpdmVuIHN0YXJ0IGFuZCBlbmQgaW5kaWNlcyByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYSBSZWdFeEpTaS5MaXN0IG9iamVjdCBuYW1lZCByZWdleExpc3RcblJlZ0V4SlNpLkxpc3QgcmVnZXhMaXN0ID0gW1wiZXhhbXBsZV9saXN0XCJdXG5cbi8vIERlZmluZSB0aGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmVtb3ZlXG5OVU1CRVIgaW5kZXhUb1JlbW92ZSA9IDFcblxuLy8gUmVtb3ZlIHRoZSBlbGVtZW50IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhcbnJlZ2V4TGlzdCA9IFJlbW92ZShyZWdleExpc3QsIGluZGV4VG9SZW1vdmUpXG5cbi8vIFVwZGF0ZWQgcmVnZXhMaXN0OiBcIiArIHJlZ2V4TGlzdCIsICJuYW1lIjogIlJlbW92ZSAoUmVnRXhKU2kuTGlzdCwgTlVNQkVSLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBsaXN0IHdpdGggZW50cmllcyByZW1vdmVkIGJldHdlZW4gdGhlIHNwZWNpZmllZCBzdGFydCBhbmQgZW5kIGluZGljZXMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaS5MaXN0YDogVGhlIGxpc3QgdG8gcmVtb3ZlIGVudHJpZXMgZnJvbS5cbjIuIGBOVU1CRVJgOiBUaGUgc3RhcnRpbmcgaW5kZXguXG4zLiBgTlVNQkVSYDogVGhlIGVuZGluZyBpbmRleC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJSZWdFeEpTaS5MaXN0IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBsaXN0IHdpdGggYWxsIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBzZWNvbmQgbGlzdCByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSB0d28gUmVnRXhKU2kuTGlzdCBvYmplY3RzIHdpdGggc29tZSBleGFtcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbnNcblJlZ0V4SlNpLkxpc3QgbGlzdDEgPSBcInJlZ2V4MVwiLCBcInJlZ2V4MlwiLCBcInJlZ2V4M1wiLCBcInJlZ2V4NFwiXG5SZWdFeEpTaS5MaXN0IGxpc3QyID0gXCJyZWdleDJcIiwgXCJyZWdleDRcIlxuXG4vLyBSZW1vdmUgZWxlbWVudHMgZnJvbSBsaXN0MSB0aGF0IGFyZSBwcmVzZW50IGluIGxpc3QyXG5SZWdFeEpTaS5MaXN0IHVwZGF0ZWRMaXN0ID0gUmVtb3ZlKGxpc3QxLCBsaXN0MilcblxuLy8gRGVidWcgb3V0cHV0IHRvIHZlcmlmeSB0aGUgb3BlcmF0aW9uIHdhcyByZXBsYWNlZCB3aXRoIHRoaXMgY29tbWVudFxuLy8gVXBkYXRlZCBsaXN0MTogKyB1cGRhdGVkTGlzdCIsICJuYW1lIjogIlJlbW92ZSAoUmVnRXhKU2kuTGlzdCwgUmVnRXhKU2kuTGlzdCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGZpcnN0IGxpc3Qgd2l0aCBhbGwgZWxlbWVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIHNlY29uZCBsaXN0IHJlbW92ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaS5MaXN0YDogVGhlIGxpc3QgdG8gcmVtb3ZlIGVsZW1lbnRzIGZyb20uXG4yLiBgUmVnRXhKU2kuTGlzdGA6IFRoZSBsaXN0IG9mIGVsZW1lbnRzIHRvIHJlbW92ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TWVkaWFUeXBlPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIGVudHJpZXMgYmV0d2VlbiB0aGUgZ2l2ZW4gc3RhcnQgYW5kIGVuZCBpbmRpY2VzIHJlbW92ZWQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIGEgVkVDVE9SPE1lZGlhVHlwZT4gd2l0aCBzb21lIGV4YW1wbGUgbWVkaWEgdHlwZXNcblZFQ1RPUjxNZWRpYVR5cGU+IG1lZGlhVHlwZXMgPSBNZWRpYVR5cGUoXCJpbWFnZS9qcGVnXCIpLCBNZWRpYVR5cGUoXCJ2aWRlby9tcDRcIiksIE1lZGlhVHlwZShcImFwcGxpY2F0aW9uL3BkZlwiKSwgTWVkaWFUeXBlKFwidGV4dC9odG1sXCIpXG5cbi8vIE9yaWdpbmFsIG1lZGlhIHR5cGVzOiBcIiArIG1lZGlhVHlwZXNcblxuLy8gUmVtb3ZlIGVsZW1lbnRzIGZyb20gaW5kZXggMSB0byAyIChpbmNsdXNpdmUpXG5SZW1vdmUobWVkaWFUeXBlcywgMSwgMilcblxuLy8gTW9kaWZpZWQgbWVkaWEgdHlwZXM6IFwiICsgbWVkaWFUeXBlcyIsICJuYW1lIjogIlJlbW92ZSAoVkVDVE9SPE1lZGlhVHlwZT4sIE5VTUJFUiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIGVudHJpZXMgYmV0d2VlbiB0aGUgZ2l2ZW4gaW5kaWNlcyByZW1vdmVkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1lZGlhVHlwZT5gOiBUaGUgbGlzdCB0byByZW1vdmUgZW50cmllcyBmcm9tLlxuMi4gYE5VTUJFUmA6IFRoZSBzdGFydGluZyBpbmRleC5cbjMuIGBOVU1CRVJgOiBUaGUgZW5kaW5nIGluZGV4LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxNZWRpYVR5cGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBsaXN0IHdpdGggYWxsIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBzZWNvbmQgbGlzdCByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgVkVDVE9SIG9mIE1lZGlhVHlwZSB3aXRoIHNvbWUgaW5pdGlhbCB2YWx1ZXNcblZFQ1RPUjxNZWRpYVR5cGU+IG1lZGlhTGlzdCA9IE1lZGlhVHlwZShcImltYWdlL2pwZWdcIiksIE1lZGlhVHlwZShcInZpZGVvL21wNFwiKSwgTWVkaWFUeXBlKFwiYXBwbGljYXRpb24vcGRmXCIpLCBNZWRpYVR5cGUoXCJpbWFnZS9wbmdcIilcblxuLy8gRGVmaW5lIGEgVkVDVE9SIG9mIE1lZGlhVHlwZSB3aXRoIGVsZW1lbnRzIHRvIHJlbW92ZVxuVkVDVE9SPE1lZGlhVHlwZT4gcmVtb3ZlTGlzdCA9IE1lZGlhVHlwZShcImltYWdlL2pwZWdcIiksIE1lZGlhVHlwZShcImFwcGxpY2F0aW9uL3BkZlwiKVxuXG4vLyBVc2UgdGhlIFJlbW92ZSBmdW5jdGlvbiB0byByZW1vdmUgZWxlbWVudHMgZnJvbSBtZWRpYUxpc3QgdGhhdCBhcmUgaW4gcmVtb3ZlTGlzdFxuVkVDVE9SPE1lZGlhVHlwZT4gdXBkYXRlZE1lZGlhTGlzdCA9IFJlbW92ZShtZWRpYUxpc3QsIHJlbW92ZUxpc3QpXG5cbi8vIFVwZGF0ZWQgTWVkaWEgTGlzdDogXCIgKyB1cGRhdGVkTWVkaWFMaXN0IiwgIm5hbWUiOiAiUmVtb3ZlIChWRUNUT1I8TWVkaWFUeXBlPiwgVkVDVE9SPE1lZGlhVHlwZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBsaXN0IHdpdGggYWxsIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBzZWNvbmQgbGlzdCByZW1vdmVkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1lZGlhVHlwZT5gOiBUaGUgbGlzdCB0byByZW1vdmUgZWxlbWVudHMgZnJvbS5cbjIuIGBWRUNUT1I8TWVkaWFUeXBlPmA6IFRoZSBsaXN0IG9mIGVsZW1lbnRzIHRvIHJlbW92ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIGVudHJpZXMgYmV0d2VlbiB0aGUgZ2l2ZW4gc3RhcnQgYW5kIGVuZCBpbmRpY2VzIHJlbW92ZWQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIGEgVkVDVE9SIG9mIE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZVxuVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT4gYXBwQ2F0ZWdvcmllcyA9IFtcIlNvY2lhbCBNZWRpYVwiLCBcIlN0cmVhbWluZyBNZWRpYVwiLCBcIkZpbGUgU2hhcmluZ1wiLCBcIkdhbWluZ1wiLCBcIk5ld3NcIl1cblxuLy8gRGVmaW5lIHRoZSBzdGFydCBhbmQgZW5kIGluZGljZXMgZm9yIHJlbW92YWxcbk5VTUJFUiBzdGFydEluZGV4ID0gMVxuTlVNQkVSIGVuZEluZGV4ID0gM1xuXG4vLyBSZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgVkVDVE9SXG5hcHBDYXRlZ29yaWVzID0gUmVtb3ZlKGFwcENhdGVnb3JpZXMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KVxuXG4vLyBEZWJ1ZyB0aGUgcmVzdWx0IHRvIHNlZSB0aGUgcmVtYWluaW5nIGVsZW1lbnRzXG4vLyBERUJVRyhhcHBDYXRlZ29yaWVzKSB3YXMgcmVwbGFjZWQgd2l0aCB0aGlzIGNvbW1lbnQgdG8gZXhwbGFpbiB0aGUgY29kZS4gVGhlIGxpbmUgb3JpZ2luYWxseSBvdXRwdXQgdGhlIHZhbHVlIG9mIGFwcENhdGVnb3JpZXMgdG8gdGhlIGNvbnNvbGUuIiwgIm5hbWUiOiAiUmVtb3ZlIChWRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPiwgTlVNQkVSLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBsaXN0IHdpdGggZW50cmllcyBiZXR3ZWVuIHRoZSBnaXZlbiBpbmRpY2VzIHJlbW92ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPmA6IFRoZSBsaXN0IHRvIHJlbW92ZSBlbnRyaWVzIGZyb20uXG4yLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIGluZGV4LlxuMy4gYE5VTUJFUmA6IFRoZSBlbmRpbmcgaW5kZXguIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGZpcnN0IGxpc3Qgd2l0aCBhbGwgZWxlbWVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIHNlY29uZCBsaXN0IHJlbW92ZWQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgdHdvIHZlY3RvcnMgb2YgTVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlXG5WRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPiBhbGxDYXRlZ29yaWVzID0gW1wiU29jaWFsIE1lZGlhXCIsIFwiU3RyZWFtaW5nIE1lZGlhXCIsIFwiU2hvcHBpbmdcIiwgXCJOZXdzXCJdXG5WRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPiBjYXRlZ29yaWVzVG9SZW1vdmUgPSBbXCJTaG9wcGluZ1wiLCBcIk5ld3NcIl1cblxuLy8gUmVtb3ZlIGNhdGVnb3JpZXNUb1JlbW92ZSBmcm9tIGFsbENhdGVnb3JpZXNcblZFQ1RPUjxNV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGU+IHVwZGF0ZWRDYXRlZ29yaWVzID0gUmVtb3ZlKGFsbENhdGVnb3JpZXMsIGNhdGVnb3JpZXNUb1JlbW92ZSlcblxuLy8gVXBkYXRlZCBDYXRlZ29yaWVzOiBcIiArIHVwZGF0ZWRDYXRlZ29yaWVzIiwgIm5hbWUiOiAiUmVtb3ZlIChWRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPiwgVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBsaXN0IHdpdGggYWxsIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBzZWNvbmQgbGlzdCByZW1vdmVkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT5gOiBUaGUgbGlzdCB0byByZW1vdmUgZWxlbWVudHMgZnJvbS5cbjIuIGBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPmA6IFRoZSBsaXN0IG9mIGVsZW1lbnRzIHRvIHJlbW92ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCBlbnRyaWVzIGJldHdlZW4gdGhlIGdpdmVuIHN0YXJ0IGFuZCBlbmQgaW5kaWNlcyByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIFZFQ1RPUiBvZiBNV0cuQXBwbGljYXRpb25UeXBlXG5WRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT4gYXBwVHlwZXMgPSBbXCJBcHBUeXBlMVwiLCBcIkFwcFR5cGUyXCIsIFwiQXBwVHlwZTNcIiwgXCJBcHBUeXBlNFwiLCBcIkFwcFR5cGU1XCJdXG5cbi8vIERlZmluZSB0aGUgc3RhcnQgYW5kIGVuZCBpbmRpY2VzIGZvciByZW1vdmFsXG5OVU1CRVIgc3RhcnRJbmRleCA9IDFcbk5VTUJFUiBlbmRJbmRleCA9IDNcblxuLy8gUmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIFZFQ1RPUlxuYXBwVHlwZXMuUmVtb3ZlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KVxuXG4vLyBUaGUgcmVzdWx0aW5nIFZFQ1RPUiBhZnRlciByZW1vdmFsXG4vLyBhcHBUeXBlcyIsICJuYW1lIjogIlJlbW92ZSAoVkVDVE9SPE1XRy5BcHBsaWNhdGlvblR5cGU+LCBOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCBlbnRyaWVzIGJldHdlZW4gdGhlIGdpdmVuIGluZGljZXMgcmVtb3ZlZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuQXBwbGljYXRpb25UeXBlPmA6IFRoZSBsaXN0IHRvIHJlbW92ZSBlbnRyaWVzIGZyb20uXG4yLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIGluZGV4LlxuMy4gYE5VTUJFUmA6IFRoZSBlbmRpbmcgaW5kZXguIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5BcHBsaWNhdGlvblR5cGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBsaXN0IHdpdGggYWxsIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBzZWNvbmQgbGlzdCByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgdmVjdG9yIG9mIE1XRy5BcHBsaWNhdGlvblR5cGUgdG8gcmVwcmVzZW50IHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uc1xuVkVDVE9SPE1XRy5BcHBsaWNhdGlvblR5cGU+IGN1cnJlbnRBcHBsaWNhdGlvbnMgPSBbXCJBcHAxXCIsIFwiQXBwMlwiLCBcIkFwcDNcIiwgXCJBcHA0XCJdXG5cbi8vIERlZmluZSBhIHZlY3RvciBvZiBNV0cuQXBwbGljYXRpb25UeXBlIHRvIHJlcHJlc2VudCB0aGUgYXBwbGljYXRpb25zIHRvIGJlIHJlbW92ZWRcblZFQ1RPUjxNV0cuQXBwbGljYXRpb25UeXBlPiBhcHBsaWNhdGlvbnNUb1JlbW92ZSA9IFtcIkFwcDJcIiwgXCJBcHA0XCJdXG5cbi8vIENhbGwgdGhlIFJlbW92ZSBmdW5jdGlvbiB0byByZW1vdmUgdGhlIHNwZWNpZmllZCBhcHBsaWNhdGlvbnMgZnJvbSB0aGUgY3VycmVudCBhcHBsaWNhdGlvbnNcblZFQ1RPUjxNV0cuQXBwbGljYXRpb25UeXBlPiB1cGRhdGVkQXBwbGljYXRpb25zID0gUmVtb3ZlKGN1cnJlbnRBcHBsaWNhdGlvbnMsIGFwcGxpY2F0aW9uc1RvUmVtb3ZlKVxuXG4vLyBVcGRhdGVkIEFwcGxpY2F0aW9uczogXCIgKyB1cGRhdGVkQXBwbGljYXRpb25zIiwgIm5hbWUiOiAiUmVtb3ZlIChWRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT4sIFZFQ1RPUjxNV0cuQXBwbGljYXRpb25UeXBlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGZpcnN0IGxpc3Qgd2l0aCBhbGwgZWxlbWVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIHNlY29uZCBsaXN0IHJlbW92ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT5gOiBUaGUgbGlzdCB0byByZW1vdmUgZWxlbWVudHMgZnJvbS5cbjIuIGBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT5gOiBUaGUgbGlzdCBvZiBlbGVtZW50cyB0byByZW1vdmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBsaXN0IHdpdGggZW50cmllcyBiZXR3ZWVuIHRoZSBnaXZlbiBzdGFydCBhbmQgZW5kIGluZGljZXMgcmVtb3ZlZC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPiBvcmlnaW5hbExpc3QgPSBbXCJvcmlnaW5hbF9saXN0XCJdXG5WRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4gZWxlbWVudHNUb1JlbW92ZSA9IFtcImVsZW1lbnRzX3RvX3JlbW92ZVwiXVxuXG5WRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4gdXBkYXRlZExpc3QgPSBSZW1vdmUob3JpZ2luYWxMaXN0LCBlbGVtZW50c1RvUmVtb3ZlKVxuXG4vLyBcIlVwZGF0ZWQgTGlzdDogXCIgKyB1cGRhdGVkTGlzdCIsICJuYW1lIjogIlJlbW92ZSAoVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+LCBOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCBlbnRyaWVzIGJldHdlZW4gdGhlIGdpdmVuIGluZGljZXMgcmVtb3ZlZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPmA6IFRoZSBsaXN0IHRvIHJlbW92ZSBlbnRyaWVzIGZyb20uXG4yLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIGluZGV4LlxuMy4gYE5VTUJFUmA6IFRoZSBlbmRpbmcgaW5kZXguIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBsaXN0IHdpdGggYWxsIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBzZWNvbmQgbGlzdCByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHRoZSBpbml0aWFsIGxpc3Qgb2YgTVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZSBvYmplY3RzXG5WRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4gaW5pdGlhbExpc3QgPSBbIFwiaW5pdGlhbF9saXN0XCIgXVxuXG4vLyBEZWZpbmUgdGhlIGxpc3Qgb2YgTVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZSBvYmplY3RzIHRvIGJlIHJlbW92ZWRcblZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPiByZW1vdmVMaXN0ID0gWyBcInJlbW92ZV9saXN0XCIgXVxuXG4vLyBDYWxsIHRoZSBSZW1vdmUgZnVuY3Rpb24gdG8gcmVtb3ZlIGl0ZW1zIGluIHJlbW92ZUxpc3QgZnJvbSBpbml0aWFsTGlzdFxuVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+IHVwZGF0ZWRMaXN0ID0gUmVtb3ZlKGluaXRpYWxMaXN0LCByZW1vdmVMaXN0KVxuXG4vLyBPcHRpb25hbGx5LCBzZXQgdGhlIHVwZGF0ZWQgbGlzdCB0byBhIHByb3BlcnR5IG9yIHVzZSBpdCBmdXJ0aGVyIGluIHRoZSBjb2RlXG5NV0cuU2V0UHJvcGVydHlWYWx1ZShcIlVwZGF0ZWRIb3N0QW5kQ2VydGlmaWNhdGVMaXN0XCIsIHVwZGF0ZWRMaXN0KVxuXG4vLyBEZWJ1ZyBvdXRwdXQgdG8gdmVyaWZ5IHRoZSByZXN1bHRcbi8vIFVwZGF0ZWQgbGlzdCBhZnRlciByZW1vdmFsOiBcIiArIHVwZGF0ZWRMaXN0IiwgIm5hbWUiOiAiUmVtb3ZlIChWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4sIFZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGZpcnN0IGxpc3Qgd2l0aCBhbGwgZWxlbWVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIHNlY29uZCBsaXN0IHJlbW92ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT5gOiBUaGUgbGlzdCB0byByZW1vdmUgZWxlbWVudHMgZnJvbS5cbjIuIGBWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT5gOiBUaGUgbGlzdCBvZiBlbGVtZW50cyB0byByZW1vdmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCBlbnRyaWVzIGJldHdlZW4gdGhlIGdpdmVuIHN0YXJ0IGFuZCBlbmQgaW5kaWNlcyByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIFZFQ1RPUiBvZiBNV0cuVXJsQ2F0ZWdvcnlcblZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+IHVybENhdGVnb3JpZXMgPSBbXCJTb2NpYWxNZWRpYVwiLCBcIk5ld3NcIiwgXCJTaG9wcGluZ1wiLCBcIkVudGVydGFpbm1lbnRcIiwgXCJFZHVjYXRpb25cIl1cblxuLy8gT3JpZ2luYWwgVkVDVE9SOiBcIiArIHVybENhdGVnb3JpZXNcblxuLy8gUmVtb3ZlIDIgZWxlbWVudHMgc3RhcnRpbmcgZnJvbSBpbmRleCAxIChpLmUuLCBcIk5ld3NcIiBhbmQgXCJTaG9wcGluZ1wiKVxudXJsQ2F0ZWdvcmllcyA9IFJlbW92ZSh1cmxDYXRlZ29yaWVzLCAxLCAyKVxuXG4vLyBNb2RpZmllZCBWRUNUT1I6IFwiICsgdXJsQ2F0ZWdvcmllcyIsICJuYW1lIjogIlJlbW92ZSAoVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4sIE5VTUJFUiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIGVudHJpZXMgYmV0d2VlbiB0aGUgZ2l2ZW4gaW5kaWNlcyByZW1vdmVkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT5gOiBUaGUgbGlzdCB0byByZW1vdmUgZW50cmllcyBmcm9tLlxuMi4gYE5VTUJFUmA6IFRoZSBzdGFydGluZyBpbmRleC5cbjMuIGBOVU1CRVJgOiBUaGUgZW5kaW5nIGluZGV4LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBsaXN0IHdpdGggYWxsIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBzZWNvbmQgbGlzdCByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIHR3byB2ZWN0b3JzIG9mIE1XRy5VcmxDYXRlZ29yeVxuVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gYWxsQ2F0ZWdvcmllcyA9IFtcImFsbF9jYXRlZ29yaWVzX2xpc3RcIl1cblZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+IGNhdGVnb3JpZXNUb1JlbW92ZSA9IFtcInJlbW92ZV9jYXRlZ29yaWVzX2xpc3RcIl1cblxuLy8gUmVtb3ZlIGNhdGVnb3JpZXNUb1JlbW92ZSBmcm9tIGFsbENhdGVnb3JpZXNcblZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+IHVwZGF0ZWRDYXRlZ29yaWVzID0gUmVtb3ZlKGFsbENhdGVnb3JpZXMsIGNhdGVnb3JpZXNUb1JlbW92ZSlcblxuLy8gU2V0IHRoZSB1cGRhdGVkIGNhdGVnb3JpZXMgdG8gYSB1c2VyLWRlZmluZWQgdmFyaWFibGVcbk1XRy5TZXRVc2VyRGVmaW5lZFZhcihcIlVwZGF0ZWRDYXRlZ29yaWVzXCIsIHVwZGF0ZWRDYXRlZ29yaWVzKVxuXG4vLyBVcGRhdGVkIENhdGVnb3JpZXM6IFwiICsgdXBkYXRlZENhdGVnb3JpZXMiLCAibmFtZSI6ICJSZW1vdmUgKFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+LCBWRUNUT1I8TVdHLlVybENhdGVnb3J5PikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGZpcnN0IGxpc3Qgd2l0aCBhbGwgZWxlbWVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIHNlY29uZCBsaXN0IHJlbW92ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLlVybENhdGVnb3J5PmA6IFRoZSBsaXN0IHRvIHJlbW92ZSBlbGVtZW50cyBmcm9tLlxuMi4gYFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+YDogVGhlIGxpc3Qgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVA+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBsaXN0IHdpdGggZW50cmllcyBiZXR3ZWVuIHRoZSBnaXZlbiBzdGFydCBhbmQgZW5kIGluZGljZXMgcmVtb3ZlZC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBWRUNUT1Igb2YgTmV0LklQXG5WRUNUT1I8TmV0LklQPiBpcExpc3QgPSBcIjE5Mi4xNjguMS4xXCIsIFwiMTkyLjE2OC4xLjJcIiwgXCIxOTIuMTY4LjEuM1wiLCBcIjE5Mi4xNjguMS40XCIsIFwiMTkyLjE2OC4xLjVcIlxuXG4vLyBPcmlnaW5hbCBJUCBMaXN0OiBcbi8vIERFQlVHKFwiT3JpZ2luYWwgSVAgTGlzdDogXCIgKyBpcExpc3QpXG5cbi8vIFJlbW92ZSAyIGVsZW1lbnRzIHN0YXJ0aW5nIGZyb20gaW5kZXggMVxuUmVtb3ZlKGlwTGlzdCwgMSwgMilcblxuLy8gTW9kaWZpZWQgSVAgTGlzdDogXG4vLyBERUJVRyhcIk1vZGlmaWVkIElQIExpc3Q6IFwiICsgaXBMaXN0KSIsICJuYW1lIjogIlJlbW92ZSAoVkVDVE9SPE5ldC5JUD4sIE5VTUJFUiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIGVudHJpZXMgYmV0d2VlbiB0aGUgZ2l2ZW4gaW5kaWNlcyByZW1vdmVkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5ldC5JUD5gOiBUaGUgbGlzdCB0byByZW1vdmUgZW50cmllcyBmcm9tLlxuMi4gYE5VTUJFUmA6IFRoZSBzdGFydGluZyBpbmRleC5cbjMuIGBOVU1CRVJgOiBUaGUgZW5kaW5nIGluZGV4LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVA+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBsaXN0IHdpdGggYWxsIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBzZWNvbmQgbGlzdCByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5ldC5JUD4gaXBMaXN0ID0gTmV0LklQKFwiMTkyLjE2OC4xLjFcIiksIE5ldC5JUChcIjE5Mi4xNjguMS4yXCIpLCBOZXQuSVAoXCIxOTIuMTY4LjEuM1wiKVxuVkVDVE9SPE5ldC5JUD4gaXBzVG9SZW1vdmUgPSBOZXQuSVAoXCIxOTIuMTY4LjEuMlwiKSwgTmV0LklQKFwiMTkyLjE2OC4xLjNcIilcblxuaXBMaXN0ID0gUmVtb3ZlKGlwTGlzdCwgaXBzVG9SZW1vdmUpXG5cbi8vIFVwZGF0ZWQgSVAgTGlzdDogXCIgKyBpcExpc3QiLCAibmFtZSI6ICJSZW1vdmUgKFZFQ1RPUjxOZXQuSVA+LCBWRUNUT1I8TmV0LklQPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGZpcnN0IGxpc3Qgd2l0aCBhbGwgZWxlbWVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIHNlY29uZCBsaXN0IHJlbW92ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TmV0LklQPmA6IFRoZSBsaXN0IHRvIHJlbW92ZSBlbGVtZW50cyBmcm9tLlxuMi4gYFZFQ1RPUjxOZXQuSVA+YDogVGhlIGxpc3Qgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVBSYW5nZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCBlbnRyaWVzIGJldHdlZW4gdGhlIGdpdmVuIHN0YXJ0IGFuZCBlbmQgaW5kaWNlcyByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIFZFQ1RPUiBvZiBOZXQuSVBSYW5nZVxuVkVDVE9SPE5ldC5JUFJhbmdlPiBpcFJhbmdlcyA9IE5ldC5JUFJhbmdlKFwiMTkyLjE2OC4xLjAvMjRcIiksIE5ldC5JUFJhbmdlKFwiMTAuMC4wLjAvOFwiKSwgTmV0LklQUmFuZ2UoXCIxNzIuMTYuMC4wLzEyXCIpXG5cbi8vIERlZmluZSB0aGUgc3RhcnQgYW5kIGVuZCBpbmRpY2VzIGZvciByZW1vdmFsXG5OVU1CRVIgc3RhcnRJbmRleCA9IDFcbk5VTUJFUiBlbmRJbmRleCA9IDJcblxuLy8gQ3JlYXRlIGEgbmV3IFZFQ1RPUiB0byBzdG9yZSB0aGUgdXBkYXRlZCBsaXN0XG5WRUNUT1I8TmV0LklQUmFuZ2U+IHVwZGF0ZWRJcFJhbmdlc1xuXG4vLyBMb29wIHRocm91Z2ggdGhlIG9yaWdpbmFsIFZFQ1RPUiBhbmQgYWRkIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBpbiB0aGUgcmVtb3ZhbCByYW5nZVxuRk9SIE5VTUJFUiBpID0gMCBUTyBTSVpFKGlwUmFuZ2VzKSAtIDEge1xuICAgIElGIGkgPCBzdGFydEluZGV4IE9SIGkgPiBlbmRJbmRleCBUSEVOIHtcbiAgICAgICAgdXBkYXRlZElwUmFuZ2VzID0gdXBkYXRlZElwUmFuZ2VzICsgaXBSYW5nZXNbaV1cbiAgICB9XG59XG5cbi8vIEFzc2lnbiB0aGUgdXBkYXRlZCBWRUNUT1IgYmFjayB0byB0aGUgb3JpZ2luYWwgdmFyaWFibGVcbmlwUmFuZ2VzID0gdXBkYXRlZElwUmFuZ2VzXG5cbi8vIENvbW1lbnRlZCBvdXQgZGVidWcgb3V0cHV0IHRvIHZlcmlmeSB0aGUgcmVtb3ZhbFxuLy8gXCJVcGRhdGVkIElQIFJhbmdlczogXCIgKyBpcFJhbmdlcyIsICJuYW1lIjogIlJlbW92ZSAoVkVDVE9SPE5ldC5JUFJhbmdlPiwgTlVNQkVSLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBsaXN0IHdpdGggZW50cmllcyBiZXR3ZWVuIHRoZSBnaXZlbiBpbmRpY2VzIHJlbW92ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TmV0LklQUmFuZ2U+YDogVGhlIGxpc3QgdG8gcmVtb3ZlIGVudHJpZXMgZnJvbS5cbjIuIGBOVU1CRVJgOiBUaGUgc3RhcnRpbmcgaW5kZXguXG4zLiBgTlVNQkVSYDogVGhlIGVuZGluZyBpbmRleC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TmV0LklQUmFuZ2U+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBsaXN0IHdpdGggYWxsIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBzZWNvbmQgbGlzdCByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5ldC5JUFJhbmdlPiBpcExpc3QgPSBcIjE5Mi4xNjguMS4wLzI0XCIsIFwiMTAuMC4wLjAvOFwiLCBcIjE3Mi4xNi4wLjAvMTJcIlxuVkVDVE9SPE5ldC5JUFJhbmdlPiBpcFRvUmVtb3ZlID0gXCIxMC4wLjAuMC84XCJcblxuVkVDVE9SPE5ldC5JUFJhbmdlPiB1cGRhdGVkTGlzdCA9IFJlbW92ZShpcExpc3QsIGlwVG9SZW1vdmUpXG5cbi8vIFVwZGF0ZWQgSVAgTGlzdDogXCIgKyB1cGRhdGVkTGlzdCIsICJuYW1lIjogIlJlbW92ZSAoVkVDVE9SPE5ldC5JUFJhbmdlPiwgVkVDVE9SPE5ldC5JUFJhbmdlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGZpcnN0IGxpc3Qgd2l0aCBhbGwgZWxlbWVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIHNlY29uZCBsaXN0IHJlbW92ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TmV0LklQUmFuZ2U+YDogVGhlIGxpc3QgdG8gcmVtb3ZlIGVsZW1lbnRzIGZyb20uXG4yLiBgVkVDVE9SPE5ldC5JUFJhbmdlPmA6IFRoZSBsaXN0IG9mIGVsZW1lbnRzIHRvIHJlbW92ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TlVNQkVSPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIGVudHJpZXMgYmV0d2VlbiB0aGUgZ2l2ZW4gc3RhcnQgYW5kIGVuZCBpbmRpY2VzIHJlbW92ZWQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIGEgVkVDVE9SIG9mIE5VTUJFUnNcblZFQ1RPUjxOVU1CRVI+IG51bWJlcnMgPSAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMFxuXG4vLyBPcmlnaW5hbCBWRUNUT1I6IFxuLy8gbnVtYmVyc1xuXG4vLyBSZW1vdmUgZWxlbWVudHMgZnJvbSBpbmRleCAzIHRvIDUgKGluY2x1c2l2ZSlcbm51bWJlcnMgPSBSZW1vdmUobnVtYmVycywgMywgNSlcblxuLy8gVXBkYXRlZCBWRUNUT1I6IFxuLy8gbnVtYmVycyIsICJuYW1lIjogIlJlbW92ZSAoVkVDVE9SPE5VTUJFUj4sIE5VTUJFUiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIGVudHJpZXMgYmV0d2VlbiB0aGUgZ2l2ZW4gaW5kaWNlcyByZW1vdmVkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5VTUJFUj5gOiBUaGUgbGlzdCB0byByZW1vdmUgZW50cmllcyBmcm9tLlxuMi4gYE5VTUJFUmA6IFRoZSBzdGFydGluZyBpbmRleC5cbjMuIGBOVU1CRVJgOiBUaGUgZW5kaW5nIGluZGV4LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOVU1CRVI+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBsaXN0IHdpdGggYWxsIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBzZWNvbmQgbGlzdCByZW1vdmVkLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPFNUUklORz4gZXhhbXBsZUxpc3QgPSBcIm9uZVwiLCBcInR3b1wiLCBcInRocmVlXCIsIFwiZm91clwiLCBcImZpdmVcIlxuLy8gT3JpZ2luYWwgTGlzdDogXCIgKyBleGFtcGxlTGlzdFxuXG4vLyBSZW1vdmUgZWxlbWVudHMgZnJvbSBpbmRleCAxIHRvIDMgKGluY2x1c2l2ZSlcbmV4YW1wbGVMaXN0ID0gUmVtb3ZlKGV4YW1wbGVMaXN0LCAxLCAzKVxuLy8gVXBkYXRlZCBMaXN0OiBcIiArIGV4YW1wbGVMaXN0IiwgIm5hbWUiOiAiUmVtb3ZlIChWRUNUT1I8TlVNQkVSPiwgVkVDVE9SPE5VTUJFUj4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBsaXN0IHdpdGggYWxsIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIHRoZSBzZWNvbmQgbGlzdCByZW1vdmVkLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5VTUJFUj5gOiBUaGUgbGlzdCB0byByZW1vdmUgZWxlbWVudHMgZnJvbS5cbjIuIGBWRUNUT1I8TlVNQkVSPmA6IFRoZSBsaXN0IG9mIGVsZW1lbnRzIHRvIHJlbW92ZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIGVudHJpZXMgYmV0d2VlbiB0aGUgZ2l2ZW4gc3RhcnQgYW5kIGVuZCBpbmRpY2VzIHJlbW92ZWQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIGEgVkVDVE9SIG9mIFNUUklOR3NcblZFQ1RPUjxTVFJJTkc+IG15TGlzdCA9IFwiYXBwbGVcIiwgXCJiYW5hbmFcIiwgXCJjaGVycnlcIiwgXCJkYXRlXCIsIFwiZWxkZXJiZXJyeVwiXG5cbi8vIE9yaWdpbmFsIGxpc3Q6IFwiICsgbXlMaXN0XG4vLyBSZW1vdmUgZWxlbWVudHMgZnJvbSBpbmRleCAxIHRvIDMgKGluY2x1c2l2ZSlcbm15TGlzdCA9IFJlbW92ZShteUxpc3QsIDEsIDMpXG5cbi8vIFVwZGF0ZWQgbGlzdDogXCIgKyBteUxpc3QiLCAibmFtZSI6ICJSZW1vdmUgKFZFQ1RPUjxTVFJJTkc+LCBOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCBlbnRyaWVzIGJldHdlZW4gdGhlIGdpdmVuIGluZGljZXMgcmVtb3ZlZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGxpc3QgdG8gcmVtb3ZlIGVudHJpZXMgZnJvbS5cbjIuIGBOVU1CRVJgOiBUaGUgc3RhcnRpbmcgaW5kZXguXG4zLiBgTlVNQkVSYDogVGhlIGVuZGluZyBpbmRleC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgZmlyc3QgbGlzdCB3aXRoIGFsbCBlbGVtZW50cyB0aGF0IGFwcGVhciBpbiB0aGUgc2Vjb25kIGxpc3QgcmVtb3ZlZC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxTVFJJTkc+IG9yaWdpbmFsTGlzdCA9IFwiYXBwbGVcIiwgXCJiYW5hbmFcIiwgXCJjaGVycnlcIiwgXCJkYXRlXCIsIFwiZmlnXCJcblZFQ1RPUjxTVFJJTkc+IGl0ZW1zVG9SZW1vdmUgPSBcImJhbmFuYVwiLCBcImZpZ1wiXG5cbi8vIFVzaW5nIHRoZSBSZW1vdmUgZnVuY3Rpb24gdG8gcmVtb3ZlIGl0ZW1zIGZyb20gb3JpZ2luYWxMaXN0IHRoYXQgYXJlIHByZXNlbnQgaW4gaXRlbXNUb1JlbW92ZVxuVkVDVE9SPFNUUklORz4gdXBkYXRlZExpc3QgPSBSZW1vdmUob3JpZ2luYWxMaXN0LCBpdGVtc1RvUmVtb3ZlKVxuXG4vLyBPcmlnaW5hbCBMaXN0OiBcIiArIG9yaWdpbmFsTGlzdFxuLy8gSXRlbXMgdG8gUmVtb3ZlOiBcIiArIGl0ZW1zVG9SZW1vdmVcbi8vIFVwZGF0ZWQgTGlzdDogXCIgKyB1cGRhdGVkTGlzdCIsICJuYW1lIjogIlJlbW92ZSAoVkVDVE9SPFNUUklORz4sIFZFQ1RPUjxTVFJJTkc+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgZmlyc3QgbGlzdCB3aXRoIGFsbCBlbGVtZW50cyB0aGF0IGFwcGVhciBpbiB0aGUgc2Vjb25kIGxpc3QgcmVtb3ZlZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxTVFJJTkc+YDogVGhlIGxpc3QgdG8gcmVtb3ZlIGVsZW1lbnRzIGZyb20uXG4yLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgbGlzdCBvZiBlbGVtZW50cyB0byByZW1vdmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciByYW5nZSByZXBsYWNlZCBieSB0aGUgZ2l2ZW4gcmVwbGFjZW1lbnQgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIG9yaWdpbmFsU3RyaW5nID0gXCJIZWxsbywgV29ybGQhXCJcbk5VTUJFUiBzdGFydFBvc2l0aW9uID0gN1xuTlVNQkVSIGxlbmd0aFRvUmVwbGFjZSA9IDVcblNUUklORyByZXBsYWNlbWVudFN0cmluZyA9IFwiTU9XR0xJXCJcblxuU1RSSU5HIHJlc3VsdFN0cmluZyA9IFJlcGxhY2Uob3JpZ2luYWxTdHJpbmcsIHN0YXJ0UG9zaXRpb24sIGxlbmd0aFRvUmVwbGFjZSwgcmVwbGFjZW1lbnRTdHJpbmcpXG4vLyBPcmlnaW5hbCBTdHJpbmc6IEhlbGxvLCBXb3JsZCFcbi8vIE1vZGlmaWVkIFN0cmluZzogSGVsbG8sIE1PV0dMSSEiLCAibmFtZSI6ICJSZXBsYWNlIChTVFJJTkcsIE5VTUJFUiwgTlVNQkVSLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciByYW5nZSByZXBsYWNlZCBieSB0aGUgZ2l2ZW4gcmVwbGFjZW1lbnQgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIG9yaWdpbmFsIHN0cmluZy5cbjIuIGBOVU1CRVJgOiBUaGUgc3RhcnRpbmcgcG9zaXRpb24gb2YgdGhlIHJhbmdlIHRvIHJlcGxhY2UuXG4zLiBgTlVNQkVSYDogVGhlIGxlbmd0aCBvZiB0aGUgcmFuZ2UgdG8gcmVwbGFjZS5cbjQuIGBTVFJJTkdgOiBUaGUgcmVwbGFjZW1lbnQgc3RyaW5nLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggY2hhcmFjdGVycyBhdCBhbmQgYWZ0ZXIgdGhlIGdpdmVuIHBvc2l0aW9uIHJlcGxhY2VkIGJ5IHRoZSBnaXZlbiBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgb3JpZ2luYWxTdHJpbmcgPSBcIkhlbGxvLCBXb3JsZCFcIlxuTlVNQkVSIHN0YXJ0UG9zaXRpb24gPSA3XG5TVFJJTkcgcmVwbGFjZW1lbnRTdHJpbmcgPSBcIk1PV0dMSVwiXG5cblNUUklORyByZXN1bHRTdHJpbmcgPSBSZXBsYWNlKG9yaWdpbmFsU3RyaW5nLCBzdGFydFBvc2l0aW9uLCByZXBsYWNlbWVudFN0cmluZylcblxuLy8gVGhpcyB3aWxsIHByaW50IFwiSGVsbG8sIE1PV0dMSSFcIiIsICJuYW1lIjogIlJlcGxhY2UgKFNUUklORywgTlVNQkVSLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBjaGFyYWN0ZXJzIGF0IGFuZCBhZnRlciB0aGUgZ2l2ZW4gc3RhcnRpbmcgcG9zaXRpb24gcmVwbGFjZWQgYnkgdGhlIGdpdmVuIHJlcGxhY2VtZW50IHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBvcmlnaW5hbCBzdHJpbmcuXG4yLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIHBvc2l0aW9uLlxuMy4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gaW5zZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHRoZSBnaXZlbiBzdWJzdHJpbmcgcmVwbGFjZWQgYnkgdGhlIHJlcGxhY2VtZW50IHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBvcmlnaW5hbFN0cmluZyA9IFwiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1wiXG5TVFJJTkcgdGFyZ2V0U3Vic3RyaW5nID0gXCJvXCJcblNUUklORyByZXBsYWNlbWVudFN1YnN0cmluZyA9IFwiMFwiXG5cblNUUklORyByZXN1bHRTdHJpbmcgPSBSZXBsYWNlQWxsKG9yaWdpbmFsU3RyaW5nLCB0YXJnZXRTdWJzdHJpbmcsIHJlcGxhY2VtZW50U3Vic3RyaW5nKVxuXG4vLyBUaGlzIHdpbGwgcHJpbnQ6IFwiVGhlIHF1aWNrIGJyMHduIGYweCBqdW1wcyAwdmVyIHRoZSBsYXp5IGQwZ1wiIiwgIm5hbWUiOiAiUmVwbGFjZUFsbCAoU1RSSU5HLCBTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIG5ldyBzdHJpbmcgd2l0aCBhbGwgaW5zdGFuY2VzIG9mIHRoZSBzcGVjaWZpZWQgc3Vic3RyaW5nIHJlcGxhY2VkIGJ5IHRoZSBnaXZlbiByZXBsYWNlbWVudCBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgb3JpZ2luYWwgc3RyaW5nLlxuMi4gYFNUUklOR2A6IFRoZSBzdWJzdHJpbmcgdG8gcmVwbGFjZS5cbjMuIGBTVFJJTkdgOiBUaGUgcmVwbGFjZW1lbnQgc3RyaW5nLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgc291cmNlIHN0cmluZyB3aXRoIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBzZWFyY2ggc3RyaW5nIHJlcGxhY2VkIGJ5IHRoZSByZXBsYWNlbWVudCBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgc291cmNlU3RyaW5nID0gXCJIZWxsbyB3b3JsZCwgd2VsY29tZSB0byB0aGUgd29ybGQgb2YgTU9XR0xJXCJcblNUUklORyB0YXJnZXRTdHJpbmcgPSBcIndvcmxkXCJcblNUUklORyByZXBsYWNlbWVudFN0cmluZyA9IFwidW5pdmVyc2VcIlxuXG5TVFJJTkcgcmVzdWx0U3RyaW5nID0gUmVwbGFjZUZpcnN0KHRhcmdldFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIHNvdXJjZVN0cmluZylcblxuLy8gT3V0cHV0OiBcIkhlbGxvIHVuaXZlcnNlLCB3ZWxjb21lIHRvIHRoZSB3b3JsZCBvZiBNT1dHTElcIiIsICJuYW1lIjogIlJlcGxhY2VGaXJzdCAoU1RSSU5HLCBTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIHNvdXJjZSBzdHJpbmcgd2l0aCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgc2VhcmNoIHN0cmluZyByZXBsYWNlZCBieSB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nLCBvciB0aGUgb3JpZ2luYWwgc3RyaW5nIHVuY2hhbmdlZCBpZiB0aGUgc2VhcmNoIHN0cmluZyBpcyBub3QgZm91bmQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc291cmNlIHN0cmluZyB0byBzZWFyY2ggaW4uXG4yLiBgU1RSSU5HYDogVGhlIHN1YnN0cmluZyB0byBmaW5kLlxuMy4gYFNUUklOR2A6IFRoZSByZXBsYWNlbWVudCBzdHJpbmcuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50J3Mgc3RyaW5nIHZhbHVlIGlmIGl0IGlzIG5vbi1lbXB0eSwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHNlY29uZCBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuSW50ZXJuYWxWYXJpYW50IG15VmFyaWFudFxuU1RSSU5HIGRlZmF1bHRWYWx1ZSA9IFwiRGVmYXVsdCBWYWx1ZVwiXG5cbi8vIEFzc3VtZSBteVZhcmlhbnQgaXMgZW1wdHkgYXQgdGhpcyBwb2ludFxubXlWYXJpYW50ID0gUmVwbGFjZUlmRW1wdHkobXlWYXJpYW50LCBkZWZhdWx0VmFsdWUpXG5cbi8vIFRoZSB2YWx1ZSBvZiBteVZhcmlhbnQgaXM6IFwiICsgbXlWYXJpYW50IiwgIm5hbWUiOiAiUmVwbGFjZUlmRW1wdHkgKE1XRy5JbnRlcm5hbFZhcmlhbnQsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZ2l2ZW4gc3RyaW5nIGlmIHRoZSBpbnRlcm5hbCB2YXJpYW50IHN0cmluZyBpcyBlbXB0eS4gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIHRoZSBpbnRlcm5hbCB2YXJpYW50IHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFZhcmlhbnRgOiBUaGUgc3RyaW5nIHZhbHVlIHRvIGNoZWNrLlxuMi4gYFNUUklOR2A6IFRoZSByZXBsYWNlbWVudCBzdHJpbmcgdG8gdXNlIGlmIHRoZSBmaXJzdCBpcyBlbXB0eS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZmlyc3Qgc3RyaW5nIGlmIGl0IGlzIG5vbi1lbXB0eSwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHNlY29uZCBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgb3JpZ2luYWxTdHJpbmcgPSBcIlwiXG5TVFJJTkcgcmVwbGFjZW1lbnRTdHJpbmcgPSBcIkRlZmF1bHQgVmFsdWVcIlxuXG5TVFJJTkcgcmVzdWx0U3RyaW5nID0gUmVwbGFjZUlmRW1wdHkob3JpZ2luYWxTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKVxuXG4vLyBcIlJlc3VsdGluZyBTdHJpbmc6IFwiICsgcmVzdWx0U3RyaW5nIiwgIm5hbWUiOiAiUmVwbGFjZUlmRW1wdHkgKFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBzZWNvbmQgc3RyaW5nIGlmIHRoZSBmaXJzdCBzdHJpbmcgaXMgZW1wdHkuIE90aGVyd2lzZSwgaXQgcmV0dXJucyB0aGUgZmlyc3Qgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byBjaGVjay5cbjIuIGBTVFJJTkdgOiBUaGUgcmVwbGFjZW1lbnQgc3RyaW5nIHRvIHVzZSBpZiB0aGUgZmlyc3QgaXMgZW1wdHkuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHJlcGxhY2VtZW50IHN0cmluZyBpZiB0aGUgZmlyc3QgYXJndW1lbnQgZXF1YWxzIHRoZSBzZWNvbmQgc3RyaW5nOyBvdGhlcndpc2UgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQncyBzdHJpbmcgdmFsdWUuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuSW50ZXJuYWxWYXJpYW50IG15VmFyaWFudCA9IFwib2xkVmFsdWVcIlxuU1RSSU5HIHRhcmdldFZhbHVlID0gXCJvbGRWYWx1ZVwiXG5TVFJJTkcgbmV3VmFsdWUgPSBcIm5ld1ZhbHVlXCJcblxuLy8gUmVwbGFjZSB0aGUgdmFsdWUgb2YgbXlWYXJpYW50IGlmIGl0IGVxdWFscyB0YXJnZXRWYWx1ZVxuUmVwbGFjZUlmRXF1YWxzKG15VmFyaWFudCwgdGFyZ2V0VmFsdWUsIG5ld1ZhbHVlKVxuXG4vLyBUaGUgdmFsdWUgb2YgbXlWYXJpYW50IGlzIG5vdzogXCIgKyBteVZhcmlhbnQiLCAibmFtZSI6ICJSZXBsYWNlSWZFcXVhbHMgKE1XRy5JbnRlcm5hbFZhcmlhbnQsIFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSB0aGlyZCBzdHJpbmcgaWYgdGhlIGZpcnN0IGFuZCBzZWNvbmQgc3RyaW5ncyBhcmUgZXF1YWw7IG90aGVyd2lzZSwgaXQgcmV0dXJucyB0aGUgZmlyc3Qgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsVmFyaWFudGA6IFRoZSBvcmlnaW5hbCBzdHJpbmcgdmFsdWUgdG8gY2hlY2suXG4yLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byBjb21wYXJlIGFnYWluc3QuXG4zLiBgU1RSSU5HYDogVGhlIHJlcGxhY2VtZW50IHN0cmluZy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nIGlmIHRoZSBmaXJzdCBzdHJpbmcgZXF1YWxzIHRoZSBzZWNvbmQgc3RyaW5nOyBvdGhlcndpc2UgcmV0dXJucyB0aGUgZmlyc3Qgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIG9yaWdpbmFsU3RyaW5nID0gXCJoZWxsb1wiXG5TVFJJTkcgdGFyZ2V0U3RyaW5nID0gXCJoZWxsb1wiXG5TVFJJTkcgcmVwbGFjZW1lbnRTdHJpbmcgPSBcIndvcmxkXCJcblxuU1RSSU5HIHJlc3VsdFN0cmluZyA9IFJlcGxhY2VJZkVxdWFscyhvcmlnaW5hbFN0cmluZywgdGFyZ2V0U3RyaW5nLCByZXBsYWNlbWVudFN0cmluZylcblxuLy8gT3JpZ2luYWwgU3RyaW5nOiBcIiArIG9yaWdpbmFsU3RyaW5nXG4vLyBUYXJnZXQgU3RyaW5nOiBcIiArIHRhcmdldFN0cmluZ1xuLy8gUmVwbGFjZW1lbnQgU3RyaW5nOiBcIiArIHJlcGxhY2VtZW50U3RyaW5nXG4vLyBSZXN1bHQgU3RyaW5nOiBcIiArIHJlc3VsdFN0cmluZyIsICJuYW1lIjogIlJlcGxhY2VJZkVxdWFscyAoU1RSSU5HLCBTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgdGhpcmQgc3RyaW5nIGlmIHRoZSBmaXJzdCBhbmQgc2Vjb25kIHN0cmluZ3MgYXJlIGVxdWFsOyBvdGhlcndpc2UsIGl0IHJldHVybnMgdGhlIGZpcnN0IHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBvcmlnaW5hbCBzdHJpbmcuXG4yLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byBjb21wYXJlIGFnYWluc3QuXG4zLiBgU1RSSU5HYDogVGhlIHJlcGxhY2VtZW50IHN0cmluZy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJSZWdFeEpTaS5MaXN0IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBsaXN0IHdpdGggaXRzIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXIuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDcmVhdGUgYSBSZWdFeEpTaS5MaXN0IHdpdGggc29tZSByZWd1bGFyIGV4cHJlc3Npb25zXG5SZWdFeEpTaS5MaXN0IHJlZ2V4TGlzdCA9IFwicmVnMVwiLCBcInJlZzJcIiwgXCJyZWczXCJcblxuLy8gUmV2ZXJzZSB0aGUgbGlzdFxuUmVnRXhKU2kuTGlzdCByZXZlcnNlZExpc3QgPSByZWdleExpc3QuUmV2ZXJzZSgpXG5cbi8vIFJldmVyc2VkIExpc3Q6IFwiICsgcmV2ZXJzZWRMaXN0IHdhcyBvcmlnaW5hbGx5IHByaW50ZWQgdG8gdGhlIGNvbnNvbGUgaGVyZS4iLCAibmFtZSI6ICJSZXZlcnNlIChSZWdFeEpTaS5MaXN0KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbGlzdCB3aGVyZSB0aGUgZWxlbWVudHMgYXJlIGluIHRoZSBvcHBvc2l0ZSBvcmRlciBmcm9tIHRoZSBvcmlnaW5hbCBsaXN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgUmVnRXhKU2kuTGlzdGA6IFRoZSBsaXN0IHRvIHJldmVyc2UuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1lZGlhVHlwZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCBpdHMgZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlci4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxNZWRpYVR5cGU+IG9yaWdpbmFsVmVjdG9yID0gW1wiZXhhbXBsZV9tZWRpYV9saXN0XCJdXG5WRUNUT1I8TWVkaWFUeXBlPiByZXZlcnNlZFZlY3RvclxuXG5OVU1CRVIgbGVuZ3RoID0gb3JpZ2luYWxWZWN0b3IuU2l6ZSgpXG5OVU1CRVIgaSA9IGxlbmd0aCAtIDFcblxuV0hJTEUgaSA+PSAwIERPIHtcbiAgICByZXZlcnNlZFZlY3Rvci5QdXNoQmFjayhvcmlnaW5hbFZlY3RvcltpXSlcbiAgICBpID0gaSAtIDFcbn1cblxuLy8gT3B0aW9uYWxseSwgc2V0IHRoZSByZXZlcnNlZCB2ZWN0b3IgdG8gYSB1c2VyLWRlZmluZWQgdmFyaWFibGVcbk1XRy5TZXRVc2VyRGVmaW5lZFZhcihcIlJldmVyc2VkTWVkaWFUeXBlc1wiLCByZXZlcnNlZFZlY3RvcilcblxuLy8gT3JpZ2luYWwgVmVjdG9yOiBcIiArIG9yaWdpbmFsVmVjdG9yXG4vLyBSZXZlcnNlZCBWZWN0b3I6IFwiICsgcmV2ZXJzZWRWZWN0b3IiLCAibmFtZSI6ICJSZXZlcnNlIChWRUNUT1I8TWVkaWFUeXBlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIG5ldyBgVkVDVE9SPE1lZGlhVHlwZT5gIHdpdGggdGhlIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXIuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TWVkaWFUeXBlPmA6IFRoZSBsaXN0IHRvIHJldmVyc2UuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCBpdHMgZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlci4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBWRUNUT1Igb2YgTVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlXG5WRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPiBhcHBDYXRlZ29yaWVzID0gW1wiU29jaWFsIE1lZGlhXCIsIFwiU3RyZWFtaW5nIE1lZGlhXCIsIFwiRmlsZSBTaGFyaW5nXCJdXG5cbi8vIFJldmVyc2UgdGhlIFZFQ1RPUlxuVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT4gcmV2ZXJzZWRDYXRlZ29yaWVzID0gUmV2ZXJzZShhcHBDYXRlZ29yaWVzKVxuXG4vLyBSZXZlcnNlZCBBcHBsaWNhdGlvbiBDYXRlZ29yaWVzOiBcIiArIHJldmVyc2VkQ2F0ZWdvcmllcyIsICJuYW1lIjogIlJldmVyc2UgKFZFQ1RPUjxNV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGU+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbmV3IGBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uQ2F0ZWdvcnlUeXBlPmAgd2l0aCB0aGUgZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGU+YDogVGhlIGxpc3QgdG8gcmV2ZXJzZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCBpdHMgZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlci4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBWRUNUT1Igb2YgTVdHLkFwcGxpY2F0aW9uVHlwZVxuVkVDVE9SPE1XRy5BcHBsaWNhdGlvblR5cGU+IGFwcFR5cGVzID0gTVdHLkFwcGxpY2F0aW9uVHlwZShcIkFwcDFcIiksIE1XRy5BcHBsaWNhdGlvblR5cGUoXCJBcHAyXCIpLCBNV0cuQXBwbGljYXRpb25UeXBlKFwiQXBwM1wiKVxuXG4vLyBSZXZlcnNlIHRoZSBWRUNUT1JcblZFQ1RPUjxNV0cuQXBwbGljYXRpb25UeXBlPiByZXZlcnNlZEFwcFR5cGVzID0gUmV2ZXJzZShhcHBUeXBlcylcblxuLy8gUmV2ZXJzZWQgQXBwbGljYXRpb24gVHlwZXM6IFwiICsgcmV2ZXJzZWRBcHBUeXBlcyIsICJuYW1lIjogIlJldmVyc2UgKFZFQ1RPUjxNV0cuQXBwbGljYXRpb25UeXBlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIG5ldyBgVkVDVE9SPE1XRy5BcHBsaWNhdGlvblR5cGU+YCB3aXRoIHRoZSBlbGVtZW50cyBpbiByZXZlcnNlIG9yZGVyLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1XRy5BcHBsaWNhdGlvblR5cGU+YDogVGhlIGxpc3QgdG8gcmV2ZXJzZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCBpdHMgZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlci4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPiBvcmlnaW5hbFZlY3RvciA9IFtcImV4YW1wbGVfbGlzdFwiXVxuVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+IHJldmVyc2VkVmVjdG9yID0gW11cblxuTlVNQkVSIGxlbmd0aCA9IFNJWkUob3JpZ2luYWxWZWN0b3IpXG5OVU1CRVIgaSA9IGxlbmd0aCAtIDFcblxuV0hJTEUgaSA+PSAwIERPIHtcbiAgICByZXZlcnNlZFZlY3RvciA9IEluc2VydChyZXZlcnNlZFZlY3Rvciwgb3JpZ2luYWxWZWN0b3JbaV0sIGxlbmd0aCAtIGkgLSAxKVxuICAgIGkgPSBpIC0gMVxufVxuXG4vLyBPcmlnaW5hbCBWZWN0b3I6IFwiICsgb3JpZ2luYWxWZWN0b3Jcbi8vIFJldmVyc2VkIFZlY3RvcjogXCIgKyByZXZlcnNlZFZlY3RvciIsICJuYW1lIjogIlJldmVyc2UgKFZFQ1RPUjxNV0cuSG9zdEFuZENlcnRpZmljYXRlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIG5ldyBgVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+YCB3aXRoIHRoZSBlbGVtZW50cyBpbiByZXZlcnNlIG9yZGVyLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGU+YDogVGhlIGxpc3QgdG8gcmV2ZXJzZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TVdHLlVybENhdGVnb3J5PiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIGl0cyBlbGVtZW50cyBpbiByZXZlcnNlIG9yZGVyLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIFZFQ1RPUiBvZiBNV0cuVXJsQ2F0ZWdvcnlcblZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+IHVybENhdGVnb3JpZXMgPSBbXCJleGFtcGxlX3VybF9jYXRlZ29yeV9saXN0XCJdXG5cbi8vIE9yaWdpbmFsIGxpc3Q6IFxuLy8gdXJsQ2F0ZWdvcmllc1xuXG4vLyBSZXZlcnNlIHRoZSBsaXN0IHVzaW5nIHRoZSBSZXZlcnNlIGZ1bmN0aW9uXG5WRUNUT1I8TVdHLlVybENhdGVnb3J5PiByZXZlcnNlZENhdGVnb3JpZXMgPSBSZXZlcnNlKHVybENhdGVnb3JpZXMpXG5cbi8vIFJldmVyc2VkIGxpc3Q6IFxuLy8gcmV2ZXJzZWRDYXRlZ29yaWVzIiwgIm5hbWUiOiAiUmV2ZXJzZSAoVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBuZXcgYFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+YCB3aXRoIHRoZSBlbGVtZW50cyBpbiByZXZlcnNlIG9yZGVyLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT5gOiBUaGUgbGlzdCB0byByZXZlcnNlLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVA+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBsaXN0IHdpdGggaXRzIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXIuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgYSBWRUNUT1Igb2YgTmV0LklQXG5WRUNUT1I8TmV0LklQPiBpcEFkZHJlc3NlcyA9IFwiMTkyLjE2OC4xLjFcIiwgXCIxMC4wLjAuMVwiLCBcIjE3Mi4xNi4wLjFcIlxuXG4vLyBSZXZlcnNlIHRoZSBWRUNUT1Igb2YgTmV0LklQXG5WRUNUT1I8TmV0LklQPiByZXZlcnNlZElQQWRkcmVzc2VzID0gUmV2ZXJzZShpcEFkZHJlc3NlcylcblxuLy8gT3JpZ2luYWwgSVAgQWRkcmVzc2VzOiBcIiArIGlwQWRkcmVzc2VzXG4vLyBSZXZlcnNlZCBJUCBBZGRyZXNzZXM6IFwiICsgcmV2ZXJzZWRJUEFkZHJlc3NlcyIsICJuYW1lIjogIlJldmVyc2UgKFZFQ1RPUjxOZXQuSVA+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbmV3IGBWRUNUT1I8TmV0LklQPmAgd2l0aCB0aGUgZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOZXQuSVA+YDogVGhlIGxpc3QgdG8gcmV2ZXJzZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8TmV0LklQUmFuZ2U+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBsaXN0IHdpdGggaXRzIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXIuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TmV0LklQUmFuZ2U+IGlwUmFuZ2VzID0gW1wiZXhhbXBsZV9pcF9yYW5nZV9saXN0XCJdXG5WRUNUT1I8TmV0LklQUmFuZ2U+IHJldmVyc2VkSVBSYW5nZXMgPSBSZXZlcnNlKGlwUmFuZ2VzKVxuXG4vLyBPcmlnaW5hbCBJUCBSYW5nZXM6IFwiICsgaXBSYW5nZXNcbi8vIFJldmVyc2VkIElQIFJhbmdlczogXCIgKyByZXZlcnNlZElQUmFuZ2VzIiwgIm5hbWUiOiAiUmV2ZXJzZSAoVkVDVE9SPE5ldC5JUFJhbmdlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIG5ldyBgVkVDVE9SPE5ldC5JUFJhbmdlPmAgd2l0aCB0aGUgZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOZXQuSVBSYW5nZT5gOiBUaGUgbGlzdCB0byByZXZlcnNlLiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOVU1CRVI+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBsaXN0IHdpdGggaXRzIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXIuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TlVNQkVSPiBvcmlnaW5hbE51bWJlcnMgPSAxLCAyLCAzLCA0LCA1XG5WRUNUT1I8TlVNQkVSPiByZXZlcnNlZE51bWJlcnMgPSBSZXZlcnNlKG9yaWdpbmFsTnVtYmVycylcbi8vIE9yaWdpbmFsIE51bWJlcnM6IFwiICsgb3JpZ2luYWxOdW1iZXJzXG4vLyBSZXZlcnNlZCBOdW1iZXJzOiBcIiArIHJldmVyc2VkTnVtYmVycyIsICJuYW1lIjogIlJldmVyc2UgKFZFQ1RPUjxOVU1CRVI+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgbmV3IGBWRUNUT1I8TlVNQkVSPmAgd2l0aCB0aGUgZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOVU1CRVI+YDogVGhlIGxpc3QgdG8gcmV2ZXJzZS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIGl0cyBlbGVtZW50cyBpbiByZXZlcnNlIG9yZGVyLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPFNUUklORz4gb3JpZ2luYWxWZWN0b3IgPSBcImFwcGxlXCIsIFwiYmFuYW5hXCIsIFwiY2hlcnJ5XCJcblZFQ1RPUjxTVFJJTkc+IHJldmVyc2VkVmVjdG9yID0gUmV2ZXJzZShvcmlnaW5hbFZlY3RvcilcblxuLy8gT3JpZ2luYWwgVmVjdG9yOiBhcHBsZSwgYmFuYW5hLCBjaGVycnlcbi8vIFJldmVyc2VkIFZlY3RvcjogY2hlcnJ5LCBiYW5hbmEsIGFwcGxlIiwgIm5hbWUiOiAiUmV2ZXJzZSAoVkVDVE9SPFNUUklORz4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBuZXcgYFZFQ1RPUjxTVFJJTkc+YCB3aXRoIHRoZSBlbGVtZW50cyBpbiByZXZlcnNlIG9yZGVyLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgbGlzdCB0byByZXZlcnNlLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBnaXZlbiBzdWJzdHJpbmcgd2l0aGluIHRoZSBzdHJpbmcsIHNlYXJjaGluZyBiYWNrd2FyZCBmcm9tIHRoZSBnaXZlbiBzdGFydGluZyBwb3NpdGlvbiwgb3IgLTEgaWYgbm90IGZvdW5kLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIG1haW5TdHJpbmcgPSBcIkhlbGxvLCB3b3JsZCEgV2VsY29tZSB0byB0aGUgd29ybGQgb2YgTU9XR0xJLlwiXG5TVFJJTkcgc2VhcmNoU3RyaW5nID0gXCJ3b3JsZFwiXG5OVU1CRVIgc3RhcnRQb3NpdGlvbiA9IDMwXG5OVU1CRVIgcG9zaXRpb24gPSBSZXZlcnNlRmluZChtYWluU3RyaW5nLCBzdGFydFBvc2l0aW9uLCBzZWFyY2hTdHJpbmcpXG5cbi8vIFRoZSBwb3NpdGlvbiBvZiAnc2VhcmNoU3RyaW5nJyBpbiAnbWFpblN0cmluZycgc3RhcnRpbmcgZnJvbSBwb3NpdGlvbiBzdGFydFBvc2l0aW9uIGlzOiBwb3NpdGlvbiIsICJuYW1lIjogIlJldmVyc2VGaW5kIChTVFJJTkcsIE5VTUJFUiwgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBwb3NpdGlvbiAob3IgLTEpIG9mIHRoZSBzZWNvbmQgc3RyaW5nIHdpdGhpbiB0aGUgZmlyc3Qgc3RyaW5nLCBzdGFydGluZyB0aGUgc2VhcmNoIGZyb20gYSBzcGVjaWZpZWQgcG9zaXRpb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc3RyaW5nIHRvIHNlYXJjaCB3aXRoaW4uXG4yLiBgTlVNQkVSYDogVGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGUgc2VhcmNoLlxuMy4gYFNUUklOR2A6IFRoZSBzdWJzdHJpbmcgdG8gZmluZC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgZ2l2ZW4gc3Vic3RyaW5nIHdpdGhpbiB0aGUgc3RyaW5nLCBvciAtMSBpZiBub3QgZm91bmQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgbWFpblN0cmluZyA9IFwiSGVsbG8sIHdvcmxkISBXZWxjb21lIHRvIHRoZSB3b3JsZCBvZiBNT1dHTEkuXCJcblNUUklORyBzZWFyY2hTdHJpbmcgPSBcIndvcmxkXCJcblxuTlVNQkVSIHBvc2l0aW9uID0gUmV2ZXJzZUZpbmQobWFpblN0cmluZywgc2VhcmNoU3RyaW5nKVxuXG5JRiBwb3NpdGlvbiAhPSAtMSBUSEVOIHtcbiAgICAvLyBUaGUgbGFzdCBvY2N1cnJlbmNlIG9mICdzZWFyY2hTdHJpbmcnIGlzIGF0IHBvc2l0aW9uOiBwb3NpdGlvblxufSBFTFNFIHtcbiAgICAvLyBUaGUgc3RyaW5nICdzZWFyY2hTdHJpbmcnIHdhcyBub3QgZm91bmQgaW4gdGhlIG1haW4gc3RyaW5nLlxufSIsICJuYW1lIjogIlJldmVyc2VGaW5kIChTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIHNlY29uZCBzdHJpbmcgd2l0aGluIHRoZSBmaXJzdCBzdHJpbmcsIG9yIC0xIGlmIGl0IGlzIG5vdCBmb3VuZC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gc2VhcmNoIHdpdGhpbi5cbjIuIGBTVFJJTkdgOiBUaGUgc3Vic3RyaW5nIHRvIGZpbmQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgcm91dGluZS4iLCAiY29kZV9leGFtcGxlIjogIi8vIFJvdXRpbmVOYW1lIGhhcyBiZWVuIHRyaWdnZXJlZFxuLy8gQWRkIHlvdXIgY29kZSBoZXJlIiwgIm5hbWUiOiAiUm91dGluZU5hbWUgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyByb3V0aW5lIGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICJOb25lIn0sIHsicmV0dXJuX3R5cGUiOiAiTUFQPFNUUklORyxTVFJJTkc+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBjb3B5IG9mIHRoZSBtYXAgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBzZXQgdG8gdGhlIGdpdmVuIHZhbHVlLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIE1BUDxTVFJJTkcsU1RSSU5HPlxuTUFQPFNUUklORyxTVFJJTkc+IGV4YW1wbGVNYXBcblxuLy8gU2V0IGEga2V5LXZhbHVlIHBhaXIgaW4gdGhlIG1hcFxuU2V0KGV4YW1wbGVNYXAsIFwidXNlcm5hbWVcIiwgXCJqb2huX2RvZVwiKVxuXG4vLyBTZXQgYW5vdGhlciBrZXktdmFsdWUgcGFpciBpbiB0aGUgbWFwXG5TZXQoZXhhbXBsZU1hcCwgXCJlbWFpbFwiLCBcImpvaG5fZG9lQGV4YW1wbGUuY29tXCIpXG5cbi8vIE1hcCBjb250ZW50czogXCIgKyBleGFtcGxlTWFwIiwgIm5hbWUiOiAiU2V0IChNQVA8U1RSSU5HLCBTVFJJTkc+LCBTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIG1hcCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IHNldCB0byB0aGUgZ2l2ZW4gdmFsdWUuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNQVA8U1RSSU5HLFNUUklORz5gOiBUaGUgbWFwIHRvIG1vZGlmeS5cbjIuIGBTVFJJTkdgOiBUaGUga2V5IHRvIHNldC5cbjMuIGBTVFJJTkdgOiBUaGUgdmFsdWUgdG8gYXNzaWduIHRvIHRoZSBrZXkuIn0sIHsicmV0dXJuX3R5cGUiOiAiUmVnRXhKU2kuTGlzdCIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgY29weSBvZiB0aGUgbGlzdCB3aXRoIHRoZSBlbGVtZW50IGF0IHRoZSBnaXZlbiBwb3NpdGlvbiByZXBsYWNlZCBieSB0aGUgZ2l2ZW4gdmFsdWUuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDcmVhdGUgYSBuZXcgUmVnRXhKU2kgb2JqZWN0XG5SZWdFeEpTaSByZWdleDEgPSBSZWdFeEpTaShcImV4YW1wbGVQYXR0ZXJuMVwiKVxuUmVnRXhKU2kgcmVnZXgyID0gUmVnRXhKU2koXCJleGFtcGxlUGF0dGVybjJcIilcblxuLy8gQ3JlYXRlIGEgbmV3IFJlZ0V4SlNpLkxpc3Qgb2JqZWN0XG5SZWdFeEpTaS5MaXN0IHJlZ2V4TGlzdCA9IFJlZ0V4SlNpLkxpc3QoKVxuXG4vLyBBZGQgdGhlIGZpcnN0IHJlZ2V4IHRvIHRoZSBsaXN0XG5yZWdleExpc3QuQWRkKHJlZ2V4MSlcblxuLy8gSHlwb3RoZXRpY2FsIFNldCBmdW5jdGlvbiB0byByZXBsYWNlIHRoZSBmaXJzdCByZWdleCB3aXRoIHRoZSBzZWNvbmQgb25lXG5TZXQocmVnZXhMaXN0LCAwLCByZWdleDIpXG5cbi8vIEZpcnN0IHBhdHRlcm4gaW4gbGlzdDogXCIgKyByZWdleExpc3QuR2V0KDApLlBhdHRlcm4oKSIsICJuYW1lIjogIlNldCAoUmVnRXhKU2kuTGlzdCwgTlVNQkVSLCBSZWdFeEpTaSkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGxpc3Qgd2l0aCB0aGUgZWxlbWVudCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24gcmVwbGFjZWQgYnkgdGhlIGdpdmVuIHZhbHVlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgUmVnRXhKU2kuTGlzdGA6IFRoZSBsaXN0IHRvIG1vZGlmeS5cbjIuIGBOVU1CRVJgOiBUaGUgemVyby1iYXNlZCBpbmRleCBvZiB0aGUgZWxlbWVudCB0byBzZXQuXG4zLiBgUmVnRXhKU2lgOiBUaGUgbmV3IHZhbHVlIHRvIHNldCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uIn0sIHsicmV0dXJuX3R5cGUiOiAiUmVnRXhKU2kuTGlzdCIsICJkZXNjcmlwdGlvbiI6ICJOb3QgaW1wbGVtZW50ZWQuIFJldHVybnMgdGhlIGlucHV0IGxpc3QgdW5jaGFuZ2VkIHJlZ2FyZGxlc3Mgb2YgdGhlIGBCT09MRUFOYCBhcmd1bWVudC4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxTVFJJTkc+IHBhdHRlcm5TdHJpbmdzID0gXCIuKlxcXFwuZXhlJFwiLCBcIi4qXFxcXC56aXAkXCIsIFwiXmh0dHBzOi8vZmlsZXNcXFxcLmV4YW1wbGVcXFxcLmNvbS8uKlwiXG5SZWdFeEpTaS5MaXN0IGJsb2NrZWRQYXR0ZXJucyA9IFNldFNvcnRlZChUb1JlZ0V4SlNpTGlzdChwYXR0ZXJuU3RyaW5ncyksIFRSVUUpXG5TVFJJTkcgdXJsID0gXCJodHRwczovL2ZpbGVzLmV4YW1wbGUuY29tL2Rvd25sb2FkLmV4ZVwiXG5CT09MRUFOIGlzQmxvY2tlZCA9IFJlZ0V4SlNpLk1hdGNoZXMoYmxvY2tlZFBhdHRlcm5zLCB1cmwpIiwgIm5hbWUiOiAiU2V0U29ydGVkIChSZWdFeEpTaS5MaXN0LCBCT09MRUFOKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBpbnB1dCBsaXN0IHVuY2hhbmdlZC4gVGhpcyBmdW5jdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaS5MaXN0YDogVGhlIGxpc3QgdG8gY29uZmlndXJlLlxuMi4gYEJPT0xFQU5gOiBJbnRlbmRlZCB0byBlbmFibGUgb3IgZGlzYWJsZSBzb3J0ZWQgbW9kZSwgYnV0IGhhcyBubyBlZmZlY3QgYXMgdGhpcyBmdW5jdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG51bWJlciBvZiBrZXlzIGluIHRoZSBtYXAuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDcmVhdGUgYW4gZW1wdHkgbWFwXG5NQVA8U1RSSU5HLCBTVFJJTkc+IG15TWFwID0gQ3JlYXRlTWFwU3RyaW5nVG9TdHJpbmcoKVxuXG4vLyBBZGQgc29tZSBrZXktdmFsdWUgcGFpcnMgdG8gdGhlIG1hcFxubXlNYXAgPSBTZXQobXlNYXAsIFwia2V5MVwiLCBcInZhbHVlMVwiKVxubXlNYXAgPSBTZXQobXlNYXAsIFwia2V5MlwiLCBcInZhbHVlMlwiKVxubXlNYXAgPSBTZXQobXlNYXAsIFwia2V5M1wiLCBcInZhbHVlM1wiKVxuXG4vLyBHZXQgdGhlIHNpemUgb2YgdGhlIG1hcFxuTlVNQkVSIG1hcFNpemUgPSBTaXplKG15TWFwKVxuXG4vLyBUaGUgc2l6ZSBvZiB0aGUgbWFwIGlzOiBtYXBTaXplIiwgIm5hbWUiOiAiU2l6ZSAoTUFQPFNUUklORywgU1RSSU5HPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGtleXMgaW4gdGhlIG1hcC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1BUDxTVFJJTkcsU1RSSU5HPmA6IFRoZSBtYXAgdG8gY291bnQga2V5cyBpbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBsaXN0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gUmV0cmlldmUgdGhlIGNlcnRpZmljYXRlIGF1dGhvcml0eSBsaXN0IGJ5IG5hbWVcbk1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QgY2FMaXN0ID0gTVdHLkNBTGlzdEJ5TmFtZShcIkV4YW1wbGVDQUxpc3RcIilcblxuLy8gR2V0IHRoZSBzaXplIG9mIHRoZSBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgbGlzdFxuTlVNQkVSIGNhTGlzdFNpemUgPSBTaXplKGNhTGlzdClcblxuLy8gVGhlIHNpemUgb2YgdGhlIGNlcnRpZmljYXRlIGF1dGhvcml0eSBsaXN0IGlzOiBcbi8vIGNhTGlzdFNpemUiLCAibmFtZSI6ICJTaXplIChNV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGdpdmVuIGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0YDogVGhlIGxpc3QgdG8gY291bnQgZWxlbWVudHMgaW4uIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbGlzdC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBSZWdFeEpTaS5MaXN0XG5SZWdFeEpTaS5MaXN0IG15UmVnRXhMaXN0ID0gUmVnRXhKU2kuTGlzdCgpXG5cbi8vIEFkZCBzb21lIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gdGhlIGxpc3Rcbm15UmVnRXhMaXN0LkFkZChSZWdFeEpTaShcInJlZ2V4MVwiKSlcbm15UmVnRXhMaXN0LkFkZChSZWdFeEpTaShcInJlZ2V4MlwiKSlcbm15UmVnRXhMaXN0LkFkZChSZWdFeEpTaShcInJlZ2V4M1wiKSlcblxuLy8gR2V0IHRoZSBzaXplIG9mIHRoZSBsaXN0XG5OVU1CRVIgbGlzdFNpemUgPSBTaXplKG15UmVnRXhMaXN0KVxuXG4vLyBUaGUgc2l6ZSBvZiB0aGUgUmVnRXggbGlzdCBpczogbGlzdFNpemUiLCAibmFtZSI6ICJTaXplIChSZWdFeEpTaS5MaXN0KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGdpdmVuIGxpc3QuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBSZWdFeEpTaS5MaXN0YDogVGhlIGxpc3QgdG8gY291bnQgZWxlbWVudHMgaW4uIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHN1YnN0cmluZyBvZiB0aGUgZ2l2ZW4gc3RyaW5nIHN0YXJ0aW5nIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgb3JpZ2luYWxTdHJpbmcgPSBcIkhlbGxvLCBXb3JsZCFcIlxuTlVNQkVSIHN0YXJ0UG9zaXRpb24gPSA3XG5cbi8vIFVzZSB0aGUgU2xpY2UgZnVuY3Rpb24gdG8gZ2V0IGEgc3Vic3RyaW5nIHN0YXJ0aW5nIGZyb20gdGhlIHNwZWNpZmllZCBwb3NpdGlvblxuU1RSSU5HIHJlc3VsdCA9IFNsaWNlKG9yaWdpbmFsU3RyaW5nLCBzdGFydFBvc2l0aW9uKVxuXG4vLyBQcmludCB0aGUgcmVzdWx0IHRvIHRoZSBjb25zb2xlXG4vLyByZXN1bHQiLCAibmFtZSI6ICJTbGljZSAoU1RSSU5HLCBOVU1CRVIpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdWJzdHJpbmcgb2YgdGhlIGdpdmVuIHN0cmluZyBzdGFydGluZyBmcm9tIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc3RyaW5nIHRvIGV4dHJhY3QgZnJvbS5cbjIuIGBOVU1CRVJgOiBUaGUgc3RhcnRpbmcgcG9zaXRpb24uIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBzdWJzdHJpbmcgb2YgdGhlIGdpdmVuIHN0cmluZyBzdGFydGluZyBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBsZW5ndGguIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgb3JpZ2luYWxTdHJpbmcgPSBcIkhlbGxvLCBNT1dHTEkhXCJcbk5VTUJFUiBzdGFydFBvc2l0aW9uID0gN1xuTlVNQkVSIGxlbmd0aCA9IDZcblxuU1RSSU5HIHNsaWNlZFN0cmluZyA9IFNsaWNlKG9yaWdpbmFsU3RyaW5nLCBzdGFydFBvc2l0aW9uLCBsZW5ndGgpXG4vLyBUaGlzIHdpbGwgcHJpbnQgXCJNT1dHTElcIiIsICJuYW1lIjogIlNsaWNlIChTVFJJTkcsIE5VTUJFUiwgTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgc3Vic3RyaW5nIHRoYXQgYmVnaW5zIGF0IHRoZSBzcGVjaWZpZWQgc3RhcnRpbmcgcG9zaXRpb24gYW5kIGhhcyB0aGUgc3BlY2lmaWVkIGxlbmd0aC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gZXh0cmFjdCBmcm9tLlxuMi4gYE5VTUJFUmA6IFRoZSBzdGFydGluZyBwb3NpdGlvbi5cbjMuIGBOVU1CRVJgOiBUaGUgbGVuZ3RoIG9mIHRoZSBzdWJzdHJpbmcgdG8gZXh0cmFjdC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgbGlzdCBvZiBzdWJzdHJpbmdzIG9idGFpbmVkIGJ5IHNwbGl0dGluZyB0aGUgZ2l2ZW4gc3RyaW5nIGJ5IHRoZSBzcGVjaWZpZWQgZGVsaW1pdGVyLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGlucHV0U3RyaW5nID0gXCJhcHBsZSxiYW5hbmEsY2hlcnJ5XCJcblNUUklORyBkZWxpbWl0ZXIgPSBcIixcIlxuXG5WRUNUT1I8U1RSSU5HPiByZXN1bHQgPSBTcGxpdChpbnB1dFN0cmluZywgZGVsaW1pdGVyKVxuXG4vLyBUaGUgc3BsaXQgcmVzdWx0IGlzOiArIHJlc3VsdCIsICJuYW1lIjogIlNwbGl0IChTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIG9yaWdpbmFsIHN0cmluZywgZGl2aWRlZCBieSB0aGUgc3BlY2lmaWVkIGRlbGltaXRlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBpbnB1dCBzdHJpbmcgdG8gc3BsaXQuXG4yLiBgU1RSSU5HYDogVGhlIGRlbGltaXRlci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgbGlzdCBvZiBzdWJzdHJpbmdzIG9idGFpbmVkIGJ5IHNwbGl0dGluZyB0aGUgZ2l2ZW4gc3RyaW5nIGJ5IHRoZSBzcGVjaWZpZWQgZGVsaW1pdGVyLiBJZiB0aGUgYEJPT0xFQU5gIGlzIGBUUlVFYCwgdGhlIGRlbGltaXRlciBpcyB0cmVhdGVkIGFzIGEgc2V0IG9mIHNpbmdsZSBjaGFyYWN0ZXJzOyBpZiBgRkFMU0VgLCBpdCBpcyB0cmVhdGVkIGFzIGEgbGl0ZXJhbCBzdHJpbmcgZGVsaW1pdGVyLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGlucHV0U3RyaW5nID0gXCJhcHBsZSxiYW5hbmEsb3JhbmdlLGdyYXBlXCJcblNUUklORyBkZWxpbWl0ZXIgPSBcIixcIlxuQk9PTEVBTiBpc1NpbmdsZUNoYXJEZWxpbWl0ZXIgPSBUUlVFXG5cblZFQ1RPUjxTVFJJTkc+IHJlc3VsdCA9IFNwbGl0KGlucHV0U3RyaW5nLCBkZWxpbWl0ZXIsIGlzU2luZ2xlQ2hhckRlbGltaXRlcilcblxuLy8gU3BsaXQgcmVzdWx0OiBcIiArIHJlc3VsdCIsICJuYW1lIjogIlNwbGl0IChTVFJJTkcsIFNUUklORywgQk9PTEVBTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHZlY3RvciBvZiBzdWJzdHJpbmdzIHNwbGl0IGJ5IHRoZSBzcGVjaWZpZWQgZGVsaW1pdGVyIGZyb20gdGhlIGlucHV0IHN0cmluZywgd2l0aCB0aGUgYm9vbGVhbiBpbmRpY2F0aW5nIGRlbGltaXRlciB0eXBlLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGlucHV0IHN0cmluZyB0byBzcGxpdC5cbjIuIGBTVFJJTkdgOiBUaGUgZGVsaW1pdGVyLlxuMy4gYEJPT0xFQU5gOiBJZiBgVFJVRWAsIHRoZSBkZWxpbWl0ZXIgaXMgdHJlYXRlZCBhcyBhIHNldCBvZiBzaW5nbGUtY2hhcmFjdGVyIGRlbGltaXRlcnM7IGlmIGBGQUxTRWAsIGl0IGlzIHRyZWF0ZWQgYXMgYSBsaXRlcmFsIHN0cmluZyBkZWxpbWl0ZXIuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGxpc3Qgb2Ygc3Vic3RyaW5ncyBvYnRhaW5lZCBieSBzcGxpdHRpbmcgdGhlIGdpdmVuIHN0cmluZyBieSB0aGUgZGVsaW1pdGVyLCB3aXRoIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVycyB0cmltbWVkIGZyb20gZWFjaCBzdWJzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgaW5wdXRTdHJpbmcgPSBcImFwcGxlLCBiYW5hbmEsIGNoZXJyeSwgZGF0ZVwiXG5TVFJJTkcgZGVsaW1pdGVyID0gXCIsXCJcblNUUklORyB0cmltQ2hhcnMgPSBcIiBcIlxuXG5WRUNUT1I8U1RSSU5HPiByZXN1bHQgPSBTcGxpdChpbnB1dFN0cmluZywgZGVsaW1pdGVyLCB0cmltQ2hhcnMpXG5cbi8vIFwiU3BsaXQgcmVzdWx0OiBcIiArIHJlc3VsdCIsICJuYW1lIjogIlNwbGl0IChTVFJJTkcsIFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgdmVjdG9yIG9mIHN1YnN0cmluZ3Mgb2J0YWluZWQgYnkgc3BsaXR0aW5nIHRoZSBpbnB1dCBzdHJpbmcgYW5kIHRyaW1taW5nIHNwZWNpZmllZCBjaGFyYWN0ZXJzLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGlucHV0IHN0cmluZyB0byBzcGxpdC5cbjIuIGBTVFJJTkdgOiBUaGUgZGVsaW1pdGVyLlxuMy4gYFNUUklOR2A6IFRoZSBjaGFyYWN0ZXJzIHRvIHRyaW0gZnJvbSBlYWNoIHJlc3VsdGluZyBzdWJzdHJpbmcuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZmlyc3Qgc3RyaW5nIGJlZ2lucyB3aXRoIHRoZSBzZWNvbmQgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5TVFJJTkcgdXJsU3RyaW5nID0gY3VycmVudFVybC5Ub1N0cmluZygpXG5cbklGIFN0YXJ0c1dpdGgodXJsU3RyaW5nLCBcImh0dHBzOi8vXCIpIFRIRU4ge1xuICAgIC8vIFRoZSBVUkwgc3RhcnRzIHdpdGggJ2h0dHBzOi8vJ1xufSBFTFNFIHtcbiAgICAvLyBUaGUgVVJMIGRvZXMgbm90IHN0YXJ0IHdpdGggJ2h0dHBzOi8vJ1xufSIsICJuYW1lIjogIlN0YXJ0c1dpdGggKFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZmlyc3Qgc3RyaW5nIGJlZ2lucyB3aXRoIHRoZSBzZWNvbmQgc3RyaW5nLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gY2hlY2suXG4yLiBgU1RSSU5HYDogVGhlIHByZWZpeCB0byBjaGVjayBmb3IuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgZmlyc3Qgc3RyaW5nIGJlZ2lucyB3aXRoIHRoZSBzZWNvbmQgc3RyaW5nLCBpZ25vcmluZyBjYXNlLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5TVFJJTkcgdXJsU3RyaW5nID0gY3VycmVudFVybC5Ub1N0cmluZygpXG5cbklGIFN0YXJ0c1dpdGhDYXNlSW5zZW5zaXRpdmUodXJsU3RyaW5nLCBcImh0dHBzOi8vZXhhbXBsZS5jb21cIikgVEhFTiB7XG4gICAgLy8gVGhlIFVSTCBzdGFydHMgd2l0aCAnaHR0cHM6Ly9leGFtcGxlLmNvbScgKGNhc2UgaW5zZW5zaXRpdmUpLlxuICAgIE1XRy5BbGxvdyhcIlVSTCBzdGFydHMgd2l0aCBleGFtcGxlLmNvbVwiKVxufSBFTFNFIHtcbiAgICAvLyBUaGUgVVJMIGRvZXMgbm90IHN0YXJ0IHdpdGggJ2h0dHBzOi8vZXhhbXBsZS5jb20nLlxuICAgIE1XRy5CbG9jayhcIlVSTCBkb2VzIG5vdCBzdGFydCB3aXRoIGV4YW1wbGUuY29tXCIpXG59IiwgIm5hbWUiOiAiU3RhcnRzV2l0aENhc2VJbnNlbnNpdGl2ZSAoU1RSSU5HLCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBmaXJzdCBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNlY29uZCBzdHJpbmcsIGlnbm9yaW5nIGNhc2UsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byBjaGVjay5cbjIuIGBTVFJJTkdgOiBUaGUgcHJlZml4IHRvIGNoZWNrIGZvci4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZWxhcHNlZCB0aW1lIGluIG1pbGxpc2Vjb25kcyBmb3IgdGhlIHNwZWNpZmllZCBzdG9wd2F0Y2guIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBTdGFydCB0aGUgc3RvcHdhdGNoIHdpdGggYW4gaWRlbnRpZmllciBcImV4YW1wbGVXYXRjaFwiXG5TdG9wV2F0Y2guU3RhcnQoXCJleGFtcGxlV2F0Y2hcIilcblxuLy8gUGVyZm9ybSBzb21lIG9wZXJhdGlvbnNcbi8vIEZvciBkZW1vbnN0cmF0aW9uLCB3ZSdsbCBqdXN0IHVzZSBhIERFQlVHIHN0YXRlbWVudFxuLy8gUGVyZm9ybWluZyBzb21lIG9wZXJhdGlvbnMuLi5cblxuLy8gR2V0IHRoZSBlbGFwc2VkIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGZyb20gdGhlIHN0b3B3YXRjaFxuTlVNQkVSIGVsYXBzZWRUaW1lID0gU3RvcFdhdGNoLkdldE1TKFwiZXhhbXBsZVdhdGNoXCIpXG5cbi8vIFByaW50IHRoZSBlbGFwc2VkIHRpbWUgdG8gdGhlIGNvbnNvbGVcbi8vIEVsYXBzZWQgdGltZSBpbiBtaWxsaXNlY29uZHM6IFwiICsgZWxhcHNlZFRpbWUiLCAibmFtZSI6ICJTdG9wV2F0Y2guR2V0TVMgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZWxhcHNlZCB0aW1lIGluIG1pbGxpc2Vjb25kcyBhcyBhIG51bWJlciBmcm9tIHRoZSBzdG9wd2F0Y2guIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgc3RvcHdhdGNoLiJ9LCB7InJldHVybl90eXBlIjogIk5VTUJFUiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBlbGFwc2VkIHRpbWUgaW4gbWljcm9zZWNvbmRzIGZvciB0aGUgc3BlY2lmaWVkIHN0b3B3YXRjaC4iLCAiY29kZV9leGFtcGxlIjogIi8vIFN0YXJ0IHRoZSBzdG9wd2F0Y2ggd2l0aCBhbiBpZGVudGlmaWVyIFwibXlTdG9wd2F0Y2hcIlxuU3RvcFdhdGNoLlN0YXJ0KFwibXlTdG9wd2F0Y2hcIilcblxuLy8gUGVyZm9ybSBzb21lIG9wZXJhdGlvbnMgaGVyZVxuLy8gRm9yIGRlbW9uc3RyYXRpb24sIHdlJ2xsIGp1c3QgdXNlIGEgREVCVUcgc3RhdGVtZW50XG4vLyBQZXJmb3JtaW5nIHNvbWUgb3BlcmF0aW9ucy4uLlxuXG4vLyBHZXQgdGhlIGVsYXBzZWQgdGltZSBpbiBtaWNyb3NlY29uZHNcbk5VTUJFUiBlbGFwc2VkVGltZSA9IFN0b3BXYXRjaC5HZXRVUyhcIm15U3RvcHdhdGNoXCIpXG5cbi8vIFByaW50IHRoZSBlbGFwc2VkIHRpbWUgdG8gdGhlIGNvbnNvbGVcbi8vIEVsYXBzZWQgdGltZSBpbiBtaWNyb3NlY29uZHM6IFwiICsgZWxhcHNlZFRpbWUiLCAibmFtZSI6ICJTdG9wV2F0Y2guR2V0VVMgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZWxhcHNlZCB0aW1lIGluIG1pY3Jvc2Vjb25kcyBmcm9tIHRoZSBzdG9wd2F0Y2guIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgc3RvcHdhdGNoLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBzdWJzdHJpbmcgZm91bmQgYmV0d2VlbiB0aGUgZ2l2ZW4gc3RhcnRpbmcgYW5kIGVuZGluZyBkZWxpbWl0ZXJzLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIGlucHV0U3RyaW5nID0gXCJIZWxsbyBbV29ybGRdIVwiXG5TVFJJTkcgc3RhcnREZWxpbWl0ZXIgPSBcIltcIlxuU1RSSU5HIGVuZERlbGltaXRlciA9IFwiXVwiXG5cblNUUklORyByZXN1bHQgPSBTdWJzdHJpbmdCZXR3ZWVuKGlucHV0U3RyaW5nLCBzdGFydERlbGltaXRlciwgZW5kRGVsaW1pdGVyKVxuXG4vLyBUaGlzIHdpbGwgcHJpbnQgXCJXb3JsZFwiIHRvIHRoZSBjb25zb2xlIiwgIm5hbWUiOiAiU3Vic3RyaW5nQmV0d2VlbiAoU1RSSU5HLCBTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc3Vic3RyaW5nIHRoYXQgaXMgZm91bmQgYmV0d2VlbiB0aGUgdHdvIHNwZWNpZmllZCBzdHJpbmdzIGluIHRoZSBnaXZlbiBpbnB1dCBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgaW5wdXQgc3RyaW5nLlxuMi4gYFNUUklOR2A6IFRoZSBzdGFydGluZyBkZWxpbWl0ZXIuXG4zLiBgU1RSSU5HYDogVGhlIGVuZGluZyBkZWxpbWl0ZXIuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIElTTyA2MzktMSBsYW5ndWFnZSBjb2RlIGRldGVjdGVkIGZvciB0aGUgZ2l2ZW4gaW5wdXQgdGV4dC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyB0ZXh0ID0gXCJIZWxsbywgaG93IGFyZSB5b3U/XCJcblNUUklORyBsYW5ndWFnZUNvZGUgPSBUZXh0TGFuZ3VhZ2UodGV4dClcbi8vIERldGVjdGVkIGxhbmd1YWdlIGNvZGU6IFwiICsgbGFuZ3VhZ2VDb2RlIiwgIm5hbWUiOiAiVGV4dExhbmd1YWdlIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGlucHV0IHRleHQgbGFuZ3VhZ2UgKElTTyA2MzktMSBjb2RlKS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBpbnB1dCB0ZXh0IHRvIGFuYWx5emUuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBgQk9PTEVBTmAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuSW50ZXJuYWxWYXJpYW50IGludGVybmFsVmFsdWUgPSBNV0cuR2V0U29tZUludGVybmFsVmFsdWUoKSAgLy8gQXNzdW1lIHRoaXMgZnVuY3Rpb24gZ2V0cyBhbiBpbnRlcm5hbCB2YXJpYW50IHZhbHVlXG5CT09MRUFOIGJvb2xlYW5WYWx1ZSA9IFRvQm9vbGVhbihpbnRlcm5hbFZhbHVlKVxuXG5JRiBib29sZWFuVmFsdWUgVEhFTiB7XG4gICAgLy8gVGhlIGludGVybmFsIHZhbHVlIGlzIFRSVUVcbn0gRUxTRSB7XG4gICAgLy8gVGhlIGludGVybmFsIHZhbHVlIGlzIEZBTFNFXG59IiwgIm5hbWUiOiAiVG9Cb29sZWFuIChNV0cuSW50ZXJuYWxWYXJpYW50KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgQk9PTEVBTmAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxWYXJpYW50YDogVGhlIHZhbHVlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPEJPT0xFQU4+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGBWRUNUT1I8Qk9PTEVBTj5gIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYW4gTVdHLkludGVybmFsVmFyaWFudCBvYmplY3Rcbk1XRy5JbnRlcm5hbFZhcmlhbnQgaW50ZXJuYWxWYXIgPSBHZXRTb21lSW50ZXJuYWxWYXJpYW50KClcblxuLy8gQ29udmVydCB0aGUgaW50ZXJuYWwgdmFyaWFudCB0byBhIFZFQ1RPUjxCT09MRUFOPlxuVkVDVE9SPEJPT0xFQU4+IGJvb2xWZWN0b3IgPSBpbnRlcm5hbFZhci5Ub0Jvb2xWZWN0b3IoKVxuXG4vLyBVc2UgdGhlIGJvb2xlYW4gdmVjdG9yIGZvciBzb21lIGxvZ2ljXG5JRiBib29sVmVjdG9yWzBdIFRIRU4ge1xuICAgIC8vIFRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBib29sZWFuIHZlY3RvciBpcyBUUlVFXG59IEVMU0Uge1xuICAgIC8vIFRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBib29sZWFuIHZlY3RvciBpcyBGQUxTRVxufSIsICJuYW1lIjogIlRvQm9vbFZlY3RvciAoTVdHLkludGVybmFsVmFyaWFudCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxCT09MRUFOPmAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxWYXJpYW50YDogVGhlIHZhbHVlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiREFUQVJFRiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBgREFUQVJFRmAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBleGFtcGxlU3RyaW5nID0gXCJUaGlzIGlzIGEgdGVzdCBzdHJpbmdcIlxuREFUQVJFRiBleGFtcGxlRGF0YVJlZiA9IFRvRGF0YVJlZihleGFtcGxlU3RyaW5nKVxuXG4vLyBPcmlnaW5hbCBTVFJJTkc6IFRoaXMgaXMgYSB0ZXN0IHN0cmluZ1xuLy8gQ29udmVydGVkIERBVEFSRUY6IFRoaXMgaXMgYSB0ZXN0IHN0cmluZyBjb252ZXJ0ZWQgdG8gREFUQVJFRiIsICJuYW1lIjogIlRvRGF0YVJlZiAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgREFUQVJFRmAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGBTVFJJTkdgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIkRMUC5DbGFzc2lmaWNhdGlvbiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBgRExQLkNsYXNzaWZpY2F0aW9uYCBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gY2xhc3NpZmljYXRpb24gSUQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgY2xhc3NpZmljYXRpb25JRCA9IFwiMTIzNDVcIlxuRExQLkNsYXNzaWZpY2F0aW9uIGNsYXNzaWZpY2F0aW9uID0gVG9ETFBDbGFzc2lmaWNhdGlvbihjbGFzc2lmaWNhdGlvbklEKVxuXG4vLyBUaGUgY2xhc3NpZmljYXRpb24gb2JqZWN0IGZvciBJRCAxMjM0NSBpczogY2xhc3NpZmljYXRpb24iLCAibmFtZSI6ICJUb0RMUENsYXNzaWZpY2F0aW9uIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBETFAuQ2xhc3NpZmljYXRpb24gb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gYSBnaXZlbiBjbGFzc2lmaWNhdGlvbiBJRC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBjbGFzc2lmaWNhdGlvbiBJRCB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIk1XRy5Ib3N0QW5kQ2VydGlmaWNhdGUiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGVgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYW4gaW50ZXJuYWwgdmFyaWFudCB2YWx1ZVxuTVdHLkludGVybmFsVmFyaWFudCBpbnRlcm5hbFZhcmlhbnRWYWx1ZSA9IC4uLiAvLyBzb21lIGludGVybmFsIHZhcmlhbnQgdmFsdWVcblxuLy8gQ29udmVydCB0aGUgaW50ZXJuYWwgdmFyaWFudCB0byBhIEhvc3RBbmRDZXJ0aWZpY2F0ZSBvYmplY3Rcbk1XRy5Ib3N0QW5kQ2VydGlmaWNhdGUgaG9zdEFuZENlcnQgPSBUb0hvc3RBbmRDZXJ0aWZpY2F0ZShpbnRlcm5hbFZhcmlhbnRWYWx1ZSlcblxuLy8gVXNlIHRoZSBob3N0QW5kQ2VydCBvYmplY3QgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZ1xuLy8gSG9zdDogXCIgKyBob3N0QW5kQ2VydC5Ib3N0XG4vLyBDZXJ0aWZpY2F0ZTogXCIgKyBob3N0QW5kQ2VydC5DZXJ0aWZpY2F0ZSIsICJuYW1lIjogIlRvSG9zdEFuZENlcnRpZmljYXRlIChNV0cuSW50ZXJuYWxWYXJpYW50KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgTVdHLkhvc3RBbmRDZXJ0aWZpY2F0ZWAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxWYXJpYW50YDogVGhlIHZhbHVlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIHN0cmluZyBvZiB0aGUgZ2l2ZW4gVVJMIGNhdGVnb3J5LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYW4gTVdHLlVybENhdGVnb3J5IG9iamVjdCBuYW1lZCB1cmxDYXRlZ29yeVxuTVdHLlVybENhdGVnb3J5IHVybENhdGVnb3J5ID0gTVdHLlVybCgpLkdldENhdGVnb3J5KClcblxuLy8gVXNlIHRoZSBUb0lEU3RyaW5nIGZ1bmN0aW9uIHRvIGdldCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIG9mIHRoZSBVUkwgY2F0ZWdvcnlcblNUUklORyBjYXRlZ29yeUlEID0gVG9JRFN0cmluZyh1cmxDYXRlZ29yeSlcblxuLy8gVGhlIGNhdGVnb3J5IElEIGlzOiBcIiArIGNhdGVnb3J5SUQiLCAibmFtZSI6ICJUb0lEU3RyaW5nIChNV0cuVXJsQ2F0ZWdvcnkpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIHN0cmluZyBvZiBhIEdUSSBjYXRlZ29yeSBiYXNlZCBvbiB0aGUgZ2l2ZW4gVVJMIGNhdGVnb3J5LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVybENhdGVnb3J5YDogVGhlIFVSTCBjYXRlZ29yeSB0byBnZXQgdGhlIGlkZW50aWZpZXIgZm9yLiJ9LCB7InJldHVybl90eXBlIjogIk5ldC5JUCIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBgTmV0LklQYCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gaW50ZXJuYWwgdmFyaWFudC4iLCAiY29kZV9leGFtcGxlIjogIk1XRy5JbnRlcm5hbFZhcmlhbnQgdmFyaWFudElQID0gXCIxOTIuMTY4LjEuMVwiXG5OZXQuSVAgaXBBZGRyZXNzID0gdmFyaWFudElQLlRvSVBBZGRyZXNzKClcblxuLy8gQ29udmVydGVkIElQIEFkZHJlc3M6ICsgaXBBZGRyZXNzIiwgIm5hbWUiOiAiVG9JUEFkZHJlc3MgKE1XRy5JbnRlcm5hbFZhcmlhbnQpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBOZXQuSVBgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsVmFyaWFudGA6IFRoZSB2YWx1ZSB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIk5ldC5JUFJhbmdlIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGBOZXQuSVBSYW5nZWAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgd2UgaGF2ZSBhbiBpbnRlcm5hbCB2YXJpYW50IHZhbHVlXG5NV0cuSW50ZXJuYWxWYXJpYW50IGludGVybmFsVmFsdWUgPSBHZXRJbnRlcm5hbFZhcmlhbnRWYWx1ZSgpXG5cbi8vIENvbnZlcnQgdGhlIGludGVybmFsIHZhcmlhbnQgdG8gYW4gSVAgcmFuZ2Vcbk5ldC5JUFJhbmdlIGlwUmFuZ2UgPSBUb0lQUmFuZ2UoaW50ZXJuYWxWYWx1ZSlcblxuLy8gUGVyZm9ybSBzb21lIGFjdGlvbiB3aXRoIHRoZSBJUCByYW5nZVxuLy8gQ29udmVydGVkIElQIFJhbmdlOiBcIiArIGlwUmFuZ2UuVG9TdHJpbmcoKVxuXG4vLyBFeGFtcGxlIGNvbmRpdGlvbiB0byBibG9jayBhIHNwZWNpZmljIElQIHJhbmdlXG5JRiBpcFJhbmdlLkNvbnRhaW5zKFwiMTkyLjE2OC4xLjFcIikgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIGZyb20gdGhpcyBJUCBpcyBub3QgYWxsb3dlZFwiKVxufSBFTFNFIHtcbiAgICBNV0cuQWxsb3coXCJJUCBpcyBhbGxvd2VkXCIpXG59XG5cbi8vIER1bW15IGZ1bmN0aW9uIHRvIHNpbXVsYXRlIGdldHRpbmcgYW4gaW50ZXJuYWwgdmFyaWFudCB2YWx1ZVxuRlVOQ1RJT04gR2V0SW50ZXJuYWxWYXJpYW50VmFsdWUoKSBSRVRVUk5TIE1XRy5JbnRlcm5hbFZhcmlhbnQge1xuICAgIC8vIFRoaXMgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBSZXBsYWNlIHdpdGggYWN0dWFsIGxvZ2ljIHRvIGdldCB0aGUgaW50ZXJuYWwgdmFyaWFudC5cbiAgICBNV0cuSW50ZXJuYWxWYXJpYW50IHZhcmlhbnRcbiAgICAvLyBTZXQgdGhlIHZhcmlhbnQgdmFsdWUgaGVyZVxuICAgIFJFVFVSTiB2YXJpYW50XG59IiwgIm5hbWUiOiAiVG9JUFJhbmdlIChNV0cuSW50ZXJuYWxWYXJpYW50KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgTmV0LklQUmFuZ2VgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsVmFyaWFudGA6IFRoZSB2YWx1ZSB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVBSYW5nZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxOZXQuSVBSYW5nZT5gIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIGludGVybmFsVmFyaWFudCBpcyBhbiBNV0cuSW50ZXJuYWxWYXJpYW50IG9iamVjdFxuTVdHLkludGVybmFsVmFyaWFudCBpbnRlcm5hbFZhcmlhbnQgPSAuLi4gLy8gSW5pdGlhbGl6ZSB0aGlzIHdpdGggeW91ciBzcGVjaWZpYyBpbnRlcm5hbCB2YXJpYW50XG5cbi8vIENvbnZlcnQgdGhlIGludGVybmFsIHZhcmlhbnQgdG8gYSBWRUNUT1Igb2YgTmV0LklQUmFuZ2VcblZFQ1RPUjxOZXQuSVBSYW5nZT4gaXBSYW5nZVZlY3RvciA9IFRvSVBSYW5nZVZlY3RvcihpbnRlcm5hbFZhcmlhbnQpXG5cbi8vIENvbnZlcnRlZCBJUCBSYW5nZXM6IFwiICsgaXBSYW5nZVZlY3RvciIsICJuYW1lIjogIlRvSVBSYW5nZVZlY3RvciAoTVdHLkludGVybmFsVmFyaWFudCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxOZXQuSVBSYW5nZT5gIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsVmFyaWFudGA6IFRoZSB2YWx1ZSB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlZFQ1RPUjxOZXQuSVA+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGBWRUNUT1I8TmV0LklQPmAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgaW50ZXJuYWxWYXJpYW50IGlzIGFuIE1XRy5JbnRlcm5hbFZhcmlhbnQgb2JqZWN0IG9idGFpbmVkIGZyb20gc29tZSBjb250ZXh0XG5NV0cuSW50ZXJuYWxWYXJpYW50IGludGVybmFsVmFyaWFudCA9IC4uLiAvLyBPYnRhaW4gdGhlIGludGVybmFsIHZhcmlhbnQgZnJvbSBjb250ZXh0XG5cbi8vIENvbnZlcnQgdGhlIGludGVybmFsIHZhcmlhbnQgdG8gYSBWRUNUT1Igb2YgTmV0LklQXG5WRUNUT1I8TmV0LklQPiBpcFZlY3RvciA9IFRvSVBWZWN0b3IoaW50ZXJuYWxWYXJpYW50KVxuXG4vLyBJdGVyYXRlIG92ZXIgdGhlIFZFQ1RPUiBhbmQgcHJpbnQgZWFjaCBJUCBhZGRyZXNzXG5GT1IgRUFDSCBpcCBJTiBpcFZlY3RvciB7XG4gICAgLy8gSVAgQWRkcmVzczogXCIgKyBpcFxufSIsICJuYW1lIjogIlRvSVBWZWN0b3IgKE1XRy5JbnRlcm5hbFZhcmlhbnQpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBWRUNUT1I8TmV0LklQPmAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxWYXJpYW50YDogVGhlIHZhbHVlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiSlNPTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBgSlNPTmAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgd2UgaGF2ZSBhbiBNV0cuSW50ZXJuYWxWYXJpYW50IG9iamVjdFxuTVdHLkludGVybmFsVmFyaWFudCBteVZhcmlhbnRcblxuLy8gUG9wdWxhdGUgdGhlIE1XRy5JbnRlcm5hbFZhcmlhbnQgb2JqZWN0IHdpdGggc29tZSBkYXRhXG5teVZhcmlhbnRbXCJrZXkxXCJdID0gXCJ2YWx1ZTFcIlxubXlWYXJpYW50W1wia2V5MlwiXSA9IDEyMzQ1XG5teVZhcmlhbnRbXCJrZXkzXCJdID0gVFJVRVxuXG4vLyBDb252ZXJ0IHRoZSBNV0cuSW50ZXJuYWxWYXJpYW50IG9iamVjdCB0byBhIEpTT04gc3RyaW5nXG5TVFJJTkcganNvblN0cmluZyA9IG15VmFyaWFudC5Ub0pTT04oKVxuXG4vLyBDb252ZXJ0ZWQgSlNPTjogXCIgKyBqc29uU3RyaW5nIiwgIm5hbWUiOiAiVG9KU09OIChNV0cuSW50ZXJuYWxWYXJpYW50KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgSlNPTmAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxWYXJpYW50YDogVGhlIHZhbHVlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGdpdmVuIHN0cmluZyB3aXRoIGFsbCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5TVFJJTkcgbG93ZXJDYXNlVXJsID0gVG9Mb3dlcihjdXJyZW50VXJsKVxuLy8gbG93ZXJDYXNlVXJsIiwgIm5hbWUiOiAiVG9Mb3dlciAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBpbnB1dCBzdHJpbmcgY29udmVydGVkIHRvIGFsbCBsb3dlciBjYXNlIGNoYXJhY3RlcnMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgaW5wdXQgc3RyaW5nIHRvIGNvbnZlcnQgdG8gbG93ZXJjYXNlLiJ9LCB7InJldHVybl90eXBlIjogIk1BUDxTVFJJTkcsTVdHLkludGVybmFsVmFyaWFudD4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYE1BUDxTVFJJTkcsTVdHLkludGVybmFsVmFyaWFudD5gIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYW4gTVdHLkludGVybmFsVmFyaWFudCBvYmplY3QgbmFtZWQgaW50ZXJuYWxWYXJpYW50XG5NV0cuSW50ZXJuYWxWYXJpYW50IGludGVybmFsVmFyaWFudCA9IC4uLiAvLyBzb21lIGluaXRpYWxpemF0aW9uIG9yIGFzc2lnbm1lbnRcblxuLy8gQ29udmVydCB0aGUgaW50ZXJuYWwgdmFyaWFudCB0byBhIG1hcFxuTUFQPFNUUklORywgTVdHLkludGVybmFsVmFyaWFudD4gdmFyaWFudE1hcCA9IFRvTWFwKGludGVybmFsVmFyaWFudClcblxuLy8gSXRlcmF0ZSBvdmVyIHRoZSBtYXAgYW5kIHByaW50IGVhY2gga2V5LXZhbHVlIHBhaXJcbkZPUiBFQUNIIGtleSBJTiB2YXJpYW50TWFwIHtcbiAgICBNV0cuSW50ZXJuYWxWYXJpYW50IHZhbHVlID0gdmFyaWFudE1hcFtrZXldXG4gICAgLy8gS2V5OiBrZXksIFZhbHVlOiB2YWx1ZVxufSIsICJuYW1lIjogIlRvTWFwIChNV0cuSW50ZXJuYWxWYXJpYW50KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgTUFQPFNUUklORyxNV0cuSW50ZXJuYWxWYXJpYW50PmAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxWYXJpYW50YDogVGhlIHZhbHVlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTWVkaWFUeXBlIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGBNZWRpYVR5cGVgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYW4gaW50ZXJuYWwgdmFyaWFudCB2YWx1ZVxuTVdHLkludGVybmFsVmFyaWFudCBpbnRlcm5hbFZhbHVlID0gR2V0SW50ZXJuYWxWYXJpYW50VmFsdWUoKVxuXG4vLyBDb252ZXJ0IHRoZSBpbnRlcm5hbCB2YXJpYW50IHRvIGEgTWVkaWFUeXBlXG5NZWRpYVR5cGUgbWVkaWFUeXBlID0gVG9NZWRpYVR5cGUoaW50ZXJuYWxWYWx1ZSlcblxuLy8gUGVyZm9ybSBzb21lIGFjdGlvbiBiYXNlZCBvbiB0aGUgTWVkaWFUeXBlXG5JRiBtZWRpYVR5cGUgPT0gXCJhcHBsaWNhdGlvbi9wZGZcIiBUSEVOIHtcbiAgICAvLyBUaGUgbWVkaWEgdHlwZSBpcyBQREYuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBtZWRpYSB0eXBlIGlzIG5vdCBQREYuXG59XG5cbi8vIER1bW15IGZ1bmN0aW9uIHRvIHNpbXVsYXRlIGdldHRpbmcgYW4gaW50ZXJuYWwgdmFyaWFudCB2YWx1ZVxuRlVOQ1RJT04gR2V0SW50ZXJuYWxWYXJpYW50VmFsdWUoKSBSRVRVUk5TIE1XRy5JbnRlcm5hbFZhcmlhbnQge1xuICAgIC8vIFRoaXMgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBSZXBsYWNlIHdpdGggYWN0dWFsIGxvZ2ljIHRvIGdldCB0aGUgaW50ZXJuYWwgdmFyaWFudC5cbiAgICBNV0cuSW50ZXJuYWxWYXJpYW50IGR1bW15VmFsdWUgPSBcImFwcGxpY2F0aW9uL3BkZlwiXG4gICAgUkVUVVJOIGR1bW15VmFsdWVcbn0iLCAibmFtZSI6ICJUb01lZGlhVHlwZSAoTVdHLkludGVybmFsVmFyaWFudCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYE1lZGlhVHlwZWAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGludGVybmFsIHZhcmlhbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxWYXJpYW50YDogVGhlIHZhbHVlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTWVkaWFUeXBlIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGBNZWRpYVR5cGVgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgbWVkaWFUeXBlU3RyaW5nID0gXCJhcHBsaWNhdGlvbi9qc29uXCJcbk1lZGlhVHlwZSBtZWRpYVR5cGVPYmplY3QgPSBUb01lZGlhVHlwZShtZWRpYVR5cGVTdHJpbmcpXG5cbi8vIENvbnZlcnRlZCBtZWRpYSB0eXBlOiArIG1lZGlhVHlwZU9iamVjdCIsICJuYW1lIjogIlRvTWVkaWFUeXBlIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBNZWRpYVR5cGVgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1lZGlhVHlwZT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxNZWRpYVR5cGU+YCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gaW50ZXJuYWwgdmFyaWFudC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGFuIE1XRy5JbnRlcm5hbFZhcmlhbnQgb2JqZWN0XG5NV0cuSW50ZXJuYWxWYXJpYW50IGludGVybmFsVmFyaWFudCA9IC4uLiAvLyBzb21lIGluaXRpYWxpemF0aW9uXG5cbi8vIENvbnZlcnQgdGhlIE1XRy5JbnRlcm5hbFZhcmlhbnQgdG8gYSBWRUNUT1I8TWVkaWFUeXBlPlxuVkVDVE9SPE1lZGlhVHlwZT4gbWVkaWFUeXBlVmVjdG9yID0gaW50ZXJuYWxWYXJpYW50LlRvTWVkaWFUeXBlVmVjdG9yKClcblxuLy8gU2V0IGEgdXNlci1kZWZpbmVkIHZhcmlhYmxlIHdpdGggdGhlIGNvbnZlcnRlZCBWRUNUT1I8TWVkaWFUeXBlPlxuTVdHLlNldFVzZXJEZWZpbmVkVmFyKFwiZXhhbXBsZU1lZGlhVHlwZVZlY3RvclwiLCBtZWRpYVR5cGVWZWN0b3IpXG5cbi8vIENvbnZlcnRlZCBNZWRpYVR5cGVWZWN0b3I6IFwiICsgbWVkaWFUeXBlVmVjdG9yIiwgIm5hbWUiOiAiVG9NZWRpYVR5cGVWZWN0b3IgKE1XRy5JbnRlcm5hbFZhcmlhbnQpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBWRUNUT1I8TWVkaWFUeXBlPmAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxWYXJpYW50YDogVGhlIHZhbHVlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGBOVU1CRVJgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgc3RyaW5nIHZhcmlhYmxlXG5TVFJJTkcgc3RyTnVtYmVyID0gXCIxMjM0NVwiXG5cbi8vIENvbnZlcnQgdGhlIHN0cmluZyB0byBhIG51bWJlciB1c2luZyBUb051bWJlclxuTlVNQkVSIG51bSA9IFRvTnVtYmVyKHN0ck51bWJlcilcblxuLy8gUGVyZm9ybSBhbiBhcml0aG1ldGljIG9wZXJhdGlvblxuTlVNQkVSIHJlc3VsdCA9IG51bSArIDEwXG5cbi8vIFRoZSByZXN1bHQgaXM6IFwiICsgVG9TdHJpbmcocmVzdWx0KSIsICJuYW1lIjogIlRvTnVtYmVyIChNV0cuSW50ZXJuYWxWYXJpYW50KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgTlVNQkVSYCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gaW50ZXJuYWwgdmFyaWFudC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFZhcmlhbnRgOiBUaGUgdmFsdWUgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgZ2l2ZW4gc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiU1RSSU5HIHN0clZhbHVlID0gXCIxMjM0NVwiXG5OVU1CRVIgbnVtVmFsdWUgPSBUb051bWJlcihzdHJWYWx1ZSlcbi8vIFRoZSBudW1lcmljIHZhbHVlIGlzOiBudW1WYWx1ZSIsICJuYW1lIjogIlRvTnVtYmVyIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBOVU1CRVJgIHZhbHVlIG9mIHRoZSBnaXZlbiBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc3RyaW5nIHRvIGNvbnZlcnQgdG8gYSBudW1iZXIuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE5VTUJFUj4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxOVU1CRVI+YCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gaW50ZXJuYWwgdmFyaWFudC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGFuIE1XRy5JbnRlcm5hbFZhcmlhbnQgdmFsdWVcbk1XRy5JbnRlcm5hbFZhcmlhbnQgaW50ZXJuYWxWYXJpYW50VmFsdWUgPSAuLi4gLy8gc29tZSBpbnRlcm5hbCB2YXJpYW50IHZhbHVlXG5cbi8vIENvbnZlcnQgdGhlIGludGVybmFsIHZhcmlhbnQgdG8gYSBWRUNUT1I8TlVNQkVSPlxuVkVDVE9SPE5VTUJFUj4gbnVtYmVyVmVjdG9yID0gVG9OdW1iZXJWZWN0b3IoaW50ZXJuYWxWYXJpYW50VmFsdWUpXG5cbi8vIENvbnZlcnRlZCBWRUNUT1I8TlVNQkVSPjogXCIgKyBudW1iZXJWZWN0b3IiLCAibmFtZSI6ICJUb051bWJlclZlY3RvciAoTVdHLkludGVybmFsVmFyaWFudCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxOVU1CRVI+YCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gaW50ZXJuYWwgdmFyaWFudC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFZhcmlhbnRgOiBUaGUgdmFsdWUgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJSZWdFeEpTaSIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBgUmVnRXhKU2lgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJjb2RlX2V4YW1wbGUiOiAiTVdHLlVSTCBjdXJyZW50VXJsID0gTVdHLlVybCgpXG5TVFJJTkcgdXJsU3RyaW5nID0gY3VycmVudFVybC5Ub1N0cmluZygpXG5cbi8vIERlZmluZSB0aGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm5cblNUUklORyBwYXR0ZXJuID0gXCIuKmV4YW1wbGVcXFxcLmNvbS4qXCJcblxuLy8gQ29udmVydCB0aGUgcGF0dGVybiB0byBhIFJlZ0V4SlNpIG9iamVjdFxuUmVnRXhKU2kgcmVnZXggPSBUb1JlZ0V4SlNpKHBhdHRlcm4pXG5cbi8vIENoZWNrIGlmIHRoZSBVUkwgbWF0Y2hlcyB0aGUgcGF0dGVyblxuSUYgcmVnZXguTWF0Y2godXJsU3RyaW5nKSBUSEVOIHtcbiAgICAvLyBVUkwgbWF0Y2hlcyB0aGUgcGF0dGVyblxuICAgIE1XRy5BbGxvdyhcIlVSTCBtYXRjaGVzIHRoZSBwYXR0ZXJuXCIpXG59IEVMU0Uge1xuICAgIC8vIFVSTCBkb2VzIG5vdCBtYXRjaCB0aGUgcGF0dGVyblxuICAgIE1XRy5CbG9jayhcIlVSTCBkb2VzIG5vdCBtYXRjaCB0aGUgcGF0dGVyblwiKVxufSIsICJuYW1lIjogIlRvUmVnRXhKU2kgKE1XRy5JbnRlcm5hbFZhcmlhbnQpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBSZWdFeEpTaWAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxWYXJpYW50YDogVGhlIHZhbHVlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiUmVnRXhKU2kiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIGBSZWdFeEpTaWAgb2JqZWN0IGNvbnN0cnVjdGVkIGZyb20gdGhlIGdpdmVuIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBwYXR0ZXJuID0gXCJleGFtcGxlLipcIlxuUmVnRXhKU2kgcmVnZXggPSBUb1JlZ0V4SlNpKHBhdHRlcm4pXG5cblNUUklORyB0ZXN0U3RyaW5nID0gXCJleGFtcGxlU3RyaW5nXCJcblxuSUYgcmVnZXguTWF0Y2hlcyh0ZXN0U3RyaW5nKSBUSEVOIHtcbiAgICAvLyBUaGUgc3RyaW5nIG1hdGNoZXMgdGhlIHBhdHRlcm4uXG59IEVMU0Uge1xuICAgIC8vIFRoZSBzdHJpbmcgZG9lcyBub3QgbWF0Y2ggdGhlIHBhdHRlcm4uXG59IiwgIm5hbWUiOiAiVG9SZWdFeEpTaSAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgYFJlZ0V4SlNpYCBvYmplY3QgY29uc3RydWN0ZWQgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byBwYXJzZSBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJSZWdFeEpTaS5MaXN0IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBgUmVnRXhKU2kuTGlzdGAgaW4gd2hpY2ggZWFjaCBzdHJpbmcgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gaW50ZXJuYWwgdmFyaWFudCBpcyB3cmFwcGVkIGFzIGFuIGFuY2hvcmVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgcmVnZXgoXi4uLiQpYCwgbWF0Y2hpbmcgdGhlIHN0cmluZyBleGFjdGx5LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYW4gaW50ZXJuYWwgdmFyaWFudFxuTVdHLkludGVybmFsVmFyaWFudCBpbnRlcm5hbFZhcmlhbnQgPSBHZXRJbnRlcm5hbFZhcmlhbnQoKVxuXG4vLyBDb252ZXJ0IHRoZSBpbnRlcm5hbCB2YXJpYW50IHRvIGEgbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zXG5SZWdFeEpTaS5MaXN0IHJlZ2V4TGlzdCA9IFRvUmVnRXhKU2lMaXN0KGludGVybmFsVmFyaWFudClcblxuLy8gQ29udmVydGVkIFJlZ0V4IExpc3Q6IFxuLy8gcmVnZXhMaXN0LlRvU3RyaW5nKClcblxuLy8gRHVtbXkgZnVuY3Rpb24gdG8gc2ltdWxhdGUgZ2V0dGluZyBhbiBpbnRlcm5hbCB2YXJpYW50XG5GVU5DVElPTiBHZXRJbnRlcm5hbFZhcmlhbnQoKSBSRVRVUk5TIE1XRy5JbnRlcm5hbFZhcmlhbnQge1xuICAgIC8vIENyZWF0ZSBhbmQgcmV0dXJuIGEgZHVtbXkgaW50ZXJuYWwgdmFyaWFudFxuICAgIE1XRy5JbnRlcm5hbFZhcmlhbnQgdmFyaWFudFxuICAgIC8vIFBvcHVsYXRlIHRoZSB2YXJpYW50IHdpdGggc29tZSBkYXRhICh0aGlzIGlzIGp1c3QgYW4gZXhhbXBsZSlcbiAgICB2YXJpYW50LlNldFZhbHVlKFwiZXhhbXBsZUtleVwiLCBcImV4YW1wbGVWYWx1ZVwiKVxuICAgIFJFVFVSTiB2YXJpYW50XG59IiwgIm5hbWUiOiAiVG9SZWdFeEpTaUxpc3QgKE1XRy5JbnRlcm5hbFZhcmlhbnQpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBgUmVnRXhKU2kuTGlzdGAgd2hlcmUgZWFjaCBzdHJpbmcgdmFsdWUgaXMgY29udmVydGVkIHRvIGFuIGFuY2hvcmVkIGV4YWN0LW1hdGNoIHJlZ3VsYXIgZXhwcmVzc2lvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFZhcmlhbnRgOiBUaGUgdmFsdWUgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJSZWdFeEpTaS5MaXN0IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBgUmVnRXhKU2kuTGlzdGAgaW4gd2hpY2ggZWFjaCBzdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gbGlzdCBpcyB3cmFwcGVkIGFzIGFuIGFuY2hvcmVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgcmVnZXgoXi4uLiQpYCwgbWF0Y2hpbmcgdGhlIHN0cmluZyBleGFjdGx5LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gRGVmaW5lIGEgVkVDVE9SIG9mIFNUUklOR3MgY29udGFpbmluZyByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybnNcblZFQ1RPUjxTVFJJTkc+IHBhdHRlcm5zID0gXCJwYXR0ZXJuMVwiLCBcInBhdHRlcm4yXCIsIFwicGF0dGVybjNcIlxuXG4vLyBDb252ZXJ0IHRoZSBWRUNUT1Igb2YgU1RSSU5HcyBpbnRvIGEgUmVnRXhKU2kuTGlzdFxuUmVnRXhKU2kuTGlzdCByZWdleExpc3QgPSBUb1JlZ0V4SlNpTGlzdChwYXR0ZXJucylcblxuLy8gQ29udmVydGVkIFJlZ0V4SlNpLkxpc3Q6IHJlZ2V4TGlzdCIsICJuYW1lIjogIlRvUmVnRXhKU2lMaXN0IChWRUNUT1I8U1RSSU5HPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIGBSZWdFeEpTaS5MaXN0YCB3aGVyZSBlYWNoIGlucHV0IHN0cmluZyBpcyBjb252ZXJ0ZWQgdG8gYW4gYW5jaG9yZWQgZXhhY3QtbWF0Y2ggcmVndWxhciBleHByZXNzaW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgbGlzdCBvZiBzdHJpbmdzIHRvIGNvbnZlcnQgdG8gcmVndWxhciBleHByZXNzaW9ucy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgVVJMIGNhdGVnb3J5IGxpc3QgYXMgYSBzdHJpbmcgb2Ygc2hvcnQgbmFtZXMuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBHZXQgdGhlIGN1cnJlbnQgVVJMXG5NV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcblxuLy8gR2V0IHRoZSBjYXRlZ29yaWVzIG9mIHRoZSBjdXJyZW50IFVSTFxuVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gdXJsQ2F0ZWdvcmllcyA9IGN1cnJlbnRVcmwuR2V0Q2F0ZWdvcmllcygpXG5cbi8vIENvbnZlcnQgdGhlIGNhdGVnb3JpZXMgdG8gYSBzaG9ydCBzdHJpbmdcblNUUklORyBzaG9ydENhdGVnb3JpZXMgPSBUb1Nob3J0U3RyaW5nKHVybENhdGVnb3JpZXMpXG5cbi8vIFNob3J0IENhdGVnb3JpZXM6IFwiICsgc2hvcnRDYXRlZ29yaWVzXG4vLyB3YXMgcHJldmlvdXNseSBwcmludGVkIHRvIHRoZSBjb25zb2xlIGhlcmUiLCAibmFtZSI6ICJUb1Nob3J0U3RyaW5nIChWRUNUT1I8TVdHLlVybENhdGVnb3J5PikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBzaG9ydCBuYW1lcyBvZiB0aGUgZ2l2ZW4gVVJMIGNhdGVnb3JpZXMuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLlVybENhdGVnb3J5PmA6IFRoZSBsaXN0IG9mIFVSTCBjYXRlZ29yaWVzIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gYm9vbGVhbiB2YWx1ZS4iLCAiY29kZV9leGFtcGxlIjogIkJPT0xFQU4gaXNBbGxvd2VkID0gVFJVRVxuU1RSSU5HIGlzQWxsb3dlZFN0ciA9IFRvU3RyaW5nKGlzQWxsb3dlZClcbi8vIFRoZSB2YWx1ZSBvZiBpc0FsbG93ZWQgaXM6IFwiICsgaXNBbGxvd2VkU3RyIiwgIm5hbWUiOiAiVG9TdHJpbmcgKEJPT0xFQU4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGJvb2xlYW4gdmFsdWUuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBCT09MRUFOYDogVGhlIGJvb2xlYW4gdmFsdWUgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZGF0YSByZWZlcmVuY2VkIGJ5IHRoZSBnaXZlbiBgREFUQVJFRmAgYXMgYSBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgbXlOdW1iZXIgPSA0MlxuQk9PTEVBTiBteUJvb2xlYW4gPSBUUlVFXG5cblNUUklORyBudW1iZXJBc1N0cmluZyA9IFRvU3RyaW5nKG15TnVtYmVyKVxuU1RSSU5HIGJvb2xlYW5Bc1N0cmluZyA9IFRvU3RyaW5nKG15Qm9vbGVhbilcblxuLy8gVGhlIG51bWJlciBhcyBhIHN0cmluZyBpczogNDJcbi8vIFRoZSBib29sZWFuIGFzIGEgc3RyaW5nIGlzOiBUUlVFIiwgIm5hbWUiOiAiVG9TdHJpbmcgKERBVEFSRUYpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGRhdGEgcmVmZXJlbmNlZCBieSB0aGUgYERBVEFSRUZgIGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgREFUQVJFRmA6IFRoZSBkYXRhIHJlZmVyZW5jZSB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIEpTT04gb2JqZWN0LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGEgSlNPTiBvYmplY3RcbkpTT04ganNvbk9iamVjdCA9IEpTT04oKVxuXG4vLyBBZGQgc29tZSBrZXktdmFsdWUgcGFpcnMgdG8gdGhlIEpTT04gb2JqZWN0XG5qc29uT2JqZWN0W1wibmFtZVwiXSA9IFwiSm9obiBEb2VcIlxuanNvbk9iamVjdFtcImFnZVwiXSA9IDMwXG5qc29uT2JqZWN0W1wiaXNFbXBsb3llZVwiXSA9IFRSVUVcblxuLy8gQ29udmVydCB0aGUgSlNPTiBvYmplY3QgdG8gYSBzdHJpbmdcblNUUklORyBqc29uU3RyaW5nID0ganNvbk9iamVjdC5Ub1N0cmluZygpXG5cbi8vIFRoZSBmb2xsb3dpbmcgbGluZSB3b3VsZCBwcmludCB0aGUgSlNPTiBzdHJpbmcgdG8gdGhlIGNvbnNvbGVcbi8vIGpzb25TdHJpbmciLCAibmFtZSI6ICJUb1N0cmluZyAoSlNPTikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBKU09OIG9iamVjdC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYEpTT05gOiBUaGUgSlNPTiBvYmplY3QgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBgTUFQPFNUUklORyxTVFJJTkc+YC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEluaXRpYWxpemUgYSBNQVA8U1RSSU5HLFNUUklORz5cbk1BUDxTVFJJTkcsU1RSSU5HPiBleGFtcGxlTWFwXG5leGFtcGxlTWFwW1wia2V5MVwiXSA9IFwidmFsdWUxXCJcbmV4YW1wbGVNYXBbXCJrZXkyXCJdID0gXCJ2YWx1ZTJcIlxuZXhhbXBsZU1hcFtcImtleTNcIl0gPSBcInZhbHVlM1wiXG5cbi8vIENvbnZlcnQgdGhlIG1hcCB0byBhIHN0cmluZ1xuU1RSSU5HIG1hcEFzU3RyaW5nID0gVG9TdHJpbmcoZXhhbXBsZU1hcClcblxuLy8gUHJpbnQgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWFwIHRvIHRoZSBjb25zb2xlXG4vLyBtYXBBc1N0cmluZyIsICJuYW1lIjogIlRvU3RyaW5nIChNQVA8U1RSSU5HLCBTVFJJTkc+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIG1hcC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1BUDxTVFJJTkcsU1RSSU5HPmA6IFRoZSBtYXAgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBtZWRpYSB0eXBlLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIG1lZGlhVHlwZSBpcyBhIE1lZGlhVHlwZSBvYmplY3Qgb2J0YWluZWQgZnJvbSBzb21lIHByZXZpb3VzIG9wZXJhdGlvblxuTWVkaWFUeXBlIG1lZGlhVHlwZSA9IEdldE1lZGlhVHlwZUZyb21Tb21ld2hlcmUoKVxuXG4vLyBDb252ZXJ0IHRoZSBNZWRpYVR5cGUgdG8gYSBTVFJJTkdcblNUUklORyBtZWRpYVR5cGVTdHJpbmcgPSBUb1N0cmluZyhtZWRpYVR5cGUpXG5cbi8vIFRoZSBtZWRpYSB0eXBlIGFzIGEgc3RyaW5nIGlzOiBcIiArIG1lZGlhVHlwZVN0cmluZyIsICJuYW1lIjogIlRvU3RyaW5nIChNZWRpYVR5cGUpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIG1lZGlhIHR5cGUuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNZWRpYVR5cGVgOiBUaGUgbWVkaWEgdHlwZSB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGFwcGxpY2F0aW9uIGNhdGVnb3J5IHR5cGUuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgd2UgaGF2ZSBhbiBNV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGUgb2JqZWN0XG5NV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGUgYXBwQ2F0ZWdvcnkgPSBHZXRBcHBsaWNhdGlvbkNhdGVnb3J5KClcblxuLy8gQ29udmVydCB0aGUgYXBwbGljYXRpb24gY2F0ZWdvcnkgdG8gYSBzdHJpbmdcblNUUklORyBhcHBDYXRlZ29yeVN0cmluZyA9IGFwcENhdGVnb3J5LlRvU3RyaW5nKClcblxuLy8gQXBwbGljYXRpb24gQ2F0ZWdvcnk6IGFwcENhdGVnb3J5U3RyaW5nXG5cbi8vIER1bW15IGZ1bmN0aW9uIHRvIHNpbXVsYXRlIGdldHRpbmcgYW4gYXBwbGljYXRpb24gY2F0ZWdvcnlcbkZVTkNUSU9OIEdldEFwcGxpY2F0aW9uQ2F0ZWdvcnkoKSBSRVRVUk5TIE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZSB7XG4gICAgLy8gVGhpcyBmdW5jdGlvbiB3b3VsZCBub3JtYWxseSByZXRyaWV2ZSB0aGUgYXBwbGljYXRpb24gY2F0ZWdvcnlcbiAgICAvLyBGb3IgdGhpcyBleGFtcGxlLCB3ZSdsbCBqdXN0IHJldHVybiBhIHBsYWNlaG9sZGVyIHZhbHVlXG4gICAgUkVUVVJOIE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZShcIkV4YW1wbGVDYXRlZ29yeVwiKVxufSIsICJuYW1lIjogIlRvU3RyaW5nIChNV0cuQXBwbGljYXRpb25DYXRlZ29yeVR5cGUpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYXBwbGljYXRpb24gY2F0ZWdvcnkgdHlwZSBhcyBhIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZWA6IFRoZSBhcHBsaWNhdGlvbiBjYXRlZ29yeSB0eXBlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gc3ViY2F0ZWdvcnkgdHlwZS4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGFuIE1XRy5BcHBsaWNhdGlvblN1YkNhdGVnb3J5VHlwZSBvYmplY3Rcbk1XRy5BcHBsaWNhdGlvblN1YkNhdGVnb3J5VHlwZSBhcHBTdWJDYXRlZ29yeSA9IEdldEFwcGxpY2F0aW9uU3ViQ2F0ZWdvcnkoKVxuXG4vLyBDb252ZXJ0IHRoZSBNV0cuQXBwbGljYXRpb25TdWJDYXRlZ29yeVR5cGUgb2JqZWN0IHRvIGEgc3RyaW5nXG5TVFJJTkcgYXBwU3ViQ2F0ZWdvcnlTdHJpbmcgPSBhcHBTdWJDYXRlZ29yeS5Ub1N0cmluZygpXG5cbi8vIFByaW50IHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gdG8gdGhlIGNvbnNvbGVcbi8vIGFwcFN1YkNhdGVnb3J5U3RyaW5nXG5cbi8vIER1bW15IGZ1bmN0aW9uIHRvIHNpbXVsYXRlIG9idGFpbmluZyBhbiBNV0cuQXBwbGljYXRpb25TdWJDYXRlZ29yeVR5cGUgb2JqZWN0XG5GVU5DVElPTiBNV0cuQXBwbGljYXRpb25TdWJDYXRlZ29yeVR5cGUgR2V0QXBwbGljYXRpb25TdWJDYXRlZ29yeSgpIHtcbiAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgdGhlIE1XRy5BcHBsaWNhdGlvblN1YkNhdGVnb3J5VHlwZSBvYmplY3RcbiAgICAvLyBUaGlzIGlzIGp1c3QgYSBwbGFjZWhvbGRlciBmb3IgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvblxuICAgIFJFVFVSTiBzb21lQXBwU3ViQ2F0ZWdvcnlPYmplY3Rcbn0iLCAibmFtZSI6ICJUb1N0cmluZyAoTVdHLkFwcGxpY2F0aW9uU3ViQ2F0ZWdvcnlUeXBlKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGFwcGxpY2F0aW9uIHN1YmNhdGVnb3J5IHR5cGUgYXMgYSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuQXBwbGljYXRpb25TdWJDYXRlZ29yeVR5cGVgOiBUaGUgYXBwbGljYXRpb24gc3ViY2F0ZWdvcnkgdHlwZSB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBJRCBvZiB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gdHlwZSBhcyBhIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGFuIE1XRy5BcHBsaWNhdGlvblR5cGUgb2JqZWN0XG5NV0cuQXBwbGljYXRpb25UeXBlIGFwcFR5cGUgPSBHZXRBcHBsaWNhdGlvblR5cGUoKSAvLyBUaGlzIGlzIGEgcGxhY2Vob2xkZXIgZm9yIGhvd2V2ZXIgeW91IG9idGFpbiB0aGUgYXBwbGljYXRpb24gdHlwZVxuXG4vLyBDb252ZXJ0IHRoZSBNV0cuQXBwbGljYXRpb25UeXBlIG9iamVjdCB0byBhIFNUUklOR1xuU1RSSU5HIGFwcFR5cGVTdHJpbmcgPSBhcHBUeXBlLlRvU3RyaW5nKClcblxuLy8gUHJpbnQgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiB0byB0aGUgY29uc29sZVxuLy8gQXBwbGljYXRpb24gVHlwZTogXCIgKyBhcHBUeXBlU3RyaW5nIiwgIm5hbWUiOiAiVG9TdHJpbmcgKE1XRy5BcHBsaWNhdGlvblR5cGUpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGFwcGxpY2F0aW9uJ3MgSUQgYXMgYSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuQXBwbGljYXRpb25UeXBlYDogVGhlIGFwcGxpY2F0aW9uIHR5cGUgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYW4gTVdHLkludGVybmFsVmFyaWFudCBvYmplY3Rcbk1XRy5JbnRlcm5hbFZhcmlhbnQgdmFyaWFudCA9IEdldFNvbWVJbnRlcm5hbFZhcmlhbnQoKVxuXG4vLyBDb252ZXJ0IHRoZSBJbnRlcm5hbFZhcmlhbnQgdG8gYSBzdHJpbmdcblNUUklORyB2YXJpYW50U3RyaW5nID0gdmFyaWFudC5Ub1N0cmluZygpXG5cbi8vIFByaW50IHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gdG8gdGhlIGNvbnNvbGVcbi8vIHZhcmlhbnRTdHJpbmdcblxuLy8gRHVtbXkgZnVuY3Rpb24gdG8gc2ltdWxhdGUgb2J0YWluaW5nIGFuIE1XRy5JbnRlcm5hbFZhcmlhbnQgb2JqZWN0XG5GVU5DVElPTiBHZXRTb21lSW50ZXJuYWxWYXJpYW50KCkgUkVUVVJOUyBNV0cuSW50ZXJuYWxWYXJpYW50IHtcbiAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgYW4gTVdHLkludGVybmFsVmFyaWFudCBvYmplY3RcbiAgICAvLyBUaGlzIGlzIGp1c3QgYSBwbGFjZWhvbGRlciBmb3IgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvblxuICAgIE1XRy5JbnRlcm5hbFZhcmlhbnQgZXhhbXBsZVZhcmlhbnRcbiAgICAvLyBTZXQgc29tZSB2YWx1ZSB0byB0aGUgZXhhbXBsZVZhcmlhbnRcbiAgICByZXR1cm4gZXhhbXBsZVZhcmlhbnRcbn0iLCAibmFtZSI6ICJUb1N0cmluZyAoTVdHLkludGVybmFsVmFyaWFudCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhbiBpbnRlcm5hbCB2YXJpYW50IGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsVmFyaWFudGA6IFRoZSBpbnRlcm5hbCB2YXJpYW50IHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIEdUSSBjYXRlZ29yeSBuYW1lIG9mIHRoZSBnaXZlbiBVUkwgY2F0ZWdvcnkgYXMgYSBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuVVJMIGN1cnJlbnRVcmwgPSBNV0cuVXJsKClcbk1XRy5VcmxDYXRlZ29yeSB1cmxDYXRlZ29yeSA9IGN1cnJlbnRVcmwuQ2F0ZWdvcnkoKVxuU1RSSU5HIGNhdGVnb3J5U3RyaW5nID0gVG9TdHJpbmcodXJsQ2F0ZWdvcnkpXG5cbi8vIFRoZSBVUkwgY2F0ZWdvcnkgaXM6IGNhdGVnb3J5U3RyaW5nIiwgIm5hbWUiOiAiVG9TdHJpbmcgKE1XRy5VcmxDYXRlZ29yeSkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgR1RJIGNhdGVnb3J5IGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLlVybENhdGVnb3J5YDogVGhlIFVSTCBjYXRlZ29yeSB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIElQIGFkZHJlc3MuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgd2UgaGF2ZSBhbiBJUCBhZGRyZXNzIG9iamVjdFxuTmV0LklQIGlwQWRkcmVzcyA9IFwiMTkyLjE2OC4xLjFcIlxuXG4vLyBDb252ZXJ0IHRoZSBJUCBhZGRyZXNzIHRvIGEgc3RyaW5nXG5TVFJJTkcgaXBTdHJpbmcgPSBOZXQuVG9TdHJpbmcoaXBBZGRyZXNzKVxuXG4vLyBUaGUgSVAgYWRkcmVzcyBhcyBhIHN0cmluZyBpczogXCIgKyBpcFN0cmluZyIsICJuYW1lIjogIlRvU3RyaW5nIChOZXQuSVApIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gSVAgYWRkcmVzcy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5ldC5JUGA6IFRoZSBJUCBhZGRyZXNzIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gSVAgcmFuZ2UuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgYW4gSVAgcmFuZ2Vcbk5ldC5JUFJhbmdlIGlwUmFuZ2UgPSBOZXQuSVBSYW5nZShcIjE5Mi4xNjguMS4wXCIsIFwiMTkyLjE2OC4xLjI1NVwiKVxuXG4vLyBDb252ZXJ0IHRoZSBJUCByYW5nZSB0byBhIHN0cmluZ1xuU1RSSU5HIGlwUmFuZ2VTdHJpbmcgPSBUb1N0cmluZyhpcFJhbmdlKVxuXG4vLyBUaGUgSVAgcmFuZ2UgaXM6IFxuLy8gaXBSYW5nZVN0cmluZyIsICJuYW1lIjogIlRvU3RyaW5nIChOZXQuSVBSYW5nZSkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gSVAgcmFuZ2UuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBOZXQuSVBSYW5nZWA6IFRoZSBJUCByYW5nZSB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIG51bWJlci4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBteU51bWJlciA9IDEyMy40NVxuU1RSSU5HIG15U3RyaW5nID0gVG9TdHJpbmcobXlOdW1iZXIpXG4vLyBPdXRwdXR0aW5nIG15U3RyaW5nIHRvIHRoZSBjb25zb2xlIiwgIm5hbWUiOiAiVG9TdHJpbmcgKE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBudW1iZXIuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBOVU1CRVJgOiBUaGUgbnVtZXJpYyB2YWx1ZSB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBnaXZlbiBudW1iZXIgYXMgYSBzdHJpbmcgZm9ybWF0dGVkIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIHZhbHVlID0gMTIzLjQ1NlxuU1RSSU5HIHN0cmluZ1ZhbHVlID0gVG9TdHJpbmcodmFsdWUpXG4vLyBPdXRwdXR0aW5nIHRoZSBzdHJpbmdWYWx1ZSB0byB0aGUgY29uc29sZSIsICJuYW1lIjogIlRvU3RyaW5nIChOVU1CRVIsIE5VTUJFUikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZ2l2ZW4gbnVtYmVyIGFzIGEgc3RyaW5nIGZvcm1hdHRlZCB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5VTUJFUmA6IFRoZSBudW1iZXIgdG8gY29udmVydC5cbjIuIGBOVU1CRVJgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIGluIHRoZSByZXN1bHQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBtZWRpYSB0eXBlIGxpc3Qgam9pbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHNlcGFyYXRlZCBieSBgJywgJ2AuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBJbml0aWFsaXplIGEgVkVDVE9SIG9mIE1lZGlhVHlwZVxuVkVDVE9SPE1lZGlhVHlwZT4gbWVkaWFUeXBlcyA9IE1lZGlhVHlwZShcImltYWdlL2pwZWdcIiksIE1lZGlhVHlwZShcImFwcGxpY2F0aW9uL3BkZlwiKSwgTWVkaWFUeXBlKFwidGV4dC9odG1sXCIpO1xuXG4vLyBDb252ZXJ0IHRoZSBWRUNUT1I8TWVkaWFUeXBlPiB0byBhIFNUUklOR1xuU1RSSU5HIG1lZGlhVHlwZXNTdHJpbmcgPSBUb1N0cmluZyhtZWRpYVR5cGVzKTtcblxuLy8gUHJpbnQgdGhlIHJlc3VsdGluZyBTVFJJTkcgdG8gdGhlIGNvbnNvbGVcbi8vIG1lZGlhVHlwZXNTdHJpbmciLCAibmFtZSI6ICJUb1N0cmluZyAoVkVDVE9SPE1lZGlhVHlwZT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBtZWRpYSB0eXBlIGxpc3Qgam9pbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHNlcGFyYXRlZCBieSBgJywgJ2AuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TWVkaWFUeXBlPmA6IFRoZSBsaXN0IG9mIG1lZGlhIHR5cGVzIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBtZWRpYSB0eXBlIGxpc3Qgam9pbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgc2VwYXJhdG9yLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIFZFQ1RPUiBvZiBNZWRpYVR5cGVcblZFQ1RPUjxNZWRpYVR5cGU+IG1lZGlhVHlwZXMgPSBNZWRpYVR5cGUoXCJpbWFnZS9qcGVnXCIpLCBNZWRpYVR5cGUoXCJhcHBsaWNhdGlvbi9wZGZcIiksIE1lZGlhVHlwZShcInRleHQvaHRtbFwiKTtcblxuLy8gQ29udmVydCB0aGUgVkVDVE9SIHRvIGEgU1RSSU5HXG5TVFJJTkcgbWVkaWFUeXBlc1N0cmluZyA9IFRvU3RyaW5nKG1lZGlhVHlwZXMpO1xuXG4vLyBQcmludCB0aGUgU1RSSU5HIHJlcHJlc2VudGF0aW9uIHRvIHRoZSBjb25zb2xlXG4vLyBtZWRpYVR5cGVzU3RyaW5nIiwgIm5hbWUiOiAiVG9TdHJpbmcgKFZFQ1RPUjxNZWRpYVR5cGU+LCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBtZWRpYSB0eXBlIGxpc3Qgam9pbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgc2VwYXJhdG9yLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1lZGlhVHlwZT5gOiBUaGUgbGlzdCBvZiBtZWRpYSB0eXBlcyB0byBjb252ZXJ0LlxuMi4gYFNUUklOR2A6IFRoZSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiBlbGVtZW50cy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZWxlbWVudHMgb2YgdGhlIGdpdmVuIFVSTCBjYXRlZ29yeSBsaXN0IGpvaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZy4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGEgVkVDVE9SIG9mIE1XRy5VcmxDYXRlZ29yeVxuVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gdXJsQ2F0ZWdvcmllcyA9IFtcImV4YW1wbGVfdXJsX2NhdGVnb3J5X2xpc3RcIl1cblxuLy8gQ29udmVydCB0aGUgVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gdG8gYSBTVFJJTkdcblNUUklORyB1cmxDYXRlZ29yaWVzU3RyaW5nID0gVG9TdHJpbmcodXJsQ2F0ZWdvcmllcylcblxuLy8gVGhpcyBsaW5lIHdvdWxkIHByaW50IHRoZSBTVFJJTkcgcmVwcmVzZW50YXRpb24gdG8gdGhlIGNvbnNvbGVcbi8vIHVybENhdGVnb3JpZXNTdHJpbmciLCAibmFtZSI6ICJUb1N0cmluZyAoVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBVUkwgY2F0ZWdvcnkgbGlzdCBqb2luZWQgaW50byBhIHNpbmdsZSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TVdHLlVybENhdGVnb3J5PmA6IFRoZSBsaXN0IG9mIFVSTCBjYXRlZ29yaWVzIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBJUCBhZGRyZXNzIGxpc3Qgam9pbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5ldC5JUD4gaXBMaXN0ID0gTmV0LklQKFwiMTkyLjE2OC4xLjFcIiksIE5ldC5JUChcIjEwLjAuMC4xXCIpLCBOZXQuSVAoXCIxNzIuMTYuMC4xXCIpXG5TVFJJTkcgaXBTdHJpbmcgPSBOZXQuVG9TdHJpbmcoaXBMaXN0KVxuLy8gT3V0cHV0IHRoZSBJUCBzdHJpbmcgdG8gdGhlIGNvbnNvbGVcbi8vIGlwU3RyaW5nIiwgIm5hbWUiOiAiVG9TdHJpbmcgKFZFQ1RPUjxOZXQuSVA+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gSVAgYWRkcmVzcyBsaXN0IGpvaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZy4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOZXQuSVA+YDogVGhlIGxpc3Qgb2YgSVAgYWRkcmVzc2VzIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBJUCBhZGRyZXNzIGxpc3Qgam9pbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgZGVsaW1pdGVyLCBvciBgJywnYCBpZiB0aGUgZGVsaW1pdGVyIGlzIGVtcHR5LiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE5ldC5JUD4gaXBMaXN0ID0gTmV0LklQKFwiMTkyLjE2OC4xLjFcIiksIE5ldC5JUChcIjEwLjAuMC4xXCIpLCBOZXQuSVAoXCIxNzIuMTYuMC4xXCIpXG5TVFJJTkcgaXBTdHJpbmcgPSBOZXQuVG9TdHJpbmcoaXBMaXN0KVxuLy8gT3V0cHV0IHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIElQIGxpc3QgdG8gdGhlIGNvbnNvbGVcbi8vIGlwU3RyaW5nIiwgIm5hbWUiOiAiVG9TdHJpbmcgKFZFQ1RPUjxOZXQuSVA+LCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBJUCBhZGRyZXNzIGxpc3Qgam9pbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgZGVsaW1pdGVyLCBvciBgJywnYCBpZiB0aGUgZGVsaW1pdGVyIGlzIGVtcHR5LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5ldC5JUD5gOiBUaGUgbGlzdCBvZiBJUCBhZGRyZXNzZXMgdG8gY29udmVydC5cbjIuIGBTVFJJTkdgOiBUaGUgZGVsaW1pdGVyIHRvIHBsYWNlIGJldHdlZW4gZWxlbWVudHM7IGlmIGVtcHR5LCBgJywnYCBpcyB1c2VkLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gSVAgYWRkcmVzcyByYW5nZSBsaXN0IGpvaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyB1c2luZyB0aGUgc3BlY2lmaWVkIGRlbGltaXRlciwgb3IgYCcsJ2AgaWYgdGhlIGRlbGltaXRlciBpcyBlbXB0eS4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxOZXQuSVBSYW5nZT4gaXBSYW5nZXMgPSBbXCJleGFtcGxlX2lwX3JhbmdlX2xpc3RcIl1cblNUUklORyBpcFJhbmdlc1N0cmluZyA9IE5ldC5Ub1N0cmluZyhpcFJhbmdlcylcbi8vIE91dHB1dHRpbmcgdGhlIGlwUmFuZ2VzU3RyaW5nIiwgIm5hbWUiOiAiVG9TdHJpbmcgKFZFQ1RPUjxOZXQuSVBSYW5nZT4sIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZWxlbWVudHMgb2YgdGhlIGdpdmVuIElQIGFkZHJlc3MgcmFuZ2UgbGlzdCBqb2luZWQgaW50byBhIHNpbmdsZSBzdHJpbmcgdXNpbmcgdGhlIHNwZWNpZmllZCBkZWxpbWl0ZXIsIG9yIGAnLCdgIGlmIHRoZSBkZWxpbWl0ZXIgaXMgZW1wdHkuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8TmV0LklQUmFuZ2U+YDogVGhlIGxpc3Qgb2YgSVAgYWRkcmVzcyByYW5nZXMgdG8gY29udmVydC5cbjIuIGBTVFJJTkdgOiBUaGUgZGVsaW1pdGVyIHRvIHBsYWNlIGJldHdlZW4gZWxlbWVudHM7IGlmIGVtcHR5LCBgJywnYCBpcyB1c2VkLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gbnVtYmVyIGxpc3Qgam9pbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgZGVsaW1pdGVyLCBvciBgJywnYCBpZiB0aGUgZGVsaW1pdGVyIGlzIGVtcHR5LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gSW5pdGlhbGl6ZSBhIFZFQ1RPUiBvZiBOVU1CRVJzXG5WRUNUT1I8TlVNQkVSPiBudW1iZXJzID0gMSwgMiwgMywgNCwgNVxuXG4vLyBDb252ZXJ0IHRoZSBWRUNUT1IgdG8gYSBTVFJJTkcgd2l0aCBhIGh5cGhlbiBhcyB0aGUgc2VwYXJhdG9yXG5TVFJJTkcgcmVzdWx0ID0gVG9TdHJpbmcobnVtYmVycywgXCItXCIpXG5cbi8vIFByaW50IHRoZSByZXN1bHQgdG8gdGhlIGNvbnNvbGVcbi8vIERFQlVHKHJlc3VsdCkiLCAibmFtZSI6ICJUb1N0cmluZyAoVkVDVE9SPE5VTUJFUj4sIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgZWxlbWVudHMgb2YgdGhlIGdpdmVuIG51bWJlciBsaXN0IGpvaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyB1c2luZyB0aGUgc3BlY2lmaWVkIGRlbGltaXRlciwgb3IgYCcsJ2AgaWYgdGhlIGRlbGltaXRlciBpcyBlbXB0eS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOVU1CRVI+YDogVGhlIGxpc3Qgb2YgbnVtYmVycyB0byBjb252ZXJ0LlxuMi4gYFNUUklOR2A6IFRoZSBkZWxpbWl0ZXIgdG8gcGxhY2UgYmV0d2VlbiBlbGVtZW50czsgaWYgZW1wdHksIGAnLCdgIGlzIHVzZWQuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBzdHJpbmcgbGlzdCBqb2luZWQgaW50byBhIHNpbmdsZSBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8U1RSSU5HPiBleGFtcGxlTGlzdCA9IFwiYXBwbGVcIiwgXCJiYW5hbmFcIiwgXCJjaGVycnlcIlxuU1RSSU5HIHJlc3VsdCA9IFRvU3RyaW5nKGV4YW1wbGVMaXN0KVxuLy8gT3V0cHV0IHJlc3VsdCB0byB0aGUgY29uc29sZVxuLy8gcmVzdWx0IiwgIm5hbWUiOiAiVG9TdHJpbmcgKFZFQ1RPUjxTVFJJTkc+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gc3RyaW5nIGxpc3Qgam9pbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPFNUUklORz5gOiBUaGUgbGlzdCBvZiBzdHJpbmdzIHRvIGpvaW4uIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBzdHJpbmcgbGlzdCBqb2luZWQgaW50byBhIHNpbmdsZSBzdHJpbmcgdXNpbmcgdGhlIHNwZWNpZmllZCBkZWxpbWl0ZXIuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8U1RSSU5HPiB3b3JkcyA9IFwiSGVsbG9cIiwgXCJ3b3JsZFwiLCBcInRoaXNcIiwgXCJpc1wiLCBcIk1PV0dMSVwiXG5TVFJJTkcgZGVsaW1pdGVyID0gXCIgXCJcblNUUklORyByZXN1bHQgPSBKb2luKHdvcmRzLCBkZWxpbWl0ZXIpXG4vLyBUaGlzIHdpbGwgcHJpbnQgXCJIZWxsbyB3b3JsZCB0aGlzIGlzIE1PV0dMSVwiIiwgIm5hbWUiOiAiVG9TdHJpbmcgKFZFQ1RPUjxTVFJJTkc+LCBTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBzdHJpbmcgbGlzdCBqb2luZWQgaW50byBhIHNpbmdsZSBzdHJpbmcgdXNpbmcgdGhlIHNwZWNpZmllZCBkZWxpbWl0ZXIuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8U1RSSU5HPmA6IFRoZSBsaXN0IG9mIHN0cmluZ3MgdG8gam9pbi5cbjIuIGBTVFJJTkdgOiBUaGUgZGVsaW1pdGVyIHRvIHBsYWNlIGJldHdlZW4gZWxlbWVudHMuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGdpdmVuIFlvdVR1YmUgdmlkZW8gY2F0ZWdvcnkgYXMgYSBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgd2UgaGF2ZSBhIFlvdVR1YmVWaWRlb0NhdGVnb3J5IG9iamVjdFxuWW91VHViZVZpZGVvQ2F0ZWdvcnkgY2F0ZWdvcnkgPSBHZXRZb3VUdWJlVmlkZW9DYXRlZ29yeSgpIC8vIFRoaXMgaXMgYSBwbGFjZWhvbGRlciBmb3IgaG93ZXZlciB5b3Ugb2J0YWluIHRoZSBjYXRlZ29yeVxuXG4vLyBDb252ZXJ0IHRoZSBZb3VUdWJlVmlkZW9DYXRlZ29yeSB0byBhIFNUUklOR1xuU1RSSU5HIGNhdGVnb3J5TmFtZSA9IFRvU3RyaW5nKGNhdGVnb3J5KVxuXG4vLyBUaGUgWW91VHViZSB2aWRlbyBjYXRlZ29yeSBpczogXCIgKyBjYXRlZ29yeU5hbWUiLCAibmFtZSI6ICJUb1N0cmluZyAoWW91VHViZVZpZGVvQ2F0ZWdvcnkpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIFlvdVR1YmUgdmlkZW8gY2F0ZWdvcnkgYXMgYSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBZb3VUdWJlVmlkZW9DYXRlZ29yeWA6IFRoZSBZb3VUdWJlIHZpZGVvIGNhdGVnb3J5IHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTUFQPFNUUklORyxTVFJJTkc+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGBNQVA8U1RSSU5HLFNUUklORz5gIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQ3JlYXRlIGEgTUFQPFNUUklORz48U1RSSU5HPlxuTUFQPFNUUklORz48U1RSSU5HPiBzdHJpbmdNYXBcblxuLy8gUG9wdWxhdGUgdGhlIG1hcCB3aXRoIHNvbWUga2V5LXZhbHVlIHBhaXJzXG5zdHJpbmdNYXBbXCJrZXkxXCJdID0gXCJ2YWx1ZTFcIlxuc3RyaW5nTWFwW1wia2V5MlwiXSA9IFwidmFsdWUyXCJcbnN0cmluZ01hcFtcImtleTNcIl0gPSBcInZhbHVlM1wiXG5cbi8vIEFzc3VtaW5nIHRoZXJlIGlzIGEgZnVuY3Rpb24gdG8gY29udmVydCBNQVA8U1RSSU5HPjxTVFJJTkc+IHRvIE1XRy5JbnRlcm5hbFZhcmlhbnRcbk1XRy5JbnRlcm5hbFZhcmlhbnQgdmFyaWFudCA9IENvbnZlcnRNYXBUb1ZhcmlhbnQoc3RyaW5nTWFwKVxuXG4vLyBVc2UgdGhlIHZhcmlhbnQgaW4gc29tZSB3YXlcbi8vIENvbnZlcnRlZCB2YXJpYW50OiBcIiArIHZhcmlhbnQuVG9TdHJpbmcoKVxuXG4vLyBQbGFjZWhvbGRlciBmdW5jdGlvbiBmb3IgY29udmVydGluZyBNQVA8U1RSSU5HPjxTVFJJTkc+IHRvIE1XRy5JbnRlcm5hbFZhcmlhbnRcbk1XRy5JbnRlcm5hbFZhcmlhbnQgQ29udmVydE1hcFRvVmFyaWFudChNQVA8U1RSSU5HPjxTVFJJTkc+IG1hcCkge1xuICAgIC8vIEltcGxlbWVudGF0aW9uIHdvdWxkIGdvIGhlcmVcbiAgICAvLyBUaGlzIGlzIGp1c3QgYSBwbGFjZWhvbGRlciBhcyB0aGUgYWN0dWFsIGZ1bmN0aW9uIGlzIG5vdCBzcGVjaWZpZWRcbiAgICBNV0cuSW50ZXJuYWxWYXJpYW50IHZhcmlhbnRcbiAgICAvLyBDb252ZXJzaW9uIGxvZ2ljXG4gICAgcmV0dXJuIHZhcmlhbnRcbn0iLCAibmFtZSI6ICJUb1N0cmluZ1RvU3RyaW5nTWFwIChNV0cuSW50ZXJuYWxWYXJpYW50KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgTUFQPFNUUklORyxTVFJJTkc+YCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gaW50ZXJuYWwgdmFyaWFudC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE1XRy5JbnRlcm5hbFZhcmlhbnRgOiBUaGUgdmFsdWUgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8U1RSSU5HPiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBgVkVDVE9SPFNUUklORz5gIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYW4gTVdHLkludGVybmFsVmFyaWFudCBvYmplY3Rcbk1XRy5JbnRlcm5hbFZhcmlhbnQgdmFyaWFudE9iamVjdCA9IEdldFNvbWVJbnRlcm5hbFZhcmlhbnQoKVxuXG4vLyBDb252ZXJ0IHRoZSBNV0cuSW50ZXJuYWxWYXJpYW50IG9iamVjdCB0byBhIFZFQ1RPUjxTVFJJTkc+XG5WRUNUT1I8U1RSSU5HPiBzdHJpbmdWZWN0b3IgPSB2YXJpYW50T2JqZWN0LlRvU3RyaW5nVmVjdG9yKClcblxuLy8gUHJpbnQgdGhlIGNvbnRlbnRzIG9mIHRoZSBWRUNUT1I8U1RSSU5HPiB0byB0aGUgY29uc29sZVxuRk9SIFNUUklORyBpdGVtIElOIHN0cmluZ1ZlY3RvciB7XG4gICAgLy8gaXRlbVxufVxuXG4vLyBEdW1teSBmdW5jdGlvbiB0byBzaW11bGF0ZSBvYnRhaW5pbmcgYW4gTVdHLkludGVybmFsVmFyaWFudCBvYmplY3RcbkZVTkNUSU9OIEdldFNvbWVJbnRlcm5hbFZhcmlhbnQoKSBSRVRVUk5TIE1XRy5JbnRlcm5hbFZhcmlhbnQge1xuICAgIC8vIEltcGxlbWVudGF0aW9uIHRvIGdldCBhbiBNV0cuSW50ZXJuYWxWYXJpYW50IG9iamVjdFxuICAgIC8vIFRoaXMgaXMganVzdCBhIHBsYWNlaG9sZGVyIGZvciB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uXG4gICAgTVdHLkludGVybmFsVmFyaWFudCB2YXJpYW50XG4gICAgLy8gUG9wdWxhdGUgdGhlIHZhcmlhbnQgd2l0aCBzb21lIGRhdGFcbiAgICBSRVRVUk4gdmFyaWFudFxufSIsICJuYW1lIjogIlRvU3RyaW5nVmVjdG9yIChNV0cuSW50ZXJuYWxWYXJpYW50KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBgVkVDVE9SPFNUUklORz5gIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBpbnRlcm5hbCB2YXJpYW50LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTVdHLkludGVybmFsVmFyaWFudGA6IFRoZSB2YWx1ZSB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBhbGwgbG93ZXJjYXNlIGNoYXJhY3RlcnMgY29udmVydGVkIHRvIHVwcGVyY2FzZS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBvcmlnaW5hbFN0cmluZyA9IFwiaGVsbG8sIHdvcmxkXCJcblNUUklORyB1cHBlclN0cmluZyA9IFRvVXBwZXIob3JpZ2luYWxTdHJpbmcpXG4vLyBEaXNwbGF5IHRoZSBjb252ZXJ0ZWQgc3RyaW5nXG4vLyB1cHBlclN0cmluZyIsICJuYW1lIjogIlRvVXBwZXIgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyB3aGVyZSBhbGwgbG93ZXJjYXNlIGNoYXJhY3RlcnMgYXJlIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgaW5wdXQgc3RyaW5nIHRvIGNvbnZlcnQgdG8gdXBwZXJjYXNlLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBnaXZlbiBudW1iZXIgb2YgYnl0ZXMgYXMgYSBodW1hbi1yZWFkYWJsZSB2b2x1bWUgc3RyaW5nIHJvdW5kZWQgdG8gdGhlIGFwcHJvcHJpYXRlIHVuaXQgKGUuZy4sIGAxIEdCYCBvciBgMyBNQmApLiIsICJjb2RlX2V4YW1wbGUiOiAiTlVNQkVSIHNpemVJbkJ5dGVzID0gMTA0ODU3NlxuU1RSSU5HIHZvbHVtZVN0cmluZyA9IFRvVm9sdW1lU3RyaW5nKHNpemVJbkJ5dGVzKVxuLy8gVGhlIHZvbHVtZSBpczogXCIgKyB2b2x1bWVTdHJpbmciLCAibmFtZSI6ICJUb1ZvbHVtZVN0cmluZyAoTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBpbnB1dCBudW1iZXIgY29udmVydGVkIHRvIGEgdm9sdW1lIHN0cmluZywgcm91bmRlZCB0byB0aGUgYXBwcm9wcmlhdGUgdW5pdCAoZS5nLiwgMSBHQiBvciAzIE1CKS4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYE5VTUJFUmA6IFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gY29udmVydC4ifSwgeyJyZXR1cm5fdHlwZSI6ICJNV0cuVXJsQ2F0ZWdvcnkiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYE1XRy5VcmxDYXRlZ29yeWAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgImNvZGVfZXhhbXBsZSI6ICJNV0cuSW50ZXJuYWxWYXJpYW50IGludGVybmFsVmFyaWFudCA9IE1XRy5VcmwoKVxuTVdHLlVybENhdGVnb3J5IHVybENhdGVnb3J5ID0gVG9XZWJVcmxDYXRlZ29yeShpbnRlcm5hbFZhcmlhbnQpXG5cbklGIHVybENhdGVnb3J5ID09IFwiU29jaWFsIE1lZGlhXCIgVEhFTiB7XG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIHRvIHNvY2lhbCBtZWRpYSBzaXRlcyBpcyBub3QgYWxsb3dlZC5cIilcbn0gRUxTRSB7XG4gICAgTVdHLkFsbG93KFwiVVJMIGNhdGVnb3J5IGlzIGFsbG93ZWQuXCIpXG59IiwgIm5hbWUiOiAiVG9XZWJVcmxDYXRlZ29yeSAoTVdHLkludGVybmFsVmFyaWFudCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgYE1XRy5VcmxDYXRlZ29yeWAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxWYXJpYW50YDogVGhlIHZhbHVlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiTVdHLlVybENhdGVnb3J5IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGBNV0cuVXJsQ2F0ZWdvcnlgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIEdUSSBjYXRlZ29yeSBudW1iZXIuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgYSBOVU1CRVIgdmFyaWFibGVcbk5VTUJFUiBjYXRlZ29yeU51bWJlciA9IDVcblxuLy8gQ29udmVydCB0aGUgTlVNQkVSIHRvIGEgR1RJIGNhdGVnb3J5IHVzaW5nIFRvV2ViVXJsQ2F0ZWdvcnlcbk1XRy5VcmxDYXRlZ29yeSB1cmxDYXRlZ29yeSA9IFRvV2ViVXJsQ2F0ZWdvcnkoY2F0ZWdvcnlOdW1iZXIpXG5cbi8vIFRoZSBHVEkgY2F0ZWdvcnkgZm9yIG51bWJlciA1IGlzIHVybENhdGVnb3J5IiwgIm5hbWUiOiAiVG9XZWJVcmxDYXRlZ29yeSAoTlVNQkVSKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBHVEkgY2F0ZWdvcnkgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gbnVtZXJpY2FsIGlucHV0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgTlVNQkVSYDogVGhlIG51bWVyaWNhbCBpZGVudGlmaWVyIG9mIHRoZSBHVEkgY2F0ZWdvcnkuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgYFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+YCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gaW50ZXJuYWwgdmFyaWFudC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGFuIGludGVybmFsIHZhcmlhbnQgdmFsdWVcbk1XRy5JbnRlcm5hbFZhcmlhbnQgaW50ZXJuYWxWYXJpYW50ID0gR2V0SW50ZXJuYWxWYXJpYW50U29tZWhvdygpXG5cbi8vIENvbnZlcnQgdGhlIGludGVybmFsIHZhcmlhbnQgdG8gYSBVUkwgY2F0ZWdvcnkgbGlzdFxuVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gdXJsQ2F0ZWdvcmllcyA9IFRvV2ViVXJsQ2F0ZWdvcnlMaXN0KGludGVybmFsVmFyaWFudClcblxuLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBVUkwgY2F0ZWdvcmllcyBhbmQgcHJpbnQgdGhlbVxuRk9SIEVBQ0ggY2F0ZWdvcnkgSU4gdXJsQ2F0ZWdvcmllcyB7XG4gICAgLy8gVVJMIENhdGVnb3J5OiBcIiArIGNhdGVnb3J5XG59XG5cbi8vIFRoaXMgaXMgYSBwbGFjZWhvbGRlciBmdW5jdGlvbiB0byBzaW11bGF0ZSBvYnRhaW5pbmcgYW4gaW50ZXJuYWwgdmFyaWFudFxuRlVOQ1RJT04gR2V0SW50ZXJuYWxWYXJpYW50U29tZWhvdygpIFJFVFVSTlMgTVdHLkludGVybmFsVmFyaWFudCB7XG4gICAgLy8gSW1wbGVtZW50YXRpb24gdG8gZ2V0IGFuIGludGVybmFsIHZhcmlhbnRcbiAgICAvLyBUaGlzIGlzIGp1c3QgYSBwbGFjZWhvbGRlciBhbmQgd291bGQgYmUgcmVwbGFjZWQgd2l0aCBhY3R1YWwgbG9naWNcbiAgICBNV0cuSW50ZXJuYWxWYXJpYW50IHZhcmlhbnRcbiAgICAvLyBQb3B1bGF0ZSB0aGUgdmFyaWFudCB3aXRoIHNvbWUgZGF0YVxuICAgIFJFVFVSTiB2YXJpYW50XG59IiwgIm5hbWUiOiAiVG9XZWJVcmxDYXRlZ29yeUxpc3QgKE1XRy5JbnRlcm5hbFZhcmlhbnQpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGBWRUNUT1I8TVdHLlVybENhdGVnb3J5PmAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGludGVybmFsIHZhcmlhbnQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBNV0cuSW50ZXJuYWxWYXJpYW50YDogVGhlIHZhbHVlIHRvIGNvbnZlcnQuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGlzdCBvZiBgTVdHLlVybENhdGVnb3J5YCBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpc3Qgb2YgR1RJIGNhdGVnb3J5IG51bWJlcnMuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgYSBWRUNUT1Igb2YgTlVNQkVScyByZXByZXNlbnRpbmcgY2F0ZWdvcnkgSURzXG5WRUNUT1I8TlVNQkVSPiBjYXRlZ29yeU51bWJlcnMgPSAxLCAyLCAzLCA0LCA1XG5cbi8vIENvbnZlcnQgdGhlIGNhdGVnb3J5IG51bWJlcnMgdG8gR1RJIGNhdGVnb3JpZXNcblZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+IGd0aUNhdGVnb3JpZXMgPSBUb1dlYlVybENhdGVnb3J5TGlzdChjYXRlZ29yeU51bWJlcnMpXG5cbi8vIEdUSSBDYXRlZ29yaWVzOiBcIiArIGd0aUNhdGVnb3JpZXMiLCAibmFtZSI6ICJUb1dlYlVybENhdGVnb3J5TGlzdCAoVkVDVE9SPE5VTUJFUj4pIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIEdUSSBjYXRlZ29yeSBsaXN0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIG51bWJlciBsaXN0LiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE5VTUJFUj5gOiBUaGUgbGlzdCBvZiBHVEkgY2F0ZWdvcnkgbnVtYmVycyB0byBjb252ZXJ0LiJ9LCB7InJldHVybl90eXBlIjogIllvdVR1YmVWaWRlb0NhdGVnb3J5IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGBZb3VUdWJlVmlkZW9DYXRlZ29yeWAgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gY2F0ZWdvcnkgSUQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgY2F0ZWdvcnlOYW1lID0gXCJFZHVjYXRpb25cIlxuWW91VHViZVZpZGVvQ2F0ZWdvcnkgY2F0ZWdvcnkgPSBUb1lvdVR1YmVWaWRlb0NhdGVnb3J5KGNhdGVnb3J5TmFtZSlcblxuLy8gVGhlIFlvdVR1YmUgdmlkZW8gY2F0ZWdvcnkgaXM6IFwiICsgY2F0ZWdvcnkiLCAibmFtZSI6ICJUb1lvdVR1YmVWaWRlb0NhdGVnb3J5IChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBZb3VUdWJlVmlkZW9DYXRlZ29yeSBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gY2F0ZWdvcnkgSUQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgSUQgb2YgdGhlIFlvdVR1YmUgdmlkZW8gY2F0ZWdvcnkuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRyaWdnZXIuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBUaGlzIHJvdXRpbmUgaXMgdHJpZ2dlcmVkIG9uIGJvdGggV2ViLlJlcXVlc3QgYW5kIFdlYi5SZXNwb25zZSBldmVudHNcbi8vIEFkZCB5b3VyIGNvZGUgaGVyZSIsICJuYW1lIjogIlRyaWdnZXIgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnRseSBhY3RpdmUgdHJpZ2dlci4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiTm9uZSJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgb3JpZ2luYWxTdHJpbmcgPSBcIiAgIEhlbGxvLCBXb3JsZCEgICBcIlxuU1RSSU5HIHRyaW1tZWRTdHJpbmcgPSBUcmltKG9yaWdpbmFsU3RyaW5nKVxuLy8gT3JpZ2luYWwgU3RyaW5nOiAnICAgSGVsbG8sIFdvcmxkISAgICdcbi8vIFRyaW1tZWQgU3RyaW5nOiAnSGVsbG8sIFdvcmxkISciLCAibmFtZSI6ICJUcmltIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGlucHV0IHN0cmluZyB3aXRoIHdoaXRlc3BhY2UgcmVtb3ZlZCBmcm9tIGJvdGggdGhlIGJlZ2lubmluZyBhbmQgZW5kLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byB0cmltLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlcnMgcmVtb3ZlZCBmcm9tIGJvdGggaXRzIHN0YXJ0IGFuZCBlbmQuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgb3JpZ2luYWxTdHJpbmcgPSBcIiAgIEhlbGxvLCBXb3JsZCEgICBcIlxuU1RSSU5HIHRyaW1tZWRTdHJpbmcgPSBUcmltKG9yaWdpbmFsU3RyaW5nLCBcIiBcIilcbi8vIE9yaWdpbmFsIFN0cmluZzogXCIgICBIZWxsbywgV29ybGQhICAgXCJcbi8vIFRyaW1tZWQgU3RyaW5nOiBcIkhlbGxvLCBXb3JsZCFcIiIsICJuYW1lIjogIlRyaW0gKFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGEgc3RyaW5nIHdpdGggdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXJzIHJlbW92ZWQgZnJvbSBib3RoIGl0cyBzdGFydCBhbmQgZW5kLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIHN0cmluZyB0byB0cmltLlxuMi4gYFNUUklOR2A6IFRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byByZW1vdmUgZnJvbSBib3RoIGVuZHMuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGdpdmVuIHN0cmluZyB3aXRoIGFsbCBsZWFkaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBvcmlnaW5hbFN0cmluZyA9IFwiICAgSGVsbG8sIFdvcmxkIVwiXG5TVFJJTkcgdHJpbW1lZFN0cmluZyA9IFRyaW1MZWZ0KG9yaWdpbmFsU3RyaW5nKVxuLy8gT3JpZ2luYWwgU3RyaW5nOiAnICAgSGVsbG8sIFdvcmxkISdcbi8vIFRyaW1tZWQgU3RyaW5nOiAnSGVsbG8sIFdvcmxkISciLCAibmFtZSI6ICJUcmltTGVmdCAoU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCBhbGwgbGVhZGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc3RyaW5nIHRvIHRyaW0uIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGdpdmVuIHN0cmluZyB3aXRoIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVycyByZW1vdmVkIGZyb20gdGhlIGJlZ2lubmluZy4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBvcmlnaW5hbFN0cmluZyA9IFwiIyMjSGVsbG9Xb3JsZFwiXG5TVFJJTkcgY2hhcmFjdGVyc1RvVHJpbSA9IFwiI1wiXG5TVFJJTkcgdHJpbW1lZFN0cmluZyA9IFRyaW1MZWZ0KG9yaWdpbmFsU3RyaW5nLCBjaGFyYWN0ZXJzVG9UcmltKVxuXG4vLyBPcmlnaW5hbCBTdHJpbmc6ICMjI0hlbGxvV29ybGRcbi8vIFRyaW1tZWQgU3RyaW5nOiBIZWxsb1dvcmxkIiwgIm5hbWUiOiAiVHJpbUxlZnQgKFNUUklORywgU1RSSU5HKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlcnMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFydC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBzdHJpbmcgdG8gdHJpbS5cbjIuIGBTVFJJTkdgOiBUaGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gcmVtb3ZlIGZyb20gdGhlIGJlZ2lubmluZy4ifSwgeyJyZXR1cm5fdHlwZSI6ICJTVFJJTkciLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggYWxsIHRyYWlsaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBvcmlnaW5hbFN0cmluZyA9IFwiSGVsbG8sIFdvcmxkISAgIFwiXG5TVFJJTkcgdHJpbW1lZFN0cmluZyA9IFRyaW1SaWdodChvcmlnaW5hbFN0cmluZylcbi8vIE9yaWdpbmFsIFN0cmluZzogJ0hlbGxvLCBXb3JsZCEgICAnXG4vLyBUcmltbWVkIFN0cmluZzogJ0hlbGxvLCBXb3JsZCEnIiwgIm5hbWUiOiAiVHJpbVJpZ2h0IChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGlucHV0IHN0cmluZyB3aXRoIGFsbCB0cmFpbGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc3RyaW5nIHRvIHRyaW0uIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGdpdmVuIHN0cmluZyB3aXRoIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVycyByZW1vdmVkIGZyb20gdGhlIGVuZC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBvcmlnaW5hbFN0cmluZyA9IFwiSGVsbG8sIFdvcmxkISEhXCJcblNUUklORyBjaGFyYWN0ZXJzVG9SZW1vdmUgPSBcIiFcIlxuU1RSSU5HIHRyaW1tZWRTdHJpbmcgPSBUcmltUmlnaHQob3JpZ2luYWxTdHJpbmcsIGNoYXJhY3RlcnNUb1JlbW92ZSlcblxuLy8gT3JpZ2luYWwgU3RyaW5nOiBcIiArIG9yaWdpbmFsU3RyaW5nXG4vLyBUcmltbWVkIFN0cmluZzogXCIgKyB0cmltbWVkU3RyaW5nIiwgIm5hbWUiOiAiVHJpbVJpZ2h0IChTVFJJTkcsIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgaW5wdXQgc3RyaW5nIHdpdGggc3BlY2lmaWVkIGNoYXJhY3RlcnMgcmVtb3ZlZCBmcm9tIGl0cyBlbmQuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBTVFJJTkdgOiBUaGUgc3RyaW5nIHRvIHRyaW0uXG4yLiBgU1RSSU5HYDogVGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIHJlbW92ZSBmcm9tIHRoZSBlbmQuIn0sIHsicmV0dXJuX3R5cGUiOiAiVkVDVE9SPFNUUklORz4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGlzdCBvZiBhcHBsaWNhdGlvbiBncm91cHMgY29uZmlndXJlZCBmb3IgdGhlIGdpdmVuIHByaXZhdGUgYXBwLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPFVDRS5Qcml2YXRlQXBwPiBwcml2YXRlQXBwcyA9IFtcIlByaXZhdGVBcHBMaXN0XCJdXG5cblVDRS5Qcml2YXRlQXBwIHRhcmdldEFwcCA9IFwiRXhhbXBsZUFwcFwiXG5cbklGIHRhcmdldEFwcCBJTiBwcml2YXRlQXBwcyBUSEVOIHtcbiAgICAvLyBUYXJnZXQgYXBwbGljYXRpb24gaXMgaW4gdGhlIGxpc3Qgb2YgcHJpdmF0ZSBhcHBzLlxuICAgIE1XRy5BbGxvdyhcIlByaXZhdGVBcHBBbGxvd2VkXCIpXG59IEVMU0Uge1xuICAgIC8vIFRhcmdldCBhcHBsaWNhdGlvbiBpcyBub3QgaW4gdGhlIGxpc3Qgb2YgcHJpdmF0ZSBhcHBzLlxuICAgIE1XRy5CbG9jayhcIlByaXZhdGVBcHBCbG9ja2VkXCIpXG59IiwgIm5hbWUiOiAiVUNFLkFwcEdyb3VwcyAoVUNFLlByaXZhdGVBcHApIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBgVkVDVE9SPFNUUklORz5gIGNvbnRhaW5pbmcgdGhlIGNvbmZpZ3VyZWQgYXBwbGljYXRpb24gZ3JvdXBzIGZvciB0aGUgZ2l2ZW4gcHJpdmF0ZSBhcHAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBVQ0UuUHJpdmF0ZUFwcGA6IFRoZSBwcml2YXRlIGFwcGxpY2F0aW9uIHRvIHF1ZXJ5LiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBsaXN0IG9mIGRldmljZSBwcm9maWxlcyBjb250YWlucyBhIHByb2ZpbGUgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSBnaXZlbiBuYW1lLCB1c2luZyBhIGNhc2UtaW5zZW5zaXRpdmUgY29tcGFyaXNvbi4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxVQ0UuRGV2aWNlUHJvZmlsZT4gZGV2aWNlUHJvZmlsZXMgPSBbXCJhbGxvd2VkX3Byb2ZpbGVzXCJdXG5TVFJJTkcgcHJvZmlsZVRvQ2hlY2sgPSBcImV4YW1wbGVfcHJvZmlsZVwiXG5cbklGIFVDRS5Db250YWluc1Byb2ZpbGUoZGV2aWNlUHJvZmlsZXMsIHByb2ZpbGVUb0NoZWNrKSBUSEVOIHtcbiAgICAvLyBQcm9maWxlIGlzIGFsbG93ZWRcbiAgICBNV0cuQWxsb3coXCJQcm9maWxlQ2hlY2tcIilcbn0gRUxTRSB7XG4gICAgLy8gUHJvZmlsZSBpcyBub3QgYWxsb3dlZFxuICAgIE1XRy5CbG9jayhcIlByb2ZpbGVDaGVja1wiKVxufSIsICJuYW1lIjogIlVDRS5Db250YWluc1Byb2ZpbGUgKFZFQ1RPUjxVQ0UuRGV2aWNlUHJvZmlsZT4sIFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIGxpc3Qgb2YgZGV2aWNlIHByb2ZpbGVzIGNvbnRhaW5zIGEgcHJvZmlsZSB3aG9zZSBuYW1lIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBuYW1lIChjYXNlLWluc2Vuc2l0aXZlKSwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBWRUNUT1I8VUNFLkRldmljZVByb2ZpbGU+YDogVGhlIGxpc3Qgb2YgZGV2aWNlIHByb2ZpbGVzIHRvIHNlYXJjaC5cbjIuIGBTVFJJTkdgOiBUaGUgbmFtZSBvZiB0aGUgcHJvZmlsZSB0byBmaW5kLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIEVncmVzcyBJUCBmb3IgdGhlIGdpdmVuIElEIHdhcyBmb3VuZCBpbiB0aGUgY3VzdG9tZXIgcmVzb3VyY2UuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgZWdyZXNzSUQgPSBcImN1c3RvbV9lZ3Jlc3NfaWRcIlxuXG4vLyBBcHBseSB0aGUgY3VzdG9tIGVncmVzcyBJUFxuVUNFLkFwcGx5Q3VzdG9tRWdyZXNzKGVncmVzc0lEKVxuXG4vLyBBcHBsaWVkIGN1c3RvbSBlZ3Jlc3Mgd2l0aCBJRDogXCIgKyBlZ3Jlc3NJRCIsICJuYW1lIjogIlVDRS5DdXN0b21FZ3Jlc3NBdmFpbGFibGUgKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIEVncmVzcyBJUCBmb3IgdGhlIGdpdmVuIElEIHdhcyBmb3VuZCBpbiB0aGUgY3VzdG9tZXIgcmVzb3VyY2UsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgU1RSSU5HYDogVGhlIGVncmVzcyBJRCB0byBsb29rIHVwLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHByaXZhdGUgYXBwIHJlcXVpcmVzIGRvdWJsZSBlbmNyeXB0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiVUNFLlByaXZhdGVBcHAgcHJpdmF0ZUFwcEluc3RhbmNlXG5CT09MRUFOIHJlcXVpcmVzRG91YmxlRW5jcnlwdGlvbiA9IFVDRS5Eb3VibGVFbmNyeXB0KHByaXZhdGVBcHBJbnN0YW5jZSlcblxuSUYgcmVxdWlyZXNEb3VibGVFbmNyeXB0aW9uIFRIRU4ge1xuICAgIC8vIFRoZSBwcml2YXRlIGFwcCByZXF1aXJlcyBkb3VibGUgZW5jcnlwdGlvbi5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIHByaXZhdGUgYXBwIGRvZXMgbm90IHJlcXVpcmUgZG91YmxlIGVuY3J5cHRpb24uXG59IiwgIm5hbWUiOiAiVUNFLkRvdWJsZUVuY3J5cHQgKFVDRS5Qcml2YXRlQXBwKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgcHJpdmF0ZSBhcHAgcmVxdWlyZXMgZG91YmxlIGVuY3J5cHRpb24sIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVUNFLlByaXZhdGVBcHBgOiBUaGUgcHJpdmF0ZSBhcHBsaWNhdGlvbiB0byBjaGVjay4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBwcml2YXRlIGFwcCBjYW4gYmUgYWNjZXNzZWQgdmlhIGJyb3dzZXIuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgVUNFLlByaXZhdGVBcHBcblVDRS5Qcml2YXRlQXBwIHByaXZhdGVBcHBJbnN0YW5jZSA9IC4uLiAvLyBJbml0aWFsaXplIHRoaXMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgcHJpdmF0ZSBhcHAgaW5zdGFuY2VcblxuLy8gQ2hlY2sgaWYgdGhlIHByaXZhdGUgYXBwbGljYXRpb24gaXMgYWNjZXNzaWJsZSB0aHJvdWdoIGEgYnJvd3NlclxuQk9PTEVBTiBpc0FjY2Vzc2libGUgPSBVQ0UuR2V0QnJvd3NlckFjY2Vzcyhwcml2YXRlQXBwSW5zdGFuY2UpXG5cbi8vIFBlcmZvcm0gYWN0aW9ucyBiYXNlZCBvbiB0aGUgYWNjZXNzaWJpbGl0eVxuSUYgaXNBY2Nlc3NpYmxlIFRIRU4ge1xuICAgIC8vIFRoZSBwcml2YXRlIGFwcGxpY2F0aW9uIGlzIGFjY2Vzc2libGUgdGhyb3VnaCBhIGJyb3dzZXIuXG4gICAgLy8gQWRkaXRpb25hbCBsb2dpYyBmb3IgYWNjZXNzaWJsZSBwcml2YXRlIGFwcFxufSBFTFNFIHtcbiAgICAvLyBUaGUgcHJpdmF0ZSBhcHBsaWNhdGlvbiBpcyBub3QgYWNjZXNzaWJsZSB0aHJvdWdoIGEgYnJvd3Nlci5cbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGZvciBub24tYWNjZXNzaWJsZSBwcml2YXRlIGFwcFxufSIsICJuYW1lIjogIlVDRS5HZXRCcm93c2VyQWNjZXNzIChVQ0UuUHJpdmF0ZUFwcCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIHByaXZhdGUgYXBwbGljYXRpb24gaXMgYWNjZXNzaWJsZSB0aHJvdWdoIGEgYnJvd3Nlciwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBVQ0UuUHJpdmF0ZUFwcGA6IFRoZSBwcml2YXRlIGFwcGxpY2F0aW9uIHRvIGNoZWNrLiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBJRCBvZiB0aGUgYE1XRy5DbGllbnRDb250ZXh0UmV2UHJveHlTZXR0aW5nYCBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2l2ZW4gcHJpdmF0ZSBhcHAuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBEZWZpbmUgYSB2YXJpYWJsZSB0byBob2xkIHRoZSBwcml2YXRlIGFwcCBjb25maWd1cmF0aW9uXG5VQ0UuUHJpdmF0ZUFwcCBwcml2YXRlQXBwQ29uZmlnXG5cbi8vIENhbGwgdGhlIFVDRS5HZXRDZXJ0Q29uZmlnIGZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBjZXJ0aWZpY2F0ZSBjb25maWd1cmF0aW9uXG5wcml2YXRlQXBwQ29uZmlnID0gVUNFLkdldENlcnRDb25maWcoKVxuXG4vLyBDaGVjayBpZiB0aGUgY29uZmlndXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZFxuSUYgcHJpdmF0ZUFwcENvbmZpZyAhPSBOVUxMIFRIRU4ge1xuICAgIC8vIENlcnRpZmljYXRlIENvbmZpZ3VyYXRpb24gUmV0cmlldmVkOiBcbiAgICAvLyBwcml2YXRlQXBwQ29uZmlnXG59IEVMU0Uge1xuICAgIC8vIEZhaWxlZCB0byByZXRyaWV2ZSBjZXJ0aWZpY2F0ZSBjb25maWd1cmF0aW9uLlxufSIsICJuYW1lIjogIlVDRS5HZXRDZXJ0Q29uZmlnIChVQ0UuUHJpdmF0ZUFwcCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgSUQgb2YgdGhlIGBNV0cuQ2xpZW50Q29udGV4dFJldlByb3h5U2V0dGluZ2AgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdpdmVuIHByaXZhdGUgYXBwIGFzIGEgc3RyaW5nLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVUNFLlByaXZhdGVBcHBgOiBUaGUgcHJpdmF0ZSBhcHBsaWNhdGlvbiB0byBxdWVyeS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJWRUNUT1I8VUNFLkRldmljZVByb2ZpbGU+IiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGRldmljZSBwcm9maWxlcyBvZiB0aGUgY2xpZW50IChNQ1ApIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8VUNFLkRldmljZVByb2ZpbGU+IGRldmljZVByb2ZpbGVzID0gVUNFLkdldENsaWVudERldmljZVByb2ZpbGVzKClcblxuLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBkZXZpY2UgcHJvZmlsZXMgYW5kIHByaW50IGVhY2ggb25lXG5GT1IgRUFDSCBwcm9maWxlIElOIGRldmljZVByb2ZpbGVzIHtcbiAgICAvLyBEZXZpY2UgUHJvZmlsZTogXCIgKyBwcm9maWxlXG59IiwgIm5hbWUiOiAiVUNFLkdldENsaWVudERldmljZVByb2ZpbGVzICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGRldmljZSBwcm9maWxlcyBvZiB0aGUgY2xpZW50IChNQ1ApLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkpTT04iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCB0aGUgb3V0Ym91bmQgY29ubmVjdGlvbiBmb3IgdGhlIGdpdmVuIGlkZW50aWZpZXIuIiwgImNvZGVfZXhhbXBsZSI6ICJTVFJJTkcgZGVzdGluYXRpb24gPSBcImV4YW1wbGUuY29tXCJcbkpTT04gY29ubmVjdGlvbkluZm8gPSBVQ0UuR2V0T3V0Ym91bmRDb25uZWN0aW9uSW5mbyhkZXN0aW5hdGlvbilcbi8vIE91dGJvdW5kIENvbm5lY3Rpb24gSW5mbzogXCIgKyBjb25uZWN0aW9uSW5mby50b1N0cmluZygpIiwgIm5hbWUiOiAiVUNFLkdldE91dGJvdW5kQ29ubmVjdGlvbkluZm8gKFNUUklORykiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCB0aGUgb3V0Ym91bmQgY29ubmVjdGlvbi4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBkZXN0aW5hdGlvbiBvciBjb25uZWN0aW9uIGlkZW50aWZpZXIgdG8gZ2V0IG91dGJvdW5kIGNvbm5lY3Rpb24gZGV0YWlscyBmb3IuIn0sIHsicmV0dXJuX3R5cGUiOiAiVUNFLlByaXZhdGVBcHAiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgZGV0ZWN0ZWQgcHJpdmF0ZSBhcHAiLCAiY29kZV9leGFtcGxlIjogIlVDRS5Qcml2YXRlQXBwIHByaXZhdGVBcHAgPSBVQ0UuR2V0UHJpdmF0ZUFwcCgpXG5cbklGIHByaXZhdGVBcHAgIT0gTlVMTCBUSEVOIHtcbiAgICAvLyBQcml2YXRlIEFwcCBkZXRlY3RlZDogXCIgKyBwcml2YXRlQXBwXG4gICAgLy8gQWRkaXRpb25hbCBsb2dpYyBmb3IgaGFuZGxpbmcgdGhlIHByaXZhdGUgYXBwIGNhbiBiZSBhZGRlZCBoZXJlXG59IEVMU0Uge1xuICAgIC8vIE5vIFByaXZhdGUgQXBwIGRldGVjdGVkLlxufSIsICJuYW1lIjogIlVDRS5HZXRQcml2YXRlQXBwICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGRldGVjdGVkIHByaXZhdGUgYXBwLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBjb25maWd1cmVkIHByb3RvY29sIG9mIHRoZSBnaXZlbiBwcml2YXRlIGFwcC4iLCAiY29kZV9leGFtcGxlIjogIi8vIEFzc3VtZSB3ZSBoYXZlIGEgVUNFLlByaXZhdGVBcHAgb2JqZWN0IG5hbWVkIHByaXZhdGVBcHBcblVDRS5Qcml2YXRlQXBwIHByaXZhdGVBcHAgPSAuLi4gLy8gSW5pdGlhbGl6ZSBvciBvYnRhaW4gdGhlIHByaXZhdGVBcHAgb2JqZWN0XG5cbi8vIFJldHJpZXZlIHRoZSBwcm90b2NvbCBjb25maWd1cmF0aW9uIG9mIHRoZSBwcml2YXRlIGFwcFxuU1RSSU5HIHByb3RvY29sID0gVUNFLkdldFByb3RvY29sKHByaXZhdGVBcHApXG5cbi8vIFRoZSBwcm90b2NvbCBjb25maWd1cmF0aW9uIG9mIHRoZSBwcml2YXRlIGFwcCBpczogXCIgKyBwcm90b2NvbFxuLy8gd2FzIHByaW50ZWQgdG8gdGhlIGNvbnNvbGUgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyIsICJuYW1lIjogIlVDRS5HZXRQcm90b2NvbCAoVUNFLlByaXZhdGVBcHApIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIHByb3RvY29sIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHNwZWNpZmllZCBwcml2YXRlIGFwcGxpY2F0aW9uLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVUNFLlByaXZhdGVBcHBgOiBUaGUgcHJpdmF0ZSBhcHBsaWNhdGlvbiB0byBxdWVyeS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJOVU1CRVIiLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgY3VzdG9tIHNoYWRvdyBJVCB0YWcgSUQuIiwgImNvZGVfZXhhbXBsZSI6ICJOVU1CRVIgVUNFLkdldFRhZ0lEKClcbk5VTUJFUiB0YWdJZCA9IFVDRS5HZXRUYWdJRFxuQk9PTEVBTiBoYXNDdXN0b21UYWcgPSB0YWdJZCA+IDBcblNUUklORyBkZWNpc2lvbiA9IFwiTm8gY3VzdG9tIHNoYWRvdyBJVCB0YWcgYXNzaWduZWRcIlxuSUYgKGhhc0N1c3RvbVRhZykgVEhFTiB7XG4gIGRlY2lzaW9uID0gXCJUYWdnZWQgc2hhZG93IElUIGFwcCBkZXRlY3RlZFwiXG59IiwgIm5hbWUiOiAiVUNFLkdldFRhZ0lEICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGN1c3RvbSBzaGFkb3cgSVQgdGFnIElEIGFzIGEgbnVtYmVyLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZ2l2ZW4gcHJpdmF0ZSBhcHAgYXMgYSBzdHJpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBBc3N1bWUgd2UgaGF2ZSBhIFVDRS5Qcml2YXRlQXBwIGluc3RhbmNlIG5hbWVkIHByaXZhdGVBcHBJbnN0YW5jZVxuVUNFLlByaXZhdGVBcHAgcHJpdmF0ZUFwcEluc3RhbmNlID0gLi4uIC8vIEluaXRpYWxpemUgb3Igb2J0YWluIHRoZSBwcml2YXRlIGFwcCBpbnN0YW5jZVxuXG4vLyBHZXQgdGhlIElEIG9mIHRoZSBwcml2YXRlIGFwcFxuU1RSSU5HIHByaXZhdGVBcHBJRCA9IFVDRS5JRChwcml2YXRlQXBwSW5zdGFuY2UpXG5cbi8vIFRoZSBJRCBvZiB0aGUgcHJpdmF0ZSBhcHAgaXM6IFwiICsgcHJpdmF0ZUFwcElEIiwgIm5hbWUiOiAiVUNFLklEIChVQ0UuUHJpdmF0ZUFwcCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBwcml2YXRlIGFwcC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFVDRS5Qcml2YXRlQXBwYDogVGhlIHByaXZhdGUgYXBwbGljYXRpb24gdG8gcXVlcnkuIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHR3by1jaGFyYWN0ZXIgY291bnRyeSBjb2RlIG9mIHRoZSBJbmdyZXNzIFBPUC4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBjb3VudHJ5Q29kZSA9IFVDRS5JbmdyZXNzQ291bnRyeSgpXG5cbklGIGNvdW50cnlDb2RlID09IFwiVVNcIiBUSEVOIHtcbiAgICAvLyBJbmdyZXNzIGNvdW50cnkgaXMgdGhlIFVuaXRlZCBTdGF0ZXMuXG4gICAgTVdHLkFsbG93KFwiSW5ncmVzcyBmcm9tIFVTXCIpXG59IEVMU0Uge1xuICAgIC8vIEluZ3Jlc3MgY291bnRyeSBpcyBub3QgdGhlIFVuaXRlZCBTdGF0ZXMuXG4gICAgTVdHLkJsb2NrKFwiQWNjZXNzIGJsb2NrZWQgZm9yIG5vbi1VUyBpbmdyZXNzXCIpXG59IiwgIm5hbWUiOiAiVUNFLkluZ3Jlc3NDb3VudHJ5ICgpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYSBzdHJpbmcgb2YgMiBjaGFyYWN0ZXJzIGlkZW50aWZ5aW5nIHRoZSBjb3VudHJ5IGNvZGUgb2YgdGhlIEluZ3Jlc3MgUE9QLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIqTi9BKiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGNvYWNoaW5nIHNlc3Npb24gd2l0aCB0aGUgZ2l2ZW4gSUQgaXMgY3VycmVudGx5IGFjdGl2ZS4iLCAiY29kZV9leGFtcGxlIjogIlNUUklORyBzZXNzaW9uSUQgPSBcIjEyMzQ1XCJcbkJPT0xFQU4gaXNBY3RpdmUgPSBVQ0UuSXNDb2FjaGluZ1Nlc3Npb25BY3RpdmUoc2Vzc2lvbklEKVxuXG5JRiBpc0FjdGl2ZSBUSEVOIHtcbiAgICAvLyBcIkNvYWNoaW5nIHNlc3Npb24gd2l0aCBJRCBcIiArIHNlc3Npb25JRCArIFwiIGlzIGN1cnJlbnRseSBhY3RpdmUuXCJcbn0gRUxTRSB7XG4gICAgLy8gXCJDb2FjaGluZyBzZXNzaW9uIHdpdGggSUQgXCIgKyBzZXNzaW9uSUQgKyBcIiBpcyBub3QgYWN0aXZlLlwiXG59IiwgIm5hbWUiOiAiVUNFLklzQ29hY2hpbmdTZXNzaW9uQWN0aXZlIChTVFJJTkcpIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgYFRSVUVgIGlmIGEgY29hY2hpbmcgc2Vzc2lvbiB3aXRoIHRoZSBnaXZlbiBJRCBpcyBjdXJyZW50bHkgYWN0aXZlLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFNUUklOR2A6IFRoZSBJRCBvZiB0aGUgY29hY2hpbmcgc2Vzc2lvbi4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBnaXZlbiBwcml2YXRlIGFwcGxpY2F0aW9uIGlzIG1hcmtlZCBmb3IgaXNvbGF0aW9uLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHByaXZhdGVBcHAgaXMgb2J0YWluZWQgZnJvbSBzb21lIGNvbnRleHQgb3IgaW5pdGlhbGl6YXRpb25cblVDRS5Qcml2YXRlQXBwIHByaXZhdGVBcHAgPSAvLyBJbml0aWFsaXphdGlvbiBvciBjb250ZXh0LXNwZWNpZmljIGNvZGUgdG8gZ2V0IHRoZSBwcml2YXRlIGFwcFxuXG4vLyBDaGVjayBpZiB0aGUgcHJpdmF0ZSBhcHAgaXMgbWFya2VkIGZvciBSQklcbklGIFVDRS5Jc01hcmtlZEZvclJCSShwcml2YXRlQXBwKSBUSEVOIHtcbiAgICAvLyBUaGUgcHJpdmF0ZSBhcHAgaXMgbWFya2VkIGZvciBSQkkuXG4gICAgLy8gQWRkaXRpb25hbCBsb2dpYyBmb3IgaGFuZGxpbmcgUkJJLW1hcmtlZCBwcml2YXRlIGFwcHNcbn0gRUxTRSB7XG4gICAgLy8gVGhlIHByaXZhdGUgYXBwIGlzIG5vdCBtYXJrZWQgZm9yIFJCSS5cbiAgICAvLyBBZGRpdGlvbmFsIGxvZ2ljIGZvciBoYW5kbGluZyBub24tUkJJLW1hcmtlZCBwcml2YXRlIGFwcHNcbn0iLCAibmFtZSI6ICJVQ0UuSXNNYXJrZWRGb3JSQkkgKFVDRS5Qcml2YXRlQXBwKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgY29ubmVjdGlvbiB0byB0aGUgZ2l2ZW4gcHJpdmF0ZSBhcHBsaWNhdGlvbiBpcyBtYXJrZWQgZm9yIGlzb2xhdGlvbiwgb3RoZXJ3aXNlIGBGQUxTRWAuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBVQ0UuUHJpdmF0ZUFwcGA6IFRoZSBwcml2YXRlIGFwcGxpY2F0aW9uIHRvIGNoZWNrLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIG9iamVjdCByZXByZXNlbnRzIGEgZGV0ZWN0ZWQgcHJpdmF0ZSBhcHAuIiwgImNvZGVfZXhhbXBsZSI6ICIvLyBHZXQgdGhlIGRldGVjdGVkIHByaXZhdGUgYXBwXG5VQ0UuUHJpdmF0ZUFwcCBwcml2YXRlQXBwID0gVUNFLkdldFByaXZhdGVBcHAoKVxuXG4vLyBDaGVjayBpZiB0aGUgZGV0ZWN0ZWQgYXBwIGlzIGEgcHJpdmF0ZSBhcHBcbklGIFVDRS5Jc1ByaXZhdGVBcHAocHJpdmF0ZUFwcCkgVEhFTiB7XG4gICAgLy8gUGVyZm9ybSBhY3Rpb25zIGlmIGl0IGlzIGEgcHJpdmF0ZSBhcHBcbiAgICAvLyBEZXRlY3RlZCBhIHByaXZhdGUgYXBwOiBcIiArIHByaXZhdGVBcHBcbiAgICBNV0cuQmxvY2soXCJBY2Nlc3MgdG8gcHJpdmF0ZSBhcHBzIGlzIG5vdCBhbGxvd2VkXCIpXG59IEVMU0Uge1xuICAgIC8vIEFsbG93IHRoZSBjb25uZWN0aW9uIGlmIGl0IGlzIG5vdCBhIHByaXZhdGUgYXBwXG4gICAgTVdHLkFsbG93KFwiTm8gcHJpdmF0ZSBhcHAgZGV0ZWN0ZWRcIilcbn0iLCAibmFtZSI6ICJVQ0UuSXNQcml2YXRlQXBwIChVQ0UuUHJpdmF0ZUFwcCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgdGhlIGdpdmVuIG9iamVjdCByZXByZXNlbnRzIGEgZGV0ZWN0ZWQgcHJpdmF0ZSBhcHAsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVUNFLlByaXZhdGVBcHBgOiBUaGUgcHJpdmF0ZSBhcHBsaWNhdGlvbiB0byBjaGVjay4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBnaXZlbiBwcml2YXRlIGFwcGxpY2F0aW9uIHVzZXMgc3RpY2t5IHJvdXRpbmcuIiwgImNvZGVfZXhhbXBsZSI6ICJST1VUSU5FIGV4YW1wbGUgT04gKCkge1xuICBVQ0UuUHJpdmF0ZUFwcCBwcml2YXRlQXBwXG4gIEJPT0xFQU4gc3RpY2t5Um91dGluZ0VuYWJsZWQgPSBVQ0UuSXNTdGlja3kocHJpdmF0ZUFwcClcbiAgSUYgc3RpY2t5Um91dGluZ0VuYWJsZWQgVEhFTiB7XG4gICAgRVhJVFxuICB9XG59IiwgIm5hbWUiOiAiVUNFLklzU3RpY2t5IChVQ0UuUHJpdmF0ZUFwcCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgc3RpY2t5IHJvdXRpbmcgaXMgZW5hYmxlZCBmb3IgdGhlIGdpdmVuIHByaXZhdGUgYXBwLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFVDRS5Qcml2YXRlQXBwYDogVGhlIHByaXZhdGUgYXBwbGljYXRpb24gdG8gY2hlY2suIn0sIHsicmV0dXJuX3R5cGUiOiAiTlVNQkVSIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG51bWJlciBvZiBsaWNlbnNlZCBzZWF0cy4iLCAiY29kZV9leGFtcGxlIjogIk5VTUJFUiBsaWNlbnNlZFNlYXRzID0gVUNFLkxpY2Vuc2VkU2VhdHMoKVxuLy8gVGhlIG51bWJlciBvZiBsaWNlbnNlZCBzZWF0cyBpczogXCIgKyBsaWNlbnNlZFNlYXRzXG5cbklGIGxpY2Vuc2VkU2VhdHMgPCAxMCBUSEVOIHtcbiAgICAvLyBXYXJuaW5nOiBUaGUgbnVtYmVyIG9mIGxpY2Vuc2VkIHNlYXRzIGlzIGJlbG93IHRoZSB0aHJlc2hvbGQuXG59IiwgIm5hbWUiOiAiVUNFLkxpY2Vuc2VkU2VhdHMgKCkiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyB0aGUgY291bnQgb2YgbGljZW5zZWQgc2VhdHMgYXMgYSBudW1iZXIuIiwgInBhcmFtZXRlcl9kZXNjIjogIipOL0EqIn0sIHsicmV0dXJuX3R5cGUiOiAiU1RSSU5HIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGdpdmVuIHByaXZhdGUgYXBwIGFzIGEgc3RyaW5nLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYW4gaW5zdGFuY2Ugb2YgVUNFLlByaXZhdGVBcHBcblVDRS5Qcml2YXRlQXBwIHByaXZhdGVBcHBJbnN0YW5jZSA9IC4uLiAvLyBJbml0aWFsaXplIG9yIG9idGFpbiB0aGUgcHJpdmF0ZSBhcHAgaW5zdGFuY2VcblxuLy8gR2V0IHRoZSBuYW1lIG9mIHRoZSBwcml2YXRlIGFwcFxuU1RSSU5HIGFwcE5hbWUgPSBVQ0UuTmFtZShwcml2YXRlQXBwSW5zdGFuY2UpXG5cbi8vIFRoZSBuYW1lIG9mIHRoZSBwcml2YXRlIGFwcCBpczogXCIgKyBhcHBOYW1lIiwgIm5hbWUiOiAiVUNFLk5hbWUgKFVDRS5Qcml2YXRlQXBwKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpZWQgcHJpdmF0ZSBhcHAgYXMgYSBzdHJpbmcuIiwgInBhcmFtZXRlcl9kZXNjIjogIjEuIGBVQ0UuUHJpdmF0ZUFwcGA6IFRoZSBwcml2YXRlIGFwcGxpY2F0aW9uIHRvIHF1ZXJ5LiJ9LCB7InJldHVybl90eXBlIjogIlNUUklORyIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjb25uZWN0b3IgaW5zdGFuY2UgY3VycmVudGx5IGluIHVzZSBmb3IgdGhlIGdpdmVuIHByaXZhdGUgYXBwLiIsICJjb2RlX2V4YW1wbGUiOiAiLy8gQXNzdW1lIHdlIGhhdmUgYW4gaW5zdGFuY2Ugb2YgVUNFLlByaXZhdGVBcHBcblVDRS5Qcml2YXRlQXBwIG15UHJpdmF0ZUFwcCA9IEdldFByaXZhdGVBcHBJbnN0YW5jZSgpXG5cbi8vIFJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZSB1c2VkIGNvbm5lY3RvclxuU1RSSU5HIGNvbm5lY3Rvck5hbWUgPSBVQ0UuVXNlZENvbm5lY3RvcihteVByaXZhdGVBcHApXG5cbi8vIFRoZSB1c2VkIGNvbm5lY3RvciBpczogY29ubmVjdG9yTmFtZVxuXG4vLyBEdW1teSBmdW5jdGlvbiB0byBzaW11bGF0ZSBnZXR0aW5nIGEgcHJpdmF0ZSBhcHAgaW5zdGFuY2VcblVDRS5Qcml2YXRlQXBwIEdldFByaXZhdGVBcHBJbnN0YW5jZSgpIHtcbiAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgdGhlIHByaXZhdGUgYXBwIGluc3RhbmNlXG4gICAgLy8gVGhpcyBpcyBqdXN0IGEgcGxhY2Vob2xkZXIgZm9yIHRoZSBhY3R1YWwgbG9naWNcbiAgICBVQ0UuUHJpdmF0ZUFwcCBhcHBJbnN0YW5jZVxuICAgIC8vIC4uLiBwb3B1bGF0ZSBhcHBJbnN0YW5jZSAuLi5cbiAgICByZXR1cm4gYXBwSW5zdGFuY2Vcbn0iLCAibmFtZSI6ICJVQ0UuVXNlZENvbm5lY3RvciAoVUNFLlByaXZhdGVBcHApIiwgInJldHVybl9kZXNjIjogIlJldHVybnMgdGhlIGluc3RhbmNlIG5hbWUgb2YgdGhlIGNvbm5lY3RvciBjdXJyZW50bHkgaW4gdXNlIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHByaXZhdGUgYXBwLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVUNFLlByaXZhdGVBcHBgOiBUaGUgcHJpdmF0ZSBhcHBsaWNhdGlvbiB0byBxdWVyeS4ifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIHRoZSBwb2xpY3kgaXMgY3VycmVudGx5IGluIHRoZSBwcmVydW4gcGhhc2UuIiwgImNvZGVfZXhhbXBsZSI6ICJJRiBVdGlscy5Jc0luUHJlUnVuKCkgVEhFTiB7XG4gICAgLy8gVGhlIGN1cnJlbnQgc3RhdGUgaXMgcG9saWN5IHByZXJ1bi5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIGN1cnJlbnQgc3RhdGUgaXMgbm90IHBvbGljeSBwcmVydW4uXG59IiwgIm5hbWUiOiAiVXRpbHMuSXNJblByZVJ1biAoKSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiB0aGUgY3VycmVudCBzdGF0ZSBpcyBwb2xpY3kgcHJlcnVuLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiKk4vQSoifSwgeyJyZXR1cm5fdHlwZSI6ICJCT09MRUFOIiwgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYFRSVUVgIGlmIGJvdGggdmVjdG9ycyBjb250YWluIGV4YWN0bHkgdGhlIHNhbWUgZWxlbWVudHMgcmVnYXJkbGVzcyBvZiBvcmRlci4iLCAiY29kZV9leGFtcGxlIjogIlZFQ1RPUjxNZWRpYVR5cGU+IG1lZGlhVHlwZXMxID0gXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiYXBwbGljYXRpb24vcGRmXCJcblZFQ1RPUjxNZWRpYVR5cGU+IG1lZGlhVHlwZXMyID0gXCJhcHBsaWNhdGlvbi9wZGZcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9qcGVnXCJcblxuQk9PTEVBTiBhcmVFcXVhbCA9IFZlY3RvclV0aWxzLkVxdWFsc0lnbm9yZU9yZGVyKG1lZGlhVHlwZXMxLCBtZWRpYVR5cGVzMilcblxuSUYgYXJlRXF1YWwgVEhFTiB7XG4gICAgLy8gVGhlIG1lZGlhIHR5cGVzIGFyZSBlcXVhbC5cbn0gRUxTRSB7XG4gICAgLy8gVGhlIG1lZGlhIHR5cGVzIGFyZSBub3QgZXF1YWwuXG59IiwgIm5hbWUiOiAiVmVjdG9yVXRpbHMuRXF1YWxzSWdub3JlT3JkZXIgKFZFQ1RPUjxNZWRpYVR5cGU+LCBWRUNUT1I8TWVkaWFUeXBlPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgYm90aCB2ZWN0b3JzIGNvbnRhaW4gZXhhY3RseSB0aGUgc2FtZSBlbGVtZW50cyByZWdhcmRsZXNzIG9mIG9yZGVyLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxNZWRpYVR5cGU+YDogVGhlIGZpcnN0IGxpc3QgdG8gY29tcGFyZS5cbjIuIGBWRUNUT1I8TWVkaWFUeXBlPmA6IFRoZSBzZWNvbmQgbGlzdCB0byBjb21wYXJlLiJ9LCB7InJldHVybl90eXBlIjogIkJPT0xFQU4iLCAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBgVFJVRWAgaWYgYm90aCB2ZWN0b3JzIGNvbnRhaW4gZXhhY3RseSB0aGUgc2FtZSBlbGVtZW50cyByZWdhcmRsZXNzIG9mIG9yZGVyLiIsICJjb2RlX2V4YW1wbGUiOiAiVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4gY2F0ZWdvcnlMaXN0MSA9IFtcIkNhdGVnb3J5TGlzdDFcIl1cblZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+IGNhdGVnb3J5TGlzdDIgPSBbXCJDYXRlZ29yeUxpc3QyXCJdXG5cbklGIFZlY3RvclV0aWxzLkVxdWFsc0lnbm9yZU9yZGVyKGNhdGVnb3J5TGlzdDEsIGNhdGVnb3J5TGlzdDIpIFRIRU4ge1xuICAgIC8vIFRoZSBVUkwgY2F0ZWdvcmllcyBpbiBib3RoIGxpc3RzIGFyZSB0aGUgc2FtZSwgaWdub3Jpbmcgb3JkZXIuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBVUkwgY2F0ZWdvcmllcyBpbiB0aGUgbGlzdHMgYXJlIGRpZmZlcmVudC5cbn0iLCAibmFtZSI6ICJWZWN0b3JVdGlscy5FcXVhbHNJZ25vcmVPcmRlciAoVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT4sIFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+KSIsICJyZXR1cm5fZGVzYyI6ICJSZXR1cm5zIGBUUlVFYCBpZiBib3RoIHZlY3RvcnMgY29udGFpbiBleGFjdGx5IHRoZSBzYW1lIGVsZW1lbnRzIHJlZ2FyZGxlc3Mgb2Ygb3JkZXIsIG90aGVyd2lzZSBgRkFMU0VgLiIsICJwYXJhbWV0ZXJfZGVzYyI6ICIxLiBgVkVDVE9SPE1XRy5VcmxDYXRlZ29yeT5gOiBUaGUgZmlyc3QgbGlzdCB0byBjb21wYXJlLlxuMi4gYFZFQ1RPUjxNV0cuVXJsQ2F0ZWdvcnk+YDogVGhlIHNlY29uZCBsaXN0IHRvIGNvbXBhcmUuIn0sIHsicmV0dXJuX3R5cGUiOiAiQk9PTEVBTiIsICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGBUUlVFYCBpZiBib3RoIHZlY3RvcnMgY29udGFpbiBleGFjdGx5IHRoZSBzYW1lIGVsZW1lbnRzIHJlZ2FyZGxlc3Mgb2Ygb3JkZXIuIiwgImNvZGVfZXhhbXBsZSI6ICJWRUNUT1I8TmV0LklQPiB2ZWN0b3IxID0gXCIxOTIuMTY4LjEuMVwiLCBcIjE5Mi4xNjguMS4yXCIsIFwiMTkyLjE2OC4xLjNcIlxuVkVDVE9SPE5ldC5JUD4gdmVjdG9yMiA9IFwiMTkyLjE2OC4xLjNcIiwgXCIxOTIuMTY4LjEuMVwiLCBcIjE5Mi4xNjguMS4yXCJcblxuQk9PTEVBTiBhcmVFcXVhbCA9IFZlY3RvclV0aWxzLkVxdWFsc0lnbm9yZU9yZGVyKHZlY3RvcjEsIHZlY3RvcjIpXG5cbklGIGFyZUVxdWFsIFRIRU4ge1xuICAgIC8vIFRoZSBJUCB2ZWN0b3JzIGFyZSBlcXVhbCwgaWdub3Jpbmcgb3JkZXIuXG59IEVMU0Uge1xuICAgIC8vIFRoZSBJUCB2ZWN0b3JzIGFyZSBub3QgZXF1YWwuXG59IiwgIm5hbWUiOiAiVmVjdG9yVXRpbHMuRXF1YWxzSWdub3JlT3JkZXIgKFZFQ1RPUjxOZXQuSVA+LCBWRUNUT1I8TmV0LklQPikiLCAicmV0dXJuX2Rlc2MiOiAiUmV0dXJucyBgVFJVRWAgaWYgYm90aCB2ZWN0b3JzIGNvbnRhaW4gZXhhY3RseSB0aGUgc2FtZSBlbGVtZW50cyByZWdhcmRsZXNzIG9mIG9yZGVyLCBvdGhlcndpc2UgYEZBTFNFYC4iLCAicGFyYW1ldGVyX2Rlc2MiOiAiMS4gYFZFQ1RPUjxOZXQuSVA+YDogVGhlIGZpcnN0IGxpc3QgdG8gY29tcGFyZS5cbjIuIGBWRUNUT1I8TmV0LklQPmA6IFRoZSBzZWNvbmQgbGlzdCB0byBjb21wYXJlLiJ9XQ==
eyJEQVRBUkVGIjogIkEgYnVpbHQtaW4gTW93Z2xpIHR5cGUgcmVwcmVzZW50aW5nIGFuIG9wYXF1ZSBiaW5hcnkgZGF0YSBvYmplY3QgYmFja2VkIGJ5IElEYXRhUmVmUHRyLiBJdCBpcyB0aGUgaW5wdXQgYW5kIG91dHB1dCB0eXBlIGZvciBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgc3VjaCBhcyBgQ3J5cHRvZ3JhcGh5Lkhhc2hgLCBgQ3J5cHRvZ3JhcGh5LkhNQUNgLCBhbmQgYENyeXB0b2dyYXBoeS5FbmNyeXB0YDsgZm9yIGVuY29kaW5nIGZ1bmN0aW9ucyBzdWNoIGFzIGBFbmNvZGluZy5CYXNlNjRFbmNvZGVgIGFuZCBgRW5jb2RpbmcuSGV4RW5jb2RlYDsgZm9yIGNvbXByZXNzaW9uIGZ1bmN0aW9ucyBzdWNoIGFzIGBDb21wcmVzcy5EZWZsYXRlYCBhbmQgYENvbXByZXNzLkdaaXBgOyBhbmQgZm9yIE1lc3NhZ2VQYWNrIHNlcmlhbGl6YXRpb24gdmlhIGBKU09OLlRvTXNnUGFja2AgYW5kIGBKU09OLkZyb21Nc2dQYWNrYC4gQSBEQVRBUkVGIGNhbiBiZSBjb25zdHJ1Y3RlZCBmcm9tIGEgc3RyaW5nIHdpdGggYFRvRGF0YVJlZmAgb3IgZ2VuZXJhdGVkIGFzIHJhbmRvbSBieXRlcyB3aXRoIGBDcnlwdG9ncmFwaHkuQ3JlYXRlUmFuZG9tQnl0ZXNgLCBhbmQgaXRzIGJ5dGUgbGVuZ3RoIGlzIHJlYWRhYmxlIHZpYSBgU2l6ZWAuIiwgIkRMUC5DbGFzc2lmaWNhdGlvbiI6ICJBIHRva2VuIHRoYXQgaWRlbnRpZmllcyBhIHNpbmdsZSBETFAgY2xhc3NpZmljYXRpb24gcnVsZSBieSBpdHMgc3RyaW5nIElELCBvYnRhaW5lZCBieSBwYXNzaW5nIHRoYXQgSUQgdG8gYFRvRExQQ2xhc3NpZmljYXRpb25gLiBJdCBpcyBwYXNzZWQgdG8gYERMUC5NYXRjaGAgb3IgYERMUC5Mb2NhdGlvbk1hdGNoYCB0byB0ZXN0IHdoZXRoZXIgdGhlIGFjdGl2ZSBETFAgc2NhbiByZXN1bHQgc2F0aXNmaWVzIHRoYXQgc3BlY2lmaWMgY2xhc3NpZmljYXRpb24sIGFuZCBhIGdpdmVuIGNsYXNzaWZpZXIgY2FuIGJlIHRlc3RlZCBhZ2FpbnN0IG11bHRpcGxlIGNsYXNzaWZpY2F0aW9ucyBpbiBzZXF1ZW5jZSB3aXRoaW4gb25lIHJ1bGUgZXZhbHVhdGlvbi4iLCAiRExQLkNsYXNzaWZpZXIiOiAiVGhlIHNjYW5uaW5nIGNvbnRleHQgaGFuZGxlIGZvciB0aGUgRExQIGVuZ2luZSwgcmVwcmVzZW50aW5nIG9uZSBhY3RpdmUgaW5zcGVjdGlvbiBzZXNzaW9uIGZvciBhIHJlcXVlc3Qgb3IgcmVzcG9uc2UuIFBvbGljeSBydWxlcyBwb3B1bGF0ZSBpdCB3aXRoIGNvbnRlbnQgdmlhIGBETFAuU2V0Qm9keWAgKGFuZCByZWxhdGVkIHNldHVwIHByb2NlZHVyZXMgc3VjaCBhcyBgRExQLlNldEhUVFBIZWFkZXJgKSwgdGhlbiBxdWVyeSBpdCB0aHJvdWdoIGBETFAuTWF0Y2hgLCBgRExQLkxvY2F0aW9uTWF0Y2hgLCBhbmQgYERMUC5TdGFydFJvdXRpbmVgIHRvIGRyaXZlIGNsYXNzaWZpY2F0aW9uIGFuZCBpbmNpZGVudCBjb2xsZWN0aW9uLiBBIHNpbmdsZSBjbGFzc2lmaWVyIGluc3RhbmNlIGlzIHNjb3BlZCB0byBvbmUgcG9saWN5IGV2ZW50IGFuZCBtdXN0IG5vdCBiZSBzaGFyZWQgYWNyb3NzIGNvbmN1cnJlbnQgZXhlY3V0aW9ucy4iLCAiRExQLkluY2lkZW50Q29sbGVjdG9yIjogIkFuIGFjY3VtdWxhdG9yIGZvciBETFAgbWF0Y2ggcmVzdWx0cyB3aXRoaW4gYSBzaW5nbGUgcnVsZSBleGVjdXRpb24sIGNyZWF0ZWQgYnkgY2FsbGluZyBgRExQLlN0YXJ0Um91dGluZWAgd2l0aCBhIGBETFAuQ2xhc3NpZmllcmAgYW5kIGEgcnVsZS1uYW1lIHN0cmluZy4gU2V2ZXJpdHkgc2NvcmVzIGFyZSByZWNvcmRlZCBpbnRvIGl0IHZpYSBgRExQLkFkZGAsIGFuZCB0aGUgYWdncmVnYXRlIGNhbiBiZSB0ZXN0ZWQgYWdhaW5zdCBhIHRocmVzaG9sZCB1c2luZyBgRExQLkhhc0F0TGVhc3RgLiBPbmNlIGNvbGxlY3Rpb24gaXMgY29tcGxldGUsIGBETFAuQ3JlYXRlSW5jaWRlbnRgIHVzZXMgdGhlIGNvbGxlY3RvciB0b2dldGhlciB3aXRoIHRoZSBjbGFzc2lmaWVyIHRvIGVtaXQgYSBmb3JtYWwgRExQIGluY2lkZW50LiIsICJIVFRQSGVhZGVyIjogIkFuIG9yZGVyZWQsIGNhc2UtaW5zZW5zaXRpdmUgbXVsdGltYXAgb2YgSFRUUCBoZWFkZXIgbmFtZS92YWx1ZSBwYWlycywgd2l0aCBhIHNlcGFyYXRlbHkgc3RvcmVkIGZpcnN0IGxpbmUgKHN1Y2ggYXMgYSByZXF1ZXN0IG9yIHN0YXR1cyBsaW5lKS4gSXQgaXMgb2J0YWluZWQgYXQgcnVudGltZSBieSBjYWxsaW5nIGBNV0cuR2V0SFRUUEhlYWRlcihNV0cuSGVhZGVyTWFwKWAsIGFuZCBtdWx0aXBsZSB2YWx1ZXMgcGVyIGtleSBhcmUgcHJlc2VydmVkIGluIGluc2VydGlvbiBvcmRlci4gS2V5IGxvb2t1cHMgYWNyb3NzIGFsbCBvcGVyYXRpb25zIGFyZSBjYXNlLWluc2Vuc2l0aXZlLCB3aGlsZSB2YWx1ZSBjb21wYXJpc29ucyByZW1haW4gY2FzZS1zZW5zaXRpdmUsIGFsbG93aW5nIHNhZmUgcm91bmQtdHJpcCBoYW5kbGluZyBvZiByZWFsLXdvcmxkIEhUVFAgaGVhZGVycy4iLCAiTUNQLlNldHRpbmciOiAiSG9sZHMgdGhlIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBNYW5hZ2VkIENsaWVudCBQcm94eSBpbnRlZ3JhdGlvbiwgaW5jbHVkaW5nIGEgc2hhcmVkIHNlY3JldCBhbmQgYSBmbGFnIGNvbnRyb2xsaW5nIHdoZXRoZXIgZG9tYWluIG5hbWVzIGFyZSBwcmVzZXJ2ZWQgZHVyaW5nIHRva2VuIGV4Y2hhbmdlLiBQb2xpY3kgcnVsZXMgcmV0cmlldmUgYW4gaW5zdGFuY2UgdmlhIGBNQ1AuR2V0U2V0dGluZ2AgYW5kIHBhc3MgaXQgdG8gYE1DUC5BdXRoZW50aWNhdGVgIHRvIHZhbGlkYXRlIGNsaWVudCBpZGVudGl0eSBhZ2FpbnN0IHRoZSBzaGFyZWQgc2VjcmV0LiBBIHNldHRpbmcgaXMgY29uc2lkZXJlZCB2YWxpZCBvbmx5IHdoZW4gdGhlIHNoYXJlZCBzZWNyZXQgZXhjZWVkcyAxNiBjaGFyYWN0ZXJzLiIsICJNZWRpYVR5cGUiOiAiUmVwcmVzZW50cyBhIHNpbmdsZSBNSU1FIG1lZGlhIHR5cGUgc3RyaW5nIHVzZWQgdG8gY2xhc3NpZnkgSFRUUCBib2R5IGNvbnRlbnQuIEluc3RhbmNlcyBhcHBlYXIgaW4gcG9saWN5IHJ1bGVzIGFzIGVsZW1lbnRzIG9mIGBWRUNUT1I8TWVkaWFUeXBlPmAgYW5kIGFyZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgb3IgcmVnZXggbWF0Y2ggdXNpbmcgYENvbnRhaW5zYCBhbmQgYENvbnRhaW5zTWF0Y2hgLiBUaGUgYFVDRS5GaWxlVHJhbnNmZXJDb250cm9sTGlzdGAgdHlwZSBwYWlycyBob3N0IHBhdHRlcm5zIHdpdGggYSBtZWRpYSB0eXBlIHRvIGNvbnRyb2wgZmlsZSB0cmFuc2ZlciBwZXJtaXNzaW9ucy4iLCAiTVdHLkFub255bWl6YXRpb25TZXR0aW5nIjogIkhvbGRzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgYW5vbnltaXphdGlvbiBlbmdpbmUsIHdoaWNoIHBzZXVkb255bWl6ZXMgc3RyaW5nIHZhbHVlcyBpbiBwb2xpY3kgcnVsZXMgdG8gc3VwcG9ydCBkYXRhLXByaXZhY3kgcmVxdWlyZW1lbnRzLiBJdCBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGBNV0cuQW5vbnltaXplYCwgd2hpY2ggcmV0dXJucyB0aGUgaGFzaGVkIG9yIGFub255bWl6ZWQgZm9ybSBvZiBhIGdpdmVuIHN0cmluZy4gVGhlIHNldHRpbmcgaXMgbG9hZGVkIGZyb20gdGhlIGdhdGV3YXkgcG9saWN5IHN0b3JlIGFuZCBpcyBub3QgZGlyZWN0bHkgY29uc3RydWN0aWJsZSBpbiBydWxlIHNjcmlwdHMuIiwgIk1XRy5BbnRpbWFsd2FyZVNldHRpbmciOiAiSG9sZHMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBHQU0tYmFzZWQgYW50aW1hbHdhcmUgc2Nhbm5lciwgaW5jbHVkaW5nIHNjYW4gbW9kZSBmbGFncyAoYW50aXZpcnVzLW9ubHksIGFudGl2aXJ1cy1wbHVzLWFudGltYWx3YXJlLCBBdmlyYSBjb3ZlcmFnZSBvcHRpb25zKSwgcHJvYWN0aXZlIHNjYW4gcGFyYW1ldGVycywgYW5kIHRocmVhdC1yYXRpbmcgdGhyZXNob2xkcy4gUG9saWN5IHJ1bGVzIHBhc3MgaXQgdG8gYE1XRy5BbnRpbWFsd2FyZUVuYWJsZVN0cmVhbVNjYW5uZXJgIHRvIGFjdGl2YXRlIHNjYW5uaW5nLCBhbmQgdGhlbiBxdWVyeSB0aGUgc2NhbiBvdXRjb21lIHdpdGggYE1XRy5Cb2R5SW5mZWN0ZWRgLCBgTVdHLlZpcnVzTmFtZXNgLCBgTVdHLk1hbHdhcmVQcm9iYWJpbGl0eWAsIGFuZCBgTVdHLkFWTWl0cmVUYWdzYC4gTUFURCBtb2RlIGlzIGV4cGxpY2l0bHkgc3VwcHJlc3NlZCBpbiB0aGlzIHR5cGU7IHVzZSBgTVdHLk1BVERTZXR0aW5nYCB3aGVuIE1BVEQgc2Nhbm5pbmcgaXMgcmVxdWlyZWQuIiwgIk1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZSI6ICJIb2xkcyB0aGUgaWRlbnRpZmllciBvZiBhIHRvcC1sZXZlbCBhcHBsaWNhdGlvbiBjYXRlZ29yeSBhcyBkZXRlY3RlZCBieSB0aGUgYXBwbGljYXRpb24gY29udHJvbCBlbmdpbmUuIGBNV0cuQXBwbGljYXRpb25DYXRlZ29yeUlEYCByZXR1cm5zIHRoaXMgdHlwZSBmb3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24sIGFuZCBgVG9TdHJpbmdgIGNvbnZlcnRzIGl0IHRvIGl0cyBzdHJpbmcgSUQgZm9yIGxvZ2dpbmcgb3IgY29tcGFyaXNvbi4gVmFsdWVzIGFwcGVhciBpbiBgVkVDVE9SPE1XRy5BcHBsaWNhdGlvbkNhdGVnb3J5VHlwZT5gIGxpc3RzIHRoYXQgcG9saWN5IHJ1bGVzIGNhbiBidWlsZCwgc2xpY2UsIGpvaW4sIGFuZCB0ZXN0IGFnYWluc3QuIiwgIk1XRy5BcHBsaWNhdGlvblNlcnZpY2VHcm91cFR5cGUiOiAiSG9sZHMgdGhlIGlkZW50aWZpZXIgb2YgYSBuYW1lZCBzZXJ2aWNlIGdyb3VwLCB3aGljaCBpcyBhbiBhZG1pbmlzdHJhdG9yLWRlZmluZWQgY29sbGVjdGlvbiBvZiBhcHBsaWNhdGlvbnMuIGBNV0cuQXBwbGljYXRpb25Jc0luU2VydmljZUdyb3VwYCBhY2NlcHRzIGEgc2luZ2xlIHZhbHVlIG9mIHRoaXMgdHlwZSB0byBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGJlbG9uZ3MgdG8gdGhlIGdyb3VwLCBhbmQgYE1XRy5BcHBsaWNhdGlvblNlcnZpY2VHcm91cGAgYWNjZXB0cyBvbmUgdG8gcmV0dXJuIHRoZSBmdWxsIHZlY3RvciBvZiBtZW1iZXIgYXBwbGljYXRpb24gSURzLiBgTVdHLlNlcnZpY2VJc0NvbnRhaW5lZEluU2VydmljZUdyb3Vwc2AgYWNjZXB0cyBhIGBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uU2VydmljZUdyb3VwVHlwZT5gIHRvIHRlc3QgbWVtYmVyc2hpcCBhY3Jvc3MgbXVsdGlwbGUgZ3JvdXBzIGF0IG9uY2UuIiwgIk1XRy5BcHBsaWNhdGlvblN1YkNhdGVnb3J5VHlwZSI6ICJIb2xkcyB0aGUgaWRlbnRpZmllciBvZiBhbiBhcHBsaWNhdGlvbiBzdWItY2F0ZWdvcnksIHdoaWNoIHJlZmluZXMgdGhlIGJyb2FkZXIgY2F0ZWdvcnkgY2xhc3NpZmljYXRpb24gcHJvZHVjZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGNvbnRyb2wgZW5naW5lLiBgTVdHLkFwcGxpY2F0aW9uU3ViQ2F0ZWdvcnlJRGAgcmV0dXJucyB0aGlzIHR5cGUgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLCBhbmQgYFRvU3RyaW5nYCBjb252ZXJ0cyBpdCB0byBpdHMgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiBWYWx1ZXMgY2FuIGJlIHRlc3RlZCBpbmRpdmlkdWFsbHkgb3IgY29sbGVjdGVkIGludG8gYFZFQ1RPUjxNV0cuQXBwbGljYXRpb25TdWJDYXRlZ29yeVR5cGU+YCBsaXN0cyBpbiBwb2xpY3kgcnVsZXMuIiwgIk1XRy5BcHBsaWNhdGlvblR5cGUiOiAiSG9sZHMgdGhlIGlkZW50aWZpZXIgb2YgYSBzcGVjaWZpYyBkZXRlY3RlZCBhcHBsaWNhdGlvbiwgc2VyaWFsaXplZCBhcyBhIHN0cmluZyBJRCBpbiB0aGUgdW5kZXJseWluZyBgQXBwbGljYXRpb25JRGAgY2xhc3MuIGBNV0cuQXBwbGljYXRpb25JRGAgcmV0dXJucyB0aGlzIHR5cGUgZm9yIHRoZSBjdXJyZW50bHkgZGV0ZWN0ZWQgYXBwbGljYXRpb24sIGFuZCBgTVdHLkNsb3VkU2VydmljZUlEYCByZXR1cm5zIGl0IGZvciB0aGUgZGV0ZWN0ZWQgY2xvdWQgc2VydmljZSB3aXRob3V0IGFjdGl2aXR5IGNvbnRleHQuIGBUb1N0cmluZ2AgY29udmVydHMgdGhlIHZhbHVlIHRvIGl0cyBzdHJpbmcgSUQsIGFuZCB0aGUgdHlwZSBhcHBlYXJzIGluIGBWRUNUT1I8TVdHLkFwcGxpY2F0aW9uVHlwZT5gIGxpc3RzIHByb2R1Y2VkIGJ5IGNhbGxhYmxlcyBzdWNoIGFzIGBNV0cuQXBwbGljYXRpb25TZXJ2aWNlR3JvdXBgLiIsICJNV0cuQXV0aGVudGljYXRpb25TZXJ2ZXJPcHRpb25zIjogIkNhcnJpZXMgdGhlIHBhcmFtZXRlcnMgZm9yIGFuIGF1dGhlbnRpY2F0aW9uIHNlcnZlciBlbnRyeSwgcmVjb3JkaW5nIHdoZXRoZXIgYXV0aGVudGljYXRpb24gaXMgY29va2llLWJhc2VkIG9yIElQLWJhc2VkLCB3aGV0aGVyIHRoZSBtb2RlIGlzIHN0cmljdCBvciByZWxheGVkLCBhbmQgYSBzZXNzaW9uIFRUTCBpbiBzZWNvbmRzLiBJdCBpcyBsb2FkZWQgZnJvbSB0aGUgZ2F0ZXdheSBwb2xpY3kgc3RvcmUgYW5kIGlzIG5vdCBkaXJlY3RseSBjb25zdHJ1Y3RpYmxlIGluIHJ1bGUgc2NyaXB0czsgaW50ZXJuYWwgZ2F0ZXdheSBjYWxsYWJsZXMgcmVhZCBpdHMgZmllbGRzIHRvIG1ha2UgcGVyLXRyYW5zYWN0aW9uIGF1dGhlbnRpY2F0aW9uIHJvdXRpbmcgZGVjaXNpb25zLiIsICJNV0cuQXp1cmVEaXJMb29rdXBTZXR0aW5nIjogIkhvbGRzIHRoZSBjb25uZWN0aW9uIGFuZCBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIGZvciBxdWVyeWluZyBNaWNyb3NvZnQgRW50cmEgSUQgZ3JvdXAgbWVtYmVyc2hpcCwgaW5jbHVkaW5nIHRoZSB0ZW5hbnQgSUQsIGFwcGxpY2F0aW9uIGNyZWRlbnRpYWxzLCBDQSBjZXJ0aWZpY2F0ZSBsaXN0IGZvciBUTFMgdmFsaWRhdGlvbiwgY2FjaGUgY29uZmlndXJhdGlvbiwgYW5kIG5ldHdvcmsgdGltZW91dCB2YWx1ZXMuIFBvbGljeSBydWxlcyBzdXBwbHkgaXQgdG8gYE1XRy5HZXRVc2VyQXp1cmVHcm91cHNgIGFsb25nc2lkZSBhIHVzZXJuYW1lIHRvIHJldHJpZXZlIHRoZSB1c2VyJ3MgRW50cmEgSUQgZ3JvdXAgbGlzdC4gVGhlIHNldHRpbmcgaXMgbG9hZGVkIGZyb20gdGhlIGdhdGV3YXkgcG9saWN5IHN0b3JlIGFuZCByZWxpZXMgb24gYSBrbm93bi1DQSBsaXN0IHRoYXQgaXMgaW5qZWN0ZWQgYXQgY2FsbCB0aW1lLiIsICJNV0cuQmxvY2tTZXR0aW5nIjogIkNvbmZpZ3VyZXMgdGhlIGJsb2NrIHBhZ2UgZGlzcGxheWVkIHdoZW4gYSB0cmFuc2FjdGlvbiBpcyBkZW5pZWQsIGhvbGRpbmcgdGhlIHRlbXBsYXRlIG5hbWUsIGRpcmVjdG9yeSwgYmxvY2sgcmVhc29uIHRleHQsIGJsb2NrIHJlYXNvbiBJRCwgYW5kIGRpc3BsYXkgbGFuZ3VhZ2UgKFwiYXV0b1wiLCBcInRyYW5zYWN0aW9uXCIsIG9yIGFuIGV4cGxpY2l0IGNvdW50cnkgY29kZSkuIFBvbGljeSBydWxlcyBwYXNzIGEgYE1XRy5CbG9ja1NldHRpbmdgIHZhbHVlIHRvIGBNV0cuQmxvY2tgIG9yIGBBZ2VudGxlc3NBZGRCbG9ja1BhZ2VgIHRvIGNvbnRyb2wgd2hpY2ggYmxvY2sgcGFnZSB0ZW1wbGF0ZSBpcyByZW5kZXJlZCBhbmQgaW4gd2hpY2ggbGFuZ3VhZ2UuIiwgIk1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3QiOiAiSG9sZHMgYW4gb3JkZXJlZCBjb2xsZWN0aW9uIG9mIENBIGNlcnRpZmljYXRlcywgZWFjaCBwYWlyZWQgd2l0aCBhIHRydXN0IGZsYWcsIGEgc2V0IG9mIENSTCBkaXN0cmlidXRpb24gVVJMcywgYW5kIGFuIE9DU1AgVVJMOyBhbiBvcmRlci1pbmRlcGVuZGVudCBjb250ZW50IGhhc2ggYW5kIGFuIE9wZW5TU0wgWDUwOV9TVE9SRSB0cnVzdCBjYWNoZSBhcmUgZGVyaXZlZCBmcm9tIHRoZSBsaXN0IGF0IGxvYWQgdGltZS4gQ2VydGlmaWNhdGUgY2hhaW4gdmVyaWZpY2F0aW9uIGZ1bmN0aW9ucyBzdWNoIGFzIGBNV0cuU2VydmVyQ2hhaW5Db21wbGV0ZWAsIGBNV0cuU2VydmVyQ2hhaW5Gb3VuZEtub3duQ0FgLCBhbmQgYE1XRy5TZXJ2ZXJDaGFpbkZpcnN0S25vd25DQUlzVHJ1c3RlZGAgYWNjZXB0IGEgYE1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3RgIGFzIGlucHV0OyBsaXN0cyBhcmUgcmV0cmlldmVkIGJ5IGBNV0cuQ0FMaXN0QnlOYW1lYCBvciBjcmVhdGVkIGVtcHR5IGJ5IGBNV0cuQ3JlYXRlQ2VydGlmaWNhdGVBdXRob3JpdHlMaXN0YC4iLCAiTVdHLkNlcnRpZmljYXRlVmVyaWZpY2F0aW9uU2V0dGluZyI6ICJIb2xkcyB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGdvdmVybnMgVExTIHNlcnZlciBjZXJ0aWZpY2F0ZSBjaGFpbiB2ZXJpZmljYXRpb24sIGluY2x1ZGluZyB0aGUgdHJ1c3Qtc3RvcmUgcmVmZXJlbmNlIGFuZCBjaGFpbiBldmFsdWF0aW9uIHBhcmFtZXRlcnMuIEl0IGlzIHBhaXJlZCB3aXRoIGEgYE1XRy5DZXJ0aWZpY2F0ZUF1dGhvcml0eUxpc3RgIGFuZCBwYXNzZWQgdG8gdGhlIGBNV0cuU2VydmVyQ2hhaW4qYCBmYW1pbHkgb2YgZnVuY3Rpb25zIFx1MjAxNCBgTVdHLlNlcnZlckNoYWluQ29tcGxldGVgLCBgTVdHLlNlcnZlckNoYWluQ29udGFpbnNFeHBpcmVkQ0FgLCBgTVdHLlNlcnZlckNoYWluQ29udGFpbnNSZXZva2VkYCwgYE1XRy5TZXJ2ZXJDaGFpbkNvbnRhaW5zVmlvbGF0aW9uYCwgYE1XRy5TZXJ2ZXJDaGFpbkZvdW5kS25vd25DQWAsIGBNV0cuU2VydmVyQ2hhaW5GaXJzdEtub3duQ0FJc1RydXN0ZWRgLCBgTVdHLlNlcnZlckNoYWluTGVuZ3RoYCwgYE1XRy5TZXJ2ZXJDaGFpblNpZ25hdHVyZUFsZ29yaXRobXNgLCBhbmQgYE1XRy5TZXJ2ZXJDaGFpbklzc3VlckNOc2AgXHUyMDE0IHdoaWNoIHRvZ2V0aGVyIGxldCBwb2xpY3kgcnVsZXMgaW5zcGVjdCBhbmQgbWFrZSBkZWNpc2lvbnMgYWJvdXQgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBjaGFpbi4iLCAiTVdHLkNsaWVudENvbnRleHRGd2RQcm94eVNldHRpbmciOiAiSG9sZHMgdGhlIFRMUyBjbGllbnQgY29udGV4dCBjb25maWd1cmF0aW9uIGZvciBmb3J3YXJkIHByb3h5IGNvbm5lY3Rpb25zLCBjb250cm9sbGluZyBob3cgdGhlIHByb3h5IHByZXNlbnRzIGl0c2VsZiBkdXJpbmcgb3V0Ym91bmQgVExTIGhhbmRzaGFrZXMuIFBvbGljeSBydWxlcyBwYXNzIGEgdmFsdWUgb2YgdGhpcyB0eXBlIHRvIGBNV0cuU2V0U1NMQ2xpZW50Q29udGV4dEZ3ZFByb3h5YCB0byBhY3RpdmF0ZSB0aGUgY29uZmlndXJlZCBjb250ZXh0IGZvciBhIGNvbm5lY3Rpb24uIiwgIk1XRy5DbGllbnRDb250ZXh0UmV2UHJveHlTZXR0aW5nIjogIkhvbGRzIHRoZSBUTFMgY2xpZW50IGNvbnRleHQgY29uZmlndXJhdGlvbiBmb3IgcmV2ZXJzZSBwcm94eSBjb25uZWN0aW9ucywgaW5jbHVkaW5nIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGVzIGFuZCB0aGUgaG9zdCBwYXR0ZXJucyAod2lsZGNhcmQgYW5kIG5vbi13aWxkY2FyZCkgZXh0cmFjdGVkIGZyb20gdGhvc2UgY2VydGlmaWNhdGVzLiBQb2xpY3kgcnVsZXMgcGFzcyBhIHZhbHVlIG9mIHRoaXMgdHlwZSB0byBgTVdHLlNldFNTTENsaWVudENvbnRleHRSZXZQcm94eWAgdG8gYXBwbHkgdGhlIHJldmVyc2UgcHJveHkgVExTIGlkZW50aXR5LCBhbmQgdXNlIGBNV0cuSGFzTWF0Y2hpbmdDZXJ0aWZpY2F0ZWAgdG8gY2hlY2sgd2hldGhlciBhIGNlcnRpZmljYXRlIGNvdmVyaW5nIGEgZ2l2ZW4gaG9zdCBpcyBwcmVzZW50IGluIHRoZSBzZXR0aW5nLiIsICJNV0cuQ2xpZW50TG9jYXRpb25Qcm9wZXJ0aWVzIjogIk1hcHMgY2xpZW50IGVncmVzcyBJUCBhZGRyZXNzZXMgYW5kIGxvY2F0aW9uIElEcyB0byBhIGJ1bmRsZSBvZiBwZXItbG9jYXRpb24gYXR0cmlidXRlcyBcdTIwMTQgbG9jYXRpb24gSUQsIGxvY2F0aW9uIG5hbWUsIGxvZyBzdG9yYWdlIHJlZ2lvbiwgYW5kIFNBTUwgY29uZmlndXJhdGlvbiBJRCBcdTIwMTQgbG9hZGVkIGZyb20gdGhlIGdhdGV3YXkgcG9saWN5IHN0b3JlLiBBZnRlciB0aGUgZ2F0ZXdheSByZXNvbHZlcyBsb2NhdGlvbiBwcm9wZXJ0aWVzIGludG8gdGhlIHRyYW5zYWN0aW9uIGNvbnRleHQsIGBNV0cuU2FtbENvbmZpZ0J5TG9jYXRpb25gIHJlYWRzIHRoZSBzdG9yZWQgU0FNTCBjb25maWd1cmF0aW9uIElEIHRvIHJvdXRlIHRoZSBjbGllbnQgdG8gdGhlIGNvcnJlY3QgaWRlbnRpdHkgcHJvdmlkZXIuIiwgIk1XRy5DbG91ZFN0b3JhZ2VFbmNyeXB0aW9uU2V0dGluZyI6ICJIb2xkcyB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIENBU0IgY2xvdWQtc3RvcmFnZSBlbmNyeXB0aW9uIGVuZ2luZSwgd2hpY2ggY29udHJvbHMgY2xpZW50LXNpZGUgZW5jcnlwdGlvbiBvZiBkYXRhIHVwbG9hZGVkIHRvIGNsb3VkIHN0b3JhZ2Ugc2VydmljZXMuIFBvbGljeSBydWxlcyBjb252ZXJ0IGl0IHRvIGFuIGludGVybmFsIGVuZ2luZSBoYW5kbGUgdmlhIGBNV0cuVG9NV0dTZXR0aW5nYCBhbmQgdGhlbiBhY3RpdmF0ZSB0aGUgZmlsdGVyIHdpdGggYE1XRy5FbmFibGVgLiBJdCBpcyBwYWlyZWQgd2l0aCBgTVdHLkNsb3VkU3RvcmFnZUVuY3J5cHRpb25TdXBwb3J0U2V0dGluZ2AsIHdoaWNoIGNhcnJpZXMgdGhlIGVuZ2luZSdzIHN1cHBsZW1lbnRhbCBwcm9wZXJ0eSBjb25maWd1cmF0aW9uLiIsICJNV0cuQ2xvdWRTdG9yYWdlRW5jcnlwdGlvblN1cHBvcnRTZXR0aW5nIjogIkhvbGRzIHN1cHBsZW1lbnRhbCBwcm9wZXJ0eSBjb25maWd1cmF0aW9uIGZvciB0aGUgQ0FTQiBjbG91ZC1zdG9yYWdlIGVuY3J5cHRpb24gZmlsdGVyLCBjb21wbGVtZW50aW5nIGBNV0cuQ2xvdWRTdG9yYWdlRW5jcnlwdGlvblNldHRpbmdgLiBQb2xpY3kgcnVsZXMgY29udmVydCBpdCB0byBhbiBpbnRlcm5hbCBlbmdpbmUgaGFuZGxlIHZpYSBgTVdHLlRvTVdHU2V0dGluZ2AgYW5kIGFjdGl2YXRlIHRoZSBmaWx0ZXIgd2l0aCBgTVdHLkVuYWJsZWAuIEJvdGggc2V0dGluZ3MgbXVzdCBiZSBkZXBsb3llZCB0b2dldGhlciB0byBmdWxseSBjb25maWd1cmUgdGhlIENBU0IgZW5jcnlwdGlvbiBwaXBlbGluZS4iLCAiTVdHLkNvbXBvc2l0ZU9wZW5lclNldHRpbmciOiAiSG9sZHMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb21wb3NpdGUgKGFyY2hpdmUgYW5kIGRvY3VtZW50KSBvcGVuZXIgZW5naW5lLCBpbmNsdWRpbmcgdGhlIG1heGltdW0gbmVzdGVkLW9iamVjdCBkZXB0aCwgdGhlIHVuY29tcHJlc3NlZC1zaXplIGxpbWl0LCBhbmQgdGhlIGNvbXByZXNzaW9uLXJhdGlvIGxpbWl0LiBQb2xpY3kgcnVsZXMgcGFzcyBpdCB0byBgTVdHLkVuYWJsZU9wZW5lcmAgdG8gYWN0aXZhdGUgcmVjdXJzaXZlIGNvbnRlbnQgZXh0cmFjdGlvbiwgYWZ0ZXIgd2hpY2ggYXJjaGl2ZS1pbnNwZWN0aW9uIGZ1bmN0aW9ucyBzdWNoIGFzIGBNV0cuQm9keUlzRW5jcnlwdGVkT2JqZWN0YCwgYE1XRy5Cb2R5QWxsTWVtYmVyQ291bnRgLCBhbmQgYE1XRy5Cb2R5TmVzdGVkQXJjaGl2ZUxldmVsYCBiZWNvbWUgYXZhaWxhYmxlIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbi4iLCAiTVdHLkRhdGFUcmlja2xpbmdTZXR0aW5nIjogIkhvbGRzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZGF0YS10cmlja2xpbmcgZW5naW5lLCB3aGljaCBjb250cm9scyBob3cgcGFydGlhbCByZXNwb25zZSBkYXRhIGlzIGZvcndhcmRlZCB0byB0aGUgY2xpZW50IHdoaWxlIHRoZSBwcm94eSBjb250aW51ZXMgc2Nhbm5pbmcgdGhlIGJvZHksIGluY2x1ZGluZyB0aGUgaW5pdGlhbCBjaHVuayBzaXplIGFuZCB0aGUgb25nb2luZyBmb3J3YXJkaW5nIHJhdGUuIFBvbGljeSBydWxlcyBwYXNzIGl0IHRvIGBNV0cuRW5hYmxlRGF0YVRyaWNrbGluZ2AgdG8gYWN0aXZhdGUgdGhlIGZlYXR1cmUgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLiBXaGV0aGVyIHRyaWNrbGluZyBpcyBjdXJyZW50bHkgYWN0aXZlIGNhbiBiZSBjaGVja2VkIHdpdGggYE1XRy5EYXRhVHJpY2tsaW5nRW5hYmxlZGAuIiwgIk1XRy5ETFBDbGFzc2lmaWNhdGlvblNldHRpbmciOiAiQ29uZmlndXJlcyB0aGUgRExQIGNsYXNzaWZpY2F0aW9uIGVuZ2luZSwgd2hpY2ggYXBwbGllcyBjb250ZW50LWNsYXNzaWZpY2F0aW9uIHJ1bGVzIHRvIGlkZW50aWZ5IHNlbnNpdGl2ZSBkYXRhIGluIHRyYWZmaWMuIFBvbGljeSBydWxlcyBwYXNzIGl0IHRvIGBNV0cuRExQQ2xhc3NpZmljYXRpb25NYXRjaGVzYCB0byB0ZXN0IHdoZXRoZXIgYm9keSBvciBhcmJpdHJhcnkgdGV4dCBjb250YWlucyBhIGNsYXNzaWZpY2F0aW9uIG1hdGNoLCBhbmQgdG8gYE1XRy5ETFBDbGFzc2lmaWNhdGlvbk1hdGNoZWRUZXJtc2AgYW5kIGBNV0cuRExQQ2xhc3NpZmljYXRpb25NYXRjaGVkQ2xhc3NpZmljYXRpb25zYCB0byByZXRyaWV2ZSB0aGUgc3BlY2lmaWMgbWF0Y2hlZCB0ZXJtcyBhbmQgY2xhc3NpZmljYXRpb24gbGFiZWxzLiIsICJNV0cuRExQRGljdGlvbmFyeVNldHRpbmciOiAiQ29uZmlndXJlcyB0aGUgRExQIGRpY3Rpb25hcnkgZW5naW5lLCB3aGljaCBzY2FucyBjb250ZW50IGFnYWluc3QgYSBzZXQgb2YgZGVmaW5lZCBrZXl3b3JkIG9yIHBocmFzZSBsaXN0cy4gUG9saWN5IHJ1bGVzIHBhc3MgaXQgdG8gYE1XRy5ETFBEaWN0aW9uYXJ5TWF0Y2hlc2AgdG8gdGVzdCB3aGV0aGVyIGJvZHkgb3IgYXJiaXRyYXJ5IHRleHQgY29udGFpbnMgYSBkaWN0aW9uYXJ5IG1hdGNoLCBhbmQgdG8gYE1XRy5ETFBEaWN0aW9uYXJ5TWF0Y2hlZFRlcm1zYCB0byByZXRyaWV2ZSB0aGUgbWF0Y2hlZCB0ZXJtcy4iLCAiTVdHLkVuYWJsZUNlcnRpZmljYXRlVmVyaWZpY2F0aW9uU2V0dGluZyI6ICJDb25maWd1cmVzIHdoZXRoZXIgYW5kIGhvdyB0aGUgcHJveHkgdmVyaWZpZXMgc2VydmVyLXNpZGUgVExTIGNlcnRpZmljYXRlcyBkdXJpbmcgb3V0Ym91bmQgY29ubmVjdGlvbnMuIEEgdmFsdWUgb2YgdGhpcyB0eXBlIGlzIHBhc3NlZCB0byBgTVdHLkVuYWJsZUNlcnRpZmljYXRlVmVyaWZpY2F0aW9uYCBpbiBwb2xpY3kgcnVsZXMgdG8gYWN0aXZhdGUgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBvcHRpb25zLiIsICJNV0cuRW5hYmxlQ29udGVudEluc3BlY3Rpb25TZXR0aW5nIjogIkNvbmZpZ3VyZXMgVExTIGRlY3J5cHRpb24gKGNvbnRlbnQgaW5zcGVjdGlvbikgZm9yIGNvbm5lY3Rpb25zIHBhc3NpbmcgdGhyb3VnaCB0aGUgcHJveHksIGdvdmVybmluZyB0aGUgcGFyYW1ldGVycyB1bmRlciB3aGljaCBlbmNyeXB0ZWQgdHJhZmZpYyBpcyBpbnRlcmNlcHRlZCBhbmQgaW5zcGVjdGVkLiBQb2xpY3kgcnVsZXMgcGFzcyBhIHZhbHVlIG9mIHRoaXMgdHlwZSB0byBgTVdHLkVuYWJsZUNvbnRlbnRJbnNwZWN0aW9uYCB0byBhY3RpdmF0ZSBkZWNyeXB0aW9uIGZvciB0aGUgY3VycmVudCBjb25uZWN0aW9uLiIsICJNV0cuSGVhZGVyTWFwIjogIlByb3ZpZGVzIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byB0aGUgSFRUUCBoZWFkZXIgZmllbGRzIG9mIGEgcmVxdWVzdCBvciByZXNwb25zZSwgYmFja2VkIGJ5IGVpdGhlciBhIGxpdmUgdHJhbnNhY3Rpb24gb2JqZWN0IG9yIGEgc3RyaW5nLWxpc3QgZGVsaXZlcmVkIGZyb20gYSBmaWx0ZXIgcGx1Z2luIHN1Y2ggYXMgdGhlIElDQVAgY2xpZW50LiBQb2xpY3kgcnVsZXMgcmV0cmlldmUgYSBgTVdHLkhlYWRlck1hcGAgZnJvbSBgTVdHLkhlYWRlcnNgIChwYXNzaW5nIGEgYE1XRy5SZXF1ZXN0UmVzcG9uc2VgKSBhbmQgdGhlbiBpbnNwZWN0IG9yIG11dGF0ZSBoZWFkZXJzIHRocm91Z2ggY2FsbGFibGVzIHN1Y2ggYXMgYE1XRy5BZGRgIGFuZCBgTVdHLktleXNgLiIsICJNV0cuSG9zdEFuZENlcnRpZmljYXRlIjogIlBhaXJzIGEgc2VydmVyIGhvc3RuYW1lIChzdG9yZWQgYXMgYm90aCBhIHBsYWluIHN0cmluZyBhbmQgYSBjb21waWxlZCByZWdleCBmb3IgbWF0Y2hpbmcpIHdpdGggaXRzIFRMUyBjZXJ0aWZpY2F0ZSwgcmVwcmVzZW50ZWQgYXMgYSBQRU0gc3RyaW5nIGFuZCBhIGNlcnRpZmljYXRlIGhhc2guIGBNV0cuU2VydmVySG9zdEFuZENlcnRgIHJldHVybnMgdGhlIGhvc3RuYW1lIGFuZCBmdWxsIHNlcnZlciBjZXJ0aWZpY2F0ZSBhcyBhIGBNV0cuSG9zdEFuZENlcnRpZmljYXRlYCwgYE1XRy5TZXJ2ZXJPbmx5Q2VydGAgcmV0dXJucyBvbmx5IHRoZSBsZWFmIGNlcnRpZmljYXRlLCBhbmQgYE1XRy5Ib3N0QW5kQ2VydGlmaWNhdGVMaXN0QnlOYW1lYCByZXRyaWV2ZXMgbmFtZWQgbGlzdHMgb2YgdGhlc2UgcGFpcnMgZm9yIHVzZSBpbiBwaW5uaW5nIG9yIGFsbG93LWxpc3QgcG9saWN5IHJ1bGVzLiIsICJNV0cuSFRNTE9wZW5lclNldHRpbmciOiAiQ29uZmlndXJlcyB0aGUgSFRNTCBvcGVuZXIgZmVhdHVyZSwgd2hpY2ggY29udHJvbHMgaG93IHRoZSBnYXRld2F5IHByb2Nlc3NlcyBhbmQgcmVuZGVycyBIVE1MIGNvbnRlbnQgZHVyaW5nIGluc3BlY3Rpb24uIFBvbGljeSBydWxlcyBwYXNzIGl0IHRvIGBNV0cuRW5hYmxlSFRNTE9wZW5lcmAgdG8gYWN0aXZhdGUgdGhlIGZlYXR1cmUgZm9yIGEgcmVxdWVzdC4iLCAiTVdHLklDQVBDbGllbnRTZXR0aW5nIjogIkNvbmZpZ3VyZXMgYW4gSUNBUCBjbGllbnQgY29ubmVjdGlvbiwgaW5jbHVkaW5nIHRoZSB0YXJnZXQgSUNBUCBzZXJ2ZXIgYW5kIHJlcXVlc3QgcGFyYW1ldGVycyBmb3IgUmVxTW9kIGFuZCBSZXNwTW9kIG9wZXJhdGlvbnMuIFBvbGljeSBydWxlcyBwYXNzIGl0IHRvIGBNV0cuSUNBUENsaWVudFJlcU1vZFNhdGlzZmFjdGlvbmAsIGBNV0cuSUNBUENsaWVudFJlc3BNb2RFbmNhcHN1bGF0ZWRIVFRQQ2hhbmdlZGAsIGBNV0cuSUNBUENsaWVudFJlcU1vZEhlYWRlcnNgLCBhbmQgYE1XRy5JQ0FQQ2xpZW50UmVzcE1vZEhlYWRlcnNgIHRvIGluc3BlY3QgcmVzdWx0cywgYW5kIHRvIGBNV0cuSUNBUENsaWVudEFkZFJlcXVlc3RIZWFkZXJgIGFuZCBgTVdHLklDQVBDbGllbnRBZGRSZXF1ZXN0VVJJUGFyYW1ldGVyYCB0byBtb2RpZnkgb3V0Z29pbmcgSUNBUCByZXF1ZXN0cy4iLCAiTVdHLkludGVybmFsRW5hYmxlRmlsdGVyTGlzdCI6ICJBIHJ1bnRpbWUtbWFuYWdlZCBxdWV1ZSBvZiBhY3RpdmUgZW5hYmxlIGZpbHRlcnMgXHUyMDE0IGRlZmVycmVkIGZpbHRlciBwaXBlbGluZSBlbnRyaWVzIGZvciB3aGljaCB0aGUgcHJveHkgaGFzIHJlcXVlc3RlZCBhZGRpdGlvbmFsIGJvZHkgZGF0YSBcdTIwMTQgc3RvcmVkIGluIHRoZSBNb3dnbGkgdHJhbnNhY3Rpb24gY29udGV4dCBhbmQgZHJhaW5lZCBpbmNyZW1lbnRhbGx5IGJ5IHRoZSBwcm94eSBwcm9jZXNzIGxvb3AgYXMgYnl0ZXMgYXJyaXZlLiBJdCBpcyBub3QgdXNlci1jb25zdHJ1Y3RpYmxlIGFuZCBjYW5ub3QgYmUgc2VyaWFsaXplZDsgaXQgaXMgY3JlYXRlZCBhbmQgY29uc3VtZWQgZW50aXJlbHkgd2l0aGluIHRoZSBwcm94eSBydW50aW1lLiIsICJNV0cuSW50ZXJuYWxQYXJhbWV0ZXJMaXN0IjogIkFuIG9yZGVyZWQsIG1peGVkLXR5cGUgYXJndW1lbnQgbGlzdCB1c2VkIHRvIHN1cHBseSBwYXJhbWV0ZXJzIHRvIGNsYXNzaWMgTVdHIFhNTCBlbmdpbmUgb3BlcmF0aW9ucywgaW50ZXJuYWxseSBiYWNrZWQgYnkgYSBga01peGVkTGlzdGAgdmFyaWFudCB0aGF0IGNhbiBob2xkIHN0cmluZ3MsIG51bWJlcnMsIGJvb2xlYW5zLCBJUCBhZGRyZXNzZXMsIElQIHJhbmdlcywgY2F0ZWdvcmllcywgbWVkaWEgdHlwZXMsIGRpbWVuc2lvbnMsIHJlZ2V4IHZhbHVlcywgbWFwcywgYW5kIG5lc3RlZCBgTVdHLkludGVybmFsVmFyaWFudGAgdmFsdWVzLiBMaXN0cyBhcmUgY29uc3RydWN0ZWQgd2l0aCBgTVdHLkNyZWF0ZVBhcmFtc2Agb3IgZXh0ZW5kZWQgd2l0aCBgTVdHLkFkZGAsIHRoZW4gcGFzc2VkIHRvIGBNV0cuR2V0UHJvcGVydHlWYWx1ZWAsIGBNV0cuR2V0UHJvcGVydHlWYWx1ZVdpdGhDb25maWdgLCBhbmQgYE1XRy5FeGVjdXRlRXZlbnRgLiIsICJNV0cuSW50ZXJuYWxTZXR0aW5nIjogIkNhcnJpZXMgYSBwYXJzZWQgWE1MIGZpbHRlciBjb25maWd1cmF0aW9uXHUyMDE0ZGVzZXJpYWxpemVkIGZyb20gSlNPTiBpbnRvIGEgYENQYXJzZWRDb25maWd1cmF0aW9uYFx1MjAxNGludG8gY2xhc3NpYyBNV0cgZW5naW5lIGNhbGxzLCBvcHRpb25hbGx5IHNjb3BlZCB0byBhIHRlbmFudC4gQ2FsbGFibGVzIGBNV0cuRW5hYmxlYCwgYE1XRy5FeGVjdXRlRXZlbnRgLCBhbmQgYE1XRy5HZXRQcm9wZXJ0eVZhbHVlV2l0aENvbmZpZ2AgYWNjZXB0IGEgYE1XRy5JbnRlcm5hbFNldHRpbmdgIHRvIGV4ZWN1dGUgYSBmaWx0ZXIgb3IgcmV0cmlldmUgYSBwcm9wZXJ0eSB2YWx1ZSB1bmRlciBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcmF0aGVyIHRoYW4gdGhlIHRyYW5zYWN0aW9uJ3MgY3VycmVudCBhY3RpdmUgY29uZmlndXJhdGlvbi4iLCAiTVdHLkludGVybmFsVHJhbnNhY3Rpb25PYmplY3QiOiAiQW4gb3BhcXVlIHdyYXBwZXIgYXJvdW5kIHRoZSBsaXZlIHByb3h5IHRyYW5zYWN0aW9uIChgU2VjdXJlV2ViOjpJVHJhbnNhY3Rpb25gKSB0aGF0IGlzIGluamVjdGVkIGludG8gdGhlIE1vd2dsaSBzY3JpcHQgY29udGV4dCBhdCB0aGUgc3RhcnQgb2YgZWFjaCByZXF1ZXN0L3Jlc3BvbnNlIGN5Y2xlLiBJbnRlcm5hbCBnYXRld2F5IGNhbGxhYmxlcyByZXRyaWV2ZSBpdCB2aWEgY29udGV4dCBsb29rdXAgdG8gYWNjZXNzIHRyYW5zYWN0aW9uLWxldmVsIGRhdGE7IGl0IGNhbm5vdCBiZSBzZXJpYWxpemVkLCBkZXNlcmlhbGl6ZWQsIG9yIGNvbnN0cnVjdGVkIGluIHBvbGljeSBydWxlcy4iLCAiTVdHLkludGVybmFsVmFyaWFudCI6ICJBIHRoaW4gTU9XR0xJIG9iamVjdCBjbGFzcyB3cmFwcGVyIGFyb3VuZCBhIHR5cGVkIGBTZWN1cmVXZWI6OklWYXJpYW50YCB2YWx1ZSwgYnJpZGdpbmcgdGhlIGVuZ2luZSdzIGludGVybmFsIHBvbHltb3JwaGljIHZhbHVlIHN5c3RlbSB0byBwb2xpY3ktcnVsZSBleHByZXNzaW9ucy4gYE1XRy5HZXRQcm9wZXJ0eVZhbHVlYCBhbmQgYE1XRy5HZXRQcm9wZXJ0eVZhbHVlV2l0aENvbmZpZ2AgcmV0dXJuIGEgYE1XRy5JbnRlcm5hbFZhcmlhbnRgLCBhbmQgY29udmVyc2lvbiBjYWxsYWJsZXMgc3VjaCBhcyBgVG9TdHJpbmdgLCBgVG9OdW1iZXJgLCBgVG9Cb29sZWFuYCwgYFRvTWFwYCwgYW5kIGBUb1N0cmluZ1ZlY3RvcmAgZXh0cmFjdCB0eXBlZCB2YWx1ZXMgZnJvbSBpdCBmb3IgdXNlIGluIHJ1bGUgY29uZGl0aW9ucyBvciBhcyBhcmd1bWVudHMgdG8gYE1XRy5BZGRgIGFuZCBgTVdHLkNyZWF0ZVBhcmFtc2AuIiwgIk1XRy5JUFJhbmdlQXV0aGVudGljYXRpb24iOiAiTWFwcyBJUHY0IGFuZCBJUHY2IGFkZHJlc3MgcmFuZ2VzIHRvIHRlbmFudCBpZGVudGlmaWVyIHN0cmluZ3MgZm9yIElQLWJhc2VkIGF1dGhlbnRpY2F0aW9uLiBQb2xpY3kgcnVsZXMgcGFzcyBhIGBOZXQuSVBgIHZhbHVlIHRvIHRoZSBjYWxsYWJsZSB0aGF0IGFjY2VwdHMgYE1XRy5JUFJhbmdlQXV0aGVudGljYXRpb25gIGFuZCByZWNlaXZlcyBiYWNrIHRoZSB0ZW5hbnQgc3RyaW5nIGZvciB0aGF0IGNsaWVudCBhZGRyZXNzLiBCb3RoIElQdjQgYW5kIElQdjYgcmFuZ2VzIGFyZSBzdG9yZWQgc2VwYXJhdGVseSBhbmQgbG9va2VkIHVwIHdpdGggYW4gaW5jbHVzaXZlIHJhbmdlIGNoZWNrLiIsICJNV0cuSVZYQ2xvdWRTZXR0aW5nIjogIkNvbmZpZ3VyZXMgdGhlIFRyZWxsaXggSVZYIENsb3VkIG1hbHdhcmUtYW5hbHlzaXMgZmVhdHVyZSwgZW5mb3JjaW5nIHRoYXQgdGhlIElWWENsb3VkIGZsYWcgaXMgZW5hYmxlZCBpbiB0aGUgdW5kZXJseWluZyBhbnRpdmlydXMgY29uZmlndXJhdGlvbi4gUG9saWN5IHJ1bGVzIHBhc3MgaXQgdG8gYE1XRy5Cb2R5SW5mZWN0ZWRgIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBjdXJyZW50IGJvZHkgaXMgaW5mZWN0ZWQgYW5kIHRvIGBNV0cuVmlydXNOYW1lc2AgdG8gcmV0cmlldmUgdGhlIG5hbWVzIG9mIGFueSBkZXRlY3RlZCB2aXJ1c2VzLiIsICJNV0cuTG9nU3RvcmFnZVJlZ2lvblNldHRpbmciOiAiSG9sZHMgYSBzaW5nbGUgc2VsZWN0ZWQgY2xvdWQgc3RvcmFnZSByZWdpb24gdGhhdCBvdmVycmlkZXMgdGhlIGRlZmF1bHQgZGVzdGluYXRpb24gZm9yIGFjY2VzcyBsb2cgZGF0YS4gUG9saWN5IHJ1bGVzIHBhc3MgaXQgdG8gYE1XRy5Mb2dnaW5nU2V0U3RvcmFnZVJlZ2lvbmAgdG8gYXBwbHkgdGhlIHJlZ2lvbiBvdmVycmlkZSBmb3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uIiwgIk1XRy5NQVREU2V0dGluZyI6ICJDb25maWd1cmVzIHRoZSBNY0FmZWUgQWR2YW5jZWQgVGhyZWF0IERlZmVuc2UgKEFURCkgbWFsd2FyZS1hbmFseXNpcyBmZWF0dXJlLCBlbmZvcmNpbmcgdGhhdCB0aGUgTUFURCBmbGFnIGlzIGVuYWJsZWQgaW4gdGhlIHVuZGVybHlpbmcgYW50aXZpcnVzIGNvbmZpZ3VyYXRpb24uIFBvbGljeSBydWxlcyBwYXNzIGl0IHRvIGBNV0cuQm9keUluZmVjdGVkYCB0byBjaGVjayBmb3IgaW5mZWN0aW9uLCBgTVdHLlZpcnVzTmFtZXNgIHRvIHJldHJpZXZlIGRldGVjdGVkIHZpcnVzIG5hbWVzLCBhbmQgYE1XRy5NYWx3YXJlUHJvYmFiaWxpdHlgIHRvIG9idGFpbiBhIG51bWVyaWMgbWFsd2FyZSBwcm9iYWJpbGl0eSBzY29yZS4iLCAiTVdHLk5leHRIb3BQcm94eVNldHRpbmciOiAiSG9sZHMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGEgbmV4dC1ob3AgcHJveHksIGRlZmluaW5nIHRoZSB1cHN0cmVhbSBwcm94eSB0byB3aGljaCB0aGUgZ2F0ZXdheSBzaG91bGQgZm9yd2FyZCB0cmFmZmljLiBQb2xpY3kgcnVsZXMgcGFzcyBhIHZhbHVlIG9mIHRoaXMgdHlwZSB0byBgTVdHLlNldE5leHRIb3BQcm94eWAgdG8gcm91dGUgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiB0aHJvdWdoIHRoZSBzcGVjaWZpZWQgdXBzdHJlYW0gcHJveHkuIiwgIk1XRy5Qcm9ncmVzc1BhZ2VTZXR0aW5nIjogIkNvbmZpZ3VyZXMgdGhlIHByb2dyZXNzIHBhZ2UgZmVhdHVyZSwgd2hpY2ggc2VuZHMgYW4gaW50ZXJtZWRpYXRlIEhUTUwgcGFnZSB0byB0aGUgY2xpZW50IHdoaWxlIGEgc2xvdyByZXNwb25zZSBpcyBiZWluZyBzY2FubmVkLiBQb2xpY3kgcnVsZXMgcGFzcyBpdCB0byBgTVdHLkVuYWJsZVByb2dyZXNzUGFnZWAgdG8gYWN0aXZhdGUgdGhlIGZlYXR1cmUsIGFuZCB1c2UgdGhlIHBhcmFtZXRlci1mcmVlIGZ1bmN0aW9ucyBgTVdHLlByb2dyZXNzUGFnZUVuYWJsZWRgIGFuZCBgTVdHLlByb2dyZXNzUGFnZVNlbnRgIHRvIGNoZWNrIHdoZXRoZXIgYSBwcm9ncmVzcyBwYWdlIGhhcyBiZWVuIGVuYWJsZWQgb3IgYWxyZWFkeSBkZWxpdmVyZWQgZm9yIHRoZSBjdXJyZW50IHJlcXVlc3QuIiwgIk1XRy5Qcm94eUNvbnRyb2xTZXR0aW5nIjogIkNvbmZpZ3VyZXMgc3BlY2lhbCBwcm94eSBjb250cm9sIGJlaGF2aW9yIHRoYXQgYWRqdXN0cyBob3cgdGhlIGdhdGV3YXkgaGFuZGxlcyBhIHRyYW5zYWN0aW9uIGF0IHRoZSBwcm94eSBsYXllci4gUG9saWN5IHJ1bGVzIHBhc3MgaXQgdG8gYE1XRy5Qcm94eUNvbnRyb2xgIHRvIGFwcGx5IHRob3NlIHNldHRpbmdzIHRvIHRoZSBjdXJyZW50IHJlcXVlc3QuIiwgIk1XRy5SZXBsaWNhdGVTZXJ2ZXJDZXJ0U2V0dGluZyI6ICJDb25maWd1cmVzIHRoZSBQcmVzZXJ2ZSBTZXJ2ZXIgQ2VydGlmaWNhdGUgZmVhdHVyZSwgd2hpY2ggY2F1c2VzIHRoZSBwcm94eSB0byByZXBsaWNhdGUgdGhlIG9yaWdpbiBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZSB0b3dhcmQgdGhlIGNsaWVudCByYXRoZXIgdGhhbiBwcmVzZW50aW5nIGl0cyBvd24gQ0Etc2lnbmVkIHN1YnN0aXR1dGUuIFBvbGljeSBydWxlcyBwYXNzIGEgdmFsdWUgb2YgdGhpcyB0eXBlIHRvIGBNV0cuRW5hYmxlUHJlc2VydmVTZXJ2ZXJDZXJ0YCB0byBlbmFibGUgdGhpcyBiZWhhdmlvciBmb3IgdGhlIGN1cnJlbnQgVExTIGNvbm5lY3Rpb24uIiwgIk1XRy5SZXF1ZXN0UmVzcG9uc2UiOiAiV3JhcHMgYSBgU2VjdXJlV2ViOjpJUmVxUmVzcE9iamVjdGAgdG8gcmVwcmVzZW50IGVpdGhlciB0aGUgY3VycmVudCBIVFRQIHJlcXVlc3Qgb3IgSFRUUCByZXNwb25zZSB3aXRoaW4gYSBwb2xpY3kgY3ljbGUuIGBNV0cuUmVxdWVzdGAgYW5kIGBNV0cuUmVzcG9uc2VgIHJldHVybiBgTVdHLlJlcXVlc3RSZXNwb25zZWAgb2JqZWN0cyBmb3IgdGhlIHJlc3BlY3RpdmUgY3ljbGUgc2lkZXMsIGBNV0cuQ3VycmVudFJlcXVlc3RPclJlc3BvbnNlYCByZXR1cm5zIHdoaWNoZXZlciBpcyBhY3RpdmUsIGFuZCBjYWxsYWJsZXMgc3VjaCBhcyBgTVdHLkhlYWRlcnNgIGFuZCBgTVdHLkJvZHlgIGFjY2VwdCBhIGBNV0cuUmVxdWVzdFJlc3BvbnNlYCB0byBhY2Nlc3MgaXRzIGhlYWRlciBtYXAgb3IgYm9keSBzdHJlYW0uIiwgIk1XRy5TYWZlU2VhcmNoRW5mb3JjZXJTZXR0aW5nIjogIkNvbmZpZ3VyZXMgdGhlIEdvb2dsZSBTYWZlU2VhcmNoIGVuZm9yY2VyLCB3aGljaCByZXdyaXRlcyBzZWFyY2gtZW5naW5lIHJlcXVlc3RzIHRvIGZvcmNlIHNhZmUtc2VhcmNoIGZpbHRlcmluZy4gUG9saWN5IHJ1bGVzIHBhc3MgaXQgdG8gYE1XRy5FbmFibGVTYWZlU2VhcmNoRW5mb3JjZXJgIHRvIGFjdGl2YXRlIGVuZm9yY2VtZW50IGZvciB0aGUgY3VycmVudCByZXF1ZXN0LiIsICJNV0cuU2FtbEF1dGhuUmVxdWVzdFNldHRpbmciOiAiQ29uZmlndXJlcyBTQU1MIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QgZ2VuZXJhdGlvbiwgY2FycnlpbmcgcHJvcGVydGllcyBzdWNoIGFzIHRoZSBJZFAgVVJMIGFuZCBzZXJ2aWNlIHByb3ZpZGVyIGVudGl0eSBJRC4gYE1XRy5TQU1MR2V0UmVxdWVzdFNldHRpbmdgIGNvbnN0cnVjdHMgYW5kIHJldHVybnMgdGhpcyB0eXBlIGZyb20gYSB0ZW5hbnQgSUQgYW5kIGNvbmZpZ3VyYXRpb24gSUQgcGFpciwgYW5kIGBNV0cuU0FNTENyZWF0ZUF1dGhuUmVxdWVzdGAgY29uc3VtZXMgaXQgdG8gcHJvZHVjZSB0aGUgZW5jb2RlZCBhdXRoZW50aWNhdGlvbiByZXF1ZXN0IHN0cmluZyBzZW50IHRvIHRoZSBpZGVudGl0eSBwcm92aWRlci4iLCAiTVdHLlNhbWxBdXRoblJlc3BvbnNlU2V0dGluZyI6ICJDb25maWd1cmVzIHZhbGlkYXRpb24gb2YgaW5jb21pbmcgU0FNTCBhdXRoZW50aWNhdGlvbiByZXNwb25zZXMsIGhvbGRpbmcgcHJvcGVydGllcyBzdWNoIGFzIEFDUyBVUkwsIGF1ZGllbmNlLCBlbnRpdHkgSUQsIElkUCBjZXJ0aWZpY2F0ZSwgYW5kIHNpZ25hdHVyZSBlbmZvcmNlbWVudCBmbGFncy4gYE1XRy5TQU1MR2V0UmVzcG9uc2VTZXR0aW5nYCBjb25zdHJ1Y3RzIGFuZCByZXR1cm5zIHRoaXMgdHlwZSBmcm9tIGEgdGVuYW50IElEIGFuZCBjb25maWd1cmF0aW9uIElEIHBhaXIsIGFuZCBgTVdHLlNBTUxQYXJzZUF1dGhuUmVzcG9uc2VgIGNvbnN1bWVzIGl0IHRvIHZhbGlkYXRlIGFuZCBwYXJzZSB0aGUgU0FNTCByZXNwb25zZSByZXR1cm5lZCBieSB0aGUgaWRlbnRpdHkgcHJvdmlkZXIuIiwgIk1XRy5TQU1MQ29uZmlndXJhdGlvbiI6ICJIb2xkcyBhIHNpbmdsZSBTQU1MIGNvbmZpZ3VyYXRpb24gSUQgc3RyaW5nIGlkZW50aWZ5aW5nIGEgc3BlY2lmaWMgU0FNTCBzZXR1cCwgcmV0dXJuZWQgYnkgYE1XRy5HZXRTQU1MQ29uZmlndXJhdGlvbmAuIFRoZSBzdG9yZWQgSUQgaXMgdXNlZCBhcyBhIGxvb2t1cCBrZXkgYW5kIHN1cHBvcnRzIG9yZGVyaW5nIGJ5IHZhbHVlLCBtYWtpbmcgdGhlIHR5cGUgc3VpdGFibGUgZm9yIHVzZSBpbiBwb2xpY3kgcnVsZSBzZXQgY29tcGFyaXNvbnMuIiwgIk1XRy5TQU1MRG9tYWluQXV0aGVudGljYXRpb24iOiAiU3RvcmVzIGEgbWFwcGluZyBmcm9tIGVtYWlsIGRvbWFpbiBuYW1lcyB0byAodGVuYW50IElELCBjb25maWd1cmF0aW9uIElEKSBwYWlycywgZW5hYmxpbmcgcGVyLWRvbWFpbiByb3V0aW5nIG9mIFNBTUwgYXV0aGVudGljYXRpb24gdG8gdGhlIGNvcnJlY3QgaWRlbnRpdHkgcHJvdmlkZXIuIGBNV0cuU0FNTEdldFRlbmFudEJ5TWFpbERvbWFpbmAgYWNjZXB0cyB0aGlzIHR5cGUgdG9nZXRoZXIgd2l0aCBhIGRvbWFpbiBzdHJpbmcgdG8gcmVzb2x2ZSB0aGUgdGVuYW50IElEIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGRvbWFpbi4iLCAiTVdHLlNlcnZpY2VDYXRlZ29yeUFuZEFjdGl2aXR5VHlwZSI6ICJQYWlycyBhbiBhcHBsaWNhdGlvbiBjYXRlZ29yeSBJRCB3aXRoIGEgc2V0IG9mIGFjdGl2aXR5IHN0cmluZ3MsIGJhY2tlZCBieSBgVEFwcGxpY2F0aW9uU2V0V2l0aEFjdGl2aXR5PEFwcGxpY2F0aW9uQ2F0ZWdvcnlJRD5gLiBBIHZhbHVlIGVuY29kZXMgYm90aCB0aGUgY2F0ZWdvcnkgYW5kIHRoZSBzcGVjaWZpYyBhY3Rpdml0aWVzIChzdWNoIGFzIHVwbG9hZCBvciBkb3dubG9hZCkgdGhhdCBhIHBvbGljeSBydWxlIGlzIGludGVyZXN0ZWQgaW4uIGBNV0cuU2VydmljZUFuZEFjdGl2aXR5Q29udGFpbmVkYCBhY2NlcHRzIGEgYFZFQ1RPUjxNV0cuU2VydmljZUNhdGVnb3J5QW5kQWN0aXZpdHlUeXBlPmAgYW5kIHJldHVybnMgdHJ1ZSB3aGVuIHRoZSBjdXJyZW50IHJlcXVlc3QncyBjYXRlZ29yeSBhbmQgYWN0aXZpdHkgbWF0Y2ggYW4gZW50cnkgaW4gdGhlIGxpc3QuIiwgIk1XRy5TZXJ2aWNlR3JvdXBBbmRBY3Rpdml0eVR5cGUiOiAiUGFpcnMgYSBzZXJ2aWNlIGdyb3VwIElEIHdpdGggYSBzZXQgb2YgYWN0aXZpdHkgc3RyaW5ncywgYmFja2VkIGJ5IGBUQXBwbGljYXRpb25TZXRXaXRoQWN0aXZpdHk8QXBwbGljYXRpb25TZXJ2aWNlR3JvdXBJRD5gLiBFYWNoIHZhbHVlIHNwZWNpZmllcyBib3RoIHdoaWNoIG5hbWVkIHNlcnZpY2UgZ3JvdXAgYW5kIHdoaWNoIGFjdGl2aXRpZXMgbXVzdCBtYXRjaCBmb3IgYSBwb2xpY3kgY29uZGl0aW9uIHRvIGZpcmUuIGBNV0cuU2VydmljZUFuZEFjdGl2aXR5Q29udGFpbmVkYCBhY2NlcHRzIGEgYFZFQ1RPUjxNV0cuU2VydmljZUdyb3VwQW5kQWN0aXZpdHlUeXBlPmAgYW5kIGV2YWx1YXRlcyB3aGV0aGVyIHRoZSBjdXJyZW50IHNlcnZpY2UgYW5kIGl0cyBkZXRlY3RlZCBhY3Rpdml0eSBhcHBlYXIgaW4gdGhhdCBsaXN0LiIsICJNV0cuU2VydmljZVN1YkNhdGVnb3J5QW5kQWN0aXZpdHlUeXBlIjogIlBhaXJzIGFuIGFwcGxpY2F0aW9uIHN1Yi1jYXRlZ29yeSBJRCB3aXRoIGEgc2V0IG9mIGFjdGl2aXR5IHN0cmluZ3MsIGJhY2tlZCBieSBgVEFwcGxpY2F0aW9uU2V0V2l0aEFjdGl2aXR5PEFwcGxpY2F0aW9uU3ViQ2F0ZWdvcnlJRD5gLiBUaGUgY29tYmluZWQgdmFsdWUgbGV0cyBhIHBvbGljeSBydWxlIHJlc3RyaWN0IGVuZm9yY2VtZW50IHRvIHBhcnRpY3VsYXIgYWN0aXZpdGllcyB3aXRoaW4gYSBzdWItY2F0ZWdvcnkgcmF0aGVyIHRoYW4gYmxvY2tpbmcgdGhlIHN1Yi1jYXRlZ29yeSBhcyBhIHdob2xlLiBgTVdHLlNlcnZpY2VBbmRBY3Rpdml0eUNvbnRhaW5lZGAgYWNjZXB0cyBhIGBWRUNUT1I8TVdHLlNlcnZpY2VTdWJDYXRlZ29yeUFuZEFjdGl2aXR5VHlwZT5gIHRvIHBlcmZvcm0gdGhpcyBjb21iaW5lZCBzdWItY2F0ZWdvcnktYW5kLWFjdGl2aXR5IGNoZWNrIGFnYWluc3QgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uIiwgIk1XRy5TbWFydE1hdGNoTGlzdCI6ICJTdG9yZXMgYSBjb21waWxlZCBsaXN0IG9mIFVSTCBwYXR0ZXJucyB0aGF0IHN1cHBvcnQgZmxleGlibGUgaG9zdCwgcGF0aCwgcG9ydCwgcHJvdG9jb2wsIGFuZCBxdWVyeS1wYXJhbWV0ZXIgbWF0Y2hpbmcsIGluY2x1ZGluZyBzdWJkb21haW4gd2lsZGNhcmQgc2VtYW50aWNzLiBgTVdHLlNtYXJ0TWF0Y2hgIGFjY2VwdHMgYSBgTVdHLlVSTGAgYW5kIGEgYE1XRy5TbWFydE1hdGNoTGlzdGAgYW5kIHJldHVybnMgdHJ1ZSB3aGVuIHRoZSByZXF1ZXN0IFVSTCBtYXRjaGVzIGFueSBlbnRyeS4gRW50cmllcyB3aXRoIGEgbGVhZGluZyBlcXVhbHMgc2lnbiBlbmZvcmNlIGV4YWN0IGhvc3RuYW1lIG1hdGNoaW5nLCBhbmQgZm9yIGxhcmdlIGxpc3RzIGFuIGludGVybmFsIGRvbWFpbi10cmVlIGluZGV4IGlzIGJ1aWx0IGF1dG9tYXRpY2FsbHkgdG8gcmVkdWNlIGxvb2t1cCBjb3N0LiIsICJNV0cuVElFRmlsZVJlcHV0YXRpb25TZXR0aW5nIjogIkNhcnJpZXMgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgdG8gcXVlcnkgdGhlIFRyZWxsaXggSW50ZWxsaWdlbmNlIEV4Y2hhbmdlIChUSUUpIHNlcnZlciBmb3IgZmlsZSByZXB1dGF0aW9uIHNjb3Jlcy4gYE1XRy5USUVGaWxlUmVwdXRhdGlvbmAgYWNjZXB0cyBhIGBNV0cuVElFRmlsZVJlcHV0YXRpb25TZXR0aW5nYCBhbmQgcmV0dXJucyBhIG51bWVyaWMgcmVwdXRhdGlvbiBzY29yZSBmb3IgdGhlIGN1cnJlbnQgcmVxdWVzdCBib2R5LiBUaGUgc2V0dGluZyBpcyByZWdpc3RlcmVkIGFzIGEgREVGSU5FX1NFVFRJTkcgdHlwZSBhbmQgaXMgY29uc3VtZWQgZXhjbHVzaXZlbHkgYnkgdGhlIFRJRSBmaWxlLXJlcHV0YXRpb24gZmlsdGVyIHBpcGVsaW5lLiIsICJNV0cuVVJMIjogIlJlcHJlc2VudHMgYSBmdWxseSBwYXJzZWQgVVJMLCBleHBvc2luZyBpdHMgaW5kaXZpZHVhbCBjb21wb25lbnRzIFx1MjAxNCBzY2hlbWUsIGhvc3QsIHBvcnQsIHBhdGgsIHBhcmFtZXRlcnMsIGFuZCBmaWxlIGluZm9ybWF0aW9uIFx1MjAxNCBmb3IgdXNlIGluIHBvbGljeSBjb25kaXRpb25zIGFuZCBhY3Rpb25zLiBUaGUgY3VycmVudCByZXF1ZXN0IFVSTCBpcyByZXRyaWV2ZWQgdmlhIGBNV0cuVXJsYCwgYW5kIGNvbXBvbmVudHMgY2FuIGJlIHJlYWQgd2l0aCBmdW5jdGlvbnMgc3VjaCBhcyBgTVdHLkhvc3RgLCBgTVdHLkRvbWFpbmAsIGBNV0cuUGF0aGAsIGBNV0cuUHJvdG9jb2xgLCBgTVdHLlBvcnRgLCBhbmQgYE1XRy5TbWFydE1hdGNoYCwgb3IgbW9kaWZpZWQgaW4gcGxhY2Ugd2l0aCBwcm9jZWR1cmVzIHN1Y2ggYXMgYE1XRy5TZXRgLCBgTVdHLlNldEhvc3RgLCBgTVdHLlNldFJhd2AsIGFuZCBgTVdHLlNldFBhcmFtZXRlcmAuIiwgIk1XRy5VcmxDYXRlZ29yaXphdGlvblNldHRpbmciOiAiQ29uZmlndXJlcyB0aGUgR1RJIChHbG9iYWwgVGhyZWF0IEludGVsbGlnZW5jZSkgVVJMIGNhdGVnb3JpemF0aW9uIGFuZCByZXB1dGF0aW9uIHNlcnZpY2UsIHdpdGggb3B0aW9uYWwgcGFydGlhbC1jb25maWd1cmF0aW9uIG92ZXJyaWRlcyBmb3Igc2VydmVyIGNlcnRpZmljYXRlcyBhbmQgRE5TIGxvb2t1cCBiZWhhdmlvci4gUG9saWN5IHJ1bGVzIHBhc3MgaXQgdG8gY2FsbGFibGVzIHN1Y2ggYXMgYE1XRy5VcmxDYXRlZ29yaWVzYCwgYE1XRy5VUkxSZXB1dGF0aW9uYCwgYE1XRy5VUkxSZXB1dGF0aW9uU3RyaW5nYCwgYE1XRy5VcmxIYXNIaWdoUmlza2AsIGBNV0cuVXJsSGFzTWVkaXVtUmlza2AsIGBNV0cuVXJsSGFzTWluaW1hbFJpc2tgLCBgTVdHLlVybEhhc1VudmVyaWZpZWRSaXNrYCwgYE1XRy5VcmxDYXRlZ29yaXplZEJ5Rm9yd2FyZEROU2AsIGBNV0cuVXJsQ2F0ZWdvcml6ZWRCeVJldmVyc2VETlNgLCBgTVdHLlVybENhdGVnb3JpemF0aW9uQ2xvdWRMb29rdXBEb25lYCwgYE1XRy5VcmxDYXRlZ29yaXplZEJ5Q2xvdW5kTG9va3VwYCwgYE1XRy5VcmxDYXRlZ29yaXplZEJ5RENDYCwgYE1XRy5Cb2R5UmVwdXRhdGlvbklzR29vZGAsIGBNV0cuQm9keVJlcHV0YXRpb25Jc0JhZGAsIGBNV0cuQm9keVJlcHV0YXRpb25Jc0tub3duYCwgYW5kIGBNV0cuVXJsR2VvbG9jYXRpb25gIHRvIGV2YWx1YXRlIFVSTCByaXNrLCBjYXRlZ29yeSwgYW5kIGJvZHkgcmVwdXRhdGlvbiBpbiBwb2xpY3kgcnVsZXMuIiwgIk1XRy5VcmxDYXRlZ29yeSI6ICJFbmNvZGVzIGEgc2luZ2xlIG51bWVyaWMgR1RJIChHbG9iYWwgVGhyZWF0IEludGVsbGlnZW5jZSkgVVJMIGNhdGVnb3J5IGlkZW50aWZpZXIuIGBNV0cuVXJsQ2F0ZWdvcmllc2AgcmV0dXJucyBhIGBWRUNUT1I8TVdHLlVybENhdGVnb3J5PmAgZm9yIHRoZSBjdXJyZW50IHJlcXVlc3QgVVJMLCBhbmQgYFRvU3RyaW5nYCBhbmQgYFRvSURTdHJpbmdgIGNvbnZlcnQgYSBjYXRlZ29yeSB2YWx1ZSB0byBpdHMgaHVtYW4tcmVhZGFibGUgb3IgbnVtZXJpYyBzdHJpbmcgZm9ybS4gQ2F0ZWdvcmllcyBjYW4gYmUgc3RvcmVkIGluIHNldHMgYW5kIGNvbXBhcmVkIHdpdGggYENvbnRhaW5zYCwgYElzU3ViU2V0YCwgYW5kIGBJc0Rpc2pvaW5lZGAgb3BlcmF0aW9ucyBvbiBjYXRlZ29yeSB2ZWN0b3JzLiIsICJOZXQuSVAiOiAiUmVwcmVzZW50cyBhIHBhcnNlZCBJUHY0IG9yIElQdjYgYWRkcmVzcy4gYE1XRy5DbGllbnRJUGAgYW5kIGBNV0cuQ2xpZW50RUdyZXNzSVBgIHJldHVybiBgTmV0LklQYCB2YWx1ZXMsIGBOZXQuVG9JUGAgY29uc3RydWN0cyBvbmUgZnJvbSBhIHN0cmluZywgYW5kIGBOZXQuSXNJUHY2YCB0ZXN0cyBhZGRyZXNzIGZhbWlseS4gVGhlIGFkZHJlc3MgY2FuIGJlIHBhc3NlZCB0byBgTmV0LklzSW5SYW5nZWAgb3IgYE5ldC5Jc0luUmFuZ2VMaXN0YCB0byBjaGVjayBtZW1iZXJzaGlwIGFnYWluc3QgYE5ldC5JUFJhbmdlYCB2YWx1ZXMuIiwgIk5ldC5JUFJhbmdlIjogIlJlcHJlc2VudHMgYSBjb250aWd1b3VzIHJhbmdlIG9mIElQIGFkZHJlc3NlcyBkZWZpbmVkIGJ5IGEgYmVnaW4gYW5kIGVuZCBhZGRyZXNzLiBgTmV0LlRvSVBSYW5nZWAgcGFyc2VzIGEgc3RyaW5nIGludG8gYSByYW5nZSwgYW5kIGBOZXQuSXNJblJhbmdlYCBhbmQgYE5ldC5Jc0luUmFuZ2VMaXN0YCB0ZXN0IHdoZXRoZXIgYSBgTmV0LklQYCBmYWxscyB3aXRoaW4gb25lIG9yIG1vcmUgcmFuZ2VzLiBCZWdpbiBhbmQgZW5kIGFkZHJlc3NlcyBhcmUgYWNjZXNzaWJsZSB2aWEgYE5ldC5CZWdpbmAgYW5kIGBOZXQuRW5kYC4iLCAiUkJJLkNsaXBib2FyZENvbnRyb2xMaXN0IjogIkhvbGRzIGEgbGlzdCBvZiBob3N0LXBhdHRlcm4tdG8tY2xpcGJvYXJkLWZ1bmN0aW9uIG1hcHBpbmdzIHVzZWQgdG8gY29udHJvbCBjb3B5IGFuZCBwYXN0ZSBiZWhhdmlvciBpbiBSZW1vdGUgQnJvd3NlciBJc29sYXRpb24gc2Vzc2lvbnMuIGBSQkkuU2V0Q2xpcGJvYXJkUG9saWN5QmxvY2tgIGFuZCBgUkJJLlNldENsaXBib2FyZFBvbGljeVBlcm1pdGAgZWFjaCBhY2NlcHQgYSBgUkJJLkNsaXBib2FyZENvbnRyb2xMaXN0YCB0byBkZWZpbmUgcGVyLWhvc3QgZXhjZXB0aW9ucyB0byB0aGUgZGVmYXVsdCBjbGlwYm9hcmQgcG9saWN5LiBFYWNoIGVudHJ5IHBhaXJzIGEgY2FzZS1pbnNlbnNpdGl2ZSBKYXZhU2NyaXB0IHJlZ3VsYXIgZXhwcmVzc2lvbiBhZ2FpbnN0IGEgaG9zdCB3aXRoIGEgY29udHJvbCBzdHJpbmcgc3VjaCBhcyBcImNvcHlcIiwgXCJwYXN0ZVwiLCBvciBcImNvcHkrcGFzdGVcIi4iLCAiUmVnRXhKU2kiOiAiRW5jYXBzdWxhdGVzIGEgc2luZ2xlIGNvbXBpbGVkLCBjYXNlLWluc2Vuc2l0aXZlIEphdmFTY3JpcHQtY29tcGF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb24uIENhbGxhYmxlcyBzdWNoIGFzIGBDb250YWluc01hdGNoYCBhbmQgYEZpbmRgIGFjY2VwdCBhIGBSZWdFeEpTaWAgdG8gbWF0Y2ggb3IgbG9jYXRlIHBhdHRlcm5zIGluIHN0cmluZ3Mgb3IgbWVkaWEgdHlwZSB2ZWN0b3JzLCBhbmQgYE1XRy5SZW1vdmVBbGxNYXRjaGluZ2AgdXNlcyBvbmUgdG8gZmlsdGVyIEhUVFAgaGVhZGVyIGVudHJpZXMuIFRoZSBleHByZXNzaW9uIHN1cHBvcnRzIG1hdGNoaW5nLCBzZWFyY2hpbmcsIHdpbGRjYXJkLWdyb3VwIGNhcHR1cmUsIGFuZCBzdHJpbmcgcmVwbGFjZW1lbnQgb3BlcmF0aW9ucy4iLCAiUmVnRXhKU2kuTGlzdCI6ICJIb2xkcyBhbiBvcmRlcmVkLCBjb21waWxlZCBsaXN0IG9mIGNhc2UtaW5zZW5zaXRpdmUgSmF2YVNjcmlwdC1jb21wYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBjYW4gYmUgdGVzdGVkIGFzIGEgZ3JvdXAuIGBSZWdFeEpTaS5BZGRgIGFwcGVuZHMgYSBgUmVnRXhKU2lgIG9yIGEgcmF3IHN0cmluZyB0byBhIGBSZWdFeEpTaS5MaXN0YCwgYW5kIGBDb250YWluc2AgdGVzdHMgd2hldGhlciBhbnkgZW50cnkgbWF0Y2hlcyBhIGdpdmVuIGlucHV0LiBJbiBjdXN0b21lci1jb250cm9sbGVkIHBvbGljeSBjb250ZXh0cywgaW52YWxpZCByZWdleCBlbnRyaWVzIGNhdXNlIGRlc2VyaWFsaXphdGlvbiB0byBmYWlsOyBpbiBtYW5hZ2VkIGNvbnRleHRzIHRoZSBsaXN0IGlzIGFjY2VwdGVkIHBlcm1pc3NpdmVseS4iLCAiVUNFLkRldmljZVByb2ZpbGUiOiAiUmVwcmVzZW50cyBhIG5hbWVkIGRldmljZSBwcm9maWxlIHRva2VuIHJlcG9ydGVkIGJ5IGEgbWFuYWdlZCBjbGllbnQgZW5kcG9pbnQuIGBVQ0UuR2V0Q2xpZW50RGV2aWNlUHJvZmlsZXNgIHJldHVybnMgYSBgVkVDVE9SPFVDRS5EZXZpY2VQcm9maWxlPmAgcmVmbGVjdGluZyB0aGUgcHJvZmlsZXMgYWN0aXZlIG9uIHRoZSBjb25uZWN0aW5nIGRldmljZSwgYW5kIGBDb250YWluc2AgdGVzdHMgd2hldGhlciBhIHNwZWNpZmljIHByb2ZpbGUgbmFtZSBpcyBwcmVzZW50IGluIHRoYXQgdmVjdG9yLiBUaGUgdHlwZSBpcyB1c2VkIGluIHBvbGljeSBydWxlcyB0byBtYWtlIGFjY2VzcyBkZWNpc2lvbnMgYmFzZWQgb24gZW5kcG9pbnQgY29tcGxpYW5jZSBzdGF0ZS4iLCAiVUNFLkZpbGVUcmFuc2ZlckNvbnRyb2xMaXN0IjogIlN0b3JlcyBhIGxpc3Qgb2YgaG9zdC1yZWdleC10by1tZWRpYS10eXBlIHBhaXJzIHRoYXQgZ292ZXJuIGZpbGUgdXBsb2FkIGFuZCBkb3dubG9hZCBwZXJtaXNzaW9ucyBpbiBSZW1vdGUgQnJvd3NlciBJc29sYXRpb24gc2Vzc2lvbnMuIGBSQkkuU2V0VXBsb2FkRmlsZUNvbnRyb2xCbG9ja2AsIGBSQkkuU2V0VXBsb2FkRmlsZUNvbnRyb2xQZXJtaXRgLCBgUkJJLlNldERvd25sb2FkRmlsZUNvbnRyb2xCbG9ja2AsIGFuZCBgUkJJLlNldERvd25sb2FkRmlsZUNvbnRyb2xQZXJtaXRgIGVhY2ggYWNjZXB0IGEgYFVDRS5GaWxlVHJhbnNmZXJDb250cm9sTGlzdGAgdG8gZGVmaW5lIHBlci1ob3N0LCBwZXItbWVkaWEtdHlwZSBleGNlcHRpb25zLiBgQ29udGFpbnNgIHRlc3RzIHdoZXRoZXIgYSBnaXZlbiBkb21haW4gYW5kIG1lZGlhIHR5cGUgY29tYmluYXRpb24gaXMgcHJlc2VudCBpbiB0aGUgbGlzdC4iLCAiVUNFLlByaXZhdGVBcHAiOiAiUmVwcmVzZW50cyBhIGRldGVjdGVkIHByaXZhdGUgYXBwbGljYXRpb24gZW50cnksIGhvbGRpbmcgdGhlIGFwcCdzIGhvc3QgcGF0dGVybiwgSVAgcmFuZ2UsIHByb3RvY29sLCBjb25maWd1cmVkIHBvcnRzLCBjb25uZWN0b3IgZ3JvdXAgYXNzaWdubWVudHMsIGFuZCBydW50aW1lIHJvdXRpbmcgbWV0YWRhdGEuIGBVQ0UuR2V0UHJpdmF0ZUFwcGAgcmV0dXJucyB0aGUgYFVDRS5Qcml2YXRlQXBwYCBmb3IgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiwgYW5kIGNhbGxhYmxlcyBzdWNoIGFzIGBVQ0UuSXNQcml2YXRlQXBwYCwgYFVDRS5OYW1lYCwgYFVDRS5JRGAsIGFuZCBgVUNFLkFwcEdyb3Vwc2AgaW50ZXJyb2dhdGUgaXRzIGZpZWxkcyBpbiBwb2xpY3kgcnVsZXMuIGBVQ0UuTWFya0ZvclJCSWAgdXBkYXRlcyB0aGUgaW5zdGFuY2UgdG8gZmxhZyB0aGUgY29ubmVjdGlvbiBmb3IgYnJvd3NlciBpc29sYXRpb24uIiwgIllvdVR1YmVWaWRlb0NhdGVnb3J5IjogIlJlcHJlc2VudHMgYSBZb3VUdWJlIHZpZGVvIGNhdGVnb3J5IGlkZW50aWZpZXIgYXMgYSBzdHJpbmcgdmFsdWUuIGBUb1lvdVR1YmVWaWRlb0NhdGVnb3J5YCBjb252ZXJ0cyBhIHN0cmluZyBpbnRvIGEgYFlvdVR1YmVWaWRlb0NhdGVnb3J5YCwgYFRvU3RyaW5nYCByZXR1cm5zIHRoZSBjYXRlZ29yeSBuYW1lLCBhbmQgYENvbnRhaW5zYCB0ZXN0cyBtZW1iZXJzaGlwIHdpdGhpbiBhIGBWRUNUT1I8WW91VHViZVZpZGVvQ2F0ZWdvcnk+YC4gUG9saWN5IHJ1bGVzIHVzZSB0aGUgdHlwZSB0byBtYXRjaCBvciBjb21wYXJlIHRoZSBjYXRlZ29yeSBvZiBhIFlvdVR1YmUgdmlkZW8gYWdhaW5zdCBhZG1pbmlzdHJhdG9yLWRlZmluZWQgc2V0cy4ifQ==
eyJOVU1CRVIiOiAiL1NTRV9Qb2xpY3lfQ29kZS9BYm91dF9Ta3loaWdoX1BvbGljeV9Db2RlL1NreWhpZ2hfUG9saWN5X0NvZGVfRXNzZW50aWFscyNOYXRpdmVfT2JqZWN0X1R5cGVzIiwgIlNUUklORyI6ICIvU1NFX1BvbGljeV9Db2RlL0Fib3V0X1NreWhpZ2hfUG9saWN5X0NvZGUvU2t5aGlnaF9Qb2xpY3lfQ29kZV9Fc3NlbnRpYWxzI05hdGl2ZV9PYmplY3RfVHlwZXMiLCAiQk9PTEVBTiI6ICIvU1NFX1BvbGljeV9Db2RlL0Fib3V0X1NreWhpZ2hfUG9saWN5X0NvZGUvU2t5aGlnaF9Qb2xpY3lfQ29kZV9Fc3NlbnRpYWxzI05hdGl2ZV9PYmplY3RfVHlwZXMiLCAiKFZFQ1RPUilcXDwiOiAiL1NTRV9Qb2xpY3lfQ29kZS9BYm91dF9Ta3loaWdoX1BvbGljeV9Db2RlL1NreWhpZ2hfUG9saWN5X0NvZGVfRXNzZW50aWFscyNWRUNUT1IuM0NJdGVtVHlwZS4zRSIsICIoTUFQKVxcPCI6ICIvU1NFX1BvbGljeV9Db2RlL0Fib3V0X1NreWhpZ2hfUG9saWN5X0NvZGUvU2t5aGlnaF9Qb2xpY3lfQ29kZV9Fc3NlbnRpYWxzI01BUC4zQ0tleVR5cGUuMkNfVmFsdWVUeXBlLjNFIn0=
