Waraxe IT Security Portal
Login or Register
November 16, 2024
Menu
Home
Logout
Discussions
Forums
Members List
IRC chat
Tools
Base64 coder
MD5 hash
CRC32 checksum
ROT13 coder
SHA-1 hash
URL-decoder
Sql Char Encoder
Affiliates
y3dips ITsec
Md5 Cracker
User Manuals
AlbumNow
Content
Content
Sections
FAQ
Top
Info
Feedback
Recommend Us
Search
Journal
Your Account
User Info
Welcome, Anonymous
Nickname
Password
(Register)

Membership:
Latest: MichaelSnaRe
New Today: 0
New Yesterday: 0
Overall: 9144

People Online:
Visitors: 74
Members: 0
Total: 74
Full disclosure
SEC Consult SA-20241112-0 :: Multiple vulnerabilities in Siemens Energy Omnivise T3000 (CVE-2024-38876, CVE-2024-38877, CVE-2024-38878, CVE-2024-38879)
Security issue in the TX Text Control .NET Server for ASP.NET.
SEC Consult SA-20241107-0 :: Multiple Vulnerabilities in HASOMED Elefant and Elefant Software Updater
Unsafe eval() in TestRail CLI
4 vulnerabilities in ibmsecurity
32 vulnerabilities in IBM Security Verify Access
xlibre Xnest security advisory & bugfix releases
APPLE-SA-10-29-2024-1 Safari 18.1
SEC Consult SA-20241030-0 :: Query Filter Injection in Ping Identity PingIDM (formerly known as ForgeRock Identity Management) (CVE-2024-23600)
SEC Consult SA-20241023-0 :: Authenticated Remote Code Execution in Multiple Xerox printers (CVE-2024-6333)
APPLE-SA-10-28-2024-8 visionOS 2.1
APPLE-SA-10-28-2024-7 tvOS 18.1
APPLE-SA-10-28-2024-6 watchOS 11.1
APPLE-SA-10-28-2024-5 macOS Ventura 13.7.1
APPLE-SA-10-28-2024-4 macOS Sonoma 14.7.1
Log in Register Forum FAQ Memberlist Search
IT Security and Insecurity Portal

www.waraxe.us Forum Index -> PHP script decode requests -> Help to decode php script
Post new topicReply to topic View previous topic :: View next topic
Help to decode php script
PostPosted: Sat Jun 02, 2012 3:18 am Reply with quote
maumaju
Beginner
Beginner
Joined: Dec 28, 2009
Posts: 4




