49340|function.imagefontheight|67|1106581672|dev at numist dot net|VGhpcyBsaWJyYXJ5IGZ1bmN0aW9uIGlzIHZlcnkgdXNlZnVsIGZvciB2YXJpYWJsZS1zaXplZCBpbWFnZXMgdGhhdCBvbmx5IGNvbnRhaW4gdGV4dCwgbGlrZSB0aGlzIGZ1bmN0aW9uIHRoYXQgSSB1c2UgdG8gb3V0cHV0IGVycm9yIG1lc3NhZ2VzIHRoYXQgYWNjdW11bGF0ZSBhbmQgY2F1c2UgYSBmYXRhbCBlcnJvciBpbiBteSB0aHVtYm5haWxlcjoKCjw/cGhwCmZ1bmN0aW9uIGVycmltZygkZXJyb3IpIHsKICAgLy8gJGVycm9yIGlzIGFuIGFycmF5IG9mIGVycm9yIG1lc3NhZ2VzLCBlYWNoIHRha2luZyB1cCBvbmUgbGluZQogICAvLyBpbml0aWFsaXphdGlvbgogICAkZm9udF9zaXplID0gMjsKICAgJHRleHRfd2lkdGggPSBpbWFnZWZvbnR3aWR0aCgkZm9udF9zaXplKTsKICAgJHRleHRfaGVpZ2h0ID0gaW1hZ2Vmb250aGVpZ2h0KCRmb250X3NpemUpOwogICAkd2lkdGggPSAwOwogICAvLyB0aGUgaGVpZ2h0IG9mIHRoZSBpbWFnZSB3aWxsIGJlIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gJGVycm9yCiAgICRoZWlnaHQgPSBjb3VudCgkZXJyb3IpOwoKICAgLy8gdGhpcyBnZXRzIHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3Qgc3RyaW5nLCBpbiBjaGFyYWN0ZXJzIHRvIGRldGVybWluZQogICAvLyB0aGUgd2lkdGggb2YgdGhlIG91dHB1dCBpbWFnZQogICBmb3IoJHggPSAwOyAkeCA8IGNvdW50KCRlcnJvcik7ICR4KyspIHsKICAgICAgaWYoc3RybGVuKCRlcnJvclskeF0pID4gJHdpZHRoKSB7CiAgICAgICAgICR3aWR0aCA9IHN0cmxlbigkZXJyb3JbJHhdKTsKICAgICAgfQogICB9CiAgIAogICAvLyBuZXh0IHdlIHR1cm4gdGhlIGhlaWdodCBhbmQgd2lkdGggaW50byBwaXhlbCB2YWx1ZXMKICAgJHdpZHRoID0gJHdpZHRoICogJHRleHRfd2lkdGg7CiAgICRoZWlnaHQgPSAkaGVpZ2h0ICogJHRleHRfaGVpZ2h0OwogICAKICAgLy8gY3JlYXRlIGltYWdlIHdpdGggZGltZW5zaW9ucyB0byBmaXQgdGV4dCwgcGx1cyB0d28gZXh0cmEgcm93cyBhbmQKICAgLy8gdHdvIGV4dHJhIGNvbHVtbnMgZm9yIGJvcmRlcgogICAkaW0gPSBpbWFnZWNyZWF0ZXRydWVjb2xvcigkd2lkdGggKyAoIDIgKiAkdGV4dF93aWR0aCApLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhlaWdodCArICggMiAqICR0ZXh0X2hlaWdodCApICk7CiAgIGlmKCRpbSkgewogICAgICAvLyBpbWFnZSBjcmVhdGlvbiBzdWNjZXNzCiAgICAgICR0ZXh0X2NvbG9yID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCRpbSwgMjMzLCAxNCwgOTEpOwogICAgICAvLyB0aGlzIGxvb3Agb3V0cHV0cyB0aGUgZXJyb3IgbWVzc2FnZSB0byB0aGUgaW1hZ2UKICAgICAgZm9yKCR4ID0gMDsgJHggPCBjb3VudCgkZXJyb3IpOyAkeCsrKSB7CiAgICAgICAgIC8vIGltYWdlc3RyaW5nKGltYWdlLCBmb250LCB4LCB5LCBtc2csIGNvbG9yKTsKICAgICAgICAgaW1hZ2VzdHJpbmcoJGltLCAkZm9udF9zaXplLCAkdGV4dF93aWR0aCwgCiAgICAgICAgICAgICAgICAgICAgICR0ZXh0X2hlaWdodCArICR4ICogJHRleHRfaGVpZ2h0LCAkZXJyb3JbJHhdLCAKICAgICAgICAgICAgICAgICAgICAgJHRleHRfY29sb3IpOwogICAgICB9CiAgICAgIC8vIG5vdywgcmVuZGVyIHlvdXIgaW1hZ2UgdXNpbmcgeW91ciBmYXZvcml0ZSBpbWFnZSogZnVuY3Rpb24gCiAgICAgIC8vIChpbWFnZWpwZWcsIGZvciBpbnN0YW5jZSkKICAgICAgb3V0KCRpbSwgYXJyYXkoKSwgJGVycm9yKTsKICAgfSBlbHNlIHsKICAgICAgLy8gaW1hZ2UgY3JlYXRpb24gZmFpbGVkLCBzbyBqdXN0IGR1bXAgdGhlIGFycmF5IGFsb25nIHdpdGggZXh0cmEgZXJyb3IKICAgICAgJGVycm9yW10gPSAiSXMgR0QgSW5zdGFsbGVkPyI7CiAgICAgIGRpZSh2YXJfZHVtcCgkZXJyb3IpKTsKICAgfQp9Cj8+CgpUaGUgZnVuY3Rpb24gZXhwZWN0cyBhbiBhcnJheSBvZiBlcnJvciBtZXNzYWdlcyB0byBiZSBwYXNzZWQgaW4sIGFuZCB0aGVuIG91dHB1dHMgYW4gaW1hZ2UgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgdGhlIGFycmF5LiAgVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBpZiB5b3VyIGNvZGUgaXMgY29udGFpbmVkIGluIGFuIGh0bWwgcGFnZSB0aGF0IHdpbGwgZGlzcGxheSByZXhlcyBpZiB0aGUgaW1hZ2VzIGRvIG5vdCByZW5kZXIgY29ycmVjdGx5LgoKVGhpcyBmdW5jdGlvbiBkaXNwbGF5cyB0aGUgYXJyYXkgaW4gaW1hZ2UgZm9ybSB3aXRoIGluZGV4IDAgYXQgdGhlIHRvcCwgYW5kIHRoZSBoaWdoZXN0IGluZGV4IGF0IHRoZSBib3R0b20uCgpZb3UgaGF2ZSB0byB3cml0ZSBvdXQoKSB5b3Vyc2VsZiB0aG91Z2gsIHNlZSBpbWFnZWpwZWcsIGltYWdlcG5nLCBldGMgZm9yIGdvb2QgaWRlYXMgb24gaG93IHRvIHdyaXRlIGEgZGVjZW50IG91dHB1dCBmdW5jdGlvbi4=|4|2