IiBUZXN0cyBmb3IgcmVnZXhwIGluIGxhdGluMSBlbmNvZGluZwoKc2V0IGVuY29kaW5nPWxhdGluMQpzY3JpcHRlbmNvZGluZyBsYXRpbjEKCnNvdXJjZSBjaGVjay52aW0KCmZ1bmMgczplcXVpdmFsZW5jZV90ZXN0KCkKICBsZXQgc3RyID0gIkHAwcLDxMUgQiBDIEQgRcjJyssgRiBHIEggSczNzs8gSiBLIEwgTSBO0SBP0tPU1dbYIFAgUSBSIFMgVCBV2drb3CBWIFcgWCBZ3SBaIGHg4eLj5OUgYiBjIGQgZejp6usgZiBnIGggaezt7u8gaiBrIGwgbSBu8SBv8vP09fb4IHAgcSByIHMgdCB1+fr7/CB2IHcgeCB5/f8geiIKICBsZXQgZ3JvdXBzID0gc3BsaXQoc3RyKQogIGZvciBncm91cDEgaW4gZ3JvdXBzCiAgICAgIGZvciBjIGluIHNwbGl0KGdyb3VwMSwgJ1x6cycpCgkiIG5leHQgc3RhdGVtZW50IGNvbmZpcm1zIHRoYXQgZXF1aXZhbGVuY2UgY2xhc3MgbWF0Y2hlcyBldmVyeQoJIiBjaGFyYWN0ZXIgaW4gZ3JvdXAKICAgICAgICBjYWxsIGFzc2VydF9tYXRjaCgnXltbPScgLiBjIC4gJz1dXSokJywgZ3JvdXAxKQogICAgICAgIGZvciBncm91cDIgaW4gZ3JvdXBzCiAgICAgICAgICBpZiBncm91cDIgIT0gZ3JvdXAxCgkgICAgIiBuZXh0IHN0YXRlbWVudCBjb252ZXJ0cyB0aGF0IGVxdWl2YWxlbmNlIGNsYXNzIGRvZXNuJ3QgbWF0Y2gKCSAgICAiIGEgY2hhcmFjdGVyIGluIGFueSBvdGhlciBncm91cAogICAgICAgICAgICBjYWxsIGFzc2VydF9lcXVhbCgtMSwgbWF0Y2goZ3JvdXAyLCAnW1s9JyAuIGMgLiAnPV1dJykpCiAgICAgICAgICBlbmRpZgogICAgICAgIGVuZGZvcgogICAgICBlbmRmb3IKICBlbmRmb3IKZW5kZnVuYwoKZnVuYyBUZXN0X2VxdWl2YWxlbmNlX3JlMSgpCiAgc2V0IHJlPTEKICBjYWxsIHM6ZXF1aXZhbGVuY2VfdGVzdCgpCmVuZGZ1bmMKCmZ1bmMgVGVzdF9lcXVpdmFsZW5jZV9yZTIoKQogIHNldCByZT0yCiAgY2FsbCBzOmVxdWl2YWxlbmNlX3Rlc3QoKQplbmRmdW5jCgpmdW5jIFRlc3RfcmVjdXJzaXZlX3N1YnN0aXR1dGUoKQogIG5ldwogIHMvXi9cPWV4ZWN1dGUoInMjXiMjZ24iKQogICIgY2hlY2sgd2UgYXJlIG5vdyBub3QgaW4gdGhlIHNhbmRib3gKICBjYWxsIHNldHdpbnZhcigxLCAnbXl2YXInLCAxKQogIGJ3aXBlIQplbmRmdW5jCgpmdW5jIFRlc3RfbmVzdGVkX2JhY2tyZWZzKCkKICAiIENoZWNrIGV4YW1wbGUgaW4gY2hhbmdlLnR4dC4KICBuZXcKICBmb3IgcmUgaW4gcmFuZ2UoMCwgMikKICAgIGV4ZSAnc2V0IHJlPScgLiByZQogICAgY2FsbCBzZXRsaW5lKDEsICdhYSBhYiB4JykKICAgIDFzL1woXChhW2EtZF0gXCkqXClcKHhcKS8tXDEtIC1cMi0gLVwzLS8KICAgIGNhbGwgYXNzZXJ0X2VxdWFsKCctYWEgYWIgLSAtYWIgLSAteC0nLCBnZXRsaW5lKDEpKQoKICAgIGNhbGwgYXNzZXJ0X2VxdWFsKCctYWEgYWIgLSAtYWIgLSAteC0nLCBzdWJzdGl0dXRlKCdhYSBhYiB4JywgJ1woXChhW2EtZF0gXCkqXClcKHhcKScsICctXDEtIC1cMi0gLVwzLScsICcnKSkKICBlbmRmb3IKICBid2lwZSEKICBzZXQgcmU9MAplbmRmdW5jCgpmdW5jIFRlc3RfZW93X3dpdGhfb3B0aW9uYWwoKQogIGxldCBleHBlY3RlZCA9IFsnYWJjIGRlZicsICdhYmMnLCAnZGVmJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJyddCiAgZm9yIHJlIGluIHJhbmdlKDAsIDIpCiAgICBleGUgJ3NldCByZT0nIC4gcmUKICAgIGxldCBhY3R1YWwgPSBtYXRjaGxpc3QoJ2FiYyBkZWYnLCAnXChhYmNcPlwpXD9ccypcKGRlZlwpJykKICAgIGNhbGwgYXNzZXJ0X2VxdWFsKGV4cGVjdGVkLCBhY3R1YWwpCiAgZW5kZm9yCmVuZGZ1bmMKCmZ1bmMgVGVzdF9iYWNrcmVmKCkKICBuZXcKICBjYWxsIHNldGxpbmUoMSwgWydvbmUnLCAndHdvJywgJ3RocmVlJywgJ2ZvdXInLCAnZml2ZSddKQogIGNhbGwgYXNzZXJ0X2VxdWFsKDMsIHNlYXJjaCgnXCUjPTFcKGVcKVwxJykpCiAgY2FsbCBhc3NlcnRfZXF1YWwoMywgc2VhcmNoKCdcJSM9MlwoZVwpXDEnKSkKICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBzZWFyY2goIlxcJSM9MVxcKGVcXDFcXCkiKScsICdFNjU6JykKICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBzZWFyY2goIlxcJSM9MlxcKGVcXDFcXCkiKScsICdFNjU6JykKICBid2lwZSEKZW5kZnVuYwoKZnVuYyBUZXN0X211bHRpX2ZhaWx1cmUoKQogIHNldCByZT0xCiAgY2FsbCBhc3NlcnRfZmFpbHMoJy9hKionLCAnRTYxOicpCiAgY2FsbCBhc3NlcnRfZmFpbHMoJy9hKlwrJywgJ0U2MjonKQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCcvYVx7YX0nLCAnRTU1NDonKQogIHNldCByZT0yCiAgY2FsbCBhc3NlcnRfZmFpbHMoJy9hKionLCAnRTg3MTonKQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCcvYSpcKycsICdFODcxOicpCiAgY2FsbCBhc3NlcnRfZmFpbHMoJy9hXHthfScsICdFNTU0OicpCiAgc2V0IHJlPTAKZW5kZnVuYwoKZnVuYyBUZXN0X3JlY3Vyc2l2ZV9hZGRzdGF0ZSgpCiAgIiBUaGlzIHdpbGwgY2FsbCBhZGRzdGF0ZSgpIHJlY3Vyc2l2ZWx5IHVudGlsIGl0IHJ1bnMgaW50byB0aGUgbGltaXQuCiAgbGV0IGxudW0gPSBzZWFyY2goJ1x2KCgpezMyOH0pezM4OX0nKQogIGNhbGwgYXNzZXJ0X2VxdWFsKDAsIGxudW0pCmVuZGZ1bmMKCmZ1bmMgVGVzdF9vdXRfb2ZfbWVtb3J5KCkKICBuZXcKICBzL14vLG4KICAiIFRoaXMgd2lsbCBiZSBzbG93Li4uCiAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgc2VhcmNoKCJcXHYoKG58fDwpKyk7IiknLCAnRTM2MzonKQplbmRmdW5jCgpmdW5jIFRlc3RfZ2V0X2VxdWlfY2xhc3MoKQogIG5ldwogICIgSW5jb21wbGV0ZSBlcXVpdmFsZW5jZSBjbGFzcyBjYXVzZWQgaW52YWxpZCBtZW1vcnkgYWNjZXNzCiAgcy9eL1tbPQogIGNhbGwgYXNzZXJ0X2VxdWFsKDEsIHNlYXJjaChnZXRsaW5lKDEpKSkKICBzLy4qL1tbLgogIGNhbGwgYXNzZXJ0X2VxdWFsKDEsIHNlYXJjaChnZXRsaW5lKDEpKSkKZW5kZnVuYwoKZnVuYyBUZXN0X3JleF9pbml0KCkKICBzZXQgbm9pbmNzZWFyY2gKICBzZXQgcmU9MQogIG5ldwogIHNldGxvY2FsIGlza2V5d29yZD1hLXoKICBjYWxsIHNldGxpbmUoMSwgWydhYmMnLCAnQUJDJ10pCiAgY2FsbCBhc3NlcnRfZXF1YWwoMSwgc2VhcmNoKCdbWzprZXl3b3JkOl1dJykpCiAgbmV3CiAgc2V0bG9jYWwgaXNrZXl3b3JkPUEtWgogIGNhbGwgc2V0bGluZSgxLCBbJ2FiYycsICdBQkMnXSkKICBjYWxsIGFzc2VydF9lcXVhbCgyLCBzZWFyY2goJ1tbOmtleXdvcmQ6XV0nKSkKICBid2lwZSEKICBid2lwZSEKICBzZXQgcmU9MAplbmRmdW5jCgpmdW5jIFRlc3RfcmFuZ2Vfd2l0aF9uZXdsaW5lKCkKICBuZXcKICBjYWxsIHNldGxpbmUoMSwgImEiKQogIGNhbGwgYXNzZXJ0X2VxdWFsKDAsIHNlYXJjaCgiWyAtKlxcbi0gXSIpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKDAsIHNlYXJjaCgiWyAtKlxcdC1cXG5dIikpCiAgYndpcGUhCmVuZGZ1bmMKCmZ1bmMgVGVzdF9wYXR0ZXJuX2NvbXBpbGVfc3BlZWQoKQogIENoZWNrT3B0aW9uIHNwZWxsY2FwY2hlY2sKICBDaGVja0Z1bmN0aW9uIHJlbHRpbWVmbG9hdAoKICBsZXQgc3RhcnQgPSByZWx0aW1lKCkKICAiIHRoaXMgdXNlZCB0byBiZSB2ZXJ5IHNsb3csIG5vdCBpdCBzaG91bGQgYmUgYWJvdXQgYSBzZWNvbmQKICBzZXQgc3BjPVxcdigoKCgoTnh4eHh4eHgmJnh4eHgpezE3OX0pKykrKSspezE3OX0KICBjYWxsIGFzc2VydF9pbnJhbmdlKDAuMDEsIDEwLjAsIHJlbHRpbWVmbG9hdChyZWx0aW1lKHN0YXJ0KSkpCiAgc2V0IHNwYz0KZW5kZnVuYwoKIiBUZXN0cyBmb3IgcmVnZXhwIHBhdHRlcm5zIHdpdGhvdXQgbXVsdGktYnl0ZSBzdXBwb3J0LgpmdW5jIFRlc3RfcmVnZXhwX3NpbmdsZV9saW5lX3BhdCgpCiAgIiB0bCBpcyBhIExpc3Qgb2YgTGlzdHMgd2l0aDoKICAiICAgIHJlZ2V4cCBlbmdpbmVzIHRvIHRlc3QKICAiICAgICAgIDAgLSB0ZXN0IHdpdGggJ3JlZ2V4cGVuZ2luZScgdmFsdWVzIDAgYW5kIDEKICAiICAgICAgIDEgLSB0ZXN0IHdpdGggJ3JlZ2V4cGVuZ2luZScgdmFsdWVzIDAgYW5kIDIKICAiICAgICAgIDIgLSB0ZXN0IHdpdGggJ3JlZ2V4cGVuZ2luZScgdmFsdWVzIDAsIDEgYW5kIDIKICAiICAgIHJlZ2V4cCBwYXR0ZXJuCiAgIiAgICB0ZXh0IHRvIHRlc3QgdGhlIHBhdHRlcm4gb24KICAiICAgIGV4cGVjdGVkIG1hdGNoIChvcHRpb25hbCkKICAiICAgIGV4cGVjdGVkIHN1Ym1hdGNoIDEgKG9wdGlvbmFsKQogICIgICAgZXhwZWN0ZWQgc3VibWF0Y2ggMiAob3B0aW9uYWwpCiAgIiAgICBldGMuCiAgIiAgV2hlbiB0aGVyZSBpcyBubyBtYXRjaCB1c2Ugb25seSB0aGUgZmlyc3QgdHdvIGl0ZW1zLgogIGxldCB0bCA9IFtdCgogIGNhbGwgYWRkKHRsLCBbMiwgJ2FiJywgJ2FhYicsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2InLCAnYWJjZGVmJywgJ2InXSkKICBjYWxsIGFkZCh0bCwgWzIsICdiYyonLCAnYWJjY2NjZGVmJywgJ2JjY2NjJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYmNcey19JywgJ2FiY2NjY2RlZicsICdiJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYmNcey19XChkXCknLCAnYWJjY2NjZGVmJywgJ2JjY2NjZCcsICdkJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYmMqJywgJ2FiYmRlZicsICdiJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYyonLCAnY2NjJywgJ2NjYyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2JjKicsICdhYmRlZicsICdiJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYyonLCAnYWJkZWYnLCAnJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYmNcKycsICdhYmNjY2NkZWYnLCAnYmNjY2MnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdiY1wrJywgJ2FiZGVmJ10pICIgbm8gbWF0Y2gKICAiIG1hdGNoIGVzY2FwZSBjaGFyYWN0ZXIgaW4gYSBzdHJpbmcKICBjYWxsIGFkZCh0bCwgWzIsICcuXGUuJywgIm9uZVw8RXNjPnR3byIsICJlXDxFc2M+dCJdKQogICIgbWF0Y2ggYmFja3NwYWNlIGNoYXJhY3RlciBpbiBhIHN0cmluZwogIGNhbGwgYWRkKHRsLCBbMiwgJy5cYi4nLCAib25lXDxDLUg+dHdvIiwgImVcPEMtSD50Il0pCiAgIiBtYXRjaCBuZXdsaW5lIGNoYXJhY3RlciBpbiBhIHN0cmluZwogIGNhbGwgYWRkKHRsLCBbMiwgJ29cbmInLCAiZm9vXG5iYXIiLCAib1xuYiJdKQoKICAiIG9wZXJhdG9yIFx8CiAgY2FsbCBhZGQodGwsIFsyLCAnYVx8YWInLCAnY2FiZCcsICdhJ10pICIgYWx0ZXJuYXRpb24gaXMgb3JkZXJlZAoKICBjYWxsIGFkZCh0bCwgWzIsICdjXD8nLCAnY2NiJywgJ2MnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdiY1w/JywgJ2FiZCcsICdiJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYmNcPycsICdhYmNjZCcsICdiYyddKQoKICBjYWxsIGFkZCh0bCwgWzIsICdcdmF7MX0nLCAnYWInLCAnYSddKQoKICBjYWxsIGFkZCh0bCwgWzIsICdcdmF7Mn0nLCAnYWEnLCAnYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdmF7Mn0nLCAnY2FhZCcsICdhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2YXsyfScsICdhYmEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdmF7Mn0nLCAnYWInXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdmF7Mn0nLCAnYWJhYScsICdhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2YXsyfScsICdhYWEnLCAnYWEnXSkKCiAgY2FsbCBhZGQodGwsIFsyLCAnXHZiezF9JywgJ2FiY2EnLCAnYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2YmF7Mn0nLCAnYWJhYScsICdiYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdmJhezN9JywgJ2FhYmFhYyddKQoKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhYil7MX0nLCAnYWInLCAnYWInLCAnYWInXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhYil7MX0nLCAnZGFiYycsICdhYicsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGFiKXsxfScsICdhY2InXSkKCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYWIpezAsMn0nLCAnYWNiJywgIiIsICIiXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhYil7MCwyfScsICdhYicsICdhYicsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGFiKXsxLDJ9JywgJ2FiJywgJ2FiJywgJ2FiJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYWIpezEsMn0nLCAnYWJhYmMnLCAnYWJhYicsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGFiKXsyLDR9JywgJ2FiYWJjYWInLCAnYWJhYicsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGFiKXsyLDR9JywgJ2FiY2FiYWJhJywgJ2FiYWInLCAnYWInXSkKCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYWIpezJ9JywgJ2FiYWInLCAnYWJhYicsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGFiKXsyfScsICdjZGFiYWJlJywgJ2FiYWInLCAnYWInXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhYil7Mn0nLCAnYWJhYyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGFiKXsyfScsICdhYmFjYWJhYicsICdhYmFiJywgJ2FiJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoKGFiKXsyfSl7Mn0nLCAnYWJhYmFiYWInLCAnYWJhYmFiYWInLCAnYWJhYicsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KChhYil7Mn0pezJ9JywgJ2FiYWNhYmFiYWJhYicsICdhYmFiYWJhYicsICdhYmFiJywgJ2FiJ10pCgogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGF7MX0pezF9JywgJ2EnLCAnYScsICdhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYXsyfSl7MX0nLCAnYWEnLCAnYWEnLCAnYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhezJ9KXsxfScsICdhYWFjJywgJ2FhJywgJ2FhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYXsyfSl7MX0nLCAnZGFhYWMnLCAnYWEnLCAnYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhezF9KXsyfScsICdkYWFhYycsICdhYScsICdhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYXsxfSl7Mn0nLCAnYWFhJywgJ2FhJywgJ2EnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhezJ9KSsnLCAnYWRhYWMnLCAnYWEnLCAnYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhezJ9KSsnLCAnYWEnLCAnYWEnLCAnYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhezJ9KXsxfScsICdhYScsICdhYScsICdhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGF7MX0pezJ9JywgJ2FhJywgJ2FhJywgJ2EnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhezF9KXsxfScsICdhJywgJ2EnLCAnYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGF7Mn0pezJ9JywgJ2FhYWEnLCAnYWFhYScsICdhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGF7Mn0pezJ9JywgJ2FhYWJhYWFhJywgJ2FhYWEnLCAnYWEnXSkKCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYSspezJ9JywgJ2RhZGFhYycsICdhYScsICdhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYXszfSl7Mn0nLCAnYWFhYWFhYScsICdhYWFhYWEnLCAnYWFhJ10pCgogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGF7MSwyfSl7Mn0nLCAnZGFhYWMnLCAnYWFhJywgJ2EnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhezEsM30pezJ9JywgJ2RhYWFhYycsICdhYWFhJywgJ2EnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhezEsM30pezJ9JywgJ2RhYWFhYWMnLCAnYWFhYWEnLCAnYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhezEsM30pezN9JywgJ2RhYWMnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhezEsMn0pezJ9JywgJ2RhYyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGErKSsnLCAnZGFhYycsICdhYScsICdhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGErKSsnLCAnYWFhJywgJ2FhYScsICdhYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhKyl7MSwyfScsICdhYWEnLCAnYWFhJywgJ2FhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGErKShhKyknLCAnYWFhJywgJ2FhYScsICdhYScsICdhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYXszfSkrJywgJ2RhYWFhYycsICdhYWEnLCAnYWFhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYXxifGMpKycsICdhYWNiJywgJ2FhY2InLCAnYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGF8YnxjKXsyfScsICdhYmNiJywgJ2FiJywgJ2InXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhYmMpezJ9JywgJ2FiY2FiZCcsIF0pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYWJjKXsyfScsICdhYmRhYmNhYmMnLCdhYmNhYmMnLCAnYWJjJ10pCgogIGNhbGwgYWRkKHRsLCBbMiwgJ2EqJywgJ2NjJywgJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGEqKSsnLCAnY2MnLCAnJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoKGFiKSspKycsICdhYicsICdhYicsICdhYicsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KCgoYWIpKykrKSsnLCAnYWInLCAnYWInLCAnYWInLCAnYWInLCAnYWInXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdigoKGFiKSspKykrJywgJ2RhYmFiYycsICdhYmFiJywgJ2FiYWInLCAnYWJhYicsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGF7MCwyfSkrJywgJ2NjJywgJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGEqKSsnLCAnJywgJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KChhKikrKSsnLCAnJywgJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KChhYikqKSsnLCAnJywgJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2YXsxLDN9JywgJ2FhYicsICdhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2YXsyLDN9JywgJ2FiYWEnLCAnYWEnXSkKCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoKGFiKSt8YyopKycsICdhYmNjY2FiYScsICdhYmNjY2FiJywgJycsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGF7Mn0pfChiezN9KScsICdiYmFiYmJiJywgJ2JiYicsICcnLCAnYmJiJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHZhezJ9fGJ7Mn0nLCAnYWJhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGEpK3woYykrJywgJ2JiYWNiYWFjYmJiJywgJ2EnLCAnYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2YWJ7MiwzfWMnLCAnYWFiYmNjY2NjY2NjY2NjY2MnLCAnYWJiYyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2YWJ7MiwzfWMnLCAnYWFiYmJjY2NjY2NjY2NjY2NjJywgJ2FiYmJjJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHZhYnsyLDN9Y2R7MiwzfWUnLCAnYWFiYmJjZGRlZScsICdhYmJiY2RkZSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2YShiYyl7Mn1kJywgJ2FhYmNiZmJjJyBdKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2YSphezJ9JywgJ2EnLCBdKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2YSphezJ9JywgJ2FhJywgJ2FhJyBdKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2YSphezJ9JywgJ2FhYScsICdhYWEnIF0pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHZhKmF7Mn0nLCAnYmJiYWJjYycsIF0pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHZhKmIqfGEqYyonLCAnYScsICdhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHZhezF9YnsxfXxhezF9YnsxfScsICcnXSkKCiAgIiBzdWJtYXRjaGVzCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYSknLCAnYWInLCAnYScsICdhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYSkoYiknLCAnYWInLCAnYWInLCAnYScsICdiJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYWIpKGIpKGMpJywgJ2FiYmMnLCAnYWJiYycsICdhYicsICdiJywgJ2MnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdigoYSkoYikpJywgJ2FiJywgJ2FiJywgJ2FiJywgJ2EnLCAnYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGEpfChiKScsICdhYicsICdhJywgJ2EnXSkKCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYSopKycsICdhYWFhJywgJ2FhYWEnLCAnJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAneCcsICdhYmNkZWYnXSkKCiAgIgogICIgU2ltcGxlIHRlc3RzCiAgIgoKICAiIFNlYXJjaCBzaW5nbGUgZ3JvdXBzCiAgY2FsbCBhZGQodGwsIFsyLCAnYWInLCAnYWFiJywgJ2FiJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYWInLCAnYmFjZWQnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhYicsICcgICAgICAgICAgICAgICAgICAgIGFiICAgICAgICAgICAnLCAnYWInXSkKCiAgIiBTZWFyY2ggbXVsdGktbW9kaWZpZXJzCiAgY2FsbCBhZGQodGwsIFsyLCAneConLCAneGNkJywgJ3gnXSkKICBjYWxsIGFkZCh0bCwgWzIsICd4KicsICd4eHh4eHh4eHh4eHh4eHh4c29maWppb2pnZicsICd4eHh4eHh4eHh4eHh4eHh4J10pCiAgIiBlbXB0eSBtYXRjaCBpcyBnb29kCiAgY2FsbCBhZGQodGwsIFsyLCAneConLCAnYWJjZG9paicsICcnXSkKICAiIG5vIG1hdGNoIGhlcmUKICBjYWxsIGFkZCh0bCwgWzIsICd4XCsnLCAnYWJjZG9pbiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ3hcKycsICdhYmNkZW9pamRmeHhpdWhmaWonLCAneHgnXSkKICBjYWxsIGFkZCh0bCwgWzIsICd4XCsnLCAneHh4eHgnLCAneHh4eHgnXSkKICBjYWxsIGFkZCh0bCwgWzIsICd4XCsnLCAnYWJjIHggc2l1ZmhpdXNoIHh4eHh4eHh4eCcsICd4J10pCiAgY2FsbCBhZGQodGwsIFsyLCAneFw9JywgJ3ggc2Rmb2lqJywgJ3gnXSkKICBjYWxsIGFkZCh0bCwgWzIsICd4XD0nLCAnYWJjIHNmb2lqJywgJyddKSAiIGVtcHR5IG1hdGNoIGlzIGdvb2QKICBjYWxsIGFkZCh0bCwgWzIsICd4XD0nLCAneHh4eHh4eHh4IGMnLCAneCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ3hcPycsICd4IHNkZm9paicsICd4J10pCiAgIiBlbXB0eSBtYXRjaCBpcyBnb29kCiAgY2FsbCBhZGQodGwsIFsyLCAneFw/JywgJ2FiYyBzZm9paicsICcnXSkKICBjYWxsIGFkZCh0bCwgWzIsICd4XD8nLCAneHh4eHh4eHh4eCBjJywgJ3gnXSkKCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7MCwwfScsICdhYmNkZmRvaWonLCAnJ10pCiAgIiBzYW1lIHRoaW5nIGFzICdhPycKICBjYWxsIGFkZCh0bCwgWzIsICdhXHswLDF9JywgJ2FzaXViaWQgYXh4eGFhYScsICdhJ10pCiAgIiBzYW1lIHRoaW5nIGFzICdhXHswLDF9JwogIGNhbGwgYWRkKHRsLCBbMiwgJ2FcezEsMH0nLCAnYXNpdWJpZCBheHh4YWFhJywgJ2EnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhXHszLDZ9JywgJ2FhIHNpb2Z1aCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2FcezMsNn0nLCAnYWFhYWEgYXNmb2lqIGFmYWEnLCAnYWFhYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhXHszLDZ9JywgJ2FhYWFhYWFhJywgJ2FhYWFhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2FcezB9JywgJ2Fzb2l1aicsICcnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhXHsyfScsICdhYWFhJywgJ2FhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7Mn0nLCAnaXVhc2ggZml1c2FoZmxpdXNhaCBmaXVzaGZpbHVzaGZpIHVoc2FpZnVoIGFza2ZqIG5hc2Z2aXVzIGFmZyBhYWFhIHNmaXVodWhpdXNoZicsICdhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2FcezJ9JywgJ2FiY2RlZmdoaWprbG1ub3BxcmVzdHV2d3h5ejEyMzQ1Njc4OTAnXSkKICAiIHNhbWUgdGhpbmcgYXMgJ2EqJwogIGNhbGwgYWRkKHRsLCBbMiwgJ2FcezAsfScsICdvaWogc2RpZ2Z1c25mJywgJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2FcezAsfScsICdhYWFhYSBhYScsICdhYWFhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2FcezIsfScsICdzZGZpb3VnamRzYWZnJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7Mix9JywgJ2FhYWFhc2ZvaWogJywgJ2FhYWFhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7NSx9JywgJ3h4YWFhYXh4eCAnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhXHs1LH0nLCAneHhhYWFhYXh4eCAnLCAnYWFhYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhXHssMH0nLCAnb2lkZmd1aWggaXVoaSBoaXUgYWFhYScsICcnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhXHssNX0nLCAnYWJjZCcsICdhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7LDV9JywgJ2FhYWFhYWFhYWEnLCAnYWFhYWEnXSkKICAiIGxlYWRpbmcgc3RhciBhcyBub3JtYWwgY2hhciB3aGVuIFx7fSBmb2xsb3dzCiAgY2FsbCBhZGQodGwsIFsyLCAnXipcezQsfSQnLCAnKioqJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXipcezQsfSQnLCAnKioqKicsICcqKioqJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXipcezQsfSQnLCAnKioqKionLCAnKioqKionXSkKICAiIHNhbWUgdGhpbmcgYXMgJ2EqJwogIGNhbGwgYWRkKHRsLCBbMiwgJ2Fce30nLCAnYmJiY2RkaXVoZmNkJywgJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2Fce30nLCAnYWFhYWlvdWRmaCBjb2lzZiBqZGEnLCAnYWFhYSddKQoKICBjYWxsIGFkZCh0bCwgWzIsICdhXHstMCwwfScsICdhYmNkZmRvaWonLCAnJ10pCiAgIiBhbnRpLWdyZWVkeSB2ZXJzaW9uIG9mICdhPycKICBjYWxsIGFkZCh0bCwgWzIsICdhXHstMCwxfScsICdhc2l1YmlkIGF4eHhhYWEnLCAnJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7LTMsNn0nLCAnYWEgc2lvZnVoJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7LTMsNn0nLCAnYWFhYWEgYXNmb2lqIGFmYWEnLCAnYWFhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7LTMsNn0nLCAnYWFhYWFhYWEnLCAnYWFhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7LTB9JywgJ2Fzb2l1aicsICcnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhXHstMn0nLCAnYWFhYScsICdhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2Fcey0yfScsICdhYmNkZWZnaGlqa2xtbm9wcXJlc3R1dnd4eXoxMjM0NTY3ODkwJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7LTAsfScsICdvaWogc2RpZ2Z1c25mJywgJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2Fcey0wLH0nLCAnYWFhYWEgYWEnLCAnJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7LTIsfScsICdzZGZpb3VnamRzYWZnJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7LTIsfScsICdhYWFhYXNmb2lqICcsICdhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2Fcey0sMH0nLCAnb2lkZmd1aWggaXVoaSBoaXUgYWFhYScsICcnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhXHstLDV9JywgJ2FiY2QnLCAnJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7LSw1fScsICdhYWFhYWFhYWFhJywgJyddKQogICIgYW50aS1ncmVlZHkgdmVyc2lvbiBvZiAnYSonCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7LX0nLCAnYmJiY2RkaXVoZmNkJywgJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2Fcey19JywgJ2FhYWFpb3VkZmggY29pc2YgamRhJywgJyddKQoKICAiIFRlc3QgZ3JvdXBzIG9mIGNoYXJhY3RlcnMgYW5kIHN1Ym1hdGNoZXMKICBjYWxsIGFkZCh0bCwgWzIsICdcKGFiY1wpKicsICdhYmNhYmNhYmMnLCAnYWJjYWJjYWJjJywgJ2FiYyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1woYWJcKVwrJywgJ2FiYWJhYmFhYWFhJywgJ2FiYWJhYicsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1woYWJhYWFhYVwpKmNkJywgJ2NkJywgJ2NkJywgJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1wodGVzdDFcKVw/IFwodGVzdDJcKVw/JywgJ3Rlc3QxIHRlc3QzJywgJ3Rlc3QxICcsICd0ZXN0MScsICcnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcKHRlc3QxXClcPSBcKHRlc3QyXCkgXCh0ZXN0NDQ0M1wpXD0nLCAnIHRlc3QyIHRlc3Q0NDQzIHl1cGlpaWlpaWlpaWlpJywgJyB0ZXN0MiB0ZXN0NDQ0MycsICcnLCAndGVzdDInLCAndGVzdDQ0NDMnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcKFwoc3ViMVwpIGhlbGxvIFwoc3ViIDJcKVwpJywgJ2FzdGVyaXggc3ViMSBoZWxsbyBzdWIgMiBvYmVsaXgnLCAnc3ViMSBoZWxsbyBzdWIgMicsICdzdWIxIGhlbGxvIHN1YiAyJywgJ3N1YjEnLCAnc3ViIDInXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcKFwoXCh5eXh4enpcKVwpXCknLCAnYWJjZGRkc2ZpdXNmeXl6enh4eXl4eHp6JywgJ3l5eHh6eicsICd5eXh4enonLCAneXl4eHp6JywgJ3l5eHh6eiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KChhYikrfGMrKSsnLCAnYWJjY2NhYmEnLCAnYWJjY2NhYicsICdhYicsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KChhYil8YyopKycsICdhYmNjY2FiYScsICdhYmNjY2FiJywgJycsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGEoYyopK2IpKycsICdhY2JhYmFiYWFhJywgJ2FjYmFiYWInLCAnYWInLCAnJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYXxiKikrJywgJ2FhYWEnLCAnYWFhYScsICcnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdccConLCAnYeEgCScsICdh4SAnXSkKCiAgIiBUZXN0IGdyZWVkeS1uZXNzIGFuZCBsYXp5LW5lc3MKICBjYWxsIGFkZCh0bCwgWzIsICdhXHstMiw3fScsJ2FhYWFhYWFhYWFhYWEnLCAnYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhXHstMiw3fXgnLCdhYWFhYWFhYWF4JywgJ2FhYWFhYWF4J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVx7Miw3fScsJ2FhYWFhYWFhYWFhYWFhYWFhYWFhJywgJ2FhYWFhYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhXHsyLDd9eCcsJ2FhYWFhYWFhYXgnLCAnYWFhYWFhYXgnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdngoLnstLDh9KXl6KC4qKScsJ3hheXhheXp4YXl6eGF5eicsJ3hheXhheXp4YXl6eGF5eicsJ2F5eGEnLCd4YXl6eGF5eiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2eCguKil5eiguKiknLCd4YXl4YXl6eGF5enhheXonLCd4YXl4YXl6eGF5enhheXonLCAnYXl4YXl6eGF5enhhJywnJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYoYXsxLDJ9KXstMiwzfScsJ2FhYWFhYWEnLCdhYWFhJywnYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhey0xLDN9KSsnLCAnYWEnLCAnYWEnLCAnYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ15cc1x7LX1cenNcKCB4XHx4JFwpJywgJyB4JywgJyB4JywgJyB4J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXlxzXHstfVx6c1woeFx8IHgkXCknLCAnIHgnLCAnIHgnLCAnIHgnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdeXHNcey19XHplXCh4XHwgeCRcKScsICcgeCcsICcnLCAnIHgnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdeXChcc1x7LX1cKVwoeFx8IHgkXCknLCAnIHgnLCAnIHgnLCAnJywgJyB4J10pCgogICIgVGVzdCBDaGFyYWN0ZXIgY2xhc3NlcwogIGNhbGwgYWRkKHRsLCBbMiwgJ1xkXCtlXGRcZCcsJ3Rlc3QgMTBlMjMgZmQnLCcxMGUyMyddKQoKICAiIFRlc3QgY29sbGVjdGlvbnMgYW5kIGNoYXJhY3RlciByYW5nZSBbXQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2W2FdJywgJ2FiY2QnLCAnYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2FbYmNkXScsICdhYmNkJywgJ2FiJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVtiLWRdJywgJ2FjYmQnLCAnYWMnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbYS1kXVtlLWZdW3gteF1kJywgJ2NleGR4eCcsICdjZXhkJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHZbWzphbHBoYTpdXSsnLCAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo2JywnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbWzphbHBoYTpdXCtdJywgJzZ4OCcsJ3gnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbXmFiY11cKycsJ2FiY2FiY2FiYyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1teYWJjXScsJ2RlZmdoaWFzaWp2b2luYXNvaXVuYnZiJywnZCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1teYWJjXVwrJywnZGRkZGRkZGEnLCdkZGRkZGRkJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnW15hLWRdXCsnLCdhYWFBQUFaSUhGTkNkZGQnLCdBQUFaSUhGTkMnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbYS1mXSonLCdpaWlpaWlpaScsJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1thLWZdKicsJ2FiY2RlZmdoJywnYWJjZGVmJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnW15hLWZdXCsnLCdhYmNkZWZnaCcsJ2doJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnW2EtY11cey0zLDZ9JywnYWJjYWJjJywnYWJjJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnW15bOmFscGhhOl1dXCsnLCdhYmNjY2FkZm9pajc3ODd5c2YyODd5cm5jY2R1JywnNzc4NyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1stYV0nLCAnLScsICctJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnW2EtXScsICctJywgJy0nXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbYS1mXSpcYycsJ0FCQ0RFRkdIJywnQUJDREVGJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnW2FiY11beHl6XVxjJywnLWFmLUFGLUJZLS0nLCdCWSddKQogICIgZmlsZW5hbWUgcmVnZXhwCiAgY2FsbCBhZGQodGwsIFsyLCAnWy0uL1s6YWxudW06XV9+XVwrJywgJ2xvZzEzLmZpbGUnLCAnbG9nMTMuZmlsZSddKQogICIgc3BlY2lhbCBjaGFycwogIGNhbGwgYWRkKHRsLCBbMiwgJ1tcXVxeXC1cXF1cKycsICdcXlxcXC1cLS0tXicsICdcXlxcXC1cLS0tXiddKQogICIgY29sbGF0aW9uIGVsZW0KICBjYWxsIGFkZCh0bCwgWzIsICdbWy5hLl1dXCsnLCAnYWEnLCAnYWEnXSkKICAiIG1pZGRsZSBvZiByZWdleHAKICBjYWxsIGFkZCh0bCwgWzIsICdhYmNbMC05XSpkZGQnLCAnc2l1aGFiYyBpaSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2FiY1swLTldKmRkZCcsICdhZGYgYWJjNDQ0ODJkZGQgb2lqcycsICdhYmM0NDQ4MmRkZCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfWzAtOV1cKycsICdhc2ZpOTg4OHUnLCAnOTg4OCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1swLTlcbl1cKycsICdhc2ZpOTg4OHUnLCAnOTg4OCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfWzAtOV1cKycsICJhc2ZpXG45ODg4dSIsICJcbjk4ODgiXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcX2YnLCAiICBcbmEgIiwgIlxuIl0pCiAgY2FsbCBhZGQodGwsIFsyLCAnXF9mXCsnLCAiICBcbmEgIiwgIlxuYSJdKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1swLTlBLVphLXotXy5dXCsnLCAiIEAwX2EuQS17ICIsICIwX2EuQS0iXSkKCiAgIiBUZXN0IHN0YXJ0L2VuZCBvZiBsaW5lLCBzdGFydC9lbmQgb2YgZmlsZQogIGNhbGwgYWRkKHRsLCBbMiwgJ15hLicsICJhX1xuYiAiLCAiYV8iXSkKICBjYWxsIGFkZCh0bCwgWzIsICdeYS4nLCAiYiBhIFxuYV8iXSkKICBjYWxsIGFkZCh0bCwgWzIsICcuYSQnLCAiIGFcbiAiXSkKICBjYWxsIGFkZCh0bCwgWzIsICcuYSQnLCAiIGEgYlxuX2EiLCAiX2EiXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcJV5hLicsICJhIGFcbmEiLCAiYSAiXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcJV5hJywgIiBhIFxuYSAiXSkKICBjYWxsIGFkZCh0bCwgWzIsICcuYVwlJCcsICIgYVxuICJdKQogIGNhbGwgYWRkKHRsLCBbMiwgJy5hXCUkJywgIiBhXG5fYSIsICJfYSJdKQoKICAiIFRlc3QgcmVjb2duaXRpb24gb2YgY2hhcmFjdGVyIGNsYXNzZXMKICBjYWxsIGFkZCh0bCwgWzIsICdbMC03XVwrJywgJ3gwMTIzNDU2Nzg5eCcsICcwMTIzNDU2NyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1teMC03XVwrJywgJzBhO1grJSA4OTcnLCAnYTtYKyUgODknXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbMC05XVwrJywgJ3gwMTIzNDU2Nzg5eCcsICcwMTIzNDU2Nzg5J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnW14wLTldXCsnLCAnMGE7WCslIDknLCAnYTtYKyUgJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnWzAtOWEtZkEtRl1cKycsICd4MDE4OWFiY2RlZmcnLCAnMDE4OWFiY2RlZiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1teMC05QS1GYS1mXVwrJywgJzAxODlnO1grJSBhYicsICdnO1grJSAnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbYS16X0EtWjAtOV1cKycsICc7K2Fzb19TZk9paiAnLCAnYXNvX1NmT2lqJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnW15hLXpfQS1aMC05XVwrJywgJ2FTb187KyUgc2ZPaWonLCAnOyslICddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1thLXpfQS1aXVwrJywgJzBhYnl6X0FCWVo7JywgJ2FieXpfQUJZWiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1teYS16X0EtWl1cKycsICdhYkFCXzA5OyslIHl6WVonLCAnMDk7KyUgJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnW2Etel1cKycsICcwYWJjeHl6MScsICdhYmN4eXonXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbYS16XVwrJywgJ0FhYnh5elonLCAnYWJ4eXonXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbXmEtel1cKycsICdhO1gwOSslIHgnLCAnO1gwOSslICddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1teYS16XVwrJywgJ2FiWDA7JXl6JywgJ1gwOyUnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbYS16QS1aXVwrJywgJzBhYkFCeHpYWjknLCAnYWJBQnh6WFonXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbXmEtekEtWl1cKycsICdhYjA5XzsrIFhaJywgJzA5XzsrICddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1tBLVpdXCsnLCAnYUFCWFlaeicsICdBQlhZWiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1teQS1aXVwrJywgJ0FCeDA7JVlaJywgJ3gwOyUnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbYS16XVwrXGMnLCAnMGFieHl6QUJYWVo7JywgJ2FieHl6QUJYWVonXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbQS1aXVwrXGMnLCAnMGFiQUJ4elhaOScsICdhYkFCeHpYWiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xjW15hLXpdXCsnLCAnYWIwOV87KyBYWicsICcwOV87KyAnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcY1teQS1aXVwrJywgJ2FiMDlfOysgWFonLCAnMDlfOysgJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXENbXkEtWl1cKycsICdBQkNPSUpERU9JRk5TRCBqc2ZvaWogc2EnLCAnIGpzZm9paiBzYSddKQoKICAiIFRlc3RzIGZvciBceiBmZWF0dXJlcwogICIgbWF0Y2ggZW5kcyBhdCBcemUKICBjYWxsIGFkZCh0bCwgWzIsICd4eCBcemUgdGVzdCcsICd4eCAnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhYmNcemVlbmQnLCAnb2lqIGFiY2VuZCcsICdhYmMnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhYVx6ZWJiXHxhYXh4JywgJyBhYWJiICcsICdhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2FhXHplYmJcfGFheHgnLCAnIGFheHggJywgJ2FheHgnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhYWJiXHxhYVx6ZWJiJywgJyBhYWJiICcsICdhYWJiJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYWFcemViYlx8YWFlYmInLCAnIGFhYmIgJywgJ2FhJ10pCiAgIiBtYXRjaCBzdGFydHMgYXQgXHpzCiAgY2FsbCBhZGQodGwsIFsyLCAnYWJjXHpzZGQnLCAnZGRhYmNkZHh5enQnLCAnZGQnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhYSBcenNheCcsICcgYXgnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhYmMgXHpzbWF0Y2hcemUgYWJjJywgJ2FiYyBhYmMgYWJjIG1hdGNoIGFiYyBhYmMnLCAnbWF0Y2gnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhIFx6c2lmIC4qKXsyfScsICdhIGlmIHRoZW4gYSBpZiBsYXN0JywgJ2lmIGxhc3QnLCAnYSBpZiBsYXN0J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXD5cenMuJywgJ2F3b3JkLiAnLCAnLiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xzXCtcemVcWy9cfFxzXHpzXHNcKycsICdpcyAgIFthIHQnLCAnICAnXSkKCiAgIiBUZXN0cyBmb3IgXEA9IGFuZCBcJiBmZWF0dXJlcwogIGNhbGwgYWRkKHRsLCBbMiwgJ2FiY1xAPScsICdhYmMnLCAnYWInXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhYmNcQD1jZCcsICdhYmNkJywgJ2FiY2QnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdhYmNcQD0nLCAnYWJhYmMnLCAnYWInXSkKICAiIHdpbGwgbmV2ZXIgbWF0Y2gsIG5vIG1hdHRlciB0aGUgaW5wdXQgdGV4dAogIGNhbGwgYWRkKHRsLCBbMiwgJ2FiY2RcQD1lJywgJ2FiY2QnXSkKICAiIHdpbGwgbmV2ZXIgbWF0Y2gKICBjYWxsIGFkZCh0bCwgWzIsICdhYmNkXEA9ZScsICdhbnkgdGV4dCBpbiBoZXJlIC4uLiAnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdihhYmMpQD0uLicsICd4YWJjZCcsICdhYicsICdhYmMnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcKC4qSm9oblwpXEA9LipCb2InLCAnaGVyZSBpcyBKb2huLCBhbmQgaGVyZSBpcyBCJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXChKb2huLipcKVxAPS4qQm9iJywgJ0pvaG4gaXMgQm9icyBmcmllbmQnLCAnSm9obiBpcyBCb2InLCAnSm9obiBpcyBCb2JzIGZyaWVuZCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1w8XFNcK1woKSlcKVxAPScsICckKChpPWkrMSkpJywgJ2k9aSsxJywgJykpJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnLipKb2huXCYuKkJvYicsICdoZXJlIGlzIEpvaG4sIGFuZCBoZXJlIGlzIEInXSkKICBjYWxsIGFkZCh0bCwgWzIsICcuKkpvaG5cJi4qQm9iJywgJ0pvaG4gaXMgQm9icyBmcmllbmQnLCAnSm9obiBpcyBCb2InXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdih0ZXN0MSlAPS4qeWVwJywgJ3RoaXMgaXMgYSB0ZXN0MSwgeWVwIGl0IGlzJywgJ3Rlc3QxLCB5ZXAnLCAndGVzdDEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdmb29cKGJhclwpXEAhJywgJ2Zvb2JhciddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2Zvb1woYmFyXClcQCEnLCAnZm9vIGJhcicsICdmb28nXSkKICBjYWxsIGFkZCh0bCwgWzIsICdpZiBcKFwodGhlblwpXEAhLlwpKiQnLCAnIGlmIHRoZW4gZWxzZSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2lmIFwoXCh0aGVuXClcQCEuXCkqJCcsICcgaWYgZWxzZSAnLCAnaWYgZWxzZSAnLCAnICddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1woZm9vXClcQCFiYXInLCAnZm9vYmFyJywgJ2JhciddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1woZm9vXClcQCEuLi5iYXInLCAnZm9vYmFyJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXlwlKC4qYmFyXClcQCEuKlx6c2ZvbycsICcgYmFyIGZvbyAnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdeXCUoLipiYXJcKVxAIS4qXHpzZm9vJywgJyBmb28gYmFyICddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ15cJSguKmJhclwpXEAhLipcenNmb28nLCAnIGZvbyB4eHggJywgJ2ZvbyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1sgXVxAIVxwXCUoWyBdXEAhXHBcKSo6JywgJ2ltcGxpY2l0IG1hcHBpbmdzOicsICdtYXBwaW5nczonXSkKICBjYWxsIGFkZCh0bCwgWzIsICdbIF1cQCFccFwoWyBdXEAhXHBcKSo6JywgJ2ltcGxpY2l0IG1hcHBpbmdzOicsICdtYXBwaW5nczonLCAncyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ21ca1wrX1xAPVwlKF9cQCFca1wpXEA8PVxrXCtlJywgJ214X194ZScsICdteF9feGUnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcJShcVVxAPD1TXGsqXHxTXGxcKVInLCAnU3VSJywgJ1N1UiddKQoKICAiIENvbWJpbmluZyBkaWZmZXJlbnQgdGVzdHMgYW5kIGZlYXR1cmVzCiAgY2FsbCBhZGQodGwsIFsyLCAnW1s6YWxwaGE6XV1cey0yLDZ9JywgJzc4N2FiY2RpdWhzYXNpdWhiNCcsICdhYiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJycsICdhYmNkJywgJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KCgpKScsICdhbnkgcG9zc2libGUgdGV4dCcsICcnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdiUoYWIoeHl6KWMpJywgJyAgIGFieHl6YyAnLCAnYWJ4eXpjJywgJ3h5eiddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KHRlc3R8KWVtcHR5JywgJ3Rlc2VtcHR5JywgJ2VtcHR5JywgJyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1x2KGF8YWEpKGF8YWEpJywgJ2FhYScsICdhYScsICdhJywgJ2EnXSkKCiAgIiBcJXUgYW5kIGZyaWVuZHMKICBjYWxsIGFkZCh0bCwgWzIsICdcJWQzMicsICd5ZXMgbm8nLCAnICddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1wlbzQwJywgJ3llcyBubycsICcgJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXCV4MjAnLCAneWVzIG5vJywgJyAnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcJXUwMDIwJywgJ3llcyBubycsICcgJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXCVVMDAwMDAwMjAnLCAneWVzIG5vJywgJyAnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcJWQwJywgInllc1x4MGFubyIsICJceDBhIl0pCgogICIiIFwlW2FiY10KICBjYWxsIGFkZCh0bCwgWzIsICdmb29cJVtiYXJdJywgJ2ZvYmFyJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnZm9vXCVbYmFyXScsICdmb29iYXInLCAnZm9vYmFyJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnZm9vXCVbYmFyXScsICdmb294eCcsICdmb28nXSkKICBjYWxsIGFkZCh0bCwgWzIsICdmb29cJVtiYXJdJywgJ2Zvb2J4eCcsICdmb29iJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnZm9vXCVbYmFyXScsICdmb29iYXh4JywgJ2Zvb2JhJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnZm9vXCVbYmFyXScsICdmb29iYXJ4eCcsICdmb29iYXInXSkKICBjYWxsIGFkZCh0bCwgWzIsICdmb29cJVtiYXJdeCcsICdmb29ieHgnLCAnZm9vYngnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdmb29cJVtiYXJdeCcsICdmb29iYXJ4eCcsICdmb29iYXJ4J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXCVbYmFyXXgnLCAnYmFyeHgnLCAnYmFyeCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1wlW2Jhcl14JywgJ2J4eCcsICdieCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1wlW2Jhcl14JywgJ3h4eCcsICd4J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnYlwlW1thb11yXScsICdiYXIgYm9yJywgJ2JhciddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2JcJVtbXV1yXScsICdiXXIgYm9yJywgJ2JdciddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ0BcJVtcd1wtXSonLCAnPGh0dHA6Ly9qb2huLm5ldC9wYW5kb2MvPltAcGFuZG9jXScsICdAcGFuZG9jJ10pCgogICIgQWx0ZXJuYXRpdmVzLCBtdXN0IHVzZSBmaXJzdCBsb25nZXN0IG1hdGNoCiAgY2FsbCBhZGQodGwsIFsyLCAnZ29vXHxnbycsICdnb29nbGUnLCAnZ29vJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXDxnb29cfFw8Z28nLCAnZ29vZ2xlJywgJ2dvbyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1w8Z29vXHxnbycsICdnb29nbGUnLCAnZ29vJ10pCgogICIgQmFjayByZWZlcmVuY2VzCiAgY2FsbCBhZGQodGwsIFsyLCAnXChcaVwrXCkgXDEnLCAnIGFiYyBhYmMnLCAnYWJjIGFiYycsICdhYmMnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcKFxpXCtcKSBcMScsICd4Z29vIGdvb3gnLCAnZ29vIGdvbycsICdnb28nXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcKGFcKVwoYlwpXChjXClcKGRkXClcKGVcKVwoZlwpXChnXClcKGhcKVwoaVwpXDFcMlwzXDRcNVw2XDdcOFw5JywgJ3hhYmNkZGVmZ2hpYWJjZGRlZmdoaXgnLCAnYWJjZGRlZmdoaWFiY2RkZWZnaGknLCAnYScsICdiJywgJ2MnLCAnZGQnLCAnZScsICdmJywgJ2cnLCAnaCcsICdpJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXChcZCpcKWEgXDFiJywgJyBhIGIgJywgJ2EgYicsICcnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdeLlwoLlwpLlxfLi5cMS4nLCAiYWFhXG5hYWFcbmIiLCAiYWFhXG5hYWEiLCAnYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ14uKlwuXCguKlwpLy5cK1woXDFcKVxAPCEkJywgJ2Zvby5iYXQvZm9vLmNvbScsICdmb28uYmF0L2Zvby5jb20nLCAnYmF0J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXi4qXC5cKC4qXCkvLlwrXChcMVwpXEA8ISQnLCAnZm9vLmJhdC9mb28uYmF0J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXi4qXC5cKC4qXCkvLlwrXChcMVwpXEA8PSQnLCAnZm9vLmJhdC9mb28uYmF0JywgJ2Zvby5iYXQvZm9vLmJhdCcsICdiYXQnLCAnYmF0J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXFxcQDwhXCR7XChcZFwrXCUoOi5cey19XClcP1xcXEA8IVwpfScsICcyMDEzLTA2LTI3JHswfScsICckezB9JywgJzAnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdeXChhKlwpXDEkJywgJ2FhYWFhYWFhJywgJ2FhYWFhYWFhJywgJ2FhYWEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdeXChhXHstMix9XClcMVwrJCcsICdhYWFhYWFhYWEnLCAnYWFhYWFhYWFhJywgJ2FhYSddKQoKICAiIExvb2stYmVoaW5kIHdpdGggbGltaXQKICBjYWxsIGFkZCh0bCwgWzIsICc8XEA8PXNwYW4uJywgJ3h4c3Bhbnh4PHNwYW55eXknLCAnc3BhbnknXSkKICBjYWxsIGFkZCh0bCwgWzIsICc8XEAxPD1zcGFuLicsICd4eHNwYW54eDxzcGFueXl5JywgJ3NwYW55J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnPFxAMjw9c3Bhbi4nLCAneHhzcGFueHg8c3Bhbnl5eScsICdzcGFueSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1woPDxcKVxAPD1zcGFuLicsICd4eHNwYW54eHh4PHNwYW54eDw8c3Bhbnl5eScsICdzcGFueScsICc8PCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1woPDxcKVxAMTw9c3Bhbi4nLCAneHhzcGFueHh4eDxzcGFueHg8PHNwYW55eXknXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcKDw8XClcQDI8PXNwYW4uJywgJ3h4c3Bhbnh4eHg8c3Bhbnh4PDxzcGFueXl5JywgJ3NwYW55JywgJzw8J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXChmb29cKVxAPCFiYXIuJywgJ3h4IGZvb2JhcjEgeGJhcjIgeHgnLCAnYmFyMiddKQoKICAiIGxvb2stYmVoaW5kIG1hdGNoIGluIGZyb250IG9mIGEgemVyby13aWR0aCBpdGVtCiAgY2FsbCBhZGQodGwsIFsyLCAnXHZcQyUoPExhc3QgQ2hhbmdlZDpccyspQDw9LiokJywgJyIgdGVzdCBoZWFkZXInXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcdlxDJSg8TGFzdCBDaGFuZ2VkOlxzKylAPD0uKiQnLCAnIiBMYXN0IENoYW5nZWQ6IDE5NzAnLCAnMTk3MCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1woZm9vXClcQDw9XD4nLCAnZm9vYmFyJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXChmb29cKVxAPD1cPicsICdiYXJmb28nLCAnJywgJ2ZvbyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1woZm9vXClcQDw9LionLCAnZm9vYmFyJywgJ2JhcicsICdmb28nXSkKCiAgIiBjb21wbGljYXRlZCBsb29rLWJlaGluZCBtYXRjaAogIGNhbGwgYWRkKHRsLCBbMiwgJ1woclxAPD1cfFx3XEA8IVwpXC8nLCAneCA9IC93b3JkLzsnLCAnLyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ15bYS16XVwrXHplIFwmXChhc2RmXClcQDwhJywgJ2ZvbyBiYXInLCAnZm9vJ10pCgogICIiIFxAPgogIGNhbGwgYWRkKHRsLCBbMiwgJ1woYSpcKVxAPmEnLCAnYWFhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1woYSpcKVxAPmInLCAnYWFhYicsICdhYWFiJywgJ2FhYSddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ15cKC5cey19YlwpXEA+LicsICcgIGFiY2JkJywgJyAgYWJjJywgJyAgYWInXSkKICBjYWxsIGFkZCh0bCwgWzIsICdcKC5cey19XClcKFwpXEA+JCcsICdhYmMnLCAnYWJjJywgJ2FiYycsICcnXSkKICAiIFRPRE86IEJUIGVuZ2luZSBkb2VzIG5vdCByZXN0b3JlIHN1Ym1hdGNoIGFmdGVyIGZhaWx1cmUKICBjYWxsIGFkZCh0bCwgWzEsICdcKGEqXClcQD5hXHxhXCsnLCAnYWFhYScsICdhYWFhJ10pCgogICIgIlxfIiBwcmVwZW5kZWQgbmVnYXRlZCBjb2xsZWN0aW9uIG1hdGNoZXMgRU9MCiAgY2FsbCBhZGQodGwsIFsyLCAnXF9bXjgtOV1cKycsICJhc2ZpXG45ODg4IiwgImFzZmlcbiJdKQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfW15hXVwrJywgImFzZmlcbjk4ODgiLCAic2ZpXG45ODg4Il0pCgogICIgUmVxdWlyaW5nIGxvdHMgb2Ygc3RhdGVzLgogIGNhbGwgYWRkKHRsLCBbMiwgJ1swLTlhLXpBLVpdXHs4fS1cKFswLTlhLXpBLVpdXHs0fS1cKVx7M31bMC05YS16QS1aXVx7MTJ9JywgIiAxMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODkwMTIgIiwgIjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiIsICIxMjM0LSJdKQoKICAiIFNraXAgYWRkaW5nIHN0YXRlIHR3aWNlCiAgY2FsbCBhZGQodGwsIFsyLCAnXlwlKFwlKF5ccyojXHMqaWZcPlx8I1xzKmlmXClcKVwoXCU+MWMuKiRcKVxAPScsICIjaWYgRk9PIiwgIiNpZiIsICcgRk9PJ10pCgogICIgVGVzdCBcJVYgYXRvbQogIGNhbGwgYWRkKHRsLCBbMiwgJ1wlPjcwdkdlc2FtdCcsICdKZWFuLU1pY2hlbCBDaGFybGllciAmIFZpY3RvciBIdWJpbm9uXEdlc2FtdGF1c2dhYmUgW1NhbGxlY2tdICAgIEJ1Y2sgRGFubnkge0plYW4tTWljaGVsIENoYXJsaWVyICYgVmljdG9yIEh1Ymlub259XEdlc2FtdGF1c2dhYmUnLCAnR2VzYW10J10pCgogICIgVGVzdCBmb3IgaWdub3JpbmcgY2FzZSBhbmQgbWF0Y2hpbmcgcmVwZWF0ZWQgY2hhcmFjdGVycwogIGNhbGwgYWRkKHRsLCBbMiwgJ1xjYlwrJywgJ2FBYkJiQmNDJywgJ2JCYkInXSkKCiAgIiBSdW4gdGhlIHRlc3RzCiAgZm9yIHQgaW4gdGwKICAgIGxldCByZSA9IHRbMF0KICAgIGxldCBwYXQgPSB0WzFdCiAgICBsZXQgdGV4dCA9IHRbMl0KICAgIGxldCBtYXRjaGlkeCA9IDMKICAgIGZvciBlbmdpbmUgaW4gWzAsIDEsIDJdCiAgICAgIGlmIGVuZ2luZSA9PSAyICYmIHJlID09IDAgfHwgZW5naW5lID09IDEgJiYgcmUgPT0gMQogICAgICAgIGNvbnRpbnVlCiAgICAgIGVuZGlmCiAgICAgIGxldCAmcmVnZXhwZW5naW5lID0gZW5naW5lCiAgICAgIHRyeQogICAgICAgIGxldCBsID0gbWF0Y2hsaXN0KHRleHQsIHBhdCkKICAgICAgY2F0Y2gKICAgICAgICBjYWxsIGFzc2VydF9yZXBvcnQoJ0Vycm9yICcgLiBlbmdpbmUgLiAnOiBwYXQ6IFwiJyAuIHBhdAogICAgICAgICAgICAgIFwgLiAnXCIsIHRleHQ6IFwiJyAuIHRleHQgLiAnXCIsIGNhdXNlZCBhbiBleGNlcHRpb246IFwiJwogICAgICAgICAgICAgIFwgLiB2OmV4Y2VwdGlvbiAuICdcIicpCiAgICAgIGVuZHRyeQogICAgICAiIGNoZWNrIHRoZSBtYXRjaCBpdHNlbGYKICAgICAgaWYgbGVuKGwpID09IDAgJiYgbGVuKHQpID4gbWF0Y2hpZHgKICAgICAgICBjYWxsIGFzc2VydF9yZXBvcnQoJ0Vycm9yICcgLiBlbmdpbmUgLiAnOiBwYXQ6IFwiJyAuIHBhdAogICAgICAgICAgICAgIFwgLiAnXCIsIHRleHQ6IFwiJyAuIHRleHQgLiAnXCIsIGRpZCBub3QgbWF0Y2gsIGV4cGVjdGVkOiBcIicKICAgICAgICAgICAgICBcIC4gdFttYXRjaGlkeF0gLiAnXCInKQogICAgICBlbHNlaWYgbGVuKGwpID4gMCAmJiBsZW4odCkgPT0gbWF0Y2hpZHgKICAgICAgICBjYWxsIGFzc2VydF9yZXBvcnQoJ0Vycm9yICcgLiBlbmdpbmUgLiAnOiBwYXQ6IFwiJyAuIHBhdAogICAgICAgICAgICAgIFwgLiAnXCIsIHRleHQ6IFwiJyAuIHRleHQgLiAnXCIsIG1hdGNoOiBcIicgLiBsWzBdCiAgICAgICAgICAgICAgXCAuICdcIiwgZXhwZWN0ZWQgbm8gbWF0Y2gnKQogICAgICBlbHNlaWYgbGVuKHQpID4gbWF0Y2hpZHggJiYgbFswXSAhPSB0W21hdGNoaWR4XQogICAgICAgIGNhbGwgYXNzZXJ0X3JlcG9ydCgnRXJyb3IgJyAuIGVuZ2luZSAuICc6IHBhdDogXCInIC4gcGF0CiAgICAgICAgICAgICAgXCAuICdcIiwgdGV4dDogXCInIC4gdGV4dCAuICdcIiwgbWF0Y2g6IFwiJyAuIGxbMF0KICAgICAgICAgICAgICBcIC4gJ1wiLCBleHBlY3RlZDogXCInIC4gdFttYXRjaGlkeF0gLiAnXCInKQogICAgICBlbHNlCiAgICAgICAgIiBUZXN0IHBhc3NlZAogICAgICBlbmRpZgoKICAgICAgIiBjaGVjayBhbGwgdGhlIG5pbmUgc3VibWF0Y2hlcwogICAgICBpZiBsZW4obCkgPiAwCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgOSkKICAgICAgICAgIGlmIGxlbih0KSA8PSBtYXRjaGlkeCArIGkKICAgICAgICAgICAgbGV0IGUgPSAnJwogICAgICAgICAgZWxzZQogICAgICAgICAgICBsZXQgZSA9IHRbbWF0Y2hpZHggKyBpXQogICAgICAgICAgZW5kaWYKICAgICAgICAgIGlmIGxbaV0gIT0gZQogICAgICAgICAgICBjYWxsIGFzc2VydF9yZXBvcnQoJ0Vycm9yICcgLiBlbmdpbmUgLiAnOiBwYXQ6IFwiJyAuIHBhdAogICAgICAgICAgICAgICAgICBcIC4gJ1wiLCB0ZXh0OiBcIicgLiB0ZXh0IC4gJ1wiLCBzdWJtYXRjaCAnIC4gaSAuICc6IFwiJwogICAgICAgICAgICAgICAgICBcIC4gbFtpXSAuICdcIiwgZXhwZWN0ZWQ6IFwiJyAuIGUgLiAnXCInKQogICAgICAgICAgZW5kaWYKICAgICAgICBlbmRmb3IKICAgICAgICB1bmxldCBpCiAgICAgIGVuZGlmCiAgICBlbmRmb3IKICBlbmRmb3IKCiAgdW5sZXQgdCB0bCBlIGwKZW5kZnVuYwoKIiBUZXN0cyBmb3IgbXVsdGktbGluZSByZWdleHAgcGF0dGVybnMgd2l0aG91dCBtdWx0aS1ieXRlIHN1cHBvcnQuCmZ1bmMgVGVzdF9yZWdleHBfbXVsdGlsaW5lX3BhdCgpCiAgIiB0bCBpcyBhIExpc3Qgb2YgTGlzdHMgd2l0aDoKICAiICAgIHJlZ2V4cCBlbmdpbmVzIHRvIHRlc3QKICAiICAgICAgIDAgLSB0ZXN0IHdpdGggJ3JlZ2V4cGVuZ2luZScgdmFsdWVzIDAgYW5kIDEKICAiICAgICAgIDEgLSB0ZXN0IHdpdGggJ3JlZ2V4cGVuZ2luZScgdmFsdWVzIDAgYW5kIDIKICAiICAgICAgIDIgLSB0ZXN0IHdpdGggJ3JlZ2V4cGVuZ2luZScgdmFsdWVzIDAsIDEgYW5kIDIKICAiICAgIHJlZ2V4cCBwYXR0ZXJuCiAgIiAgICBMaXN0IHdpdGggdGV4dCB0byB0ZXN0IHRoZSBwYXR0ZXJuIG9uCiAgIiAgICBMaXN0IHdpdGggdGhlIGV4cGVjdGVkIG1hdGNoCiAgbGV0IHRsID0gW10KCiAgIiBiYWNrIHJlZmVyZW5jZXMKICBjYWxsIGFkZCh0bCwgWzIsICdeLlwoLlwpLlxfLi5cMS4nLCBbJ2FhYScsICdhYWEnLCAnYiddLCBbJ1hYJywgJ2InXV0pCiAgY2FsbCBhZGQodGwsIFsyLCAnXHYuKlwvKC4qKVxuLipcL1wxJCcsIFsnLi9EaXIxL0RpcjIvenl4d3Z1dHMudHh0JywgJy4vRGlyMS9EaXIyL2FiY2RlZmdoLmJhdCcsICcnLCAnLi9EaXIxL0RpcjIvZmlsZTEudHh0JywgJy4vT3RoZXJEaXIxL090aGVyRGlyMi9maWxlMS50eHQnXSwgWycuL0RpcjEvRGlyMi96eXh3dnV0cy50eHQnLCAnLi9EaXIxL0RpcjIvYWJjZGVmZ2guYmF0JywgJycsICdYWCddXSkKCiAgIiBsaW5lIGJyZWFrcwogIGNhbGwgYWRkKHRsLCBbMiwgJ1xTLipcbngnLCBbJ2FiYycsICdkZWYnLCAnZ2hpJywgJ3hqaycsICdsbW4nXSwgWydhYmMnLCAnZGVmJywgJ1hYamsnLCAnbG1uJ11dKQoKICAiIEFueSBzaW5nbGUgY2hhcmFjdGVyIG9yIGVuZC1vZi1saW5lCiAgY2FsbCBhZGQodGwsIFsyLCAnXF8uXCsnLCBbJ2EnLCAnYicsICdjJ10sIFsnWFgnXV0pCiAgIiBBbnkgaWRlbnRpZmllciBvciBlbmQtb2YtbGluZQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfaVwrJywgWydhJywgJ2InLCAnOycsICcyJ10sIFsnWFg7WFgnXV0pCiAgIiBBbnkgaWRlbnRpZmllciBidXQgZXhjbHVkaW5nIGRpZ2l0cyBvciBlbmQtb2YtbGluZQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfSVwrJywgWydhJywgJ2InLCAnOycsICcyJ10sIFsnWFg7WFgyWFgnXV0pCiAgIiBBbnkga2V5d29yZCBvciBlbmQtb2YtbGluZQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfa1wrJywgWydhJywgJ2InLCAnPScsICcyJ10sIFsnWFg9WFgnXV0pCiAgIiBBbnkga2V5d29yZCBidXQgZXhjbHVkaW5nIGRpZ2l0cyBvciBlbmQtb2YtbGluZQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfS1wrJywgWydhJywgJ2InLCAnPScsICcyJ10sIFsnWFg9WFgyWFgnXV0pCiAgIiBBbnkgZmlsZW5hbWUgY2hhcmFjdGVyIG9yIGVuZC1vZi1saW5lCiAgY2FsbCBhZGQodGwsIFsyLCAnXF9mXCsnLCBbJ2EnLCAnYicsICcuJywgJzUnXSwgWydYWCddXSkKICAiIEFueSBmaWxlbmFtZSBjaGFyYWN0ZXIgYnV0IGV4Y2x1ZGluZyBkaWdpdHMgb3IgZW5kLW9mLWxpbmUKICBjYWxsIGFkZCh0bCwgWzIsICdcX0ZcKycsIFsnYScsICdiJywgJy4nLCAnNSddLCBbJ1hYNVhYJ11dKQogICIgQW55IHByaW50YWJsZSBjaGFyYWN0ZXIgb3IgZW5kLW9mLWxpbmUKICBjYWxsIGFkZCh0bCwgWzIsICdcX3BcKycsIFsnYScsICdiJywgJz0nLCAnNCddLCBbJ1hYJ11dKQogICIgQW55IHByaW50YWJsZSBjaGFyYWN0ZXIgZXhjbHVkaW5nIGRpZ2l0cyBvciBlbmQtb2YtbGluZQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfUFwrJywgWydhJywgJ2InLCAnPScsICc0J10sIFsnWFg0WFgnXV0pCiAgIiBBbnkgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgb3IgZW5kLW9mLWxpbmUKICBjYWxsIGFkZCh0bCwgWzIsICdcX3NcKycsIFsnICcsICcgJywgJ2EnLCAnYiddLCBbJ1hYYVhYYlhYJ11dKQogICIgQW55IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlciBvciBlbmQtb2YtbGluZQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfU1wrJywgWycgJywgJyAnLCAnYScsICdiJ10sIFsnIFhYIFhYJ11dKQogICIgQW55IGRlY2ltYWwgZGlnaXQgb3IgZW5kLW9mLWxpbmUKICBjYWxsIGFkZCh0bCwgWzIsICdcX2RcKycsIFsnMScsICdhJywgJzInLCAnYicsICczJ10sIFsnWFhhWFhiWFgnXV0pCiAgIiBBbnkgbm9uLWRlY2ltYWwgZGlnaXQgb3IgZW5kLW9mLWxpbmUKICBjYWxsIGFkZCh0bCwgWzIsICdcX0RcKycsIFsnMScsICdhJywgJzInLCAnYicsICczJ10sIFsnMVhYMlhYM1hYJ11dKQogICIgQW55IGhleGFkZWNpbWFsIGRpZ2l0IG9yIGVuZC1vZi1saW5lCiAgY2FsbCBhZGQodGwsIFsyLCAnXF94XCsnLCBbJzEnLCAnYScsICdnJywgJzknLCAnOCddLCBbJ1hYZ1hYJ11dKQogICIgQW55IG5vbi1oZXhhZGVjaW1hbCBkaWdpdCBvciBlbmQtb2YtbGluZQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfWFwrJywgWycxJywgJ2EnLCAnZycsICc5JywgJzgnXSwgWycxWFhhWFg5WFg4WFgnXV0pCiAgIiBBbnkgb2N0YWwgZGlnaXQgb3IgZW5kLW9mLWxpbmUKICBjYWxsIGFkZCh0bCwgWzIsICdcX29cKycsIFsnMCcsICc3JywgJzgnLCAnOScsICcwJ10sIFsnWFg4WFg5WFgnXV0pCiAgIiBBbnkgbm9uLW9jdGFsIGRpZ2l0IG9yIGVuZC1vZi1saW5lCiAgY2FsbCBhZGQodGwsIFsyLCAnXF9PXCsnLCBbJzAnLCAnNycsICc4JywgJzknLCAnMCddLCBbJzBYWDdYWDBYWCddXSkKICAiIEFueSB3b3JkIGNoYXJhY3RlciBvciBlbmQtb2YtbGluZQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfd1wrJywgWydBJywgJ0InLCAnPScsICdDJywgJ0QnXSwgWydYWD1YWCddXSkKICAiIEFueSBub24td29yZCBjaGFyYWN0ZXIgb3IgZW5kLW9mLWxpbmUKICBjYWxsIGFkZCh0bCwgWzIsICdcX1dcKycsIFsnQScsICdCJywgJz0nLCAnQycsICdEJ10sIFsnQVhYQlhYQ1hYRFhYJ11dKQogICIgQW55IGhlYWQtb2Ytd29yZCBjaGFyYWN0ZXIgb3IgZW5kLW9mLWxpbmUKICBjYWxsIGFkZCh0bCwgWzIsICdcX2hcKycsIFsnYScsICcxJywgJ2InLCAnMicsICdjJ10sIFsnWFgxWFgyWFgnXV0pCiAgIiBBbnkgbm9uLWhlYWQtb2Ytd29yZCBjaGFyYWN0ZXIgb3IgZW5kLW9mLWxpbmUKICBjYWxsIGFkZCh0bCwgWzIsICdcX0hcKycsIFsnYScsICcxJywgJ2InLCAnMicsICdjJ10sIFsnYVhYYlhYY1hYJ11dKQogICIgQW55IGFscGhhYmV0aWMgY2hhcmFjdGVyIG9yIGVuZC1vZi1saW5lCiAgY2FsbCBhZGQodGwsIFsyLCAnXF9hXCsnLCBbJ2EnLCAnMScsICdiJywgJzInLCAnYyddLCBbJ1hYMVhYMlhYJ11dKQogICIgQW55IG5vbi1hbHBoYWJldGljIGNoYXJhY3RlciBvciBlbmQtb2YtbGluZQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfQVwrJywgWydhJywgJzEnLCAnYicsICcyJywgJ2MnXSwgWydhWFhiWFhjWFgnXV0pCiAgIiBBbnkgbG93ZXJjYXNlIGNoYXJhY3RlciBvciBlbmQtb2YtbGluZQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfbFwrJywgWydhJywgJ0EnLCAnYicsICdCJ10sIFsnWFhBWFhCWFgnXV0pCiAgIiBBbnkgbm9uLWxvd2VyY2FzZSBjaGFyYWN0ZXIgb3IgZW5kLW9mLWxpbmUKICBjYWxsIGFkZCh0bCwgWzIsICdcX0xcKycsIFsnYScsICdBJywgJ2InLCAnQiddLCBbJ2FYWGJYWCddXSkKICAiIEFueSB1cHBlcmNhc2UgY2hhcmFjdGVyIG9yIGVuZC1vZi1saW5lCiAgY2FsbCBhZGQodGwsIFsyLCAnXF91XCsnLCBbJ2EnLCAnQScsICdiJywgJ0InXSwgWydhWFhiWFgnXV0pCiAgIiBBbnkgbm9uLXVwcGVyY2FzZSBjaGFyYWN0ZXIgb3IgZW5kLW9mLWxpbmUKICBjYWxsIGFkZCh0bCwgWzIsICdcX1VcKycsIFsnYScsICdBJywgJ2InLCAnQiddLCBbJ1hYQVhYQlhYJ11dKQogICIgQ29sbGVjdGlvbiBvciBlbmQtb2YtbGluZQogIGNhbGwgYWRkKHRsLCBbMiwgJ1xfW2Etel1cKycsIFsnYScsICdBJywgJ2InLCAnQiddLCBbJ1hYQVhYQlhYJ11dKQogICIgc3RhcnQgb2YgbGluZSBhbnl3aGVyZSBpbiB0aGUgdGV4dAogIGNhbGwgYWRkKHRsLCBbMiwgJ29uZVx6c1xfcypcX15cemV0d28nLAogICAgICAgIFwgWycnLCAnb25lJywgJyB0d28nLCAnb25lJywgJycsICd0d28nXSwKICAgICAgICBcIFsnJywgJ29uZScsICcgdHdvJywgJ29uZVhYdHdvJ11dKQogICIgZW5kIG9mIGxpbmUgYW55d2hlcmUgaW4gdGhlIHRleHQKICBjYWxsIGFkZCh0bCwgWzIsICdvbmVcenNcXyRcX3MqdHdvJywKICAgICAgICBcIFsnJywgJ29uZScsICcgdHdvJywgJ29uZScsICcnLCAndHdvJ10sIFsnJywgJ29uZVhYJywgJ29uZVhYJ11dKQoKICAiIENoZWNrIHRoYXQgXF9bMC05XSBtYXRjaGluZyBFT0wgZG9lcyBub3QgYnJlYWsgYSBmb2xsb3dpbmcgXD4KICBjYWxsIGFkZCh0bCwgWzIsICdcPFwoXCgyNVxfWzAtNV1cfDJcX1swLTRdXF9bMC05XVx8XF9bMDFdXD9cX1swLTldXF9bMC05XVw/XClcLlwpXHszXH1cKDI1XF9bMC01XVx8MlxfWzAtNF1cX1swLTldXHxcX1swMV1cP1xfWzAtOV1cX1swLTldXD9cKVw+JywgWycnLCAnbG9jYWxuZXQvMTkyLjE2OC4wLjEnLCAnJ10sIFsnJywgJ2xvY2FsbmV0L1hYJywgJyddXSkKCiAgIiBDaGVjayBhIHBhdHRlcm4gd2l0aCBhIGxpbmUgYnJlYWsgYW5kIF4gYW5kICQKICBjYWxsIGFkZCh0bCwgWzIsICdhXG5eYiRcbl5jJywgWydhJywgJ2InLCAnYyddLCBbJ1hYJ11dKQoKICBjYWxsIGFkZCh0bCwgWzIsICdcKF4uXCtcblwpXDEnLCBbJyBkb2cnLCAnIGRvZycsICdhc2RmJ10sIFsnWFhhc2RmJ11dKQoKICAiIFJ1biB0aGUgbXVsdGktbGluZSB0ZXN0cwogIGZvciB0IGluIHRsCiAgICBsZXQgcmUgPSB0WzBdCiAgICBsZXQgcGF0ID0gdFsxXQogICAgbGV0IGJlZm9yZSA9IHRbMl0KICAgIGxldCBhZnRlciA9IHRbM10KICAgIGZvciBlbmdpbmUgaW4gWzAsIDEsIDJdCiAgICAgIGlmIGVuZ2luZSA9PSAyICYmIHJlID09IDAgfHwgZW5naW5lID09IDEgJiYgcmUgPT0gMQogICAgICAgIGNvbnRpbnVlCiAgICAgIGVuZGlmCiAgICAgIGxldCAmcmVnZXhwZW5naW5lID0gZW5naW5lCiAgICAgIG5ldwogICAgICBjYWxsIHNldGxpbmUoMSwgYmVmb3JlKQogICAgICBleGUgJyVzLycgLiBwYXQgLiAnL1hYLycKICAgICAgbGV0IHJlc3VsdCA9IGdldGxpbmUoMSwgJyQnKQogICAgICBxIQogICAgICBpZiByZXN1bHQgIT0gYWZ0ZXIKICAgICAgICBjYWxsIGFzc2VydF9yZXBvcnQoJ0Vycm9yOiBwYXQ6IFwiJyAuIHBhdCAuICdcIiwgdGV4dDogXCInCiAgICAgICAgICAgICAgXCAuIHN0cmluZyhiZWZvcmUpIC4gJ1wiLCBleHBlY3RlZDogXCInIC4gc3RyaW5nKGFmdGVyKQogICAgICAgICAgICAgIFwgLiAnXCIsIGdvdDogXCInIC4gc3RyaW5nKHJlc3VsdCkgLiAnXCInKQogICAgICBlbHNlCiAgICAgICAgIiBUZXN0IHBhc3NlZAogICAgICBlbmRpZgogICAgZW5kZm9yCiAgZW5kZm9yCiAgdW5sZXQgdCB0bAplbmRmdW5jCgoiIENoZWNrIHRoYXQgdXNpbmcgYSBwYXR0ZXJuIG9uIHR3byBsaW5lcyBkb2Vzbid0IGdldCBtZXNzZWQgdXAgYnkgdXNpbmcKIiBtYXRjaHN0cigpIHdpdGggXHplIGluIGJldHdlZW4uCmZ1bmMgVGVzdF9tYXRjaHN0cl93aXRoX3plKCkKICBuZXcKICBjYWxsIGFwcGVuZCgwLCBbJ1N1YnN0aXR1dGUgaGVyZTonLCAnPFQ9IiI+VGEgNTwvVGl0bGU+JywKICAgICAgICBcICc8VD0iIj5BYyA3PC9UaXRsZT4nXSkKICBjYWxsIGN1cnNvcigxLCAxKQogIHNldCByZT0wCgogIC4rMSwuKzJzLyIiL1w9JyInIC4gbWF0Y2hzdHIoZ2V0bGluZSgiLiIpLCAnXGRcK1x6ZTwnKSAuICciJwogIGNhbGwgYXNzZXJ0X2VxdWFsKFsnU3Vic3RpdHV0ZSBoZXJlOicsICc8VD0iNSI+VGEgNTwvVGl0bGU+JywKICAgICAgICBcICc8VD0iNyI+QWMgNzwvVGl0bGU+JywgJyddLCBnZXRsaW5lKDEsICckJykpCgogIGJ3aXBlIQplbmRmdW5jCgoiIENoZWNrIGEgcGF0dGVybiB3aXRoIGEgbG9vayBiZWluZCBjcm9zc2luZyBhIGxpbmUgYm91bmRhcnkKZnVuYyBUZXN0X2xvb2tiZWhpbmRfYWNyb3NzX2xpbmUoKQogIG5ldwogIGNhbGwgYXBwZW5kKDAsIFsnQmVoaW5kOicsICdhc2RmYXNkPHl5eScsICd4eHN0YXJ0MScsICdhc2RmYXNkPHl5JywKICAgICAgICBcICd4eHhzdGFydDInLCAnYXNkZmFzZDx5eScsICd4eHN0YXJ0MyddKQogIGNhbGwgY3Vyc29yKDEsIDEpCiAgY2FsbCBzZWFyY2goJ1woPFxfW3h5XVwrXClcQDM8PXN0YXJ0JykKICBjYWxsIGFzc2VydF9lcXVhbChbMCwgNywgMywgMF0sIGdldHBvcygnLicpKQogIGJ3aXBlIQplbmRmdW5jCgoiIFRlc3QgZm9yIHRoZSBcJVYgYXRvbSAobWF0Y2ggaW5zaWRlIHRoZSB2aXN1YWwgYXJlYSkKZnVuYyBSZWdleF9NYXRjaF9WaXN1YWxfQXJlYSgpCiAgY2FsbCBhcHBlbmQoMCwgWydWaXN1YWw6JywgJ3RoZXhlIHRoZSB0aGV4ZXRoZScsICdhbmRheGFuZCBhbmRheGFuZCcsCiAgICAgICAgXCAnb29veG9mb3IgZm9yb3hvb28nLCAnb29veG9mb3IgZm9yb3hvb28nXSkKICBjYWxsIGN1cnNvcigxLCAxKQogIGV4ZSAibm9ybWFsIGpmeHZmeDpzL1xcJVZlL0UvZ1w8Q1I+IgogIGV4ZSAibm9ybWFsIGpWOnMvXFwlVmEvQS9nXDxDUj4iCiAgZXhlICJub3JtYWwgamZ4XDxDLVY+ZnhqOnMvXFwlVm8vTy9nXDxDUj4iCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydWaXN1YWw6JywgJ3RoZXhFIHRoRSB0aEV4ZXRoZScsICdBbmRBeEFuZCBBbmRBeEFuZCcsCiAgICAgICAgXCAnb29veE9mT3IgZk9yT3hvb28nLCAnb29veE9mT3IgZk9yT3hvb28nLCAnJ10sIGdldGxpbmUoMSwgJyQnKSkKICAlZAplbmRmdW5jCgoiIENoZWNrIG1hdGNoaW5nIFZpc3VhbCBhcmVhCmZ1bmMgVGVzdF9tYXRjaGluZ192aXN1YWxfYXJlYSgpCiAgbmV3CiAgc2V0IHJlZ2V4cGVuZ2luZT0xCiAgY2FsbCBSZWdleF9NYXRjaF9WaXN1YWxfQXJlYSgpCiAgc2V0IHJlZ2V4cGVuZ2luZT0yCiAgY2FsbCBSZWdleF9NYXRjaF9WaXN1YWxfQXJlYSgpCiAgc2V0IHJlZ2V4cGVuZ2luZSYKICBid2lwZSEKZW5kZnVuYwoKIiBDaGVjayBtYXRjaGluZyBtYXJrcwpmdW5jIFJlZ2V4X01hcmsoKQogIGNhbGwgYXBwZW5kKDAsIFsnJywgJycsICcnLCAnTWFya3M6JywgJ2FzZGZTYXNkZnNhZGZFYXNkZicsICdhc2RmU2FzJywKICAgICAgICBcICdkZnNhZGZFYXNkZicsICcnLCAnJywgJycsICcnLCAnJ10pCiAgY2FsbCBjdXJzb3IoNCwgMSkKICBleGUgIm5vcm1hbCBqZlNtc2ZFbWU6Li00LC4rNnMvLlxcJT4ncy4qXFwlPCdlLi4vaGVyZS9cPENSPiIKICBleGUgIm5vcm1hbCBqZlNtc2owZkVtZTouLTQsLis2cy8uXFwlPidzXFxfLipcXCU8J2UuLi9hZ2Fpbi9cPENSPiIKICBjYWxsIGFzc2VydF9lcXVhbChbJycsICcnLCAnJywgJ01hcmtzOicsICdhc2RmaGVyZWFzZGYnLCAnYXNkZmFnYWluYXNkZicsCiAgICAgICAgXCAnJywgJycsICcnLCAnJywgJycsICcnXSwgZ2V0bGluZSgxLCAnJCcpKQogICVkCmVuZGZ1bmMKCmZ1bmMgVGVzdF9tYXRjaGluZ19tYXJrcygpCiAgbmV3CiAgc2V0IHJlZ2V4cGVuZ2luZT0xCiAgY2FsbCBSZWdleF9NYXJrKCkKICBzZXQgcmVnZXhwZW5naW5lPTIKICBjYWxsIFJlZ2V4X01hcmsoKQogIGJ3aXBlIQplbmRmdW5jCgoiIENoZWNrIHBhdHRlcm5zIG1hdGNoaW5nIGN1cnNvciBwb3NpdGlvbi4KZnVuYyBzOmN1cnBvc190ZXN0KCkKICBuZXcKICBjYWxsIHNldGxpbmUoMSwgWydmZm9vb29vJywgJ2JvYm9vb28nLCAnem9vb29vbycsICdrb29vb29vJywgJ21vb29vb28nLAogICAgICAgIFwgIlx0XHRcdGZvbyIsICdhYmFiYWJhYmFiYWJhYmZvbycsICdiYWJhYmFiYWJhYmFiYWZvbycsICcqKioqKioqKl8nLAogICAgICAgIFwgJyAgICAgICAgeHh4eHh4eHh4eHh4ICAgIHh4eHggeHh4eHh4IHh4eHh4eHggeCB4eHh4eHh4eHggeHggeHh4eHh4IHh4eHh4eCB4eHh4eCB4eHh4eHh4IHh4IHh4eHggeHh4eHh4eHggeHh4eCB4eHh4eHh4eHh4eCB4eHggeHh4eHh4eCB4eHh4eHh4eHggeHggeHh4eHh4IHh4IHh4eHh4eHggeHh4eHh4eHh4eHh4eHh4eCB4eHh4eHh4eHggIHh4eCB4eHh4eHh4eCB4eHh4eHh4eHggeHh4eCB4eHggeHh4eCB4eHggeHh4IHh4eHh4IHh4eHh4eHh4eHh4eCB4eHh4IHh4eHh4eHh4eCB4eHh4eHh4eHh4eCB4eCB4eHh4eCB4eHggeHh4eHh4eHggeHh4eHh4IHh4eCB4eHggeHh4eHh4eHh4IHh4eHh4eHggeCB4eHh4eHh4eHggeHggeHh4eHh4IHh4eHh4eHggIHh4eHh4eHh4eHh4eHh4eHh4eCB4eHh4eHh4IHh4eHh4eHggeHh4IHh4eCB4eHh4eHh4eCB4eHh4eHh4ICB4eHh4IHh4eCB4eHh4eHggeHh4eHggeHh4eHggeHggeHh4eHh4IHh4eHh4eHggeHh4IHh4eHh4eHh4eHh4eCB4eHh4IHh4eHh4eHh4eCB4eHh4eHggeHh4eHh4IHh4eHh4IHh4eCB4eHh4eHh4IHh4eHh4eHh4eHh4eHh4eHggeHh4eHh4eHh4ICB4eHh4eHh4eHh4IHh4eHggeHggeHh4eHh4eHggeHh4IHh4eHh4eHh4eHh4IHh4eHh4J10pCiAgY2FsbCBzZXRwb3MoJy4nLCBbMCwgMSwgMCwgMF0pCiAgcy9cJT4zYy4vL2cKICBjYWxsIHNldHBvcygnLicsIFswLCAyLCA0LCAwXSkKICBzL1wlIy4qJC8vZwogIGNhbGwgc2V0cG9zKCcuJywgWzAsIDMsIDAsIDBdKQogIHMvXCU8M2MuL18vZwogICVzL1wlNGxcJT41Yy4vXy9nCiAgJXMvXCU2bFwlPjI1di4vXy9nCiAgJXMvXCU+NmxcJTNjLi8hL2cKICAlcy9cJT43bFwlMTJjLi8/L2cKICAlcy9cJT43bFwlPDlsXCU+NXZcJTw4di4vIy9nCiAgJHMvXCUofFx1LipcKVxAPD1bXnxcdF1cKyQvL2dlCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydmZm8nLCAnYm9iJywgJ19fb29vb28nLCAna29vb29fXycsICdtb29vb29vJywKICAgICAgICBcICcJCQlmX18nLCAnYWIhYmFiYWJhYmFiYWJmb28nLAogICAgICAgIFwgJ2JhIWFiIyNhYmFiP2JhZm9vJywgJyoqISoqKioqXycsCiAgICAgICAgXCAnICAhICAgICB4eHg/eHh4eHh4eHggICAgeHh4eCB4eHh4eHggeHh4eHh4eCB4IHh4eHh4eHh4eCB4eCB4eHh4eHggeHh4eHh4IHh4eHh4IHh4eHh4eHggeHggeHh4eCB4eHh4eHh4eCB4eHh4IHh4eHh4eHh4eHh4IHh4eCB4eHh4eHh4IHh4eHh4eHh4eCB4eCB4eHh4eHggeHggeHh4eHh4eCB4eHh4eHh4eHh4eHh4eHh4IHh4eHh4eHh4eCAgeHh4IHh4eHh4eHh4IHh4eHh4eHh4eCB4eHh4IHh4eCB4eHh4IHh4eCB4eHggeHh4eHggeHh4eHh4eHh4eHh4IHh4eHggeHh4eHh4eHh4IHh4eHh4eHh4eHh4IHh4IHh4eHh4IHh4eCB4eHh4eHh4eCB4eHh4eHggeHh4IHh4eCB4eHh4eHh4eHggeHh4eHh4eCB4IHh4eHh4eHh4eCB4eCB4eHh4eHggeHh4eHh4eCAgeHh4eHh4eHh4eHh4eHh4eHh4IHh4eHh4eHggeHh4eHh4eCB4eHggeHh4IHh4eHh4eHh4IHh4eHh4eHggIHh4eHggeHh4IHh4eHh4eCB4eHh4eCB4eHh4eCB4eCB4eHh4eHggeHh4eHh4eCB4eHggeHh4eHh4eHh4eHh4IHh4eHggeHh4eHh4eHh4IHh4eHh4eCB4eHh4eHggeHh4eHggeHh4IHh4eHh4eHggeHh4eHh4eHh4eHh4eHh4eCB4eHh4eHh4eHggIHh4eHh4eHh4eHggeHh4eCB4eCB4eHh4eHh4eCB4eHggeHh4eHh4eHh4eHggeHh4eHgnXSwKICAgICAgICBcIGdldGxpbmUoMSwgJyQnKSkKICBid2lwZSEKZW5kZnVuYwoKZnVuYyBUZXN0X21hdGNoaW5nX2N1cnBvcygpCiAgc2V0IHJlPTAKICBjYWxsIHM6Y3VycG9zX3Rlc3QoKQogIHNldCByZT0xCiAgY2FsbCBzOmN1cnBvc190ZXN0KCkKICBzZXQgcmU9MgogIGNhbGwgczpjdXJwb3NfdGVzdCgpCiAgc2V0IHJlJgplbmRmdW5jCgoiIFRlc3QgZm9yIG1hdGNoaW5nIHRoZSBzdGFydCBhbmQgZW5kIG9mIGEgYnVmZmVyCmZ1bmMgUmVnZXhfc3RhcnRfZW5kX2J1ZmZlcigpCiAgY2FsbCBzZXRsaW5lKDEsIHJlcGVhdChbJ3ZpbSBlZGl0J10sIDIwKSkKICAvXCVeCiAgY2FsbCBhc3NlcnRfZXF1YWwoWzAsIDEsIDEsIDBdLCBnZXRwb3MoJy4nKSkKICBleGUgIm5vcm1hbCA1MCUvXFwlXi4uXDxDUj4iCiAgY2FsbCBhc3NlcnRfZXF1YWwoWzAsIDEsIDEsIDBdLCBnZXRwb3MoJy4nKSkKICBleGUgIm5vcm1hbCA1MCUvXFwlJFw8Q1I+IgogIGNhbGwgYXNzZXJ0X2VxdWFsKFswLCAyMCwgOCwgMF0sIGdldHBvcygnLicpKQogIGV4ZSAibm9ybWFsIDZnZy8uLlxcJSRcPENSPiIKICBjYWxsIGFzc2VydF9lcXVhbChbMCwgMjAsIDcsIDBdLCBnZXRwb3MoJy4nKSkKICAlZAplbmRmdW5jCgpmdW5jIFRlc3Rfc3RhcnRfZW5kX29mX2J1ZmZlcl9tYXRjaCgpCiAgbmV3CiAgc2V0IHJlZ2V4cGVuZ2luZT0xCiAgY2FsbCBSZWdleF9zdGFydF9lbmRfYnVmZmVyKCkKICBzZXQgcmVnZXhwZW5naW5lPTIKICBjYWxsIFJlZ2V4X3N0YXJ0X2VuZF9idWZmZXIoKQogIGJ3aXBlIQplbmRmdW5jCgpmdW5jIFRlc3RfemVfYmVmb3JlX3pzKCkKICBjYWxsIGFzc2VydF9lcXVhbCgnJywgbWF0Y2hzdHIoJyAnLCAnXCUjPTFcemUgXHpzJykpCiAgY2FsbCBhc3NlcnRfZXF1YWwoJycsIG1hdGNoc3RyKCcgJywgJ1wlIz0yXHplIFx6cycpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKHJlcGVhdChbJyddLCAxMCksIG1hdGNobGlzdCgnICcsICdcJSM9MVx6ZSBcenMnKSkKICBjYWxsIGFzc2VydF9lcXVhbChyZXBlYXQoWycnXSwgMTApLCBtYXRjaGxpc3QoJyAnLCAnXCUjPTJcemUgXHpzJykpCmVuZGZ1bmMKCiIgQ2hlY2sgZm9yIGRldGVjdGluZyBlcnJvcgpmdW5jIFRlc3RfcmVnZXhwX2Vycm9yKCkKICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBtYXRjaGxpc3QoJ3ggeCcsICdcXCUjPTEgXFx6cyonKSIsICdFODg4OicpCiAgY2FsbCBhc3NlcnRfZmFpbHMoImNhbGwgbWF0Y2hsaXN0KCd4IHgnLCAnXFwlIz0xIFxcemUqJykiLCAnRTg4ODonKQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCJjYWxsIG1hdGNobGlzdCgneCB4JywgJ1xcJSM9MiBcXHpzKicpIiwgJ0U4ODg6JykKICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBtYXRjaGxpc3QoJ3ggeCcsICdcXCUjPTIgXFx6ZSonKSIsICdFODg4OicpCiAgY2FsbCBhc3NlcnRfZmFpbHMoJ2V4ZSAibm9ybWFsIC9cXCUjPTFcXCVbeFxcJVt4XV1cPENSPiInLCAnRTM2OTonKQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCJjYWxsIG1hdGNoc3RyKCdhYmNkJywgJ1xcJW84NDFcXCVvMTQyJykiLCAnRTY3ODonKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCcnLCBtYXRjaHN0cignYWJjZCcsICdcJW8xODFcJW8xNDInKSkKZW5kZnVuYwoKIiBUZXN0IGZvciB1c2luZyB0aGUgbGFzdCBzdWJzdGl0dXRlIHN0cmluZyBwYXR0ZXJuICh+KQpmdW5jIFRlc3RfcmVnZXhwX2xhc3Rfc3Vic3Rfc3RyaW5nKCkKICBuZXcKICBzL2Jhci9iYXovZQogIGNhbGwgYXNzZXJ0X2VxdWFsKG1hdGNoc3RyKCJmb29cbmJhelxuYmFyIiwgIlxcJSM9MVx+IiksICJiYXoiKQogIGNhbGwgYXNzZXJ0X2VxdWFsKG1hdGNoc3RyKCJmb29cbmJhelxuYmFyIiwgIlxcJSM9Mlx+IiksICJiYXoiKQogIGNsb3NlIQplbmRmdW5jCgoiIHZpbTogc2hpZnR3aWR0aD0yIHN0cz0yIGV4cGFuZHRhYgo=