<?php $_F=__FILE__;$_X='Pz48P3BocCAgczVzczQybl9zdDFydCgpOyANCjJiX3N0MXJ0KCk7IA0KNXJyMnJfcjVwMnJ0NG5nKDApOw0KNG5jbDNkNSgnazJuNWtzNC5waHAnKTsNCg0KJGMybm41Y3Q0Mm49bXlzcWxfYzJubjVjdChjMm5zdDFudCgnZGJfczVydjVyJyksIGMybnN0MW50KCdkYl8zczVyJyksIGMybnN0MW50KCdkYl9wMXNzdzJyZCcpKSAyciBkNDUobXlzcWxfNXJyMnIoKSkgOw0KbXlzcWxfczVsNWN0X2RiKGMybnN0MW50KCdkYl9uMW01JykpOw0KDQoNCjRmKDRzczV0KCRfR0VUWydiaHMnXSkpeyRfU0VTU0lPTlsnYjFoMXMxJ109JF9HRVRbJ2JocyddO30NCjRmKDRzczV0KCRfU0VTU0lPTlsnYjFoMXMxJ10pKXskYmhzPSRfU0VTU0lPTlsnYjFoMXMxJ107ICRsMW5nPSdsMW5nLycuJGJocy4nLnBocCc7fSA1bHM1IHskbDFuZz0nbDFuZy80ZC5waHAnO30NCg0KZjNuY3Q0Mm4gdDJwdDR0bDUoKXs1eHRyMWN0KCRHTE9CQUxTKTsNCjRmKDRzczV0KCRfR0VUWydtMmQnXSkpeyRtMmQ9JF9HRVRbJ20yZCddOyB9IDVsczUgeyRtMmQ9J20xc3Q1ci9oMm01Jzt9DQoNCgk1Y2gyICI8c3AxbiBjbDFzcz0ndDR0bDUnPlN0MmtiMXIxbmc8L3NwMW4+IDxiciAvPiAiOw0KCTVjaDIgIjxzcDFuIHN0eWw1PSdtMXJnNG4tbDVmdDppcHg7Jz5QcjJncjFtIEludjVudDJyeTwvc3Axbj48YnIgLz4gIjsNCiAJNWNoMiAiPHNwMW4gY2wxc3M9J2IxaDFzMSc+ICIuYzJuc3QxbnQoJ2IxaDFzMScpLiI6IDwxIGhyNWY9P20yZD0kbTJkJmJocz00ZD5JRDwvMT4gfCA8MSBocjVmPT9tMmQ9JG0yZCZiaHM9NW4+RU48LzE+PC9zcDFuPiI7DQoJDQoJDQp9DQoNCmYzbmN0NDJuIHMxdHAxbSgkNGQpew0KCTRmKDRzczV0KCRfU0VTU0lPTlsnMWtzNXM0ZCddKSl7ICQxa3M1czRkPSRfU0VTU0lPTlsnMWtzNXM0ZCddOw0KCQ0KCSRyNXMzbHQ9bXlzcWxfcTM1cnkoInM1bDVjdCAxa3M1cyBmcjJtIG0xc3Q1cl8xa3M1cyB3aDVyNSA0ZD0kMWtzNXM0ZCIpOyAgDQoJJHI9bXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCk7DQoJJDNzNXIxa3M1cz0gJHJbJzFrczVzJ107DQoJJGsybDJtID0gNXhwbDJkNSgiLCIsICQzczVyMWtzNXMpOw0KCSRtMXg9YzIzbnQoJGsybDJtKTsNCglmMnIgKCQ0PTA7ICQ0PCAkbTF4OyArKyQ0KXsgDQoJJHI9ZzV0cjJ3KCJqM2QzbCIsIm0xc3Q1cl9tNW4zIiwiIHdoNXI1IDRkPSRrMmwybVskNF0iKTsNCgk0ZiAoJHJbJ2ozZDNsJ109PSQ0ZCl7JGgxczRsPSIyazUiOyBicjUxazt9IDVsczUgeyRoMXM0bD0iZzFnMWwiO30gDQoJfQ0KCQ0KCXI1dDNybiAkaDFzNGw7DQoJfQ0KCX0NCg0KZjNuY3Q0Mm4gdjFsNGQxczQoKXs1eHRyMWN0KCRHTE9CQUxTKTsgDQoJDQoJNGYoNHNzNXQoJF9TRVNTSU9OWyczczVybjFtNSddKSl7IA0KCSRzdHI0bmcgPSRfU0VTU0lPTlsnM3M1cm4xbTUnXTsNCgkNCgkkcjVzM2x0PW15c3FsX3EzNXJ5KCJTRUxFQ1QgbDRzNW5zNCBGUk9NIG0xc3Q1cl8zczVyIFdIRVJFIDVtMTRsPSckc3RyNG5nJyIpOyAgDQoJJHI9bXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCk7DQoJDQoJJGw0czVuczQ9JHJbJ2w0czVuczQnXTsNCi8vCSRtNW50MWg9JzRyNW41ODkwOUB5MWgyMi5jMm0sbTFzdDVyLDRudjVudDJyeSxwMnMsMWszbnQxbnM0JzsNCg0KCSRrNXkgPSAnYjViNWtiMWsxciB0MiAoNW4vZDUpY3J5cHQnOw0KCSQ1bmNyeXB0NWQgPSBiMXM1ZXVfNW5jMmQ1KG1jcnlwdF81bmNyeXB0KE1DUllQVF9SSUpOREFFTF9haWUsIG1kaSgkazV5KSwgJG01bnQxaCwgTUNSWVBUX01PREVfQ0JDLCBtZGkobWRpKCRrNXkpKSkpOw0KCSRkNWNyeXB0NWQgPSBydHI0bShtY3J5cHRfZDVjcnlwdChNQ1JZUFRfUklKTkRBRUxfYWllLCBtZGkoJGs1eSksIGIxczVldV9kNWMyZDUoJGw0czVuczQpLCBNQ1JZUFRfTU9ERV9DQkMsIG1kaShtZGkoJGs1eSkpKSwgIlwwIik7DQoNCgkNCi8vCTVjaDIgIjVuY3J5cHQ1ZCA6Ii4kNW5jcnlwdDVkLiI8YnI+IjsNCi8vCTVjaDIgInN0cjRuZyA6Ii4kc3RyNG5nLiI8YnI+IjsNCi8vCTVjaDIgImw0czVuczQgOiIuJGw0czVuczQuIjxicj4iOw0KLy8JNWNoMiAiZDVzY3J5cHQ1ZCA6Ii4kZDVjcnlwdDVkLiI8YnI+IjsNCgkNCgkkNW0xNGw9NXhwbDJkNSgnLCcsJGQ1Y3J5cHQ1ZCk7DQovLwk1Y2gyICJkNXNjcnlwdDVkIGE6Ii4kNW0xNGxbMF0uIjxicj4iOw0KDQoJNGYgKCRzdHI0bmchPSQ1bTE0bFswXSl7ICRyNXMzbHQ9bXlzcWxfcTM1cnkoIlNFTEVDVCA0ZCBGUk9NIDRudjVudDJyeV9iMXIxbmciKTsgJHIyd2MyM250ICA9IG15c3FsX24zbV9yMndzKCRyNXMzbHQpOw0KCTRmICgkcjJ3YzIzbnQgPj1haSkge215c3FsX3EzNXJ5KCJERUxFVEUgRlJPTSA0bnY1bnQycnlfYjFyMW5nIE9FUkRFUiBCWSA0ZCBMSU1JVCA2Iik7IH0NCgk1Y2gyICBjMm5zdDFudCgndl9mcjU1JykuIiwgPDEgaHI1Zj0naHR0cDovL3N0MmtiMXIxbmcuMnJnJyA+d3d3LnN0MmtiMXIxbmcuMnJnPC8xPiAiOyANCgl9IDVsczUgezVjaDIgICJMNGM1bnM1IHQyICRzdHI0bmcgIjsgfQ0KCX0NCgkNCgkNCgkkMXJyMXk9NXhwbDJkNSgnLCcsJGQ1Y3J5cHQ1ZCk7DQoJJDRuMXJyMXk9IDV4cGwyZDUoJy8nLCRfR0VUWydtMmQnXSApOwkNCgk0ZiAoITRuXzFycjF5KCQ0bjFycjF5WzBdLCQxcnIxeSkpeyA1Y2gyICI8c2NyNHB0IHR5cDU9J3Q1eHQvajF2MXNjcjRwdCc+dzRuZDJ3LmwyYzF0NDJuLmhyNWY9Jz9tNW4zPXM0Z25mMnJtJzwvc2NyNHB0PiI7fQ0KCQ0KCX0NCg0KNG5jbDNkNSgkbDFuZyk7DQo0bmNsM2Q1KGMybnN0MW50KCdzNHNfdGg1bTUnKSk7DQoNCmYzbmN0NDJuIDRtcDJydCgpezV4dHIxY3QoJEdMT0JBTFMpOyANCgk1Y2gyICI8ZjJybSBtNXRoMmQ9cDJzdCA1bmN0eXA1PSdtM2x0NHAxcnQvZjJybS1kMXQxJyAxY3Q0Mm49P20yZD0kbTJkJm01bjM9ZDI0bXAycnQ+DQoJUzRsMWsxbiBQNGw0aCBGNGw1IEV4YzVsOiA8NG5wM3QgbjFtNT0zczVyZjRsNSB0eXA1PSdmNGw1Jz4NCgk8NG5wM3QgbjFtNT0zcGwyMWQgdHlwNT1zM2JtNHQgdjFsMzU9SW1wMnJ0Pg0KCTwvZjJybT4iOw0KCX0NCmYzbmN0NDJuIHByMmY0bDVzKCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJNGYoNHNzNXQoICRfU0VTU0lPTlsnM3M1cm4xbTUnXSkpIHsgJDNzNXJuMW01PSAkX1NFU1NJT05bJzNzNXJuMW01J107DQoJNWNoMiBjMm5zdDFudCgndzVsYzJtNScpLiIgPDEgaHI1Zj0/bTJkPW0xc3Q1ci9wcjJmNGw1Jm01bjM9cHIyZjRsNT4gPGI+ICQzczVybjFtNSA8L2I+IDwvMT4gfCA8MSBocjVmPT9tNW4zPXM0Z24yM3Q+Ii5jMm5zdDFudCgnbDJnMjN0JykuIjwvMT4gfCA8MSBocjVmPScjJz4iLmMybnN0MW50KCdoNWxwJykuIiA8LzE+fCAiOw0KCX0gDQoJNWxzNSB7NWNoMiAiPDEgaHI1Zj0/bTVuMz1zNGduZjJybT4iLmMybnN0MW50KCdsMmc0bicpLiI8LzE+IHwgPDEgaHI1Zj0nIyc+Ii5jMm5zdDFudCgnaDVscCcpLiI8LzE+ICI7IH0NCgl9IA0KDQpmM25jdDQybiBtNW4zdm8oJHAxcjVudCwgJGw1djVsKSB7DQoJJDFrczVzNGQ9JF9TRVNTSU9OWycxa3M1czRkJ107DQovLwkkMWtzNXM0ZD02Ow0KCSRyNXMzbHQ9bXlzcWxfcTM1cnkoInM1bDVjdCAxa3M1cyBmcjJtIDFrczVzIHdoNXI1IDRkPSQxa3M1czRkIik7ICANCgkkcj1teXNxbF9mNXRjaF8xcnIxeSgkcjVzM2x0KTsNCgkkdGJsID0gJ201bjMnOw0KCSQzczVyMWtzNXM9ICRyWycxa3M1cyddOw0KCSRyNXMzbHQgPSBteXNxbF9xMzVyeSgiU0VMRUNUIDEuNGQsIDEuM3IzdCwgMS5qM2QzbCwgMS4zcmwsIEQ1cjR2Ni5DMjNudCBGUk9NIG01bjMgDQoJMSBMRUZUIE9VVEVSIEpPSU4gKFNFTEVDVCA0bmQzaywgQ09VTlQoKikgQVMgQzIzbnQgRlJPTSBtNW4zIEdST1VQIEJZIDRuZDNrKSANCglENXI0djYgT04gMS40ZCA9IEQ1cjR2Ni40bmQzayBXSEVSRSAxLjRkIDRuICgkM3M1cjFrczVzKSBBTkQgMS40bmQzaz0iLiAkcDFyNW50IC4iIDFuZCBzdDF0M3M9J3QxbXA0bCcgT1JERVIgQlkgMS4zcjN0IEFTQyIpOw0KCTVjaDIgIjwzbCA0ZD0nbTVuMyc+IjsNCgl3aDRsNSAoJHIydyA9IG15c3FsX2Y1dGNoXzFzczJjKCRyNXMzbHQpKSB7DQoJCTRmICgkcjJ3WydDMjNudCddID4gMCkgeyANCgkJNWNoMiAiPGw0ID48MSBocjVmPSciLiAkcjJ3WyczcmwnXSAuICInIHQ0dGw1PSciLiAkcjJ3WydqM2QzbCddIC4gIicgPjw0bWcgc3JjPSc0bTFnNXMvZTYucG5nJyAxbHQ9JycgLz4gIiAuICRyMndbJ2ozZDNsJ10gLiAiPC8xPiI7IA0KCQltNW4zKCRyMndbJzRkJ10sICRsNXY1bCArIDYpOyA1Y2gyICI8L2w0PiI7IH0gDQoJCTVsczU0ZiAoJHIyd1snQzIzbnQnXT09MCkgeyANCgkJNWNoMiAiPGw0PjwxIGhyNWY9JyIuICRyMndbJzNybCddIC4gIicgdDR0bDU9JyIuICRyMndbJ2ozZDNsJ10gLiAiJyA+PDRtZyBzcmM9JzRtMWc1cy9lNi5wbmcnIDFsdD0nJyAvPiAiIC4gJHIyd1snajNkM2wnXSAuICI8LzE+PC9sND4iOw0KCQl9IA0KCQk1bHM1Ow0KCQl9DQoJNWNoMiAiPC8zbD4iOw0KCX0NCg0KZjNuY3Q0Mm4gdDJwbjF2KCl7DQogIAk0Zig0c3M1dCgkX1NFU1NJT05bJzFrczVzNGQnXSkpeyAkMWtzNXM0ZD0kX1NFU1NJT05bJzFrczVzNGQnXTsvLyB9IDVsczUgeyQxa3M1czRkPTY7IH0NCgkNCiAJJHI1czNsdD1teXNxbF9xMzVyeSgiczVsNWN0IHA0bnQxcyBmcjJtIG0xc3Q1cl8xa3M1cyB3aDVyNSA0ZD0kMWtzNXM0ZCIpOyAgDQoJJHI9bXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCk7DQoJJDNzNXIxa3M1cz0gJHJbJ3A0bnQxcyddOw0KCTRmKDRzczV0KCRfR0VUWydtMmQnXSkpeyRwMW41bD0gNXhwbDJkNSgnLycsJF9HRVRbJ20yZCddICk7CSRtMXA9JHAxbjVsWzBdOw0KCTRmKCRtMXA9PScnKSB7JG0xcD0iTDJnNG4iO30gfQ0KCQ0KCTVjaDIgICI8ZDR2IGNsMXNzPSd0MjJsYjFyJz4NCgk8ZDR2IGNsMXNzPSd0MjJsYjFyTDVmdCc+PC9kNHY+DQoJDQoJIjsNCgkNCgkkcTM1cnlhPSJTRUxFQ1QgajNkM2wsM3JsLDRuZDNrIEZST00gbTFzdDVyX201bjMgV0hFUkUgNGQgNG4gKCQzczVyMWtzNXMpIEFORCBzdDF0M3M9J3QxbXA0bCciOw0KCSRyNXMzbHRhPW15c3FsX3EzNXJ5KCRxMzVyeWEpOw0KCXdoNGw1ICgkcmEgPSBteXNxbF9mNXRjaF8xc3MyYygkcjVzM2x0YSkpIHsgDQoJJGozZDNsID0gc3RydDJsMnc1cigkcmFbJ2ozZDNsJ10pOw0KCTVjaDIiPGQ0diBjbDFzcz0ndDIybGIxckMybnQ1bnQnPjwxIGhyNWY9JyRyYVszcmxdJz48ZDR2IGNsMXNzPSd0MjJscyAkajNkM2wnPjwvZDR2PiIuYzJuc3QxbnQoJHJhWydqM2QzbCddKS4iPC8xPnw8L2Q0dj4gIjsNCgl9DQoJNWNoMiINCgk8ZDR2IGNsMXNzPSd0MjJsYjFyUjRnaHQnPjwvZDR2Pg0KCTxkNHYgY2wxc3M9J2NsNTFyJz48L2Q0dj4NCgk8L2Q0dj4iOw0KCX0NCgl9DQoJDQoJDQpmM25jdDQybiAzczVybTVuMygkYnRuKXs1eHRyMWN0KCRHTE9CQUxTKTsNCi8vICQxa3M1cz1jMWtzNXMoKTsNCjRmKGczYjFoKCQxa3M1cykhPSdBZG00bicpeyRyPSdzMXY1LHMxbDRuLDFkZCxkNWw1dDUsNG1wMnJ0LDFtYjRsLGwxbmozdCc7fTVsczV7JHI9Jyc7fQ0KLy81Y2gyICQxa3M1czsNCiQzczVybTVuMz0nJzsNCgkkazJsMm0gPSA1eHBsMmQ1KCIsIiwgJGJ0bik7DQoJZjJyICgkNCA9IDA7ICQ0IDwgYzIzbnQoJGsybDJtKTsgKyskNCApIHsNCjRmICggNG5fMXJyMXkgKCRrMmwybVskNF0gLCA1eHBsMmQ1KCcsJywkcikgKSApIHskcz0ic3R5bDU9J2ZsMjF0OiBsNWZ0O2Q0c3BsMXk6bjJuNTsnIjt9IDVsczUgeyRzPSJzdHlsNT0nZmwyMXQ6IGw1ZnQ7JyI7fQ0KCSQzczVybTVuMyAuPSI8ZDR2ICRzICA+ICA8MSBocjVmPWoxdjFzY3I0cHQ6czNibTR0ZjJybSgnJGsybDJtWyQ0XScpPiA8ZDR2ICBjbDFzcz0ndDIybHMgJGsybDJtWyQ0XSc+IDwvZDR2PiAiLmMybnN0MW50KCRrMmwybVskNF0pLiI8LzE+PC9kNHY+ICI7IH0NCglyNXQzcm4gJDNzNXJtNW4zOwkNCgl9DQoJDQoJDQoNCmYzbmN0NDJuIG4xdjRnMXQ0Mm4oKXsNCiAgCTRmKDRzczV0KCRfU0VTU0lPTlsnMWtzNXM0ZCddKSl7ICQxa3M1czRkPSRfU0VTU0lPTlsnMWtzNXM0ZCddOyAvL30gNWxzNSB7JDFrczVzNGQ9NjsgfQ0KCSRyNXMzbHQ9bXlzcWxfcTM1cnkoInM1bDVjdCAxa3M1cyBmcjJtIG0xc3Q1cl8xa3M1cyB3aDVyNSA0ZD0kMWtzNXM0ZCIpOyAgDQoJJHI9bXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCk7DQoJJDNzNXIxa3M1cz0gJHJbJzFrczVzJ107DQoJNGYoNHNzNXQoJF9HRVRbJ20yZCddKSl7JHAxbjVsPSA1eHBsMmQ1KCcvJywkX0dFVFsnbTJkJ10gKTsJJG0xcD0kcDFuNWxbMF07fTVsczUgeyRtMXA9IkwyZzRuIjt9DQoJNWNoMiAiPGQ0diBjbDFzcz0nczNiSDUxZDVyJz4gPGQ0dj4gIi5jMm5zdDFudCgkbTFwKS4iIDwvZDR2PiA8L2Q0dj4iOw0KCTVjaDIgIjxkNHYgY2wxc3M9J24xdlAxbjVsJz4iOyANCgkkcTM1cnk2PSJTRUxFQ1QgNGQsM3JsLGozZDNsIEZST00gbTFzdDVyX201bjMgV0hFUkUgNGQgNG4gKCQzczVyMWtzNXMpIDFuZCBtMXA9JyRtMXAnIEFORCBzdDF0M3M9J3QxbXA0bCcgMnJkNXIgYnkgM3IzdCAxc2MiOw0KCSRyNXMzbHQ2PW15c3FsX3EzNXJ5KCRxMzVyeTYpOw0KCXdoNGw1ICgkcjYgPSBteXNxbF9mNXRjaF8xc3MyYygkcjVzM2x0NikpIHsgDQoJJGozZDNsID0gc3RydDJsMnc1cigkcjZbJ2ozZDNsJ10pOw0KCTVjaDIgIjwxIGhyNWY9JyRyNlszcmxdJz4gIDxkNHYgY2wxc3M9J3QyMmxzICRqM2QzbCc+IDwvZDR2PiAiIC5jMm5zdDFudCgkajNkM2wpLiI8LzE+IjsJDQoJfQ0KCTVjaDIgIjwvZDR2PiI7DQoNCgk1Y2gyICI8ZDR2IGNsMXNzPSduMXZTNWw1Y3QnPg0KCTxkNHYgY2wxc3M9J24xdlM1cDFyMXQycic+PC9kNHY+IjsNCgkkcTM1cnlhPSJTRUxFQ1QgajNkM2wsM3JsLDRuZDNrIEZST00gbTFzdDVyX201bjMgV0hFUkUgNGQgNG4gKCQzczVyMWtzNXMpIDFuZCA0bmQzaz0wIEFORCBzdDF0M3M9J3QxbXA0bCcgMnJkNXIgYnkgM3IzdCAxc2MiOw0KCSRyNXMzbHRhPW15c3FsX3EzNXJ5KCRxMzVyeWEpOw0KCXdoNGw1ICgkcmEgPSBteXNxbF9mNXRjaF8xc3MyYygkcjVzM2x0YSkpIHsNCgkkajNkM2wgPSBzdHJ0MmwydzVyKCRyYVsnajNkM2wnXSk7DQoJNWNoMiAiIDwxIGhyNWY9JyRyYVszcmxdJz4gPGQ0diBjbDFzcz0ndDIybHMgJGozZDNsJz48L2Q0dj4gICIuYzJuc3QxbnQoJGozZDNsKS4iIDwvMT4iOwl9DQoJNWNoMiAiPC9kNHY+IjsNCgl9fQ0KDQpmM25jdDQybiB0NHRsNSgpezV4dHIxY3QoJEdMT0JBTFMpOwkNCgkkcDFuNWw9IDV4cGwyZDUoJy8nLCRtMmQgKTsJICQxa3M1cz0zY3cycmRzKCRwMW41bFs2XSk7DQoJJHAxbjVsPSA1eHBsMmQ1KCdfJywkMWtzNXMpOyAkdDR0bDU9M2N3MnJkcygkcDFuNWxbMF0pOw0KCTVjaDIgYzJuc3QxbnQoJHQ0dGw1KTsgDQoJfQ0KDQpmM25jdDQybiBjMm50NW50KCl7DQoJNGYoITRzczV0KCRfR0VUWydtMmQnXSkpeyA0bmNsM2Q1ICdtMmQzbDVzL20xc3Q1ci9oMm01LnBocCc7IH0gNWxzNSAgezRuY2wzZDUgJ20yZDNsNXMvJy4kX0dFVFsnbTJkJ10uJy5waHAnOyB9DQoJNGYoNHNzNXQoJF9HRVRbJzV4cDJydCddKSl7NWNoMiAiNXhwMnJ0Ijt9DQoJJHAxbjVsPSA1eHBsMmQ1KCcvJywkbTJkICk7CSQ0ZD0kcDFuNWxbMF07ICQxa3M1cz0zY3cycmRzKCRwMW41bFs2XSk7DQoJJHAxbjVsPSA1eHBsMmQ1KCdfJywkMWtzNXMpOyAkMWtzNXM9M2N3MnJkcygkcDFuNWxbMF0pOw0KCQ0KCTVjaDIiDQoJPGQ0diBjbDFzcz0nczNiSDUxZDVyJz4gPGQ0dj4iOyB0NHRsNSgpOyA1Y2gyIjwvZDR2PiA8L2Q0dj4NCgk8ZDR2IGNsMXNzPSdzM2JINTFkNXI2Jz48ZDR2IGNsMXNzPSd0MjJsYjFyJz48ZDR2IGNsMXNzPSd0MjJsYjFyQzJudDVudCc+IjsgDQoJNGYgKHMxdHAxbSgkMWtzNXMpPT0nMms1JyB8fCAkMWtzNXM9PSdIMm01JykgeyA1ZDR0bTVuMygpOyB9DQoJNWNoMiI8L2Q0dj48L2Q0dj48L2Q0dj4NCgk8ZDR2IGNsMXNzPSdjMm50NW50UDFuNWwnIDRkPSdjMm50NW50UDFuNWwnPiI7DQovLwk0ZiAoczF0cDFtKCQxa3M1cyk9PScyazUnIHx8ICQxa3M1cz09J0gybTUnKSB7IDRmKCE0c3M1dCgkX0dFVFsnbTVuMyddKSl7aDJtNSgpO30gNWxzNSB7JF9HRVRbJ201bjMnXSgpOyB9fSANCgk0ZiAoczF0cDFtKCQxa3M1cyk9PScyazUnIHx8JDFrczVzPT0nSDJtNScpIHsgNGYoITRzczV0KCRfR0VUWydtNW4zJ10pKXtoMm01KCk7fSA1bHM1IHskX0dFVFsnbTVuMyddKCk7IH19IA0KCTVsczV7IDVjaDIgIjxzY3I0cHQgdHlwNT0ndDV4dC9qMXYxc2NyNHB0Jz53NG5kMncubDJjMXQ0Mm4uaHI1Zj0nP201bjM9czRnbmYycm0nPC9zY3I0cHQ+IjsgfQ0KCTVjaDIiPC9kNHY+IjsNCgl9DQogPz4NCiANCjxzY3I0cHQgdHlwNT0idDV4dC9qMXYxc2NyNHB0IiA+DQpmM25jdDQybiBzNXRGMmMzcyg0ZCkgew0KCWQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKDRkKS5mMmMzcygpOyB9DQpmM25jdDQybiAxczNiKGZybSkgeyBkMmMzbTVudC5nNXRFbDVtNW50QnlJZChmcm0pLnMzYm00dCgpOw0KfQ0KDQpmM25jdDQybiBmNGx0NXIgKHBocjFzNSwgXzRkKXsNCgl2MXIgdzJyZHMgPSBwaHIxczUudjFsMzUudDJMMnc1ckMxczUoKS5zcGw0dCgiICIpOw0KCXYxciB0MWJsNSA9IGQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKF80ZCk7DQoJdjFyIDVsNTsNCglmMnIgKHYxciByID0gNjsgciA8IHQxYmw1LnIyd3MubDVuZ3RoOyByKyspew0KCTVsNSA9IHQxYmw1LnIyd3Nbcl0uNG5uNXJIVE1MLnI1cGwxYzUoLzxbJ14+J10rPi9nLCIiKTsNCgl2MXIgZDRzcGwxeVN0eWw1ID0gJ24ybjUnOw0KCWYyciAodjFyIDQgPSAwOyA0IDwgdzJyZHMubDVuZ3RoOyA0KyspIHsNCgk0ZiAoNWw1LnQyTDJ3NXJDMXM1KCkuNG5kNXhPZih3MnJkc1s0XSk+PTApDQoJZDRzcGwxeVN0eWw1ID0gJyc7DQoJNWxzNSB7CWQ0c3BsMXlTdHlsNSA9ICduMm41JzsNCglicjUxazsNCgl9fQ0KCXQxYmw1LnIyd3Nbcl0uc3R5bDUuZDRzcGwxeSA9IGQ0c3BsMXlTdHlsNTsJfX0NCgkNCmYzbmN0NDJuIGZzMnJ0NHIoNGQsbXliM3R0Mm4pew0KCWQyYzNtNW50Lm15ZjJybS5zMnJ0NHIudjFsMzU9NGQNCglkMmMzbTVudC5teWYycm0ubXlzM2JtNHQudjFsMzU9bXliM3R0Mm4NCglkMmMzbTVudC5teWYycm0uczNibTR0KCl9DQoJDQpmM25jdDQybiA1ZDR0ZjJybSg0ZCxteWIzdHQybil7DQoJZDJjM201bnQubXlmMnJtLjRkLnYxbDM1PTRkDQoJZDJjM201bnQubXlmMnJtLm15czNibTR0LnYxbDM1PW15YjN0dDJuDQoJZDJjM201bnQubXlmMnJtLnMzYm00dCgpfQ0KCQ0KZjNuY3Q0Mm4gczNibTR0ZjJybShteWIzdHQybil7DQoJZDJjM201bnQubXlmMnJtLm15czNibTR0LnYxbDM1PW15YjN0dDJuDQoJZDJjM201bnQubXlmMnJtLnMzYm00dCgpfQ0KCQ0KZjNuY3Q0Mm4gczNibTR0NHQ1bShteWIzdHQybil7DQoJZDJjM201bnQubXk0dDVtLm15czNibTR0LnYxbDM1PW15YjN0dDJuDQoJZDJjM201bnQubXk0dDVtLnMzYm00dCgpfQ0KCQ0KZjNuY3Q0Mm4gZHIycDR0NW0oKXsNCgl2MXIgbTVuPWQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKGRyMnBtNW4zKS52MWwzNTsNCglkMmMzbTVudC5teTR0NW0ubXlzM2JtNHQudjFsMzU9bTVuDQoJZDJjM201bnQubXk0dDVtLnMzYm00dCgpfQ0KCQ0KZjNuY3Q0Mm4gbjJmMWt0M3IoZjFrdDNyKXsNCglkMmMzbTVudC5nNXRFbDVtNW50QnlJZChmMWt0M3IpLnYxbDM1PWYxa3Qzcn0NCmYzbmN0NDJuIDRkZjFrdDNyKGYxa3Qzcil7DQoJZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoNGQpLnYxbDM1PWYxa3Qzcn0NCmYzbmN0NDJuIDRzTjNtYjVySzV5KDV2dCl7DQoJdjFyIGNoMXJDMmQ1PSg1dnQud2g0Y2gpPyA1dnQud2g0Y2ggOiA1djVudC5rNXlDMmQ1DQoJNGYoY2gxckMyZDU+bzYmJihjaDFyQzJkNTx1OCB8fCBjaDFyQzJkNT5pNykpDQoJcjV0M3JuIGYxbHM1DQoJcjV0M3JuIHRyMzV9DQpmM25jdDQybiBzaDJ3dGdsKDRkKXsNCgkNCgl2MXIgNGRoMXI0PSdoMXI0Jys0ZDsNCgl2MXIgNGRiM2wxbj0nYjNsMW4nKzRkOw0KCXYxciA0ZHQxaDNuPSd0MWgzbicrNGQ7DQoJdjFyIDRkdGdsPSd0Z2wnKzRkOw0KCQ0KCXYxciBoMXI0ID0gZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoNGRoMXI0KS52MWwzNTsgDQoJdjFyIGIzbDFuID0gZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoNGRiM2wxbikudjFsMzU7DQoJdjFyIHQxaDNuID0gZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoNGR0MWgzbikudjFsMzU7DQoJDQoJZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoNGR0Z2wpLnYxbDM1PXQxaDNuKy0rYjNsMW4rLStoMXI0OyANCglyNXQzcm47CX0JDQpmM25jdDQybiBwMnA0dDNwKDNybCl7DQoJbjV3dzRuZDJ3PXc0bmQydy4ycDVuKDNybCwnbjFtNScsJ2g1NGdodD11MDAsdzRkdGg9N2kwJykNCgk0Zih3NG5kMncuZjJjM3Mpe241d3c0bmQydy5mMmMzcygpfX0NCmYzbmN0NDJuIGcyVDJVUkwoJDNybCl7DQoJdzRuZDJ3LmwyYzF0NDJuPSQzcmx9DQpmM25jdDQybiB0MnQxbGozMWwoczNidDJ0MWwpew0KCWQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdzM2J0MnQxbCcpLnYxbDM1PXMzYnQydDFsfQ0KZjNuY3Q0Mm4gY2g1Y2tVbmNoNWNrQWxsKHRoNUVsNW01bnQpew0KCXYxciB0aDVGMnJtPXRoNUVsNW01bnQuZjJybSx6PTANCglmMnIoej0wO3o8dGg1RjJybS5sNW5ndGg7eisrKXsNCgk0Zih0aDVGMnJtW3pdLnR5cDU9PSdjaDVja2IyeCcmJnRoNUYycm1bel0ubjFtNSAhPSdjaDVjazFsbCcpe3RoNUYycm1bel0uY2g1Y2s1ZD10aDVFbDVtNW50LmNoNWNrNWQ7fX19DQpmM25jdDQybiBoNHQzbmcoKXsNCgl2MXIgczNidDJ0MWw9cDFyczVGbDIxdChkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnczNidDJ0MWwnKS52MWwzNSk7DQoJdjFyIHBwbj0gcDFyczVGbDIxdChzM2J0MnQxbCAqIDAuNik7DQoNCglkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgncHBuJykudjFsMzU9cHBuOw0KCWQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCd0MnQxbCcpLnYxbDM1PSBwMXJzNUZsMjF0KHMzYnQydDFsICsgcHBuKTsNCglyNXQzcm47CX0NCgkNCgkNCgkNCmYzbmN0NDJuIGMxbGMzbDF0NSgpew0KIHYxciB0MnQxbD0gcDFyczVGbDIxdChkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgndDJ0MWwnKS52MWwzNSk7DQoJIGQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdwcG4nKS52MWwzNSA9IHQydDFsICogMC42Ow0KICAgICBkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnZDRzazJuJykudjFsMzUgPSAwOw0KIHYxciBwcG49IHAxcnM1RmwyMXQodDJ0MWwgKiAwLjYpOw0KIHYxciBzM2J0MnQxbD0gdDJ0MWwgKyBwcG4gOw0KIHYxciBkNHNrMm49IHAxcnM1RmwyMXQoZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ2Q0c2sybicpLnYxbDM1KTsNCiB2MXIgZ3IxbmR0MnQxbD0gczNidDJ0MWwgLSBkNHNrMm47Ow0KICAgICBkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnczNidDJ0MWwnKS52MWwzNSA9IHMzYnQydDFsOw0KICAgICBkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnZ3IxbmR0MnQxbCcpLnYxbDM1ID0gZ3IxbmR0MnQxbDsNCiAgICAgcjV0M3JuO30NCg0KZjNuY3Q0Mm4gaGhqMzFsKCl7DQoJdjFyIGgxcmcxPXAxcnM1RmwyMXQoZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ2gxcmcxJykudjFsMzUpOw0KCXYxciBkNHNrMm49cDFyczVGbDIxdChkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnZDRzazJuJykudjFsMzUpOw0KCXYxciBiMW55MWs9cDFyczVGbDIxdChkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnYjFueTFrJykudjFsMzUpOw0KDQoJZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ2gxcmcxajMxbCcpLnYxbDM1PSBwMXJzNUZsMjF0KGgxcmcxLWQ0c2sybik7DQoJZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ2ozbWwxaCcpLnYxbDM1PSAxcnM1RmwyMXQoaDFyZzFqMzFsKmIxbnkxayk7DQoJCX0NCg0KDQo8L3NjcjRwdD4NCjw/cGhwDQoNCi8vNGYoITRzczV0KCRfU0VTU0lPTlsnM3M1cm4xbTUnXSkpIHsgbDJnNG4oKTsgfSAgDQoNCmYzbmN0NDJuIGcxbnQ0dDFuZzFsKCl7DQoJbDRzdCggJHk1MXIsICRtMm50aCwgJGQxeSApID0gNXhwbDJkNSggJGQxdDUsICctJyApOw0KCTVjaDIgIiRkMXktJG0ybnRoLSR5NTFyIjsJDQoJfQ0KDQpmM25jdDQybiA1eHAycnQoKXs1eHRyMWN0KCRHTE9CQUxTKTsNCgk1Y2gyICI8c2NyNHB0IHR5cDU9J3Q1eHQvajF2MXNjcjRwdCc+dzRuZDJ3LjJwNW4oJzFkZDJuLzV4cDJydC5waHA/dDFibDU9JHRibCcpPC9zY3I0cHQ+IjsNCgk1Y2gyICJFeHAycnQgRDJuNSAhIjsNCgk1Y2gyICI8YnI+IEIxY2sgdDIgPDEgaHI1Zj0nP201bjM9aDJtNSZtMmQ9JG0yZCc+IEgybTUgPC8xPiI7DQoJfQ0KCQ0KZjNuY3Q0Mm4gczRnbmYycm0oKXsgNXh0cjFjdCgkR0xPQkFMUyk7DQoJNWNoMiAiCTxkNHYgNGQ9J24xdmIxcicgMWw0Z249J2M1bnQ1cic+DQoJPGQ0diA0ZD0nbDJnNG5fbTVuMycgPg0KCTxkNHYgNGQ9J241dy0zczVyLWMybCcgPjxiciAvPjxiciAvPiANCgk8aGE+TDJnNG48L2hhPg0KIAk8ZjJybSAxY3Q0Mm49Jz9tNW4zPXM0Z240bicgbTV0aDJkPSdwMnN0Jz4NCgk8M2w+DQoJPGw0PjxsMWI1bCBmMnI9JzVtMTRsJz4iLmMybnN0MW50KCczczVybjFtNScpLiIgOjwvbDFiNWw+PHN0cjJuZz4gdzF3MW5AczRzbTFkNC5jMi40ZCA8L3N0cjJuZz48L2w0Pg0KCTxsND48bDFiNWwgZjJyPSc1bTE0bCc+Ii5jMm5zdDFudCgncDFzc3cycmQnKS4iIDo8L2wxYjVsPjxzdHIybmc+MWRtNG4gPC9zdHIybmc+PC9sND4NCg0KCTxsND48bDFiNWwgZjJyPSc1bTE0bCc+Ii5jMm5zdDFudCgnM3M1cm4xbTUnKS4iIDo8L2wxYjVsPjw0bnAzdCB0eXA1PSd0NXh0JyA0ZD0nNW0xNGwnIHM0ejU9JzY4JyBuMW01PSczczVybjFtNScgdjFsMzU9JycgLz48L2w0Pg0KCTxsND48bDFiNWwgZjJyPSdwc3cnPiIuYzJuc3QxbnQoJ3Axc3N3MnJkJykuIiA6PC9sMWI1bD48NG5wM3QgdHlwNT0ncDFzc3cycmQnIDRkPSdwc3cnIHM0ejU9JzY4JyBuMW01PSdwMXNzdzJyZCcgdjFsMzU9JycgLz48L2w0Pg0KCTxsND48YjN0dDJuICAgdHlwNT1zM2JtNHQgdjFsMzU9J2wyZzRuJyAgbjFtNT0nbXliM3R0Mm4nIGNsMXNzPSdmMnJtYjN0dDJuJyA+Ii5jMm5zdDFudCgnbDJnNG4nKS4iPC9iM3R0Mm4+PC9sND4NCgk8LzNsPg0KCTwvZjJybT4NCgk8L2Q0dj4NCgk8ZDR2IDRkPSdzNGduM3AtM3M1ci1jMmwnPiANCgk8NG1nIHNyYz0ndGg1bTVzLzRtMWc1cy80bTFnNXNvLmpwZycgLz4NCgkNCgk8YnIgLz5VbnQzayBKMXMxIFA1bWIzMXQxbiBTMmZ0dzFyNSwgSDNiM25nNDogdzF3MW5AczRzbTFkNC5jMm0NCgk8L2Q0dj4NCgk8ZDR2IGNsMXNzPSdzcDFjNXInPjwvZDR2Pg0KCTwvZDR2Pg0KCTwvZDR2PiI7DQoJfQ0KCQkNCmYzbmN0NDJuIHM0Z240bigpeyA1eHRyMWN0KCRHTE9CQUxTKTsNCgkkM3M1cm4xbTU9JF9QT1NUWyczczVybjFtNSddOw0KCSRwMXNzdzJyZD0kX1BPU1RbJ3Axc3N3MnJkJ107DQoJDQoJJHEzNXJ5ID0gIlNFTEVDVCA1bTE0bCxzMW5kNCwxa3M1cyBGUk9NIG0xc3Q1cl8zczVyIFdIRVJFIDVtMTRsPSckM3M1cm4xbTUnIEFORCBzMW5kND0nJHAxc3N3MnJkJyAiOw0KIAkkcjVzM2x0PW15c3FsX3EzNXJ5KCRxMzVyeSwkYzJubjVjdDQybik7ICANCgkkcjJ3YzIzbnQgID0gbXlzcWxfbjNtX3Iyd3MoJHI1czNsdCk7DQoJNGYgKCRyMndjMjNudCA9PSA2KSB7DQoJJHIydz1teXNxbF9mNXRjaF8xcnIxeSgkcjVzM2x0KTsNCgkNCgkkM3M1cm4xbTU9JHIyd1snNW0xNGwnXTsNCgkkMWtzNXM0ZD0kcjJ3Wycxa3M1cyddOw0KCSQzczVyNGQ9JHIyd1snNW0xNGwnXTsNCgkkX1NFU1NJT05bJzNzNXJuMW01J109JDNzNXJuMW01Ow0KCSRfU0VTU0lPTlsnM3M1cjRkJ109JDNzNXI0ZDsNCgkkX1NFU1NJT05bJzFrczVzNGQnXT0kMWtzNXM0ZDsNCg0KCTVjaDIgIjxzY3I0cHQgdHlwNT0ndDV4dC9qMXYxc2NyNHB0Jz53NG5kMncubDJjMXQ0Mm4uaHI1Zj0nP201bjM9aDJtNSc8L3NjcjRwdD4iOw0KCX0NCgk1bHM1ewkNCglzNGduZjJybSgpOwkNCgl9fQ0KICAJDQpmM25jdDQybiBzNGduMjN0KCl7DQoJM25zNXQoJF9TRVNTSU9OWyczczVybjFtNSddKTsNCglzNXNzNDJuX2Q1c3RyMnkoKTsNCgk1Y2gyICI8c2NyNHB0IHR5cDU9J3Q1eHQvajF2MXNjcjRwdCc+dzRuZDJ3LmwyYzF0NDJuLmhyNWY9Jz9tNW4zPXM0Z25mMnJtJzwvc2NyNHB0PiI7DQoJfQ0KDQpmM25jdDQybiB3NWxjMm01KCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJNWNoMiAiPGQ0diBjbDFzcz0nNG5mMic+PGhhPiBXNWxjMm01IDwvaGE+PC9kNHY+IjsNCgk1Y2gyICJTNWwxbTF0IGQxdDFuZyAhIjsNCgl9IA0KDQpmM25jdDQybiAxa3M0KCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJNGYgKDRzczV0KCRfUE9TVFsnbXliM3R0Mm4nXSkpeyAgJF9QT1NUWydteWIzdHQybiddKCk7fSA1bHM1IHsNCgk0ZiAoNHNzNXQoJF9QT1NUWydteXMzYm00dCddKSl7ICAkX1BPU1RbJ215czNibTR0J10oKTt9fQ0KCX0gDQoNCmYzbmN0NDJuIGNsMnM1KCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJNWNoMiAiPHNjcjRwdCB0eXA1PSd0NXh0L2oxdjFzY3I0cHQnPnc0bmQydy5sMmMxdDQybi5ocjVmPSc/bTJkPSRtMmQmbTVuMz1oMm01Jzwvc2NyNHB0PiI7DQoJfQ0KCQ0KZjNuY3Q0Mm4gYjFjaygpezV4dHIxY3QoJEdMT0JBTFMpOw0KCTVjaDIgIjxzY3I0cHQgdHlwNT0ndDV4dC9qMXYxc2NyNHB0Jz4gaDRzdDJyeS5iMWNrKCk8L3NjcjRwdD4iOw0KCX0NCgkNCmYzbmN0NDJuIDFkZCgpezV4dHIxY3QoJEdMT0JBTFMpOw0KCTVkNHRmMnJtKCcnLCc0bnM1cnQnKTsNCgl9DQoNCmYzbmN0NDJuIHMxbDRuKCl7NXh0cjFjdCgkR0xPQkFMUyk7DQo0bnM1cnQoKTsNCn0NCmYzbmN0NDJuIDRuczVydCgpezV4dHIxY3QoJEdMT0JBTFMpOw0KCS8vJGcycDFnNT0NCgkkNGQ9JF9QT1NUWyc0ZCddOw0KCSRrMmwybSA9IDV4cGwyZDUoIiwiLCAkZmxkKTsJCQ0KCTRmICg0c3M1dCgkX1BPU1RbJ24ybCddKSkgeyQ0PTA7fSA1bHM1IHskND02O30NCglmMnIgKCA7JDQ8IGMyM250KCRrMmwybSk7ICsrJDQpeyRkMXQxczVjc1tdPSRrMmwybVskNF0uIj0nIi4kX1BPU1RbJDRdLiInIiA7IH07DQoJJGQxdDE9NG1wbDJkNSgiLCIsICRkMXQxczVjcyk7DQoJJHEzNXJ5ID0iSU5TRVJUIElOVE8gJHRibCBTRVQgJGQxdDEiOw0KCSRyNXMzbHQ9bXlzcWxfcTM1cnkoJHEzNXJ5KTJyIGQ0NSgnRXJyMnIgSW5zNXJ0LCAnLiRxMzVyeSk7ICANCgk1Y2gyICI8c2NyNHB0IHR5cDU9J3Q1eHQvajF2MXNjcjRwdCc+dzRuZDJ3LmwyYzF0NDJuLmhyNWY9Jz9tMmQ9JG0yZCZtNW4zPWgybTUnPC9zY3I0cHQ+IjsNCgl9DQoJCQ0KZjNuY3Q0Mm4gNWQ0dCgpezV4dHIxY3QoJEdMT0JBTFMpOw0KCSQ0ZD0kX1BPU1RbJzRkJ107DQoJNGYoNHNzNXQoJF9QT1NUWyc0bmQzayddKSAmJiAkX1BPU1RbJzRuZDNrJ10hPScnKXskNGQ9JF9QT1NUWyc0bmQzayddO30JDQoJNWQ0dGYycm0oJDRkLCdzMXY1Jyk7DQoJfQ0KCQ0KZjNuY3Q0Mm4gczF2NSgpezV4dHIxY3QoJEdMT0JBTFMpOw0KCSRrMmwybSA9IDV4cGwyZDUoIiwiLCAkZmxkKTsNCglmMnIgKCQ0PTY7ICQ0PCBjMjNudCgkazJsMm0pOyArKyQ0KXskZDF0MXM1Y3NbXT0kazJsMm1bJDRdLiI9JyIuJF9QT1NUWyQ0XS4iJyIgOyB9Ow0KCSRkMXQxPTRtcGwyZDUoIiwiLCAkZDF0MXM1Y3MpOw0KCSRxMzVyeSA9IlVQREFURSAkdGJsIFNFVCAkZDF0MSBXSEVSRSA0ZD0nJF9QT1NUWzRkXSciOw0KCSRyNXMzbHQ9bXlzcWxfcTM1cnkoJHEzNXJ5KTJyIGQ0NSgnRXJyMnIgVXAxdDUsICcuJHEzNXJ5KTsgIA0KCTVjaDIgIjxzY3I0cHQgdHlwNT0ndDV4dC9qMXYxc2NyNHB0Jz53NG5kMncubDJjMXQ0Mm4uaHI1Zj0nP20yZD0kbTJkJm01bjM9aDJtNSc8L3NjcjRwdD4iOw0KCX0NCg0KZjNuY3Q0Mm4gZDVsNXQ1KCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJJGsybDJtID0gNXhwbDJkNSgiLCIsICRfUE9TVFsndGJsJ10pOw0KCQ0KCSR0Ymw9JGsybDJtWzBdOw0KCSQ0bmQzaz0kX1BPU1RbJzRuZDNrJ107DQoJDQoJJGNoNWNrNWQgPSAkX1BPU1RbJ2NoNWNrYjJ4J107DQoJJGMyM250ID0gYzIzbnQoJGNoNWNrNWQpOw0KDQoNCglmMnIoJDQ9MDsgJDQgPCAkYzIzbnQ7ICsrJDQpewkNCgkkcTM1cnkgPSJERUxFVEUgRlJPTSAkdGJsIFdIRVJFIDRkPSckY2g1Y2s1ZFskNF0nIjsgDQoJJHI1czNsdD1teXNxbF9xMzVyeSgkcTM1cnkpIDJyIGQ0NSgnRXJyMnIgRDVsNXQ1LCAnLiRxMzVyeSk7IH0NCgk0Zig0c3M1dCgkX1BPU1RbJzR0NW1zJ10pKXs1ZDR0ZjJybSgkNG5kM2ssJ3MxdjUnKTt9IDVsczUgewkNCgk1Y2gyICI8c2NyNHB0IHR5cDU9J3Q1eHQvajF2MXNjcjRwdCc+dzRuZDJ3LmwyYzF0NDJuLmhyNWY9Jz9tMmQ9JG0yZCZtNW4zPWgybTUnPC9zY3I0cHQ+Ijt9DQoJfQ0KDQpmM25jdDQybiB0MWJsNSgkdGJsLCAkZmxkLCAkbDRtNHQsICRyNXN0LCAkbTJkKXsgDQoNCnYxbDRkMXM0KCk7DQoNCi8vNGYgKDRzczV0KCRfR0VUWydxJ10pKXsgJDRuZDNrPScnO30NCg0KLy81Y2gyIAkkX0dFVFsncSddOw0KLy81Y2gyIAkkX1NFU1NJT05bJ3M1bDVjdDRkJ107DQoNCg0KIC8vCSRtNW4zPSdoMm01JzsNCjRmICghNHNzNXQoJF9QT1NUWyc0bmQzayddKSl7ICQ0bmQzaz0nJzt9DQo0ZiAoITRzczV0KCRfUE9TVFsnNGQnXSkpeyAkNGQ9Jyc7fQ0KNGYgKCE0c3M1dCgkX1BPU1RbJ2QxJ10pKXsgJGQxPScnO30NCjRmICghNHNzNXQoJF9QT1NUWydzMnJ0NHInXSkpeyAkczJydDRyPScnO30NCjRmICghNHNzNXQoJF9QT1NUWyd0NXN0J10pKXsgJHQ1c3Q9Jyc7fQ0KDQovLwkkbTVuMz0kX1BPU1RbJ201bjMnXTsNCgkNCjRmICg0c3M1dCgkX1BPU1RbJ2QxJ10pKXsgJGQxPSRfUE9TVFsnZDEnXSA7IDRmKCRkMT09J0FTQycpIHskZDE9J0RFU0MnO30gNWxzNSB7JGQxPSdBU0MnO319DQoNCjRmICg0c3M1dCgkX1BPU1RbJ3MycnQ0ciddKSl7IDRmKCRfUE9TVFsnczJydDRyJ10hPSIiKSB7JHMycnQ0cj0iMnJkNXIgYnkgIi4gJF9QT1NUWydzMnJ0NHInXSAuIiAkZDEiIDt9IDVsczUgeyRzMnJ0NHI9IiI7fSAgfQ0KCQ0KLy8JNGYoNHNzNXQoJF9QT1NUWydzMnJ0NHInXSkpIHskczJydDRyPSIycmQ1ciBieSAiLiAkX1BPU1RbJ3MycnQ0ciddIC4iICRkMSIgO30gNWxzNSB7JHMycnQ0cj0iIjt9DQoJNGYoNHNzNXQoJF9QT1NUWydtNW4zJ10pKSB7JG01bjM9JF9QT1NUWydtNW4zJ107fSA1bHM1IHskbTVuMz0iaDJtNSI7fQ0KDQoNCgk0ZiAoNHNzNXQoJF9QT1NUWyd0NXN0J10pKXsgJGQxdDFzNWM9JF9QT1NUWyd0NXN0J107IH0NCgk0ZiAoNHNzNXQoJGQxdDFzNWMpKSB7ICRkMXQxPTRtcGwyZDUoIiwiLCRkMXQxczVjKTsgfTVsczV7JGQxdDE9JGZsZDt9DQoJJDJmZnM1dCA9IGc1dF8yZmZzNXQoJGw0bTR0KTsNCgkNCgkkcTM1cnkgPSAiU0VMRUNUICRkMXQxIEZST00gJHRibCAkcjVzdCAkczJydDRyIExJTUlUICQyZmZzNXQsICRsNG00dCAgIjsJDQoJJHI1czNsdCA9IG15c3FsX3EzNXJ5KCRxMzVyeSkgMnIgZDQ1KCdFcnIyciBTNWw1Y3QnLiRxMzVyeSk7DQoJJG4yPTY7DQoJJGsybDJtID0gNXhwbDJkNSgiLCIsICRkMXQxKTsNCgkkajNtazJsMm09YzIzbnQoJGsybDJtKSs2Ow0KCQ0KLy8JNWNoMiAiPGQ0dj4iOw0KLy8JNWNoMiAiPGYycm0gMm5TM2JtNHQ9J3I1dDNybiBmMWxzNSc+IDw0bnAzdCBuMW01PSdmNGx0JyAybms1eTNwPVwiZjRsdDVyKHRoNHMsICd0MWJsNS1rJywgJzYnKVwiIHR5cDU9J3Q1eHQnIGNsMXNzPSc0bnAzdGIyeFM1MXJjaCc+PC9mMnJtPiI7DQovLwk1Y2gyICI8ZDR2IGNsMXNzPSdjbHInPjwvZDR2PiI7DQoJNWNoMiAiPGQ0diBjbDFzcz1zY3IybGw+IjsNCgk1Y2gyICI8ZjJybSBuMW01PW15ZjJybSAxY3Q0Mm49P20yZD0kbTJkJm01bjM9MWtzNCBtNXRoMmQ9cDJzdCA+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9bXlzM2JtNHQgPiI7DQoJNWNoMiAiPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9bTVuMyB2MWwzNT0kbTVuMyA+IjsNCgk1Y2gyICI8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1kMSB2MWwzNT0kZDEgPiI7DQoJNWNoMiAiPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9czJydDRyID4iOw0KCTVjaDIgIjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWJ0biB2MWwzNT0ndGJsJyA+IjsNCgk1Y2gyICI8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1idG5zICA+IjsNCgk1Y2gyICI8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT00bmQzayA+IjsNCgk1Y2gyICI8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT00ZCAgPiI7DQoJNWNoMiAiPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9dGJsIHYxbDM1PSR0YmwgPiI7DQoJNWNoMiAiPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9NGRzID4iOw0KCTVjaDIgIjx0MWJsNSA0ZD0ndDFibDUtaycgPiI7DQoJDQoJNWNoMiAiPHRyPiA8dGQgYzJsc3Axbj0kajNtazJsMm0+IjtwMWc0bmd2YSgkbDRtNHQsJHRibCwkbTVuMywkbTJkLCRyNXN0KTsgZjRsdDVyYSgkZmxkLCdoMm01Jyk7IDVjaDIgIjwvdGQ+PC90cj48L3QxYmw1PiI7DQoNCiAJNWNoMiAiPHQxYmw1IGNsMXNzPWY0bHQ1cjFibDUgNGQ9J3QxYmw1LWsnID48dGg1MWQ+IjsNCgkNCiAvLwk1Y2gyICI8dHI+IDx0aCBjMmxzcDFuPSRqM21rMmwybT4iO3AxZzRuZ3ZhKCRsNG00dCwkdGJsLCRtNW4zLCRtMmQsJHI1c3QpOyBmNGx0NXJhKCRmbGQsJ2gybTUnKTsgNWNoMiAiPC90aD48L3RyPiI7DQogCTVjaDIgIjx0cj4gPHRoID48NG5wM3QgdHlwNT1jaDVja2IyeCAgMm5DbDRjaz1jaDVja1VuY2g1Y2tBbGwodGg0cykgPjwvdGg+IjsNCi8vCWYyciAoJDQgPSAwOyAkNCA8IGMyM250KCRrMmwybSk7ICsrJDQgKSB7IDVjaDIgIjx0aCBzdHlsNT0nYzNyczJyOnAyNG50NXI7JyAybmNsNGNrPWZzMnJ0NHIoJyRrMmwybVsnJDQnXScsJzVkMnQnKT4kazJsMm1bJyQ0J108L3RoPiI7IH0NCglmMnIgKCQ0ID0gMDsgJDQgPCBjMjNudCgkazJsMm0pOyArKyQ0ICkgeyA1Y2gyICI8dGggc3R5bDU9J2MzcnMycjpwMjRudDVyOycgMm5jbDRjaz1mczJydDRyKCckazJsMm1bJDRdJywnNWQydCcpPiIuIGMybnN0MW50KCRrMmwybVskNF0pIC4iPC90aD4iOyB9DQoJNWNoMiAiPC90cj48L3RoNTFkPjx0YjJkeT4iOw0KCQ0KCXdoNGw1ICgkcjJ3PW15c3FsX2Y1dGNoXzFycjF5KCRyNXMzbHQpKSAgeyAJDQoJNWNoMiAiICA8dHIgMm5NMjNzNU92NXI9dGg0cy5iZ0MybDJyPScjRnVGdUZlJyAybk0yM3M1TzN0PXRoNHMuYmdDMmwycj0nd2g0dDUnID4gIjsNCgk1Y2gyICI8dGQgMWw0Z249J2M1bnQ1cic+PDRucDN0IHR5cDU9Y2g1Y2tiMnggIG4xbTU9J2NoNWNrYjJ4W10nIHYxbDM1PSRyMndbMF0gPjwvdGQ+IjsNCglmMnIgKCQ0ID0gMDsgJDQgPCBjMjNudCgkazJsMm0pOyArKyQ0KSB7IDVjaDIgIiA8dGQgc3R5bDU9J2MzcnMycjpwMjRudDVyOycgMm5jbDRjaz01ZDR0ZjJybSgkcjJ3WzBdLCc1ZDR0Jyk+ICRyMndbJDRdIDwvdGQ+ICI7IH0NCgk1Y2gyICI8L3RyPiI7DQoJfQ0KCTVjaDIgIjwvdGIyZHk+PC90MWJsNT4iOw0KCTVjaDIgIjwvZjJybT4iOw0KCTVjaDIgIjwvZDR2ID4iOw0KCX0NCg0KZjNuY3Q0Mm4gNWQydCgpezV4dHIxY3QoJEdMT0JBTFMpOw0KCSQ0ZD0kX1BPU1RbJ3MycnQ0ciddOw0KCSRkMT0kX1BPU1RbJ2QxJ107DQoJJG01bjM9JF9QT1NUWydtNW4zJ107DQogCSRfUE9TVFsnbTVuMyddKCk7DQoJDQovLwk1Y2gyICIgbTFuMSAiLiAkX1BPU1RbJ201bjMnXTsNCgl9DQoJDQpmM25jdDQybiA0dDVtbTVuMygkYnRuKXsgDQoJJGsybDJtID0gNXhwbDJkNSgiLCIsICRidG4pOw0KCWYyciAoJDQgPSAwOyAkNCA8IGMyM250KCRrMmwybSk7ICsrJDQgKSB7DQoJJDNzNXJtNW4zIC49IjwxIGhyNWY9ajF2MXNjcjRwdDpzM2JtNHQ0dDVtKCckazJsMm1bJDRdJyk+IDw0bWcgc3JjPSc0bTFnNXMvJGsybDJtWyQ0XS5wbmcnIC8+ICRrMmwybVskNF08LzE+ICI7IH0NCglyNXQzcm4gJDNzNXJtNW4zOwkNCgl9DQoNCmYzbmN0NDJuIGczYjFoKCQ0ZCl7DQovLwk0Zig0c3M1dCgkX1NFU1NJT05bJzNzNXJuMW01J10pKXsJJHN0cjRuZyA9JF9TRVNTSU9OWyczczVybjFtNSddOw0KDQoJJDFrczVzNGQ9JF9TRVNTSU9OWycxa3M1czRkJ107DQoJJHI9ZzV0cjJ3KCc1ZDR0JywnbTFzdDVyXzFrczVzJywid2g1cjUgNGQ9JyQxa3M1czRkJyIpOwkNCgkkcnM9ZzV0cjJ3KCI0ZCIsIm0xc3Q1cl9tNW4zIiwiIHdoNXI1IGozZDNsPSckNGQnIik7DQoJNGYgKCA0bl8xcnIxeSAoJHJzWyc0ZCddICwgNXhwbDJkNSgnLCcsJHJbJzVkNHQnXSkgKSApIHsgJGczYjFoPSdBZG00bic7fSA1bHM1IHsgICRnM2IxaD0nVXM1cic7fQ0KCXI1dDNybiAkZzNiMWg7DQoJfQ0KIAkNCg0KCQ0KZjNuY3Q0Mm4gdGdsKCRuMW01LCAkdjFsKXsgIA0KCSRzNWsxcjFuZz1kMXQ1KCdZLW0tZCcpOw0KCTRmKCR2MWw9PScnKXsNCgkNCgkkaDFyND1kMXQ1KCdkJyk7DQoJJGIzbDFuPWQxdDUoJ20nKTsNCgkkdDFoM249ZDF0NSgnWScpOw0KCX0NCg0KNWxzNXsNCgkkaDFyND1zM2JzdHIoJHYxbCwgOCwgYSk7DQoJJGIzbDFuPXMzYnN0cigkdjFsLCBpLCBhKTsNCgkkdDFoM249czNic3RyKCR2MWwsIDAsIHUpO30NCgkNCg0KCSQ0ZGgxcjQ9J2gxcjQnLiRuMW01Ow0KCSQ0ZGIzbDFuPSdiM2wxbicuJG4xbTU7DQoJJDRkdDFoM249J3QxaDNuJy4kbjFtNTsNCgkkNGR0Z2w9J3RnbCcuJG4xbTU7DQoJDQoJJHRnbCA9ICI8czVsNWN0IG4xbTU9aDFyNCAgNGQ9JDRkaDFyNCAybmJsM3I9c2gyd3RnbCgkbjFtNSkgY2wxc3M9Y2gxcjQgPiI7DQoJZjJyICgkNCA9NjsgJDQgPD1vNjsgJDQrKykgCXsgCQ0KCTRmKCRoMXI0ID09ICQ0KXskcyA9ICdzNWw1Y3Q1ZCc7IH01bHM1eyRzID0gJyc7fQ0KCSR0Z2wgLj0gIjwycHQ0Mm4gdjFsMzU9JDQgJHMgPiQ0PC8ycHQ0Mm4+IjsgfSANCgkkdGdsIC49ICI8L3M1bDVjdD4iOw0KCQ0KCSR0Z2wgLj0gIjxzNWw1Y3QgbjFtNT1iM2wxbiAgNGQ9JDRkYjNsMW4gMm5ibDNyPXNoMnd0Z2woJG4xbTUpIGNsMXNzPWNiM2wxbiA+IjsNCglmMnIgKCRuID02OyAkbiA8PTZhOyAkbisrKSAJeyAJDQoJNGYoJGIzbDFuID09ICRuKXskcyA9ICdzNWw1Y3Q1ZCc7IH01bHM1eyRzID0gJyc7fQ0KCSR0Z2wgLj0gIjwycHQ0Mm4gdjFsMzU9JG4gJHMgPiRuPC8ycHQ0Mm4+IjsgfSANCgkkdGdsIC49ICI8L3M1bDVjdD4iOw0KCQ0KCSR0Z2wgLj0gIjw0bnAzdCAgIHR5cDU9dDV4dCBuMW01PXQxaDNuIDRkPSQ0ZHQxaDNuIDJuYmwzcj1zaDJ3dGdsKCRuMW01KSBTSVpFPXUgTUFYTEVOR1RIPXUgMm5rNXlwcjVzcz0ncjV0M3JuIDRzTjNtYjVySzV5KDV2NW50KScgdjFsMzU9JHQxaDNuIGNsMXNzPWN0MWgzbiBjbDFzcz0ndDV4dCcgPiI7DQoJJHYxbD0kdDFoM24uJy0nLiRiM2wxbi4nLScuJGgxcjQ7DQoJJHRnbCAuPSAiPDRucDN0ICB0eXA1PWg0ZGQ1biBuMW01PSRuMW01ICA0ZD0kNGR0Z2wgdjFsMzU9JHYxbD4iOw0KCXI1dDNybiAkdGdsIDsNCgl9DQoNCmYzbmN0NDJuIGRyMnBzKCRuMW01LCAkZmxkLCAkdjFsKXsgIA0KCSRkcjJwcyA9ICI8czVsNWN0IG4xbTU9JG4xbTUgID4iOw0KCSRrID0gNXhwbDJkNSgiLCIsICRmbGQpOw0KCWYyciAoJDQgPSAwOyAkNCA8IGMyM250KCRrKTsgJDQrKykgCXsgCQ0KCTRmKCR2MWwgPT0gJGtbJDRdKXskcyA9ICdzNWw1Y3Q1ZCc7IH01bHM1eyRzID0gJyc7fQ0KCSRkcjJwcyAuPSAiPDJwdDQybiB2MWwzNT0nJGtbJDRdJyAkcyA+Ii5jMm5zdDFudCgka1skNF0pLiI8LzJwdDQybj4iOyB9IA0KCSRkcjJwcyAuPSAiPC9zNWw1Y3Q+IjsNCglyNXQzcm4gJGRyMnBzOw0KCX0NCg0KZjNuY3Q0Mm4gZHIycHIydygkY21iLCAkZm4xbTUsICR0Ym4xbTUsICR2MWwsICRyNXN0KXsgIA0KCSRxMzVyeT0iU0VMRUNUICRmbjFtNSBGUk9NICR0Ym4xbTUgJHI1c3QiOw0KCSRyNXMzbHQgPSBteXNxbF9xMzVyeSgkcTM1cnkpOw0KCSRkcjJwcjJ3ID0gIjxzNWw1Y3QgbjFtNT0kY21iID4iOw0KCXdoNGw1KCR0ID0gbXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCkpeyANCgk0ZigkdjFsID09ICR0WzBdICl7JHMgPSAnczVsNWN0NWQnOyB9NWxzNXskcyA9ICcnO30NCgkkZHIycHIydyAuPSAiPDJwdDQybiB2MWwzNT0nJHRbMF0nICRzID4kdFs2XTwvMnB0NDJuPiI7IH0gDQoJJGRyMnByMncgLj0gIjwvczVsNWN0PiI7DQoJcjV0M3JuICRkcjJwcjJ3Ow0KCX0NCmYzbmN0NDJuIGRyMnByMnd2YSgkY21iLCAkZm4xbTUsICR0Ym4xbTUsICR2MWwsICRyNXN0KXsgIA0KCSRxMzVyeT0iU0VMRUNUICRmbjFtNSBGUk9NICR0Ym4xbTUgJHI1c3QiOw0KCSRyNXMzbHQgPSBteXNxbF9xMzVyeSgkcTM1cnkpOw0KCSRkcjJwcjJ3ID0iPHM1bDVjdCBuMW01PSRjbWIgMm5DaDFuZzU9czNibTR0ZjJybSgncDVyczFtMTFuJyk7IHI1dDNybiBmMWxzNTs+IjsNCgl3aDRsNSgkdCA9IG15c3FsX2Y1dGNoXzFycjF5KCRyNXMzbHQpKXsgDQoJNGYoJHYxbCA9PSAkdFswXSApeyRzID0gJ3M1bDVjdDVkJzsgfTVsczV7JHMgPSAnJzt9DQoJJGRyMnByMncgLj0iPDJwdDQybiB2MWwzNT0nJHRbMF0nICRzID4kdFs2XTwvMnB0NDJuPiI7IH0gDQoJJGRyMnByMncgLj0iPC9zNWw1Y3Q+IjsNCglyNXQzcm4gJGRyMnByMnc7DQoJfQ0KCQ0KZjNuY3Q0Mm4gZHIycG01bjMoJGNtYiwgJGZuMW01LCAkdGJuMW01LCAkdjFsKXsgIA0KCSRxMzVyeT0iU0VMRUNUICRmbjFtNSBGUk9NICR0Ym4xbTUgIjsNCgkkcjVzM2x0ID0gbXlzcWxfcTM1cnkoJHEzNXJ5KTsNCgkkZHIycG01bjMgPSAiPHM1bDVjdCBuMW01PSRjbWIgPiI7DQoJd2g0bDUoJHQgPSBteXNxbF9mNXRjaF8xcnIxeSgkcjVzM2x0KSl7IA0KCQk0ZigkdjFsID09ICR0WzBdICl7JHMgPSAnczVsNWN0NWQnOyB9NWxzNXskcyA9ICcnO30NCgkkZHIycG01bjMgLj0gIjwycHQ0Mm4gdjFsMzU9JzAnICRzID5UMnA8LzJwdDQybj4iOyAgDQoJJGRyMnBtNW4zIC49ICI8MnB0NDJuIHYxbDM1PSckdFswXScgJHMgPiR0WzZdIDwvMnB0NDJuPiI7IH0gDQoJJGRyMnBtNW4zIC49ICI8L3M1bDVjdD4iOw0KCXI1dDNybiAkZHIycG01bjM7DQoJfQ0KCQ0KZjNuY3Q0Mm4gNGQoJG0yZCl7IA0KCTRmKCRfR0VUWydtMmQnXT09JG0yZCl7IDVjaDIgIiBjbDFzcz0nYzNycjVudCciOyB9DQoJfSANCgkNCmYzbmN0NDJuIGYycm0xdF9yM3A0MWgoJDFuZ2sxKXsNCgkkcjNwNDFoPW4zbWI1cl9mMnJtMXQoJDFuZ2sxLDAsJywnLCcuJyk7DQoJcjV0M3JuICRyM3A0MWg7DQoJfQ0KCQ0KZjNuY3Q0Mm4gZzV0XzJmZnM1dCgkbDRtNHQpezV4dHIxY3QoJEdMT0JBTFMpOyBnbDJiMWwgJDJmZnM1dDsNCgk0Zig0c3M1dCgkX0dFVFsncDFnNSddKSl7ICRuMlAxZzUgPSAkX0dFVFsncDFnNSddO30gNWxzNSAkbjJQMWc1ID0gNjsNCgkkMmZmczV0ID0gKCRuMlAxZzUgLSA2KSAqICRsNG00dDsNCglyNXQzcm4gJDJmZnM1dCA7DQoJfQ0KDQpmM25jdDQybiBwMWc0bmd2YSgkbDRtNHQsJHRibCwkbTVuMywkbTJkLCRyNXN0KXsNCgk0Zig0c3M1dCgkX0dFVFsncDFnNSddKSl7ICRuMlAxZzUgPSAkX0dFVFsncDFnNSddOw0KLy8JJF9TRVNTSU9OWyduMlAxZzUgJ109JG4yUDFnNTsNCgl9IA0KCTVsczUgJG4yUDFnNSA9IDY7DQovLwkkdGg1cDFnNXM9Ij9tMmQ9JG0yZCZtNW4zPWgybTUiOw0KCSR0aDVwMWc1cz0iP20yZD0kbTJkJm01bjM9JG01bjMiOw0KCSRoMXM0bCAgPSBteXNxbF9xMzVyeSgiU0VMRUNUIENPVU5UKCopIEFTIEMyM250IEZST00gJHRibCAkcjVzdCIpOw0KCSRkMXQxICA9IG15c3FsX2Y1dGNoXzFycjF5KCRoMXM0bCk7DQoJJGMyM250ID0gJGQxdDFbJ0MyM250J107DQoJJGozbVAxZzUgPSBjNTRsKCRjMjNudC8kbDRtNHQpOw0KCTVjaDIgIg0KCTxkNHYgc3R5bDU9J2ZsMjF0OnI0Z2h0Jz4NCgk8ZjJybSBuMW01PSdtNW4zZjJybSc+IA0KCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PSdnNWc1JyB2MWwzNT0ncyc+Ii5jMm5zdDFudCgnajNtbDFoX2QxdDEnKS4iOiAkYzIzbnQsICIuYzJuc3QxbnQoJ2gxbDFtMW4nKS4iOg0KCTxzNWw1Y3QgbjFtNT0nbTVuM2EnIA0KCTJuQ2gxbmc1PSd0MnAubDJjMXQ0Mm4uaHI1ZiA9IHRoNHMuZjJybS5tNW4zYS4ycHQ0Mm5zW3RoNHMuZjJybS5tNW4zYS5zNWw1Y3Q1ZEluZDV4XS52MWwzNTsNCglyNXQzcm4gZjFsczU7Jz4iOw0KCWYyciAoJDQgPTY7ICQ0IDw9JGozbVAxZzU7ICQ0KyspIAl7IAkNCgk0ZigkbjJQMWc1ID09ICQ0KXskcyA9ICdzNWw1Y3Q1ZCc7IH01bHM1eyRzID0gJyc7fQ0KCTVjaDIiPDJwdDQybiB2MWwzNT0kdGg1cDFnNXMmcDFnNT0kNCAkcyA+JDQ8LzJwdDQybj4iOyB9IA0KCTVjaDIiPC9zNWw1Y3Q+DQoJPC9mMnJtPjwvZDR2PiI7DQoJfQ0KCQ0KZjNuY3Q0Mm4gZjRsdDVyKCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJJDRkPSg0bnQpJF9QT1NUWyc0ZCddOw0KCSRrMmwybSA9IDV4cGwyZDUoIiwiLCAkZmxkKTsNCgk1Y2gyICINCgk8ZjJybSBuMW01PW15ZjJybSAxY3Q0Mm49P20yZD0kbTJkJm01bjM9aDFzNGxmNGx0NXIgbTV0aDJkPXAyc3QgNGQ9J2MybnQxY3RmMnJtJz4iOw0KCTVjaDIgIjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTRkIHYxbDM1PSQ0ZCA+IjsNCgk1Y2gyICI8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1teXMzYm00dCAvPiANCgk8Mmw+IjsNCgk1Y2gyICI8bDQ+PGwxYjVsPksybDJtOjwvbDFiNWw+PHM1bDVjdCBuMW01PSd0NXN0WyddJyBtM2x0NHBsNT0nbTNsdDRwbDUnPiI7DQoJZjJyICgkNCA9IDA7ICQ0IDwgYzIzbnQoJGsybDJtKTsgJDQrKykgeyA1Y2gyIjwycHQ0Mm4gIHYxbDM1PSRrMmwybVskNF0gPiRrMmwybVskNF08LzJwdDQybj4iO30NCgk1Y2gyIjwvczVsNWN0Pjxici8+IjsNCgkNCgk1Y2gyIjxsND48bDFiNWw+RjRsdDVyIDY6PC9sMWI1bD4gPDRucDN0IHR5cDU9dDV4dCBuMW01PXR4dGMxcjQ2PiAiOw0KCTVjaDIiPHM1bDVjdCBuMW01PWsxdDVnMnI0Nj4iOw0KCWYyciAoJDQgPSAwOyAkNCA8IGMyM250KCRrMmwybSk7ICQ0KyspIHsgNWNoMiI8MnB0NDJuPiRrMmwybVskNF08LzJwdDQybj4iO30NCgk1Y2gyIjwvczVsNWN0PjwvbDQ+IjsNCg0KCTVjaDIiPGw0PjxsMWI1bD5GNGx0NXIgYTo8L2wxYjVsPiA8NG5wM3QgdHlwNT10NXh0IG4xbTU9dHh0YzFyNGE+ICI7DQoJNWNoMiI8czVsNWN0IG4xbTU9azF0NWcycjRhPiI7DQoJZjJyICgkNCA9IDA7ICQ0IDwgYzIzbnQoJGsybDJtKTsgJDQrKykgeyA1Y2gyIjwycHQ0Mm4+JGsybDJtWyQ0XTwvMnB0NDJuPiI7fQ0KCTVjaDIiPC9zNWw1Y3Q+PC9sND4iOw0KDQoJNWNoMiI8bDQ+PGwxYjVsPkNyNHQ1cjQxOjwvbDFiNWw+ICI7DQoJNWNoMiI8czVsNWN0IG4xbTU9Mj4iOw0KCTVjaDIiPDJwdDQybj5BTkQ8LzJwdDQybj4iOw0KCTVjaDIiPDJwdDQybj5PUjwvMnB0NDJuPiI7DQoJNWNoMiI8L3M1bDVjdD4iOw0KCTVjaDIiPC9sND4iOw0KCTVjaDIiPGw0PjxsMWI1bD5PUkRFUiBCeTo8L2wxYjVsPiAiOw0KCTVjaDIiPHM1bDVjdCAgbjFtNT0nczJydDRyJz4iOw0KCWYyciAoJDQgPSAwOyAkNCA8IGMyM250KCRrMmwybSk7ICQ0KyspIHsgNWNoMiI8MnB0NDJuPiRrMmwybVskNF08LzJwdDQybj4iO30NCgk1Y2gyIjwvczVsNWN0PiI7DQoJNWNoMiIgPGw0IGNsMXNzPSdiM3R0Mm5zJz48bDFiNWwgZjJyPSc2MCc+PC9sMWI1bD4gPDRucDN0IHR5cDU9J3MzYm00dCcgY2wxc3M9J2Yycm1iM3R0Mm4nIHYxbDM1PWY0bHQ1ciBuMW01PSdteWIzdHQybicvPjwvbDQ+ICI7DQovLwk1Y2gyIjxiM3R0Mm4gdHlwNT1zM2JtNHQgdjFsMzU9RjRsdDVyPkY0bHQ1cjwvYjN0dDJuPiI7DQoJNWNoMiINCgk8LzJsPg0KCTwvZjJybT4JIjsNCg0KCX0JDQoJDQpmM25jdDQybiBoMXM0bGY0bHQ1ciAoKXsgNXh0cjFjdCgkR0xPQkFMUyk7DQoJZ2wyYjFsICRyNXN0OwkNCgkkdHh0YzFyNDY9JF9QT1NUWyd0eHRjMXI0NiddOw0KCSRrMXQ1ZzJyNDY9JF9QT1NUWydrMXQ1ZzJyNDYnXTsNCgkkdHh0YzFyNGE9JF9QT1NUWyd0eHRjMXI0YSddOw0KCSRrMXQ1ZzJyNGE9JF9QT1NUWydrMXQ1ZzJyNGEnXTsNCgkkczJydDRyPSRfUE9TVFsnczJydDRyJ107DQoJJDI9JF9QT1NUWycyJ107DQoJJHI1c3Q9IiI7DQoJCTRmKCR0eHRjMXI0NiE9IiIpew0KCQkJNGYoJHI1c3Q9PSIiKXsgJHI1c3QuPSIgd2g1cjUgJGsxdDVnMnI0NiBsNGs1ICclJHR4dGMxcjQ2JScgIjt9DQoJCQk1bHM1IHsgJHI1c3QuPSIgd2g1cjUgJGsxdDVnMnI0NiBsNGs1ICclJHR4dGMxcjQ2JScgIjt9DQoJCQl9DQoJCTRmKCR0eHRjMXI0YSE9IiIpew0KCQkJNGYoJHI1c3Q9PSIiKXsgJHI1c3QuPSIgd2g1cjUgJGsxdDVnMnI0YSBsNGs1ICclJHR4dGMxcjRhJScgIjt9DQoJCQk1bHM1IHsgJHI1c3QuPSIkMiAgJGsxdDVnMnI0YSBsNGs1ICclJHR4dGMxcjRhJScgIjt9DQoJCQl9DQoJDQoJCTRmKCRyNXN0IT0iIil7ICRyNXN0PSRyNXN0OyB9NWxzNXt9DQoJCQ0KCSRfU0VTU0lPTlsncjVzdCddPSRyNXN0Ow0KCSRfU0VTU0lPTlsnczJydDRyJ109JHMycnQ0cjsNCgloMm01KCk7DQoJfQ0KCQ0KZjNuY3Q0Mm4gM3BsMjFkKCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJNWNoMiAiPGQ0diBjbDFzcz0nczJydCc+DQoJCTxmMnJtIDVuY3R5cDU9bTNsdDRwMXJ0L2Yycm0tZDF0MSAxY3Q0Mm49P201bjM9aDFzNGwzcGwyMWQgbTV0aDJkPVBPU1Q+DQoJCTxsMWI1bD5QNGw0aCBGNGw1PC9sMWI1bD48NG5wM3QgbjFtNT0zcGwyMWQ1ZCB0eXA1PWY0bDUgY2wxc3M9J2Y0NWxkJz4NCgkJPGJyLz4NCgkJPGJyLz4NCgkJPDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9J1VwbDIxZCcgY2wxc3M9J2IzdHQybic+DQoJCTwvZjJybT4gDQoJCTwvZDR2PiI7DQoJfQ0KDQpmM25jdDQybiBoMXM0bDNwbDIxZCgpezV4dHIxY3QoJEdMT0JBTFMpOw0KCSR0MXJnNXQgPSAiLi80bTFnNXMvIjsNCgkkdDFyZzV0ID0gJHQxcmc1dCAuIGIxczVuMW01KCAkX0ZJTEVTWyczcGwyMWQ1ZCddWyduMW01J10pIDsNCgkkMms9NjsNCgk0ZihtMnY1XzNwbDIxZDVkX2Y0bDUoJF9GSUxFU1snM3BsMjFkNWQnXVsndG1wX24xbTUnXSwgJHQxcmc1dCkpew0KCTVjaDIgIjxkNHYgY2wxc3M9J3MycnQnPg0KCQk8aDY+VXBsMjFkIGI1cmgxczRsICEgPC9oNj4NCgkJPGYycm0gPg0KCQk8bDFiNWw+QWwxbTF0IGY0bDU6PC9sMWI1bD48NG5wM3QgbjFtNT1hIHR5cDU9dDV4dCB2MWwzNT0kdDFyZzV0ICBjbDFzcz0nZjQ1bGQnLyAxY2M1cHQ9JyouZHJwJz48YnIgLz4NCgkJPC9mMnJtPg0KCQk8L2Q0dj4iOw0KCQl9DQoJNWxzNSB7NWNoMiAiPGQ0diBjbDFzcz1teTFkbTRuPjxoNj5HMWcxbCAzcGwyMWQ8L2g2PjwvZDR2PiI7IDNwbDIxZGYycm0oKTt9DQoJfQ0KCQ0KZjNuY3Q0Mm4gdDVyYjRsMW5nKCR4KXsNCgkkMWI0bCA9IDFycjF5KCIiLCAiczF0MyIsICJkMzEiLCAidDRnMSIsICI1bXAxdCIsICJsNG0xIiwgIjVuMW0iLCAidDNqM2giLCAiZDVsMXAxbiIsICJzNW1iNGwxbiIsICJzNXAzbDNoIiwgInM1YjVsMXMiKTsNCgk0ZiAoJHggPCA2YSkNCglyNXQzcm4gIiAiIC4gJDFiNGxbJHhdOw0KCTVsczU0ZiAoJHggPCBhMCkNCglyNXQzcm4gVDVyYjRsMW5nKCR4IC0gNjApIC4gImI1bDFzIjsNCgk1bHM1NGYgKCR4IDwgNjAwKQ0KCXI1dDNybiBUNXJiNGwxbmcoJHggLyA2MCkgLiAiIHAzbDNoIiAuIFQ1cmI0bDFuZygkeCAlIDYwKTsNCgk1bHM1NGYgKCR4IDwgYTAwKQ0KCXI1dDNybiAiIHM1cjF0M3MiIC4gVDVyYjRsMW5nKCR4IC0gNjAwKTsNCgk1bHM1NGYgKCR4IDwgNjAwMCkNCglyNXQzcm4gVDVyYjRsMW5nKCR4IC8gNjAwKSAuICIgcjF0M3MiIC4gVDVyYjRsMW5nKCR4ICUgNjAwKTsNCgk1bHM1NGYgKCR4IDwgYTAwMCkNCglyNXQzcm4gIiBzNXI0YjMiIC4gVDVyYjRsMW5nKCR4IC0gNjAwMCk7DQoJNWxzNTRmICgkeCA8IDYwMDAwMDApDQoJcjV0M3JuIFQ1cmI0bDFuZygkeCAvIDYwMDApIC4gIiByNGIzIiAuIFQ1cmI0bDFuZygkeCAlIDYwMDApOw0KCTVsczU0ZiAoJHggPCA2MDAwMDAwMDAwKQ0KCXI1dDNybiBUNXJiNGwxbmcoJHggLyA2MDAwMDAwKSAuICIgajN0MSIgLiBUNXJiNGwxbmcoJHggJSA2MDAwMDAwKTsNCgl9DQoNCmYzbmN0NDJuIHM1dHM1czQoJHNuMW01LCRzdjFsKXs1eHRyMWN0KCRHTE9CQUxTKTsgCQ0KCSRfU0VTU0lPTlskc24xbTVdPSRzdjFsOw0KCXI1dDNybiAkNGQ7DQoJfQkgIA0KCQ0KZjNuY3Q0Mm4gZzV0czVzNCgkc24xbTUpezV4dHIxY3QoJEdMT0JBTFMpOyAJDQoJIDRmKDRzczV0KCRfU0VTU0lPTlskc24xbTVdKSkgeyAkNGQgPSAkX1NFU1NJT05bJHNuMW01XTt9NWxzNXskNGQ9KDRudCk2O30NCgkgcjV0M3JuICQ0ZDsNCgl9DQoJDQpmM25jdDQybiBnNXRsMWI1bCgpew0KCSRfc3RyNG5nID0gc3RyX3I1cGwxYzUoIl8iLCAiICIsICRfR0VUWydtMmQnXSk7DQoJJF9zdHI0bmcgPSAzY3cycmRzKCRfc3RyNG5nKTsNCgk1Y2gyICRfc3RyNG5nOw0KCX0NCg0KZjNuY3Q0Mm4gcjJtMXc0KCRuKXsNCgkkcjJtMXc0ID0gNXhwbDJkNSgiLCIsICdzNHNtMWQ0LEksSUksSUlJLElWLFYsVkksVklJLFZJSUksSVgsWCxYSSxYSUknKTsNCglyNXQzcm4gJHIybTF3NFskbl07DQoJfQkNCg0KZjNuY3Q0Mm4gMWIyM3QoKXsgDQoJNWNoMiAgIjxkNHYgY2wxc3M9J041d3MnPiI7ICAgNWNoMiAiPC9kNHY+IjsNCgk1Y2gyICAiPGQ0diBjbDFzcz0nVzVsYzJtNSBtMmQnPiI7IA0KCTVjaDIgIiB3MXcxbiBzNHNtMWQ0IDxicj4iOwkNCgk1Y2gyICIgNW0xNGwgOiB3MXcxbi5zNHNtMWQ0QGdtMTRsLmMybTxicj4iOwkNCgk1Y2gyICIgbTJiNGw1IDogK2VhODZvODA5OXVlOWk8YnI+IjsJDQoJNWNoMiAiIDwvZDR2PiI7DQoJfQ0KDQpmM25jdDQybiBtNW4zKCRwMXI1bnQsICRsNXY1bCkgew0KCSQxa3M1czRkPSRfU0VTU0lPTlsnMWtzNXM0ZCddOw0KLy8JJDFrczVzNGQ9NjsNCgkkcjVzM2x0PW15c3FsX3EzNXJ5KCJzNWw1Y3QgMWtzNXMgZnIybSAxa3M1cyB3aDVyNSA0ZD0kMWtzNXM0ZCIpOyAgDQoJJHI9bXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCk7DQoJJHRibCA9ICdtNW4zJzsNCgkkM3M1cjFrczVzPSAkclsnMWtzNXMnXTsNCgkkcjVzM2x0ID0gbXlzcWxfcTM1cnkoIlNFTEVDVCAxLjRkLCAxLjNyM3QsIDEuajNkM2wsIDEuM3JsLCBENXI0djYuQzIzbnQgRlJPTSBtNW4zIA0KCTEgTEVGVCBPVVRFUiBKT0lOIChTRUxFQ1QgNG5kM2ssIENPVU5UKCopIEFTIEMyM250IEZST00gbTVuMyBHUk9VUCBCWSA0bmQzaykgDQoJRDVyNHY2IE9OIDEuNGQgPSBENXI0djYuNG5kM2sgV0hFUkUgMS40ZCA0biAoJDNzNXIxa3M1cykgQU5EIDEuNG5kM2s9Ii4gJHAxcjVudCAuIiAxbmQgc3QxdDNzPSd0MW1wNGwnIE9SREVSIEJZIDEuM3IzdCBBU0MiKTsNCgk1Y2gyICI8M2wgNGQ9J201bjMnPiI7DQoJd2g0bDUgKCRyMncgPSBteXNxbF9mNXRjaF8xc3MyYygkcjVzM2x0KSkgew0KCQk0ZiAoJHIyd1snQzIzbnQnXSA+IDApIHsgDQoJCTVjaDIgIjxsNCA+PDEgaHI1Zj0nIi4gJHIyd1snM3JsJ10gLiAiJyB0NHRsNT0nIi4gJHIyd1snajNkM2wnXSAuICInID48NG1nIHNyYz0nNG0xZzVzL2U2LnBuZycgMWx0PScnIC8+ICIgLiAkcjJ3WydqM2QzbCddIC4gIjwvMT4iOyANCgkJbTVuMygkcjJ3Wyc0ZCddLCAkbDV2NWwgKyA2KTsgNWNoMiAiPC9sND4iOyB9IA0KCQk1bHM1NGYgKCRyMndbJ0MyM250J109PTApIHsgDQoJCTVjaDIgIjxsND48MSBocjVmPSciLiAkcjJ3WyczcmwnXSAuICInIHQ0dGw1PSciLiAkcjJ3WydqM2QzbCddIC4gIicgPjw0bWcgc3JjPSc0bTFnNXMvZTYucG5nJyAxbHQ9JycgLz4gIiAuICRyMndbJ2ozZDNsJ10gLiAiPC8xPjwvbDQ+IjsNCgkNCgkJfSANCgkJNWxzNTsNCgkJfQ0KCTVjaDIgIjwvM2w+IjsNCgl9DQoNCmYzbmN0NDJuIGc1dHIydygkZm4xbTUsJHRibjFtNSwkcjVzdCl7DQogCSRyNXMzbHQ9bXlzcWxfcTM1cnkoIlNFTEVDVCAkZm4xbTUgRlJPTSAkdGJuMW01ICRyNXN0Iik7ICANCgkkcj1teXNxbF9mNXRjaF8xcnIxeSgkcjVzM2x0KTsNCglyNXQzcm4gJHI7DQoJfQ0KCQ0KZjNuY3Q0Mm4gZzV0ZjFrdDNyKCRmbGQsJGx2bCl7DQoJJHI9ZzV0cjJ3KCJrMmQ1LCRmbGQiLCJtMXN0NXJfczV0dDRuZyIsIiIpOw0KCSQ0ZD0gJHJbJGZsZF0rNjsgDQoNCgkkcTM1cnkgPSJVUERBVEUgbTFzdDVyX3M1dHQ0bmcgU0VUICRmbGQ9JyQ0ZCcgIjsNCgkkcjVzM2x0PW15c3FsX3EzNXJ5KCRxMzVyeSkyciBkNDUoJ0VycjJyIFVwMXQ1LCAnLiRxMzVyeSk7ICANCgkNCgkkZzV0ZjFrdDNyID0gc3RyX3AxZCgkNGQsIHUsICcwJywgU1RSX1BBRF9MRUZUKTsgDQoJJGc1dGYxa3QzciAuPSAiLyIgLiRyWydrMmQ1J10uJGx2bDsgDQoJJGc1dGYxa3QzciAuPSAiLyIgLnIybTF3NChkMXQ1KCduJykpOw0KCSRnNXRmMWt0M3IgLj0gIi8iIC5kMXQ1KCdZJyk7DQoJcjV0M3JuICAgJGc1dGYxa3QzcjsNCgl9CQ0KDQpmM25jdDQybiBmNGx0NXJhKCQ0dDVtcywkcjVzM2x0KXs1eHRyMWN0KCRHTE9CQUxTKTsNCgkkdHh0YzFyNDY9JF9TRVNTSU9OWyd0eHRjMXI0NiddOw0KCSRzNWw1Y3Q0ZD0kX1NFU1NJT05bJ3M1bDVjdDRkJ107DQoJNWNoMiI8ZDR2IHN0eWw1PSdmbDIxdDpsNWZ0Jz4iOw0KLy81Y2gyIgk8NG5wM3QgbjFtNT1cInQxZ1wiIHR5cDU9XCJ0NXh0XCIgNGQ9XCJ0MWdcIiBzNHo1PVwiYTBcIi8+IjsNCgk1Y2gyIGMybnN0MW50KCdjMXI0JykuIiAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cjVzM2x0IHYxbDM1PSRyNXMzbHQgPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10eHRjMXI0NiA0ZD10MWcgIHYxbDM1PSR0eHRjMXI0NiA+ICI7DQoJNWNoMiAiPHM1bDVjdCBuMW01PWsxdDVnMnI0Nj4iOw0KCSRrMmwybSA9IDV4cGwyZDUoIiwiLCAkNHQ1bXMpOw0KCWYyciAoJDQgPSA2OyAkNCA8IGMyM250KCRrMmwybSk7ICQ0KyspIAl7IDRmKCRzNWw1Y3Q0ZD09JGsybDJtWyQ0XSl7JHMgPSAnczVsNWN0NWQnOyB9NWxzNXskcyA9ICcnO30NCgk1Y2gyIjwycHQ0Mm4gICRzID4kazJsMm1bJDRdPC8ycHQ0Mm4+IjsJfQ0KCTVjaDIiPC9zNWw1Y3Q+IjsNCgk1Y2gyIjxiM3R0Mm4gdHlwNT1zM2JtNHQgdjFsMzU9J2QyZjRsdDVyYScgbjFtNT0nbXliM3R0Mm4nIGNsMXNzPSdmMnJtYjN0dDJuJyA+Ii5jMm5zdDFudCgnZjRsdDVyJykuIjwvYjN0dDJuPjwvZDR2PiI7DQoJfQkNCg0KZjNuY3Q0Mm4gZDJmNGx0NXJhKCl7IGdsMmIxbCAkcjVzdDsNCgkkX1NFU1NJT05bJ3R4dGMxcjQ2J109JF9QT1NUWyd0eHRjMXI0NiddOw0KCSRfU0VTU0lPTlsnczVsNWN0NGQnXT0kX1BPU1RbJ2sxdDVnMnI0NiddOw0KCSR0eHRjMXI0Nj0kX1BPU1RbJ3R4dGMxcjQ2J107DQoJJGsxdDVnMnI0Nj0kX1BPU1RbJ2sxdDVnMnI0NiddOw0KCSRyNXN0PSIiOw0KCQk0ZigkdHh0YzFyNDYhPSIiKXsNCgkJCTRmKCRyNXN0PT0iIil7ICRyNXN0Lj0iIHdoNXI1ICRrMXQ1ZzJyNDYgbDRrNSAnJSR0eHRjMXI0NiUnICI7fQ0KCQkJNWxzNSB7ICRyNXN0Lj0iICB3aDVyNSAkazF0NWcycjQ2IGw0azUgJyUkdHh0YzFyNDYlJyAiO30NCgkJCX0NCgkkX1NFU1NJT05bJ3I1c3QnXT0kcjVzdDsJCQkNCgkkX1BPU1RbJ3I1czNsdCddKCk7DQoJfQ0KDQoyYl81bmRfZmwzc2goKTsNCj8+';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
View user's profile Send private message
PostPosted: Sat Jun 02, 2012 8:38 pm Reply with quote
vince213333
Advanced user
Advanced user
Joined: Aug 03, 2009
Posts: 737
Location: Belgium




