diff --git a/CISTOOLS/Functions/GET_MXAPLUS_PASSWORD.sql b/CISTOOLS/Functions/GET_MXAPLUS_PASSWORD.sql
index b5104aa..3e618a2 100644
--- a/CISTOOLS/Functions/GET_MXAPLUS_PASSWORD.sql
+++ b/CISTOOLS/Functions/GET_MXAPLUS_PASSWORD.sql
@@ -1 +1,76 @@
-âÅã@×ÁãÈ@\ÓÉÂÓ@^@
%
%ÃÙÅÁãÅ@ÖÙ@ÙÅ×ÓÁÃÅ@ÆäÕÃãÉÖÕ@ÃÉâãÖÖÓâKÇÅãmÔçÁ×Óäâm×ÁââæÖÙÄ@M@]@
%ÙÅãäÙÕâ@ÃÈÁÙMñð]@@@
%ÓÁÕÇäÁÇÅ@âØÓ@
%â×ÅÃÉÆÉÃ@ÃÉâãÖÖÓâKÇÅãmÔçÁ×Óäâm×ÁââæÖÙÄ@
%ÕÖã@ÄÅãÅÙÔÉÕÉâãÉÃ@
%ÔÖÄÉÆÉÅâ@âØÓ@ÄÁãÁ@
%ÃÁÓÓÅÄ@ÖÕ@ÕäÓÓ@ÉÕ×äã@
%âÅã@Ö×ãÉÖÕ@@ÁÓæÂÓÒ@~@\ÁÓÓÙÅÁÄ@k@
%ÁÓæÃ×èÄãÁ@~@\Ö×ãÉÔÉéÅ@k@
%ÃÖÔÔÉã@~@\ÕÖÕÅ@k@
%ÄÅÃÙÅâäÓã@~@Móñk@óñk@ðð]@k@
%ÄèÕÄÆãÃÖÓ@~@\ÕÖ@k@
%ÄèÕäâÙ×ÙÆ@~@\äâÅÙ@k@
%âÙãâÅØ@~@\ÈÅç@@@
%ÂÅÇÉÕ@
%ÄÅÃÓÁÙÅ@ÅÕÃÙè×ãÅÄm×ÁââæÖÙÄ@ÃÈÁÙ@M@òð@]@ÄÅÆÁäÓã@}}@^@
%ÄÅÃÓÁÙÅ@ÄÅÃÙè×ãÅÄm×ÁââæÖÙÄ@ÃÈÁÙ@M@òð@]@ÄÅÆÁäÓã@}}@^@
%ÄÅÃÓÁÙÅ@ÉÕÄÅçmÁÙÙÁè@ÉÕãÅÇÅÙ@^@
%ÄÅÃÓÁÙÅ@ÉÕÄÅçm×ÖâÉãÉÖÕ@ÉÕãÅÇÅÙ@^@
%ÄÅÃÓÁÙÅ@åÁÓÉÄÁãÉÖÕmãÖÒÅÕ@ÃÈÁÙ@M@ñö@]@ÄÅÆÁäÓã@}ÙÒòÇâÂåóÆÁåùÕõõâ}@^@@``É•†–™}¢@¥�“``‰„�£‰–•@£–’…•k@–¤£@‰•@—“�‰•@¢‰‡ˆ£KKk@†™–”@£ˆ…‰™@¢–¤™ƒ…@
%``@Ù…‡‰¢£…™@âØÓ@¥…™¢‰–•@–†@£™�„‰£‰–•�“@Ù×Ç@—™–‡™�”@‰•@ØãÅÔ×@
%ÃÙÅÁãÅ@ÖÙ@ÙÅ×ÓÁÃÅ@×ÙÖÃÅÄäÙÅ@ØãÅÔ×@K@ÁçéÃâäðÙ@M@ÉÕ@ÁâÅã@ÃÈÁÙ@M@ñð@]@k@ÉÕ@åÓÄÄ@ÃÈÁÙ@M@ñö@]@k@ÉÕ@âÃÙÄ@ÃÈÁÙ@M@ñ@]@k@ÉÕÖäã@×Ù×æ@ÃÈÁÙ@M@òð@]@k@
%ÉÕÖäã@âÅãÄ@ÃÈÁÙ@M@ôð@]@ÄÅÆÁäÓã@}}@k@ÉÕÖäã@ÙãÙÕ@ÃÈÁÙ@M@÷@]@ÄÅÆÁäÓã@}}@]@
%ÓÁÕÇäÁÇÅ@Ù×ÇÓÅ@
%ÅçãÅÙÕÁÓ@ÕÁÔÅ@ÁÔÃÅâÓÉÂ@a@ÁçéÃâäðÙ@
%×ÁÙÁÔÅãÅÙ@âãèÓÅ@ÇÅÕÅÙÁÓ@^@
%ÃÁÓÓ@ØãÅÔ×@K@ÁçéÃâäðÙ@M@}ÔçÁ×Óäâ}@k@åÁÓÉÄÁãÉÖÕmãÖÒÅÕ@k@}ñ}@k@ÅÕÃÙè×ãÅÄm×ÁââæÖÙÄ]@^@
%``@Ä…ƒ™¨—£@£ˆ…@—�¢¢¦–™„@
%âÅã@ÉÕÄÅçmÁÙÙÁè@~@ñ@^@
%æÈÉÓÅ@ÉÕÄÅçmÁÙÙÁè@L~@òð@ÄÖ@
%âÅã@ÉÕÄÅçm×ÖâÉãÉÖÕ@~@
%ÃÁâÅ@ÉÕÄÅçmÁÙÙÁè@
%æÈÅÕ@ñ@ãÈÅÕ@ô@
%æÈÅÕ@ò@ãÈÅÕ@ñ÷@
%æÈÅÕ@ó@ãÈÅÕ@ò@
%æÈÅÕ@ô@ãÈÅÕ@ù@
%æÈÅÕ@õ@ãÈÅÕ@ñ@
%æÈÅÕ@ö@ãÈÅÕ@òð@
%æÈÅÕ@÷@ãÈÅÕ@ñø@
%æÈÅÕ@ø@ãÈÅÕ@ñó@
%æÈÅÕ@ù@ãÈÅÕ@ññ@
%æÈÅÕ@ñð@ãÈÅÕ@ñô@
%æÈÅÕ@ññ@ãÈÅÕ@ó@
%æÈÅÕ@ñò@ãÈÅÕ@ñð@
%æÈÅÕ@ñó@ãÈÅÕ@õ@
%æÈÅÕ@ñô@ãÈÅÕ@ñù@
%æÈÅÕ@ñõ@ãÈÅÕ@ø@
%æÈÅÕ@ñö@ãÈÅÕ@ö@
%æÈÅÕ@ñ÷@ãÈÅÕ@ñò@
%æÈÅÕ@ñø@ãÈÅÕ@ñö@
%æÈÅÕ@ñù@ãÈÅÕ@÷@
%æÈÅÕ@òð@ãÈÅÕ@ñõ@
%ÅÕÄ@^@
%âÅã@ÄÅÃÙè×ãÅÄm×ÁââæÖÙÄ@~@ÓÅÆã@M@ÄÅÃÙè×ãÅÄm×ÁââæÖÙÄ@k@ÉÕÄÅçm×ÖâÉãÉÖÕ@`@ñ@]@OO@âäÂâãÙÉÕÇ@M@ÅÕÃÙè×ãÅÄm×ÁââæÖÙÄ@k@ÉÕÄÅçmÁÙÙÁè@k@ñ@]@
%OO@âäÂâãÙÉÕÇ@M@ÄÅÃÙè×ãÅÄm×ÁââæÖÙÄ@k@ÉÕÄÅçm×ÖâÉãÉÖÕ@N@ñ@]@^@
%âÅã@ÉÕÄÅçmÁÙÙÁè@~@ÉÕÄÅçmÁÙÙÁè@N@ñ@^@
%ÅÕÄ@æÈÉÓÅ@^@
%``@Ù…—“�ƒ…@\@¦‰£ˆ@¢—�ƒ…@M¢�”…@�¢@l§“�£…M}\}z}@}]]@
%âÅã@ÄÅÃÙè×ãÅÄm×ÁââæÖÙÄ@~@ÙÅ×ÓÁÃÅ@M@ÄÅÃÙè×ãÅÄm×ÁââæÖÙÄ@k@}\}@k@}@}@]@^@
%``@Ä™–—@£ˆ…@£…”—@—™–ƒ…„¤™…@
%ÄÙÖ×@×ÙÖÃÅÄäÙÅ@ØãÅÔ×@K@ÁçéÃâäðÙ@^@
%âÅã@ÃÉâãÖÖÓâ@K@âØÓmÃÓÖÂ@~@ÄÅÃÙè×ãÅÄm×ÁââæÖÙÄ@^@
%``@×�¢¢¦–™„@¢£�™£¢@†™–”@—–¢‰£‰–•@ññ@
%ÙÅãäÙÕ@âäÂâãÙÉÕÇ@M@ÄÅÃÙè×ãÅÄm×ÁââæÖÙÄ@k@ññ@k@ñð@]@^@
%ÅÕÄ@@^@
%
%ÇÙÁÕã@ÁÓãÅÙ@k@ÅçÅÃäãÅ@@@
%ÖÕ@â×ÅÃÉÆÉÃ@ÆäÕÃãÉÖÕ@ÃÉâãÖÖÓâKÇÅãmÔçÁ×Óäâm×ÁââæÖÙÄ@
%ãÖ@ÁÔÁ×ÉÃâ@æÉãÈ@ÇÙÁÕã@Ö×ãÉÖÕ@^@
%
%ÇÙÁÕã@ÅçÅÃäãÅ@@@
%ÖÕ@â×ÅÃÉÆÉÃ@ÆäÕÃãÉÖÕ@ÃÉâãÖÖÓâKÇÅãmÔçÁ×Óäâm×ÁââæÖÙÄ@
%ãÖ@×äÂÓÉÃ@^@
%
%
\ No newline at end of file
+SET PATH *LIBL ; 
+
+CREATE OR REPLACE FUNCTION CISTOOLS.GET_MXAPLUS_PASSWORD ( ) 
+	RETURNS CHAR(10)   
+	LANGUAGE SQL 
+	SPECIFIC CISTOOLS.GET_MXAPLUS_PASSWORD 
+	NOT DETERMINISTIC 
+	MODIFIES SQL DATA 
+	CALLED ON NULL INPUT 
+	SET OPTION  ALWBLK = *ALLREAD , 
+	ALWCPYDTA = *OPTIMIZE , 
+	COMMIT = *NONE , 
+	DECRESULT = (31, 31, 00) , 
+	DYNDFTCOL = *NO , 
+	DYNUSRPRF = *USER , 
+	SRTSEQ = *HEX   
+	BEGIN 
+DECLARE ENCRYPTED_PASSWORD CHAR ( 20 ) DEFAULT '' ; 
+DECLARE DECRYPTED_PASSWORD CHAR ( 20 ) DEFAULT '' ; 
+DECLARE INDEX_ARRAY INTEGER ; 
+DECLARE INDEX_POSITION INTEGER ; 
+DECLARE VALIDATION_TOKEN CHAR ( 16 ) DEFAULT 'RK2GSBV3FAV9N55S' ;  --Infor's val--idation token, out in plain sight.., from their source 
+-- Register SQL version of traditional RPG program in QTEMP 
+CREATE OR REPLACE PROCEDURE QTEMP . AXZCSU0R ( IN ASET CHAR ( 10 ) , IN VLDD CHAR ( 16 ) , IN SCRD CHAR ( 1 ) , INOUT PRPW CHAR ( 20 ) , 
+INOUT SETD CHAR ( 40 ) DEFAULT '' , INOUT RTRN CHAR ( 7 ) DEFAULT '' ) 
+LANGUAGE RPGLE 
+EXTERNAL NAME AMCESLIB / AXZCSU0R 
+PARAMETER STYLE GENERAL ; 
+CALL QTEMP . AXZCSU0R ( 'MXAPLUS' , VALIDATION_TOKEN , '1' , ENCRYPTED_PASSWORD) ; 
+-- Decrypt the password 
+SET INDEX_ARRAY = 1 ; 
+WHILE INDEX_ARRAY <= 20 DO 
+SET INDEX_POSITION = 
+CASE INDEX_ARRAY 
+WHEN 1 THEN 4 
+WHEN 2 THEN 17 
+WHEN 3 THEN 2 
+WHEN 4 THEN 9 
+WHEN 5 THEN 1 
+WHEN 6 THEN 20 
+WHEN 7 THEN 18 
+WHEN 8 THEN 13 
+WHEN 9 THEN 11 
+WHEN 10 THEN 14 
+WHEN 11 THEN 3 
+WHEN 12 THEN 10 
+WHEN 13 THEN 5 
+WHEN 14 THEN 19 
+WHEN 15 THEN 8 
+WHEN 16 THEN 6 
+WHEN 17 THEN 12 
+WHEN 18 THEN 16 
+WHEN 19 THEN 7 
+WHEN 20 THEN 15 
+END ; 
+SET DECRYPTED_PASSWORD = LEFT ( DECRYPTED_PASSWORD , INDEX_POSITION - 1 ) || SUBSTRING ( ENCRYPTED_PASSWORD , INDEX_ARRAY , 1 ) 
+|| SUBSTRING ( DECRYPTED_PASSWORD , INDEX_POSITION + 1 ) ; 
+SET INDEX_ARRAY = INDEX_ARRAY + 1 ; 
+END WHILE ; 
+-- Replace * with space (same as %xlate('*':' ')) 
+SET DECRYPTED_PASSWORD = REPLACE ( DECRYPTED_PASSWORD , '*' , ' ' ) ; 
+-- Drop the temp procedure 
+DROP PROCEDURE QTEMP . AXZCSU0R ; 
+SET CISTOOLS . SQL_CLOB = DECRYPTED_PASSWORD ; 
+-- Password starts from position 11 
+RETURN SUBSTRING ( DECRYPTED_PASSWORD , 11 , 10 ) ; 
+END  ; 
+
+GRANT ALTER , EXECUTE   
+ON SPECIFIC FUNCTION CISTOOLS.GET_MXAPLUS_PASSWORD 
+TO AMAPICS WITH GRANT OPTION ; 
+
+GRANT EXECUTE   
+ON SPECIFIC FUNCTION CISTOOLS.GET_MXAPLUS_PASSWORD 
+TO PUBLIC ; 
+
