/* Pure Prolog base64 converter see https://en.wikipedia.org/wiki/Base64 for a description of how base64 works Convert to base64: codes_base64(ListOfCodes, Base64). Convert from base64: base64_codes(Base64, ListOfCodes). Raw data must be in codes, the base64 uses characters. Conversion can be done using the pchar library. Note that these methods are reversable, but there are two for effeciency reasons. */ codes_base64([],[]). codes_base64([C1],[O1,O2,'=','=']) :- code_byte( C1, byte(B0, B1, B2, B3, B4, B5, B6, B7) ), code_b64( [B0, B1, B2, B3, B4, B5 ], O1 ), code_b64( [B6, B7, 0, 0, 0, 0 ], O2 ). codes_base64([C1,C2],[O1,O2,O3,'=']) :- code_byte( C1, byte(B0, B1, B2, B3, B4, B5, B6, B7) ), code_byte( C2, byte(B8, B9, B10,B11,B12,B13,B14,B15) ), code_b64( [B0, B1, B2, B3, B4, B5 ], O1 ), code_b64( [B6, B7, B8, B9, B10,B11], O2 ), code_b64( [B12,B13,B14,B15,0, 0 ], O3 ). codes_base64([C1,C2,C3|Ct],[O1,O2,O3,O4|Ot]) :- code_byte( C1, byte(B0, B1, B2, B3, B4, B5, B6, B7) ), code_byte( C2, byte(B8, B9, B10,B11,B12,B13,B14,B15) ), code_byte( C3, byte(B16,B17,B18,B19,B20,B21,B22,B23) ), code_b64( [B0, B1, B2, B3, B4, B5 ], O1 ), code_b64( [B6, B7, B8, B9, B10,B11], O2 ), code_b64( [B12,B13,B14,B15,B16,B17], O3 ), code_b64( [B18,B19,B20,B21,B22,B23], O4 ), codes_base64(Ct,Ot). base64_codes([],[]). base64_codes([O1,O2,'=','='],[C1]) :- code_b64( [B0, B1, B2, B3, B4, B5 ], O1 ), code_b64( [B6, B7, 0, 0, 0, 0 ], O2 ), code_byte( C1, byte(B0, B1, B2, B3, B4, B5, B6, B7) ). base64_codes([O1,O2,O3,'='], [C1,C2]) :- code_b64( [B0, B1, B2, B3, B4, B5 ], O1 ), code_b64( [B6, B7, B8, B9, B10,B11], O2 ), code_b64( [B12,B13,B14,B15,0, 0 ], O3 ), code_byte( C1, byte(B0, B1, B2, B3, B4, B5, B6, B7) ), code_byte( C2, byte(B8, B9, B10,B11,B12,B13,B14,B15) ). base64_codes([O1,O2,O3,O4|Ot], [C1,C2,C3|Ct]) :- code_b64( [B0, B1, B2, B3, B4, B5 ], O1 ), code_b64( [B6, B7, B8, B9, B10,B11], O2 ), code_b64( [B12,B13,B14,B15,B16,B17], O3 ), code_b64( [B18,B19,B20,B21,B22,B23], O4 ), code_byte( C1, byte(B0, B1, B2, B3, B4, B5, B6, B7) ), code_byte( C2, byte(B8, B9, B10,B11,B12,B13,B14,B15) ), code_byte( C3, byte(B16,B17,B18,B19,B20,B21,B22,B23) ), base64_codes(Ot, Ct). code_byte( 0, byte(0,0,0,0,0,0,0,0) ). code_byte( 1, byte(0,0,0,0,0,0,0,1) ). code_byte( 2, byte(0,0,0,0,0,0,1,0) ). code_byte( 3, byte(0,0,0,0,0,0,1,1) ). code_byte( 4, byte(0,0,0,0,0,1,0,0) ). code_byte( 5, byte(0,0,0,0,0,1,0,1) ). code_byte( 6, byte(0,0,0,0,0,1,1,0) ). code_byte( 7, byte(0,0,0,0,0,1,1,1) ). code_byte( 8, byte(0,0,0,0,1,0,0,0) ). code_byte( 9, byte(0,0,0,0,1,0,0,1) ). code_byte( 10, byte(0,0,0,0,1,0,1,0) ). code_byte( 11, byte(0,0,0,0,1,0,1,1) ). code_byte( 12, byte(0,0,0,0,1,1,0,0) ). code_byte( 13, byte(0,0,0,0,1,1,0,1) ). code_byte( 14, byte(0,0,0,0,1,1,1,0) ). code_byte( 15, byte(0,0,0,0,1,1,1,1) ). code_byte( 16, byte(0,0,0,1,0,0,0,0) ). code_byte( 17, byte(0,0,0,1,0,0,0,1) ). code_byte( 18, byte(0,0,0,1,0,0,1,0) ). code_byte( 19, byte(0,0,0,1,0,0,1,1) ). code_byte( 20, byte(0,0,0,1,0,1,0,0) ). code_byte( 21, byte(0,0,0,1,0,1,0,1) ). code_byte( 22, byte(0,0,0,1,0,1,1,0) ). code_byte( 23, byte(0,0,0,1,0,1,1,1) ). code_byte( 24, byte(0,0,0,1,1,0,0,0) ). code_byte( 25, byte(0,0,0,1,1,0,0,1) ). code_byte( 26, byte(0,0,0,1,1,0,1,0) ). code_byte( 27, byte(0,0,0,1,1,0,1,1) ). code_byte( 28, byte(0,0,0,1,1,1,0,0) ). code_byte( 29, byte(0,0,0,1,1,1,0,1) ). code_byte( 30, byte(0,0,0,1,1,1,1,0) ). code_byte( 31, byte(0,0,0,1,1,1,1,1) ). code_byte( 32, byte(0,0,1,0,0,0,0,0) ). code_byte( 33, byte(0,0,1,0,0,0,0,1) ). code_byte( 34, byte(0,0,1,0,0,0,1,0) ). code_byte( 35, byte(0,0,1,0,0,0,1,1) ). code_byte( 36, byte(0,0,1,0,0,1,0,0) ). code_byte( 37, byte(0,0,1,0,0,1,0,1) ). code_byte( 38, byte(0,0,1,0,0,1,1,0) ). code_byte( 39, byte(0,0,1,0,0,1,1,1) ). code_byte( 40, byte(0,0,1,0,1,0,0,0) ). code_byte( 41, byte(0,0,1,0,1,0,0,1) ). code_byte( 42, byte(0,0,1,0,1,0,1,0) ). code_byte( 43, byte(0,0,1,0,1,0,1,1) ). code_byte( 44, byte(0,0,1,0,1,1,0,0) ). code_byte( 45, byte(0,0,1,0,1,1,0,1) ). code_byte( 46, byte(0,0,1,0,1,1,1,0) ). code_byte( 47, byte(0,0,1,0,1,1,1,1) ). code_byte( 48, byte(0,0,1,1,0,0,0,0) ). code_byte( 49, byte(0,0,1,1,0,0,0,1) ). code_byte( 50, byte(0,0,1,1,0,0,1,0) ). code_byte( 51, byte(0,0,1,1,0,0,1,1) ). code_byte( 52, byte(0,0,1,1,0,1,0,0) ). code_byte( 53, byte(0,0,1,1,0,1,0,1) ). code_byte( 54, byte(0,0,1,1,0,1,1,0) ). code_byte( 55, byte(0,0,1,1,0,1,1,1) ). code_byte( 56, byte(0,0,1,1,1,0,0,0) ). code_byte( 57, byte(0,0,1,1,1,0,0,1) ). code_byte( 58, byte(0,0,1,1,1,0,1,0) ). code_byte( 59, byte(0,0,1,1,1,0,1,1) ). code_byte( 60, byte(0,0,1,1,1,1,0,0) ). code_byte( 61, byte(0,0,1,1,1,1,0,1) ). code_byte( 62, byte(0,0,1,1,1,1,1,0) ). code_byte( 63, byte(0,0,1,1,1,1,1,1) ). code_byte( 64, byte(0,1,0,0,0,0,0,0) ). code_byte( 65, byte(0,1,0,0,0,0,0,1) ). code_byte( 66, byte(0,1,0,0,0,0,1,0) ). code_byte( 67, byte(0,1,0,0,0,0,1,1) ). code_byte( 68, byte(0,1,0,0,0,1,0,0) ). code_byte( 69, byte(0,1,0,0,0,1,0,1) ). code_byte( 70, byte(0,1,0,0,0,1,1,0) ). code_byte( 71, byte(0,1,0,0,0,1,1,1) ). code_byte( 72, byte(0,1,0,0,1,0,0,0) ). code_byte( 73, byte(0,1,0,0,1,0,0,1) ). code_byte( 74, byte(0,1,0,0,1,0,1,0) ). code_byte( 75, byte(0,1,0,0,1,0,1,1) ). code_byte( 76, byte(0,1,0,0,1,1,0,0) ). code_byte( 77, byte(0,1,0,0,1,1,0,1) ). code_byte( 78, byte(0,1,0,0,1,1,1,0) ). code_byte( 79, byte(0,1,0,0,1,1,1,1) ). code_byte( 80, byte(0,1,0,1,0,0,0,0) ). code_byte( 81, byte(0,1,0,1,0,0,0,1) ). code_byte( 82, byte(0,1,0,1,0,0,1,0) ). code_byte( 83, byte(0,1,0,1,0,0,1,1) ). code_byte( 84, byte(0,1,0,1,0,1,0,0) ). code_byte( 85, byte(0,1,0,1,0,1,0,1) ). code_byte( 86, byte(0,1,0,1,0,1,1,0) ). code_byte( 87, byte(0,1,0,1,0,1,1,1) ). code_byte( 88, byte(0,1,0,1,1,0,0,0) ). code_byte( 89, byte(0,1,0,1,1,0,0,1) ). code_byte( 90, byte(0,1,0,1,1,0,1,0) ). code_byte( 91, byte(0,1,0,1,1,0,1,1) ). code_byte( 92, byte(0,1,0,1,1,1,0,0) ). code_byte( 93, byte(0,1,0,1,1,1,0,1) ). code_byte( 94, byte(0,1,0,1,1,1,1,0) ). code_byte( 95, byte(0,1,0,1,1,1,1,1) ). code_byte( 96, byte(0,1,1,0,0,0,0,0) ). code_byte( 97, byte(0,1,1,0,0,0,0,1) ). code_byte( 98, byte(0,1,1,0,0,0,1,0) ). code_byte( 99, byte(0,1,1,0,0,0,1,1) ). code_byte( 100, byte(0,1,1,0,0,1,0,0) ). code_byte( 101, byte(0,1,1,0,0,1,0,1) ). code_byte( 102, byte(0,1,1,0,0,1,1,0) ). code_byte( 103, byte(0,1,1,0,0,1,1,1) ). code_byte( 104, byte(0,1,1,0,1,0,0,0) ). code_byte( 105, byte(0,1,1,0,1,0,0,1) ). code_byte( 106, byte(0,1,1,0,1,0,1,0) ). code_byte( 107, byte(0,1,1,0,1,0,1,1) ). code_byte( 108, byte(0,1,1,0,1,1,0,0) ). code_byte( 109, byte(0,1,1,0,1,1,0,1) ). code_byte( 110, byte(0,1,1,0,1,1,1,0) ). code_byte( 111, byte(0,1,1,0,1,1,1,1) ). code_byte( 112, byte(0,1,1,1,0,0,0,0) ). code_byte( 113, byte(0,1,1,1,0,0,0,1) ). code_byte( 114, byte(0,1,1,1,0,0,1,0) ). code_byte( 115, byte(0,1,1,1,0,0,1,1) ). code_byte( 116, byte(0,1,1,1,0,1,0,0) ). code_byte( 117, byte(0,1,1,1,0,1,0,1) ). code_byte( 118, byte(0,1,1,1,0,1,1,0) ). code_byte( 119, byte(0,1,1,1,0,1,1,1) ). code_byte( 120, byte(0,1,1,1,1,0,0,0) ). code_byte( 121, byte(0,1,1,1,1,0,0,1) ). code_byte( 122, byte(0,1,1,1,1,0,1,0) ). code_byte( 123, byte(0,1,1,1,1,0,1,1) ). code_byte( 124, byte(0,1,1,1,1,1,0,0) ). code_byte( 125, byte(0,1,1,1,1,1,0,1) ). code_byte( 126, byte(0,1,1,1,1,1,1,0) ). code_byte( 127, byte(0,1,1,1,1,1,1,1) ). code_byte( 128, byte(1,0,0,0,0,0,0,0) ). code_byte( 129, byte(1,0,0,0,0,0,0,1) ). code_byte( 130, byte(1,0,0,0,0,0,1,0) ). code_byte( 131, byte(1,0,0,0,0,0,1,1) ). code_byte( 132, byte(1,0,0,0,0,1,0,0) ). code_byte( 133, byte(1,0,0,0,0,1,0,1) ). code_byte( 134, byte(1,0,0,0,0,1,1,0) ). code_byte( 135, byte(1,0,0,0,0,1,1,1) ). code_byte( 136, byte(1,0,0,0,1,0,0,0) ). code_byte( 137, byte(1,0,0,0,1,0,0,1) ). code_byte( 138, byte(1,0,0,0,1,0,1,0) ). code_byte( 139, byte(1,0,0,0,1,0,1,1) ). code_byte( 140, byte(1,0,0,0,1,1,0,0) ). code_byte( 141, byte(1,0,0,0,1,1,0,1) ). code_byte( 142, byte(1,0,0,0,1,1,1,0) ). code_byte( 143, byte(1,0,0,0,1,1,1,1) ). code_byte( 144, byte(1,0,0,1,0,0,0,0) ). code_byte( 145, byte(1,0,0,1,0,0,0,1) ). code_byte( 146, byte(1,0,0,1,0,0,1,0) ). code_byte( 147, byte(1,0,0,1,0,0,1,1) ). code_byte( 148, byte(1,0,0,1,0,1,0,0) ). code_byte( 149, byte(1,0,0,1,0,1,0,1) ). code_byte( 150, byte(1,0,0,1,0,1,1,0) ). code_byte( 151, byte(1,0,0,1,0,1,1,1) ). code_byte( 152, byte(1,0,0,1,1,0,0,0) ). code_byte( 153, byte(1,0,0,1,1,0,0,1) ). code_byte( 154, byte(1,0,0,1,1,0,1,0) ). code_byte( 155, byte(1,0,0,1,1,0,1,1) ). code_byte( 156, byte(1,0,0,1,1,1,0,0) ). code_byte( 157, byte(1,0,0,1,1,1,0,1) ). code_byte( 158, byte(1,0,0,1,1,1,1,0) ). code_byte( 159, byte(1,0,0,1,1,1,1,1) ). code_byte( 160, byte(1,0,1,0,0,0,0,0) ). code_byte( 161, byte(1,0,1,0,0,0,0,1) ). code_byte( 162, byte(1,0,1,0,0,0,1,0) ). code_byte( 163, byte(1,0,1,0,0,0,1,1) ). code_byte( 164, byte(1,0,1,0,0,1,0,0) ). code_byte( 165, byte(1,0,1,0,0,1,0,1) ). code_byte( 166, byte(1,0,1,0,0,1,1,0) ). code_byte( 167, byte(1,0,1,0,0,1,1,1) ). code_byte( 168, byte(1,0,1,0,1,0,0,0) ). code_byte( 169, byte(1,0,1,0,1,0,0,1) ). code_byte( 170, byte(1,0,1,0,1,0,1,0) ). code_byte( 171, byte(1,0,1,0,1,0,1,1) ). code_byte( 172, byte(1,0,1,0,1,1,0,0) ). code_byte( 173, byte(1,0,1,0,1,1,0,1) ). code_byte( 174, byte(1,0,1,0,1,1,1,0) ). code_byte( 175, byte(1,0,1,0,1,1,1,1) ). code_byte( 176, byte(1,0,1,1,0,0,0,0) ). code_byte( 177, byte(1,0,1,1,0,0,0,1) ). code_byte( 178, byte(1,0,1,1,0,0,1,0) ). code_byte( 179, byte(1,0,1,1,0,0,1,1) ). code_byte( 180, byte(1,0,1,1,0,1,0,0) ). code_byte( 181, byte(1,0,1,1,0,1,0,1) ). code_byte( 182, byte(1,0,1,1,0,1,1,0) ). code_byte( 183, byte(1,0,1,1,0,1,1,1) ). code_byte( 184, byte(1,0,1,1,1,0,0,0) ). code_byte( 185, byte(1,0,1,1,1,0,0,1) ). code_byte( 186, byte(1,0,1,1,1,0,1,0) ). code_byte( 187, byte(1,0,1,1,1,0,1,1) ). code_byte( 188, byte(1,0,1,1,1,1,0,0) ). code_byte( 189, byte(1,0,1,1,1,1,0,1) ). code_byte( 190, byte(1,0,1,1,1,1,1,0) ). code_byte( 191, byte(1,0,1,1,1,1,1,1) ). code_byte( 192, byte(1,1,0,0,0,0,0,0) ). code_byte( 193, byte(1,1,0,0,0,0,0,1) ). code_byte( 194, byte(1,1,0,0,0,0,1,0) ). code_byte( 195, byte(1,1,0,0,0,0,1,1) ). code_byte( 196, byte(1,1,0,0,0,1,0,0) ). code_byte( 197, byte(1,1,0,0,0,1,0,1) ). code_byte( 198, byte(1,1,0,0,0,1,1,0) ). code_byte( 199, byte(1,1,0,0,0,1,1,1) ). code_byte( 200, byte(1,1,0,0,1,0,0,0) ). code_byte( 201, byte(1,1,0,0,1,0,0,1) ). code_byte( 202, byte(1,1,0,0,1,0,1,0) ). code_byte( 203, byte(1,1,0,0,1,0,1,1) ). code_byte( 204, byte(1,1,0,0,1,1,0,0) ). code_byte( 205, byte(1,1,0,0,1,1,0,1) ). code_byte( 206, byte(1,1,0,0,1,1,1,0) ). code_byte( 207, byte(1,1,0,0,1,1,1,1) ). code_byte( 208, byte(1,1,0,1,0,0,0,0) ). code_byte( 209, byte(1,1,0,1,0,0,0,1) ). code_byte( 210, byte(1,1,0,1,0,0,1,0) ). code_byte( 211, byte(1,1,0,1,0,0,1,1) ). code_byte( 212, byte(1,1,0,1,0,1,0,0) ). code_byte( 213, byte(1,1,0,1,0,1,0,1) ). code_byte( 214, byte(1,1,0,1,0,1,1,0) ). code_byte( 215, byte(1,1,0,1,0,1,1,1) ). code_byte( 216, byte(1,1,0,1,1,0,0,0) ). code_byte( 217, byte(1,1,0,1,1,0,0,1) ). code_byte( 218, byte(1,1,0,1,1,0,1,0) ). code_byte( 219, byte(1,1,0,1,1,0,1,1) ). code_byte( 220, byte(1,1,0,1,1,1,0,0) ). code_byte( 221, byte(1,1,0,1,1,1,0,1) ). code_byte( 222, byte(1,1,0,1,1,1,1,0) ). code_byte( 223, byte(1,1,0,1,1,1,1,1) ). code_byte( 224, byte(1,1,1,0,0,0,0,0) ). code_byte( 225, byte(1,1,1,0,0,0,0,1) ). code_byte( 226, byte(1,1,1,0,0,0,1,0) ). code_byte( 227, byte(1,1,1,0,0,0,1,1) ). code_byte( 228, byte(1,1,1,0,0,1,0,0) ). code_byte( 229, byte(1,1,1,0,0,1,0,1) ). code_byte( 230, byte(1,1,1,0,0,1,1,0) ). code_byte( 231, byte(1,1,1,0,0,1,1,1) ). code_byte( 232, byte(1,1,1,0,1,0,0,0) ). code_byte( 233, byte(1,1,1,0,1,0,0,1) ). code_byte( 234, byte(1,1,1,0,1,0,1,0) ). code_byte( 235, byte(1,1,1,0,1,0,1,1) ). code_byte( 236, byte(1,1,1,0,1,1,0,0) ). code_byte( 237, byte(1,1,1,0,1,1,0,1) ). code_byte( 238, byte(1,1,1,0,1,1,1,0) ). code_byte( 239, byte(1,1,1,0,1,1,1,1) ). code_byte( 240, byte(1,1,1,1,0,0,0,0) ). code_byte( 241, byte(1,1,1,1,0,0,0,1) ). code_byte( 242, byte(1,1,1,1,0,0,1,0) ). code_byte( 243, byte(1,1,1,1,0,0,1,1) ). code_byte( 244, byte(1,1,1,1,0,1,0,0) ). code_byte( 245, byte(1,1,1,1,0,1,0,1) ). code_byte( 246, byte(1,1,1,1,0,1,1,0) ). code_byte( 247, byte(1,1,1,1,0,1,1,1) ). code_byte( 248, byte(1,1,1,1,1,0,0,0) ). code_byte( 249, byte(1,1,1,1,1,0,0,1) ). code_byte( 250, byte(1,1,1,1,1,0,1,0) ). code_byte( 251, byte(1,1,1,1,1,0,1,1) ). code_byte( 252, byte(1,1,1,1,1,1,0,0) ). code_byte( 253, byte(1,1,1,1,1,1,0,1) ). code_byte( 254, byte(1,1,1,1,1,1,1,0) ). code_byte( 255, byte(1,1,1,1,1,1,1,1) ). code_b64([0,0,0,0,0,0], 'A' ). code_b64([0,0,0,0,0,1], 'B' ). code_b64([0,0,0,0,1,0], 'C' ). code_b64([0,0,0,0,1,1], 'D' ). code_b64([0,0,0,1,0,0], 'E' ). code_b64([0,0,0,1,0,1], 'F' ). code_b64([0,0,0,1,1,0], 'G' ). code_b64([0,0,0,1,1,1], 'H' ). code_b64([0,0,1,0,0,0], 'I' ). code_b64([0,0,1,0,0,1], 'J' ). code_b64([0,0,1,0,1,0], 'K' ). code_b64([0,0,1,0,1,1], 'L' ). code_b64([0,0,1,1,0,0], 'M' ). code_b64([0,0,1,1,0,1], 'N' ). code_b64([0,0,1,1,1,0], 'O' ). code_b64([0,0,1,1,1,1], 'P' ). code_b64([0,1,0,0,0,0], 'Q' ). code_b64([0,1,0,0,0,1], 'R' ). code_b64([0,1,0,0,1,0], 'S' ). code_b64([0,1,0,0,1,1], 'T' ). code_b64([0,1,0,1,0,0], 'U' ). code_b64([0,1,0,1,0,1], 'V' ). code_b64([0,1,0,1,1,0], 'W' ). code_b64([0,1,0,1,1,1], 'X' ). code_b64([0,1,1,0,0,0], 'Y' ). code_b64([0,1,1,0,0,1], 'Z' ). code_b64([0,1,1,0,1,0], 'a' ). code_b64([0,1,1,0,1,1], 'b' ). code_b64([0,1,1,1,0,0], 'c' ). code_b64([0,1,1,1,0,1], 'd' ). code_b64([0,1,1,1,1,0], 'e' ). code_b64([0,1,1,1,1,1], 'f' ). code_b64([1,0,0,0,0,0], 'g' ). code_b64([1,0,0,0,0,1], 'h' ). code_b64([1,0,0,0,1,0], 'i' ). code_b64([1,0,0,0,1,1], 'j' ). code_b64([1,0,0,1,0,0], 'k' ). code_b64([1,0,0,1,0,1], 'l' ). code_b64([1,0,0,1,1,0], 'm' ). code_b64([1,0,0,1,1,1], 'n' ). code_b64([1,0,1,0,0,0], 'o' ). code_b64([1,0,1,0,0,1], 'p' ). code_b64([1,0,1,0,1,0], 'q' ). code_b64([1,0,1,0,1,1], 'r' ). code_b64([1,0,1,1,0,0], 's' ). code_b64([1,0,1,1,0,1], 't' ). code_b64([1,0,1,1,1,0], 'u' ). code_b64([1,0,1,1,1,1], 'v' ). code_b64([1,1,0,0,0,0], 'w' ). code_b64([1,1,0,0,0,1], 'x' ). code_b64([1,1,0,0,1,0], 'y' ). code_b64([1,1,0,0,1,1], 'z' ). code_b64([1,1,0,1,0,0], '0' ). code_b64([1,1,0,1,0,1], '1' ). code_b64([1,1,0,1,1,0], '2' ). code_b64([1,1,0,1,1,1], '3' ). code_b64([1,1,1,0,0,0], '4' ). code_b64([1,1,1,0,0,1], '5' ). code_b64([1,1,1,0,1,0], '6' ). code_b64([1,1,1,0,1,1], '7' ). code_b64([1,1,1,1,0,0], '8' ). code_b64([1,1,1,1,0,1], '9' ). code_b64([1,1,1,1,1,0], '+' ). code_b64([1,1,1,1,1,1], '/' ).