0x0dfaab3d…2f90sent to0x9784b427…70af·#11,028,191·view on Etherscan
data:text/plain;base64,LyogRGlzY3Vzc2lvbjoKICogLy90Lm1lL2JvbnVzZGZvCiAqLwovKiBEZXNjcmlwdGlvbjoKICogRml4ZWQgSW5mbGF0aW9uCiAqLwpwcmFnbWEgc29saWRpdHkgXjAuNy4xOwoKY29udHJhY3QgRml4ZWRJbmZsYXRpb25GdW5jdGlvbmFsaXR5IHsKCiAgICBzdHJpbmcgcHJpdmF0ZSBfbWV0YWRhdGFMaW5rOwoKICAgIGNvbnN0cnVjdG9yKHN0cmluZyBtZW1vcnkgbWV0YWRhdGFMaW5rKSB7CiAgICAgICAgX21ldGFkYXRhTGluayA9IG1ldGFkYXRhTGluazsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRNZXRhZGF0YUxpbmsoKSBwdWJsaWMgdmlldyByZXR1cm5zKHN0cmluZyBtZW1vcnkpIHsKICAgICAgICByZXR1cm4gX21ldGFkYXRhTGluazsKICAgIH0KCiAgICBmdW5jdGlvbiBvblN0YXJ0KGFkZHJlc3MsIGFkZHJlc3MpIHB1YmxpYyB7CiAgICAgICAgSU1WRFByb3h5IHByb3h5ID0gSU1WRFByb3h5KG1zZy5zZW5kZXIpOwogICAgICAgIElTdGF0ZUhvbGRlciBzdGF0ZUhvbGRlciA9IElTdGF0ZUhvbGRlcihwcm94eS5nZXRTdGF0ZUhvbGRlckFkZHJlc3MoKSk7CiAgICAgICAgc3RhdGVIb2xkZXIuc2V0QWRkcmVzcygiZml4ZWRJbmZsYXRpb24udW5pc3dhcFYyUm91dGVyQWRkcmVzcyIsIDB4N2EyNTBkNTYzMEI0Y0Y1Mzk3MzlkRjJDNWRBY2I0YzY1OUYyNDg4RCk7CiAgICAgICAgc3RhdGVIb2xkZXIuc2V0VWludDI1NigiZml4ZWRJbmZsYXRpb24uYmxvY2tMaW1pdCIsIDE5MjAwKTsKICAgICAgICBzdGF0ZUhvbGRlci5zZXRBZGRyZXNzKCJmaXhlZEluZmxhdGlvbi50cmFuc2ZlcnNbMF0udG9rZW5BZGRyZXNzIiwgMHg5RkQ2YTIzMTkzRDNBOGYwNGU3MjU1OEIzYzI4ZGVhNjM2NzFFQjk1KTsKICAgICAgICBzdGF0ZUhvbGRlci5zZXRVaW50MjU2KCJmaXhlZEluZmxhdGlvbi50cmFuc2ZlcnNbMF0uYW1vdW50IiwgMzA1MDAwMDAwMDAwMDAwMDAwMDApOwogICAgICAgIHN0YXRlSG9sZGVyLnNldFVpbnQyNTYoImZpeGVkSW5mbGF0aW9uLnRyYW5zZmVycy5sZW5ndGgiLCAxKTsKICAgICAgICBzdGF0ZUhvbGRlci5zZXRBZGRyZXNzKCJmaXhlZEluZmxhdGlvbi5zd2FwQ291cGxlc1swXS5mcm9tIiwgMHg5RkQ2YTIzMTkzRDNBOGYwNGU3MjU1OEIzYzI4ZGVhNjM2NzFFQjk1KTsKICAgICAgICBzdGF0ZUhvbGRlci5zZXRBZGRyZXNzKCJmaXhlZEluZmxhdGlvbi5zd2FwQ291cGxlc1swXS50byIsIDB4QzAyYWFBMzliMjIzRkU4RDBBMGU1QzRGMjdlQUQ5MDgzQzc1NkNjMik7IC8vIFdFVEgKICAgICAgICBzdGF0ZUhvbGRlci5zZXRVaW50MjU2KCJmaXhlZEluZmxhdGlvbi5zd2FwQ291cGxlc1swXS5hbW91bnQiLCAyMDAwMDAwMDAwMDAwMDAwMDAwKTsKICAgICAgICBzdGF0ZUhvbGRlci5zZXRBZGRyZXNzKCJmaXhlZEluZmxhdGlvbi5zd2FwQ291cGxlc1sxXS5mcm9tIiwgMHg5RkQ2YTIzMTkzRDNBOGYwNGU3MjU1OEIzYzI4ZGVhNjM2NzFFQjk1KTsKICAgICAgICBzdGF0ZUhvbGRlci5zZXRBZGRyZXNzKCJmaXhlZEluZmxhdGlvbi5zd2FwQ291cGxlc1sxXS50byIsIDB4MjI2MEZBQzVFNTU0MmE3NzNBYTQ0ZkJDZmVEZjdDMTkzYmMyQzU5OSk7IC8vIHdCVEMKICAgICAgICBzdGF0ZUhvbGRlci5zZXRVaW50MjU2KCJmaXhlZEluZmxhdGlvbi5zd2FwQ291cGxlc1sxXS5hbW91bnQiLCAyMDAwMDAwMDAwMDAwMDAwMDAwKTsKICAgICAgICBzdGF0ZUhvbGRlci5zZXRBZGRyZXNzKCJmaXhlZEluZmxhdGlvbi5zd2FwQ291cGxlc1syXS5mcm9tIiwgMHg5RkQ2YTIzMTkzRDNBOGYwNGU3MjU1OEIzYzI4ZGVhNjM2NzFFQjk1KTsKICAgICAgICBzdGF0ZUhvbGRlci5zZXRBZGRyZXNzKCJmaXhlZEluZmxhdGlvbi5zd2FwQ291cGxlc1syXS50byIsIDB4MGJjNTI5YzAwQzY0MDFhRUY2RDIyMEJFOEM2RWExNjY3RjZBZDkzZSk7IC8vIFlGSQogICAgICAgIHN0YXRlSG9sZGVyLnNldFVpbnQyNTYoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzWzJdLmFtb3VudCIsIDE1MDAwMDAwMDAwMDAwMDAwMDApOwogICAgICAgIHN0YXRlSG9sZGVyLnNldEFkZHJlc3MoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzWzNdLmZyb20iLCAweDlGRDZhMjMxOTNEM0E4ZjA0ZTcyNTU4QjNjMjhkZWE2MzY3MUVCOTUpOwogICAgICAgIHN0YXRlSG9sZGVyLnNldEFkZHJlc3MoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzWzNdLnRvIiwgMHg2MjM1OUVkNzUwNUVmYzYxRkYxRDU2ZkVGODIxNThDY2FmZkEyM0Q3KTsgLy8gQ09SRQogICAgICAgIHN0YXRlSG9sZGVyLnNldFVpbnQyNTYoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzWzNdLmFtb3VudCIsIDE1MDAwMDAwMDAwMDAwMDAwMDApOwogICAgICAgIHN0YXRlSG9sZGVyLnNldEFkZHJlc3MoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzWzRdLmZyb20iLCAweDlGRDZhMjMxOTNEM0E4ZjA0ZTcyNTU4QjNjMjhkZWE2MzY3MUVCOTUpOwogICAgICAgIHN0YXRlSG9sZGVyLnNldEFkZHJlc3MoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzWzRdLnRvIiwgMHgyOGNiN2U4NDFlZTk3OTQ3YTg2QjA2ZkE0MDkwQzg0NTFmNjRjMGJlKTsgIC8vIFlGTAogICAgICAgIHN0YXRlSG9sZGVyLnNldFVpbnQyNTYoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzWzRdLmFtb3VudCIsIDE1MDAwMDAwMDAwMDAwMDAwMDApOwogICAgICAgIHN0YXRlSG9sZGVyLnNldEFkZHJlc3MoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzWzVdLmZyb20iLCAweDlGRDZhMjMxOTNEM0E4ZjA0ZTcyNTU4QjNjMjhkZWE2MzY3MUVCOTUpOwogICAgICAgIHN0YXRlSG9sZGVyLnNldEFkZHJlc3MoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzWzVdLnRvIiwgMHg0NjhhYjNiMWY2M0ExQzE0YjM2MWJDMzY3YzNjQzkyMjc3NTg4RGExKTsgLy8gWUVMRAogICAgICAgIHN0YXRlSG9sZGVyLnNldFVpbnQyNTYoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzWzVdLmFtb3VudCIsIDE1MDAwMDAwMDAwMDAwMDAwMDApOwogICAgICAgIHN0YXRlSG9sZGVyLnNldFVpbnQyNTYoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzLmxlbmd0aCIsIDYpOwogICAgfQoKICAgIGZ1bmN0aW9uIG9uU3RvcChhZGRyZXNzKSBwdWJsaWMgewogICAgICAgIElTdGF0ZUhvbGRlciBzdGF0ZUhvbGRlciA9IElTdGF0ZUhvbGRlcihJTVZEUHJveHkobXNnLnNlbmRlcikuZ2V0U3RhdGVIb2xkZXJBZGRyZXNzKCkpOwogICAgICAgIHN0YXRlSG9sZGVyLmNsZWFyKCJmaXhlZEluZmxhdGlvbi51bmlzd2FwVjJSb3V0ZXJBZGRyZXNzIik7CiAgICAgICAgc3RhdGVIb2xkZXIuY2xlYXIoImZpeGVkSW5mbGF0aW9uLmJsb2NrTGltaXQiKTsKICAgICAgICBzdGF0ZUhvbGRlci5jbGVhcigiZml4ZWRJbmZsYXRpb24ubGFzdEJsb2NrIik7CiAgICAgICAgKCwgYnl0ZXMgbWVtb3J5IGxlbmd0aEJ5dGVzKSA9IHN0YXRlSG9sZGVyLmNsZWFyKCJmaXhlZEluZmxhdGlvbi50cmFuc2ZlcnMubGVuZ3RoIik7CiAgICAgICAgdWludDI1NiBsZW5ndGggPSBfdG9VaW50MjU2KGxlbmd0aEJ5dGVzKTsKICAgICAgICBzdHJpbmcgbWVtb3J5IGlTdHJpbmcgPSAiMCI7CiAgICAgICAgdWludDI1NiBpID0gMDsKICAgICAgICBmb3IoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICBzdGF0ZUhvbGRlci5jbGVhcihzdHJpbmcoYWJpLmVuY29kZVBhY2tlZCgiZml4ZWRJbmZsYXRpb24udHJhbnNmZXJzWyIsIGlTdHJpbmcgPSBfdG9TdHJpbmcoaSksICJdLnRva2VuQWRkcmVzcyIpKSk7CiAgICAgICAgICAgIHN0YXRlSG9sZGVyLmNsZWFyKHN0cmluZyhhYmkuZW5jb2RlUGFja2VkKCJmaXhlZEluZmxhdGlvbi50cmFuc2ZlcnNbIiwgaVN0cmluZywgIl0uYW1vdW50IikpKTsKICAgICAgICB9CiAgICAgICAgKCwgbGVuZ3RoQnl0ZXMpID0gc3RhdGVIb2xkZXIuY2xlYXIoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzLmxlbmd0aCIpOwogICAgICAgIGxlbmd0aCA9IF90b1VpbnQyNTYobGVuZ3RoQnl0ZXMpOwogICAgICAgIGlTdHJpbmcgPSAiMCI7CiAgICAgICAgZm9yKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgc3RhdGVIb2xkZXIuY2xlYXIoc3RyaW5nKGFiaS5lbmNvZGVQYWNrZWQoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzWyIsIGlTdHJpbmcgPSBfdG9TdHJpbmcoaSksICJdLmZyb20iKSkpOwogICAgICAgICAgICBzdGF0ZUhvbGRlci5jbGVhcihzdHJpbmcoYWJpLmVuY29kZVBhY2tlZCgiZml4ZWRJbmZsYXRpb24uc3dhcENvdXBsZXNbIiwgaVN0cmluZywgIl0udG8iKSkpOwogICAgICAgICAgICBzdGF0ZUhvbGRlci5jbGVhcihzdHJpbmcoYWJpLmVuY29kZVBhY2tlZCgiZml4ZWRJbmZsYXRpb24uc3dhcENvdXBsZXNbIiwgaVN0cmluZywgIl0uYW1vdW50IikpKTsKICAgICAgICB9CiAgICB9CgogICAgcmVjZWl2ZSgpIGV4dGVybmFsIHBheWFibGUgewogICAgfQoKICAgIGZ1bmN0aW9uIGZpeGVkSW5mbGF0aW9uKCkgcHVibGljIHsKICAgICAgICBJTVZEUHJveHkgcHJveHkgPSBJTVZEUHJveHkobXNnLnNlbmRlcik7CiAgICAgICAgSVN0YXRlSG9sZGVyIHN0YXRlSG9sZGVyID0gSVN0YXRlSG9sZGVyKHByb3h5LmdldFN0YXRlSG9sZGVyQWRkcmVzcygpKTsKCiAgICAgICAgcmVxdWlyZShibG9jay5udW1iZXIgPj0gKHN0YXRlSG9sZGVyLnNldFVpbnQyNTYoImZpeGVkSW5mbGF0aW9uLmxhc3RCbG9jayIsIGJsb2NrLm51bWJlcikgKyBzdGF0ZUhvbGRlci5nZXRVaW50MjU2KCJmaXhlZEluZmxhdGlvbi5ibG9ja0xpbWl0IikpLCAiVG9vIGVhcmx5IHRvIGNhbGwgZml4ZWRJbmZsYXRpb24gYWdhaW4hIik7CgogICAgICAgIElVbmlzd2FwVjJSb3V0ZXIgdW5pc3dhcFYyUm91dGVyID0gSVVuaXN3YXBWMlJvdXRlcihzdGF0ZUhvbGRlci5nZXRBZGRyZXNzKCJmaXhlZEluZmxhdGlvbi51bmlzd2FwVjJSb3V0ZXJBZGRyZXNzIikpOwogICAgICAgIGFkZHJlc3Mgd2V0aEFkZHJlc3MgPSB1bmlzd2FwVjJSb3V0ZXIuV0VUSCgpOwogICAgICAgIGFkZHJlc3MgZGZvV2FsbGV0QWRkcmVzcyA9IHByb3h5LmdldE1WRFdhbGxldEFkZHJlc3MoKTsKCiAgICAgICAgdWludDI1NiBsZW5ndGggPSBzdGF0ZUhvbGRlci5nZXRVaW50MjU2KCJmaXhlZEluZmxhdGlvbi50cmFuc2ZlcnMubGVuZ3RoIik7CiAgICAgICAgc3RyaW5nIG1lbW9yeSBpU3RyaW5nID0gIjAiOwogICAgICAgIHVpbnQyNTYgaSA9IDA7CiAgICAgICAgZm9yKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgYWRkcmVzcyB0b2tlbkFkZHJlc3MgPSBzdGF0ZUhvbGRlci5nZXRBZGRyZXNzKHN0cmluZyhhYmkuZW5jb2RlUGFja2VkKCJmaXhlZEluZmxhdGlvbi50cmFuc2ZlcnNbIiwgaVN0cmluZyA9IF90b1N0cmluZyhpKSwgIl0udG9rZW5BZGRyZXNzIikpKTsKICAgICAgICAgICAgcHJveHkudHJhbnNmZXIoYWRkcmVzcyh0aGlzKSwgc3RhdGVIb2xkZXIuZ2V0VWludDI1NihzdHJpbmcoYWJpLmVuY29kZVBhY2tlZCgiZml4ZWRJbmZsYXRpb24udHJhbnNmZXJzWyIsIGlTdHJpbmcsICJdLmFtb3VudCIpKSksIHRva2VuQWRkcmVzcyAhPSB3ZXRoQWRkcmVzcyA/IHRva2VuQWRkcmVzcyA6IGFkZHJlc3MoMCkpOwogICAgICAgIH0KCiAgICAgICAgbGVuZ3RoID0gc3RhdGVIb2xkZXIuZ2V0VWludDI1NigiZml4ZWRJbmZsYXRpb24uc3dhcENvdXBsZXMubGVuZ3RoIik7CiAgICAgICAgZm9yKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgX3N3YXAoc3RhdGVIb2xkZXIsIHVuaXN3YXBWMlJvdXRlciwgZGZvV2FsbGV0QWRkcmVzcywgd2V0aEFkZHJlc3MsIF90b1N0cmluZyhpKSk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIF9zd2FwKElTdGF0ZUhvbGRlciBzdGF0ZUhvbGRlciwgSVVuaXN3YXBWMlJvdXRlciB1bmlzd2FwVjJSb3V0ZXIsIGFkZHJlc3MgZGZvV2FsbGV0QWRkcmVzcywgYWRkcmVzcyB3ZXRoQWRkcmVzcywgc3RyaW5nIG1lbW9yeSBpU3RyaW5nKSBwcml2YXRlIHsKICAgICAgICBhZGRyZXNzIGZyb21BZGRyZXNzID0gc3RhdGVIb2xkZXIuZ2V0QWRkcmVzcyhzdHJpbmcoYWJpLmVuY29kZVBhY2tlZCgiZml4ZWRJbmZsYXRpb24uc3dhcENvdXBsZXNbIiwgaVN0cmluZywgIl0uZnJvbSIpKSk7CiAgICAgICAgaWYoZnJvbUFkZHJlc3MgPT0gYWRkcmVzcygwKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHVpbnQyNTYgYW1vdW50ID0gc3RhdGVIb2xkZXIuZ2V0VWludDI1NihzdHJpbmcoYWJpLmVuY29kZVBhY2tlZCgiZml4ZWRJbmZsYXRpb24uc3dhcENvdXBsZXNbIiwgaVN0cmluZywgIl0uYW1vdW50IikpKTsKICAgICAgICBpZihhbW91bnQgPT0gMCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmKGZyb21BZGRyZXNzICE9IHdldGhBZGRyZXNzKSB7CiAgICAgICAgICAgIElFUkMyMCBmcm9tID0gSUVSQzIwKGZyb21BZGRyZXNzKTsKICAgICAgICAgICAgaWYoZnJvbS5hbGxvd2FuY2UoYWRkcmVzcyh0aGlzKSwgYWRkcmVzcyh1bmlzd2FwVjJSb3V0ZXIpKSA8IGFtb3VudCkgewogICAgICAgICAgICAgICAgZnJvbS5hcHByb3ZlKGFkZHJlc3ModW5pc3dhcFYyUm91dGVyKSwgMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBhZGRyZXNzIHRvQWRkcmVzcyA9IHN0YXRlSG9sZGVyLmdldEFkZHJlc3Moc3RyaW5nKGFiaS5lbmNvZGVQYWNrZWQoImZpeGVkSW5mbGF0aW9uLnN3YXBDb3VwbGVzWyIsIGlTdHJpbmcsICJdLnRvIikpKTsKICAgICAgICBpZih0b0FkZHJlc3MgPT0gYWRkcmVzcygwKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmKGZyb21BZGRyZXNzID09IHdldGhBZGRyZXNzKSB7CiAgICAgICAgICAgIGFkZHJlc3NbXSBtZW1vcnkgcGF0aCA9IG5ldyBhZGRyZXNzW10oMik7CiAgICAgICAgICAgIHBhdGhbMF0gPSBmcm9tQWRkcmVzczsKICAgICAgICAgICAgcGF0aFsxXSA9IHRvQWRkcmVzczsgCiAgICAgICAgICAgIHVuaXN3YXBWMlJvdXRlci5zd2FwRXhhY3RFVEhGb3JUb2tlbnN7dmFsdWU6IGFtb3VudH0odW5pc3dhcFYyUm91dGVyLmdldEFtb3VudHNPdXQoYW1vdW50LCBwYXRoKVsxXSwgcGF0aCwgZGZvV2FsbGV0QWRkcmVzcywgYmxvY2sudGltZXN0YW1wICsgMTAwMCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYodG9BZGRyZXNzID09IHdldGhBZGRyZXNzKSB7CiAgICAgICAgICAgIGFkZHJlc3NbXSBtZW1vcnkgcGF0aCA9IG5ldyBhZGRyZXNzW10oMik7CiAgICAgICAgICAgIHBhdGhbMF0gPSBmcm9tQWRkcmVzczsKICAgICAgICAgICAgcGF0aFsxXSA9IHRvQWRkcmVzczsgCiAgICAgICAgICAgIHVuaXN3YXBWMlJvdXRlci5zd2FwRXhhY3RUb2tlbnNGb3JFVEgoYW1vdW50LCB1bmlzd2FwVjJSb3V0ZXIuZ2V0QW1vdW50c091dChhbW91bnQsIHBhdGgpWzFdLCBwYXRoLCBkZm9XYWxsZXRBZGRyZXNzLCBibG9jay50aW1lc3RhbXAgKyAxMDAwKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCQkvLyBmb3JjZSBzd2FwIHRvIGdvIHRocm91Z2ggV0VUSAogICAgICAgIGFkZHJlc3NbXSBtZW1vcnkgcGF0aCA9IG5ldyBhZGRyZXNzW10oMyk7CgkJcGF0aFswXSA9IGZyb21BZGRyZXNzOwogICAgICAgIHBhdGhbMV0gPSB3ZXRoQWRkcmVzczsKICAgICAgICBwYXRoWzJdID0gdG9BZGRyZXNzOwogICAgICAgIHVuaXN3YXBWMlJvdXRlci5zd2FwRXhhY3RUb2tlbnNGb3JUb2tlbnMoYW1vdW50LCB1bmlzd2FwVjJSb3V0ZXIuZ2V0QW1vdW50c091dChhbW91bnQsIHBhdGgpWzJdLCBwYXRoLCBkZm9XYWxsZXRBZGRyZXNzLCBibG9jay50aW1lc3RhbXAgKyAxMDAwKTsKICAgIH0KCiAgICBmdW5jdGlvbiBfdG9VaW50MjU2KGJ5dGVzIG1lbW9yeSBicykgcHJpdmF0ZSBwdXJlIHJldHVybnModWludDI1NiB4KSB7CiAgICAgICAgaWYoYnMubGVuZ3RoID49IDMyKSB7CiAgICAgICAgICAgIGFzc2VtYmx5IHsKICAgICAgICAgICAgICAgIHggOj0gbWxvYWQoYWRkKGJzLCBhZGQoMHgyMCwgMCkpKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIF90b1N0cmluZyh1aW50IF9pKSBwcml2YXRlIHB1cmUgcmV0dXJucyhzdHJpbmcgbWVtb3J5KSB7CiAgICAgICAgaWYgKF9pID09IDApIHsKICAgICAgICAgICAgcmV0dXJuICIwIjsKICAgICAgICB9CiAgICAgICAgdWludCBqID0gX2k7CiAgICAgICAgdWludCBsZW47CiAgICAgICAgd2hpbGUgKGogIT0gMCkgewogICAgICAgICAgICBsZW4rKzsKICAgICAgICAgICAgaiAvPSAxMDsKICAgICAgICB9CiAgICAgICAgYnl0ZXMgbWVtb3J5IGJzdHIgPSBuZXcgYnl0ZXMobGVuKTsKICAgICAgICB1aW50IGsgPSBsZW4gLSAxOwogICAgICAgIHdoaWxlIChfaSAhPSAwKSB7CiAgICAgICAgICAgIGJzdHJbay0tXSA9IGJ5dGUodWludDgoNDggKyBfaSAlIDEwKSk7CiAgICAgICAgICAgIF9pIC89IDEwOwogICAgICAgIH0KICAgICAgICByZXR1cm4gc3RyaW5nKGJzdHIpOwogICAgfQp9CgppbnRlcmZhY2UgSVVuaXN3YXBWMlJvdXRlciB