IyEvYmluL3NoCiMKIyBDb3B5cmlnaHQgKGMpIDIwMDYgSm9oYW5uZXMgRS4gU2NoaW5kZWxpbgojCgp0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc2hvcnRsb2cKJwoKR0lUX1RFU1RfREVGQVVMVF9JTklUSUFMX0JSQU5DSF9OQU1FPW1haW4KZXhwb3J0IEdJVF9URVNUX0RFRkFVTFRfSU5JVElBTF9CUkFOQ0hfTkFNRQoKLiAuL3Rlc3QtbGliLnNoCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJwoJdGVzdF90aWNrICYmCgllY2hvIDEgPmExICYmCglnaXQgYWRkIGExICYmCgl0cmVlPSQoZ2l0IHdyaXRlLXRyZWUpICYmCgljb21taXQ9JChwcmludGYgIiVzXG4iICJUZXN0IiAiIiB8IGdpdCBjb21taXQtdHJlZSAiJHRyZWUiKSAmJgoJZ2l0IHVwZGF0ZS1yZWYgSEVBRCAiJGNvbW1pdCIgJiYKCgllY2hvIDIgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIlRoaXMgaXMgYSB2ZXJ5LCB2ZXJ5IGxvbmcgZmlyc3QgbGluZSBmb3IgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIHNlZSBpZiBpdCBpcyB3cmFwcGVkIGNvcnJlY3RseSIgYTEgJiYKCgkjIHRlc3QgaWYgdGhlIHdyYXBwaW5nIGlzIHN0aWxsIHZhbGlkCgkjIHdoZW4gcmVwbGFjaW5nIGFsbCBpcyBieSB0cmVibGUgY2xlZnMuCgllY2hvIDMgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIiQoCgkJZWNobyAiVGhpcyBpcyBhIHZlcnksIHZlcnkgbG9uZyBmaXJzdCBsaW5lIGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gc2VlIGlmIGl0IGlzIHdyYXBwZWQgY29ycmVjdGx5IiB8CgkJc2VkICJzL2kvMTIzNC9nIiB8CgkJdHIgMTIzNCAiXDM2MFwyMzVcMjA0XDIzNiIpIiBhMSAmJgoKCSMgbm93IGZzY2sgdXAgdGhlIHV0ZjgKCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBub24tdXRmLTggJiYKCWVjaG8gNCA+YTEgJiYKCWdpdCBjb21taXQgLS1xdWlldCAtbSAiJCgKCQllY2hvICJUaGlzIGlzIGEgdmVyeSwgdmVyeSBsb25nIGZpcnN0IGxpbmUgZm9yIHRoZSBjb21taXQgbWVzc2FnZSB0byBzZWUgaWYgaXQgaXMgd3JhcHBlZCBjb3JyZWN0bHkiIHwKCQlzZWQgInMvaS8xMjM0L2ciIHwKCQl0ciAxMjM0ICJcMzcwXDIzNVwyMDRcMjM2IikiIGExICYmCgoJZWNobyA1ID5hMSAmJgoJZ2l0IGNvbW1pdCAtLXF1aWV0IC1tICJhCQkJCQkJCQkxMgkzNAk1Ngk3OCIgYTEgJiYKCgllY2hvIDYgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIkNvbW1pdCBieSBzb21lb25lIGVsc2UiIFwKCQktLWF1dGhvcj0iU29tZW9uZSBlbHNlIDxub3QhbWU+IiBhMSAmJgoKCWNhdCA+ZXhwZWN0LnRlbXBsYXRlIDw8LVxFT0YKCUEgVSBUaG9yICg1KToKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCglTb21lb25lIGVsc2UgKDEpOgoJICAgICAgU1VCSkVDVAoKCUVPRgonCgpmdXp6KCkgewoJZmlsZT0kMSAmJgoJc2VkICIKCQkJcy8kT0lEX1JFR0VYL09CSkVDVF9OQU1FL2cKCQkJcy8kX3gzNS9PQkpJRC9nCgkJCXMvXiBcezZcfVtDVGFdLiovICAgICAgU1VCSkVDVC9nCgkJCXMvXiBcezhcfVteIF0uKi8gICAgICAgIENPTlRJTlVBVElPTi9nCgkJIiA8IiRmaWxlIiA+IiRmaWxlLmZ1enp5IiAmJgoJc2VkICIvQ09OVElOVUFUSU9OLyBkIiA8IiRmaWxlLmZ1enp5Igp9Cgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWZhdWx0IG91dHB1dCBmb3JtYXQnICcKCWdpdCBzaG9ydGxvZyBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdC50ZW1wbGF0ZSBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldHR5IGZvcm1hdCcgJwoJc2VkIHMvU1VCSkVDVC9PQkpFQ1RfTkFNRS8gZXhwZWN0LnRlbXBsYXRlID5leHBlY3QgJiYKCWdpdCBzaG9ydGxvZyAtLWZvcm1hdD0iJUgiIEhFQUQgPmxvZyAmJgoJZnV6eiBsb2cgPmxvZy5wcmVkaWN0YWJsZSAmJgoJdGVzdF9jbXAgZXhwZWN0IGxvZy5wcmVkaWN0YWJsZQonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmV0dHkgZm9ybWF0ICh3aXRoIC0tZGF0ZSknICcKCXNlZCAicy9TVUJKRUNULzIwMDUtMDQtMDcgT0JKRUNUX05BTUUvIiBleHBlY3QudGVtcGxhdGUgPmV4cGVjdCAmJgoJZ2l0IHNob3J0bG9nIC0tZm9ybWF0PSIlYWQgJUgiIC0tZGF0ZT1zaG9ydCBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdCBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1hYmJyZXYnICcKCXNlZCBzL1NVQkpFQ1QvT0JKSUQvIGV4cGVjdC50ZW1wbGF0ZSA+ZXhwZWN0ICYmCglnaXQgc2hvcnRsb2cgLS1mb3JtYXQ9IiVoIiAtLWFiYnJldj0zNSBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdCBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnb3V0cHV0IGZyb20gdXNlci1kZWZpbmVkIGZvcm1hdCBpcyByZS13cmFwcGVkJyAnCglzZWQgInMvU1VCSkVDVC90d28gbGluZXMvIiBleHBlY3QudGVtcGxhdGUgPmV4cGVjdCAmJgoJZ2l0IHNob3J0bG9nIC0tZm9ybWF0PSJ0d28lbmxpbmVzIiBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdCBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1cgJ3Nob3J0bG9nIHdyYXBwaW5nJyAnCgljYXQgPmV4cGVjdCA8PFxFT0YgJiYKQSBVIFRob3IgKDUpOgogICAgICBUZXN0CiAgICAgIFRoaXMgaXMgYSB2ZXJ5LCB2ZXJ5IGxvbmcgZmlyc3QgbGluZSBmb3IgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIHNlZSBpZgogICAgICAgICBpdCBpcyB3cmFwcGVkIGNvcnJlY3RseQogICAgICBUaPCdhJ5zIPCdhJ5zIGEgdmVyeSwgdmVyeSBsb25nIGbwnYSecnN0IGzwnYSebmUgZm9yIHRoZSBjb21t8J2EnnQgbWVzc2FnZSB0byBzZWUg8J2EnmYKICAgICAgICAg8J2EnnQg8J2EnnMgd3JhcHBlZCBjb3JyZWN0bHkKICAgICAgVGj4nYSecyD4nYSecyBhIHZlcnksIHZlcnkgbG9uZyBm+J2EnnJzdCBs+J2Enm5lIGZvciB0aGUgY29tbfidhJ50CiAgICAgICAgIG1lc3NhZ2UgdG8gc2VlIPidhJ5mIPidhJ50IPidhJ5zIHdyYXBwZWQgY29ycmVjdGx5CiAgICAgIGEJCQkJCQkJCTEyCTM0CiAgICAgICAgIDU2CTc4CgpTb21lb25lIGVsc2UgKDEpOgogICAgICBDb21taXQgYnkgc29tZW9uZSBlbHNlCgpFT0YKCWdpdCBzaG9ydGxvZyAtdyBIRUFEID5vdXQgJiYKCXRlc3RfY21wIGV4cGVjdCBvdXQKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1cgJ3Nob3J0bG9nIGZyb20gbm9uLWdpdCBkaXJlY3RvcnknICcKCWdpdCBsb2cgLS1uby1leHBhbmQtdGFicyBIRUFEID5sb2cgJiYKCUdJVF9ESVI9bm9uLWV4aXN0aW5nIGdpdCBzaG9ydGxvZyAtdyA8bG9nID5vdXQgJiYKCXRlc3RfY21wIGV4cGVjdCBvdXQKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1cgJ3Nob3J0bG9nIGNhbiByZWFkIC0tZm9ybWF0PXJhdyBvdXRwdXQnICcKCWdpdCBsb2cgLS1mb3JtYXQ9cmF3IEhFQUQgPmxvZyAmJgoJR0lUX0RJUj1ub24tZXhpc3RpbmcgZ2l0IHNob3J0bG9nIC13IDxsb2cgPm91dCAmJgoJdGVzdF9jbXAgZXhwZWN0IG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBmcm9tIG5vbi1naXQgZGlyZWN0b3J5IHJlZnVzZXMgZXh0cmEgYXJndW1lbnRzJyAnCgl0ZXN0X211c3RfZmFpbCBlbnYgR0lUX0RJUj1ub24tZXhpc3RpbmcgZ2l0IHNob3J0bG9nIGZvbyAyPm91dCAmJgoJdGVzdF9ncmVwICJ0b28gbWFueSBhcmd1bWVudHMiIG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBzaG91bGQgYWRkIG5ld2xpbmUgd2hlbiBpbnB1dCBsaW5lIG1hdGNoZXMgd3JhcGxlbicgJwoJY2F0ID5leHBlY3QgPDxcRU9GICYmCkEgVSBUaG9yICgyKToKICAgICAgYmJiYmJiYmJiYmJiYmJiYmJiOiBiYmJiYmJiYiBiYmIgYmJiYiBiYmJiYmJiIGJiIGJiYmIgYmJiIGJiYmJiIGJiYmJiYgogICAgICBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhOiBhYWFhYWEgYWFhYWFhYWFhYSBhYWFhIGFhYWFhYWFhIGFhIGFhYWEgYWEgYWFhCgpFT0YKCWdpdCBzaG9ydGxvZyAtdyA+b3V0IDw8XEVPRiAmJgpjb21taXQgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMQpBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CkRhdGU6ICAgVGh1IEFwciA3IDE1OjE0OjEzIDIwMDUgLTA3MDAKCiAgICBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhOiBhYWFhYWEgYWFhYWFhYWFhYSBhYWFhIGFhYWFhYWFhIGFhIGFhYWEgYWEgYWFhCgpjb21taXQgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMgpBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CkRhdGU6ICAgVGh1IEFwciA3IDE1OjE0OjEzIDIwMDUgLTA3MDAKCiAgICBiYmJiYmJiYmJiYmJiYmJiYmI6IGJiYmJiYmJiIGJiYiBiYmJiIGJiYmJiYmIgYmIgYmJiYiBiYmIgYmJiYmIgYmJiYmJiCgpFT0YKCXRlc3RfY21wIGV4cGVjdCBvdXQKJwoKaWNvbnZmcm9tdXRmOHRvaXNvODg1OTEoKSB7CglwcmludGYgIiVzIiAiJCoiIHwgaWNvbnYgLWYgVVRGLTggLXQgSVNPODg1OS0xCn0KCkRTQ0hPPSJKw7Zow6RubsOrcyBcIkRzY2jDtlwiIFNjaGluZMOrbGluIgpEU0NIT0U9IiREU0NITyA8Sm9oYW5uZXMuU2NoaW5kZWxpbkBnbXguZGU+IgpNU0cxPSJzZXQgYTEgdG8gMiBhbmQgc29tZSBub24tQVNDSUkgY2hhcnM6IMOEw5/DuCIKTVNHMj0ic2V0IGExIHRvIDMgYW5kIHNvbWUgbm9uLUFTQ0lJIGNoYXJzOiDDocOmw68iCmNhdCA+IGV4cGVjdCA8PCBFT0YKJERTQ0hPICgyKToKICAgICAgJE1TRzEKICAgICAgJE1TRzIKCkVPRgoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1cgJ3Nob3J0bG9nIGVuY29kaW5nJyAnCglnaXQgcmVzZXQgLS1oYXJkICIkY29tbWl0IiAmJgoJZ2l0IGNvbmZpZyAtLXVuc2V0IGkxOG4uY29tbWl0ZW5jb2RpbmcgJiYKCWVjaG8gMiA+IGExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIiRNU0cxIiAtLWF1dGhvcj0iJERTQ0hPRSIgYTEgJiYKCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyAiSVNPODg1OS0xIiAmJgoJZWNobyAzID4gYTEgJiYKCWdpdCBjb21taXQgLS1xdWlldCAtbSAiJChpY29udmZyb211dGY4dG9pc284ODU5MSAiJE1TRzIiKSIgXAoJCS0tYXV0aG9yPSIkKGljb252ZnJvbXV0Zjh0b2lzbzg4NTkxICIkRFNDSE9FIikiIGExICYmCglnaXQgY29uZmlnIC0tdW5zZXQgaTE4bi5jb21taXRlbmNvZGluZyAmJgoJZ2l0IHNob3J0bG9nIEhFQUR+Mi4uID4gb3V0ICYmCnRlc3RfY21wIGV4cGVjdCBvdXQnCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyB3aXRoIHJldmlzaW9uIHBzZXVkbyBvcHRpb25zJyAnCglnaXQgc2hvcnRsb2cgLS1hbGwgJiYKCWdpdCBzaG9ydGxvZyAtLWJyYW5jaGVzICYmCglnaXQgc2hvcnRsb2cgLS1leGNsdWRlPXJlZnMvaGVhZHMvbSogLS1hbGwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgd2l0aCAtLW91dHB1dD08ZmlsZT4nICcKCWdpdCBzaG9ydGxvZyAtLW91dHB1dD1zaG9ydGxvZyAtMSBtYWluID5vdXRwdXQgJiYKCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQgJiYKCXRlc3RfbGluZV9jb3VudCA9IDMgc2hvcnRsb2cKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgLS1jb21taXR0ZXIgKGludGVybmFsKScgJwoJZ2l0IGNoZWNrb3V0IC0tb3JwaGFuIHNpZGUgJiYKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBvbmUgJiYKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSB0d28gJiYKCUdJVF9DT01NSVRURVJfTkFNRT0iU2luIE5vbWJyZSIgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIHRocmVlICYmCgoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAyCUMgTyBNaXR0ZXIKCSAgICAgMQlTaW4gTm9tYnJlCglFT0YKCWdpdCBzaG9ydGxvZyAtbnNjIEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyAtLWNvbW1pdHRlciAoZXh0ZXJuYWwpJyAnCglnaXQgbG9nIC0tZm9ybWF0PWZ1bGwgfCBnaXQgc2hvcnRsb2cgLW5zYyA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tZ3JvdXA9Y29tbWl0dGVyIGlzIHRoZSBzYW1lIGFzIC0tY29tbWl0dGVyJyAnCglnaXQgc2hvcnRsb2cgLW5zIC0tZ3JvdXA9Y29tbWl0dGVyIEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyAtLWdyb3VwPXRyYWlsZXI6c2lnbmVkLW9mZi1ieScgJwoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIGZvbyAtcyAmJgoJR0lUX0NPTU1JVFRFUl9OQU1FPSJTT0IgT25lIiBcCglHSVRfQ09NTUlUVEVSX0VNQUlMPXNvYkBleGFtcGxlLmNvbSBcCgkJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIGZvbyAtcyAmJgoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC0tYW1lbmQgLS1uby1lZGl0IC1zICYmCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDIJQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgoJICAgICAxCVNPQiBPbmUgPHNvYkBleGFtcGxlLmNvbT4KCUVPRgoJZ2l0IHNob3J0bG9nIC1uc2UgLS1ncm91cD10cmFpbGVyOnNpZ25lZC1vZmYtYnkgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIC0tZ3JvdXA9Zm9ybWF0JyAnCglnaXQgc2hvcnRsb2cgLXMgLS1kYXRlPSJmb3JtYXQ6JVkiIC0tZ3JvdXA9ImZvcm1hdDolY04gKCVjZCkiIFwKCQlIRUFEID5hY3R1YWwgJiYKCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKCSAgICAgNAlDIE8gTWl0dGVyICgyMDA1KQoJICAgICAxCVNpbiBOb21icmUgKDIwMDUpCglFT0YKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgLS1ncm91cD08Zm9ybWF0PiBEV0lNJyAnCglnaXQgc2hvcnRsb2cgLXMgLS1kYXRlPSJmb3JtYXQ6JVkiIC0tZ3JvdXA9IiVjTiAoJWNkKSIgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIGJvZ3VzIC0tZ3JvdXAnICcKCXRlc3RfbXVzdF9mYWlsIGdpdCBzaG9ydGxvZyAtLWdyb3VwPWJvZ3VzIEhFQUQgMj5lcnIgJiYKCWdyZXAgInVua25vd24gZ3JvdXAgdHlwZSIgZXJyCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3RyYWlsZXIgaWRlbnRzIGFyZSBzcGxpdCcgJwoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAyCUMgTyBNaXR0ZXIKCSAgICAgMQlTT0IgT25lCglFT0YKCWdpdCBzaG9ydGxvZyAtbnMgLS1ncm91cD10cmFpbGVyOnNpZ25lZC1vZmYtYnkgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3RyYWlsZXIgaWRlbnRzIGFyZSBtYWlsbWFwcGVkJyAnCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDIJQyBPIE1pdHRlcgoJICAgICAxCUFub3RoZXIgTmFtZQoJRU9GCgllY2hvICJBbm90aGVyIE5hbWUgPHNvYkBleGFtcGxlLmNvbT4iID5tYWlsLm1hcCAmJgoJZ2l0IC1jIG1haWxtYXAuZmlsZT1tYWlsLm1hcCBzaG9ydGxvZyAtbnMgXAoJCS0tZ3JvdXA9dHJhaWxlcjpzaWduZWQtb2ZmLWJ5IEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBkZS1kdXBsaWNhdGVzIHRyYWlsZXJzIGluIGEgc2luZ2xlIGNvbW1pdCcgJwoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1GIC0gPDwtXEVPRiAmJgoJc3ViamVjdCBvbmUKCgl0aGlzIG1lc3NhZ2UgaGFzIHR3byBkaXN0aW5jdCB2YWx1ZXMsIHBsdXMgYSByZXBlYXQKCglSZXBlYXRlZC10cmFpbGVyOiBGb28KCVJlcGVhdGVkLXRyYWlsZXI6IEJhcgoJUmVwZWF0ZWQtdHJhaWxlcjogRm9vCglFT0YKCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLUYgLSA8PC1cRU9GICYmCglzdWJqZWN0IHR3bwoKCXNpbWlsYXIgdG8gdGhlIHByZXZpb3VzLCBidXQgd2l0aG91dCB0aGUgc2Vjb25kIGRpc3RpbmN0IHZhbHVlCgoJUmVwZWF0ZWQtdHJhaWxlcjogRm9vCglSZXBlYXRlZC10cmFpbGVyOiBGb28KCUVPRgoKCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKCSAgICAgMglGb28KCSAgICAgMQlCYXIKCUVPRgoJZ2l0IHNob3J0bG9nIC1ucyAtLWdyb3VwPXRyYWlsZXI6cmVwZWF0ZWQtdHJhaWxlciAtMiBIRUFEID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKIyBUcmFpbGVycyB0aGF0IGhhdmUgdW5mb2xkZWQgKHNpbmdsZSBsaW5lKSBhbmQgZm9sZGVkIChtdWx0aWxpbmUpIHZhbHVlcyB3aGljaAojIGFyZSBvdGhlcndpc2UgaWRlbnRpY2FsIGFyZSB0cmVhdGVkIGFzIHRoZSBzYW1lIHRyYWlsZXIgZm9yIGRlLWR1cGxpY2F0aW9uLgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBkZS1kdXBsaWNhdGVzIHRyYWlsZXJzIGluIGEgc2luZ2xlIGNvbW1pdCAoZm9sZGVkL3VuZm9sZGVkIHZhbHVlcyknICcKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtRiAtIDw8LVxFT0YgJiYKCXN1YmplY3Qgb25lCgoJdGhpcyBtZXNzYWdlIGhhcyB0d28gZGlzdGluY3QgdmFsdWVzLCBwbHVzIGEgcmVwZWF0IChmb2xkZWQpCgoJUmVwZWF0ZWQtdHJhaWxlcjogRm9vIGZvbyBmb28KCVJlcGVhdGVkLXRyYWlsZXI6IEJhcgoJUmVwZWF0ZWQtdHJhaWxlcjogRm9vCgkgIGZvbyBmb28KCUVPRgoKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtRiAtIDw8LVxFT0YgJiYKCXN1YmplY3QgdHdvCgoJc2ltaWxhciB0byB0aGUgcHJldmlvdXMsIGJ1dCB3aXRob3V0IHRoZSBzZWNvbmQgZGlzdGluY3QgdmFsdWUKCglSZXBlYXRlZC10cmFpbGVyOiBGb28gZm9vIGZvbwoJUmVwZWF0ZWQtdHJhaWxlcjogRm9vCgkgIGZvbyBmb28KCUVPRgoKCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKCSAgICAgMglGb28gZm9vIGZvbwoJICAgICAxCUJhcgoJRU9GCglnaXQgc2hvcnRsb2cgLW5zIC0tZ3JvdXA9dHJhaWxlcjpyZXBlYXRlZC10cmFpbGVyIC0yIEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBjYW4gbWF0Y2ggbXVsdGlwbGUgZ3JvdXBzJyAnCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLUYgLSA8PC1cRU9GICYmCglzdWJqZWN0IG9uZQoKCXRoaXMgaGFzIHR3byB0cmFpbGVycyB0aGF0IGFyZSBkaXN0aW5jdCBmcm9tIHRoZSBhdXRob3I7IGl0IHdpbGwgY291bnQKCTMgdGltZXMgaW4gdGhlIG91dHB1dAoKCVNvbWUtdHJhaWxlcjogVXNlciBBIDxhQGV4YW1wbGUuY29tPgoJQW5vdGhlci10cmFpbGVyOiBVc2VyIEIgPGJAZXhhbXBsZS5jb20+CglFT0YKCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLUYgLSA8PC1cRU9GICYmCglzdWJqZWN0IHR3bwoKCXRoaXMgb25lIGhhcyB0d28gdHJhaWxlcnMsIG9uZSBvZiB3aGljaCBpcyBhIGR1cGxpY2F0ZSB3aXRoIHRoZSBhdXRob3I7CglpdCB3aWxsIG9ubHkgYmUgY291bnRlZCBvbmNlIGZvciB0aGVtCgoJQW5vdGhlci10cmFpbGVyOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgoJU29tZS10cmFpbGVyOiBVc2VyIEIgPGJAZXhhbXBsZS5jb20+CglFT0YKCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDIJQSBVIFRob3IKCSAgICAgMglVc2VyIEIKCSAgICAgMQlVc2VyIEEKCUVPRgoJZ2l0IHNob3J0bG9nIC1ucyBcCgkJLS1ncm91cD1hdXRob3IgXAoJCS0tZ3JvdXA9dHJhaWxlcjpzb21lLXRyYWlsZXIgXAoJCS0tZ3JvdXA9dHJhaWxlcjphbm90aGVyLXRyYWlsZXIgXAoJCS0yIEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBjYW4gbWF0Y2ggbXVsdGlwbGUgZm9ybWF0IGdyb3VwcycgJwoJR0lUX0NPTU1JVFRFUl9OQU1FPSIkR0lUX0FVVEhPUl9OQU1FIiBcCgkJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tICJpZGVudGljYWwgbmFtZXMiICYmCgl0ZXN0X3RpY2sgJiYKCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKCSAgICAgMglBIFUgVGhvcgoJICAgICAxCUMgTyBNaXR0ZXIKCUVPRgoJZ2l0IHNob3J0bG9nIC1ucyAtLWdyb3VwPSIlY24iIC0tZ3JvdXA9IiVhbiIgLTIgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldCB1cCBvcHRpb24gc2VsZWN0aW9uIHRlc3RzJyAnCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLUYgLSA8PC1cRU9GCglzdWJqZWN0CgoJYm9keQoKCVRyYWlsZXItb25lOiB2YWx1ZS1vbmUKCVRyYWlsZXItdHdvOiB2YWx1ZS10d28KCUVPRgonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICctLW5vLWdyb3VwIHJlc2V0cyBncm91cCBsaXN0IHRvIGF1dGhvcicgJwoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAxCUEgVSBUaG9yCglFT0YKCWdpdCBzaG9ydGxvZyAtbnMgXAoJCS0tZ3JvdXA9Y29tbWl0dGVyIFwKCQktLWdyb3VwPXRyYWlsZXI6dHJhaWxlci1vbmUgXAoJCS0tbm8tZ3JvdXAgXAoJCS0xIEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICctLW5vLWdyb3VwIHJlc2V0cyB0cmFpbGVyIGxpc3QnICcKCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKCSAgICAgMQl2YWx1ZS10d28KCUVPRgoJZ2l0IHNob3J0bG9nIC1ucyBcCgkJLS1ncm91cD10cmFpbGVyOnRyYWlsZXItb25lIFwKCQktLW5vLWdyb3VwIFwKCQktLWdyb3VwPXRyYWlsZXI6dHJhaWxlci10d28gXAoJCS0xIEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGRpbiB3aXRoIG11bHRpcGxlIGdyb3VwcyByZXBvcnRzIGVycm9yJyAnCglnaXQgbG9nID5sb2cgJiYKCXRlc3RfbXVzdF9mYWlsIGdpdCBzaG9ydGxvZyAtLWdyb3VwPWF1dGhvciAtLWdyb3VwPWNvbW1pdHRlciA8bG9nCicKCnRlc3RfZG9uZQo=