@@ -146,6 +146,64 @@ extension Base64 {
146146 UInt8 ( ascii: " 6 " ) , UInt8 ( ascii: " 7 " ) , UInt8 ( ascii: " 8 " ) , UInt8 ( ascii: " 9 " ) , UInt8 ( ascii: " + " ) , UInt8 ( ascii: " / " ) ,
147147 ]
148148
149+ static let encoding0url : [ UInt8 ] = [
150+ UInt8 ( ascii: " A " ) , UInt8 ( ascii: " A " ) , UInt8 ( ascii: " A " ) , UInt8 ( ascii: " A " ) , UInt8 ( ascii: " B " ) , UInt8 ( ascii: " B " ) , UInt8 ( ascii: " B " ) , UInt8 ( ascii: " B " ) , UInt8 ( ascii: " C " ) , UInt8 ( ascii: " C " ) ,
151+ UInt8 ( ascii: " C " ) , UInt8 ( ascii: " C " ) , UInt8 ( ascii: " D " ) , UInt8 ( ascii: " D " ) , UInt8 ( ascii: " D " ) , UInt8 ( ascii: " D " ) , UInt8 ( ascii: " E " ) , UInt8 ( ascii: " E " ) , UInt8 ( ascii: " E " ) , UInt8 ( ascii: " E " ) ,
152+ UInt8 ( ascii: " F " ) , UInt8 ( ascii: " F " ) , UInt8 ( ascii: " F " ) , UInt8 ( ascii: " F " ) , UInt8 ( ascii: " G " ) , UInt8 ( ascii: " G " ) , UInt8 ( ascii: " G " ) , UInt8 ( ascii: " G " ) , UInt8 ( ascii: " H " ) , UInt8 ( ascii: " H " ) ,
153+ UInt8 ( ascii: " H " ) , UInt8 ( ascii: " H " ) , UInt8 ( ascii: " I " ) , UInt8 ( ascii: " I " ) , UInt8 ( ascii: " I " ) , UInt8 ( ascii: " I " ) , UInt8 ( ascii: " J " ) , UInt8 ( ascii: " J " ) , UInt8 ( ascii: " J " ) , UInt8 ( ascii: " J " ) ,
154+ UInt8 ( ascii: " K " ) , UInt8 ( ascii: " K " ) , UInt8 ( ascii: " K " ) , UInt8 ( ascii: " K " ) , UInt8 ( ascii: " L " ) , UInt8 ( ascii: " L " ) , UInt8 ( ascii: " L " ) , UInt8 ( ascii: " L " ) , UInt8 ( ascii: " M " ) , UInt8 ( ascii: " M " ) ,
155+ UInt8 ( ascii: " M " ) , UInt8 ( ascii: " M " ) , UInt8 ( ascii: " N " ) , UInt8 ( ascii: " N " ) , UInt8 ( ascii: " N " ) , UInt8 ( ascii: " N " ) , UInt8 ( ascii: " O " ) , UInt8 ( ascii: " O " ) , UInt8 ( ascii: " O " ) , UInt8 ( ascii: " O " ) ,
156+ UInt8 ( ascii: " P " ) , UInt8 ( ascii: " P " ) , UInt8 ( ascii: " P " ) , UInt8 ( ascii: " P " ) , UInt8 ( ascii: " Q " ) , UInt8 ( ascii: " Q " ) , UInt8 ( ascii: " Q " ) , UInt8 ( ascii: " Q " ) , UInt8 ( ascii: " R " ) , UInt8 ( ascii: " R " ) ,
157+ UInt8 ( ascii: " R " ) , UInt8 ( ascii: " R " ) , UInt8 ( ascii: " S " ) , UInt8 ( ascii: " S " ) , UInt8 ( ascii: " S " ) , UInt8 ( ascii: " S " ) , UInt8 ( ascii: " T " ) , UInt8 ( ascii: " T " ) , UInt8 ( ascii: " T " ) , UInt8 ( ascii: " T " ) ,
158+ UInt8 ( ascii: " U " ) , UInt8 ( ascii: " U " ) , UInt8 ( ascii: " U " ) , UInt8 ( ascii: " U " ) , UInt8 ( ascii: " V " ) , UInt8 ( ascii: " V " ) , UInt8 ( ascii: " V " ) , UInt8 ( ascii: " V " ) , UInt8 ( ascii: " W " ) , UInt8 ( ascii: " W " ) ,
159+ UInt8 ( ascii: " W " ) , UInt8 ( ascii: " W " ) , UInt8 ( ascii: " X " ) , UInt8 ( ascii: " X " ) , UInt8 ( ascii: " X " ) , UInt8 ( ascii: " X " ) , UInt8 ( ascii: " Y " ) , UInt8 ( ascii: " Y " ) , UInt8 ( ascii: " Y " ) , UInt8 ( ascii: " Y " ) ,
160+ UInt8 ( ascii: " Z " ) , UInt8 ( ascii: " Z " ) , UInt8 ( ascii: " Z " ) , UInt8 ( ascii: " Z " ) , UInt8 ( ascii: " a " ) , UInt8 ( ascii: " a " ) , UInt8 ( ascii: " a " ) , UInt8 ( ascii: " a " ) , UInt8 ( ascii: " b " ) , UInt8 ( ascii: " b " ) ,
161+ UInt8 ( ascii: " b " ) , UInt8 ( ascii: " b " ) , UInt8 ( ascii: " c " ) , UInt8 ( ascii: " c " ) , UInt8 ( ascii: " c " ) , UInt8 ( ascii: " c " ) , UInt8 ( ascii: " d " ) , UInt8 ( ascii: " d " ) , UInt8 ( ascii: " d " ) , UInt8 ( ascii: " d " ) ,
162+ UInt8 ( ascii: " e " ) , UInt8 ( ascii: " e " ) , UInt8 ( ascii: " e " ) , UInt8 ( ascii: " e " ) , UInt8 ( ascii: " f " ) , UInt8 ( ascii: " f " ) , UInt8 ( ascii: " f " ) , UInt8 ( ascii: " f " ) , UInt8 ( ascii: " g " ) , UInt8 ( ascii: " g " ) ,
163+ UInt8 ( ascii: " g " ) , UInt8 ( ascii: " g " ) , UInt8 ( ascii: " h " ) , UInt8 ( ascii: " h " ) , UInt8 ( ascii: " h " ) , UInt8 ( ascii: " h " ) , UInt8 ( ascii: " i " ) , UInt8 ( ascii: " i " ) , UInt8 ( ascii: " i " ) , UInt8 ( ascii: " i " ) ,
164+ UInt8 ( ascii: " j " ) , UInt8 ( ascii: " j " ) , UInt8 ( ascii: " j " ) , UInt8 ( ascii: " j " ) , UInt8 ( ascii: " k " ) , UInt8 ( ascii: " k " ) , UInt8 ( ascii: " k " ) , UInt8 ( ascii: " k " ) , UInt8 ( ascii: " l " ) , UInt8 ( ascii: " l " ) ,
165+ UInt8 ( ascii: " l " ) , UInt8 ( ascii: " l " ) , UInt8 ( ascii: " m " ) , UInt8 ( ascii: " m " ) , UInt8 ( ascii: " m " ) , UInt8 ( ascii: " m " ) , UInt8 ( ascii: " n " ) , UInt8 ( ascii: " n " ) , UInt8 ( ascii: " n " ) , UInt8 ( ascii: " n " ) ,
166+ UInt8 ( ascii: " o " ) , UInt8 ( ascii: " o " ) , UInt8 ( ascii: " o " ) , UInt8 ( ascii: " o " ) , UInt8 ( ascii: " p " ) , UInt8 ( ascii: " p " ) , UInt8 ( ascii: " p " ) , UInt8 ( ascii: " p " ) , UInt8 ( ascii: " q " ) , UInt8 ( ascii: " q " ) ,
167+ UInt8 ( ascii: " q " ) , UInt8 ( ascii: " q " ) , UInt8 ( ascii: " r " ) , UInt8 ( ascii: " r " ) , UInt8 ( ascii: " r " ) , UInt8 ( ascii: " r " ) , UInt8 ( ascii: " s " ) , UInt8 ( ascii: " s " ) , UInt8 ( ascii: " s " ) , UInt8 ( ascii: " s " ) ,
168+ UInt8 ( ascii: " t " ) , UInt8 ( ascii: " t " ) , UInt8 ( ascii: " t " ) , UInt8 ( ascii: " t " ) , UInt8 ( ascii: " u " ) , UInt8 ( ascii: " u " ) , UInt8 ( ascii: " u " ) , UInt8 ( ascii: " u " ) , UInt8 ( ascii: " v " ) , UInt8 ( ascii: " v " ) ,
169+ UInt8 ( ascii: " v " ) , UInt8 ( ascii: " v " ) , UInt8 ( ascii: " w " ) , UInt8 ( ascii: " w " ) , UInt8 ( ascii: " w " ) , UInt8 ( ascii: " w " ) , UInt8 ( ascii: " x " ) , UInt8 ( ascii: " x " ) , UInt8 ( ascii: " x " ) , UInt8 ( ascii: " x " ) ,
170+ UInt8 ( ascii: " y " ) , UInt8 ( ascii: " y " ) , UInt8 ( ascii: " y " ) , UInt8 ( ascii: " y " ) , UInt8 ( ascii: " z " ) , UInt8 ( ascii: " z " ) , UInt8 ( ascii: " z " ) , UInt8 ( ascii: " z " ) , UInt8 ( ascii: " 0 " ) , UInt8 ( ascii: " 0 " ) ,
171+ UInt8 ( ascii: " 0 " ) , UInt8 ( ascii: " 0 " ) , UInt8 ( ascii: " 1 " ) , UInt8 ( ascii: " 1 " ) , UInt8 ( ascii: " 1 " ) , UInt8 ( ascii: " 1 " ) , UInt8 ( ascii: " 2 " ) , UInt8 ( ascii: " 2 " ) , UInt8 ( ascii: " 2 " ) , UInt8 ( ascii: " 2 " ) ,
172+ UInt8 ( ascii: " 3 " ) , UInt8 ( ascii: " 3 " ) , UInt8 ( ascii: " 3 " ) , UInt8 ( ascii: " 3 " ) , UInt8 ( ascii: " 4 " ) , UInt8 ( ascii: " 4 " ) , UInt8 ( ascii: " 4 " ) , UInt8 ( ascii: " 4 " ) , UInt8 ( ascii: " 5 " ) , UInt8 ( ascii: " 5 " ) ,
173+ UInt8 ( ascii: " 5 " ) , UInt8 ( ascii: " 5 " ) , UInt8 ( ascii: " 6 " ) , UInt8 ( ascii: " 6 " ) , UInt8 ( ascii: " 6 " ) , UInt8 ( ascii: " 6 " ) , UInt8 ( ascii: " 7 " ) , UInt8 ( ascii: " 7 " ) , UInt8 ( ascii: " 7 " ) , UInt8 ( ascii: " 7 " ) ,
174+ UInt8 ( ascii: " 8 " ) , UInt8 ( ascii: " 8 " ) , UInt8 ( ascii: " 8 " ) , UInt8 ( ascii: " 8 " ) , UInt8 ( ascii: " 9 " ) , UInt8 ( ascii: " 9 " ) , UInt8 ( ascii: " 9 " ) , UInt8 ( ascii: " 9 " ) , UInt8 ( ascii: " - " ) , UInt8 ( ascii: " - " ) ,
175+ UInt8 ( ascii: " - " ) , UInt8 ( ascii: " - " ) , UInt8 ( ascii: " _ " ) , UInt8 ( ascii: " _ " ) , UInt8 ( ascii: " _ " ) , UInt8 ( ascii: " _ " ) ,
176+ ]
177+
178+ static let encoding1url : [ UInt8 ] = [
179+ UInt8 ( ascii: " A " ) , UInt8 ( ascii: " B " ) , UInt8 ( ascii: " C " ) , UInt8 ( ascii: " D " ) , UInt8 ( ascii: " E " ) , UInt8 ( ascii: " F " ) , UInt8 ( ascii: " G " ) , UInt8 ( ascii: " H " ) , UInt8 ( ascii: " I " ) , UInt8 ( ascii: " J " ) ,
180+ UInt8 ( ascii: " K " ) , UInt8 ( ascii: " L " ) , UInt8 ( ascii: " M " ) , UInt8 ( ascii: " N " ) , UInt8 ( ascii: " O " ) , UInt8 ( ascii: " P " ) , UInt8 ( ascii: " Q " ) , UInt8 ( ascii: " R " ) , UInt8 ( ascii: " S " ) , UInt8 ( ascii: " T " ) ,
181+ UInt8 ( ascii: " U " ) , UInt8 ( ascii: " V " ) , UInt8 ( ascii: " W " ) , UInt8 ( ascii: " X " ) , UInt8 ( ascii: " Y " ) , UInt8 ( ascii: " Z " ) , UInt8 ( ascii: " a " ) , UInt8 ( ascii: " b " ) , UInt8 ( ascii: " c " ) , UInt8 ( ascii: " d " ) ,
182+ UInt8 ( ascii: " e " ) , UInt8 ( ascii: " f " ) , UInt8 ( ascii: " g " ) , UInt8 ( ascii: " h " ) , UInt8 ( ascii: " i " ) , UInt8 ( ascii: " j " ) , UInt8 ( ascii: " k " ) , UInt8 ( ascii: " l " ) , UInt8 ( ascii: " m " ) , UInt8 ( ascii: " n " ) ,
183+ UInt8 ( ascii: " o " ) , UInt8 ( ascii: " p " ) , UInt8 ( ascii: " q " ) , UInt8 ( ascii: " r " ) , UInt8 ( ascii: " s " ) , UInt8 ( ascii: " t " ) , UInt8 ( ascii: " u " ) , UInt8 ( ascii: " v " ) , UInt8 ( ascii: " w " ) , UInt8 ( ascii: " x " ) ,
184+ UInt8 ( ascii: " y " ) , UInt8 ( ascii: " z " ) , UInt8 ( ascii: " 0 " ) , UInt8 ( ascii: " 1 " ) , UInt8 ( ascii: " 2 " ) , UInt8 ( ascii: " 3 " ) , UInt8 ( ascii: " 4 " ) , UInt8 ( ascii: " 5 " ) , UInt8 ( ascii: " 6 " ) , UInt8 ( ascii: " 7 " ) ,
185+ UInt8 ( ascii: " 8 " ) , UInt8 ( ascii: " 9 " ) , UInt8 ( ascii: " - " ) , UInt8 ( ascii: " _ " ) , UInt8 ( ascii: " A " ) , UInt8 ( ascii: " B " ) , UInt8 ( ascii: " C " ) , UInt8 ( ascii: " D " ) , UInt8 ( ascii: " E " ) , UInt8 ( ascii: " F " ) ,
186+ UInt8 ( ascii: " G " ) , UInt8 ( ascii: " H " ) , UInt8 ( ascii: " I " ) , UInt8 ( ascii: " J " ) , UInt8 ( ascii: " K " ) , UInt8 ( ascii: " L " ) , UInt8 ( ascii: " M " ) , UInt8 ( ascii: " N " ) , UInt8 ( ascii: " O " ) , UInt8 ( ascii: " P " ) ,
187+ UInt8 ( ascii: " Q " ) , UInt8 ( ascii: " R " ) , UInt8 ( ascii: " S " ) , UInt8 ( ascii: " T " ) , UInt8 ( ascii: " U " ) , UInt8 ( ascii: " V " ) , UInt8 ( ascii: " W " ) , UInt8 ( ascii: " X " ) , UInt8 ( ascii: " Y " ) , UInt8 ( ascii: " Z " ) ,
188+ UInt8 ( ascii: " a " ) , UInt8 ( ascii: " b " ) , UInt8 ( ascii: " c " ) , UInt8 ( ascii: " d " ) , UInt8 ( ascii: " e " ) , UInt8 ( ascii: " f " ) , UInt8 ( ascii: " g " ) , UInt8 ( ascii: " h " ) , UInt8 ( ascii: " i " ) , UInt8 ( ascii: " j " ) ,
189+ UInt8 ( ascii: " k " ) , UInt8 ( ascii: " l " ) , UInt8 ( ascii: " m " ) , UInt8 ( ascii: " n " ) , UInt8 ( ascii: " o " ) , UInt8 ( ascii: " p " ) , UInt8 ( ascii: " q " ) , UInt8 ( ascii: " r " ) , UInt8 ( ascii: " s " ) , UInt8 ( ascii: " t " ) ,
190+ UInt8 ( ascii: " u " ) , UInt8 ( ascii: " v " ) , UInt8 ( ascii: " w " ) , UInt8 ( ascii: " x " ) , UInt8 ( ascii: " y " ) , UInt8 ( ascii: " z " ) , UInt8 ( ascii: " 0 " ) , UInt8 ( ascii: " 1 " ) , UInt8 ( ascii: " 2 " ) , UInt8 ( ascii: " 3 " ) ,
191+ UInt8 ( ascii: " 4 " ) , UInt8 ( ascii: " 5 " ) , UInt8 ( ascii: " 6 " ) , UInt8 ( ascii: " 7 " ) , UInt8 ( ascii: " 8 " ) , UInt8 ( ascii: " 9 " ) , UInt8 ( ascii: " - " ) , UInt8 ( ascii: " _ " ) , UInt8 ( ascii: " A " ) , UInt8 ( ascii: " B " ) ,
192+ UInt8 ( ascii: " C " ) , UInt8 ( ascii: " D " ) , UInt8 ( ascii: " E " ) , UInt8 ( ascii: " F " ) , UInt8 ( ascii: " G " ) , UInt8 ( ascii: " H " ) , UInt8 ( ascii: " I " ) , UInt8 ( ascii: " J " ) , UInt8 ( ascii: " K " ) , UInt8 ( ascii: " L " ) ,
193+ UInt8 ( ascii: " M " ) , UInt8 ( ascii: " N " ) , UInt8 ( ascii: " O " ) , UInt8 ( ascii: " P " ) , UInt8 ( ascii: " Q " ) , UInt8 ( ascii: " R " ) , UInt8 ( ascii: " S " ) , UInt8 ( ascii: " T " ) , UInt8 ( ascii: " U " ) , UInt8 ( ascii: " V " ) ,
194+ UInt8 ( ascii: " W " ) , UInt8 ( ascii: " X " ) , UInt8 ( ascii: " Y " ) , UInt8 ( ascii: " Z " ) , UInt8 ( ascii: " a " ) , UInt8 ( ascii: " b " ) , UInt8 ( ascii: " c " ) , UInt8 ( ascii: " d " ) , UInt8 ( ascii: " e " ) , UInt8 ( ascii: " f " ) ,
195+ UInt8 ( ascii: " g " ) , UInt8 ( ascii: " h " ) , UInt8 ( ascii: " i " ) , UInt8 ( ascii: " j " ) , UInt8 ( ascii: " k " ) , UInt8 ( ascii: " l " ) , UInt8 ( ascii: " m " ) , UInt8 ( ascii: " n " ) , UInt8 ( ascii: " o " ) , UInt8 ( ascii: " p " ) ,
196+ UInt8 ( ascii: " q " ) , UInt8 ( ascii: " r " ) , UInt8 ( ascii: " s " ) , UInt8 ( ascii: " t " ) , UInt8 ( ascii: " u " ) , UInt8 ( ascii: " v " ) , UInt8 ( ascii: " w " ) , UInt8 ( ascii: " x " ) , UInt8 ( ascii: " y " ) , UInt8 ( ascii: " z " ) ,
197+ UInt8 ( ascii: " 0 " ) , UInt8 ( ascii: " 1 " ) , UInt8 ( ascii: " 2 " ) , UInt8 ( ascii: " 3 " ) , UInt8 ( ascii: " 4 " ) , UInt8 ( ascii: " 5 " ) , UInt8 ( ascii: " 6 " ) , UInt8 ( ascii: " 7 " ) , UInt8 ( ascii: " 8 " ) , UInt8 ( ascii: " 9 " ) ,
198+ UInt8 ( ascii: " - " ) , UInt8 ( ascii: " _ " ) , UInt8 ( ascii: " A " ) , UInt8 ( ascii: " B " ) , UInt8 ( ascii: " C " ) , UInt8 ( ascii: " D " ) , UInt8 ( ascii: " E " ) , UInt8 ( ascii: " F " ) , UInt8 ( ascii: " G " ) , UInt8 ( ascii: " H " ) ,
199+ UInt8 ( ascii: " I " ) , UInt8 ( ascii: " J " ) , UInt8 ( ascii: " K " ) , UInt8 ( ascii: " L " ) , UInt8 ( ascii: " M " ) , UInt8 ( ascii: " N " ) , UInt8 ( ascii: " O " ) , UInt8 ( ascii: " P " ) , UInt8 ( ascii: " Q " ) , UInt8 ( ascii: " R " ) ,
200+ UInt8 ( ascii: " S " ) , UInt8 ( ascii: " T " ) , UInt8 ( ascii: " U " ) , UInt8 ( ascii: " V " ) , UInt8 ( ascii: " W " ) , UInt8 ( ascii: " X " ) , UInt8 ( ascii: " Y " ) , UInt8 ( ascii: " Z " ) , UInt8 ( ascii: " a " ) , UInt8 ( ascii: " b " ) ,
201+ UInt8 ( ascii: " c " ) , UInt8 ( ascii: " d " ) , UInt8 ( ascii: " e " ) , UInt8 ( ascii: " f " ) , UInt8 ( ascii: " g " ) , UInt8 ( ascii: " h " ) , UInt8 ( ascii: " i " ) , UInt8 ( ascii: " j " ) , UInt8 ( ascii: " k " ) , UInt8 ( ascii: " l " ) ,
202+ UInt8 ( ascii: " m " ) , UInt8 ( ascii: " n " ) , UInt8 ( ascii: " o " ) , UInt8 ( ascii: " p " ) , UInt8 ( ascii: " q " ) , UInt8 ( ascii: " r " ) , UInt8 ( ascii: " s " ) , UInt8 ( ascii: " t " ) , UInt8 ( ascii: " u " ) , UInt8 ( ascii: " v " ) ,
203+ UInt8 ( ascii: " w " ) , UInt8 ( ascii: " x " ) , UInt8 ( ascii: " y " ) , UInt8 ( ascii: " z " ) , UInt8 ( ascii: " 0 " ) , UInt8 ( ascii: " 1 " ) , UInt8 ( ascii: " 2 " ) , UInt8 ( ascii: " 3 " ) , UInt8 ( ascii: " 4 " ) , UInt8 ( ascii: " 5 " ) ,
204+ UInt8 ( ascii: " 6 " ) , UInt8 ( ascii: " 7 " ) , UInt8 ( ascii: " 8 " ) , UInt8 ( ascii: " 9 " ) , UInt8 ( ascii: " - " ) , UInt8 ( ascii: " _ " ) ,
205+ ]
206+
149207 static func encodeToBytes< Buffer: Collection > ( bytes: Buffer , options: Data . Base64EncodingOptions )
150208 -> [ UInt8 ] where Buffer. Element == UInt8
151209 {
@@ -212,7 +270,7 @@ extension Base64 {
212270 return self . _encodeWithLineBreaks ( input: input, buffer: buffer, length: & length, options: options)
213271 }
214272
215- let omitPaddingCharacter = false
273+ let omitPaddingCharacter = options . contains ( . omitPaddingCharacter )
216274
217275 Self . withUnsafeEncodingTablesAsBufferPointers ( options: options) { ( e0, e1) throws ( Never) -> Void in
218276 let to = input. count / 3 * 3
@@ -382,7 +440,16 @@ extension Base64 {
382440 }
383441
384442 static func encodeComputeCapacity( bytes: Int , options: Data . Base64EncodingOptions ) -> Int {
385- let capacityWithoutBreaks = ( ( bytes + 2 ) / 3 ) * 4
443+ let capacityWithoutBreaks = if options. contains ( . omitPaddingCharacter) {
444+ switch bytes % 3 {
445+ case 0 : ( ( bytes + 2 ) / 3 ) * 4
446+ case 1 : ( ( bytes + 2 ) / 3 ) * 4 - 2
447+ case 2 : ( ( bytes + 2 ) / 3 ) * 4 - 1
448+ default : fatalError ( )
449+ }
450+ } else {
451+ ( ( bytes + 2 ) / 3 ) * 4
452+ }
386453
387454 guard options. contains ( . lineLength64Characters) || options. contains ( . lineLength76Characters) else {
388455 return capacityWithoutBreaks
@@ -405,8 +472,8 @@ extension Base64 {
405472 }
406473
407474 static func withUnsafeEncodingTablesAsBufferPointers< R> ( options: Data . Base64EncodingOptions , _ body: ( UnsafeBufferPointer < UInt8 > , UnsafeBufferPointer < UInt8 > ) -> R ) -> R {
408- let encoding0 = Self . encoding0
409- let encoding1 = Self . encoding1
475+ let encoding0 = options . contains ( . base64URLAlphabet ) ? Self . encoding0url : Self . encoding0
476+ let encoding1 = options . contains ( . base64URLAlphabet ) ? Self . encoding1url : Self . encoding1
410477
411478 assert ( encoding0. count == 256 )
412479 assert ( encoding1. count == 256 )
0 commit comments