github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library@v0.2.0/Base64/Base64.go (about)

     1  // Package Base64
     2  // Dafny module Base64 compiled into Go
     3  
     4  package Base64
     5  
     6  import (
     7  	os "os"
     8  
     9  	m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts"
    10  	m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals"
    11  	m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear"
    12  	m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod"
    13  	m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO"
    14  	m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare"
    15  	m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions"
    16  	m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals"
    17  	m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt"
    18  	m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings"
    19  	m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm"
    20  	m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_"
    21  	m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals"
    22  	m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear"
    23  	m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul"
    24  	m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals"
    25  	m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear"
    26  	m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power"
    27  	m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations"
    28  	m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq"
    29  	m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort"
    30  	m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting"
    31  	m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary"
    32  	m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop"
    33  	m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence"
    34  	m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String"
    35  	m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt"
    36  	m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams"
    37  	m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings"
    38  	m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_"
    39  	m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm"
    40  	m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm"
    41  	m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers"
    42  	m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_"
    43  	_dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny"
    44  )
    45  
    46  var _ = os.Args
    47  var _ _dafny.Dummy__
    48  var _ m__System.Dummy__
    49  var _ m_Wrappers.Dummy__
    50  var _ m_Relations.Dummy__
    51  var _ m_Seq_MergeSort.Dummy__
    52  var _ m__Math.Dummy__
    53  var _ m_Seq.Dummy__
    54  var _ m_BoundedInts.Dummy__
    55  var _ m__Unicode.Dummy__
    56  var _ m_Functions.Dummy__
    57  var _ m_Utf8EncodingForm.Dummy__
    58  var _ m_Utf16EncodingForm.Dummy__
    59  var _ m_UnicodeStrings.Dummy__
    60  var _ m_FileIO.Dummy__
    61  var _ m_GeneralInternals.Dummy__
    62  var _ m_MulInternalsNonlinear.Dummy__
    63  var _ m_MulInternals.Dummy__
    64  var _ m_Mul.Dummy__
    65  var _ m_ModInternalsNonlinear.Dummy__
    66  var _ m_DivInternalsNonlinear.Dummy__
    67  var _ m_ModInternals.Dummy__
    68  var _ m_DivInternals.Dummy__
    69  var _ m_DivMod.Dummy__
    70  var _ m_Power.Dummy__
    71  var _ m_Logarithm.Dummy__
    72  var _ m_StandardLibraryInterop.Dummy__
    73  var _ m_StandardLibrary_UInt.Dummy__
    74  var _ m_StandardLibrary_Sequence.Dummy__
    75  var _ m_StandardLibrary_String.Dummy__
    76  var _ m_StandardLibrary.Dummy__
    77  var _ m_Streams.Dummy__
    78  var _ m_Sorting.Dummy__
    79  var _ m_HexStrings.Dummy__
    80  var _ m_GetOpt.Dummy__
    81  var _ m_FloatCompare.Dummy__
    82  
    83  type Dummy__ struct{}
    84  
    85  // Definition of class Default__
    86  type Default__ struct {
    87  	dummy byte
    88  }
    89  
    90  func New_Default___() *Default__ {
    91  	_this := Default__{}
    92  
    93  	return &_this
    94  }
    95  
    96  type CompanionStruct_Default___ struct {
    97  }
    98  
    99  var Companion_Default___ = CompanionStruct_Default___{}
   100  
   101  func (_this *Default__) Equals(other *Default__) bool {
   102  	return _this == other
   103  }
   104  
   105  func (_this *Default__) EqualsGeneric(x interface{}) bool {
   106  	other, ok := x.(*Default__)
   107  	return ok && _this.Equals(other)
   108  }
   109  
   110  func (*Default__) String() string {
   111  	return "Base64.Default__"
   112  }
   113  func (_this *Default__) ParentTraits_() []*_dafny.TraitID {
   114  	return [](*_dafny.TraitID){}
   115  }
   116  
   117  var _ _dafny.TraitOffspring = &Default__{}
   118  
   119  func (_static *CompanionStruct_Default___) IsBase64Char(c _dafny.Char) bool {
   120  	return (((((c) == (_dafny.Char('+'))) || ((c) == (_dafny.Char('/')))) || (((_dafny.Char('0')) <= (c)) && ((c) <= (_dafny.Char('9'))))) || (((_dafny.Char('A')) <= (c)) && ((c) <= (_dafny.Char('Z'))))) || (((_dafny.Char('a')) <= (c)) && ((c) <= (_dafny.Char('z'))))
   121  }
   122  func (_static *CompanionStruct_Default___) IsUnpaddedBase64String(s _dafny.Sequence) bool {
   123  	return (((_dafny.IntOfUint32((s).Cardinality())).Modulo(_dafny.IntOfInt64(4))).Sign() == 0) && (_dafny.Quantifier((s).UniqueElements(), true, func(_forall_var_0 _dafny.Char) bool {
   124  		var _0_k _dafny.Char
   125  		_0_k = interface{}(_forall_var_0).(_dafny.Char)
   126  		return !(_dafny.Companion_Sequence_.Contains(s, _0_k)) || (Companion_Default___.IsBase64Char(_0_k))
   127  	}))
   128  }
   129  func (_static *CompanionStruct_Default___) IndexToChar(i uint8) _dafny.Char {
   130  	if (i) == (uint8(63)) {
   131  		return _dafny.Char('/')
   132  	} else if (i) == (uint8(62)) {
   133  		return _dafny.Char('+')
   134  	} else if ((uint8(52)) <= (i)) && ((i) <= (uint8(61))) {
   135  		return _dafny.Char(((i) - (func() uint8 { return (uint8(4)) })()))
   136  	} else if ((uint8(26)) <= (i)) && ((i) <= (uint8(51))) {
   137  		return (_dafny.Char((i))) + (_dafny.Char((_dafny.IntOfInt64(71)).Int32()))
   138  	} else {
   139  		return (_dafny.Char((i))) + (_dafny.Char((_dafny.IntOfInt64(65)).Int32()))
   140  	}
   141  }
   142  func (_static *CompanionStruct_Default___) CharToIndex(c _dafny.Char) uint8 {
   143  	if (c) == (_dafny.Char('/')) {
   144  		return uint8(63)
   145  	} else if (c) == (_dafny.Char('+')) {
   146  		return uint8(62)
   147  	} else if ((_dafny.Char('0')) <= (c)) && ((c) <= (_dafny.Char('9'))) {
   148  		return uint8((c) + (_dafny.Char((_dafny.IntOfInt64(4)).Int32())))
   149  	} else if ((_dafny.Char('a')) <= (c)) && ((c) <= (_dafny.Char('z'))) {
   150  		return uint8((c) - (_dafny.Char((_dafny.IntOfInt64(71)).Int32())))
   151  	} else {
   152  		return uint8((c) - (_dafny.Char((_dafny.IntOfInt64(65)).Int32())))
   153  	}
   154  }
   155  func (_static *CompanionStruct_Default___) UInt24ToSeq(x uint32) _dafny.Sequence {
   156  	var _0_b0 uint8 = uint8((x) / (uint32(65536)))
   157  	_ = _0_b0
   158  	var _1_x0 uint32 = (x) - (func() uint32 { return ((uint32(_0_b0)) * (uint32(65536))) })()
   159  	_ = _1_x0
   160  	var _2_b1 uint8 = uint8((_1_x0) / (uint32(256)))
   161  	_ = _2_b1
   162  	var _3_b2 uint8 = uint8((_1_x0) % (uint32(256)))
   163  	_ = _3_b2
   164  	return _dafny.SeqOf(_0_b0, _2_b1, _3_b2)
   165  }
   166  func (_static *CompanionStruct_Default___) SeqToUInt24(s _dafny.Sequence) uint32 {
   167  	return (((uint32((s).Select(0).(uint8))) * (uint32(65536))) + ((uint32((s).Select(1).(uint8))) * (uint32(256)))) + (uint32((s).Select(2).(uint8)))
   168  }
   169  func (_static *CompanionStruct_Default___) UInt24ToIndexSeq(x uint32) _dafny.Sequence {
   170  	var _0_b0 uint8 = uint8((x) / (uint32(262144)))
   171  	_ = _0_b0
   172  	var _1_x0 uint32 = (x) - (func() uint32 { return ((uint32(_0_b0)) * (uint32(262144))) })()
   173  	_ = _1_x0
   174  	var _2_b1 uint8 = uint8((_1_x0) / (uint32(4096)))
   175  	_ = _2_b1
   176  	var _3_x1 uint32 = (_1_x0) - (func() uint32 { return ((uint32(_2_b1)) * (uint32(4096))) })()
   177  	_ = _3_x1
   178  	var _4_b2 uint8 = uint8((_3_x1) / (uint32(64)))
   179  	_ = _4_b2
   180  	var _5_b3 uint8 = uint8((_3_x1) % (uint32(64)))
   181  	_ = _5_b3
   182  	return _dafny.SeqOf(_0_b0, _2_b1, _4_b2, _5_b3)
   183  }
   184  func (_static *CompanionStruct_Default___) IndexSeqToUInt24(s _dafny.Sequence) uint32 {
   185  	return ((((uint32((s).Select(0).(uint8))) * (uint32(262144))) + ((uint32((s).Select(1).(uint8))) * (uint32(4096)))) + ((uint32((s).Select(2).(uint8))) * (uint32(64)))) + (uint32((s).Select(3).(uint8)))
   186  }
   187  func (_static *CompanionStruct_Default___) DecodeBlock(s _dafny.Sequence) _dafny.Sequence {
   188  	return Companion_Default___.UInt24ToSeq(Companion_Default___.IndexSeqToUInt24(s))
   189  }
   190  func (_static *CompanionStruct_Default___) EncodeBlock(s _dafny.Sequence) _dafny.Sequence {
   191  	return Companion_Default___.UInt24ToIndexSeq(Companion_Default___.SeqToUInt24(s))
   192  }
   193  func (_static *CompanionStruct_Default___) DecodeRecursively(s _dafny.Sequence) _dafny.Sequence {
   194  	var _0___accumulator _dafny.Sequence = _dafny.SeqOf()
   195  	_ = _0___accumulator
   196  	goto TAIL_CALL_START
   197  TAIL_CALL_START:
   198  	if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 {
   199  		return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf())
   200  	} else {
   201  		_0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, Companion_Default___.DecodeBlock((s).Take(4)))
   202  		var _in0 _dafny.Sequence = (s).Drop(4)
   203  		_ = _in0
   204  		s = _in0
   205  		goto TAIL_CALL_START
   206  	}
   207  }
   208  func (_static *CompanionStruct_Default___) EncodeRecursively(b _dafny.Sequence) _dafny.Sequence {
   209  	var _0___accumulator _dafny.Sequence = _dafny.SeqOf()
   210  	_ = _0___accumulator
   211  	goto TAIL_CALL_START
   212  TAIL_CALL_START:
   213  	if (_dafny.IntOfUint32((b).Cardinality())).Sign() == 0 {
   214  		return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf())
   215  	} else {
   216  		_0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, Companion_Default___.EncodeBlock((b).Take(3)))
   217  		var _in0 _dafny.Sequence = (b).Drop(3)
   218  		_ = _in0
   219  		b = _in0
   220  		goto TAIL_CALL_START
   221  	}
   222  }
   223  func (_static *CompanionStruct_Default___) FromCharsToIndices(s _dafny.Sequence) _dafny.Sequence {
   224  	return _dafny.SeqCreate((_dafny.IntOfUint32((s).Cardinality())).Uint32(), func(coer27 func(_dafny.Int) uint8) func(_dafny.Int) interface{} {
   225  		return func(arg31 _dafny.Int) interface{} {
   226  			return coer27(arg31)
   227  		}
   228  	}((func(_0_s _dafny.Sequence) func(_dafny.Int) uint8 {
   229  		return func(_1_i _dafny.Int) uint8 {
   230  			return Companion_Default___.CharToIndex((_0_s).Select((_1_i).Uint32()).(_dafny.Char))
   231  		}
   232  	})(s)))
   233  }
   234  func (_static *CompanionStruct_Default___) FromIndicesToChars(b _dafny.Sequence) _dafny.Sequence {
   235  	return _dafny.SeqCreate((_dafny.IntOfUint32((b).Cardinality())).Uint32(), func(coer28 func(_dafny.Int) _dafny.Char) func(_dafny.Int) interface{} {
   236  		return func(arg32 _dafny.Int) interface{} {
   237  			return coer28(arg32)
   238  		}
   239  	}((func(_0_b _dafny.Sequence) func(_dafny.Int) _dafny.Char {
   240  		return func(_1_i _dafny.Int) _dafny.Char {
   241  			return Companion_Default___.IndexToChar((_0_b).Select((_1_i).Uint32()).(uint8))
   242  		}
   243  	})(b))).SetString()
   244  }
   245  func (_static *CompanionStruct_Default___) DecodeUnpadded(s _dafny.Sequence) _dafny.Sequence {
   246  	return Companion_Default___.DecodeRecursively(Companion_Default___.FromCharsToIndices(s))
   247  }
   248  func (_static *CompanionStruct_Default___) EncodeUnpadded(b _dafny.Sequence) _dafny.Sequence {
   249  	return Companion_Default___.FromIndicesToChars(Companion_Default___.EncodeRecursively(b))
   250  }
   251  func (_static *CompanionStruct_Default___) Is1Padding(s _dafny.Sequence) bool {
   252  	return ((((((_dafny.IntOfUint32((s).Cardinality())).Cmp(_dafny.IntOfInt64(4)) == 0) && (Companion_Default___.IsBase64Char((s).Select(0).(_dafny.Char)))) && (Companion_Default___.IsBase64Char((s).Select(1).(_dafny.Char)))) && (Companion_Default___.IsBase64Char((s).Select(2).(_dafny.Char)))) && (((Companion_Default___.CharToIndex((s).Select(2).(_dafny.Char))) % (uint8(4))) == (uint8(0)))) && (((s).Select(3).(_dafny.Char)) == (_dafny.Char('=')))
   253  }
   254  func (_static *CompanionStruct_Default___) Decode1Padding(s _dafny.Sequence) _dafny.Sequence {
   255  	var _0_d _dafny.Sequence = Companion_Default___.DecodeBlock(_dafny.SeqOf(Companion_Default___.CharToIndex((s).Select(0).(_dafny.Char)), Companion_Default___.CharToIndex((s).Select(1).(_dafny.Char)), Companion_Default___.CharToIndex((s).Select(2).(_dafny.Char)), uint8(0)))
   256  	_ = _0_d
   257  	return _dafny.SeqOf((_0_d).Select(0).(uint8), (_0_d).Select(1).(uint8))
   258  }
   259  func (_static *CompanionStruct_Default___) Encode1Padding(b _dafny.Sequence) _dafny.Sequence {
   260  	var _0_e _dafny.Sequence = Companion_Default___.EncodeBlock(_dafny.SeqOf((b).Select(0).(uint8), (b).Select(1).(uint8), uint8(0)))
   261  	_ = _0_e
   262  	return _dafny.SeqOfChars(Companion_Default___.IndexToChar((_0_e).Select(0).(uint8)), Companion_Default___.IndexToChar((_0_e).Select(1).(uint8)), Companion_Default___.IndexToChar((_0_e).Select(2).(uint8)), _dafny.Char('='))
   263  }
   264  func (_static *CompanionStruct_Default___) Is2Padding(s _dafny.Sequence) bool {
   265  	return ((((((_dafny.IntOfUint32((s).Cardinality())).Cmp(_dafny.IntOfInt64(4)) == 0) && (Companion_Default___.IsBase64Char((s).Select(0).(_dafny.Char)))) && (Companion_Default___.IsBase64Char((s).Select(1).(_dafny.Char)))) && (((Companion_Default___.CharToIndex((s).Select(1).(_dafny.Char))) % (uint8(16))) == (uint8(0)))) && (((s).Select(2).(_dafny.Char)) == (_dafny.Char('=')))) && (((s).Select(3).(_dafny.Char)) == (_dafny.Char('=')))
   266  }
   267  func (_static *CompanionStruct_Default___) Decode2Padding(s _dafny.Sequence) _dafny.Sequence {
   268  	var _0_d _dafny.Sequence = Companion_Default___.DecodeBlock(_dafny.SeqOf(Companion_Default___.CharToIndex((s).Select(0).(_dafny.Char)), Companion_Default___.CharToIndex((s).Select(1).(_dafny.Char)), uint8(0), uint8(0)))
   269  	_ = _0_d
   270  	return _dafny.SeqOf((_0_d).Select(0).(uint8))
   271  }
   272  func (_static *CompanionStruct_Default___) Encode2Padding(b _dafny.Sequence) _dafny.Sequence {
   273  	var _0_e _dafny.Sequence = Companion_Default___.EncodeBlock(_dafny.SeqOf((b).Select(0).(uint8), uint8(0), uint8(0)))
   274  	_ = _0_e
   275  	return _dafny.SeqOfChars(Companion_Default___.IndexToChar((_0_e).Select(0).(uint8)), Companion_Default___.IndexToChar((_0_e).Select(1).(uint8)), _dafny.Char('='), _dafny.Char('='))
   276  }
   277  func (_static *CompanionStruct_Default___) IsBase64String(s _dafny.Sequence) bool {
   278  	var _0_finalBlockStart _dafny.Int = (_dafny.IntOfUint32((s).Cardinality())).Minus(_dafny.IntOfInt64(4))
   279  	_ = _0_finalBlockStart
   280  	return (((_dafny.IntOfUint32((s).Cardinality())).Modulo(_dafny.IntOfInt64(4))).Sign() == 0) && ((Companion_Default___.IsUnpaddedBase64String(s)) || ((Companion_Default___.IsUnpaddedBase64String((s).Take((_0_finalBlockStart).Uint32()))) && ((Companion_Default___.Is1Padding((s).Drop((_0_finalBlockStart).Uint32()))) || (Companion_Default___.Is2Padding((s).Drop((_0_finalBlockStart).Uint32()))))))
   281  }
   282  func (_static *CompanionStruct_Default___) DecodeValid(s _dafny.Sequence) _dafny.Sequence {
   283  	if _dafny.Companion_Sequence_.Equal(s, _dafny.SeqOfChars()) {
   284  		return _dafny.SeqOf()
   285  	} else {
   286  		var _0_finalBlockStart _dafny.Int = (_dafny.IntOfUint32((s).Cardinality())).Minus(_dafny.IntOfInt64(4))
   287  		_ = _0_finalBlockStart
   288  		var _1_prefix _dafny.Sequence = (s).Take((_0_finalBlockStart).Uint32())
   289  		_ = _1_prefix
   290  		var _2_suffix _dafny.Sequence = (s).Drop((_0_finalBlockStart).Uint32())
   291  		_ = _2_suffix
   292  		if Companion_Default___.Is1Padding(_2_suffix) {
   293  			return _dafny.Companion_Sequence_.Concatenate(Companion_Default___.DecodeUnpadded(_1_prefix), Companion_Default___.Decode1Padding(_2_suffix))
   294  		} else if Companion_Default___.Is2Padding(_2_suffix) {
   295  			return _dafny.Companion_Sequence_.Concatenate(Companion_Default___.DecodeUnpadded(_1_prefix), Companion_Default___.Decode2Padding(_2_suffix))
   296  		} else {
   297  			return Companion_Default___.DecodeUnpadded(s)
   298  		}
   299  	}
   300  }
   301  func (_static *CompanionStruct_Default___) Decode(s _dafny.Sequence) m_Wrappers.Result {
   302  	if Companion_Default___.IsBase64String(s) {
   303  		return m_Wrappers.Companion_Result_.Create_Success_(Companion_Default___.DecodeValid(s))
   304  	} else {
   305  		return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("The encoding is malformed"))
   306  	}
   307  }
   308  func (_static *CompanionStruct_Default___) Encode(b _dafny.Sequence) _dafny.Sequence {
   309  	if ((_dafny.IntOfUint32((b).Cardinality())).Modulo(_dafny.IntOfInt64(3))).Sign() == 0 {
   310  		var _0_s _dafny.Sequence = Companion_Default___.EncodeUnpadded(b)
   311  		_ = _0_s
   312  		return _0_s
   313  	} else if ((_dafny.IntOfUint32((b).Cardinality())).Modulo(_dafny.IntOfInt64(3))).Cmp(_dafny.One) == 0 {
   314  		var _1_s1 _dafny.Sequence = Companion_Default___.EncodeUnpadded((b).Take(((_dafny.IntOfUint32((b).Cardinality())).Minus(_dafny.One)).Uint32()))
   315  		_ = _1_s1
   316  		var _2_s2 _dafny.Sequence = Companion_Default___.Encode2Padding((b).Drop(((_dafny.IntOfUint32((b).Cardinality())).Minus(_dafny.One)).Uint32()))
   317  		_ = _2_s2
   318  		var _3_s _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(_1_s1, _2_s2)
   319  		_ = _3_s
   320  		return _3_s
   321  	} else {
   322  		var _4_s1 _dafny.Sequence = Companion_Default___.EncodeUnpadded((b).Take(((_dafny.IntOfUint32((b).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()))
   323  		_ = _4_s1
   324  		var _5_s2 _dafny.Sequence = Companion_Default___.Encode1Padding((b).Drop(((_dafny.IntOfUint32((b).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()))
   325  		_ = _5_s2
   326  		var _6_s _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(_4_s1, _5_s2)
   327  		_ = _6_s
   328  		return _6_s
   329  	}
   330  }
   331  
   332  // End of class Default__
   333  
   334  // Definition of class Index
   335  type Index struct {
   336  }
   337  
   338  func New_Index_() *Index {
   339  	_this := Index{}
   340  
   341  	return &_this
   342  }
   343  
   344  type CompanionStruct_Index_ struct {
   345  }
   346  
   347  var Companion_Index_ = CompanionStruct_Index_{}
   348  
   349  func (*Index) String() string {
   350  	return "Base64.Index"
   351  }
   352  func (_this *Index) ParentTraits_() []*_dafny.TraitID {
   353  	return [](*_dafny.TraitID){}
   354  }
   355  
   356  var _ _dafny.TraitOffspring = &Index{}
   357  
   358  func (_this *CompanionStruct_Index_) IntegerRange(lo _dafny.Int, hi _dafny.Int) _dafny.Iterator {
   359  	iter := _dafny.IntegerRange(lo, hi)
   360  	return func() (interface{}, bool) {
   361  		next, ok := iter()
   362  		if !ok {
   363  			return uint8(0), false
   364  		}
   365  		return next.(_dafny.Int).Uint8(), true
   366  	}
   367  }
   368  
   369  // End of class Index
   370  
   371  func Type_Index_() _dafny.TypeDescriptor {
   372  	return type_Index_{}
   373  }
   374  
   375  type type_Index_ struct {
   376  }
   377  
   378  func (_this type_Index_) Default() interface{} {
   379  	return uint8(0)
   380  }
   381  
   382  func (_this type_Index_) String() string {
   383  	return "Base64.Index"
   384  }
   385  func (_this *CompanionStruct_Index_) Is_(__source uint8) bool {
   386  	var _0_x _dafny.Int = _dafny.IntOfUint8(__source)
   387  	_ = _0_x
   388  	return ((_0_x).Sign() != -1) && ((_0_x).Cmp(_dafny.IntOfInt64(64)) < 0)
   389  }
   390  
   391  // Definition of class Uint24
   392  type Uint24 struct {
   393  }
   394  
   395  func New_Uint24_() *Uint24 {
   396  	_this := Uint24{}
   397  
   398  	return &_this
   399  }
   400  
   401  type CompanionStruct_Uint24_ struct {
   402  }
   403  
   404  var Companion_Uint24_ = CompanionStruct_Uint24_{}
   405  
   406  func (*Uint24) String() string {
   407  	return "Base64.Uint24"
   408  }
   409  func (_this *Uint24) ParentTraits_() []*_dafny.TraitID {
   410  	return [](*_dafny.TraitID){}
   411  }
   412  
   413  var _ _dafny.TraitOffspring = &Uint24{}
   414  
   415  func (_this *CompanionStruct_Uint24_) IntegerRange(lo _dafny.Int, hi _dafny.Int) _dafny.Iterator {
   416  	iter := _dafny.IntegerRange(lo, hi)
   417  	return func() (interface{}, bool) {
   418  		next, ok := iter()
   419  		if !ok {
   420  			return uint32(0), false
   421  		}
   422  		return next.(_dafny.Int).Uint32(), true
   423  	}
   424  }
   425  
   426  // End of class Uint24
   427  
   428  func Type_Uint24_() _dafny.TypeDescriptor {
   429  	return type_Uint24_{}
   430  }
   431  
   432  type type_Uint24_ struct {
   433  }
   434  
   435  func (_this type_Uint24_) Default() interface{} {
   436  	return uint32(0)
   437  }
   438  
   439  func (_this type_Uint24_) String() string {
   440  	return "Base64.Uint24"
   441  }
   442  func (_this *CompanionStruct_Uint24_) Is_(__source uint32) bool {
   443  	var _1_x _dafny.Int = _dafny.IntOfUint32(__source)
   444  	_ = _1_x
   445  	return ((_1_x).Sign() != -1) && ((_1_x).Cmp(_dafny.IntOfInt64(16777216)) < 0)
   446  }