IiBWaW0gc3ludGF4IGZpbGUKIiBMYW5ndWFnZToJRm9ydHJhbiAyMDA4IChhbmQgb2xkZXI6IEZvcnRyYW4gMjAwMywgOTUsIDkwLCBhbmQgNzcpCiIgVmVyc2lvbjoJMC45OAoiIExhc3QgQ2hhbmdlOgkyMDE2IEF1Zy4gMjkKIiBNYWludGFpbmVyOglBaml0IEouIFRoYWtrYXIgPGFqaXRAdW5iLmNhPjsgPGh0dHA6Ly93d3cyLnVuYi5jYS9+YWppdC8+CiIgVXNhZ2U6CUZvciBpbnN0cnVjdGlvbnMsIGRvIDpoZWxwIGZvcnRyYW4tc3ludGF4IGZyb20gVmltCiIgQ3JlZGl0czoKIiAgVmVyc2lvbiAwLjEgKEFwcmlsIDIwMDApIHdhcyBiYXNlZCBvbiB0aGUgZm9ydHJhbiA3NyBzeW50YXggZmlsZSBieSBNYXJpbyBFdXNlYmlvIGFuZAoiICBQcmViZW4gR3VsZGJlcmcuIFNpbmNlIHRoZW4sIHVzZWZ1bCBzdWdnZXN0aW9ucyBhbmQgY29udHJpYnV0aW9ucyBoYXZlIGJlZW4gbWFkZSwKIiAgaW4gY2hyb25vbG9naWNhbCBvcmRlciwgYnk6CiIgIEFuZHJlaiBQYW5qa292LCBCcmFtIE1vb2xlbmFhciwgVGhvbWFzIE9sc2VuLCBNaWNoYWVsIFN0ZXJuYmVyZywgQ2hyaXN0aWFuIFJlaWxlLAoiICBXYWx0ZXIgRGlldWRvbm7pLCBBbGV4YW5kZXIgV2FnbmVyLCBSb21hbiBCZXJ0bGUsIENoYXJsZXMgUmVuZGxlbWFuLAoiICBBbmRyZXcgR3JpZmZpdGhzLCBKb2UgS3JhaG4sIEhlbmRyaWsgTWVyeCwgTWF0dCBUaG9tcHNvbiwgSmFuIEhlcm1hbm4sCiIgIFN0ZWZhbm8gWmFnaGkgYW5kIFZpc2hudSBWLiBLcmlzaG5hbi4KCmlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCiAgZmluaXNoCmVuZGlmCgpsZXQgczpjcG9fc2F2ZSA9ICZjcG8Kc2V0IGNwbyZ2aW0KCiIgQ2hvb3NlIGZvcnRyYW5fZGlhbGVjdCB1c2luZyB0aGUgcHJpb3JpdHk6CiIgc291cmNlIGZpbGUgZGlyZWN0aXZlID4gYnVmZmVyLWxvY2FsIHZhbHVlID4gZ2xvYmFsIHZhbHVlID4gZmlsZSBleHRlbnNpb24KIiBmaXJzdCB0cnkgdXNpbmcgZGlyZWN0aXZlIGluIGZpcnN0IHRocmVlIGxpbmVzIG9mIGZpbGUKbGV0IGI6Zm9ydHJhbl9yZXR5cGUgPSBnZXRsaW5lKDEpLiIgIi5nZXRsaW5lKDIpLiIgIi5nZXRsaW5lKDMpCmlmIGI6Zm9ydHJhbl9yZXR5cGUgPX4/ICdcPGZvcnRyYW5fZGlhbGVjdFxzKj1ccypGXD4nCiAgbGV0IGI6Zm9ydHJhbl9kaWFsZWN0ID0gIkYiCmVsc2VpZiBiOmZvcnRyYW5fcmV0eXBlID1+PyAnXDxmb3J0cmFuX2RpYWxlY3Rccyo9XHMqZjA4XD4nCiAgbGV0IGI6Zm9ydHJhbl9kaWFsZWN0ID0gImYwOCIKZWxzZWlmICFleGlzdHMoImI6Zm9ydHJhbl9kaWFsZWN0IikKICBpZiBleGlzdHMoImc6Zm9ydHJhbl9kaWFsZWN0IikgJiYgZzpmb3J0cmFuX2RpYWxlY3QgPX4jICdcPEZcfGYwOFw+JwogICAgIiB0cnkgZ2xvYmFsIHZhcmlhYmxlCiAgICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSBnOmZvcnRyYW5fZGlhbGVjdAogIGVsc2UgICAgICAgICAiIG5vdGhpbmcgZm91bmQsIHNvIHVzZSBkZWZhdWx0CiAgICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSAiZjA4IgogIGVuZGlmCmVuZGlmCnVubGV0ISBiOmZvcnRyYW5fcmV0eXBlCiIgbWFrZSBzdXJlIGJ1ZmZlci1sb2NhbCB2YWx1ZSBpcyBub3QgaW52YWxpZAppZiBiOmZvcnRyYW5fZGlhbGVjdCAhfiMgJ1w8Rlx8ZjA4XD4nCiAgbGV0IGI6Zm9ydHJhbl9kaWFsZWN0ID0gImYwOCIKZW5kaWYKCiIgQ2hvb3NlIGJldHdlZW4gZml4ZWQgYW5kIGZyZWUgc291cmNlIGZvcm0gaWYgdGhpcyBoYXNuJ3QgYmVlbiBkb25lIHlldAppZiAhZXhpc3RzKCJiOmZvcnRyYW5fZml4ZWRfc291cmNlIikKICBpZiBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiRiIKICAgICIgRiByZXF1aXJlcyBmcmVlIHNvdXJjZSBmb3JtCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDAKICBlbHNlaWYgZXhpc3RzKCJmb3J0cmFuX2ZyZWVfc291cmNlIikKICAgICIgVXNlciBndWFyYW50ZWVzIGZyZWUgc291cmNlIGZvcm0gZm9yIGFsbCBmb3J0cmFuIGZpbGVzCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDAKICBlbHNlaWYgZXhpc3RzKCJmb3J0cmFuX2ZpeGVkX3NvdXJjZSIpCiAgICAiIFVzZXIgZ3VhcmFudGVlcyBmaXhlZCBzb3VyY2UgZm9ybSBmb3IgYWxsIGZvcnRyYW4gZmlsZXMKICAgIGxldCBiOmZvcnRyYW5fZml4ZWRfc291cmNlID0gMQogIGVsc2VpZiBleHBhbmQoIiU6ZSIpID09PyAiZlw8OTBcfDk1XHwwM1x8MDhcPiIKICAgICIgRnJlZS1mb3JtIGZpbGUgZXh0ZW5zaW9uIGRlZmF1bHRzIGFzIGluIEludGVsIGlmb3J0LCBnY2MoZ2ZvcnRyYW4pLCBOQUcsIFBhdGhzY2FsZSwgYW5kIENyYXkgY29tcGlsZXJzCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDAKICBlbHNlaWYgZXhwYW5kKCIlOmUiKSA9PT8gImZcfGY3N1x8Zm9yIgogICAgIiBGaXhlZC1mb3JtIGZpbGUgZXh0ZW5zaW9uIGRlZmF1bHRzCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDEKICBlbHNlCiAgICAiIE1vZGVybiBmb3J0cmFuIHN0aWxsIGFsbG93cyBib3RoIGZyZWUgYW5kIGZpeGVkIHNvdXJjZSBmb3JtLgogICAgIiBBc3N1bWUgZml4ZWQgc291cmNlIGZvcm0gdW5sZXNzIHNpZ25zIG9mIGZyZWUgc291cmNlIGZvcm0KICAgICIgYXJlIGRldGVjdGVkIGluIHRoZSBmaXJzdCBmaXZlIGNvbHVtbnMgb2YgdGhlIGZpcnN0IHM6bG1heCBsaW5lcy4KICAgICIgRGV0ZWN0aW9uIGJlY29tZXMgbW9yZSBhY2N1cmF0ZSBhbmQgdGltZS1jb25zdW1pbmcgaWYgbW9yZSBsaW5lcwogICAgIiBhcmUgY2hlY2tlZC4gSW5jcmVhc2UgdGhlIGxpbWl0IGJlbG93IGlmIHlvdSBrZWVwIGxvdHMgb2YgY29tbWVudHMgYXQKICAgICIgdGhlIHZlcnkgdG9wIG9mIGVhY2ggZmlsZSBhbmQgeW91IGhhdmUgYSBmYXN0IGNvbXB1dGVyLgogICAgbGV0IHM6bG1heCA9IDUwMAogICAgaWYgKCBzOmxtYXggPiBsaW5lKCIkIikgKQogICAgICBsZXQgczpsbWF4ID0gbGluZSgiJCIpCiAgICBlbmRpZgogICAgbGV0IGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPSAxCiAgICBsZXQgczpsbj0xCiAgICB3aGlsZSBzOmxuIDw9IHM6bG1heAogICAgICBsZXQgczp0ZXN0ID0gc3RycGFydChnZXRsaW5lKHM6bG4pLDAsNSkKICAgICAgaWYgczp0ZXN0ICF+ICdeW0NjKl0nICYmIHM6dGVzdCAhfiAnXiAqWyEjXScgJiYgczp0ZXN0ID1+ICdbXiAwLTlcdF0nICYmIHM6dGVzdCAhfiAnXlsgMC05XSpcdCcKICAgICAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDAKICAgICAgICBicmVhawogICAgICBlbmRpZgogICAgICBsZXQgczpsbiA9IHM6bG4gKyAxCiAgICBlbmR3aGlsZQogICAgdW5sZXQhIHM6bG1heCBzOmxuIHM6dGVzdAogIGVuZGlmCmVuZGlmCgpzeW4gY2FzZSBpZ25vcmUKCmlmIGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMQogIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZQkiXlxzXHs2LH1cenNcYVx3Klx6ZVxzKjoiCmVsc2UKICBzeW4gbWF0Y2ggZm9ydHJhbkNvbnN0cnVjdE5hbWUJIl5ccypcenNcYVx3Klx6ZVxzKjoiCmVuZGlmCmlmIGV4aXN0cygiZm9ydHJhbl9tb3JlX3ByZWNpc2UiKQogIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZSAiXChcPGVuZFxzKmRvXHNcK1wpXEA8PVxhXHcqIgogIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZSAiXChcPGVuZFxzKmlmXHNcK1wpXEA8PVxhXHcqIgogIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZSAiXChcPGVuZFxzKnNlbGVjdFxzXCtcKVxAPD1cYVx3KiIKZW5kaWYKCnN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlcgkiXDxlbmRcPiIKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxjaGFyYWN0ZXJcPiIKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxjb21wbGV4XD4iCnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIlw8aW50ZWdlclw+IgpzeW4ga2V5d29yZCBmb3J0cmFuVHlwZQkJaW50cmluc2ljCnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIlw8aW1wbGljaXRcPiIKc3luIGtleXdvcmQgZm9ydHJhblN0cnVjdHVyZQlkaW1lbnNpb24Kc3luIGtleXdvcmQgZm9ydHJhblN0b3JhZ2VDbGFzcwlwYXJhbWV0ZXIgc2F2ZQpzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8c3Vicm91dGluZVw+IgpzeW4ga2V5d29yZCBmb3J0cmFuQ2FsbAkJY2FsbApzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8ZnVuY3Rpb25cPiIKc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyCSJcPHByb2dyYW1cPiIKc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGJsb2NrXD4iCnN5biBrZXl3b3JkIGZvcnRyYW5LZXl3b3JkCXJldHVybiBzdG9wCnN5biBrZXl3b3JkIGZvcnRyYW5Db25kaXRpb25hbAllbHNlIHRoZW4Kc3luIG1hdGNoIGZvcnRyYW5Db25kaXRpb25hbAkiXDxpZlw+IgpzeW4gbWF0Y2ggZm9ydHJhbkNvbmRpdGlvbmFsT2IJIlw8aWZccyooLiopXHMqXGRcK1xzKixccypcZFwrXHMqLFxzKlxkXCtccyokIgpzeW4gbWF0Y2ggZm9ydHJhblJlcGVhdAkJIlw8ZG9cPiIKCnN5biBrZXl3b3JkIGZvcnRyYW5Ub2RvCQljb250YWluZWQgdG9kbyBmaXhtZQoKIkNhdGNoIGVycm9ycyBjYXVzZWQgYnkgdG9vIG1hbnkgcmlnaHQgcGFyZW50aGVzZXMKc3luIHJlZ2lvbiBmb3J0cmFuUGFyZW4gdHJhbnNwYXJlbnQgc3RhcnQ9IigiIGVuZD0iKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5QYXJlbkVycm9yLEBmb3J0cmFuQ29tbWVudEdyb3VwLGNJbmNsdWRlZCxAc3BlbGwKc3luIG1hdGNoICBmb3J0cmFuUGFyZW5FcnJvciAgICIpIgoKc3luIG1hdGNoIGZvcnRyYW5PcGVyYXRvcgkiXC5ccypuXD1lcXZccypcLiIKc3luIG1hdGNoIGZvcnRyYW5PcGVyYXRvcgkiXC5ccypcKGFuZFx8b3JcfG5vdFwpXHMqXC4iCnN5biBtYXRjaCBmb3J0cmFuT3BlcmF0b3IJIlwoK1x8LVx8L1x8XCpcKSIKc3luIG1hdGNoIGZvcnRyYW5UeXBlT2IJCSJcPGNoYXJhY3RlclxzKlwqIgoKc3luIG1hdGNoIGZvcnRyYW5Cb29sZWFuCSJcLlxzKlwodHJ1ZVx8ZmFsc2VcKVxzKlwuIgoKc3luIGtleXdvcmQgZm9ydHJhblJlYWRXcml0ZQliYWNrc3BhY2UgY2xvc2UgZW5kZmlsZSBpbnF1aXJlIG9wZW4gcHJpbnQgcmVhZCByZXdpbmQgd3JpdGUKCiJJZiB0YWJzIGFyZSBhbGxvd2VkIHRoZW4gdGhlIGxlZnQgbWFyZ2luIGNoZWNrcyBkbyBub3Qgd29yawppZiBleGlzdHMoImZvcnRyYW5faGF2ZV90YWJzIikKICBzeW4gbWF0Y2ggZm9ydHJhblRhYgkJIlx0IiAgdHJhbnNwYXJlbnQKZWxzZQogIHN5biBtYXRjaCBmb3J0cmFuVGFiCQkiXHQiCmVuZGlmCgpzeW4ga2V5d29yZCBmb3J0cmFuSU8JCWFjY2VzcyBibGFuayBkaXJlY3QgZXhpc3QgZmlsZSBmbXQgZm9ybSBmb3JtYXR0ZWQgaW9zdGF0IG5hbWUgbmFtZWQgbmV4dHJlYyBudW1iZXIgb3BlbmVkIHJlYyByZWNsIHNlcXVlbnRpYWwgc3RhdHVzIHVuZm9ybWF0dGVkIHVuaXQKCnN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWNSCQlhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50IGRsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wKCiIgSW50cmluc2ljcyBwcm92aWRlZCBieSBzb21lIHZlbmRvcnMKc3luIGtleXdvcmQgZm9ydHJhbkV4dHJhSW50cmluc2ljCWFsZ2FtYSBjZGFicyBjZGNvcyBjZGV4cCBjZGxvZyBjZHNpbiBjZHNxcnQgY3FhYnMgY3Fjb3MgY3FleHAgY3Fsb2cgY3FzaW4gY3FzcXJ0IGRjbXBseCBkY29uamcgZGVyZiBkZXJmYyBkZmxvYXQgZGdhbW1hIGRpbWFnIGRsZ2FtYSBpcWludCBxYWJzIHFhY29zIHFhc2luIHFhdGFuIHFhdGFuMiBxY21wbHggcWNvbmpnIHFjb3MgcWNvc2ggcWRpbSBxZXJmIHFlcmZjIHFleHAgcWdhbW1hIHFpbWFnIHFsZ2FtYSBxbG9nIHFsb2cxMCBxbWF4MSBxbWluMSBxbW9kIHFuaW50IHFzaWduIHFzaW4gcXNpbmggcXNxcnQgcXRhbiBxdGFuaAoKc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpYwlhYnMgYWNvcyBhaW1hZyBhaW50IGFuaW50IGFzaW4gYXRhbiBhdGFuMiBjaGFyIGNtcGx4IGNvbmpnIGNvcyBjb3NoIGV4cCBpY2hhciBpbmRleCBpbnQgbG9nIGxvZzEwIG1heCBtaW4gbmludCBzaWduIHNpbiBzaW5oIHNxcnQgdGFuIHRhbmgKc3luIG1hdGNoIGZvcnRyYW5JbnRyaW5zaWMJIlw8bGVuXHMqWygsXSJtZT1zKzMKc3luIG1hdGNoIGZvcnRyYW5JbnRyaW5zaWMJIlw8cmVhbFxzKigibWU9cys0CnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIlw8aW1wbGljaXRcc1wrcmVhbCIKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXlxzKnJlYWxcPiIKc3luIG1hdGNoIGZvcnRyYW5JbnRyaW5zaWMJIlw8bG9naWNhbFxzKigibWU9cys3CnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIlw8aW1wbGljaXRcc1wrbG9naWNhbCIKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXlxzKmxvZ2ljYWxcPiIKCiJOdW1iZXJzIG9mIHZhcmlvdXMgc29ydHMKIiBJbnRlZ2VycwpzeW4gbWF0Y2ggZm9ydHJhbk51bWJlcglkaXNwbGF5ICJcPFxkXCtcKF9cYVx3KlwpXD1cPiIKIiBmbG9hdGluZyBwb2ludCBudW1iZXIsIHdpdGhvdXQgYSBkZWNpbWFsIHBvaW50CnN5biBtYXRjaCBmb3J0cmFuRmxvYXRJbGwJZGlzcGxheQkiXDxcZFwrW2RlcV1bLStdXD1cZFwrXChfXGFcdypcKVw9XD4iCiIgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBzdGFydGluZyB3aXRoIGEgZGVjaW1hbCBwb2ludApzeW4gbWF0Y2ggZm9ydHJhbkZsb2F0SWxsCWRpc3BsYXkJIlwuXGRcK1woW2RlcV1bLStdXD1cZFwrXClcPVwoX1xhXHcqXClcPVw+IgoiIGZsb2F0aW5nIHBvaW50IG51bWJlciwgbm8gZGlnaXRzIGFmdGVyIGRlY2ltYWwKc3luIG1hdGNoIGZvcnRyYW5GbG9hdElsbAlkaXNwbGF5CSJcPFxkXCtcLlwoW2RlcV1bLStdXD1cZFwrXClcPVwoX1xhXHcqXClcPVw+IgoiIGZsb2F0aW5nIHBvaW50IG51bWJlciwgRCBvciBRIGV4cG9uZW50cwpzeW4gbWF0Y2ggZm9ydHJhbkZsb2F0SWxsCWRpc3BsYXkJIlw8XGRcK1wuXGRcK1woW2RxXVstK11cPVxkXCtcKVw9XChfXGFcdypcKVw9XD4iCiIgZmxvYXRpbmcgcG9pbnQgbnVtYmVyCnN5biBtYXRjaCBmb3J0cmFuRmxvYXQJZGlzcGxheQkiXDxcZFwrXC5cZFwrXChlWy0rXVw9XGRcK1wpXD1cKF9cYVx3KlwpXD1cPiIKIiBOdW1iZXJzIGluIGZvcm1hdHMKc3luIG1hdGNoIGZvcnRyYW5Gb3JtYXRTcGVjCWRpc3BsYXkJIlxkKmZcZFwrXC5cZFwrIgpzeW4gbWF0Y2ggZm9ydHJhbkZvcm1hdFNwZWMJZGlzcGxheQkiXGQqZVtzbl1cPVxkXCtcLlxkXCtcKGVcZCtcPlwpXD0iCnN5biBtYXRjaCBmb3J0cmFuRm9ybWF0U3BlYwlkaXNwbGF5CSJcZCpcKGRcfHFcfGdcKVxkXCtcLlxkXCtcKGVcZCtcKVw9IgpzeW4gbWF0Y2ggZm9ydHJhbkZvcm1hdFNwZWMJZGlzcGxheQkiXGRcK3hcPiIKIiBUaGUgbmV4dCBtYXRjaCBjYW5ub3QgYmUgdXNlZCBiZWNhdXNlIGl0IHdvdWxkIHBpY2sgdXAgaWRlbnRpZmllcnMgYXMgd2VsbAoiIHN5biBtYXRjaCBmb3J0cmFuRm9ybWF0U3BlYwlkaXNwbGF5CSJcPFwoYVx8aVwpXGRcKyIKCiIgTnVtYmVycyBhcyBsYWJlbHMKc3luIG1hdGNoIGZvcnRyYW5MYWJlbE51bWJlcglkaXNwbGF5CSJeXGRcezEsNX1ccyJtZT1lLTEKc3luIG1hdGNoIGZvcnRyYW5MYWJlbE51bWJlcglkaXNwbGF5CSJeIFxkXHsxLDR9XHMibXM9cysxLG1lPWUtMQpzeW4gbWF0Y2ggZm9ydHJhbkxhYmVsTnVtYmVyCWRpc3BsYXkJIl4gIFxkXHsxLDN9XHMibXM9cysyLG1lPWUtMQpzeW4gbWF0Y2ggZm9ydHJhbkxhYmVsTnVtYmVyCWRpc3BsYXkJIl4gICBcZFxkXD1ccyJtcz1zKzMsbWU9ZS0xCnN5biBtYXRjaCBmb3J0cmFuTGFiZWxOdW1iZXIJZGlzcGxheQkiXiAgICBcZFxzIm1zPXMrNCxtZT1lLTEKCmlmIGV4aXN0cygiZm9ydHJhbl9tb3JlX3ByZWNpc2UiKQogICIgTnVtYmVycyBhcyB0YXJnZXRzCiAgc3luIG1hdGNoIGZvcnRyYW5UYXJnZXQJZGlzcGxheQkiXChcPGlmXHMqKC5cKylccypcKVxAPD1cKFxkXCtccyosXHMqXClcezJ9XGRcK1w+IgogIHN5biBtYXRjaCBmb3J0cmFuVGFyZ2V0CWRpc3BsYXkJIlwoXDxkb1xzXCtcKVxAPD1cZFwrXD4iCiAgc3luIG1hdGNoIGZvcnRyYW5UYXJnZXQJZGlzcGxheQkiXChcPGdvXHMqdG9ccyooXD1cKVxAPD1cKFxkXCtccyosXHMqXCkqXGRcK1w+IgplbmRpZgoKc3luIGtleXdvcmQgZm9ydHJhblR5cGVSCWV4dGVybmFsCnN5biBrZXl3b3JkIGZvcnRyYW5JT1IJCWZvcm1hdApzeW4gbWF0Y2ggZm9ydHJhbktleXdvcmRSCSJcPGNvbnRpbnVlXD4iCnN5biBtYXRjaCBmb3J0cmFuS2V5d29yZAkiXlxzKlxkXCtcc1wrY29udGludWVcPiIKc3luIG1hdGNoIGZvcnRyYW5LZXl3b3JkICAJIlw8Z29ccyp0b1w+IgpzeW4gbWF0Y2ggZm9ydHJhbktleXdvcmREZWwgIAkiXDxnb1xzKnRvXHplXHNcKy4qLFxzKiguKiQiCnN5biBtYXRjaCBmb3J0cmFuS2V5d29yZE9iICAJIlw8Z29ccyp0b1x6ZVxzKihcZFwrLiokIgpzeW4gcmVnaW9uIGZvcnRyYW5TdHJpbmdSCXN0YXJ0PSsnKyBlbmQ9KycrIGNvbnRhaW5zPWZvcnRyYW5Db250aW51ZU1hcmssZm9ydHJhbkxlZnRNYXJnaW4sZm9ydHJhblNlcmlhbE51bWJlcgpzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljUglkaW0gbGdlIGxndCBsbGUgbGx0IG1vZApzeW4ga2V5d29yZCBmb3J0cmFuS2V5d29yZERlbAlhc3NpZ24gcGF1c2UKCnN5biBtYXRjaCBmb3J0cmFuVHlwZSAgICAgICAgICAgIlw8dHlwZVw+IgpzeW4ga2V5d29yZCBmb3J0cmFuVHlwZQkgICAgICAgIG5vbmUKCnN5biBrZXl3b3JkIGZvcnRyYW5TdHJ1Y3R1cmUJcHJpdmF0ZSBwdWJsaWMgaW50ZW50IG9wdGlvbmFsCnN5biBrZXl3b3JkIGZvcnRyYW5TdHJ1Y3R1cmUJcG9pbnRlciB0YXJnZXQgYWxsb2NhdGFibGUKc3luIGtleXdvcmQgZm9ydHJhblN0b3JhZ2VDbGFzcwlpbiBvdXQKc3luIG1hdGNoIGZvcnRyYW5TdG9yYWdlQ2xhc3MJIlw8a2luZFxzKj0ibWU9cys0CnN5biBtYXRjaCBmb3J0cmFuU3RvcmFnZUNsYXNzCSJcPGxlblxzKj0ibWU9cyszCgpzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8bW9kdWxlXD4iCnN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlcgkiXDxzdWJtb2R1bGVcPiIKc3luIGtleXdvcmQgZm9ydHJhblVuaXRIZWFkZXIJdXNlIG9ubHkgY29udGFpbnMKc3luIGtleXdvcmQgZm9ydHJhblVuaXRIZWFkZXIJcmVzdWx0IG9wZXJhdG9yIGFzc2lnbm1lbnQKc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGludGVyZmFjZVw+IgpzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8cmVjdXJzaXZlXD4iCnN5biBrZXl3b3JkIGZvcnRyYW5LZXl3b3JkCWFsbG9jYXRlIGRlYWxsb2NhdGUgbnVsbGlmeSBjeWNsZSBleGl0CnN5biBtYXRjaCBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8c2VsZWN0XD4iCnN5biBrZXl3b3JkIGZvcnRyYW5Db25kaXRpb25hbAljYXNlIGRlZmF1bHQgd2hlcmUgZWxzZXdoZXJlCgpzeW4gbWF0Y2ggZm9ydHJhbk9wZXJhdG9yCSJcKFwoPlx8PFwpPVw9XHw9PVx8Lz1cfD1cKSIKc3luIG1hdGNoIGZvcnRyYW5PcGVyYXRvcgkiPT4iCgpzeW4gcmVnaW9uIGZvcnRyYW5TdHJpbmcJc3RhcnQ9KyIrIGVuZD0rIisJY29udGFpbnM9Zm9ydHJhbkxlZnRNYXJnaW4sZm9ydHJhbkNvbnRpbnVlTWFyayxmb3J0cmFuU2VyaWFsTnVtYmVyCnN5biBrZXl3b3JkIGZvcnRyYW5JTwkJcGFkIHBvc2l0aW9uIGFjdGlvbiBkZWxpbSByZWFkd3JpdGUKc3luIGtleXdvcmQgZm9ydHJhbklPCQllb3IgYWR2YW5jZSBubWwKCnN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWMJYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCBtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlY2lzaW9uIHByZXNlbnQgcHJvZHVjdCByYWRpeCByYW5kb21fbnVtYmVyIHJhbmRvbV9zZWVkIHJhbmdlIHJlcGVhdCByZXNoYXBlIHJyc3BhY2luZwpzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljCXNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kIHNldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeQpzeW4gbWF0Y2ggZm9ydHJhbkludHJpbnNpYwkJIlw8bm90XD5cKFxzKlwuXClcQCEibWU9cyszCnN5biBtYXRjaCBmb3J0cmFuSW50cmluc2ljCSJcPGtpbmRcPlxzKlsoLF0ibWU9cys0CgpzeW4gbWF0Y2ggIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGVuZFxzKmZ1bmN0aW9uIgpzeW4gbWF0Y2ggIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGVuZFxzKmludGVyZmFjZSIKc3luIG1hdGNoICBmb3J0cmFuVW5pdEhlYWRlcgkiXDxlbmRccyptb2R1bGUiCnN5biBtYXRjaCAgZm9ydHJhblVuaXRIZWFkZXIJIlw8ZW5kXHMqc3VibW9kdWxlIgpzeW4gbWF0Y2ggIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGVuZFxzKnByb2dyYW0iCnN5biBtYXRjaCAgZm9ydHJhblVuaXRIZWFkZXIJIlw8ZW5kXHMqc3Vicm91dGluZSIKc3luIG1hdGNoICBmb3J0cmFuVW5pdEhlYWRlcgkiXDxlbmRccypibG9jayIKc3luIG1hdGNoICBmb3J0cmFuUmVwZWF0CSJcPGVuZFxzKmRvIgpzeW4gbWF0Y2ggIGZvcnRyYW5Db25kaXRpb25hbAkiXDxlbmRccyp3aGVyZSIKc3luIG1hdGNoICBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8c2VsZWN0XHMqY2FzZSIKc3luIG1hdGNoICBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8ZW5kXHMqc2VsZWN0IgpzeW4gbWF0Y2ggIGZvcnRyYW5UeXBlCSJcPGVuZFxzKnR5cGUiCnN5biBtYXRjaCAgZm9ydHJhblR5cGUJIlw8aW5ccypvdXQiCgpzeW4ga2V5d29yZCBmb3J0cmFuVHlwZQkgICAgICAgIHByb2NlZHVyZQpzeW4gbWF0Y2ggIGZvcnRyYW5UeXBlCSAgICAgICAgIlw8bW9kdWxlXHplXHNcK3Byb2NlZHVyZVw+IgpzeW4ga2V5d29yZCBmb3J0cmFuSU9SCQluYW1lbGlzdApzeW4ga2V5d29yZCBmb3J0cmFuQ29uZGl0aW9uYWxSCXdoaWxlCnN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWNSCWFjaGFyIGlhY2hhciB0cmFuc2ZlcgoKc3luIGtleXdvcmQgZm9ydHJhbkluY2x1ZGUJCWluY2x1ZGUKc3luIGtleXdvcmQgZm9ydHJhblN0b3JhZ2VDbGFzc1IJc2VxdWVuY2UKCnN5biBtYXRjaCAgIGZvcnRyYW5Db25kaXRpb25hbAkiXDxlbmRccyppZiIKc3luIG1hdGNoICAgZm9ydHJhbklPCQljb250YWlucz1mb3J0cmFuT3BlcmF0b3IgIlw8ZVwobmRcfHJyXClccyo9XHMqXGRcKyIKc3luIG1hdGNoICAgZm9ydHJhbkNvbmRpdGlvbmFsCSJcPGVsc2VccyppZiIKCnN5biBrZXl3b3JkIGZvcnRyYW5Vbml0SGVhZGVyT2IJZW50cnkKc3luIG1hdGNoIGZvcnRyYW5UeXBlUgkJZGlzcGxheSAiZG91YmxlXHNcK3ByZWNpc2lvbiIKc3luIG1hdGNoIGZvcnRyYW5UeXBlUgkJZGlzcGxheSAiZG91YmxlXHNcK2NvbXBsZXgiCnN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlclIJZGlzcGxheSAiYmxvY2tcc1wrZGF0YSIKc3luIGtleXdvcmQgZm9ydHJhblN0b3JhZ2VDbGFzc1IJY29tbW9uIGVxdWl2YWxlbmNlIGRhdGEKc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpY1IJZGJsZSBkcHJvZApzeW4gbWF0Y2ggICBmb3J0cmFuT3BlcmF0b3JSCSJcLlxzKltnbF1bZXRdXHMqXC4iCnN5biBtYXRjaCAgIGZvcnRyYW5PcGVyYXRvclIJIlwuXHMqXChlcVx8bmVcKVxzKlwuIgoKc3luIGtleXdvcmQgZm9ydHJhblJlcGVhdAkJZm9yYWxsCnN5biBtYXRjaCBmb3J0cmFuUmVwZWF0CQkiXDxlbmRccypmb3JhbGwiCnN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWMJbnVsbCBjcHVfdGltZQpzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCQkiXDxlbGVtZW50YWxcPiIKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkJIlw8cHVyZVw+IgpzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCQkiXDxpbXB1cmVcPiIKaWYgZXhpc3RzKCJmb3J0cmFuX21vcmVfcHJlY2lzZSIpCiAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lICJcKFw8ZW5kXHMqZm9yYWxsXHNcK1wpXEA8PVxhXHcqXD4iCmVuZGlmCgppZiBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiZjA4IgogICIgRjIwMDMKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljICAgICAgICBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kIGlzX2lvc3RhdF9lb3IgbW92ZV9hbGxvYyBuZXdfbGluZSBzZWxlY3RlZF9jaGFyX2tpbmQgc2FtZV90eXBlX2FzIGV4dGVuZHNfdHlwZV9vZgogICIgSVNPX0NfYmluZGluZwogIHN5biBrZXl3b3JkIGZvcnRyYW5Db25zdGFudCAgICAgICAgIGNfbnVsbF9jaGFyIGNfYWxlcnQgY19iYWNrc3BhY2UgY19mb3JtX2ZlZWQgY19uZXdfbGluZSBjX2NhcnJpYWdlX3JldHVybiBjX2hvcml6b250YWxfdGFiIGNfdmVydGljYWxfdGFiCiAgc3luIGtleXdvcmQgZm9ydHJhbkNvbnN0YW50ICAgICAgICAgY19pbnQgY19zaG9ydCBjX2xvbmcgY19sb25nX2xvbmcgY19zaWduZWRfY2hhciBjX3NpemVfdCBjX2ludDhfdCBjX2ludDE2X3QgY19pbnQzMl90IGNfaW50NjRfdCBjX2ludF9sZWFzdDhfdCBjX2ludF9sZWFzdDE2X3QgY19pbnRfbGVhc3QzMl90IGNfaW50X2xlYXN0NjRfdCBjX2ludF9mYXN0OF90IGNfaW50X2Zhc3QxNl90IGNfaW50X2Zhc3QzMl90IGNfaW50X2Zhc3Q2NF90IGNfaW50bWF4X3QgQ19pbnRwdHJfdCBjX2Zsb2F0IGNfZG91YmxlIGNfbG9uZ19kb3VibGUgY19mbG9hdF9jb21wbGV4IGNfZG91YmxlX2NvbXBsZXggY19sb25nX2RvdWJsZV9jb21wbGV4IGNfYm9vbCBjX2NoYXIgY19udWxsX3B0ciBjX251bGxfZnVucHRyCiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpYyAgICAgICAgaXNvX2NfYmluZGluZyBjX2xvYyBjX2Z1bmxvYyBjX2Fzc29jaWF0ZWQgIGNfZl9wb2ludGVyIGNfZl9wcm9jcG9pbnRlcgogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlICAgICAgICAgICAgIGNfcHRyIGNfZnVucHRyCiAgIiBJU09fRm9ydHJhbl9lbnYKICBzeW4ga2V5d29yZCBmb3J0cmFuQ29uc3RhbnQgICAgICAgICBpc29fZm9ydHJhbl9lbnYgY2hhcmFjdGVyX3N0b3JhZ2Vfc2l6ZSBlcnJvcl91bml0IGZpbGVfc3RvcmFnZV9zaXplIGlucHV0X3VuaXQgaW9zdGF0X2VuZCBpb3N0YXRfZW9yIG51bWVyaWNfc3RvcmFnZV9zaXplIG91dHB1dF91bml0CiAgIiBJRUVFX2FyaXRobWV0aWMKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljICAgICAgICBpZWVlX2FyaXRobWV0aWMgaWVlZV9zdXBwb3J0X3VuZGVyZmxvd19jb250cm9sIGllZWVfZ2V0X3VuZGVyZmxvd19tb2RlIGllZWVfc2V0X3VuZGVyZmxvd19tb2RlCgogIHN5biBrZXl3b3JkIGZvcnRyYW5SZWFkV3JpdGUJZmx1c2ggd2FpdAogIHN5biBrZXl3b3JkIGZvcnRyYW5JTyAJICAgICAgZGVjaW1hbCByb3VuZCBpb21zZwogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlICAgICAgICAgICAgIGFzeW5jaHJvbm91cyBub3Bhc3Mgbm9uX292ZXJyaWRhYmxlIHBhc3MgcHJvdGVjdGVkIHZvbGF0aWxlIGV4dGVuZHMgaW1wb3J0CiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGUgICAgICAgICAgICAgbm9uX2ludHJpbnNpYyB2YWx1ZSBiaW5kIGRlZmVycmVkIGdlbmVyaWMgZmluYWwgZW51bWVyYXRvcgogIHN5biBtYXRjaCBmb3J0cmFuVHlwZSAgICAgICAgICAgICAgICJcPGFic3RyYWN0XD4iCiAgc3luIG1hdGNoIGZvcnRyYW5UeXBlICAgICAgICAgICAgICAgIlw8Y2xhc3NcPiIKICBzeW4gbWF0Y2ggZm9ydHJhblR5cGUgICAgICAgICAgICAgICAiXDxhc3NvY2lhdGVcPiIKICBzeW4gbWF0Y2ggZm9ydHJhblR5cGUgICAgICAgICAgICAgICAiXDxlbmRccyphc3NvY2lhdGUiCiAgc3luIG1hdGNoIGZvcnRyYW5UeXBlICAgICAgICAgICAgICAgIlw8ZW51bVxzKixccypiaW5kXHMqKFxzKmNccyopIgogIHN5biBtYXRjaCBmb3J0cmFuVHlwZSAgICAgICAgICAgICAgICJcPGVuZFxzKmVudW0iCiAgc3luIG1hdGNoIGZvcnRyYW5Db25kaXRpb25hbAkiXDxzZWxlY3Rccyp0eXBlIgogIHN5biBtYXRjaCBmb3J0cmFuQ29uZGl0aW9uYWwgICAgICAgICJcPHR5cGVccyppc1w+IgogIHN5biBtYXRjaCBmb3J0cmFuQ29uZGl0aW9uYWwgICAgICAgICJcPGNsYXNzXHMqaXNcPiIKICBzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIgICAgICAgICAiXDxhYnN0cmFjdFxzKmludGVyZmFjZVw+IgogIHN5biBtYXRjaCBmb3J0cmFuT3BlcmF0b3IgICAgICAgICAgICJcKFtcfF1cKSIKCiAgIiBGMjAwOAogIHN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWMgICAgICAgIGFjb3NoIGFzaW5oIGF0YW5oIGJlc3NlbF9qMCBiZXNzZWxfajEgYmVzc2VsX2puIGJlc3NlbF95MCBiZXNzZWxfeTEgYmVzc2VsX3luIGVyZiBlcmZjIGVyZmNfc2NhbGVkIGdhbW1hIGxvZ19nYW1tYSBoeXBvdCBub3JtMgogIHN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWMgICAgICAgIGF0b21pY19kZWZpbmUgYXRvbWljX3JlZiBleGVjdXRlX2NvbW1hbmRfbGluZSBsZWFkeiB0cmFpbHogc3RvcmFnZV9zaXplIG1lcmdlX2JpdHMKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljICAgICAgICBiZ2UgYmd0IGJsZSBibHQgZHNoaWZ0bCBkc2hpZnRyIGZpbmRsb2MgaWFsbCBpYW55IGlwYXJpdHkgaW1hZ2VfaW5kZXggbGNvYm91bmQgdWNvYm91bmQgbWFza2wgbWFza3IgbnVtX2ltYWdlcyBwYXJpdHkgcG9wY250IHBvcHBhciBzaGlmdGEgc2hpZnRsIHNoaWZ0ciB0aGlzX2ltYWdlCiAgc3luIGtleXdvcmQgZm9ydHJhbklPICAgICAgICAgICAgICAgbmV3dW5pdAogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlICAgICAgICAgICAgIGNvbnRpZ3VvdXMKICBzeW4ga2V5d29yZCBmb3J0cmFuUmVwZWF0ICAgICAgICAgICBjb25jdXJyZW50CgoiIENVREEgZm9ydHJhbgogIHN5biBtYXRjaCBmb3J0cmFuVHlwZUNVREEgICAgICAgICAgICJcPGF0dHJpYnV0ZXNcPiIKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBob3N0IGdsb2JhbCBkZXZpY2UgdmFsdWUKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBzaGFyZWQgY29uc3RhbnQgcGlubmVkIHRleHR1cmUKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBkaW0xIGRpbTIgZGltMyBkaW00CiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgY3VkYWRldmljZXByb3AgY3VkYV9jb3VudF9raW5kIGN1ZGFfc3RyZWFtX2tpbmQKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBjdWRhRXZlbnQgY3VkYUZ1bmNBdHRyaWJ1dGVzIGN1ZGFBcnJheVB0cgogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFTeW1ib2wgY3VkYUNoYW5uZWxGb3JtYXREZXNjIGN1ZGFQaXRjaGVkUHRyCiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgY3VkYUV4dGVudCBjdWRhTWVtY3B5M0RQYXJtcwogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFGdW5jQ2FjaGVQcmVmZXJOb25lIGN1ZGFGdW5jQ2FjaGVQcmVmZXJTaGFyZWQKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBjdWRhRnVuY0NhY2hlUHJlZmVyTDEgY3VkYUxpbWl0U3RhY2tTaXplCiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgY3VkYUxpbWl0UHJpbnRmU2l6ZSBjdWRhTGltaXRNYWxsb2NIZWFwU2l6ZQogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFTaGFyZWRNZW1CYW5rU2l6ZURlZmF1bHQgY3VkYVNoYXJlZE1lbUJhbmtTaXplRm91ckJ5dGUgY3VkYVNoYXJlZE1lbUJhbmtTaXplRWlnaHRCeXRlCiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgY3VkYUV2ZW50RGVmYXVsdCBjdWRhRXZlbnRCbG9ja2luZ1N5bmMgY3VkYUV2ZW50RGlzYWJsZVRpbWluZwogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFNZW1jcHlIb3N0VG9EZXZpY2UgY3VkYU1lbWNweURldmljZVRvSG9zdAogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFNZW1jcHlEZXZpY2VUb0RldmljZQogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFFcnJvck5vdFJlYWR5IGN1ZGFTdWNjZXNzIGN1ZGFFcnJvckludmFsaWRWYWx1ZQogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGNfZGV2cHRyCgogIHN5biBtYXRjaCBmb3J0cmFuU3RyaW5nQ1VEQSAgICAgICAgICJibG9ja2lkeCVbeHl6XSIKICBzeW4gbWF0Y2ggZm9ydHJhblN0cmluZ0NVREEgICAgICAgICAiYmxvY2tkaW0lW3h5el0iCiAgc3luIG1hdGNoIGZvcnRyYW5TdHJpbmdDVURBICAgICAgICAgImdyaWRkaW0lW3h5el0iCiAgc3luIG1hdGNoIGZvcnRyYW5TdHJpbmdDVURBICAgICAgICAgInRocmVhZGlkeCVbeHl6XSIKCiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpY0NVREEgICAgd2FycHNpemUgc3luY3RocmVhZHMgc3luY3RocmVhZHNfYW5kIHN5bmN0aHJlYWRzX2NvdW50IHN5bmN0aHJlYWRzX29yIHRocmVhZGZlbmNlIHRocmVhZGZlbmNlX2Jsb2NrIHRocmVhZGZlbmNlX3N5c3RlbSBncHVfdGltZSBhbGx0aHJlYWRzIGFueXRocmVhZCBiYWxsb3QKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljQ1VEQSAgICBhdG9taWNhZGQgYXRvbWljc3ViIGF0b21pY21heCBhdG9taWNtaW4gYXRvbWljYW5kIGF0b21pY29yIGF0b21pY3hvciBhdG9taWNleGNoIGF0b21pY2luYyBhdG9taWNkZWMgYXRvbWljY2FzIHNpemVvZiBfX3NoZmwgX19zaGZsX3VwIF9fc2hmbF9kb3duIF9fc2hmbF94b3IKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljQ1VEQSAgICBjdWRhQ2hvb3NlRGV2aWNlIGN1ZGFEZXZpY2VHZXRDYWNoZUNvbmZpZyBjdWRhRGV2aWNlR2V0TGltaXQgY3VkYURldmljZUdldFNoYXJlZE1lbUNvbmZpZyBjdWRhRGV2aWNlUmVzZXQgY3VkYURldmljZVNldENhY2hlQ29uZmlnIGN1ZGFEZXZpY2VTZXRMaW1pdCBjdWRhRGV2aWNlU2V0U2hhcmVkTWVtQ29uZmlnIGN1ZGFEZXZpY2VTeW5jaHJvbml6ZSBjdWRhR2V0RGV2aWNlIGN1ZGFHZXREZXZpY2VDb3VudCBjdWRhR2V0RGV2aWNlUHJvcGVydGllcyBjdWRhU2V0RGV2aWNlIGN1ZGFTZXREZXZpY2VGbGFncyBjdWRhU2V0VmFsaWREZXZpY2VzCiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpY0NVREEgICAgY3VkYVRocmVhZEV4aXQgY3VkYVRocmVhZFN5bmNocm9uaXplIGN1ZGFHZXRMYXN0RXJyb3IgY3VkYUdldEVycm9yU3RyaW5nIGN1ZGFQZWVrQXRMYXN0RXJyb3IgY3VkYVN0cmVhbUNyZWF0ZSBjdWRhU3RyZWFtRGVzdHJveSBjdWRhU3RyZWFtUXVlcnkgY3VkYVN0cmVhbVN5bmNocm9uaXplIGN1ZGFTdHJlYW1XYWl0RXZlbnQgY3VkYUV2ZW50Q3JlYXRlIGN1ZGFFdmVudENyZWF0ZVdpdGhGbGFncyBjdWRhRXZlbnREZXN0cm95IGN1ZGFFdmVudEVsYXBzZWRUaW1lIGN1ZGFFdmVudFF1ZXJ5IGN1ZGFFdmVudFJlY29yZCBjdWRhRXZlbnRTeW5jaHJvbml6ZQogIHN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWNDVURBICAgIGN1ZGFGdW5jR2V0QXR0cmlidXRlcyBjdWRhRnVuY1NldENhY2hlQ29uZmlnIGN1ZGFGdW5jU2V0U2hhcmVkTWVtQ29uZmlnIGN1ZGFTZXREb3VibGVGb3JEZXZpY2UgY3VkYVNldERvdWJsZUZvckhvc3QgY3VkYUZyZWUgY3VkYUZyZWVBcnJheSBjdWRhRnJlZUhvc3QgY3VkYUdldFN5bWJvbEFkZHJlc3MgY3VkYUdldFN5bWJvbFNpemUKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljQ1VEQSAgICBjdWRhSG9zdEFsbG9jIGN1ZGFIb3N0R2V0RGV2aWNlUG9pbnRlciBjdWRhSG9zdEdldEZsYWdzIGN1ZGFIb3N0UmVnaXN0ZXIgY3VkYUhvc3RVbnJlZ2lzdGVyIGN1ZGFNYWxsb2MgY3VkYU1hbGxvY0FycmF5IGN1ZGFNYWxsb2NIb3N0IGN1ZGFNYWxsb2NQaXRjaCBjdWRhTWFsbG9jM0QgY3VkYU1hbGxvYzNEQXJyYXkKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljQ1VEQSAgICBjdWRhTWVtY3B5IGN1ZGFNZW1jcHlBcnJheXRvQXJyYXkgY3VkYU1lbWNweUFzeW5jIGN1ZGFNZW1jcHlGcm9tQXJyYXkgY3VkYU1lbWNweUZyb21TeW1ib2wgY3VkYU1lbWNweUZyb21TeW1ib2xBc3luYyBjdWRhTWVtY3B5UGVlciBjdWRhTWVtY3B5UGVlckFzeW5jIGN1ZGFNZW1jcHlUb0FycmF5IGN1ZGFNZW1jcHlUb1N5bWJvbCBjdWRhTWVtY3B5VG9TeW1ib2xBc3luYyBjdWRhTWVtY3B5MkQgY3VkYU1lbWNweTJEQXJyYXlUb0FycmF5IGN1ZGFNZW1jcHkyREFzeW5jIGN1ZGFNZW1jcHkyREZyb21BcnJheSBjdWRhTWVtY3B5MkRUb0FycmF5IGN1ZGFNZW1jcHkzRCBjdWRhTWVtY3B5M0RBc3luYwogIHN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWNDVURBICAgIGN1ZGFNZW1HZXRJbmZvIGN1ZGFNZW1zZXQgY3VkYU1lbXNldDJEIGN1ZGFNZW1zZXQzRCBjdWRhRGV2aWNlQ2FuQWNjZXNzUGVlciBjdWRhRGV2aWNlRGlzYWJsZVBlZXJBY2Nlc3MgY3VkYURldmljZUVuYWJsZVBlZXJBY2Nlc3MgY3VkYVBvaW50ZXJHZXRBdHRyaWJ1dGVzIGN1ZGFEcml2ZXJHZXRWZXJzaW9uIGN1ZGFSdW50aW1lR2V0VmVyc2lvbgoKICBzeW4gcmVnaW9uIG5vbmUgbWF0Y2hncm91cD1mb3J0cmFuVHlwZSBzdGFydD0iPDw8IiBlbmQ9Ij4+PiIgY29udGFpbnM9QUxMQlVULG5vbmUKZW5kaWYKCnN5biBjbHVzdGVyIGZvcnRyYW5Db21tZW50R3JvdXAgY29udGFpbnM9Zm9ydHJhblRvZG8KCmlmIChiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDEpCiAgaWYgIWV4aXN0cygiZm9ydHJhbl9oYXZlX3RhYnMiKQogICAgIkZsYWcgaXRlbXMgYmV5b25kIGNvbHVtbiA3MgogICAgc3luIG1hdGNoIGZvcnRyYW5TZXJpYWxOdW1iZXIJZXhjbHVkZW5sICJeLlx7NzMsfSQibGM9NzIKICAgICJGbGFnIGxlZnQgbWFyZ2luIGVycm9ycwogICAgc3luIG1hdGNoIGZvcnRyYW5MYWJlbEVycm9yCSJeLlx7LSw0fVteMC05IF0iIGNvbnRhaW5zPWZvcnRyYW5UYWIKICAgIHN5biBtYXRjaCBmb3J0cmFuTGFiZWxFcnJvcgkiXi5cezR9XGRcUyIKICBlbmRpZgogIHN5biBtYXRjaCBmb3J0cmFuQ29tbWVudAkJZXhjbHVkZW5sICJeWyFjKl0uKiQiIGNvbnRhaW5zPUBmb3J0cmFuQ29tbWVudEdyb3VwLEBzcGVsbAogIHN5biBtYXRjaCBmb3J0cmFuTGVmdE1hcmdpbgkJdHJhbnNwYXJlbnQgIl4gXHs1fSIKICBzeW4gbWF0Y2ggZm9ydHJhbkNvbnRpbnVlTWFyawkJZGlzcGxheSAiXi5cezV9XFMibGM9NQplbHNlCiAgc3luIG1hdGNoIGZvcnRyYW5Db250aW51ZU1hcmsJCWRpc3BsYXkgIiYiCmVuZGlmCgpzeW4gbWF0Y2ggZm9ydHJhbkNvbW1lbnQJZXhjbHVkZW5sICIhLiokIiBjb250YWlucz1AZm9ydHJhbkNvbW1lbnRHcm91cCxAc3BlbGwKc3luIG1hdGNoIGZvcnRyYW5PcGVuTVAJCWV4Y2x1ZGVubCAJCSJeXHMqIVwkXChPTVBcKVw9XHMuKiQiCgoiY3BwIGlzIG9mdGVuIHVzZWQgd2l0aCBGb3J0cmFuCnN5biBtYXRjaAljUHJlUHJvYwkJIl5ccyojXHMqXChkZWZpbmVcfGlmZGVmXClcPi4qIgpzeW4gbWF0Y2gJY1ByZVByb2MJCSJeXHMqI1xzKlwoZWxpZlx8aWZcKVw+LioiCnN5biBtYXRjaAljUHJlUHJvYwkJIl5ccyojXHMqXChpZm5kZWZcfHVuZGVmXClcPi4qIgpzeW4gbWF0Y2gJY1ByZUNvbmRpdAkJIl5ccyojXHMqXChlbHNlXHxlbmRpZlwpXD4uKiIKc3luIHJlZ2lvbgljSW5jbHVkZWQJY29udGFpbmVkIHN0YXJ0PSsiW14oXSsgc2tpcD0rXFxcXFx8XFwiKyBlbmQ9KyIrIGNvbnRhaW5zPWZvcnRyYW5MZWZ0TWFyZ2luLGZvcnRyYW5Db250aW51ZU1hcmssZm9ydHJhblNlcmlhbE51bWJlcgpzeW4gbWF0Y2gJY0luY2x1ZGVkCQljb250YWluZWQgIjxbXj5dKj4iCnN5biBtYXRjaAljSW5jbHVkZQkJIl5ccyojXHMqaW5jbHVkZVw+XHMqWyI8XSIgY29udGFpbnM9Y0luY2x1ZGVkCgoiU3luY2hyb25pc2luZyBsaW1pdHMgYXNzdW1lIHRoYXQgY29tbWVudCBhbmQgY29udGludWF0aW9uIGxpbmVzIGFyZSBub3QgbWl4ZWQKaWYgZXhpc3RzKCJmb3J0cmFuX2ZvbGQiKSB8fCBleGlzdHMoImZvcnRyYW5fbW9yZV9wcmVjaXNlIikKICBzeW4gc3luYyBmcm9tc3RhcnQKZWxzZWlmIChiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDApCiAgc3luIHN5bmMgbGluZWNvbnQgIiYiIG1pbmxpbmVzPTMwCmVsc2UKICBzeW4gc3luYyBtaW5saW5lcz0zMAplbmRpZgoKaWYgZXhpc3RzKCJmb3J0cmFuX2ZvbGQiKQoKICBpZiAoYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9PSAxKQogICAgc3luIHJlZ2lvbiBmb3J0cmFuUHJvZ3JhbSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Il5ccypwcm9ncmFtXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXChwcm9ncmFtXChcc1wrXHoxXD5cKVw9XHwkXCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuTW9kdWxlCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5Nb2R1bGUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJeXHMqc3VibW9kdWxlXHNcKyhcYVx3KlxzKlwoOlxhXHcqXHMqXCkqKVxzKlx6XChcYVx3KlwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoc3VibW9kdWxlXChcc1wrXHoxXD5cKVw9XHwkXCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5Nb2R1bGUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJeXHMqbW9kdWxlXHNcK1wocHJvY2VkdXJlXClcQCFceihcYVx3KlwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwobW9kdWxlXChcc1wrXHoxXD5cKVw9XHwkXCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbQogICAgc3luIHJlZ2lvbiBmb3J0cmFuRnVuY3Rpb24gdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoZWxlbWVudGFsIFx8cHVyZSBcfGltcHVyZSBcfG1vZHVsZSBcfHJlY3Vyc2l2ZSBcKVw9XHMqXChcKFwocmVhbCBcfGludGVnZXIgXHxsb2dpY2FsIFx8Y29tcGxleCBcfGRvdWJsZSBccypwcmVjaXNpb24gXClccypcKChcKFxzKmtpbmRccyo9XClcPVxzKlx3XCtccyopXClcPVwpXHx0eXBlXHNcKyhccypcd1wrXHMqKSBcfGNoYXJhY3RlciBcKChcKFxzKmxlblxzKj1cKVw9XHMqXGRcK1xzKilcfChcKFxzKmtpbmRccyo9XClcPVxzKlx3XCtccyopXClcPVwpXD1ccypmdW5jdGlvblxzXCtceihcYVx3KlwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8ZnVuY3Rpb25cKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgIHN5biByZWdpb24gZm9ydHJhblN1YnJvdXRpbmUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoZWxlbWVudGFsIFx8cHVyZSBcfGltcHVyZSBcfG1vZHVsZSBcfHJlY3Vyc2l2ZSBcKVw9XHMqc3Vicm91dGluZVxzXCtceihcYVx3KlwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8c3Vicm91dGluZVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuQmxvY2tEYXRhIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxibG9ja1xzKmRhdGFcKFxzXCtceihcYVx3KlwpXClcPSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGJsb2NrXHMqZGF0YVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5JbnRlcmZhY2UgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoYWJzdHJhY3QgXClcPVxzKmludGVyZmFjZVw+IiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKmludGVyZmFjZVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKICAgIHN5biByZWdpb24gZm9ydHJhblR5cGVEZWYgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKnR5cGVccypcKCxccypcKHB1YmxpY1x8cHJpdmF0ZVx8YWJzdHJhY3RcKVwpXD1ccyo6OiIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccyp0eXBlXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jayxmb3J0cmFuSW50ZXJmYWNlCiAgZWxzZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuUHJvZ3JhbSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Il5ccypwcm9ncmFtXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwocHJvZ3JhbVwoXHNcK1x6MVw+XClcPVx8JFwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhbk1vZHVsZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuTW9kdWxlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKnN1Ym1vZHVsZVxzXCsoXGFcdypccypcKDpcYVx3KlxzKlwpKilccypcelwoXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXChzdWJtb2R1bGVcKFxzXCtcejFcPlwpXD1cfCRcKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgIHN5biByZWdpb24gZm9ydHJhbk1vZHVsZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Il5ccyptb2R1bGVcc1wrXChwcm9jZWR1cmVcKVxAIVx6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwobW9kdWxlXChcc1wrXHoxXD5cKVw9XHwkXCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbQogICAgc3luIHJlZ2lvbiBmb3J0cmFuRnVuY3Rpb24gdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoZWxlbWVudGFsIFx8cHVyZSBcfGltcHVyZSBcfG1vZHVsZSBcfHJlY3Vyc2l2ZSBcKVw9XHMqXChcKFwocmVhbCBcfGludGVnZXIgXHxsb2dpY2FsIFx8Y29tcGxleCBcfGRvdWJsZSBccypwcmVjaXNpb24gXClccypcKChcKFxzKmtpbmRccyo9XClcPVxzKlx3XCtccyopXClcPVwpXHx0eXBlXHNcKyhccypcd1wrXHMqKSBcfGNoYXJhY3RlciBcKChcKFxzKmxlblxzKj1cKVw9XHMqXGRcK1xzKilcfChcKFxzKmtpbmRccyo9XClcPVxzKlx3XCtccyopXClcPVwpXD1ccypmdW5jdGlvblxzXCtceihcYVx3KlwpIiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGZ1bmN0aW9uXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5TdWJyb3V0aW5lIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccypcKGVsZW1lbnRhbCBcfHB1cmUgXHxpbXB1cmUgXHxtb2R1bGUgXHxyZWN1cnNpdmUgXClcPVxzKnN1YnJvdXRpbmVcc1wrXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxzdWJyb3V0aW5lXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5CbG9ja0RhdGEgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJcPGJsb2NrXHMqZGF0YVwoXHNcK1x6KFxhXHcqXClcKVw9IiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGJsb2NrXHMqZGF0YVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5JbnRlcmZhY2UgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoYWJzdHJhY3QgXClcPVxzKmludGVyZmFjZVw+IiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccyppbnRlcmZhY2VcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5UeXBlRGVmIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccyp0eXBlXHMqXCgsXHMqXChwdWJsaWNcfHByaXZhdGVcfGFic3RyYWN0XClcKVw9XHMqOjoiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKnR5cGVcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrLGZvcnRyYW5JbnRlcmZhY2UKICBlbmRpZgoKICBpZiBleGlzdHMoImZvcnRyYW5fZm9sZF9jb25kaXRpb25hbHMiKQogICAgaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMSkKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuNzdMb29wIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxkb1xzXCtceihcZFwrXCkiIGVuZD0iXlxzKlx6MVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuOTBMb29wIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9IlwoXDxlbmRcc1wrXClcQDwhXDxkb1woXHNcK1xhXHxccyokXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqZG9cPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Vbml0SGVhZGVyLGZvcnRyYW5TdHJ1Y3R1cmUsZm9ydHJhblN0b3JhZ2VDbGFzcyxmb3J0cmFuVHlwZSxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuQmxvY2tEYXRhCiAgICAgIHN5biByZWdpb24gZm9ydHJhbklmQmxvY2sgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXChcPGVcKG5kXHxsc2VcKVxzXCtcKVxAPCFcPGlmXHMqKC5cKylccyp0aGVuXD4iIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGVuZD0iXDxlbmRccyppZlw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuQ2FzZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJcPHNlbGVjdFxzKmNhc2VcPiIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZW5kPSJcPGVuZFxzKnNlbGVjdFw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgIGVsc2UKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuNzdMb29wIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxkb1xzXCtceihcZFwrXCkiIGVuZD0iXlxzKlx6MVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuOTBMb29wIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9IlwoXDxlbmRcc1wrXClcQDwhXDxkb1woXHNcK1xhXHxccyokXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKmRvXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuVW5pdEhlYWRlcixmb3J0cmFuU3RydWN0dXJlLGZvcnRyYW5TdG9yYWdlQ2xhc3MsZm9ydHJhblR5cGUsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbkJsb2NrRGF0YQogICAgICBzeW4gcmVnaW9uIGZvcnRyYW5JZkJsb2NrIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9IlwoXDxlXChuZFx8bHNlXClcc1wrXClcQDwhXDxpZlxzKihcKC5cfCZccypcblwpXCspXChcc1x8JlxzKlxuXCkqdGhlblw+IiBza2lwPSJeXHMqWyEjXS4qJCIgZW5kPSJcPGVuZFxzKmlmXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuVW5pdEhlYWRlcixmb3J0cmFuU3RydWN0dXJlLGZvcnRyYW5TdG9yYWdlQ2xhc3MsZm9ydHJhblR5cGUsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbkJsb2NrRGF0YQogICAgICBzeW4gcmVnaW9uIGZvcnRyYW5DYXNlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Ilw8c2VsZWN0XHMqY2FzZVw+IiBza2lwPSJeXHMqWyEjXS4qJCIgZW5kPSJcPGVuZFxzKnNlbGVjdFw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgIGVuZGlmCiAgZW5kaWYKCiAgaWYgZXhpc3RzKCJmb3J0cmFuX2ZvbGRfbXVsdGlsaW5lY29tbWVudHMiKQogICAgaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMSkKICAgICAgc3luIG1hdGNoIGZvcnRyYW5NdWx0aUxpbmVDb21tZW50cyB0cmFuc3BhcmVudCBmb2xkICJcKF5bIWMqXS4qXChcblx8XCUkXClcKVx7NCx9IiBjb250YWlucz1BTExCVVQsZm9ydHJhbk11bHRpQ29tbWVudExpbmVzCiAgICBlbHNlCiAgICAgIHN5biBtYXRjaCBmb3J0cmFuTXVsdGlMaW5lQ29tbWVudHMgdHJhbnNwYXJlbnQgZm9sZCAiXCheXHMqIS4qXChcblx8XCUkXClcKVx7NCx9IiBjb250YWlucz1BTExCVVQsZm9ydHJhbk11bHRpQ29tbWVudExpbmVzCiAgICBlbmRpZgogIGVuZGlmCmVuZGlmCgoiIERlZmluZSB0aGUgZGVmYXVsdCBoaWdobGlnaHRpbmcuCiIgVGhlIGRlZmF1bHQgaGlnaGxpZ2h0aW5nIGRpZmZlcnMgZm9yIGVhY2ggZGlhbGVjdC4KIiBUcmFuc3BhcmVudCBncm91cHM6CiIgZm9ydHJhblBhcmVuLCBmb3J0cmFuTGVmdE1hcmdpbgoiIGZvcnRyYW5Qcm9ncmFtLCBmb3J0cmFuTW9kdWxlLCBmb3J0cmFuU3Vicm91dGluZSwgZm9ydHJhbkZ1bmN0aW9uLAoiIGZvcnRyYW5CbG9ja0RhdGEKIiBmb3J0cmFuNzdMb29wLCBmb3J0cmFuOTBMb29wLCBmb3J0cmFuSWZCbG9jaywgZm9ydHJhbkNhc2UKIiBmb3J0cmFuTXVsdGlDb21tZW50TGluZXMKaGkgZGVmIGxpbmsgZm9ydHJhbktleXdvcmQgCUtleXdvcmQKaGkgZGVmIGxpbmsgZm9ydHJhbkNvbnN0cnVjdE5hbWUJSWRlbnRpZmllcgpoaSBkZWYgbGluayBmb3J0cmFuQ29uZGl0aW9uYWwJQ29uZGl0aW9uYWwKaGkgZGVmIGxpbmsgZm9ydHJhblJlcGVhdAlSZXBlYXQKaGkgZGVmIGxpbmsgZm9ydHJhblRvZG8JCVRvZG8KaGkgZGVmIGxpbmsgZm9ydHJhbkNvbnRpbnVlTWFyawlTcGVjaWFsCmhpIGRlZiBsaW5rIGZvcnRyYW5TdHJpbmcJU3RyaW5nCmhpIGRlZiBsaW5rIGZvcnRyYW5OdW1iZXIJTnVtYmVyCmhpIGRlZiBsaW5rIGZvcnRyYW5PcGVyYXRvcglPcGVyYXRvcgpoaSBkZWYgbGluayBmb3J0cmFuQm9vbGVhbglCb29sZWFuCmhpIGRlZiBsaW5rIGZvcnRyYW5MYWJlbEVycm9yCUVycm9yCmhpIGRlZiBsaW5rIGZvcnRyYW5PYnNvbGV0ZQlUb2RvCmhpIGRlZiBsaW5rIGZvcnRyYW5UeXBlCQlUeXBlCmhpIGRlZiBsaW5rIGZvcnRyYW5TdHJ1Y3R1cmUJVHlwZQpoaSBkZWYgbGluayBmb3J0cmFuU3RvcmFnZUNsYXNzCVN0b3JhZ2VDbGFzcwpoaSBkZWYgbGluayBmb3J0cmFuQ2FsbAkJRnVuY3Rpb24KaGkgZGVmIGxpbmsgZm9ydHJhblVuaXRIZWFkZXIJZm9ydHJhblByZUNvbmRpdApoaSBkZWYgbGluayBmb3J0cmFuUmVhZFdyaXRlCUtleXdvcmQKaGkgZGVmIGxpbmsgZm9ydHJhbklPCQlLZXl3b3JkCmhpIGRlZiBsaW5rIGZvcnRyYW5JbnRyaW5zaWMJRnVuY3Rpb24KaGkgZGVmIGxpbmsgZm9ydHJhbkNvbnN0YW50CUNvbnN0YW50CgoiIFRvIHN0b3AgZGVsZXRlZCAmIG9ic29sZXNjZW50IGZlYXR1cmVzIGJlaW5nIGhpZ2hsaWdodGVkIGFzIFRvZG8gaXRlbXMsCiIgY29tbWVudCBvdXQgdGhlIG5leHQgNSBsaW5lcyBhbmQgdW5jb21tZW50IHRoZSA1IGxpbmVzIGFmdGVyIHRoYXQKaGkgZGVmIGxpbmsgZm9ydHJhblVuaXRIZWFkZXJPYiAgICBmb3J0cmFuT2Jzb2xldGUKaGkgZGVmIGxpbmsgZm9ydHJhbktleXdvcmRPYiAgICAgICBmb3J0cmFuT2Jzb2xldGUKaGkgZGVmIGxpbmsgZm9ydHJhbkNvbmRpdGlvbmFsT2IgICBmb3J0cmFuT2Jzb2xldGUKaGkgZGVmIGxpbmsgZm9ydHJhblR5cGVPYiAgICAgICAgICBmb3J0cmFuT2Jzb2xldGUKaGkgZGVmIGxpbmsgZm9ydHJhbktleXdvcmREZWwgICAgICBmb3J0cmFuT2Jzb2xldGUKImhpIGRlZiBsaW5rIGZvcnRyYW5Vbml0SGVhZGVyT2IgICAgZm9ydHJhblVuaXRIZWFkZXIKImhpIGRlZiBsaW5rIGZvcnRyYW5LZXl3b3JkT2IgICAgICAgZm9ydHJhbktleXdvcmQKImhpIGRlZiBsaW5rIGZvcnRyYW5Db25kaXRpb25hbE9iICAgZm9ydHJhbkNvbmRpdGlvbmFsCiJoaSBkZWYgbGluayBmb3J0cmFuVHlwZU9iICAgICAgICAgIGZvcnRyYW5UeXBlCiJoaSBkZWYgbGluayBmb3J0cmFuS2V5d29yZERlbCAgICAgIGZvcnRyYW5LZXl3b3JkCgppZiBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiRiIKICBoaSEgZGVmIGxpbmsgZm9ydHJhbkludHJpbnNpY1IJZm9ydHJhbk9ic29sZXRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5Vbml0SGVhZGVyUglmb3J0cmFuT2Jzb2xldGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhblR5cGVSCQlmb3J0cmFuT2Jzb2xldGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhblN0b3JhZ2VDbGFzc1IJZm9ydHJhbk9ic29sZXRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5PcGVyYXRvclIgCWZvcnRyYW5PYnNvbGV0ZQogIGhpISBkZWYgbGluayBmb3J0cmFuSW5jbHVkZSAgIAlmb3J0cmFuT2Jzb2xldGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhbkxhYmVsTnVtYmVyCWZvcnRyYW5PYnNvbGV0ZQogIGhpISBkZWYgbGluayBmb3J0cmFuVGFyZ2V0CSAgICAgICAgZm9ydHJhbk9ic29sZXRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5GbG9hdElsbAkgICAgICAgIGZvcnRyYW5PYnNvbGV0ZQogIGhpISBkZWYgbGluayBmb3J0cmFuSU9SCQlmb3J0cmFuT2Jzb2xldGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhbktleXdvcmRSCSAgICAgICAgZm9ydHJhbk9ic29sZXRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5TdHJpbmdSCSAgICAgICAgZm9ydHJhbk9ic29sZXRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5Db25kaXRpb25hbFIJZm9ydHJhbk9ic29sZXRlCmVsc2UKICBoaSEgZGVmIGxpbmsgZm9ydHJhbkludHJpbnNpY1IJZm9ydHJhbkludHJpbnNpYwogIGhpISBkZWYgbGluayBmb3J0cmFuVW5pdEhlYWRlclIJZm9ydHJhblByZUNvbmRpdAogIGhpISBkZWYgbGluayBmb3J0cmFuVHlwZVIJCWZvcnRyYW5UeXBlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5TdG9yYWdlQ2xhc3NSCWZvcnRyYW5TdG9yYWdlQ2xhc3MKICBoaSEgZGVmIGxpbmsgZm9ydHJhbk9wZXJhdG9yUgkgICAgICAgIGZvcnRyYW5PcGVyYXRvcgogIGhpISBkZWYgbGluayBmb3J0cmFuSW5jbHVkZQkgICAgICAgIEluY2x1ZGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhbkxhYmVsTnVtYmVyCVNwZWNpYWwKICBoaSEgZGVmIGxpbmsgZm9ydHJhblRhcmdldAkgICAgICAgIFNwZWNpYWwKICBoaSEgZGVmIGxpbmsgZm9ydHJhbkZsb2F0SWxsCSAgICAgICAgZm9ydHJhbkZsb2F0CiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5JT1IJCWZvcnRyYW5JTwogIGhpISBkZWYgbGluayBmb3J0cmFuS2V5d29yZFIJICAgICAgICBmb3J0cmFuS2V5d29yZAogIGhpISBkZWYgbGluayBmb3J0cmFuU3RyaW5nUgkgICAgICAgIGZvcnRyYW5TdHJpbmcKICBoaSEgZGVmIGxpbmsgZm9ydHJhbkNvbmRpdGlvbmFsUglmb3J0cmFuQ29uZGl0aW9uYWwKZW5kaWYKCiIgQ1VEQQpoaSBkZWYgbGluayBmb3J0cmFuSW50cmluc2ljQ1VEQSAgICAgICAgZm9ydHJhbkludHJpbnNpYwpoaSBkZWYgbGluayBmb3J0cmFuVHlwZUNVREEgICAgICAgICAgICAgZm9ydHJhblR5cGUKaGkgZGVmIGxpbmsgZm9ydHJhblN0cmluZ0NVREEgICAgICAgICAgIGZvcnRyYW5TdHJpbmcKCmhpIGRlZiBsaW5rIGZvcnRyYW5Gb3JtYXRTcGVjCUlkZW50aWZpZXIKaGkgZGVmIGxpbmsgZm9ydHJhbkZsb2F0CUZsb2F0CmhpIGRlZiBsaW5rIGZvcnRyYW5QcmVDb25kaXQJUHJlQ29uZGl0CmhpIGRlZiBsaW5rIGNJbmNsdWRlZAkJZm9ydHJhblN0cmluZwpoaSBkZWYgbGluayBjSW5jbHVkZQkJSW5jbHVkZQpoaSBkZWYgbGluayBjUHJlUHJvYwkJUHJlUHJvYwpoaSBkZWYgbGluayBjUHJlQ29uZGl0CQlQcmVDb25kaXQKaGkgZGVmIGxpbmsgZm9ydHJhbk9wZW5NUCAgICAgICBQcmVQcm9jCmhpIGRlZiBsaW5rIGZvcnRyYW5QYXJlbkVycm9yCUVycm9yCmhpIGRlZiBsaW5rIGZvcnRyYW5Db21tZW50CUNvbW1lbnQKaGkgZGVmIGxpbmsgZm9ydHJhblNlcmlhbE51bWJlcglUb2RvCmhpIGRlZiBsaW5rIGZvcnRyYW5UYWIJCUVycm9yCgoiIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIGlmIHlvdSB1c2UgZXh0cmEgaW50cmluc2ljcyBwcm92aWRlZCBieSB2ZW5kb3JzCiJoaSBkZWYgbGluayBmb3J0cmFuRXh0cmFJbnRyaW5zaWMJRnVuY3Rpb24KCmxldCBiOmN1cnJlbnRfc3ludGF4ID0gImZvcnRyYW4iCgpsZXQgJmNwbyA9IHM6Y3BvX3NhdmUKdW5sZXQgczpjcG9fc2F2ZQoiIHZpbTogdHM9OCB0dz0xMzIK