ZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvbmV0cncudmltIGIvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KaW5kZXggMjcwMGE4Yy4uM2U5YmQzNCAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KQEAgLTEsMTAgKzEsMTAgQEAKICIgbmV0cncudmltOiBIYW5kbGVzIGZpbGUgdHJhbnNmZXIgYW5kIHJlbW90ZSBkaXJlY3RvcnkgbGlzdGluZyBhY3Jvc3MKICIgICAgICAgICAgICBBVVRPTE9BRCBTRUNUSU9OCi0iIERhdGU6CQlBcHIgMDUsIDIwMTIKLSIgVmVyc2lvbjoJMTQ1CisiIERhdGU6CQlPY3QgMjUsIDIwMTIKKyIgVmVyc2lvbjoJMTQ2CiAiIE1haW50YWluZXI6CUNoYXJsZXMgRSBDYW1wYmVsbCwgSnIgPE5kck9jaGlwQFNjYW1wYmVsbFBmYW1pbHkuQWJpek0tTk9TUEFNPgogIiBHZXRMYXRlc3RWaW1TY3JpcHRzOiAxMDc1IDEgOkF1dG9JbnN0YWxsOiBuZXRydy52aW0KLSIgQ29weXJpZ2h0OiAgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAxMCBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4ge3t7MQorIiBDb3B5cmlnaHQ6ICAgIENvcHlyaWdodCAoQykgMTk5OS0yMDEyIENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiB7e3sxCiAiICAgICAgICAgICAgICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCB0byB1c2UgYW5kIGRpc3RyaWJ1dGUgdGhpcyBjb2RlLAogIiAgICAgICAgICAgICAgIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0CiAiICAgICAgICAgICAgICAgbm90aWNlIGlzIGNvcGllZCB3aXRoIGl0LiBMaWtlIGFueXRoaW5nIGVsc2UgdGhhdCdzIGZyZWUsCkBAIC0yMiw3ICsyMiw3IEBACiBpZiAmY3AgfHwgZXhpc3RzKCJnOmxvYWRlZF9uZXRydyIpCiAgIGZpbmlzaAogZW5kaWYKLWxldCBnOmxvYWRlZF9uZXRydyA9ICJ2MTQ1IgorbGV0IGc6bG9hZGVkX25ldHJ3ID0gInYxNDYiCiBpZiB2OnZlcnNpb24gPCA3MDIKICBlY2hvaGwgV2FybmluZ01zZwogIGVjaG8gIioqKndhcm5pbmcqKiogdGhpcyB2ZXJzaW9uIG9mIG5ldHJ3IG5lZWRzIHZpbSA3LjIiCkBAIC01NSwxMiArNTUsMTIgQEAKICIgICAwPW5vdGUgICAgID0gczpOT1RFCiAiICAgMT13YXJuaW5nICA9IHM6V0FSTklORwogIiAgIDI9ZXJyb3IgICAgPSBzOkVSUk9SCi0iICBBcHIgMDUsIDIwMTIgOiBtYXggZXJybnVtIGN1cnJlbnRseSBpcyA4OAorIiAgT2N0IDI0LCAyMDEyIDogbWF4IGVycm51bSBjdXJyZW50bHkgaXMgOTEKIGZ1biEgbmV0cncjRXJyb3JNc2cobGV2ZWwsbXNnLGVycm51bSkKICIgIGNhbGwgRGZ1bmMoIm5ldHJ3I0Vycm9yTXNnKGxldmVsPSIuYTpsZXZlbC4iIG1zZzwiLmE6bXNnLiI+IGVycm51bT0iLmE6ZXJybnVtLiIpIGc6bmV0cndfdXNlX2Vycm9yd2luZG93PSIuZzpuZXRyd191c2VfZXJyb3J3aW5kb3cpCiAKICAgaWYgYTpsZXZlbCA8IGc6bmV0cndfZXJyb3JsdmwKLSAgIGNhbGwgRHJldCgibmV0cncjRXJyb3JNc2cgOiBzdXBwcmVzc2luZyBsZXZlbD0iLmE6bGV2ZWwuIiBzaW5jZSBnO25ldHJ3X2Vycm9ybHZsPSIuZzpuZXRyd19lcnJvcmx2bCkKKyIgICBjYWxsIERyZXQoIm5ldHJ3I0Vycm9yTXNnIDogc3VwcHJlc3NpbmcgbGV2ZWw9Ii5hOmxldmVsLiIgc2luY2UgZztuZXRyd19lcnJvcmx2bD0iLmc6bmV0cndfZXJyb3JsdmwpCiAgICByZXR1cm4KICAgZW5kaWYKIApAQCAtMjI1LDcgKzIyNSw3IEBACiAiIEN5Z3dpbiBEZXRlY3Rpb24gLS0tLS0tLSB7e3szCiBpZiAhZXhpc3RzKCJnOm5ldHJ3X2N5Z3dpbiIpCiAgaWYgaGFzKCJ3aW4zMiIpIHx8IGhhcygid2luOTUiKSB8fCBoYXMoIndpbjY0IikgfHwgaGFzKCJ3aW4xNiIpCi0gIGlmICZzaGVsbCA9fiAnXCUoXDxiYXNoXD5cfFw8enNoXD5cKVwlKFwuZXhlXClcPSQnCisgIGlmICBoYXMoIndpbjMydW5peCIpICYmICZzaGVsbCA9fiAnXCUoXDxiYXNoXD5cfFw8enNoXD5cKVwlKFwuZXhlXClcPSQnCiAgICBsZXQgZzpuZXRyd19jeWd3aW49IDEKICAgZWxzZQogICAgbGV0IGc6bmV0cndfY3lnd2luPSAwCkBAIC0zMDAsMzAgKzMwMCwyNyBAQAogIGxldCBnOm5ldHJ3X2xvY2FsY29weWNtZD0gZzpuZXRyd19sb2NhbF9jb3B5Y21kIgogIGNhbGwgbmV0cncjRXJyb3JNc2coczpOT1RFLCJnOm5ldHJ3X2xvY2FsX2NvcHljbWQgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBnOm5ldHJ3X2xvY2FsY29weWNtZCIsODQpCiBlbmRpZgoraWYgIWV4aXN0cygiZzpuZXRyd19sb2NhbGNtZHNoZWxsIikKKyBsZXQgZzpuZXRyd19sb2NhbGNtZHNoZWxsPSAiIgorZW5kaWYKIGlmICFleGlzdHMoImc6bmV0cndfbG9jYWxjb3B5Y21kIikKICBpZiBoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW45NSIpIHx8IGhhcygid2luNjQiKSB8fCBoYXMoIndpbjE2IikKICAgaWYgZzpuZXRyd19jeWd3aW4KICAgIGxldCBnOm5ldHJ3X2xvY2FsY29weWNtZD0gImNwIgogICBlbHNlCi0gICBsZXQgZzpuZXRyd19sb2NhbGNvcHljbWQ9ICJjb3B5IgorICAgbGV0IGc6bmV0cndfbG9jYWxjb3B5Y21kPSAiY21kIC9jIGNvcHkiCiAgIGVuZGlmCiAgZWxzZWlmIGhhcygidW5peCIpIHx8IGhhcygibWFjdW5peCIpCiAgIGxldCBnOm5ldHJ3X2xvY2FsY29weWNtZD0gImNwIgogIGVsc2UKICAgbGV0IGc6bmV0cndfbG9jYWxjb3B5Y21kPSAiIgogIGVuZGlmCi0gaWYgIWV4ZWN1dGFibGUoZzpuZXRyd19sb2NhbGNvcHljbWQpCi0gIGNhbGwgbmV0cncjRXJyb3JNc2coczpOT1RFLCJjb25zaWRlciBzZXR0aW5nIGc6bmV0cndfbG9jYWxjb3B5Y21kPCIuZzpuZXRyd19sb2NhbGNvcHljbWQuIj4gdG8gc29tZXRoaW5nIHRoYXQgd29ya3MiLDgwKQotIGVuZGlmCiBlbmRpZgogaWYgZXhpc3RzKCJnOm5ldHJ3X2xvY2FsX21rZGlyIikKLSBsZXQgZzpuZXRyd19sb2NhbG1rZGlyPSBnOm5ldHJ3X2xvY2FsX21rZGlyIgorIGxldCBnOm5ldHJ3X2xvY2FsbWtkaXI9IGc6bmV0cndfbG9jYWxfbWtkaXIKICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6Tk9URSwiZzpuZXRyd19sb2NhbF9ta2RpciBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGc6bmV0cndfbG9jYWxta2RpciIsODcpCiBlbmRpZgogY2FsbCBzOk5ldHJ3SW5pdCgiZzpuZXRyd19sb2NhbG1rZGlyIiwibWtkaXIiKQotaWYgIWV4ZWN1dGFibGUoZzpuZXRyd19sb2NhbG1rZGlyKQotIGNhbGwgbmV0cncjRXJyb3JNc2coczpOT1RFLCJjb25zaWRlciBzZXR0aW5nIGc6bmV0cndfbG9jYWxta2RpcjwiLmc6bmV0cndfbG9jYWxta2Rpci4iPiB0byBzb21ldGhpbmcgdGhhdCB3b3JrcyIsODApCi1lbmRpZgogY2FsbCBzOk5ldHJ3SW5pdCgiZzpuZXRyd19yZW1vdGVfbWtkaXIiLCJta2RpciIpCiBpZiBleGlzdHMoImc6bmV0cndfbG9jYWxfbW92ZWNtZCIpCiAgbGV0IGc6bmV0cndfbG9jYWxtb3ZlY21kPSBnOm5ldHJ3X2xvY2FsX21vdmVjbWQiCkBAIC0zMzQsMjUgKzMzMSwxOSBAQAogICBpZiBnOm5ldHJ3X2N5Z3dpbgogICAgbGV0IGc6bmV0cndfbG9jYWxtb3ZlY21kPSAibXYiCiAgIGVsc2UKLSAgIGxldCBnOm5ldHJ3X2xvY2FsbW92ZWNtZD0gIm1vdmUiCisgICBsZXQgZzpuZXRyd19sb2NhbG1vdmVjbWQ9ICJjbWQgL2MgbW92ZSIKICAgZW5kaWYKICBlbHNlaWYgaGFzKCJ1bml4IikgfHwgaGFzKCJtYWN1bml4IikKICAgbGV0IGc6bmV0cndfbG9jYWxtb3ZlY21kPSAibXYiCiAgZWxzZQogICBsZXQgZzpuZXRyd19sb2NhbG1vdmVjbWQ9ICIiCiAgZW5kaWYKLSBpZiAhZXhlY3V0YWJsZShnOm5ldHJ3X2xvY2FsbWtkaXIpCi0gIGNhbGwgbmV0cncjRXJyb3JNc2coczpOT1RFLCJjb25zaWRlciBzZXR0aW5nIGc6bmV0cndfbG9jYWxta2RpcjwiLmc6bmV0cndfbG9jYWxta2Rpci4iPiB0byBzb21ldGhpbmcgdGhhdCB3b3JrcyIsODEpCi0gZW5kaWYKIGVuZGlmCiBjYWxsIHM6TmV0cndJbml0KCJnOm5ldHJ3X2xvY2Fscm1kaXIiLCAicm1kaXIiKQogaWYgZXhpc3RzKCJnOm5ldHJ3X2xvY2FsX3JtZGlyIikKICBsZXQgZzpuZXRyd19sb2NhbHJtZGlyPSBnOm5ldHJ3X2xvY2FsX3JtZGlyIgogIGNhbGwgbmV0cncjRXJyb3JNc2coczpOT1RFLCJnOm5ldHJ3X2xvY2FsX3JtZGlyIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgZzpuZXRyd19sb2NhbHJtZGlyIiw4NikKIGVuZGlmCi1pZiAhZXhlY3V0YWJsZShnOm5ldHJ3X2xvY2Fscm1kaXIpCi0gY2FsbCBuZXRydyNFcnJvck1zZyhzOk5PVEUsImNvbnNpZGVyIHNldHRpbmcgZzpuZXRyd19sb2NhbHJtZGlyPCIuZzpuZXRyd19sb2NhbHJtZGlyLiI+IHRvIHNvbWV0aGluZyB0aGF0IHdvcmtzIiw4MikKLWVuZGlmCiBjYWxsIHM6TmV0cndJbml0KCJnOm5ldHJ3X2xpc3RzdHlsZSIgICwgczpUSElOTElTVCkKICIgc2FuaXR5IGNoZWNrcwogaWYgZzpuZXRyd19saXN0c3R5bGUgPCAwIHx8IGc6bmV0cndfbGlzdHN0eWxlID49IHM6TUFYTElTVApAQCAtNjA3LDcgKzU5OCw4IEBACiAgIGlmIGV4aXN0cygie2E6dnR9bmV0cndfcm9rZWVwIikgICB8bGV0ICZsOnJvICAgICA9IHthOnZ0fW5ldHJ3X3Jva2VlcCAgICAgIHx1bmxldCB7YTp2dH1uZXRyd19yb2tlZXAgICB8ZW5kaWYKICAgaWYgZXhpc3RzKCJ7YTp2dH1uZXRyd19zZWxrZWVwIikgIHxsZXQgJmw6c2VsICAgID0ge2E6dnR9bmV0cndfc2Vsa2VlcCAgICAgfHVubGV0IHthOnZ0fW5ldHJ3X3NlbGtlZXAgIHxlbmRpZgogICBpZiBleGlzdHMoInthOnZ0fW5ldHJ3X3NwZWxsa2VlcCIpfGxldCAmbDpzcGVsbCAgPSB7YTp2dH1uZXRyd19zcGVsbGtlZXAgICB8dW5sZXQge2E6dnR9bmV0cndfc3BlbGxrZWVwfGVuZGlmCi0gIGlmIGV4aXN0cygie2E6dnR9bmV0cndfdHNrZWVwIikgICB8bGV0ICZsOnRzICAgICA9IHthOnZ0fW5ldHJ3X3Rza2VlcCAgICAgIHx1bmxldCB7YTp2dH1uZXRyd190c2tlZXAgICB8ZW5kaWYKKyAgIiBQcm9ibGVtOiBzdGFydCB3aXRoIGxpc3RzdHlsZT0wOyBwcmVzcyA8aT4gOiByZXN1bHQsIGZvbGxvd2luZyBsaW5lIHJlc2V0cyBsOnRzLgorIiAgaWYgZXhpc3RzKCJ7YTp2dH1uZXRyd190c2tlZXAiKSAgIHxsZXQgJmw6dHMgICAgID0ge2E6dnR9bmV0cndfdHNrZWVwICAgICAgfHVubGV0IHthOnZ0fW5ldHJ3X3Rza2VlcCAgIHxlbmRpZgogICBpZiBleGlzdHMoInthOnZ0fW5ldHJ3X3R3a2VlcCIpICAgfGxldCAmbDp0dyAgICAgPSB7YTp2dH1uZXRyd190d2tlZXAgICAgICB8dW5sZXQge2E6dnR9bmV0cndfdHdrZWVwICAgfGVuZGlmCiAgIGlmIGV4aXN0cygie2E6dnR9bmV0cndfd2lna2VlcCIpICB8bGV0ICZsOndpZyAgICA9IHthOnZ0fW5ldHJ3X3dpZ2tlZXAgICAgIHx1bmxldCB7YTp2dH1uZXRyd193aWdrZWVwICB8ZW5kaWYKICAgaWYgZXhpc3RzKCJ7YTp2dH1uZXRyd193cmFwa2VlcCIpIHxsZXQgJmw6d3JhcCAgID0ge2E6dnR9bmV0cndfd3JhcGtlZXAgICAgfHVubGV0IHthOnZ0fW5ldHJ3X3dyYXBrZWVwIHxlbmRpZgpAQCAtNjQ3LDYgKzYzOSw3IEBACiAiICBjYWxsIERlY2hvKCIoTmV0cndPcHRpb25SZXN0b3JlKSBmbz0iLiZmby4oZXhpc3RzKCImYWNkIik/ICIgYWNkPSIuJmFjZCA6ICIgYWNkIGRvZXNuJ3QgZXhpc3QiKSkKICIgIGNhbGwgRGVjaG8oIihOZXRyd09wdGlvblJlc3RvcmUpIHJvPSIuJmw6cm8uIiBtYT0iLiZsOm1hLiIgbW9kPSIuJmw6bW9kLiIgd3JhcD0iLiZsOndyYXAuIiAoZmlsZW5hbWU8Ii5leHBhbmQoIiUiKS4iPiB3aW4jIi53aW5ucigpLiIgZnQ8Ii4mZnQuIj4pIikKICIgIGNhbGwgRGVjaG8oIihOZXRyd09wdGlvblJlc3RvcmUpIGRpZmY9Ii4mbDpkaWZmLiIgd2luIyIud2lubnIoKS4iIHc6bmV0cndfZGlmZmtlZXA9Ii4oZXhpc3RzKCJ3Om5ldHJ3X2RpZmZrZWVwIik/IHc6bmV0cndfZGlmZmtlZXAgOiAiZG9lc24ndCBleGlzdCIpKQorIiAgY2FsbCBEZWNobygiKE5ldHJ3T3B0aW9uUmVzdG9yZSkgdHM9Ii4mbDp0cykKICIgIGNhbGwgRHJldCgiczpOZXRyd09wdGlvblJlc3RvcmUgOiB0YWIjIi50YWJwYWdlbnIoKS4iIHdpbiMiLndpbm5yKCkuIiBidWYjIi5idWZucigiJSIpLiI8Ii5idWZuYW1lKCIlIikuIj4gbW9kaWZpZWQ9Ii4mbW9kaWZpZWQuIiBtb2RpZmlhYmxlPSIuJm1vZGlmaWFibGUuIiByZWFkb25seT0iLiZyZWFkb25seSkKIGVuZGZ1bgogCkBAIC05NTYsNyArOTQ5LDcgQEAKICIgICAgIGNhbGwgRGVjaG8oImZpbHRlciBpbnB1dDogIi5nZXRsaW5lKCcuJykpCiAgICAgZW5kaWYKIAotICAgIGlmIGV4aXN0cygiZzpuZXRyd191aWQiICYmIGc6bmV0cndfdWlkICE9ICIiCisgICAgaWYgZXhpc3RzKCJnOm5ldHJ3X3VpZCIpICYmIGc6bmV0cndfdWlkICE9ICIiCiAgICAgIGlmIGV4aXN0cygiZzpuZXRyd19mdHAiKSAmJiBnOm5ldHJ3X2Z0cCA9PSAxCiAgICAgICBrZWVwaiBwdXQgPWc6bmV0cndfdWlkCiAiICAgICAgIGNhbGwgRGVjaG8oImZpbHRlciBpbnB1dDogIi5nZXRsaW5lKCcuJykpCkBAIC0xNDg3LDcgKzE0ODAsNyBAQAogICAgIi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAgICAiIE5ldFdyaXRlOiAoc2Z0cCkgTmV0V3JpdGUgTWV0aG9kICM5IHt7ezMKICAgIGVsc2VpZiAgICAgYjpuZXRyd19tZXRob2QgPT0gOQotIiAgICBjYWxsIERlY2hvKCJyZWFkIHZpYSBzZnRwIChtZXRob2QgIzkpIikKKyIgICAgY2FsbCBEZWNobygid3JpdGUgdmlhIHNmdHAgKG1ldGhvZCAjOSkiKQogICAgIGxldCBuZXRyd19mbmFtZT0gZXNjYXBlKGI6bmV0cndfZm5hbWUsZzpuZXRyd19mbmFtZV9lc2NhcGUpCiAgICAgaWYgZXhpc3RzKCJnOm5ldHJ3X3VpZCIpICYmICAoIGc6bmV0cndfdWlkICE9ICIiICkKICAgICAgbGV0IHVpZF9tYWNoaW5lID0gZzpuZXRyd191aWQgLidAJy4gZzpuZXRyd19tYWNoaW5lCkBAIC0xNTA1LDcgKzE0OTgsOCBAQAogICAgIGNhbGwgc2V0bGluZSgxLCdwdXQgIicuZXNjYXBlKHRtcGZpbGUsJ1wnKS4nIiAnLm5ldHJ3X2ZuYW1lKQogIiAgICBjYWxsIERlY2hvKCJmaWx0ZXIgaW5wdXQ6ICIuZ2V0bGluZSgnLicpKQogIiAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5nOm5ldHJ3X3NmdHBfY21kLicgJy5zaGVsbGVzY2FwZSh1aWRfbWFjaGluZSwxKSkKLSAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuZzpuZXRyd19zZnRwX2NtZC4nICcuc2hlbGxlc2NhcGUodWlkX21hY2hpbmUsMSkKKyAgICBsZXQgc2Z0cGNtZD0gc3Vic3RpdHV0ZShnOm5ldHJ3X3NmdHBfY21kLCIlVEVNUEZJTEUlIixlc2NhcGUodG1wZmlsZSwnXCcpLCJnIikKKyAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuc2Z0cGNtZC4nICcuc2hlbGxlc2NhcGUodWlkX21hY2hpbmUsMSkKICAgICBsZXQgZmlsdGJ1Zj0gYnVmbnIoIiUiKQogICAgIGV4ZSBjdXJidWYuImIhIgogICAgIGxldCAmbDpiaCAgICAgICAgICAgID0gYmhrZWVwCkBAIC0xNjQ3LDE0ICsxNjQxLDE0IEBACiAiICAgY2FsbCBEZWNobygiZXhlIHNpbCEga2VlcGFsdCBmaWxlICIuZm5hbWVlc2NhcGUocmZpbGUpKQogICAgZXhlICJzaWwhIGtlZXBqIGtlZXBhbHQgZmlsZSAiLmZuYW1lZXNjYXBlKHJmaWxlKQogCi0gICAiIGRldGVjdCBmaWxldHlwZSBvZiBsb2NhbCB2ZXJzaW9uIG9mIHJlbW90ZSBmaWxlCisgICAiIERldGVjdCBmaWxldHlwZSBvZiBsb2NhbCB2ZXJzaW9uIG9mIHJlbW90ZSBmaWxlLgogICAgIiBOb3RlIHRoYXQgaXNrIG11c3Qgbm90IGluY2x1ZGUgYSAiLyIgZm9yIHNjcmlwdHMudmltCiAgICAiIHRvIHByb2Nlc3MgdGhpcyBkZXRlY3Rpb24gY29ycmVjdGx5LgogIiAgIGNhbGwgRGVjaG8oImRldGVjdCBmaWxldHlwZSBvZiBsb2NhbCB2ZXJzaW9uIG9mIHJlbW90ZSBmaWxlIikKLSAgIGxldCBpc2trZWVwPSAmaXNrCi0gICBzZXQgaXNrLT0vCisgICBsZXQgaXNra2VlcD0gJmw6aXNrCisgICBzZXRsIGlzay09LwogICAgZmlsZXR5cGUgZGV0ZWN0Ci0gICBsZXQgJmlzaz0gaXNra2VlcAorICAgbGV0ICZsOmlzaz0gaXNra2VlcAogIiAgIGNhbGwgRHJlZGlyKCJyZW5hbWVkIGJ1ZmZlciBiYWNrIHRvIHJlbW90ZSBmaWxlbmFtZTwiLnJmaWxlLiI+IDogZXhwYW5kKCUpPCIuZXhwYW5kKCIlIikuIj4iLCJscyEiKQogICAgbGV0IGxpbmUxID0gMQogICAgbGV0IGxpbmUyID0gbGluZSgiJCIpCkBAIC0yMDEzLDExICsyMDA3LDE3IEBACiAgZW5kaWYKIAogIGlmIGE6MCA9PSAwCisgICIgY2FzZTogbm8gaW5wdXQgYXJndW1lbnRzCisKKyAgIiBjaGFuZ2UgaG9zdCBhbmQgdXNlcm5hbWUgaWYgbm90IHByZXZpb3VzbHkgZW50ZXJlZDsgZ2V0IG5ldyBwYXNzd29yZAorICBpZiAhZXhpc3RzKCJnOm5ldHJ3X21hY2hpbmUiKQorICAgbGV0IGc6bmV0cndfbWFjaGluZT0gaW5wdXQoJ0VudGVyIGhvc3RuYW1lOiAnKQorICBlbmRpZgogICBpZiAhZXhpc3RzKCJnOm5ldHJ3X3VpZCIpIHx8IGc6bmV0cndfdWlkID09ICIiCi0gICAiIGdldCB1aWQgdmlhIHByb21wdAorICAgIiBnZXQgdXNlcm5hbWUgKHVzZXItaWQpIHZpYSBwcm9tcHQKICAgIGxldCBnOm5ldHJ3X3VpZD0gaW5wdXQoJ0VudGVyIHVzZXJuYW1lOiAnKQogICBlbmRpZgotICAiIGdldCBwYXNzd29yZCB2aWEgcHJvbXB0CisgICIgZ2V0IHBhc3N3b3JkIHZpYSBwcm9tcHRpbmcKICAgbGV0IHM6bmV0cndfcGFzc3dkPSBpbnB1dHNlY3JldCgiRW50ZXIgUGFzc3dvcmQ6ICIpCiAKICAgIiBzZXQgdXAgaHVwIGRhdGFiYXNlCkBAIC0yMDI5LDggKzIwMjksMTAgQEAKICAgbGV0IHM6bmV0cndfaHVwW2hvc3RdLnBhc3N3ZCA9IHM6bmV0cndfcGFzc3dkCiAKICBlbHNlaWYgYTowID09IDEKKyAgIiBjYXNlOiBvbmUgaW5wdXQgYXJndW1lbnQKIAogICBpZiBhOjEgPX4gJ15mdHA6JworICAgIiBnZXQgaG9zdCBmcm9tIGZ0cDouLi4gdXJsCiAgICAiIGFjY2VzcyB1c2VyaWQgYW5kIHBhc3N3b3JkIGZyb20gaHVwIChob3N0LXVzZXItcGFzc3dkKSBkaWN0aW9uYXJ5CiAgICBsZXQgaG9zdCA9IHN1YnN0aXR1dGUoYToxLCdeZnRwOicsJycsJycpCiAgICBsZXQgaG9zdCA9IHN1YnN0aXR1dGUoaG9zdCwnXC4uKicsJycsJycpCkBAIC0yMDQzLDE0ICsyMDQ1LDIyIEBACiAgICAgbGV0IGc6bmV0cndfdWlkICAgID0gaW5wdXQoIkVudGVyIFVzZXJJZDogIikKICAgICBsZXQgczpuZXRyd19wYXNzd2QgPSBpbnB1dHNlY3JldCgiRW50ZXIgUGFzc3dvcmQ6ICIpCiAgICBlbmRpZgorCiAgIGVsc2UKLSAgICIgc2V0IHVzZXJpZCwgcHJvbXB0IGZvciBwYXNzd29yZAotIiAgIGNhbGwgRGVjaG8oInNldCBnOm5ldHJ3X3VpZD0gPCIuYToxLiI+IikKKyAgICIgY2FzZTogb25lIGlucHV0IGFyZ3VtZW50LCBub3QgYW4gdXJsLiAgVXNpbmcgaXQgYXMgYSBuZXcgdXNlci1pZC4KICAgIGlmIGV4aXN0cygiZzpuZXRyd19tYWNoaW5lIikKICAgICBsZXQgaG9zdD0gc3Vic3RpdHV0ZShnOm5ldHJ3X21hY2hpbmUsJ1wuLiokJywnJywnJykKKyAgIGVsc2UKKyAgICBsZXQgZzpuZXRyd19tYWNoaW5lPSBpbnB1dCgnRW50ZXIgaG9zdG5hbWU6ICcpCiAgICBlbmRpZgotICAgbGV0IGc6bmV0cndfdWlkICAgID0gYToxCi0gICBsZXQgczpuZXRyd19wYXNzd2QgPSBpbnB1dHNlY3JldCgiRW50ZXIgUGFzc3dvcmQ6ICIpCisgICBsZXQgZzpuZXRyd191aWQgPSBhOjEKKyIgICBjYWxsIERlY2hvKCJzZXQgZzpuZXRyd191aWQ9IDwiLmc6bmV0cndfdWlkLiI+IikKKyAgIGlmIGV4aXN0cygiZzpuZXRyd19wYXNzd2QiKQorICAgICIgYXNrIGZvciBwYXNzd29yZCBpZiBvbmUgbm90IHByZXZpb3VzbHkgZW50ZXJlZAorICAgIGxldCBzOm5ldHJ3X3Bhc3N3ZD0gZzpuZXRyd19wYXNzd2QKKyAgIGVsc2UKKyAgICBsZXQgczpuZXRyd19wYXNzd2QgPSBpbnB1dHNlY3JldCgiRW50ZXIgUGFzc3dvcmQ6ICIpCisgICBlbmRpZgogICBlbmRpZgogCiAiICBjYWxsIERlY2hvKCJob3N0PCIuaG9zdC4iPiIpCkBAIC0yMTYxLDYgKzIxNzEsNyBAQAogICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gVQkJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Qm9va0hpc3RIYW5kbGVyKDUsZXhwYW5kKCIlIikpPGNyPgogICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gdgkJOmNhbGwgPFNJRD5OZXRyd1NwbGl0KDUpPGNyPgogICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4geAkJOmNhbGwgbmV0cncjTmV0cndCcm93c2VYKDxTSUQ+TmV0cndCcm93c2VDaGdEaXIoMSw8U0lEPk5ldHJ3R2V0V29yZCgpLDApLDApIjxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IFgJCTpjYWxsIDxTSUQ+TmV0cndMb2NhbEV4ZWN1dGUoZXhwYW5kKCI8Y3dvcmQ+IikpIjxjcj4KICAgICIgbG9jYWwgaW5zZXJ0LW1vZGUgbWFwcwogICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gYQkJPGMtbz46Y2FsbCA8U0lEPk5ldHJ3SGlkZSgxKTxjcj4KICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGMJCTxjLW8+OmV4ZSAia2VlcGp1bXBzIGxjZCAiLmZuYW1lZXNjYXBlKGI6bmV0cndfY3VyZGlyKTxjcj4KQEAgLTIyODMsNyArMjI5NCw3IEBACiAgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBteAk6PGMtdT5jYWxsIDxTSUQ+TmV0cndNYXJrRmlsZUV4ZSgwKTxjcj4KICAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1YCTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlVmltQ21kKDApPGNyPgogICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbXoJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVDb21wcmVzcygwKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdiCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0Jvb2tIaXN0SGFuZGxlcigxLGI6bmV0cndfY3VyKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdiCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0Jvb2tIaXN0SGFuZGxlcigxLGI6bmV0cndfY3VyZGlyKTxjcj4KICAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdkCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0ZvcmNlQ2hnRGlyKDAsPFNJRD5OZXRyd0dldFdvcmQoKSk8Y3I+CiAgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBnZgk6PGMtdT5jYWxsIDxTSUQ+TmV0cndGb3JjZUZpbGUoMCw8U0lEPk5ldHJ3R2V0V29yZCgpKTxjcj4KICAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdoCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0hpZGRlbigwKTxjcj4KQEAgLTIzMzAsNyArMjM0MSw3IEBACiAgICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBteAk8Yy1vPjo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlRXhlKDApPGNyPgogICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbVgJPGMtbz46PGMtdT5jYWxsIDxTSUQ+TmV0cndNYXJrRmlsZVZpbUNtZCgwKTxjcj4KICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG16CTxjLW8+OjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVDb21wcmVzcygwKTxjcj4KLSAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdiCTxjLW8+OjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Qm9va0hpc3RIYW5kbGVyKDEsYjpuZXRyd19jdXIpPGNyPgorICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gZ2IJPGMtbz46PGMtdT5jYWxsIDxTSUQ+TmV0cndCb29rSGlzdEhhbmRsZXIoMSxiOm5ldHJ3X2N1cmRpcik8Y3I+CiAgICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBnaAk8Yy1vPjo8Yy11PmNhbGwgPFNJRD5OZXRyd0hpZGRlbigwKTxjcj4KICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdwCTxjLW8+OjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Q2hnUGVybSgwLGI6bmV0cndfY3VyZGlyKTxjcj4KICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IEMJCTxjLW8+OmxldCBnOm5ldHJ3X2NoZ3dpbj0gd2lubnIoKTxjcj4KQEAgLTI0MzEsNiArMjQ0Miw3IEBACiBmdW4hIHM6TmV0cndCb29rSGlzdEhhbmRsZXIoY2hnLGN1cmRpcikKICIgIGNhbGwgRGZ1bmMoInM6TmV0cndCb29rSGlzdEhhbmRsZXIoY2hnPSIuYTpjaGcuIiBjdXJkaXI8Ii5hOmN1cmRpci4iPikgY250PSIudjpjb3VudC4iIGhpc3RjbnQ9Ii5nOm5ldHJ3X2Rpcmhpc3RfY250LiIgaGlzdG1heD0iLmc6bmV0cndfZGlyaGlzdG1heCkKIAorICBsZXQgeWtlZXA9IEBACiAgIGlmIGE6Y2hnID09IDAKICAgICIgYm9va21hcmsgdGhlIGN1cnJlbnQgZGlyZWN0b3J5CiAiICAgY2FsbCBEZWNobygiKHVzZXI6IDxiPikgYm9va21hcmsgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IikKQEAgLTI1NzksNiArMjU5MSw3IEBACiAgICBrZWVwaiBjYWxsIHJlbW92ZShnOm5ldHJ3X2Jvb2ttYXJrbGlzdCx2OmNvdW50LTEpCiAgIGVuZGlmCiAgIGNhbGwgczpOZXRyd0Jvb2ttYXJrTWVudSgpCisgIGxldCBAQD0geWtlZXAKICIgIGNhbGwgRHJldCgiczpOZXRyd0Jvb2tIaXN0SGFuZGxlciIpCiBlbmRmdW4KIApAQCAtMjU4Nyw2ICsyNjAwLDcgQEAKICIgICAgICAgICAgICAgICAgICAgICAgU2lzdGVyIGZ1bmN0aW9uOiBzOk5ldHJ3Qm9va0hpc3RTYXZlKCkKIGZ1biEgczpOZXRyd0Jvb2tIaXN0UmVhZCgpCiAiICBjYWxsIERmdW5jKCJzOk5ldHJ3Qm9va0hpc3RSZWFkKCkiKQorICBsZXQgeWtlZXA9IEBACiAgIGlmICFleGlzdHMoInM6bmV0cndfaW5pdGJvb2toaXN0IikKICAgIGxldCBob21lICAgID0gczpOZXRyd0hvbWUoKQogICAgbGV0IHNhdmVmaWxlPSBob21lLiIvLm5ldHJ3Ym9vayIKQEAgLTI2MDQsNiArMjYxOCw3IEBACiAgICAgYXUgVmltTGVhdmUgKiBjYWxsIHM6TmV0cndCb29rSGlzdFNhdmUoKQogICAgZW5kaWYKICAgZW5kaWYKKyAgbGV0IEBAPSB5a2VlcAogIiAgY2FsbCBEcmV0KCJzOk5ldHJ3Qm9va0hpc3RSZWFkIikKIGVuZGZ1bgogCkBAIC0yNjc4LDExICsyNjkzLDEyIEBACiAiICBjYWxsIERmdW5jKCJzOk5ldHJ3QnJvd3NlKGlzbG9jYWw9Ii5hOmlzbG9jYWwuIiBkaXJuYW1lPCIuYTpkaXJuYW1lLiI+KSBsaXN0c3R5bGU9Ii53Om5ldHJ3X2xpc3RzdHlsZS4iICIuZzpsb2FkZWRfbmV0cncuIiBidWYjIi5idWZucigiJSIpLiI8Ii5idWZuYW1lKCIlIikuIj4gd2luIyIud2lubnIoKSkKICIgIGNhbGwgRGVjaG8oInRhYiMiLnRhYnBhZ2VucigpLiIgd2luIyIud2lubnIoKS4iIGJ1ZiMiLmJ1Zm5yKCIlIikuIiBtb2RpZmllZD0iLiZtb2RpZmllZC4iIG1vZGlmaWFibGU9Ii4mbW9kaWZpYWJsZS4iIHJlYWRvbmx5PSIuJnJlYWRvbmx5KQogIiAgY2FsbCBEcmVkaXIoImxzISIpCisgICIgczpOZXRyd0Jyb3dzZTogaW5pdGlhbGl6ZSBoaXN0b3J5IHt7ezMKICAgaWYgIWV4aXN0cygiczpuZXRyd19pbml0Ym9va2hpc3QiKQogICAga2VlcGogY2FsbCBzOk5ldHJ3Qm9va0hpc3RSZWFkKCkKICAgZW5kaWYKIAotICAiIHNpbXBsaWZ5IHRoZSBkaXJuYW1lIChlc3BlY2lhbGx5IGZvciAiLi4icyBpbiBkaXJuYW1lcykKKyAgIiBzOk5ldHJ3QnJvd3NlOiBzaW1wbGlmeSB0aGUgZGlybmFtZSAoZXNwZWNpYWxseSBmb3IgIi4uInMgaW4gZGlybmFtZXMpIHt7ezMKICAgaWYgYTpkaXJuYW1lICF+ICdeXGFcKzovLycKICAgIGxldCBkaXJuYW1lPSBzaW1wbGlmeShhOmRpcm5hbWUpCiAgIGVsc2UKQEAgLTI2OTUsNiArMjcxMSw4IEBACiAiICAgY2FsbCBEcmV0KCJzOk5ldHJ3QnJvd3NlIDogczpuZXRyd19za2lwYnJvd3NlPSIuczpuZXRyd19za2lwYnJvd3NlKQogICAgcmV0dXJuCiAgIGVuZGlmCisKKyAgIiBzOk5ldHJ3QnJvd3NlOiBzYW5pdHkgY2hlY2tzOiB7e3szCiAgIGlmICFleGlzdHMoIipzaGVsbGVzY2FwZSIpCiAgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsIm5ldHJ3IGNhbid0IHJ1biAtLSB5b3VyIHZpbSBpcyBtaXNzaW5nIHNoZWxsZXNjYXBlKCkiLDY5KQogIiAgIGNhbGwgRHJldCgiczpOZXRyd0Jyb3dzZSA6IG1pc3Npbmcgc2hlbGxlc2NhcGUoKSIpCkBAIC0yNzA2LDE1ICsyNzI0LDE3IEBACiAgICByZXR1cm4KICAgZW5kaWYKIAorICAiIHM6TmV0cndCcm93c2U6IHNhdmUgb3B0aW9uczoge3t7MwogICBjYWxsIHM6TmV0cndPcHRpb25TYXZlKCJ3OiIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAKLSAgIiByZS1pbnN0YXRlIGFueSBtYXJrZWQgZmlsZXMKKyAgIiBzOk5ldHJ3QnJvd3NlOiByZS1pbnN0YXRlIGFueSBtYXJrZWQgZmlsZXMge3t7MwogICBpZiBleGlzdHMoInM6bmV0cndtYXJrZmlsZWxpc3Rfe2J1Zm5yKCclJyl9IikKICIgICBjYWxsIERlY2hvKCJjbGVhcmluZyBtYXJrZWQgZmlsZXMiKQogICAgZXhlICIybWF0Y2ggbmV0cndNYXJrRmlsZSAvIi5zOm5ldHJ3bWFya2ZpbGVtdGNoX3tidWZucigiJSIpfS4iLyIKICAgZW5kaWYKIAogICBpZiBhOmlzbG9jYWwgJiYgZXhpc3RzKCJ3Om5ldHJ3X2FjZGtlZXAiKSAmJiB3Om5ldHJ3X2FjZGtlZXAKKyAgICIgczpOZXRyd0Jyb3dzZTogc2V0IHVwICJzYWZlIiBvcHRpb25zIGZvciBsb2NhbCBkaXJlY3RvcnkvZmlsZSB7e3szCiAiICAgY2FsbCBEZWNobygiaGFuZGxlIHc6bmV0cndfYWNka2VlcDoiKQogIiAgIGNhbGwgRGVjaG8oImtlZXBqdW1wcyBsY2QgIi5mbmFtZWVzY2FwZShkaXJuYW1lKS4iIChkdWUgdG8gdzpuZXRyd19hY2RrZWVwPSIudzpuZXRyd19hY2RrZWVwLiIgLSBhY2Q9Ii4mYWNkLiIpIikKICAgIGV4ZSAna2VlcGogbGNkICcuZm5hbWVlc2NhcGUoZGlybmFtZSkKQEAgLTI3MjIsMTcgKzI3NDIsMTcgQEAKICIgICBjYWxsIERlY2hvKCJnZXRjd2Q8Ii5nZXRjd2QoKS4iPiIpCiAKICAgZWxzZWlmICFhOmlzbG9jYWwgJiYgZGlybmFtZSAhfiAnW1wvXSQnICYmIGRpcm5hbWUgIX4gJ14iJwotICAgIiBsb29rcyBsaWtlIGEgcmVndWxhciBmaWxlLCBhdHRlbXB0IHRyYW5zZmVyCisgICAiIHM6TmV0cndCcm93c2U6IGxvb2tzIGxpa2UgYSByZW1vdGUgcmVndWxhciBmaWxlLCBhdHRlbXB0IHRyYW5zZmVyIHt7ezMKICIgICBjYWxsIERlY2hvKCJhdHRlbXB0IHRyYW5zZmVyIGFzIHJlZ3VsYXIgZmlsZTwiLmRpcm5hbWUuIj4iKQogCi0gICAiIHJlbW92ZSBhbnkgZmlsZXR5cGUgaW5kaWNhdG9yIGZyb20gZW5kIG9mIGRpcm5hbWUsIGV4Y2VwdCBmb3IgdGhlIHt7ezMKKyAgICIgcmVtb3ZlIGFueSBmaWxldHlwZSBpbmRpY2F0b3IgZnJvbSBlbmQgb2YgZGlybmFtZSwgZXhjZXB0IGZvciB0aGUKICAgICIgInRoaXMgaXMgYSBkaXJlY3RvcnkiIGluZGljYXRvciAoLykuCiAgICAiIFRoZXJlIHNob3VsZG4ndCBiZSBvbmUgb2YgdGhvc2UgaGVyZSwgYW55d2F5LgogICAgbGV0IHBhdGg9IHN1YnN0aXR1dGUoZGlybmFtZSwnWyo9QHxdXHJcPSQnLCcnLCdlJykKICIgICBjYWxsIERlY2hvKCJuZXcgcGF0aDwiLnBhdGguIj4iKQogICAgY2FsbCBzOlJlbW90ZVBhdGhBbmFseXNpcyhkaXJuYW1lKQogCi0gICAiIHJlbW90ZS1yZWFkIHRoZSByZXF1ZXN0ZWQgZmlsZSBpbnRvIGN1cnJlbnQgYnVmZmVyIHt7ezMKKyAgICIgczpOZXRyd0Jyb3dzZTogcmVtb3RlLXJlYWQgdGhlIHJlcXVlc3RlZCBmaWxlIGludG8gY3VycmVudCBidWZmZXIge3t7MwogICAga2VlcGogbWFyayAnCiAgICBjYWxsIHM6TmV0cndFbmV3KGRpcm5hbWUpCiAgICBjYWxsIHM6TmV0cndTYWZlT3B0aW9ucygpCkBAIC0yNzQ5LDcgKzI3NjksNyBAQAogICAgIGV4ZSAic2lsIGtlZXBqIGtlZXBhbHQgZG9hdSBCdWZSZWFkUG9zdCAiLmZuYW1lZXNjYXBlKHM6Zm5hbWUpCiAgICBlbmRpZgogCi0gICAiIHNhdmUgY2VydGFpbiB3aW5kb3ctb3JpZW50ZWQgdmFyaWFibGVzIGludG8gYnVmZmVyLW9yaWVudGVkIHZhcmlhYmxlcyB7e3szCisgICAiIHM6TmV0cndCcm93c2U6IHNhdmUgY2VydGFpbiB3aW5kb3ctb3JpZW50ZWQgdmFyaWFibGVzIGludG8gYnVmZmVyLW9yaWVudGVkIHZhcmlhYmxlcyB7e3szCiAgICBjYWxsIHM6U2V0QnVmV2luVmFycygpCiAgICBjYWxsIHM6TmV0cndPcHRpb25SZXN0b3JlKCJ3OiIpCiAiICAgY2FsbCBEZWNobygic2V0bCBtYSBub21vZCIpCkBAIC0yNzcxLDcgKzI3OTEsNyBAQAogICAiIHNldCB1cCBtZW51IHt7ezMKICAga2VlcGogY2FsbCBzOk5ldHJ3TWVudSgxKQogCi0gICIgc2V0IHVwIGJ1ZmZlciB7e3szCisgICIgZ2V0L3NldC11cCBidWZmZXIge3t7MwogICBsZXQgcmV1c2luZz0gczpOZXRyd0dldEJ1ZmZlcihhOmlzbG9jYWwsZGlybmFtZSkKICAgIiBtYWludGFpbiBtYXJrZmlsZSBoaWdobGlnaHRpbmcKICAgaWYgZXhpc3RzKCJzOm5ldHJ3bWFya2ZpbGVtdGNoX3tidWZucignJScpfSIpICYmIHM6bmV0cndtYXJrZmlsZW10Y2hfe2J1Zm5yKCIlIil9ICE9ICIiCkBAIC0yODUyLDExICsyODcyLDExIEBACiAgIGVsc2UKICIgICBjYWxsIERlY2hvKCJyZW1vdGUgb25seToiKQogCi0gICAiIGFuYWx5emUgZGlybmFtZSBhbmQgZzpuZXRyd19saXN0X2NtZCB7e3s0CisgICAiIGFuYWx5emUgZGlybmFtZSBhbmQgZzpuZXRyd19saXN0X2NtZCB7e3szCiAiICAgY2FsbCBEZWNobygiYjpuZXRyd19jdXJkaXI8Ii4oZXhpc3RzKCJiOm5ldHJ3X2N1cmRpciIpPyBiOm5ldHJ3X2N1cmRpciA6ICJkb2Vzbid0IGV4aXN0IikuIj4gZGlybmFtZTwiLmRpcm5hbWUuIj4iKQogICAgaWYgZGlybmFtZSA9fiAiXk5ldHJ3VHJlZUxpc3RpbmdcPiIKICAgICBsZXQgZGlybmFtZT0gYjpuZXRyd19jdXJkaXIKLSIgICAgY2FsbCBEZWNobygiKGRpcm5hbWUgd2FzICIuZGlybmFtZS4iKSBkaXJuYW1lPCIuZGlybmFtZS4iPiIpCisiICAgIGNhbGwgRGVjaG8oIihkaXJuYW1lIHdhcyA8TmV0cndUcmVlTGlzdGluZz4pIGRpcm5hbWU8Ii5kaXJuYW1lLiI+IikKICAgIGVsc2VpZiBleGlzdHMoInc6bmV0cndfbGlzdHN0eWxlIikgJiYgdzpuZXRyd19saXN0c3R5bGUgPT0gczpUUkVFTElTVCAmJiBleGlzdHMoImI6bmV0cndfY3VyZGlyIikKICAgICBsZXQgZGlybmFtZT0gc3Vic3RpdHV0ZShiOm5ldHJ3X2N1cmRpciwnXFwnLCcvJywnZycpCiAgICAgaWYgZGlybmFtZSAhfiAnLyQnCkBAIC0yOTE0LDYgKzI5MzQsNyBAQAogIiBzOk5ldHJ3RmlsZUluZm86IHN1cHBvcnRzIHFmIChxdWVyeSBmb3IgZmlsZSBpbmZvcm1hdGlvbikge3t7MgogZnVuISBzOk5ldHJ3RmlsZUluZm8oaXNsb2NhbCxmbmFtZSkKICIgIGNhbGwgRGZ1bmMoInM6TmV0cndGaWxlSW5mbyhpc2xvY2FsPSIuYTppc2xvY2FsLiIgZm5hbWU8Ii5hOmZuYW1lLiI+KSIpCisgIGxldCB5a2VlcD0gQEAKICAgaWYgYTppc2xvY2FsCiAgICBpZiAoaGFzKCJ1bml4IikgfHwgaGFzKCJtYWN1bml4IikpICYmIGV4ZWN1dGFibGUoIi9iaW4vbHMiKQogICAgIGlmIGV4aXN0cygiYjpuZXRyd19jdXJkaXIiKQpAQCAtMjk0Myw2ICsyOTY0LDcgQEAKICAgZWxzZQogICAgZWNobyAic29ycnksIFwicWZcIiBub3Qgc3VwcG9ydGVkIHlldCBmb3IgcmVtb3RlIGZpbGVzIgogICBlbmRpZgorICBsZXQgQEA9IHlrZWVwCiAiICBjYWxsIERyZXQoInM6TmV0cndGaWxlSW5mbyIpCiBlbmRmdW4KIApAQCAtMjk1OCwyMiArMjk4MCwyMiBAQAogIiAgY2FsbCBEZWNobygiLS1yZS11c2UgYSBidWZmZXIgaWYgcG9zc2libGUtLSIpCiAgIGlmIGV4aXN0cygidzpuZXRyd19saXN0c3R5bGUiKSAmJiB3Om5ldHJ3X2xpc3RzdHlsZSA9PSBzOlRSRUVMSVNUCiAgICAiIGZpbmQgTmV0cndUcmVlTGlzdCBidWZmZXIgaWYgdGhlcmUgaXMgb25lCi0iICAgY2FsbCBEZWNobygiZmluZCBOZXRyd1RyZWVMaXN0IGJ1ZmZlciBpZiB0aGVyZSBpcyBvbmUiKQorIiAgIGNhbGwgRGVjaG8oImNhc2UgbGlzdHN0eWxlPXRyZWVsaXN0OiBmaW5kIE5ldHJ3VHJlZUxpc3QgYnVmZmVyIGlmIHRoZXJlIGlzIG9uZSIpCiAgICBpZiBleGlzdHMoInc6bmV0cndfdHJlZWJ1Zm5yIikgJiYgdzpuZXRyd190cmVlYnVmbnIgPiAwCiAiICAgIGNhbGwgRGVjaG8oIiAgcmUtdXNlIHc6bmV0cndfdHJlZWJ1Zm5yPSIudzpuZXRyd190cmVlYnVmbnIpCiAgICAgbGV0IGVpa2VlcD0gJmVpCiAgICAgc2V0IGVpPWFsbAogICAgIGV4ZSAic2lsISBiICIudzpuZXRyd190cmVlYnVmbnIKICAgICBsZXQgJmVpPSBlaWtlZXAKLSIgICAgY2FsbCBEcmV0KCJzOk5ldHJ3R2V0QnVmZmVyIDogYnVmbnVtIyIudzpuZXRyd190cmVlYnVmbnIuIjxOZXRyd1RyZWVMaXN0aW5nPiIpCi0gICAgcmV0dXJuCisiICAgIGNhbGwgRHJldCgiczpOZXRyd0dldEJ1ZmZlciAxPGJ1ZmZlciBub3QgY2xlYXJlZD4gOiBidWZudW0jIi53Om5ldHJ3X3RyZWVidWZuci4iPE5ldHJ3VHJlZUxpc3Rpbmc+IikKKyAgICByZXR1cm4gMQogICAgZW5kaWYKICAgIGxldCBidWZudW09IC0xCiAiICAgY2FsbCBEZWNobygiICBsaXN0c3R5bGU9VFJFRSBidXQgdzpuZXRyd190cmVlYnVmbnIgZG9lc24ndCBleGlzdCIpCiAKICAgZWxzZQogICAgIiBmaW5kIGJ1ZmZlciBudW1iZXIgb2YgYnVmZmVyIG5hbWVkIHByZWNpc2VseSB0aGUgc2FtZSBhcyBkaXJuYW1lIHt7ezMKLSIgICBjYWxsIERlY2hvKCItLWZpbmQgYnVmZmVyIG51bW5iZXIgb2YgYnVmZmVyIG5hbWVkIHByZWNpc2VseSB0aGUgc2FtZSBhcyBkaXJuYW1lLS0iKQorIiAgIGNhbGwgRGVjaG8oImNhc2UgbGlzdHR5bGUgbm90IHRyZWVsaXN0OiBmaW5kIGJ1ZmZlciBudW1uYmVyIG9mIGJ1ZmZlciBuYW1lZCBwcmVjaXNlbHkgdGhlIHNhbWUgYXMgZGlybmFtZS0tIikKICIgICBjYWxsIERyZWRpcigibHMhIikKIAogICAgIiBnZXQgZGlybmFtZSBhbmQgYXNzb2NpYXRlZCBidWZmZXIgbnVtYmVyCkBAIC0zMDAzLDcgKzMwMjUsNyBAQAogICAgIiBub3RlOiAhfiB3YXMgdXNlZCBqdXN0IGJlbG93LCBidXQgdGhhdCBtZWFucyB1c2luZyAuLi8gdG8gZ28gYmFjayB3b3VsZCBtYXRjaCAoaWUuIGFiYy9kZWYvICBhbmQgYWJjLyBtYXRjaGVzKQogICAgaWYgYnVmbnVtID4gMCAmJiBidWZuYW1lKGJ1Zm51bSkgIT0gZGlybmFtZSAmJiBidWZuYW1lKGJ1Zm51bSkgIT0gJy4nCiAgICAgIiBoYW5kbGUgYXBwcm94aW1hdGUgbWF0Y2hlcwotIiAgICBjYWxsIERlY2hvKCIgIGhhbmRsaW5nIGFwcHJveCBtYXRjaDogYnVmbnVtIyIuYnVmbnVtLiI8Ii5idWZuYW1lKGJ1Zm51bSkuIj4gYXBwcm94LWRpcm5hbWU8Ii5kaXJuYW1lLiI+IikKKyIgICAgY2FsbCBEZWNobygiICBoYW5kbGluZyBhcHByb3ggbWF0Y2g6IGJ1Zm51bSMiLmJ1Zm51bS4iPjAgQU5EIGJ1Zm5hbWU8Ii5idWZuYW1lKGJ1Zm51bSkuIj4hPWRpcm5hbWU8Ii5kaXJuYW1lLiI+IEFORCBidWZuYW1lKCIuYnVmbnVtLiIpIT0nLiciKQogICAgIGxldCBpYnVmICAgID0gMQogICAgIGxldCBidWZsYXN0ID0gYnVmbnIoIiQiKQogIiAgICBjYWxsIERlY2hvKCIgIGZpbmRidWYyOiBidWZsYXN0PWJ1Zm5yKCQpPSIuYnVmbGFzdCkKQEAgLTMwNDMsOSArMzA2NSwxMCBAQAogICBlbmRpZgogCiAgICIgZ2V0IGVuZXcgYnVmZmVyIGFuZCBuYW1lIGl0IC1vci0gcmUtdXNlIGJ1ZmZlciB7e3szCisiICBjYWxsIERlY2hvKCIgIGdldCBlbmV3IGJ1ZmZlciBhbmQgbmFtZSBpdCBPUiByZS11c2UgYnVmZmVyIikKICAgc2lsISBrZWVwaiBtYXJrICcKICAgaWYgYnVmbnVtIDwgMCB8fCAhYnVmZXhpc3RzKGJ1Zm51bSkKLSIgICBjYWxsIERlY2hvKCItLWdldCBlbmV3IGJ1ZmZlciBhbmQgbmFtZSBpdCAoYnVmZXhpc3RzKFtidWZudW09Ii5idWZudW0uIl0pPSIuYnVmZXhpc3RzKGJ1Zm51bSkuIikiKQorIiAgIGNhbGwgRGVjaG8oIi0tZ2V0IGVuZXcgYnVmZmVyIGFuZCBuYW1lIGl0ICAoYnVmbnVtIyIuYnVmbnVtLiI8MCBPUiBidWZleGlzdHMoIi5idWZudW0uIik9Ii5idWZleGlzdHMoYnVmbnVtKS4iPT0wKSIpCiAgICBjYWxsIHM6TmV0cndFbmV3KGRpcm5hbWUpCiAiICAgY2FsbCBEZWNobygiICBnb3QgZW5ldyBidWZmZXIjIi5idWZucigiJSIpLiIgKGFsdGJ1ZjwiLmV4cGFuZCgiIyIpLiI+KSIpCiAgICAiIG5hbWUgdGhlIGJ1ZmZlcgpAQCAtMzA3OCwxNCArMzEwMSwxNCBAQAogIiAgIGNhbGwgRGVjaG8oIiAgbmFtZWQgZW5ldyBidWZmZXIjIi5idWZucigiJSIpLiI8Ii5idWZuYW1lKCIlIikuIj4iKQogCiAgIGVsc2UgIiBSZS11c2UgdGhlIGJ1ZmZlcgotIiAgIGNhbGwgRGVjaG8oIi0tcmUtdXNlIGJ1ZmZlciMiLmJ1Zm51bS4iIChidWZleGlzdHMoW2J1Zm51bT0iLmJ1Zm51bS4iXSk9Ii5idWZleGlzdHMoYnVmbnVtKS4iKSIpCisiICAgY2FsbCBEZWNobygiLS1yZS11c2UgYnVmZmVyIyIuYnVmbnVtLiIgKGJ1Zm51bSMiLmJ1Zm51bS4iPj0wIEFORCBidWZleGlzdHMoIi5idWZudW0uIik9Ii5idWZleGlzdHMoYnVmbnVtKS4iIT0wKSIpCiAgICBsZXQgZWlrZWVwPSAmZWkKICAgIHNldCBlaT1hbGwKICAgIGlmIGdldGxpbmUoMikgPX4gJ14iIE5ldHJ3IERpcmVjdG9yeSBMaXN0aW5nJwotIiAgICBjYWxsIERlY2hvKCIgIHJlLXVzZSBidWZmZXIjIi5idWZudW0uIjwiLigoYnVmbnVtID4gMCk/IGJ1Zm5hbWUoYnVmbnVtKSA6ICIiKS4iPiB1c2luZzogIGtlZXBhbHQgYiAiLmJ1Zm51bSkKKyIgICAgY2FsbCBEZWNobygiICBnZXRsaW5lKDIpPCIuZ2V0bGluZSgyKS4nPiBtYXRjaGVzICJOZXRydyBEaXJlY3RvcnkgTGlzdGluZyIgOiB1c2luZyBrZWVwYWx0IGIgJy5idWZudW0pCiAgICAgZXhlICJzaWwhIGtlZXBhbHQgYiAiLmJ1Zm51bQogICAgZWxzZQotIiAgICBjYWxsIERlY2hvKCIgIHJldXNpbmcgYnVmZmVyIyIuYnVmbnVtLiI8Ii4oKGJ1Zm51bSA+IDApPyBidWZuYW1lKGJ1Zm51bSkgOiAiIikuIj4gdXNpbmc6ICBiICIuYnVmbnVtKQorIiAgICBjYWxsIERlY2hvKCIgIGdldGxpbmUoMik8Ii5nZXRsaW5lKDIpLic+IGRvZXMgbm90IG1hdGNoICJOZXRydyBEaXJlY3RvcnkgTGlzdGluZyIgOiB1c2luZyBiICcuYnVmbnVtKQogICAgIGV4ZSAic2lsISBiICIuYnVmbnVtCiAgICBlbmRpZgogICAgaWYgYnVmbmFtZSgiJSIpID09ICcuJwpAQCAtMzA5NSwxNyArMzExOCwyMiBAQAogICAgbGV0ICZlaT0gZWlrZWVwCiAgICBpZiBsaW5lKCIkIikgPD0gMQogICAgIGtlZXBqIGNhbGwgczpOZXRyd0xpc3RTZXR0aW5ncyhhOmlzbG9jYWwpCi0iICAgIGNhbGwgRHJldCgiczpOZXRyd0dldEJ1ZmZlciAwIDogcmUtdXNpbmcgYnVmZmVyIyIuYnVmbnIoIiUiKS4iLCBidXQgaXRzIGVtcHR5LCBzbyByZWZyZXNoIGl0IikKKyIgICAgY2FsbCBEcmV0KCJzOk5ldHJ3R2V0QnVmZmVyIDA8YnVmZmVyIGVtcHR5PiA6IHJlLXVzaW5nIGJ1ZmZlciMiLmJ1Zm5yKCIlIikuIiwgYnV0IGl0cyBlbXB0eSwgc28gcmVmcmVzaCBpdCIpCisgICAgcmV0dXJuIDAKKyAgIGVsc2VpZiBnOm5ldHJ3X2Zhc3Ricm93c2UgPT0gMCB8fCAoYTppc2xvY2FsICYmIGc6bmV0cndfZmFzdGJyb3dzZSA9PSAxKQorICAgIGtlZXBqIGNhbGwgczpOZXRyd0xpc3RTZXR0aW5ncyhhOmlzbG9jYWwpCisgICAgc2lsIGtlZXBqICVkCisiICAgIGNhbGwgRHJldCgiczpOZXRyd0dldEJ1ZmZlciAwPGNsZWFyZWQgYnVmZmVyPiA6IHJlLXVzaW5nIGJ1ZmZlciMiLmJ1Zm5yKCIlIikuIiwgYnV0IHJlZnJlc2hpbmcgZHVlIHRvIGc6bmV0cndfZmFzdGJyb3dzZT0iLmc6bmV0cndfZmFzdGJyb3dzZSkKICAgICByZXR1cm4gMAogICAgZWxzZWlmIGV4aXN0cygidzpuZXRyd19saXN0c3R5bGUiKSAmJiB3Om5ldHJ3X2xpc3RzdHlsZSA9PSBzOlRSRUVMSVNUCiAiICAgIGNhbGwgRGVjaG8oIi0tcmUtdXNlIHRyZWUgbGlzdGluZy0tIikKICIgICAgY2FsbCBEZWNobygiICBjbGVhciBidWZmZXI8Ii5leHBhbmQoIiUiKS4iPiB3aXRoIDolZCIpCiAgICAgc2lsIGtlZXBqICVkCiAgICAga2VlcGogY2FsbCBzOk5ldHJ3TGlzdFNldHRpbmdzKGE6aXNsb2NhbCkKLSIgICAgY2FsbCBEcmV0KCJzOk5ldHJ3R2V0QnVmZmVyIDAgOiByZS11c2luZyBidWZmZXIjIi5idWZucigiJSIpLiIsIGJ1dCB0cmVlbGlzdCBtb2RlIGFsd2F5cyBuZWVkcyBhIHJlZnJlc2giKQorIiAgICBjYWxsIERyZXQoInM6TmV0cndHZXRCdWZmZXIgMDxjbGVhcmVkIGJ1ZmZlcj4gOiByZS11c2luZyBidWZmZXIjIi5idWZucigiJSIpLiIsIGJ1dCB0cmVlbGlzdCBtb2RlIGFsd2F5cyBuZWVkcyBhIHJlZnJlc2giKQogICAgIHJldHVybiAwCiAgICBlbHNlCi0iICAgIGNhbGwgRHJldCgiczpOZXRyd0dldEJ1ZmZlciAxIDogYnVmIyIuYnVmbnIoIiUiKSkKKyIgICAgY2FsbCBEcmV0KCJzOk5ldHJ3R2V0QnVmZmVyIDE8YnVmZmVyIG5vdCBjbGVhcmVkPiA6IGJ1ZiMiLmJ1Zm5yKCIlIikpCiAgICAgcmV0dXJuIDEKICAgIGVuZGlmCiAgIGVuZGlmCkBAIC0zMTI2LDcgKzMxNTQsNyBAQAogIiAgY2FsbCBEZWNobygiICBjbGVhciBidWZmZXI8Ii5leHBhbmQoIiUiKS4iPiB3aXRoIDolZCIpCiAgIHNpbCEga2VlcGFsdCBrZWVwaiAlZAogCi0iICBjYWxsIERyZXQoInM6TmV0cndHZXRCdWZmZXIgMCA6IHRhYiMiLnRhYnBhZ2VucigpLiIgd2luIyIud2lubnIoKS4iIGJ1ZiMiLmJ1Zm5yKCIlIikuIjwiLmJ1Zm5hbWUoIiUiKS4iPiBtb2RpZmllZD0iLiZtb2RpZmllZC4iIG1vZGlmaWFibGU9Ii4mbW9kaWZpYWJsZS4iIHJlYWRvbmx5PSIuJnJlYWRvbmx5KQorIiAgY2FsbCBEcmV0KCJzOk5ldHJ3R2V0QnVmZmVyIDA8Y2xlYXJlZCBidWZmZXI+IDogdGFiIyIudGFicGFnZW5yKCkuIiB3aW4jIi53aW5ucigpLiIgYnVmIyIuYnVmbnIoIiUiKS4iPCIuYnVmbmFtZSgiJSIpLiI+IG1vZGlmaWVkPSIuJm1vZGlmaWVkLiIgbW9kaWZpYWJsZT0iLiZtb2RpZmlhYmxlLiIgcmVhZG9ubHk9Ii4mcmVhZG9ubHkpCiAgIHJldHVybiAwCiBlbmRmdW4KIApAQCAtMzI2Niw4ICszMjk0LDggQEAKICAgIHNldGxvY2FsIG5vc3dmCiAgIGVuZGlmCiAiICBjYWxsIERyZWRpcigibHMhIikKLSIgIGNhbGwgRGVjaG8oImV4ZSBzZXRsb2NhbCB0cz0iLmc6bmV0cndfbWF4ZmlsZW5hbWVsZW4pCi0gIGV4ZSAic2V0bG9jYWwgdHM9Ii5nOm5ldHJ3X21heGZpbGVuYW1lbGVuCisiICBjYWxsIERlY2hvKCIoTG9jYWxMaXN0aW5nKSBleGUgc2V0bCB0cz0iLihnOm5ldHJ3X21heGZpbGVuYW1lbGVuKzEpKQorICBleGUgInNldGwgdHM9Ii4oZzpuZXRyd19tYXhmaWxlbmFtZWxlbisxKQogICBzZXRsb2NhbCBpc2srPS4sfiwtCiAgIGlmIGc6bmV0cndfZmFzdGJyb3dzZSA+IGE6aXNsb2NhbAogICAgc2V0bG9jYWwgYmg9aGlkZQpAQCAtMzI4Myw2ICszMzExLDcgQEAKICIgICAgICAgICA9MTogbG9jYWwgYnJvd3NpbmcKIGZ1biEgczpOZXRyd0xpc3RTdHlsZShpc2xvY2FsKQogIiAgY2FsbCBEZnVuYygiTmV0cndMaXN0U3R5bGUoaXNsb2NhbD0iLmE6aXNsb2NhbC4iKSB3Om5ldHJ3X2xpc3RzdHlsZT0iLnc6bmV0cndfbGlzdHN0eWxlKQorICBsZXQgeWtlZXAgICAgICAgICAgICAgPSBAQAogICBsZXQgZm5hbWUgICAgICAgICAgICAgPSBzOk5ldHJ3R2V0V29yZCgpCiAgIGlmICFleGlzdHMoInc6bmV0cndfbGlzdHN0eWxlIil8bGV0IHc6bmV0cndfbGlzdHN0eWxlPSBnOm5ldHJ3X2xpc3RzdHlsZXxlbmRpZgogICBsZXQgdzpuZXRyd19saXN0c3R5bGUgPSAodzpuZXRyd19saXN0c3R5bGUgKyAxKSAlIHM6TUFYTElTVApAQCAtMzM0MCw2ICszMzY5LDcgQEAKICAgaWYgcmVzdWx0IDw9IDAgJiYgZXhpc3RzKCJ3Om5ldHJ3X2Jhbm5lcmNudCIpCiAgICBleGUgInNpbCEga2VlcGogIi53Om5ldHJ3X2Jhbm5lcmNudAogICBlbmRpZgorICBsZXQgQEA9IHlrZWVwCiAKICIgIGNhbGwgRHJldCgiTmV0cndMaXN0U3R5bGUiLihleGlzdHMoInc6bmV0cndfbGlzdHN0eWxlIik/ICcgOiB3Om5ldHJ3X2xpc3RzdHlsZT0nLnc6bmV0cndfbGlzdHN0eWxlIDogIiIpKQogZW5kZnVuCkBAIC0zMzQ5LDYgKzMzNzksNyBAQAogZnVuISBzOk5ldHJ3QmFubmVyQ3RybChpc2xvY2FsKQogIiAgY2FsbCBEZnVuYygiczpOZXRyd0Jhbm5lckN0cmwoaXNsb2NhbD0iLmE6aXNsb2NhbC4iKSBnOm5ldHJ3X2Jhbm5lcj0iLmc6bmV0cndfYmFubmVyKQogCisgIGxldCB5a2VlcD0gQEAKICAgIiB0b2dnbGUgdGhlIGJhbm5lciAoZW5hYmxlL3N1cHByZXNzKQogICBsZXQgZzpuZXRyd19iYW5uZXI9ICFnOm5ldHJ3X2Jhbm5lcgogCkBAIC0zMzY0LDYgKzMzOTUsNyBAQAogICBpZiByZXN1bHQgPD0gMCAmJiBleGlzdHMoInc6bmV0cndfYmFubmVyY250IikKICAgIGV4ZSAia2VlcGogIi53Om5ldHJ3X2Jhbm5lcmNudAogICBlbmRpZgorICBsZXQgQEA9IHlrZWVwCiAiICBjYWxsIERyZXQoInM6TmV0cndCYW5uZXJDdHJsIDogZzpuZXRyd19iYW5uZXI9Ii5nOm5ldHJ3X2Jhbm5lcikKIGVuZGZ1bgogCkBAIC0zNDM5LDkgKzM0NzEsMTEgQEAKIGZ1biEgczpOZXRyd0Jyb3dzZUNoZ0Rpcihpc2xvY2FsLG5ld2RpciwuLi4pCiAiICBjYWxsIERmdW5jKCJzOk5ldHJ3QnJvd3NlQ2hnRGlyKGlzbG9jYWw9Ii5hOmlzbG9jYWwuIj4gbmV3ZGlyPCIuYTpuZXdkaXIuIj4pIGE6MD0iLmE6MC4iIGN1cnBvczwiLnN0cmluZyhnZXRwb3MoIi4iKSkuIj4gYjpuZXRyd19jdXJkaXI8Ii4oZXhpc3RzKCJiOm5ldHJ3X2N1cmRpciIpPyBiOm5ldHJ3X2N1cmRpciA6ICIiKS4iPiIpCiAKKyAgbGV0IHlrZWVwPSBAQAogICBpZiAhZXhpc3RzKCJiOm5ldHJ3X2N1cmRpciIpCiAgICAiIERvbid0IHRyeSB0byBjaGFuZ2UtZGlyZWN0b3J5OiB0aGlzIGNhbiBoYXBwZW4sIGZvciBleGFtcGxlLCB3aGVuIG5ldHJ3I0Vycm9yTXNnIGhhcyBiZWVuIGNhbGxlZAogICAgIiBhbmQgdGhlIGN1cnJlbnQgd2luZG93IGlzIHRoZSBOZXRyd01lc3NhZ2Ugd2luZG93LgorICAgbGV0IEBAPSB5a2VlcAogIiAgIGNhbGwgRGVjaG8oIihOZXRyd0Jyb3dzZUNoZ0RpcikgYjpuZXRyd19jdXJkaXIgZG9lc24ndCBleGlzdCEiKQogIiAgIGNhbGwgRGVjaG8oIihOZXRyd0Jyb3dzZUNoZ0RpcikgZ2V0Y3dkPCIuZ2V0Y3dkKCkuIj4iKQogIiAgIGNhbGwgRHJlZGlyKCJscyEiKQpAQCAtMzQ0OSw2ICszNDgzLDcgQEAKICAgIHJldHVybgogICBlbmRpZgogCisgICIgTmV0cndCcm93c2VDaGdEaXI6IHNhdmUgb3B0aW9ucyBhbmQgaW5pdGlhbGl6ZSB7e3szCiAgIGtlZXBqIGNhbGwgczpOZXRyd09wdGlvblNhdmUoInM6IikKICAga2VlcGogY2FsbCBzOk5ldHJ3U2FmZU9wdGlvbnMoKQogICBsZXQgbmJjZF9jdXJwb3MgICAgICAgICAgICAgICAgPSBuZXRydyNOZXRyd1NhdmVQb3NuKCkKQEAgLTM0NzgsMTUgKzM1MTMsMTUgQEAKICAgZW5kaWYKIAogICBpZiBuZXdkaXIgIX4gZGlycGF0Ci0gICAiIC0tLS0tLS0tLS0tLQotICAgIiBlZGl0IGEgZmlsZToKLSAgICIgLS0tLS0tLS0tLS0tCisgICAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIiBOZXRyd0Jyb3dzZUNoZ0RpcjogZWRpdCBhIGZpbGUge3t7MworICAgIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgICBjYWxsIERlY2hvKCcoTmV0cndCcm93c2VDaGdEaXIpIGNhc2UgImhhbmRsaW5nIGEgZmlsZSI6IG5ld2RpcjwnLm5ld2Rpci4nPiAhfiBkaXJwYXQ8Jy5kaXJwYXQuIj4iKQogCi0gICIgc2F2ZSBwb3NpdGlvbiBmb3IgYmVuZWZpdCBvZiBSZXhwbG9yZQotICBsZXQgczpyZXhwb3NuX3tidWZucigiJSIpfT0gbmV0cncjTmV0cndTYXZlUG9zbigpCisgICAiIHNhdmUgcG9zaXRpb24gZm9yIGJlbmVmaXQgb2YgUmV4cGxvcmUKKyAgIGxldCBzOnJleHBvc25fe2J1Zm5yKCIlIil9PSBuZXRydyNOZXRyd1NhdmVQb3NuKCkKIAotIiAgY2FsbCBEZWNobygiKE5ldHJ3QnJvd3NlQ2hnRGlyKSBzZXR0aW5nIHM6cmV4cG9zbl8iLmJ1Zm5yKCIlIikuIiB0byBTYXZlUG9zbiIpCisiICAgY2FsbCBEZWNobygiKE5ldHJ3QnJvd3NlQ2hnRGlyKSBzZXR0aW5nIHM6cmV4cG9zbl8iLmJ1Zm5yKCIlIikuIiB0byBTYXZlUG9zbiIpCiAgICBpZiBleGlzdHMoInc6bmV0cndfbGlzdHN0eWxlIikgJiYgdzpuZXRyd19saXN0c3R5bGUgPT0gczpUUkVFTElTVCAmJiBleGlzdHMoInc6bmV0cndfdHJlZWRpY3QiKSAmJiBuZXdkaXIgIX4gJ15cKC9cfFxhOlwpJwogICAgIGxldCBkaXJuYW1lPSBzOk5ldHJ3VHJlZURpcigpCiAgICAgaWYgZGlybmFtZSA9fiAnLyQnCkBAIC0zNTA3LDIwICszNTQyLDI2IEBACiAiICAgIGNhbGwgRGVjaG8oIihOZXRyd0Jyb3dzZUNoZ0Rpcikgc2V0IHVwIHdpbmRvd3MgZm9yIGVkaXRpbmc8Ii5mbmFtZWVzY2FwZShkaXJuYW1lKS4iPiAgZGlkc3BsaXQ9Ii4oZXhpc3RzKCJzOmRpZHNwbGl0Iik/IHM6ZGlkc3BsaXQgOiAiZG9lc24ndCBleGlzdCIpKQogICAgIGtlZXBqIGNhbGwgczpOZXRyd09wdGlvblJlc3RvcmUoInM6IikKICAgICBpZiAhZXhpc3RzKCJzOmRpZHNwbGl0IikKKyIgICAgIGNhbGwgRGVjaG8oInM6ZGlkc3BsaXQgZG9lcyBub3QgZXhpc3Q7IGc6bmV0cndfYnJvd3NlX3NwbGl0PSIuZzpuZXRyd19icm93c2Vfc3BsaXQuIiB3aW4jIi53aW5ucigpKQogICAgICBpZiAgICAgZzpuZXRyd19icm93c2Vfc3BsaXQgPT0gMQorICAgICAgIiBob3Jpem9udGFsbHkgc3BsaXR0aW5nIHRoZSB3aW5kb3cgZmlyc3QKICAgICAgIG5ldwogICAgICAgaWYgISZlYQogICAgICAgIHdpbmNtZCBfCiAgICAgICBlbmRpZgogICAgICBlbHNlaWYgZzpuZXRyd19icm93c2Vfc3BsaXQgPT0gMgorICAgICAgIiB2ZXJ0aWNhbGx5IHNwbGl0dGluZyB0aGUgd2luZG93IGZpcnN0CiAgICAgICByaWdodGIgdmVydCBuZXcKICAgICAgIGlmICEmZWEKICAgICAgICB3aW5jbWQgfAogICAgICAgZW5kaWYKICAgICAgZWxzZWlmIGc6bmV0cndfYnJvd3NlX3NwbGl0ID09IDMKKyAgICAgICIgb3BlbiBmaWxlIGluIG5ldyB0YWIKICAgICAgIHRhYm5ldwogICAgICBlbHNlaWYgZzpuZXRyd19icm93c2Vfc3BsaXQgPT0gNAorICAgICAgIiBhY3QgbGlrZSAiUCIgKGllLiBvcGVuIHByZXZpb3VzIHdpbmRvdykKICAgICAgIGlmIHM6TmV0cndQcmV2V2luT3BlbigyKSA9PSAzCisgICAgICAgbGV0IEBAPSB5a2VlcAogIiAgICAgICBjYWxsIERyZXQoInM6TmV0cndCcm93c2VDaGdEaXIiKQogICAgICAgIHJldHVybgogICAgICAgZW5kaWYKQEAgLTM1NDAsNiArMzU4MSw3IEBACiAgICAgaWYgYTppc2xvY2FsCiAiICAgICBjYWxsIERlY2hvKCIoTmV0cndCcm93c2VDaGdEaXIpIGVkaXQgbG9jYWwgZmlsZTogZXhlIGUhICIuZm5hbWVlc2NhcGUoZGlybmFtZSkpCiAgICAgIGV4ZSAiZSEgIi5mbmFtZWVzY2FwZShkaXJuYW1lKQorICAgICBjYWxsIHM6TmV0cndDdXJzb3IoKQogICAgIGVsc2UKICIgICAgIGNhbGwgRGVjaG8oIihOZXRyd0Jyb3dzZUNoZ0RpcikgcmVtb3RlIGZpbGU6IE5ldHJ3QnJvd3NlIHdpbGwgZWRpdCBpdCIpCiAgICAgZW5kaWYKQEAgLTM1NjYsMjUgKzM2MDgsMjUgQEAKICAgIGVuZGlmCiAKICAgZWxzZWlmIG5ld2RpciA9fiAnXi8nCi0gICAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIiBqdXN0IGdvIHRvIHRoZSBuZXcgZGlyZWN0b3J5IHNwZWMKLSAgICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICIgTmV0cndCcm93c2VDaGdEaXI6IGp1c3QgZ28gdG8gdGhlIG5ldyBkaXJlY3Rvcnkgc3BlYyB7e3szCisgICAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgICBjYWxsIERlY2hvKCcoTmV0cndCcm93c2VDaGdEaXIpIGNhc2UgImp1c3QgZ28gdG8gbmV3IGRpcmVjdG9yeSBzcGVjIjogbmV3ZGlyPCcubmV3ZGlyLic+JykKLSAgIGxldCBkaXJuYW1lPSBuZXdkaXIKKyAgIGxldCBkaXJuYW1lICAgID0gbmV3ZGlyCiAgICBrZWVwaiBjYWxsIHM6U2V0UmV4RGlyKGE6aXNsb2NhbCxkaXJuYW1lKQogICAga2VlcGogY2FsbCBzOk5ldHJ3T3B0aW9uUmVzdG9yZSgiczoiKQogCiAgIGVsc2VpZiBuZXdkaXIgPT0gJy4vJwotICAgIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIiByZWZyZXNoIHRoZSBkaXJlY3RvcnkgbGlzdAotICAgIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICIgTmV0cndCcm93c2VDaGdEaXI6IHJlZnJlc2ggdGhlIGRpcmVjdG9yeSBsaXN0IHt7ezMKKyAgICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiICAgY2FsbCBEZWNobygnKE5ldHJ3QnJvd3NlQ2hnRGlyKSBjYXNlICJyZWZyZXNoIGRpcmVjdG9yeSBsaXN0aW5nIjogbmV3ZGlyID09ICIuLyInKQogICAga2VlcGogY2FsbCBzOlNldFJleERpcihhOmlzbG9jYWwsZGlybmFtZSkKIAogICBlbHNlaWYgbmV3ZGlyID09ICcuLi8nCi0gICAiIC0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICIgZ28gdXAgb25lIGRpcmVjdG9yeQotICAgIiAtLS0tLS0tLS0tLS0tLS0tLS0tCisgICAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAiIE5ldHJ3QnJvd3NlQ2hnRGlyOiBnbyB1cCBvbmUgZGlyZWN0b3J5IHt7ezMKKyAgICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgICBjYWxsIERlY2hvKCcoTmV0cndCcm93c2VDaGdEaXIpIGNhc2UgImdvIHVwIG9uZSBkaXJlY3RvcnkiOiBuZXdkaXIgPT0gIi4uLyInKQogCiAgICBpZiB3Om5ldHJ3X2xpc3RzdHlsZSA9PSBzOlRSRUVMSVNUICYmIGV4aXN0cygidzpuZXRyd190cmVlZGljdCIpCkBAIC0zNjIyLDYgKzM2NjQsOSBAQAogICAga2VlcGogY2FsbCBzOlNldFJleERpcihhOmlzbG9jYWwsZGlybmFtZSkKIAogICBlbHNlaWYgZXhpc3RzKCJ3Om5ldHJ3X2xpc3RzdHlsZSIpICYmIHc6bmV0cndfbGlzdHN0eWxlID09IHM6VFJFRUxJU1QgJiYgZXhpc3RzKCJ3Om5ldHJ3X3RyZWVkaWN0IikKKyAgICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICIgTmV0cndCcm93c2VDaGdEaXI6IEhhbmRsZSBUcmVlIExpc3Rpbmcge3t7MworICAgIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiAgIGNhbGwgRGVjaG8oJyhOZXRyd0Jyb3dzZUNoZ0RpcikgY2FzZSBsaXN0c3R5bGUgaXMgVFJFRUxJU1QgYW5kIHc6bmV0cndfdHJlZWRpY3QgZXhpc3RzJykKICAgICIgZm9yY2UgYSByZWZyZXNoIChmb3IgVFJFRUxJU1QsIHdhaXQgZm9yIE5ldHJ3VHJlZURpcigpIHRvIGZvcmNlIHRoZSByZWZyZXNoKQogIiAgIGNhbGwgRGVjaG8oIihOZXRyd0Jyb3dzZUNoZ0Rpcikgc2V0bCBub3JvIG1hIikKQEAgLTM2ODEsMTIgKzM3MjYsMTcgQEAKICAgIGxldCBzOnRyZWVmb3JjZXJlZHJhdyA9IDEKIAogICBlbHNlCi0gICAiIGdvIGRvd24gb25lIGRpcmVjdG9yeQotICAgbGV0IGRpcm5hbWU9IHM6Q29tcG9zZVBhdGgoZGlybmFtZSxuZXdkaXIpCisgICAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICIgTmV0cndCcm93c2VDaGdEaXI6IEdvIGRvd24gb25lIGRpcmVjdG9yeSB7e3szCisgICAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIGxldCBkaXJuYW1lICAgID0gczpDb21wb3NlUGF0aChkaXJuYW1lLG5ld2RpcikKICIgICBjYWxsIERlY2hvKCIoTmV0cndCcm93c2VDaGdEaXIpIGdvIGRvd24gb25lIGRpcjogZGlybmFtZTwiLmRpcm5hbWUuIj4gbmV3ZGlyPCIubmV3ZGlyLiI+IikKICAgIGtlZXBqIGNhbGwgczpTZXRSZXhEaXIoYTppc2xvY2FsLGRpcm5hbWUpCiAgIGVuZGlmCiAKKyAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIiBOZXRyd0Jyb3dzZUNoZ0RpcjogUmVzdG9yZSBhbmQgQ2xlYW51cCB7e3szCisgIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBrZWVwaiBjYWxsIHM6TmV0cndPcHRpb25SZXN0b3JlKCJzOiIpCiAgIGlmIGRvbG9ja291dAogIiAgIGNhbGwgRGVjaG8oIihOZXRyd0Jyb3dzZUNoZ0RpcikgZmlsZXdyaXRhYmxlKGRpcm5hbWU8Ii5kaXJuYW1lLiI+KT0iLmZpbGV3cml0YWJsZShkaXJuYW1lKSkKQEAgLTM3MDIsNiArMzc1Miw3IEBACiAiICAgIGNhbGwgRGVjaG8oIihOZXRyd0Jyb3dzZUNoZ0Rpcikgcm89Ii4mbDpyby4iIG1hPSIuJmw6bWEuIiBtb2Q9Ii4mbDptb2QuIiB3cmFwPSIuJmw6d3JhcC4iIChmaWxlbmFtZTwiLmV4cGFuZCgiJSIpLiI+IHdpbiMiLndpbm5yKCkuIiBmdDwiLiZmdC4iPikiKQogICAgZW5kaWYKICAgZW5kaWYKKyAgbGV0IEBAPSB5a2VlcAogCiAiICBjYWxsIERyZXQoInM6TmV0cndCcm93c2VDaGdEaXIgPCIuZGlybmFtZS4iPiA6IGN1cnBvczwiLnN0cmluZyhnZXRwb3MoIi4iKSkuIj4iKQogICByZXR1cm4gZGlybmFtZQpAQCAtMzcxNCw2ICszNzY1LDkgQEAKIGZ1biEgbmV0cncjTmV0cndCcm93c2VYKGZuYW1lLHJlbW90ZSkKICIgIGNhbGwgRGZ1bmMoIk5ldHJ3QnJvd3NlWChmbmFtZTwiLmE6Zm5hbWUuIj4gcmVtb3RlPSIuYTpyZW1vdGUuIikiKQogCisgIGxldCB5a2VlcCAgICAgID0gQEAKKyAgbGV0IHNjcmVlbnBvc24gPSBuZXRydyNOZXRyd1NhdmVQb3NuKCkKKwogICAiIHNwZWNpYWwgY29yZSBkdW1wIGhhbmRsZXIKICAgaWYgYTpmbmFtZSA9fiAnL2NvcmVcKFwuXGRcK1wpXD0kJwogICAgaWYgZXhpc3RzKCJnOk5ldHJ3X2NvcmVoYW5kbGVyIikKQEAgLTM3MzAsNiArMzc4NCw4IEBACiAgICAgICBlbmRpZgogICAgICBlbmRmb3IKICAgICBlbmRpZgorICAgIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzY3JlZW5wb3NuKQorICAgIGxldCBAQD0geWtlZXAKICIgICAgY2FsbCBEcmV0KCJOZXRyd0Jyb3dzZVggOiBjb3JlZHVtcCBoYW5kbGVyIGludm9rZWQiKQogICAgIHJldHVybgogICAgZW5kaWYKQEAgLTM3NDcsNyArMzgwMyw3IEBACiAgICIgZ25vbWUtb3BlbidzIHN1YnNpZGlhcnkgZGlzcGxheSB0b29scyBhcmUgbGFyZ2VseSBhYnNlbnQuICBLZGUgc3lzdGVtcwogICAiIHVzdWFsbHkgaGF2ZSAia2RlaW5pdCIgcnVubmluZywgdGhvdWdoLi4uICAodG54IE1pa29sYWogTWFjaG93c2tpKQogICBpZiAhZXhpc3RzKCJzOmhhc2tkZWluaXQiKQotICAgaWYgaGFzKCJ1bml4IikKKyAgIGlmIGhhcygidW5peCIpICYmIGV4ZWN1dGFibGUoInBzIikgJiYgIWhhcygid2luMzJ1bml4IikKICAgICBsZXQgczpoYXNrZGVpbml0PSBzeXN0ZW0oInBzIC1lIikgPX4gJ2tkZWluaXQnIAogICAgIGlmIHY6c2hlbGxfZXJyb3IKICAgICAgbGV0IHM6aGFza2RlaW5pdCA9IDAKQEAgLTM3NjAsMTIgKzM4MTYsMTIgQEAKIAogICBpZiBhOnJlbW90ZSA9PSAxCiAgICAiIGNyZWF0ZSBhIGxvY2FsIGNvcHkKLSIgICBjYWxsIERlY2hvKCJhOnJlbW90ZT0iLmE6cmVtb3RlLiI6IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgPCIuYTpmbmFtZS4iPiIpCisiICAgY2FsbCBEZWNobygiKHJlbW90ZSkgYTpyZW1vdGU9Ii5hOnJlbW90ZS4iOiBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIDwiLmE6Zm5hbWUuIj4iKQogICAgc2V0bG9jYWwgYmg9ZGVsZXRlCiAgICBjYWxsIG5ldHJ3I05ldFJlYWQoMyxhOmZuYW1lKQogICAgIiBhdHRlbXB0IHRvIHJlbmFtZSB0ZW1wZmlsZQogICAgbGV0IGJhc2VuYW1lPSBzdWJzdGl0dXRlKGE6Zm5hbWUsJ15cKC4qXCkvXCguKlwpXC5cKFteLl0qXCkkJywnXDInLCcnKQotICAgbGV0IG5ld25hbWU9IHN1YnN0aXR1dGUoczpuZXRyd190bXBmaWxlLCdeXCguKlwpL1woLipcKVwuXChbXi5dKlwpJCcsJ1wxLycuYmFzZW5hbWUuJy5cMycsJycpCisgICBsZXQgbmV3bmFtZSA9IHN1YnN0aXR1dGUoczpuZXRyd190bXBmaWxlLCdeXCguKlwpL1woLipcKVwuXChbXi5dKlwpJCcsJ1wxLycuYmFzZW5hbWUuJy5cMycsJycpCiAiICAgY2FsbCBEZWNobygiYmFzZW5hbWU8Ii5iYXNlbmFtZS4iPiIpCiAiICAgY2FsbCBEZWNobygibmV3bmFtZSA8Ii5uZXduYW1lLiI+IikKICAgIGlmIHJlbmFtZShzOm5ldHJ3X3RtcGZpbGUsbmV3bmFtZSkgPT0gMApAQCAtMzc3Niw2ICszODMyLDcgQEAKICAgICBsZXQgZm5hbWU9IHM6bmV0cndfdG1wZmlsZQogICAgZW5kaWYKICAgZWxzZQorIiAgIGNhbGwgRGVjaG8oIihsb2NhbCkgYTpyZW1vdGU9Ii5hOnJlbW90ZS4iOiBoYW5kbGluZyBsb2NhbCBjb3B5IG9mIDwiLmE6Zm5hbWUuIj4iKQogICAgbGV0IGZuYW1lPSBhOmZuYW1lCiAgICAiIHNwZWNpYWwgfiBoYW5kbGVyIGZvciBsb2NhbAogICAgaWYgZm5hbWUgPX4gJ15cficgJiYgZXhwYW5kKCIkSE9NRSIpICE9ICIiCkBAIC0zNzk4LDkgKzM4NTUsMTAgQEAKICAgZWxzZQogICAgbGV0IHJlZGlyPSAmc3JyIC4gIi9kZXYvbnVsbCIKICAgZW5kaWYKLSIgIGNhbGwgRGVjaG8oInJlZGlyeyIucmVkaXIuIn0gc3JyeyIuJnNyci4ifSIpCisiICBjYWxsIERlY2hvKCJzZXQgdXAgcmVkaXJlY3Rpb246IHJlZGlyeyIucmVkaXIuIn0gc3JyeyIuJnNyci4ifSIpCiAKICAgIiBleHRyYWN0IGFueSB2aWV3aW5nIG9wdGlvbnMuICBBc3N1bWVzIHRoYXQgdGhleSdyZSBzZXQgYXBhcnQgYnkgcXVvdGVzLgorIiAgY2FsbCBEZWNobygiZXh0cmFjdCBhbnkgdmlld2luZyBvcHRpb25zIikKICAgaWYgZXhpc3RzKCJnOm5ldHJ3X2Jyb3dzZXhfdmlld2VyIikKICIgICBjYWxsIERlY2hvKCJnOm5ldHJ3X2Jyb3dzZXhfdmlld2VyPCIuZzpuZXRyd19icm93c2V4X3ZpZXdlci4iPiIpCiAgICBpZiBnOm5ldHJ3X2Jyb3dzZXhfdmlld2VyID1+ICdccycKQEAgLTM4MjMsNiArMzg4MSw3IEBACiAgIGVuZGlmCiAKICAgIiBleGVjdXRlIHRoZSBmaWxlIGhhbmRsZXIKKyIgIGNhbGwgRGVjaG8oImV4ZWN1dGUgdGhlIGZpbGUgaGFuZGxlciAoaWYgYW55KSIpCiAgIGlmIGV4aXN0cygiZzpuZXRyd19icm93c2V4X3ZpZXdlciIpICYmIGc6bmV0cndfYnJvd3NleF92aWV3ZXIgPT0gJy0nCiAiICAgY2FsbCBEZWNobygiZzpuZXRyd19icm93c2V4X3ZpZXdlcjwiLmc6bmV0cndfYnJvd3NleF92aWV3ZXIuIj4iKQogICAgbGV0IHJldD0gbmV0cndGaWxlSGFuZGxlcnMjSW52b2tlKGV4dGVuLGZuYW1lKQpAQCAtMzgzNCw2ICszODkzLDcgQEAKICAgIGxldCByZXQ9IHY6c2hlbGxfZXJyb3IKIAogICBlbHNlaWYgaGFzKCJ3aW4zMiIpIHx8IGhhcygid2luNjQiKQorIiAgIGNhbGwgRGVjaG8oIndpbmRvd3MiKQogICAgaWYgZXhlY3V0YWJsZSgic3RhcnQiKQogIiAgICBjYWxsIERlY2hvKCdleGUgc2lsICFzdGFydCBydW5kbGwzMiB1cmwuZGxsLEZpbGVQcm90b2NvbEhhbmRsZXIgJy5zaGVsbGVzY2FwZShmbmFtZSwxKSkKICAgICBleGUgJ3NpbCAhc3RhcnQgcnVuZGxsMzIgdXJsLmRsbCxGaWxlUHJvdG9jb2xIYW5kbGVyICcuc2hlbGxlc2NhcGUoZm5hbWUsMSkKQEAgLTM4NDYsMTcgKzM5MDYsMzUgQEAKICAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgIGxldCByZXQ9IHY6c2hlbGxfZXJyb3IKIAotICBlbHNlaWYgaGFzKCJ1bml4IikgJiYgZXhlY3V0YWJsZSgiZ25vbWUtb3BlbiIpICYmICFzOmhhc2tkZWluaXQKLSIgICBjYWxsIERlY2hvKCJleGUgc2lsICFnbm9tZS1vcGVuICIuc2hlbGxlc2NhcGUoZm5hbWUsMSkuIiAiLnJlZGlyKQotICAgZXhlICJzaWwgIWdub21lLW9wZW4gIi5zaGVsbGVzY2FwZShmbmFtZSwxKS5yZWRpcgorICBlbHNlaWYgaGFzKCJ3aW4zMnVuaXgiKQorICAgbGV0IHdpbmZuYW1lPSAnYzpcY3lnd2luJy5zdWJzdGl0dXRlKGZuYW1lLCcvJywnXFwnLCdnJykKKyIgICBjYWxsIERlY2hvKCJjeWd3aW46IHdpbmZuYW1lPCIuc2hlbGxlc2NhcGUod2luZm5hbWUsMSkuIj4iKQorICAgaWYgZXhlY3V0YWJsZSgic3RhcnQiKQorIiAgICBjYWxsIERlY2hvKCdleGUgc2lsICFzdGFydCBydW5kbGwzMiB1cmwuZGxsLEZpbGVQcm90b2NvbEhhbmRsZXIgJy5zaGVsbGVzY2FwZSh3aW5mbmFtZSwxKSkKKyAgICBleGUgJ3NpbCAhc3RhcnQgcnVuZGxsMzIgdXJsLmRsbCxGaWxlUHJvdG9jb2xIYW5kbGVyICcuc2hlbGxlc2NhcGUod2luZm5hbWUsMSkKKyAgIGVsc2VpZiBleGVjdXRhYmxlKCJydW5kbGwzMiIpCisiICAgIGNhbGwgRGVjaG8oJ2V4ZSBzaWwgIXJ1bmRsbDMyIHVybC5kbGwsRmlsZVByb3RvY29sSGFuZGxlciAnLnNoZWxsZXNjYXBlKHdpbmZuYW1lLDEpKQorICAgIGV4ZSAnc2lsICFydW5kbGwzMiB1cmwuZGxsLEZpbGVQcm90b2NvbEhhbmRsZXIgJy5zaGVsbGVzY2FwZSh3aW5mbmFtZSwxKQorICAgZWxzZQorICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJydW5kbGwzMiBub3Qgb24gcGF0aCIsNzQpCisgICBlbmRpZgorICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQorICAgbGV0IHJldD0gdjpzaGVsbF9lcnJvcgorCisgIGVsc2VpZiBoYXMoInVuaXgiKSAmJiBleGVjdXRhYmxlKCJ4ZGctb3BlbiIpICYmICFzOmhhc2tkZWluaXQKKyIgICBjYWxsIERlY2hvKCJ1bml4IGFuZCB4ZGctb3BlbiIpCisiICAgY2FsbCBEZWNobygiZXhlIHNpbCAheGRnLW9wZW4gIi5zaGVsbGVzY2FwZShmbmFtZSwxKS4iICIucmVkaXIpCisgICBleGUgInNpbCAheGRnLW9wZW4gIi5zaGVsbGVzY2FwZShmbmFtZSwxKS5yZWRpcgogICAgbGV0IHJldD0gdjpzaGVsbF9lcnJvcgogCiAgIGVsc2VpZiBoYXMoInVuaXgiKSAmJiBleGVjdXRhYmxlKCJrZm1jbGllbnQiKSAmJiBzOmhhc2tkZWluaXQKKyIgICBjYWxsIERlY2hvKCJ1bml4IGFuZCBrZm1jbGllbnQiKQogIiAgIGNhbGwgRGVjaG8oImV4ZSBzaWwgIWtmbWNsaWVudCBleGVjICIuc2hlbGxlc2NhcGUoZm5hbWUsMSkuIiAiLnJlZGlyKQogICAgZXhlICJzaWwgIWtmbWNsaWVudCBleGVjICIuc2hlbGxlc2NhcGUoZm5hbWUsMSkuIiAiLnJlZGlyCiAgICBsZXQgcmV0PSB2OnNoZWxsX2Vycm9yCiAKICAgZWxzZWlmIGhhcygibWFjdW5peCIpICYmIGV4ZWN1dGFibGUoIm9wZW4iKQorIiAgIGNhbGwgRGVjaG8oIm1hY3VuaXggYW5kIG9wZW4iKQogIiAgIGNhbGwgRGVjaG8oImV4ZSBzaWwgIW9wZW4gIi5zaGVsbGVzY2FwZShmbmFtZSwxKS4iICIucmVkaXIpCiAgICBleGUgInNpbCAhb3BlbiAiLnNoZWxsZXNjYXBlKGZuYW1lLDEpLiIgIi5yZWRpcgogICAgbGV0IHJldD0gdjpzaGVsbF9lcnJvcgpAQCAtMzg4MCw3ICszOTU4LDcgQEAKICAgIiAgICAgICAgICBGZWIgMTIsIDIwMDg6IGhhZCB0byBkZS1hY3RpdmlhdGUgcmVtb3ZhbCBvZgogICAiICAgICAgICAgIHRlbXBvcmFyeSBmaWxlIGJlY2F1c2UgaXQgd2Fzbid0IGdldHRpbmcgc2Vlbi4KICIgIGlmIGE6cmVtb3RlID09IDEgJiYgZm5hbWUgIT0gYTpmbmFtZQotIiAgIGNhbGwgRGVjaG8oImRlbGV0aW5nIHRlbXBvcmFyeSBmaWxlPCIuZm5hbWUuIj4iKQorIiIgICBjYWxsIERlY2hvKCJkZWxldGluZyB0ZW1wb3JhcnkgZmlsZTwiLmZuYW1lLiI+IikKICIgICBjYWxsIHM6TmV0cndEZWxldGUoZm5hbWUpCiAiICBlbmRpZgogCkBAIC0zODkyLDYgKzM5NzAsOCBAQAogICAgZXhlICJzaWwhIGtlZXBqIG5vcm0hIFw8Yy1vPiIKICIgICByZWRyYXchCiAgIGVuZGlmCisgIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzY3JlZW5wb3NuKQorICBsZXQgQEA9IHlrZWVwCiAKICIgIGNhbGwgRHJldCgiTmV0cndCcm93c2VYIikKIGVuZGZ1bgpAQCAtMzkwMCw2ICszOTgwLDcgQEAKICIgczpOZXRyd0NoZ1Blcm06IChpbXBsZW1lbnRzICJncCIpIGNoYW5nZSBmaWxlIHBlcm1pc3Npb24ge3t7MgogZnVuISBzOk5ldHJ3Q2hnUGVybShpc2xvY2FsLGN1cmRpcikKICIgIGNhbGwgRGZ1bmMoInM6TmV0cndDaGdQZXJtKGlzbG9jYWw9Ii5hOmlzbG9jYWwuIiBjdXJkaXI8Ii5hOmN1cmRpci4iPikiKQorICBsZXQgeWtlZXAgID0gQEAKICAgY2FsbCBpbnB1dHNhdmUoKQogICBsZXQgbmV3cGVybT0gaW5wdXQoIkVudGVyIG5ldyBwZXJtaXNzaW9uOiAiKQogICBjYWxsIGlucHV0cmVzdG9yZSgpCkBAIC0zOTEzLDYgKzM5OTQsNyBAQAogICBpZiBhOmlzbG9jYWwKICAgIGtlZXBqIGNhbGwgczpOZXRyd1JlZnJlc2goYTppc2xvY2FsLHM6TmV0cndCcm93c2VDaGdEaXIoYTppc2xvY2FsLCcuLycpKQogICBlbmRpZgorICBsZXQgQEA9IHlrZWVwCiAiICBjYWxsIERyZXQoInM6TmV0cndDaGdQZXJtIikKIGVuZGZ1bgogCkBAIC00NDA1LDYgKzQ0ODcsNyBAQAogIiBzOk5ldHJ3Rm9yY2VDaGdEaXI6IChnZCBzdXBwb3J0KSBGb3JjZSB0cmVhdG1lbnQgYXMgYSBkaXJlY3Rvcnkge3t7MgogZnVuISBzOk5ldHJ3Rm9yY2VDaGdEaXIoaXNsb2NhbCxuZXdkaXIpCiAiICBjYWxsIERmdW5jKCJzOk5ldHJ3Rm9yY2VDaGdEaXIoaXNsb2NhbD0iLmE6aXNsb2NhbC4iIG5ld2RpcjwiLmE6bmV3ZGlyLiI+KSIpCisgIGxldCB5a2VlcD0gQEAKICAgaWYgYTpuZXdkaXIgIX4gJy8kJwogICAgIiBvaywgbG9va3MgbGlrZSBmb3JjZSBpcyBuZWVkZWQgdG8gZ2V0IGRpcmVjdG9yeS1zdHlsZSB0cmVhdG1lbnQKICAgIGlmIGE6bmV3ZGlyID1+ICdAJCcKQEAgLTQ0MTksOCArNDUwMiw5IEBACiAgICAiIHNob3VsZCBhbHJlYWR5IGJlIGdldHRpbmcgdHJlYXRtZW50IGFzIGEgZGlyZWN0b3J5CiAgICBsZXQgbmV3ZGlyPSBhOm5ld2RpcgogICBlbmRpZgotICBjYWxsIHM6TmV0cndCcm93c2VDaGdEaXIoYTppc2xvY2FsLG5ld2RpcikKKyAgbGV0IG5ld2Rpcj0gczpOZXRyd0Jyb3dzZUNoZ0RpcihhOmlzbG9jYWwsbmV3ZGlyKQogICBjYWxsIHM6TmV0cndCcm93c2UoYTppc2xvY2FsLG5ld2RpcikKKyAgbGV0IEBAPSB5a2VlcAogIiAgY2FsbCBEcmV0KCJzOk5ldHJ3Rm9yY2VDaGdEaXIiKQogZW5kZnVuCiAKQEAgLTQ0NDYsNiArNDUzMCw3IEBACiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgMjogc2hvdyBoaWRkZW4gZmlsZXMgb25seQogZnVuISBzOk5ldHJ3SGlkZShpc2xvY2FsKQogIiAgY2FsbCBEZnVuYygiTmV0cndIaWRlKGlzbG9jYWw9Ii5hOmlzbG9jYWwuIikgZzpuZXRyd19oaWRlPSIuZzpuZXRyd19oaWRlKQorICBsZXQgeWtlZXA9IEBACiAgIGxldCBzdnBvcz0gbmV0cncjTmV0cndTYXZlUG9zbigpCiAKICAgaWYgZXhpc3RzKCJzOm5ldHJ3bWFya2ZpbGVsaXN0X3tidWZucignJScpfSIpCkBAIC00NDgxLDYgKzQ1NjYsNyBAQAogICAgZXhlICJrZWVwaiBub3JtISAwIgogICAgaWYgZzpuZXRyd19oaWRlICYmIGc6bmV0cndfbGlzdF9oaWRlID09ICIiCiAgICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsInlvdXIgaGlkaW5nIGxpc3QgaXMgZW1wdHkhIiw0OSkKKyAgICBsZXQgQEA9IHlrZWVwCiAiICAgIGNhbGwgRHJldCgiTmV0cndIaWRlIikKICAgICByZXR1cm4KICAgIGVuZGlmCkBAIC00NDg4LDYgKzQ1NzQsNyBAQAogCiAgIGtlZXBqIGNhbGwgczpOZXRyd1JlZnJlc2goYTppc2xvY2FsLHM6TmV0cndCcm93c2VDaGdEaXIoYTppc2xvY2FsLCcuLycpKQogICBrZWVwaiBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3MpCisgIGxldCBAQD0geWtlZXAKICIgIGNhbGwgRHJldCgiTmV0cndIaWRlIikKIGVuZGZ1bgogCkBAIC00NDk1LDYgKzQ1ODIsNyBAQAogIiBzOk5ldHJ3SGlkZGVuOiBpbnZva2VkIGJ5ICJnaCIge3t7MgogZnVuISBzOk5ldHJ3SGlkZGVuKGlzbG9jYWwpCiAiICBjYWxsIERmdW5jKCJzOk5ldHJ3SGlkZGVuKCkiKQorICBsZXQgeWtlZXA9IEBACiAgICIgIHNhdmUgY3VycmVudCBwb3NpdGlvbgogICBsZXQgc3Zwb3M9IG5ldHJ3I05ldHJ3U2F2ZVBvc24oKQogCkBAIC00NTEwLDYgKzQ1OTgsNyBAQAogICAiIHJlZnJlc2ggc2NyZWVuIGFuZCByZXR1cm4gdG8gc2F2ZWQgcG9zaXRpb24KICAga2VlcGogY2FsbCBzOk5ldHJ3UmVmcmVzaChhOmlzbG9jYWwsczpOZXRyd0Jyb3dzZUNoZ0RpcihhOmlzbG9jYWwsJy4vJykpCiAgIGtlZXBqIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvcykKKyAgbGV0IEBAPSB5a2VlcAogIiAgY2FsbCBEcmV0KCJzOk5ldHJ3SGlkZGVuIikKIGVuZGZ1bgogCkBAIC00NTUzLDYgKzQ2NDIsNyBAQAogZnVuISBzOk5ldHJ3TGVmdG1vdXNlKGlzbG9jYWwpCiAiICBjYWxsIERmdW5jKCJzOk5ldHJ3TGVmdG1vdXNlKGlzbG9jYWw9Ii5hOmlzbG9jYWwuIikiKQogCisgIGxldCB5a2VlcD0gQEAKICAgIiBjaGVjayBpZiB0aGUgc3RhdHVzIGJhciB3YXMgY2xpY2tlZCBvbiBpbnN0ZWFkIG9mIGEgZmlsZS9kaXJlY3RvcnkgbmFtZQogICB3aGlsZSBnZXRjaGFyKDApICE9IDAKICAgICJjbGVhciB0aGUgaW5wdXQgc3RyZWFtCkBAIC00NTY2LDEwICs0NjU2LDEyIEBACiAiICBjYWxsIERlY2hvKCJ2Om1vdXNlX2NvbCA9Ii52Om1vdXNlX2NvbC4iICAgICBjb2w9Ii5jb2woIi4iKS4iICB3aW5jb2wgPSIud2luY29sKCkuIiB3aW53aWR0aCAgID0iLndpbndpZHRoKDApKQogICBpZiBtb3VzZV9sbnVtID49IHdsYXN0bGluZSArIDEgfHwgdjptb3VzZV93aW4gIT0gd2lubnIoKQogICAgIiBhcHBlYXJzIHRvIGJlIGEgc3RhdHVzIGJhciBsZWZ0bW91c2UgY2xpY2sKKyAgIGxldCBAQD0geWtlZXAKICIgICBjYWxsIERyZXQoInM6TmV0cndMZWZ0bW91c2UgOiBkZXRlY3RlZCBhIHN0YXR1cyBiYXIgbGVmdG1vdXNlIGNsaWNrIikKICAgIHJldHVybgogICBlbmRpZgogICBpZiB2Om1vdXNlX2NvbCAhPSBjb2woJy4nKQorICAgbGV0IEBAPSB5a2VlcAogIiAgIGNhbGwgRHJldCgiczpOZXRyd0xlZnRtb3VzZSA6IGRldGVjdGVkIGEgdmVydGljYWwgc2VwYXJhdG9yIGJhciBsZWZ0bW91c2UgY2xpY2siKQogICAgcmV0dXJuCiAgIGVuZGlmCkBAIC00NTgzLDYgKzQ2NzUsNyBAQAogICAgIGtlZXBqIGNhbGwgczpOZXRyd0Jyb3dzZSgwLHM6TmV0cndCcm93c2VDaGdEaXIoMCxzOk5ldHJ3R2V0V29yZCgpKSkKICAgIGVuZGlmCiAgIGVuZGlmCisgIGxldCBAQD0geWtlZXAKICIgIGNhbGwgRHJldCgiczpOZXRyd0xlZnRtb3VzZSIpCiBlbmRmdW4KIApAQCAtNDU5MSw2ICs0Njg0LDcgQEAKICIgc2VwYXJhdGVkIHBhdHRlcm5zIGdpdmVuIGluIGc6bmV0cndfbGlzdF9oaWRlCiBmdW4hIHM6TmV0cndMaXN0SGlkZSgpCiAiICBjYWxsIERmdW5jKCJOZXRyd0xpc3RIaWRlKCkgZzpuZXRyd19oaWRlPSIuZzpuZXRyd19oaWRlLiIgZzpuZXRyd19saXN0X2hpZGU8Ii5nOm5ldHJ3X2xpc3RfaGlkZS4iPiIpCisgIGxldCB5a2VlcD0gQEAKIAogICAiIGZpbmQgYSBjaGFyYWN0ZXIgbm90IGluIHRoZSAiaGlkZSIgc3RyaW5nIHRvIHVzZSBhcyBhIHNlcGFyYXRvciBmb3IgOmcgYW5kIDp2IGNvbW1hbmRzCiAgICIgSG93LWl0LXdvcmtzOiB0YWtlIHRoZSBoaWRpbmcgY29tbWFuZCwgY29udmVydCBpdCBpbnRvIGEgcmFuZ2UuICBEdXBsaWNhdGUKQEAgLTQ2MTIsMjEgKzQ3MDYsMjIgQEAKICAgICIgUHJ1bmUgdGhlIGxpc3QgYnkgaGlkaW5nIGFueSBmaWxlcyB3aGljaCBtYXRjaAogICAgaWYgZzpuZXRyd19oaWRlID09IDEKICIgICAgY2FsbCBEZWNobygiaGlkaW5nPCIuaGlkZS4iPiBsaXN0aGlkZTwiLmxpc3RoaWRlLiI+IikKLSAgICBleGUgJ3NpbCBrZWVwaiAnLnc6bmV0cndfYmFubmVyY250LicsJGcnLnNlcC5oaWRlLnNlcC4nZCcKKyAgICBleGUgJ3NpbCEga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRnJy5zZXAuaGlkZS5zZXAuJ2QnCiAgICBlbHNlaWYgZzpuZXRyd19oaWRlID09IDIKICIgICAgY2FsbCBEZWNobygic2hvd2luZzwiLmhpZGUuIj4gbGlzdGhpZGU8Ii5saXN0aGlkZS4iPiIpCi0gICAgZXhlICdzaWwga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRnJy5zZXAuaGlkZS5zZXAuJ3NAXkAgLy1LRUVQLS8gQCcKKyAgICBleGUgJ3NpbCEga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRnJy5zZXAuaGlkZS5zZXAuJ3NAXkAgLy1LRUVQLS8gQCcKICAgIGVuZGlmCiAgIGVuZHdoaWxlCiAgIGlmIGc6bmV0cndfaGlkZSA9PSAyCi0gICBleGUgJ3NpbCBrZWVwaiAnLnc6bmV0cndfYmFubmVyY250LicsJHZAXiAvLUtFRVAtLyBAZCcKLSAgIGV4ZSAnc2lsIGtlZXBqICcudzpuZXRyd19iYW5uZXJjbnQuJywkc0BeXCUoIC8tS0VFUC0vIFwpXCtAQGUnCisgICBleGUgJ3NpbCEga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCR2QF4gLy1LRUVQLS8gQGQnCisgICBleGUgJ3NpbCEga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzQF5cJSggLy1LRUVQLS8gXClcK0BAZScKICAgZW5kaWYKIAogICAiIHJlbW92ZSBhbnkgYmxhbmsgbGluZXMgdGhhdCBoYXZlIHNvbWVob3cgcmVtYWluZWQuCiAgICIgVGhpcyBzZWVtcyB0byBoYXBwZW4gdW5kZXIgV2luZG93cy4KICAgZXhlICdzaWwhIGtlZXBqIDEsJGdAXlxzKiRAZCcKIAorICBsZXQgQEA9IHlrZWVwCiAiICBjYWxsIERyZXQoIk5ldHJ3TGlzdEhpZGUiKQogZW5kZnVuCiAKQEAgLTQ2MzUsNiArNDczMCw3IEBACiBmdW4hIHM6TmV0cndIaWRlRWRpdChpc2xvY2FsKQogIiAgY2FsbCBEZnVuYygiTmV0cndIaWRlRWRpdChpc2xvY2FsPSIuYTppc2xvY2FsLiIpIikKIAorICBsZXQgeWtlZXA9IEBACiAgICIgc2F2ZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbgogICBsZXQgc3Zwb3M9IG5ldHJ3I05ldHJ3U2F2ZVBvc24oKQogCkBAIC00NjUwLDYgKzQ3NDYsNyBAQAogCiAgICIgcmVzdG9yZSBjdXJzb3IgcG9zaXRpb24KICAgY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQorICBsZXQgQEA9IHlrZWVwCiAKICIgIGNhbGwgRHJldCgiTmV0cndIaWRlRWRpdCIpCiBlbmRmdW4KQEAgLTQ2NTksNiArNDc1Niw3IEBACiBmdW4hIHM6TmV0U29ydFNlcXVlbmNlKGlzbG9jYWwpCiAiICBjYWxsIERmdW5jKCJOZXRTb3J0U2VxdWVuY2UoaXNsb2NhbD0iLmE6aXNsb2NhbC4iKSIpCiAKKyAgbGV0IHlrZWVwPSBAQAogICBsZXQgc3Zwb3M9IG5ldHJ3I05ldHJ3U2F2ZVBvc24oKQogICBjYWxsIGlucHV0c2F2ZSgpCiAgIGxldCBuZXdzb3J0c2VxPSBpbnB1dCgiRWRpdCBTb3J0aW5nIFNlcXVlbmNlOiAiLGc6bmV0cndfc29ydF9zZXF1ZW5jZSkKQEAgLTQ2NjgsNiArNDc2Niw3IEBACiAgIGxldCBnOm5ldHJ3X3NvcnRfc2VxdWVuY2U9IG5ld3NvcnRzZXEKICAga2VlcGogY2FsbCBzOk5ldHJ3UmVmcmVzaChhOmlzbG9jYWwsczpOZXRyd0Jyb3dzZUNoZ0RpcihhOmlzbG9jYWwsJy4vJykpCiAgIGtlZXBqIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvcykKKyAgbGV0IEBAPSB5a2VlcAogCiAiICBjYWxsIERyZXQoIk5ldFNvcnRTZXF1ZW5jZSIpCiBlbmRmdW4KQEAgLTQ2NzcsNiArNDc3Niw3IEBACiBmdW4hIHM6TmV0cndNYWtlRGlyKHVzcmhvc3QpCiAiICBjYWxsIERmdW5jKCJOZXRyd01ha2VEaXIodXNyaG9zdDwiLmE6dXNyaG9zdC4iPikiKQogCisgIGxldCB5a2VlcD0gQEAKICAgIiBnZXQgbmFtZSBvZiBuZXcgZGlyZWN0b3J5IGZyb20gdXNlci4gIEEgYmFyZSA8Q1I+IHdpbGwgc2tpcC4KICAgIiBpZiBpdHMgY3VycmVudGx5IGEgZGlyZWN0b3J5LCBhbHNvIHJlcXVlc3Qgd2lsbCBiZSBza2lwcGVkLCBidXQgd2l0aAogICAiIGEgbWVzc2FnZS4KQEAgLTQ2ODYsNiArNDc4Niw3IEBACiAiICBjYWxsIERlY2hvKCJuZXdkaXJuYW1lPCIubmV3ZGlybmFtZS4iPiIpCiAKICAgaWYgbmV3ZGlybmFtZSA9PSAiIgorICAgbGV0IEBAPSB5a2VlcAogIiAgIGNhbGwgRHJldCgiTmV0cndNYWtlRGlyIDogdXNlciBhYm9ydGVkIHdpdGggYmFyZSA8Y3I+IikKICAgIHJldHVybgogICBlbmRpZgpAQCAtNDcwMSw2ICs0ODAyLDcgQEAKICAgICBpZiAhZXhpc3RzKCJnOm5ldHJ3X3F1aWV0IikKICAgICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsIjwiLm5ld2Rpcm5hbWUuIj4gaXMgYWxyZWFkeSBhIGRpcmVjdG9yeSEiLDI0KQogICAgIGVuZGlmCisgICAgbGV0IEBAPSB5a2VlcAogIiAgICBjYWxsIERyZXQoIk5ldHJ3TWFrZURpciA6IGRpcmVjdG9yeTwiLm5ld2Rpcm5hbWUuIj4gZXhpc3RzIHByZXZpb3VzbHkiKQogICAgIHJldHVybgogICAgZW5kaWYKQEAgLTQ3MDgsNiArNDgxMCw3IEBACiAgICAgaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCiAgICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCI8Ii5uZXdkaXJuYW1lLiI+IGlzIGFscmVhZHkgYSBmaWxlISIsMjUpCiAgICAgZW5kaWYKKyAgICBsZXQgQEA9IHlrZWVwCiAiICAgIGNhbGwgRHJldCgiTmV0cndNYWtlRGlyIDogZmlsZTwiLm5ld2Rpcm5hbWUuIj4gZXhpc3RzIHByZXZpb3VzbHkiKQogICAgIHJldHVybgogICAgZW5kaWYKQEAgLTQ3MjIsNiArNDgyNSwxMiBAQAogIiAgICBjYWxsIERlY2hvKCJuZXRyd19vcmlnZGlyPCIubmV0cndfb3JpZ2Rpci4iPjogbGNkIGI6bmV0cndfY3VyZGlyPCIuZm5hbWVlc2NhcGUoYjpuZXRyd19jdXJkaXIpLiI+IikKICIgICAgY2FsbCBEZWNobygiZXhlIHNpbCEgISIuZzpuZXRyd19sb2NhbG1rZGlyLicgJy5zaGVsbGVzY2FwZShuZXdkaXJuYW1lLDEpKQogICAgIGV4ZSAic2lsISAhIi5nOm5ldHJ3X2xvY2FsbWtkaXIuJyAnLnNoZWxsZXNjYXBlKG5ld2Rpcm5hbWUsMSkKKyAgICBpZiB2OnNoZWxsX2Vycm9yICE9IDAKKyAgICAgbGV0IEBAPSB5a2VlcAorICAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsImNvbnNpZGVyIHNldHRpbmcgZzpuZXRyd19sb2NhbG1rZGlyPCIuZzpuZXRyd19sb2NhbG1rZGlyLiI+IHRvIHNvbWV0aGluZyB0aGF0IHdvcmtzIiw4MCkKKyIgICAgIGNhbGwgRHJldCgiTmV0cndNYWtlRGlyIDogZmFpbGVkOiBzaWwhICEiLmc6bmV0cndfbG9jYWxta2Rpci4nICcuc2hlbGxlc2NhcGUobmV3ZGlybmFtZSwxKSkKKyAgICAgcmV0dXJuCisgICAgZW5kaWYKICAgICBpZiAhZzpuZXRyd19rZWVwZGlyCiAgICAgIGV4ZSAna2VlcGogbGNkICcuZm5hbWVlc2NhcGUobmV0cndfb3JpZ2RpcikKICIgICAgIGNhbGwgRGVjaG8oIm5ldHJ3X2tlZXBkaXI9Ii5nOm5ldHJ3X2tlZXBkaXIuIjoga2VlcGp1bXBzIGxjZCAiLmZuYW1lZXNjYXBlKG5ldHJ3X29yaWdkaXIpLiIgZ2V0Y3dkPCIuZ2V0Y3dkKCkuIj4iKQpAQCAtNDc2OCw2ICs0ODc3LDcgQEAKICAgIGtlZXBqIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvcykKICAgZW5kaWYKIAorICBsZXQgQEA9IHlrZWVwCiAiICBjYWxsIERyZXQoIk5ldHJ3TWFrZURpciIpCiBlbmRmdW4KIApAQCAtNDc5MCw5ICs0OTAwLDEwIEBACiAiICAgIGI6bmV0cndfaXNsb2NhbAogZnVuISBzOk5ldHJ3TWFya0ZpbGUoaXNsb2NhbCxmbmFtZSkKICIgIGNhbGwgRGZ1bmMoInM6TmV0cndNYXJrRmlsZShpc2xvY2FsPSIuYTppc2xvY2FsLiIgZm5hbWU8Ii5hOmZuYW1lLiI+KSIpCisgIGxldCB5a2VlcCAgID0gQEAKICAgbGV0IGN1cmJ1Zm5yPSBidWZucigiJSIpCiAgIGxldCBjdXJkaXIgID0gYjpuZXRyd19jdXJkaXIKLSAgbGV0IHRyYWlsZXIgPSAnW0A9fFwvXCpdXD1cPicKKyAgbGV0IHRyYWlsZXIgPSAnW0A9fFwvXCpdXD1cemVcJSggIFx8XHRcfCRcKScKIAogICBpZiBleGlzdHMoInM6bmV0cndtYXJrZmlsZWxpc3Rfe2N1cmJ1Zm5yfSIpCiAgICAiIG1hcmtmaWxlIGxpc3QgcHJlLWV4aXN0cwpAQCAtNDg4MSw2ICs0OTkyLDcgQEAKICIgICBjYWxsIERlY2hvKCIybWF0Y2ggbm9uZSIpCiAgICAybWF0Y2ggbm9uZQogICBlbmRpZgorICBsZXQgQEA9IHlrZWVwCiAiICBjYWxsIERyZXQoInM6TmV0cndNYXJrRmlsZSA6IHM6bmV0cndtYXJrZmlsZWxpc3RfIi5jdXJidWZuci4iPCIuKGV4aXN0cygiczpuZXRyd21hcmtmaWxlbGlzdF97Y3VyYnVmbnJ9Iik/IHN0cmluZyhzOm5ldHJ3bWFya2ZpbGVsaXN0X3tjdXJidWZucn0pIDogIiBkb2Vzbid0IGV4aXN0IikuIj4iKQogZW5kZnVuCiAKQEAgLTQ5NzIsOSArNTA4NCwxOSBAQAogICBpZiAgICAgIGE6aXNsb2NhbCAmJiAgczpuZXRyd21mdGd0X2lzbG9jYWwKICAgICIgQ29weSBtYXJrZWQgZmlsZXMsIGxvY2FsIGRpcmVjdG9yeSB0byBsb2NhbCBkaXJlY3RvcnkKICIgICBjYWxsIERlY2hvKCJjb3B5IGZyb20gbG9jYWwgdG8gbG9jYWwiKQorICAgaWYgIWV4ZWN1dGFibGUoZzpuZXRyd19sb2NhbGNvcHljbWQpICYmIGc6bmV0cndfbG9jYWxjb3B5Y21kICF+ICdeY21kICcKKyAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsImc6bmV0cndfbG9jYWxjb3B5Y21kPCIuZzpuZXRyd19sb2NhbGNvcHljbWQuIj4gbm90IGV4ZWN1dGFibGUgb24geW91ciBzeXN0ZW0sIGFib3J0aW5nIiw5MSkKKyIgICAgY2FsbCBEZnVuYygiczpOZXRyd01hcmtGaWxlTW92ZSA6IGc6bmV0cndfbG9jYWxjb3B5Y21kPCIuZzpuZXRyd19sb2NhbGNvcHljbWQuIj4gbi9hISIpCisgICAgcmV0dXJuCisgICBlbmRpZgogICAgbGV0IGFyZ3M9IGpvaW4obWFwKGRlZXBjb3B5KHM6bmV0cndtYXJrZmlsZWxpc3Rfe2J1Zm5yKCclJyl9KSwic2hlbGxlc2NhcGUoYjpuZXRyd19jdXJkaXIuXCIvXCIudjp2YWwpIikpCiAiICAgY2FsbCBEZWNobygic3lzdGVtKCIuZzpuZXRyd19sb2NhbGNvcHljbWQuIiAiLmFyZ3MuIiAiLnNoZWxsZXNjYXBlKHM6bmV0cndtZnRndCkuIikiKQogICAgY2FsbCBzeXN0ZW0obmV0cncjV2luUGF0aChnOm5ldHJ3X2xvY2FsY29weWNtZCkuIiAiLmFyZ3MuIiAiLnNoZWxsZXNjYXBlKHM6bmV0cndtZnRndCkpCisgICBpZiB2OnNoZWxsX2Vycm9yICE9IDAKKyAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6V0FSTklORywiY29uc2lkZXIgc2V0dGluZyBnOm5ldHJ3X2xvY2FsY29weWNtZDwiLmc6bmV0cndfbG9jYWxjb3B5Y21kLiI+IHRvIHNvbWV0aGluZyB0aGF0IHdvcmtzIiw4MCkKKyIgICAgY2FsbCBEcmV0KCJzOk5ldHJ3TWFya0ZpbGVDb3B5IDAgOiBmYWlsZWQ6IHN5c3RlbSgiLmc6bmV0cndfbG9jYWxjb3B5Y21kLiIgIi5hcmdzLiIgIi5zaGVsbGVzY2FwZShzOm5ldHJ3bWZ0Z3QpKQorICAgIHJldHVybiAwCisgICBlbmRpZgogCiAgIGVsc2VpZiAgYTppc2xvY2FsICYmICFzOm5ldHJ3bWZ0Z3RfaXNsb2NhbAogICAgIiBDb3B5IG1hcmtlZCBmaWxlcywgbG9jYWwgZGlyZWN0b3J5IHRvIHJlbW90ZSBkaXJlY3RvcnkKQEAgLTQ5OTYsNiArNTExOCwxMSBAQAogICAgIGNhbGwgbWtkaXIodG1wZGlyKQogICAgZWxzZQogICAgIGV4ZSAic2lsISAhIi5nOm5ldHJ3X2xvY2FsbWtkaXIuJyAnLnNoZWxsZXNjYXBlKHRtcGRpciwxKQorICAgIGlmIHY6c2hlbGxfZXJyb3IgIT0gMAorICAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6V0FSTklORywiY29uc2lkZXIgc2V0dGluZyBnOm5ldHJ3X2xvY2FsbWtkaXI8Ii5nOm5ldHJ3X2xvY2FsbWtkaXIuIj4gdG8gc29tZXRoaW5nIHRoYXQgd29ya3MiLDgwKQorIiAgICAgY2FsbCBEcmV0KCJzOk5ldHJ3TWFya0ZpbGVDb3B5IDogZmFpbGVkOiBzaWwhICEiLmc6bmV0cndfbG9jYWxta2Rpci4nICcuc2hlbGxlc2NhcGUodG1wZGlyLDEpICkKKyAgICAgcmV0dXJuCisgICAgZW5kaWYKICAgIGVuZGlmCiAgICBpZiBpc2RpcmVjdG9yeSh0bXBkaXIpCiAgICAgZXhlICJrZWVwaiBsY2QgIi5mbmFtZWVzY2FwZSh0bXBkaXIpCkBAIC01MDA4LDYgKzUxMzUsMTEgQEAKICAgICAgZW5kZm9yCiAgICAgIGV4ZSAia2VlcGogbGNkICIuZm5hbWVlc2NhcGUoY3VyZGlyKQogICAgICBleGUgInNpbCAhIi5nOm5ldHJ3X2xvY2Fscm1kaXIuIiAiLnNoZWxsZXNjYXBlKHRtcGRpciwxKQorICAgICBpZiB2OnNoZWxsX2Vycm9yICE9IDAKKyAgICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJjb25zaWRlciBzZXR0aW5nIGc6bmV0cndfbG9jYWxybWRpcjwiLmc6bmV0cndfbG9jYWxybWRpci4iPiB0byBzb21ldGhpbmcgdGhhdCB3b3JrcyIsODApCisiICAgICAgY2FsbCBEcmV0KCJzOk5ldHJ3TWFya0ZpbGVDb3B5IDogZmFpbGVkOiBzaWwgISIuZzpuZXRyd19sb2NhbHJtZGlyLiIgIi5zaGVsbGVzY2FwZSh0bXBkaXIsMSkgKQorICAgICAgcmV0dXJuCisgICAgIGVuZGlmCiAgICAgZWxzZQogICAgICBleGUgImtlZXBqIGxjZCAiLmZuYW1lZXNjYXBlKGN1cmRpcikKICAgICBlbmRpZgpAQCAtNTM0OCw5ICs1NDgwLDkgQEAKICAgIHRyeQogICAgIGV4ZSAia2VlcGogbm9hdXRvY21kIHZpbWdyZXAiLnBhdC4iICIubmV0cndtYXJrZmlsZWxpc3QKICAgICBjYXRjaCAvXlZpbVwlKChcYVwrKVwpXD06RTQ4MC8KLSAgICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsIm5vIG1hdGNoIHdpdGggcGF0dGVybjwiLnBhdHRlcm4uIj4iLDc2KQotIiAgICAgY2FsbCBEcmV0KCJzOk5ldHJ3TWFya0ZpbGVHcmVwIDogdW5hYmxlIHRvIGZpbmQgcGF0dGVybjwiLnBhdHRlcm4uIj4iKQotICAgICByZXR1cm4KKyAgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6V0FSTklORywibm8gbWF0Y2ggd2l0aCBwYXR0ZXJuPCIucGF0dGVybi4iPiIsNzYpCisiICAgIGNhbGwgRHJldCgiczpOZXRyd01hcmtGaWxlR3JlcCA6IHVuYWJsZSB0byBmaW5kIHBhdHRlcm48Ii5wYXR0ZXJuLiI+IikKKyAgICByZXR1cm4KICAgIGVuZHRyeQogCiAgICAybWF0Y2ggbm9uZQpAQCAtNTM4OCwxOCArNTUyMCwxOSBAQAogICAgIiBtb3ZlOiBsb2NhbCAtPiBsb2NhbAogIiAgIGNhbGwgRGVjaG8oIm1vdmUgZnJvbSBsb2NhbCB0byBsb2NhbCIpCiAiICAgY2FsbCBEZWNobygiKHM6TmV0cndNYXJrRmlsZU1vdmUpIGxvY2FsIHRvIGxvY2FsIG1vdmUiKQotICAgaWYgZXhlY3V0YWJsZShnOm5ldHJ3X2xvY2FsbW92ZWNtZCkKLSAgICBmb3IgZm5hbWUgaW4gczpuZXRyd21hcmtmaWxlbGlzdF97YnVmbnIoIiUiKX0KLSIgICAgIGNhbGwgRGVjaG8oInN5c3RlbSgiLmc6bmV0cndfbG9jYWxtb3ZlY21kLiIgIi5zaGVsbGVzY2FwZShmbmFtZSkuIiAiLnNoZWxsZXNjYXBlKHM6bmV0cndtZnRndCkuIikiKQotICAgICBsZXQgcmV0PSBzeXN0ZW0oZzpuZXRyd19sb2NhbG1vdmVjbWQuIiAiLnNoZWxsZXNjYXBlKGZuYW1lKS4iICIuc2hlbGxlc2NhcGUoczpuZXRyd21mdGd0KSkKLSAgICAgaWYgdjpzaGVsbF9lcnJvciA8IDAKLSAgICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwiY29tbWFuZDwiLmc6bmV0cndfbG9jYWxtb3ZlY21kLiI+IGZhaWxlZCwgYWJvcnRpbmciLDU0KQotICAgICAgYnJlYWsKLSAgICAgZW5kaWYKLSAgICBlbmRmb3IKLSAgIGVsc2UKLSAgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsImNvbW1hbmQ8Ii5nOm5ldHJ3X2xvY2FsbW92ZWNtZC4iPiBpcyBub3QgZXhlY3V0YWJsZSEiLDU3KQorICAgaWYgIWV4ZWN1dGFibGUoZzpuZXRyd19sb2NhbG1vdmVjbWQpICYmIGc6bmV0cndfbG9jYWxtb3ZlY21kICF+ICdeY21kICcKKyAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsImc6bmV0cndfbG9jYWxtb3ZlY21kPCIuZzpuZXRyd19sb2NhbG1vdmVjbWQuIj4gbm90IGV4ZWN1dGFibGUgb24geW91ciBzeXN0ZW0sIGFib3J0aW5nIiw5MCkKKyIgICAgY2FsbCBEZnVuYygiczpOZXRyd01hcmtGaWxlTW92ZSA6IGc6bmV0cndfbG9jYWxtb3ZlY21kPCIuZzpuZXRyd19sb2NhbG1vdmVjbWQuIj4gbi9hISIpCisgICAgcmV0dXJuCiAgICBlbmRpZgorICAgZm9yIGZuYW1lIGluIHM6bmV0cndtYXJrZmlsZWxpc3Rfe2J1Zm5yKCIlIil9CisiICAgIGNhbGwgRGVjaG8oInN5c3RlbSgiLmc6bmV0cndfbG9jYWxtb3ZlY21kLiIgIi5zaGVsbGVzY2FwZShmbmFtZSkuIiAiLnNoZWxsZXNjYXBlKHM6bmV0cndtZnRndCkuIikiKQorICAgIGxldCByZXQ9IHN5c3RlbShnOm5ldHJ3X2xvY2FsbW92ZWNtZC4iICIuc2hlbGxlc2NhcGUoZm5hbWUpLiIgIi5zaGVsbGVzY2FwZShzOm5ldHJ3bWZ0Z3QpKQorICAgIGlmIHY6c2hlbGxfZXJyb3IgPCAwCisgICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwiY29tbWFuZDwiLmc6bmV0cndfbG9jYWxtb3ZlY21kLiI+IGZhaWxlZCwgYWJvcnRpbmciLDU0KQorICAgICBicmVhaworICAgIGVuZGlmCisgICBlbmRmb3IKIAogICBlbHNlaWYgIGE6aXNsb2NhbCAmJiAhczpuZXRyd21mdGd0X2lzbG9jYWwKICAgICIgbW92ZTogbG9jYWwgLT4gcmVtb3RlCkBAIC01NzAzLDYgKzU4MzYsNyBAQAogIiBzOk5ldHJ3T3BlbkZpbGU6IHF1ZXJ5IHVzZXIgZm9yIGEgZmlsZW5hbWUgYW5kIG9wZW4gaXQge3t7MgogZnVuISBzOk5ldHJ3T3BlbkZpbGUoaXNsb2NhbCkKICIgIGNhbGwgRGZ1bmMoInM6TmV0cndPcGVuRmlsZShpc2xvY2FsPSIuYTppc2xvY2FsLiIpIikKKyAgbGV0IHlrZWVwPSBAQAogICBjYWxsIGlucHV0c2F2ZSgpCiAgIGxldCBmbmFtZT0gaW5wdXQoIkVudGVyIGZpbGVuYW1lOiAiKQogICBjYWxsIGlucHV0cmVzdG9yZSgpCkBAIC01NzI2LDYgKzU4NjAsNyBAQAogICBlbHNlCiAgICBleGUgImUgIi5mbmFtZWVzY2FwZShmbmFtZSkKICAgZW5kaWYKKyAgbGV0IEBAPSB5a2VlcAogIiAgY2FsbCBEcmV0KCJzOk5ldHJ3T3BlbkZpbGUiKQogZW5kZnVuCiAKQEAgLTU4OTksNiArNjAzNCw3IEBACiBmdW4hIHM6TmV0cndPYnRhaW4oaXNsb2NhbCkKICIgIGNhbGwgRGZ1bmMoIk5ldHJ3T2J0YWluKGlzbG9jYWw9Ii5hOmlzbG9jYWwuIikiKQogCisgIGxldCB5a2VlcD0gQEAKICAgaWYgZXhpc3RzKCJzOm5ldHJ3bWFya2ZpbGVsaXN0X3tidWZucignJScpfSIpCiAgICBsZXQgaXNsb2NhbD0gczpuZXRyd21hcmtmaWxlbGlzdF97YnVmbnIoJyUnKX1bMV0gIX4gJ15cYVwrOi8vJwogICAgY2FsbCBuZXRydyNOZXRyd09idGFpbihpc2xvY2FsLHM6bmV0cndtYXJrZmlsZWxpc3Rfe2J1Zm5yKCclJyl9KQpAQCAtNTkwNiw2ICs2MDQyLDcgQEAKICAgZWxzZQogICAgY2FsbCBuZXRydyNOZXRyd09idGFpbihhOmlzbG9jYWwsZXhwYW5kKCI8Y1dPUkQ+IikpCiAgIGVuZGlmCisgIGxldCBAQD0geWtlZXAKIAogIiAgY2FsbCBEcmV0KCJOZXRyd09idGFpbiIpCiBlbmRmdW4KQEAgLTU5NDksNiArNjA4NiwxMCBAQAogICAgICBmb3IgZm5hbWUgaW4gZm5hbWVsaXN0CiAiICAgICAgY2FsbCBEZWNobygic3lzdGVtKCIuZzpuZXRyd19sb2NhbGNvcHljbWQuIiAiLnNoZWxsZXNjYXBlKGZuYW1lKS4iICIuc2hlbGxlc2NhcGUodG9wYXRoKS4iKSIpCiAgICAgICBjYWxsIHN5c3RlbShnOm5ldHJ3X2xvY2FsY29weWNtZC4iICIuc2hlbGxlc2NhcGUoZm5hbWUpLiIgIi5zaGVsbGVzY2FwZSh0b3BhdGgpKQorICAgICAgaWYgdjpzaGVsbF9lcnJvciAhPSAwCisgICAgICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsImNvbnNpZGVyIHNldHRpbmcgZzpuZXRyd19sb2NhbGNvcHljbWQ8Ii5nOm5ldHJ3X2xvY2FsY29weWNtZC4iPiB0byBzb21ldGhpbmcgdGhhdCB3b3JrcyIsODApCisiICAgICAgIGNhbGwgRHJldCgiczpOZXRyd09idGFpbiAwIDogZmFpbGVkOiAiLmc6bmV0cndfbG9jYWxjb3B5Y21kLiIgIi5zaGVsbGVzY2FwZShmbmFtZSkuIiAiLnNoZWxsZXNjYXBlKHRvcGF0aCkpCisgICAgICAgcmV0dXJuCiAgICAgIGVuZGZvcgogICAgIGVsc2UKICAgICAgIiB0cmFuc2ZlciBmaWxlcyB3aXRoIG9uZSBjb21tYW5kCkBAIC01OTU2LDYgKzYwOTcsMTAgQEAKICAgICAgbGV0IGZpbGVsaXN0PSBqb2luKG1hcChkZWVwY29weShmbmFtZWxpc3QpLCJzaGVsbGVzY2FwZSh2OnZhbCkiKSkKICIgICAgIGNhbGwgRGVjaG8oInN5c3RlbSgiLmc6bmV0cndfbG9jYWxjb3B5Y21kLiIgIi5maWxlbGlzdC4iICIuc2hlbGxlc2NhcGUodG9wYXRoKS4iKSIpCiAgICAgIGNhbGwgc3lzdGVtKGc6bmV0cndfbG9jYWxjb3B5Y21kLiIgIi5maWxlbGlzdC4iICIuc2hlbGxlc2NhcGUodG9wYXRoKSkKKyAgICAgaWYgdjpzaGVsbF9lcnJvciAhPSAwCisgICAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6V0FSTklORywiY29uc2lkZXIgc2V0dGluZyBnOm5ldHJ3X2xvY2FsY29weWNtZDwiLmc6bmV0cndfbG9jYWxjb3B5Y21kLiI+IHRvIHNvbWV0aGluZyB0aGF0IHdvcmtzIiw4MCkKKyIgICAgICBjYWxsIERyZXQoInM6TmV0cndPYnRhaW4gMCA6IGZhaWxlZDogIi5nOm5ldHJ3X2xvY2FsY29weWNtZC4iICIuZmlsZWxpc3QuIiAiLnNoZWxsZXNjYXBlKHRvcGF0aCkpCisgICAgIHJldHVybgogICAgIGVuZGlmCiAgICBlbHNlaWYgIWV4aXN0cygiYjpuZXRyd19jdXJkaXIiKQogICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwibG9jYWwgYnJvd3NpbmcgZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3QhIiwzNikKQEAgLTYxMjksNiArNjI3NCw3IEBACiBmdW4hIHM6TmV0cndQcmV2V2luT3Blbihpc2xvY2FsKQogIiAgY2FsbCBEZnVuYygiTmV0cndQcmV2V2luT3Blbihpc2xvY2FsPSIuYTppc2xvY2FsLiIpIikKIAorICBsZXQgeWtlZXA9IEBACiAgICIgZ3JhYiBhIGNvcHkgb2YgdGhlIGI6bmV0cndfY3VyZGlyIHRvIHBhc3MgaXQgYWxvbmcgdG8gbmV3bHkgc3BsaXQgd2luZG93cwogICBsZXQgY3VyZGlyICAgID0gYjpuZXRyd19jdXJkaXIKIApAQCAtNjE4Nyw2ICs2MzMzLDcgQEAKICAgICAgICBlbHNlCiAgICAgICAgCXdpbmNtZCBwCiAgICAgICAgZW5kaWYKKyAgICAgICBsZXQgQEA9IHlrZWVwCiAiICAgICAgIGNhbGwgRHJldCgiTmV0cndQcmV2V2luT3BlbiAiLmNob2ljZS4iIDogdW5hYmxlIHRvIHdyaXRlIDwiLmJ1Zm5hbWUuIj4iKQogICAgICAgIHJldHVybiBjaG9pY2UKICAgICAgIGVuZGlmCkBAIC02MjA2LDYgKzYzNTMsNyBAQAogICAgICAgZWxzZQogICAgICAgIHdpbmNtZCBwCiAgICAgICBlbmRpZgorICAgICAgbGV0IEBAPSB5a2VlcAogIiAgICAgIGNhbGwgRHJldCgiTmV0cndQcmV2V2luT3BlbiAiLmNob2ljZS4iIDogY2FuY2VsbGVkIikKICAgICAgIHJldHVybiBjaG9pY2UKICAgICAgZW5kaWYKQEAgLTYyMjIsNiArNjM3MCw3IEBACiAgICAgY2FsbCBzOk5ldHJ3QnJvd3NlKGE6aXNsb2NhbCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKGE6aXNsb2NhbCxjdXJ3b3JkKSkKICAgIGVuZGlmCiAgIGVuZGlmCisgIGxldCBAQD0geWtlZXAKICIgIGNhbGwgRHJldCgiTmV0cndQcmV2V2luT3BlbiAiLmNob2ljZSkKICAgcmV0dXJuIGNob2ljZQogZW5kZnVuCkBAIC02NDE1LDYgKzY1NjQsNyBAQAogIiBzOk5ldHJ3UHJldmlldzoge3t7MgogZnVuISBzOk5ldHJ3UHJldmlldyhwYXRoKSByYW5nZQogIiAgY2FsbCBEZnVuYygiTmV0cndQcmV2aWV3KHBhdGg8Ii5hOnBhdGguIj4pIikKKyAgbGV0IHlrZWVwPSBAQAogICBrZWVwaiBjYWxsIHM6TmV0cndPcHRpb25TYXZlKCJzOiIpCiAgIGtlZXBqIGNhbGwgczpOZXRyd1NhZmVPcHRpb25zKCkKICAgaWYgaGFzKCJxdWlja2ZpeCIpCkBAIC02NDM1LDYgKzY1ODUsNyBAQAogICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsInNvcnJ5LCB0byBwcmV2aWV3IHlvdXIgdmltIG5lZWRzIHRoZSBxdWlja2ZpeCBmZWF0dXJlIGNvbXBpbGVkIGluIiwzOSkKICAgZW5kaWYKICAga2VlcGogY2FsbCBzOk5ldHJ3T3B0aW9uUmVzdG9yZSgiczoiKQorICBsZXQgQEA9IHlrZWVwCiAiICBjYWxsIERyZXQoIk5ldHJ3UHJldmlldyIpCiBlbmRmdW4KIApAQCAtNjQ0MywxOCArNjU5NCwyMCBAQAogZnVuISBzOk5ldHJ3UmVmcmVzaChpc2xvY2FsLGRpcm5hbWUpCiAiICBjYWxsIERmdW5jKCJOZXRyd1JlZnJlc2goaXNsb2NhbDwiLmE6aXNsb2NhbC4iPixkaXJuYW1lPSIuYTpkaXJuYW1lLiIpIGhpZGU9Ii5nOm5ldHJ3X2hpZGUuIiBzb3J0ZGlyPSIuZzpuZXRyd19zb3J0X2RpcmVjdGlvbikKICAgIiBhdCB0aGUgY3VycmVudCB0aW1lIChNYXIgMTksIDIwMDcpIGFsbCBjYWxscyB0byBOZXRyd1JlZnJlc2goKSBjYWxsIE5ldHJ3QnJvd3NlQ2hnRGlyKCkgZmlyc3QuCi0gICIgTmV0cndCcm93c2VDaGdEaXIoKSBtYXkgY2xlYXIgdGhlIGRpc3BsYXk7IGhlbmNlIGEgTmV0cndTYXZlUG9zbigpIG1heSBub3Qgd29yayBpZiBpdHMgcGxhY2VkIGhlcmUuCi0gICIgQWxzbywgTmV0cndCcm93c2VDaGdEaXIoKSBub3cgZG9lcyBhIE5ldHJ3U2F2ZVBvc24oKSBpdHNlbGYuCisgICIgKGRlZnVuY3QpIE5ldHJ3QnJvd3NlQ2hnRGlyKCkgbWF5IGNsZWFyIHRoZSBkaXNwbGF5OyBoZW5jZSBhIE5ldHJ3U2F2ZVBvc24oKSBtYXkgbm90IHdvcmsgaWYgaXRzIHBsYWNlZCBoZXJlLgorICAiIChkZWZ1bmN0KSBBbHNvLCBOZXRyd0Jyb3dzZUNoZ0RpcigpIG5vdyBkb2VzIGEgTmV0cndTYXZlUG9zbigpIGl0c2VsZi4KICAgc2V0bG9jYWwgbWEgbm9ybwogIiAgY2FsbCBEZWNobygic2V0bG9jYWwgbWEgbm9ybyIpCiAiICBjYWxsIERlY2hvKCJjbGVhciBidWZmZXI8Ii5leHBhbmQoIiUiKS4iPiB3aXRoIDolZCIpCisgIGxldCB5a2VlcCAgICAgID0gQEAKKyAgbGV0IHNjcmVlbnBvc24gPSBuZXRydyNOZXRyd1NhdmVQb3NuKCkKICAgc2lsISBrZWVwaiAlZAogICBpZiBhOmlzbG9jYWwKICAgIGtlZXBqIGNhbGwgbmV0cncjTG9jYWxCcm93c2VDaGVjayhhOmRpcm5hbWUpCiAgIGVsc2UKICAgIGtlZXBqIGNhbGwgczpOZXRyd0Jyb3dzZShhOmlzbG9jYWwsYTpkaXJuYW1lKQogICBlbmRpZgotICBrZWVwaiBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oKQorICBrZWVwaiBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc2NyZWVucG9zbikKIAogICAiIHJlc3RvcmUgZmlsZSBtYXJrcwogICBpZiBleGlzdHMoInM6bmV0cndtYXJrZmlsZW10Y2hfe2J1Zm5yKCclJyl9IikgJiYgczpuZXRyd21hcmtmaWxlbXRjaF97YnVmbnIoIiUiKX0gIT0gIiIKQEAgLTY0NjUsNyArNjYxOCw4IEBACiAgICAybWF0Y2ggbm9uZQogICBlbmRpZgogCi0iICByZWRyYXchCisiICByZXN0b3JlCisgIGxldCBAQD0geWtlZXAKICIgIGNhbGwgRHJldCgiTmV0cndSZWZyZXNoIikKIGVuZGZ1bgogCkBAIC02NDc0LDcgKzY2MjgsNyBAQAogIiAgICAgICAgICAgICAgICAgICAgQ2FsbGVkIGJ5IE5ldHJ3TWFya0ZpbGVDb3B5KCkKICIgICAgICAgICAgICAgICAgICAgIEludGVyZmFjZXMgdG8gczpOZXRyd1JlZnJlc2goKSBhbmQgczpMb2NhbEJyb3dzZVNoZWxsQ21kUmVmcmVzaCgpCiBmdW4hIHM6TmV0cndSZWZyZXNoRGlyKGlzbG9jYWwsZGlybmFtZSkKLSIgIGNhbGwgRGZ1bmMoInM6TmV0cndSZWZyZXNoRGlyKGlzbG9jYWw9Ii5hOmlzbG9jYWwuIiBkaXJuYW1lPCIuYTpkaXJuYW1lLiI+KSBmYXN0YnJvd3NlPSIuZzpuZXRyd19mYXN0YnJvd3NlKQorIiAgY2FsbCBEZnVuYygiczpOZXRyd1JlZnJlc2hEaXIoaXNsb2NhbD0iLmE6aXNsb2NhbC4iIGRpcm5hbWU8Ii5hOmRpcm5hbWUuIj4pIGc6bmV0cndfZmFzdGJyb3dzZT0iLmc6bmV0cndfZmFzdGJyb3dzZSkKICAgaWYgZzpuZXRyd19mYXN0YnJvd3NlID09IDAKICAgICIgc2xvd2VzdCBtb2RlIChrZWVwIGJ1ZmZlcnMgcmVmcmVzaGVkLCBsb2NhbCBvciByZW1vdGUpCiAiICAgY2FsbCBEZWNobygic2xvd2VzdCBtb2RlOiBrZWVwIGJ1ZmZlcnMgcmVmcmVzaGVkLCBsb2NhbCBvciByZW1vdGUiKQpAQCAtNjUxMCw2ICs2NjY0LDcgQEAKICIgICAgICAgICAgZnJvbnQuICBBbiAiKiIgcGF0dGVybiBoYW5kbGVzIHRoZSBkZWZhdWx0IHByaW9yaXR5LgogZnVuISBzOk5ldHJ3U2V0U29ydCgpCiAiICBjYWxsIERmdW5jKCJTZXRTb3J0KCkgYmFubmVyY250PSIudzpuZXRyd19iYW5uZXJjbnQpCisgIGxldCB5a2VlcD0gQEAKICAgaWYgdzpuZXRyd19saXN0c3R5bGUgPT0gczpMT05HTElTVAogICAgbGV0IHNlcWxpc3QgID0gc3Vic3RpdHV0ZShnOm5ldHJ3X3NvcnRfc2VxdWVuY2UsJ1wkJywnXFwlKFx0XFx8XCRcXCknLCdnZScpCiAgIGVsc2UKQEAgLTY1NzAsNiArNjcyNSw3IEBACiAgICIgYmUganVzdCBkaWdpdHMgdGhlbXNlbHZlcy4KICAgZXhlICdzaWwga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cKFxkXHszfScuZzpuZXRyd19zZXBjaHIuJ1wpXCUoXGRcezN9Jy5nOm5ldHJ3X3NlcGNoci4nXClcK1x6ZS4vXDEvZScKICAga2VlcGogY2FsbCBoaXN0ZGVsKCIvIiwtMSkKKyAgbGV0IEBAPSB5a2VlcAogCiAiICBjYWxsIERyZXQoIlNldFNvcnQiKQogZW5kZnVuCkBAIC02NjAwLDYgKzY3NTYsNyBAQAogZnVuISBzOk5ldHJ3U3BsaXQobW9kZSkKICIgIGNhbGwgRGZ1bmMoInM6TmV0cndTcGxpdChtb2RlPSIuYTptb2RlLiIpIGFsdG89Ii5nOm5ldHJ3X2FsdG8uIiBhbHR2PSIuZzpuZXRyd19hbHR2KQogCisgIGxldCB5a2VlcD0gQEAKICAgY2FsbCBzOlNhdmVXaW5WYXJzKCkKIAogICBpZiBhOm1vZGUgPT0gMApAQCAtNjY2OCw2ICs2ODI1LDcgQEAKICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwiKE5ldHJ3U3BsaXQpIHVuc3VwcG9ydGVkIG1vZGU9Ii5hOm1vZGUsNDUpCiAgIGVuZGlmCiAKKyAgbGV0IEBAPSB5a2VlcAogIiAgY2FsbCBEcmV0KCJzOk5ldHJ3U3BsaXQiKQogZW5kZnVuCiAKQEAgLTcxMjYsNiArNzI4NCwxMCBAQAogICAiIHNldCBkaXNwbGF5IHRvIG5ldHJ3IGRpc3BsYXkgc2V0dGluZ3MKICIgIGNhbGwgRGVjaG8oInNldCBkaXNwbGF5IHRvIG5ldHJ3IGRpc3BsYXkgc2V0dGluZ3MgKG5vbWEgbm9tb2QgZXRjKSIpCiAgIGV4ZSAic2V0bCAiLmc6bmV0cndfYnVmc2V0dGluZ3MKKyAgaWYgZzpuZXRyd19saXN0c3R5bGUgPT0gczpMT05HTElTVAorIiAgIGNhbGwgRGVjaG8oIihMb2NhbExpc3RpbmcpIGV4ZSBzZXRsIHRzPSIuKGc6bmV0cndfbWF4ZmlsZW5hbWVsZW4rMSkpCisgICBleGUgInNldGwgdHM9Ii4oZzpuZXRyd19tYXhmaWxlbmFtZWxlbisxKQorICBlbmRpZgogICBpZiBleGlzdHMoInM6dHJlZWN1cnBvcyIpCiAKICAgIGtlZXBqIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzOnRyZWVjdXJwb3MpCkBAIC03MjUwLDcgKzc0MTIsOCBAQAogICAgICIgaWYgdGhlcmUncyBubyAuLi8gbGlzdGVkLCB0aGVuIHB1dCAuLyBhbmQgLi4vIGluCiAgICAgbGV0IGxpbmUxPSBsaW5lKCIuIikKICAgICBleGUgInNpbCEga2VlcGogIi53Om5ldHJ3X2Jhbm5lcmNudAotICAgIGxldCBsaW5lMj0gc2VhcmNoKCdeXC5cLlwvXCUoXHNcfCRcKScsJ2NuVycpCisgICAgbGV0IGxpbmUyPSBzZWFyY2goJ1wuXC5cL1wlKFxzXHwkXCknLCdjblcnKQorIiAgICBjYWxsIERlY2hvKCJzZWFyY2goIi4nXC5cLlwvXCUoXHNcfCRcKScuIicsJ2NuVycpPSIubGluZTIuIiAgdzpuZXRyd19iYW5uZXJjbnQ9Ii53Om5ldHJ3X2Jhbm5lcmNudCkKICAgICBpZiBsaW5lMiA9PSAwCiAiICAgICBjYWxsIERlY2hvKCJuZXRydyBpcyBwdXR0aW5nIC4vIGFuZCAuLi8gaW50byBsaXN0aW5nIikKICAgICAgc2lsISBrZWVwaiBwdXQ9Jy4uLycKQEAgLTc3MjEsNiArNzg4NCw1NSBAQAogIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyIgbmV0cncjRmlsZVVybFJlYWQ6IGhhbmRsZXMgcmVhZGluZyBmaWxlOi8vKiBmaWxlcyB7e3syCisiICAgU2hvdWxkIGFjY2VwdDogICBmaWxlOi8vbG9jYWxob3N0L2V0Yy9mc3RhYgorIiAgICAgICAgICAgICAgICAgICAgZmlsZTovLy9ldGMvZnN0YWIKKyIgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8vYzovV0lORE9XUy9jbG9jay5hdmkKKyIgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8vY3wvV0lORE9XUy9jbG9jay5hdmkKKyIgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sb2NhbGhvc3QvYzovV0lORE9XUy9jbG9jay5hdmkKKyIgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sb2NhbGhvc3QvY3wvV0lORE9XUy9jbG9jay5hdmkKKyIgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jOi9mb28udHh0CisiICAgICAgICAgICAgICAgICAgICBmaWxlOi8vL2M6L2Zvby50eHQKKyIgYW5kICVYWCAod2hlcmUgWCBpcyBbMC05YS1mQS1GXSBpcyBjb252ZXJ0ZWQgaW50byBhIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiBoZXhhZGVjaW1hbCB2YWx1ZQorZnVuISBuZXRydyNGaWxlVXJsUmVhZChmbmFtZSkKKyIgIGNhbGwgRGZ1bmMoIm5ldHJ3I0ZpbGVVcmxSZWFkKGZuYW1lPCIuYTpmbmFtZS4iPikiKQorICBsZXQgZm5hbWUgPSBhOmZuYW1lCisgIGlmIGZuYW1lID1+ICdeZmlsZTovL2xvY2FsaG9zdC8nCisiICAgY2FsbCBEZWNobygnY29udmVydGluZyBmaWxlOi8vbG9jYWxob3N0LyAgIC10by0gIGZpbGU6Ly8vJykKKyAgIGxldCBmbmFtZT0gc3Vic3RpdHV0ZShmbmFtZSwnXmZpbGU6Ly9sb2NhbGhvc3QvJywnZmlsZTovLy8nLCcnKQorIiAgIGNhbGwgRGVjaG8oImZuYW1lPCIuZm5hbWUuIj4iKQorICBlbmRpZgorICBpZiAoaGFzKCJ3aW4zMiIpIHx8IGhhcygid2luOTUiKSB8fCBoYXMoIndpbjY0IikgfHwgaGFzKCJ3aW4xNiIpKQorICAgaWYgZm5hbWUgID1+ICdeZmlsZTovLy9cPVxhW3w6XS8nCisiICAgIGNhbGwgRGVjaG8oJ2NvbnZlcnRpbmcgZmlsZTovLy9cYXwvICAgLXRvLSAgZmlsZTovL1xhOi8nKQorICAgIGxldCBmbmFtZSA9IHN1YnN0aXR1dGUoZm5hbWUsJ15maWxlOi8vL1w9XChcYVwpW3w6XS8nLCdmaWxlOi8vXDE6LycsJycpCisiICAgIGNhbGwgRGVjaG8oImZuYW1lPCIuZm5hbWUuIj4iKQorICAgZW5kaWYKKyAgZW5kaWYKKyAgbGV0IGZuYW1lMjM5NiA9IG5ldHJ3I1JGQzIzOTYoZm5hbWUpCisgIGxldCBmbmFtZTIzOTZlPSBmbmFtZWVzY2FwZShmbmFtZTIzOTYpCisgIGxldCBwbGFpbmZuYW1lPSBzdWJzdGl0dXRlKGZuYW1lMjM5NiwnZmlsZTovL1woLipcKScsJ1wxJywiIikKKyAgaWYgKGhhcygid2luMzIiKSB8fCBoYXMoIndpbjk1IikgfHwgaGFzKCJ3aW42NCIpIHx8IGhhcygid2luMTYiKSkKKyIgICBjYWxsIERlY2hvKCJ3aW5kb3dzIGV4Y2VwdGlvbiBmb3IgcGxhaW5mbmFtZSIpCisgICBpZiBwbGFpbmZuYW1lID1+ICdeL1wrXGE6JworIiAgICBjYWxsIERlY2hvKCdyZW1vdmluZyBsZWFkaW5nICIvInMnKQorICAgIGxldCBwbGFpbmZuYW1lPSBzdWJzdGl0dXRlKHBsYWluZm5hbWUsJ14vXCtcKFxhOlwpJywnXDEnLCcnKQorICAgZW5kaWYKKyAgZW5kaWYKKyIgIGNhbGwgRGVjaG8oImZuYW1lMjM5NjwiLmZuYW1lMjM5Ni4iPiIpCisiICBjYWxsIERlY2hvKCJwbGFpbmZuYW1lPCIucGxhaW5mbmFtZS4iPiIpCisgIGV4ZSAic2lsIGRvYXUgQnVmUmVhZFByZSAiLmZuYW1lMjM5NmUKKyAgZXhlICdrZWVwaiByICcucGxhaW5mbmFtZQorICBleGUgJ2ZpbGUhICcucGxhaW5mbmFtZQorICBrZWVwaiAxZAorIiAgY2FsbCBEZWNobygiKEZpbGVVcmxSZWFkKSBzZXRsIG5vbW9kIikKKyAgc2V0bCBub21vZAorIiAgY2FsbCBEZWNobygiKEZpbGVVcmxSZWFkKSBybz0iLiZsOnJvLiIgbWE9Ii4mbDptYS4iIG1vZD0iLiZsOm1vZC4iIHdyYXA9Ii4mbDp3cmFwLiIgKGZpbGVuYW1lPCIuZXhwYW5kKCIlIikuIj4gd2luIyIud2lubnIoKS4iIGZ0PCIuJmZ0LiI+KSIpCisiICBjYWxsIERyZXQoIm5ldHJ3I0ZpbGVVcmxSZWFkIikKKyAgZXhlICJzaWwgZG9hdSBCdWZSZWFkUG9zdCAiLmZuYW1lMjM5NmUKK2VuZGZ1bgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBuZXRydyNMb2NhbEJyb3dzZUNoZWNrOiB7e3syCiBmdW4hIG5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2soZGlybmFtZSkKICAgIiB1bmZvcnR1bmF0ZSBpbnRlcmFjdGlvbiAtLSBzcGxpdCB3aW5kb3cgZGVidWdnaW5nIGNhbid0IGJlCkBAIC03NzMyLDE3ICs3OTQ0LDM2IEBACiAgICIgcmVmcmVzaGVzIChhbmQgd291bGQgZG8gc28gaW4gdGhlIG1pZGRsZSBvZiBOZXRyd1NhdmVPcHRpb25zKCksIHRvbykKICIgIGNhbGwgRGVjaG8oIm5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2s6IGlzZGlyPCIuYTpkaXJuYW1lLiI+PSIuaXNkaXJlY3RvcnkoYTpkaXJuYW1lKS4oKGV4aXN0cygiczp0cmVlZm9yY2VyZWRyYXciKT8gIiB0cmVlZm9yY2VyZWRyYXciIDogIiIpKSkKICIgIGNhbGwgRHJlZGlyKCJMb2NhbEJyb3dzZUNoZWNrIiwibHMhIil8cmVkcmF3IXxzbGVlcCAzCisgIGxldCB5a2VlcD0gQEAKICAgaWYgaXNkaXJlY3RvcnkoYTpkaXJuYW1lKQotIiAgIGNhbGwgRGVjaG8oIiBmdDwiLiZmdC4iPiBiOm5ldHJ3X2N1cmRpcjwiLihleGlzdHMoImI6bmV0cndfY3VyZGlyIik/IGI6bmV0cndfY3VyZGlyIDogIiBkb2Vzbid0IGV4aXN0IikuIj4gZGlybmFtZTwiLmE6ZGlybmFtZS4iPiIuIiBsaW5lKCQpPSIubGluZSgiJCIpKQotICAgaWYgJmZ0ICE9ICJuZXRydyIgfHwgKGV4aXN0cygiYjpuZXRyd19jdXJkaXIiKSAmJiBiOm5ldHJ3X2N1cmRpciAhPSBhOmRpcm5hbWUpCisiICAgY2FsbCBEZWNobygiIGZ0PCIuJmZ0LiI+IGI6bmV0cndfY3VyZGlyPCIuKGV4aXN0cygiYjpuZXRyd19jdXJkaXIiKT8gYjpuZXRyd19jdXJkaXIgOiAiIGRvZXNuJ3QgZXhpc3QiKS4iPiBkaXJuYW1lPCIuYTpkaXJuYW1lLiI+Ii4iIGxpbmUoJCk9Ii5saW5lKCIkIikuIiBmdDwiLiZmdC4iPiBnOm5ldHJ3X2Zhc3Ricm93c2U9Ii5nOm5ldHJ3X2Zhc3Ricm93c2UpCisgICBsZXQgc3Zwb3NuPSBuZXRydyNOZXRyd1NhdmVQb3NuKCkKKyAgIGlmICZmdCAhPSAibmV0cnciIHx8IChleGlzdHMoImI6bmV0cndfY3VyZGlyIikgJiYgYjpuZXRyd19jdXJkaXIgIT0gYTpkaXJuYW1lKSB8fCBnOm5ldHJ3X2Zhc3Ricm93c2UgPD0gMQogICAgIHNpbCEga2VlcGogY2FsbCBzOk5ldHJ3QnJvd3NlKDEsYTpkaXJuYW1lKQorICAgIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvc24pCiAgICBlbHNlaWYgJmZ0ID09ICJuZXRydyIgJiYgbGluZSgiJCIpID09IDEKICAgICBzaWwhIGtlZXBqIGNhbGwgczpOZXRyd0Jyb3dzZSgxLGE6ZGlybmFtZSkKKyAgICBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3NuKQogICAgZWxzZWlmIGV4aXN0cygiczp0cmVlZm9yY2VyZWRyYXciKQogICAgIHVubGV0IHM6dHJlZWZvcmNlcmVkcmF3CiAgICAgc2lsISBrZWVwaiBjYWxsIHM6TmV0cndCcm93c2UoMSxhOmRpcm5hbWUpCisgICAgY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zbikKICAgIGVuZGlmCiAgIGVuZGlmCisgICIgZm9sbG93aW5nIGNvZGUgd2lwZXMgb3V0IGN1cnJlbnRseSB1bnVzZWQgbmV0cncgYnVmZmVycworICAiICAgICAgIElGIGc6bmV0cndfZmFzdGJyb3dzZSBpcyB6ZXJvIChpZS4gc2xvdyBicm93c2luZyBzZWxlY3RlZCkKKyAgIiAgIEFORCBJRiB0aGUgbGlzdGluZyBzdHlsZSBpcyBub3QgYSB0cmVlIGxpc3RpbmcKKyAgaWYgZXhpc3RzKCJnOm5ldHJ3X2Zhc3Ricm93c2UiKSAmJiBnOm5ldHJ3X2Zhc3Ricm93c2UgPT0gMCAmJiBnOm5ldHJ3X2xpc3RzdHlsZSAhPSBzOlRSRUVMSVNUCisgICBsZXQgaWJ1ZiAgICA9IDEKKyAgIGxldCBidWZsYXN0ID0gYnVmbnIoIiQiKQorICAgd2hpbGUgaWJ1ZiA8PSBidWZsYXN0CisgICAgaWYgYnVmd2lubnIoaWJ1ZikgPT0gLTEgJiYgaXNkaXJlY3RvcnkoYnVmbmFtZShpYnVmKSkKKyAgICAgZXhlICJzaWwhICIuaWJ1Zi4iYnchIgorICAgIGVuZGlmCisgICAgbGV0IGlidWY9IGlidWYgKyAxCisgICBlbmR3aGlsZQorICBlbmRpZgorICBsZXQgQEA9IHlrZWVwCiAgICIgbm90IGEgZGlyZWN0b3J5LCBpZ25vcmUgaXQKIGVuZGZ1bgogCkBAIC03NzU5LDEyICs3OTkwLDEyIEBACiAgICIgZ2V0IHRoZSBsaXN0IG9mIGZpbGVzIGNvbnRhaW5lZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKICAgbGV0IGRpcm5hbWUgICAgPSBiOm5ldHJ3X2N1cmRpcgogICBsZXQgZGlybmFtZWxlbiA9IHM6U3RybGVuKGI6bmV0cndfY3VyZGlyKQotICBsZXQgZmlsZWxpc3QgICA9IGdsb2IoczpDb21wb3NlUGF0aChmbmFtZWVzY2FwZShkaXJuYW1lKSwiKiIpKQorICBsZXQgZmlsZWxpc3QgICA9IGdsb2IoczpDb21wb3NlUGF0aChkaXJuYW1lLCIqIikpCiAiICBjYWxsIERlY2hvKCIoTG9jYWxMaXN0aW5nKSBnbG9iKGRpcm5hbWU8Ii5kaXJuYW1lLiIvKj4pPSIuZmlsZWxpc3QpCiAgIGlmIGZpbGVsaXN0ICE9ICIiCiAgICBsZXQgZmlsZWxpc3Q9IGZpbGVsaXN0LiJcbiIKICAgZW5kaWYKLSAgbGV0IGZpbGVsaXN0PSBmaWxlbGlzdC5nbG9iKHM6Q29tcG9zZVBhdGgoZm5hbWVlc2NhcGUoZGlybmFtZSksIi4qIikpCisgIGxldCBmaWxlbGlzdD0gZmlsZWxpc3QuZ2xvYihzOkNvbXBvc2VQYXRoKGRpcm5hbWUsIi4qIikpCiAiICBjYWxsIERlY2hvKCIoTG9jYWxMaXN0aW5nKSBnbG9iKGRpcm5hbWU8Ii5kaXJuYW1lLiIvLio+KT0iLmZpbGVsaXN0KQogCiAgICIgQ29kaW5nIGNob2ljZTogZWl0aGVyICAgZWxpZGUgICAuLyBpZiBwcmVzZW50CkBAIC03ODA2LDYgKzgwMzcsMTEgQEAKICIgIGNhbGwgRGVjaG8oIihMb2NhbExpc3RpbmcpIChiZWZvcmUgd2hpbGUpIGRpcm5hbWVsZW48Ii5kaXJuYW1lbGVuLiI+IikKICIgIGNhbGwgRGVjaG8oIihMb2NhbExpc3RpbmcpIChiZWZvcmUgd2hpbGUpIGZpbGVsaXN0PCIuZmlsZWxpc3QuIj4iKQogCisKKyAgaWYgZ2V0KGc6LCAnbmV0cndfZHluYW1pY19tYXhmaWxlbmFtZWxlbicsIDApCisgICAgbGV0IGc6bmV0cndfbWF4ZmlsZW5hbWVsZW4gPSBtYXgobWFwKHNwbGl0KGZpbGVsaXN0LCAnXG4nKSwgJ2xlbihmbmFtZW1vZGlmeSh2OnZhbCwgIjp0IikpJykpICsgMQorICBlbmRpZgorCiAgIHdoaWxlIGZpbGVsaXN0ICE9ICIiCiAgICBpZiBmaWxlbGlzdCA9fiAnXG4nCiAgICAgbGV0IGZpbGVuYW1lID0gc3Vic3RpdHV0ZShmaWxlbGlzdCwnXG4uKiQnLCcnLCdlJykKQEAgLTc5MDgsOCArODE0NCw4IEBACiAgIHNpbCEga2VlcGogZy9eJC9kCiAgIHNpbCEga2VlcGogJXMvXHIkLy9lCiAgIGNhbGwgaGlzdGRlbCgiLyIsLTEpCi0gIGV4ZSAic2V0bCB0cz0iLmc6bmV0cndfbWF4ZmlsZW5hbWVsZW4KLSIgIGNhbGwgRGVjaG8oIihMb2NhbExpc3RpbmcpIHNldGwgdHM9Ii5nOm5ldHJ3X21heGZpbGVuYW1lbGVuKQorIiAgY2FsbCBEZWNobygiKExvY2FsTGlzdGluZykgZXhlIHNldGwgdHM9Ii4oZzpuZXRyd19tYXhmaWxlbmFtZWxlbisxKSkKKyAgZXhlICJzZXRsIHRzPSIuKGc6bmV0cndfbWF4ZmlsZW5hbWVsZW4rMSkKIAogIiAgY2FsbCBEcmV0KCJzOkxvY2FsTGlzdGluZyIpCiBlbmRmdW4KQEAgLTc5NDAsNiArODE3Niw3IEBACiAgIGVuZGlmCiAgIGxldCBpdGFiICAgICAgID0gMQogICBsZXQgYnVmdGFibGlzdCA9IFtdCisgIGxldCB5a2VlcCAgICAgID0gQEAKICAgd2hpbGUgaXRhYiA8PSB0YWJwYWdlbnIoIiQiKQogICAgbGV0IGJ1ZnRhYmxpc3QgPSBidWZ0YWJsaXN0ICsgdGFicGFnZWJ1Zmxpc3QoKQogICAgbGV0IGl0YWIgICAgICAgPSBpdGFiICsgMQpAQCAtNzk3MCwxNyArODIwNywxODMgQEAKICAgIGxldCBpYmw9IGlibCArIDEKICAgZW5kZm9yCiAgIGV4ZSBjdXJ3aW4uIndpbmNtZCB3IgorICBsZXQgQEA9IHlrZWVwCiAKICIgIGNhbGwgRHJldCgiTG9jYWxCcm93c2VTaGVsbENtZFJlZnJlc2giKQogZW5kZnVuCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIHM6TG9jYWxGYXN0QnJvd3NlcjogaGFuZGxlcyBzZXR0aW5nIHVwL3Rha2luZyBkb3duIGZhc3QgYnJvd3NpbmcgZm9yIHRoZSBsb2NhbCBicm93c2VyIHt7ezIKKyIKKyIgICAgIGc6bmV0cndfICAgIERpcmVjdG9yeSBJcworIiAgICAgZmFzdGJyb3dzZSAgTG9jYWwgIFJlbW90ZSAgIAorIiAgc2xvdyAgIDAgICAgICAgICBEICAgICAgRCAgICAgIEQ9RGVsZXRpbmcgYSBidWZmZXIgaW1wbGllcyBpdCB3aWxsIG5vdCBiZSByZS11c2VkIChzbG93KQorIiAgbWVkICAgIDEgICAgICAgICBEICAgICAgSCAgICAgIEg9SGlkaW5nIGEgYnVmZmVyIGltcGxpZXMgaXQgbWF5IGJlIHJlLXVzZWQgICAgICAgIChmYXN0KQorIiAgZmFzdCAgIDIgICAgICAgICBIICAgICAgSCAgICAgIAorIgorIiAgRGVsZXRpbmcgYSBidWZmZXIgbWVhbnMgdGhhdCBpdCB3aWxsIGJlIHJlLWxvYWRlZCB3aGVuIGV4YW1pbmVkLCBoZW5jZSAic2xvdyIuCisiICBIaWRpbmcgICBhIGJ1ZmZlciBtZWFucyB0aGF0IGl0IHdpbGwgYmUgcmUtdXNlZCAgIHdoZW4gZXhhbWluZWQsIGhlbmNlICJmYXN0Ii4KKyIgICAgICAgICAgIChyZS11c2luZyBhIGJ1ZmZlciBtYXkgbm90IGJlIGFzIGFjY3VyYXRlKQorZnVuISBzOkxvY2FsRmFzdEJyb3dzZXIoKQorIiAgICBjYWxsIERmdW5jKCJMb2NhbEZhc3RCcm93c2VyKCkgZzpuZXRyd19mYXN0YnJvd3NlPSIuZzpuZXRyd19mYXN0YnJvd3NlLiIgIHM6bmV0cndfYnJvd3Nlcl9zaGVsbGNtZCAiLihleGlzdHMoInM6bmV0cndfYnJvd3Nlcl9zaGVsbGNtZCIpPyAiZXhpc3RzIiA6ICJkb2VzIG5vdCBleGlzdCIpKQorCisgICIgaW5pdGlhbGl6ZSBicm93c2VsaXN0LCBhIGxpc3Qgb2YgYnVmZmVyIG51bWJlcnMgdGhhdCB0aGUgbG9jYWwgYnJvd3NlciBoYXMgdXNlZAorICBpZiAhZXhpc3RzKCJzOm5ldHJ3X2Jyb3dzZWxpc3QiKQorIiAgIGNhbGwgRGVjaG8oImluaXRpYWxpemUgczpuZXRyd19icm93c2VsaXN0IikKKyAgIGxldCBzOm5ldHJ3X2Jyb3dzZWxpc3Q9IFtdCisgIGVuZGlmCisKKyAgIiBhcHBlbmQgY3VycmVudCBidWZmZXIgdG8gZmFzdGJyb3dzZSBsaXN0CisgIGlmIGVtcHR5KHM6bmV0cndfYnJvd3NlbGlzdCkgfHwgYnVmbnIoIiUiKSA+IHM6bmV0cndfYnJvd3NlbGlzdFstMV0KKyIgICBjYWxsIERlY2hvKCJhcHBlbmRuZyBjdXJyZW50IGJ1ZmZlciB0byBicm93c2VsaXN0IikKKyAgIGNhbGwgYWRkKHM6bmV0cndfYnJvd3NlbGlzdCxidWZucigiJSIpKQorIiAgIGNhbGwgRGVjaG8oImJyb3dzZWxpc3Q9Ii5zdHJpbmcoczpuZXRyd19icm93c2VsaXN0KSkKKyAgZW5kaWYKKworICAiIGVuYWJsZSBhdXRvY21kIGV2ZW50cyB0byBoYW5kbGUgcmVmcmVzaGluZy9yZW1vdmluZyBsb2NhbCBicm93c2VyIGJ1ZmZlcnMKKyAgIiAgICBJZiBsb2NhbCBicm93c2UgYnVmZmVyIGlzIGN1cnJlbnRseSBzaG93aW5nOiByZWZyZXNoIGl0CisgICIgICAgSWYgbG9jYWwgYnJvd3NlIGJ1ZmZlciBpcyBjdXJyZW50bHkgaGlkZGVuIDogd2lwZSBpdAorICAiICAgIGc6bmV0cndfZmFzdGJyb3dzZT0wIDogc2xvdyAgIHNwZWVkLCBuZXZlciByZS11c2UgZGlyZWN0b3J5IGxpc3RpbmcKKyAgIiAgICAgICAgICAgICAgICAgICAgICA9MSA6IG1lZGl1bSBzcGVlZCwgcmUtdXNlIGRpcmVjdG9yeSBsaXN0aW5nIGZvciByZW1vdGUgb25seQorICAiICAgICAgICAgICAgICAgICAgICAgID0yIDogZmFzdCAgIHNwZWVkLCBhbHdheXMgcmUtdXNlIGRpcmVjdG9yeSBsaXN0aW5nIHdoZW4gcG9zc2libGUKKyAgaWYgIWV4aXN0cygiczpuZXRyd19icm93c2VyX3NoZWxsY21kIikgJiYgZzpuZXRyd19mYXN0YnJvd3NlIDw9IDEKKyIgICBjYWxsIERlY2hvKCJzZXR0aW5nIHVwIGxvY2FsLWJyb3dzZXIgc2hlbGwgY29tbWFuZCByZWZyZXNoIikKKyAgIGxldCBzOm5ldHJ3X2Jyb3dzZXJfc2hlbGxjbWQ9IDEKKyAgIGF1Z3JvdXAgQXVOZXRyd1NoZWxsQ21kCisgICAgYXUhCisgICAgaWYgKGhhcygid2luMzIiKSB8fCBoYXMoIndpbjk1IikgfHwgaGFzKCJ3aW42NCIpIHx8IGhhcygid2luMTYiKSkKKyIgICAgIGNhbGwgRGVjaG8oImF1dG9jbWQ6IFNoZWxsQ21kUG9zdCAqIGNhbGwgczpMb2NhbEJyb3dzZVNoZWxsQ21kUmVmcmVzaCgpIikKKyAgICAgYXUgU2hlbGxDbWRQb3N0CQkJKgljYWxsIHM6TG9jYWxCcm93c2VTaGVsbENtZFJlZnJlc2goKQorICAgIGVsc2UKKyAgICAgYXUgU2hlbGxDbWRQb3N0LEZvY3VzR2FpbmVkCSoJY2FsbCBzOkxvY2FsQnJvd3NlU2hlbGxDbWRSZWZyZXNoKCkKKyIgICAgIGNhbGwgRGVjaG8oImF1dG9jbWQ6IFNoZWxsQ21kUG9zdCxGb2N1c0dhaW5lZCAqIGNhbGwgczpMb2NhbEJyb3dzZVNoZWxsQ21kUmVmcmVzaCgpIikKKyAgICBlbmRpZgorICAgYXVncm91cCBFTkQKKyAgZW5kaWYKKworICAiIHVzZXIgbXVzdCBoYXZlIGNoYW5nZWQgZmFzdGJyb3dzZSB0byBpdHMgZmFzdCBzZXR0aW5nLCBzbyByZW1vdmUKKyAgIiB0aGUgYXNzb2NpYXRlZCBhdXRvY21kIGV2ZW50cworICBpZiBnOm5ldHJ3X2Zhc3Ricm93c2UgPiAxICYmIGV4aXN0cygiczpuZXRyd19icm93c2VyX3NoZWxsY21kIikKKyIgICBjYWxsIERlY2hvKCJyZW1vdmUgQXVOZXRyd1NoZWxsQ21kIGF1dGNtZCBncm91cCIpCisgICB1bmxldCBzOm5ldHJ3X2Jyb3dzZXJfc2hlbGxjbWQKKyAgIGF1Z3JvdXAgQXVOZXRyd1NoZWxsQ21kCisgICAgYXUhCisgICBhdWdyb3VwIEVORAorICAgYXVncm91cCEgQXVOZXRyd1NoZWxsQ21kCisgIGVuZGlmCisKKyIgIGNhbGwgRHJldCgiTG9jYWxGYXN0QnJvd3NlciA6IGJyb3dzZWxpc3Q8Ii5zdHJpbmcoczpuZXRyd19icm93c2VsaXN0KS4iPiIpCitlbmRmdW4KKworIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyIgczpOZXRyd0xvY2FsRXhlY3V0ZTogdXNlcyBzeXN0ZW0oKSB0byBleGVjdXRlIGNvbW1hbmQgdW5kZXIgY3Vyc29yICgiWCIgY29tbWFuZCBzdXBwb3J0KSB7e3syCitmdW4hIHM6TmV0cndMb2NhbEV4ZWN1dGUoY21kKQorIiAgY2FsbCBEZnVuYygiczpOZXRyd0xvY2FsRXhlY3V0ZShjbWQ8Ii5hOmNtZC4iPikiKQorICBsZXQgeWtlZXA9IEBACisgICIgc2FuaXR5IGNoZWNrCisgIGlmICFleGVjdXRhYmxlKGE6Y21kKQorICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCJ0aGUgZmlsZTwiLmE6Y21kLiI+IGlzIG5vdCBleGVjdXRhYmxlISIsODkpCisgICBsZXQgQEA9IHlrZWVwCisiICAgY2FsbCBEcmV0KCJzOk5ldHJ3TG9jYWxFeGVjdXRlIikKKyAgIHJldHVybgorICBlbmRpZgorCisgIGxldCBvcHRhcmdzPSBpbnB1dCgiOiEiLmE6Y21kLCIiLCJmaWxlIikKKyIgIGNhbGwgRGVjaG8oIm9wdGFyZ3M8Ii5vcHRhcmdzLiI+IikKKyAgbGV0IHJlc3VsdD0gc3lzdGVtKGE6Y21kLm9wdGFyZ3MpCisiICBjYWxsIERlY2hvKHJlc3VsdCkKKworICAiIHN0cmlwIGFueSBhbnNpIGVzY2FwZSBzZXF1ZW5jZXMgb2ZmCisgIGxldCByZXN1bHQgPSBzdWJzdGl0dXRlKHJlc3VsdCwiXGVcXFtbMC05O10qbSIsIiIsImciKQorCisgICIgc2hvdyB1c2VyIHRoZSByZXN1bHQocykKKyAgZWNob21zZyByZXN1bHQKKyAgbGV0IEBAPSB5a2VlcAorCisiICBjYWxsIERyZXQoInM6TmV0cndMb2NhbEV4ZWN1dGUiKQorZW5kZnVuCisKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIHM6TmV0cndMb2NhbFJlbmFtZTogcmVuYW1lIGEgcmVtb3RlIGZpbGUgb3IgZGlyZWN0b3J5IHt7ezIKK2Z1biEgczpOZXRyd0xvY2FsUmVuYW1lKHBhdGgpIHJhbmdlCisiICBjYWxsIERmdW5jKCJOZXRyd0xvY2FsUmVuYW1lKHBhdGg8Ii5hOnBhdGguIj4pIikKKworICAiIHByZXBhcmF0aW9uIGZvciByZW1vdmluZyBtdWx0aXBsZSBmaWxlcy9kaXJlY3RvcmllcworICBsZXQgeWtlZXAgPSBAQAorICBsZXQgY3RyICAgPSBhOmZpcnN0bGluZQorICBsZXQgc3Zwb3MgPSBuZXRydyNOZXRyd1NhdmVQb3NuKCkKKworICAiIHJlbmFtZSBmaWxlcyBnaXZlbiBieSB0aGUgbWFya2ZpbGVsaXN0CisgIGlmIGV4aXN0cygiczpuZXRyd21hcmtmaWxlbGlzdF97YnVmbnIoJyUnKX0iKQorICAgZm9yIG9sZG5hbWUgaW4gczpuZXRyd21hcmtmaWxlbGlzdF97YnVmbnIoIiUiKX0KKyIgICAgY2FsbCBEZWNobygib2xkbmFtZTwiLm9sZG5hbWUuIj4iKQorICAgIGlmIGV4aXN0cygic3ViZnJvbSIpCisgICAgIGxldCBuZXduYW1lPSBzdWJzdGl0dXRlKG9sZG5hbWUsc3ViZnJvbSxzdWJ0bywnJykKKyIgICAgIGNhbGwgRGVjaG8oInN1YmZyb208Ii5zdWJmcm9tLiI+IHN1YnRvPCIuc3VidG8uIj4gbmV3bmFtZTwiLm5ld25hbWUuIj4iKQorICAgIGVsc2UKKyAgICAgY2FsbCBpbnB1dHNhdmUoKQorICAgICBsZXQgbmV3bmFtZT0gaW5wdXQoIk1vdmluZyAiLm9sZG5hbWUuIiB0byA6ICIsb2xkbmFtZSkKKyAgICAgY2FsbCBpbnB1dHJlc3RvcmUoKQorICAgICBpZiBuZXduYW1lID1+ICdecy8nCisgICAgICBsZXQgc3ViZnJvbSA9IHN1YnN0aXR1dGUobmV3bmFtZSwnXnMvXChbXi9dKlwpLy4qLyQnLCdcMScsJycpCisgICAgICBsZXQgc3VidG8gICA9IHN1YnN0aXR1dGUobmV3bmFtZSwnXnMvW14vXSovXCguKlwpLyQnLCdcMScsJycpCisiICAgICAgY2FsbCBEZWNobygic3ViZnJvbTwiLnN1YmZyb20uIj4gc3VidG88Ii5zdWJ0by4iPiBuZXduYW1lPCIubmV3bmFtZS4iPiIpCisgICAgICBsZXQgbmV3bmFtZSA9IHN1YnN0aXR1dGUob2xkbmFtZSxzdWJmcm9tLHN1YnRvLCcnKQorICAgICBlbmRpZgorICAgIGVuZGlmCisgICAgY2FsbCByZW5hbWUob2xkbmFtZSxuZXduYW1lKQorICAgZW5kZm9yCisgICBjYWxsIHM6TmV0cndVbm1hcmtMaXN0KGJ1Zm5yKCIlIiksYjpuZXRyd19jdXJkaXIpCisgIAorICBlbHNlCisKKyAgICIgYXR0ZW1wdCB0byByZW5hbWUgZmlsZXMvZGlyZWN0b3JpZXMKKyAgIHdoaWxlIGN0ciA8PSBhOmxhc3RsaW5lCisgICAgZXhlICJrZWVwaiAiLmN0cgorCisgICAgIiBzYW5pdHkgY2hlY2tzCisgICAgaWYgbGluZSgiLiIpIDwgdzpuZXRyd19iYW5uZXJjbnQKKyAgICAgbGV0IGN0cj0gY3RyICsgMQorICAgICBjb250aW51ZQorICAgIGVuZGlmCisgICAgbGV0IGN1cndvcmQ9IHM6TmV0cndHZXRXb3JkKCkKKyAgICBpZiBjdXJ3b3JkID09ICIuLyIgfHwgY3Vyd29yZCA9PSAiLi4vIgorICAgICBsZXQgY3RyPSBjdHIgKyAxCisgICAgIGNvbnRpbnVlCisgICAgZW5kaWYKKworICAgIGtlZXBqIG5vcm0hIDAKKyAgICBsZXQgb2xkbmFtZT0gczpDb21wb3NlUGF0aChhOnBhdGgsY3Vyd29yZCkKKyIgICBjYWxsIERlY2hvKCJvbGRuYW1lPCIub2xkbmFtZS4iPiIpCisKKyAgICBjYWxsIGlucHV0c2F2ZSgpCisgICAgbGV0IG5ld25hbWU9IGlucHV0KCJNb3ZpbmcgIi5vbGRuYW1lLiIgdG8gOiAiLHN1YnN0aXR1dGUob2xkbmFtZSwnLyokJywnJywnZScpKQorICAgIGNhbGwgaW5wdXRyZXN0b3JlKCkKKworICAgIGNhbGwgcmVuYW1lKG9sZG5hbWUsbmV3bmFtZSkKKyIgICBjYWxsIERlY2hvKCJyZW5hbWluZyA8Ii5vbGRuYW1lLiI+IHRvIDwiLm5ld25hbWUuIj4iKQorCisgICAgbGV0IGN0cj0gY3RyICsgMQorICAgZW5kd2hpbGUKKyAgZW5kaWYKKworICAiIHJlZnJlc2ggdGhlIGRpcmVjdG9yeQorIiAgY2FsbCBEZWNobygicmVmcmVzaCB0aGUgZGlyZWN0b3J5IGxpc3RpbmciKQorICBrZWVwaiBjYWxsIHM6TmV0cndSZWZyZXNoKDEsczpOZXRyd0Jyb3dzZUNoZ0RpcigxLCcuLycpKQorICBrZWVwaiBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3MpCisgIGxldCBAQD0geWtlZXAKKworIiAgY2FsbCBEcmV0KCJOZXRyd0xvY2FsUmVuYW1lIikKK2VuZGZ1bgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBzOk5ldHJ3TG9jYWxSbToge3t7MgogZnVuISBzOk5ldHJ3TG9jYWxSbShwYXRoKSByYW5nZQogIiAgY2FsbCBEZnVuYygiczpOZXRyd0xvY2FsUm0ocGF0aDwiLmE6cGF0aC4iPikiKQogIiAgY2FsbCBEZWNobygiZmlyc3RsaW5lPSIuYTpmaXJzdGxpbmUuIiBsYXN0bGluZT0iLmE6bGFzdGxpbmUpCiAKICAgIiBwcmVwYXJhdGlvbiBmb3IgcmVtb3ZpbmcgbXVsdGlwbGUgZmlsZXMvZGlyZWN0b3JpZXMKKyAgbGV0IHlrZWVwID0gQEAKICAgbGV0IHJldCAgID0gMAogICBsZXQgYWxsICAgPSAwCiAgIGxldCBzdnBvcyA9IG5ldHJ3I05ldHJ3U2F2ZVBvc24oKQpAQCAtODAzMiw2ICs4NDM1LDcgQEAKICAgIGtlZXBqIGNhbGwgczpOZXRyd1JlZnJlc2goMSxzOk5ldHJ3QnJvd3NlQ2hnRGlyKDEsJy4vJykpCiAgICBrZWVwaiBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3MpCiAgIGVuZGlmCisgIGxldCBAQD0geWtlZXAKIAogIiAgY2FsbCBEcmV0KCJzOk5ldHJ3TG9jYWxSbSIpCiBlbmRmdW4KQEAgLTgxMjIsMTg2ICs4NTI2LDYgQEAKIGVuZGZ1bgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIiBzOk5ldHJ3TG9jYWxSZW5hbWU6IHJlbmFtZSBhIHJlbW90ZSBmaWxlIG9yIGRpcmVjdG9yeSB7e3syCi1mdW4hIHM6TmV0cndMb2NhbFJlbmFtZShwYXRoKSByYW5nZQotIiAgY2FsbCBEZnVuYygiTmV0cndMb2NhbFJlbmFtZShwYXRoPCIuYTpwYXRoLiI+KSIpCi0KLSAgIiBwcmVwYXJhdGlvbiBmb3IgcmVtb3ZpbmcgbXVsdGlwbGUgZmlsZXMvZGlyZWN0b3JpZXMKLSAgbGV0IGN0ciAgPSBhOmZpcnN0bGluZQotICBsZXQgc3Zwb3M9IG5ldHJ3I05ldHJ3U2F2ZVBvc24oKQotCi0gICIgcmVuYW1lIGZpbGVzIGdpdmVuIGJ5IHRoZSBtYXJrZmlsZWxpc3QKLSAgaWYgZXhpc3RzKCJzOm5ldHJ3bWFya2ZpbGVsaXN0X3tidWZucignJScpfSIpCi0gICBmb3Igb2xkbmFtZSBpbiBzOm5ldHJ3bWFya2ZpbGVsaXN0X3tidWZucigiJSIpfQotIiAgICBjYWxsIERlY2hvKCJvbGRuYW1lPCIub2xkbmFtZS4iPiIpCi0gICAgaWYgZXhpc3RzKCJzdWJmcm9tIikKLSAgICAgbGV0IG5ld25hbWU9IHN1YnN0aXR1dGUob2xkbmFtZSxzdWJmcm9tLHN1YnRvLCcnKQotIiAgICAgY2FsbCBEZWNobygic3ViZnJvbTwiLnN1YmZyb20uIj4gc3VidG88Ii5zdWJ0by4iPiBuZXduYW1lPCIubmV3bmFtZS4iPiIpCi0gICAgZWxzZQotICAgICBjYWxsIGlucHV0c2F2ZSgpCi0gICAgIGxldCBuZXduYW1lPSBpbnB1dCgiTW92aW5nICIub2xkbmFtZS4iIHRvIDogIixvbGRuYW1lKQotICAgICBjYWxsIGlucHV0cmVzdG9yZSgpCi0gICAgIGlmIG5ld25hbWUgPX4gJ15zLycKLSAgICAgIGxldCBzdWJmcm9tID0gc3Vic3RpdHV0ZShuZXduYW1lLCdecy9cKFteL10qXCkvLiovJCcsJ1wxJywnJykKLSAgICAgIGxldCBzdWJ0byAgID0gc3Vic3RpdHV0ZShuZXduYW1lLCdecy9bXi9dKi9cKC4qXCkvJCcsJ1wxJywnJykKLSIgICAgICBjYWxsIERlY2hvKCJzdWJmcm9tPCIuc3ViZnJvbS4iPiBzdWJ0bzwiLnN1YnRvLiI+IG5ld25hbWU8Ii5uZXduYW1lLiI+IikKLSAgICAgIGxldCBuZXduYW1lID0gc3Vic3RpdHV0ZShvbGRuYW1lLHN1YmZyb20sc3VidG8sJycpCi0gICAgIGVuZGlmCi0gICAgZW5kaWYKLSAgICBjYWxsIHJlbmFtZShvbGRuYW1lLG5ld25hbWUpCi0gICBlbmRmb3IKLSAgIGNhbGwgczpOZXRyd1VubWFya0xpc3QoYnVmbnIoIiUiKSxiOm5ldHJ3X2N1cmRpcikKLSAgCi0gIGVsc2UKLQotICAgIiBhdHRlbXB0IHRvIHJlbmFtZSBmaWxlcy9kaXJlY3RvcmllcwotICAgd2hpbGUgY3RyIDw9IGE6bGFzdGxpbmUKLSAgICBleGUgImtlZXBqICIuY3RyCi0KLSAgICAiIHNhbml0eSBjaGVja3MKLSAgICBpZiBsaW5lKCIuIikgPCB3Om5ldHJ3X2Jhbm5lcmNudAotICAgICBsZXQgY3RyPSBjdHIgKyAxCi0gICAgIGNvbnRpbnVlCi0gICAgZW5kaWYKLSAgICBsZXQgY3Vyd29yZD0gczpOZXRyd0dldFdvcmQoKQotICAgIGlmIGN1cndvcmQgPT0gIi4vIiB8fCBjdXJ3b3JkID09ICIuLi8iCi0gICAgIGxldCBjdHI9IGN0ciArIDEKLSAgICAgY29udGludWUKLSAgICBlbmRpZgotCi0gICAga2VlcGogbm9ybSEgMAotICAgIGxldCBvbGRuYW1lPSBzOkNvbXBvc2VQYXRoKGE6cGF0aCxjdXJ3b3JkKQotIiAgIGNhbGwgRGVjaG8oIm9sZG5hbWU8Ii5vbGRuYW1lLiI+IikKLQotICAgIGNhbGwgaW5wdXRzYXZlKCkKLSAgICBsZXQgbmV3bmFtZT0gaW5wdXQoIk1vdmluZyAiLm9sZG5hbWUuIiB0byA6ICIsc3Vic3RpdHV0ZShvbGRuYW1lLCcvKiQnLCcnLCdlJykpCi0gICAgY2FsbCBpbnB1dHJlc3RvcmUoKQotCi0gICAgY2FsbCByZW5hbWUob2xkbmFtZSxuZXduYW1lKQotIiAgIGNhbGwgRGVjaG8oInJlbmFtaW5nIDwiLm9sZG5hbWUuIj4gdG8gPCIubmV3bmFtZS4iPiIpCi0KLSAgICBsZXQgY3RyPSBjdHIgKyAxCi0gICBlbmR3aGlsZQotICBlbmRpZgotCi0gICIgcmVmcmVzaCB0aGUgZGlyZWN0b3J5Ci0iICBjYWxsIERlY2hvKCJyZWZyZXNoIHRoZSBkaXJlY3RvcnkgbGlzdGluZyIpCi0gIGtlZXBqIGNhbGwgczpOZXRyd1JlZnJlc2goMSxzOk5ldHJ3QnJvd3NlQ2hnRGlyKDEsJy4vJykpCi0gIGtlZXBqIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvcykKLQotIiAgY2FsbCBEcmV0KCJOZXRyd0xvY2FsUmVuYW1lIikKLWVuZGZ1bgotCi0iIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIiBzOkxvY2FsRmFzdEJyb3dzZXI6IGhhbmRsZXMgc2V0dGluZyB1cC90YWtpbmcgZG93biBmYXN0IGJyb3dzaW5nIGZvciB0aGUgbG9jYWwgYnJvd3NlciB7e3syCi0iCi0iICAgICBnOm5ldHJ3XyAgICBEaXJlY3RvcnkgSXMKLSIgICAgIGZhc3Ricm93c2UgIExvY2FsICBSZW1vdGUgICAKLSIgIHNsb3cgICAwICAgICAgICAgRCAgICAgIEQgICAgICBEPURlbGV0aW5nIGEgYnVmZmVyIGltcGxpZXMgaXQgd2lsbCBub3QgYmUgcmUtdXNlZCAoc2xvdykKLSIgIG1lZCAgICAxICAgICAgICAgRCAgICAgIEggICAgICBIPUhpZGluZyBhIGJ1ZmZlciBpbXBsaWVzIGl0IG1heSBiZSByZS11c2VkICAgICAgICAoZmFzdCkKLSIgIGZhc3QgICAyICAgICAgICAgSCAgICAgIEggICAgICAKLSIKLSIgIERlbGV0aW5nIGEgYnVmZmVyIG1lYW5zIHRoYXQgaXQgd2lsbCBiZSByZS1sb2FkZWQgd2hlbiBleGFtaW5lZCwgaGVuY2UgInNsb3ciLgotIiAgSGlkaW5nICAgYSBidWZmZXIgbWVhbnMgdGhhdCBpdCB3aWxsIGJlIHJlLXVzZWQgICB3aGVuIGV4YW1pbmVkLCBoZW5jZSAiZmFzdCIuCi0iICAgICAgICAgICAocmUtdXNpbmcgYSBidWZmZXIgbWF5IG5vdCBiZSBhcyBhY2N1cmF0ZSkKLWZ1biEgczpMb2NhbEZhc3RCcm93c2VyKCkKLSIgIGNhbGwgRGZ1bmMoIkxvY2FsRmFzdEJyb3dzZXIoKSBnOm5ldHJ3X2Zhc3Ricm93c2U9Ii5nOm5ldHJ3X2Zhc3Ricm93c2UpCi0KLSAgIiBpbml0aWFsaXplIGJyb3dzZWxpc3QsIGEgbGlzdCBvZiBidWZmZXIgbnVtYmVycyB0aGF0IHRoZSBsb2NhbCBicm93c2VyIGhhcyB1c2VkCi0gIGlmICFleGlzdHMoInM6bmV0cndfYnJvd3NlbGlzdCIpCi0iICAgY2FsbCBEZWNobygiaW5pdGlhbGl6ZSBzOm5ldHJ3X2Jyb3dzZWxpc3QiKQotICAgbGV0IHM6bmV0cndfYnJvd3NlbGlzdD0gW10KLSAgZW5kaWYKLQotICAiIGFwcGVuZCBjdXJyZW50IGJ1ZmZlciB0byBmYXN0YnJvd3NlIGxpc3QKLSAgaWYgZW1wdHkoczpuZXRyd19icm93c2VsaXN0KSB8fCBidWZucigiJSIpID4gczpuZXRyd19icm93c2VsaXN0Wy0xXQotIiAgIGNhbGwgRGVjaG8oImFwcGVuZG5nIGN1cnJlbnQgYnVmZmVyIHRvIGJyb3dzZWxpc3QiKQotICAgY2FsbCBhZGQoczpuZXRyd19icm93c2VsaXN0LGJ1Zm5yKCIlIikpCi0iICAgY2FsbCBEZWNobygiYnJvd3NlbGlzdD0iLnN0cmluZyhzOm5ldHJ3X2Jyb3dzZWxpc3QpKQotICBlbmRpZgotCi0gICIgZW5hYmxlIGF1dG9jbWQgZXZlbnRzIHRvIGhhbmRsZSByZWZyZXNoaW5nL3JlbW92aW5nIGxvY2FsIGJyb3dzZXIgYnVmZmVycwotICAiICAgIElmIGxvY2FsIGJyb3dzZSBidWZmZXIgaXMgY3VycmVudGx5IHNob3dpbmc6IHJlZnJlc2ggaXQKLSAgIiAgICBJZiBsb2NhbCBicm93c2UgYnVmZmVyIGlzIGN1cnJlbnRseSBoaWRkZW4gOiB3aXBlIGl0Ci0gIGlmICFleGlzdHMoInM6bmV0cndfYnJvd3Nlcl9zaGVsbGNtZCIpICYmIGc6bmV0cndfZmFzdGJyb3dzZSA8PSAxCi0iICAgY2FsbCBEZWNobygic2V0dGluZyB1cCBsb2NhbC1icm93c2VyIHNoZWxsIGNvbW1hbmQgcmVmcmVzaCIpCi0gICBsZXQgczpuZXRyd19icm93c2VyX3NoZWxsY21kPSAxCi0gICBhdWdyb3VwIEF1TmV0cndTaGVsbENtZAotICAgIGF1IQotICAgIGlmIChoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW45NSIpIHx8IGhhcygid2luNjQiKSB8fCBoYXMoIndpbjE2IikpCi0iICAgICBjYWxsIERlY2hvKCJhdXRvY21kOiBTaGVsbENtZFBvc3QgKiBjYWxsIHM6TG9jYWxCcm93c2VTaGVsbENtZFJlZnJlc2goKSIpCi0gICAgIGF1IFNoZWxsQ21kUG9zdAkJCSoJY2FsbCBzOkxvY2FsQnJvd3NlU2hlbGxDbWRSZWZyZXNoKCkKLSAgICBlbHNlCi0gICAgIGF1IFNoZWxsQ21kUG9zdCxGb2N1c0dhaW5lZAkqCWNhbGwgczpMb2NhbEJyb3dzZVNoZWxsQ21kUmVmcmVzaCgpCi0iICAgICBjYWxsIERlY2hvKCJhdXRvY21kOiBTaGVsbENtZFBvc3QsRm9jdXNHYWluZWQgKiBjYWxsIHM6TG9jYWxCcm93c2VTaGVsbENtZFJlZnJlc2goKSIpCi0gICAgZW5kaWYKLSAgIGF1Z3JvdXAgRU5ECi0gIGVuZGlmCi0KLSAgIiB1c2VyIG11c3QgaGF2ZSBjaGFuZ2VkIGZhc3Ricm93c2UgdG8gaXRzIGZhc3Qgc2V0dGluZywgc28gcmVtb3ZlCi0gICIgdGhlIGFzc29jaWF0ZWQgYXV0b2NtZCBldmVudHMKLSAgaWYgZzpuZXRyd19mYXN0YnJvd3NlID4gMSAmJiBleGlzdHMoInM6bmV0cndfYnJvd3Nlcl9zaGVsbGNtZCIpCi0iICAgY2FsbCBEZWNobygicmVtb3ZlIEF1TmV0cndTaGVsbENtZCBhdXRjbWQgZ3JvdXAiKQotICAgdW5sZXQgczpuZXRyd19icm93c2VyX3NoZWxsY21kCi0gICBhdWdyb3VwIEF1TmV0cndTaGVsbENtZAotICAgIGF1IQotICAgYXVncm91cCBFTkQKLSAgIGF1Z3JvdXAhIEF1TmV0cndTaGVsbENtZAotICBlbmRpZgotCi0iICBjYWxsIERyZXQoIkxvY2FsRmFzdEJyb3dzZXIgOiBicm93c2VsaXN0PCIuc3RyaW5nKHM6bmV0cndfYnJvd3NlbGlzdCkuIj4iKQotZW5kZnVuCi0KLSIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0iIG5ldHJ3I0ZpbGVVcmxSZWFkOiBoYW5kbGVzIHJlYWRpbmcgZmlsZTovLyogZmlsZXMge3t7MgotIiAgIFNob3VsZCBhY2NlcHQ6ICAgZmlsZTovL2xvY2FsaG9zdC9ldGMvZnN0YWIKLSIgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8vZXRjL2ZzdGFiCi0iICAgICAgICAgICAgICAgICAgICBmaWxlOi8vL2M6L1dJTkRPV1MvY2xvY2suYXZpCi0iICAgICAgICAgICAgICAgICAgICBmaWxlOi8vL2N8L1dJTkRPV1MvY2xvY2suYXZpCi0iICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbG9jYWxob3N0L2M6L1dJTkRPV1MvY2xvY2suYXZpCi0iICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbG9jYWxob3N0L2N8L1dJTkRPV1MvY2xvY2suYXZpCi0iICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYzovZm9vLnR4dAotIiAgICAgICAgICAgICAgICAgICAgZmlsZTovLy9jOi9mb28udHh0Ci0iIGFuZCAlWFggKHdoZXJlIFggaXMgWzAtOWEtZkEtRl0gaXMgY29udmVydGVkIGludG8gYSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gaGV4YWRlY2ltYWwgdmFsdWUKLWZ1biEgbmV0cncjRmlsZVVybFJlYWQoZm5hbWUpCi0iICBjYWxsIERmdW5jKCJuZXRydyNGaWxlVXJsUmVhZChmbmFtZTwiLmE6Zm5hbWUuIj4pIikKLSAgbGV0IGZuYW1lID0gYTpmbmFtZQotICBpZiBmbmFtZSA9fiAnXmZpbGU6Ly9sb2NhbGhvc3QvJwotIiAgIGNhbGwgRGVjaG8oJ2NvbnZlcnRpbmcgZmlsZTovL2xvY2FsaG9zdC8gICAtdG8tICBmaWxlOi8vLycpCi0gICBsZXQgZm5hbWU9IHN1YnN0aXR1dGUoZm5hbWUsJ15maWxlOi8vbG9jYWxob3N0LycsJ2ZpbGU6Ly8vJywnJykKLSIgICBjYWxsIERlY2hvKCJmbmFtZTwiLmZuYW1lLiI+IikKLSAgZW5kaWYKLSAgaWYgKGhhcygid2luMzIiKSB8fCBoYXMoIndpbjk1IikgfHwgaGFzKCJ3aW42NCIpIHx8IGhhcygid2luMTYiKSkKLSAgIGlmIGZuYW1lICA9fiAnXmZpbGU6Ly8vXD1cYVt8Ol0vJwotIiAgICBjYWxsIERlY2hvKCdjb252ZXJ0aW5nIGZpbGU6Ly8vXGF8LyAgIC10by0gIGZpbGU6Ly9cYTovJykKLSAgICBsZXQgZm5hbWUgPSBzdWJzdGl0dXRlKGZuYW1lLCdeZmlsZTovLy9cPVwoXGFcKVt8Ol0vJywnZmlsZTovL1wxOi8nLCcnKQotIiAgICBjYWxsIERlY2hvKCJmbmFtZTwiLmZuYW1lLiI+IikKLSAgIGVuZGlmCi0gIGVuZGlmCi0gIGxldCBmbmFtZTIzOTYgPSBuZXRydyNSRkMyMzk2KGZuYW1lKQotICBsZXQgZm5hbWUyMzk2ZT0gZm5hbWVlc2NhcGUoZm5hbWUyMzk2KQotICBsZXQgcGxhaW5mbmFtZT0gc3Vic3RpdHV0ZShmbmFtZTIzOTYsJ2ZpbGU6Ly9cKC4qXCknLCdcMScsIiIpCi0gIGlmIChoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW45NSIpIHx8IGhhcygid2luNjQiKSB8fCBoYXMoIndpbjE2IikpCi0iICAgY2FsbCBEZWNobygid2luZG93cyBleGNlcHRpb24gZm9yIHBsYWluZm5hbWUiKQotICAgaWYgcGxhaW5mbmFtZSA9fiAnXi9cK1xhOicKLSIgICAgY2FsbCBEZWNobygncmVtb3ZpbmcgbGVhZGluZyAiLyJzJykKLSAgICBsZXQgcGxhaW5mbmFtZT0gc3Vic3RpdHV0ZShwbGFpbmZuYW1lLCdeL1wrXChcYTpcKScsJ1wxJywnJykKLSAgIGVuZGlmCi0gIGVuZGlmCi0iICBjYWxsIERlY2hvKCJmbmFtZTIzOTY8Ii5mbmFtZTIzOTYuIj4iKQotIiAgY2FsbCBEZWNobygicGxhaW5mbmFtZTwiLnBsYWluZm5hbWUuIj4iKQotICBleGUgInNpbCBkb2F1IEJ1ZlJlYWRQcmUgIi5mbmFtZTIzOTZlCi0gIGV4ZSAna2VlcGogciAnLnBsYWluZm5hbWUKLSAgZXhlICdmaWxlISAnLnBsYWluZm5hbWUKLSAga2VlcGogMWQKLSIgIGNhbGwgRGVjaG8oIihGaWxlVXJsUmVhZCkgc2V0bCBub21vZCIpCi0gIHNldGwgbm9tb2QKLSIgIGNhbGwgRGVjaG8oIihGaWxlVXJsUmVhZCkgcm89Ii4mbDpyby4iIG1hPSIuJmw6bWEuIiBtb2Q9Ii4mbDptb2QuIiB3cmFwPSIuJmw6d3JhcC4iIChmaWxlbmFtZTwiLmV4cGFuZCgiJSIpLiI+IHdpbiMiLndpbm5yKCkuIiBmdDwiLiZmdC4iPikiKQotIiAgY2FsbCBEcmV0KCJuZXRydyNGaWxlVXJsUmVhZCIpCi0gIGV4ZSAic2lsIGRvYXUgQnVmUmVhZFBvc3QgIi5mbmFtZTIzOTZlCi1lbmRmdW4KLQotIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgU3VwcG9ydCBGdW5jdGlvbnM6IHt7ezEKIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTg3MzksNyArODk2Myw3IEBACiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBzOk5ldHJ3SW5zdXJlV2luVmFyczogaW5zdXJlIHRoYXQgYSBuZXRydyBidWZmZXIgaGFzIGl0cyB3OiB2YXJpYWJsZXMgaW4gc3BpdGUgb2YgYSB3aW5jbWQgdiBvciBzIHt7ezIKIGZ1biEgczpOZXRyd0luc3VyZVdpblZhcnMoKQotIiAgY2FsbCBEZnVuYygiczpOZXRyd0luc3VyZVdpblZhcnMoKSIpCisiICBjYWxsIERmdW5jKCJzOk5ldHJ3SW5zdXJlV2luVmFycygpIHdpbiMiLndpbm5yKCkpCiAgIGlmICFleGlzdHMoInc6bmV0cndfbGlzdHN0eWxlIikKICAgIGxldCBjdXJidWYgPSBidWZucigiJSIpCiAgICBsZXQgY3Vyd2luID0gd2lubnIoKQpAQCAtODc1Myw3ICs4OTc3LDcgQEAKICAgICBlbmRpZgogICAgIGxldCBpd2luPSBpd2luICsgMQogICAgZW5kd2hpbGUKLSAgIGV4ZSBjdXJidWYuIndpbmNtZCB3IgorICAgZXhlIGN1cndpbi4id2luY21kIHciCiAgICBpZiBleGlzdHMoIndpbnZhcnMiKQogIiAgICBjYWxsIERlY2hvKCJjb3B5aW5nIHcjIi5pd2luLiIgd2luZG93IHZhcmlhYmxlcyB0byB3IyIuY3Vyd2luKQogICAgIGZvciBrIGluIGtleXMod2ludmFycykKQEAgLTg3NjEsNyArODk4NSw3IEBACiAgICAgZW5kZm9yCiAgICBlbmRpZgogICBlbmRpZgotIiAgY2FsbCBEcmV0KCJzOk5ldHJ3SW5zdXJlV2luVmFycyIpCisiICBjYWxsIERyZXQoInM6TmV0cndJbnN1cmVXaW5WYXJzIHdpbiMiLndpbm5yKCkpCiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTg5NzUsNyArOTE5OSw3IEBACiAiICBjYWxsIERmdW5jKCJzOlNldFJleERpcihpc2xvY2FsPSIuYTppc2xvY2FsLiIgZGlybmFtZTwiLmE6ZGlybmFtZS4iPikiKQogICBsZXQgdzpuZXRyd19yZXhkaXIgICA9IGE6ZGlybmFtZQogICBsZXQgdzpuZXRyd19yZXhsb2NhbCA9IGE6aXNsb2NhbAotIiAgY2FsbCBEcmV0KCJzOlNldFJleERpciIpCisiICBjYWxsIERyZXQoInM6U2V0UmV4RGlyIDogd2luIyIud2lubnIoKS4iICIuKGE6aXNsb2NhbD8gImxvY2FsIiA6ICJyZW1vdGUiKS4iIGRpcjogIi5hOmRpcm5hbWUpCiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvbmV0cndTZXR0aW5ncy52aW0gYi9ydW50aW1lL2F1dG9sb2FkL25ldHJ3U2V0dGluZ3MudmltCmluZGV4IDM4ZjcyOTkuLmVmMzYxZGMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvYXV0b2xvYWQvbmV0cndTZXR0aW5ncy52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC9uZXRyd1NldHRpbmdzLnZpbQpAQCAtMTA2LDcgKzEwNiw3IEBACiAgICBwdXQgPSAnbGV0IGc6bmV0cndfYnJvd3NleF92aWV3ZXIgICAgPSAobm90IGRlZmluZWQpJwogICBlbmRpZgogICBwdXQgPSAnbGV0IGc6bmV0cndfY29tcHJlc3MgICAgICAgICAgPSAnLmc6bmV0cndfY29tcHJlc3MKLSAgcHV0ID0gJ2xldCBnOm5ldHJ3X2N1cnNvcmxpbmUgICAgICAgID0gJy5nOm5ldHJ3X2N1cnNvcmxpbmUKKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X2N1cnNvciAgICAgICAgICAgID0gJy5nOm5ldHJ3X2N1cnNvcgogICBsZXQgZGVjb21wcmVzc2xpbmU9IGxpbmUoIiQiKQogICBwdXQgPSdsZXQgZzpuZXRyd19kZWNvbXByZXNzLi4uJwogICBwdXQgPSAnbGV0IGc6bmV0cndfZGlyaGlzdG1heCAgICAgICAgPSAnLmc6bmV0cndfZGlyaGlzdG1heApAQCAtMTI1LDkgKzEyNSw5IEBACiAgIHB1dCA9ICdsZXQgZzpuZXRyd19saXN0X2hpZGUgICAgICAgICA9ICcuZzpuZXRyd19saXN0X2hpZGUKICAgcHV0ID0gJ2xldCBnOm5ldHJ3X2xpc3RzdHlsZSAgICAgICAgID0gJy5nOm5ldHJ3X2xpc3RzdHlsZQogICBwdXQgPSAnbGV0IGc6bmV0cndfbG9jYWxjb3B5Y21kICAgICAgPSAnLmc6bmV0cndfbG9jYWxjb3B5Y21kCi0gIHB1dCA9ICdsZXQgZzpuZXRyd19sb2NhbF9ta2RpciAgICAgICA9ICcuZzpuZXRyd19sb2NhbF9ta2RpcgorICBwdXQgPSAnbGV0IGc6bmV0cndfbG9jYWxta2RpciAgICAgICAgPSAnLmc6bmV0cndfbG9jYWxta2RpcgogICBwdXQgPSAnbGV0IGc6bmV0cndfbG9jYWxtb3ZlY21kICAgICAgPSAnLmc6bmV0cndfbG9jYWxtb3ZlY21kCi0gIHB1dCA9ICdsZXQgZzpuZXRyd19sb2NhbF9ybWRpciAgICAgICA9ICcuZzpuZXRyd19sb2NhbF9ybWRpcgorICBwdXQgPSAnbGV0IGc6bmV0cndfbG9jYWxybWRpciAgICAgICA9ICcuZzpuZXRyd19sb2NhbHJtZGlyCiAgIHB1dCA9ICdsZXQgZzpuZXRyd19tYXhmaWxlbmFtZWxlbiAgICA9ICcuZzpuZXRyd19tYXhmaWxlbmFtZWxlbgogICBwdXQgPSAnbGV0IGc6bmV0cndfbWVudSAgICAgICAgICAgICAgPSAnLmc6bmV0cndfbWVudQogICBwdXQgPSAnbGV0IGc6bmV0cndfbWtkaXJfY21kICAgICAgICAgPSAnLmc6bmV0cndfbWtkaXJfY21kCmRpZmYgLS1naXQgYS9ydW50aW1lL2F1dG9sb2FkL3N5bnRheGNvbXBsZXRlLnZpbSBiL3J1bnRpbWUvYXV0b2xvYWQvc3ludGF4Y29tcGxldGUudmltCmluZGV4IGYzNmM2NjguLjlhMTQ3NGYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvYXV0b2xvYWQvc3ludGF4Y29tcGxldGUudmltCisrKyBiL3J1bnRpbWUvYXV0b2xvYWQvc3ludGF4Y29tcGxldGUudmltCkBAIC0xLDEyICsxLDI4IEBACiAiIFZpbSBjb21wbGV0aW9uIHNjcmlwdAogIiBMYW5ndWFnZTogICAgQWxsIGxhbmd1YWdlcywgdXNlcyBleGlzdGluZyBzeW50YXggaGlnaGxpZ2h0aW5nIHJ1bGVzCiAiIE1haW50YWluZXI6ICBEYXZpZCBGaXNoYnVybiA8ZGZpc2hidXJuIGRvdCB2aW0gYXQgZ21haWwgZG90IGNvbT4KLSIgVmVyc2lvbjogICAgIDguMAotIiBMYXN0IENoYW5nZTogMjAxMSBOb3YgMDIKKyIgVmVyc2lvbjogICAgIDEwLjAKKyIgTGFzdCBDaGFuZ2U6IDIwMTIgT2N0IDIwCiAiIFVzYWdlOiAgICAgICBGb3IgZGV0YWlsZWQgaGVscCwgIjpoZWxwIGZ0LXN5bnRheC1vbW5pIiAKIAogIiBIaXN0b3J5CiAiCisiIFZlcnNpb24gMTAuMAorIiAgICAgQ3ljbGUgdGhyb3VnaCBhbGwgdGhlIGNoYXJhY3RlciByYW5nZXMgc3BlY2lmaWVkIGluIHRoZQorIiAgICAgaXNrZXl3b3JkIG9wdGlvbiBhbmQgYnVpbGQgYSBsaXN0IG9mIHZhbGlkIHdvcmQgc2VwYXJhdG9ycy4KKyIgICAgIFByaW9yIHRvIHRoaXMgY2hhbmdlLCBvbmx5IGFjdHVhbCBjaGFyYWN0ZXJzIHdlcmUgdXNlZCwgCisiICAgICB3aGVyZSBmb3IgZXhhbXBsZSBBU0NJSSAiNDUiID09ICItIi4gIElmICI0NSIgd2VyZSB1c2VkIAorIiAgICAgaW4gaXNrZXl3b3JkIHRoZSBoeXBoZW4gd291bGQgbm90IGJlIHBpY2tlZCB1cC4gIAorIiAgICAgVGhpcyBpbnRyb2R1Y2VzIGEgbmV3IG9wdGlvbiwgc2luY2UgdGhlIGNoYXJhY3RlciByYW5nZXMKKyIgICAgIHNwZWNpZmllZCBjb3VsZCBiZSBtdWx0aWJ5dGU6CisiICAgICAgICAgbGV0IGc6b21uaV9zeW50YXhfdXNlX3NpbmdsZV9ieXRlID0gMQorIiAgICAgVGhpcyBieSBkZWZhdWx0IHdpbGwgb25seSBhbGxvdyBzaW5nbGUgYnl0ZSBBU0NJSSAKKyIgICAgIGNoYXJhY3RlcnMgdG8gYmUgYWRkZWQgYW5kIGFuIGFkZGl0aW9uYWwgY2hlY2sgdG8gZW5zdXJlCisiICAgICB0aGUgY2hhcmF0ZXIgaXMgcHJpbnRhYmxlIChzZWUgZG9jdW1lbnRhdGlvbiBmb3IgaXNwcmludCkuCisiCisiIFZlcnNpb24gOS4wCisiICAgICBBZGQgdGhlIGNoZWNrIGZvciBjcG8uCisiCiAiIFZlcnNpb24gOC4wCiAiICAgICBVcGRhdGVkIFN5bnRheENTeW50YXhHcm91cEl0ZW1zKCkKICIgICAgICAgICAtIFNvbWUgYWRkaXRpb25hbCBzeW50YXggaXRlbXMgd2VyZSBhbHNvIGFsbG93ZWQKQEAgLTUwLDcgKzY2LDExIEBACiBpZiBleGlzdHMoJ2c6bG9hZGVkX3N5bnRheF9jb21wbGV0aW9uJykKICAgICBmaW5pc2ggCiBlbmRpZgotbGV0IGc6bG9hZGVkX3N5bnRheF9jb21wbGV0aW9uID0gODAKK2xldCBnOmxvYWRlZF9zeW50YXhfY29tcGxldGlvbiA9IDEwMAorCisiIFR1cm4gb24gc3VwcG9ydCBmb3IgbGluZSBjb250aW51YXRpb25zIHdoZW4gY3JlYXRpbmcgdGhlIHNjcmlwdAorbGV0IHM6Y3BvX3NhdmUgPSAmY3BvCitzZXQgY3BvJnZpbQogCiAiIFNldCBpZ25vcmVjYXNlIHRvIHRoZSBmdHBsdWdpbiBzdGFuZGFyZAogIiBUaGlzIGlzIHRoZSBkZWZhdWx0IHNldHRpbmcsIGJ1dCBpZiB5b3UgZGVmaW5lIGEgYnVmZmVyIGxvY2FsCkBAIC02Nyw2ICs4NywxOCBAQAogICAgIGxldCBnOm9tbmlfc3ludGF4X3VzZV9pc2tleXdvcmQgPSAxCiBlbmRpZgogCisiIFdoZW4gdXNpbmcgaXNrZXl3b3JkLCB0aGlzIHNldHRpbmcgY29udHJvbHMgd2hldGhlciB0aGUgY2hhcmFjdGVycworIiBzaG91bGQgYmUgbGltaXRlZCB0byBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXJzLgoraWYgIWV4aXN0cygnZzpvbW5pX3N5bnRheF91c2Vfc2luZ2xlX2J5dGUnKQorICAgIGxldCBnOm9tbmlfc3ludGF4X3VzZV9zaW5nbGVfYnl0ZSA9IDEKK2VuZGlmCisKKyIgV2hlbiB1c2luZyBpc2tleXdvcmQsIHRoaXMgc2V0dGluZyBjb250cm9scyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzCisiIHNob3VsZCBiZSBsaW1pdGVkIHRvIHNpbmdsZSBieXRlIGNoYXJhY3RlcnMuCitpZiAhZXhpc3RzKCdnOm9tbmlfc3ludGF4X3VzZV9pc2tleXdvcmRfbnVtZXJpYycpCisgICAgbGV0IGc6b21uaV9zeW50YXhfdXNlX2lza2V5d29yZF9udW1lcmljID0gMQorZW5kaWYKKwogIiBPbmx5IGRpc3BsYXkgaXRlbXMgaW4gdGhlIGNvbXBsZXRpb24gd2luZG93IHRoYXQgYXJlIGF0IGxlYXN0CiAiIHRoaXMgbWFueSBjaGFyYWN0ZXJzIGluIGxlbmd0aC4KICIgVGhpcyBpcyB0aGUgZGVmYXVsdCBzZXR0aW5nLCBidXQgaWYgeW91IGRlZmluZSBhIGJ1ZmZlciBsb2NhbApAQCAtNDQ2LDE5ICs0NzgsNjYgQEAKICAgICAgICAgICAgICIgVGhpcyB3aWxsIHJlcGxhY2Ugbm9uLXdvcmQgY2hhcmFjdGVycyB3aXRoIHNwYWNlcy4KICAgICAgICAgICAgIGxldCBzeW5fbGlzdCA9IHN1YnN0aXR1dGUoIHN5bl9saXN0LCAnW14wLTlBLVphLXpfIF0nLCAnICcsICdnJyApCiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxldCBhY2NlcHRfY2hhcnMgPSAnLCcuJmlza2V5d29yZC4nLCcKLSAgICAgICAgICAgICIgUmVtb3ZlIGFsbCBjaGFyYWN0ZXIgcmFuZ2VzCi0gICAgICAgICAgICAiIGxldCBhY2NlcHRfY2hhcnMgPSBzdWJzdGl0dXRlKGFjY2VwdF9jaGFycywgJyxbXixdXCstW14sXVwrLCcsICcsJywgJ2cnKQotICAgICAgICAgICAgbGV0IGFjY2VwdF9jaGFycyA9IHN1YnN0aXR1dGUoYWNjZXB0X2NoYXJzLCAnLFxAPD1bXixdXCstW14sXVwrLCcsICcnLCAnZycpCi0gICAgICAgICAgICAiIFJlbW92ZSBhbGwgbnVtZXJpYyBzcGVjaWZpY2F0aW9ucwotICAgICAgICAgICAgIiBsZXQgYWNjZXB0X2NoYXJzID0gc3Vic3RpdHV0ZShhY2NlcHRfY2hhcnMsICcsXGRcey19LCcsICcsJywgJ2cnKQotICAgICAgICAgICAgbGV0IGFjY2VwdF9jaGFycyA9IHN1YnN0aXR1dGUoYWNjZXB0X2NoYXJzLCAnLFxAPD1cZFx7LX0sJywgJycsICdnJykKLSAgICAgICAgICAgICIgUmVtb3ZlIGFsbCBjb21tYXMKLSAgICAgICAgICAgIGxldCBhY2NlcHRfY2hhcnMgPSBzdWJzdGl0dXRlKGFjY2VwdF9jaGFycywgJywnLCAnJywgJ2cnKQotICAgICAgICAgICAgIiBFc2NhcGUgc3BlY2lhbCByZWdleCBjaGFyYWN0ZXJzCi0gICAgICAgICAgICBsZXQgYWNjZXB0X2NoYXJzID0gZXNjYXBlKGFjY2VwdF9jaGFycywgJ1xcLy4qJF5+W10nICkKLSAgICAgICAgICAgICIgUmVtb3ZlIGFsbCBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBhY2NlcHRhYmxlCi0gICAgICAgICAgICBsZXQgc3luX2xpc3QgPSBzdWJzdGl0dXRlKCBzeW5fbGlzdCwgJ1teMC05QS1aYS16XyAnLmFjY2VwdF9jaGFycy4nXScsICcgJywgJ2cnICkKKyAgICAgICAgICAgIGlmIGc6b21uaV9zeW50YXhfdXNlX2lza2V5d29yZF9udW1lcmljID09IDEKKyAgICAgICAgICAgICAgICAiIGlza2V5d29yZCBjYW4gY29udGFpbiB2YWx1ZSBsaWtlIHRoaXMKKyAgICAgICAgICAgICAgICAiIDM4LDQyLDQzLDQ1LDQ3LTU4LDYwLTYyLDY0LTkwLDk3LTEyMixfLCssLSwqLC8sJSw8LD0sPiw6LCQsPywhLEAtQCw5NAorICAgICAgICAgICAgICAgICIgTnVtZXJpYyB2YWx1ZXMgY29udmVydCB0byB0aGVpciBBU0NJSSBlcXVpdmFsZW50IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICIgbnIyY2hhcigpIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICIgICAgICYgICAgICAgMzgKKyAgICAgICAgICAgICAgICAiICAgICAqICAgICAgIDQyIAorICAgICAgICAgICAgICAgICIgICAgICsgICAgICAgNDMKKyAgICAgICAgICAgICAgICAiICAgICAtICAgICAgIDQ1IAorICAgICAgICAgICAgICAgICIgICAgIF4gICAgICAgOTQKKyAgICAgICAgICAgICAgICAiIEl0ZXJhdGUgdGhyb3VnaCBhbGwgbnVtZXJpYyBzcGVjaWZpY2F0aW9ucyBhbmQgY29udmVydCB0aG9zZSAKKyAgICAgICAgICAgICAgICAiIHRvIHRoZWlyIGFzY2lpIGVxdWl2YWxlbnQgZW5zdXJpbmcgdGhlIGNoYXJhY3RlciBpcyBwcmludGFibGUuCisgICAgICAgICAgICAgICAgIiBJZiBzbywgYWRkIGl0IHRvIHRoZSBsaXN0LgorICAgICAgICAgICAgICAgIGxldCBhY2NlcHRlZF9jaGFycyA9ICcnCisgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gc3BsaXQoJmlza2V5d29yZCwgJywnKQorICAgICAgICAgICAgICAgICAgICBpZiBpdGVtID1+ICctJworICAgICAgICAgICAgICAgICAgICAgICAgIiBUaGlzIGlzIGEgY2hhcmFjdGVyIHJhbmdlIChpZSA0Ny01OCksIAorICAgICAgICAgICAgICAgICAgICAgICAgIiBjeWNsZSB0aHJvdWdoIGVhY2ggY2hhcmFjdGVyIHdpdGhpbiB0aGUgcmFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBbYjpzdGFydCwgYjplbmRdID0gc3BsaXQoaXRlbSwgJy0nKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJhbmdlX2l0ZW0gaW4gcmFuZ2UoIGI6c3RhcnQsIGI6ZW5kICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByYW5nZV9pdGVtIDw9IDEyNyB8fCBnOm9tbmlfc3ludGF4X3VzZV9zaW5nbGVfYnl0ZSA9PSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5yMmNoYXIocmFuZ2VfaXRlbSkgPX4gJ1xwJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjY2VwdGVkX2NoYXJzID0gYWNjZXB0ZWRfY2hhcnMgLiBucjJjaGFyKHJhbmdlX2l0ZW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZGZvcgorICAgICAgICAgICAgICAgICAgICBlbHNlaWYgaXRlbSA9fiAnXlxkXCskJworICAgICAgICAgICAgICAgICAgICAgICAgIiBPbmx5IG51bWVyaWMsIHRyYW5zbGF0ZSB0byBhIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbSA8IDEyNyB8fCBnOm9tbmlfc3ludGF4X3VzZV9zaW5nbGVfYnl0ZSA9PSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbnIyY2hhcihpdGVtKSA9fiAnXHAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY2NlcHRlZF9jaGFycyA9IGFjY2VwdGVkX2NoYXJzIC4gbnIyY2hhcihpdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICBlbmRpZgorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyMm5yKGl0ZW0pIDwgMTI3IHx8IGc6b21uaV9zeW50YXhfdXNlX3NpbmdsZV9ieXRlID09IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtID1+ICdccCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjY2VwdGVkX2NoYXJzID0gYWNjZXB0ZWRfY2hhcnMgLiBpdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZGlmCisgICAgICAgICAgICAgICAgICAgIGVuZGlmCisgICAgICAgICAgICAgICAgZW5kZm9yCisgICAgICAgICAgICAgICAgIiBFc2NhcGUgc3BlY2lhbCByZWdleCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgbGV0IGFjY2VwdGVkX2NoYXJzID0gZXNjYXBlKGFjY2VwdGVkX2NoYXJzLCAnXFwvLiokXn5bXScgKQorICAgICAgICAgICAgICAgICIgUmVtb3ZlIGFsbCBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBhY2NlcHRhYmxlCisgICAgICAgICAgICAgICAgbGV0IHN5bl9saXN0ID0gc3Vic3RpdHV0ZSggc3luX2xpc3QsICdbXkEtWmEteicuYWNjZXB0ZWRfY2hhcnMuJ10nLCAnICcsICdnJyApCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGV0IGFjY2VwdF9jaGFycyA9ICcsJy4maXNrZXl3b3JkLicsJworICAgICAgICAgICAgICAgICIgUmVtb3ZlIGFsbCBjaGFyYWN0ZXIgcmFuZ2VzCisgICAgICAgICAgICAgICAgIiBsZXQgYWNjZXB0X2NoYXJzID0gc3Vic3RpdHV0ZShhY2NlcHRfY2hhcnMsICcsW14sXVwrLVteLF1cKywnLCAnLCcsICdnJykKKyAgICAgICAgICAgICAgICBsZXQgYWNjZXB0X2NoYXJzID0gc3Vic3RpdHV0ZShhY2NlcHRfY2hhcnMsICcsXEA8PVteLF1cKy1bXixdXCssJywgJycsICdnJykKKyAgICAgICAgICAgICAgICAiIFJlbW92ZSBhbGwgbnVtZXJpYyBzcGVjaWZpY2F0aW9ucworICAgICAgICAgICAgICAgICIgbGV0IGFjY2VwdF9jaGFycyA9IHN1YnN0aXR1dGUoYWNjZXB0X2NoYXJzLCAnLFxkXHstfSwnLCAnLCcsICdnJykKKyAgICAgICAgICAgICAgICBsZXQgYWNjZXB0X2NoYXJzID0gc3Vic3RpdHV0ZShhY2NlcHRfY2hhcnMsICcsXEA8PVxkXHstfSwnLCAnJywgJ2cnKQorICAgICAgICAgICAgICAgICIgUmVtb3ZlIGFsbCBjb21tYXMKKyAgICAgICAgICAgICAgICBsZXQgYWNjZXB0X2NoYXJzID0gc3Vic3RpdHV0ZShhY2NlcHRfY2hhcnMsICcsJywgJycsICdnJykKKyAgICAgICAgICAgICAgICAiIEVzY2FwZSBzcGVjaWFsIHJlZ2V4IGNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICBsZXQgYWNjZXB0X2NoYXJzID0gZXNjYXBlKGFjY2VwdF9jaGFycywgJ1xcLy4qJF5+W10nICkKKyAgICAgICAgICAgICAgICAiIFJlbW92ZSBhbGwgY2hhcmFjdGVycyB0aGF0IGFyZSBub3QgYWNjZXB0YWJsZQorICAgICAgICAgICAgICAgIGxldCBzeW5fbGlzdCA9IHN1YnN0aXR1dGUoIHN5bl9saXN0LCAnW14wLTlBLVphLXpfJy5hY2NlcHRfY2hhcnMuJ10nLCAnICcsICdnJyApCisgICAgICAgICAgICBlbmRpZgogICAgICAgICBlbmRpZgogCiAgICAgICAgIGlmIGI6b21uaV9zeW50YXhfbWluaW11bV9sZW5ndGggPiAwCkBAIC00NzEsMyArNTUwLDI3IEBACiAKICAgICByZXR1cm4gc3luX2xpc3QKIGVuZGZ1bmN0aW9uCisKK2Z1bmN0aW9uISBPbW5pU3ludGF4U2hvd0NoYXJzKHNwZWMpCisgIGxldCByZXN1bHQgPSBbXQorICBmb3IgaXRlbSBpbiBzcGxpdChhOnNwZWMsICcsJykKKyAgICBpZiBsZW4oaXRlbSkgPiAxCisgICAgICBpZiBpdGVtID09ICdALUAnCisgICAgICAgIGNhbGwgYWRkKHJlc3VsdCwgY2hhcjJucihpdGVtKSkKKyAgICAgIGVsc2UKKyAgICAgICAgY2FsbCBleHRlbmQocmVzdWx0LCBjYWxsKCdyYW5nZScsIHNwbGl0KGl0ZW0sICctJykpKQorICAgICAgZW5kaWYKKyAgICBlbHNlCisgICAgICBpZiBpdGVtID09ICdAJyAgIiBhc3N1bWUgdGhpcyBpcyBbQS1aYS16XQorICAgICAgICBmb3IgW2MxLCBjMl0gaW4gW1snQScsICdaJ10sIFsnYScsICd6J11dCisgICAgICAgICAgY2FsbCBleHRlbmQocmVzdWx0LCByYW5nZShjaGFyMm5yKGMxKSwgY2hhcjJucihjMikpKQorICAgICAgICBlbmRmb3IKKyAgICAgIGVsc2UKKyAgICAgICAgY2FsbCBhZGQocmVzdWx0LCBjaGFyMm5yKGl0ZW0pKQorICAgICAgZW5kaWYKKyAgICBlbmRpZgorICBlbmRmb3IKKyAgcmV0dXJuIGpvaW4obWFwKHJlc3VsdCwgJ25yMmNoYXIodjp2YWwpJyksICcsICcpCitlbmRmdW5jdGlvbgorbGV0ICZjcG8gPSBzOmNwb19zYXZlCit1bmxldCBzOmNwb19zYXZlCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9jaGFuZ2UudHh0IGIvcnVudGltZS9kb2MvY2hhbmdlLnR4dAppbmRleCAyMmVmZjcwLi5kNWYxOWE2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9jaGFuZ2UudHh0CisrKyBiL3J1bnRpbWUvZG9jL2NoYW5nZS50eHQKQEAgLTEsNCArMSw0IEBACi0qY2hhbmdlLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDEyIEF1ZyAwOAorKmNoYW5nZS50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMiBOb3YgMDIKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTU5OCw4ICs1OTgsMTEgQEAKIAkJCXRoZSBmbGFncy4KIAogCQkJCQkJCQkqZyYqCi1nJgkJCVN5bm9ueW0gZm9yIGA6JXMvL34vJmAgKHJlcGVhdCBsYXN0IHN1YnN0aXR1dGUgb24gYWxsCi0JCQlsaW5lcyB3aXRoIHRoZSBzYW1lIGZsYWdzKS4KK2cmCQkJU3lub255bSBmb3IgYDolcy8vfi8mYCAocmVwZWF0IGxhc3Qgc3Vic3RpdHV0ZSB3aXRoCisJCQlsYXN0IHNlYXJjaCBwYXR0ZXJuIG9uIGFsbCBsaW5lcyB3aXRoIHRoZSBzYW1lIGZsYWdzKS4KKwkJCUZvciBleGFwbGUsIHdoZW4geW91IGZpcnN0IGRvIGEgc3Vic3RpdHV0aW9uIHdpdGgKKwkJCWA6cy9wYXR0ZXJuL3JlcGwvZmxhZ3NgIGFuZCB0aGVuIGAvc2VhcmNoYCBmb3IKKwkJCXNvbWV0aGluZyBlbHNlLCBgZyZgIHdpbGwgZG8gYDolcy9zZWFyY2gvcmVwbC9mbGFnc2AuCiAJCQlNbmVtb25pYzogZ2xvYmFsIHN1YnN0aXR1dGUuIHtub3QgaW4gVml9CiAKIAkJCQkJCSo6c25vbWFnaWMqICo6c25vKgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZXZhbC50eHQgYi9ydW50aW1lL2RvYy9ldmFsLnR4dAppbmRleCBmMTA1Y2YxLi5iZjg5ZWU2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9ldmFsLnR4dAorKysgYi9ydW50aW1lL2RvYy9ldmFsLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpldmFsLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDEyIE9jdCAyMQorKmV2YWwudHh0KglGb3IgVmltIHZlcnNpb24gNy4zLiAgTGFzdCBjaGFuZ2U6IDIwMTIgTm92IDE0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTU0ODMsNyArNTQ4Myw4IEBACiAJCWVtcHR5IGVhY2ggd2hpdGUtc2VwYXJhdGVkIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYmVjb21lcyBhbgogCQlpdGVtLgogCQlPdGhlcndpc2UgdGhlIHN0cmluZyBpcyBzcGxpdCB3aGVyZSB7cGF0dGVybn0gbWF0Y2hlcywKLQkJcmVtb3ZpbmcgdGhlIG1hdGNoZWQgY2hhcmFjdGVycy4KKwkJcmVtb3ZpbmcgdGhlIG1hdGNoZWQgY2hhcmFjdGVycy4gJ2lnbm9yZWNhc2UnIGlzIG5vdCB1c2VkCisJCWhlcmUsIGFkZCBcYyB0byBpZ25vcmUgY2FzZS4gfC9cY3wKIAkJV2hlbiB0aGUgZmlyc3Qgb3IgbGFzdCBpdGVtIGlzIGVtcHR5IGl0IGlzIG9taXR0ZWQsIHVubGVzcyB0aGUKIAkJe2tlZXBlbXB0eX0gYXJndW1lbnQgaXMgZ2l2ZW4gYW5kIGl0J3Mgbm9uLXplcm8uCiAJCU90aGVyIGVtcHR5IGl0ZW1zIGFyZSBrZXB0IHdoZW4ge3BhdHRlcm59IG1hdGNoZXMgYXQgbGVhc3Qgb25lCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pZl9wZXJsLnR4dCBiL3J1bnRpbWUvZG9jL2lmX3BlcmwudHh0CmluZGV4IGE3NGQ4ODAuLjA1YjhiNGUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2lmX3BlcmwudHh0CisrKyBiL3J1bnRpbWUvZG9jL2lmX3BlcmwudHh0CkBAIC0xLDQgKzEsNCBAQAotKmlmX3BlcmwudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMiBBdWcgMDIKKyppZl9wZXJsLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4zLiAgTGFzdCBjaGFuZ2U6IDIwMTIgT2N0IDI1CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IFN2ZW4gVmVyZG9vbGFlZ2UKQEAgLTE3NSw3ICsxNzUsOCBAQAogVklNOjpEb0NvbW1hbmQoe2NtZH0pCUV4ZWN1dGVzIEV4IGNvbW1hbmQge2NtZH0uCiAKIAkJCQkJCQkqcGVybC1FdmFsKgotVklNOjpFdmFsKHtleHByfSkJRXZhbHVhdGVzIHtleHByfSBhbmQgcmV0dXJucyAoc3VjY2VzcywgdmFsKS4KK1ZJTTo6RXZhbCh7ZXhwcn0pCUV2YWx1YXRlcyB7ZXhwcn0gYW5kIHJldHVybnMgKHN1Y2Nlc3MsIHZhbHVlKSBpbiBsaXN0IAorCQkJY29udGV4dCBvciBqdXN0IHZhbHVlIGluIHNjYWxhciBjb250ZXh0LgogCQkJc3VjY2Vzcz0xIGluZGljYXRlcyB0aGF0IHZhbCBjb250YWlucyB0aGUgdmFsdWUgb2YKIAkJCXtleHByfTsgc3VjY2Vzcz0wIGluZGljYXRlcyBhIGZhaWx1cmUgdG8gZXZhbHVhdGUKIAkJCXRoZSBleHByZXNzaW9uLiAgJ0B4JyByZXR1cm5zIHRoZSBjb250ZW50cyBvZiByZWdpc3RlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAppbmRleCA1M2Q0ZThhLi5hNDM5MjM0IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAorKysgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dApAQCAtNzQ5Niw3ICs3NDk2LDcgQEAKIAlGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGZlYXR1cmUgc2VlIHx1bmRvLXBlcnNpc3RlbmNlfC4KIAlUaGUgdW5kbyBmaWxlIGlzIG5vdCByZWFkIHdoZW4gJ3VuZG9yZWxvYWQnIGNhdXNlcyB0aGUgYnVmZmVyIGZyb20KIAliZWZvcmUgYSByZWxvYWQgdG8gYmUgc2F2ZWQgZm9yIHVuZG8uCi0JV0FSTklORzogdGhpcyBpcyBhIHZlcnkgbmV3IGZlYXR1cmUuICBVc2UgYXQgeW91ciBvd24gcmlzayEKKwlXaGVuICd1bmRvZmlsZScgaXMgdHVybmVkIG9mZiB0aGUgdW5kbyBmaWxlIGlzIE5PVCBkZWxldGVkLgogCiAJCQkJCQkqJ3VuZG9sZXZlbHMnKiAqJ3VsJyoKICd1bmRvbGV2ZWxzJyAndWwnCW51bWJlcgkoZGVmYXVsdCAxMDAsIDEwMDAgZm9yIFVuaXgsIFZNUywKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dCBiL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dAppbmRleCAxNDJmMDhmLi5jMTdjYTVmIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9waV9uZXRydy50eHQKKysrIGIvcnVudGltZS9kb2MvcGlfbmV0cncudHh0CkBAIC0xLDQgKzEsNCBAQAotKnBpX25ldHJ3LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMiBBcHIgMDUKKypwaV9uZXRydy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4zLiAgTGFzdCBjaGFuZ2U6IDIwMTIgT2N0IDI1CiAKIAkgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAkgICAgTkVUUlcgUkVGRVJFTkNFIE1BTlVBTCAgICBieSBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4KQEAgLTE0Myw3ICsxNDMsNyBAQAogV2luZG93cycgZnRwIGRvZXNuJ3Qgc3VwcG9ydCAubmV0cmM7IGhvd2V2ZXIsIG9uZSBtYXkgaGF2ZSBpbiBvbmUncyAudmltcmM6ICA+CiAKIAlsZXQgZzpuZXRyd19mdHBfY21kPSAnYzpcV2luZG93c1xTeXN0ZW0zMlxmdHAgLXM6QzpcVXNlcnNcTXlzZWxmXE1BQ0hJTkUnCi08CQorPAogTmV0cncgd2lsbCBzdWJzdGl0dXRlIHRoZSBob3N0J3MgbWFjaGluZSBuYW1lIGZvciBNQUNISU5FIGZyb20gdGhlIHVybCBpdCBpcwogYXR0ZW1wdGluZyB0byBvcGVuLCBhbmQgc28gb25lIG1heSBzcGVjaWZ5ID4KIAl1c2VyaWQKQEAgLTIwOSw3ICsyMDksNyBAQAogCWRlZmF1bHQsIHRoZSBvcHRpb24gYXJndW1lbnRzIGZvciB0aGUgaHR0cC1oYW5kbGluZyBjb21tYW5kcyBhcmU6ID4KIAogCQkgICAgZWxpbmtzIDogIi1zb3VyY2UgPiIKLQkJICAgIGxpbmtzICA6ICItc291cmNlID4iCisJCSAgICBsaW5rcyAgOiAiLWR1bXAgPiIKIAkJICAgIGN1cmwgICA6ICItbyIKIAkJICAgIHdnZXQgICA6ICItcSAtTyIKIAkJICAgIGZldGNoICA6ICItbyIKQEAgLTEwNzIsNiArMTA3Miw3IEBACiAJICAgdglFbnRlciB0aGUgZmlsZS9kaXJlY3RvcnkgdW5kZXIgdGhlIGN1cnNvciBpbiBhIG5ldyAgIHxuZXRydy12fAogCQlicm93c2VyIHdpbmRvdy4gIEEgdmVydGljYWwgc3BsaXQgaXMgdXNlZC4KIAkgICB4CVZpZXcgZmlsZSB3aXRoIGFuIGFzc29jaWF0ZWQgcHJvZ3JhbSAgICAgICAgICAgICAgICAgfG5ldHJ3LXh8CisJICAgWAlFeGVjdXRlIGZpbGVuYW1lIHVuZGVyIGN1cnNvciB2aWEgfHN5c3RlbSgpfCAgICAgICAgICAgfG5ldHJ3LVh8CiAKIAkgICAlCU9wZW4gYSBuZXcgZmlsZSBpbiBuZXRydydzIGN1cnJlbnQgZGlyZWN0b3J5ICAgICAgICAgfG5ldHJ3LSV8CiAKQEAgLTE1ODksNiArMTU5MCwxNSBAQAogQXNzb2NpYXRlZCBzZXR0aW5nIHZhcmlhYmxlczogfGc6bmV0cndfc29ydF9zZXF1ZW5jZXwgfGc6bmV0cndfc29ydF9vcHRpb25zfAogCiAKK0VYRUNVVElORyBGSUxFIFVOREVSIENVUlNPUiBWSUEgU1lTVEVNKCkJCQkqbmV0cnctWCoKKworUHJlc3NpbmcgWCB3aGlsZSB0aGUgY3Vyc29yIGlzIGF0b3AgYW4gZXhlY3V0YWJsZSBmaWxlIHdpbGwgeWllbGQgYSBwcm9tcHQKK3VzaW5nIHRoZSBmaWxlbmFtZSBhc2tpbmcgZm9yIGFueSBhcmd1bWVudHMuICBVcG9uIHByZXNzaW5nIGEgW3JldHVybl0sIG5ldHJ3Cit3aWxsIHRoZW4gY2FsbCB8c3lzdGVtKCl8IHdpdGggdGhhdCBjb21tYW5kIGFuZCBhcmd1bWVudHMuICBUaGUgcmVzdWx0IHdpbGwKK2JlIGRpc3BsYXllZCBieSB8OmVjaG9tc2d8LCBhbmQgc28gfDptZXNzYWdlc3wgd2lsbCByZXBlYXQgZGlzcGxheSBvZiB0aGUKK3Jlc3VsdC4gIEFuc2kgZXNjYXBlIHNlcXVlbmNlcyB3aWxsIGJlIHN0cmlwcGVkIG91dC4KKworCiBGT1JDSU5HIFRSRUFUTUVOVCBBUyBBIEZJTEUgT1IgRElSRUNUT1JZCSpuZXRydy1nZCogKm5ldHJ3LWdmKiB7e3syCiAKIFJlbW90ZSBzeW1ib2xpYyBsaW5rcyAoaWUuIHRob3NlIGxpc3RlZCB2aWEgc3NoIG9yIGZ0cCkgYXJlIHByb2JsZW1hdGljCkBAIC0xNTk2LDEwICsxNjA2LDEwIEBACiBkaXJlY3RvcnkuCiAKIFRvIGZvcmNlIHRyZWF0bWVudCBhcyBhIGZpbGU6IHVzZSA+Ci0JZ2QKKwlnZgogPAogVG8gZm9yY2UgdHJlYXRtZW50IGFzIGEgZGlyZWN0b3J5OiB1c2UgPgotCWdmCisJZ2QKIDwKIAogR09JTkcgVVAJCQkJCQkJKm5ldHJ3LS0qIHt7ezIKQEAgLTE5NTcsNyArMTk2Nyw3IEBACiBuZXRydyB3aWxsIHVzZSBzc2ggKHNlZSB8ZzpuZXRyd19zc2hfY21kfCksIGFuZCBzbyBzc2ggbXVzdCBiZSBhdmFpbGFibGUgZm9yCiB0aGlzIHRvIHdvcmsgb24gcmVtb3RlIHN5c3RlbXMuICBGb3IgeW91ciBsb2NhbCBzeXN0ZW0sIHNlZSB8Y3RhZ3N8IG9uIGhvdyB0bwogZ2V0IGEgdmVyc2lvbi4gIEkgbXlzZWxmIHVzZSBoZHJ0YWdzLCBjdXJyZW50bHkgYXZhaWxhYmxlIGF0Ci1odHRwOi8vbXlzaXRlLnZlcml6b24ubmV0L2FzdHJvbmF1dC9zcmMvaW5kZXguaHRtbCAsIGFuZCBoYXZlID4KK2h0dHA6Ly93d3cuZHJjaGlwLm9yZy9hc3Ryb25hdXQvc3JjL2luZGV4Lmh0bWwgLCBhbmQgaGF2ZSA+CiAKIAlsZXQgZzpuZXRyd19jdGFncz0gImhkcnRhZyIKIDwKQEAgLTIwOTMsNiArMjEwMyw5IEBACiAJCQkJICAgICBoaXN0b3J5LgogCQkJCSAgICAgKHJlbGF0ZWQ6IHxuZXRydy1xYnwgfG5ldHJ3LXV8IHxuZXRydy1VfCkKIAorICAqZzpuZXRyd19keW5hbWljX21heGZpbGVuYW1lbGVuKiA9MzI6IGVuYWJsZXMgZHluYW1pYyBkZXRlcm1pbmF0aW9uIG9mCisJCQkJICAgIHxnOm5ldHJ3X21heGZpbGVuYW1lbGVufCwgd2hpY2ggYWZmZWN0cworCQkJCSAgICBsb2NhbCBmaWxlIGxvbmcgbGlzdGluZy4KICAgKmc6bmV0cndfZXJyb3JsdmwqCQk9MDogZXJyb3IgbGV2ZWxzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bwogCQkJCSAgICB0aGlzIGFyZSBwZXJtaXR0ZWQgdG8gYmUgZGlzcGxheWVkCiAJCQkJICAgIDA6IG5vdGVzCkBAIC0yODQzLDEzICsyODU2LDEzIEBACiAKIAkxLiBHZXQgdGhlIDxEZWNoby52aW0+IHNjcmlwdCwgYXZhaWxhYmxlIGFzOgogCi0JICAgICBodHRwOi8vbXlzaXRlLnZlcml6b24ubmV0L2FzdHJvbmF1dC92aW0vaW5kZXguaHRtbCNERUNITworCSAgICAgaHR0cDovL3d3dy5kcmNoaXAub3JnL2FzdHJvbmF1dC92aW0vaW5kZXguaHRtbCNERUNITwogCSAgIG9yCiAJICAgICBodHRwOi8vdmltLnNvdXJjZWZvcmdlLm5ldC9zY3JpcHRzL3NjcmlwdC5waHA/c2NyaXB0X2lkPTEyMAogCiAJICBJdCBub3cgY29tZXMgYXMgYSAidmltYmFsbCI7IGlmIHlvdSdyZSB1c2luZyB2aW0gNy4wIG9yIGVhcmxpZXIsCiAJICB5b3UnbGwgbmVlZCB0byB1cGRhdGUgdmltYmFsbCwgdG9vLiAgU2VlCi0JICAgICBodHRwOi8vbXlzaXRlLnZlcml6b24ubmV0L2FzdHJvbmF1dC92aW0vaW5kZXguaHRtbCNWSU1CQUxMCisJICAgICBodHRwOi8vd3d3LmRyY2hpcC5vcmcvYXN0cm9uYXV0L3ZpbS9pbmRleC5odG1sI1ZJTUJBTEwKIAogCTIuIEVkaXQgdGhlIDxuZXRydy52aW0+IGZpbGUgYnkgdHlwaW5nOiA+CiAKQEAgLTI4ODIsNTcgKzI4OTUsNzcgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogMTIuIEhpc3RvcnkJCQkJCQkqbmV0cnctaGlzdG9yeSoge3t7MQogCi0JdjE0NTogQXByIDA1LCAyMDEyICogbW92ZWQgc29tZSBjb21tYW5kIGZyb20gYSBnOm5ldHJ3X2xvY2FsXy4uLgotCQkJICAgICBmb3JtYXQgdG8gZzpuZXR3cl9sb2NhbC4uLiBmb3JtYXQKLQkJCSAgICogaW5jbHVkZWQgc29tZSBOT1RFIGxldmVsIG1lc3NhZ2VzIGFib3V0Ci0JCQkgICAgIGNvbW1hbmRzIHRoYXQgYXJlbid0IGV4ZWN1dGFibGUKLQkJCSAgICogfGc6bmV0cndfZXJyb3Jsdmx8IChkZWZhdWx0OiBOT1RFPTApCi0JCQkgICAgIG9wdGlvbiBpbnRyb2R1Y2VkCi0JdjE0NDogTWFyIDEyLCAyMDEyICogd2hlbiB8Q1RSTC1XX3N8IG9yIHxDVFJMLVdfdnwgYXJlIHVzZWQsCi0JCQkgICAgIG9yIHRoZWlyIHdpbmNtZCBlcXVpdmFsZW50cywgb24gYSBuZXRydwotCQkJICAgICBidWZmZXIsIHRoZSBuZXRydydzIHc6IHZhcmlhYmxlcyB3ZXJlCi0JCQkgICAgIG5vdCBjb3BpZWQgb3Zlci4gIEZpeGVkLgotCSAgICAgIE1hciAxMywgMjAxMiAqIG5iY2RfY3VycG9zX3tidWZucignJScpfSB3YXMgY29tbWVudGVkCi0JCQkgICAgIG91dCwgYW5kIHdhcyBtaXN0YWtlbmx5IHVzZWQgZHVyaW5nCi0JCQkgICAgIFJlc3RvcmVQb3NuLiAgVW5mb3J0dW5hdGVseSwgSSdtIG5vdAotCQkJICAgICBzdXJlIHdoeSBpdCB3YXMgY29tbWVudGVkIG91dCwgc28gdGhpcwotCQkJICAgICAiZml4IiBtYXkgcmUtaW50cm9kdWNlIGFuIGVhcmxpZXIgcHJvYmxlbS4KLQkgICAgICBNYXIgMjEsIDIwMTIgKiBpbmNsdWRlZCBzOnJleHBvc24gaW50ZXJuYWxseSB0byBtYWtlCi0JCQkgICAgIDpSZXggcmV0dXJuIHRoZSBjdXJzb3IgdG8gdGhlIHNhbWUgcG9zJ24KLQkJCSAgICAgdXBvbiByZXN0b3JhdGlvbiBvZiBuZXRydyBidWZmZXIKLQkgICAgICBNYXIgMjcsIDIwMTIgKiAoc2piZXNzZSkgczpOZXRyd0dldEZpbGUoKSBuZWVkcyB0byByZW1vdmUKLQkJCSAgICAgIi8iIGZyb20gdGhlIG5ldHJ3IGJ1ZmZlcidzIHVzdWFsIHwnaXNrJ3wKLQkJCSAgICAgaW4gb3JkZXIgdG8gYWxsb3cgImZpbGV0eXBlIGRldGVjdCIgdG8gd29yawotCQkJICAgICBwcm9wZXJseSBmb3Igc2NyaXB0cy4KLQl2MTQzOiBKdW4gMDEsIDIwMTEgKiB8ZzpuZXRyd193aW5zaXplfCB3aWxsIGFjY2VwdCBhIG5lZ2F0aXZlCi0JCQkgICAgIG51bWJlcjsgdGhlIGFic29sdXRlIHZhbHVlIG9mIGl0IHdpbGwgdGhlbgotCQkJICAgICBiZSB1c2VkIHRvIHNwZWNpZnkgbGluZXMvY29sdW1ucyBpbnN0ZWFkIG9mCi0JCQkgICAgIGEgcGVyY2VudGFnZS4KLQkgICAgICBKdWwgMDUsIDIwMTEgKiB0aGUgImQiIG1hcCBub3cgc3VwcG9ydHMgbWtkaXIgdmlhIGZ0cAotCQkJICAgICBTZWUgfG5ldHJ3LWR8IGFuZCB8ZzpuZXRyd19yZW1vdGVfbWtkaXJ8Ci0JICAgICAgSnVsIDExLCAyMDExICogQ2hhbmdlZCBFeHBsb3JlISwgU2V4cGxvcmUhLCBhbmQgVmV4cGxvcmUKLQkJCSAgICAgdG8gdXNlIGEgcGVyY2VudGFnZSBvZiB8d2lud2lkdGgoKXwgaW5zdGVhZAotCQkJICAgICBvZiBhIHBlcmNlbnRhZ2Ugb2YgfHdpbmhlaWdodCgpfC4KLQkgICAgICBKdWwgMTEsIDIwMTEgKiBpbmNsdWRlZCBzdXBwb3J0IGZvciBodHRwczovLy4uLiBJJ20ganVzdAotCQkJICAgICBiZWdpbm5pbmcgdG8gdGVzdCB0aGlzLCBob3dldmVyLgotCSAgICAgIEF1ZyAwMSwgMjAxMSAqIGNoYW5nZWQgUmVzdG9yZU9wdGlvbnMgdG8gYWxzbyByZXN0b3JlCi0JCQkgICAgIGN1cnNvciBwb3NpdGlvbiBpbiBuZXRydyBidWZmZXJzLgotCSAgICAgIEF1ZyAxMiwgMjAxMSAqIGFkZGVkIGEgbm90ZSBhYm91dCAiJSIgdG8gdGhlIGJhbGxvb24KLQkgICAgICBBdWcgMzAsIDIwMTEgKiBpZiB8ZzpuZXRyd19ub2JldmFsfCBleGlzdHMsIHRoZW4gYmFsbG9vbgotCQkJICAgICBldmFsdWF0aW9uIGlzIHN1cHByZXNzZWQuCi0JICAgICAgQXVnIDMxLCAyMDExICogKEJlbmphbWluIFIgSGFza2VsbCkgcHJvdmlkZWQgYSBwYXRjaCB0aGF0Ci0JCQkgICAgIGltcGxlbWVudHMgbm9uLXN0YW5kYXJkIHBvcnQgaGFuZGxpbmcgZm9yCi0JCQkgICAgIGZpbGVzIG9wZW5lZCB2aWEgdGhlIHJlbW90ZSBicm93c2VyLgotCSAgICAgIEF1ZyAzMSwgMjAxMSAqIEZpeGVkIGEgKiovL3BhdHRlcm4gIEV4cGxvcmVyIGJ1ZwotCSAgICAgIFNlcCAxNSwgMjAxMSAqIChyZXBvcnRlZCBieSBGcmFuY2VzY28gQ2FtcGFuYSkgbmV0cncKLQkJCSAgICAgbm93IHBlcm1pdHMgdGhlICJAIiB0byBiZSBwYXJ0IG9mIHRoZQotCQkJICAgICB1c2VyIGlkIChpZiB0aGVyZSdzIGFuIEAgdGhhdCBhcHBlYXJzCi0JCQkgICAgIHRvIHRoZSByaWdodCkuCi0JICAgICAgTm92IDIxLCAyMDExICogTmV3IG9wdGlvbjogfGc6bmV0cndfZnRwX29wdGlvbnN8Ci0JICAgICAgRGVjIDA3LCAyMDExICogKEphbWVzIFNpbmNsYWlyKSBwcm92aWRlZCBhIGZpeCBoYW5kbGluZwotCSAgICAgIAkJICAgICBhdHRlbXB0cyB0byB1c2UgYSB1aWQgYW5kIHBhc3N3b3JkIHdoZW4KLQkJCSAgICAgdGhleSB3ZXJlbid0IGRlZmluZWQuICBUaGlzIGFmZmVjdGVkCi0JCQkgICAgIE5ldFdyaXRlIChOZXRSZWFkIGFscmVhZHkgaGFkIHRoYXQgZml4KS4KKwl2MTQ2OglPY3QgMjAsIDIwMTIJKiAoRGF2aWQgS290Y2hhbikgcmVwb3J0ZWQgdGhhdCB1bmRlciBXaW5kb3dzLAorCQkJCSAgZGlyZWN0b3JpZXMgbmFtZWQgd2l0aCB1bnVzdWFsIGNoYXJhY3RlcnMKKwkJCQkgIHN1Y2ggYXMgIiMiIG9yICIkIiB3ZXJlIG5vdCBiZWluZyBsaXN0ZWQKKwkJCQkgIHByb3Blcmx5LgorCQkJCSogKEtlbm55IExlZSkgcmVwb3J0ZWQgdGhhdCB0aGUgYnVmZmVyIGxpc3QKKwkJCQkgIHdhcyBiZWluZyBwb3B1bGF0ZWQgYnkgbmV0cncgYnVmZmVycy4KKwkJCQkgIE5ldHJ3IHdpbGwgbm93IHw6YndpcGV8IG5ldHJ3IGJ1ZmZlcnMKKwkJCQkgIHVwb24gZWRpdGluZyBhIGZpbGUgaWYgZzpuZXRyd19mYXN0YnJvd3NlCisJCQkJICBpcyB6ZXJvIGFuZCBpdHMgbm90IGluIHRyZWUgbGlzdGluZyBzdHlsZS4KKwl2MTQ1OglBcHIgMDUsIDIwMTIJKiBtb3ZlZCBzb21lIGNvbW1hbmQgZnJvbSBhIGc6bmV0cndfbG9jYWxfLi4uCisJCQkJICBmb3JtYXQgdG8gZzpuZXR3cl9sb2NhbC4uLiBmb3JtYXQKKwkJCQkqIGluY2x1ZGVkIHNvbWUgTk9URSBsZXZlbCBtZXNzYWdlcyBhYm91dAorCQkJCSAgY29tbWFuZHMgdGhhdCBhcmVuJ3QgZXhlY3V0YWJsZQorCQkJCSogfGc6bmV0cndfZXJyb3Jsdmx8IChkZWZhdWx0OiBOT1RFPTApCisJCQkJICBvcHRpb24gaW50cm9kdWNlZAorCQlNYXkgMTgsIDIwMTIJKiAoSWx5YSBEb2dvbGF6a3kpIGEgc2NlbmFyaW8gd2hlcmUgYQorCQkJCSAgfGc6bmV0cndfZmFzdGJyb3dzZXwgb2YgemVybyBkaWQgbm90CisJCQkJICBoYXZlIGEgbG9jYWwgZGlyZWN0b3J5IHJlZnJlc2hlZCBmaXhlZC4KKwkJSnVsIDEwLCAyMDEyCSogKERvbmF0YXMpIHxuZXRydy1nYnwgd2Fzbid0IHdvcmtpbmcgZHVlCisJCQkJICB0byBhbiBpbmNvcnJlY3RseSB1c2VkIHZhcmlhYmxlLgorCQlBdWcgMDksIDIwMTIJKiAoQmFydCBCYWtlcikgbmV0cncgd2FzIGRvdWJsaW5nCisJCQkJICBvZiBlbnRyaWVzIGFmdGVyIGEgc3BsaXQuCisJCQkJKiAoY29kZSBieSBUYWthaGlybyBZb3NoaWhhcmEpIGltcGxlbWVudGVkCisJCQkJICB8ZzpuZXRyd19keW5hbWljX21heGZpbGVuYW1lbGVufAorCQlBdWcgMzEsIDIwMTIJKiAoQW5kcmV3IFdvbmcpIG5ldHJ3IHJlZnJlc2ggb3ZlcndyaXRpbmcKKwkJCQkgIHRoZSB5YW5rIGJ1ZmZlci4KKwl2MTQ0OiBNYXIgMTIsIDIwMTIJKiB3aGVuIHxDVFJMLVdfc3wgb3IgfENUUkwtV192fCBhcmUgdXNlZCwKKwkJCQkgIG9yIHRoZWlyIHdpbmNtZCBlcXVpdmFsZW50cywgb24gYSBuZXRydworCQkJCSAgYnVmZmVyLCB0aGUgbmV0cncncyB3OiB2YXJpYWJsZXMgd2VyZQorCQkJCSAgbm90IGNvcGllZCBvdmVyLiAgRml4ZWQuCisJCU1hciAxMywgMjAxMgkqIG5iY2RfY3VycG9zX3tidWZucignJScpfSB3YXMgY29tbWVudGVkCisJCQkJICBvdXQsIGFuZCB3YXMgbWlzdGFrZW5seSB1c2VkIGR1cmluZworCQkJCSAgUmVzdG9yZVBvc24uICBVbmZvcnR1bmF0ZWx5LCBJJ20gbm90CisJCQkJICBzdXJlIHdoeSBpdCB3YXMgY29tbWVudGVkIG91dCwgc28gdGhpcworCQkJCSAgImZpeCIgbWF5IHJlLWludHJvZHVjZSBhbiBlYXJsaWVyIHByb2JsZW0uCisJCU1hciAyMSwgMjAxMgkqIGluY2x1ZGVkIHM6cmV4cG9zbiBpbnRlcm5hbGx5IHRvIG1ha2UKKwkJCQkgIDpSZXggcmV0dXJuIHRoZSBjdXJzb3IgdG8gdGhlIHNhbWUgcG9zJ24KKwkJCQkgIHVwb24gcmVzdG9yYXRpb24gb2YgbmV0cncgYnVmZmVyCisJCU1hciAyNywgMjAxMgkqIChzamJlc3NlKSBzOk5ldHJ3R2V0RmlsZSgpIG5lZWRzIHRvIHJlbW92ZQorCQkJCSAgIi8iIGZyb20gdGhlIG5ldHJ3IGJ1ZmZlcidzIHVzdWFsIHwnaXNrJ3wKKwkJCQkgIGluIG9yZGVyIHRvIGFsbG93ICJmaWxldHlwZSBkZXRlY3QiIHRvIHdvcmsKKwkJCQkgIHByb3Blcmx5IGZvciBzY3JpcHRzLgorCXYxNDM6IEp1biAwMSwgMjAxMQkqIHxnOm5ldHJ3X3dpbnNpemV8IHdpbGwgYWNjZXB0IGEgbmVnYXRpdmUKKwkJCQkgIG51bWJlcjsgdGhlIGFic29sdXRlIHZhbHVlIG9mIGl0IHdpbGwgdGhlbgorCQkJCSAgYmUgdXNlZCB0byBzcGVjaWZ5IGxpbmVzL2NvbHVtbnMgaW5zdGVhZCBvZgorCQkJCSAgYSBwZXJjZW50YWdlLgorCQlKdWwgMDUsIDIwMTEJKiB0aGUgImQiIG1hcCBub3cgc3VwcG9ydHMgbWtkaXIgdmlhIGZ0cAorCQkJCSAgU2VlIHxuZXRydy1kfCBhbmQgfGc6bmV0cndfcmVtb3RlX21rZGlyfAorCQlKdWwgMTEsIDIwMTEJKiBDaGFuZ2VkIEV4cGxvcmUhLCBTZXhwbG9yZSEsIGFuZCBWZXhwbG9yZQorCQkJCSAgdG8gdXNlIGEgcGVyY2VudGFnZSBvZiB8d2lud2lkdGgoKXwgaW5zdGVhZAorCQkJCSAgb2YgYSBwZXJjZW50YWdlIG9mIHx3aW5oZWlnaHQoKXwuCisJCUp1bCAxMSwgMjAxMQkqIGluY2x1ZGVkIHN1cHBvcnQgZm9yIGh0dHBzOi8vLi4uIEknbSBqdXN0CisJCQkJICBiZWdpbm5pbmcgdG8gdGVzdCB0aGlzLCBob3dldmVyLgorCQlBdWcgMDEsIDIwMTEJKiBjaGFuZ2VkIFJlc3RvcmVPcHRpb25zIHRvIGFsc28gcmVzdG9yZQorCQkJCSAgY3Vyc29yIHBvc2l0aW9uIGluIG5ldHJ3IGJ1ZmZlcnMuCisJCUF1ZyAxMiwgMjAxMQkqIGFkZGVkIGEgbm90ZSBhYm91dCAiJSIgdG8gdGhlIGJhbGxvb24KKwkJQXVnIDMwLCAyMDExCSogaWYgfGc6bmV0cndfbm9iZXZhbHwgZXhpc3RzLCB0aGVuIGJhbGxvb24KKwkJCQkgIGV2YWx1YXRpb24gaXMgc3VwcHJlc3NlZC4KKwkJQXVnIDMxLCAyMDExCSogKEJlbmphbWluIFIgSGFza2VsbCkgcHJvdmlkZWQgYSBwYXRjaCB0aGF0CisJCQkJICBpbXBsZW1lbnRzIG5vbi1zdGFuZGFyZCBwb3J0IGhhbmRsaW5nIGZvcgorCQkJCSAgZmlsZXMgb3BlbmVkIHZpYSB0aGUgcmVtb3RlIGJyb3dzZXIuCisJCUF1ZyAzMSwgMjAxMQkqIEZpeGVkIGEgKiovL3BhdHRlcm4gIEV4cGxvcmVyIGJ1ZworCQlTZXAgMTUsIDIwMTEJKiAocmVwb3J0ZWQgYnkgRnJhbmNlc2NvIENhbXBhbmEpIG5ldHJ3CisJCQkJICBub3cgcGVybWl0cyB0aGUgIkAiIHRvIGJlIHBhcnQgb2YgdGhlCisJCQkJICB1c2VyIGlkIChpZiB0aGVyZSdzIGFuIEAgdGhhdCBhcHBlYXJzCisJCQkJICB0byB0aGUgcmlnaHQpLgorCQlOb3YgMjEsIDIwMTEJKiBOZXcgb3B0aW9uOiB8ZzpuZXRyd19mdHBfb3B0aW9uc3wKKwkJRGVjIDA3LCAyMDExCSogKEphbWVzIFNpbmNsYWlyKSBwcm92aWRlZCBhIGZpeCBoYW5kbGluZworCQkJCSAgYXR0ZW1wdHMgdG8gdXNlIGEgdWlkIGFuZCBwYXNzd29yZCB3aGVuCisJCQkJICB0aGV5IHdlcmVuJ3QgZGVmaW5lZC4gIFRoaXMgYWZmZWN0ZWQKKwkJCQkgIE5ldFdyaXRlIChOZXRSZWFkIGFscmVhZHkgaGFkIHRoYXQgZml4KS4KIAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3N5bnRheC50eHQgYi9ydW50aW1lL2RvYy9zeW50YXgudHh0CmluZGV4IGQzYWIwYWIuLjNlMTU4NjggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKKysrIGIvcnVudGltZS9kb2Mvc3ludGF4LnR4dApAQCAtMSw0ICsxLDQgQEAKLSpzeW50YXgudHh0KglGb3IgVmltIHZlcnNpb24gNy4zLiAgTGFzdCBjaGFuZ2U6IDIwMTIgSnVsIDE2Cisqc3ludGF4LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDEyIE5vdiAwMgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yNDg5LDYgKzI0ODksMTIgQEAKIGxhdGVyLCBhbmQgcGFydCBlYXJsaWVyKSBhZGRzLgogCiAKK1JFU1RSVUNUVVJFRCBURVhUCQkJKnJzdC52aW0qICpmdC1yc3Qtc3ludGF4KgorCitZb3UgbWF5IHNldCB3aGF0IHN5bnRheCBkZWZpbml0aW9ucyBzaG91bGQgYmUgdXNlZCBmb3IgY29kZSBibG9ja3MgdmlhCisJbGV0IHJzdF9zeW50YXhfY29kZV9saXN0ID0gWyd2aW0nLCAnbGlzcCcsIC4uLl0KKworCiBSRVhYCQkJCQkJKnJleHgudmltKiAqZnQtcmV4eC1zeW50YXgqCiAKIElmIHlvdSBub3RpY2UgaGlnaGxpZ2h0aW5nIGVycm9ycyB3aGlsZSBzY3JvbGxpbmcgYmFja3dhcmRzLCB3aGljaCBhcmUgZml4ZWQKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RvZG8udHh0IGIvcnVudGltZS9kb2MvdG9kby50eHQKaW5kZXggODU2NzMxMC4uNGEyMjFlOCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdG9kby50eHQKKysrIGIvcnVudGltZS9kb2MvdG9kby50eHQKQEAgLTEsNCArMSw0IEBACi0qdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDEyIE9jdCAyMQorKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMiBOb3YgMTUKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNDMsMjAgKzQzLDkgQEAKIEdUSzogcHJvYmxlbSB3aXRoICdMJyBpbiAnZ3Vpb3B0aW9ucycgY2hhbmdpbmcgdGhlIHdpbmRvdyB3aWR0aC4KIChBYXJvbiBDb3JuZWxpdXMsIDIwMTIgRmViIDYpCiAKLVBhdGNoIHRvIGZpeCB1bmRvZmlsZSBoYXNoIGNvbXB1dGVkIHdoZW4gbm90IG5lY2Vzc2FyeS4gKENocmlzdGlhbiBCcmFiYW5kdCwKLTIwMTIgT2N0IDE2LCB1cGRhdGUgT2N0IDE4KQotCi1QYXRjaCB0byBmaXggcmVwZWF0aW5nICJjZ24iLiAoQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDEyIE9jdCAxNikKLVVwZGF0ZSBPY3QgMTcuCi0KIEphdmFzY3JpcHQgZmlsZSB3aGVyZSBpbmRlbnQgZ2V0cyBzdHVjayBvbjogR2FsYXh5TWFzdGVyLCAyMDEyIE1heSAzLgogCi1VcGRhdGVkIEZyZW5jaCBhbmQgRXNwZXJhbnRvIGZpbGVzLiAoRG9taW5pcXVlIFBlbGxlLCAyMDEyIEF1ZyAxOSkKLQotV2hlbiBzaG93aW5nIGRpZmZzIGZpbGxlciBsaW5lcyBtYXkgYmUgaGlkZGVuIGF0IGZpcnN0LgotUGF0Y2ggYnkgQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDEyIFNlcCA2LiAgVXBkYXRlIE9jdCAxMS4KLQotUGF0Y2ggZm9yIG1lbW9yeSBsZWFrcyBvbiBleGNlcHRpb24uIChaeVgsIDIwMTIgU2VwIDkpCitQYXRjaGVzIGZvciB0d28gcHJvYmxlbXMsIHdpdGggZXhwbGFuYXRpb25zLiAoQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDEyIE9jdCAyMikKIAogVGhlIENvbXBsZXRlRG9uZSBhdXRvY29tbWFuZCBuZWVkcyBzb21lIGluZm8gcGFzc2VkIHRvIGl0OgogLSBUaGUgd29yZCB0aGF0IHdhcyBzZWxlY3RlZCAoZW1wdHkgaWYgYWJhbmRvbmVkIGNvbXBsZXRlKQpAQCAtNjcsNiArNTYsMTkgQEAKIDIzKQogUGF0Y2ggYnkgQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDEyIE9jdCAxOC4gIFVwZGF0ZSBPY3QgMTkuCiAKK1BhdGNoIHRvIHJlc2V0IGRpZF9lbmRpZi4gKENocmlzdGlhbiBCcmFiYW5kdCwsIDIwMTIgT2N0IDIzKQorSG93IGFib3V0IGEgdGVzdD8KKworUGF0Y2ggZm9yIFRhYiBiZWhhdmlvciB3aXRoICdjb25jZWFsJy4gKERvbWluaXF1ZSBQZWxsZSwgMjAxMiBNYXIgMTgpCitQYXRjaCB0byB0ZXN0IGZ1bmN0aW9uYWxpdHkgb2YgJ2NvbmNlYWwnIHdpdGggdGFicy4gKFNpbW9uIFJ1ZGVyaWNoLCAyMDEyIFNlcAorNSkgIFVwZGF0ZSB3aXRoIHNjcmVlbmNvbCgpIGFuZCBzY3JlZW5yb3coKSBmdW5jdGlvbnM6IFNlcCA3LgorCitQYXRjaCBmb3IgaW50ZWdlciBvdmVyZmxvdyBpbiBtb3ZlLmMuIChEb21pbmlxdWUgUGVsbGUsIDIwMTIgTm92IDYpCisKK1BhdGNoIGZvciB1bmRlZmluZWQgaW50ZWdlciBiZWhhdmlvci4gKERvbWluaXF1ZSBQZWxsZSwgMjAxMiBOb3YgNCwgc2Vjb25kIG9uZSkKKworUGF0Y2ggdG8gaGF2ZSBQeXRob24gaW50ZXJmYWNlIG5vdCBkZXBlbmQgb24gbXVsdGktYnl0ZS4KKwogbW91c2Vfc2dyIGlzIG5vdCBvcmRlcmVkIGFscGhhYmV0aWNhbGx5IGluIDp2ZXJzaW9uIG91dHB1dC4KIERvY3MgbGlzdCBtb3VzZV91cnh2dCBhcyBub3JtYWwgZmVhdHVyZSwgc2hvdWxkIGJlIGJpZy4gKEhheWFraSBTYWl0bywgMjAxMgogQXVnIDE2KQpAQCAtNzYsMTIgKzc4LDE2IEBACiB0ZXN0cyBmYWlsIGFmdGVyIG1ha2luZyBjaGFuZ2VzIGFuZCB5b3UgZm9yZ290IGluIHdoaWNoIGZpbGVzLgogCiBQYXRjaCB0byBtYWtlIHVwZGF0aW5nIHRhYmxpbmUgZmFzdGVyLiAoQXJzZW55IEthcG91bGtpbmUsIDIwMTIgT2N0IDMpCitBbHNvIHJlbW92ZSB0aGUgInJjIiB2YXJpYWJsZS4KIAogQ3Jhc2ggd2l0aCB2aW1kaWZmLiAoRG9uIENydWlja3NoYW5rLCAyMDEyIFNlcCAyMykKIAogV2luMzI6IHVzZSAnZ3VpZm9udHdpZGUnIGZvciBJTUUgY29tcG9zaXRpb24uIChUYXJvIE11cmFva2EsIDIwMTIgU2VwIDMwKQogVXBkYXRlIE9jdCAyLgogCitQYXRjaCB0byBmaXggOnMgY29tbWFuZCB3aXRoIGNvbmZpcm0gYW5kIHR5cGluZyAiYSIuIChDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTIKK09jdCAyOCkKKwogUGF0Y2ggdG8gbWFrZSBtdWx0aWJ5dGUgaW5wdXQgd29yayBvbiBXaW4zMiBjb25zb2xlIHdoZW4gY29kZXBhZ2UgZGlmZmVycyBmcm9tCiAnZW5jb2RpbmcnLiAoS2VuIFRha2F0YSwgMjAxMiBTZXAgMjkpCiAKQEAgLTkyLDYgKzk4LDExIEBACiBjb21wbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGRpcmVjdG9yeS4gIE5vIGVzY2FwaW5nIGZvciB0aGUgIiEiPyAoSmFuCiBTdG9ja2VyLCAyMDEyIEphbiA1KQogCitQcm9ibGVtIGNhdXNlZCBieSBwYXRjaCA3LjMuNjM4OiB3aW5kb3ctPm9wZW4gZG9lcyBub3QgdXBkYXRlIHdpbmRvdworY29ycmVjdGx5LiBJc3N1ZSA5MS4KKworRG8gYWxsb3cgcmVhbCB0YWdzIGFib3ZlIHRoZSAhX1RBRyBlbnRyaWVzLiBVbmRvIG9sZGVyIHBhdGNoLiBJc3N1ZSA5MC4KKwogUGF0Y2ggdG8gc3VwcG9ydCAndScgaW4gaW50ZXJhY3RpdmUgc3Vic3RpdHV0ZS4gKENocmlzdGlhbiBCcmFiYW5kdCwgMjAxMiBTZXAKIDI4KSAgV2l0aCB0ZXN0czogT2N0IDkuCiAKQEAgLTEwMywxNCArMTE0LDEzIEBACiAKIE5ldyBzeW50YXggZmlsZXMgZm9yIGFwdC4gKHF1aWRhbWUsIDIwMTIgU2VwIDIxKQogCisnZmYnIGlzIHdyb25nIGZvciBvbmUtbGluZSBmaWxlIHdpdGhvdXQgRU9MLiAoSXNzdWUgNzcpCisKIFBhdGNoIGZvciBpZl9sdWEuIChMdWlzIENhcnZhbGhvLCAyMDEyIEF1ZyAyNiwgdXBkYXRlIEF1ZyAyOSwgYW5vdGhlciBBdWcgMzAsCiB0aGVuIFNlcCAxLCByZW1pbmRlciBPY3QgMTQpCiAKIElzc3VlIDcyOiAnYXV0b2NoZGlyJyBjYXVzZXMgcHJvYmxlbXMgZm9yIDp2aW1ncmVwLgogCi06c2V0bG9jYWwgZG9lcyBub3Qgd29yayBpbiB0aGUgc2FuZGJveCwgYnV0IDpzZXQgZG9lcy4gIEJvdGggc2hvdWxkIHdvcmsgaW4gYQotc2ltaWxhciB3YXkgKG5vdCBzZXR0aW5nIHNvbWUgb3B0aW9ucykuIChNaWNoYWVsIEhlbnJ5LCAyMDEyIE9jdCAyMCkKLQogSW4gdGhlIEFUVEVOVElPTiBtZXNzYWdlIGFib3V0IGFuIGV4aXN0aW5nIHN3YXAgZmlsZSwgbWVudGlvbiB0aGUgbmFtZSBvZiB0aGUKIHByb2Nlc3MgdGhhdCBpcyBydW5uaW5nLiAgSXQgbWlnaHQgYWN0dWFsbHkgYmUgc29tZSBvdGhlciBwcm9ncmFtLCBlLmcuIGFmdGVyCiBhIHJlYm9vdC4KQEAgLTExOCw5ICsxMjgsNiBAQAogTVMtV2luZG93czogQ3Jhc2ggb3BlbmluZyB2ZXJ5IGxvbmcgZmlsZSBuYW1lIHN0YXJ0aW5nIHdpdGggIlxcIi4KIChDaHJpc3RpYW4gQnJvY2ssIDIwMTIgSnVuIDI5KQogCi1XaW4zMjogcGF0Y2ggZm9yIGN1cnJlbnQgZGlyZWN0b3J5LCAibG9hZGluZyBpb2YgY29udiIuIChLZW4gVGFrYXRhLCAyMDEyIFNlcAotMTUpCi0KIEl0J3MgcHJvYmFibHkgYSBnb29kIGlkZWEgdG8gbWFrZSBhIG5lZ2F0aXZlIHZhbHVlIGZvciAnc3RzJyB1c2UgdGhlIHZhbHVlIG9mCiAnc3cnLiAgUGF0Y2ggYnkgU284cmVzLCBPY3QgMyAyMDEyCiAKQEAgLTEzNiw5ICsxNDMsMTIgQEAKIFBhdGNoIGZvciA6dGFiY2xvc2VsZWZ0LCBhZnRlciBjbG9zaW5nIGEgdGFiIGdvIHRvIGxlZnQgdGFiLiAoV2lsbGlhbSBCb3dlcnMsCiAyMDEyIEF1ZyA0KQogCi1QYXRjaCBmb3IgVGFiIGJlaGF2aW9yIHdpdGggJ2NvbmNlYWwnLiAoRG9taW5pcXVlIFBlbGxlLCAyMDEyIE1hciAxOCkKLVBhdGNoIHRvIHRlc3QgZnVuY3Rpb25hbGl0eSBvZiAnY29uY2VhbCcgd2l0aCB0YWJzLiAoU2ltb24gUnVkZXJpY2gsIDIwMTIgU2VwCi01KSAgVXBkYXRlIHdpdGggc2NyZWVuY29sKCkgYW5kIHNjcmVlbnJvdygpIGZ1bmN0aW9uczogU2VwIDcuCitQYXRjaCB3aXRoIHN1Z2dlc3Rpb25zIGZvciBzdGFydGluZy50eHQuIChUb255IE1lY2hlbHluY2ssIDIwMTIgT2N0IDI0KQorQnV0IHVzZSBHbm9tZSBpbnN0ZWFkIG9mIEdUSz8KKworU2hvdWxkIGJlIHBvc3NpYmxlIHRvIGVuYWJsZS9kaXNhYmxlIG1hdGNocGFyZW4gcGVyIHdpbmRvdyBvciBidWZmZXIuCitBZGQgYSBjaGVjayBmb3IgYjpub19tYXRjaF9wYXJlbiBpbiBIaWdobGlnaHRfbWF0Y2hpbmdfUGFpcigpIChNYXJjaW4KK1N6YW1vdHVsc2tpLCAyMDEyIE5vdiA4KQogCiBDcmFzaCBpbiBhdXRvY21kIHRoYXQgdW5sb2FkcyBidWZmZXJzIGluIGEgQnVmVW5sb2FkIGV2ZW50LiAoQW5kcmV3IFBpbWxvdHQsCiAyMDEyIEF1ZyAxMSkgIERpc2FsbG93IDpuZXcgd2hlbiBCdWZVbmxvYWQgaXMgYmVpbmcgaGFuZGxlZD8KQEAgLTE1OCw2ICsxNjgsOSBAQAogSGVscCBmb3IgYjp1bmRvX2luZGVudCcuIChUaGlsbyBTaXgsIDIwMTIgTWF5IDI4KQogQWxzbyBxdWVzdGlvbiBpZiBleGFtcGxlcyBhcmUgY29ycmVjdC4KIAorSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIG1ha2UgZ2xvYnBhdGgoKSByZXR1cm4gYSBsaXN0IGluc3RlYWQgb2YgYSBzdHJpbmcsCitsaWtlIHdpdGggZ2xvYigpLiAoR3JlZyBOb3ZhY2ssIDIwMTIgTm92IDIpCisKIFRoZSBpbnB1dCBtYXAgZm9yIENUUkwtTyBpbiBtc3dpbi52aW0gY2F1c2VzIHByb2JsZW1zIGFmdGVyIENUUkwtWCBDVFJMLU8uCiBTdWdnZXN0aW9uIGZvciBhbm90aGVyIG1hcC4gKFBoaWxpcCBNYXQsIDIwMTIgSnVuIDE4KQogQnV0IHVzZSAiZ2kiIGluc3RlYWQgb2YgImEiLiAgT3IgdXNlIENUUkwtXCBDVFJMLU8uCkBAIC0xNjksMTEgKzE4MiwxNiBAQAogZG91YmxlLXdpZHRoIGNoYXJhY3RlcnMgYXMgZXJyb3IuICBPciBwZXJoYXBzIGFsbCBjaGFyYWN0ZXJzIGFib3ZlIDI1Ni4KIChCaWxsIFN1bikgIEhlbHBzIGEgbG90IGZvciBtaXhlZCBBc2lhbiBhbmQgbGF0aW4gdGV4dC4KIAorV2hlbiB0aGVyZSBhcmUgbm8gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyAiOm5leHQiIGFuZCAiOmFyZ3UiIGdpdmUgRTE2Mywgd2hpY2gKK2lzIGNvbmZ1c2luZy4gIFNob3VsZCBzYXkgInRoZSBhcmd1bWVudCBsaXN0IGlzIGVtcHR5Ii4KKwogVVJYVlQ6CiAtIHdpbGwgZ2V0IHN0dWNrIGlmIGJ5dGUgc2VxdWVuY2UgZG9lcyBub3QgY29udGFpbmUgZXhwZWN0ZWQgc2VtaWNvbG9uLgogLSBVc2UgdXJ4dnQgbW91c2Ugc3VwcG9ydCBhbHNvIGluIHh0ZXJtLiAgRXhwbGFuYXRpb25zOgogICBodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvdGlja2V0LzI2NjIKIAorTVMtV2luZG93czogdGVzdCAxNyBmYWlscy4gIEFuYWx5c2lzIGJ5IE1pY2hhZWwgU295a2EsIDIwMTIgTm92IDUuCisKIFBhdGNoIHRvIGFkZCB0ZXN0cyBmb3IgaWZfeGNtZHNydi5jLiwgSnVsIDgsIG5lZWQgc29tZSBtb3JlIHdvcmsuIChCcmlhbiBCdXJucykKIE5ldyB0ZXN0cyBKdWwgMTMuICAgVXBkYXRlIEp1bCAxNy4gIERpc2N1c3Npb24gSnVsIDE4LgogCkBAIC04MTcsNyArODM1LDcgQEAKIERpcmVjdG9yeSB3cm9uZyBpbiBzZXNzaW9uIGZpbGUsIGNhdXNlZCBieSAiOmxjZCIgaW4gQnVmRW50ZXIgYXV0b2NvbW1hbmQuCiAoRmVsaXggS2F0ZXIsIDIwMDkgTWFyIDMpCiAKLVNlc3Npb24gZmlsZSBnZW5lcmF0ZXMgZXJyb3IgdXBvbiBsb2FkaW5nLCBjYXVzZSBidSAtLXJlbW90ZS1zaWxlbnQtdGFiLgorU2Vzc2lvbiBmaWxlIGdlbmVyYXRlcyBlcnJvciB1cG9uIGxvYWRpbmcsIGNhdXNlIGJ5IC0tcmVtb3RlLXNpbGVudC10YWIuCiAoN3RvbW1tICh5dG9tbW0pIDIwMTAgTm92IDI0KQogCiBVc2luZyB+IHdvcmtzIE9LIG9uICdhJyB3aXRoIGNvbXBvc2luZyBjaGFyLCBidXQgbm90IG9uIDB4MDQxOCAgd2l0aCBjb21wb3NpbmcKQEAgLTkzOCw4ICs5NTYsNiBAQAogQXVnIDIwKSAgVGhpcyBpcyBpbiB1Y3MyYnl0ZXMoKSwgc2VhcmNoIGZvciAweEJGLiAgVXNpbmcgdGhlICsrYmFkIGFyZ3VtZW50IGlzCiBhdCB0aGUgb3RoZXIgbWF0Y2ggZm9yIDB4QkYuCiAKLUZpeCBmb3IgbWF0Y2hwYXJlbiBITCBkb2Vzbid0IHdvcmsuICBiZWVwLgotCiBXaGVuIGFkZGluZyAiLWNvbXBsZXRlPWZpbGUiIHRvIGEgdXNlciBjb21tYW5kIHRoaXMgYWxzbyBjaGFuZ2VzIGhvdyB0aGUKIGFyZ3VtZW50IGlzIHByb2Nlc3NlZCBmb3IgPGYtYXJncz4uIChJdmFuIFRpc2hjaGVua28sIDIwMDggQXVnIDE5KQogCkBAIC0xNTg5LDYgKzE2MDUsOSBAQAogbmFtZSBpcyBzb21ldGhpbmcgbGlrZSAiYzpccGF0aFxmb28udHh0OmJhciIsIGluY2x1ZGVzIGEgY29sb24uICAoQWxleAogSmFrdXNoZXYsIDIwMDggRmViIDEpCiAKK3ByaW50ZigpIHVzZXMgdGhlIGZpZWxkIHdpZHRoIGluIGJ5dGVzLiBDYW4gaXQgYmUgbWFkZSBjaGFyYWN0ZXIgd2lkdGgsCitwZXJoYXBzIHdpdGggYSBtb2RpZmllcj8gIFdoYXQgZG9lcyBQb3NpeCBzYXk/CisKIFNtYWxsIHByb2JsZW0gZGlzcGxheWluZyBkaWZmIGZpbGxlciBsaW5lIHdoZW4gb3BlbmluZyB3aW5kb3dzIHdpdGggYSBzY3JpcHQuCiAoRGF2aWQgTHV5ZXIsIDIwMDcgTWFyIDEgfi9NYWlsL29sZG1haWwvbW9vbC9pbi4xNTg3MiApCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yMS50eHQgYi9ydW50aW1lL2RvYy91c3JfMjEudHh0CmluZGV4IGE0OWM5OGMuLmNlN2Q0OTQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8yMS50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzIxLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMjEudHh0KglGb3IgVmltIHZlcnNpb24gNy4zLiAgTGFzdCBjaGFuZ2U6IDIwMDggTm92IDA5CisqdXNyXzIxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDEyIE5vdiAwMgogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApAQCAtMjgyLDcgKzI4Miw3IEBACiBTRVNTSU9OIEhFUkUsIFNFU1NJT04gVEhFUkUKIAogVGhlIG9idmlvdXMgd2F5IHRvIHVzZSBzZXNzaW9ucyBpcyB3aGVuIHdvcmtpbmcgb24gZGlmZmVyZW50IHByb2plY3RzLgotU3VwcG9zZSB5b3Ugc3RvcmUgeW91IHNlc3Npb24gZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSAifi8udmltIi4gIFlvdSBhcmUKK1N1cHBvc2UgeW91IHN0b3JlIHlvdXIgc2Vzc2lvbiBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5ICJ+Ly52aW0iLiAgWW91IGFyZQogY3VycmVudGx5IHdvcmtpbmcgb24gdGhlICJzZWNyZXQiIHByb2plY3QgYW5kIGhhdmUgdG8gc3dpdGNoIHRvIHRoZSAiYm9yaW5nIgogcHJvamVjdDogPgogCkBAIC0yOTUsNyArMjk1LDcgQEAKIG5leHQgdGltZSB5b3UgbG9hZCB0aGUgc2VjcmV0IHNlc3Npb24geW91IGNhbiBjb250aW51ZSB3aGVyZSB5b3Ugd2VyZSBhdCB0aGlzCiBwb2ludC4gIEFuZCBmaW5hbGx5IHlvdSBsb2FkIHRoZSBuZXcgImJvcmluZyIgc2Vzc2lvbi4KIAotSWYgeW91IG9wZW4gaGVscCB3aW5kb3dzLCBzcGxpdCBhbmQgY2xvc2UgdmFyaW91cyB3aW5kb3csIGFuZCBnZW5lcmFsbHkgbWVzcworSWYgeW91IG9wZW4gaGVscCB3aW5kb3dzLCBzcGxpdCBhbmQgY2xvc2UgdmFyaW91cyB3aW5kb3dzLCBhbmQgZ2VuZXJhbGx5IG1lc3MKIHVwIHRoZSB3aW5kb3cgbGF5b3V0LCB5b3UgY2FuIGdvIGJhY2sgdG8gdGhlIGxhc3Qgc2F2ZWQgc2Vzc2lvbjogPgogCiAJOnNvdXJjZSB+Ly52aW0vYm9yaW5nLnZpbQpAQCAtNDIzLDEwICs0MjMsMTAgQEAKIEEgVklFVyBXSVRIIEEgTkFNRQogCiBUaGUgc2Vjb25kIGJhc2ljIHdheSB0byB1c2Ugdmlld3MgaXMgYnkgc3RvcmluZyB0aGUgdmlldyBpbiBhIGZpbGUgd2l0aCBhIG5hbWUKLXlvdSBjaG9zZS4gIFRoaXMgdmlldyBjYW4gYmUgbG9hZGVkIHdoaWxlIGVkaXRpbmcgYW5vdGhlciBmaWxlLiAgVmltIHdpbGwgdGhlbgotc3dpdGNoIHRvIGVkaXRpbmcgdGhlIGZpbGUgc3BlY2lmaWVkIGluIHRoZSB2aWV3LiAgVGh1cyB5b3UgY2FuIHVzZSB0aGlzIHRvCi1xdWlja2x5IHN3aXRjaCB0byBlZGl0aW5nIGFub3RoZXIgZmlsZSwgd2l0aCBhbGwgaXRzIG9wdGlvbnMgc2V0IGFzIHlvdSBzYXZlZAotdGhlbS4KK3lvdSBjaG9vc2UuICBUaGlzIHZpZXcgY2FuIGJlIGxvYWRlZCB3aGlsZSBlZGl0aW5nIGFub3RoZXIgZmlsZS4gIFZpbSB3aWxsCit0aGVuIHN3aXRjaCB0byBlZGl0aW5nIHRoZSBmaWxlIHNwZWNpZmllZCBpbiB0aGUgdmlldy4gIFRodXMgeW91IGNhbiB1c2UgdGhpcwordG8gcXVpY2tseSBzd2l0Y2ggdG8gZWRpdGluZyBhbm90aGVyIGZpbGUsIHdpdGggYWxsIGl0cyBvcHRpb25zIHNldCBhcyB5b3UKK3NhdmVkIHRoZW0uCiAgICBGb3IgZXhhbXBsZSwgdG8gc2F2ZSB0aGUgdmlldyBvZiB0aGUgY3VycmVudCBmaWxlOiA+CiAKIAk6bWt2aWV3IH4vLnZpbS9tYWluLnZpbQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzIyLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8yMi50eHQKaW5kZXggOGNhMDM0ZS4uM2M1MjdhNiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzIyLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMjIudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8yMi50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMCBGZWIgMjEKKyp1c3JfMjIudHh0KglGb3IgVmltIHZlcnNpb24gNy4zLiAgTGFzdCBjaGFuZ2U6IDIwMTIgTm92IDE1CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCkBAIC0zMjYsOSArMzI2LDkgQEAKIAogVGhlIG91dHB1dCBjb3VsZCBsb29rIGxpa2UgdGhpczoKIAotICAxICNoCSJoZWxwLnR4dCIJCQlsaW5lIDYyIH4KLSAgMiAlYSsJInVzcl8yMS50eHQiCQkJbGluZSAxIH4KLSAgMwkidXNyX3RvYy50eHQiCQkJbGluZSAxIH4KKyAgMSAjaCAgICJoZWxwLnR4dCIJCQlsaW5lIDYyIH4KKyAgMiAlYSArICJ1c3JfMjEudHh0IgkJCWxpbmUgMSB+CisgIDMgICAgICAidXNyX3RvYy50eHQiCQkJbGluZSAxIH4KIAogVGhlIGZpcnN0IGNvbHVtbiBjb250YWlucyB0aGUgYnVmZmVyIG51bWJlci4gIFlvdSBjYW4gdXNlIHRoaXMgdG8gZWRpdCB0aGUKIGJ1ZmZlciB3aXRob3V0IGhhdmluZyB0byB0eXBlIHRoZSBuYW1lLCBzZWUgYmVsb3cuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy93aW5kb3dzLnR4dCBiL3J1bnRpbWUvZG9jL3dpbmRvd3MudHh0CmluZGV4IGI5Zjc3MWQuLmI1MjllZTUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3dpbmRvd3MudHh0CisrKyBiL3J1bnRpbWUvZG9jL3dpbmRvd3MudHh0CkBAIC0xLDQgKzEsNCBAQAotKndpbmRvd3MudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMiBBcHIgMTMKKyp3aW5kb3dzLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4zLiAgTGFzdCBjaGFuZ2U6IDIwMTIgTm92IDE1CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC05MzksOSArOTM5LDkgQEAKIDpidWZmZXJzWyFdCQkJCQkqOmJ1ZmZlcnMqICo6bHMqCiA6bHNbIV0JCVNob3cgYWxsIGJ1ZmZlcnMuICBFeGFtcGxlOgogCi0JCQkxICNoICAiL3Rlc3QvdGV4dCIJCWxpbmUgMSB+Ci0JCQkydSAgICAiYXNkZiIJCQlsaW5lIDAgfgotCQkJMyAlYSsgInZlcnNpb24uYyIJCWxpbmUgMSB+CisJCQkxICNoICAgIi90ZXN0L3RleHQiCQlsaW5lIDEgfgorCQkJMnUgICAgICJhc2RmIgkJCWxpbmUgMCB+CisJCQkzICVhICsgInZlcnNpb24uYyIJCWxpbmUgMSB+CiAKIAkJV2hlbiB0aGUgWyFdIGlzIGluY2x1ZGVkIHRoZSBsaXN0IHdpbGwgc2hvdyB1bmxpc3RlZCBidWZmZXJzCiAJCSh0aGUgdGVybSAidW5saXN0ZWQiIGlzIGEgYml0IGNvbmZ1c2luZyB0aGVuLi4uKS4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvcGx1Z2luL25ldHJ3UGx1Z2luLnZpbSBiL3J1bnRpbWUvcGx1Z2luL25ldHJ3UGx1Z2luLnZpbQppbmRleCA4YTY2Yzg0Li5hYzRkZmM2IDEwMDY0NAotLS0gYS9ydW50aW1lL3BsdWdpbi9uZXRyd1BsdWdpbi52aW0KKysrIGIvcnVudGltZS9wbHVnaW4vbmV0cndQbHVnaW4udmltCkBAIC0yMCw3ICsyMCw3IEBACiBpZiAmY3AgfHwgZXhpc3RzKCJnOmxvYWRlZF9uZXRyd1BsdWdpbiIpCiAgZmluaXNoCiBlbmRpZgotbGV0IGc6bG9hZGVkX25ldHJ3UGx1Z2luID0gInYxNDUiCitsZXQgZzpsb2FkZWRfbmV0cndQbHVnaW4gPSAidjE0NiIKIGlmIHY6dmVyc2lvbiA8IDcwMgogIGVjaG9obCBXYXJuaW5nTXNnIHwgZWNobyAiKioqbmV0cncqKiogeW91IG5lZWQgdmltIHZlcnNpb24gNy4yIGZvciB0aGlzIHZlcnNpb24gb2YgbmV0cnciIHwgZWNob2hsIE5vbmUKICBmaW5pc2gKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2FiYXAudmltIGIvcnVudGltZS9zeW50YXgvYWJhcC52aW0KaW5kZXggOGY3MzA2ZC4uZmQ0YjQ4MCAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvYWJhcC52aW0KKysrIGIvcnVudGltZS9zeW50YXgvYWJhcC52aW0KQEAgLTEsOCArMSw4IEBACiAiIFZpbSBBQkFQIHN5bnRheCBmaWxlCiAiICAgIExhbmd1YWdlOiBTQVAgLSBBQkFQL1I0Ci0iICAgIFJldmlzaW9uOiAyLjAKKyIgICAgUmV2aXNpb246IDIuMQogIiAgTWFpbnRhaW5lcjogTWFyaXVzIFBpZWRhbGx1IHZhbiBXeWsgPGxhaWxva2VuQGdtYWlsLmNvbT4KLSIgTGFzdCBDaGFuZ2U6IDIwMTIgT2N0IDEyCisiIExhc3QgQ2hhbmdlOiAyMDEyIE9jdCAyMwogIiAgICAgQ29tbWVudDogVGhhbmtzIHRvIEVQSS1VU0UgTGFicyBmb3IgYWxsIHlvdXIgYXNzaXN0YW5jZS4gOikKIAogIiBGb3IgdmVyc2lvbiAgPCA2LjA6IENsZWFyIGFsbCBzeW50YXggaXRlbXMKQEAgLTE2LDcgKzE2LDcgQEAKICIgQWx3YXlzIGlnbm9yZSBjYXNlCiBzeW4gY2FzZSBpZ25vcmUKIAotIiBTeW1ib2wgT3BlcmF0b3JzCisiIFN5bWJvbCBPcGVyYXRvcnMgKHNwYWNlIGRlbGltaXRlZCkKIHN5biBtYXRjaCAgIGFiYXBTeW1ib2xPcGVyYXRvciAgIlxXK1xXIgogc3luIG1hdGNoICAgYWJhcFN5bWJvbE9wZXJhdG9yICAiXFctXFciCiBzeW4gbWF0Y2ggICBhYmFwU3ltYm9sT3BlcmF0b3IgICJcVy9cVyIKQEAgLTQ5LDk5ICs0OSwxMDUgQEAKICAgc2V0IGlza2V5d29yZD00OC01NyxfLEEtWixhLXosLwogZW5kaWYKIAotc3luIG1hdGNoICAgYWJhcE5hbWVzcGFjZSAgICAgICAgIi9cd1wrLyIKK3N5biBtYXRjaCAgIGFiYXBOYW1lc3BhY2UgICAgICAgICJcPC9cd1wrLyIKIAogIiBtdWx0aS13b3JkIHN0YXRlbWVudHMKLXN5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcKFdJVEhcV1wrXChIRUFERVJcV1wrTElORVx8RlJBTUVcfEtFWVwpXHxXSVRIXCkiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiTk9cV1wrU1RBTkRBUkRcV1wrUEFHRVxXXCtIRUFESU5HIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlwoRVhJVFxXXCtGUk9NXFdcK1NURVBcV1wrTE9PUFx8RVhJVFwpIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlwoQkVHSU5cV1wrT0ZcV1wrXChCTE9DS1x8TElORVwpXHxCRUdJTlxXXCtPRlwpIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlwoRU5EXFdcK09GXFdcK1woQkxPQ0tcfExJTkVcKVx8RU5EXFdcK09GXCkiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiTk9cV1wrSU5URVJWQUxTIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlJFU1BFQ1RJTkdcV1wrQkxBTktTIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlNFUEFSQVRFRFxXXCtCWSIKLXN5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcKFVTSU5HXFdcK1woRURJVFxXXCtNQVNLXClcfFVTSU5HXCkiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXChXSEVSRVxXXCtcKExJTkVcKVwpIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlJBRElPQlVUVE9OXFdcK0dST1VQIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlJFRlxXXCtUTyIKLXN5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcKFBVQkxJQ1x8UFJJVkFURVx8UFJPVEVDVEVEXClcKFxXXCtTRUNUSU9OXClcPyIKLXN5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJERUxFVElOR1xXXCtcKFRSQUlMSU5HXHxMRUFESU5HXCkiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXChBTExcV1wrT0NDVVJSRU5DRVNcKVx8XChcKEZJUlNUXHxMQVNUXClcV1wrT0NDVVJSRU5DRVwpIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIklOSEVSSVRJTkdcV1wrRlJPTSIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPFwoV0lUSFxXXCtcKEhFQURFUlxXXCtMSU5FXHxGUkFNRVx8S0VZXClcfFdJVEhcKVw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8Tk9cV1wrU1RBTkRBUkRcV1wrUEFHRVxXXCtIRUFESU5HXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxcKEVYSVRcV1wrRlJPTVxXXCtTVEVQXFdcK0xPT1BcfEVYSVRcKVw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8XChCRUdJTlxXXCtPRlxXXCtcKEJMT0NLXHxMSU5FXClcfEJFR0lOXFdcK09GXClcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPFwoRU5EXFdcK09GXFdcK1woQkxPQ0tcfExJTkVcKVx8RU5EXFdcK09GXClcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPE5PXFdcK0lOVEVSVkFMU1w+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8UkVTUEVDVElOR1xXXCtCTEFOS1NcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPFNFUEFSQVRFRFxXXCtCWVw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8VVNJTkdcKFxXXCtFRElUXFdcK01BU0tcKVw/XD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxXSEVSRVwoXFdcK0xJTkVcKVw/XD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxSQURJT0JVVFRPTlxXXCtHUk9VUFw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8UkVGXFdcK1RPXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxcKFBVQkxJQ1x8UFJJVkFURVx8UFJPVEVDVEVEXClcKFxXXCtTRUNUSU9OXClcP1w+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8REVMRVRJTkdcV1wrXChUUkFJTElOR1x8TEVBRElOR1wpXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxcKEFMTFxXXCtPQ0NVUlJFTkNFU1wpXHxcKFwoRklSU1RcfExBU1RcKVxXXCtPQ0NVUlJFTkNFXClcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPElOSEVSSVRJTkdcV1wrRlJPTVw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8XChVUFxXXCtcKVw/VE9cPiIKIAogIiBoeXBoZW5hdGVkLXdvcmQgc3RhdGVtZW50cwotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIkxJTkUtQ09VTlQiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiQURELUNPUlJFU1BPTkRJTkciCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiQVVUSE9SSVRZLUNIRUNLIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIkJSRUFLLVBPSU5UIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIkNMQVNTLURBVEEiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiQ0xBU1MtTUVUSE9EUyIKLXN5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJDTEFTUy1NRVRIT0QiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiRElWSURFLUNPUlJFU1BPTkRJTkciCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiRURJVE9SLUNBTEwiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiRU5ELU9GLURFRklOSVRJT04iCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiRU5ELU9GLVBBR0UiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiRU5ELU9GLVNFTEVDVElPTiIKLXN5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJGSUVMRC1HUk9VUFMiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiRklFTEQtU1lNQk9MUyIKLXN5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJGVU5DVElPTi1QT09MIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIk1PVkUtQ09SUkVTUE9ORElORyIKLXN5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJNVUxUSVBMWS1DT1JSRVNQT05ESU5HIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIk5FVy1MSU5FIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIk5FVy1QQUdFIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIk5FVy1TRUNUSU9OIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlBSSU5ULUNPTlRST0wiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiUlAtUFJPVklERS1GUk9NLUxBU1QiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiU0VMRUNULU9QVElPTlMiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiU0VMRUNUSU9OLVNDUkVFTiIKLXN5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJTVEFSVC1PRi1TRUxFQ1RJT04iCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiU1VCVFJBQ1QtQ09SUkVTUE9ORElORyIKLXN5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJTWU5UQVgtQ0hFQ0siCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiU1lOVEFYLVRSQUNFIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlRPUC1PRi1QQUdFIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlRZUEUtUE9PTCIKLXN5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJUWVBFLVBPT0xTIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIkxJTkUtU0laRSIKLXN5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJMSU5FLUNPVU5UIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIk1FU1NBR0UtSUQiCi1zeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiRElTUExBWS1NT0RFIgotc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlJFQURcKC1PTkxZXClcPyIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPExJTkUtQ09VTlRcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPEFERC1DT1JSRVNQT05ESU5HXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxBVVRIT1JJVFktQ0hFQ0tcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPEJSRUFLLVBPSU5UXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxDTEFTUy1EQVRBXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxDTEFTUy1NRVRIT0RTXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxDTEFTUy1NRVRIT0RcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPERJVklERS1DT1JSRVNQT05ESU5HXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxFRElUT1ItQ0FMTFw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8RU5ELU9GLURFRklOSVRJT05cPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPEVORC1PRi1QQUdFXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxFTkQtT0YtU0VMRUNUSU9OXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxGSUVMRC1HUk9VUFNcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPEZJRUxELVNZTUJPTFNcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPEZVTkNUSU9OLVBPT0xcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPElTXFdcK1woTk9UXFdcK1wpXD9cKEFTU0lHTkVEXHxCT1VORFx8SU5JVElBTFx8U1VQUExJRURcKVw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8TU9WRS1DT1JSRVNQT05ESU5HXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxNVUxUSVBMWS1DT1JSRVNQT05ESU5HXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxORVctTElORVw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8TkVXLVBBR0VcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPE5FVy1TRUNUSU9OXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxQUklOVC1DT05UUk9MXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxSUC1QUk9WSURFLUZST00tTEFTVFw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8U0VMRUNULU9QVElPTlNcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPFNFTEVDVElPTi1TQ1JFRU5cPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPFNUQVJULU9GLVNFTEVDVElPTlw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8U1VCVFJBQ1QtQ09SUkVTUE9ORElOR1w+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8U1lOVEFYLUNIRUNLXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxTWU5UQVgtVFJBQ0VcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPFRPUC1PRi1QQUdFXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxUWVBFLVBPT0xcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPFRZUEUtUE9PTFNcPiIKK3N5biBtYXRjaCAgIGFiYXBDb21wbGV4U3RhdGVtZW50ICJcPExJTkUtU0laRVw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8TElORS1DT1VOVFw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8TUVTU0FHRS1JRFw+Igorc3luIG1hdGNoICAgYWJhcENvbXBsZXhTdGF0ZW1lbnQgIlw8RElTUExBWS1NT0RFXD4iCitzeW4gbWF0Y2ggICBhYmFwQ29tcGxleFN0YXRlbWVudCAiXDxSRUFEXCgtT05MWVwpXD9cPiIKIAogIiBBQkFQIHN0YXRlbWVudHMKIHN5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgQUREIEFMSUFTIEFMSUFTRVMgQVNTRVJUIEFTU0lHTiBBU1NJR05JTkcgQVQKLXN5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgQkFDSyBCT1VORAorc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBCQUNLCiBzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IENBTEwgQ0FTRSBDQVRDSCBDSEVDSyBDTEFTUyBDTEVBUiBDTE9TRSBDTlQgQ09MTEVDVCBDT01NSVQgQ09NTVVOSUNBVElPTiBDT01QVVRFIENPTkNBVEVOQVRFIENPTkRFTlNFIENPTlNUQU5UUyBDT05USU5VRSBDT05UUk9MUyBDT05WRVJUIENSRUFURSBDVVJSRU5DWQogc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBEQVRBIERFRklORSBERUZJTklUSU9OIERFRkVSUkVEIERFTEVURSBERVNDUklCRSBERVRBSUwgRElWSURFIERPCiBzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IEVMU0UgRUxTRUlGIEVOREFUIEVORENBU0UgRU5EQ0xBU1MgRU5ERE8gRU5ERVhFQyBFTkRGT1JNIEVOREZVTkNUSU9OIEVORElGIEVORElGRU5EIEVORElOVEVSRkFDRSBFTkRMT09QIEVORE1FVEhPRCBFTkRNT0RVTEUgRU5ET04gRU5EUFJPVklERSBFTkRTRUxFQ1QgRU5EVFJZIEVORFdISUxFIEVWRU5UIEVWRU5UUyBFWEVDIEVYSVQgRVhQT1JUIEVYUE9SVElORyBFWFRSQUNUCiBzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IEZFVENIIEZJRUxEUyBGT1JNIEZPUk1BVCBGUkVFIEZST00gRlVOQ1RJT04KIHN5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgR0VORVJBVEUgR0VUCiBzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IEhJREUKLXN5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgSUYgSU1QT1JUIElNUE9SVElORyBJTkRFWCBJTkZPVFlQRVMgSU5JVElBTCBJTklUSUFMSVpBVElPTiBJTlRFUkZBQ0UgSU5URVJGQUNFUyBJTlBVVCBJTlNFUlQgSU1QTEVNRU5UQVRJT04gSVMKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgSUYgSU1QT1JUIElNUE9SVElORyBJTkRFWCBJTkZPVFlQRVMgSU5JVElBTElaQVRJT04gSU5URVJGQUNFIElOVEVSRkFDRVMgSU5QVVQgSU5TRVJUIElNUExFTUVOVEFUSU9OIAogc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBMRUFWRSBMSUtFIExJTkUgTE9BRCBMT0NBTCBMT09QCiBzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IE1FU1NBR0UgTUVUSE9EIE1FVEhPRFMgTU9ESUZZIE1PRFVMRSBNT1ZFIE1VTFRJUExZCiBzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IE9OIE9WRVJMQVkgT1BUSU9OQUwgT1RIRVJTCiBzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IFBBQ0sgUEFSQU1FVEVSUyBQRVJGT1JNIFBPU0lUSU9OIFBST0dSQU0gUFJPVklERSBQVVQKLXN5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgUkFJU0UgUkFOR0VTIFJFQ0VJVkUgUkVERUZJTklUSU9OIFJFRkVSRU5DRSBSRUZSRVNIIFJFSkVDVCBSRVBMQUNFIFJFUE9SVCBSRVNFUlZFIFJFU1RPUkUgUkVUVVJOSU5HIFJPTExCQUNLCitzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IFJBSVNFIFJBTkdFUyBSRUNFSVZFIFJFQ0VJVklORyBSRURFRklOSVRJT04gUkVGRVJFTkNFIFJFRlJFU0ggUkVKRUNUIFJFUExBQ0UgUkVQT1JUIFJFU0VSVkUgUkVTVE9SRSBSRVRVUk5JTkcgUk9MTEJBQ0sKIHN5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgU0NBTiBTQ1JPTEwgU0VBUkNIIFNFTEVDVCBTRVQgU0hJRlQgU0tJUCBTT1JUIFNPUlRFRCBTUExJVCBTVEFOREFSRCBTVEFUSUNTIFNURVAgU1RPUCBTVUJNSVQgU1VCVFJBQ1QgU1VNIFNVTU1BUlkgU1VQUFJFU1MKIHN5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgVEFCTEVTIFRJTUVTIFRSQU5TRkVSIFRSQU5TTEFURSBUUlkgVFlQRSBUWVBFUwogc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBVTkFTU0lHTiBVTElORSBVTlBBQ0sgVVBEQVRFCiBzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IFdIRU4gV0hJTEUgV0lORE9XIFdSSVRFCiAKICIgTW9yZSBzdGF0ZW1ldHMKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgTElORVMKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgSU5UTyBHUk9VUCBCWSBIQVZJTkcgT1JERVIgQlkgU0lOR0xFCitzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IEFQUEVORElORyBDT1JSRVNQT05ESU5HIEZJRUxEUyBPRiBUQUJMRQorc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBMRUZUIFJJR0hUIE9VVEVSIElOTkVSIEpPSU4gQVMgQ0xJRU5UIFNQRUNJRklFRCBCWVBBU1NJTkcgQlVGRkVSIFJPV1MgQ09OTkVDVElORwogc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBPQ0NVUlMgU1RSVUNUVVJFIE9CSkVDVCBQUk9QRVJUWQogc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBDQVNUSU5HIEFQUEVORCBSQUlTSU5HIFZBTFVFIENPTE9SCiBzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IENIQU5HSU5HIEVYQ0VQVElPTiBFWENFUFRJT05TIERFRkFVTFQgQ0hFQ0tCT1ggQ09NTUVOVAogc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBJRCBOVU1CRVIgRk9SIFRJVExFIE9VVFBVVAogCiAiIFNwZWNpYWwgQUJBUCBzcGVjaWZpYyB0YWJsZXM6Ci1zeW4gbWF0Y2ggICBhYmFwU3BlY2lhbCAgICAgICAiXChcV1x8XlwpXChzeVx8XChwXHxwYVwpXGRcZFxkXGRcfHRcZFxkXGQuXHxpbm5ublwpXChcV1x8JFwpIm1zPXMrMSxtZT1lLTEKLXN5biBtYXRjaCAgIGFiYXBTcGVjaWFsVGFibGVzICJcKHN5XHxcKHBcfHBhXClcZFxkXGRcZFx8dFxkXGRcZC5cfGlubm5uXCktIm1lPWUtMSBjb250YWluZWQKLXN5biBtYXRjaCAgIGFiYXBTcGVjaWFsICAgICAgICJcKFxXXHxeXClcd1wrLVwoXHdcKy1cd1wrXHxcd1wrXCkibXM9cysxIGNvbnRhaW5zPWFiYXBTcGVjaWFsVGFibGVzLGFiYXBTdGF0ZW1lbnQsYWJhcENvbXBsZXhTdGF0ZW1lbnQKK3N5biBtYXRjaCAgIGFiYXBTcGVjaWFsVGFibGVzICJcPFwoc3lcfFwocFx8cGFcKVxkXGRcZFxkXHx0XGRcZFxkLlx8aW5ubm5cKS0ibWU9ZS0xIGNvbnRhaW5lZAorc3luIG1hdGNoICAgYWJhcFN0cnVjdHVyZSAgICAgIlw8XHdcKy1bXlw+XSJtZT1lLTIgY29udGFpbnM9YWJhcFNwZWNpYWxUYWJsZXMsYWJhcFN0YXRlbWVudCxhYmFwQ29tcGxleFN0YXRlbWVudAorc3luIG1hdGNoICAgYWJhcEZpZWxkICAgICAgICAgIi1cd1wrIm1zPXMrMQogCiAiIFBvaW50ZXIKIHN5biBtYXRjaCAgIGFiYXBTcGVjaWFsICAiPFx3XCs+IgogCi0iIEFiYXAgY29uc3RhbnRzOgorIiBBYmFwIGNvbW1vbiBjb25zdGFudHM6CiBzeW4ga2V5d29yZCBhYmFwU3BlY2lhbCAgVFJVRSBGQUxTRSBOVUxMIFNQQUNFCiAKICIgSW5jbHVkZXMKQEAgLTE1NSwxNSArMTYxLDggQEAKIHN5biBrZXl3b3JkIGFiYXBPcGVyYXRvciBjb3NoIHNpbmggdGFuaCBleHAgbG9nIGxvZzEwIHNxcnQKIAogIiBTdHJpbmcgb3BlcmF0b3JzCi1zeW4ga2V5d29yZCBhYmFwT3BlcmF0b3Igc3RybGVuIHhzdHJsZW4gY2hhcmxlbiBudW1vZmNoYXIgZGJtYXhsZW4KK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgc3RybGVuIHhzdHJsZW4gY2hhcmxlbiBudW1vZmNoYXIgZGJtYXhsZW4KIAotIiBUYWJsZSBvcGVyYXRvcnMKLXN5biBrZXl3b3JkIGFiYXBPcGVyYXRvciBsaW5lcwotCi0iIFRhYmxlIG9wZXJhdG9ycyAoU0VMRUNUIG9wZXJhdG9ycykKLXN5biBrZXl3b3JkIGFiYXBPcGVyYXRvciBJTlRPIFdIRVJFIEdST1VQIEJZIEhBVklORyBPUkRFUiBCWSBTSU5HTEUKLXN5biBrZXl3b3JkIGFiYXBPcGVyYXRvciBBUFBFTkRJTkcgQ09SUkVTUE9ORElORyBGSUVMRFMgT0YgVEFCTEUKLXN5biBrZXl3b3JkIGFiYXBPcGVyYXRvciBMRUZUIFJJR0hUIE9VVEVSIElOTkVSIEpPSU4gQVMgQ0xJRU5UIFNQRUNJRklFRCBCWVBBU1NJTkcgQlVGRkVSIFVQIFRPIFJPV1MgQ09OTkVDVElORwogc3luIGtleXdvcmQgYWJhcE9wZXJhdG9yIEVRIE5FIExUIExFIEdUIEdFIE5PVCBBTkQgT1IgWE9SIElOIExJS0UgQkVUV0VFTgogCiAiIEFuIGVycm9yPyBOb3Qgc3RyaWN0bHkuLi4gYnV0IGNhbm5vdCB0aGluayBvZiByZWFzb24gdGhpcyBpcyBpbnRlbmRlZC4KQEAgLTE5Myw3ICsxOTIsNyBAQAogICBIaUxpbmsgYWJhcENvbXBsZXhTdGF0ZW1lbnQgICAgICBTdGF0ZW1lbnQKICAgSGlMaW5rIGFiYXBTcGVjaWFsICAgICAgICBTcGVjaWFsCiAgIEhpTGluayBhYmFwTmFtZXNwYWNlICAgICAgU3BlY2lhbAotICBIaUxpbmsgYWJhcFNwZWNpYWxUYWJsZXMgIFByZVByb2MKKyAgSGlMaW5rIGFiYXBTcGVjaWFsVGFibGVzICBTcGVjaWFsCiAgIEhpTGluayBhYmFwU3ltYm9sT3BlcmF0b3IgYWJhcE9wZXJhdG9yCiAgIEhpTGluayBhYmFwT3BlcmF0b3IgICAgICAgT3BlcmF0b3IKICAgSGlMaW5rIGFiYXBDaGFyU3RyaW5nICAgICBTdHJpbmcKQEAgLTIwMSw2ICsyMDAsOCBAQAogICBIaUxpbmsgYWJhcEZsb2F0ICAgICAgICAgIEZsb2F0CiAgIEhpTGluayBhYmFwVHlwZXMgICAgICAgICAgVHlwZQogICBIaUxpbmsgYWJhcFN5bWJvbCAgICAgICAgIFN0cnVjdHVyZQorICBIaUxpbmsgYWJhcFN0cnVjdHVyZSAgICAgIFN0cnVjdHVyZQorICBIaUxpbmsgYWJhcEZpZWxkICAgICAgICAgIFZhcmlhYmxlCiAgIEhpTGluayBhYmFwTnVtYmVyICAgICAgICAgTnVtYmVyCiAgIEhpTGluayBhYmFwSGV4ICAgICAgICAgICAgTnVtYmVyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2xleC52aW0gYi9ydW50aW1lL3N5bnRheC9sZXgudmltCmluZGV4IGU1MDBmNWMuLmI3YWZmMzQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2xleC52aW0KKysrIGIvcnVudGltZS9zeW50YXgvbGV4LnZpbQpAQCAtMSw4ICsxLDggQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglMZXgKLSIgTWFpbnRhaW5lcjoJQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIDxOZHJPY2hpcFNAUGNhbXBiZWxsQWZhbWlseS5NYml6PgotIiBMYXN0IENoYW5nZToJTm92IDAxLCAyMDEwCi0iIFZlcnNpb246CTEyCisiIE1haW50YWluZXI6CUNoYXJsZXMgRS4gQ2FtcGJlbGwgPE5kck9jaGlwU0BQY2FtcGJlbGxBZmFtaWx5Lk1iaXo+CisiIExhc3QgQ2hhbmdlOglOb3YgMTQsIDIwMTIKKyIgVmVyc2lvbjoJMTQKICIgVVJMOglodHRwOi8vbXlzaXRlLnZlcml6b24ubmV0L2FzdHJvbmF1dC92aW0vaW5kZXguaHRtbCN2aW1saW5rc19zeW50YXgKICIKICIgT3B0aW9uOgpAQCAtMTcsMjAgKzE3LDE2IEBACiBlbmRpZgogCiAiIFJlYWQgdGhlIEMvQysrIHN5bnRheCB0byBzdGFydCB3aXRoCi1pZiB2ZXJzaW9uID49IDYwMAotICBpZiBleGlzdHMoImxleF91c2VzX2NwcCIpCi0gICAgcnVudGltZSEgc3ludGF4L2NwcC52aW0KLSAgZWxzZQotICAgIHJ1bnRpbWUhIHN5bnRheC9jLnZpbQorbGV0IHM6Q3BhdGg9IGZuYW1lZXNjYXBlKGV4cGFuZCgiPHNmaWxlPjpwOmgiKS4oZXhpc3RzKCJnOmxleF91c2VzX2NwcCIpPyAiL2NwcC52aW0iIDogIi9jLnZpbSIpKQoraWYgIWZpbGVyZWFkYWJsZShzOkNwYXRoKQorIGZvciBzOkNwYXRoIGluIHNwbGl0KGdsb2JwYXRoKCZydHAsKGV4aXN0cygiZzpsZXhfdXNlc19jcHAiKT8gInN5bnRheC9jcHAudmltIiA6ICJzeW50YXgvYy52aW0iKSksIlxuIikKKyAgaWYgZmlsZXJlYWRhYmxlKGZuYW1lZXNjYXBlKHM6Q3BhdGgpKQorICAgbGV0IHM6Q3BhdGg9IGZuYW1lZXNjYXBlKHM6Q3BhdGgpCisgICBicmVhawogICBlbmRpZgotICB1bmxldCBiOmN1cnJlbnRfc3ludGF4Ci1lbHNlCi0gIGlmIGV4aXN0cygibGV4X3VzZXNfY3BwIikKLSAgICBzbyA8c2ZpbGU+OnA6aC9jcHAudmltCi0gIGVsc2UKLSAgICBzbyA8c2ZpbGU+OnA6aC9jLnZpbQotICBlbmRpZgorIGVuZGZvcgogZW5kaWYKK2V4ZSAic3luIGluY2x1ZGUgQGxleENjb2RlICIuczpDcGF0aAogCiAiIC0tLSA9PT09PT09PT0gLS0tCiAiIC0tLSBMZXggc3R1ZmYgLS0tCkBAIC0zOSwxMCArMzUsNiBAQAogIiBPcHRpb25zIFNlY3Rpb24KIHN5biBtYXRjaCBsZXhPcHRpb25zICdeJVxzKm9wdGlvblw+LiokJyBjb250YWlucz1sZXhQYXRTdHJpbmcKIAotIkknZCBwcmVmZXIgdG8gdXNlIGxleC4qICwgYnV0IHZpbSBkb2Vzbid0IGhhbmRsZSBmb3J3YXJkIGRlZmluaXRpb25zIHlldAotc3luIGNsdXN0ZXIgbGV4TGlzdEdyb3VwCQljb250YWlucz1sZXhBYmJydkJsb2NrLGxleEFiYnJ2LGxleEFiYnJ2LGxleEFiYnJ2UmVnRXhwLGxleEluY2x1ZGUsbGV4UGF0QmxvY2ssbGV4UGF0LGxleEJyYWNlLGxleFBhdFN0cmluZyxsZXhQYXRUYWcsbGV4UGF0VGFnLGxleFBhdENvbW1lbnQsbGV4UGF0Q29kZUxpbmUsbGV4TW9yZVBhdCxsZXhQYXRTZXAsbGV4U2xhc2hRdW90ZSxsZXhQYXRDb2RlLGNJblBhcmVuLGNVc2VyTGFiZWwsY09jdGFsWmVybyxjQ3BwU2tpcCxjRXJySW5CcmFja2V0LGNFcnJJblBhcmVuLGNPY3RhbEVycm9yLGNDcHBPdXQyLGNDb21tZW50U3RhcnRFcnJvcixjUGFyZW5FcnJvcgotc3luIGNsdXN0ZXIgbGV4TGlzdFBhdENvZGVHcm91cAljb250YWlucz1sZXhBYmJydkJsb2NrLGxleEFiYnJ2LGxleEFiYnJ2LGxleEFiYnJ2UmVnRXhwLGxleEluY2x1ZGUsbGV4UGF0QmxvY2ssbGV4UGF0LGxleEJyYWNlLGxleFBhdFRhZyxsZXhQYXRUYWcsbGV4UGF0VGFnWm9uZVN0YXJ0LGxleFBhdENvbW1lbnQsbGV4UGF0Q29kZUxpbmUsbGV4TW9yZVBhdCxsZXhQYXRTZXAsbGV4U2xhc2hRdW90ZSxjSW5QYXJlbixjVXNlckxhYmVsLGNPY3RhbFplcm8sY0NwcFNraXAsY0VyckluQnJhY2tldCxjRXJySW5QYXJlbixjT2N0YWxFcnJvcixjQ3BwT3V0MixjQ29tbWVudFN0YXJ0RXJyb3IsY1BhcmVuRXJyb3IKLQogIiBBYmJyZXZpYXRpb25zIFNlY3Rpb24KIGlmIGhhcygiZm9sZGluZyIpCiAgc3luIHJlZ2lvbiBsZXhBYmJydkJsb2NrCWZvbGQgc3RhcnQ9Il5cKFxoXCtcc1x8JXtcKSIJZW5kPSJeXHplJSUkIglza2lwbmwJbmV4dGdyb3VwPWxleFBhdEJsb2NrIGNvbnRhaW5zPWxleEFiYnJ2LGxleEluY2x1ZGUsbGV4QWJicnZDb21tZW50LGxleFN0YXJ0U3RhdGUKQEAgLTUzLDUyICs0NSw2OSBAQAogc3luIG1hdGNoICBsZXhBYmJydgkJIl4lW3N4XSIJCQkJCWNvbnRhaW5lZAogc3luIG1hdGNoICBsZXhBYmJydlJlZ0V4cAkiXHNcUy4qJCJsYz0xCQkJCWNvbnRhaW5lZCBuZXh0Z3JvdXA9bGV4QWJicnYsbGV4SW5jbHVkZQogaWYgaGFzKCJmb2xkaW5nIikKLSBzeW4gcmVnaW9uIGxleEluY2x1ZGUJZm9sZCBtYXRjaGdyb3VwPWxleFNlcAlzdGFydD0iXiV7IgllbmQ9IiV9Igljb250YWluZWQJY29udGFpbnM9QUxMQlVULEBsZXhMaXN0R3JvdXAKKyBzeW4gcmVnaW9uIGxleEluY2x1ZGUJZm9sZCBtYXRjaGdyb3VwPWxleFNlcAlzdGFydD0iXiV7IgllbmQ9IiV9Igljb250YWluZWQJY29udGFpbnM9QGxleENjb2RlCiAgc3luIHJlZ2lvbiBsZXhBYmJydkNvbW1lbnQJZm9sZAkJCXN0YXJ0PSJeXHNcKy9cKiIJZW5kPSJcKi8iCWNvbnRhaW5zPUBTcGVsbAorIHN5biByZWdpb24gbGV4QWJicnZDb21tZW50CWZvbGQJCQlzdGFydD0iXCVeL1wqIgllbmQ9IlwqLyIJY29udGFpbnM9QFNwZWxsCiAgc3luIHJlZ2lvbiBsZXhTdGFydFN0YXRlCWZvbGQgbWF0Y2hncm91cD1sZXhBYmJydglzdGFydD0iXiVcYVwrIgllbmQ9IiQiCWNvbnRhaW5lZAogZWxzZQotIHN5biByZWdpb24gbGV4SW5jbHVkZQltYXRjaGdyb3VwPWxleFNlcAkJc3RhcnQ9Il4leyIJZW5kPSIlfSIJY29udGFpbmVkCWNvbnRhaW5zPUFMTEJVVCxAbGV4TGlzdEdyb3VwCisgc3luIHJlZ2lvbiBsZXhJbmNsdWRlCW1hdGNoZ3JvdXA9bGV4U2VwCQlzdGFydD0iXiV7IgllbmQ9IiV9Igljb250YWluZWQJY29udGFpbnM9QGxleENjb2RlCiAgc3luIHJlZ2lvbiBsZXhBYmJydkNvbW1lbnQJCQkJc3RhcnQ9Il5cc1wrL1wqIgllbmQ9IlwqLyIJY29udGFpbnM9QFNwZWxsCisgc3luIHJlZ2lvbiBsZXhBYmJydkNvbW1lbnQJCQkJc3RhcnQ9IlwlXi9cKiIJZW5kPSJcKi8iCWNvbnRhaW5zPUBTcGVsbAogIHN5biByZWdpb24gbGV4U3RhcnRTdGF0ZQltYXRjaGdyb3VwPWxleEFiYnJ2CQlzdGFydD0iXiVcYVwrIgllbmQ9IiQiCWNvbnRhaW5lZAogZW5kaWYKIAogIiUlIDogUGF0dGVybnMge0FjdGlvbnN9CiBpZiBoYXMoImZvbGRpbmciKQotIHN5biByZWdpb24gbGV4UGF0QmxvY2sJZm9sZCBtYXRjaGdyb3VwPVRvZG8Jc3RhcnQ9Il4lJSQiIG1hdGNoZ3JvdXA9VG9kbwllbmQ9Il4lJSQiCXNraXBubAlza2lwd2hpdGUJY29udGFpbnM9bGV4UGF0VGFnLGxleFBhdFRhZ1pvbmUsbGV4UGF0Q29tbWVudCxsZXhQYXQsbGV4UGF0SW5jbHVkZQotIHN5biByZWdpb24gbGV4UGF0CQlmb2xkCQkJc3RhcnQ9K1xTKyBza2lwPSJcXFxcXHxcXC4iCWVuZD0iXHMibWU9ZS0xCQljb250YWluZWQgbmV4dGdyb3VwPWxleE1vcmVQYXQsbGV4UGF0U2VwIGNvbnRhaW5zPWxleFBhdFRhZyxsZXhQYXRTdHJpbmcsbGV4U2xhc2hRdW90ZSxsZXhCcmFjZQorIHN5biByZWdpb24gbGV4UGF0QmxvY2sJZm9sZCBtYXRjaGdyb3VwPVRvZG8Jc3RhcnQ9Il4lJSQiIG1hdGNoZ3JvdXA9VG9kbwllbmQ9Il4lXHplJSQiCXNraXBubAlza2lwd2hpdGUJbmV4dGdyb3VwPWxleEZpbmFsQ29kZUJsb2NrCWNvbnRhaW5zPWxleFBhdFRhZyxsZXhQYXRUYWdab25lLGxleFBhdENvbW1lbnQsbGV4UGF0LGxleFBhdEluY2x1ZGUKKyBzeW4gcmVnaW9uIGxleFBhdAkJZm9sZAkJCXN0YXJ0PStcUysgc2tpcD0iXFxcXFx8XFwuIgllbmQ9IlxzIm1lPWUtMQlza2lwd2hpdGUJY29udGFpbmVkIG5leHRncm91cD1sZXhNb3JlUGF0LGxleFBhdFNlcCxsZXhQYXR0ZXJuIGNvbnRhaW5zPWxleFBhdFRhZyxsZXhQYXRTdHJpbmcsbGV4U2xhc2hRdW90ZSxsZXhCcmFjZQogIHN5biByZWdpb24gbGV4UGF0SW5jbHVkZQlmb2xkIG1hdGNoZ3JvdXA9bGV4U2VwCXN0YXJ0PSJeJXsiCWVuZD0iJX0iCWNvbnRhaW5lZAljb250YWlucz1sZXhQYXRDb2RlCiAgc3luIHJlZ2lvbiBsZXhCcmFjZQlmb2xkCQkJc3RhcnQ9IlxbIiBza2lwPStcXFxcXHxcXCsJZW5kPSJdIgkJCWNvbnRhaW5lZAogIHN5biByZWdpb24gbGV4UGF0U3RyaW5nCWZvbGQgbWF0Y2hncm91cD1TdHJpbmcJc3RhcnQ9KyIrCXNraXA9K1xcXFxcfFxcIisJbWF0Y2hncm91cD1TdHJpbmcgZW5kPSsiKwljb250YWluZWQKIGVsc2UKLSBzeW4gcmVnaW9uIGxleFBhdEJsb2NrCW1hdGNoZ3JvdXA9VG9kbwkJc3RhcnQ9Il4lJSQiIG1hdGNoZ3JvdXA9VG9kbwllbmQ9Il4lJSQiCXNraXBubAlza2lwd2hpdGUJY29udGFpbnM9bGV4UGF0VGFnLGxleFBhdFRhZ1pvbmUsbGV4UGF0Q29tbWVudCxsZXhQYXQsbGV4UGF0SW5jbHVkZQotIHN5biByZWdpb24gbGV4UGF0CQkJCQlzdGFydD0rXFMrIHNraXA9IlxcXFxcfFxcLiIJZW5kPSJccyJtZT1lLTEJCWNvbnRhaW5lZCBuZXh0Z3JvdXA9bGV4TW9yZVBhdCxsZXhQYXRTZXAgY29udGFpbnM9bGV4UGF0VGFnLGxleFBhdFN0cmluZyxsZXhTbGFzaFF1b3RlLGxleEJyYWNlCisgc3luIHJlZ2lvbiBsZXhQYXRCbG9jawltYXRjaGdyb3VwPVRvZG8JCXN0YXJ0PSJeJSUkIiBtYXRjaGdyb3VwPVRvZG8JZW5kPSJeJSUkIglza2lwbmwJc2tpcHdoaXRlCW5leHRncm91cD1sZXhGaW5hbENvZGVCbG9jawljb250YWlucz1sZXhQYXRUYWcsbGV4UGF0VGFnWm9uZSxsZXhQYXRDb21tZW50LGxleFBhdCxsZXhQYXRJbmNsdWRlCisgc3luIHJlZ2lvbiBsZXhQYXQJCQkJCXN0YXJ0PStcUysgc2tpcD0iXFxcXFx8XFwuIgllbmQ9IlxzIm1lPWUtMQlza2lwd2hpdGUJY29udGFpbmVkIG5leHRncm91cD1sZXhNb3JlUGF0LGxleFBhdFNlcCxsZXhQYXR0ZXJuIGNvbnRhaW5zPWxleFBhdFRhZyxsZXhQYXRTdHJpbmcsbGV4U2xhc2hRdW90ZSxsZXhCcmFjZQogIHN5biByZWdpb24gbGV4UGF0SW5jbHVkZQltYXRjaGdyb3VwPWxleFNlcAkJc3RhcnQ9Il4leyIJZW5kPSIlfSIJY29udGFpbmVkCWNvbnRhaW5zPWxleFBhdENvZGUKICBzeW4gcmVnaW9uIGxleEJyYWNlCQkJCXN0YXJ0PSJcWyIgc2tpcD0rXFxcXFx8XFwrCWVuZD0iXSIJCQljb250YWluZWQKICBzeW4gcmVnaW9uIGxleFBhdFN0cmluZwltYXRjaGdyb3VwPVN0cmluZwkJc3RhcnQ9KyIrCXNraXA9K1xcXFxcfFxcIisJbWF0Y2hncm91cD1TdHJpbmcgZW5kPSsiKwljb250YWluZWQKIGVuZGlmCiBzeW4gbWF0Y2ggIGxleFBhdFRhZwkiXjxcSVxpKlwoLFxJXGkqXCkqPiIJCQljb250YWluZWQgbmV4dGdyb3VwPWxleFBhdCxsZXhQYXRUYWcsbGV4TW9yZVBhdCxsZXhQYXRTZXAKLXN5biBtYXRjaCAgbGV4UGF0VGFnWm9uZQkiXjxcSVxpKlwoLFxJXGkqXCkqPlxzKlx6ZXsiCQljb250YWluZWQgbmV4dGdyb3VwPWxleFBhdFRhZ1pvbmVTdGFydAorc3luIG1hdGNoICBsZXhQYXRUYWdab25lCSJePFxJXGkqXCgsXElcaSpcKSo+XHNcK1x6ZXsiCQkJY29udGFpbmVkIG5leHRncm91cD1sZXhQYXRUYWdab25lU3RhcnQKIHN5biBtYXRjaCAgbGV4UGF0VGFnCStePFxJXGkqXCgsXElcaSpcKSo+KlwoXFxcXFwpKlxcIisJCWNvbnRhaW5lZCBuZXh0Z3JvdXA9bGV4UGF0LGxleFBhdFRhZyxsZXhNb3JlUGF0LGxleFBhdFNlcAorCisiIExleCBQYXR0ZXJucworc3luIHJlZ2lvbiBsZXhQYXR0ZXJuCXN0YXJ0PSdbXiBcdHt9XScJZW5kPSIkIgkJCWNvbnRhaW5lZAljb250YWlucz1sZXhQYXRSYW5nZQorc3luIHJlZ2lvbiBsZXhQYXRSYW5nZQltYXRjaGdyb3VwPURlbGltaXRlcglzdGFydD0nXFsnCXNraXA9J1xcXFxcfFxcLicJZW5kPSdcXScJY29udGFpbnM9bGV4RXNjYXBlCitzeW4gbWF0Y2ggIGxleEVzY2FwZQknXCUoXFxcXFwpKlxcLicJCQkJY29udGFpbmVkCisKIGlmIGhhcygiZm9sZGluZyIpCi0gc3luIHJlZ2lvbiAgbGV4UGF0VGFnWm9uZVN0YXJ0IG1hdGNoZ3JvdXA9bGV4UGF0VGFnCWZvbGQJc3RhcnQ9J3snIGVuZD0nfScJY29udGFpbmVkIGNvbnRhaW5zPWxleFBhdCxsZXhQYXRDb21tZW50Cisgc3luIHJlZ2lvbiBsZXhQYXRUYWdab25lU3RhcnQgbWF0Y2hncm91cD1sZXhQYXRUYWcJZm9sZAlzdGFydD0neycgZW5kPSd9Jwljb250YWluZWQgY29udGFpbnM9bGV4UGF0LGxleFBhdENvbW1lbnQKICBzeW4gcmVnaW9uIGxleFBhdENvbW1lbnQJc3RhcnQ9IlxzXCsvXCoiIGVuZD0iXCovIglmb2xkCXNraXBubAljb250YWluZWQgY29udGFpbnM9Y1RvZG8gc2tpcHdoaXRlIG5leHRncm91cD1sZXhQYXRDb21tZW50LGxleFBhdCxAU3BlbGwKIGVsc2UKLSBzeW4gcmVnaW9uICBsZXhQYXRUYWdab25lU3RhcnQgbWF0Y2hncm91cD1sZXhQYXRUYWcJCXN0YXJ0PSd7JyBlbmQ9J30nCWNvbnRhaW5lZCBjb250YWlucz1sZXhQYXQsbGV4UGF0Q29tbWVudAorIHN5biByZWdpb24gbGV4UGF0VGFnWm9uZVN0YXJ0IG1hdGNoZ3JvdXA9bGV4UGF0VGFnCQlzdGFydD0neycgZW5kPSd9Jwljb250YWluZWQgY29udGFpbnM9bGV4UGF0LGxleFBhdENvbW1lbnQKICBzeW4gcmVnaW9uIGxleFBhdENvbW1lbnQJc3RhcnQ9IlxzXCsvXCoiIGVuZD0iXCovIgkJc2tpcG5sCWNvbnRhaW5lZCBjb250YWlucz1jVG9kbyBza2lwd2hpdGUgbmV4dGdyb3VwPWxleFBhdENvbW1lbnQsbGV4UGF0LEBTcGVsbAogZW5kaWYKLXN5biBtYXRjaCAgbGV4UGF0Q29kZUxpbmUJIi4qJCIJCQkJCWNvbnRhaW5lZCBjb250YWlucz1BTExCVVQsQGxleExpc3RHcm91cAorc3luIG1hdGNoICBsZXhQYXRDb2RlTGluZQkiW157XFtdLioiCQkJCWNvbnRhaW5lZCBjb250YWlucz1AbGV4Q2NvZGUKIHN5biBtYXRjaCAgbGV4TW9yZVBhdAkiXHMqfFxzKiQiCQkJc2tpcG5sCWNvbnRhaW5lZCBuZXh0Z3JvdXA9bGV4UGF0LGxleFBhdFRhZyxsZXhQYXRDb21tZW50CiBzeW4gbWF0Y2ggIGxleFBhdFNlcAkiXHNcKyIJCQkJCWNvbnRhaW5lZCBuZXh0Z3JvdXA9bGV4TW9yZVBhdCxsZXhQYXRDb2RlLGxleFBhdENvZGVMaW5lCiBzeW4gbWF0Y2ggIGxleFNsYXNoUXVvdGUJK1woXFxcXFwpKlxcIisJCQkJY29udGFpbmVkCiBpZiBoYXMoImZvbGRpbmciKQotIHN5biByZWdpb24gbGV4UGF0Q29kZSBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0ieyIgZW5kPSJ9Iglmb2xkCXNraXBubCBjb250YWluZWQgY29udGFpbnM9QUxMQlVULEBsZXhMaXN0UGF0Q29kZUdyb3VwCisgc3luIHJlZ2lvbiBsZXhQYXRDb2RlIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSJ7IiBlbmQ9In0iCWZvbGQJc2tpcG5sIGNvbnRhaW5lZCBjb250YWlucz1AbGV4Q2NvZGUsbGV4Q0Z1bmN0aW9ucwogZWxzZQotIHN5biByZWdpb24gbGV4UGF0Q29kZSBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0ieyIgZW5kPSJ9IgkJc2tpcG5sIGNvbnRhaW5lZCBjb250YWlucz1BTExCVVQsQGxleExpc3RQYXRDb2RlR3JvdXAKKyBzeW4gcmVnaW9uIGxleFBhdENvZGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9InsiIGVuZD0ifSIJc2tpcG5sCWNvbnRhaW5lZCBjb250YWlucz1AbGV4Q2NvZGUsbGV4Q0Z1bmN0aW9ucwogZW5kaWYKIAorIiBMZXggImZ1bmN0aW9ucyIgd2hpY2ggbWF5IGFwcGVhciBpbiBDL0MrKyBjb2RlIGJsb2Nrcwogc3luIGtleXdvcmQgbGV4Q0Z1bmN0aW9ucwlCRUdJTglpbnB1dAl1bnB1dAl3b3V0cHV0CXl5bGVuZwl5eWxvb2sJeXl0ZXh0CiBzeW4ga2V5d29yZCBsZXhDRnVuY3Rpb25zCUVDSE8Jb3V0cHV0CXdpbnB1dAl3dW5wdXQJeXlsZXNzCXl5bW9yZQl5eXdyYXAKIAorIiAlJQorIiAgbGV4QWJicmV2QmxvY2sKKyIgJSUKKyIgIGxleFBhdEJsb2NrCisiICUlCisiICBsZXhGaW5hbENvZGVCbG9jaworc3luIHJlZ2lvbiBsZXhGaW5hbENvZGVCbG9jayBtYXRjaGdyb3VwPVRvZG8gc3RhcnQ9IiUkIm1lPWUtMSBlbmQ9IlwlJCIJY29udGFpbmVkCWNvbnRhaW5zPUBsZXhDY29kZQorCiAiIDxjLnZpbT4gaW5jbHVkZXMgc2V2ZXJhbCBBTExCVVRzOyB0aGVzZSBoYXZlIHRvIGJlIHRyZWF0ZWQgc28gYXMgdG8gZXhjbHVkZSBsZXgqIGdyb3Vwcwogc3luIGNsdXN0ZXIgY1BhcmVuR3JvdXAJYWRkPWxleC4qCiBzeW4gY2x1c3RlciBjRGVmaW5lR3JvdXAJYWRkPWxleC4qCkBAIC0xMDcsMjcgKzExNiwyNyBAQAogCiAiIFN5bmNocm9uaXphdGlvbgogc3luIHN5bmMgY2xlYXIKLXN5biBzeW5jIG1pbmxpbmVzPTMwMAorc3luIHN5bmMgbWlubGluZXM9NTAwCiBzeW4gc3luYyBtYXRjaCBsZXhTeW5jUGF0CWdyb3VwaGVyZSAgbGV4UGF0QmxvY2sJIl4lW2EtekEtWl0iCiBzeW4gc3luYyBtYXRjaCBsZXhTeW5jUGF0CWdyb3VwdGhlcmUgbGV4UGF0QmxvY2sJIl48JCIKIHN5biBzeW5jIG1hdGNoIGxleFN5bmNQYXQJZ3JvdXB0aGVyZSBsZXhQYXRCbG9jawkiXiUlJCIKIAogIiBUaGUgZGVmYXVsdCBoaWdobGlnaHRpbmcuCiBoaSBkZWYgbGluayBsZXhBYmJydkNvbW1lbnQJbGV4UGF0Q29tbWVudAotaGkgZGVmIGxpbmsgbGV4QnJhY2UJbGV4UGF0Ci1oaSBkZWYgbGluayBsZXhQYXRUYWdab25lCWxleFBhdFRhZwotaGkgZGVmIGxpbmsgbGV4U2xhc2hRdW90ZQlsZXhQYXQKLQogaGkgZGVmIGxpbmsgbGV4QWJicnZSZWdFeHAJTWFjcm8KIGhpIGRlZiBsaW5rIGxleEFiYnJ2CVNwZWNpYWxDaGFyCitoaSBkZWYgbGluayBsZXhCcmFjZQlsZXhQYXQKIGhpIGRlZiBsaW5rIGxleENGdW5jdGlvbnMJRnVuY3Rpb24KK2hpIGRlZiBsaW5rIGxleENzdHJ1Y3QJY1N0cnVjdHVyZQogaGkgZGVmIGxpbmsgbGV4TW9yZVBhdAlTcGVjaWFsQ2hhcgogaGkgZGVmIGxpbmsgbGV4T3B0aW9ucwlQcmVQcm9jCiBoaSBkZWYgbGluayBsZXhQYXRDb21tZW50CUNvbW1lbnQKIGhpIGRlZiBsaW5rIGxleFBhdAkJRnVuY3Rpb24KIGhpIGRlZiBsaW5rIGxleFBhdFN0cmluZwlGdW5jdGlvbgogaGkgZGVmIGxpbmsgbGV4UGF0VGFnCVNwZWNpYWwKK2hpIGRlZiBsaW5rIGxleFBhdFRhZ1pvbmUJbGV4UGF0VGFnCiBoaSBkZWYgbGluayBsZXhTZXAJCURlbGltaXRlcgoraGkgZGVmIGxpbmsgbGV4U2xhc2hRdW90ZQlsZXhQYXQKIGhpIGRlZiBsaW5rIGxleFN0YXJ0U3RhdGUJU3RhdGVtZW50CiAKIGxldCBiOmN1cnJlbnRfc3ludGF4ID0gImxleCIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3Byb2dyZXNzLnZpbSBiL3J1bnRpbWUvc3ludGF4L3Byb2dyZXNzLnZpbQppbmRleCAxOTBhMGYzLi44NWE1NGE2IDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9wcm9ncmVzcy52aW0KKysrIGIvcnVudGltZS9zeW50YXgvcHJvZ3Jlc3MudmltCkBAIC0zLDEzICszLDEzIEBACiAiIEZpbGVuYW1lIGV4dGVuc2lvbnM6CSoucCAoY29sbGlkZXMgd2l0aCBQYXNjYWwpLAogIgkJCSouaSAoY29sbGlkZXMgd2l0aCBhc3NlbWJsZXIpCiAiCQkJKi53IChjb2xsaWRlcyB3aXRoIGN3ZWIpCi0iIE1haW50YWluZXI6CQlQaGlsaXAgVXJlbgk8cGhpbHVTUEFYQGllZWUub3JnPiBSZW1vdmUgU1BBWCBzcGFtIGJsb2NrCi0iIENvbnRyaWJ1dG9yczogICAgICAgICBDaHJpcyBSdXByZWNodAk8Y2hyaXNAcnVwcmVjaHQub3JnPgotIgkJCQkJUGhpbGlwIFVyZW4JCTxwaGlsdUBjb21wdXRlci5vcmc+Ci0iCQkJCQlNaWtoYWlsIEt1cGVyYmx1bQk8bWlraGFpbEB3aGFzdXAuY29tPgotIgkJCQkJSm9obiBGbG9yaWFuCQk8amZsb3JpYW5Adm95YWdlci5uZXQ+Ci0iIFZlcnNpb246ICAgICAgICAgICAgICAxMgotIiBMYXN0IENoYW5nZToJCUF1ZyAxNiAyMDEyCisiIE1haW50YWluZXI6CQlQaGlsaXAgVXJlbgkJPHBoaWx1U1BBWFlAaWVlZS5vcmc+IFJlbW92ZSBTUEFYWSBzcGFtIGJsb2NrCisiIENvbnRyaWJ1dG9yczogICAgICAgICBNYXR0aGV3IFN0aWNrbmV5CTxtdHN0aWNrbmV5U1BBWFlAZ21haWwuY29tPgorIiAJCQlDaHJpcyBSdXByZWNodAkJPGNocmlzU1BBWFlAcnVwcmVjaHQub3JnPgorIgkJCU1pa2hhaWwgS3VwZXJibHVtCTxtaWtoYWlsU1BBWFlAd2hhc3VwLmNvbT4KKyIJCQlKb2huIEZsb3JpYW4JCTxqZmxvcmlhblNQQVhZQHZveWFnZXIubmV0PgorIiBWZXJzaW9uOiAgICAgICAgICAgICAgMTMKKyIgTGFzdCBDaGFuZ2U6CQlOb3YgMTEgMjAxMgogCiAiIEZvciB2ZXJzaW9uIDUueDogQ2xlYXIgYWxsIHN5bnRheCBpdGVtCiAiIEZvciB2ZXJzaW9uIDYueDogUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkCkBAIC05OSw4ICs5OSw4IEBACiAiIFN0cmluZ3MuIEhhbmRsZXMgZW1iZWRkZWQgcXVvdGVzLgogIiBOb3RlIHRoYXQsIGZvciBzb21lIHJlYXNvbiwgUHJvZ3Jlc3MgZG9lc24ndCB1c2UgdGhlIGJhY2tzbGFzaCwgIlwiCiAiIGFzIHRoZSBlc2NhcGUgY2hhcmFjdGVyOyBpdCB1c2VzIHRpbGRlLCAifiIuCi1zeW4gcmVnaW9uIFByb2dyZXNzU3RyaW5nCW1hdGNoZ3JvdXA9UHJvZ3Jlc3NRdW90ZQlzdGFydD0rIisgZW5kPSsiKwlza2lwPStcfidcfFx+XH4rIGNvbnRhaW5zPUBTcGVsbAotc3luIHJlZ2lvbiBQcm9ncmVzc1N0cmluZwltYXRjaGdyb3VwPVByb2dyZXNzUXVvdGUJc3RhcnQ9KycrIGVuZD0rJysJc2tpcD0rXH4nXHxcflx+KyBjb250YWlucz1AU3BlbGwKK3N5biByZWdpb24gUHJvZ3Jlc3NTdHJpbmcgbWF0Y2hncm91cD1Qcm9ncmVzc1F1b3RlIHN0YXJ0PSsiKyBlbmQ9KyIrIHNraXA9K1x+J1x8XH5cflx8XH4iKyBjb250YWlucz1AU3BlbGwKK3N5biByZWdpb24gUHJvZ3Jlc3NTdHJpbmcgbWF0Y2hncm91cD1Qcm9ncmVzc1F1b3RlIHN0YXJ0PSsnKyBlbmQ9KycrIHNraXA9K1x+J1x8XH5cflx8XH4iKyBjb250YWlucz1AU3BlbGwKIAogc3luIG1hdGNoICBQcm9ncmVzc0lkZW50aWZpZXIJCSJcPFthLXpBLVpfXVthLXpBLVowLTlfXSpcPigpIgogCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9yc3QudmltIGIvcnVudGltZS9zeW50YXgvcnN0LnZpbQppbmRleCBiM2YzN2Q0Li5iNjgwODk3IDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9yc3QudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3JzdC52aW0KQEAgLTEsNyArMSw3IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZTogICAgICAgICByZVN0cnVjdHVyZWRUZXh0IGRvY3VtZW50YXRpb24gZm9ybWF0CiAiIE1haW50YWluZXI6ICAgICAgIE5pa29sYWkgV2VpYnVsbCA8bm93QGJpdHdpLnNlPgotIiBMYXRlc3QgUmV2aXNpb246ICAyMDEyLTA4LTA1CisiIExhdGVzdCBSZXZpc2lvbjogIDIwMTItMTEtMDEKIAogaWYgZXhpc3RzKCJiOmN1cnJlbnRfc3ludGF4IikKICAgZmluaXNoCkBAIC0xMzksNiArMTM5LDI3IEBACiAiIHRob3VnaC4KIHN5biBzeW5jIG1pbmxpbmVzPTUwIGxpbmVicmVha3M9MQogCitzeW4gcmVnaW9uIHJzdENvZGVCbG9jayBjb250YWluZWQgbWF0Y2hncm91cD1yc3REaXJlY3RpdmUKKyAgICAgIFwgc3RhcnQ9K1wlKHNvdXJjZWNvZGVcfGNvZGVcJSgtYmxvY2tcKVw9XCk6OlxzKworICAgICAgXCBza2lwPSteJCsKKyAgICAgIFwgZW5kPSteXHNcQCErIAorICAgICAgXCBjb250YWlucz1ATm9TcGVsbAorc3luIGNsdXN0ZXIgcnN0RGlyZWN0aXZlcyBhZGQ9cnN0Q29kZUJsb2NrCisKK2lmICFleGlzdHMoJ2c6cnN0X3N5bnRheF9jb2RlX2xpc3QnKQorICAgIGxldCBnOnJzdF9zeW50YXhfY29kZV9saXN0ID0gWyd2aW0nLCAnamF2YScsICdjcHAnLCAnbGlzcCcsICdwaHAnLCAncHl0aG9uJywgJ3BlcmwnXQorZW5kaWYKKworZm9yIGNvZGUgaW4gZzpyc3Rfc3ludGF4X2NvZGVfbGlzdAorICAgIHVubGV0ISBiOmN1cnJlbnRfc3ludGF4CisgICAgZXhlICdzeW4gaW5jbHVkZSBAcnN0Jy5jb2RlLicgc3ludGF4LycuY29kZS4nLnZpbScKKyAgICBleGUgJ3N5biByZWdpb24gcnN0RGlyZWN0aXZlJy5jb2RlLicgbWF0Y2hncm91cD1yc3REaXJlY3RpdmUgZm9sZCAnCisgICAgICAgICAgICAgICAgXC4nc3RhcnQ9I1wlKHNvdXJjZWNvZGVcfGNvZGVcJSgtYmxvY2tcKVw9XCk6OlxzXCsnLmNvZGUuJ1xzKiQjICcKKyAgICAgICAgICAgICAgICBcLidza2lwPSNeJCMgJworICAgICAgICAgICAgICAgIFwuJ2VuZD0jXlxzXEAhIyBjb250YWlucz1ATm9TcGVsbCxAcnN0Jy5jb2RlCisgICAgZXhlICdzeW4gY2x1c3RlciByc3REaXJlY3RpdmVzIGFkZD1yc3REaXJlY3RpdmUnLmNvZGUKK2VuZGZvcgorCiBoaSBkZWYgbGluayByc3RUb2RvICAgICAgICAgICAgICAgICAgICAgICAgIFRvZG8KIGhpIGRlZiBsaW5rIHJzdENvbW1lbnQgICAgICAgICAgICAgICAgICAgICAgQ29tbWVudAogaGkgZGVmIGxpbmsgcnN0U2VjdGlvbnMgICAgICAgICAgICAgICAgICAgICBUaXRsZQpAQCAtMTY4LDYgKzE4OSw3IEBACiBoaSBkZWYgbGluayByc3RDaXRhdGlvblJlZmVyZW5jZSAgICAgICAgICAgIElkZW50aWZpZXIKIGhpIGRlZiBsaW5rIHJzdEh5cGVyTGlua1JlZmVyZW5jZSAgICAgICAgICAgSWRlbnRpZmllcgogaGkgZGVmIGxpbmsgcnN0U3RhbmRhbG9uZUh5cGVybGluayAgICAgICAgICBJZGVudGlmaWVyCitoaSBkZWYgbGluayByc3RDb2RlQmxvY2sgICAgICAgICAgICAgICAgICAgIFN0cmluZwogCiBsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJyc3QiCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3NoLnZpbSBiL3J1bnRpbWUvc3ludGF4L3NoLnZpbQppbmRleCAzNTVlOGViLi5mM2M3NjA0IDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9zaC52aW0KKysrIGIvcnVudGltZS9zeW50YXgvc2gudmltCkBAIC0xLDkgKzEsOSBAQAogIiBWaW0gc3ludGF4IGZpbGUKICIgTGFuZ3VhZ2U6CQlzaGVsbCAoc2gpIEtvcm4gc2hlbGwgKGtzaCkgYmFzaCAoc2gpCi0iIE1haW50YWluZXI6CQlEci4gQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuICA8TmRyT2NoaXBTQFBjYW1wYmVsbEFmYW1pbHkuTWJpej4KKyIgTWFpbnRhaW5lcjoJCUNoYXJsZXMgRS4gQ2FtcGJlbGwgIDxOZHJPY2hpcFNAUGNhbXBiZWxsQWZhbWlseS5NYml6PgogIiBQcmV2aW91cyBNYWludGFpbmVyOglMZW5uYXJ0IFNjaHVsdHogPExlbm5hcnQuU2NodWx0ekBlY213Zi5pbnQ+Ci0iIExhc3QgQ2hhbmdlOgkJTWFyIDE5LCAyMDEyCi0iIFZlcnNpb246CQkxMjIKKyIgTGFzdCBDaGFuZ2U6CQlOb3YgMTQsIDIwMTIKKyIgVmVyc2lvbjoJCTEyOAogIiBVUkw6CQlodHRwOi8vbXlzaXRlLnZlcml6b24ubmV0L2FzdHJvbmF1dC92aW0vaW5kZXguaHRtbCN2aW1saW5rc19zeW50YXgKICIgRm9yIG9wdGlvbnMgYW5kIHNldHRpbmdzLCBwbGVhc2UgdXNlOiAgICAgIDpoZWxwIGZ0LXNoLXN5bnRheAogIiBUaGlzIGZpbGUgaW5jbHVkZXMgbWFueSBpZGVhcyBmcm9tID9yaWMgQnJ1bmV0IChlcmljLmJydW5ldEBlbnMuZnIpCkBAIC0xNywxNSArMTcsMTggQEAKIGVuZGlmCiAKICIgQUZBSUNUICIuIiBzaG91bGQgYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBpc2tleXdvcmQuICBVc2luZyBpc2tleXdvcmRzIGluCi0iIHN5bnRheCBpcyBkaWNleSwgc28gdGhlIGZvbGxvd2luZyBjb2RlIHBlcm1pdHMgdGhlIHVzZXIgdG8gcHJldmVudC9vdmVycmlkZQotIiBpdHMgc2V0dGluZy4KLWlmIGV4aXN0cygiZzpzaF9pc2siKSAgICAgICAgICAiIG92ZXJyaWRlIHN1cHBvcnQKLSBleGUgInNldGxvY2FsIGlzaz0iLmc6c2hfaXNrCi1lbHNlaWYgIWV4aXN0cygiZzpzaF9ub2lzayIpICAgIiBwcmV2ZW50IG1vZGlmaWNhdGlvbiBzdXBwb3J0Ci0gc2V0bG9jYWwgaXNrKz0uCisiIHN5bnRheCBpcyBkaWNleSwgc28gdGhlIGZvbGxvd2luZyBjb2RlIHBlcm1pdHMgdGhlIHVzZXIgdG8KKyIgIGc6c2hfaXNrIHNldCB0byBhIHN0cmluZwk6IHNwZWNpZnkgaXNrZXl3b3JkLgorIiAgZzpzaF9ub2lzayBleGlzdHMJOiBkb24ndCBjaGFuZ2UgaXNrZXl3b3JkCisiICBnOnNoX25vaXNrIGRvZXMgbm90IGV4aXN0CTogKGRlZmF1bHQpIGFwcGVuZCAiLiIgdG8gaXNrZXl3b3JkCitpZiBleGlzdHMoImc6c2hfaXNrIikgJiYgdHlwZShnOnNoX2lzaykgPT0gMQkiIHVzZXIgc3BlY2lmeWluZyBpc2tleXdvcmQKKyBleGUgInNldGwgaXNrPSIuZzpzaF9pc2sKK2Vsc2VpZiAhZXhpc3RzKCJnOnNoX25vaXNrIikJCSIgb3B0aW9uYWxseSBwcmV2ZW50IGFwcGVuZGluZyAnLicgdG8gaXNrZXl3b3JkCisgc2V0bCBpc2srPS4KIGVuZGlmCiAKICIgdHJ5aW5nIHRvIGFuc3dlciB0aGUgcXVlc3Rpb246IHdoaWNoIHNoZWxsIGlzIC9iaW4vc2gsIHJlYWxseT8KKyIgSWYgdGhlIHVzZXIgaGFzIG5vdCBzcGVjaWZpZWQgYW55IG9mIGc6aXNfa29ybnNoZWxsLCBnOmlzX2Jhc2gsIGc6aXNfcG9zaXgsIGc6aXNfc2gsIHRoZW4gZ3Vlc3MuCiBpZiAhZXhpc3RzKCJnOmlzX2tvcm5zaGVsbCIpICYmICFleGlzdHMoImc6aXNfYmFzaCIpICYmICFleGlzdHMoImc6aXNfcG9zaXgiKSAmJiAhZXhpc3RzKCJnOmlzX3NoIikKICBpZiBleGVjdXRhYmxlKCIvYmluL3NoIikKICAgaWYgICAgIHJlc29sdmUoIi9iaW4vc2giKSA9fiAnYmFzaCQnCkBAIC03NiwxNiArNzksMTkgQEAKICBlY2hvbXNnICJJZ25vcmluZyBnOnNoX2ZvbGRfZW5hYmxlZD0iLmc6c2hfZm9sZF9lbmFibGVkLiI7IG5lZWQgdG8gcmUtY29tcGlsZSB2aW0gZm9yICtmb2xkIHN1cHBvcnQiCiBlbmRpZgogaWYgIWV4aXN0cygiczpzaF9mb2xkX2Z1bmN0aW9ucyIpCi0gbGV0IHM6c2hfZm9sZF9mdW5jdGlvbnMgPSAxCisgbGV0IHM6c2hfZm9sZF9mdW5jdGlvbnM9IGFuZChnOnNoX2ZvbGRfZW5hYmxlZCwxKQogZW5kaWYKIGlmICFleGlzdHMoInM6c2hfZm9sZF9oZXJlZG9jIikKLSBsZXQgczpzaF9mb2xkX2hlcmVkb2MgICA9IDIKKyBsZXQgczpzaF9mb2xkX2hlcmVkb2MgID0gYW5kKGc6c2hfZm9sZF9lbmFibGVkLDIpCiBlbmRpZgogaWYgIWV4aXN0cygiczpzaF9mb2xkX2lmZG9mb3IiKQotIGxldCBzOnNoX2ZvbGRfaWZkb2ZvciAgID0gNAorIGxldCBzOnNoX2ZvbGRfaWZkb2ZvciAgPSBhbmQoZzpzaF9mb2xkX2VuYWJsZWQsNCkKIGVuZGlmCiBpZiBnOnNoX2ZvbGRfZW5hYmxlZCAmJiAmZmRtID09ICJtYW51YWwiCi0gc2V0bG9jYWwgZmRtPXN5bnRheAorICIgR2l2ZW4gdGhhdAl0aGUJdXNlciBwcm92aWRlZCBnOnNoX2ZvbGRfZW5hYmxlZAorICIgCUFORAlnOnNoX2ZvbGRfZW5hYmxlZCBpcyBtYW51YWwgKHVzdWFsIGRlZmF1bHQpCisgIiAJaW1wbGllcwlhIGRlc2lyZSBmb3Igc3ludGF4LWJhc2VkIGZvbGRpbmcKKyBzZXRsIGZkbT1zeW50YXgKIGVuZGlmCiAKICIgc2ggc3ludGF4IGlzIGNhc2Ugc2Vuc2l0aXZlIHt7ezEKQEAgLTEwMiwxMiArMTA4LDEyIEBACiBzeW4gY2x1c3RlciBzaENhc2VFc2FjTGlzdAljb250YWlucz1zaENhc2VTdGFydCxzaENhc2Usc2hDYXNlQmFyLHNoQ2FzZUluLHNoQ29tbWVudCxzaERlcmVmLHNoRGVyZWZTaW1wbGUsc2hDYXNlQ29tbWFuZFN1YixzaENhc2VFeFNpbmdsZVF1b3RlLHNoQ2FzZVNpbmdsZVF1b3RlLHNoQ2FzZURvdWJsZVF1b3RlLHNoQ3RybFNlcSxAc2hFcnJvckxpc3Qsc2hTdHJpbmdTcGVjaWFsLHNoQ2FzZVJhbmdlCiBzeW4gY2x1c3RlciBzaENhc2VMaXN0CWNvbnRhaW5zPUBzaENvbW1hbmRTdWJMaXN0LHNoQ2FzZUVzYWMsc2hDb2xvbixzaENvbW1hbmRTdWIsc2hDb21tZW50LHNoRG8sc2hFY2hvLHNoRXhwcixzaEZvcixzaEhlcmVEb2Msc2hJZixzaFJlZGlyLHNoU2V0TGlzdCxzaFNvdXJjZSxzaFN0YXRlbWVudCxzaFZhcmlhYmxlLHNoQ3RybFNlcQogInN5biBjbHVzdGVyIHNoQ29sb25MaXN0CWNvbnRhaW5zPUBzaENhc2VMaXN0Ci1zeW4gY2x1c3RlciBzaENvbW1hbmRTdWJMaXN0CWNvbnRhaW5zPXNoQXJpdGhtZXRpYyxzaERlcmVmLHNoRGVyZWZTaW1wbGUsc2hFc2NhcGUsc2hOdW1iZXIsc2hPcGVyYXRvcixzaFBvc25QYXJtLHNoRXhTaW5nbGVRdW90ZSxzaFNpbmdsZVF1b3RlLHNoRXhEb3VibGVRdW90ZSxzaERvdWJsZVF1b3RlLHNoU3RhdGVtZW50LHNoVmFyaWFibGUsc2hTdWJTaCxzaEFsaWFzLHNoVGVzdCxzaEN0cmxTZXEsc2hTcGVjaWFsCitzeW4gY2x1c3RlciBzaENvbW1hbmRTdWJMaXN0CWNvbnRhaW5zPXNoQXJpdGhtZXRpYyxzaERlcmVmLHNoRGVyZWZTaW1wbGUsc2hFc2NhcGUsc2hOdW1iZXIsc2hPcGVyYXRvcixzaFBvc25QYXJtLHNoRXhTaW5nbGVRdW90ZSxzaFNpbmdsZVF1b3RlLHNoRXhEb3VibGVRdW90ZSxzaERvdWJsZVF1b3RlLHNoU3RhdGVtZW50LHNoVmFyaWFibGUsc2hTdWJTaCxzaEFsaWFzLHNoVGVzdCxzaEN0cmxTZXEsc2hTcGVjaWFsLHNoQ21kUGFyZW5SZWdpb24KIHN5biBjbHVzdGVyIHNoQ3VybHlMaXN0CWNvbnRhaW5zPXNoTnVtYmVyLHNoQ29tbWEsc2hEZXJlZixzaERlcmVmU2ltcGxlLHNoRGVyZWZTcGVjaWFsCi1zeW4gY2x1c3RlciBzaERibFF1b3RlTGlzdAljb250YWlucz1zaENvbW1hbmRTdWIsc2hEZXJlZixzaERlcmVmU2ltcGxlLHNoUG9zblBhcm0sc2hDdHJsU2VxLHNoU3BlY2lhbAorc3luIGNsdXN0ZXIgc2hEYmxRdW90ZUxpc3QJY29udGFpbnM9c2hDb21tYW5kU3ViLHNoRGVyZWYsc2hEZXJlZlNpbXBsZSxzaEVzY2FwZSxzaFBvc25QYXJtLHNoQ3RybFNlcSxzaFNwZWNpYWwKIHN5biBjbHVzdGVyIHNoRGVyZWZMaXN0CWNvbnRhaW5zPXNoRGVyZWYsc2hEZXJlZlNpbXBsZSxzaERlcmVmVmFyLHNoRGVyZWZTcGVjaWFsLHNoRGVyZWZXb3JkRXJyb3Isc2hEZXJlZlBQUwogc3luIGNsdXN0ZXIgc2hEZXJlZlZhckxpc3QJY29udGFpbnM9c2hEZXJlZk9wLHNoRGVyZWZWYXJBcnJheSxzaERlcmVmT3BFcnJvcgotc3luIGNsdXN0ZXIgc2hFY2hvTGlzdAljb250YWlucz1zaEFyaXRobWV0aWMsc2hDb21tYW5kU3ViLHNoRGVyZWYsc2hEZXJlZlNpbXBsZSxzaEV4cHIsc2hFeFNpbmdsZVF1b3RlLHNoRXhEb3VibGVRdW90ZSxzaFNpbmdsZVF1b3RlLHNoRG91YmxlUXVvdGUsc2hDdHJsU2VxLHNoRWNob1F1b3RlCitzeW4gY2x1c3RlciBzaEVjaG9MaXN0CWNvbnRhaW5zPXNoQXJpdGhtZXRpYyxzaENvbW1hbmRTdWIsc2hEZXJlZixzaERlcmVmU2ltcGxlLHNoRXNjYXBlLHNoRXhwcixzaEV4U2luZ2xlUXVvdGUsc2hFeERvdWJsZVF1b3RlLHNoU2luZ2xlUXVvdGUsc2hEb3VibGVRdW90ZSxzaEN0cmxTZXEsc2hFY2hvUXVvdGUKIHN5biBjbHVzdGVyIHNoRXhwckxpc3QxCWNvbnRhaW5zPXNoQ2hhckNsYXNzLHNoTnVtYmVyLHNoT3BlcmF0b3Isc2hFeFNpbmdsZVF1b3RlLHNoRXhEb3VibGVRdW90ZSxzaFNpbmdsZVF1b3RlLHNoRG91YmxlUXVvdGUsc2hFeHByLHNoRGJsQnJhY2Usc2hEZXJlZixzaERlcmVmU2ltcGxlLHNoQ3RybFNlcQogc3luIGNsdXN0ZXIgc2hFeHByTGlzdDIJY29udGFpbnM9QHNoRXhwckxpc3QxLEBzaENhc2VMaXN0LHNoVGVzdAogc3luIGNsdXN0ZXIgc2hGdW5jdGlvbkxpc3QJY29udGFpbnM9QHNoQ29tbWFuZFN1Ykxpc3Qsc2hDYXNlRXNhYyxzaENvbG9uLHNoQ29tbWFuZFN1YixzaENvbW1lbnQsc2hEbyxzaEVjaG8sc2hFeHByLHNoRm9yLHNoSGVyZURvYyxzaElmLHNoT3B0aW9uLHNoUmVkaXIsc2hTZXRMaXN0LHNoU291cmNlLHNoU3RhdGVtZW50LHNoVmFyaWFibGUsc2hPcGVyYXRvcixzaEN0cmxTZXEKQEAgLTE2MCw3ICsxNjYsNyBAQAogCiAiIE9wdGlvbnM6IHt7ezEKICIgPT09PT09PT09PT09PT09PT09PT0KLXN5biBtYXRjaCAgIHNoT3B0aW9uCSJcc1x6c1stK11bLV9hLXpBLVowLTldXCtcPiIKK3N5biBtYXRjaCAgIHNoT3B0aW9uCSJcc1x6c1stK11bLV9hLXpBLVowLTkjXVwrIgogc3luIG1hdGNoICAgc2hPcHRpb24JIlxzXHpzLS1bXiBcdCRgJyJ8XVwrIgogCiAiIEZpbGUgUmVkaXJlY3Rpb24gSGlnaGxpZ2h0ZWQgQXMgT3BlcmF0b3JzOiB7e3sxCkBAIC0yMDQsMTQgKzIxMCwxNSBAQAogCiAiIExvb3BzOiBkbywgaWYsIHdoaWxlLCB1bnRpbCB7e3sxCiAiID09PT09PQotaWYgKGc6c2hfZm9sZF9lbmFibGVkICUgKHM6c2hfZm9sZF9pZmRvZm9yICogMikpL3M6c2hfZm9sZF9pZmRvZm9yCitpZiBzOnNoX2ZvbGRfaWZkb2ZvcgogIHN5biByZWdpb24gc2hEbwlmb2xkIHRyYW5zcGFyZW50IG1hdGNoZ3JvdXA9c2hDb25kaXRpb25hbCBzdGFydD0iXDxkb1w+IiBtYXRjaGdyb3VwPXNoQ29uZGl0aW9uYWwgZW5kPSJcPGRvbmVcPiIgY29udGFpbnM9QHNoTG9vcExpc3QKICBzeW4gcmVnaW9uIHNoSWYJZm9sZCB0cmFuc3BhcmVudCBtYXRjaGdyb3VwPXNoQ29uZGl0aW9uYWwgc3RhcnQ9Ilw8aWZcX3MiIG1hdGNoZ3JvdXA9c2hDb25kaXRpb25hbCBza2lwPSstZmlcPisgZW5kPSJcPDtcX3MqdGhlblw+IiBlbmQ9Ilw8ZmlcPiIgICBjb250YWlucz1Ac2hJZkxpc3QKLSBzeW4gcmVnaW9uIHNoRm9yCWZvbGQgbWF0Y2hncm91cD1zaExvb3Agc3RhcnQ9Ilw8Zm9yXF9zIiBlbmQ9Ilw8aW5cX3MiIGVuZD0iXDxkb1w+Im1lPWUtMgljb250YWlucz1Ac2hMb29wTGlzdCxzaERibFBhcmVuIHNraXB3aGl0ZSBuZXh0Z3JvdXA9c2hDdXJseUluCisgc3luIHJlZ2lvbiBzaEZvcglmb2xkIG1hdGNoZ3JvdXA9c2hMb29wIHN0YXJ0PSJcPGZvclx6ZVxfc1xzKlwlKCgoXClcQCEiIGVuZD0iXDxpblxfcyIgZW5kPSJcPGRvXD4ibWU9ZS0yCWNvbnRhaW5zPUBzaExvb3BMaXN0LHNoRGJsUGFyZW4gc2tpcHdoaXRlIG5leHRncm91cD1zaEN1cmx5SW4KIGVsc2UKICBzeW4gcmVnaW9uIHNoRG8JdHJhbnNwYXJlbnQgbWF0Y2hncm91cD1zaENvbmRpdGlvbmFsIHN0YXJ0PSJcPGRvXD4iIG1hdGNoZ3JvdXA9c2hDb25kaXRpb25hbCBlbmQ9Ilw8ZG9uZVw+IiBjb250YWlucz1Ac2hMb29wTGlzdAogIHN5biByZWdpb24gc2hJZgl0cmFuc3BhcmVudCBtYXRjaGdyb3VwPXNoQ29uZGl0aW9uYWwgc3RhcnQ9Ilw8aWZcX3MiIG1hdGNoZ3JvdXA9c2hDb25kaXRpb25hbCBza2lwPSstZmlcPisgZW5kPSJcPDtcX3MqdGhlblw+IiBlbmQ9Ilw8ZmlcPiIgICBjb250YWlucz1Ac2hJZkxpc3QKLSBzeW4gcmVnaW9uIHNoRm9yCW1hdGNoZ3JvdXA9c2hMb29wIHN0YXJ0PSJcPGZvclxfcyIgZW5kPSJcPGluXD4iIGVuZD0iXDxkb1w+Im1lPWUtMgljb250YWlucz1Ac2hMb29wTGlzdCxzaERibFBhcmVuIHNraXB3aGl0ZSBuZXh0Z3JvdXA9c2hDdXJseUluCisgc3luIHJlZ2lvbiBzaEZvcgltYXRjaGdyb3VwPXNoTG9vcCBzdGFydD0iXDxmb3JcemVcX3NccypcJSgoKFwpXEAhIiBlbmQ9Ilw8aW5cPiIgZW5kPSJcPGRvXD4ibWU9ZS0yCWNvbnRhaW5zPUBzaExvb3BMaXN0LHNoRGJsUGFyZW4gc2tpcHdoaXRlIG5leHRncm91cD1zaEN1cmx5SW4KKyBzeW4gbWF0Y2ggIHNoRm9yUFAJJ1w8Zm9yXD5cemVcX3MqKCgnCiBlbmRpZgogaWYgZXhpc3RzKCJiOmlzX2tvcm5zaGVsbCIpIHx8IGV4aXN0cygiYjppc19iYXNoIikKICBzeW4gY2x1c3RlciBzaENhc2VMaXN0CWFkZD1zaFJlcGVhdApAQCAtMjMwLDcgKzIzNyw3IEBACiAiID09PT0KIHN5biBtYXRjaCAgIHNoQ2FzZUJhcgljb250YWluZWQgc2tpcHdoaXRlICJcKF5cfFteXFxdXClcKFxcXFxcKSpcenN8IgkJbmV4dGdyb3VwPXNoQ2FzZSxzaENhc2VTdGFydCxzaENhc2VCYXIsc2hDb21tZW50LHNoQ2FzZUV4U2luZ2xlUXVvdGUsc2hDYXNlU2luZ2xlUXVvdGUsc2hDYXNlRG91YmxlUXVvdGUKIHN5biBtYXRjaCAgIHNoQ2FzZVN0YXJ0CWNvbnRhaW5lZCBza2lwd2hpdGUgc2tpcG5sICIoIgkJCW5leHRncm91cD1zaENhc2Usc2hDYXNlQmFyCi1pZiAoZzpzaF9mb2xkX2VuYWJsZWQgJSAoczpzaF9mb2xkX2lmZG9mb3IgKiAyKSkvczpzaF9mb2xkX2lmZG9mb3IKK2lmIHM6c2hfZm9sZF9pZmRvZm9yCiAgc3luIHJlZ2lvbiAgc2hDYXNlCWZvbGQgY29udGFpbmVkIHNraXB3aGl0ZSBza2lwbmwgbWF0Y2hncm91cD1zaFNuZ2xDYXNlIHN0YXJ0PSJcJShcXC5cfFteIyQoKSciIFx0XVwpXHstfVx6cykiICBlbmQ9Ijs7IiBlbmQ9ImVzYWMibWU9cy0xIGNvbnRhaW5zPUBzaENhc2VMaXN0IG5leHRncm91cD1zaENhc2VTdGFydCxzaENhc2Usc2hDb21tZW50CiAgc3luIHJlZ2lvbiAgc2hDYXNlRXNhYwlmb2xkIG1hdGNoZ3JvdXA9c2hDb25kaXRpb25hbCBzdGFydD0iXDxjYXNlXD4iIGVuZD0iXDxlc2FjXD4iCWNvbnRhaW5zPUBzaENhc2VFc2FjTGlzdAogZWxzZQpAQCAtMjQ2LDEzICsyNTMsMTcgQEAKIHN5biByZWdpb24gIHNoQ2FzZVNpbmdsZVF1b3RlCW1hdGNoZ3JvdXA9c2hRdW90ZSBzdGFydD0rJysgZW5kPSsnKwkJY29udGFpbnM9c2hTdHJpbmdTcGVjaWFsCQlza2lwd2hpdGUgc2tpcG5sIG5leHRncm91cD1zaENhc2VCYXIJY29udGFpbmVkCiBzeW4gcmVnaW9uICBzaENhc2VEb3VibGVRdW90ZQltYXRjaGdyb3VwPXNoUXVvdGUgc3RhcnQ9KyIrIHNraXA9K1xcXFxcfFxcLisgZW5kPSsiKwljb250YWlucz1Ac2hEYmxRdW90ZUxpc3Qsc2hTdHJpbmdTcGVjaWFsCXNraXB3aGl0ZSBza2lwbmwgbmV4dGdyb3VwPXNoQ2FzZUJhcgljb250YWluZWQKIHN5biByZWdpb24gIHNoQ2FzZUNvbW1hbmRTdWIJc3RhcnQ9K2ArIHNraXA9K1xcXFxcfFxcLisgZW5kPStgKwkJY29udGFpbnM9QHNoQ29tbWFuZFN1Ykxpc3QJCXNraXB3aGl0ZSBza2lwbmwgbmV4dGdyb3VwPXNoQ2FzZUJhcgljb250YWluZWQKLXN5biByZWdpb24gIHNoQ2FzZVJhbmdlCW1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PStcWysgc2tpcD0rXFxcXCsgZW5kPStdKwljb250YWluZWQKLQoraWYgZXhpc3RzKCJiOmlzX2Jhc2giKQorIHN5biByZWdpb24gIHNoQ2FzZVJhbmdlCW1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PStcWysgc2tpcD0rXFxcXCsgZW5kPStcXSsJY29udGFpbmVkCWNvbnRhaW5zPXNoQ2hhckNsYXNzCisgc3luIG1hdGNoICAgc2hDaGFyQ2xhc3MJJ1xbOlwlKGFsbnVtXHxhbHBoYVx8YXNjaWlcfGJsYW5rXHxjbnRybFx8ZGlnaXRcfGdyYXBoXHxsb3dlclx8cHJpbnRcfHB1bmN0XHxzcGFjZVx8dXBwZXJcfHdvcmRcfG9yXHx4ZGlnaXRcKTpcXScJCQljb250YWluZWQKK2Vsc2UKKyBzeW4gcmVnaW9uICBzaENhc2VSYW5nZQltYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0rXFsrIHNraXA9K1xcXFwrIGVuZD0rXF0rCWNvbnRhaW5lZAorZW5kaWYKICIgTWlzYzoge3t7MQogIj09PT09PQogc3luIG1hdGNoICAgc2hXcmFwTGluZU9wZXJhdG9yICJcXCQiCi1zeW4gcmVnaW9uICBzaENvbW1hbmRTdWIgICBzdGFydD0iYCIgc2tpcD0iXFxcXFx8XFwuIiBlbmQ9ImAiIGNvbnRhaW5zPUBzaENvbW1hbmRTdWJMaXN0Ci1zeW4gbWF0Y2ggICBzaEVzY2FwZQljb250YWluZWQJJ1xcLicgICAgICAgICBjb250YWlucz1Ac2hDb21tYW5kU3ViTGlzdAorc3luIHJlZ2lvbiAgc2hDb21tYW5kU3ViICAgc3RhcnQ9ImAiIHNraXA9IlxcXFxcfFxcLiIgZW5kPSJgIgljb250YWlucz1Ac2hDb21tYW5kU3ViTGlzdAorc3luIG1hdGNoICAgc2hFc2NhcGUJY29udGFpbmVkCSdcJShcXFxcXCkqXFwuJwogCiAiICQoKSBhbmQgJCgoKSk6IHt7ezEKICIgJCguLikgaXMgbm90IHN1cHBvcnRlZCBieSBzaCAoQm91cm5lIHNoZWxsKS4gIEhvd2V2ZXIsIGFwcGFyZW50bHkKQEAgLTI2OCwyMCArMjc5LDIzIEBACiBlbHNlaWYgIWV4aXN0cygiZzpzaF9ub19lcnJvciIpCiAgc3luIHJlZ2lvbiBzaENvbW1hbmRTdWIgbWF0Y2hncm91cD1FcnJvciBzdGFydD0iXCQoIiBlbmQ9IikiIGNvbnRhaW5zPUBzaENvbW1hbmRTdWJMaXN0CiBlbmRpZgorc3luIHJlZ2lvbiBzaENtZFBhcmVuUmVnaW9uIG1hdGNoZ3JvdXA9c2hDbWRTdWJSZWdpb24gc3RhcnQ9IigiIHNraXA9J1xcXFxcfFxcLicgZW5kPSIpIgljb250YWlucz1Ac2hDb21tYW5kU3ViTGlzdAogCiBpZiBleGlzdHMoImI6aXNfYmFzaCIpCiAgc3luIGNsdXN0ZXIgc2hDb21tYW5kU3ViTGlzdCBhZGQ9YmFzaFNwZWNpYWxWYXJpYWJsZXMsYmFzaFN0YXRlbWVudAogIHN5biBjbHVzdGVyIHNoQ2FzZUxpc3QgYWRkPWJhc2hBZG1pblN0YXRlbWVudCxiYXNoU3RhdGVtZW50CiAgc3luIGtleXdvcmQgYmFzaFNwZWNpYWxWYXJpYWJsZXMgY29udGFpbmVkIGF1dG9fcmVzdW1lIEJBU0ggQkFTSF9BTElBU0VTIEJBU0hfQUxJQVNFUyBCQVNIX0FSR0MgQkFTSF9BUkdDIEJBU0hfQVJHViBCQVNIX0FSR1YgQkFTSF9DTURTIEJBU0hfQ01EUyBCQVNIX0NPTU1BTkQgQkFTSF9DT01NQU5EIEJBU0hfRU5WIEJBU0hfRVhFQ1VUSU9OX1NUUklORyBCQVNIX0VYRUNVVElPTl9TVFJJTkcgQkFTSF9MSU5FTk8gQkFTSF9MSU5FTk8gQkFTSE9QVFMgQkFTSE9QVFMgQkFTSFBJRCBCQVNIUElEIEJBU0hfUkVNQVRDSCBCQVNIX1JFTUFUQ0ggQkFTSF9TT1VSQ0UgQkFTSF9TT1VSQ0UgQkFTSF9TVUJTSEVMTCBCQVNIX1NVQlNIRUxMIEJBU0hfVkVSU0lORk8gQkFTSF9WRVJTSU9OIEJBU0hfWFRSQUNFRkQgQkFTSF9YVFJBQ0VGRCBDRFBBVEggQ09MVU1OUyBDT0xVTU5TIENPTVBfQ1dPUkQgQ09NUF9DV09SRCBDT01QX0tFWSBDT01QX0tFWSBDT01QX0xJTkUgQ09NUF9MSU5FIENPTVBfUE9JTlQgQ09NUF9QT0lOVCBDT01QUkVQTFkgQ09NUFJFUExZIENPTVBfVFlQRSBDT01QX1RZUEUgQ09NUF9XT1JEQlJFQUtTIENPTVBfV09SREJSRUFLUyBDT01QX1dPUkRTIENPTVBfV09SRFMgQ09QUk9DIENPUFJPQyBESVJTVEFDSyBFTUFDUyBFTUFDUyBFTlYgRU5WIEVVSUQgRkNFRElUIEZJR05PUkUgRlVOQ05BTUUgRlVOQ05BTUUgRlVOQ05FU1QgRlVOQ05FU1QgR0xPQklHTk9SRSBHUk9VUFMgaGlzdGNoYXJzIEhJU1RDTUQgSElTVENPTlRST0wgSElTVEZJTEUgSElTVEZJTEVTSVpFIEhJU1RJR05PUkUgSElTVFNJWkUgSElTVFRJTUVGT1JNQVQgSElTVFRJTUVGT1JNQVQgSE9NRSBIT1NURklMRSBIT1NUTkFNRSBIT1NUVFlQRSBJRlMgSUdOT1JFRU9GIElOUFVUUkMgTEFORyBMQ19BTEwgTENfQ09MTEFURSBMQ19DVFlQRSBMQ19DVFlQRSBMQ19NRVNTQUdFUyBMQ19OVU1FUklDIExDX05VTUVSSUMgTElORU5PIExJTkVTIExJTkVTIE1BQ0hUWVBFIE1BSUwgTUFJTENIRUNLIE1BSUxQQVRIIE1BUEZJTEUgTUFQRklMRSBPTERQV0QgT1BUQVJHIE9QVEVSUiBPUFRJTkQgT1NUWVBFIFBBVEggUElQRVNUQVRVUyBQT1NJWExZX0NPUlJFQ1QgUE9TSVhMWV9DT1JSRUNUIFBQSUQgUFJPTVBUX0NPTU1BTkQgUFMxIFBTMiBQUzMgUFM0IFBXRCBSQU5ET00gUkVBRExJTkVfTElORSBSRUFETElORV9MSU5FIFJFQURMSU5FX1BPSU5UIFJFQURMSU5FX1BPSU5UIFJFUExZIFNFQ09ORFMgU0hFTEwgU0hFTEwgU0hFTExPUFRTIFNITFZMIFRJTUVGT1JNQVQgVElNRU9VVCBUTVBESVIgVE1QRElSIFVJRAotIHN5biBrZXl3b3JkIGJhc2hTdGF0ZW1lbnQgY2htb2QgY2xlYXIgY29tcGxldGUgZHUgZWdyZXAgZXhwciBmZ3JlcCBmaW5kIGdudWZpbmQgZ251Z3JlcCBncmVwIGluc3RhbGwgbGVzcyBscyBta2RpciBtdiBybSBybWRpciBycG0gc2VkIHNsZWVwIHNvcnQgc3RyaXAgdGFpbCB0b3VjaAorIHN5biBrZXl3b3JkIGJhc2hTdGF0ZW1lbnQgY2htb2QgY2xlYXIgY29tcGxldGUgZHUgZWdyZXAgZXhwciBmZ3JlcCBmaW5kIGdudWZpbmQgZ251Z3JlcCBncmVwIGxlc3MgbHMgbWtkaXIgbXYgcm0gcm1kaXIgcnBtIHNlZCBzbGVlcCBzb3J0IHN0cmlwIHRhaWwgdG91Y2gKICBzeW4ga2V5d29yZCBiYXNoQWRtaW5TdGF0ZW1lbnQgZGFlbW9uIGtpbGxhbGwga2lsbHByb2MgbmljZSByZWxvYWQgcmVzdGFydCBzdGFydCBzdGF0dXMgc3RvcAorIHN5biBrZXl3b3JkIGJhc2hTdGF0ZW1lbnQJY29tbWFuZCBjb21wZ2VuCiBlbmRpZgogCiBpZiBleGlzdHMoImI6aXNfa29ybnNoZWxsIikKICBzeW4gY2x1c3RlciBzaENvbW1hbmRTdWJMaXN0IGFkZD1rc2hTcGVjaWFsVmFyaWFibGVzLGtzaFN0YXRlbWVudAogIHN5biBjbHVzdGVyIHNoQ2FzZUxpc3QgYWRkPWtzaFN0YXRlbWVudAogIHN5biBrZXl3b3JkIGtzaFNwZWNpYWxWYXJpYWJsZXMgY29udGFpbmVkIENEUEFUSCBDT0xVTU5TIEVESVRPUiBFTlYgRVJSTk8gRkNFRElUIEZQQVRIIEhJU1RGSUxFIEhJU1RTSVpFIEhPTUUgSUZTIExJTkVOTyBMSU5FUyBNQUlMIE1BSUxDSEVDSyBNQUlMUEFUSCBPTERQV0QgT1BUQVJHIE9QVElORCBQQVRIIFBQSUQgUFMxIFBTMiBQUzMgUFM0IFBXRCBSQU5ET00gUkVQTFkgU0VDT05EUyBTSEVMTCBUTU9VVCBWSVNVQUwKLSBzeW4ga2V5d29yZCBrc2hTdGF0ZW1lbnQgY2F0IGNobW9kIGNsZWFyIGNwIGR1IGVncmVwIGV4cHIgZmdyZXAgZmluZCBncmVwIGluc3RhbGwga2lsbGFsbCBsZXNzIGxzIG1rZGlyIG12IG5pY2UgcHJpbnRlbnYgcm0gcm1kaXIgc2VkIHNvcnQgc3RyaXAgc3R0eSB0YWlsIHRvdWNoIHRwdXQKKyBzeW4ga2V5d29yZCBrc2hTdGF0ZW1lbnQgY2F0IGNobW9kIGNsZWFyIGNwIGR1IGVncmVwIGV4cHIgZmdyZXAgZmluZCBncmVwIGtpbGxhbGwgbGVzcyBscyBta2RpciBtdiBuaWNlIHByaW50ZW52IHJtIHJtZGlyIHNlZCBzb3J0IHN0cmlwIHN0dHkgdGFpbCB0b3VjaCB0cHV0Cisgc3luIGtleXdvcmQga3NoU3RhdGVtZW50IGNvbW1hbmQgc2V0Z3JvdXBzIHNldHNlbnYKIGVuZGlmCiAKIHN5biBtYXRjaCAgIHNoU291cmNlCSJeXC5ccyIKQEAgLTMwOSw4ICszMjMsOCBAQAogInN5biByZWdpb24gIHNoRG91YmxlUXVvdGUJbWF0Y2hncm91cD1zaFF1b3RlIHN0YXJ0PSsiKyBza2lwPStcXCIrIGVuZD0rIisJY29udGFpbnM9QHNoRGJsUXVvdGVMaXN0LHNoU3RyaW5nU3BlY2lhbCxAU3BlbGwKIHN5biBtYXRjaCAgIHNoU3RyaW5nU3BlY2lhbAkiW15bOnByaW50Ol0gXHRdIgljb250YWluZWQKIHN5biBtYXRjaCAgIHNoU3RyaW5nU3BlY2lhbAkiXCUoXFxcXFwpKlxcW1xcIidgJCgpI10iCi1zeW4gbWF0Y2ggICBzaFNwZWNpYWwJIlteXFxdXHpzXCUoXFxcXFwpKlxcW1xcIidgJCgpI10iIG5leHRncm91cD1zaE1vcmVTcGVjaWFsCi1zeW4gbWF0Y2ggICBzaFNwZWNpYWwJIl5cJShcXFxcXCkqXFxbXFwiJ2AkKCkjXSIKK3N5biBtYXRjaCAgIHNoU3BlY2lhbAkiW15cXF1cenNcJShcXFxcXCkqXFxbXFwiJ2AkKCkjXSIgbmV4dGdyb3VwPXNoTW9yZVNwZWNpYWwsc2hDb21tZW50CitzeW4gbWF0Y2ggICBzaFNwZWNpYWwJIl5cJShcXFxcXCkqXFxbXFwiJ2AkKCkjXSIJbmV4dGdyb3VwPXNoQ29tbWVudAogc3luIG1hdGNoICAgc2hNb3JlU3BlY2lhbAkiXCUoXFxcXFwpKlxcW1xcIidgJCgpI10iIG5leHRncm91cD1zaE1vcmVTcGVjaWFsIGNvbnRhaW5lZAogCiAiIENvbW1lbnRzOiB7e3sxCkBAIC0zMTksNiArMzMzLDcgQEAKIHN5biBrZXl3b3JkCXNoVG9kbwljb250YWluZWQJCUNPTUJBSyBGSVhNRSBUT0RPIFhYWAogc3luIG1hdGNoCXNoQ29tbWVudAkJIl5ccypcenMjLiokIgljb250YWlucz1Ac2hDb21tZW50R3JvdXAKIHN5biBtYXRjaAlzaENvbW1lbnQJCSJcc1x6cyMuKiQiCWNvbnRhaW5zPUBzaENvbW1lbnRHcm91cAorc3luIG1hdGNoCXNoQ29tbWVudAljb250YWluZWQJIiMuKiQiCWNvbnRhaW5zPUBzaENvbW1lbnRHcm91cAogc3luIG1hdGNoCXNoUXVpY2tDb21tZW50CWNvbnRhaW5lZAkiIy4qJCIKIAogIiBIZXJlIERvY3VtZW50czoge3t7MQpAQCAtMzMxLDUyICszNDYsNTIgQEAKICBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgc3RhcnQ9Ijw8XHMqXCoqXC5cKioiCW1hdGNoZ3JvdXA9c2hSZWRpcgllbmQ9Il5cLiQiCWNvbnRhaW5zPUBzaERibFF1b3RlTGlzdAogIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBzdGFydD0iPDwtXHMqXCoqXC5cKioiCW1hdGNoZ3JvdXA9c2hSZWRpcgllbmQ9Il5ccypcLiQiCWNvbnRhaW5zPUBzaERibFF1b3RlTGlzdAogCi1lbHNlaWYgKGc6c2hfZm9sZF9lbmFibGVkICUgKHM6c2hfZm9sZF9oZXJlZG9jICogMikpL3M6c2hfZm9sZF9oZXJlZG9jCi0gc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIGZvbGQgc3RhcnQ9Ijw8XHMqXHooXFMqXCkiCQltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHoxXHMqJCIJY29udGFpbnM9QHNoRGJsUXVvdGVMaXN0Ci0gc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIGZvbGQgc3RhcnQ9Ijw8XHMqXCJceihcUypcKVwiIgkJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlx6MVxzKiQiCi0gc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIGZvbGQgc3RhcnQ9Ijw8XHMqJ1x6KFxTKlwpJyIJCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIgotIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBmb2xkIHN0YXJ0PSI8PC1ccypceihcUypcKSIJCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5ccypcejFccyokIgljb250YWlucz1Ac2hEYmxRdW90ZUxpc3QKLSBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgZm9sZCBzdGFydD0iPDwtXHMqXCJceihcUypcKVwiIgkJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlxzKlx6MVxzKiQiCi0gc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIGZvbGQgc3RhcnQ9Ijw8LVxzKidceihcUypcKSciCQltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHMqXHoxXHMqJCIKLSBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgZm9sZCBzdGFydD0iPDxccypcXFxfJFxfcypceihcUypcKSIJCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIgotIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBmb2xkIHN0YXJ0PSI8PFxzKlxcXF8kXF9zKlwiXHooXFMqXClcIiIJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlx6MVxzKiQiCi0gc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIGZvbGQgc3RhcnQ9Ijw8LVxzKlxcXF8kXF9zKidceihcUypcKSciCQltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHMqXHoxXHMqJCIKLSBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgZm9sZCBzdGFydD0iPDwtXHMqXFxcXyRcX3MqXHooXFMqXCkiCQltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHMqXHoxXHMqJCIKLSBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgZm9sZCBzdGFydD0iPDwtXHMqXFxcXyRcX3MqXCJceihcUypcKVwiIgltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHMqXHoxXHMqJCIKLSBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgZm9sZCBzdGFydD0iPDxccypcXFxfJFxfcyonXHooXFMqXCknIgkJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlx6MVxzKiQiCi0gc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIGZvbGQgc3RhcnQ9Ijw8XFxceihcUypcKSIJCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIgorZWxzZWlmIHM6c2hfZm9sZF9oZXJlZG9jCisgc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIGZvbGQgc3RhcnQ9Ijw8XHMqXHooW14gXHR8XSpcKSIJCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIgljb250YWlucz1Ac2hEYmxRdW90ZUxpc3QKKyBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgZm9sZCBzdGFydD0iPDxccypcIlx6KFteIFx0fF0qXClcIiIJCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIgorIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBmb2xkIHN0YXJ0PSI8PFxzKidceihbXiBcdHxdKlwpJyIJCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIgorIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBmb2xkIHN0YXJ0PSI8PC1ccypceihbXiBcdHxdKlwpIgkJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlxzKlx6MVxzKiQiCWNvbnRhaW5zPUBzaERibFF1b3RlTGlzdAorIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBmb2xkIHN0YXJ0PSI8PC1ccypcIlx6KFteIFx0fF0qXClcIiIJCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5ccypcejFccyokIgorIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBmb2xkIHN0YXJ0PSI8PC1ccyonXHooW14gXHR8XSpcKSciCQltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHMqXHoxXHMqJCIKKyBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgZm9sZCBzdGFydD0iPDxccypcXFxfJFxfcypceihbXiBcdHxdKlwpIgltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHoxXHMqJCIKKyBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgZm9sZCBzdGFydD0iPDxccypcXFxfJFxfcypcIlx6KFteIFx0fF0qXClcIiIJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlx6MVxzKiQiCisgc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIGZvbGQgc3RhcnQ9Ijw8LVxzKlxcXF8kXF9zKidceihbXiBcdHxdKlwpJyIJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlxzKlx6MVxzKiQiCisgc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIGZvbGQgc3RhcnQ9Ijw8LVxzKlxcXF8kXF9zKlx6KFteIFx0fF0qXCkiCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5ccypcejFccyokIgorIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBmb2xkIHN0YXJ0PSI8PC1ccypcXFxfJFxfcypcIlx6KFteIFx0fF0qXClcIiIJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlxzKlx6MVxzKiQiCisgc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIGZvbGQgc3RhcnQ9Ijw8XHMqXFxcXyRcX3MqJ1x6KFteIFx0fF0qXCknIgltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHoxXHMqJCIKKyBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgZm9sZCBzdGFydD0iPDxcXFx6KFteIFx0fF0qXCkiCQltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHoxXHMqJCIKIAogZWxzZQotIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBzdGFydD0iPDxccypcXFw9XHooXFMqXCkiCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIiAgICBjb250YWlucz1Ac2hEYmxRdW90ZUxpc3QKLSBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgc3RhcnQ9Ijw8XHMqXCJceihcUypcKVwiIgltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHoxXHMqJCIKLSBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgc3RhcnQ9Ijw8LVxzKlx6KFxTKlwpIgkJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlxzKlx6MVxzKiQiIGNvbnRhaW5zPUBzaERibFF1b3RlTGlzdAotIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBzdGFydD0iPDwtXHMqJ1x6KFxTKlwpJyIJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlxzKlx6MVxzKiQiCi0gc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIHN0YXJ0PSI8PFxzKidceihcUypcKSciCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIgotIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBzdGFydD0iPDwtXHMqXCJceihcUypcKVwiIgltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHMqXHoxXHMqJCIKLSBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgc3RhcnQ9Ijw8XHMqXFxcXyRcX3MqXHooXFMqXCkiCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIgotIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBzdGFydD0iPDwtXHMqXFxcXyRcX3MqXHooXFMqXCkiCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5ccypcejFccyokIgotIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBzdGFydD0iPDwtXHMqXFxcXyRcX3MqJ1x6KFxTKlwpJyIJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlxzKlx6MVxzKiQiCi0gc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIHN0YXJ0PSI8PFxzKlxcXF8kXF9zKidceihcUypcKSciCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIgotIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBzdGFydD0iPDxccypcXFxfJFxfcypcIlx6KFxTKlwpXCIiCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIgotIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBzdGFydD0iPDwtXHMqXFxcXyRcX3MqXCJceihcUypcKVwiIgltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHMqXHoxXHMqJCIKLSBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgc3RhcnQ9Ijw8XFxceihcUypcKSIJCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIgorIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBzdGFydD0iPDxccypcXFw9XHooW14gXHR8XSpcKSIJCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5cejFccyokIiAgICBjb250YWlucz1Ac2hEYmxRdW90ZUxpc3QKKyBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgc3RhcnQ9Ijw8XHMqXCJceihbXiBcdHxdKlwpXCIiCQltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHoxXHMqJCIKKyBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgc3RhcnQ9Ijw8LVxzKlx6KFteIFx0fF0qXCkiCQltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHMqXHoxXHMqJCIgY29udGFpbnM9QHNoRGJsUXVvdGVMaXN0Cisgc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIHN0YXJ0PSI8PC1ccyonXHooW14gXHR8XSpcKSciCQltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHMqXHoxXHMqJCIKKyBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgc3RhcnQ9Ijw8XHMqJ1x6KFteIFx0fF0qXCknIgkJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlx6MVxzKiQiCisgc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIHN0YXJ0PSI8PC1ccypcIlx6KFteIFx0fF0qXClcIiIJCW1hdGNoZ3JvdXA9c2hSZWRpciBlbmQ9Il5ccypcejFccyokIgorIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBzdGFydD0iPDxccypcXFxfJFxfcypceihbXiBcdHxdKlwpIgkJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlx6MVxzKiQiCisgc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIHN0YXJ0PSI8PC1ccypcXFxfJFxfcypceihbXiBcdHxdKlwpIgkJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlxzKlx6MVxzKiQiCisgc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIHN0YXJ0PSI8PC1ccypcXFxfJFxfcyonXHooW14gXHR8XSpcKSciCQltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHMqXHoxXHMqJCIKKyBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgc3RhcnQ9Ijw8XHMqXFxcXyRcX3MqJ1x6KFteIFx0fF0qXCknIgkJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlx6MVxzKiQiCisgc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIHN0YXJ0PSI8PFxzKlxcXF8kXF9zKlwiXHooW14gXHR8XSpcKVwiIgltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHoxXHMqJCIKKyBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgc3RhcnQ9Ijw8LVxzKlxcXF8kXF9zKlwiXHooW14gXHR8XSpcKVwiIgltYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeXHMqXHoxXHMqJCIKKyBzeW4gcmVnaW9uIHNoSGVyZURvYyBtYXRjaGdyb3VwPXNoUmVkaXIgc3RhcnQ9Ijw8XFxceihbXiBcdHxdKlwpIgkJbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlx6MVxzKiQiCiBlbmRpZgogCiAiIEhlcmUgU3RyaW5nczoge3t7MQogIiA9PT09PT09PT09PT09CiAiIGF2YWlsYWJsZSBmb3I6IGJhc2g7IGtzaCAocmVhbGx5IHNob3VsZCBiZSBrc2g5MyBvbmx5KSBidXQgbm90IGlmIGl0cyBhIHBvc2l4CiBpZiBleGlzdHMoImI6aXNfYmFzaCIpIHx8IChleGlzdHMoImI6aXNfa29ybnNoZWxsIikgJiYgIWV4aXN0cygiZzppc19wb3NpeCIpKQotIHN5biBtYXRjaCBzaFJlZGlyICI8PDwiCisgc3luIG1hdGNoIHNoUmVkaXIgIjw8PCIJc2tpcHdoaXRlCW5leHRncm91cD1zaENtZFBhcmVuUmVnaW9uCiBlbmRpZgogCiAiIElkZW50aWZpZXJzOiB7e3sxCiAiPT09PT09PT09PT09PQogc3luIG1hdGNoICBzaFNldE9wdGlvbgkiXHNcenNbLStdW2EtekEtWjAtOV1cK1w+Igljb250YWluZWQKIHN5biBtYXRjaCAgc2hWYXJpYWJsZQkiXDxcKFtid2dsc2F2XTpcKVw9W2EtekEtWjAtOS4hQF8lKyxdKlx6ZT0iCW5leHRncm91cD1zaFNldElkZW50aWZpZXIKLXN5biBtYXRjaCAgc2hTZXRJZGVudGlmaWVyCSI9IgkJY29udGFpbmVkCW5leHRncm91cD1zaFBhdHRlcm4sc2hEZXJlZixzaERlcmVmU2ltcGxlLHNoRG91YmxlUXVvdGUsc2hFeERvdWJsZVF1b3RlLHNoU2luZ2xlUXVvdGUsc2hFeFNpbmdsZVF1b3RlCitzeW4gbWF0Y2ggIHNoU2V0SWRlbnRpZmllcgkiPSIJCWNvbnRhaW5lZAluZXh0Z3JvdXA9c2hDbWRQYXJlblJlZ2lvbixzaFBhdHRlcm4sc2hEZXJlZixzaERlcmVmU2ltcGxlLHNoRG91YmxlUXVvdGUsc2hFeERvdWJsZVF1b3RlLHNoU2luZ2xlUXVvdGUsc2hFeFNpbmdsZVF1b3RlCiBpZiBleGlzdHMoImI6aXNfYmFzaCIpCiAgc3luIHJlZ2lvbiBzaFNldExpc3Qgb25lbGluZSBtYXRjaGdyb3VwPXNoU2V0IHN0YXJ0PSJcPFwoZGVjbGFyZVx8dHlwZXNldFx8bG9jYWxcfGV4cG9ydFx8dW5zZXRcKVw+XHplW14vXSIgZW5kPSIkIgltYXRjaGdyb3VwPXNoU2V0TGlzdERlbGltIGVuZD0iXHplW318KTsmXSIgbWF0Y2hncm91cD1OT05FIGVuZD0iXHplXHNcKyNcfD0iIGNvbnRhaW5zPUBzaElkTGlzdAotIHN5biByZWdpb24gc2hTZXRMaXN0IG9uZWxpbmUgbWF0Y2hncm91cD1zaFNldCBzdGFydD0iXDxzZXRcPlx6ZVteL10iIGVuZD0iXHplWzt8KV1cfCQiCQkJbWF0Y2hncm91cD1zaFNldExpc3REZWxpbSBlbmQ9Ilx6ZVt9fCk7Jl0iIG1hdGNoZ3JvdXA9Tk9ORSBlbmQ9Ilx6ZVxzXCtbIz1dIiBjb250YWlucz1Ac2hJZExpc3QKKyBzeW4gcmVnaW9uIHNoU2V0TGlzdCBvbmVsaW5lIG1hdGNoZ3JvdXA9c2hTZXQgc3RhcnQ9Ilw8c2V0XD5cemVbXi9dIiBlbmQ9Ilx6ZVs7fCldXHwkIgkJCW1hdGNoZ3JvdXA9c2hTZXRMaXN0RGVsaW0gZW5kPSJcemVbfXwpOyZdIiBtYXRjaGdyb3VwPU5PTkUgZW5kPSJcemVcc1wrPSIgY29udGFpbnM9QHNoSWRMaXN0CiBlbHNlaWYgZXhpc3RzKCJiOmlzX2tvcm5zaGVsbCIpCiAgc3luIHJlZ2lvbiBzaFNldExpc3Qgb25lbGluZSBtYXRjaGdyb3VwPXNoU2V0IHN0YXJ0PSJcPFwodHlwZXNldFx8ZXhwb3J0XHx1bnNldFwpXD5cemVbXi9dIiBlbmQ9IiQiCQltYXRjaGdyb3VwPXNoU2V0TGlzdERlbGltIGVuZD0iXHplW318KTsmXSIgbWF0Y2hncm91cD1OT05FIGVuZD0iXHplXHNcK1sjPV0iIGNvbnRhaW5zPUBzaElkTGlzdAogIHN5biByZWdpb24gc2hTZXRMaXN0IG9uZWxpbmUgbWF0Y2hncm91cD1zaFNldCBzdGFydD0iXDxzZXRcPlx6ZVteL10iIGVuZD0iJCIJCQkJbWF0Y2hncm91cD1zaFNldExpc3REZWxpbSBlbmQ9Ilx6ZVt9fCk7Jl0iIG1hdGNoZ3JvdXA9Tk9ORSBlbmQ9Ilx6ZVxzXCtbIz1dIiBjb250YWlucz1Ac2hJZExpc3QKQEAgLTM5MCwxNSArNDA1LDE1IEBACiBlbmRpZgogCiBpZiBleGlzdHMoImI6aXNfYmFzaCIpCi0gaWYgKGc6c2hfZm9sZF9lbmFibGVkICUgKHM6c2hfZm9sZF9mdW5jdGlvbnMgKiAyKSkvczpzaF9mb2xkX2Z1bmN0aW9ucwotICBzeW4gcmVnaW9uIHNoRnVuY3Rpb25PbmUgZm9sZAltYXRjaGdyb3VwPXNoRnVuY3Rpb24gc3RhcnQ9Il5ccypcaFstYS16QS1aXzAtOV0qXHMqKClcX3MqeyIgZW5kPSJ9Igljb250YWlucz1Ac2hGdW5jdGlvbkxpc3QJCQlza2lwd2hpdGUgc2tpcG5sIG5leHRncm91cD1zaEZ1bmN0aW9uU3RhcnQsc2hRdWlja0NvbW1lbnQKKyBpZiBzOnNoX2ZvbGRfZnVuY3Rpb25zCisgIHN5biByZWdpb24gc2hGdW5jdGlvbk9uZSBmb2xkCW1hdGNoZ3JvdXA9c2hGdW5jdGlvbiBzdGFydD0iXlxzKlxoWy1hLXpBLVpfMC05XSpccyooKVxfcyp7IgllbmQ9In0iCWNvbnRhaW5zPUBzaEZ1bmN0aW9uTGlzdAkJCXNraXB3aGl0ZSBza2lwbmwgbmV4dGdyb3VwPXNoRnVuY3Rpb25TdGFydCxzaFF1aWNrQ29tbWVudAogICBzeW4gcmVnaW9uIHNoRnVuY3Rpb25Ud28gZm9sZAltYXRjaGdyb3VwPXNoRnVuY3Rpb24gc3RhcnQ9IlxoWy1hLXpBLVpfMC05XSpccypcJSgoKVwpXD1cX3MqeyIJZW5kPSJ9Igljb250YWlucz1zaEZ1bmN0aW9uS2V5LEBzaEZ1bmN0aW9uTGlzdCBjb250YWluZWQJc2tpcHdoaXRlIHNraXBubCBuZXh0Z3JvdXA9c2hGdW5jdGlvblN0YXJ0LHNoUXVpY2tDb21tZW50CiAgZWxzZQogICBzeW4gcmVnaW9uIHNoRnVuY3Rpb25PbmUJbWF0Y2hncm91cD1zaEZ1bmN0aW9uIHN0YXJ0PSJeXHMqXGhbLWEtekEtWl8wLTldKlxzKigpXF9zKnsiCWVuZD0ifSIJY29udGFpbnM9QHNoRnVuY3Rpb25MaXN0CiAgIHN5biByZWdpb24gc2hGdW5jdGlvblR3bwltYXRjaGdyb3VwPXNoRnVuY3Rpb24gc3RhcnQ9IlxoWy1hLXpBLVpfMC05XSpccypcJSgoKVwpXD1cX3MqeyIJZW5kPSJ9Igljb250YWlucz1zaEZ1bmN0aW9uS2V5LEBzaEZ1bmN0aW9uTGlzdCBjb250YWluZWQKICBlbmRpZgogZWxzZQotIGlmIChnOnNoX2ZvbGRfZW5hYmxlZCAlIChzOnNoX2ZvbGRfZnVuY3Rpb25zICogMikpL3M6c2hfZm9sZF9mdW5jdGlvbnMKKyBpZiBzOnNoX2ZvbGRfZnVuY3Rpb25zCiAgIHN5biByZWdpb24gc2hGdW5jdGlvbk9uZSBmb2xkCW1hdGNoZ3JvdXA9c2hGdW5jdGlvbiBzdGFydD0iXlxzKlxoXHcqXHMqKClcX3MqeyIgZW5kPSJ9Igljb250YWlucz1Ac2hGdW5jdGlvbkxpc3QJCQlza2lwd2hpdGUgc2tpcG5sIG5leHRncm91cD1zaEZ1bmN0aW9uU3RhcnQsc2hRdWlja0NvbW1lbnQKICAgc3luIHJlZ2lvbiBzaEZ1bmN0aW9uVHdvIGZvbGQJbWF0Y2hncm91cD1zaEZ1bmN0aW9uIHN0YXJ0PSJcaFx3KlxzKlwlKCgpXClcPVxfcyp7IgllbmQ9In0iCWNvbnRhaW5zPXNoRnVuY3Rpb25LZXksQHNoRnVuY3Rpb25MaXN0IGNvbnRhaW5lZAlza2lwd2hpdGUgc2tpcG5sIG5leHRncm91cD1zaEZ1bmN0aW9uU3RhcnQsc2hRdWlja0NvbW1lbnQKICBlbHNlCkBAIC00MDksNyArNDI0LDcgQEAKIAogIiBQYXJhbWV0ZXIgRGVyZWZlcmVuY2luZzoge3t7MQogIiA9PT09PT09PT09PT09PT09PT09PT09PT0KLXN5biBtYXRjaCAgc2hEZXJlZlNpbXBsZQkiXCRcJShcaFx3Klx8XGRcKSIKK3N5biBtYXRjaCAgc2hEZXJlZlNpbXBsZQkiXCRcJShca1wrXHxcZFwpIgogc3luIHJlZ2lvbiBzaERlcmVmCW1hdGNoZ3JvdXA9UHJlUHJvYyBzdGFydD0iXCR7IiBlbmQ9In0iCWNvbnRhaW5zPUBzaERlcmVmTGlzdCxzaERlcmVmVmFyQXJyYXkKIGlmICFleGlzdHMoImc6c2hfbm9fZXJyb3IiKQogIHN5biBtYXRjaCAgc2hEZXJlZldvcmRFcnJvcgkiW159JFtdIgljb250YWluZWQKQEAgLTQyNSwxMiArNDQwLDEyIEBACiAiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogaWYgZXhpc3RzKCJiOmlzX2Jhc2giKQogIHN5biByZWdpb24gc2hEZXJlZgltYXRjaGdyb3VwPVByZVByb2Mgc3RhcnQ9IlwkeyEiIGVuZD0iXCpcPX0iCWNvbnRhaW5zPUBzaERlcmVmTGlzdCxzaERlcmVmT3AKLSBzeW4gbWF0Y2ggIHNoRGVyZWZWYXIJY29udGFpbmVkCSJ7XEA8PSFcd1wrIgkJbmV4dGdyb3VwPUBzaERlcmVmVmFyTGlzdAorIHN5biBtYXRjaCAgc2hEZXJlZlZhcgljb250YWluZWQJIntcQDw9IVxrXCsiCQluZXh0Z3JvdXA9QHNoRGVyZWZWYXJMaXN0CiBlbmRpZgogCiBzeW4gbWF0Y2ggIHNoRGVyZWZTcGVjaWFsCWNvbnRhaW5lZAkie1xAPD1bLSpAPzBdIgkJbmV4dGdyb3VwPXNoRGVyZWZPcCxzaERlcmVmT3BFcnJvcgogc3luIG1hdGNoICBzaERlcmVmU3BlY2lhbAljb250YWluZWQJIlwoe1sjIV1cKVxAPD1bWzphbG51bTpdKkBfXVwrIgluZXh0Z3JvdXA9QHNoRGVyZWZWYXJMaXN0LHNoRGVyZWZPcAotc3luIG1hdGNoICBzaERlcmVmVmFyCWNvbnRhaW5lZAkie1xAPD1cd1wrIgkJbmV4dGdyb3VwPUBzaERlcmVmVmFyTGlzdAorc3luIG1hdGNoICBzaERlcmVmVmFyCWNvbnRhaW5lZAkie1xAPD1ca1wrIgkJbmV4dGdyb3VwPUBzaERlcmVmVmFyTGlzdAogCiAiIHNoIGtzaCBiYXNoIDogJHt2YXJbLi4uIF0uLi59ICBhcnJheSByZWZlcmVuY2U6IHt7ezEKIHN5biByZWdpb24gIHNoRGVyZWZWYXJBcnJheSAgIGNvbnRhaW5lZAltYXRjaGdyb3VwPXNoRGVyZWYgc3RhcnQ9IlxbIiBlbmQ9Il0iCWNvbnRhaW5zPUBzaENvbW1hbmRTdWJMaXN0IG5leHRncm91cD1zaERlcmVmT3Asc2hEZXJlZk9wRXJyb3IKQEAgLTQ3NywxMiArNDkyLDEyIEBACiAgIiBiYXNoIDogJHtwYXJhbWV0ZXIvL3BhdHRlcm4vc3RyaW5nfQogICIgYmFzaCA6ICR7cGFyYW1ldGVyLy9wYXR0ZXJufQogIHN5biBtYXRjaCAgc2hEZXJlZlBQUwljb250YWluZWQJJy9cezEsMn0nCW5leHRncm91cD1zaERlcmVmUFBTbGVmdAotIHN5biByZWdpb24gc2hEZXJlZlBQU2xlZnQJY29udGFpbmVkCXN0YXJ0PScuJwlza2lwPUBcJShcXFwpXC9AIG1hdGNoZ3JvdXA9c2hEZXJlZk9wIGVuZD0nLycgZW5kPSdcemV9JyBuZXh0Z3JvdXA9c2hEZXJlZlBQU3JpZ2h0IGNvbnRhaW5zPUBzaENvbW1hbmRTdWJMaXN0Ci0gc3luIHJlZ2lvbiBzaERlcmVmUFBTcmlnaHQJY29udGFpbmVkCXN0YXJ0PScuJwllbmQ9J1x6ZX0nCWNvbnRhaW5zPUBzaENvbW1hbmRTdWJMaXN0Cisgc3luIHJlZ2lvbiBzaERlcmVmUFBTbGVmdAljb250YWluZWQJc3RhcnQ9Jy4nCXNraXA9QFwlKFxcXFxcKSpcXC9AIG1hdGNoZ3JvdXA9c2hEZXJlZk9wCWVuZD0nLycgZW5kPSdcemV9JyBuZXh0Z3JvdXA9c2hEZXJlZlBQU3JpZ2h0IGNvbnRhaW5zPUBzaENvbW1hbmRTdWJMaXN0Cisgc3luIHJlZ2lvbiBzaERlcmVmUFBTcmlnaHQJY29udGFpbmVkCXN0YXJ0PScuJwlza2lwPUBcJShcXFxcXClcK0AJCWVuZD0nXHplfScJY29udGFpbnM9QHNoQ29tbWFuZFN1Ykxpc3QKIGVuZGlmCiAKICIgQXJpdGhtZXRpYyBQYXJlbnRoZXNpemVkIEV4cHJlc3Npb25zOiB7e3sxCi1zeW4gcmVnaW9uIHNoUGFyZW4gbWF0Y2hncm91cD1zaEFyaXRoUmVnaW9uIHN0YXJ0PScoXCUoXHplW14oXVx8JFwpJyBlbmQ9JyknIGNvbnRhaW5zPUBzaEFyaXRoUGFyZW5MaXN0CitzeW4gcmVnaW9uIHNoUGFyZW4gbWF0Y2hncm91cD1zaEFyaXRoUmVnaW9uIHN0YXJ0PSdbXiRdXHpzKFwlKFx6ZVteKF1cfCRcKScgZW5kPScpJyBjb250YWlucz1Ac2hBcml0aFBhcmVuTGlzdAogCiAiIFVzZWZ1bCBzaCBLZXl3b3Jkczoge3t7MQogIiA9PT09PT09PT09PT09PT09PT09CkBAIC01NTcsNiArNTcyLDcgQEAKIGhpIGRlZiBsaW5rIHNoRWNobwlzaFN0cmluZwogaGkgZGVmIGxpbmsgc2hFY2hvRGVsaW0Jc2hPcGVyYXRvcgogaGkgZGVmIGxpbmsgc2hFY2hvUXVvdGUJc2hTdHJpbmcKK2hpIGRlZiBsaW5rIHNoRm9yUFAJc2hMb29wCiBoaSBkZWYgbGluayBzaEVtYmVkZGVkRWNobwlzaFN0cmluZwogaGkgZGVmIGxpbmsgc2hFc2NhcGUJc2hDb21tYW5kU3ViCiBoaSBkZWYgbGluayBzaEV4RG91YmxlUXVvdGUJc2hEb3VibGVRdW90ZQpAQCAtNTkyLDYgKzYwOCw3IEBACiAgIGhpIGRlZiBsaW5rIGJhc2hTdGF0ZW1lbnQJCXNoU3RhdGVtZW50CiAgIGhpIGRlZiBsaW5rIHNoRnVuY3Rpb25QYXJlbgkJRGVsaW1pdGVyCiAgIGhpIGRlZiBsaW5rIHNoRnVuY3Rpb25EZWxpbQkJRGVsaW1pdGVyCisgIGhpIGRlZiBsaW5rIHNoQ2hhckNsYXNzCQlzaFNwZWNpYWwKIGVuZGlmCiBpZiBleGlzdHMoImI6aXNfa29ybnNoZWxsIikKICAgaGkgZGVmIGxpbmsga3NoU3BlY2lhbFZhcmlhYmxlcwlzaFNoZWxsVmFyaWFibGVzCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9zcWxoYW5hLnZpbSBiL3J1bnRpbWUvc3ludGF4L3NxbGhhbmEudmltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MTBlOTkKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3N5bnRheC9zcWxoYW5hLnZpbQpAQCAtMCwwICsxLDI5MyBAQAorIiBWaW0gc3ludGF4IGZpbGUKKyIgTGFuZ3VhZ2U6ICAgIFNRTCwgU0FQIEhBTkEgSW4gTWVtb3J5IERhdGFiYXNlCisiIE1haW50YWluZXI6ICBEYXZpZCBGaXNoYnVybiA8ZGZpc2hidXJuIGRvdCB2aW0gYXQgZ21haWwgZG90IGNvbT4KKyIgTGFzdCBDaGFuZ2U6IDIwMTIgT2N0IDIzCisiIFZlcnNpb246ICAgICBTUDQgYiAoUTIgMjAxMikKKyIgSG9tZXBhZ2U6ICAgIGh0dHA6Ly93d3cudmltLm9yZy9zY3JpcHRzL3NjcmlwdC5waHA/c2NyaXB0X2lkPTQyNzUKKworIiBEZXNjcmlwdGlvbjogVXBkYXRlZCB0byBTQVAgSEFOQSBTUDQKKyIKKyIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCisiIEZvciB2ZXJzaW9uIDYueDogUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkCitpZiB2ZXJzaW9uIDwgNjAwCisgICAgc3ludGF4IGNsZWFyCitlbHNlaWYgZXhpc3RzKCJiOmN1cnJlbnRfc3ludGF4IikKKyAgICBmaW5pc2gKK2VuZGlmCisKK3N5biBjYXNlIGlnbm9yZQorCisiIFRoZSBTUUwgcmVzZXJ2ZWQgd29yZHMsIGRlZmluZWQgYXMga2V5d29yZHMuCisiIFRoZXNlIHdlcmUgcHVsbGVkIGZyb20gdGhlIGZvbGxvd2luZyBTUUwgcmVmZXJlbmNlOgorIiAgICAgaHR0cDovL2hlbHAuc2FwLmNvbS9oYW5hL2hhbmFfc3FsX2VuLnBkZgorIiBBbiBlYXN5IGFwcHJvYWNoIGlzIHRvIGNvcHkgYWxsIHRleHQgZnJvbSB0aGUgUERGCisiIGludG8gYSBWaW0gYnVmZmVyLiAgVGhlIGtleXdvcmRzIGFyZSBpbiBVUFBFUiBjYXNlLAorIiBzbyB5b3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIGJlIGxlZnQgd2l0aAorIiBtYWlubHkgdGhlIFVQUEVSIGNhc2Ugd29yZHM6CisiICAgMS4gIERlbGV0ZSBhbGwgd29yZHMgdGhhdCBkbyBub3QgYmVnaW4gd2l0aCBhIENhcGl0YWwKKyIgICAgICAgJXMvXChcPFteQS1aXVx3Klw+XCkvL2cKKyIgICAyLiAgUmVtb3ZlIGFsbCB3b3JkcyB3aGVyZSB0aGUgMm5kIGxldHRlciBpcyBub3QgYSBDYXBpdGFsCisiICAgICAgICVzL1woXDxbQS1aXVteQS1aXVx3Klw+XCkvL2cKKyIgICAzLiAgUmVtb3ZlIGFsbCBub24td29yZCAob3Igc3BhY2UpIGNoYXJhY3RlcnMKKyIgICAgICAgJXMvW14wLTlBLVphLXpfIF0qLy9nCisiICAgNC4gIFJlbW92ZSBzb21lIGtub3duIHdvcmRzCisiICAgICAgICVzL1w8XChTQVBcfEhBTkFcfE9LXHxBR1x8SUJNXHxEQjJcfEFJWFx8UE9XRVJcZFwrXHxVTklYXClcPi8vZworIiAgIDUuICBSZW1vdmUgYmxhbmsgbGluZXMgYW5kIHRyYWlsaW5nIHNwYWNlcworIiAgICAgICAlcy9cc1wrJC8vZworIiAgICAgICAlcy9eXHNcKy8vZworIiAgICAgICAlcy9eJFxuLy9nCisiICAgNi4gIENvbnZlcnQgc3BhY2VzIHRvIG5ld2xpbmVzIHJlbW92ZSBzaW5nbGUgY2hhcmFjdGVyCisiICAgICAgICVzL1sgXVwrL1xyL2cKKyIgICAgICAgJWcvXlx3JC9kCisiICAgNy4gIFNvcnQgYW5kIHJlbW92ZSBkdXBsaWNhdGVzCisiICAgICAgIDpzb3J0CisiICAgICAgIDpVbmlxCisiICAgOC4gIFVzZSB0aGUgV2hhdHNNaXNzaW5nIHBsdWdpbiBhZ2FpbnN0IHRoZSBzcWxoYW5hLnZpbSBmaWxlLgorIiAgIDkuICBHZW5lcmF0ZWQgYSBmaWxlIG9mIGFsbCBVUFBFUiBjYXNlZCB3b3JkcyB3aGljaCBzaG91bGQgbm90CisiICAgICAgIGJlIGluIHRoZSBzeW50YXggZmlsZS4gIFRoZXNlIGl0ZW1zIHNob3VsZCBiZSByZW1vdmVkCisiICAgICAgIGZyb20gdGhlIGxpc3QgaW4gc3RlcCA3LiAgWW91IGNhbiB1c2UgV2hhdHNOb3RNaXNzaW5nCisiICAgICAgIGJldHdlZW4gc3RlcCA3IGFuZCB0aGlzIG5ldyBmaWxlIHRvIHdlZWQgb3V0IHRoZSB3b3JkcworIiAgICAgICB3ZSBrbm93IGFyZSBub3Qgc3ludGF4IHJlbGF0ZWQuCisiICAxMC4gIFVzZSB0aGUgV2hhdHNNaXNzaW5nUmVtb3ZlTWF0Y2hlcyB0byByZW1vdmUgdGhlIHdvcmRzCisiICAgICAgIGZyb20gc3RlcCA5LgorCitzeW4ga2V5d29yZCBzcWxTcGVjaWFsICBmYWxzZSBudWxsIHRydWUKKworIiBTdXBwb3J0ZWQgRnVuY3Rpb25zIGZvciBEYXRlL1RpbWUgdHlwZXMKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBBRERfREFZUyBBRERfTU9OVEhTIEFERF9TRUNPTkRTIEFERF9ZRUFSUyBDT0FMRVNDRQorc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIENVUlJFTlRfREFURSBDVVJSRU5UX1RJTUUgQ1VSUkVOVF9USU1FU1RBTVAgQ1VSUkVOVF9VVENEQVRFCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgQ1VSUkVOVF9VVENUSU1FIENVUlJFTlRfVVRDVElNRVNUQU1QCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgREFZTkFNRSBEQVlPRk1PTlRIIERBWU9GWUVBUiBEQVlTX0JFVFdFRU4gRVhUUkFDVAorc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIEdSRUFURVNUIEhPVVIgSUZOVUxMIElTT1dFRUsgTEFTVF9EQVkgTEVBU1QgTE9DQUxUT1VUQworc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIE1JTlVURSBNT05USCBNT05USE5BTUUgTkVYVF9EQVkgTk9XIFFVQVJURVIgU0VDT05ECitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgU0VDT05EU19CRVRXRUVOIFVUQ1RPTE9DQUwgV0VFSyBXRUVLREFZIFlFQVIKKworc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIFRPX0NIQVIgVE9fREFURSBUT19EQVRTIFRPX05DSEFSIFRPX1RJTUUgVE9fVElNRVNUQU1QIFVUQ1RPTE9DQUwKKworIiBBZ2dyZWdhdGUKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBDT1VOVCBNSU4gTUFYIFNVTSBBVkcgU1REREVWIFZBUgorCisiIERhdGF0eXBlIGNvbnZlcnNpb24KK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBDQVNUIFRPX0FMUEhBTlVNIFRPX0JJR0lOVCBUT19CSU5BUlkgVE9fQkxPQiBUT19DSEFSIFRPX0NMT0IKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBUT19EQVRFIFRPX0RBVFMgVE9fREVDSU1BTCBUT19ET1VCTEUgVE9fSU5UIFRPX0lOVEVHRVIgVE9fTkNIQVIKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBUT19OQ0xPQiBUT19OVkFSQ0hBUiBUT19SRUFMIFRPX1NFQ09ORERBVEUgVE9fU01BTExERUNJTUFMCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgVE9fU01BTExJTlQgVE9fVElNRSBUT19USU1FU1RBTVAgVE9fVElOWUlOVCBUT19WQVJDSEFSIFRPX1ZBUkJJTkFSWQorCisiIE51bWJlciBmdW5jdGlvbnMKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBBQlMgQUNPUyBBU0lOIEFUQU4gQVRBTjIgQklOVE9IRVggQklUQU5EIENFSUwgQ09TIENPU0ggQ09UCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgRVhQIEZMT09SIEdSRUFURVNUIEhFWFRPQklOIExFQVNUIExOIExPRyBNT0QgUE9XRVIgUk9VTkQKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBTSUdOIFNJTiBTSU5IIFNRUlQgVEFOIFRBTkggVU1JTlVTCisKKyIgU3RyaW5nIGZ1bmN0aW9ucworc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIEFTQ0lJIENIQVIgQ09OQ0FUIExDQVNFIExFTkdUSCBMT0NBVEUgTE9XRVIgTFBBRCBMVFJJTQorc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIE5DSEFSIFJFUExBQ0UgUlBBRCBSVFJJTSBTVUJTVFJfQUZURVIgU1VCU1RSX0JFRk9SRQorc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIFNVQlNUUklORyBUUklNIFVDQVNFIFVOSUNPREUgVVBQRVIKKworIiBNaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucworc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIENPQUxFU0NFIENVUlJFTlRfQ09OTkVDVElPTiBDVVJSRU5UX1NDSEVNQSBDVVJSRU5UX1VTRVIKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBHUk9VUElOR19JRCBJRk5VTEwgTUFQIE5VTExJRiBTRVNTSU9OX0NPTlRFWFQgU0VTU0lPTl9VU0VSIFNZU1VVSURTUUwKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBHRVRfTlVNX1NFUlZFUlMKKworCisiIHNwXyBwcm9jZWR1cmVzCisiIHN5biBrZXl3b3JkIHNxbEZ1bmN0aW9uICBzcF9hZGRhbGlhcworCisKKyIgUmVzZXJ2ZWQga2V5d29yZHMKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBBTEwgQVMgQVQgQkVGT1JFCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgQkVHSU4gQk9USCBCWQorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIENPTkRJVElPTgorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIENVUlJWQUwgQ1VSU09SIERFQ0xBUkUKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBESVNUSU5DVCBETyBFTFNFIEVMU0VJRiBFTFNJRgorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIEVORCBFWENFUFRJT04gRVhFQworc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIEZPUiBGUk9NIEdST1VQCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgSEFWSU5HIElOCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgSU5PVVQgSU5UTyBJUworc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIExFQURJTkcKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBMT09QIE1JTlVTIE5BVFVSQUwgTkVYVFZBTAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIE9GIE9OIE9SREVSIE9VVAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFBSSU9SIFJFVFVSTiBSRVRVUk5TIFJFVkVSU0UKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBST1dJRCBTRUxFQ1QKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBTUUwgU1RBUlQgU1RPUCBTWVNEQVRFCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgU1lTVElNRSBTWVNUSU1FU1RBTVAgU1lTVVVJRAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFRSQUlMSU5HIFVTSU5HIFVUQ0RBVEUKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBVVENUSU1FIFVUQ1RJTUVTVEFNUCBWQUxVRVMKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBXSElMRQorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIEFOWSBTT01FIEVYSVNUUyBFU0NBUEUKKworIiBJRiBrZXl3b3Jkcworc3luIGtleXdvcmQgc3Fsa2V5d29yZAkgSUYKKworIiBDQVNFIGtleXdvcmRzCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBXSEVOIFRIRU4KKworIiBTeW50YXggcnVsZXMgY29tbW9uIHRvIFRFWFQgYW5kIFNIT1JUVEVYVCBrZXl3b3Jkcworc3luIGtleXdvcmQgc3FsS2V5d29yZAkgTEFOR1VBR0UgREVURUNUSU9OIExJTkdVSVNUSUMKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBNSU1FIFRZUEUKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBFWEFDVCBXRUlHSFQgRlVaWlkgRlVaWklORVNTVEhSRVNIT0xEIFNFQVJDSAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFBIUkFTRSBJTkRFWCBSQVRJTyBSRUJVSUxECitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgQ09ORklHVVJBVElPTgorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFNFQVJDSCBPTkxZCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgRkFTVCBQUkVQUk9DRVNTCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgU1lOQyBTWU5DSFJPTk9VUyBBU1lOQyBBU1lOQ0hST05PVVMgRkxVU0ggUVVFVUUKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBFVkVSWSBBRlRFUiBNSU5VVEVTIERPQ1VNRU5UUyBTVVNQRU5ECisKKyIgU3RhdGVtZW50IGtleXdvcmRzIChpLmUuIGFmdGVyIEFMVEVSIG9yIENSRUFURSkKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBBVURJVCBQT0xJQ1kKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBGVUxMVEVYVAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFNFUVVFTkNFIFJFU1RBUlQKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBUQUJMRQorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFBST0NFRFVSRSBTVEFUSVNUSUNTCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgU0NIRU1BCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgU1lOT05ZTQorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFZJRVcKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBDT0xVTU4KK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBTWVNURU0gTElDRU5TRQorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFNFU1NJT04KK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBDQU5DRUwgV09SSworc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFBMQU4gQ0FDSEUKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBMT0dHSU5HIE5PTE9HR0lORyBSRVRFTlRJT04KK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBSRUNPTkZJR1VSRSBTRVJWSUNFCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgUkVTRVQgTU9OSVRPUklORworc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFNBVkUgRFVSQVRJT04gUEVSRlRSQUNFIEZVTkNUSU9OX1BST0ZJTEVSCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgU0FWRVBPSU5UCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgVVNFUgorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFJPTEUKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBBU0MgREVTQworc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIE9XTkVECitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgREVQRU5ERU5DSUVTIFNDUkFNQkxFCisKKyIgQ3JlYXRlIHNlcXVlbmNlCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgSU5DUkVNRU5UIE1BWFZBTFVFIE1JTlZBTFVFIENZQ0xFCisKKyIgQ3JlYXRlIHRhYmxlCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgSElTVE9SWSBHTE9CQUwgTE9DQUwgVEVNUE9SQVJZCisKKyIgQ3JlYXRlIHRyaWdnZXIKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBUUklHR0VSIFJFRkVSRU5DSU5HIEVBQ0ggREVGQVVMVAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFNJR05BTCBSRVNJR05BTCBNRVNTQUdFX1RFWFQgT0xEIE5FVworc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIEVYSVQgSEFORExFUiBTUUxfRVJST1JfQ09ERQorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFRBUkdFVCBDT05ESVRJT04gU0lHTkFMCisKKyIgQWx0ZXIgdGFibGUKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBBREQgRFJPUCBNT0RJRlkgR0VORVJBVEVEIEFMV0FZUworc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFVOSVFVRSBCVFJFRSBDUEJUUkVFIFBSSU1BUlkgS0VZCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgQ09OU1RSQUlOVCBQUkVMT0FEIE5PTkUKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBST1cgVEhSRUFEUyBCQVRDSAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIE1PVkUgUEFSVElUSU9OIFRPIExPQ0FUSU9OIFBIWVNJQ0FMIE9USEVSUworc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFJPVU5EUk9CSU4gUEFSVElUSU9OUyBIQVNIIFJBTkdFIFZBTFVFCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgUEVSU0lTVEVOVCBERUxUQSBBVVRPIEFVVE9NRVJHRQorCisiIENyZWF0ZSBhdWRpdCBwb2xpY3kKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBBVURJVElORyBTVUNDRVNTRlVMIFVOU1VDQ0VTU0ZVTAorc3luIGtleXdvcmQgc3Fsa2V5d29yZAkgUFJJVklMRUdFIFNUUlVDVFVSRUQgQ0hBTkdFIExFVkVMCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkCSBFTUVSR0VOQ1kgQUxFUlQgQ1JJVElDQUwgV0FSTklORyBJTkZPCisKKyIgUHJpdmlsZWdlcworc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIERFQlVHIEVYRUNVVEUKKworIiBTY2hlbWEKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBDQVNDQURFIFJFU1RSSUNUIFBBUkFNRVRFUlMgU0NBTgorCisiIFRyYWNlcworc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIENMSUVOVCBDUkFTSERVTVAgRU1FUkdFTkNZRFVNUAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIElOREVYU0VSVkVSIE5BTUVTRVJWRVIgREFFTU9OCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgQ0xFQVIgUkVNT1ZFIFRSQUNFUworCisiIFJlY2xhaW0KK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBSRUNMQUlNIERBVEEgVk9MVU1FIFZFUlNJT04gU1BBQ0UgREVGUkFHTUVOVCBTUEFSU0lGWQorCisiIEpvaW4KK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBJTk5FUiBPVVRFUiBMRUZUIFJJR0hUIEZVTEwgQ1JPU1MgSk9JTgorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIEdST1VQSU5HIFNFVFMgUk9MTFVQIENVQkUKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBCRVNUIExJTUlUIE9GRlNFVAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFdJVEggU1VCVE9UQUwgQkFMQU5DRSBUT1RBTAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFRFWFRfRklMVEVSIEZJTEwgVVAgU09SVCBNQVRDSEVTIFRPUAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFJFU1VMVCBPVkVSVklFVyBQUkVGSVggTVVMVElQTEUgUkVTVUxUU0VUUworCisiIExvY2sKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBFWENMVVNJVkUgTU9ERSBOT1dBSVQKKworIiBUcmFuc2FjdGlvbgorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFRSQU5TQUNUSU9OIElTT0xBVElPTiBSRUFEIENPTU1JVFRFRAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFJFUEVBVEFCTEUgU0VSSUFMSVpBQkxFIFdSSVRFCisKKyIgU2FtbAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFNBTUwgQVNTRVJUSU9OIFBST1ZJREVSIFNVQkpFQ1QgSVNTVUVSCisKKyIgVXNlcgorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFBBU1NXT1JEIElERU5USUZJRUQgRVhURVJOQUxMWSBBVFRFTVBUUyBBVFRFTVBUUworc3luIGtleXdvcmQgc3Fsa2V5d29yZAkgRU5BQkxFIERJU0FCTEUgT0ZGIExJRkVUSU1FIEZPUkNFIERFQUNUSVZBVEUKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQJIEFDVElWQVRFIElERU5USVRZIEtFUkJFUk9TCisKKyIgR3JhbnQKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBBRE1JTiBCQUNLVVAgQ0FUQUxPRyBTQ0VOQVJJTyBJTklGSUxFIE1PTklUT1IKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBPUFRJTUlaRVIgT1BUSU9OCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkICAgUkVTT1VSQ0UgU1RSVUNUVVJFRFBSSVZJTEVHRSBUUkFDRQorCisiIEltcG9ydAorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIENTViBGSUxFIENPTlRST0wgTk8gQ0hFQ0sgU0tJUCBGSVJTVCBMSVNUCitzeW4ga2V5d29yZCBzcWxrZXl3b3JkCSBSRUNPUkQgREVMSU1JVEVEIEZJRUxEIE9QVElPTkFMTFkgRU5DTE9TRUQgRk9STUFUCisKKyIgUm9sZXMKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBQVUJMSUMgQ09OVEVOVF9BRE1JTiBNT0RFTElORyBNT05JVE9SSU5HCisKKyIgTWlzY2VsbGFuZW91cworc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIEFQUExJQ0FUSU9OIEJJTkFSWSBJTU1FRElBVEUgQ09SRUZJTEUgU0VDVVJJVFkgREVGSU5FUgorc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIERVTU1ZIElOVk9LRVIgTUFURVJJQUxJWkVEIE1FU1NFR0VfVEVYVCBQQVJBTUVURVIgUEFSQU1FVEVSUworc3luIGtleXdvcmQgc3Fsa2V5d29yZCAgIFBBUlQKK3N5biBrZXl3b3JkIHNxbGtleXdvcmQgICBDT05TVEFOVCBTUUxFWENFUFRJT04gU1FMV0FSTklORworCitzeW4ga2V5d29yZCBzcWxPcGVyYXRvciAgV0hFUkUgQkVUV0VFTiBMSUtFIE5VTEwgQ09OVEFJTlMKK3N5biBrZXl3b3JkIHNxbE9wZXJhdG9yICBBTkQgT1IgTk9UIENBU0UKK3N5biBrZXl3b3JkIHNxbE9wZXJhdG9yICBVTklPTiBJTlRFUlNFQ1QgRVhDRVBUCisKK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBBTFRFUiBDQUxMIENBTExTIENSRUFURSBEUk9QIFJFTkFNRSBUUlVOQ0FURQorc3luIGtleXdvcmQgc3FsU3RhdGVtZW50IERFTEVURSBJTlNFUlQgVVBEQVRFIEVYUExBSU4KK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBNRVJHRSBSRVBMQUNFIFVQU0VSVCBTRUxFQ1QKK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBTRVQgVU5TRVQgTE9BRCBVTkxPQUQKK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBDT05ORUNUIERJU0NPTk5FQ1QgQ09NTUlUIExPQ0sgUk9MTEJBQ0sKK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBHUkFOVCBSRVZPS0UKK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBFWFBPUlQgSU1QT1JUCisKKworc3luIGtleXdvcmQgc3FsVHlwZQkgREFURSBUSU1FIFNFQ09ORERBVEUgVElNRVNUQU1QIFRJTllJTlQgU01BTExJTlQKK3N5biBrZXl3b3JkIHNxbFR5cGUJIElOVCBJTlRFR0VSIEJJR0lOVCBTTUFMTERFQ0lNQUwgREVDSU1BTAorc3luIGtleXdvcmQgc3FsVHlwZQkgUkVBTCBET1VCTEUgRkxPQVQKK3N5biBrZXl3b3JkIHNxbFR5cGUJIFZBUkNIQVIgTlZBUkNIQVIgQUxQSEFOVU0gU0hPUlRURVhUIFZBUkJJTkFSWQorc3luIGtleXdvcmQgc3FsVHlwZQkgQkxPQiBDTE9CIE5DTE9CIFRFWFQgREFZREFURQorCitzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgV2Vic2VydmljZV9uYW1lc3BhY2VfaG9zdAorCisiIFN0cmluZ3MgYW5kIGNoYXJhY3RlcnM6CitzeW4gcmVnaW9uIHNxbFN0cmluZwkJc3RhcnQ9KyIrICAgIGVuZD0rIisgY29udGFpbnM9QFNwZWxsCitzeW4gcmVnaW9uIHNxbFN0cmluZwkJc3RhcnQ9KycrICAgIGVuZD0rJysgY29udGFpbnM9QFNwZWxsCisKKyIgTnVtYmVyczoKK3N5biBtYXRjaCBzcWxOdW1iZXIJCSItXD1cPFxkKlwuXD1bMC05X11cPiIKKworIiBDb21tZW50czoKK3N5biByZWdpb24gc3FsRGFzaENvbW1lbnQJc3RhcnQ9Ly0tLyBlbmQ9LyQvIGNvbnRhaW5zPUBTcGVsbAorc3luIHJlZ2lvbiBzcWxTbGFzaENvbW1lbnQJc3RhcnQ9L1wvXC8vIGVuZD0vJC8gY29udGFpbnM9QFNwZWxsCitzeW4gcmVnaW9uIHNxbE11bHRpQ29tbWVudAlzdGFydD0iL1wqIiBlbmQ9IlwqLyIgY29udGFpbnM9c3FsTXVsdGlDb21tZW50LEBTcGVsbAorc3luIGNsdXN0ZXIgc3FsQ29tbWVudAljb250YWlucz1zcWxEYXNoQ29tbWVudCxzcWxTbGFzaENvbW1lbnQsc3FsTXVsdGlDb21tZW50LEBTcGVsbAorc3luIHN5bmMgY2NvbW1lbnQgc3FsQ29tbWVudAorc3luIHN5bmMgY2NvbW1lbnQgc3FsRGFzaENvbW1lbnQKK3N5biBzeW5jIGNjb21tZW50IHNxbFNsYXNoQ29tbWVudAorCitoaSBkZWYgbGluayBzcWxEYXNoQ29tbWVudAlDb21tZW50CitoaSBkZWYgbGluayBzcWxTbGFzaENvbW1lbnQJQ29tbWVudAoraGkgZGVmIGxpbmsgc3FsTXVsdGlDb21tZW50CUNvbW1lbnQKK2hpIGRlZiBsaW5rIHNxbE51bWJlcgkgICAgICAgIE51bWJlcgoraGkgZGVmIGxpbmsgc3FsT3BlcmF0b3IJICAgICAgICBPcGVyYXRvcgoraGkgZGVmIGxpbmsgc3FsU3BlY2lhbAkgICAgICAgIFNwZWNpYWwKK2hpIGRlZiBsaW5rIHNxbEtleXdvcmQJICAgICAgICBLZXl3b3JkCitoaSBkZWYgbGluayBzcWxTdGF0ZW1lbnQJU3RhdGVtZW50CitoaSBkZWYgbGluayBzcWxTdHJpbmcJICAgICAgICBTdHJpbmcKK2hpIGRlZiBsaW5rIHNxbFR5cGUJICAgICAgICBUeXBlCitoaSBkZWYgbGluayBzcWxGdW5jdGlvbgkgICAgICAgIEZ1bmN0aW9uCitoaSBkZWYgbGluayBzcWxPcHRpb24JICAgICAgICBQcmVQcm9jCisKK2xldCBiOmN1cnJlbnRfc3ludGF4ID0gInNxbGhhbmEiCisKKyIgdmltOnN3PTQ6CmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC90ZXgudmltIGIvcnVudGltZS9zeW50YXgvdGV4LnZpbQppbmRleCAwZWVmZjZmLi5kOGEzODRhIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC90ZXgudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3RleC52aW0KQEAgLTEsOCArMSw4IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZToJVGVYCi0iIE1haW50YWluZXI6CURyLiBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4gPE5kcmNoaXBPQFNjYW1wYmVsbFBmYW1pbHkuQWJpek0+Ci0iIExhc3QgQ2hhbmdlOglBcHIgMjQsIDIwMTIKLSIgVmVyc2lvbjoJNzMKKyIgTWFpbnRhaW5lcjoJQ2hhcmxlcyBFLiBDYW1wYmVsbCA8TmRyY2hpcE9AU2NhbXBiZWxsUGZhbWlseS5BYml6TT4KKyIgTGFzdCBDaGFuZ2U6CU5vdiAxNCwgMjAxMgorIiBWZXJzaW9uOgk3NQogIiBVUkw6CQlodHRwOi8vbXlzaXRlLnZlcml6b24ubmV0L2FzdHJvbmF1dC92aW0vaW5kZXguaHRtbCN2aW1saW5rc19zeW50YXgKICIKICIgTm90ZXM6IHt7ezEKQEAgLTE1NSw3ICsxNTUsNyBAQAogIiBUcnkgdG8gZmxhZyB7fSBhbmQgKCkgbWlzbWF0Y2hlczoge3t7MQogaWYgIWV4aXN0cygiZzp0ZXhfbm9fZXJyb3IiKQogIHN5biByZWdpb24gdGV4TWF0Y2hlcgkJbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9InsiIHNraXA9IlxcXFxcfFxcW3t9XSIJZW5kPSJ9IgkJY29udGFpbnM9QHRleE1hdGNoR3JvdXAsdGV4RXJyb3IKLSBzeW4gcmVnaW9uIHRleE1hdGNoZXIJCW1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSJcWyIJCQkJZW5kPSJdIgkJY29udGFpbnM9QHRleE1hdGNoR3JvdXAsdGV4RXJyb3IKKyBzeW4gcmVnaW9uIHRleE1hdGNoZXIJCW1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSJcWyIJCQkJZW5kPSJdIgkJY29udGFpbnM9QHRleE1hdGNoR3JvdXAsdGV4RXJyb3IsQE5vU3BlbGwKIGVsc2UKICBzeW4gcmVnaW9uIHRleE1hdGNoZXIJCW1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSJ7IiBza2lwPSJcXFxcXHxcXFt7fV0iCWVuZD0ifSIJCWNvbnRhaW5zPUB0ZXhNYXRjaEdyb3VwCiAgc3luIHJlZ2lvbiB0ZXhNYXRjaGVyCQltYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0iXFsiCQkJCWVuZD0iXSIJCWNvbnRhaW5zPUB0ZXhNYXRjaEdyb3VwCkBAIC03MjMsNyArNzIzLDcgQEAKICAgICBcIFsnbGVmdGFycm93dGFpbCcJLCAn4oaiJ10sCiAgICAgXCBbJ2xlZnRoYXJwb29uZG93bicsICfihr0nXSwKICAgICBcIFsnbGVmdGhhcnBvb251cCcJLCAn4oa8J10sCi0gICAgXCBbJ2xlZnRyaWdodGFycm93JwksICfih5QnXSwKKyAgICBcIFsnbGVmdHJpZ2h0YXJyb3cnCSwgJ+KGlCddLAogICAgIFwgWydMZWZ0cmlnaHRhcnJvdycJLCAn4oeUJ10sCiAgICAgXCBbJ2xlZnRyaWdodHNxdWlnYXJyb3cnLCAn4oatJ10sCiAgICAgXCBbJ2xlZnR0aHJlZXRpbWVzJwksICfii4snXSwKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3ZpbS52aW0gYi9ydW50aW1lL3N5bnRheC92aW0udmltCmluZGV4IGY4ZTg0NjUuLjM5MWU2NTAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3ZpbS52aW0KKysrIGIvcnVudGltZS9zeW50YXgvdmltLnZpbQpAQCAtMSw4ICsxLDggQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglWaW0gNy4zIHNjcmlwdAotIiBNYWludGFpbmVyOglEci4gQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIDxOZHJPY2hpcFNAUGNhbXBiZWxsQWZhbWlseS5NYml6PgotIiBMYXN0IENoYW5nZToJSmFuIDExLCAyMDEyCi0iIFZlcnNpb246CTcuMy0xMworIiBNYWludGFpbmVyOglDaGFybGVzIEUuIENhbXBiZWxsIDxOZHJPY2hpcFNAUGNhbXBiZWxsQWZhbWlseS5NYml6PgorIiBMYXN0IENoYW5nZToJTm92IDE0LCAyMDEyCisiIFZlcnNpb246CTcuMy0yMAogIiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBrZXl3b3JkIGxpc3RzOiB7e3sxCiAKICIgUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkIHt7ezIKQEAgLTc2LDcgKzc2LDcgQEAKICIgRnVuY3Rpb24gTmFtZXMge3t7Mgogc3luIGtleXdvcmQgdmltRnVuY05hbWUgY29udGFpbmVkCWFicyBhcHBlbmQgYXJndiBhdGFuMiBidWZleGlzdHMgYnVmbmFtZSBieXRlMmxpbmUgY2VpbCBjaW5kZW50IGNvbXBsZXRlIGNvbmZpcm0gY29zaCBjdXJzb3IgZGlkX2ZpbGV0eXBlIGVtcHR5IGV2ZW50aGFuZGxlciBleHAgZXh0ZW5kIGZpbGV3cml0YWJsZSBmaW5kZmlsZSBmbW9kIGZvbGRjbG9zZWQgZm9sZHRleHQgZnVuY3Rpb24gZ2V0YnVmbGluZSBnZXRjaGFybW9kIGdldGNtZHR5cGUgZ2V0ZnBlcm0gZ2V0ZnR5cGUgZ2V0bWF0Y2hlcyBnZXRxZmxpc3QgZ2V0dGFidmFyIGdldHdpbnBvc3kgZ2xvYnBhdGggaGFzbG9jYWxkaXIgaGlzdGRlbCBobGV4aXN0cyBpY29udiBpbnB1dCBpbnB1dHJlc3RvcmUgaW5zZXJ0IGl0ZW1zIGxlbiBsaW5lIGxvY2FsdGltZSBtYXAgbWF0Y2ggbWF0Y2hkZWxldGUgbWF0Y2hzdHIgbWluIG1vZGUgbmV4dG5vbmJsYW5rIHBhdGhzaG9ydGVuIHByZXZub25ibGFuayBwdW12aXNpYmxlIHJlYWRmaWxlIHJlbHRpbWVzdHIgcmVtb3RlX2ZvcmVncm91bmQgcmVtb3RlX3JlYWQgcmVtb3ZlIHJlcGVhdCByZXZlcnNlIHNlYXJjaCBzZWFyY2hwYWlyIHNlYXJjaHBvcyBzZXJ2ZXJsaXN0IHNldGNtZHBvcyBzZXRsb2NsaXN0IHNldHBvcyBzZXRyZWcgc2V0dGFid2ludmFyIHNoZWxsZXNjYXBlIHNpbiBzb3J0IHNwZWxsYmFkd29yZCBzcGxpdCBzdHIyZmxvYXQgc3RyY2hhcnMgc3RyZnRpbWUgc3RyaW5nIHN0cnBhcnQgc3RydHJhbnMgc3VibWF0Y2ggc3luY29uY2VhbGVkIHN5bklEYXR0ciBzeW5zdGFjayB0YWJwYWdlYnVmbGlzdCB0YWJwYWdld2lubnIgdGFnbGlzdCB0YW5oIHRvbG93ZXIgdHIgdHlwZSB1bmRvdHJlZSB2aXJ0Y29sIHdpbmJ1Zm5yIHdpbmhlaWdodCB3aW5uciB3aW5yZXN0dmlldyB3aW53aWR0aAogc3luIGtleXdvcmQgdmltRnVuY05hbWUgY29udGFpbmVkCWFjb3MgYXJnYyBhc2luIGJyb3dzZSBidWZsaXN0ZWQgYnVmbnIgYnl0ZWlkeCBjaGFuZ2VuciBjbGVhcm1hdGNoZXMgY29tcGxldGVfYWRkIGNvcHkgY291bnQgZGVlcGNvcHkgZGlmZl9maWxsZXIgZXNjYXBlIGV4ZWN1dGFibGUgZXhwYW5kIGZlZWRrZXlzIGZpbHRlciBmbG9hdDJuciBmbmFtZWVzY2FwZSBmb2xkY2xvc2VkZW5kIGZvbGR0ZXh0cmVzdWx0IGdhcmJhZ2Vjb2xsZWN0IGdldGJ1ZnZhciBnZXRjbWRsaW5lIGdldGN3ZCBnZXRmc2l6ZSBnZXRsaW5lIGdldHBpZCBnZXRyZWcgZ2V0dGFid2ludmFyIGdldHdpbnZhciBoYXMgaGFzbWFwdG8gaGlzdGdldCBobElEIGluZGVudCBpbnB1dGRpYWxvZyBpbnB1dHNhdmUgaXNkaXJlY3Rvcnkgam9pbiBsaWJjYWxsIGxpbmUyYnl0ZSBsb2cgbWFwYXJnIG1hdGNoYWRkIG1hdGNoZW5kIG1heCBta2RpciBtemV2YWwgbnIyY2hhciBwb3cgcHJpbnRmIHJhbmdlIHJlbHRpbWUgcmVtb3RlX2V4cHIgcmVtb3RlX3BlZWsgcmVtb3RlX3NlbmQgcmVuYW1lIHJlc29sdmUgcm91bmQgc2VhcmNoZGVjbCBzZWFyY2hwYWlycG9zIHNlcnZlcjJjbGllbnQgc2V0YnVmdmFyIHNldGxpbmUgc2V0bWF0Y2hlcyBzZXRxZmxpc3Qgc2V0dGFidmFyIHNldHdpbnZhciBzaW1wbGlmeSBzaW5oIHNvdW5kZm9sZCBzcGVsbHN1Z2dlc3Qgc3FydCBzdHIybnIgc3RyZGlzcGxheXdpZHRoIHN0cmlkeCBzdHJsZW4gc3RycmlkeCBzdHJ3aWR0aCBzdWJzdGl0dXRlIHN5bklEIHN5bklEdHJhbnMgc3lzdGVtIHRhYnBhZ2VuciB0YWdmaWxlcyB0YW4gdGVtcG5hbWUgdG91cHBlciB0cnVuYyB1bmRvZmlsZSB2YWx1ZXMgdmlzdWFsbW9kZSB3aW5jb2wgd2lubGluZSB3aW5yZXN0Y21kIHdpbnNhdmV2aWV3IHdyaXRlZmlsZQotc3luIGtleXdvcmQgdmltRnVuY05hbWUgY29udGFpbmVkCWFkZCBhcmdpZHggYXRhbiBicm93c2VkaXIgYnVmbG9hZGVkIGJ1Zndpbm5yIGNhbGwgY2hhcjJuciBjb2wgY29tcGxldGVfY2hlY2sgY29zIGNzY29wZV9jb25uZWN0aW9uIGRlbGV0ZSBkaWZmX2hsSUQgZXZhbCBleGlzdHMgZXhwcjggZmlsZXJlYWRhYmxlIGZpbmRkaXIgZmxvb3IgZm5hbWVtb2RpZnkgZm9sZGxldmVsIGZvcmVncm91bmQgZ2V0IGdldGNoYXIgZ2V0Y21kcG9zIGdldGZvbnRuYW1lIGdldGZ0aW1lIGdldGxvY2xpc3QgZ2V0cG9zIGdldHJlZ3R5cGUgZ2V0d2lucG9zeCBnbG9iIGhhc19rZXkgaGlzdGFkZCBoaXN0bnIgaG9zdG5hbWUgaW5kZXggaW5wdXRsaXN0IGlucHV0c2VjcmV0IGlzbG9ja2VkIGtleXMgbGliY2FsbG5yIGxpc3BpbmRlbnQgbG9nMTAgbWFwY2hlY2sgbWF0Y2hhcmcgbWF0Y2hsaXN0IHB5ZXZhbCBweTNldmFsIGx1YWV2YWwKK3N5biBrZXl3b3JkIHZpbUZ1bmNOYW1lIGNvbnRhaW5lZAlhZGQgYXJnaWR4IGF0YW4gYnJvd3NlZGlyIGJ1ZmxvYWRlZCBidWZ3aW5uciBjYWxsIGNoYXIybnIgY29sIGNvbXBsZXRlX2NoZWNrIGNvcyBjc2NvcGVfY29ubmVjdGlvbiBkZWxldGUgZGlmZl9obElEIGV2YWwgZXhpc3RzIGV4cHI4IGZpbGVyZWFkYWJsZSBmaW5kZGlyIGZsb29yIGZuYW1lbW9kaWZ5IGZvbGRsZXZlbCBmb3JlZ3JvdW5kIGdldCBnZXRjaGFyIGdldGNtZHBvcyBnZXRmb250bmFtZSBnZXRmdGltZSBnZXRsb2NsaXN0IGdldHBvcyBnZXRyZWd0eXBlIGdldHdpbnBvc3ggZ2xvYiBoYXNfa2V5IGhpc3RhZGQgaGlzdG5yIGhvc3RuYW1lIGluZGV4IGlucHV0bGlzdCBpbnB1dHNlY3JldCBpc2xvY2tlZCBrZXlzIGxpYmNhbGxuciBsaXNwaW5kZW50IGxvZzEwIG1hcGNoZWNrIG1hdGNoYXJnIG1hdGNobGlzdAogCiAiLS0tIHN5bnRheCBhYm92ZSBnZW5lcmF0ZWQgYnkgbWt2aW12aW0gLS0tCiAiIFNwZWNpYWwgVmltIEhpZ2hsaWdodGluZyAobm90IGF1dG9tYXRpYykge3t7MQpAQCAtMTQ5LDExICsxNDksMTIgQEAKIAogIiBPcGVyYXRvcnM6IHt7ezIKICIgPT09PT09PT09CisiIENPTUJBSzogdmltT3BlclBhcmVuIHVzZWQgdG8gaGF2ZSAib25lbGluZSIKIHN5biBjbHVzdGVyCXZpbU9wZXJHcm91cAljb250YWlucz12aW1GdW5jLHZpbUZ1bmNWYXIsdmltT3Blcix2aW1PcGVyUGFyZW4sdmltTnVtYmVyLHZpbVN0cmluZyx2aW1SZWdpc3Rlcix2aW1Db250aW51ZQogc3luIG1hdGNoCXZpbU9wZXIJIlwoPT1cfCE9XHw+PVx8PD1cfD1cflx8IVx+XHw+XHw8XHw9XClbPyNdXHswLDJ9Iglza2lwd2hpdGUgbmV4dGdyb3VwPXZpbVN0cmluZyx2aW1TcGVjRmlsZQogc3luIG1hdGNoCXZpbU9wZXIJInx8XHwmJlx8Wy0rLl0iCXNraXB3aGl0ZSBuZXh0Z3JvdXA9dmltU3RyaW5nLHZpbVNwZWNGaWxlCi1zeW4gcmVnaW9uCXZpbU9wZXJQYXJlbiAJb25lbGluZSBtYXRjaGdyb3VwPXZpbVBhcmVuU2VwCXN0YXJ0PSIoIiBlbmQ9IikiIGNvbnRhaW5zPUB2aW1PcGVyR3JvdXAKLXN5biByZWdpb24JdmltT3BlclBhcmVuCW9uZWxpbmUgbWF0Y2hncm91cD12aW1TZXAJc3RhcnQ9InsiIGVuZD0ifSIgY29udGFpbnM9QHZpbU9wZXJHcm91cCBuZXh0Z3JvdXA9dmltVmFyLHZpbUZ1bmNWYXIKK3N5biByZWdpb24JdmltT3BlclBhcmVuIAltYXRjaGdyb3VwPXZpbVBhcmVuU2VwCXN0YXJ0PSIoIiBlbmQ9IikiIGNvbnRhaW5zPUB2aW1PcGVyR3JvdXAKK3N5biByZWdpb24JdmltT3BlclBhcmVuCW1hdGNoZ3JvdXA9dmltU2VwCXN0YXJ0PSJ7IiBlbmQ9In0iIGNvbnRhaW5zPUB2aW1PcGVyR3JvdXAgbmV4dGdyb3VwPXZpbVZhcix2aW1GdW5jVmFyCiBpZiAhZXhpc3RzKCJnOnZpbXN5bl9ub2Vycm9yIikgJiYgIWV4aXN0cygiZzp2aW1zeW5fbm9vcGVyZXJyb3IiKQogIHN5biBtYXRjaAl2aW1PcGVyRXJyb3IJIikiCiBlbmRpZgpAQCAtMjAzLDcgKzIwNCw3IEBACiBlbmRpZgogc3luIGNhc2UgaWdub3JlCiBzeW4ga2V5d29yZAl2aW1Vc2VyQXR0cmJLZXkgICBjb250YWluZWQJYmFyCWJhbltnXQljb3VbbnRdCXJhW25nZV0gY29tW3BsZXRlXQluW2FyZ3NdCXJlW2dpc3Rlcl0KLXN5biBrZXl3b3JkCXZpbVVzZXJBdHRyYkNtcGx0IGNvbnRhaW5lZAlhdWdyb3VwIGJ1ZmZlciBjb21tYW5kIGRpciBlbnZpcm9ubWVudCBldmVudCBleHByZXNzaW9uIGZpbGUgZnVuY3Rpb24gaGVscCBoaWdobGlnaHQgbWFwcGluZyBtZW51IG9wdGlvbiBzaGVsbGNtZCBzb21ldGhpbmcgdGFnIHRhZ19saXN0ZmlsZXMgdmFyCitzeW4ga2V5d29yZAl2aW1Vc2VyQXR0cmJDbXBsdCBjb250YWluZWQJYXVncm91cCBidWZmZXIgY29sb3IgY29tbWFuZCBjb21waWxlciBjc2NvcGUgZGlyIGVudmlyb25tZW50IGV2ZW50IGV4cHJlc3Npb24gZmlsZSBmaWxlX2luX3BhdGggZmlsZXR5cGUgZnVuY3Rpb24gaGVscCBoaWdobGlnaHQgbG9jYWxlIG1hcHBpbmcgbWVudSBvcHRpb24gc2hlbGxjbWQgc2lnbiBzeW50YXggdGFnIHRhZ19saXN0ZmlsZXMgdmFyCiBzeW4ga2V5d29yZAl2aW1Vc2VyQXR0cmJDbXBsdCBjb250YWluZWQJY3VzdG9tIGN1c3RvbWxpc3QgbmV4dGdyb3VwPXZpbVVzZXJBdHRyYkNtcGx0RnVuYyx2aW1Vc2VyQ21kRXJyb3IKIHN5biBtYXRjaAl2aW1Vc2VyQXR0cmJDbXBsdEZ1bmMgY29udGFpbmVkCSIsXCUoW3NTXTpcfDxbc1NdW2lJXVtkRF0+XClcPVwlKFxoXHcqXCUoI1x1XHcqXClcK1x8XHVcdypcKSJocz1zKzEgbmV4dGdyb3VwPXZpbVVzZXJDbWRFcnJvcgogCkBAIC0zMjgsNyArMzI5LDcgQEAKIHN5biBtYXRjaAl2aW1NYXBCYW5nCWNvbnRhaW5lZAkiISIJCQlza2lwd2hpdGUgbmV4dGdyb3VwPXZpbU1hcE1vZCx2aW1NYXBMaHMKIHN5biBtYXRjaAl2aW1NYXBNb2QJY29udGFpbmVkCSJcYzxcKGJ1ZmZlclx8ZXhwclx8XChsb2NhbFwpXD1sZWFkZXJcfHBsdWdcfHNjcmlwdFx8c2lkXHx1bmlxdWVcfHNpbGVudFwpXCs+IiBjb250YWlucz12aW1NYXBNb2RLZXksdmltTWFwTW9kRXJyIHNraXB3aGl0ZSBuZXh0Z3JvdXA9dmltTWFwTW9kLHZpbU1hcExocwogc3luIG1hdGNoCXZpbU1hcFJocwljb250YWluZWQJIi4qIiBjb250YWlucz12aW1Ob3RhdGlvbix2aW1DdHJsQ2hhcglza2lwbmwgbmV4dGdyb3VwPXZpbU1hcFJoc0V4dGVuZAotc3luIG1hdGNoCXZpbU1hcFJoc0V4dGVuZAljb250YWluZWQJIl5ccypcXC4qJCIJCQljb250YWlucz12aW1Db250aW51ZQorc3luIG1hdGNoCXZpbU1hcFJoc0V4dGVuZAljb250YWluZWQJIl5ccypcXC4qJCIJCQljb250YWlucz12aW1Ob3RhdGlvbix2aW1DdHJsQ2hhcix2aW1Db250aW51ZQlza2lwbmwgbmV4dGdyb3VwPXZpbU1hcFJoc0V4dGVuZAogc3luIGNhc2UgaWdub3JlCiBzeW4ga2V5d29yZAl2aW1NYXBNb2RLZXkJY29udGFpbmVkCWJ1ZmZlcglleHByCWxlYWRlcglsb2NhbGxlYWRlcglwbHVnCXNjcmlwdAlzaWQJc2lsZW50CXVuaXF1ZQogc3luIGNhc2UgbWF0Y2gKQEAgLTM2MCw4ICszNjEsOCBAQAogIiBVc2VyIEZ1bmN0aW9uIEhpZ2hsaWdodGluZyB7e3syCiAiIChmb2xsb3dpbmcgR2F1dGFtIEl5ZXIncyBzdWdnZXN0aW9uKQogIiA9PT09PT09PT09PT09PT09PT09PT09PT09PQotc3luIG1hdGNoIHZpbUZ1bmMJCSJcJShcJShbc1NnR2JCd1d0VGxMXTpcfDxbc1NdW2lJXVtkRF0+XClcPVwlKFthLXpBLVowLTlfLl1cK1wuXCkqXElbYS16QS1aMC05Xy5dKlwpXHplXHMqKCIJCWNvbnRhaW5zPXZpbUZ1bmNOYW1lLHZpbVVzZXJGdW5jLHZpbUV4ZWN1dGUKLXN5biBtYXRjaCB2aW1Vc2VyRnVuYyBjb250YWluZWQJIlwlKFwlKFtzU2dHYkJ3V3RUbExdOlx8PFtzU11baUldW2REXT5cKVw9XCUoW2EtekEtWjAtOV8uXVwrXC5cKSpcSVthLXpBLVowLTlfLl0qXClcfFw8XHVbYS16QS1aMC05Ll0qXD5cfFw8aWZcPiIJY29udGFpbnM9dmltTm90YXRpb24KK3N5biBtYXRjaCB2aW1GdW5jCQkiXCUoXCUoW3NTZ0diQndXdFRsTF06XHw8W3NTXVtpSV1bZERdPlwpXD1cJShbYS16QS1aMC05X11cK1wuXCkqXElbYS16QS1aMC05Xy5dKlwpXHplXHMqKCIJCWNvbnRhaW5zPXZpbUZ1bmNOYW1lLHZpbVVzZXJGdW5jLHZpbUV4ZWN1dGUKK3N5biBtYXRjaCB2aW1Vc2VyRnVuYyBjb250YWluZWQJIlwlKFwlKFtzU2dHYkJ3V3RUbExdOlx8PFtzU11baUldW2REXT5cKVw9XCUoW2EtekEtWjAtOV9dXCtcLlwpKlxJW2EtekEtWjAtOV8uXSpcKVx8XDxcdVthLXpBLVowLTkuXSpcPlx8XDxpZlw+Igljb250YWlucz12aW1Ob3RhdGlvbgogc3luIG1hdGNoIHZpbU5vdEZ1bmMJIlw8aWZcPlx8XDxlbFwlW3NlaWZdXD5cfFw8cmV0dXJuXD5cfFw8d2hpbGVcPiIKIAogIiBFcnJvcnMgQW5kIFdhcm5pbmdzOiB7e3syCkBAIC00MjksNyArNDMwLDcgQEAKIHN5biByZWdpb24JdmltU3luTWF0Y2hSZWdpb24JY29udGFpbmVkIGtlZXBlbmQJbWF0Y2hncm91cD12aW1Hcm91cE5hbWUgc3RhcnQ9IlxrXCsiIG1hdGNoZ3JvdXA9dmltU2VwIGVuZD0ifFx8JCIgY29udGFpbnM9QHZpbVN5bk10Y2hHcm91cAogc3luIG1hdGNoCXZpbVN5bk10Y2hPcHQJY29udGFpbmVkCSJcPFwoY29uY2VhbFx8dHJhbnNwYXJlbnRcfGNvbnRhaW5lZFx8ZXhjbHVkZW5sXHxza2lwZW1wdHlcfHNraXB3aGl0ZVx8ZGlzcGxheVx8ZXh0ZW5kXHxza2lwbmxcfGZvbGRcKVw+IgogaWYgaGFzKCJjb25jZWFsIikKLSBzeW4gbWF0Y2gJdmltU3luTXRjaE9wdAljb250YWluZWQJIlw8Y2NoYXI9IgluZXh0Z3JvdXA9VmltU3luTXRjaENjaGFyCisgc3luIG1hdGNoCXZpbVN5bk10Y2hPcHQJY29udGFpbmVkCSJcPGNjaGFyPSIJbmV4dGdyb3VwPXZpbVN5bk10Y2hDY2hhcgogIHN5biBtYXRjaAl2aW1TeW5NdGNoQ2NoYXIJY29udGFpbmVkCSJcUyIKIGVuZGlmCiBzeW4gY2x1c3RlciB2aW1GdW5jQm9keUxpc3QgYWRkPXZpbVN5bk10Y2hHcm91cApAQCAtNTEwLDE3ICs1MTEsMTggQEAKIHN5biBtYXRjaAl2aW1IaVRlcm0JY29udGFpbmVkCSJcY3Rlcm09ImhlPWUtMQkJbmV4dGdyb3VwPXZpbUhpQXR0cmliTGlzdAogc3luIG1hdGNoCXZpbUhpU3RhcnRTdG9wCWNvbnRhaW5lZAkiXGNcKHN0YXJ0XHxzdG9wXCk9ImhlPWUtMQluZXh0Z3JvdXA9dmltSGlUZXJtY2FwLHZpbU9wdGlvbgogc3luIG1hdGNoCXZpbUhpQ1Rlcm0JY29udGFpbmVkCSJcY2N0ZXJtPSJoZT1lLTEJCW5leHRncm91cD12aW1IaUF0dHJpYkxpc3QKLXN5biBtYXRjaAl2aW1IaUN0ZXJtRmdCZwljb250YWluZWQJIlxjY3Rlcm1bZmJdZz0iaGU9ZS0xCW5leHRncm91cD12aW1OdW1iZXIsdmltSGlDdGVybUNvbG9yLHZpbUZnQmdBdHRyaWIsdmltSGlDdGVybUVycm9yCitzeW4gbWF0Y2gJdmltSGlDdGVybUZnQmcJY29udGFpbmVkCSJcY2N0ZXJtW2ZiXWc9ImhlPWUtMQluZXh0Z3JvdXA9dmltSGlObWJyLHZpbUhpQ3Rlcm1Db2xvcix2aW1GZ0JnQXR0cmliLHZpbUhpQ3Rlcm1FcnJvcgogc3luIG1hdGNoCXZpbUhpR3VpCWNvbnRhaW5lZAkiXGNndWk9ImhlPWUtMQkJbmV4dGdyb3VwPXZpbUhpQXR0cmliTGlzdAogc3luIG1hdGNoCXZpbUhpR3VpRm9udAljb250YWluZWQJIlxjZm9udD0iaGU9ZS0xCQluZXh0Z3JvdXA9dmltSGlGb250bmFtZQogc3luIG1hdGNoCXZpbUhpR3VpRmdCZwljb250YWluZWQJIlxjZ3VpXCUoW2ZiXWdcfHNwXCk9ImhlPWUtMQluZXh0Z3JvdXA9dmltSGlHcm91cCx2aW1IaUd1aUZvbnRuYW1lLHZpbUhpR3VpUmdiLHZpbUZnQmdBdHRyaWIKIHN5biBtYXRjaAl2aW1IaVRlcm1jYXAJY29udGFpbmVkCSJcU1wrIgkJY29udGFpbnM9dmltTm90YXRpb24KK3N5biBtYXRjaAl2aW1IaU5tYnIJY29udGFpbmVkCSdcZFwrJwogCiAiIEhpZ2hsaWdodDogY2xlYXIge3t7Mgogc3luIGtleXdvcmQJdmltSGlDbGVhcgljb250YWluZWQJY2xlYXIJbmV4dGdyb3VwPXZpbUhpR3JvdXAKIAogIiBIaWdobGlnaHQ6IGxpbmsge3t7Mgotc3luIHJlZ2lvbgl2aW1IaUxpbmsJY29udGFpbmVkIG9uZWxpbmUgbWF0Y2hncm91cD12aW1Db21tYW5kIHN0YXJ0PSJcPFwoZGVmXCVbYXVsdF1cc1wrXClcPWxpbmtcPlx8XDxkZWZcPiIgZW5kPSIkIgljb250YWlucz12aW1IaUdyb3VwLHZpbUdyb3VwLHZpbUhMR3JvdXAsdmltTm90YXRpb24KK3N5biByZWdpb24JdmltSGlMaW5rCWNvbnRhaW5lZCBvbmVsaW5lIG1hdGNoZ3JvdXA9dmltQ29tbWFuZCBzdGFydD0iXChcPGhpXCVbZ2hsaWdodF1cc1wrXClcQDw9XChcKGRlZlwlW2F1bHRdXHNcK1wpXD1saW5rXD5cfFw8ZGVmXD5cKSIgZW5kPSIkIgljb250YWlucz12aW1IaUdyb3VwLHZpbUdyb3VwLHZpbUhMR3JvdXAsdmltTm90YXRpb24KIHN5biBjbHVzdGVyIHZpbUZ1bmNCb2R5TGlzdCBhZGQ9dmltSGlMaW5rCiAKICIgQ29udHJvbCBDaGFyYWN0ZXJzIHt7ezIKQEAgLTU2Miw3ICs1NjQsMTIgQEAKICIgWy0tIGx1YSAtLV0ge3t7MwogbGV0IHM6bHVhcGF0aD0gZm5hbWVlc2NhcGUoZXhwYW5kKCI8c2ZpbGU+OnA6aCIpLiIvbHVhLnZpbSIpCiBpZiAhZmlsZXJlYWRhYmxlKHM6bHVhcGF0aCkKLSBsZXQgczpsdWFwYXRoPSBmbmFtZWVzY2FwZShnbG9icGF0aCgmcnRwLCJzeW50YXgvbHVhLnZpbSIpKQorIGZvciBzOmx1YXBhdGggaW4gc3BsaXQoZ2xvYnBhdGgoJnJ0cCwic3ludGF4L2x1YS52aW0iKSwiXG4iKQorICBpZiBmaWxlcmVhZGFibGUoZm5hbWVlc2NhcGUoczpsdWFwYXRoKSkKKyAgIGxldCBzOmx1YXBhdGg9IGZuYW1lZXNjYXBlKHM6bHVhcGF0aCkKKyAgIGJyZWFrCisgIGVuZGlmCisgZW5kZm9yCiBlbmRpZgogaWYgKGc6dmltc3luX2VtYmVkID1+ICdsJyAmJiBoYXMoImx1YSIpKSAmJiBmaWxlcmVhZGFibGUoczpsdWFwYXRoKQogIHVubGV0ISBiOmN1cnJlbnRfc3ludGF4CkBAIC01ODQsNyArNTkxLDEyIEBACiAiIFstLSBwZXJsIC0tXSB7e3szCiBsZXQgczpwZXJscGF0aD0gZm5hbWVlc2NhcGUoZXhwYW5kKCI8c2ZpbGU+OnA6aCIpLiIvcGVybC52aW0iKQogaWYgIWZpbGVyZWFkYWJsZShzOnBlcmxwYXRoKQotIGxldCBzOnBlcmxwYXRoPSBmbmFtZWVzY2FwZShnbG9icGF0aCgmcnRwLCJzeW50YXgvcGVybC52aW0iKSkKKyBmb3IgczpwZXJscGF0aCBpbiBzcGxpdChnbG9icGF0aCgmcnRwLCJzeW50YXgvcGVybC52aW0iKSwiXG4iKQorICBpZiBmaWxlcmVhZGFibGUoZm5hbWVlc2NhcGUoczpwZXJscGF0aCkpCisgICBsZXQgczpwZXJscGF0aD0gZm5hbWVlc2NhcGUoczpwZXJscGF0aCkKKyAgIGJyZWFrCisgIGVuZGlmCisgZW5kZm9yCiBlbmRpZgogaWYgKGc6dmltc3luX2VtYmVkID1+ICdwJyAmJiBoYXMoInBlcmwiKSkgJiYgZmlsZXJlYWRhYmxlKHM6cGVybHBhdGgpCiAgdW5sZXQhIGI6Y3VycmVudF9zeW50YXgKQEAgLTYwNiw3ICs2MTgsMTIgQEAKICIgWy0tIHJ1YnkgLS1dIHt7ezMKIGxldCBzOnJ1YnlwYXRoPSBmbmFtZWVzY2FwZShleHBhbmQoIjxzZmlsZT46cDpoIikuIi9ydWJ5LnZpbSIpCiBpZiAhZmlsZXJlYWRhYmxlKHM6cnVieXBhdGgpCi0gbGV0IHM6cnVieXBhdGg9IGZuYW1lZXNjYXBlKGdsb2JwYXRoKCZydHAsInN5bnRheC9ydWJ5LnZpbSIpKQorIGZvciBzOnJ1YnlwYXRoIGluIHNwbGl0KGdsb2JwYXRoKCZydHAsInN5bnRheC9ydWJ5LnZpbSIpLCJcbiIpCisgIGlmIGZpbGVyZWFkYWJsZShmbmFtZWVzY2FwZShzOnJ1YnlwYXRoKSkKKyAgIGxldCBzOnJ1YnlwYXRoPSBmbmFtZWVzY2FwZShzOnJ1YnlwYXRoKQorICAgYnJlYWsKKyAgZW5kaWYKKyBlbmRmb3IKIGVuZGlmCiBpZiAoZzp2aW1zeW5fZW1iZWQgPX4gJ3InICYmIGhhcygicnVieSIpKSAmJiBmaWxlcmVhZGFibGUoczpydWJ5cGF0aCkKICB1bmxldCEgYjpjdXJyZW50X3N5bnRheApAQCAtNjI3LDkgKzY0NCwxNCBAQAogIiBbLS0gcHl0aG9uIC0tXSB7e3szCiBsZXQgczpweXRob25wYXRoPSBmbmFtZWVzY2FwZShleHBhbmQoIjxzZmlsZT46cDpoIikuIi9weXRob24udmltIikKIGlmICFmaWxlcmVhZGFibGUoczpweXRob25wYXRoKQotIGxldCBzOnB5dGhvbnBhdGg9IGZuYW1lZXNjYXBlKGdsb2JwYXRoKCZydHAsInN5bnRheC9weXRob24udmltIikpCisgZm9yIHM6cHl0aG9ucGF0aCBpbiBzcGxpdChnbG9icGF0aCgmcnRwLCJzeW50YXgvcHl0aG9uLnZpbSIpLCJcbiIpCisgIGlmIGZpbGVyZWFkYWJsZShmbmFtZWVzY2FwZShzOnB5dGhvbnBhdGgpKQorICAgbGV0IHM6cHl0aG9ucGF0aD0gZm5hbWVlc2NhcGUoczpweXRob25wYXRoKQorICAgYnJlYWsKKyAgZW5kaWYKKyBlbmRmb3IKIGVuZGlmCi1pZiAoZzp2aW1zeW5fZW1iZWQgPX4gJ1AnICYmIGhhcygicHl0aG9uIikpICYmIGZpbGVyZWFkYWJsZShzOnB5dGhvbnBhdGgpCitpZiBnOnZpbXN5bl9lbWJlZCA9fiAnUCcgJiYgKGhhcygicHl0aG9uIikgfHwgaGFzKCJweXRob24zIikpICYmIGZpbGVyZWFkYWJsZShzOnB5dGhvbnBhdGgpCiAgdW5sZXQhIGI6Y3VycmVudF9zeW50YXgKICBleGUgInN5biBpbmNsdWRlIEB2aW1QeXRob25TY3JpcHQgIi5zOnB5dGhvbnBhdGgKICBpZiBleGlzdHMoImc6dmltc3luX2ZvbGRpbmciKSAmJiBnOnZpbXN5bl9mb2xkaW5nID1+ICdQJwpAQCAtNjU2LDcgKzY3OCwxMiBAQAogaWYgczp0cnl0Y2wKICBsZXQgczp0Y2xwYXRoPSBmbmFtZWVzY2FwZShleHBhbmQoIjxzZmlsZT46cDpoIikuIi90Y2wudmltIikKICBpZiAhZmlsZXJlYWRhYmxlKHM6dGNscGF0aCkKLSAgbGV0IHM6dGNscGF0aD0gZm5hbWVlc2NhcGUoZ2xvYnBhdGgoJnJ0cCwic3ludGF4L3RjbC52aW0iKSkKKyAgZm9yIHM6dGNscGF0aCBpbiBzcGxpdChnbG9icGF0aCgmcnRwLCJzeW50YXgvdGNsLnZpbSIpLCJcbiIpCisgICBpZiBmaWxlcmVhZGFibGUoZm5hbWVlc2NhcGUoczp0Y2xwYXRoKSkKKyAgICBsZXQgczp0Y2xwYXRoPSBmbmFtZWVzY2FwZShzOnRjbHBhdGgpCisgICAgYnJlYWsKKyAgIGVuZGlmCisgIGVuZGZvcgogIGVuZGlmCiAgaWYgKGc6dmltc3luX2VtYmVkID1+ICd0JyAmJiBoYXMoInRjbCIpKSAmJiBmaWxlcmVhZGFibGUoczp0Y2xwYXRoKQogICB1bmxldCEgYjpjdXJyZW50X3N5bnRheApAQCAtNjgzLDcgKzcxMCwxMiBAQAogIiBbLS0gbXpzY2hlbWUgLS1dIHt7ezMKIGxldCBzOm16c2NoZW1lcGF0aD0gZm5hbWVlc2NhcGUoZXhwYW5kKCI8c2ZpbGU+OnA6aCIpLiIvc2NoZW1lLnZpbSIpCiBpZiAhZmlsZXJlYWRhYmxlKHM6bXpzY2hlbWVwYXRoKQotIGxldCBzOm16c2NoZW1lcGF0aD0gZm5hbWVlc2NhcGUoZ2xvYnBhdGgoJnJ0cCwic3ludGF4L3NjaGVtZS52aW0iKSkKKyBmb3IgczptenNjaGVtZXBhdGggaW4gc3BsaXQoZ2xvYnBhdGgoJnJ0cCwic3ludGF4L216c2NoZW1lLnZpbSIpLCJcbiIpCisgIGlmIGZpbGVyZWFkYWJsZShmbmFtZWVzY2FwZShzOm16c2NoZW1lcGF0aCkpCisgICBsZXQgczptenNjaGVtZXBhdGg9IGZuYW1lZXNjYXBlKHM6bXpzY2hlbWVwYXRoKQorICAgYnJlYWsKKyAgZW5kaWYKKyBlbmRmb3IKIGVuZGlmCiBpZiAoZzp2aW1zeW5fZW1iZWQgPX4gJ20nICYmIGhhcygibXpzY2hlbWUiKSkgJiYgZmlsZXJlYWRhYmxlKHM6bXpzY2hlbWVwYXRoKQogIHVubGV0ISBiOmN1cnJlbnRfc3ludGF4CkBAIC04NzksNiArOTExLDcgQEAKIGhpIGRlZiBsaW5rIHZpbVVzZXJGdW5jCU5vcm1hbAogaGkgZGVmIGxpbmsgdmltVmFyCUlkZW50aWZpZXIKIGhpIGRlZiBsaW5rIHZpbVdhcm4JV2FybmluZ01zZworaGkgZGVmIGxpbmsgdmltSGlObWJyCU51bWJlcgogCiAiIEN1cnJlbnQgU3ludGF4IFZhcmlhYmxlOiB7e3syCiBsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJ2aW0iCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC95YWNjLnZpbSBiL3J1bnRpbWUvc3ludGF4L3lhY2MudmltCmluZGV4IDRkZGYwNzguLjNkYTdmZmMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3lhY2MudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3lhY2MudmltCkBAIC0xLDggKzEsOCBAQAogIiBWaW0gc3ludGF4IGZpbGUKICIgTGFuZ3VhZ2U6CVlhY2MKLSIgTWFpbnRhaW5lcjoJQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIDxOZHJPY2hpcFNAUGNhbXBiZWxsQWZhbWlseS5NYml6PgotIiBMYXN0IENoYW5nZToJQXVnIDEyLCAyMDEwCi0iIFZlcnNpb246CTkKKyIgTWFpbnRhaW5lcjoJQ2hhcmxlcyBFLiBDYW1wYmVsbCA8TmRyT2NoaXBTQFBjYW1wYmVsbEFmYW1pbHkuTWJpej4KKyIgTGFzdCBDaGFuZ2U6CU5vdiAxNCwgMjAxMgorIiBWZXJzaW9uOgkxMAogIiBVUkw6CWh0dHA6Ly9teXNpdGUudmVyaXpvbi5uZXQvYXN0cm9uYXV0L3ZpbS9pbmRleC5odG1sI3ZpbWxpbmtzX3N5bnRheAogIgogIiBPcHRpb25zOiB7e3sxCkBAIC0yMCwxOCArMjAsMjQgQEAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiICBGb2xkaW5nIFN1cHBvcnQge3t7MQogaWYgaGFzKCJmb2xkaW5nIikKLSBjb20hIC1uYXJncz0rIEhpRm9sZAk8YXJncz4gZm9sZAorIGNvbSEgLW5hcmdzPSsgU3luRm9sZAk8YXJncz4gZm9sZAogZWxzZQotIGNvbSEgLW5hcmdzPSsgSGlGb2xkCTxhcmdzPgorIGNvbSEgLW5hcmdzPSsgU3luRm9sZAk8YXJncz4KIGVuZGlmCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIFJlYWQgdGhlIEMgc3ludGF4IHRvIHN0YXJ0IHdpdGgge3t7MQotaWYgZXhpc3RzKCJnOnlhY2NfdXNlc19jcHAiKQotIHN5biBpbmNsdWRlIEB5YWNjQ29kZQk8c2ZpbGU+OnA6aC9jcHAudmltCi1lbHNlCi0gc3luIGluY2x1ZGUgQHlhY2NDb2RlCTxzZmlsZT46cDpoL2MudmltCisiIFJlYWQgdGhlIEMvQysrIHN5bnRheCB0byBzdGFydCB3aXRoCitsZXQgczpDcGF0aD0gZm5hbWVlc2NhcGUoZXhwYW5kKCI8c2ZpbGU+OnA6aCIpLihleGlzdHMoImc6eWFjY191c2VzX2NwcCIpPyAiL2NwcC52aW0iIDogIi9jLnZpbSIpKQoraWYgIWZpbGVyZWFkYWJsZShzOkNwYXRoKQorIGZvciBzOkNwYXRoIGluIHNwbGl0KGdsb2JwYXRoKCZydHAsKGV4aXN0cygiZzp5YWNjX3VzZXNfY3BwIik/ICJzeW50YXgvY3BwLnZpbSIgOiAic3ludGF4L2MudmltIikpLCJcbiIpCisgIGlmIGZpbGVyZWFkYWJsZShmbmFtZWVzY2FwZShzOkNwYXRoKSkKKyAgIGxldCBzOkNwYXRoPSBmbmFtZWVzY2FwZShzOkNwYXRoKQorICAgYnJlYWsKKyAgZW5kaWYKKyBlbmRmb3IKIGVuZGlmCitleGUgInN5biBpbmNsdWRlIEB5YWNjQ29kZSAiLnM6Q3BhdGgKIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgIFlhY2MgQ2x1c3RlcnM6IHt7ezEKQEAgLTQwLDEyICs0NiwxMiBAQAogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiAgWWFjYyBTZWN0aW9uczoge3t7MQotSGlGb2xkIHN5bglyZWdpb24JeWFjY0luaXQJc3RhcnQ9Jy4nbXM9cy0xLHJzPXMtMQltYXRjaGdyb3VwPXlhY2NTZWN0aW9uU2VwCWVuZD0nXiUlJCdtZT1lLTIscmU9ZS0yCWNvbnRhaW5zPUB5YWNjSW5pdENsdXN0ZXIJbmV4dGdyb3VwPXlhY2NSdWxlcwlza2lwd2hpdGUgc2tpcGVtcHR5IGNvbnRhaW5lZAotSGlGb2xkIHN5bglyZWdpb24JeWFjY0luaXQyICAgICAgc3RhcnQ9J1wlXi4nbXM9cy0xLHJzPXMtMQltYXRjaGdyb3VwPXlhY2NTZWN0aW9uU2VwCWVuZD0nXiUlJCdtZT1lLTIscmU9ZS0yCWNvbnRhaW5zPUB5YWNjSW5pdENsdXN0ZXIJbmV4dGdyb3VwPXlhY2NSdWxlcwlza2lwd2hpdGUgc2tpcGVtcHR5Ci1IaUZvbGQgc3luCXJlZ2lvbgl5YWNjSGVhZGVyMgltYXRjaGdyb3VwPXlhY2NTZXAJc3RhcnQ9Il5ccypcenMleyIJZW5kPSJeXHMqJX0iCQljb250YWlucz1AeWFjY0NvZGUJbmV4dGdyb3VwPXlhY2NJbml0CXNraXB3aGl0ZSBza2lwZW1wdHkgY29udGFpbmVkCi1IaUZvbGQgc3luCXJlZ2lvbgl5YWNjSGVhZGVyCW1hdGNoZ3JvdXA9eWFjY1NlcAlzdGFydD0iXlxzKlx6cyV7IgllbmQ9Il5ccyolfSIJCWNvbnRhaW5zPUB5YWNjQ29kZQluZXh0Z3JvdXA9eWFjY0luaXQJc2tpcHdoaXRlIHNraXBlbXB0eQotSGlGb2xkIHN5bglyZWdpb24JeWFjY1J1bGVzCW1hdGNoZ3JvdXA9eWFjY1NlY3Rpb25TZXAJc3RhcnQ9J14lJSQnCQllbmQ9J14lJSQnbWU9ZS0yLHJlPWUtMgljb250YWlucz1AeWFjY1J1bGVzQ2x1c3RlcgluZXh0Z3JvdXA9eWFjY0VuZENvZGUJc2tpcHdoaXRlIHNraXBlbXB0eSBjb250YWluZWQKLUhpRm9sZCBzeW4JcmVnaW9uCXlhY2NFbmRDb2RlCW1hdGNoZ3JvdXA9eWFjY1NlY3Rpb25TZXAJc3RhcnQ9J14lJSQnCQllbmQ9J1wlJCcJCWNvbnRhaW5zPUB5YWNjQ29kZQljb250YWluZWQKK1N5bkZvbGQgc3luCXJlZ2lvbgl5YWNjSW5pdAlzdGFydD0nLidtcz1zLTEscnM9cy0xCW1hdGNoZ3JvdXA9eWFjY1NlY3Rpb25TZXAJZW5kPSdeJSUkJ21lPWUtMixyZT1lLTIJY29udGFpbnM9QHlhY2NJbml0Q2x1c3RlcgluZXh0Z3JvdXA9eWFjY1J1bGVzCXNraXB3aGl0ZSBza2lwZW1wdHkgY29udGFpbmVkCitTeW5Gb2xkIHN5bglyZWdpb24JeWFjY0luaXQyICAgICAgc3RhcnQ9J1wlXi4nbXM9cy0xLHJzPXMtMQltYXRjaGdyb3VwPXlhY2NTZWN0aW9uU2VwCWVuZD0nXiUlJCdtZT1lLTIscmU9ZS0yCWNvbnRhaW5zPUB5YWNjSW5pdENsdXN0ZXIJbmV4dGdyb3VwPXlhY2NSdWxlcwlza2lwd2hpdGUgc2tpcGVtcHR5CitTeW5Gb2xkIHN5bglyZWdpb24JeWFjY0hlYWRlcjIJbWF0Y2hncm91cD15YWNjU2VwCXN0YXJ0PSJeXHMqXHpzJXsiCWVuZD0iXlxzKiV9IgkJY29udGFpbnM9QHlhY2NDb2RlCW5leHRncm91cD15YWNjSW5pdAlza2lwd2hpdGUgc2tpcGVtcHR5IGNvbnRhaW5lZAorU3luRm9sZCBzeW4JcmVnaW9uCXlhY2NIZWFkZXIJbWF0Y2hncm91cD15YWNjU2VwCXN0YXJ0PSJeXHMqXHpzJXsiCWVuZD0iXlxzKiV9IgkJY29udGFpbnM9QHlhY2NDb2RlCW5leHRncm91cD15YWNjSW5pdAlza2lwd2hpdGUgc2tpcGVtcHR5CitTeW5Gb2xkIHN5bglyZWdpb24JeWFjY1J1bGVzCW1hdGNoZ3JvdXA9eWFjY1NlY3Rpb25TZXAJc3RhcnQ9J14lJSQnCQllbmQ9J14lJSQnbWU9ZS0yLHJlPWUtMgljb250YWlucz1AeWFjY1J1bGVzQ2x1c3RlcgluZXh0Z3JvdXA9eWFjY0VuZENvZGUJc2tpcHdoaXRlIHNraXBlbXB0eSBjb250YWluZWQKK1N5bkZvbGQgc3luCXJlZ2lvbgl5YWNjRW5kQ29kZQltYXRjaGdyb3VwPXlhY2NTZWN0aW9uU2VwCXN0YXJ0PSdeJSUkJwkJZW5kPSdcJSQnCQljb250YWlucz1AeWFjY0NvZGUJY29udGFpbmVkCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIFlhY2MgQ29tbWFuZHM6IHt7ezEKQEAgLTYzLDExICs2OSwxMSBAQAogc3luCWtleXdvcmQJeWFjY0tleUFjdG4JeXllcnJvayB5eWNsZWFyaW4JY29udGFpbmVkCiAKIHN5bgltYXRjaAl5YWNjVW5pb25TdGFydAkiXiV1bmlvbiIJc2tpcHdoaXRlIHNraXBubCBuZXh0Z3JvdXA9eWFjY1VuaW9uCWNvbnRhaW5lZAotSGlGb2xkIHN5bglyZWdpb24JeWFjY1VuaW9uCW1hdGNoZ3JvdXA9eWFjY0N1cmx5IHN0YXJ0PSJ7IiBtYXRjaGdyb3VwPXlhY2NDdXJseSBlbmQ9In0iIGNvbnRhaW5zPUB5YWNjQ29kZQljb250YWluZWQKK1N5bkZvbGQgc3luCXJlZ2lvbgl5YWNjVW5pb24JbWF0Y2hncm91cD15YWNjQ3VybHkgc3RhcnQ9InsiIG1hdGNoZ3JvdXA9eWFjY0N1cmx5IGVuZD0ifSIgY29udGFpbnM9QHlhY2NDb2RlCWNvbnRhaW5lZAogc3luCW1hdGNoCXlhY2NCcmt0CSJbPD5dIgljb250YWluZWQKIHN5bgltYXRjaAl5YWNjVHlwZQkiPFthLXpBLVpfXVthLXpBLVowLTlfXSo+Igljb250YWlucz15YWNjQnJrdAljb250YWluZWQKIAotSGlGb2xkIHN5bglyZWdpb24JeWFjY05vbnRlcm1pbmFsCXN0YXJ0PSJeXHMqXGFcdypcemVcX3MqXCgvXCpcXy5cey19XCovXClcPVxfcyo6IgltYXRjaGdyb3VwPXlhY2NEZWxpbSBlbmQ9IjsiCW1hdGNoZ3JvdXA9eWFjY1NlY3Rpb25TZXAgZW5kPSdeJSUkJ21lPWUtMixyZT1lLTIgY29udGFpbnM9eWFjY0FjdGlvbix5YWNjRGVsaW0seWFjY1N0cmluZyx5YWNjQ29tbWVudAljb250YWluZWQKK1N5bkZvbGQgc3luCXJlZ2lvbgl5YWNjTm9udGVybWluYWwJc3RhcnQ9Il5ccypcYVx3Klx6ZVxfcypcKC9cKlxfLlx7LX1cKi9cKVw9XF9zKjoiCW1hdGNoZ3JvdXA9eWFjY0RlbGltIGVuZD0iOyIJbWF0Y2hncm91cD15YWNjU2VjdGlvblNlcCBlbmQ9J14lJSQnbWU9ZS0yLHJlPWUtMiBjb250YWlucz15YWNjQWN0aW9uLHlhY2NEZWxpbSx5YWNjU3RyaW5nLHlhY2NDb21tZW50CWNvbnRhaW5lZAogc3luCXJlZ2lvbgl5YWNjQ29tbWVudAlzdGFydD0iL1wqIgllbmQ9IlwqLyIKIHN5bgltYXRjaAl5YWNjU3RyaW5nCSInW14nXSonIgljb250YWluZWQKIApAQCAtNzUsNyArODEsOCBAQAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgSSdkIHJlYWxseSBsaWtlIHRvIGhpZ2hsaWdodCBqdXN0IHRoZSBvdXRlciB7fS4gIEFueSBzdWdnZXN0aW9ucz8/PyB7e3sxCiBzeW4JbWF0Y2gJeWFjY0N1cmx5RXJyb3IJIlt7fV0iCi1IaUZvbGQgc3luCXJlZ2lvbgl5YWNjQWN0aW9uCW1hdGNoZ3JvdXA9eWFjY0N1cmx5IHN0YXJ0PSJ7IiBlbmQ9In0iIGNvbnRhaW5zPUB5YWNjQ29kZQljb250YWluZWQKK1N5bkZvbGQgc3luCXJlZ2lvbgl5YWNjQWN0aW9uCW1hdGNoZ3JvdXA9eWFjY0N1cmx5IHN0YXJ0PSJ7IiBlbmQ9In0iIAljb250YWlucz1AeWFjY0NvZGUseWFjY1ZhcgkJY29udGFpbmVkCitzeW4JbWF0Y2gJeWFjY1ZhcgknXCRcZFwrXHxcJFwkXHxcJDxcSVxpKj5cJFx8XCQ8XElcaSo+XGRcKycJY29udGFpbmVkaW49Y1BhcmVuLGNQcmVQcm9jLGNNdWx0aQljb250YWluZWQKIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgWWFjYyBzeW5jaHJvbml6YXRpb246IHt7ezEKQEAgLTg0LDM5ICs5MSwzMCBAQAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgRGVmaW5lIHRoZSBkZWZhdWx0IGhpZ2hsaWdodGluZy4ge3t7MQogaWYgIWV4aXN0cygiZGlkX3lhY2Nfc3luX2luaXRzIikKLSAgY29tbWFuZCAtbmFyZ3M9KyBIaUxpbmsgaGkgZGVmIGxpbmsgPGFyZ3M+Ci0KLSAgIiBJbnRlcm5hbCB5YWNjIGhpZ2hsaWdodGluZyBsaW5rcyB7e3syCi0gIEhpTGluayB5YWNjQnJrdAl5YWNjU3RtdAotICBIaUxpbmsgeWFjY0tleQl5YWNjU3RtdAotICBIaUxpbmsgeWFjY09wZXIJeWFjY1N0bXQKLSAgSGlMaW5rIHlhY2NVbmlvblN0YXJ0CXlhY2NLZXkKLQotICAiIEV4dGVybmFsIHlhY2MgaGlnaGxpZ2h0aW5nIGxpbmtzIHt7ezIKLSAgSGlMaW5rIHlhY2NDb21tZW50CUNvbW1lbnQKLSAgSGlMaW5rIHlhY2NDdXJseQlEZWxpbWl0ZXIKLSAgSGlMaW5rIHlhY2NDdXJseUVycm9yCUVycm9yCi0gIEhpTGluayB5YWNjRGVmaW5lcwljRGVmaW5lCi0gIEhpTGluayB5YWNjUGFyc2VQYXJhbQl5YWNjUGFyc2VPcHRpb24KLSAgSGlMaW5rIHlhY2NQYXJzZU9wdGlvbgljRGVmaW5lCi0gIEhpTGluayB5YWNjTm9udGVybWluYWwJRnVuY3Rpb24KLSAgSGlMaW5rIHlhY2NEZWxpbQlEZWxpbWl0ZXIKLSAgSGlMaW5rIHlhY2NLZXlBY3RuCVNwZWNpYWwKLSAgSGlMaW5rIHlhY2NTZWN0aW9uU2VwCVRvZG8KLSAgSGlMaW5rIHlhY2NTZXAJRGVsaW1pdGVyCi0gIEhpTGluayB5YWNjU3RyaW5nCVN0cmluZwotICBIaUxpbmsgeWFjY1N0bXQJU3RhdGVtZW50Ci0gIEhpTGluayB5YWNjVHlwZQlUeXBlCi0KLSAgIiBzaW5jZSBCcmFtIGRvZXNuJ3QgbGlrZSBteSBEZWxpbWl0ZXIgOnwge3t7MgotICBIaUxpbmsgRGVsaW1pdGVyCVR5cGUKLQotICBkZWxjb21tYW5kIEhpTGluaworICBoaSBkZWYgbGluayB5YWNjQnJrdAl5YWNjU3RtdAorICBoaSBkZWYgbGluayB5YWNjQ29tbWVudAlDb21tZW50CisgIGhpIGRlZiBsaW5rIHlhY2NDdXJseQlEZWxpbWl0ZXIKKyAgaGkgZGVmIGxpbmsgeWFjY0N1cmx5RXJyb3IJRXJyb3IKKyAgaGkgZGVmIGxpbmsgeWFjY0RlZmluZXMJY0RlZmluZQorICBoaSBkZWYgbGluayB5YWNjRGVsaW0JRGVsaW1pdGVyCisgIGhpIGRlZiBsaW5rIHlhY2NLZXlBY3RuCVNwZWNpYWwKKyAgaGkgZGVmIGxpbmsgeWFjY0tleQl5YWNjU3RtdAorICBoaSBkZWYgbGluayB5YWNjTm9udGVybWluYWwJRnVuY3Rpb24KKyAgaGkgZGVmIGxpbmsgeWFjY09wZXIJeWFjY1N0bXQKKyAgaGkgZGVmIGxpbmsgeWFjY1BhcnNlT3B0aW9uCWNEZWZpbmUKKyAgaGkgZGVmIGxpbmsgeWFjY1BhcnNlUGFyYW0JeWFjY1BhcnNlT3B0aW9uCisgIGhpIGRlZiBsaW5rIHlhY2NTZWN0aW9uU2VwCVRvZG8KKyAgaGkgZGVmIGxpbmsgeWFjY1NlcAlEZWxpbWl0ZXIKKyAgaGkgZGVmIGxpbmsgeWFjY1N0bXQJU3RhdGVtZW50CisgIGhpIGRlZiBsaW5rIHlhY2NTdHJpbmcJU3RyaW5nCisgIGhpIGRlZiBsaW5rIHlhY2NUeXBlCVR5cGUKKyAgaGkgZGVmIGxpbmsgeWFjY1VuaW9uU3RhcnQJeWFjY0tleQorICBoaSBkZWYgbGluayB5YWNjVmFyCVNwZWNpYWwKIGVuZGlmCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiICBDbGVhbnVwOiB7e3sxCi1kZWxjb21tYW5kIEhpRm9sZAorZGVsY29tbWFuZCBTeW5Gb2xkCiBsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJ5YWNjIgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3BvL2VvLnBvIGIvc3JjL3BvL2VvLnBvCmluZGV4IDIwYjM5NmMuLjgyODg0ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9wby9lby5wbworKysgYi9zcmMvcG8vZW8ucG8KQEAgLTIzLDggKzIzLDggQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogVmltKEVzcGVyYW50bylcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTItMDEtMjIgMTU6MzcrMDEwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMTItMDEtMjIgMTU6MzgrMDEwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDEyLTA4LTE5IDA2OjM1KzAyMDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDEyLTA4LTE5IDA2OjQxKzAyMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IERvbWluaXF1ZSBQRUxMw4kgPGRvbWluaXF1ZS5wZWxsZUBnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogXG4iCiAiTGFuZ3VhZ2U6IGVvXG4iCkBAIC01NCw2ICs1NCw5IEBACiBtc2dpZCAiW1F1aWNrZml4IExpc3RdIgogbXNnc3RyICJbTGlzdG8gZGUgcmFwaWRyaXBhcm9qXSIKIAorbXNnaWQgIkU4NTU6IEF1dG9jb21tYW5kcyBjYXVzZWQgY29tbWFuZCB0byBhYm9ydCIKK21zZ3N0ciAiRTg1NTogQcWtdG9rb21hbmRvaiBoYWx0aWdpcyBrb21hbmRvbiIKKwogbXNnaWQgIkU4MjogQ2Fubm90IGFsbG9jYXRlIGFueSBidWZmZXIsIGV4aXRpbmcuLi4iCiBtc2dzdHIgIkU4MjogTmUgZWJsYXMgZGlzcG9uaWdpIGl1biBham4gYnVmcm9uLCBudW4gZWxpcmFzLi4uIgogCkBAIC0yNjM1LDYgKzI2MzgsMTAgQEAKIG1zZ2lkICJFODM2OiBUaGlzIFZpbSBjYW5ub3QgZXhlY3V0ZSA6cHl0aG9uIGFmdGVyIHVzaW5nIDpweTMiCiBtc2dzdHIgIkU4MzY6IFZpbSBuZSBwb3ZhcyBwbGVudW1pIDpweXRob24gcG9zdCB1em8gZGUgOnB5MyIKIAorIy4gQWRkIGNvbnZlcnNpb24gZnJvbSBQeUludD8KK21zZ2lkICJvbmx5IHN0cmluZyBrZXlzIGFyZSBhbGxvd2VkIgorbXNnc3RyICJudXIgxIllbmFqIMWdbG9zaWxvaiBlc3RhcyBwZXJtaXNhdGFqIgorCiBtc2dpZCAiIgogIkUyNjM6IFNvcnJ5LCB0aGlzIGNvbW1hbmQgaXMgZGlzYWJsZWQsIHRoZSBQeXRob24gbGlicmFyeSBjb3VsZCBub3QgYmUgIgogImxvYWRlZC4iCkBAIC0yNjQ1LDYgKzI2NTIsMTIgQEAKIG1zZ2lkICJFNjU5OiBDYW5ub3QgaW52b2tlIFB5dGhvbiByZWN1cnNpdmVseSIKIG1zZ3N0ciAiRTY1OTogTmUgZWJsYXMgYWx2b2tpIFBpdG9ub24gcmVrdXJzaWUiCiAKK21zZ2lkICJFODU4OiBFdmFsIGRpZCBub3QgcmV0dXJuIGEgdmFsaWQgcHl0aG9uIG9iamVjdCIKK21zZ3N0ciAiRTg1ODogRXZhbCBuZSByZXZlbmlzIGt1biB2YWxpZGEgcHl0aG9uLW9iamVrdG8iCisKK21zZ2lkICJFODU5OiBGYWlsZWQgdG8gY29udmVydCByZXR1cm5lZCBweXRob24gb2JqZWN0IHRvIHZpbSB2YWx1ZSIKK21zZ3N0ciAiRTg1OTogS29udmVydG8gZGUgcmV2ZW5hIHB5dGhvbi1vYmpla3RvIGFsIHZpbS12YWxvcm8gZmlhc2tpcyIKKwogbXNnaWQgImNhbid0IGRlbGV0ZSBPdXRwdXRPYmplY3QgYXR0cmlidXRlcyIKIG1zZ3N0ciAibmUgZWJsYXMgZm9ydmnFnWkgYXRyaWJ1dG9qbiBkZSBPdXRwdXRPYmplY3QiCiAKQEAgLTI2NjEsNiArMjY3NCwxMiBAQAogbXNnaWQgIkU4Mzc6IFRoaXMgVmltIGNhbm5vdCBleGVjdXRlIDpweTMgYWZ0ZXIgdXNpbmcgOnB5dGhvbiIKIG1zZ3N0ciAiRTgzNzogVmltIG5lIHBvdmFzIHBsZW51bWkgOnB5MyAgcG9zdCB1em8gZGUgOnB5dGhvbiIKIAorbXNnaWQgIkU4NjA6IEV2YWwgZGlkIG5vdCByZXR1cm4gYSB2YWxpZCBweXRob24gMyBvYmplY3QiCittc2dzdHIgIkU4NjA6IEV2YWwgbmUgcmV2ZW5pcyBrdW4gdmFsaWRhIHB5dGhvbjMtb2JqZWt0byIKKworbXNnaWQgIkU4NjE6IEZhaWxlZCB0byBjb252ZXJ0IHJldHVybmVkIHB5dGhvbiAzIG9iamVjdCB0byB2aW0gdmFsdWUiCittc2dzdHIgIkU4NjE6IEtvbnZlcnRvIGRlIHJldmVuYSBweXRob24zLW9iamVrdG8gYWwgdmltLXZhbG9ybyBmaWFza2lzIgorCiBtc2dpZCAiRTI2NTogJF8gbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBTdHJpbmciCiBtc2dzdHIgIkUyNjU6ICRfIGRldmFzIGVzdGkgYXBlcm8gZGUgxIhlbm8iCiAKQEAgLTI4NDksMTIgKzI4NjgsNiBAQAogIkU1NzE6IEJlZGHFrXJpbmRlIHRpdSBrb21hbmRvIGVzdGFzIG1hbMWdYWx0aXRhOiBsYSBiaWJsaW90ZWtvIFRjbCBuZSAiCiAixZ1hcmdlYmxpcy4iCiAKLW1zZ2lkICIiCi0iRTI4MTogVENMIEVSUk9SOiBleGl0IGNvZGUgaXMgbm90IGludCE/IFBsZWFzZSByZXBvcnQgdGhpcyB0byB2aW0tZGV2QHZpbS5vcmciCi1tc2dzdHIgIiIKLSJFMjgxOiBUQ0wtRVJBUk86IGVsaXJhIGtvZG8gbmUgZXN0YXMgZW50amVyYSE/IEJ2LiByZXRwb8WddGkgYWwgdmltLWRldkB2aW0uIgotIm9yZyIKLQogIywgYy1mb3JtYXQKIG1zZ2lkICJFNTcyOiBleGl0IGNvZGUgJWQiCiBtc2dzdHIgIkU1NzI6IGVsaXJhIGtvZG8gJWQiCkBAIC0zMDEyLDYgKzMwMjUsOSBAQAogbXNnaWQgIi1lXHRcdFx0RXggbW9kZSAobGlrZSBcImV4XCIpIgogbXNnc3RyICItZVx0XHRcdFJlxJ1pbW8gRXggKGtpZWwgXCJleFwiKSIKIAorbXNnaWQgIi1FXHRcdFx0SW1wcm92ZWQgRXggbW9kZSIKK21zZ3N0ciAiLUVcdFx0XHRQbGlib25pZ2l0YSBFeC1yZcSdaW1vIgorCiBtc2dpZCAiLXNcdFx0XHRTaWxlbnQgKGJhdGNoKSBtb2RlIChvbmx5IGZvciBcImV4XCIpIgogbXNnc3RyICItc1x0XHRcdFNpbGVudGEgKHN0YXBsYSkgcmXEnWltbyAobnVyIHBvciBcImV4XCIpIgogCkBAIC0zMjY5LDYgKzMyODUsOSBAQAogbXNnaWQgIi0tc29ja2V0aWQgPHhpZD5cdE9wZW4gVmltIGluc2lkZSBhbm90aGVyIEdUSyB3aWRnZXQiCiBtc2dzdHIgIi0tc29ja2V0aWQgPHhpZD5cdE1hbGZlcm1pIFZpbSBlbiBhbGlhIEdUSyBmZW5lc3RyYcS1byIKIAorbXNnaWQgIi0tZWNoby13aWRcdFx0TWFrZSBndmltIGVjaG8gdGhlIFdpbmRvdyBJRCBvbiBzdGRvdXQiCittc2dzdHIgIi0tZWNoby13aWRcdFx0SWdhcyBndmltIGFmacWdaSBsYSBpZGVudGlnaWxvbiBkZSB2aW5kb3pvIHN1ciBzdGRvdXQiCisKIG1zZ2lkICItUCA8cGFyZW50IHRpdGxlPlx0T3BlbiBWaW0gaW5zaWRlIHBhcmVudCBhcHBsaWNhdGlvbiIKIG1zZ3N0ciAiLVAgPGdlcGF0cmEgdGl0b2xvPlx0TWFsZmVybWkgVmltIGVuIGdlcGF0cmEgYXBsaWthxLVvIgogCkBAIC02NTU2LDYgKzY1NzUsNDIgQEAKIG1zZ2lkICJubyBzdWNoIGJ1ZmZlciIKIG1zZ3N0ciAibmUgZXN0YXMgdGlhIGJ1ZnJvIgogCittc2dpZCAiZmFpbGVkIHRvIGFkZCBrZXkgdG8gZGljdGlvbmFyeSIKK21zZ3N0ciAiYWxkb25vIGRlIMWdbG9zaWxvIGFsIHZvcnRhcm8gZmlhc2tpcyIKKworbXNnaWQgImRpY3QgaXMgbG9ja2VkIgorbXNnc3RyICJ2b3J0YXJvIGVzdGFzIMWdbG9zaXRhIgorCittc2dpZCAibm8gc3VjaCBrZXkgaW4gZGljdGlvbmFyeSIKK21zZ3N0ciAidGl1IMWdbG9zaWxvIG5lIGVremlzdGFzIGVuIHZvcnRhcm8iCisKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogZmFpbGVkIHRvIGdldCB2aW0gbGlzdCBpdGVtIgorbXNnc3RyICJpbnRlcm5hIGVyYXJvOiBvYnRlbm8gZGUgdmltLWEgbGlzdGVybyBmaWFza2lzIgorCittc2dpZCAibGlzdCBpcyBsb2NrZWQiCittc2dzdHIgImxpc3RvIGVzdGFzIMWdbG9zaXRhIgorCittc2dpZCAiRmFpbGVkIHRvIGFkZCBpdGVtIHRvIGxpc3QiCittc2dzdHIgIkFsZG9ubyBkZSBsaXN0ZXJvIGZpYXNraXMiCisKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogbm8gdmltIGxpc3QgaXRlbSIKK21zZ3N0ciAiaW50ZXJuYSBlcmFybzogbmVuaXUgdmltLWEgbGlzdGVybyIKKworbXNnaWQgImNhbiBvbmx5IGFzc2lnbiBsaXN0cyB0byBzbGljZSIKK21zZ3N0ciAibnVyIGVibGFzIHByYXZhbG9yaXppIGxpc3Rvam4gYWwgc2VnbWVudG8iCisKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogZmFpbGVkIHRvIGFkZCBpdGVtIHRvIGxpc3QiCittc2dzdHIgImludGVybmEgZXJhcm86IGFsZG9ubyBkZSBsaXN0ZXJvIGZpYXNraXMiCisKK21zZ2lkICJjYW4gb25seSBjb25jYXRlbmF0ZSB3aXRoIGxpc3RzIgorbXNnc3RyICJlYmxhcyBudXIga3VubWV0aSBrdW4gbGlzdG9qIgorCittc2dpZCAiJ3NlbGYnIGFyZ3VtZW50IG11c3QgYmUgYSBkaWN0aW9uYXJ5IgorbXNnc3RyICJhcmd1bWVudG8gJ3NlbGYnIGRldmFzIGVzdGkgdm9ydGFybyIKKworbXNnaWQgImZhaWxlZCB0byBydW4gZnVuY3Rpb24iCittc2dzdHIgImZpYXNraXMgcnVsaSBmdW5rY2lvbiIKKwogbXNnaWQgImF0dGVtcHQgdG8gcmVmZXIgdG8gZGVsZXRlZCB3aW5kb3ciCiBtc2dzdHIgInByb3ZvIGRlIHJlZmVyZW5jbyBhbCBmb3J2acWdaXRhIGZlbmVzdHJvIgogCkBAIC02NTgzLDIyICs2NjM4LDExIEBACiBtc2dpZCAiYXR0ZW1wdCB0byByZWZlciB0byBkZWxldGVkIGJ1ZmZlciIKIG1zZ3N0ciAicHJvdm8gZGUgcmVmZXJlbmNvIGFsIGZvcnZpxZ1pdGEgYnVmcm8iCiAKLSN+IG1zZ2lkICIiCi0jfiAiXG4iCi0jfiAiQXJndW1lbnRzIHJlY29nbmlzZWQgYnkgZ3ZpbSAoUklTQyBPUyB2ZXJzaW9uKTpcbiIKLSN+IG1zZ3N0ciAiIgotI34gIlxuIgotI34gIkFyZ3VtZW50b2ogYWdub3NraXRhaiBkZSBndmltICh2ZXJzaW8gUklTQyBPUyk6XG4iCittc2dpZCAidW5hYmxlIHRvIGNvbnZlcnQgdG8gdmltIHN0cnVjdHVyZSIKK21zZ3N0ciAibmUgcG92aXMga29udmVydGkgYWwgdmltLXN0cnVrdHVybyIKIAotI34gbXNnaWQgIi0tY29sdW1ucyA8bnVtYmVyPlx0SW5pdGlhbCB3aWR0aCBvZiB3aW5kb3cgaW4gY29sdW1ucyIKLSN+IG1zZ3N0ciAiLS1jb2x1bW5zIDxub21icm8+XHRLb21lbmNhIGxhcsSdbyBkZSBmZW5lc3RybyBlbiBrb2x1bW5vaiIKK21zZ2lkICJOVUxMIHJlZmVyZW5jZSBwYXNzZWQiCittc2dzdHIgIk5VTEwtcmVmZXJlbmNvIGFyZ3VtZW50byIKIAotI34gbXNnaWQgIi0tcm93cyA8bnVtYmVyPlx0SW5pdGlhbCBoZWlnaHQgb2Ygd2luZG93IGluIHJvd3MiCi0jfiBtc2dzdHIgIi0tcm93cyA8bm9tYnJvPlx0S29tZW5jYSBhbHRvIGRlIGZlbmVzdHJvIGVuIHZpY29qIgotCi0jfiBtc2dpZCAiIgotI34gIlxuIgotI34gIlJJU0MgT1MgdmVyc2lvbiIKLSN+IG1zZ3N0ciAiIgotI34gIlxuIgotI34gIlZlcnNpbyBSSVNDIG9wZXJhY2l1bW8iCittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGludmFsaWQgdmFsdWUgdHlwZSIKK21zZ3N0ciAiaW50ZXJuYSBlcmFybzogbmV2YWxpZGEgdHlwbyBkZSB2YWxvcm8iCmRpZmYgLS1naXQgYS9zcmMvcG8vZnIucG8gYi9zcmMvcG8vZnIucG8KaW5kZXggOGIzZjI5Zi4uZmE0MWFiZSAxMDA2NDQKLS0tIGEvc3JjL3BvL2ZyLnBvCisrKyBiL3NyYy9wby9mci5wbwpAQCAtNiw3ICs2LDcgQEAKICMgIEZJUlNUIEFVVEhPUiAgRGluZGluWCAgICAgICAgIDxEYXZpZC5PZGluQGJpZ2Zvb3QuY29tPiAgICAgMjAwMC4KICMgU0VDT05EIEFVVEhPUiAgQWRyaWVuIEJlYXUgICAgIDx2ZXJzaW9uLmZyYW5jYWlzZUBmcmVlLmZyPiAgMjAwMiwgMjAwMy4KICMgIFRISVJEIEFVVEhPUiAgRGF2aWQgQmxhbmNoZXQgIDxkYXZpZC5ibGFuY2hldEBmcmVlLmZyPiAgICAgMjAwNiwgMjAwOC4KLSMgRk9VUlRIIEFVVEhPUiAgRG9taW5pcXVlIFBlbGzpIDxkb21pbmlxdWUucGVsbGVAZ21haWwuY29tPiAgMjAwOCwgMjAxMS4KKyMgRk9VUlRIIEFVVEhPUiAgRG9taW5pcXVlIFBlbGzpIDxkb21pbmlxdWUucGVsbGVAZ21haWwuY29tPiAgMjAwOCwgMjAxMi4KICMKICMgTGF0ZXN0IHRyYW5zbGF0aW9uIGF2YWlsYWJsZSBhdDoKICMgICBodHRwOi8vZG9taW5pcXVlLnBlbGxlLmZyZWUuZnIvdmltLWZyLnBocApAQCAtMTUsOCArMTUsOCBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBWaW0oRnJhbudhaXMpXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDEyLTAxLTIyIDE1OjM3KzAxMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDEyLTAxLTIyIDE1OjQwKzAxMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMi0wOC0xOSAwNjozNSswMjAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxMi0wOC0xOSAwNjo0OCswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBEb21pbmlxdWUgUGVsbOkgPGRvbWluaXF1ZS5wZWxsZUBnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogXG4iCiAiTGFuZ3VhZ2U6IGZyXG4iCkBAIC00Niw2ICs0Niw5IEBACiBtc2dpZCAiW1F1aWNrZml4IExpc3RdIgogbXNnc3RyICJbTGlzdGUgUXVpY2tmaXhdIgogCittc2dpZCAiRTg1NTogQXV0b2NvbW1hbmRzIGNhdXNlZCBjb21tYW5kIHRvIGFib3J0IgorbXNnc3RyICJFODU1OiBEZXMgYXV0b2NvbW1hbmRlcyBvbnQgY2F1c+kgbGEgdGVybWluYXRpb24gZGUgbGEgY29tbWFuZGUiCisKICMgQUIgLSBJbCBmYXV0IHJlc3BlY3RlciBsJ2VzcHJpdCBwbHVzIHF1ZSBsYSBsZXR0cmUuCiBtc2dpZCAiRTgyOiBDYW5ub3QgYWxsb2NhdGUgYW55IGJ1ZmZlciwgZXhpdGluZy4uLiIKIG1zZ3N0ciAiRTgyOiBBdWN1biB0YW1wb24gbmUgcGV1dCDqdHJlIGFsbG916SwgVmltIGRvaXQgcydhcnLqdGVyIgpAQCAtMjg2Niw2ICsyODY5LDEwIEBACiBtc2dpZCAiRTgzNjogVGhpcyBWaW0gY2Fubm90IGV4ZWN1dGUgOnB5dGhvbiBhZnRlciB1c2luZyA6cHkzIgogbXNnc3RyICJFODM2OiBWaW0gbmUgcGV1dCBwYXMgZXjpY3V0ZXIgOnB5dGhvbiBhcHLocyBhdm9pciB1dGlsaXPpIDpweTMiCiAKKyMuIEFkZCBjb252ZXJzaW9uIGZyb20gUHlJbnQ/Cittc2dpZCAib25seSBzdHJpbmcga2V5cyBhcmUgYWxsb3dlZCIKK21zZ3N0ciAic2V1bGUgdW5lIGNoYWluZSBlc3QgYXV0b3Jpc+llIGNvbW1lIGNs6SIKKwogbXNnaWQgIiIKICJFMjYzOiBTb3JyeSwgdGhpcyBjb21tYW5kIGlzIGRpc2FibGVkLCB0aGUgUHl0aG9uIGxpYnJhcnkgY291bGQgbm90IGJlICIKICJsb2FkZWQuIgpAQCAtMjg3Niw2ICsyODgzLDEyIEBACiBtc2dpZCAiRTY1OTogQ2Fubm90IGludm9rZSBQeXRob24gcmVjdXJzaXZlbHkiCiBtc2dzdHIgIkU2NTk6IEltcG9zc2libGUgZCdpbnZvcXVlciBQeXRob24gculjdXJzaXZlbWVudCIKIAorbXNnaWQgIkU4NTg6IEV2YWwgZGlkIG5vdCByZXR1cm4gYSB2YWxpZCBweXRob24gb2JqZWN0IgorbXNnc3RyICJFODU4OiBFdmFsIG4nYSBwYXMgcmV0b3VybukgdW4gb2JqZXQgcHl0aG9uIHZhbGlkZSIKKworbXNnaWQgIkU4NTk6IEZhaWxlZCB0byBjb252ZXJ0IHJldHVybmVkIHB5dGhvbiBvYmplY3QgdG8gdmltIHZhbHVlIgorbXNnc3RyICJFODU5OiBDb252ZXJzaW9uIGQnb2JqZXQgcHl0aG9uIOAgdW5lIHZhbGV1ciBkZSB2aW0gYSDpY2hvdekiCisKIG1zZ2lkICJjYW4ndCBkZWxldGUgT3V0cHV0T2JqZWN0IGF0dHJpYnV0ZXMiCiBtc2dzdHIgImltcG9zc2libGUgZCdlZmZhY2VyIGxlcyBhdHRyaWJ1dHMgZCdPdXRwdXRPYmplY3QiCiAKQEAgLTI4OTIsNiArMjkwNSwxMiBAQAogbXNnaWQgIkU4Mzc6IFRoaXMgVmltIGNhbm5vdCBleGVjdXRlIDpweTMgYWZ0ZXIgdXNpbmcgOnB5dGhvbiIKIG1zZ3N0ciAiRTgzNzogVmltIG5lIHBldXQgcGFzIGV46WN1dGVyIDpweTMgYXBy6HMgYXZvaXIgdXRpbGlz6SA6cHl0aG9uIgogCittc2dpZCAiRTg2MDogRXZhbCBkaWQgbm90IHJldHVybiBhIHZhbGlkIHB5dGhvbiAzIG9iamVjdCIKK21zZ3N0ciAiRTg2MDogRXZhbCBuJ2EgcGFzIHJldG91cm7pIHVuIG9iamVjdCBweXRob24gMyB2YWxpZCIKKworbXNnaWQgIkU4NjE6IEZhaWxlZCB0byBjb252ZXJ0IHJldHVybmVkIHB5dGhvbiAzIG9iamVjdCB0byB2aW0gdmFsdWUiCittc2dzdHIgIkU4NjE6IENvbnZlcnNpb24gZCdvYmpldCBweXRob24gMyDgIHVuZSB2YWxldXIgZGUgdmltIGEg6WNob3XpIgorCiBtc2dpZCAiRTI2NTogJF8gbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBTdHJpbmciCiBtc2dzdHIgIkUyNjU6ICRfIGRvaXQg6nRyZSB1bmUgaW5zdGFuY2UgZGUgY2hh7m5lIChTdHJpbmcpIgogCkBAIC0zMDgwLDExICszMDk5LDYgQEAKICJFNTcxOiBE6XNvbOksIGNvbW1hbmRlIGTpc2FjdGl26WU6IGxhIGJpYmxpb3Ro6HF1ZSBUY2wgbidhIHBhcyBwdSDqdHJlICIKICJjaGFyZ+llLiIKIAotbXNnaWQgIiIKLSJFMjgxOiBUQ0wgRVJST1I6IGV4aXQgY29kZSBpcyBub3QgaW50IT8gUGxlYXNlIHJlcG9ydCB0aGlzIHRvIHZpbS1kZXZAdmltLm9yZyIKLW1zZ3N0ciAiIgotIkUyODE6IEVSUkVVUiBUQ0w6IGNvZGUgZGUgc29ydGllIG5vbiBlbnRpZXIgPyEgQ29udGFjdGV6IHZpbS1kZXZAdmltLm9yZywgU1ZQIgotCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU1NzI6IGV4aXQgY29kZSAlZCIKIG1zZ3N0ciAiRTU3MjogY29kZSBkZSBzb3J0aWUgJWQiCkBAIC0zMTY3LDcgKzMxODEsNyBAQAogIk1vcmUgaW5mbyB3aXRoOiBcInZpbSAtaFwiXG4iCiBtc2dzdHIgIiIKICJcbiIKLSJQbHVzIGQnaW5mbyBhdmVjOiBcInZpbSAtaFwiXG4iCisiUGx1cyBkJ2luZm8gYXZlYyA6IFwidmltIC1oXCJcbiIKIAogbXNnaWQgIltmaWxlIC4uXSAgICAgICBlZGl0IHNwZWNpZmllZCBmaWxlKHMpIgogbXNnc3RyICJbZmljaGllciAuLi5dICBvdXZyaXIgbGUgb3UgbGVzIGZpY2hpZXJzIHNw6WNpZmnpcyIKQEAgLTMyNDQsNiArMzI1OCw5IEBACiBtc2dpZCAiLWVcdFx0XHRFeCBtb2RlIChsaWtlIFwiZXhcIikiCiBtc2dzdHIgIi1lXHRcdE1vZGUgRXggKGNvbW1lIFwiZXhcIikiCiAKK21zZ2lkICItRVx0XHRcdEltcHJvdmVkIEV4IG1vZGUiCittc2dzdHIgIi1FXHRcdFx0TW9kZSBFeCBhbelsaW9y6SIKKwogbXNnaWQgIi1zXHRcdFx0U2lsZW50IChiYXRjaCkgbW9kZSAob25seSBmb3IgXCJleFwiKSIKIG1zZ3N0ciAiLXNcdFx0TW9kZSBzaWxlbmNpZXV4IChiYXRjaCkgKHNldWxlbWVudCBwb3VyIFwiZXhcIikiCiAKQEAgLTM1MDEsNiArMzUxOCw5IEBACiBtc2dpZCAiLS1zb2NrZXRpZCA8eGlkPlx0T3BlbiBWaW0gaW5zaWRlIGFub3RoZXIgR1RLIHdpZGdldCIKIG1zZ3N0ciAiLS1zb2NrZXRpZCA8eGlkPlx0T3V2cmlyIFZpbSBkYW5zIHVuIGF1dHJlIHdpZGdldCBHVEsiCiAKK21zZ2lkICItLWVjaG8td2lkXHRcdE1ha2UgZ3ZpbSBlY2hvIHRoZSBXaW5kb3cgSUQgb24gc3Rkb3V0IgorbXNnc3RyICItLWVjaG8td2lkXHRcdEd2aW0gYWZmaWNoZSBsJ0lEIGRlIGxhIGZlbup0cmUgc3VyIHN0ZG91dCIKKwogbXNnaWQgIi1QIDxwYXJlbnQgdGl0bGU+XHRPcGVuIFZpbSBpbnNpZGUgcGFyZW50IGFwcGxpY2F0aW9uIgogbXNnc3RyICItUCA8dGl0cmUgcGFyZW50Plx0T3V2cmlyIFZpbSBkYW5zIHVuZSBhcHBsaWNhdGlvbiBwYXJlbnRlIgogCkBAIC02ODIwLDcgKzY4NDAsNDMgQEAKIG1zZ3N0ciAiRTI2NDogUHl0aG9uIDogRXJyZXVyIGQnaW5pdGlhbGlzYXRpb24gZGVzIG9iamV0cyBkJ0UvUyIKIAogbXNnaWQgIm5vIHN1Y2ggYnVmZmVyIgotbXNnc3RyICJDZSB0YW1wb24gbidleGlzdGUgcGFzIgorbXNnc3RyICJjZSB0YW1wb24gbidleGlzdGUgcGFzIgorCittc2dpZCAiZmFpbGVkIHRvIGFkZCBrZXkgdG8gZGljdGlvbmFyeSIKK21zZ3N0ciAibCdham91dCBkZSBjbOkgYXUgZGljdGlvbm5haXJlIGEg6WNob3XpIgorCittc2dpZCAiZGljdCBpcyBsb2NrZWQiCittc2dzdHIgImRpY3Rpb25uYWlyZSBlc3QgdmVycm91aWxs6SIKKworbXNnaWQgIm5vIHN1Y2gga2V5IGluIGRpY3Rpb25hcnkiCittc2dzdHIgImNldHRlIGNs6SBlc3QgaW5leGlzdGFudGUgZGFucyBsZSBkaWN0aW9ubmFpcmUiCisKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogZmFpbGVkIHRvIGdldCB2aW0gbGlzdCBpdGVtIgorbXNnc3RyICJlcnJldXIgaW50ZXJuZSA6IGFjY+hzIOAgdW4g6WzpbWVudCBkZSBsaXN0ZSBhIOljaG916SIKKworbXNnaWQgImxpc3QgaXMgbG9ja2VkIgorbXNnc3RyICJsaXN0ZSB2ZXJyb3VpbGzpZSIKKworbXNnaWQgIkZhaWxlZCB0byBhZGQgaXRlbSB0byBsaXN0IgorbXNnc3RyICJBam91dCDgIGxhIGxpc3RlIGEg6WNob3XpIgorCittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IG5vIHZpbSBsaXN0IGl0ZW0iCittc2dzdHIgImVycmV1ciBpbnRlcm5lIDogcGFzIGQn6WzpbWVudCBkZSBsaXN0ZSB2aW0iCisKK21zZ2lkICJjYW4gb25seSBhc3NpZ24gbGlzdHMgdG8gc2xpY2UiCittc2dzdHIgInNldWxlcyBkZXMgdHJhbmNoZXMgcGV1dmVudCDqdHJlIGFzc2lnbullcyBhdXggbGlzdGVzIgorCittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGZhaWxlZCB0byBhZGQgaXRlbSB0byBsaXN0IgorbXNnc3RyICJlcnJldXIgaW50ZXJuZSA6IGFqb3V0IGQn6WzpbWVudCDgIGxhIGxpc3RlIGEg6WNob3XpIgorCittc2dpZCAiY2FuIG9ubHkgY29uY2F0ZW5hdGUgd2l0aCBsaXN0cyIKK21zZ3N0ciAib24gbmUgcGV1dCBxdWUgY29uY2F06W5lciBhdmVjIGRlcyBsaXN0ZXMiCisKK21zZ2lkICInc2VsZicgYXJndW1lbnQgbXVzdCBiZSBhIGRpY3Rpb25hcnkiCittc2dzdHIgImwnYXJndW1lbnQgJ3NlbGYnIGRvaXQg6nRyZSB1biBkaWN0aW9ubmFpcmUiCisKK21zZ2lkICJmYWlsZWQgdG8gcnVuIGZ1bmN0aW9uIgorbXNnc3RyICJleOljdXRpb24gZGUgbGEgZm9uY3Rpb24gYSDpY2hvdekiCiAKIG1zZ2lkICJhdHRlbXB0IHRvIHJlZmVyIHRvIGRlbGV0ZWQgd2luZG93IgogbXNnc3RyICJ0ZW50YXRpdmUgZGUgculm6XJlbmNlciB1bmUgZmVu6nRyZSBlZmZhY+llIgpAQCAtNjg0OSwyNSArNjkwNSwxMSBAQAogbXNnaWQgImF0dGVtcHQgdG8gcmVmZXIgdG8gZGVsZXRlZCBidWZmZXIiCiBtc2dzdHIgInRlbnRhdGl2ZSBkZSBy6WbpcmVuY2VyIHVuIHRhbXBvbiBlZmZhY+kiCiAKLSN+IG1zZ2lkICIiCi0jfiAiXG4iCi0jfiAiQXJndW1lbnRzIHJlY29nbmlzZWQgYnkgZ3ZpbSAoUklTQyBPUyB2ZXJzaW9uKTpcbiIKLSN+IG1zZ3N0ciAiIgotI34gIlxuIgotI34gIkFyZ3VtZW50cyByZWNvbm51cyBwYXIgZ3ZpbSAodmVyc2lvbiBSSVNDIE9TKSA6XG4iCittc2dpZCAidW5hYmxlIHRvIGNvbnZlcnQgdG8gdmltIHN0cnVjdHVyZSIKK21zZ3N0ciAiY29udmVyc2lvbiDgIHVuZSBzdHJ1Y3R1cmUgdmltIGltcG9zc2libGUiCiAKLSN+IG1zZ2lkICItLWNvbHVtbnMgPG51bWJlcj5cdEluaXRpYWwgd2lkdGggb2Ygd2luZG93IGluIGNvbHVtbnMiCi0jfiBtc2dzdHIgIi0tY29sdW1ucyA8bm9tYnJlPlx0Tm9tYnJlIGRlIGNvbG9ubmVzIGluaXRpYWwgZGUgbGEgZmVu6nRyZSIKK21zZ2lkICJOVUxMIHJlZmVyZW5jZSBwYXNzZWQiCittc2dzdHIgInLpZulyZW5jZSBOVUxMIHBhc3PpZSIKIAotI34gbXNnaWQgIi0tcm93cyA8bnVtYmVyPlx0SW5pdGlhbCBoZWlnaHQgb2Ygd2luZG93IGluIHJvd3MiCi0jfiBtc2dzdHIgIi0tcm93cyA8bm9tYnJlPlx0Tm9tYnJlIGRlIGxpZ25lcyBpbml0aWFsIGRlIGxhIGZlbup0cmUiCi0KLSN+IG1zZ2lkICIiCi0jfiAiXG4iCi0jfiAiUklTQyBPUyB2ZXJzaW9uIgotI34gbXNnc3RyICIiCi0jfiAiXG4iCi0jfiAiVmVyc2lvbiBSSVNDIE9TIgotCi0jfiBtc2dpZCAiRTUwNTogIgotI34gbXNnc3RyICJFNTA1OiAiCittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGludmFsaWQgdmFsdWUgdHlwZSIKK21zZ3N0ciAiZXJyZXVyIGludGVybmUgOiB0eXBlIGRlIHZhbGV1ciBpbnZhbGlkZSIK