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EABkigCDAAdlSABkCwBkiwBkZQBkjABkZwBkFwFkaABnAABkaQBlNABnAQBkagBkFABkEABkjQCDAAdlSABkCwBkjgBkZQBkjwBkZwBkFwFkaABnAABkaQBlNABnAQBkagBkFABkEABkkACDAAdlSABkCwBkkQBkZQBkkgBkZwBlHABkaABnAABkaQBlOgBnAQBkagBkawBkEABkkwCDAAdlSABkCwBklABkZQBklQBkZwBlHgBkaABnAABkaQBlOgBnAQBkagBkDgBkEABklgCDAAdlSABkCwBklwBkZQBkmABkZwBlJABkaABnAABkaQBlNgBnAQBkagBkawBkEABkmQCDAAdlSABkCwBkmgBkZQBkmwBkZwBlJgBkaABnAABkaQBlNgBnAQBkagBkDgBkEABknACDAAdlSABkCwBknQBkZQBkngBkZwBkFwFkaABnAABkaQBlQQBnAQBkagBkDgBkEABknwCDAAdlSABkCwBkoABkZQBkoQBkZwBkFwFkaABlQQBlRABnAgBkaQBlQQBnAQBkagBkawBkEABkogCDAAdlSABkCwBkowBkZQBkpABkZwBkFwFkaABlQQBlRQBlRgBnAwBkaQBlQQBnAQBkagBkDgBkEABkpQCDAAdlSABkCwBkpgBkZQBkpwBkZwBkFwFkaABlRQBlRgBnAgBkaQBlQQBnAQBkagBkawBkEABkqACDAAdlSABkCwBkqQBkZQBkqgBkZwBkFwFkaABnAABkaQBlPwBnAQBkagBkDgBkEABkqwCDAAdlSABkCwBkrABkZQBkrQBkZwBkFwFkaABlRQBlRgBnAgBkaQBlPwBnAQBkagBkawBkEABkrgCDAAdlSABkCwBkrwBkZQBksABkZwBkFwFkaABlRABnAQBkaQBlPwBnAQBkagBkFABkEABksQCDAAdlSABkCwBksgBkZQBkswBkZwBkFwFkaABlRABlRABnAgBkaQBlPwBnAQBkagBkFABkEABktACDAAdlSABkCwBktQBkZQBktgBkZwBkFwFkaABlRABlRABlRABnAwBkaQBlPwBnAQBkagBkFABkEABktwCDAAdlSABkCwBkuABkZQBkuQBkZwBkFwFkaABnAABkaQBlQwBnAQBkagBkDgBkEABkugCDAAdlSABkCwBkuwBkZQBkvABkZwBkFwFkaABlRQBlRgBnAgBkaQBlQwBnAQBkagBkawBkEABkvQCDAAdlSABkCwBkvgBkZQBkvwBkZwBkFwFkaABlQwBlRABlRABnAwBkaQBlQwBnAQBkagBkawBkEABkwACDAAdlSABkCwBkwQBkZQBkwgBkZwBkFwFkaABlQwBlRQBlRgBnAwBkaQBlQwBnAQBkagBkDgBkEABkwwCDAAdlSABkCwBkxABkZQBkxQBkZwBkFwFkaABlRABnAQBkaQBnAABkagBkawBkEABkxgCDAAdlSABkCwBkxwBkZQBkyABkZwBkFwFkaABlRABnAQBkaQBlRABlRABnAgBkagBkawBkEABkyQCDAAdlSABkCwBkygBkZQBkywBkZwBkFwFkaABnAABkaQBlRQBnAQBkagBkawBkEABkzACDAAdlSABkCwBkzQBkZQBkzgBkZwBkFwFkaABlRQBlRgBnAgBkaQBnAABkagBkDgBkEABkzwCDAAdlSABkCwBk0ABkZQBk0QBkZwBlIQBkaABnAABkaQBlRABnAQBkagBkawBkEABk0gCDAAdlSABkCwBk0wBkZQBk1ABkZwBlCwBkaABnAABkaQBlRABnAQBkagBkDgBkEABk1QCDAAdlSABkCwBk1gBkZQBk1wBkZwBlDwBkaABnAABkaQBlRABnAQBkagBkDgBkEABk2ACDAAdlSABkCwBk2QBkZQBk2gBkZwBlIQBkaABnAABkaQBnAABkagBkawBkEABk2wCDAAdlSABkCwBk3ABkZQBk3QBkZwBlCwBkaABnAABkaQBnAABkagBkDgBkEABk3gCDAAdlSABkCwBk3wBkZQBk4ABkZwBlDwBkaABnAABkaQBnAABkagBkDgBkEABk4QCDAAdlSABkCwBk4gBkZQBk4wBkZwBlCwBkaABnAABkaQBlRABnAQBkagBkFABkEABk5ACDAAdlSABkCwBk5QBkZQBk5gBkZwBlDQBkaABnAABkaQBlRABnAQBkagBkFABkEABk5wCDAAdlSABkCwBk6ABkZQBk6QBkZwBlDwBkaABnAABkaQBlRABnAQBkagBkFABkEABk6gCDAAdlSABkCwBk6wBkZQBk7ABkZwBlFgBkaABnAABkaQBlRABnAQBkagBkawBkEABk7QCDAAdlSABkCwBk7gBkZQBk7wBkZwBkFwFkaABlRABlRABnAgBkaQBlRABnAQBkagBkawBkEABk8ACDAAdlSABkCwBk8QBkZQBk8gBkZwBkFwFkaABlRABlRABnAgBkaQBlRABnAQBkagBkawBkEABk8wCDAAdlSABkCwBk9ABkZQBk9QBkZwBlFgBkaABlRQBlRgBnAgBkaQBlRABnAQBkagBkawBkEABk9gCDAAdlSABkCwBk9wBkZQBk+ABkZwBkFwFkaABlRQBlRABlRgBnAwBkaQBlRABnAQBkagBkDgBkEABk+QCDAAdlSABkCwBk+gBkZQBk+wBkZwBkFwFkaABlRABlRABnAgBkaQBlRABnAQBkagBkFABkEABk/ACDAAdlSABkCwBk/QBkZQBk/gBkZwBlCwBkaABnAABkaQBnAABkagBkFABkEABk/wCDAAdlSABkCwBkAAFkZQBkAQFkZwBkFwFkaABlRABnAQBkaQBnAABkagBkawBkEABkAgGDAAdlSABkCwBkAwFkZQBkBAFkZwBlFABkaABnAABkaQBlRABnAQBkagBkawBkEABkBQGDAAdlSABkCwBkBgFkZQBkBwFkZwBkFwFkaABlRABnAQBkaQBlRABnAQBkagBkDgBkEABkCAGDAAdnNQBaSQBbSABpAABaSgBpAABaSwB4ngBlTABlSQCDAQBEXZAAXAIAWk0AWk4AZU4Aak8AZUoAawYAchkQZVAAZAkBZU4Aak8AZUoAZU4Aak8AGWVNAGYDABaDAQCCAQBuAABlTgBqUQBlSwBrBgByThBlUABkCgFlTgBqUQBlSwBlTgBqUQAZZU0AZgMAFoMBAIIBAG4AAGVNAGVKAGVOAGpPADxlTQBlSwBlTgBqUQA8cdgPV1tKAFtLAFtNAFtOAGkAAFpSAHgbAGVJAERdEwBaTgBlTgBlUgBlTgBqUQA8cYUQV1tOAGVTAGQLAYQBAFpUAGVUAIMAAAFbVABkDAGEAABaVQBkDQGEAABaVgBkFwFkFwFkGABkDgGEAwBaVwBkDwFkGAFkEAGEAACDAABZWlgAZBEBWlkAZBIBWloAaQIAZVkAZBMBNmVaAGQUATZaWwBkFQGEAABaXABlXQBkFgFrAgByKxFlXACDAAABbgAAZBcBUygZAQAAc3IBAAAiRXhlY3V0YWJsZSBkb2N1bWVudGF0aW9uIiBmb3IgdGhlIHBpY2tsZSBtb2R1bGUuCgpFeHRlbnNpdmUgY29tbWVudHMgYWJvdXQgdGhlIHBpY2tsZSBwcm90b2NvbHMgYW5kIHBpY2tsZS1tYWNoaW5lIG9wY29kZXMKY2FuIGJlIGZvdW5kIGhlcmUuICBTb21lIGZ1bmN0aW9ucyBtZWFudCBmb3IgZXh0ZXJuYWwgdXNlOgoKZ2Vub3BzKHBpY2tsZSkKICAgR2VuZXJhdGUgYWxsIHRoZSBvcGNvZGVzIGluIGEgcGlja2xlLCBhcyAob3Bjb2RlLCBhcmcsIHBvc2l0aW9uKSB0cmlwbGVzLgoKZGlzKHBpY2tsZSwgb3V0PU5vbmUsIG1lbW89Tm9uZSwgaW5kZW50bGV2ZWw9NCkKICAgUHJpbnQgYSBzeW1ib2xpYyBkaXNhc3NlbWJseSBvZiBhIHBpY2tsZS4KdAMAAABkaXN0BgAAAGdlbm9wc3QIAAAAb3B0aW1pemVp/////2n+////af3///90EgAAAEFyZ3VtZW50RGVzY3JpcHRvcmMAAAAAAAAAAAQAAABCAAAAcxcAAABlAABaAQBkBQBaAgBkBACEAABaAwBSUygGAAAAdAQAAABuYW1ldAEAAABudAYAAAByZWFkZXJ0AwAAAGRvY2MFAAAABQAAAAIAAABDAAAAcygAAAB8AQB8AABfAAB8AgB8AABfAQB8AwB8AABfAgB8BAB8AABfAwBkAABTKAEAAABOKAQAAABSBAAAAFIFAAAAUgYAAABSBwAAACgFAAAAdAQAAABzZWxmUgQAAABSBQAAAFIGAAAAUgcAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dAgAAABfX2luaXRfX7gAAABzCAAAAAACCQYJAgkDKAQAAABzBAAAAG5hbWVSBQAAAHMGAAAAcmVhZGVycwMAAABkb2MoBAAAAHQIAAAAX19uYW1lX190CgAAAF9fbW9kdWxlX190CQAAAF9fc2xvdHNfX1IJAAAAKAAAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5UgMAAAClAAAAcwoAAAAGAwAFAAUAAwYDKAEAAAB0BgAAAHVucGFja2MBAAAAAgAAAAIAAABDAAAAcy8AAAB8AABqAABkAQCDAQB9AQB8AQByHwB0AQB8AQCDAQBTdAIAZAIAgwEAggEAZAMAUygEAAAAc1MAAAAKICAgID4+PiBpbXBvcnQgU3RyaW5nSU8KICAgID4+PiByZWFkX3VpbnQxKFN0cmluZ0lPLlN0cmluZ0lPKCdceGZmJykpCiAgICAyNTUKICAgIGkBAAAAcycAAABub3QgZW5vdWdoIGRhdGEgaW4gc3RyZWFtIHRvIHJlYWQgdWludDFOKAMAAAB0BAAAAHJlYWR0AwAAAG9yZHQKAAAAVmFsdWVFcnJvcigCAAAAdAEAAABmdAQAAABkYXRhKAAAAAAoAAAAAHN2AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9waWNrbGV0b29scy5weXQKAAAAcmVhZF91aW50MckAAABzCAAAAAAHDwEGAQoBUgQAAAB0BQAAAHVpbnQxUgUAAABpAQAAAFIGAAAAUgcAAABzGgAAAE9uZS1ieXRlIHVuc2lnbmVkIGludGVnZXIuYwEAAAACAAAAAwAAAEMAAABzQgAAAHwAAGoAAGQBAIMBAH0BAHQBAHwBAIMBAGQBAGsCAHIyAHQCAGQCAHwBAIMCAGQDABlTdAMAZAQAgwEAggEAZAUAUygGAAAAc5MAAAAKICAgID4+PiBpbXBvcnQgU3RyaW5nSU8KICAgID4+PiByZWFkX3VpbnQyKFN0cmluZ0lPLlN0cmluZ0lPKCdceGZmXHgwMCcpKQogICAgMjU1CiAgICA+Pj4gcmVhZF91aW50MihTdHJpbmdJTy5TdHJpbmdJTygnXHhmZlx4ZmYnKSkKICAgIDY1NTM1CiAgICBpAgAAAHMCAAAAPEhpAAAAAHMnAAAAbm90IGVub3VnaCBkYXRhIGluIHN0cmVhbSB0byByZWFkIHVpbnQyTigEAAAAUg4AAAB0AwAAAGxlbnQHAAAAX3VucGFja1IQAAAAKAIAAABSEQAAAFISAAAAKAAAAAAoAAAAAHN2AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9waWNrbGV0b29scy5weXQKAAAAcmVhZF91aW50MtwAAABzCAAAAAAJDwESAREBdAUAAAB1aW50MmkCAAAAcykAAABUd28tYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyLCBsaXR0bGUtZW5kaWFuLmMBAAAAAgAAAAMAAABDAAAAc0IAAAB8AABqAABkAQCDAQB9AQB0AQB8AQCDAQBkAQBrAgByMgB0AgBkAgB8AQCDAgBkAwAZU3QDAGQEAIMBAIIBAGQFAFMoBgAAAHOsAAAACiAgICA+Pj4gaW1wb3J0IFN0cmluZ0lPCiAgICA+Pj4gcmVhZF9pbnQ0KFN0cmluZ0lPLlN0cmluZ0lPKCdceGZmXHgwMFx4MDBceDAwJykpCiAgICAyNTUKICAgID4+PiByZWFkX2ludDQoU3RyaW5nSU8uU3RyaW5nSU8oJ1x4MDBceDAwXHgwMFx4ODAnKSkgPT0gLSgyKiozMSkKICAgIFRydWUKICAgIGkEAAAAcwIAAAA8aWkAAAAAcyYAAABub3QgZW5vdWdoIGRhdGEgaW4gc3RyZWFtIHRvIHJlYWQgaW50NE4oBAAAAFIOAAAAUhUAAABSFgAAAFIQAAAAKAIAAABSEQAAAFISAAAAKAAAAAAoAAAAAHN2AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9waWNrbGV0b29scy5weXQJAAAAcmVhZF9pbnQ08QAAAHMIAAAAAAkPARIBEQF0BAAAAGludDRpBAAAAHM4AAAARm91ci1ieXRlIHNpZ25lZCBpbnRlZ2VyLCBsaXR0bGUtZW5kaWFuLCAyJ3MgY29tcGxlbWVudC5jAwAAAAUAAAAFAAAAQwAAAHPCAAAAfAAAagAAgwAAfQMAfAMAagEAZAEAgwEAcyoAdAIAZAIAgwEAggEAbgAAfAMAZAMAIH0DAHwCAHKmAHhpAGQEAERdTgB9BAB8AwBqAwB8BACDAQByQQB8AwBqAQB8BACDAQBzfgB0AgBkBQB8BAB8AwBmAgAWgwEAggEAbgAAfAMAZAYAZAMAIX0DAFBxQQBxQQBXdAIAZAcAfAMAFoMBAIIBAG4AAHwBAHK+AHwDAGoEAGQIAIMBAH0DAG4AAHwDAFMoCQAAAHOdAgAACiAgICA+Pj4gaW1wb3J0IFN0cmluZ0lPCiAgICA+Pj4gcmVhZF9zdHJpbmdubChTdHJpbmdJTy5TdHJpbmdJTygiJ2FiY2QnXG5lZmdcbiIpKQogICAgJ2FiY2QnCgogICAgPj4+IHJlYWRfc3RyaW5nbmwoU3RyaW5nSU8uU3RyaW5nSU8oIlxuIikpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAuLi4KICAgIFZhbHVlRXJyb3I6IG5vIHN0cmluZyBxdW90ZXMgYXJvdW5kICcnCgogICAgPj4+IHJlYWRfc3RyaW5nbmwoU3RyaW5nSU8uU3RyaW5nSU8oIlxuIiksIHN0cmlwcXVvdGVzPUZhbHNlKQogICAgJycKCiAgICA+Pj4gcmVhZF9zdHJpbmdubChTdHJpbmdJTy5TdHJpbmdJTygiJydcbiIpKQogICAgJycKCiAgICA+Pj4gcmVhZF9zdHJpbmdubChTdHJpbmdJTy5TdHJpbmdJTygnImFiY2QiJykpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAuLi4KICAgIFZhbHVlRXJyb3I6IG5vIG5ld2xpbmUgZm91bmQgd2hlbiB0cnlpbmcgdG8gcmVhZCBzdHJpbmdubAoKICAgIEVtYmVkZGVkIGVzY2FwZXMgYXJlIHVuZG9uZSBpbiB0aGUgcmVzdWx0LgogICAgPj4+IHJlYWRfc3RyaW5nbmwoU3RyaW5nSU8uU3RyaW5nSU8ociInYVxuXFxiXHgwMGNcdGQnIiArICJcbidlJyIpKQogICAgJ2FcblxcYlx4MDBjXHRkJwogICAgcwEAAAAKcy0AAABubyBuZXdsaW5lIGZvdW5kIHdoZW4gdHJ5aW5nIHRvIHJlYWQgc3RyaW5nbmxp/////3MCAAAAJyJzLAAAAHN0cmlucSBxdW90ZSAlciBub3QgZm91bmQgYXQgYm90aCBlbmRzIG9mICVyaQEAAABzGgAAAG5vIHN0cmluZyBxdW90ZXMgYXJvdW5kICVydA0AAABzdHJpbmdfZXNjYXBlKAUAAAB0CAAAAHJlYWRsaW5ldAgAAABlbmRzd2l0aFIQAAAAdAoAAABzdGFydHN3aXRodAYAAABkZWNvZGUoBQAAAFIRAAAAUh8AAAB0CwAAAHN0cmlwcXVvdGVzUhIAAAB0AQAAAHEoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dA0AAAByZWFkX3N0cmluZ25sBgEAAHMgAAAAABsMAQ8BDwEKAgYBDQEPAQ8BBgETAQ0BCAITBAYBEgF0CAAAAHN0cmluZ25sc6IAAABBIG5ld2xpbmUtdGVybWluYXRlZCBzdHJpbmcuCgogICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIHJlcHItc3R5bGUgc3RyaW5nLCB3aXRoIGVtYmVkZGVkIGVzY2FwZXMsIGFuZAogICAgICAgICAgICAgICAgICAgYnJhY2tldGluZyBxdW90ZXMuCiAgICAgICAgICAgICAgICAgICBjAQAAAAEAAAAGAAAAQwAAAHMWAAAAdAAAfAAAZAEAdAEAZAIAdAEAgwECUygDAAAATlIfAAAAUiAAAAAoAgAAAFIiAAAAdAUAAABGYWxzZSgBAAAAUhEAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dBYAAAByZWFkX3N0cmluZ25sX25vZXNjYXBlQQEAAHMCAAAAAAF0EQAAAHN0cmluZ25sX25vZXNjYXBlcwMBAABBIG5ld2xpbmUtdGVybWluYXRlZCBzdHJpbmcuCgogICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGEgc3RyLXN0eWxlIHN0cmluZywgd2l0aG91dCBlbWJlZGRlZCBlc2NhcGVzLAogICAgICAgICAgICAgICAgICAgICAgICBvciBicmFja2V0aW5nIHF1b3Rlcy4gIEl0IHNob3VsZCBjb25zaXN0IHNvbGVseSBvZgogICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVycy4KICAgICAgICAgICAgICAgICAgICAgICAgYwEAAAABAAAABAAAAEMAAABzGgAAAGQBAHQAAHwAAIMBAHQAAHwAAIMBAGYCABZTKAIAAABzfAAAAAogICAgPj4+IGltcG9ydCBTdHJpbmdJTwogICAgPj4+IHJlYWRfc3RyaW5nbmxfbm9lc2NhcGVfcGFpcihTdHJpbmdJTy5TdHJpbmdJTygiUXVldWVcbkVtcHR5XG5qdW5rIikpCiAgICAnUXVldWUgRW1wdHknCiAgICBzBQAAACVzICVzKAEAAABSJQAAACgBAAAAUhEAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dBsAAAByZWFkX3N0cmluZ25sX25vZXNjYXBlX3BhaXJPAQAAcwIAAAAAB3QWAAAAc3RyaW5nbmxfbm9lc2NhcGVfcGFpcnO2AQAAQSBwYWlyIG9mIG5ld2xpbmUtdGVybWluYXRlZCBzdHJpbmdzLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBhcmUgc3RyLXN0eWxlIHN0cmluZ3MsIHdpdGhvdXQgZW1iZWRkZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGVzLCBvciBicmFja2V0aW5nIHF1b3Rlcy4gIFRoZXkgc2hvdWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc2lzdCBzb2xlbHkgb2YgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHBhaXIgaXMgcmV0dXJuZWQgYXMgYSBzaW5nbGUgc3RyaW5nLCB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzaW5nbGUgYmxhbmsgc2VwYXJhdGluZyB0aGUgdHdvIHN0cmluZ3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYwEAAAADAAAABQAAAEMAAABzcAAAAHQAAHwAAIMBAH0BAHwBAGQBAGsAAHIrAHQBAGQCAHwBABaDAQCCAQBuAAB8AABqAgB8AQCDAQB9AgB0AwB8AgCDAQB8AQBrAgByUAB8AgBTdAEAZAMAfAEAdAMAfAIAgwEAZgIAFoMBAIIBAGQEAFMoBQAAAHNoAQAACiAgICA+Pj4gaW1wb3J0IFN0cmluZ0lPCiAgICA+Pj4gcmVhZF9zdHJpbmc0KFN0cmluZ0lPLlN0cmluZ0lPKCJceDAwXHgwMFx4MDBceDAwYWJjIikpCiAgICAnJwogICAgPj4+IHJlYWRfc3RyaW5nNChTdHJpbmdJTy5TdHJpbmdJTygiXHgwM1x4MDBceDAwXHgwMGFiY2RlZiIpKQogICAgJ2FiYycKICAgID4+PiByZWFkX3N0cmluZzQoU3RyaW5nSU8uU3RyaW5nSU8oIlx4MDBceDAwXHgwMFx4MDNhYmNkZWYiKSkKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIC4uLgogICAgVmFsdWVFcnJvcjogZXhwZWN0ZWQgNTAzMzE2NDggYnl0ZXMgaW4gYSBzdHJpbmc0LCBidXQgb25seSA2IHJlbWFpbgogICAgaQAAAABzGgAAAHN0cmluZzQgYnl0ZSBjb3VudCA8IDA6ICVkczIAAABleHBlY3RlZCAlZCBieXRlcyBpbiBhIHN0cmluZzQsIGJ1dCBvbmx5ICVkIHJlbWFpbk4oBAAAAFIZAAAAUhAAAABSDgAAAFIVAAAAKAMAAABSEQAAAFIFAAAAUhIAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dAwAAAByZWFkX3N0cmluZzRlAQAAcxAAAAAADQwBDAETAQ8BEgEEAQYBdAcAAABzdHJpbmc0c9kAAABBIGNvdW50ZWQgc3RyaW5nLgoKICAgICAgICAgICAgICBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYSA0LWJ5dGUgbGl0dGxlLWVuZGlhbiBzaWduZWQgaW50IGdpdmluZwogICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHN0cmluZywgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMKICAgICAgICAgICAgICB0aGF0IG1hbnkgYnl0ZXMuCiAgICAgICAgICAgICAgYwEAAAADAAAABQAAAEMAAABzUQAAAHQAAHwAAIMBAH0BAHwAAGoBAHwBAIMBAH0CAHQCAHwCAIMBAHwBAGsCAHIxAHwCAFN0AwBkAQB8AQB0AgB8AgCDAQBmAgAWgwEAggEAZAIAUygDAAAAc5QAAAAKICAgID4+PiBpbXBvcnQgU3RyaW5nSU8KICAgID4+PiByZWFkX3N0cmluZzEoU3RyaW5nSU8uU3RyaW5nSU8oIlx4MDAiKSkKICAgICcnCiAgICA+Pj4gcmVhZF9zdHJpbmcxKFN0cmluZ0lPLlN0cmluZ0lPKCJceDAzYWJjZGVmIikpCiAgICAnYWJjJwogICAgczIAAABleHBlY3RlZCAlZCBieXRlcyBpbiBhIHN0cmluZzEsIGJ1dCBvbmx5ICVkIHJlbWFpbk4oBAAAAFITAAAAUg4AAABSFQAAAFIQAAAAKAMAAABSEQAAAFIFAAAAUhIAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dAwAAAByZWFkX3N0cmluZzGHAQAAcwwAAAAACQwCDwESAQQBBgF0BwAAAHN0cmluZzFzzQAAAEEgY291bnRlZCBzdHJpbmcuCgogICAgICAgICAgICAgIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIDEtYnl0ZSB1bnNpZ25lZCBpbnQgZ2l2aW5nIHRoZSBudW1iZXIKICAgICAgICAgICAgICBvZiBieXRlcyBpbiB0aGUgc3RyaW5nLCBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGF0IG1hbnkKICAgICAgICAgICAgICBieXRlcy4KICAgICAgICAgICAgICBjAQAAAAIAAAADAAAAQwAAAHNBAAAAfAAAagAAgwAAfQEAfAEAagEAZAEAgwEAcyoAdAIAZAIAgwEAggEAbgAAfAEAZAMAIH0BAHQDAHwBAGQEAIMCAFMoBQAAAHNxAAAACiAgICA+Pj4gaW1wb3J0IFN0cmluZ0lPCiAgICA+Pj4gcmVhZF91bmljb2Rlc3RyaW5nbmwoU3RyaW5nSU8uU3RyaW5nSU8oImFiY1x1YWJjZFxuanVuayIpKQogICAgdSdhYmNcdWFiY2QnCiAgICBzAQAAAApzNAAAAG5vIG5ld2xpbmUgZm91bmQgd2hlbiB0cnlpbmcgdG8gcmVhZCB1bmljb2Rlc3RyaW5nbmxp/////3MSAAAAcmF3LXVuaWNvZGUtZXNjYXBlKAQAAABSHAAAAFIdAAAAUhAAAAB0BwAAAHVuaWNvZGUoAgAAAFIRAAAAUhIAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dBQAAAByZWFkX3VuaWNvZGVzdHJpbmdubKQBAABzCgAAAAAHDAEPAQ8CCgF0DwAAAHVuaWNvZGVzdHJpbmdubHP4AAAAQSBuZXdsaW5lLXRlcm1pbmF0ZWQgVW5pY29kZSBzdHJpbmcuCgogICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyByYXctdW5pY29kZS1lc2Nh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XHgwMlx4MDBceDAwXHgwMFx4MDBceGZmIikpCiAgICAtMjU2TAogICAgPj4+IHJlYWRfbG9uZzQoU3RyaW5nSU8uU3RyaW5nSU8oIlx4MDJceDAwXHgwMFx4MDBceDAwXHg4MCIpKQogICAgLTMyNzY4TAogICAgPj4+IHJlYWRfbG9uZzEoU3RyaW5nSU8uU3RyaW5nSU8oIlx4MDBceDAwXHgwMFx4MDAiKSkKICAgIDBMCiAgICBpAAAAAHMYAAAAbG9uZzQgYnl0ZSBjb3VudCA8IDA6ICVkcycAAABub3QgZW5vdWdoIGRhdGEgaW4gc3RyZWFtIHRvIHJlYWQgbG9uZzQoBQAAAFIZAAAAUhAAAABSDgAAAFIVAAAAUkMAAAAoAwAAAFIRAAAAUgUAAABSEgAAACgAAAAAKAAAAABzdgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcGlja2xldG9vbHMucHl0CgAAAHJlYWRfbG9uZzSOAgAAcw4AAAAADwwBDAETAQ8BEgEPAXQFAAAAbG9uZzRzjgEAAEEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGEgbG9uZywgbGl0dGxlLWVuZGlhbi4KCiAgICBUaGlzIGZpcnN0IHJlYWRzIGZvdXIgYnl0ZXMgYXMgYSBzaWduZWQgc2l6ZSAoYnV0IHJlcXVpcmVzIHRoZQogICAgc2l6ZSB0byBiZSA+PSAwKSwgdGhlbiByZWFkcyB0aGF0IG1hbnkgYnl0ZXMgYW5kIGludGVycHJldHMgdGhlbQogICAgYXMgYSBsaXR0bGUtZW5kaWFuIDIncy1jb21wbGVtZW50IGxvbmcuICBJZiB0aGUgc2l6ZSBpcyAwLCB0aGF0J3MgdGFrZW4KICAgIGFzIGEgc2hvcnRjdXQgZm9yIHRoZSBsb25nIDBMLCBhbHRob3VnaCBMT05HMSBzaG91bGQgcmVhbGx5IGJlIHVzZWQKICAgIHRoZW4gaW5zdGVhZCAoYW5kIGluIGFueSBjYXNlIHdoZXJlICMgb2YgYnl0ZXMgPCAyNTYpLgogICAgdAsAAABTdGFja09iamVjdGMAAAAAAAAAAAMAAABCAAAAcyAAAABlAABaAQBkBQBaAgBkAwCEAABaAwBkBACEAABaBABSUygGAAAAUgQAAAB0BgAAAG9idHlwZVIHAAAAYwQAAAAFAAAAAwAAAEMAAABzQgAAAHwBAHwAAF8AAHQBAHwCAHQCAIMCAHIsAHgRAHwCAERdBgB9BABxHwBXbgAAfAIAfAAAXwMAfAMAfAAAXwQAZAAAUygBAAAATigFAAAAUgQAAAB0CgAAAGlzaW5zdGFuY2V0BQAAAHR1cGxlUkkAAABSBwAAACgFAAAAUggAAABSBAAAAFJJAAAAUgcAAAB0CQAAAGNvbnRhaW5lZCgAAAAAKAAAAABzdgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcGlja2xldG9vbHMucHlSCQAAAMYCAABzDAAAAAACCQMPAQ0BBwEJA2MBAAAAAQAAAAEAAABDAAAAcwcAAAB8AABqAABTKAEAAABOKAEAAABSBAAAACgBAAAAUggAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dAgAAABfX3JlcHJfX9MCAABzAgAAAAABKAMAAABzBAAAAG5hbWVzBgAAAG9idHlwZXMDAAAAZG9jKAUAAABSCgAAAFILAAAAUgwAAABSCQAAAFJNAAAAKAAAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5UkgAAAC5AgAAcwoAAAAGAwAEAAMGAwkNUjYAAABSSQAAAHMzAAAAQSBzaG9ydCAoYXMgb3Bwb3NlZCB0byBsb25nKSBQeXRob24gaW50ZWdlciBvYmplY3QuUjgAAABzMwAAAEEgbG9uZyAoYXMgb3Bwb3NlZCB0byBzaG9ydCkgUHl0aG9uIGludGVnZXIgb2JqZWN0LnQLAAAAaW50X29yX2Jvb2xzOgAAAEEgUHl0aG9uIGludGVnZXIgb2JqZWN0IChzaG9ydCBvciBsb25nKSwgb3IgYSBQeXRob24gYm9vbC50BAAAAGJvb2xzFQAAAEEgUHl0aG9uIGJvb2wgb2JqZWN0LlI+AAAAcxYAAABBIFB5dGhvbiBmbG9hdCBvYmplY3QudAMAAABzdHJzFwAAAEEgUHl0aG9uIHN0cmluZyBvYmplY3QuUi0AAABzHwAAAEEgUHl0aG9uIFVuaWNvZGUgc3RyaW5nIG9iamVjdC50BAAAAE5vbmVzFwAAAFRoZSBQeXRob24gTm9uZSBvYmplY3QuUksAAABzFgAAAEEgUHl0aG9uIHR1cGxlIG9iamVjdC50BAAAAGxpc3RzFQAAAEEgUHl0aG9uIGxpc3Qgb2JqZWN0LnQEAAAAZGljdHMVAAAAQSBQeXRob24gZGljdCBvYmplY3QudAMAAABhbnlzHgAAAEFueSBraW5kIG9mIG9iamVjdCB3aGF0c29ldmVyLnQEAAAAbWFya3MCAgAAJ1RoZSBtYXJrJyBpcyBhIHVuaXF1ZSBvYmplY3QuCgogICAgICAgICAgICAgICAgIE9wY29kZXMgdGhhdCBvcGVyYXRlIG9uIGEgdmFyaWFibGUgbnVtYmVyIG9mIG9iamVjdHMKICAgICAgICAgICAgICAgICBnZW5lcmFsbHkgZG9uJ3QgZW1iZWQgdGhlIGNvdW50IG9mIG9iamVjdHMgaW4gdGhlIG9wY29kZSwKICAgICAgICAgICAgICAgICBvciBwdWxsIGl0IG9mZiB0aGUgc3RhY2suICBJbnN0ZWFkIHRoZSBNQVJLIG9wY29kZSBpcyB1c2VkCiAgICAgICAgICAgICAgICAgdG8gcHVzaCBhIHNwZWNpYWwgbWFya2VyIG9iamVjdCBvbiB0aGUgc3RhY2ssIGFuZCB0aGVuCiAgICAgICAgICAgICAgICAgc29tZSBvdGhlciBvcGNvZGVzIGdyYWIgYWxsIHRoZSBvYmplY3RzIGZyb20gdGhlIHRvcCBvZgogICAgICAgICAgICAgICAgIHRoZSBzdGFjayBkb3duIHRvIChidXQgbm90IGluY2x1ZGluZykgdGhlIHRvcG1vc3QgbWFya2VyCiAgICAgICAgICAgICAgICAgb2JqZWN0LgogICAgICAgICAgICAgICAgIHQKAAAAc3RhY2tzbGljZXNMAgAAQW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGNvbnRpZ3VvdXMgc2xpY2Ugb2YgdGhlIHN0YWNrLgoKICAgICAgICAgICAgICAgICBUaGlzIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBtYXJrb2JqZWN0LCB0byByZXByZXNlbnQgYWxsCiAgICAgICAgICAgICAgICAgb2YgdGhlIHN0YWNrIGZvbGxvd2luZyB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0LiAgRm9yIGV4YW1wbGUsCiAgICAgICAgICAgICAgICAgdGhlIFBPUF9NQVJLIG9wY29kZSBjaGFuZ2VzIHRoZSBzdGFjayBmcm9tCgogICAgICAgICAgICAgICAgICAgICBbLi4uLCBtYXJrb2JqZWN0LCBzdGFja3NsaWNlXQogICAgICAgICAgICAgICAgIHRvCiAgICAgICAgICAgICAgICAgICAgIFsuLi5dCgogICAgICAgICAgICAgICAgIE5vIG1hdHRlciBob3cgbWFueSBvYmplY3QgYXJlIG9uIHRoZSBzdGFjayBhZnRlciB0aGUgdG9wbW9zdAogICAgICAgICAgICAgICAgIG1hcmtvYmplY3QsIFBPUF9NQVJLIGdldHMgcmlkIG9mIGFsbCBvZiB0aGVtIChpbmNsdWRpbmcgdGhlCiAgICAgICAgICAgICAgICAgdG9wbW9zdCBtYXJrb2JqZWN0IHRvbykuCiAgICAgICAgICAgICAgICAgdAoAAABPcGNvZGVJbmZvYwAAAAAAAAAABwAAAEIAAABzFwAAAGUAAFoBAGQIAFoCAGQHAIQAAFoDAFJTKAkAAABSBAAAAHQEAAAAY29kZXQDAAAAYXJndAwAAABzdGFja19iZWZvcmV0CwAAAHN0YWNrX2FmdGVydAUAAABwcm90b1IHAAAAYwgAAAAJAAAAAgAAAEMAAABzZQAAAHwBAHwAAF8AAHwCAHwAAF8BAHwDAHwAAF8CAHgOAHwEAERdBgB9CABxIgBXfAQAfAAAXwMAeA4AfAUARF0GAH0IAHE8AFd8BQB8AABfBAB8BgB8AABfBQB8BwB8AABfBgBkAABTKAEAAABOKAcAAABSBAAAAFJYAAAAUlkAAABSWgAAAFJbAAAAUlwAAABSBwAAACgJAAAAUggAAABSBAAAAFJYAAAAUlkAAABSWgAAAFJbAAAAUlwAAABSBwAAAHQBAAAAeCgAAAAAKAAAAABzdgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcGlja2xldG9vbHMucHlSCQAAAFYDAABzFgAAAAADCQQJAwkDDQEEAQkDDQEEAQkDCQMoBwAAAHMEAAAAbmFtZXMEAAAAY29kZXMDAAAAYXJncwwAAABzdGFja19iZWZvcmVzCwAAAHN0YWNrX2FmdGVycwUAAABwcm90b3MDAAAAZG9jKAQAAABSCgAAAFILAAAAUgwAAABSCQAAACgAAAAAKAAAAAAoAAAAAHN2AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9waWNrbGV0b29scy5weVJXAAAANwMAAHMQAAAABgQABAAIAAMAAwADAAMGA3QDAAAASU5UUlgAAAB0AQAAAElSWQAAAFJaAAAAUlsAAABSXAAAAGkAAAAAc6QDAABQdXNoIGFuIGludGVnZXIgb3IgYm9vbC4KCiAgICAgIFRoZSBhcmd1bWVudCBpcyBhIG5ld2xpbmUtdGVybWluYXRlZCBkZWNpbWFsIGxpdGVyYWwgc3RyaW5nLgoKICAgICAgVGhlIGludGVudCBtYXkgaGF2ZSBiZWVuIHRoYXQgdGhpcyBhbHdheXMgZml0IGluIGEgc2hvcnQgUHl0aG9uIGludCwKICAgICAgYnV0IElOVCBjYW4gYmUgZ2VuZXJhdGVkIGluIHBpY2tsZXMgd3JpdHRlbiBvbiBhIDY0LWJpdCBib3ggdGhhdAogICAgICByZXF1aXJlIGEgUHl0aG9uIGxvbmcgb24gYSAzMi1iaXQgYm94LiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzCiAgICAgIGFuZCBMT05HIHRoZW4gaXMgdGhhdCBJTlQgc2tpcHMgYSB0cmFpbGluZyAnTCcsIGFuZCBwcm9kdWNlcyBhIHNob3J0CiAgICAgIGludCB3aGVuZXZlciBwb3NzaWJsZS4KCiAgICAgIEFub3RoZXIgZGlmZmVyZW5jZSBpcyBkdWUgdG8gdGhhdCwgd2hlbiBib29sIHdhcyBpbnRyb2R1Y2VkIGFzIGEKICAgICAgZGlzdGluY3QgdHlwZSBpbiAyLjMsIGJ1aWx0aW4gbmFtZXMgVHJ1ZSBhbmQgRmFsc2Ugd2VyZSBhbHNvIGFkZGVkIHRvCiAgICAgIDIuMi4yLCBtYXBwaW5nIHRvIGludHMgMSBhbmQgMC4gIEZvciBjb21wYXRpYmlsaXR5IGluIGJvdGggZGlyZWN0aW9ucywKICAgICAgVHJ1ZSBnZXRzIHBpY2tsZWQgYXMgSU5UICsgIkkwMVxuIiwgYW5kIEZhbHNlIGFzIElOVCArICJJMDBcbiIuCiAgICAgIExlYWRpbmcgemVyb2VzIGFyZSBuZXZlciBwcm9kdWNlZCBmb3IgYSBnZW51aW5lIGludGVnZXIuICBUaGUgMi4zCiAgICAgIChhbmQgbGF0ZXIpIHVucGlja2xlcnMgc3BlY2lhbC1jYXNlIHRoZXNlIGFuZCByZXR1cm4gYm9vbCBpbnN0ZWFkOwogICAgICBlYXJsaWVyIHVucGlja2xlcnMgaWdub3JlIHRoZSBsZWFkaW5nICIwIiBhbmQgcmV0dXJuIHRoZSBpbnQuCiAgICAgIHQGAAAAQklOSU5UdAEAAABKczEBAABQdXNoIGEgZm91ci1ieXRlIHNpZ25lZCBpbnRlZ2VyLgoKICAgICAgVGhpcyBoYW5kbGVzIHRoZSBmdWxsIHJhbmdlIG9mIFB5dGhvbiAoc2hvcnQpIGludGVnZXJzIG9uIGEgMzItYml0CiAgICAgIGJveCwgZGlyZWN0bHkgYXMgYmluYXJ5IGJ5dGVzICgxIGZvciB0aGUgb3Bjb2RlIGFuZCA0IGZvciB0aGUgaW50ZWdlcikuCiAgICAgIElmIHRoZSBpbnRlZ2VyIGlzIG5vbi1uZWdhdGl2ZSBhbmQgZml0cyBpbiAxIG9yIDIgYnl0ZXMsIHBpY2tsaW5nIHZpYQogICAgICBCSU5JTlQxIG9yIEJJTklOVDIgc2F2ZXMgc3BhY2UuCiAgICAgIHQHAAAAQklOSU5UMXQBAAAAS3OMAAAAUHVzaCBhIG9uZS1ieXRlIHVuc2lnbmVkIGludGVnZXIuCgogICAgICBUaGlzIGlzIGEgc3BhY2Ugb3B0aW1pemF0aW9uIGZvciBwaWNrbGluZyB2ZXJ5IHNtYWxsIG5vbi1uZWdhdGl2ZSBpbnRzLAogICAgICBpbiByYW5nZSgyNTYpLgogICAgICB0BwAAAEJJTklOVDJ0AQAAAE1z6wAAAFB1c2ggYSB0d28tYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyLgoKICAgICAgVGhpcyBpcyBhIHNwYWNlIG9wdGltaXphdGlvbiBmb3IgcGlja2xpbmcgc21hbGwgcG9zaXRpdmUgaW50cywgaW4KICAgICAgcmFuZ2UoMjU2LCAyKioxNikuICBJbnRlZ2VycyBpbiByYW5nZSgyNTYpIGNhbiBhbHNvIGJlIHBpY2tsZWQgdmlhCiAgICAgIEJJTklOVDIsIGJ1dCBCSU5JTlQxIGluc3RlYWQgc2F2ZXMgYSBieXRlLgogICAgICB0BAAAAExPTkdSMgAAAHPHAQAAUHVzaCBhIGxvbmcgaW50ZWdlci4KCiAgICAgIFRoZSBzYW1lIGFzIElOVCwgZXhjZXB0IHRoYXQgdGhlIGxpdGVyYWwgZW5kcyB3aXRoICdMJywgYW5kIGFsd2F5cwogICAgICB1bnBpY2tsZXMgdG8gYSBQeXRob24gbG9uZy4gIFRoZXJlIGRvZXNuJ3Qgc2VlbSBhIHJlYWwgcHVycG9zZSB0byB0aGUKICAgICAgdHJhaWxpbmcgJ0wnLgoKICAgICAgTm90ZSB0aGF0IExPTkcgdGFrZXMgdGltZSBxdWFkcmF0aWMgaW4gdGhlIG51bWJlciBvZiBkaWdpdHMgd2hlbgogICAgICB1bnBpY2tsaW5nICh0aGlzIGlzIHNpbXBseSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBkZWNpbWFsLT5iaW5hcnkKICAgICAgY29udmVyc2lvbikuICBQcm90byAyIGFkZGVkIGxpbmVhci10aW1lIChpbiBDOyBzdGlsbCBxdWFkcmF0aWMtdGltZQogICAgICBpbiBQeXRob24pIExPTkcxIGFuZCBMT05HNCBvcGNvZGVzLgogICAgICB0BQAAAExPTkcxcwEAAACKc3wAAABMb25nIGludGVnZXIgdXNpbmcgb25lLWJ5dGUgbGVuZ3RoLgoKICAgICAgQSBtb3JlIGVmZmljaWVudCBlbmNvZGluZyBvZiBhIFB5dGhvbiBsb25nOyB0aGUgbG9uZzEgZW5jb2RpbmcKICAgICAgc2F5cyBpdCBhbGwudAUAAABMT05HNHMBAAAAi3N+AAAATG9uZyBpbnRlZ2VyIHVzaW5nIGZvdW5kLWJ5dGUgbGVuZ3RoLgoKICAgICAgQSBtb3JlIGVmZmljaWVudCBlbmNvZGluZyBvZiBhIFB5dGhvbiBsb25nOyB0aGUgbG9uZzQgZW5jb2RpbmcKICAgICAgc2F5cyBpdCBhbGwudAYAAABTVFJJTkd0AQAAAFNz0wAAAFB1c2ggYSBQeXRob24gc3RyaW5nIG9iamVjdC4KCiAgICAgIFRoZSBhcmd1bWVudCBpcyBhIHJlcHItc3R5bGUgc3RyaW5nLCB3aXRoIGJyYWNrZXRpbmcgcXVvdGUgY2hhcmFjdGVycywKICAgICAgYW5kIHBlcmhhcHMgZW1iZWRkZWQgZXNjYXBlcy4gIFRoZSBhcmd1bWVudCBleHRlbmRzIHVudGlsIHRoZSBuZXh0CiAgICAgIG5ld2xpbmUgY2hhcmFjdGVyLgogICAgICB0CQAAAEJJTlNUUklOR3QBAAAAVHP9AAAAUHVzaCBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LgoKICAgICAgVGhlcmUgYXJlIHR3byBhcmd1bWVudHM6ICB0aGUgZmlyc3QgaXMgYSA0LWJ5dGUgbGl0dGxlLWVuZGlhbiBzaWduZWQgaW50CiAgICAgIGdpdmluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBzdHJpbmcsIGFuZCB0aGUgc2Vjb25kIGlzIHRoYXQgbWFueQogICAgICBieXRlcywgd2hpY2ggYXJlIHRha2VuIGxpdGVyYWxseSBhcyB0aGUgc3RyaW5nIGNvbnRlbnQuCiAgICAgIHQPAAAAU0hPUlRfQklOU1RSSU5HdAEAAABVc/EAAABQdXNoIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuCgogICAgICBUaGVyZSBhcmUgdHdvIGFyZ3VtZW50czogIHRoZSBmaXJzdCBpcyBhIDEtYnl0ZSB1bnNpZ25lZCBpbnQgZ2l2aW5nCiAgICAgIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHN0cmluZywgYW5kIHRoZSBzZWNvbmQgaXMgdGhhdCBtYW55IGJ5dGVzLAogICAgICB3aGljaCBhcmUgdGFrZW4gbGl0ZXJhbGx5IGFzIHRoZSBzdHJpbmcgY29udGVudC4KICAgICAgdAQAAABOT05FdAEAAABOcxcAAABQdXNoIE5vbmUgb24gdGhlIHN0YWNrLnQHAAAATkVXVFJVRXMBAAAAiHMmAAAAVHJ1ZS4KCiAgICAgIFB1c2ggVHJ1ZSBvbnRvIHRoZSBzdGFjay50CAAAAE5FV0ZBTFNFcwEAAACJcycAAABUcnVlLgoKICAgICAgUHVzaCBGYWxzZSBvbnRvIHRoZSBzdGFjay50BwAAAFVOSUNPREV0AQAAAFZz5wAAAFB1c2ggYSBQeXRob24gVW5pY29kZSBzdHJpbmcgb2JqZWN0LgoKICAgICAgVGhlIGFyZ3VtZW50IGlzIGEgcmF3LXVuaWNvZGUtZXNjYXBlIGVuY29kaW5nIG9mIGEgVW5pY29kZSBzdHJpbmcsCiAgICAgIGFuZCBzbyBtYXkgY29udGFpbiBlbWJlZGRlZCBlc2NhcGUgc2VxdWVuY2VzLiAgVGhlIGFyZ3VtZW50IGV4dGVuZHMKICAgICAgdW50aWwgdGhlIG5leHQgbmV3bGluZSBjaGFyYWN0ZXIuCiAgICAgIHQKAAAAQklOVU5JQ09ERXQBAAAAWHMCAQAAUHVzaCBhIFB5dGhvbiBVbmljb2RlIHN0cmluZyBvYmplY3QuCgogICAgICBUaGVyZSBhcmUgdHdvIGFyZ3VtZW50czogIHRoZSBmaXJzdCBpcyBhIDQtYnl0ZSBsaXR0bGUtZW5kaWFuIHNpZ25lZCBpbnQKICAgICAgZ2l2aW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHN0cmluZy4gIFRoZSBzZWNvbmQgaXMgdGhhdCBtYW55CiAgICAgIGJ5dGVzLCBhbmQgaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZSBVbmljb2RlIHN0cmluZy4KICAgICAgdAUAAABGTE9BVHQBAAAARnONAgAATmV3bGluZS10ZXJtaW5hdGVkIGRlY2ltYWwgZmxvYXQgbGl0ZXJhbC4KCiAgICAgIFRoZSBhcmd1bWVudCBpcyByZXByKGFfZmxvYXQpLCBhbmQgaW4gZ2VuZXJhbCByZXF1aXJlcyAxNyBzaWduaWZpY2FudAogICAgICBkaWdpdHMgZm9yIHJvdW5kdHJpcCBjb252ZXJzaW9uIHRvIGJlIGFuIGlkZW50aXR5ICh0aGlzIGlzIHNvIGZvcgogICAgICBJRUVFLTc1NCBkb3VibGUgcHJlY2lzaW9uIHZhbHVlcywgd2hpY2ggaXMgd2hhdCBQeXRob24gZmxvYXQgbWFwcyB0bwogICAgICBvbiBtb3N0IGJveGVzKS4KCiAgICAgIEluIGdlbmVyYWwsIEZMT0FUIGNhbm5vdCBiZSB1c2VkIHRvIHRyYW5zcG9ydCBpbmZpbml0aWVzLCBOYU5zLCBvcgogICAgICBtaW51cyB6ZXJvIGFjcm9zcyBib3hlcyAob3IgZXZlbiBvbiBhIHNpbmdsZSBib3gsIGlmIHRoZSBwbGF0Zm9ybSBDCiAgICAgIGxpYnJhcnkgY2FuJ3QgcmVhZCB0aGUgc3RyaW5ncyBpdCBwcm9kdWNlcyBmb3Igc3VjaCB0aGluZ3MgLS0gV2luZG93cwogICAgICBpcyBsaWtlIHRoYXQpLCBidXQgbWF5IGRvIGxlc3MgZGFtYWdlIHRoYW4gQklORkxPQVQgb24gYm94ZXMgd2l0aAogICAgICBncmVhdGVyIHByZWNpc2lvbiBvciBkeW5hbWljIHJhbmdlIHRoYW4gSUVFRS03NTQgZG91YmxlLgogICAgICB0CAAAAEJJTkZMT0FUdAEAAABHc9wBAABGbG9hdCBzdG9yZWQgaW4gYmluYXJ5IGZvcm0sIHdpdGggOCBieXRlcyBvZiBkYXRhLgoKICAgICAgVGhpcyBnZW5lcmFsbHkgcmVxdWlyZXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNwYWNlIG9mIEZMT0FUIGVuY29kaW5nLgogICAgICBJbiBnZW5lcmFsLCBCSU5GTE9BVCBjYW5ub3QgYmUgdXNlZCB0byB0cmFuc3BvcnQgaW5maW5pdGllcywgTmFOcywgb3IKICAgICAgbWludXMgemVybywgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZXhwb25lbnQgZXhjZWVkcyB0aGUgcmFuZ2Ugb2YKICAgICAgYW4gSUVFRS03NTQgZG91YmxlLCBhbmQgcmV0YWlucyBubyBtb3JlIHRoYW4gNTMgYml0cyBvZiBwcmVjaXNpb24gKGlmCiAgICAgIHRoZXJlIGFyZSBtb3JlIHRoYW4gdGhhdCwgImFkZCBhIGhhbGYgYW5kIGNob3AiIHJvdW5kaW5nIGlzIHVzZWQgdG8KICAgICAgY3V0IGl0IGJhY2sgdG8gNTMgc2lnbmlmaWNhbnQgYml0cykuCiAgICAgIHQKAAAARU1QVFlfTElTVHQBAAAAXXMTAAAAUHVzaCBhbiBlbXB0eSBsaXN0LnQGAAAAQVBQRU5EdAEAAABhc60AAABBcHBlbmQgYW4gb2JqZWN0IHRvIGEgbGlzdC4KCiAgICAgIFN0YWNrIGJlZm9yZTogIC4uLiBweWxpc3QgYW55b2JqZWN0CiAgICAgIFN0YWNrIGFmdGVyOiAgIC4uLiBweWxpc3QrW2FueW9iamVjdF0KCiAgICAgIGFsdGhvdWdoIHB5bGlzdCBpcyByZWFsbHkgZXh0ZW5kZWQgaW4tcGxhY2UuCiAgICAgIHQHAAAAQVBQRU5EU3QBAAAAZXPHAAAARXh0ZW5kIGEgbGlzdCBieSBhIHNsaWNlIG9mIHN0YWNrIG9iamVjdHMuCgogICAgICBTdGFjayBiZWZvcmU6ICAuLi4gcHlsaXN0IG1hcmtvYmplY3Qgc3RhY2tzbGljZQogICAgICBTdGFjayBhZnRlcjogICAuLi4gcHlsaXN0K3N0YWNrc2xpY2UKCiAgICAgIGFsdGhvdWdoIHB5bGlzdCBpcyByZWFsbHkgZXh0ZW5kZWQgaW4tcGxhY2UuCiAgICAgIHQEAAAATElTVHQBAAAAbHNzAQAAQnVpbGQgYSBsaXN0IG91dCBvZiB0aGUgdG9wbW9zdCBzdGFjayBzbGljZSwgYWZ0ZXIgbWFya29iamVjdC4KCiAgICAgIEFsbCB0aGUgc3RhY2sgZW50cmllcyBmb2xsb3dpbmcgdGhlIHRvcG1vc3QgbWFya29iamVjdCBhcmUgcGxhY2VkIGludG8KICAgICAgYSBzaW5nbGUgUHl0aG9uIGxpc3QsIHdoaWNoIHNpbmdsZSBsaXN0IG9iamVjdCByZXBsYWNlcyBhbGwgb2YgdGhlCiAgICAgIHN0YWNrIGZyb20gdGhlIHRvcG1vc3QgbWFya29iamVjdCBvbndhcmQuICBGb3IgZXhhbXBsZSwKCiAgICAgIFN0YWNrIGJlZm9yZTogLi4uIG1hcmtvYmplY3QgMSAyIDMgJ2FiYycKICAgICAgU3RhY2sgYWZ0ZXI6ICAuLi4gWzEsIDIsIDMsICdhYmMnXQogICAgICB0CwAAAEVNUFRZX1RVUExFdAEAAAApcxQAAABQdXNoIGFuIGVtcHR5IHR1cGxlLnQFAAAAVFVQTEV0AQAAAHRzdgEAAEJ1aWxkIGEgdHVwbGUgb3V0IG9mIHRoZSB0b3Btb3N0IHN0YWNrIHNsaWNlLCBhZnRlciBtYXJrb2JqZWN0LgoKICAgICAgQWxsIHRoZSBzdGFjayBlbnRyaWVzIGZvbGxvd2luZyB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IGFyZSBwbGFjZWQgaW50bwogICAgICBhIHNpbmdsZSBQeXRob24gdHVwbGUsIHdoaWNoIHNpbmdsZSB0dXBsZSBvYmplY3QgcmVwbGFjZXMgYWxsIG9mIHRoZQogICAgICBzdGFjayBmcm9tIHRoZSB0b3Btb3N0IG1hcmtvYmplY3Qgb253YXJkLiAgRm9yIGV4YW1wbGUsCgogICAgICBTdGFjayBiZWZvcmU6IC4uLiBtYXJrb2JqZWN0IDEgMiAzICdhYmMnCiAgICAgIFN0YWNrIGFmdGVyOiAgLi4uICgxLCAyLCAzLCAnYWJjJykKICAgICAgdAYAAABUVVBMRTFzAQAAAIVz/AAAAEJ1aWxkIGEgb25lLXR1cGxlIG91dCBvZiB0aGUgdG9wbW9zdCBpdGVtIG9uIHRoZSBzdGFjay4KCiAgICAgIFRoaXMgY29kZSBwb3BzIG9uZSB2YWx1ZSBvZmYgdGhlIHN0YWNrIGFuZCBwdXNoZXMgYSB0dXBsZSBvZgogICAgICBsZW5ndGggMSB3aG9zZSBvbmUgaXRlbSBpcyB0aGF0IHZhbHVlIGJhY2sgb250byBpdC4gIEluIG90aGVyCiAgICAgIHdvcmRzOgoKICAgICAgICAgIHN0YWNrWy0xXSA9IHR1cGxlKHN0YWNrWy0xOl0pCiAgICAgIHQGAAAAVFVQTEUycwEAAACGcwEBAABCdWlsZCBhIHR3by10dXBsZSBvdXQgb2YgdGhlIHRvcCB0d28gaXRlbXMgb24gdGhlIHN0YWNrLgoKICAgICAgVGhpcyBjb2RlIHBvcHMgdHdvIHZhbHVlcyBvZmYgdGhlIHN0YWNrIGFuZCBwdXNoZXMgYSB0dXBsZSBvZgogICAgICBsZW5ndGggMiB3aG9zZSBpdGVtcyBhcmUgdGhvc2UgdmFsdWVzIGJhY2sgb250byBpdC4gIEluIG90aGVyCiAgICAgIHdvcmRzOgoKICAgICAgICAgIHN0YWNrWy0yOl0gPSBbdHVwbGUoc3RhY2tbLTI6XSldCiAgICAgIHQGAAAAVFVQTEUzcwEAAACHcwcBAABCdWlsZCBhIHRocmVlLXR1cGxlIG91dCBvZiB0aGUgdG9wIHRocmVlIGl0ZW1zIG9uIHRoZSBzdGFjay4KCiAgICAgIFRoaXMgY29kZSBwb3BzIHRocmVlIHZhbHVlcyBvZmYgdGhlIHN0YWNrIGFuZCBwdXNoZXMgYSB0dXBsZSBvZgogICAgICBsZW5ndGggMyB3aG9zZSBpdGVtcyBhcmUgdGhvc2UgdmFsdWVzIGJhY2sgb250byBpdC4gIEluIG90aGVyCiAgICAgIHdvcmRzOgoKICAgICAgICAgIHN0YWNrWy0zOl0gPSBbdHVwbGUoc3RhY2tbLTM6XSldCiAgICAgIHQKAAAARU1QVFlfRElDVHQBAAAAfXMTAAAAUHVzaCBhbiBlbXB0eSBkaWN0LnQEAAAARElDVHQBAAAAZHOyAQAAQnVpbGQgYSBkaWN0IG91dCBvZiB0aGUgdG9wbW9zdCBzdGFjayBzbGljZSwgYWZ0ZXIgbWFya29iamVjdC4KCiAgICAgIEFsbCB0aGUgc3RhY2sgZW50cmllcyBmb2xsb3dpbmcgdGhlIHRvcG1vc3QgbWFya29iamVjdCBhcmUgcGxhY2VkIGludG8KICAgICAgYSBzaW5nbGUgUHl0aG9uIGRpY3QsIHdoaWNoIHNpbmdsZSBkaWN0IG9iamVjdCByZXBsYWNlcyBhbGwgb2YgdGhlCiAgICAgIHN0YWNrIGZyb20gdGhlIHRvcG1vc3QgbWFya29iamVjdCBvbndhcmQuICBUaGUgc3RhY2sgc2xpY2UgYWx0ZXJuYXRlcwogICAgICBrZXksIHZhbHVlLCBrZXksIHZhbHVlLCAuLi4uICBGb3IgZXhhbXBsZSwKCiAgICAgIFN0YWNrIGJlZm9yZTogLi4uIG1hcmtvYmplY3QgMSAyIDMgJ2FiYycKICAgICAgU3RhY2sgYWZ0ZXI6ICAuLi4gezE6IDIsIDM6ICdhYmMnfQogICAgICB0BwAAAFNFVElURU1SOQAAAHO6AAAAQWRkIGEga2V5K3ZhbHVlIHBhaXIgdG8gYW4gZXhpc3RpbmcgZGljdC4KCiAgICAgIFN0YWNrIGJlZm9yZTogIC4uLiBweWRpY3Qga2V5IHZhbHVlCiAgICAgIFN0YWNrIGFmdGVyOiAgIC4uLiBweWRpY3QKCiAgICAgIHdoZXJlIHB5ZGljdCBoYXMgYmVlbiBtb2RpZmllZCB2aWEgcHlkaWN0W2tleV0gPSB2YWx1ZS4KICAgICAgdAgAAABTRVRJVEVNU3QBAAAAdXNcAgAAQWRkIGFuIGFyYml0cmFyeSBudW1iZXIgb2Yga2V5K3ZhbHVlIHBhaXJzIHRvIGFuIGV4aXN0aW5nIGRpY3QuCgogICAgICBUaGUgc2xpY2Ugb2YgdGhlIHN0YWNrIGZvbGxvd2luZyB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IGlzIHRha2VuIGFzCiAgICAgIGFuIGFsdGVybmF0aW5nIHNlcXVlbmNlIG9mIGtleXMgYW5kIHZhbHVlcywgYWRkZWQgdG8gdGhlIGRpY3QKICAgICAgaW1tZWRpYXRlbHkgdW5kZXIgdGhlIHRvcG1vc3QgbWFya29iamVjdC4gIEV2ZXJ5dGhpbmcgYXQgYW5kIGFmdGVyIHRoZQogICAgICB0b3Btb3N0IG1hcmtvYmplY3QgaXMgcG9wcGVkLCBsZWF2aW5nIHRoZSBtdXRhdGVkIGRpY3QgYXQgdGhlIHRvcAogICAgICBvZiB0aGUgc3RhY2suCgogICAgICBTdGFjayBiZWZvcmU6ICAuLi4gcHlkaWN0IG1hcmtvYmplY3Qga2V5XzEgdmFsdWVfMSAuLi4ga2V5X24gdmFsdWVfbgogICAgICBTdGFjayBhZnRlcjogICAuLi4gcHlkaWN0CgogICAgICB3aGVyZSBweWRpY3QgaGFzIGJlZW4gbW9kaWZpZWQgdmlhIHB5ZGljdFtrZXlfaV0gPSB2YWx1ZV9pIGZvciBpIGluCiAgICAgIDEsIDIsIC4uLiwgbiwgYW5kIGluIHRoYXQgb3JkZXIuCiAgICAgIHQDAAAAUE9QdAEAAAAwczwAAABEaXNjYXJkIHRoZSB0b3Agc3RhY2sgaXRlbSwgc2hyaW5raW5nIHRoZSBzdGFjayBieSBvbmUgaXRlbS50AwAAAERVUHQBAAAAMnM9AAAAUHVzaCB0aGUgdG9wIHN0YWNrIGl0ZW0gb250byB0aGUgc3RhY2sgYWdhaW4sIGR1cGxpY2F0aW5nIGl0LnQEAAAATUFSS3QBAAAAKHPyAAAAUHVzaCBtYXJrb2JqZWN0IG9udG8gdGhlIHN0YWNrLgoKICAgICAgbWFya29iamVjdCBpcyBhIHVuaXF1ZSBvYmplY3QsIHVzZWQgYnkgb3RoZXIgb3Bjb2RlcyB0byBpZGVudGlmeSBhCiAgICAgIHJlZ2lvbiBvZiB0aGUgc3RhY2sgY29udGFpbmluZyBhIHZhcmlhYmxlIG51bWJlciBvZiBvYmplY3RzIGZvciB0aGVtCiAgICAgIHRvIHdvcmsgb24uICBTZWUgbWFya29iamVjdC5kb2MgZm9yIG1vcmUgZGV0YWlsLgogICAgICB0CAAAAFBPUF9NQVJLdAEAAAAxcxUBAABQb3AgYWxsIHRoZSBzdGFjayBvYmplY3RzIGF0IGFuZCBhYm92ZSB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0LgoKICAgICAgV2hlbiBhbiBvcGNvZGUgdXNpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2Ygc3RhY2sgb2JqZWN0cyBpcyBkb25lLAogICAgICBQT1BfTUFSSyBpcyB1c2VkIHRvIHJlbW92ZSB0aG9zZSBvYmplY3RzLCBhbmQgdG8gcmVtb3ZlIHRoZSBtYXJrb2JqZWN0CiAgICAgIHRoYXQgZGVsaW1pdGVkIHRoZWlyIHN0YXJ0aW5nIHBvc2l0aW9uIG9uIHRoZSBzdGFjay4KICAgICAgdAMAAABHRVR0AQAAAGdz6AAAAFJlYWQgYW4gb2JqZWN0IGZyb20gdGhlIG1lbW8gYW5kIHB1c2ggaXQgb24gdGhlIHN0YWNrLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIG9iamVjdCB0byBwdXNoIGlzIGdpdmVuIGJ5IHRoZSBuZXdsaW5lLXRlcm1pbmF0ZWQKICAgICAgZGVjaW1hbCBzdHJpbmcgZm9sbG93aW5nLiAgQklOR0VUIGFuZCBMT05HX0JJTkdFVCBhcmUgc3BhY2Utb3B0aW1pemVkCiAgICAgIHZlcnNpb25zLgogICAgICB0BgAAAEJJTkdFVHQBAAAAaHOiAAAAUmVhZCBhbiBvYmplY3QgZnJvbSB0aGUgbWVtbyBhbmQgcHVzaCBpdCBvbiB0aGUgc3RhY2suCgogICAgICBUaGUgaW5kZXggb2YgdGhlIG1lbW8gb2JqZWN0IHRvIHB1c2ggaXMgZ2l2ZW4gYnkgdGhlIDEtYnl0ZSB1bnNpZ25lZAogICAgICBpbnRlZ2VyIGZvbGxvd2luZy4KICAgICAgdAsAAABMT05HX0JJTkdFVHQBAAAAanOuAAAAUmVhZCBhbiBvYmplY3QgZnJvbSB0aGUgbWVtbyBhbmQgcHVzaCBpdCBvbiB0aGUgc3RhY2suCgogICAgICBUaGUgaW5kZXggb2YgdGhlIG1lbW8gb2JqZWN0IHRvIHB1c2ggaXMgZ2l2ZW4gYnkgdGhlIDQtYnl0ZSBzaWduZWQKICAgICAgbGl0dGxlLWVuZGlhbiBpbnRlZ2VyIGZvbGxvd2luZy4KICAgICAgdAMAAABQVVR0AQAAAHBz9wAAAFN0b3JlIHRoZSBzdGFjayB0b3AgaW50byB0aGUgbWVtby4gIFRoZSBzdGFjayBpcyBub3QgcG9wcGVkLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIGxvY2F0aW9uIHRvIHdyaXRlIGludG8gaXMgZ2l2ZW4gYnkgdGhlIG5ld2xpbmUtCiAgICAgIHRlcm1pbmF0ZWQgZGVjaW1hbCBzdHJpbmcgZm9sbG93aW5nLiAgQklOUFVUIGFuZCBMT05HX0JJTlBVVCBhcmUKICAgICAgc3BhY2Utb3B0aW1pemVkIHZlcnNpb25zLgogICAgICB0BgAAAEJJTlBVVFIhAAAAc7AAAABTdG9yZSB0aGUgc3RhY2sgdG9wIGludG8gdGhlIG1lbW8uICBUaGUgc3RhY2sgaXMgbm90IHBvcHBlZC4KCiAgICAgIFRoZSBpbmRleCBvZiB0aGUgbWVtbyBsb2NhdGlvbiB0byB3cml0ZSBpbnRvIGlzIGdpdmVuIGJ5IHRoZSAxLWJ5dGUKICAgICAgdW5zaWduZWQgaW50ZWdlciBmb2xsb3dpbmcuCiAgICAgIHQLAAAATE9OR19CSU5QVVR0AQAAAHJzvAAAAFN0b3JlIHRoZSBzdGFjayB0b3AgaW50byB0aGUgbWVtby4gIFRoZSBzdGFjayBpcyBub3QgcG9wcGVkLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIGxvY2F0aW9uIHRvIHdyaXRlIGludG8gaXMgZ2l2ZW4gYnkgdGhlIDQtYnl0ZQogICAgICBzaWduZWQgbGl0dGxlLWVuZGlhbiBpbnRlZ2VyIGZvbGxvd2luZy4KICAgICAgdAQAAABFWFQxcwEAAACCc4wCAABFeHRlbnNpb24gY29kZS4KCiAgICAgIFRoaXMgY29kZSBhbmQgdGhlIHNpbWlsYXIgRVhUMiBhbmQgRVhUNCBhbGxvdyB1c2luZyBhIHJlZ2lzdHJ5CiAgICAgIG9mIHBvcHVsYXIgb2JqZWN0cyB0aGF0IGFyZSBwaWNrbGVkIGJ5IG5hbWUsIHR5cGljYWxseSBjbGFzc2VzLgogICAgICBJdCBpcyBlbnZpc2lvbmVkIHRoYXQgdGhyb3VnaCBhIGdsb2JhbCBuZWdvdGlhdGlvbiBhbmQKICAgICAgcmVnaXN0cmF0aW9uIHByb2Nlc3MsIHRoaXJkIHBhcnRpZXMgY2FuIHNldCB1cCBhIG1hcHBpbmcgYmV0d2VlbgogICAgICBpbnRzIGFuZCBvYmplY3QgbmFtZXMuCgogICAgICBJbiBvcmRlciB0byBndWFyYW50ZWUgcGlja2xlIGludGVyY2hhbmdlYWJpbGl0eSwgdGhlIGV4dGVuc2lvbgogICAgICBjb2RlIHJlZ2lzdHJ5IG91Z2h0IHRvIGJlIGdsb2JhbCwgYWx0aG91Z2ggYSByYW5nZSBvZiBjb2RlcyBtYXkKICAgICAgYmUgcmVzZXJ2ZWQgZm9yIHByaXZhdGUgdXNlLgoKICAgICAgRVhUMSBoYXMgYSAxLWJ5dGUgaW50ZWdlciBhcmd1bWVudC4gIFRoaXMgaXMgdXNlZCB0byBpbmRleCBpbnRvIHRoZQogICAgICBleHRlbnNpb24gcmVnaXN0cnksIGFuZCB0aGUgb2JqZWN0IGF0IHRoYXQgaW5kZXggaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4KICAgICAgdAQAAABFWFQycwEAAACDc04AAABFeHRlbnNpb24gY29kZS4KCiAgICAgIFNlZSBFWFQxLiAgRVhUMiBoYXMgYSB0d28tYnl0ZSBpbnRlZ2VyIGFyZ3VtZW50LgogICAgICB0BAAAAEVYVDRzAQAAAIRzTwAAAEV4dGVuc2lvbiBjb2RlLgoKICAgICAgU2VlIEVYVDEuICBFWFQ0IGhhcyBhIGZvdXItYnl0ZSBpbnRlZ2VyIGFyZ3VtZW50LgogICAgICB0BgAAAEdMT0JBTHQBAAAAY3OnAQAAUHVzaCBhIGdsb2JhbCBvYmplY3QgKG1vZHVsZS5hdHRyKSBvbiB0aGUgc3RhY2suCgogICAgICBUd28gbmV3bGluZS10ZXJtaW5hdGVkIHN0cmluZ3MgZm9sbG93IHRoZSBHTE9CQUwgb3Bjb2RlLiAgVGhlIGZpcnN0IGlzCiAgICAgIHRha2VuIGFzIGEgbW9kdWxlIG5hbWUsIGFuZCB0aGUgc2Vjb25kIGFzIGEgY2xhc3MgbmFtZS4gIFRoZSBjbGFzcwogICAgICBvYmplY3QgbW9kdWxlLmNsYXNzIGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suICBNb3JlIGFjY3VyYXRlbHksIHRoZQogICAgICBvYmplY3QgcmV0dXJuZWQgYnkgc2VsZi5maW5kX2NsYXNzKG1vZHVsZSwgY2xhc3MpIGlzIHB1c2hlZCBvbiB0aGUKICAgICAgc3RhY2ssIHNvIHVucGlja2xpbmcgc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcyBmb3JtIG9mIGxvb2t1cC4KICAgICAgdAYAAABSRURVQ0V0AQAAAFJzTgQAAFB1c2ggYW4gb2JqZWN0IGJ1aWx0IGZyb20gYSBjYWxsYWJsZSBhbmQgYW4gYXJndW1lbnQgdHVwbGUuCgogICAgICBUaGUgb3Bjb2RlIGlzIG5hbWVkIHRvIHJlbWluZCBvZiB0aGUgX19yZWR1Y2VfXygpIG1ldGhvZC4KCiAgICAgIFN0YWNrIGJlZm9yZTogLi4uIGNhbGxhYmxlIHB5dHVwbGUKICAgICAgU3RhY2sgYWZ0ZXI6ICAuLi4gY2FsbGFibGUoKnB5dHVwbGUpCgogICAgICBUaGUgY2FsbGFibGUgYW5kIHRoZSBhcmd1bWVudCB0dXBsZSBhcmUgdGhlIGZpcnN0IHR3byBpdGVtcyByZXR1cm5lZAogICAgICBieSBhIF9fcmVkdWNlX18gbWV0aG9kLiAgQXBwbHlpbmcgdGhlIGNhbGxhYmxlIHRvIHRoZSBhcmd0dXBsZSBpcwogICAgICBzdXBwb3NlZCB0byByZXByb2R1Y2UgdGhlIG9yaWdpbmFsIG9iamVjdCwgb3IgYXQgbGVhc3QgZ2V0IGl0IHN0YXJ0ZWQuCiAgICAgIElmIHRoZSBfX3JlZHVjZV9fIG1ldGhvZCByZXR1cm5zIGEgMy10dXBsZSwgdGhlIGxhc3QgY29tcG9uZW50IGlzIGFuCiAgICAgIGFyZ3VtZW50IHRvIGJlIHBhc3NlZCB0byB0aGUgb2JqZWN0J3MgX19zZXRzdGF0ZV9fLCBhbmQgdGhlbiB0aGUgUkVEVUNFCiAgICAgIG9wY29kZSBpcyBmb2xsb3dlZCBieSBjb2RlIHRvIGNyZWF0ZSBzZXRzdGF0ZSdzIGFyZ3VtZW50LCBhbmQgdGhlbiBhCiAgICAgIEJVSUxEIG9wY29kZSB0byBhcHBseSAgX19zZXRzdGF0ZV9fIHRvIHRoYXQgYXJndW1lbnQuCgogICAgICBJZiB0eXBlKGNhbGxhYmxlKSBpcyBub3QgQ2xhc3NUeXBlLCBSRURVQ0UgY29tcGxhaW5zIHVubGVzcyB0aGUKICAgICAgY2FsbGFibGUgaGFzIGJlZW4gcmVnaXN0ZXJlZCB3aXRoIHRoZSBjb3B5X3JlZyBtb2R1bGUncwogICAgICBzYWZlX2NvbnN0cnVjdG9ycyBkaWN0LCBvciB0aGUgY2FsbGFibGUgaGFzIGEgbWFnaWMKICAgICAgJ19fc2FmZV9mb3JfdW5waWNrbGluZ19fJyBhdHRyaWJ1dGUgd2l0aCBhIHRydWUgdmFsdWUuICBJJ20gbm90IHN1cmUKICAgICAgd2h5IGl0IGRvZXMgdGhpcywgYnV0IEkndmUgc3VyZSBzZWVuIHRoaXMgY29tcGxhaW50IG9mdGVuIGVub3VnaCB3aGVuCiAgICAgIEkgZGlkbid0IHdhbnQgdG8gPHdpbms+LgogICAgICB0BQAAAEJVSUxEdAEAAABic8gCAABGaW5pc2ggYnVpbGRpbmcgYW4gb2JqZWN0LCB2aWEgX19zZXRzdGF0ZV9fIG9yIGRpY3QgdXBkYXRlLgoKICAgICAgU3RhY2sgYmVmb3JlOiAuLi4gYW55b2JqZWN0IGFyZ3VtZW50CiAgICAgIFN0YWNrIGFmdGVyOiAgLi4uIGFueW9iamVjdAoKICAgICAgd2hlcmUgYW55b2JqZWN0IG1heSBoYXZlIGJlZW4gbXV0YXRlZCwgYXMgZm9sbG93czoKCiAgICAgIElmIHRoZSBvYmplY3QgaGFzIGEgX19zZXRzdGF0ZV9fIG1ldGhvZCwKCiAgICAgICAgICBhbnlvYmplY3QuX19zZXRzdGF0ZV9fKGFyZ3VtZW50KQoKICAgICAgaXMgY2FsbGVkLgoKICAgICAgRWxzZSB0aGUgYXJndW1lbnQgbXVzdCBiZSBhIGRpY3QsIHRoZSBvYmplY3QgbXVzdCBoYXZlIGEgX19kaWN0X18sIGFuZAogICAgICB0aGUgb2JqZWN0IGlzIHVwZGF0ZWQgdmlhCgogICAgICAgICAgYW55b2JqZWN0Ll9fZGljdF9fLnVwZGF0ZShhcmd1bWVudCkKCiAgICAgIFRoaXMgbWF5IHJhaXNlIFJ1bnRpbWVFcnJvciBpbiByZXN0cmljdGVkIGV4ZWN1dGlvbiBtb2RlICh3aGljaAogICAgICBkaXNhbGxvd3MgYWNjZXNzIHRvIF9fZGljdF9fIGRpcmVjdGx5KTsgaW4gdGhhdCBjYXNlLCB0aGUgb2JqZWN0CiAgICAgIGlzIHVwZGF0ZWQgaW5zdGVhZCB2aWEKCiAgICAgICAgICBmb3IgaywgdiBpbiBhcmd1bWVudC5pdGVtcygpOgogICAgICAgICAgICAgIGFueW9iamVjdFtrXSA9IHYKICAgICAgdAQAAABJTlNUdAEAAABpc5MJAABCdWlsZCBhIGNsYXNzIGluc3RhbmNlLgoKICAgICAgVGhpcyBpcyB0aGUgcHJvdG9jb2wgMCB2ZXJzaW9uIG9mIHByb3RvY29sIDEncyBPQkogb3Bjb2RlLgogICAgICBJTlNUIGlzIGZvbGxvd2VkIGJ5IHR3byBuZXdsaW5lLXRlcm1pbmF0ZWQgc3RyaW5ncywgZ2l2aW5nIGEKICAgICAgbW9kdWxlIGFuZCBjbGFzcyBuYW1lLCBqdXN0IGFzIGZvciB0aGUgR0xPQkFMIG9wY29kZSAoYW5kIHNlZQogICAgICBHTE9CQUwgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGF0KS4gIHNlbGYuZmluZF9jbGFzcyhtb2R1bGUsIG5hbWUpCiAgICAgIGlzIHVzZWQgdG8gZ2V0IGEgY2xhc3Mgb2JqZWN0LgoKICAgICAgSW4gYWRkaXRpb24sIGFsbCB0aGUgb2JqZWN0cyBvbiB0aGUgc3RhY2sgZm9sbG93aW5nIHRoZSB0b3Btb3N0CiAgICAgIG1hcmtvYmplY3QgYXJlIGdhdGhlcmVkIGludG8gYSB0dXBsZSBhbmQgcG9wcGVkIChhbG9uZyB3aXRoIHRoZQogICAgICB0b3Btb3N0IG1hcmtvYmplY3QpLCBqdXN0IGFzIGZvciB0aGUgVFVQTEUgb3Bjb2RlLgoKICAgICAgTm93IGl0IGdldHMgY29tcGxpY2F0ZWQuICBJZiBhbGwgb2YgdGhlc2UgYXJlIHRydWU6CgogICAgICAgICsgVGhlIGFyZ3R1cGxlIGlzIGVtcHR5IChtYXJrb2JqZWN0IHdhcyBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjawogICAgICAgICAgYXQgdGhlIHN0YXJ0KS4KCiAgICAgICAgKyBJdCdzIGFuIG9sZC1zdHlsZSBjbGFzcyBvYmplY3QgKHRoZSB0eXBlIG9mIHRoZSBjbGFzcyBvYmplY3QgaXMKICAgICAgICAgIENsYXNzVHlwZSkuCgogICAgICAgICsgVGhlIGNsYXNzIG9iamVjdCBkb2VzIG5vdCBoYXZlIGEgX19nZXRpbml0YXJnc19fIGF0dHJpYnV0ZS4KCiAgICAgIHRoZW4gd2Ugd2FudCB0byBjcmVhdGUgYW4gb2xkLXN0eWxlIGNsYXNzIGluc3RhbmNlIHdpdGhvdXQgaW52b2tpbmcKICAgICAgaXRzIF9faW5pdF9fKCkgbWV0aG9kIChwaWNrbGUgaGFzIHdhZmZsZWQgb24gdGhpcyBvdmVyIHRoZSB5ZWFyczsgbm90CiAgICAgIGNhbGxpbmcgX19pbml0X18oKSBpcyBjdXJyZW50IHdpc2RvbSkuICBJbiB0aGlzIGNhc2UsIGFuIGluc3RhbmNlIG9mCiAgICAgIGFuIG9sZC1zdHlsZSBkdW1teSBjbGFzcyBpcyBjcmVhdGVkLCBhbmQgdGhlbiB3ZSB0cnkgdG8gcmViaW5kIGl0cwogICAgICBfX2NsYXNzX18gYXR0cmlidXRlIHRvIHRoZSBkZXNpcmVkIGNsYXNzIG9iamVjdC4gIElmIHRoaXMgc3VjY2VlZHMsCiAgICAgIHRoZSBuZXcgaW5zdGFuY2Ugb2JqZWN0IGlzIHB1c2hlZCBvbiB0aGUgc3RhY2ssIGFuZCB3ZSdyZSBkb25lLiAgSW4KICAgICAgcmVzdHJpY3RlZCBleGVjdXRpb24gbW9kZSBpdCBjYW4gZmFpbCAoYXNzaWdubWVudCB0byBfX2NsYXNzX18gaXMKICAgICAgZGlzYWxsb3dlZCksIGFuZCBJJ20gbm90IHJlYWxseSBzdXJlIHdoYXQgaGFwcGVucyB0aGVuIC0tIGl0IGxvb2tzCiAgICAgIGxpa2UgdGhlIGNvZGUgZW5kcyB1cCBjYWxsaW5nIHRoZSBjbGFzcyBvYmplY3QncyBfX2luaXRfXyBhbnl3YXksCiAgICAgIHZpYSBmYWxsaW5nIGludG8gdGhlIG5leHQgY2FzZS4KCiAgICAgIEVsc2UgKHRoZSBhcmd0dXBsZSBpcyBub3QgZW1wdHksIGl0J3Mgbm90IGFuIG9sZC1zdHlsZSBjbGFzcyBvYmplY3QsCiAgICAgIG9yIHRoZSBjbGFzcyBvYmplY3QgZG9lcyBoYXZlIGEgX19nZXRpbml0YXJnc19fIGF0dHJpYnV0ZSksIHRoZSBjb2RlCiAgICAgIGZpcnN0IGluc2lzdHMgdGhhdCB0aGUgY2xhc3Mgb2JqZWN0IGhhdmUgYSBfX3NhZmVfZm9yX3VucGlja2xpbmdfXwogICAgICBhdHRyaWJ1dGUuICBVbmxpa2UgYXMgZm9yIHRoZSBfX3NhZmVfZm9yX3VucGlja2xpbmdfXyBjaGVjayBpbiBSRURVQ0UsCiAgICAgIGl0IGRvZXNuJ3QgbWF0dGVyIHdoZXRoZXIgdGhpcyBhdHRyaWJ1dGUgaGFzIGEgdHJ1ZSBvciBmYWxzZSB2YWx1ZSwgaXQKICAgICAgb25seSBtYXR0ZXJzIHdoZXRoZXIgaXQgZXhpc3RzIChYWFggdGhpcyBpcyBhIGJ1ZzsgY1BpY2tsZQogICAgICByZXF1aXJlcyB0aGUgYXR0cmlidXRlIHRvIGJlIHRydWUpLiAgSWYgX19zYWZlX2Zvcl91bnBpY2tsaW5nX18KICAgICAgZG9lc24ndCBleGlzdCwgVW5waWNrbGluZ0Vycm9yIGlzIHJhaXNlZC4KCiAgICAgIEVsc2UgKHRoZSBjbGFzcyBvYmplY3QgZG9lcyBoYXZlIGEgX19zYWZlX2Zvcl91bnBpY2tsaW5nX18gYXR0ciksCiAgICAgIHRoZSBjbGFzcyBvYmplY3Qgb2J0YWluZWQgZnJvbSBJTlNUJ3MgYXJndW1lbnRzIGlzIGFwcGxpZWQgdG8gdGhlCiAgICAgIGFyZ3R1cGxlIG9idGFpbmVkIGZyb20gdGhlIHN0YWNrLCBhbmQgdGhlIHJlc3VsdGluZyBpbnN0YW5jZSBvYmplY3QKICAgICAgaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4KCiAgICAgIE5PVEU6ICBjaGVja3MgZm9yIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fIHdlbnQgYXdheSBpbiBQeXRob24gMi4zLgogICAgICB0AwAAAE9CSnQBAAAAb3PYBAAAQnVpbGQgYSBjbGFzcyBpbnN0YW5jZS4KCiAgICAgIFRoaXMgaXMgdGhlIHByb3RvY29sIDEgdmVyc2lvbiBvZiBwcm90b2NvbCAwJ3MgSU5TVCBvcGNvZGUsIGFuZCBpcwogICAgICB2ZXJ5IG11Y2ggbGlrZSBpdC4gIFRoZSBtYWpvciBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGNsYXNzIG9iamVjdAogICAgICBpcyB0YWtlbiBvZmYgdGhlIHN0YWNrLCBhbGxvd2luZyBpdCB0byBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgbWVtbwogICAgICByZXBlYXRlZGx5IGlmIHNldmVyYWwgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzIGFyZSBjcmVhdGVkLiAgVGhpcwogICAgICBjYW4gYmUgbXVjaCBtb3JlIGVmZmljaWVudCAoaW4gYm90aCB0aW1lIGFuZCBzcGFjZSkgdGhhbiByZXBlYXRlZGx5CiAgICAgIGVtYmVkZGluZyB0aGUgbW9kdWxlIGFuZCBjbGFzcyBuYW1lcyBpbiBJTlNUIG9wY29kZXMuCgogICAgICBVbmxpa2UgSU5TVCwgT0JKIHRha2VzIG5vIGFyZ3VtZW50cyBmcm9tIHRoZSBvcGNvZGUgc3RyZWFtLiAgSW5zdGVhZAogICAgICB0aGUgY2xhc3Mgb2JqZWN0IGlzIHRha2VuIG9mZiB0aGUgc3RhY2ssIGltbWVkaWF0ZWx5IGFib3ZlIHRoZQogICAgICB0b3Btb3N0IG1hcmtvYmplY3Q6CgogICAgICBTdGFjayBiZWZvcmU6IC4uLiBtYXJrb2JqZWN0IGNsYXNzb2JqZWN0IHN0YWNrc2xpY2UKICAgICAgU3RhY2sgYWZ0ZXI6ICAuLi4gbmV3X2luc3RhbmNlX29iamVjdAoKICAgICAgQXMgZm9yIElOU1QsIHRoZSByZW1haW5kZXIgb2YgdGhlIHN0YWNrIGFib3ZlIHRoZSBtYXJrb2JqZWN0IGlzCiAgICAgIGdhdGhlcmVkIGludG8gYW4gYXJndW1lbnQgdHVwbGUsIGFuZCB0aGVuIHRoZSBsb2dpYyBzZWVtcyBpZGVudGljYWwsCiAgICAgIGV4Y2VwdCB0aGF0IG5vIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fIGNoZWNrIGlzIGRvbmUgKFhYWCB0aGlzIGlzCiAgICAgIGEgYnVnOyBjUGlja2xlIGRvZXMgdGVzdCBfX3NhZmVfZm9yX3VucGlja2xpbmdfXykuICBTZWUgSU5TVCBmb3IKICAgICAgdGhlIGdvcnkgZGV0YWlscy4KCiAgICAgIE5PVEU6ICBJbiBQeXRob24gMi4zLCBJTlNUIGFuZCBPQkogYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIGhvdyB0aGV5CiAgICAgIGdldCB0aGUgY2xhc3Mgb2JqZWN0LiAgVGhhdCB3YXMgYWx3YXlzIHRoZSBpbnRlbnQ7IHRoZSBpbXBsZW1lbnRhdGlvbnMKICAgICAgaGFkIGRpdmVyZ2VkIGZvciBhY2NpZGVudGFsIHJlYXNvbnMuCiAgICAgIHQGAAAATkVXT0JKcwEAAACBc0wBAABCdWlsZCBhbiBvYmplY3QgaW5zdGFuY2UuCgogICAgICBUaGUgc3RhY2sgYmVmb3JlIHNob3VsZCBiZSB0aG91Z2h0IG9mIGFzIGNvbnRhaW5pbmcgYSBjbGFzcwogICAgICBvYmplY3QgZm9sbG93ZWQgYnkgYW4gYXJndW1lbnQgdHVwbGUgKHRoZSB0dXBsZSBiZWluZyB0aGUgc3RhY2sKICAgICAgdG9wKS4gIENhbGwgdGhlc2UgY2xzIGFuZCBhcmdzLiAgVGhleSBhcmUgcG9wcGVkIG9mZiB0aGUgc3RhY2ssCiAgICAgIGFuZCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgY2xzLl9fbmV3X18oY2xzLCAqYXJncykgaXMgcHVzaGVkIGJhY2sKICAgICAgb250byB0aGUgc3RhY2suCiAgICAgIHQFAAAAUFJPVE9zAQAAAIBzrgAAAFByb3RvY29sIHZlcnNpb24gaW5kaWNhdG9yLgoKICAgICAgRm9yIHByb3RvY29sIDIgYW5kIGFib3ZlLCBhIHBpY2tsZSBtdXN0IHN0YXJ0IHdpdGggdGhpcyBvcGNvZGUuCiAgICAgIFRoZSBhcmd1bWVudCBpcyB0aGUgcHJvdG9jb2wgdmVyc2lvbiwgYW4gaW50IGluIHJhbmdlKDIsIDI1NikuCiAgICAgIHQEAAAAU1RPUHQBAAAALnPPAAAAU3RvcCB0aGUgdW5waWNrbGluZyBtYWNoaW5lLgoKICAgICAgRXZlcnkgcGlja2xlIGVuZHMgd2l0aCB0aGlzIG9wY29kZS4gIFRoZSBvYmplY3QgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sKICAgICAgaXMgcG9wcGVkLCBhbmQgdGhhdCdzIHRoZSByZXN1bHQgb2YgdW5waWNrbGluZy4gIFRoZSBzdGFjayBzaG91bGQgYmUKICAgICAgZW1wdHkgdGhlbi4KICAgICAgdAYAAABQRVJTSUR0AQAAAFBzGAIAAFB1c2ggYW4gb2JqZWN0IGlkZW50aWZpZWQgYnkgYSBwZXJzaXN0ZW50IElELgoKICAgICAgVGhlIHBpY2tsZSBtb2R1bGUgZG9lc24ndCBkZWZpbmUgd2hhdCBhIHBlcnNpc3RlbnQgSUQgbWVhbnMuICBQRVJTSUQncwogICAgICBhcmd1bWVudCBpcyBhIG5ld2xpbmUtdGVybWluYXRlZCBzdHItc3R5bGUgKG5vIGVtYmVkZGVkIGVzY2FwZXMsIG5vCiAgICAgIGJyYWNrZXRpbmcgcXVvdGUgY2hhcmFjdGVycykgc3RyaW5nLCB3aGljaCAqaXMqICJ0aGUgcGVyc2lzdGVudCBJRCIuCiAgICAgIFRoZSB1bnBpY2tsZXIgcGFzc2VzIHRoaXMgc3RyaW5nIHRvIHNlbGYucGVyc2lzdGVudF9sb2FkKCkuICBXaGF0ZXZlcgogICAgICBvYmplY3QgdGhhdCByZXR1cm5zIGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suICBUaGVyZSBpcyBubyBpbXBsZW1lbnRhdGlvbgogICAgICBvZiBwZXJzaXN0ZW50X2xvYWQoKSBpbiBQeXRob24ncyB1bnBpY2tsZXI6ICBpdCBtdXN0IGJlIHN1cHBsaWVkIGJ5IGFuCiAgICAgIHVucGlja2xlciBzdWJjbGFzcy4KICAgICAgdAkAAABCSU5QRVJTSUR0AQAAAFFzWAEAAFB1c2ggYW4gb2JqZWN0IGlkZW50aWZpZWQgYnkgYSBwZXJzaXN0ZW50IElELgoKICAgICAgTGlrZSBQRVJTSUQsIGV4Y2VwdCB0aGUgcGVyc2lzdGVudCBJRCBpcyBwb3BwZWQgb2ZmIHRoZSBzdGFjayAoaW5zdGVhZAogICAgICBvZiBiZWluZyBhIHN0cmluZyBlbWJlZGRlZCBpbiB0aGUgb3Bjb2RlIGJ5dGVzdHJlYW0pLiAgVGhlIHBlcnNpc3RlbnQKICAgICAgSUQgaXMgcGFzc2VkIHRvIHNlbGYucGVyc2lzdGVudF9sb2FkKCks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VABXZAIAUygLAAAAc3oDAABHZW5lcmF0ZSBhbGwgdGhlIG9wY29kZXMgaW4gYSBwaWNrbGUuCgogICAgJ3BpY2tsZScgaXMgYSBmaWxlLWxpa2Ugb2JqZWN0LCBvciBzdHJpbmcsIGNvbnRhaW5pbmcgdGhlIHBpY2tsZS4KCiAgICBFYWNoIG9wY29kZSBpbiB0aGUgcGlja2xlIGlzIGdlbmVyYXRlZCwgZnJvbSB0aGUgY3VycmVudCBwaWNrbGUgcG9zaXRpb24sCiAgICBzdG9wcGluZyBhZnRlciBhIFNUT1Agb3Bjb2RlIGlzIGRlbGl2ZXJlZC4gIEEgdHJpcGxlIGlzIGdlbmVyYXRlZCBmb3IKICAgIGVhY2ggb3Bjb2RlOgoKICAgICAgICBvcGNvZGUsIGFyZywgcG9zCgogICAgb3Bjb2RlIGlzIGFuIE9wY29kZUluZm8gcmVjb3JkLCBkZXNjcmliaW5nIHRoZSBjdXJyZW50IG9wY29kZS4KCiAgICBJZiB0aGUgb3Bjb2RlIGhhcyBhbiBhcmd1bWVudCBlbWJlZGRlZCBpbiB0aGUgcGlja2xlLCBhcmcgaXMgaXRzIGRlY29kZWQKICAgIHZhbHVlLCBhcyBhIFB5dGhvbiBvYmplY3QuICBJZiB0aGUgb3Bjb2RlIGRvZXNuJ3QgaGF2ZSBhbiBhcmd1bWVudCwgYXJnCiAgICBpcyBOb25lLgoKICAgIElmIHRoZSBwaWNrbGUgaGFzIGEgdGVsbCgpIG1ldGhvZCwgcG9zIHdhcyB0aGUgdmFsdWUgb2YgcGlja2xlLnRlbGwoKQogICAgYmVmb3JlIHJlYWRpbmcgdGhlIGN1cnJlbnQgb3Bjb2RlLiAgSWYgdGhlIHBpY2tsZSBpcyBhIHN0cmluZyBvYmplY3QsCiAgICBpdCdzIHdyYXBwZWQgaW4gYSBTdHJpbmdJTyBvYmplY3QsIGFuZCB0aGUgbGF0dGVyJ3MgdGVsbCgpIHJlc3VsdCBpcwogICAgdXNlZC4gIEVsc2UgKHRoZSBwaWNrbGUgZG9lc24ndCBoYXZlIGEgdGVsbCgpLCBhbmQgaXQncyBub3Qgb2J2aW91cyBob3cKICAgIHRvIHF1ZXJ5IGl0cyBjdXJyZW50IHBvc2l0aW9uKSBwb3MgaXMgTm9u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cyBtZW1vLiAgSXQKICAgIG1heSBiZSBtdXRhdGVkIGJ5IGRpcygpLCBpZiB0aGUgcGlja2xlIGNvbnRhaW5zIFBVVCBvciBCSU5QVVQgb3Bjb2Rlcy4KICAgIFBhc3NpbmcgdGhlIHNhbWUgbWVtbyBvYmplY3QgdG8gYW5vdGhlciBkaXMoKSBjYWxsIHRoZW4gYWxsb3dzIGRpc2Fzc2VtYmx5CiAgICB0byBwcm9jZWVkIGFjcm9zcyBtdWx0aXBsZSBwaWNrbGVzIHRoYXQgd2VyZSBhbGwgY3JlYXRlZCBieSB0aGUgc2FtZQogICAgcGlja2xlciB3aXRoIHRoZSBzYW1lIG1lbW8uICBPcmRpbmFyaWx5IHlvdSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoaXMuCgogICAgT3B0aW9uYWwgYXJnIGluZGVudGxldmVsIGlzIHRoZSBudW1iZXIgb2YgYmxhbmtzIGJ5IHdoaWNoIHRvIGluZGVudAogICAgYSBuZXcgTUFSSyBsZXZlbC4gIEl0IGRlZmF1bHRzIHRvIDQuCgogICAgSW4gYWRkaXRpb24gdG8gcHJpbnRpbmcgdGhlIGRpc2Fzc2VtYmx5LCBzb21lIHNhbml0eSBjaGVja3MgYXJlIG1hZGU6CgogICAgKyBBbGwgZW1iZWRkZWQgb3Bjb2RlIGFyZ3VtZW50cyAibWFrZSBzZW5zZSIuCgogICAgKyBFeHBsaWNpdCBhbmQgaW1wbGljaXQgcG9wIG9wZXJhdGlvbnMgaGF2ZSBlbm91Z2ggaXRlbXMgb24gdGhlIHN0YWNrLgoKICAgICsgV2hlbiBhbiBvcGNvZGUgaW1wbGljaXRseSByZWZlcnMgdG8gYSBtYXJrb2JqZWN0LCBhIG1hcmtvYmplY3QgaXMKICAgICAgYWN0dWFsbHkgb24gdGhlIHN0YWNrLgoKICAgICsgQSBtZW1vIGVudHJ5IGlzbid0IHJlZmVyZW5jZWQgYmVmb3JlIGl0J3MgZGVmaW5lZC4KCiAgICArIFRoZSBtYXJrb2JqZWN0IGlzbid0IHN0b3JlZCBpbiB0aGUgbWVtby4KCiAgICArIEEgbWVtbyBlbnRyeSBpc24ndCByZWRlZmluZWQuCiAgICBp/////3QBAAAAIHMEAAAAJTVkOnMJAAAAJS00cyAlcyVzaQEAAABSkQAAAHMfAAAAKE1BUksgYXQgdW5rbm93biBvcGNvZGUgb2Zmc2V0KXMMAAAAKE1BUksgYXQgJWQpaQAAAABzFwAAAG5vIE1BUksgZXhpc3RzIG9uIHN0YWNrUp8AAABSoQAAAFKiAAAAcxsAAABtZW1vIGtleSAlciBhbHJlYWR5IGRlZmluZWRzJwAAAHN0YWNrIGlzIGVtcHR5IC0tIGNhbid0IHN0b3JlIGludG8gbWVtb3MiAAAAY2FuJ3Qgc3RvcmUgbWFya29iamVjdCBpbiB0aGUgbWVtb1KZAAAAUpsAAABSnQAAAHMmAAAAbWVtbyBrZXkgJXIgaGFzIG5ldmVyIGJlZW4gc3RvcmVkIGludG9pCgAAAHMzAAAAdHJpZXMgdG8gcG9wICVkIGl0ZW1zIGZyb20gc3RhY2sgd2l0aCBvbmx5ICVkIGl0ZW1zcyAAAABoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPXMeAAAAc3RhY2sgbm90IGVtcHR5IGFmdGVyIFNUT1A6ICVyTigDAAAAcwMAAABQVVRSoQAAAFKiAAAAKAMAAABzAwAAAEdFVFKbAAAAUp0AAAAoEAAAAFJRAAAAUgEAAAB0BAAAAHJlcHJSWAAAAFIVAAAAUgQAAAB0AwAAAG1heFJcAAAAUloAAABSWwAAAHQKAAAAbWFya29iamVjdHQDAAAAcG9wdAUAAABpbmRleFIQAAAAUsEAAAB0BgAAAGV4dGVuZCgSAAAAUrkAAAB0AwAAAG91dHQEAAAAbWVtb3QLAAAAaW5kZW50bGV2ZWx0BQAAAHN0YWNrdAgAAABtYXhwcm90b3QJAAAAbWFya3N0YWNrdAsAAABpbmRlbnRjaHVua3QIAAAAZXJyb3Jtc2dS0AAAAFJZAAAAUs8AAAB0BAAAAGxpbmV0BgAAAGJlZm9yZXQFAAAAYWZ0ZXJ0CAAAAG51bXRvcG9wdAcAAABtYXJrbXNndAcAAABtYXJrcG9zKAAAAAAoAAAAAHN2AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9waWNrbGV0b29scy5weVIAAAAAYwcAAHOEAAAAACcGAQwBCQEGAQYBCgEGARwBDAERAhYBDQENAhIBCQEJAQwDBgEbAQYBEAUGAQwBDAEJAgoCEwEOAQoCAwETAQ0CDQINAw8CDAENAQYBCQEQAQkCEQIPAQwCEAINAhICGwEMARcBBgEUAQoCBgMPAxIBBgEZAQYBCwEMAhACEQIQAQYBdAgAAABfRXhhbXBsZWMAAAAAAAAAAAEAAABCAAAAcxEAAABlAABaAQBkAACEAABaAgBSUygBAAAAYwIAAAACAAAAAgAAAEMAAABzDQAAAHwBAHwAAF8AAGQAAFMoAQAAAE4oAQAAAHQFAAAAdmFsdWUoAgAAAFIIAAAAUu8AAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5UgkAAADtBwAAcwIAAAAAASgDAAAAUgoAAABSCwAAAFIJAAAAKAAAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5Uu4AAADsBwAAcwIAAAAGAXONEwAACj4+PiBpbXBvcnQgcGlja2xlCj4+PiB4ID0gWzEsIDIsICgzLCA0KSwgeydhYmMnOiB1ImRlZiJ9XQo+Pj4gcGtsID0gcGlja2xlLmR1bXBzKHgsIDApCj4+PiBkaXMocGtsKQogICAgMDogKCAgICBNQVJLCiAgICAxOiBsICAgICAgICBMSVNUICAgICAgIChNQVJLIGF0IDApCiAgICAyOiBwICAgIFBVVCAgICAgICAgMAogICAgNTogSSAgICBJTlQgICAgICAgIDEKICAgIDg6IGEgICAgQVBQRU5ECiAgICA5OiBJICAgIElOVCAgICAgICAgMgogICAxMjogYSAgICBBUFBFTkQKICAgMTM6ICggICAgTUFSSwogICAxNDogSSAgICAgICAgSU5UICAgICAgICAzCiAgIDE3OiBJICAgICAgICBJTlQgICAgICAgIDQKICAgMjA6IHQgICAgICAgIFRVUExFICAgICAgKE1BUksgYXQgMTMpCiAgIDIxOiBwICAgIFBVVCAgICAgICAgMQogICAyNDogYSAgICBBUFBFTkQKICAgMjU6ICggICAgTUFSSwogICAyNjogZCAgICAgICAgRElDVCAgICAgICAoTUFSSyBhdCAyNSkKICAgMjc6IHAgICAgUFVUICAgICAgICAyCiAgIDMwOiBTICAgIFNUUklORyAgICAgJ2FiYycKICAgMzc6IHAgICAgUFVUICAgICAgICAzCiAgIDQwOiBWICAgIFVOSUNPREUgICAgdSdkZWYnCiAgIDQ1OiBwICAgIFBVVCAgICAgICAgNAogICA0ODogcyAgICBTRVRJVEVNCiAgIDQ5OiBhICAgIEFQUEVORAogICA1MDogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDAKClRyeSBhZ2FpbiB3aXRoIGEgImJpbmFyeSIgcGlja2xlLgoKPj4+IHBrbCA9IHBpY2tsZS5kdW1wcyh4LCAxKQo+Pj4gZGlzKHBrbCkKICAgIDA6IF0gICAgRU1QVFlfTElTVAogICAgMTogcSAgICBCSU5QVVQgICAgIDAKICAgIDM6ICggICAgTUFSSwogICAgNDogSyAgICAgICAgQklOSU5UMSAgICAxCiAgICA2OiBLICAgICAgICBCSU5JTlQxICAgIDIKICAgIDg6ICggICAgICAgIE1BUksKICAgIDk6IEsgICAgICAgICAgICBCSU5JTlQxICAgIDMKICAgMTE6IEsgICAgICAgICAgICBCSU5JTlQxICAgIDQKICAgMTM6IHQgICAgICAgICAgICBUVVBMRSAgICAgIChNQVJLIGF0IDgpCiAgIDE0OiBxICAgICAgICBCSU5QVVQgICAgIDEKICAgMTY6IH0gICAgICAgIEVNUFRZX0RJQ1QKICAgMTc6IHEgICAgICAgIEJJTlBVVCAgICAgMgogICAxOTogVSAgICAgICAgU0hPUlRfQklOU1RSSU5HICdhYmMnCiAgIDI0OiBxICAgICAgICBCSU5QVVQgICAgIDMKICAgMjY6IFggICAgICAgIEJJTlVOSUNPREUgdSdkZWYnCiAgIDM0OiBxICAgICAgICBCSU5QVVQgICAgIDQKICAgMzY6IHMgICAgICAgIFNFVElURU0KICAgMzc6IGUgICAgICAgIEFQUEVORFMgICAgKE1BUksgYXQgMykKICAgMzg6IC4gICAgU1RPUApoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAxCgpFeGVyY2lzZSB0aGUgSU5TVC9PQkovQlVJTEQgZmFtaWx5LgoKPj4+IGltcG9ydCBwaWNrbGV0b29scwo+Pj4gZGlzKHBpY2tsZS5kdW1wcyhwaWNrbGV0b29scy5kaXMsIDApKQogICAgMDogYyAgICBHTE9CQUwgICAgICdwaWNrbGV0b29scyBkaXMnCiAgIDE3OiBwICAgIFBVVCAgICAgICAgMAogICAyMDogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDAKCj4+PiBmcm9tIHBpY2tsZXRvb2xzIGltcG9ydCBfRXhhbXBsZQo+Pj4geCA9IFtfRXhhbXBsZSg0MildICogMgo+Pj4gZGlzKHBpY2tsZS5kdW1wcyh4LCAwKSkKICAgIDA6ICggICAgTUFSSwogICAgMTogbCAgICAgICAgTElTVCAgICAgICAoTUFSSyBhdCAwKQogICAgMjogcCAgICBQVVQgICAgICAgIDAKICAgIDU6ICggICAgTUFSSwogICAgNjogaSAgICAgICAgSU5TVCAgICAgICAncGlja2xldG9vbHMgX0V4YW1wbGUnIChNQVJLIGF0IDUpCiAgIDI4OiBwICAgIFBVVCAgICAgICAgMQogICAzMTogKCAgICBNQVJLCiAgIDMyOiBkICAgICAgICBESUNUICAgICAgIChNQVJLIGF0IDMxKQogICAzMzogcCAgICBQVVQgICAgICAgIDIKICAgMzY6IFMgICAgU1RSSU5HICAgICAndmFsdWUnCiAgIDQ1OiBwICAgIFBVVCAgICAgICAgMwogICA0ODogSSAgICBJTlQgICAgICAgIDQyCiAgIDUyOiBzICAgIFNFVElURU0KICAgNTM6IGIgICAgQlVJTEQKICAgNTQ6IGEgICAgQVBQRU5ECiAgIDU1OiBnICAgIEdFVCAgICAgICAgMQogICA1ODogYSAgICBBUFBFTkQKICAgNTk6IC4gICAgU1RPUApoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAwCgo+Pj4gZGlzKHBpY2tsZS5kdW1wcyh4LCAxKSkKICAgIDA6IF0gICAgRU1QVFlfTElTVAogICAgMTogcSAgICBCSU5QVVQgICAgIDAKICAgIDM6ICggICAgTUFSSwogICAgNDogKCAgICAgICAgTUFSSwogICAgNTogYyAgICAgICAgICAgIEdMT0JBTCAgICAgJ3BpY2tsZXRvb2xzIF9FeGFtcGxlJwogICAyNzogcSAgICAgICAgICAgIEJJTlBVVCAgICAgMQogICAyOTogbyAgICAgICAgICAgIE9CSiAgICAgICAgKE1BUksgYXQgNCkKICAgMzA6IHEgICAgICAgIEJJTlBVVCAgICAgMgogICAzMjogfSAgICAgICAgRU1QVFlfRElDVAogICAzMzogcSAgICAgICAgQklOUFVUICAgICAzCiAgIDM1OiBVICAgICAgICBTSE9SVF9CSU5TVFJJTkcgJ3ZhbHVlJwogICA0MjogcSAgICAgICAgQklOUFVUICAgICA0CiAgIDQ0OiBLICAgICAgICBCSU5JTlQxICAgIDQyCiAgIDQ2OiBzICAgICAgICBTRVRJVEVNCiAgIDQ3OiBiICAgICAgICBCVUlMRAogICA0ODogaCAgICAgICAgQklOR0VUICAgICAyCiAgIDUwOiBlICAgICAgICBBUFBFTkRTICAgIChNQVJLIGF0IDMpCiAgIDUxOiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMQoKVHJ5ICJ0aGUgY2Fub25pY2FsIiByZWN1cnNpdmUtb2JqZWN0IHRlc3QuCgo+Pj4gTCA9IFtdCj4+PiBUID0gTCwKPj4+IEwuYXBwZW5kKFQpCj4+PiBMWzBdIGlzIFQKVHJ1ZQo+Pj4gVFswXSBpcyBMClRydWUKPj4+IExbMF1bMF0gaXMgTApUcnVlCj4+PiBUWzBdWzBdIGlzIFQKVHJ1ZQo+Pj4gZGlzKHBpY2tsZS5kdW1wcyhMLCAwKSkKICAgIDA6ICggICAgTUFSSwogICAgMTogbCAgICAgICAgTElTVCAgICAgICAoTUFSSyBhdCAwKQogICAgMjogcCAgICBQVVQgICAgICAgIDAKICAgIDU6ICggICAgTUFSSwogICAgNjogZyAgICAgICAgR0VUICAgICAgICAwCiAgICA5OiB0ICAgICAgICBUVVBMRSAgICAgIChNQVJLIGF0IDUpCiAgIDEwOiBwICAgIFBVVCAgICAgICAgMQogICAxMzogYSAgICBBUFBFTkQKICAgMTQ6IC4gICAgU1RPUApoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAwCgo+Pj4gZGlzKHBpY2tsZS5kdW1wcyhMLCAxKSkKICAgIDA6IF0gICAgRU1QVFlfTElTVAogICAgMTogcSAgICBCSU5QVVQgICAgIDAKICAgIDM6ICggICAgTUFSSwogICAgNDogaCAgICAgICAgQklOR0VUICAgICAwCiAgICA2OiB0ICAgICAgICBUVVBMRSAgICAgIChNQVJLIGF0IDMpCiAgICA3OiBxICAgIEJJTlBVVCAgICAgMQogICAgOTogYSAgICBBUFBFTkQKICAgMTA6IC4gICAgU1RPUApoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAxCgpOb3RlIHRoYXQsIGluIHRoZSBwcm90b2NvbCAwIHBpY2tsZSBvZiB0aGUgcmVjdXJzaXZlIHR1cGxlLCB0aGUgZGlzYXNzZW1ibGVyCmhhcyB0byBlbXVsYXRlIHRoZSBzdGFjayBpbiBvcmRlciB0byByZWFsaXplIHRoYXQgdGhlIFBPUCBvcGNvZGUgYXQgMTYgZ2V0cwpyaWQgb2YgdGhlIE1BUksgYXQgMC4KCj4+PiBkaXMocGlja2xlLmR1bXBzKFQsIDApKQogICAgMDogKCAgICBNQVJLCiAgICAxOiAoICAgICAgICBNQVJLCiAgICAyOiBsICAgICAgICAgICAgTElTVCAgICAgICAoTUFSSyBhdCAxKQogICAgMzogcCAgICAgICAgUFVUICAgICAgICAwCiAgICA2OiAoICAgICAgICBNQVJLCiAgICA3OiBnICAgICAgICAgICAgR0VUICAgICAgICAwCiAgIDEwOiB0ICAgICAgICAgICAgVFVQTEUgICAgICAoTUFSSyBhdCA2KQogICAxMTogcCAgICAgICAgUFVUICAgICAgICAxCiAgIDE0OiBhICAgICAgICBBUFBFTkQKICAgMTU6IDAgICAgICAgIFBPUAogICAxNjogMCAgICAgICAgUE9QICAgICAgICAoTUFSSyBhdCAwKQogICAxNzogZyAgICBHRVQgICAgICAgIDEKICAgMjA6IC4gICAgU1RPUApoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAwCgo+Pj4gZGlzKHBpY2tsZS5kdW1wcyhULCAxKSkKICAgIDA6ICggICAgTUFSSwogICAgMTogXSAgICAgICAgRU1QVFlfTElTVAogICAgMjogcSAgICAgICAgQklOUFVUICAgICAwCiAgICA0OiAoICAgICAgICBNQVJLCiAgICA1OiBoICAgICAgICAgICAgQklOR0VUICAgICAwCiAgICA3OiB0ICAgICAgICAgICAgVFVQTEUgICAgICAoTUFSSyBhdCA0KQogICAgODogcSAgICAgICAgQklOUFVUICAgICAxCiAgIDEwOiBhICAgICAgICBBUFBFTkQKICAgMTE6IDEgICAgICAgIFBPUF9NQVJLICAgKE1BUksgYXQgMCkKICAgMTI6IGggICAgQklOR0VUICAgICAxCiAgIDE0OiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMQoKVHJ5IHByb3RvY29sIDIuCgo+Pj4gZGlzKHBpY2tsZS5kdW1wcyhMLCAyKSkKICAgIDA6IFx4ODAgUFJPVE8gICAgICAyCiAgICAyOiBdICAgIEVNUFRZX0xJU1QKICAgIDM6IHEgICAgQklOUFVUICAgICAwCiAgICA1OiBoICAgIEJJTkdFVCAgICAgMAogICAgNzogXHg4NSBUVVBMRTEKICAgIDg6IHEgICAgQklOUFVUICAgICAxCiAgIDEwOiBhICAgIEFQUEVORAogICAxMTogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDIKCj4+PiBkaXMocGlja2xlLmR1bXBzKFQsIDIpKQogICAgMDogXHg4MCBQUk9UTyAgICAgIDIK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dHQKAAAAX21lbW9fdGVzdHQIAAAAX190ZXN0X19S9AAAAFIKAAAAKAAAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dAgAAAA8bW9kdWxlPgsAAABzaAQAAAYCD5EGBAYBBgIWIhACCQwGAQYBBgEGAQkDCQ4GAQYBBgEGAQkDCQ4GAQYBBgEGAQkDDzEGAQYBBgEGBQkCCQMGAQYBBgEGBgkCCQkGAQYBBgEGCAkCCRYGAQYBBgEGBgkDCREGAQYBBgEGBgkDCQ4GAQYBBgEGBgkCCRsGAQYBBgEGBwkDCR0JGAYBBgEGAQYICQIGAQYBBgEGBQkDCQkGAQYBBgEGCAkCCRAGAQYBBgEGDQkEEAIJFQYBBgEGAQYGCQIJFwYBBgEGAQYICQkWHgYBBgEGAQkCBgEGAQYBCQIGAQYBDwEJAwYBBgEJAQkCBgEGAQYBCQIGAQYBBgEJAgYBBgEGAQkCBgEGAQwBCQIGAQYBBgEJAgYBBgEGAQkCBgEGAQYBCQIGAQYBBgEJAgYBBgEGCgkCBgEGAQYOCQUWOwYFDAEGAQYBBgEJAQYSBgIMAQYBBgEGAQkBBgcGAgwBBgEGAQYBCQEGBQYCDAEGAQYBBgEJAQYGBgIMAQYBBgEGAQkBBgsGAgwBBgEGAQYBCQEGBAYCDAEGAQYBBgEJAQYEBgQMAQYBBgEGAQkBBgYGAgwBBgEGAQYBCQEGBgYCDAEGAQYBBgEJAQYGBgQMAQYBBgEGAQkBBgEGBQwBBgEGAQYBCQEGAwYCDAEGAQYBBgEJAQYDBgQMAQYBBgEGAQkBBgYGAgwBBgEGAQYBCQEGBgYEDAEGAQYBBgEJAQYNBgIMAQYBBgEGAQkBBgkGBAwBBgEGAQYBCQEGAQYCDAEGAQYBDAEJAQYHBgIMAQYBBgEPAQkBBgcGAgwBBgEGAQwBCQEGCQYEDAEGAQYBBgEJAQYBBgIMAQYBBgEMAQkBBgkGAgwBBgEGAQkBCQEGCAYCDAEGAQYBDAEJAQYIBgIMAQYBBgEPAQkBBggGBAwBBgEGAQYBCQEGAQYCDAEGAQYBDAEJAQYKBgIMAQYBBgEPAQkBBgcGAgwBBgEGAQ8BCQEGDgYEDAEGAQYBCQEGAQYBBgIMAQYBBgEJAQwBBgEGAgwBBgEGAQYBCQEGBgYCDAEGAQYBDAEGAQYGBgUMAQYBBgEGAQkBBgYGAgwBBgEGAQYBCQEGBQYCDAEGAQYBBgEJAQYFBgIMAQYBBgEGAQYBBgYGAgwBBgEGAQYBBgEGBQYCDAEGAQYBBgEGAQYFBgUMAQYBBgEGAQkBBg8GAgwBBgEGAQYBCQEGBAYCDAEGAQYBBgEJAQYEBgUMAQYBBgEGAQkBBggGBwwBBgEGAQwBCQEGFgYCDAEGAQYBDAEJAQYZBgIMAQYBBgEMAQkBBjEGAgwBBgEGAQ8BCQEGGgYCDAEGAQYBDAEJAQYIBgQMAQYBBgEGAQYBBgUGAgwBBgEGAQkBBgEGBgYEDAEGAQYBBgEJAQYKBgIMAQYBBgEJAQkBBgcMAgMDBgEGAhkBDwEGASABDwEGASACDQERAgwHBgENAREBAwIMJgcBAwUJOQkbEokTzwYcBgIKAQoDCQQMAQ==