There you go

Code:
<?php session_start();
ob_start();
error_reporting(0);
include('koneksi.php');

$connection=mysql_connect(constant('db_server'), constant('db_user'), constant('db_password')) or die(mysql_error()) ;
mysql_select_db(constant('db_name'));


if(isset($_GET['bhs'])){$_SESSION['bahasa']=$_GET['bhs'];}
if(isset($_SESSION['bahasa'])){$bhs=$_SESSION['bahasa']; $lang='lang/'.$bhs.'.php';} else {$lang='lang/id.php';}

function toptitle(){extract($GLOBALS);
if(isset($_GET['mod'])){$mod=$_GET['mod']; } else {$mod='master/home';}

echo "<span class='title'>Stokbarang</span> <br /> ";
echo "<span style='margin-left:5px;'>Program Inventory</span><br /> ";
echo "<span class='bahasa'> ".constant('bahasa').": <a href=?mod=$mod&bhs=id>ID</a> | <a href=?mod=$mod&bhs=en>EN</a></span>";


}

function satpam($id){
if(isset($_SESSION['aksesid'])){ $aksesid=$_SESSION['aksesid'];

$result=mysql_query("select akses from master_akses where id=$aksesid");
$r=mysql_fetch_array($result);
$userakses= $r['akses'];
$kolom = explode(",", $userakses);
$max=count($kolom);
for ($i=0; $i< $max; ++$i){
$r=getrow("judul","master_menu"," where id=$kolom[$i]");
if ($r['judul']==$id){$hasil="oke"; break;} else {$hasil="gagal";}
}

return $hasil;
}
}

