IyEvYmluL2VudiBwZXJsCiMKb3BlbiBGRCwiY3J5cHRvL29wZW5zc2x2LmgiOwp3aGlsZSg8RkQ+KSB7CiAgICBpZiAoL09QRU5TU0xfVkVSU0lPTl9OVU1CRVJccysoMHhbMC05YS1mXSspL2kpIHsKCSR2ZXIgPSBoZXgoJDEpOwoJJHYxID0gKCR2ZXI+PjI4KTsKCSR2MiA9ICgkdmVyPj4yMCkmMHhmZjsKCSR2MyA9ICgkdmVyPj4xMikmMHhmZjsKCSR2NCA9ICgkdmVyPj4gNCkmMHhmZjsKCSRiZXRhID0gJHZlciYweGY7CgkkdmVyc2lvbiA9ICIkdjEuJHYyLiR2MyI7CglpZiAoJGJldGE9PTB4ZikJeyAkdmVyc2lvbiAuPSBjaHIob3JkKCdhJykrJHY0LTEpIGlmICgkdjQpOwl9CgllbHNpZiAoJGJldGE9PTApeyAkdmVyc2lvbiAuPSAiLWRldiI7CQkJCX0KCWVsc2UJCXsgJHZlcnNpb24gLj0gIi1iZXRhJGJldGEiOwkJCX0KCWxhc3Q7CiAgICB9Cn0KY2xvc2UoRkQpOwoKJGZpbGVuYW1lID0gJEFSR1ZbMF07ICRmaWxlbmFtZSA9fiAvKC4qKVwuKFteLl0rKSQvOwokYmFzZW5hbWUgPSAkMTsKJGV4dG5hbWUgID0gJDI7CgppZiAoJGV4dG5hbWUgPX4gL2RsbC9pKQl7ICRkZXNjcmlwdGlvbiA9ICJPcGVuU1NMIHNoYXJlZCBsaWJyYXJ5IjsgfQplbHNlCQkJeyAkZGVzY3JpcHRpb24gPSAiT3BlblNTTCBhcHBsaWNhdGlvbiI7ICAgIH0KCnByaW50IDw8X19fOwojaW5jbHVkZSA8d2ludmVyLmg+CgpMQU5HVUFHRSAweDA5LDB4MDEKCjEgVkVSU0lPTklORk8KICBGSUxFVkVSU0lPTiAkdjEsJHYyLCR2MywkdjQKICBQUk9EVUNUVkVSU0lPTiAkdjEsJHYyLCR2MywkdjQKICBGSUxFRkxBR1NNQVNLIDB4M2ZMCiNpZmRlZiBfREVCVUcKICBGSUxFRkxBR1MgMHgwMUwKI2Vsc2UKICBGSUxFRkxBR1MgMHgwMEwKI2VuZGlmCiAgRklMRU9TIFZPU19fV0lORE9XUzMyCiAgRklMRVRZUEUgVkZUX0RMTAogIEZJTEVTVUJUWVBFIDB4MEwKQkVHSU4KICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKICAgIEJFR0lOCiAgICAgICAgQkxPQ0sgIjA0MDkwNGIwIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIC8vIFJlcXVpcmVkOgogICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAiVGhlIE9wZW5TU0wgUHJvamVjdCwgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9cXDAiCiAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiJGRlc2NyaXB0aW9uXFwwIgogICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCAiJHZlcnNpb25cXDAiCiAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAiJGJhc2VuYW1lXFwwIgogICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICIkZmlsZW5hbWVcXDAiCiAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJUaGUgT3BlblNTTCBUb29sa2l0XFwwIgogICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCAiJHZlcnNpb25cXDAiCiAgICAgICAgICAgIC8vIE9wdGlvbmFsOgogICAgICAgICAgICAvL1ZBTFVFICJDb21tZW50cyIsICJcXDAiCiAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgqSAxOTk4LTIwMDYgVGhlIE9wZW5TU0wgUHJvamVjdC4gQ29weXJpZ2h0IKkgMTk5NS0xOTk4IEVyaWMgQS4gWW91bmcsIFRpbSBKLiBIdWRzb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXFwwIgogICAgICAgICAgICAvL1ZBTFVFICJMZWdhbFRyYWRlbWFya3MiLCAiXFwwIgogICAgICAgICAgICAvL1ZBTFVFICJQcml2YXRlQnVpbGQiLCAiXFwwIgogICAgICAgICAgICAvL1ZBTFVFICJTcGVjaWFsQnVpbGQiLCAiXFwwIgogICAgICAgIEVORAogICAgRU5ECiAgICBCTE9DSyAiVmFyRmlsZUluZm8iCiAgICBCRUdJTgogICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4NDA5LCAweDRiMAogICAgRU5ECkVORApfX18K