Online PHP and Javascript Decoder decode hidden script to uncover its real functionality


Show other level



if(ini_get('xdebug.remote_enable') || function_exists('xdebug_break')) { exit('Debug mode detected.'); }
$expectedHash = 'd6d154b81b1dfaf5a6083eb2a28a1203';
$expectedSha256 = 'b38589992ca02ff35e141a6d9745bd391f6b98bed5885ae1d897dfe5ed08d36f';

$WyFHGJAe = '5u2GjtyOytSu15Tw7O4OKgJvmooAmc5CWIvB';
$iQEPmKYL = 'CItnqlcXPELnQVVo0MXdeXQI86bGcKn';
$VpSMxOZb = 'a/Y1czXIQsz+Ln/y8sVD0BqRcNzYU/djjS1Q1=qnH0et';
$BGSuHysN = 'XuKrma8qlkYIXexTioj=dlypIH1y4g0ulIppsasUDBxTQI';
$mXYhTlwf = 'PrbWwbOGUNiQaDHjqXU3x2058IEQDKp61eZZQeb6sjU4rxEZa';
$nZMVPXSW = '49dv0NBmRgvu9ZduZlRKzHFsZ0lz87+5eQ7I65urlswvlU42';
$IcjSfjFI = 'CbdlFua1RApibbX6AzkcwNEjNucXMxctoCM2Py+s';
$IVaShpLU = 'IRlVBCDXqb49ol=n2TEaxDraTIiFpiR3XgzxHQ0Ob';
$bzbhXeBV = 'i5606YtNzTMxud64l09i9+n5zgp6L9LSWIZ/Q';
$DdFheSuL = '757hOc+VADIDn/BRiGhoeWHH67WIJ4cH1VDEM2MST';
$emZLIDei = 'J0DATa3iFyQasEaoHcwIwGCAjmjLR5v2M';
$cIVzmKAG = 'BmjL5JqAYJQvUm=Oo59oktbWzyB1wAAzaN/TFSTI+g7rnAD';
$kkwKRTwj = 'NSWcEhk6=pvQwqjid3jnqb2By9wM=N/zQWGk26n3';
$vbcvqHUd = '7VbyzWVYeAAEgjh2sdMWROUunTkCBwBMHuMnDWyyZy4NN';
$OhvxQXKB = 'D=V++yhDiJi/ER8rpWuRusy1gNcebsIbhJ';
$CijDkeMP = 'Le70QMmvU4qtbjYKlp8ocAaNsL1/EJ';
$tKITGUcW = 'Zpxe4WmG/u2B3O9H13J+xZkj=nMyG5KuoNTa';
$GeztFZEx = 'jskVorxaSKFei9JAWKY57ViR032YgSB3atGbG2';
$CslbnBog = 'hYxu8timEq++r6cdvh5odASUIFOY1uzPdzCZGN';
$XLVlnqcW = '1aV8qCYFuaDjRN9H0nvpcv4dQhvcbm3uNFSgkI=2o7';
$xbYDlTad = 'geFmrWvi2zMML9hLKLuBUsRyb9CihR=ww';
$ZwcLmivf = 'HGQoVinGhmUR0vu3FXK4+QXb/2pQPlVweLK2eJo';
$IbSkyUiE = 'IZJGsYWsMz9vIuz1u7beIIe0GlFhrEV1QO';
$ZxxnGHST = 'mM3tVcEWLK/MX1Yr1IK/O0ho4qCOgOFQNh5uu/D5BRt9VpI';
$VTdGacJS = 'Lnhev=5bnZ7Csruu6Y0/RRkaoqkGvWqBB8';
$ZLjPVnop = 'XQlv2a3IqE+wTXY+Wu0Xm0LgPdAIuc';
$tHjnALUJ = '1xRtE/glADGsbS4MdFmMjgU68I7z9hHoIw1TDXk';
$wcKzjnzj = 'S0AM7e7MtoLabDUVt5BZ9k=0O8vGI9JshUBjk6z';
$VzedNraC = 'sSE89qN/71GnJ=p3AhQehcJKVXlsX6N';
$zmNWOUMY = 'MY6oIwe8uT5wHOOWOC4gEaTvD/5mA19nKczm2qESsz';
$OkvKdzOz = 'gvy8bqi+KD4O4xp9WWvonwY7hdD6E7P16mYcC=TK4dUOF==';
$IkiHryxQ = 'gd/Vc12KskAYwhj+PZvJ=RDseN1iVANOaN';
$UesUWkNM = 'zwD8Z53U6ok01sjCh37r/O/FATAq8mzN6Fwo23IelhBF';
$xShCUFHk = 'roRVpyeoO6nPwmK1SS+QlR3CH760yyygdJl/WtwG7nh0h8uvOT';
$xaPKHeow = 'Sg1Zz/TrEkiC5my0boQOn39Y2B0a+L';
$EyNExOmt = 'Uydj+T/CH+T6Nc43c9Dr8GyuEQih1Tiu9WLlUjMr3cHj0X04';
$mbfMHCcK = 'xSrTA2do4uuw9tWk1kBSlYbB/6Ubi3PcVRJ60jZnG';
$iJGakjKC = 'v5bdEshd=g6CMSWITbXvu+4DzL6zxkpc8Ap6RoNW';
$RdqvOTFm = 'ibFdAwwZc30agzszrRi9dWTCHK3r74HiYYGGbqC0q05S';
$xasxaFFA = '=QzYCvrZ=G==Q0bMxdatNlPx7adzek4Yy1sPmcW+hqO0qi';
$JRDFDhUi = 'NdlgH6nqKkPI94WW4d+6+KChR5gY4SCatVc3JmRj8xx';
$TOcUUECE = 'wWII4j1CLEBQ42o14Ejb/Ad2PDB8NDp';
$CgESickb = '4P5M4ZlcnvuSkVKnhnFMFp5BneU4PD0QcNb5KCZ9Y=lddn';
$urrsUpOi = 'jeywUdh57FgJw=2+uIexEpHYeNTDiRBVLillaQHv8ixg';
$teRIZwkF = 'dYp6tO+jO/XdrpshK/DTT078+YUFD/kb9W7j';
$AorfyHBZ = 'C6lPQqkpBjV9P/BqHI=jLOkxkwtWARGGnUonGnykab=qEm37c3';
$OwitTSzd = 'McoUA8U7cYlzJiJ+axLHTaqjHVTxsp+G=6/Re';
$kIBCxtvX = 'yoz8s858S/2eht4MAgPhk4wjqlmSp+LX2wxAU4HiG9veaPJ';
$tRcXNhMY = 'CN3ubCL=aFnBDreEJQzw9AsFDmAbiGn+p';
$ubJrVreX = '7aoNCDsRFgrbZ96KEEygbb8a+QiMzbvyS3drO3kZl';
$bmoHDMyz = 'Qhs2xJvSPbBIVc7cOFhx47V7TcqhcniDDOmQmBW6HcA50Dlx';
$pedXfLoI = 'zB3tFPSQuPEHTxiQOvTbd2xZrQj40lQpNmC+NtM8yG';
$OvTUzhTk = 'GWN+UQTkiFP7xK9CNW5uyUx7y12rqoN';
$QJYEdsyj = 'lT=2Z3ajNKjMbmJcSocOvNUUkZUZlZ';
$IybKflff = 'sqURQRtvT2xX9p3oXOdoxHLGA=i28mw5Y0V';
$PVayMTll = 'pWLR5FLLZpvh2ZjrzHOCtdlQ0U0YczhC1';
$fMgpvuxr = '56Gyr3d8CkqtRIkSCd54IlzZ78GvejYH8H=/';
$PotaQSlS = '30XeoXitYkAvEMXYu5XHR=HwIpERKtkek24Yy92h0BumQpMd';
$ZaCHZZeI = '5aPeGPyBaWS1+OXAcaVMxOhOZvQILZoZwJScMyj2rkItOmD';
$gMwwuynr = 'VVNvRg1q6y+vUYKs4RlVUorGhlJMR4DOqZiH9';
$TsDTkNIi = 'zVQpIgCL57up9StzlBd57hkRZjj7Se18rFAqUUwxYmk8=N';
$CQmJynHm = '25BaMSpyOZ8PkJQSiZZXuSWEaX632G2v';
$uguTmAkL = 'NsjPurbVvawxq5QA5p8GUF/SZDh3RH';
$FOJCpUKs = '5or0oL9pumBhHE4drOan2=o0Ivm9wZPLTQR7MxFFgHD';
$HSBlESZd = 'PWu/FKU=ZsKQOvNHDe1IjE/E5MUaL9t+iwbzdXGLaJd+b4CX';
$vVVxOQta = 'PDMFvN0jyTOKpGxTabeBPlxl4Fiw7H';
$jShXgTrx = 'bGcDc5e5dvHslTHaZr59GK/9HMt318MNBGuJ';
$FehightB = 'EoQTri2Hd+pUypleISuqwwm+7PldydEvZ1+3DOogGoGYQD';
$TJZbfJrG = 'JPbmrBnVYsOi=UeSWIO695/czFNonVYaHnHz6+y7Tu';
$ZXDFcPBM = 'E6mHi2sU=nYL5p99mGNj/POx+VmZEtnjV25jT9G8';
$cgZegNZP = 'KAdlXOyL56iTXLOUNhbK=YMITFBPziRYb';
$coLOQICQ = '/6TWC9hhvAXFNeghWlmhnCACZ3Pd1CkWE';
$kEfAoOVA = 'iIsqu4JelEnK84asjDa0D/07VbpdUcFknhJmUF60c';
$bxIhHBQO = 'HHzvyJv+N1iDlCoaSpYnPJ3ulPPnU2';
$cQJsGTVB = 'Ey/zK79KWzKoD7miEk43a9sE1ucnqazrzcb';
$lDhIPPUK = 'VdZJI6+9Qnro+T53EpKmqrhUVFIL=Lhkkd7tpuUTBN/x';
$rpWUSkVB = 'ZRbQkGn9jTPwSAOpors0zYarbhCqaQxI2s';
$vyeluJew = 'FPr6WUZ0KqjkLwxVt+uONd4B0gnXp7+t';
$tVdENSdw = 'tYCPLMavX3V/mEbCpWFrBchV6wAG0IU3LclLliB';
$DqNgPATl = 'eDHo2b6QrJDD8XBngbeoHB1wMY=GXJg1ng85';
$jxZkRgNZ = 'JjyXCVEG2vw3RAT4=Aq0IMjKa9YIcpMsM7jhvg/kQ8XAR9';
$EsJDceDy = 'bexuO4EFKmA+i0OpVb23g=bPFtAQKA0MCzenLMm2R';
$qwKfRmmH = 'ps7ajTh95XW9maoLeHeADbqbdSteHoOLu=I3Z5';
$uCyJwYSu = 'jE2P32Rn1Hvj2v4cOJZtvVc7tuJW0No=slOP4=qY1';
$quaCNzem = 'ku+4dhNrgFyoVgZyqi8rUDLpUR=/+1zk';
$qjVuOmTG = 'GwJpgBkgdLUiR7cjxDv0zXNKxSVPPXarElhF7kPpx31EZVesj';
$YLjwRAii = 'Os1wdgBKidKGlUq/tcnt=D4ArEUzZuIvxByCqnUe5kP1yI';
$xXINdTQs = 'yMEoWBjBSC0X2bbHPgoiUzJeILxBGxitINV3ddK1P2Ni/7=lHi';
$NqyrnQFj = '9GYePnn15BFqrVRXA41ap7rOyi8oPiGcmAsp4nU5WEu6Cq/k';
$nuHftBlL = 'CTCgAZe3hYr4sbyl5ttDqi=ZSteWV0+c+Ss3ahbipgB';
$YRCPWOXp = 'gIb+Al6/hho4j2AWugm8JRh9Vlgr2BFjhDbmhC';
$WiRmNUvk = 'kgb9Tbt8ecyK1vzCziDklgLCa1yZdDRVkwXRX1C6A';
$TzciKQDB = 'BbByz65T4o+p8kKosci38AsrleVZ5=mU114CCFnk65ZkDprY+k';
$yaGDKusi = 'PrhJFHQ/ePdo1vM1VcCjg8GkP71cbie';
$UcoprTmE = 'ghcKAI9dlZ6T8lTrrZ/3rQRxYAIdcrcGvr';
$uBQgEkUt = 'Y0YpJyooJ4q4D/8nagsSkXLsP/APnBBn5yWkAV';
$qDBWPyIL = 'nMSgaTJolResNNM3KVQtwqs+us4G7TFH6Ieg';
$TVqEgeCw = '31rb+EexAxqPxiazyosUeRpHtpbNFiCoAVWbe2okMEh';
$EsHJOXoi = '2gKGcJM5KCme7rmr64y4SbjygkYrRSFabrMorRnJiCgKQImOLm';
$dkCHKHhx = 'pZB2ZJYkC++T9jPEVo/t6UDj5DUcXsatBFCY604';
$chCsJPRJ = 'U0eZdnja1YGQlcrAhhuG6G/OrQbpMorM';
$FeEHxNlY = 'vxOB7ROAtGIgdwUSZWD0lRDE89U30QHqaEX134apWtujrj';
$aGfwDypA = 'NOmJMRKkaR1EPgZEcQwGl9EHgO+C75b';
$gRteBXIf = 'd4lzWwHVrLtkFGgBUZWxY6kcLXCv0SeWsX';
$PIWXjRAT = 'DXwH/hsW9RdeTpEm9nZWSv/Dbin+Zdu2IgBTRlk/WFkiR';
$ugnDvAdb = 'hNIQVd5/qyndyNPDhpM384ZcSU1uC8k7mtrE';
$AVQUAOmk = 'jIy4KOQIIKyOzpu/4QQyWVihVNYKpqgQthaGdpsb1wcaTQ1GM';
$iHxcaTCL = 'b0d=Ql8Ekue0NgVrsyVL1XKuaN3h+gW+P';
$JWwiVWaN = 'SVNLtoCxzYTjjGQyk6igtdqvC/hM8MKnC6ZorPn';
$ebsSCLER = 'LROVAdbQPvuoemvllJOkAVRUlMNOvPueRr510jqVuuXdvxkb4y';
$HSRFNzdJ = 'Nr=6+sZmdmyrFhrKqZVp5iG0hrgYHGWOJVgo3OyAtxvwPOj7J';
$AsXvtEZI = '9BV5mPbTuuQqjXPlapSMXuVbjPrihRysJcqu';
$QsieMcaU = 'zB3RsWrkU2ZdDk5SsvuXS7SjyA5O3UCteG+n81eV';
$KGXHfkHW = '/3cQodqxQhPyxDzps+8DVa8PnNYabCtuMdPA';
$APeJrrIU = 'H38/Non5JHWDy/j0vKCEpvT7jzo1WdywmDHLEesSPGa8zM2TuV';
$oHTVTeXT = 'WZQXCQ5QQ3W+82m4jTDb1kQpPvDOECLENlC5722EC42F0yZNc8';
$fNfDTJLa = 'K3hAOb9kNe179/m+8r48GRw00QxWD0vowkAOsyXYH2WH';
$DFmglQCL = 'Azk8kMLuysRmiyXxdkH=qJkx1TDGPxmA94+owPNoJhGMpzAz';
$iGDokuyI = 'ia6Xc6ogxG=gpjmqTtSqEMNbUaQRCkZlu5ssHF2m4812';
$UMfHVJDF = '9sOzR=5An5ueC9=s7a2yIpqmKPQ/4OnQ9=/ASOEk0oHzyeT7iR';
$lGOmTXcl = 'b=Kqd8cqOeene03Z+X5dXrJ9bWDGOHerPdDYyLsT';
$yNrjRMGT = 'igLaZ0MDg8mC2Bzye8+gkY7dd3aF8NIyZQ/hZPJb2o6lU22z';
$XaAXCMwg = 'o6nsEYU0NuvC7/XO2BCPFqQJvegBXtSSAwhjzOJPm0';
$FcWhokCB = 'OuJSJ9NyejtUCFG4bws7Y=p1pl+dj8';
$nkhWwITj = 'PAOtN8pUwoC4I+w+HCvFX4RkUeInY9rsn+FwYoOYDvwYo/r';
$nmbZpcFX = 'RRmkU5UepBnr9SWi9y0OCuRNo=QiYA';
$bmOSKlYf = 'FKtrCMg9kaj7yoHn/NgUoSgjRFR+MtTonAMdY9KxZpjs9/';
$VtAJwbFd = 'OZqotLl=GW80uXD=ah5qZxHI67eXCT7+VOV9dcT';
$yqNbTuFw = 'b1E+SLwLmdHMGlxmKI8QTAQ=Gtxl3d';
$NvYhmQkz = 'o5yRvzGkOZ7gNOwd/jvshvXoPnGjA0/cC9QKR';
$PrHPBtQJ = 'dHdY8sgA873E8c=jogkwG79HgXqvGUF+IM6ca4exjE/ACLge';
$fljqfMlU = 'WWMCvP2MaVwBuY7N5zZMnk1/PGvJaY';
$UuTMJGrE = '8hLKZ7pqC=Gd5k7jUbIVzLWF9JU0g9jJ1bvE1C';
$ZAevoWrJ = 'nYKEQRNnoDZqw8vUoYak3runZulGul3yWB=n=LEWcjWvjcqXl';
$ZkPvpwKC = 'nUUxPU3hTVd6Tuadj7iJ+/6smhKuwe';
$vAhnNrnq = 'eL2XEupOHpjI7sk8Q8UzYbktH2by0boXJsKHJ3gx';
$tNuqaTjj = 'dnt6xsqH3Xp+PKSMgOrG0JenV6VELx2eCuXa';
$TKNSiPua = 'ar0RdL8d9kivK9zglLAdSxXZXwmnWTsqB2uLP+Gja';
$Bnajkvll = 'qer43jIzCt73YwEsa17NcBULyJOxKmuy';
$rhUyfYKq = 'MJekFA9CDu1Q0xr6lkYGsNRUx7YbGbgV3XGK';
$PHcDmLDU = 'BimtS3RH=6+4G6HQclRCbPJ2mkFX8H=iNzxwS';
$WxDNHowo = 'c=U6vB306xGUsej+4VTcaYH1pgKGqMMUy0qPyMq6AA2L=l51';
$wNJjgZHi = '/2JdRPz6k2stLqnBPeZv+aPkiezbFV+gs=uG7Y';
$Cuzaqevu = 'U4ra8b2zZsU0WbNZvb4Lm3y5m75gUseP6IYHrTFr598+C';
$lqeTYMzh = 'E5ohALUQXrElpInHc8=NSc7=sqBwirU4k1I43lVz=rqV4DRqp';
$hyXsXqvl = 'PZ9IZKm53yhIkCspW5as1g/MHIp3SZIg4P8TeI4RYKNbW4ZNTp';
$YeqsLWFV = '0tUdkeNv7qHrnJthV9iuXHQJJxp/2zXkUbpdlNW';
$dueSksFH = 'kH5/YxRtR37NIjyFp1bQ6FFMiqtPNQtpw+OLBKyYmp1zo8F';
$xESeponE = 'v9Lo4hymkXpB4NSdebipArC7OQazjZpQx=ZcmzKZJwa5LT+';
$lXdQfmrx = 'hhKdwxlkI2tl6P3KsMM9VXHtS4LvwLO9jrFZQap';
$FBBJOTnU = '1T6Ts1YpEn7IFa+X2PUWOSrUaHMw+cLrKn3S2+BRmp7';
$UKjXVsuS = 'RKMexDx5eHBndI7Yh4vYKMmeLurd1FxTsDpLLYNxuQMJm60hG6';
$TCflXVBZ = 'hhya/RrWyLZiH4Ld+QZxwquZ7RRQ2FrsU';
$kqrxrKPG = 'mzY=3CxmBMM69NTTMM+Ii8oBntuh4KIg4ckx47zW7OA1Okpm';
$NzykHIbk = 'Dm=Zg1dql7NM/RXJwvDKYlv913orD/bKbkMA/10O';
$SzWbwxCO = '4bgirg2caTgsp/jSwno0I4mFQSxEAEtcCbtC7PO';
$KJooFsIh = 'mi';
$zAaDLyrk = 'xU3iO8yIGFnfSwqiyAF3/bYkymGstho1Iw1XaJ5YhLc=';
$mPufEhSc = '4bJKjGGMBZ0LrL1VXF1G2A==';
$EeTiYsUR = 'YC2w9L/31fCVjrtIttn35A==';
$ZQlnEgOR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcd';
$yczYxRPF = 'efghijklmnopqrstuvwxyz0123456789+/=';
$fcshHidQ = 'rS0/8H=I7Ga+3OtpERxN1hsbCWwPgMZjFYd';
$uESzltuf = 'm9B6QUc4yD5LqvzkuXnAVo2TielKJf';

 $obfData = $WyFHGJAe . $iQEPmKYL . $VpSMxOZb . $BGSuHysN . $mXYhTlwf . $nZMVPXSW . $IcjSfjFI . $IVaShpLU . $bzbhXeBV . $DdFheSuL . $emZLIDei . $cIVzmKAG . $kkwKRTwj . $vbcvqHUd . $OhvxQXKB . $CijDkeMP . $tKITGUcW . $GeztFZEx . $CslbnBog . $XLVlnqcW . $xbYDlTad . $ZwcLmivf . $IbSkyUiE . $ZxxnGHST . $VTdGacJS . $ZLjPVnop . $tHjnALUJ . $wcKzjnzj . $VzedNraC . $zmNWOUMY . $OkvKdzOz . $IkiHryxQ . $UesUWkNM . $xShCUFHk . $xaPKHeow . $EyNExOmt . $mbfMHCcK . $iJGakjKC . $RdqvOTFm . $xasxaFFA . $JRDFDhUi . $TOcUUECE . $CgESickb . $urrsUpOi . $teRIZwkF . $AorfyHBZ . $OwitTSzd . $kIBCxtvX . $tRcXNhMY . $ubJrVreX . $bmoHDMyz . $pedXfLoI . $OvTUzhTk . $QJYEdsyj . $IybKflff . $PVayMTll . $fMgpvuxr . $PotaQSlS . $ZaCHZZeI . $gMwwuynr . $TsDTkNIi . $CQmJynHm . $uguTmAkL . $FOJCpUKs . $HSBlESZd . $vVVxOQta . $jShXgTrx . $FehightB . $TJZbfJrG . $ZXDFcPBM . $cgZegNZP . $coLOQICQ . $kEfAoOVA . $bxIhHBQO . $cQJsGTVB . $lDhIPPUK . $rpWUSkVB . $vyeluJew . $tVdENSdw . $DqNgPATl . $jxZkRgNZ . $EsJDceDy . $qwKfRmmH . $uCyJwYSu . $quaCNzem . $qjVuOmTG . $YLjwRAii . $xXINdTQs . $NqyrnQFj . $nuHftBlL . $YRCPWOXp . $WiRmNUvk . $TzciKQDB . $yaGDKusi . $UcoprTmE . $uBQgEkUt . $qDBWPyIL . $TVqEgeCw . $EsHJOXoi . $dkCHKHhx . $chCsJPRJ . $FeEHxNlY . $aGfwDypA . $gRteBXIf . $PIWXjRAT . $ugnDvAdb . $AVQUAOmk . $iHxcaTCL . $JWwiVWaN . $ebsSCLER . $HSRFNzdJ . $AsXvtEZI . $QsieMcaU . $KGXHfkHW . $APeJrrIU . $oHTVTeXT . $fNfDTJLa . $DFmglQCL . $iGDokuyI . $UMfHVJDF . $lGOmTXcl . $yNrjRMGT . $XaAXCMwg . $FcWhokCB . $nkhWwITj . $nmbZpcFX . $bmOSKlYf . $VtAJwbFd . $yqNbTuFw . $NvYhmQkz . $PrHPBtQJ . $fljqfMlU . $UuTMJGrE . $ZAevoWrJ . $ZkPvpwKC . $vAhnNrnq . $tNuqaTjj . $TKNSiPua . $Bnajkvll . $rhUyfYKq . $PHcDmLDU . $WxDNHowo . $wNJjgZHi . $Cuzaqevu . $lqeTYMzh . $hyXsXqvl . $YeqsLWFV . $dueSksFH . $xESeponE . $lXdQfmrx . $FBBJOTnU . $UKjXVsuS . $TCflXVBZ . $kqrxrKPG . $NzykHIbk . $SzWbwxCO . $KJooFsIh;

 $obfAesKey = $zAaDLyrk;

 $obfAesIV = $mPufEhSc;

 $obfXorKey = $EeTiYsUR;

 $obfSubFrom = $ZQlnEgOR . $yczYxRPF;

 $obfSubTo = $fcshHidQ . $uESzltuf;



    
    $dataRaw = preg_replace('/\/\*NOISE\*\//', '', $obfData);
    // Reverse custom substitution:
    $data = strtr($dataRaw, $obfSubTo, $obfSubFrom);
    // Reverse first transformation: reverse string, ROT13, Base64 decode.
    $data = strrev($data);
    $data = str_rot13($data);
    $data = base64_decode($data);
    // XOR decryption:
    $xorKeyStr = base64_decode($obfXorKey);
    $deXor = '';
    for ($i = 0, $len = strlen($data); $i < $len; $i++) {
        $deXor .= $data[$i] ^ $xorKeyStr[$i % strlen($xorKeyStr)];
    }
    $data = $deXor;
    // AES decryption:
    $aesKey = base64_decode($obfAesKey);
    $aesIV = base64_decode($obfAesIV);
    $decrypted = openssl_decrypt($data, 'AES-256-CBC', $aesKey, OPENSSL_RAW_DATA, $aesIV);
    $originalCode = gzuncompress($decrypted);
    // Dual Integrity Checks:
    if(md5($originalCode) !== $expectedHash || hash('sha256', $originalCode) !== $expectedSha256){
        eval("echo 'Garbage output: Integrity failure.';");
        exit;
    }
    eval($originalCode);
    

	if (defined('CORE_INIT_LOADED')) {
	 return;
	 
}
 define('CORE_INIT_LOADED', true);
	 if (count(get_included_files()) === 1) {
	 exit('No direct script access allowed');
	 
}
 define('atSEXsTF', true);
 define('lbI3Kt1y', true);
	 if (!defined('KizAdDH4')) {
	 define('KizAdDH4', 'SQL updates could not be imported, please contact support.');
	 
}
 define('OapaIOcN', 'Server returned an invalid response, please contact support.');
 define('DlgP6FRs', 'Connection to server failed or the server returned an error, please contact support.');
 define('qnpMk8T0', 'Connection to server failed or the server returned an error, please contact support.');
 define('fwbqHPu0', 'Main update files downloaded and extracted.');
 define('KpDqQC9y', 'Your update period has ended or your license is invalid, please contact support.');
 define('tHaXM0ad', 'Verified! Thanks for purchasing.');
 define('KizAdDH4', 'SQL updates could not be imported, please contact support.');
 define('St4qVvxE', 'Downloaded file size:');
 define('WeogxcvY', "Starting to download file...\n");
 define('zCxijzKj', 'Download/Extract error or incomplete data.');
 define('Krr9HvME', 'Fetching file size from server:');
 define('RfxN84X4', 'Fetching file size from server:');
 define('e_UjjApQ', 'SQL file downloaded, extracting database...');
 define('VOz6qFzC', 'File downloaded, extracting...');
 define('DXE5jfGR', 'Folder does not have write permission or the update file path could not be resolved, please contact support.');
 define('KizAdDH4', 'SQL updates could not be imported, please contact support.');
 define('KpDqQC9y', 'Download size:');
 define('tWLVMDua', 'SQL update files downloaded...');
 define('KizAdDH4', 'SQL updates could not be imported, please contact support.');
 define('eC9iiUrH', 'Update successful, there were no SQL updates. So you can run the updated application directly.');
 define('UrNTGMos', 'Update successful, the SQL updates were successfully imported.');
 define('qnpMk8T0', 'Your update period has ended or your license is invalid, please contact support.');
 define('SQOutOfTime', 'SQL updates could not be imported, please import it manually.');
 define('KpDqQC9y', 'Your update period ended or your license is invalid, please contact support.');
 define('KizAdDH4', 'SQL updates cannot be imported, please import it manually.');
 define('KpDqQC9y', 'Main Update size:');
 define('DlgP6FRs', 'Connection to server failed or the server returned an error, please contact support.');
 define('OapaIOcN', 'Server returned an invalid response, please contact support.');
 define('qnpMk8T0', 'Your update period has ended or your license is invalid, please contact support.');
 define('DXE5jfGR', 'Folder does not have write permission or the update file path could not be resolved, please contact support.');
 define('fwbqHPu0', 'Main update files downloaded and extracted.');
 define('zCxijzKj', 'Update zip extraction failed.');
 define('Krr9HvME', 'Preparing to download SQL update...');
 define('RfXn84X4', 'SQL file size:');
 define('St4qVvxE', 'Downloaded file size:');
 define('WeogxcvY', "Downloading main update...\n");
 define('xnpMk8T0', 'Your update period or license is invalid, contact support.');
 define('fwbqHPu0', 'Main update files downloaded & extracted.');
 define('OapaIOcN', 'Server returned an invalid response, please contact support.');
 define('DlgP6FRs', 'Connection to server failed or the server returned an error, please contact support.');
 define('UrNTGMos', 'Update successful, the SQL updates were successfully imported.');
 define('eC9iiUrH', 'Update successful, there were no SQL updates. You can run the updated application now.');
 define('atSEXsTF', true);
 define('lbI3Kt1y', true);
 define('KizAdDH4', 'SQL updates cannot be imported, please import manually.');
 define('St4qVvxE', '(Please do not refresh the page).');
 define('WeogxcvY', 'Downloading main update...');
 define('qn pMk8T0', 'Your update period has ended or your license is invalid, please contact support.');
 define('DXE5jfGR', 'Folder not writable or invalid path, please contact support.');
 define('fw bqHPu0', 'Main update files downloaded and extracted.');
 define('zCxijzKj', 'Update zip extraction failed.');
 define('tHaXM0ad', 'Verified! Thanks for purchasing.');
 define('e_UjjApQ', 'Preparing to download main update...');
 define('KpDqQC9y', 'Main Update size:');
 define('St4qVvxE', '(Downloaded file size).');
 define('KizAdDH4', 'SQL updates not imported, import manually.');
 define('Sq4qVvxE', '(Please do not refresh the page).');
 define('Krr9HvME', 'Preparing to download SQL update...');
 define('RfxN84X4', 'SQL file size:');
 define('VOz6qFzC', '<br>');
 define('DXE5jfGR', 'Folder missing write permission or invalid path, please contact support.');
 define('tWLVMDua', 'SQL update files downloaded.');
 define('KizAdDH4', 'SQL import error, please contact support.');
 define('UrNTGMos', 'Update success, SQL imported.');
 @ini_set('memory_limit', '256M');
 @ini_set('max_execution_time', 600);
	 class L1c3n5380x4P1 {
	 private $product_id;
	 private $api_url;
	 private $api_key;
	 private $api_language;
	 private $current_version;
	 private $verify_type;
	 private $verification_period;
	 private $current_path;
	 private $root_path;
	 private $license_file;
		 public function __construct() {
		 $p1 = '9916';
		 $p2 = '4119';
		 $this->product_id = $p1 . $p2;
		 $u1 = 'ht';
		 $u2 = 'tps://ver';
		 $u3 = 'ify.freecodes';
		 $u4 = '.in/';
		 $this->api_url = $u1 . $u2 . $u3 . $u4;
		 $k1 = '4A8230C4';
		 $k2 = '83F4C6425C9';
		 $k3 = '7';
		 $this->api_key = $k1 . $k2 . $k3;
		 $this->api_language = 'english';
		 $this->current_version = 'v1.6.4';
		 $this->verify_type = 'non_envato';
		 $this->verification_period = 3;
		 $this->current_path = realpath(__DIR__);
		 $this->root_path = realpath($this->current_path . '/../..');
		 $this->license_file = $this->current_path . '/.lb_lic';
		 
	}
		 public function check_local_license_exist() {
		 return is_file($this->license_file);
		 
	}
		 public function get_current_version() {
		 return $this->current_version;
		 
	}
		 private function call_api($method, $url, $postFields) {
			 if (session_status() === PHP_SESSION_NONE) {
			 session_start();
			 
		}
			 if (empty($_SESSION['UHhd87HJKtJ'])) {
			 $_SESSION['UHhd87HJKtJ'] = 0;
			 
		}
		 $ch = curl_init();
			 switch ($method) {
			 case 'POST': curl_setopt($ch, CURLOPT_POST, 1);
				 if ($postFields) {
				 curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
				 
			}
			 break;
			 case 'PUT': curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
				 if ($postFields) {
				 curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
				 
			}
			 break;
				 default: if ($postFields) {
				 $url = sprintf('%s?%s', $url, http_build_query($postFields));
				 
			}
			 break;
			 
		}
		 curl_setopt($ch, CURLOPT_URL, $url);
			 if ($_SESSION['UHhd87HJKtJ'] >= 3) {
			 curl_setopt($ch, CURLOPT_PROXY, $this->get_proxy_from_third_party());
			 curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
			 
		}
		 $_SESSION['UHhd87HJKtJ'] += 1;
		 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
		 curl_setopt($ch, CURLOPT_TIMEOUT, 30);
		 $httpHost = $_SERVER['SERVER_NAME'] ?? getenv('HTTP_HOST');
		 $scheme = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
		 $origin = $scheme . $httpHost . $_SERVER['REQUEST_URI'];
		 $serverIp = getenv('SERVER_ADDR') ?: $_SERVER['SERVER_ADDR'] ?: $this->get_ip_from_third_party();
		 $serverIp = $serverIp ?: gethostbyname(gethostname());
		 curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'LB-API-KEY: ' . $this->api_key, 'LB-URL: ' . $origin, 'LB-IP: ' . $serverIp, 'LB-LANG: ' . $this->api_language, ]);
		 $response = curl_exec($ch);
		 $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
		 $curlErrno = curl_errno($ch);
			 if (!$response && $curlErrno) {
			 unset($_SESSION['UHhd87HJKtJ']);
			 curl_close($ch);
			 return json_encode(['status' => false, 'message' => 'Connection error']);
			 
		}
			 if ($httpCode != 200) {
			 curl_close($ch);
			 exit('Server error');
			 
		}
		 curl_close($ch);
		 return $response;
		 
	}
		 public function check_connection() {
		 $payload = [];
		 $response = $this->call_api('POST', $this->api_url . 'api/check_connection_ext', json_encode($payload));
		 return json_decode($response, true);
		 
	}
		 public function get_latest_version() {
		 $payload = ['product_id' => $this->product_id];
		 $response = $this->call_api('POST', $this->api_url . 'api/latest_version', json_encode($payload));
		 return json_decode($response, true);
		 
	}
		 public function activate_license($licenseCode, $clientName, $email = null, $createLocal = true) {
		 $payload = [ 'product_id' => $this->product_id, 'license_code' => $licenseCode, 'client_name' => $clientName, 'email' => $email, 'verify_type' => $this->verify_type, ];
		 $response = $this->call_api('POST', $this->api_url . 'api/activate_license', json_encode($payload));
		 $data = json_decode($response, true);
			 if (!empty($createLocal) && $data['status']) {
			 @chmod($this->license_file, 0777);
				 if (is_writable($this->license_file)) {
				 unlink($this->license_file);
				 
			}
			 file_put_contents($this->license_file, trim($data['lic_response']), LOCK_EX);
			 
		}
		 return $data;
		 
	}
		 public function v3r1phy_l1c3n53($forceRemoteCheck = false, $licenseCode = false, $clientName = false) {
			 if (!empty($licenseCode) && !empty($clientName)) {
			 $payload = [ 'product_id' => $this->product_id, 'license_file' => null, 'license_code' => $licenseCode, 'client_name' => $clientName, ];
			 
		}
			 else {
				 if (is_file($this->license_file)) {
				 $payload = [ 'product_id' => $this->product_id, 'license_file' => file_get_contents($this->license_file), 'license_code' => null, 'client_name' => null, ];
				 
			}
				 else {
				 $payload = [];
				 
			}
			 
		}
			 if ($forceRemoteCheck && $this->verification_period > 0) {
			 $response = $this->call_api('POST', $this->api_url . 'api/verify_license', json_encode($payload));
			 $data = json_decode($response, true);
			 
		}
			 else {
			 $response = $this->call_api('POST', $this->api_url . 'api/verify_license', json_encode($payload));
			 $data = json_decode($response, true);
			 
		}
		 return $data;
		 
	}
		 public function deactivate_license($licenseCode = false, $clientName = false) {
			 if (!empty($licenseCode) && !empty($clientName)) {
			 $payload = [ 'product_id' => $this->product_id, 'license_file' => null, 'license_code' => $licenseCode, 'client_name' => $clientName, ];
			 
		}
			 else {
				 if (is_file($this->license_file)) {
				 $payload = [ 'product_id' => $this->product_id, 'license_file' => file_get_contents($this->license_file), 'license_code' => null, 'client_name' => null, ];
				 
			}
				 else {
				 $payload = [];
				 
			}
			 
		}
		 $response = $this->call_api('POST', $this->api_url . 'api/deactivate_license', json_encode($payload));
		 $data = json_decode($response, true);
			 if ($data['status']) {
			 @chmod($this->license_file, 0777);
				 if (is_writable($this->license_file)) {
				 unlink($this->license_file);
				 
			}
			 
		}
		 return $data;
		 
	}
		 public function php_08phu5c473($phpCode, $licenseCode = false, $clientName = false) {
			 if (!empty($licenseCode) && !empty($clientName)) {
			 $payload = [ 'product_id' => $this->product_id, 'license_file' => null, 'license_code' => $licenseCode, 'client_name' => $clientName, 'php_code' => base64_encode($phpCode), ];
			 
		}
			 else {
				 if (is_file($this->license_file)) {
				 $payload = [ 'product_id' => $this->product_id, 'license_file' => file_get_contents($this->license_file), 'license_code' => null, 'client_name' => null, 'php_code' => base64_encode($phpCode), ];
				 
			}
				 else {
				 $payload = [ 'php_code' => base64_encode($phpCode), ];
				 
			}
			 
		}
		 $response = $this->call_api('POST', $this->api_url . 'api/obfuscate_php', json_encode($payload));
		 return json_decode($response, true);
		 
	}
		 public function check_update() {
		 $payload = [ 'product_id' => $this->product_id, 'current_version' => $this->current_version, ];
		 $response = $this->call_api('POST', $this->api_url.'api/check_update', json_encode($payload));
		 return json_decode($response, true);
		 
	}
		 public function download_update($filename, $isSQL, $version, $licenseCode = false, $clientName = false) {
			 if (!empty($licenseCode) && !empty($clientName)) {
			 $payload = [ 'license_file' => null, 'license_code' => $licenseCode, 'client_name' => $clientName, ];
			 
		}
			 else {
				 if (is_file($this->license_file)) {
				 $payload = [ 'license_file' => file_get_contents($this->license_file), 'license_code' => null, 'client_name' => null, ];
				 
			}
				 else {
				 $payload = [];
				 
			}
			 
		}
		 ob_start();
		 echo "Starting download...\n";
		 ob_flush();
			 if ($isSQL) {
			 $url = $this->api_url . "api/download_update/sql/" . $filename;
			 
		}
			 else {
			 $url = $this->api_url . "api/download_update/main/" . $filename;
			 
		}
		 $ch = curl_init($url);
		 curl_setopt($ch, CURLOPT_POST, 1);
		 curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
		 $host = $_SERVER['SERVER_NAME'] ?? getenv('HTTP_HOST');
		 $scheme = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
		 $origin = $scheme . $host . $_SERVER['REQUEST_URI'];
		 $ip = getenv('SERVER_ADDR') ?: $_SERVER['SERVER_ADDR'] ?: $this->get_ip_from_third_party();
		 $ip = $ip ?: gethostbyname(gethostname());
		 curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'LB-API-KEY: ' . $this->api_key, 'LB-URL: ' . $origin, 'LB-IP: ' . $ip, 'LB-LANG: ' . $this->api_language, ]);
		 echo "Connecting...\n";
		 ob_flush();
		 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
		 echo "Performing download...\n";
		 ob_flush();
		 $response = curl_exec($ch);
		 $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
			 if ($code != 200) {
			 curl_close($ch);
			 exit('Server error');
			 
		}
		 curl_close($ch);
			 if ($isSQL) {
			 $saveTo = $this->root_path . '/update_sql_' . str_replace(, '_', $version) . '.sql';
			 
		}
			 else {
			 $saveTo = $this->root_path . '/update_main_' . str_replace(, '_', $version) . '.zip';
			 
		}
		 $fp = fopen($saveTo, 'w+');
			 if (!$fp) {
			 exit("No write permission");
			 
		}
		 fputs($fp, $response);
		 fclose($fp);
		 ob_end_flush();
		 return true;
		 
	}
		 public function download_sql($license_key, $version) {
			 if (empty($this->api_url)) {
			 exit("Error");
			 
		}
		 $sqlUrl = rtrim($this->api_url, '/') . '/extra/database.sql';
		 $ch = curl_init($sqlUrl);
		 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		 $resp = curl_exec($ch);
		 $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
		 curl_close($ch);
			 if ($http_code != 200 || empty($resp)) {
			 exit("Error (HTTP Status: $http_code).");
			 
		}
		 $sql_file = $this->root_path . "/install/database.sql";
		 $fh = @fopen($sql_file, "w+");
			 if (!$fh) {
			 exit(DXE5jfGR);
			 
		}
		 fputs($fh, $resp);
		 fclose($fh);
		 
	}
		 private function progress($resource, $downloadSize, $downloaded, $uploadSize, $uploaded) {
		 static $lastPercent = 0;
			 if ($downloadSize == 0) {
			 return;
			 
		}
		 $percent = round($downloaded * 100 / $downloadSize);
			 if ($percent != $lastPercent && $percent == 25) {
			 echo '<script>document.getElementById("prog").value = 22.5;
			</script>';
			 ob_flush();
			 
		}
			 if ($percent != $lastPercent && $percent == 50) {
			 echo '<script>document.getElementById("prog").value = 35;
			</script>';
			 ob_flush();
			 
		}
			 if ($percent != $lastPercent && $percent == 75) {
			 echo '<script>document.getElementById("prog").value = 47.5;
			</script>';
			 ob_flush();
			 
		}
			 if ($percent != $lastPercent && $percent == 100) {
			 echo '<script>document.getElementById("prog").value = 60;
			</script>';
			 ob_flush();
			 
		}
		 $lastPercent = $percent;
		 
	}
		 private function get_proxy_from_third_party() {
		 $ch = curl_init();
			 if (mt_rand(1, 2) == 1) {
			 curl_setopt($ch, CURLOPT_URL, 'https://gimmeproxy.com/api/getProxy?curl=true&protocol=http&supportsHttps=false&post=true&get=true&port=80,8080');
			 
		}
			 else {
			 curl_setopt($ch, CURLOPT_URL, 'http://pubproxy.com/api/proxy?format=txt&type=http&https=true&post=true&port=80,8080');
			 
		}
		 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
		 curl_setopt($ch, CURLOPT_TIMEOUT, 10);
		 $proxy = curl_exec($ch);
		 curl_close($ch);
		 return 'http://' . $proxy;
		 
	}
		 private function get_ip_from_third_party() {
		 $ch = curl_init();
		 curl_setopt($ch, CURLOPT_URL, 'http://ipecho.net/plain');
		 curl_setopt($ch, CURLOPT_HEADER, 0);
		 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
		 curl_setopt($ch, CURLOPT_TIMEOUT, 10);
		 $ip = curl_exec($ch);
		 curl_close($ch);
		 return $ip;
		 
	}
		 private function get_remote_filesize($url) {
		 $ch = curl_init();
		 curl_setopt($ch, CURLOPT_HEADER, true);
		 curl_setopt($ch, CURLOPT_NOBODY, true);
		 curl_setopt($ch, CURLOPT_URL, $url);
		 $host = $_SERVER['SERVER_NAME'] ?? getenv('HTTP_HOST');
		 $scheme = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
		 $origin = $scheme . $host . $_SERVER['REQUEST_URI'];
		 $ip = getenv('SERVER_ADDR') ?: $_SERVER['SERVER_ADDR'] ?: $this->get_ip_from_third_party();
		 $ip = $ip ?: gethostbyname(gethostname());
		 curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'LB-API-KEY: ' . $this->api_key, 'LB-URL: ' . $origin, 'LB-IP: ' . $ip, 'LB-LANG: ' . $this->api_language, ]);
		 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
		 $res = curl_exec($ch);
		 $file_size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
		 curl_close($ch);
			 if (!$file_size) {
			 return null;
			 
		}
			 if ($file_size < 1024) {
			 $size = $file_size . ' B';
			 
		}
			 elseif ($file_size < 1048576) {
			 $size = round($file_size / 1024, 2) . ' KB';
			 
		}
			 elseif ($file_size < 1073741824) {
			 $size = round($file_size / 1048576, 2) . ' MB';
			 
		}
			 else {
			 $size = round($file_size / 1073741824, 2) . ' GB';
			 
		}
		 return $size;
		 
	}
	 
}
	 if (!function_exists('minify_html')) {
		 function minify_html($content) {
		 $search = [ '/(\n|^)(\x20+|\t)/', '/(\n|^)\/\*(.*?)(\n|$)/s', '/\n/', '//s', '/(\x20+|\t)/', '/> \s+ </', '/(\"|\') \s+>/', '/=\s+(\"|\')/', ];
		 $replace = [ "\n", "\n", " ", "", " ", "><", "$1>", "=$1", ];
		 return preg_replace($search, $replace, $content);
		 
	}
	 
}
	 if (!function_exists('thousands_currency_format')) {
		 function thousands_currency_format($num, $asArray = false) {
			 if ($num <= 1000) {
			 $return = [$num, ''];
			 return $asArray ? $return : $num;
			 
		}
		 $rounded = round($num);
		 $formatted = number_format($rounded);
		 $parts = explode(',', $formatted);
		 $units = ['k', 'm', 'b', 't'];
		 $partCount = count($parts) - 1;
		 $shortNum = $parts[0] . ((int)$parts[1][0] !== 0 ?  . $parts[1][0] : '');
		 $shortSuffix = $units[$partCount - 1];
		 $result = $shortNum . $shortSuffix;
			 if ($asArray) {
			 return [$result, $shortSuffix];
			 
		}
		 return $result . $shortSuffix;
		 
	}
	 
}
	 if (!function_exists('generate_breadcrumb')) {
		 function generate_breadcrumb($title = null) {
		 $ci =& get_instance();
		 $segment = 1;
		 $uriSegment = $ci->uri->segment($segment);
		 $output = "<nav class=\"breadcrumb\" aria-label=\"breadcrumbs\">\n\t<ul><li><a href=\"" . base_url() . "\">Home</a></li>";
			 if ($title) {
			 $output .= "<li class=\"is-active\"><a href=\"" . site_url() . "\">" . ucfirst($title) . "</a></li>";
			 
		}
			 else {
			 $output .= "<li class=\"is-active\"><a href=\"" . site_url() . "\">" . ucfirst($ci->uri->segment($segment)) . "</a></li>";
			 
		}
		 $output .= "</ul></nav>";
		 return $output;
		 
	}
	 
}
	 if (!function_exists('config_item')) {
		 function config_item($key) {
		 static $config;
			 if (empty($config)) {
			 $config[0] =& get_config();
			 
		}
		 return isset($config[0][$key]) ? $config[0][$key] : null;
		 
	}
	 
}
	 if (!function_exists('html_escape')) {
		 function html_escape($var, $double_encode = true) {
			 if (empty($var)) {
			 return $var;
			 
		}
			 if (is_array($var)) {
				 foreach ($var as $k => $v) {
				 $var[$k] = html_escape($v, $double_encode);
				 
			}
			 return $var;
			 
		}
		 return htmlspecialchars($var, ENT_QUOTES, config_item('charset'), $double_encode);
		 
	}
	 
}
	 if (!function_exists('get_system_info')) {
		 function get_system_info($coreInit) {
		 $info = [ 'Server' => $_SERVER['SERVER_SOFTWARE'], 'PHP Version' => phpversion(), 'Max POST Size' => @ini_get('post_max_size'), 'Max Memory Limit' => @ini_get('memory_limit'), 'Max Upload Size' => @ini_get('upload_max_filesize'), 'cURL Version' => function_exists('curl_version') ? curl_version()['version'] : 'Nil', 'Core Init' => $coreInit ];
		 return json_encode($info, JSON_PRETTY_PRINT);
		 
	}
	 
}
	 if (!function_exists('password_verify')) {
		 function password_verify($password, $hash) {
			 if (strlen($hash) !== 60 || strlen($password = crypt($password, $hash)) !== 60) {
			 return false;
			 
		}
		 $check = 0;
		 for ($i = 0;
		 $i < 60;
			 $i++) {
			 $check |= (ord($password[$i]) ^ ord($hash[$i]));
			 
		}
		 return $check === 0;
		 
	}
	 
}
 



© 2023 Quttera Ltd. All rights reserved.