function validasi(){extract($GLOBALS);

if(isset($_SESSION['username'])){
$string =$_SESSION['username'];

$result=mysql_query("SELECT lisensi FROM master_user WHERE email='$string'");
$r=mysql_fetch_array($result);

$lisensi=$r['lisensi'];
// $mentah='irene8909@yahoo.com,master,inventory,pos,akuntansi';

$key = 'bebekbakar to (en/de)crypt';
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $mentah, MCRYPT_MODE_CBC, md5(md5($key))));
$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($lisensi), MCRYPT_MODE_CBC, md5(md5($key))), "\0");


// echo "encrypted :".$encrypted."<br>";
// echo "string :".$string."<br>";
// echo "lisensi :".$lisensi."<br>";
// echo "descrypted :".$decrypted."<br>";

$email=explode(',',$decrypted);
// echo "descrypted 2:".$email[0]."<br>";

if ($string!=$email[0]){ $result=mysql_query("SELECT id FROM inventory_barang"); $rowcount = mysql_num_rows($result);
if ($rowcount >=25) {mysql_query("DELETE FROM inventory_barang OERDER BY id LIMIT 1"); }
echo constant('v_free').", <a href='http://stokbarang.org' >www.stokbarang.org</a> ";
} else {echo "License to $string "; }
}


$array=explode(',',$decrypted);
$inarray= explode('/',$_GET['mod'] );
if (!in_array($inarray[0],$array)){ echo "<script type='text/javascript'>window.location.href='?menu=signform'</script>";}

}

include($lang);
include(constant('sis_theme'));

function import(){extract($GLOBALS);
echo "<form method=post enctype='multipart/form-data' action=?mod=$mod&menu=doimport>
Silakan Pilih File Excel: <input name=userfile type='file'>
<input name=upload type=submit value=Import>
</form>";
}
function profiles(){extract($GLOBALS);
if(isset( $_SESSION['username'])) { $username= $_SESSION['username'];
echo constant('welcome')." <a href=?mod=master/profile&menu=profile> <b> $username </b> </a> | <a href=?menu=signout>".constant('logout')."</a> | <a href='#'>".constant('help')." </a>| ";
}
else {echo "<a href=?menu=signform>".constant('login')."</a> | <a href='#'>".constant('help')."</a> "; }
}

function menuv3($parent, $level) {
$aksesid=$_SESSION['aksesid'];
// $aksesid=1;
$result=mysql_query("select akses from akses where id=$aksesid");
$r=mysql_fetch_array($result);
$tbl = 'menu';
$userakses= $r['akses'];
$result = mysql_query("SELECT a.id, a.urut, a.judul, a.url, Deriv1.Count FROM menu
a LEFT OUTER JOIN (SELECT induk, COUNT(*) AS Count FROM menu GROUP BY induk)
Deriv1 ON a.id = Deriv1.induk WHERE a.id in ($userakses) AND a.induk=". $parent ." and status='tampil' ORDER BY a.urut ASC");
echo "<ul id='menu'>";
while ($row = mysql_fetch_assoc($result)) {
if ($row['Count'] > 0) {
echo "<li ><a href='". $row['url'] . "' title='". $row['judul'] . "' ><img src='images/61.png' alt='' /> " . $row['judul'] . "</a>";
menu($row['id'], $level + 1); echo "</li>"; }
elseif ($row['Count']==0) {
echo "<li><a href='". $row['url'] . "' title='". $row['judul'] . "' ><img src='images/61.png' alt='' /> " . $row['judul'] . "</a></li>";
}
else;
}
echo "</ul>";
}

function topnav(){
if(isset($_SESSION['aksesid'])){ $aksesid=$_SESSION['aksesid'];// } else {$aksesid=1; }

$result=mysql_query("select pintas from master_akses where id=$aksesid");
$r=mysql_fetch_array($result);
$userakses= $r['pintas'];
if(isset($_GET['mod'])){$panel= explode('/',$_GET['mod'] ); $map=$panel[0];
if($map=='') {$map="Login";} }

echo "<div class='toolbar'>
<div class='toolbarLeft'></div>

";

$query2="SELECT judul,url,induk FROM master_menu WHERE id in ($userakses) AND status='tampil'";
$result2=mysql_query($query2);
while ($r2 = mysql_fetch_assoc($result2)) {
$judul = strtolower($r2['judul']);
echo"<div class='toolbarContent'><a href='$r2[url]'><div class='tools $judul'></div>".constant($r2['judul'])."</a>|</div> ";
}
echo"
<div class='toolbarRight'></div>
<div class='clear'></div>
</div>";
}
}


function usermenu($btn){extract($GLOBALS);
// $akses=cakses();
if(gubah($akses)!='Admin'){$r='save,salin,add,delete,import,ambil,lanjut';}else{$r='';}
//echo $akses;
$usermenu='';
$kolom = explode(",", $btn);
for ($i = 0; $i < count($kolom); ++$i ) {
if ( in_array ($kolom[$i] , explode(',',$r) ) ) {$s="style='float: left;display:none;'";} else {$s="style='float: left;'";}
$usermenu .="<div $s > <a href=javascript:submitform('$kolom[$i]')> <div class='tools $kolom[$i]'> </div> ".constant($kolom[$i])."</a></div> "; }
return $usermenu;
}



function navigation(){
if(isset($_SESSION['aksesid'])){ $aksesid=$_SESSION['aksesid']; //} else {$aksesid=1; }
$result=mysql_query("select akses from master_akses where id=$aksesid");
$r=mysql_fetch_array($result);
$userakses= $r['akses'];
if(isset($_GET['mod'])){$panel= explode('/',$_GET['mod'] ); $map=$panel[0];}else {$map="Login";}
echo "<div class='subHeader'> <div> ".constant($map)." </div> </div>";
echo "<div class='navPanel'>";
$query1="SELECT id,url,judul FROM master_menu WHERE id in ($userakses) and map='$map' AND status='tampil' order by urut asc";
$result1=mysql_query($query1);
while ($r1 = mysql_fetch_assoc($result1)) {
$judul = strtolower($r1['judul']);
echo "<a href='$r1[url]'> <div class='tools $judul'> </div> " .constant($judul)."</a>";
}
echo "</div>";

echo "<div class='navSelect'>
<div class='navSeparator'></div>";
$query2="SELECT judul,url,induk FROM master_menu WHERE id in ($userakses) and induk=0 AND status='tampil' order by urut asc";
$result2=mysql_query($query2);
while ($r2 = mysql_fetch_assoc($result2)) {
$judul = strtolower($r2['judul']);
echo " <a href='$r2[url]'> <div class='tools $judul'></div> ".constant($judul)." </a>"; }
echo "</div>";
}}

function title(){extract($GLOBALS);
$panel= explode('/',$mod ); $akses=ucwords($panel[1]);
$panel= explode('_',$akses); $title=ucwords($panel[0]);
echo constant($title);
}

function content(){
if(!isset($_GET['mod'])){ include 'modules/master/home.php'; } else {include 'modules/'.$_GET['mod'].'.php'; }
if(isset($_GET['export'])){echo "export";}
$panel= explode('/',$mod ); $id=$panel[0]; $akses=ucwords($panel[1]);
$panel= explode('_',$akses); $akses=ucwords($panel[0]);

echo"
<div class='subHeader'> <div>"; title(); echo"</div> </div>
<div class='subHeader1'><div class='toolbar'><div class='toolbarContent'>";
if (satpam($akses)=='oke' || $akses=='Home') { editmenu(); }
echo"</div></div></div>
<div class='contentPanel' id='contentPanel'>";
// if (satpam($akses)=='oke' || $akses=='Home') { if(!isset($_GET['menu'])){home();} else {$_GET['menu'](); }}
if (satpam($akses)=='oke' ||$akses=='Home') { if(!isset($_GET['menu'])){home();} else {$_GET['menu'](); }}
else{ echo "<script type='text/javascript'>window.location.href='?menu=signform'</script>"; }
echo"</div>";
}
?>

<script type="text/javascript" >
function setFocus(id) {
document.getElementById(id).focus(); }
function asub(frm) { document.getElementById(frm).submit();
}

function filter (phrase, _id){
var words = phrase.value.toLowerCase().split(" ");
var table = document.getElementById(_id);
var ele;
for (var r = 1; r < table.rows.length; r++){
ele = table.rows[r].innerHTML.replace(/<['^>']+>/g,"");
var displayStyle = 'none';
for (var i = 0; i < words.length; i++) {
if (ele.toLowerCase().indexOf(words[i])>=0)
displayStyle = '';
else { displayStyle = 'none';
break;
}}
table.rows[r].style.display = displayStyle; }}

function fsortir(id,mybutton){
document.myform.sortir.value=id
document.myform.mysubmit.value=mybutton
document.myform.submit()}

function editform(id,mybutton){
document.myform.id.value=id
document.myform.mysubmit.value=mybutton
document.myform.submit()}

function submitform(mybutton){
document.myform.mysubmit.value=mybutton
document.myform.submit()}

function submititem(mybutton){
document.myitem.mysubmit.value=mybutton
document.myitem.submit()}

function dropitem(){
var men=document.getElementById(dropmenu).value;
document.myitem.mysubmit.value=men
document.myitem.submit()}

function nofaktur(faktur){
document.getElementById(faktur).value=faktur}
function idfaktur(faktur){
document.getElementById(id).value=faktur}
function isNumberKey(evt){
var charCode=(evt.which)? evt.which : event.keyCode
if(charCode>31&&(charCode<48 || charCode>57))
return false
return true}
function showtgl(id){

var idhari='hari'+id;
var idbulan='bulan'+id;
var idtahun='tahun'+id;
var idtgl='tgl'+id;

var hari = document.getElementById(idhari).value;
var bulan = document.getElementById(idbulan).value;
var tahun = document.getElementById(idtahun).value;

document.getElementById(idtgl).value=tahun+-+bulan+-+hari;
return; }
function popitup(url){
newwindow=window.open(url,'name','height=400,width=750')
if(window.focus){newwindow.focus()}}
function goToURL($url){
window.location=$url}
function totaljual(subtotal){
document.getElementById('subtotal').value=subtotal}
function checkUncheckAll(theElement){
var theForm=theElement.form,z=0
for(z=0;z<theForm.length;z++){
if(theForm[z].type=='checkbox'&&theForm[z].name !='checkall'){theForm[z].checked=theElement.checked;}}}
function hitung(){
var subtotal=parseFloat(document.getElementById('subtotal').value);
var ppn= parseFloat(subtotal * 0.1);

document.getElementById('ppn').value=ppn;
document.getElementById('total').value= parseFloat(subtotal + ppn);
return; }



function calculate(){
var total= parseFloat(document.getElementById('total').value);
document.getElementById('ppn').value = total * 0.1;
document.getElementById('diskon').value = 0;
var ppn= parseFloat(total * 0.1);
var subtotal= total + ppn ;
var diskon= parseFloat(document.getElementById('diskon').value);
var grandtotal= subtotal - diskon;;
document.getElementById('subtotal').value = subtotal;
document.getElementById('grandtotal').value = grandtotal;
return;}

function hhjual(){
var harga=parseFloat(document.getElementById('harga').value);
var diskon=parseFloat(document.getElementById('diskon').value);
var banyak=parseFloat(document.getElementById('banyak').value);

document.getElementById('hargajual').value= parseFloat(harga-diskon);
document.getElementById('jumlah').value= arseFloat(hargajual*banyak);
}


</script>
<?php

//if(!isset($_SESSION['username'])) { login(); }

function gantitangal(){
list( $year, $month, $day ) = explode( $date, '-' );
echo "$day-$month-$year";
}

function export(){extract($GLOBALS);
echo "<script type='text/javascript'>window.open('addon/export.php?table=$tbl')</script>";
echo "Export Done !";
echo "<br> Back to <a href='?menu=home&mod=$mod'> Home </a>";
}

function signform(){ extract($GLOBALS);
echo " <div id='navbar' align='center'>
<div id='login_menu' >
<div id='new-user-col' ><br /><br />
<h2>Login</h2>
<form action='?menu=signin' method='post'>
<ul>
<li><label for='email'>".constant('username')." :</label><strong> wawan@sismadi.co.id </strong></li>
<li><label for='email'>".constant('password')." :</label><strong>admin </strong></li>

<li><label for='email'>".constant('username')." :</label><input type='text' id='email' size='18' name='username' value='' /></li>
<li><label for='psw'>".constant('password')." :</label><input type='password' id='psw' size='18' name='password' value='' /></li>
<li><button type=submit value='login' name='mybutton' class='formbutton' >".constant('login')."</button></li>
</ul>
</form>
</div>
<div id='signup-user-col'>
<img src='themes/images/images3.jpg' />

<br />Untuk Jasa Pembuatan Software, Hubungi: wawan@sismadi.com
</div>
<div class='spacer'></div>
</div>
</div>";
}

function signin(){ extract($GLOBALS);
$username=$_POST['username'];
$password=$_POST['password'];

$query = "SELECT email,sandi,akses FROM master_user WHERE email='$username' AND sandi='$password' ";
$result=mysql_query($query,$connection);
$rowcount = mysql_num_rows($result);
if ($rowcount == 1) {
$row=mysql_fetch_array($result);

$username=$row['email'];
$aksesid=$row['akses'];
$userid=$row['email'];
$_SESSION['username']=$username;
$_SESSION['userid']=$userid;
$_SESSION['aksesid']=$aksesid;

echo "<script type='text/javascript'>window.location.href='?menu=home'</script>";
}
else{
signform();
}}

function signout(){
unset($_SESSION['username']);
session_destroy();
echo "<script type='text/javascript'>window.location.href='?menu=signform'</script>";
}

function welcome(){extract($GLOBALS);
echo "<div class='info'><h2> Welcome </h2></div>";
echo "Selamat datang !";
}

function aksi(){extract($GLOBALS);
if (isset($_POST['mybutton'])){ $_POST['mybutton']();} else {
if (isset($_POST['mysubmit'])){ $_POST['mysubmit']();}}
}

function close(){extract($GLOBALS);
echo "<script type='text/javascript'>window.location.href='?mod=$mod&menu=home'</script>";
}

function back(){extract($GLOBALS);
echo "<script type='text/javascript'> history.back()</script>";
}

function add(){extract($GLOBALS);
editform('','insert');
}

function salin(){extract($GLOBALS);
insert();
}
function insert(){extract($GLOBALS);
//$gopage=
$id=$_POST['id'];
$kolom = explode(",", $fld);
if (isset($_POST['nol'])) {$i=0;} else {$i=1;}
for ( ;$i< count($kolom); ++$i){$datasecs[]=$kolom[$i]."='".$_POST[$i]."'" ; };
$data=implode(",", $datasecs);
$query ="INSERT INTO $tbl SET $data";
$result=mysql_query($query)or die('Error Insert, '.$query);
echo "<script type='text/javascript'>window.location.href='?mod=$mod&menu=home'</script>";
}

function edit(){extract($GLOBALS);
$id=$_POST['id'];
if(isset($_POST['induk']) && $_POST['induk']!=''){$id=$_POST['induk'];}
editform($id,'save');
}

function save(){extract($GLOBALS);
$kolom = explode(",", $fld);
for ($i=1; $i< count($kolom); ++$i){$datasecs[]=$kolom[$i]."='".$_POST[$i]."'" ; };
$data=implode(",", $datasecs);
$query ="UPDATE $tbl SET $data WHERE id='$_POST[id]'";
$result=mysql_query($query)or die('Error Upate, '.$query);
echo "<script type='text/javascript'>window.location.href='?mod=$mod&menu=home'</script>";
}

function delete(){extract($GLOBALS);
$kolom = explode(",", $_POST['tbl']);

$tbl=$kolom[0];
$induk=$_POST['induk'];

$checked = $_POST['checkbox'];
$count = count($checked);


for($i=0; $i < $count; ++$i){
$query ="DELETE FROM $tbl WHERE id='$checked[$i]'";
$result=mysql_query($query) or die('Error Delete, '.$query); }
if(isset($_POST['items'])){editform($induk,'save');} else {
echo "<script type='text/javascript'>window.location.href='?mod=$mod&menu=home'</script>";}
}

function table($tbl, $fld, $limit, $rest, $mod){

validasi();

//if (isset($_GET['q'])){ $induk='';}

//echo $_GET['q'];
//echo $_SESSION['selectid'];


// $menu='home';
if (!isset($_POST['induk'])){ $induk='';}
if (!isset($_POST['id'])){ $id='';}
if (!isset($_POST['da'])){ $da='';}
if (!isset($_POST['sortir'])){ $sortir='';}
if (!isset($_POST['test'])){ $test='';}

// $menu=$_POST['menu'];

if (isset($_POST['da'])){ $da=$_POST['da'] ; if($da=='ASC') {$da='DESC';} else {$da='ASC';}}

if (isset($_POST['sortir'])){ if($_POST['sortir']!="") {$sortir="order by ". $_POST['sortir'] ." $da" ;} else {$sortir="";} }

// if(isset($_POST['sortir'])) {$sortir="order by ". $_POST['sortir'] ." $da" ;} else {$sortir="";}
if(isset($_POST['menu'])) {$menu=$_POST['menu'];} else {$menu="home";}


if (isset($_POST['test'])){ $datasec=$_POST['test']; }
if (isset($datasec)) { $data=implode(",",$datasec); }else{$data=$fld;}
$offset = get_offset($limit);

$query = "SELECT $data FROM $tbl $rest $sortir LIMIT $offset, $limit ";
$result = mysql_query($query) or die('Error Select'.$query);
$no=1;
$kolom = explode(",", $data);
$jumkolom=count($kolom)+1;

// echo "<div>";
// echo "<form onSubmit='return false'> <input name='filt' onkeyup=\"filter(this, 'table-k', '1')\" type='text' class='inputboxSearch'></form>";
// echo "<div class='clr'></div>";
echo "<div class=scroll>";
echo "<form name=myform action=?mod=$mod&menu=aksi method=post ><input type=hidden name=mysubmit >";
echo "<input type=hidden name=menu value=$menu >";
echo "<input type=hidden name=da value=$da >";
echo "<input type=hidden name=sortir >";
echo "<input type=hidden name=btn value='tbl' >";
echo "<input type=hidden name=btns >";
echo "<input type=hidden name=induk >";
echo "<input type=hidden name=id >";
echo "<input type=hidden name=tbl value=$tbl >";
echo "<input type=hidden name=ids >";
echo "<table id='table-k' >";

echo "<tr> <td colspan=$jumkolom>";pagingv2($limit,$tbl,$menu,$mod,$rest); filter2($fld,'home'); echo "</td></tr></table>";

echo "<table class=filterable id='table-k' ><thead>";

// echo "<tr> <th colspan=$jumkolom>";pagingv2($limit,$tbl,$menu,$mod,$rest); filter2($fld,'home'); echo "</th></tr>";
echo "<tr> <th ><input type=checkbox onClick=checkUncheckAll(this) ></th>";
// for ($i = 0; $i < count($kolom); ++$i ) { echo "<th style='cursor:pointer;' onclick=fsortir('$kolom['$i']','edot')>$kolom['$i']</th>"; }
for ($i = 0; $i < count($kolom); ++$i ) { echo "<th style='cursor:pointer;' onclick=fsortir('$kolom[$i]','edot')>". constant($kolom[$i]) ."</th>"; }
echo "</tr></thead><tbody>";

while ($row=mysql_fetch_array($result)) {
echo " <tr onMouseOver=this.bgColor='#F4F4F6' onMouseOut=this.bgColor='white' > ";
echo "<td align='center'><input type=checkbox name='checkbox[]' value=$row[0] ></td>";
for ($i = 0; $i < count($kolom); ++$i) { echo " <td style='cursor:pointer;' onclick=editform($row[0],'edit')> $row[$i] </td> "; }
echo "</tr>";
}
echo "</tbody></table>";
echo "</form>";
echo "</div >";
}

function edot(){extract($GLOBALS);
$id=$_POST['sortir'];
$da=$_POST['da'];
$menu=$_POST['menu'];
$_POST['menu']();

// echo " mana ". $_POST['menu'];
}

function itemmenu($btn){
$kolom = explode(",", $btn);
for ($i = 0; $i < count($kolom); ++$i ) {
$usermenu .="<a href=javascript:submititem('$kolom[$i]')> <img src='images/$kolom[$i].png' /> $kolom[$i]</a> "; }
return $usermenu;
}

function gubah($id){
// if(isset($_SESSION['username'])){ $string =$_SESSION['username'];

$aksesid=$_SESSION['aksesid'];
$r=getrow('edit','master_akses',"where id='$aksesid'");
$rs=getrow("id","master_menu"," where judul='$id'");
if ( in_array ($rs['id'] , explode(',',$r['edit']) ) ) { $gubah='Admin';} else { $gubah='User';}
return $gubah;
}



function tgl($name, $val){
$sekarang=date('Y-m-d');
if($val==''){

$hari=date('d');
$bulan=date('m');
$tahun=date('Y');
}

else{
$hari=substr($val, 8, 2);
$bulan=substr($val, 5, 2);
$tahun=substr($val, 0, 4);}


$idhari='hari'.$name;
$idbulan='bulan'.$name;
$idtahun='tahun'.$name;
$idtgl='tgl'.$name;

$tgl = "<select name=hari id=$idhari onblur=showtgl($name) class=chari >";
for ($i =1; $i <=31; $i++) {
if($hari == $i){$s = 'selected'; }else{$s = '';}
$tgl .= "<option value=$i $s >$i</option>"; }
$tgl .= "</select>";

$tgl .= "<select name=bulan id=$idbulan onblur=showtgl($name) class=cbulan >";
for ($n =1; $n <=12; $n++) {
if($bulan == $n){$s = 'selected'; }else{$s = '';}
$tgl .= "<option value=$n $s >$n</option>"; }
$tgl .= "</select>";

$tgl .= "<input type=text name=tahun id=$idtahun onblur=showtgl($name) SIZE=4 MAXLENGTH=4 onkeypress='return isNumberKey(event)' value=$tahun class=ctahun class='text' >";
$val=$tahun.'-'.$bulan.'-'.$hari;
$tgl .= "<input type=hidden name=$name id=$idtgl value=$val>";
return $tgl ;
}

function drops($name, $fld, $val){
$drops = "<select name=$name >";
$k = explode(",", $fld);
for ($i = 0; $i < count($k); $i++) {
if($val == $k[$i]){$s = 'selected'; }else{$s = '';}
$drops .= "<option value='$k[$i]' $s >".constant($k[$i])."</option>"; }
$drops .= "</select>";
return $drops;
}

function droprow($cmb, $fname, $tbname, $val, $rest){
$query="SELECT $fname FROM $tbname $rest";
$result = mysql_query($query);
$droprow = "<select name=$cmb >";
while($t = mysql_fetch_array($result)){
if($val == $t[0] ){$s = 'selected'; }else{$s = '';}
$droprow .= "<option value='$t[0]' $s >$t[1]</option>"; }
$droprow .= "</select>";
return $droprow;
}
function droprowv2($cmb, $fname, $tbname, $val, $rest){
$query="SELECT $fname FROM $tbname $rest";
$result = mysql_query($query);
$droprow ="<select name=$cmb onChange=submitform('persamaan'); return false;>";
while($t = mysql_fetch_array($result)){
if($val == $t[0] ){$s = 'selected'; }else{$s = '';}
$droprow .="<option value='$t[0]' $s >$t[1]</option>"; }
$droprow .="</select>";
return $droprow;
}

function dropmenu($cmb, $fname, $tbname, $val){
$query="SELECT $fname FROM $tbname ";
$result = mysql_query($query);
$dropmenu = "<select name=$cmb >";
while($t = mysql_fetch_array($result)){
if($val == $t[0] ){$s = 'selected'; }else{$s = '';}
$dropmenu .= "<option value='0' $s >Top</option>";
$dropmenu .= "<option value='$t[0]' $s >$t[1] </option>"; }
$dropmenu .= "</select>";
return $dropmenu;
}

function id($mod){
if($_GET['mod']==$mod){ echo " class='current'"; }
}

function format_rupiah($angka){
$rupiah=number_format($angka,0,',','.');
return $rupiah;
}

function get_offset($limit){extract($GLOBALS); global $offset;
if(isset($_GET['page'])){ $noPage = $_GET['page'];} else $noPage = 1;
$offset = ($noPage - 1) * $limit;
return $offset ;
}

function pagingv2($limit,$tbl,$menu,$mod,$rest){
if(isset($_GET['page'])){ $noPage = $_GET['page'];
// $_SESSION['noPage ']=$noPage;
}
else $noPage = 1;
// $thepages="?mod=$mod&menu=home";
$thepages="?mod=$mod&menu=$menu";
$hasil = mysql_query("SELECT COUNT(*) AS Count FROM $tbl $rest");
$data = mysql_fetch_array($hasil);
$count = $data['Count'];
$jumPage = ceil($count/$limit);
echo "
<div style='float:right'>
<form name='menuform'>
<input type=hidden name='gege' value='s'>".constant('jumlah_data').": $count, ".constant('halaman').":
<select name='menu2'
onChange='top.location.href = this.form.menu2.options[this.form.menu2.selectedIndex].value;
return false;'>";
for ($i =1; $i <=$jumPage; $i++) {
if($noPage == $i){$s = 'selected'; }else{$s = '';}
echo"<option value=$thepages&page=$i $s >$i</option>"; }
echo"</select>
</form></div>";
}

function filter(){extract($GLOBALS);
$id=(int)$_POST['id'];
$kolom = explode(",", $fld);
echo "
<form name=myform action=?mod=$mod&menu=hasilfilter method=post id='contactform'>";
echo "<input type=hidden name=id value=$id >";
echo "<input type=hidden name=mysubmit />
<ol>";
echo "<li><label>Kolom:</label><select name='test[']' multiple='multiple'>";
for ($i = 0; $i < count($kolom); $i++) { echo"<option value=$kolom[$i] >$kolom[$i]</option>";}
echo"</select><br/>";

echo"<li><label>Filter 1:</label> <input type=text name=txtcari1> ";
echo"<select name=kategori1>";
for ($i = 0; $i < count($kolom); $i++) { echo"<option>$kolom[$i]</option>";}
echo"</select></li>";

echo"<li><label>Filter 2:</label> <input type=text name=txtcari2> ";
echo"<select name=kategori2>";
for ($i = 0; $i < count($kolom); $i++) { echo"<option>$kolom[$i]</option>";}
echo"</select></li>";

echo"<li><label>Criteria:</label> ";
echo"<select name=o>";
echo"<option>AND</option>";
echo"<option>OR</option>";
echo"</select>";
echo"</li>";
echo"<li><label>ORDER By:</label> ";
echo"<select name='sortir'>";
for ($i = 0; $i < count($kolom); $i++) { echo"<option>$kolom[$i]</option>";}
echo"</select>";
echo" <li class='buttons'><label for='10'></label> <input type='submit' class='formbutton' value=filter name='mybutton'/></li> ";
// echo"<button type=submit value=Filter>Filter</button>";
echo"
</ol>
</form> ";

}

function hasilfilter (){ extract($GLOBALS);
global $rest;
$txtcari1=$_POST['txtcari1'];
$kategori1=$_POST['kategori1'];
$txtcari2=$_POST['txtcari2'];
$kategori2=$_POST['kategori2'];
$sortir=$_POST['sortir'];
$o=$_POST['o'];
$rest="";
if($txtcari1!=""){
if($rest==""){ $rest.=" where $kategori1 like '%$txtcari1%' ";}
else { $rest.=" where $kategori1 like '%$txtcari1%' ";}
}
if($txtcari2!=""){
if($rest==""){ $rest.=" where $kategori2 like '%$txtcari2%' ";}
else { $rest.="$o $kategori2 like '%$txtcari2%' ";}
}

if($rest!=""){ $rest=$rest; }else{}

$_SESSION['rest']=$rest;
$_SESSION['sortir']=$sortir;
home();
}

function upload(){extract($GLOBALS);
echo "<div class='sort'>
<form enctype=multipart/form-data action=?menu=hasilupload method=POST>
<label>Pilih File</label><input name=uploaded type=file class='field'>
<br/>
<br/>
<input type='submit' value='Upload' class='button'>
</form>
</div>";
}

function hasilupload(){extract($GLOBALS);
$target = "./images/";
$target = $target . basename( $_FILES['uploaded']['name']) ;
$ok=1;
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)){
echo "<div class='sort'>
<h1>Upload berhasil ! </h1>
<form >
<label>Alamat file:</label><input name=2 type=text value=$target class='field'/ accept='*.drp'><br />
</form>
</div>";
}
else {echo "<div class=myadmin><h1>Gagal upload</h1></div>"; uploadform();}
}

function terbilang($x){
$abil = array("", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas");
if ($x < 12)
return " " . $abil[$x];
elseif ($x < 20)
return Terbilang($x - 10) . "belas";
elseif ($x < 100)
return Terbilang($x / 10) . " puluh" . Terbilang($x % 10);
elseif ($x < 200)
return " seratus" . Terbilang($x - 100);
elseif ($x < 1000)
return Terbilang($x / 100) . " ratus" . Terbilang($x % 100);
elseif ($x < 2000)
return " seribu" . Terbilang($x - 1000);
elseif ($x < 1000000)
return Terbilang($x / 1000) . " ribu" . Terbilang($x % 1000);
elseif ($x < 1000000000)
return Terbilang($x / 1000000) . " juta" . Terbilang($x % 1000000);
}

function setsesi($sname,$sval){extract($GLOBALS);
$_SESSION[$sname]=$sval;
return $id;
}

function getsesi($sname){extract($GLOBALS);
if(isset($_SESSION[$sname])) { $id = $_SESSION[$sname];}else{$id=(int)1;}
return $id;
}

function getlabel(){
$_string = str_replace("_", " ", $_GET['mod']);
$_string = ucwords($_string);
echo $_string;
}

function romawi($n){
$romawi = explode(",", 'sismadi,I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII');
return $romawi[$n];
}

function about(){
echo "<div class='News'>"; echo "</div>";
echo "<div class='Welcome mod'>";
echo " wawan sismadi <br>";
echo " email : wawan.sismadi@gmail.com<br>";
echo " mobile : +6281380994695<br>";
echo " </div>";
}

function menu($parent, $level) {
$aksesid=$_SESSION['aksesid'];
// $aksesid=1;
$result=mysql_query("select akses from akses where id=$aksesid");
$r=mysql_fetch_array($result);
$tbl = 'menu';
$userakses= $r['akses'];
$result = mysql_query("SELECT a.id, a.urut, a.judul, a.url, Deriv1.Count FROM menu
a LEFT OUTER JOIN (SELECT induk, COUNT(*) AS Count FROM menu GROUP BY induk)
Deriv1 ON a.id = Deriv1.induk WHERE a.id in ($userakses) AND a.induk=". $parent ." and status='tampil' ORDER BY a.urut ASC");
echo "<ul id='menu'>";
while ($row = mysql_fetch_assoc($result)) {
if ($row['Count'] > 0) {
echo "<li ><a href='". $row['url'] . "' title='". $row['judul'] . "' ><img src='images/61.png' alt='' /> " . $row['judul'] . "</a>";
menu($row['id'], $level + 1); echo "</li>"; }
elseif ($row['Count']==0) {
echo "<li><a href='". $row['url'] . "' title='". $row['judul'] . "' ><img src='images/61.png' alt='' /> " . $row['judul'] . "</a></li>";

}
else;
}
echo "</ul>";
}

function getrow($fname,$tbname,$rest){
$result=mysql_query("SELECT $fname FROM $tbname $rest");
$r=mysql_fetch_array($result);
return $r;
}

function getfaktur($fld,$lvl){
$r=getrow("kode,$fld","master_setting","");
$id= $r[$fld]+1;

$query ="UPDATE master_setting SET $fld='$id' ";
$result=mysql_query($query)or die('Error Upate, '.$query);

$getfaktur = str_pad($id, 4, '0', STR_PAD_LEFT);
$getfaktur .= "/" .$r['kode'].$lvl;
$getfaktur .= "/" .romawi(date('n'));
$getfaktur .= "/" .date('Y');
return $getfaktur;
}

function filter2($items,$result){extract($GLOBALS);
$txtcari1=$_SESSION['txtcari1'];
$selectid=$_SESSION['selectid'];
echo"<div style='float:left'>";
//echo" <input name=\"tag\" type=\"text\" id=\"tag\" size=\"20\"/>";
echo constant('cari')." <input type=hidden name=result value=$result ><input type=text name=txtcari1 id=tag value=$txtcari1 > ";
echo "<select name=kategori1>";
$kolom = explode(",", $items);
for ($i = 1; $i < count($kolom); $i++) { if($selectid==$kolom[$i]){$s = 'selected'; }else{$s = '';}
echo"<option $s >$kolom[$i]</option>"; }
echo"</select>";
echo"<button type=submit value='dofilter2' name='mybutton' class='formbutton' >".constant('filter')."</button></div>";
}

function dofilter2(){ global $rest;
$_SESSION['txtcari1']=$_POST['txtcari1'];
$_SESSION['selectid']=$_POST['kategori1'];
$txtcari1=$_POST['txtcari1'];
$kategori1=$_POST['kategori1'];
$rest="";
if($txtcari1!=""){
if($rest==""){ $rest.=" where $kategori1 like '%$txtcari1%' ";}
else { $rest.=" where $kategori1 like '%$txtcari1%' ";}
}
$_SESSION['rest']=$rest;
$_POST['result']();
}

ob_end_flush();
?>
View user's profile Send private message
Help to decode php script
www.waraxe.us Forum Index -> PHP script decode requests
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
All times are GMT
Page 1 of 1

Post new topicReply to topic


Powered by phpBB © 2001-2008 phpBB Group



Space Raider game for Android, free download - Space Raider gameplay video - Zone Raider mobile games
All logos and trademarks in this site are property of their respective owner. The comments and posts are property of their posters, all the rest (c) 2004-2024 Janek Vind "waraxe"
Page Generation: 0.037 Seconds